From 8183210e59b032b0f927dfebca75963d258617a1 Mon Sep 17 00:00:00 2001 From: snehring <7978778+snehring@users.noreply.github.com> Date: Sat, 29 Apr 2023 16:52:32 -0500 Subject: Feature/topiary (#37157) * generax: adding new package generax * muscle5: adding new package muscle5 * py-custom-inherit: adding new package py-custom-inherit * py-ete3: adding new package py-ete3 * py-itolapi: adding new package py-itolapi * py-opentree: adding new package py-opentree * py-pypng: adding new package py-pypng * py-toyplot: adding new package py-toyplot * py-toytree: adding new package py-toytree * py-pastml: adding new package py-pastml * raxml-ng: adding new version 1.1.0 * py-topiary: adding new package py-topiary * generax: adding master branch version generax: adding version 2.0.1 generax: add mpi variant * py-topiary: add main * generax: correcting commit for 2.0.1 * Update var/spack/repos/builtin/packages/py-itolapi/package.py Co-authored-by: Adam J. Stewart * Update var/spack/repos/builtin/packages/py-opentree/package.py Co-authored-by: Adam J. Stewart * py-topiary-asr: rename package, requested changes. * Update var/spack/repos/builtin/packages/py-topiary-asr/package.py Co-authored-by: Adam J. Stewart --------- Co-authored-by: Adam J. Stewart --- .../builtin/packages/generax/model-stdexcept.patch | 12 +++++ .../repos/builtin/packages/generax/package.py | 37 +++++++++++++ .../repos/builtin/packages/muscle5/package.py | 27 ++++++++++ .../builtin/packages/py-custom-inherit/package.py | 22 ++++++++ .../repos/builtin/packages/py-ete3/package.py | 28 ++++++++++ .../repos/builtin/packages/py-itolapi/package.py | 21 ++++++++ .../repos/builtin/packages/py-opentree/package.py | 22 ++++++++ .../repos/builtin/packages/py-pastml/package.py | 30 +++++++++++ .../repos/builtin/packages/py-pypng/package.py | 22 ++++++++ .../builtin/packages/py-topiary-asr/package.py | 62 ++++++++++++++++++++++ .../repos/builtin/packages/py-toyplot/package.py | 27 ++++++++++ .../repos/builtin/packages/py-toytree/package.py | 28 ++++++++++ .../repos/builtin/packages/raxml-ng/package.py | 1 + 13 files changed, 339 insertions(+) create mode 100644 var/spack/repos/builtin/packages/generax/model-stdexcept.patch create mode 100644 var/spack/repos/builtin/packages/generax/package.py create mode 100644 var/spack/repos/builtin/packages/muscle5/package.py create mode 100644 var/spack/repos/builtin/packages/py-custom-inherit/package.py create mode 100644 var/spack/repos/builtin/packages/py-ete3/package.py create mode 100644 var/spack/repos/builtin/packages/py-itolapi/package.py create mode 100644 var/spack/repos/builtin/packages/py-opentree/package.py create mode 100644 var/spack/repos/builtin/packages/py-pastml/package.py create mode 100644 var/spack/repos/builtin/packages/py-pypng/package.py create mode 100644 var/spack/repos/builtin/packages/py-topiary-asr/package.py create mode 100644 var/spack/repos/builtin/packages/py-toyplot/package.py create mode 100644 var/spack/repos/builtin/packages/py-toytree/package.py diff --git a/var/spack/repos/builtin/packages/generax/model-stdexcept.patch b/var/spack/repos/builtin/packages/generax/model-stdexcept.patch new file mode 100644 index 0000000000..20728f8540 --- /dev/null +++ b/var/spack/repos/builtin/packages/generax/model-stdexcept.patch @@ -0,0 +1,12 @@ +diff --git a/src/core/IO/Model.hpp b/src/core/IO/Model.hpp +index 0eb6ce1..3a16942 100644 +--- a/src/core/IO/Model.hpp ++++ b/src/core/IO/Model.hpp +@@ -6,6 +6,7 @@ + + #include + #include ++#include + extern "C" { + #include + #include diff --git a/var/spack/repos/builtin/packages/generax/package.py b/var/spack/repos/builtin/packages/generax/package.py new file mode 100644 index 0000000000..149f1f6c9c --- /dev/null +++ b/var/spack/repos/builtin/packages/generax/package.py @@ -0,0 +1,37 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Generax(CMakePackage): + """GeneRax is a parallel tool for species tree-aware maximum likelihood + based gene family tree inference under gene duplication, transfer, + and loss. + """ + + homepage = "https://github.com/BenoitMorel/GeneRax" + git = "https://github.com/BenoitMorel/GeneRax.git" + + maintainers("snehring") + + version("master", branch="master", submodules=True) + version("dev", branch="dev", submodules=True) + version("2.0.4", commit="e4fab40f407bdd3b588d3d69a449f8c1be56f9fa", submodules=True) + version("2.0.1", commit="0623dae55dd602a60faae63e9991fa8d41782456", submodules=True) + + depends_on("cmake@3.0.1:", type="build") + depends_on("mpi", when="+mpi") + depends_on("bison") + depends_on("flex") + + variant("mpi", default=False) + + build_directory = "build" + + patch("model-stdexcept.patch", when="@:2.0.4") + + def install(self, spec, prefix): + install_tree("build/bin", prefix.bin) diff --git a/var/spack/repos/builtin/packages/muscle5/package.py b/var/spack/repos/builtin/packages/muscle5/package.py new file mode 100644 index 0000000000..543c1958f9 --- /dev/null +++ b/var/spack/repos/builtin/packages/muscle5/package.py @@ -0,0 +1,27 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Muscle5(MakefilePackage): + """MUSCLE is widely-used software for making multiple alignments of + biological sequences. + """ + + homepage = "https://drive5.com/muscle5/" + url = "https://github.com/rcedgar/muscle/archive/refs/tags/5.1.0.tar.gz" + + maintainers("snehring") + + version("5.1.0", sha256="2bba8b06e3ccabf6465fa26f459763b2029d7e7b9596881063e3aaba60d9e87d") + + depends_on("sed", type="build") + + build_directory = "src" + + def install(self, spec, prefix): + mkdir(prefix.bin) + install("src/Linux/muscle", prefix.bin) diff --git a/var/spack/repos/builtin/packages/py-custom-inherit/package.py b/var/spack/repos/builtin/packages/py-custom-inherit/package.py new file mode 100644 index 0000000000..ea17dadeb5 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-custom-inherit/package.py @@ -0,0 +1,22 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyCustomInherit(PythonPackage): + """A Python package that provides customized docstring inheritance schemes + between derived classes and their parents. + """ + + homepage = "https://github.com/rsokl/custom_inherit" + pypi = "custom_inherit/custom_inherit-2.2.2.tar.gz" + + maintainers("snehring") + + version("2.4.1", sha256="7052eb337bcce83551815264391cc4efc2bf70b295a3c52aba64f1ab57c3a8a2") + version("2.2.2", sha256="83c048bc3415a9e38e44e78dbe231f837aa3d4fd91b4e71443b6f6e38034f583") + + depends_on("py-setuptools", type="build") diff --git a/var/spack/repos/builtin/packages/py-ete3/package.py b/var/spack/repos/builtin/packages/py-ete3/package.py new file mode 100644 index 0000000000..745e430610 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-ete3/package.py @@ -0,0 +1,28 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyEte3(PythonPackage): + """The Environment for Tree Exploration (ETE) is a Python programming + toolkit that assists in the recontruction, manipulation, analysis + and visualization of phylogenetic trees (although clustering + trees or any other tree-like data structure are also supported). + """ + + homepage = "http://etetoolkit.org/" + pypi = "ete3/ete3-3.1.2.tar.gz" + + maintainers("snehring") + + version("3.1.2", sha256="4fc987b8c529889d6608fab1101f1455cb5cbd42722788de6aea9c7d0a8e59e9") + + depends_on("py-setuptools", type="build") + + depends_on("py-numpy", type=("build", "run")) + depends_on("py-pyqt5", type=("build", "run")) + depends_on("py-lxml", type=("build", "run")) + depends_on("py-six", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-itolapi/package.py b/var/spack/repos/builtin/packages/py-itolapi/package.py new file mode 100644 index 0000000000..95b1922544 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-itolapi/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyItolapi(PythonPackage): + """API for interacting with itol.embl.de""" + + homepage = "https://github.com/albertyw/itolapi" + pypi = "itolapi/itolapi-4.1.2.tar.gz" + + maintainers("snehring") + + version("4.1.2", sha256="37a866a117a80d3d72a6eb6b2cba30444751c644cc6bc4242f050750375a8397") + + depends_on("py-setuptools", type="build") + + depends_on("py-requests@2", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-opentree/package.py b/var/spack/repos/builtin/packages/py-opentree/package.py new file mode 100644 index 0000000000..a4b5d9b21f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-opentree/package.py @@ -0,0 +1,22 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyOpentree(PythonPackage): + """Library for interacting with Open Tree of Life resources.""" + + homepage = "https://github.com/OpenTreeOfLife/python-opentree" + pypi = "opentree/opentree-1.0.1.tar.gz" + + maintainers("snehring") + + version("1.0.1", sha256="a765ae37cd72c232c292506c170656aaaa4be81e6de6ccd4845eec01bfe45e4d") + + depends_on("py-setuptools", type=("build", "run")) + + depends_on("py-requests@2.18:", type=("build", "run")) + depends_on("py-dendropy@4.4.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-pastml/package.py b/var/spack/repos/builtin/packages/py-pastml/package.py new file mode 100644 index 0000000000..9e75b05798 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pastml/package.py @@ -0,0 +1,30 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyPastml(PythonPackage): + """Ancestral character reconstruction and visualisation for rooted + phylogenetic trees. + """ + + homepage = "https://github.com/evolbioinfo/pastml" + pypi = "pastml/pastml-1.9.40.tar.gz" + + maintainers("snehring") + + version("1.9.40", sha256="5334bc8de70a968117240b90d90878ac935be18de6e6e485fb1a8f90cd539fea") + + depends_on("python@3.8:", type=("build", "run")) + depends_on("py-setuptools", type="build") + + depends_on("py-ete3@3.1.1:", type=("build", "run")) + depends_on("py-pandas@1.0.0:", type=("build", "run")) + depends_on("py-numpy@1.22:", type=("build", "run")) + depends_on("py-jinja2@2.11.0:", type=("build", "run")) + depends_on("py-scipy@1.5.0:", type=("build", "run")) + depends_on("py-itolapi@4.0.0:", type=("build", "run")) + depends_on("py-biopython@1.70:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-pypng/package.py b/var/spack/repos/builtin/packages/py-pypng/package.py new file mode 100644 index 0000000000..b23a7c4443 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pypng/package.py @@ -0,0 +1,22 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyPypng(PythonPackage): + """PyPNG allows PNG image files to be read and written using pure Python.""" + + homepage = "https://gitlab.com/drj11/pypng" + pypi = "pypng/pypng-0.0.20.tar.gz" + + maintainers("snehring") + + version( + "0.20220715.0", sha256="739c433ba96f078315de54c0db975aee537cbc3e1d0ae4ed9aab0ca1e427e2c1" + ) + version("0.0.20", sha256="1032833440c91bafee38a42c38c02d00431b24c42927feb3e63b104d8550170b") + + depends_on("py-setuptools@35.0.2:", type="build") diff --git a/var/spack/repos/builtin/packages/py-topiary-asr/package.py b/var/spack/repos/builtin/packages/py-topiary-asr/package.py new file mode 100644 index 0000000000..ec09c18b22 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-topiary-asr/package.py @@ -0,0 +1,62 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyTopiaryAsr(PythonPackage): + """Python framework for doing ancestral sequence reconstruction.""" + + homepage = "https://github.com/harmslab/topiary" + + url = "https://github.com/harmslab/topiary/archive/refs/tags/v0.9.9.tar.gz" + git = "https://github.com/harmslab/topiary.git" + + maintainers("snehring") + + version("main", branch="main") + version("0.9.9", sha256="5601fba92e7add33a3732482426b2c7ef46b0fccc4a4ea11357537e1b937903c") + + depends_on("python@3.8:", type=("build", "run")) + depends_on("py-setuptools", type="build") + + depends_on("py-biopython", type=("build", "run")) + depends_on("py-numpy@:1.21", type=("build", "run")) + depends_on("py-pandas", type=("build", "run")) + depends_on("py-matplotlib", type=("build", "run")) + depends_on("py-ete3", type=("build", "run")) + depends_on("py-toytree", type=("build", "run")) + depends_on("py-dendropy", type=("build", "run")) + depends_on("py-pastml", type=("build", "run")) + depends_on("py-openpyxl", type=("build", "run")) + depends_on("py-opentree", type=("build", "run")) + depends_on("py-tqdm", type=("build", "run")) + depends_on("py-xlrd", type=("build", "run")) + # while undocumented, this requires mpi4py to run + depends_on("py-mpi4py", type=("build", "run")) + + # runtime deps from https://topiary-asr.readthedocs.io/en/latest/installation.html#required-libraries + depends_on("blast-plus", type="run") + depends_on("muscle5@5.0:", type="run") + depends_on("generax@2.0:+mpi", type="run") + depends_on("raxml-ng@1.1:", type="run") + + depends_on("mpi", type="run") + depends_on("openmpi+legacylaunchers", type="run", when="^openmpi schedulers=slurm") + + conflicts("mpich") + + def patch(self): + if self.spec.satisfies("^raxml-ng+mpi"): + filter_file( + r"RAXML_BINARY\s*=\s*\"raxml-ng\"$", + 'RAXML_BINARY = "raxml-ng-mpi"', + join_path("topiary", "raxml", "_raxml.py"), + ) + filter_file( + r"binary\s*=\s*\"raxml-ng\"", + 'binary = "raxml-ng-mpi"', + join_path("topiary", "_private", "installed.py"), + ) diff --git a/var/spack/repos/builtin/packages/py-toyplot/package.py b/var/spack/repos/builtin/packages/py-toyplot/package.py new file mode 100644 index 0000000000..78e5e636bb --- /dev/null +++ b/var/spack/repos/builtin/packages/py-toyplot/package.py @@ -0,0 +1,27 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyToyplot(PythonPackage): + """A modern plotting toolkit supporting electronic publishing and reproducibility.""" + + homepage = "https://github.com/sandialabs/toyplot" + pypi = "toyplot/toyplot-0.19.0.tar.gz" + + maintainers("snehring") + + version("1.0.3", sha256="7b7b2bc5784fd75e5c695300bffc80d568c83bebef543bb54e6e6c2229912edd") + version("0.19.0", sha256="d199b4ac2d5ee454fec8be937bd9f1a313145545adc192bb0db2fd3defada484") + + depends_on("py-setuptools", type="build") + + depends_on("py-arrow@1.0:", type=("build", "run")) + depends_on("py-custom-inherit", type=("build", "run")) + depends_on("py-multipledispatch", type=("build", "run")) + depends_on("py-numpy@1.8.0:", type=("build", "run")) + depends_on("py-pypng", type=("build", "run")) + depends_on("py-reportlab", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-toytree/package.py b/var/spack/repos/builtin/packages/py-toytree/package.py new file mode 100644 index 0000000000..80c08153ee --- /dev/null +++ b/var/spack/repos/builtin/packages/py-toytree/package.py @@ -0,0 +1,28 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyToytree(PythonPackage): + """A minimalist tree manipulation and plotting library for use inside + jupyter notebooks. Toytree combines a popular tree data structure + based on the ete3 library with modern plotting tools based on the + toyplot plotting library. + """ + + homepage = "https://github.com/eaton-lab/toytree" + pypi = "toytree/toytree-2.0.1.tar.gz" + + maintainers("snehring") + + version("2.0.1", sha256="4f1452a76441857a13f72c99bf7d9f0a394cd8eae7fc02ee5349d946f2507101") + + depends_on("py-setuptools", type="build") + + depends_on("py-toyplot", type=("build", "run")) + depends_on("py-numpy", type=("build", "run")) + depends_on("py-requests", type=("build", "run")) + depends_on("py-future", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/raxml-ng/package.py b/var/spack/repos/builtin/packages/raxml-ng/package.py index ac0edb6301..f2c1c381a8 100644 --- a/var/spack/repos/builtin/packages/raxml-ng/package.py +++ b/var/spack/repos/builtin/packages/raxml-ng/package.py @@ -21,6 +21,7 @@ class RaxmlNg(CMakePackage): url = "https://github.com/amkozlov/raxml-ng/archive/1.0.1.tar.gz" git = "https://github.com/amkozlov/raxml-ng.git" + version("1.1.0", submodules=True) version("1.0.2", submodules=True) version("1.0.1", submodules=True) -- cgit v1.2.3-70-g09d2