summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorSharlatan Hellseher <sharlatanus@gmail.com>2022-11-16 22:50:35 +0000
committerLudovic Courtès <ludo@gnu.org>2022-12-02 00:02:12 +0100
commit594f5ef35107d5641c44dac5cd7e9fb3737b674b (patch)
treeb9b4a4b72e54eb754d121fc60550d0d3601b4641 /gnu
parent5a7e496c5d1a9f38e71033e0ddfcd3446553dff8 (diff)
downloadguix-594f5ef35107d5641c44dac5cd7e9fb3737b674b.tar.gz
gnu: Add alfa.
* gnu/packages/astronomy.scm (alfa): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/astronomy.scm52
1 files changed, 52 insertions, 0 deletions
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index 439fdf72a8..66bff83033 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -89,6 +89,58 @@
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1))
 
+(define-public alfa
+  (package
+    (name "alfa")
+    (version "2.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/rwesson/ALFA")
+                    (commit (string-append "v" version))))
+              (sha256
+               (base32
+                "0aqxqar36822mh373awsl79j7zn8vik4yddyydsxv0c76gn4i2k3"))
+              (file-name (git-file-name name version))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:parallel-build? #f
+           #:make-flags #~(list (string-append "PREFIX="
+                                               #$output)
+                                (string-append "VERSION="
+                                               #$version))
+           #:phases #~(modify-phases %standard-phases
+                        (delete 'configure)
+                        (delete 'check)
+                        (add-after 'install 'post-install-check
+                          (lambda* (#:key tests? #:allow-other-keys)
+                            (when tests?
+                              (invoke "make" "fittest")))))))
+    (inputs (list cfitsio gfortran))
+    (home-page "https://nebulousresearch.org/codes/alfa/")
+    (synopsis "Automated line fitting algorithm")
+    (description
+     "This package provides @acronym{ALFA, Automatic line fitting algorithm},
+which can identify and fit hundreds of lines in emission line spectra in just a
+few seconds with following features:
+@itemize
+
+@item A population of synthetic spectra is generated using a reference line
+catalogue.
+
+@item The goodness of fit for each synthetic spectrum is calculated.  The best
+sets of parameters are retained and the rest discarded.
+
+@item A new population of synthetic spectra is obtained by averaging pairs of
+the best performers.
+
+@item A small fraction of the parameters of the lines in the new generation are
+randomly altered.
+
+@item The process repeats until a good fit is obtained.
+@end itemize")
+    (license license:gpl3)))
+
 (define-public aocommon
   (let ((commit "7329a075271edab8f6264db649e81e62b2b6ae5e")
         (revision "1"))