gnu: emacs-svg-icon: Fix grammar.
[jackhill/guix/guix.git] / gnu / packages / chemistry.scm
CommitLineData
73114e30
KH
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net>
ead60993 3;;; Copyright © 2018, 2021 Kei Kebreau <kkebreau@posteo.net>
4ae16f9c 4;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
631249dd 5;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
357328d2 6;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
1c560401 7;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
73114e30
KH
8;;;
9;;; This file is part of GNU Guix.
10;;;
11;;; GNU Guix is free software; you can redistribute it and/or modify it
12;;; under the terms of the GNU General Public License as published by
13;;; the Free Software Foundation; either version 3 of the License, or (at
14;;; your option) any later version.
15;;;
16;;; GNU Guix is distributed in the hope that it will be useful, but
17;;; WITHOUT ANY WARRANTY; without even the implied warranty of
18;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19;;; GNU General Public License for more details.
20;;;
21;;; You should have received a copy of the GNU General Public License
22;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
23
24(define-module (gnu packages chemistry)
25 #:use-module (guix packages)
4ae16f9c 26 #:use-module (guix utils)
73114e30
KH
27 #:use-module ((guix licenses) #:prefix license:)
28 #:use-module (guix download)
631249dd 29 #:use-module (guix git-download)
0c468cb5 30 #:use-module (gnu packages)
348edd91 31 #:use-module (gnu packages algebra)
ead60993 32 #:use-module (gnu packages autotools)
1d41f777 33 #:use-module (gnu packages backup)
7d01ee66 34 #:use-module (gnu packages boost)
06ed1dba 35 #:use-module (gnu packages check)
a49eb85c 36 #:use-module (gnu packages compression)
7d01ee66
KK
37 #:use-module (gnu packages documentation)
38 #:use-module (gnu packages gl)
06ed1dba 39 #:use-module (gnu packages graphviz)
f250a868
KH
40 #:use-module (gnu packages gv)
41 #:use-module (gnu packages maths)
06ed1dba
VL
42 #:use-module (gnu packages mpi)
43 #:use-module (gnu packages perl)
348edd91 44 #:use-module (gnu packages pkg-config)
73114e30 45 #:use-module (gnu packages python)
44d10b1f 46 #:use-module (gnu packages python-xyz)
7d01ee66 47 #:use-module (gnu packages qt)
1d41f777 48 #:use-module (gnu packages serialization)
06ed1dba 49 #:use-module (gnu packages sphinx)
348edd91
KK
50 #:use-module (gnu packages xml)
51 #:use-module (guix build-system cmake)
a49eb85c 52 #:use-module (guix build-system gnu)
73114e30
KH
53 #:use-module (guix build-system python))
54
1d41f777
KK
55(define-public avogadrolibs
56 (package
57 (name "avogadrolibs")
58 (version "1.93.0")
59 (source
60 (origin
61 (method git-fetch)
62 (uri (git-reference
63 (url "https://github.com/OpenChemistry/avogadrolibs")
64 (commit version)))
65 (sha256
66 (base32 "1xivga626n5acnmwmym8svl0pdri8hkp59czf04ri2zflnviyh39"))
67 (file-name (git-file-name name version))))
68 (build-system cmake-build-system)
69 (native-inputs
70 `(("eigen" ,eigen)
71 ("mmtf-cpp" ,mmtf-cpp)
72 ("msgpack" ,msgpack)
73 ("googletest" ,googletest)
74 ("pkg-config" ,pkg-config)
75 ("pybind11" ,pybind11)))
76 (inputs
77 `(("glew" ,glew)
78 ("libarchive" ,libarchive)
79 ("libmsym" ,libmsym)
80 ("molequeue" ,molequeue)
81 ("python" ,python)
82 ("spglib" ,spglib)
83 ("qtbase" ,qtbase)))
84 (arguments
85 '(#:configure-flags (list "-DENABLE_TESTING=ON"
86 (string-append "-DSPGLIB_INCLUDE_DIR="
87 (assoc-ref %build-inputs "spglib")
88 "/include"))))
89 (home-page "https://www.openchemistry.org/projects/avogadro2/")
90 (synopsis "Libraries for chemistry, bioinformatics, and related areas")
91 (description
92 "Avogadro libraries provide 3D rendering, visualization, analysis and data
93processing useful in computational chemistry, molecular modeling,
94bioinformatics, materials science, and related areas.")
95 (license license:bsd-3)))
96
cf31ee04
KK
97(define-public avogadro2
98 (package
99 (name "avogadro2")
100 (version "1.93.0")
101 (source
102 (origin
103 (method git-fetch)
104 (uri (git-reference
105 (url "https://github.com/OpenChemistry/avogadroapp")
106 (commit version)))
107 (sha256
108 (base32
109 "1z3pjlwja778a1dmvx9aqz2hlw5q9g3kqxhm9slz08452600jsv7"))
110 (file-name (git-file-name name version))))
111 (build-system cmake-build-system)
112 (native-inputs
113 `(("eigen" ,eigen)
114 ("pkg-config" ,pkg-config)))
115 (inputs
116 `(("avogadrolibs" ,avogadrolibs)
117 ("hdf5" ,hdf5)
118 ("molequeue" ,molequeue)
119 ("qtbase" ,qtbase)))
120 ;; TODO: Enable tests with "-DENABLE_TESTING" configure flag.
121 (arguments
122 '(#:tests? #f))
123 (home-page "https://www.openchemistry.org/projects/avogadro2/")
124 (synopsis "Advanced molecule editor")
125 (description
126 "Avogadro 2 is an advanced molecule editor and visualizer designed for use
127in computational chemistry, molecular modeling, bioinformatics, materials
128science, and related areas. It offers flexible high quality rendering and a
129powerful plugin architecture.")
130 (license license:bsd-3)))
131
73114e30
KH
132(define-public domainfinder
133 (package
134 (name "domainfinder")
135 (version "2.0.5")
136 (source
137 (origin
138 (method url-fetch)
139 (uri (string-append "https://bitbucket.org/khinsen/"
140 "domainfinder/downloads/DomainFinder-"
141 version ".tar.gz"))
142 (sha256
143 (base32
144 "1z26lsyf7xwnzwjvimmbla7ckipx6p734w7y0jk2a2fzci8fkdcr"))))
145 (build-system python-build-system)
146 (inputs
147 `(("python-mmtk" ,python2-mmtk)))
148 (arguments
149 `(#:python ,python-2
150 ;; No test suite
151 #:tests? #f))
7f489c56 152 (home-page "http://dirac.cnrs-orleans.fr/DomainFinder.html")
73114e30
KH
153 (synopsis "Analysis of dynamical domains in proteins")
154 (description "DomainFinder is an interactive program for the determination
155and characterization of dynamical domains in proteins. It can infer dynamical
156domains by comparing two protein structures, or from normal mode analysis on a
157single structure. The software is currently not actively maintained and works
158only with Python 2 and NumPy < 1.9.")
159 (license license:cecill-c)))
f250a868 160
a49eb85c
KK
161(define-public inchi
162 (package
163 (name "inchi")
35bb3d5f
KK
164 ;; Update the inchi-doc native input when updating inchi.
165 (version "1.06")
a49eb85c
KK
166 (source (origin
167 (method url-fetch)
35bb3d5f 168 (uri (string-append "https://www.inchi-trust.org/download/"
a49eb85c
KK
169 (string-join (string-split version #\.) "")
170 "/INCHI-1-SRC.zip"))
171 (sha256
172 (base32
35bb3d5f 173 "1zbygqn0443p0gxwr4kx3m1bkqaj8x9hrpch3s41py7jq08f6x28"))
a49eb85c
KK
174 (file-name (string-append name "-" version ".zip"))))
175 (build-system gnu-build-system)
176 (arguments
177 '(#:tests? #f ; no check target
178 #:phases
179 (modify-phases %standard-phases
180 (delete 'configure) ; no configure script
181 (add-before 'build 'chdir-to-build-directory
182 (lambda _ (chdir "INCHI_EXE/inchi-1/gcc") #t))
183 (add-after 'build 'build-library
184 (lambda _
185 (chdir "../../../INCHI_API/libinchi/gcc")
186 (invoke "make")))
187 (replace 'install
188 (lambda* (#:key inputs outputs #:allow-other-keys)
189 (let* ((out (assoc-ref outputs "out"))
190 (bin (string-append out "/bin"))
191 (doc (string-append out "/share/doc/inchi"))
192 (include-dir (string-append out "/include/inchi"))
193 (lib (string-append out "/lib/inchi"))
194 (inchi-doc (assoc-ref inputs "inchi-doc"))
195 (unzip (string-append (assoc-ref inputs "unzip")
196 "/bin/unzip")))
197 (chdir "../../..")
198 ;; Install binary.
199 (with-directory-excursion "INCHI_EXE/bin/Linux"
200 (rename-file "inchi-1" "inchi")
201 (install-file "inchi" bin))
202 ;; Install libraries.
203 (with-directory-excursion "INCHI_API/bin/Linux"
204 (for-each (lambda (file)
205 (install-file file lib))
206 (find-files "." "libinchi\\.so\\.1\\.*")))
207 ;; Install header files.
208 (with-directory-excursion "INCHI_BASE/src"
209 (for-each (lambda (file)
210 (install-file file include-dir))
211 (find-files "." "\\.h$")))
212 ;; Install documentation.
213 (mkdir-p doc)
214 (invoke unzip "-j" "-d" doc inchi-doc)
215 #t))))))
216 (native-inputs
217 `(("unzip" ,unzip)
218 ("inchi-doc"
219 ,(origin
220 (method url-fetch)
221 (uri (string-append "http://www.inchi-trust.org/download/"
222 (string-join (string-split version #\.) "")
223 "/INCHI-1-DOC.zip"))
224 (sha256
225 (base32
35bb3d5f 226 "1kyda09i9p89xfq90ninwi7w13k1w3ljpl4gqdhpfhi5g8fgxx7f"))
a49eb85c
KK
227 (file-name (string-append name "-" version ".zip"))))))
228 (home-page "https://www.inchi-trust.org")
229 (synopsis "Utility for manipulating machine-readable chemical structures")
230 (description
231 "The @dfn{InChI} (IUPAC International Chemical Identifier) algorithm turns
232chemical structures into machine-readable strings of information. InChIs are
233unique to the compound they describe and can encode absolute stereochemistry
234making chemicals and chemistry machine-readable and discoverable. A simple
235analogy is that InChI is the bar-code for chemistry and chemical structures.")
236 (license (license:non-copyleft
237 "file://LICENCE"
238 "See LICENCE in the distribution."))))
239
68dabe3c
KK
240(define-public libmsym
241 (package
242 (name "libmsym")
243 (version "0.2.3")
244 (source
245 (origin
246 (method git-fetch)
247 (uri (git-reference
248 (url "https://github.com/mcodev31/libmsym")
249 (commit (string-append "v" version))))
250 (sha256
251 (base32
252 "0a9j28irdsr461qpzlc9z1yjyb9kp64fh5zw7ylspc9zn3189qwk"))
253 (file-name (git-file-name name version))))
254 (build-system cmake-build-system)
255 (arguments
256 '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")
257 #:tests? #f)) ; no check target
258 (home-page "https://github.com/mcodev31/libmsym")
259 (synopsis "C library dealing with point group symmetry in molecules")
260 (description "libmsym is a C library dealing with point group symmetry in
261molecules.")
262 (license license:expat)))
263
daa4728e
KK
264(define-public mmtf-cpp
265 (package
266 (name "mmtf-cpp")
267 (version "1.0.0")
268 (source
269 (origin
270 (method git-fetch)
271 (uri (git-reference
272 (url "https://github.com/rcsb/mmtf-cpp")
273 (commit (string-append "v" version))))
274 (file-name (git-file-name name version))
275 (sha256
276 (base32
277 "17ylramda69plf5w0v5hxbl4ggkdi5s15z55cv0pljl12yvyva8l"))))
278 (build-system cmake-build-system)
279 ;; Tests require the soon-to-be-deprecated version 1 of the catch-framework.
280 (arguments
281 '(#:tests? #f))
282 (home-page "https://mmtf.rcsb.org/")
283 (synopsis "C++ API for the Macromolecular Transmission Format")
284 (description "This package is a library for the
285@acronym{MMTF,macromolecular transmission format}, a binary encoding of
286biological structures.")
287 (license license:expat)))
288
58dd1103
KK
289(define-public molequeue
290 (package
291 (name "molequeue")
292 (version "0.9.0")
293 (source
294 (origin
295 (method url-fetch)
296 (uri (string-append "https://github.com/OpenChemistry/molequeue/"
297 "releases/download/" version "/molequeue-"
298 version ".tar.bz2"))
299 (sha256
300 (base32
301 "1w1fgxzqrb5yxvpmnc3c9ymnvixy0z1nfafkd9whg9zw8nbgl998"))))
302 (build-system cmake-build-system)
303 (inputs
304 `(("qtbase" ,qtbase)))
305 (arguments
306 '(#:configure-flags '("-DENABLE_TESTING=ON")
307 #:phases
308 (modify-phases %standard-phases
309 (add-after 'unpack 'patch-tests
310 (lambda _
311 ;; TODO: Fix/enable the failing message and clientserver tests.
312 ;; In the message test, the floating-point value "5.36893473232" on
313 ;; line 165 of molequeue/app/testing/messagetest.cpp should
314 ;; (apparently) be truncated, but it is not.
315 (substitute* "molequeue/app/testing/messagetest.cpp"
316 (("5\\.36893473232") "5.36893"))
317 ;; It is unclear why the clientserver test fails, so it is
318 ;; completely disabled.
319 (substitute* "molequeue/app/testing/CMakeLists.txt"
320 ((".*clientserver.*") ""))
321 #t))
322 (add-before 'check 'set-display
323 (lambda _
324 ;; Make Qt render "offscreen" for the sake of tests.
325 (setenv "QT_QPA_PLATFORM" "offscreen")
326 #t)))))
327 (home-page "https://www.openchemistry.org/projects/molequeue/")
328 (synopsis "Application for coordinating computational jobs")
329 (description "MoleQueue is a system-tray resident desktop application for
330abstracting, managing, and coordinating the execution of tasks both locally and
331 on remote computational resources. Users can set up local and remote queues
332that describe where the task will be executed. Each queue can have programs,
333with templates to facilitate the execution of the program. Input files can be
334staged, and output files collected using a standard interface.")
335 (license license:bsd-3)))
336
f250a868
KH
337(define with-numpy-1.8
338 (package-input-rewriting `((,python2-numpy . ,python2-numpy-1.8))))
339
340(define-public nmoldyn
341 (package
342 (name "nmoldyn")
343 (version "3.0.11")
344 (source
345 (origin
e2293cbb
KH
346 (method git-fetch)
347 (uri (git-reference
348 (url "https://github.com/khinsen/nMOLDYN3")
349 (commit (string-append "v" version))))
350 (file-name (git-file-name name version))
f250a868
KH
351 (sha256
352 (base32
e2293cbb 353 "016h4bqg419p6s7bcx55q5iik91gqmk26hbnfgj2j6zl0j36w51r"))))
f250a868
KH
354 (build-system python-build-system)
355 (inputs
356 `(("python-matplotlib" ,(with-numpy-1.8 python2-matplotlib))
c695fb76
TGR
357 ("python-scientific" ,python2-scientific)
358 ("netcdf" ,netcdf)
f250a868
KH
359 ("gv" ,gv)))
360 (propagated-inputs
361 `(("python-mmtk" ,python2-mmtk)))
362 (arguments
363 `(#:python ,python-2
364 #:tests? #f ; No test suite
365 #:phases
366 (modify-phases %standard-phases
367 (add-before 'build 'create-linux2-directory
368 (lambda _
369 (mkdir-p "nMOLDYN/linux2")))
370 (add-before 'build 'change-PDF-viewer
371 (lambda* (#:key inputs #:allow-other-keys)
372 (substitute* "nMOLDYN/Preferences.py"
373 ;; Set the paths for external executables, substituting
374 ;; gv for acroread.
375 ;; There is also vmd_path, but VMD is not free software
376 ;; and Guix contains currently no free molecular viewer that
377 ;; could be substituted.
378 (("PREFERENCES\\['acroread_path'\\] = ''")
30d0f7fa 379 (format #f "PREFERENCES['acroread_path'] = '~a'"
f250a868
KH
380 (which "gv")))
381 (("PREFERENCES\\['ncdump_path'\\] = ''")
30d0f7fa 382 (format #f "PREFERENCES['ncdump_path'] = '~a'"
f250a868
KH
383 (which "ncdump")))
384 (("PREFERENCES\\['ncgen_path'\\] = ''")
30d0f7fa 385 (format #f "PREFERENCES['ncgen_path'] = '~a'"
f250a868
KH
386 (which "ncgen3")))
387 (("PREFERENCES\\['task_manager_path'\\] = ''")
30d0f7fa 388 (format #f "PREFERENCES['task_manager_path'] = '~a'"
f250a868
KH
389 (which "task_manager")))
390 ;; Show documentation as PDF
391 (("PREFERENCES\\['documentation_style'\\] = 'html'")
392 "PREFERENCES['documentation_style'] = 'pdf'") ))))))
357328d2 393 (home-page "http://dirac.cnrs-orleans.fr/nMOLDYN.html")
f250a868
KH
394 (synopsis "Analysis software for Molecular Dynamics trajectories")
395 (description "nMOLDYN is an interactive analysis program for Molecular Dynamics
396simulations. It is especially designed for the computation and decomposition of
397neutron scattering spectra, but also computes other quantities. The software
398is currently not actively maintained and works only with Python 2 and
399NumPy < 1.9.")
400 (license license:cecill)))
348edd91 401
1c560401
VL
402(define-public tng
403 (package
404 (name "tng")
405 (version "1.8.2")
406 (source (origin
407 (method git-fetch)
408 (uri (git-reference
b0e7b699 409 (url "https://github.com/gromacs/tng")
1c560401
VL
410 (commit (string-append "v" version))))
411 (file-name (git-file-name name version))
412 (sha256
413 (base32
414 "1apf2n8nb34z09xarj7k4jgriq283l769sakjmj5aalpbilvai4q"))))
415 (build-system cmake-build-system)
416 (inputs
417 `(("zlib" ,zlib)))
418 (arguments
419 `(#:phases
420 (modify-phases %standard-phases
421 (add-after 'unpack 'remove-bundled-zlib
422 (lambda _
423 (delete-file-recursively "external")
424 #t))
425 (replace 'check
426 (lambda _
427 (invoke "../build/bin/tests/tng_testing")
428 #t)))))
429 (home-page "https://github.com/gromacs/tng")
430 (synopsis "Trajectory Next Generation binary format manipulation library")
431 (description "TRAJNG (Trajectory next generation) is a program library for
432handling molecular dynamics (MD) trajectories. It can store coordinates, and
433optionally velocities and the H-matrix. Coordinates and velocities are
434stored with user-specified precision.")
435 (license license:bsd-3)))
436
06ed1dba
VL
437(define-public gromacs
438 (package
439 (name "gromacs")
440 (version "2020.2")
441 (source (origin
442 (method url-fetch)
443 (uri (string-append "http://ftp.gromacs.org/pub/gromacs/gromacs-"
444 version ".tar.gz"))
445 (sha256
446 (base32
447 "1wyjgcdl30wy4hy6jvi9lkq53bqs9fgfq6fri52dhnb3c76y8rbl"))
448 ;; Our version of tinyxml2 is far newer than the bundled one and
449 ;; require fixing `testutils' code. See patch header for more info
450 (patches (search-patches "gromacs-tinyxml2.patch"))))
451 (build-system cmake-build-system)
452 (arguments
453 `(#:configure-flags
454 (list "-DGMX_DEVELOPER_BUILD=on" ; Needed to run tests
455 ;; Unbundling
456 "-DGMX_USE_LMFIT=EXTERNAL"
457 "-DGMX_BUILD_OWN_FFTW=off"
458 "-DGMX_EXTERNAL_BLAS=on"
459 "-DGMX_EXTERNAL_LAPACK=on"
460 "-DGMX_EXTERNAL_TNG=on"
461 "-DGMX_EXTERNAL_ZLIB=on"
462 "-DGMX_EXTERNAL_TINYXML2=on"
463 (string-append "-DTinyXML2_DIR="
464 (assoc-ref %build-inputs "tinyxml2"))
465 ;; Workaround for cmake/FindSphinx.cmake version parsing that does
466 ;; not understand the guix-wrapped `sphinx-build --version' answer
467 (string-append "-DSPHINX_EXECUTABLE_VERSION="
468 ,(package-version python-sphinx)))
469 #:phases
470 (modify-phases %standard-phases
471 (add-after 'unpack 'fixes
472 (lambda* (#:key inputs #:allow-other-keys)
473 ;; Still bundled: part of gromacs, source behind registration
474 ;; but free software anyways
475 ;;(delete-file-recursively "src/external/vmd_molfile")
476 ;; Still bundled: threads-based OpenMPI-compatible fallback
477 ;; designed to be bundled like that
478 ;;(delete-file-recursively "src/external/thread_mpi")
479 ;; Unbundling
480 (delete-file-recursively "src/external/lmfit")
481 (delete-file-recursively "src/external/clFFT")
482 (delete-file-recursively "src/external/fftpack")
483 (delete-file-recursively "src/external/build-fftw")
484 (delete-file-recursively "src/external/tng_io")
485 (delete-file-recursively "src/external/tinyxml2")
486 (delete-file-recursively "src/external/googletest")
487 (copy-recursively (assoc-ref inputs "googletest-source")
488 "src/external/googletest")
489 ;; This test warns about the build host hardware, disable
490 (substitute* "src/gromacs/hardware/tests/hardwaretopology.cpp"
491 (("TEST\\(HardwareTopologyTest, HwlocExecute\\)")
492 "void __guix_disabled()"))
493 #t)))))
494 (native-inputs
495 `(("doxygen" ,doxygen)
496 ("googletest-source" ,(package-source googletest))
497 ("graphviz" ,graphviz)
498 ("pkg-config" ,pkg-config)
499 ("python" ,python)
500 ("python-pygments" ,python-pygments)
501 ("python-sphinx" ,python-sphinx)))
502 (inputs
503 `(("fftwf" ,fftwf)
504 ("hwloc" ,hwloc-2 "lib")
505 ("lmfit" ,lmfit)
506 ("openblas" ,openblas)
507 ("perl" ,perl)
508 ("tinyxml2" ,tinyxml2)
509 ("tng" ,tng)))
510 (home-page "http://www.gromacs.org/")
511 (synopsis "Molecular dynamics software package")
512 (description "GROMACS is a versatile package to perform molecular dynamics,
513i.e. simulate the Newtonian equations of motion for systems with hundreds to
514millions of particles. It is primarily designed for biochemical molecules like
515proteins, lipids and nucleic acids that have a lot of complicated bonded
516interactions, but since GROMACS is extremely fast at calculating the nonbonded
517interactions (that usually dominate simulations) many groups are also using it
518for research on non-biological systems, e.g. polymers. GROMACS supports all the
519usual algorithms you expect from a modern molecular dynamics implementation.")
520 (license license:lgpl2.1+)))
521
348edd91
KK
522(define-public openbabel
523 (package
524 (name "openbabel")
1f1c525a 525 (version "3.1.1")
348edd91
KK
526 (source (origin
527 (method url-fetch)
1f1c525a
KK
528 (uri (string-append "https://github.com/openbabel/openbabel/"
529 "releases/download/openbabel-"
530 (string-replace-substring version "." "-")
531 "/openbabel-" version "-source.tar.bz2"))
348edd91
KK
532 (sha256
533 (base32
1f1c525a 534 "0s0f4zib8vshfaywsr5bjjz55jwsg6yiz2qw4i5jm8wysn0q7v56"))))
348edd91
KK
535 (build-system cmake-build-system)
536 (arguments
1f1c525a
KK
537 `(;; FIXME: Disable tests on i686 to work around
538 ;; https://github.com/openbabel/openbabel/issues/2041.
539 #:tests? ,(or (%current-target-system)
540 (not (string=? "i686-linux" (%current-system))))
541 #:configure-flags
348edd91
KK
542 (list "-DOPENBABEL_USE_SYSTEM_INCHI=ON"
543 (string-append "-DINCHI_LIBRARY="
544 (assoc-ref %build-inputs "inchi")
545 "/lib/inchi/libinchi.so.1")
546 (string-append "-DINCHI_INCLUDE_DIR="
547 (assoc-ref %build-inputs "inchi") "/include/inchi"))
548 #:test-target "test"))
549 (native-inputs
550 `(("pkg-config" ,pkg-config)))
551 (inputs
552 `(("eigen" ,eigen)
553 ("inchi" ,inchi)
554 ("libxml2" ,libxml2)
555 ("zlib" ,zlib)))
556 (home-page "http://openbabel.org/wiki/Main_Page")
557 (synopsis "Chemistry data manipulation toolbox")
558 (description
559 "Open Babel is a chemical toolbox designed to speak the many languages of
560chemical data. It's a collaborative project allowing anyone to search, convert,
561analyze, or store data from molecular modeling, chemistry, solid-state
562materials, biochemistry, or related areas.")
563 (license license:gpl2)))
ead60993
KK
564
565(define-public spglib
566 (package
567 (name "spglib")
568 (version "1.16.0")
569 (source
570 (origin
571 (method git-fetch)
572 (uri (git-reference
573 (url "https://github.com/spglib/spglib")
574 (commit (string-append "v" version))))
575 (sha256
576 (base32 "1kzc956m1pnazhz52vspqridlw72wd8x5l3dsilpdxl491aa2nws"))
577 (file-name (git-file-name name version))))
578 (build-system cmake-build-system)
579 (arguments
580 '(#:test-target "check"
581 #:phases
582 (modify-phases %standard-phases
583 (add-after 'unpack 'patch-header-install-dir
584 (lambda _
585 ;; As of the writing of this package, CMake and GNU build systems
586 ;; install the header to two different location. This patch makes
587 ;; the CMake build system's choice of header directory compatible
588 ;; with the GNU build system's choice and with what avogadrolibs
589 ;; expects.
590 ;; See https://github.com/spglib/spglib/issues/75 and the relevant
591 ;; part of https://github.com/OpenChemistry/avogadroapp/issues/97.
592 (substitute* "CMakeLists.txt"
593 (("\\$\\{CMAKE_INSTALL_INCLUDEDIR\\}" include-dir)
594 (string-append include-dir "/spglib")))
595 #t)))))
596 (home-page "https://spglib.github.io/spglib/index.html")
597 (synopsis "Library for crystal symmetry search")
598 (description "Spglib is a library for finding and handling crystal
599symmetries written in C. Spglib can be used to:
600
601@enumerate
602@item Find symmetry operations
603@item Identify space-group type
604@item Wyckoff position assignment
605@item Refine crystal structure
606@item Find a primitive cell
607@item Search irreducible k-points
608@end enumerate")
609 (license license:bsd-3)))