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 <ajstewart426@gmail.com>

* Update var/spack/repos/builtin/packages/py-opentree/package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* py-topiary-asr: rename package, requested changes.

* Update var/spack/repos/builtin/packages/py-topiary-asr/package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

---------

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
This commit is contained in:
snehring 2023-04-29 16:52:32 -05:00 committed by GitHub
parent 896a81ba35
commit 8183210e59
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 339 additions and 0 deletions

View File

@ -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 <algorithm>
#include <unordered_map>
+#include <stdexcept>
extern "C" {
#include <pll.h>
#include <pllmod_algorithm.h>

View File

@ -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)

View File

@ -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)

View File

@ -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")

View File

@ -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"))

View File

@ -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"))

View File

@ -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"))

View File

@ -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"))

View File

@ -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")

View File

@ -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"),
)

View File

@ -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"))

View File

@ -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"))

View File

@ -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)