Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
8002789
no longer use Biopython for blast; avoid deprecation
harmsm Jun 24, 2024
1800d44
Merge pull request #5 from harmsm/newblast
harmsm Jun 24, 2024
801b55a
cleaned up deprecation warnings for topiary itself
harmsm Jun 24, 2024
6e329f4
Merge pull request #6 from harmsm/cleanup
harmsm Jun 24, 2024
20c8845
fixed bug that sometimes caused ref proteome downloads to fail
harmsm Jun 25, 2024
2bf368f
updated for toytree 2.0.x api, pinned requirements.txt
harmsm Jul 3, 2024
b76499b
Merge pull request #7 from harmsm/updatetoytree
harmsm Jul 3, 2024
3bc5b97
updated badges -- maybe trigger action?
harmsm Jul 3, 2024
4eeb748
turned off cron
harmsm Jul 6, 2024
b08d370
starting refactor. nuked pastml. now installs
harmsm Mar 6, 2026
13722da
now passing all unit tests
harmsm Mar 6, 2026
77b7c6b
port to ete4, fixed generax, fixed raxml-ng
harmsm Mar 7, 2026
246317c
match test structure to code structure
harmsm Mar 7, 2026
55b5f8e
better pipeline unit tests
harmsm Mar 8, 2026
3854319
adding compilation scripts for generax and raxml
harmsm Mar 8, 2026
973d274
getting mpi working on macos
harmsm Mar 8, 2026
9842e9b
Merge branch 'main' of github.com:harmslab/topiary
harmsm Mar 8, 2026
2202963
changing how topiary checks for errors in generax runs
harmsm Mar 9, 2026
8444243
altered raxml version check for cluster
harmsm Mar 9, 2026
967d1ae
minor cleanup of testing logic, thread number checking
harmsm Mar 9, 2026
fcab1db
still cleaning up threads
harmsm Mar 10, 2026
b81137c
resolving slurm/mpi/multiprocessing conflict
harmsm Mar 10, 2026
76d411b
still working on mpi passing
harmsm Mar 10, 2026
b98e1b8
still working on slurm/threading
harmsm Mar 10, 2026
2f7f888
adding mpi check to installed
harmsm Mar 10, 2026
7f23256
finalized compile scripts
harmsm Mar 10, 2026
cbdf65b
aligment-to-reconciled pipeline now works, cleaned up tree manipulation
harmsm Mar 10, 2026
f416d95
ASR pipelines run end-to-end with proper node mapping
harmsm Mar 11, 2026
d99d750
increasing unit test coverage over the whole codebase
harmsm Mar 12, 2026
6fb1098
updated github workflow
harmsm Mar 12, 2026
6afc39c
updating gh workflows
harmsm Mar 12, 2026
c906b56
clean up small flake crash
harmsm Mar 12, 2026
e22fa58
updated conftest to be findable by ghworkflows
harmsm Mar 12, 2026
733e36b
updated github workflows
harmsm Mar 13, 2026
6177d59
supervisor uses relative paths now, fixing github workflows
harmsm Mar 13, 2026
f33ca1e
better mpi for github workflows
harmsm Mar 14, 2026
befac60
updated mpi oversubscribe bug
harmsm Mar 16, 2026
8f0ebae
added ability to ignore oversubscribe for generax tests
harmsm Mar 16, 2026
1325fff
fixing workflow failures
harmsm Mar 16, 2026
d668078
small fix on nix gh workflows, updated win installation
harmsm Mar 16, 2026
00fec55
fixing windows install
harmsm Mar 16, 2026
8533dc2
cleaning up windows install
harmsm Mar 16, 2026
97b57d4
debugging windows install/CI run
harmsm Mar 16, 2026
8f8095a
altered concurrency
harmsm Mar 16, 2026
54e6f19
updating windows install workflow
harmsm Mar 16, 2026
1246794
continuting to tweak windows install
harmsm Mar 16, 2026
1216b19
cleaned up install script; dropped windows
harmsm Mar 16, 2026
0fe6fd8
updated docs and cleaned up doc install
harmsm Mar 17, 2026
5840a38
mocking ncbi calls
harmsm Mar 17, 2026
ff068f1
dropping ncbi queries from github workflows
harmsm Mar 17, 2026
2065a44
removed SLURM/PMI variable stripping from MPI
harmsm Mar 17, 2026
7cbff12
updated bootstrap reconcilation parallelism
harmsm Mar 17, 2026
6cae199
cleaned up user interface for specifying reconcilation
harmsm Mar 17, 2026
a7df4e3
remove slurm generax collisions, do not crash whole job
harmsm Mar 17, 2026
8550674
fixed restart bug
harmsm Mar 17, 2026
0327b0c
bugfix in --restart
harmsm Mar 18, 2026
991f2f0
fixing single-node mpi bug
harmsm Mar 18, 2026
3dac82c
convergence cutoff
harmsm Mar 18, 2026
f8abcc7
added topiary-dataframe-from-fasta
harmsm Mar 18, 2026
185998b
working on mpi single node crash
harmsm Mar 18, 2026
5cca49f
compiling generax and raxml
harmsm Mar 19, 2026
40d87e4
finalizing MPI mulit-node batching
harmsm Mar 20, 2026
cfee941
fixing mpi slurm interaction
harmsm Mar 20, 2026
e934fcd
final doc update, version bump
harmsm Mar 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 7 additions & 0 deletions .agent/rules/env.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
trigger: always_on
---

Always execute Python commands, tests, and scripts using the interpreter located at: `/Users/harmsm/miniconda3/envs/topiary/bin/python`. Do not use the global python command. Please highlight the changes in each file you modify in the Antigravity IDE and allow me to approve them.


111 changes: 60 additions & 51 deletions .github/workflows/python-app.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

# NOTE: this does not run with --run-raxml or --run-generax flags, so these
# tests will be skipped.

name: topiary

on:
Expand All @@ -12,84 +9,96 @@ on:
pull_request:
branches: [ main ]

concurrency:
group: topiary-ci-group
cancel-in-progress: false

jobs:
build-nix:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
max-parallel: 3
max-parallel: 1
matrix:
os: [ubuntu-latest,macos-latest]
python-version: ['3.8', '3.9', '3.10' , '3.11']
python-version: ['3.11', '3.12', '3.13']

steps:
- name: checkout
uses: actions/checkout@v3.0.0
uses: actions/checkout@v4

- name: set up miniconda
uses: conda-incubator/setup-miniconda@v2
uses: conda-incubator/setup-miniconda@v3
with:
activate-environment: topiary
environment-file: environment.yml
channel-priority: strict
python-version: ${{ matrix.python-version }}
auto-activate-base: false
miniconda-version: "latest"

- name: install topiary
shell: bash -l {0}
- name: get dependency hashes
id: get-hashes
shell: bash
run: |
# platform specific packages
conda install -c conda-forge -c bioconda "mpi4py" "muscle>=5.0" "raxml-ng>=1.1" "generax>=2.0" "blast>=2.2"
python -m pip install . -vv
GENERAX_HASH=$(git ls-remote https://github.com/harmslab/generax.git HEAD | awk '{print $1}')
RAXML_HASH=$(git ls-remote https://github.com/harmslab/raxml-ng.git HEAD | awk '{print $1}')
echo "generax_hash=$GENERAX_HASH" >> $GITHUB_OUTPUT
echo "raxml_hash=$RAXML_HASH" >> $GITHUB_OUTPUT

- name: run flake8
shell: bash -l {0}
run: |
conda install flake8
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
- name: cache generax
id: cache-generax
uses: actions/cache@v4
with:
path: bin-cache/generax
key: ${{ runner.os }}-generax-${{ steps.get-hashes.outputs.generax_hash }}

- name: run pytest
- name: cache raxml-ng
id: cache-raxml
uses: actions/cache@v4
with:
path: bin-cache/raxml-ng
key: ${{ runner.os }}-raxml-${{ steps.get-hashes.outputs.raxml_hash }}

- name: install topiary
shell: bash -l {0}
run: |
conda install pytest
export PATH=`which conda | xargs dirname`/envs/topiary/bin/:$PATH
pytest

build-windows:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
max-parallel: 3
matrix:
os: [windows-latest]
python-version: ['3.8', '3.9', '3.10' , '3.11']
# platform specific packages
conda install -c conda-forge cmake
python -m pip install .[dev] -vv
python -m pip install coverage flake8 pytest genbadge[tests] pytest-mock

steps:
- name: checkout
uses: actions/checkout@v3.0.0
# Ensure bin-cache exists
mkdir -p bin-cache

- name: set up miniconda
uses: conda-incubator/setup-miniconda@v2
with:
activate-environment: topiary
environment-file: environment.yml
python-version: ${{ matrix.python-version }}
auto-activate-base: false
# compile generax if not cached
if [ ! -f bin-cache/generax ]; then
cd dependencies
conda run -n topiary bash compile-generax.sh
cp $CONDA_PREFIX/bin/generax ../bin-cache/
cd ..
else
cp bin-cache/generax $CONDA_PREFIX/bin/
fi

- name: install topiary
shell: pwsh
run: |
python -m pip install . -vv
# compile raxml if not cached
if [ ! -f bin-cache/raxml-ng ]; then
cd dependencies
conda run -n topiary bash compile-raxml-ng.sh
cp $CONDA_PREFIX/bin/raxml-ng ../bin-cache/
cd ..
else
cp bin-cache/raxml-ng $CONDA_PREFIX/bin/
fi

- name: run flake8
shell: pwsh
shell: bash -l {0}
run: |
conda install flake8
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
flake8 src/topiary tests --count --select=E9,F63,F7,F82 --show-source --statistics

- name: run pytest
shell: pwsh
shell: bash -l {0}
env:
TOPIARY_MPI_OVERSUBSCRIBE: "1"
run: |
conda install pytest
$Env:PATH = "C:\Miniconda3\Scripts\;$Env:PATH"
pytest
pytest tests/ --run-raxml --run-generax --run-blast
10 changes: 10 additions & 0 deletions dependencies/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
You can use these scripts to download and compile the Harmslab-specific forks
of generax and raxml-ng. We recommend using our pre-compiled binaries.

NOTE: these should be run inside the conda environment holding topiary.

Example usage:

conda activate topiary
bash compile-generax.sh
bash compile-raxml-ng.sh
46 changes: 46 additions & 0 deletions dependencies/compile-generax.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#!/bin/bash

# NOTE: this script should generally be run by "install.sh", not run by itself.

# -----------------------------------------------------------------------------
# COMPILING ON A CLUSTER
#
# To run generax on a cluster, you need to make sure that it is compiled
# using your cluster's compilers and MPI. To do this, you can add a line like
# this one to the top of this script:

# module load mpi/gcc/13.1.0/openmpi/4.1.6

# This makes sure that generax compiles against the correct openmpi library,
# which allows it to run across multiple cores/nodes on a cluster. The exact
# command depends on your cluster. If your cluster uses SLURM, you can usually
# find the correct command by running `module spider mpi`. If you are unsure
# which command to use, please contact your cluster administrator.

# -----------------------------------------------------------------------------
# No user modifications should be required below this line

# Check for conda environment
if [ -z "$CONDA_PREFIX" ]; then
echo "ERROR: \$CONDA_PREFIX is not set. This script should be run via "
echo "'conda run -n <env_name> bash compile-generax.sh'"
exit 1
fi

# Clean up environment
rm -rf generax

# Download repo and submodules
git clone https://github.com/harmslab/generax.git
cd generax
git submodule update --init --recursive

# Build binary
mkdir build
cd build
cmake -DUSE_MPI=ON -DCORAX_BUILD_PORTABLE=ON ..
make -j 4

# Copy binary to final location
cp bin/generax $CONDA_PREFIX/bin/

29 changes: 29 additions & 0 deletions dependencies/compile-raxml-ng.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/bin/bash

# This script should generally be run by "install.sh", not run by itself. It
# should not require any user edits.

# Check for conda environment
if [ -z "$CONDA_PREFIX" ]; then
echo "ERROR: \$CONDA_PREFIX is not set. This script should be run via "
echo "'conda run -n <env_name> bash compile-raxml-ng.sh'"
exit 1
fi

# Clean up environment
rm -rf raxml-ng

# Download repo and submodules
git clone https://github.com/harmslab/raxml-ng.git
cd raxml-ng
git submodule update --init --recursive

# Build binary
mkdir build
cd build
cmake -DTERRAPHAST_ARCH_NATIVE=OFF -DENABLE_RAXML_SIMD=OFF -DENABLE_PLLMOD_SIMD=OFF ..
make -j 4

# Copy binary to final location
cp bin/raxml-ng $CONDA_PREFIX/bin/

2 changes: 1 addition & 1 deletion docs/badges/coverage-badge.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/badges/final_verify.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 7 additions & 7 deletions docs/badges/ghwf.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/badges/test_annotate.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading