PythiaLabelGenerator 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. pythialabelgenerator-1.0.0/.github/actions/setup-iqtree/action.yml +22 -0
  2. pythialabelgenerator-1.0.0/.github/actions/setup-raxmlng/action.yml +20 -0
  3. pythialabelgenerator-1.0.0/.github/actions/test-label-cli/action.yml +12 -0
  4. pythialabelgenerator-1.0.0/.github/workflows/test-label-generator.yml +72 -0
  5. pythialabelgenerator-1.0.0/.gitignore +174 -0
  6. pythialabelgenerator-1.0.0/.pre-commit-config.yaml +16 -0
  7. pythialabelgenerator-1.0.0/LICENSE +674 -0
  8. pythialabelgenerator-1.0.0/PKG-INFO +215 -0
  9. pythialabelgenerator-1.0.0/README.md +195 -0
  10. pythialabelgenerator-1.0.0/__init__.py +0 -0
  11. pythialabelgenerator-1.0.0/etc/environment.yml +9 -0
  12. pythialabelgenerator-1.0.0/examples/example.phy +880 -0
  13. pythialabelgenerator-1.0.0/labelgenerator/__init__.py +15 -0
  14. pythialabelgenerator-1.0.0/labelgenerator/iqtree.py +142 -0
  15. pythialabelgenerator-1.0.0/labelgenerator/iqtree_parser.py +183 -0
  16. pythialabelgenerator-1.0.0/labelgenerator/label.py +231 -0
  17. pythialabelgenerator-1.0.0/labelgenerator/logger.py +32 -0
  18. pythialabelgenerator-1.0.0/labelgenerator/main.py +176 -0
  19. pythialabelgenerator-1.0.0/labelgenerator/raxmlng.py +173 -0
  20. pythialabelgenerator-1.0.0/pyproject.toml +67 -0
  21. pythialabelgenerator-1.0.0/setup.py +3 -0
  22. pythialabelgenerator-1.0.0/tests/__init__.py +0 -0
  23. pythialabelgenerator-1.0.0/tests/conftest.py +55 -0
  24. pythialabelgenerator-1.0.0/tests/data/AA.phy +220 -0
  25. pythialabelgenerator-1.0.0/tests/data/DNA.phy +880 -0
  26. pythialabelgenerator-1.0.0/tests/data/MORPH.phy +6 -0
  27. pythialabelgenerator-1.0.0/tests/data/logs/AA.iqtree.iqtree +174 -0
  28. pythialabelgenerator-1.0.0/tests/data/logs/AA.iqtree.log +88 -0
  29. pythialabelgenerator-1.0.0/tests/data/logs/DNA.iqtree.iqtree +202 -0
  30. pythialabelgenerator-1.0.0/tests/data/logs/DNA.iqtree.log +247 -0
  31. pythialabelgenerator-1.0.0/tests/data/logs/DNA.raxml.log +177 -0
  32. pythialabelgenerator-1.0.0/tests/data/logs/MORPH.iqtree.iqtree +129 -0
  33. pythialabelgenerator-1.0.0/tests/data/logs/MORPH.iqtree.log +85 -0
  34. pythialabelgenerator-1.0.0/tests/data/logs/test.raxml.bestModel +1 -0
  35. pythialabelgenerator-1.0.0/tests/data/logs/test.raxml.bestTree +1 -0
  36. pythialabelgenerator-1.0.0/tests/data/logs/test.raxml.log +112 -0
  37. pythialabelgenerator-1.0.0/tests/data/logs/test.raxml.mlTrees +6 -0
  38. pythialabelgenerator-1.0.0/tests/data/logs/test.raxml.rba +0 -0
  39. pythialabelgenerator-1.0.0/tests/data/logs/test.raxml.startTree +2 -0
  40. pythialabelgenerator-1.0.0/tests/data/logs/test.rfdist.raxml.log +34 -0
  41. pythialabelgenerator-1.0.0/tests/data/logs/test.rfdist.raxml.rfDistances +15 -0
  42. pythialabelgenerator-1.0.0/tests/data/mltrees/AA.raxml.bestModel +1 -0
  43. pythialabelgenerator-1.0.0/tests/data/mltrees/AA.raxml.bestTree +1 -0
  44. pythialabelgenerator-1.0.0/tests/data/mltrees/AA.raxml.log +187 -0
  45. pythialabelgenerator-1.0.0/tests/data/mltrees/AA.raxml.mlTrees +20 -0
  46. pythialabelgenerator-1.0.0/tests/data/mltrees/AA.raxml.rba +0 -0
  47. pythialabelgenerator-1.0.0/tests/data/mltrees/AA.raxml.startTree +20 -0
  48. pythialabelgenerator-1.0.0/tests/data/mltrees/DNA.raxml.bestModel +1 -0
  49. pythialabelgenerator-1.0.0/tests/data/mltrees/DNA.raxml.bestTree +1 -0
  50. pythialabelgenerator-1.0.0/tests/data/mltrees/DNA.raxml.bestTreeCollapsed +1 -0
  51. pythialabelgenerator-1.0.0/tests/data/mltrees/DNA.raxml.log +218 -0
  52. pythialabelgenerator-1.0.0/tests/data/mltrees/DNA.raxml.mlTrees +20 -0
  53. pythialabelgenerator-1.0.0/tests/data/mltrees/DNA.raxml.rba +0 -0
  54. pythialabelgenerator-1.0.0/tests/data/mltrees/DNA.raxml.startTree +20 -0
  55. pythialabelgenerator-1.0.0/tests/data/mltrees/MORPH.raxml.bestModel +1 -0
  56. pythialabelgenerator-1.0.0/tests/data/mltrees/MORPH.raxml.bestTree +1 -0
  57. pythialabelgenerator-1.0.0/tests/data/mltrees/MORPH.raxml.bestTreeCollapsed +1 -0
  58. pythialabelgenerator-1.0.0/tests/data/mltrees/MORPH.raxml.log +144 -0
  59. pythialabelgenerator-1.0.0/tests/data/mltrees/MORPH.raxml.mlTrees +20 -0
  60. pythialabelgenerator-1.0.0/tests/data/mltrees/MORPH.raxml.rba +0 -0
  61. pythialabelgenerator-1.0.0/tests/data/mltrees/MORPH.raxml.startTree +20 -0
  62. pythialabelgenerator-1.0.0/tests/test_config.py +2 -0
  63. pythialabelgenerator-1.0.0/tests/test_iqtree.py +175 -0
  64. pythialabelgenerator-1.0.0/tests/test_iqtree_parser.py +323 -0
  65. pythialabelgenerator-1.0.0/tests/test_label.py +143 -0
  66. pythialabelgenerator-1.0.0/tests/test_raxmlng.py +223 -0
@@ -0,0 +1,22 @@
1
+ name: Setup IQ-TREE
2
+ runs:
3
+ using: composite
4
+ steps:
5
+ - name: Download IQ-TREE MacOS
6
+ if: runner.os == 'macOS'
7
+ run: |
8
+ wget https://github.com/iqtree/iqtree2/releases/download/v2.4.0/iqtree-2.4.0-macOS.zip
9
+ unzip iqtree-*.zip && mv iqtree-*/* .
10
+ shell: bash
11
+ - name: Download IQ-TREE Linux
12
+ if: runner.os == 'Linux'
13
+ run: |
14
+ wget https://github.com/iqtree/iqtree2/releases/download/v2.4.0/iqtree-2.4.0-Linux-intel.tar.gz
15
+ tar xvf iqtree-*.tar.gz && mv iqtree-*/* .
16
+ shell: bash
17
+ - name: Unzip IQ-TREE and set Env variable
18
+ run: echo iqtree2=$(pwd)/bin/iqtree2 >> $GITHUB_ENV
19
+ shell: bash
20
+ - name: Check IQ-TREE installation
21
+ run: $iqtree2 -v
22
+ shell: bash
@@ -0,0 +1,20 @@
1
+ name: Setup RAxML-NG
2
+ runs:
3
+ using: composite
4
+ steps:
5
+ - name: Download RAxML-NG MacOS
6
+ if: runner.os == 'macOS'
7
+ run: wget https://github.com/amkozlov/raxml-ng/releases/download/1.2.2/raxml-ng_v1.2.2_macos.zip
8
+ shell: bash
9
+ - name: Download RAxML-NG Linux
10
+ if: runner.os == 'Linux'
11
+ run: wget https://github.com/amkozlov/raxml-ng/releases/download/1.2.2/raxml-ng_v1.2.2_linux_x86_64.zip
12
+ shell: bash
13
+ - name: Unzip RAxML-NG and set Env variable
14
+ run: |
15
+ unzip raxml-ng_*.zip
16
+ echo raxmlng=$(pwd)/raxml-ng >> $GITHUB_ENV
17
+ shell: bash
18
+ - name: Check RAxML-NG installation
19
+ run: $raxmlng -v
20
+ shell: bash
@@ -0,0 +1,12 @@
1
+ name: Test Label CLI
2
+ inputs:
3
+ msa-file:
4
+ description: MSA file to test Label CLI with
5
+ default: examples/example.phy
6
+ runs:
7
+ using: composite
8
+ steps:
9
+ - name: Run Label CLI with an exemplary MSA to make sure everything is working
10
+ run: |
11
+ label -m ${{ inputs.msa-file }} -r ${{ env.raxmlng }} -i ${{ env.iqtree2 }} --ntrees 4
12
+ shell: bash -el {0}
@@ -0,0 +1,72 @@
1
+ name: Build and test LabelGenerator
2
+ run-name: Build and run the tests of the LabelGenerator python library.
3
+ on:
4
+ push:
5
+ paths-ignore:
6
+ - 'docs/**'
7
+ jobs:
8
+ Run-Label-Generator-Tests:
9
+ runs-on: ${{ matrix.os }}
10
+ strategy:
11
+ matrix:
12
+ os: [ubuntu-latest, macos-latest]
13
+ python-version: ["3.9", "3.12"]
14
+ steps:
15
+ - name: Check out repository code
16
+ uses: actions/checkout@v3
17
+ - name: Setup Conda
18
+ uses: mamba-org/setup-micromamba@v2
19
+ with:
20
+ environment-file: etc/environment.yml
21
+ cache-environment: true
22
+ create-args:
23
+ python=${{ matrix.python-version }}
24
+ generate-run-shell: false
25
+ post-cleanup: none
26
+ - name: Setup RAxML-NG and RAxML-NG env variable
27
+ uses: ./.github/actions/setup-raxmlng
28
+ - name: Setup IQ-TREE and IQ-TREE env variable
29
+ uses: ./.github/actions/setup-iqtree
30
+ - name: Install LabelGenerator and setup requirements
31
+ run: |
32
+ pip install -e . --no-deps
33
+ rm tests/test_config.py
34
+ echo "RAXMLNG_COMMAND = '${{ env.raxmlng }}'" >> tests/test_config.py
35
+ echo "IQTREE_COMMAND = '${{ env.iqtree2 }}'" >> tests/test_config.py
36
+ cat tests/test_config.py
37
+ shell: bash -el {0}
38
+ # - name: Setup tmate session
39
+ # uses: mxschmitt/action-tmate@v3
40
+ - name: Run LabelGenerator tests
41
+ run: |
42
+ PYTHONPATH=. pytest -svx
43
+ shell: bash -el {0}
44
+
45
+ Install-using-conda:
46
+ runs-on: ${{ matrix.os }}
47
+ strategy:
48
+ matrix:
49
+ os: [ubuntu-latest, macos-latest]
50
+ python-version: ["3.9", "3.12"]
51
+ steps:
52
+ - name: Check out repository code
53
+ uses: actions/checkout@v3
54
+ - name: Setup Conda
55
+ uses: mamba-org/setup-micromamba@v2
56
+ with:
57
+ environment-file: etc/environment.yml
58
+ cache-environment: true
59
+ create-args:
60
+ python=${{ matrix.python-version }}
61
+ generate-run-shell: false
62
+ post-cleanup: none
63
+ - name: Install LabelGenerator # Install LabelGenerator manually to get the correct branch
64
+ run: |
65
+ pip install -e . --no-deps
66
+ shell: bash -el {0}
67
+ - name: Setup RAxML-NG and RAxML-NG env variable
68
+ uses: ./.github/actions/setup-raxmlng
69
+ - name: Setup IQ-TREE and IQ-TREE env variable
70
+ uses: ./.github/actions/setup-iqtree
71
+ - name: Test installation by running the CLI
72
+ uses: ./.github/actions/test-label-cli
@@ -0,0 +1,174 @@
1
+ **/*.reduced.*
2
+ **/*.log
3
+ **/*.csv
4
+
5
+ *.raxml.*
6
+ !tests/**/*.raxml.*
7
+
8
+ *.iqtree.*
9
+ !tests/**/*.iqtree.log
10
+ !tests/**/*.iqtree.iqtree
11
+
12
+ *.reduced.phy
13
+
14
+ # Byte-compiled / optimized / DLL files
15
+ __pycache__/
16
+ *.py[cod]
17
+ *$py.class
18
+ .DS_Store
19
+
20
+ # C extensions
21
+ *.so
22
+
23
+ # Distribution / packaging
24
+ .Python
25
+ build/
26
+ develop-eggs/
27
+ dist/
28
+ downloads/
29
+ eggs/
30
+ .eggs/
31
+ lib/
32
+ lib64/
33
+ parts/
34
+ sdist/
35
+ var/
36
+ wheels/
37
+ share/python-wheels/
38
+ *.egg-info/
39
+ .installed.cfg
40
+ *.egg
41
+ MANIFEST
42
+
43
+ # PyInstaller
44
+ # Usually these files are written by a python script from a template
45
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
46
+ *.manifest
47
+ *.spec
48
+
49
+ # Installer logs
50
+ pip-log.txt
51
+ pip-delete-this-directory.txt
52
+
53
+ # Unit test / coverage reports
54
+ htmlcov/
55
+ .tox/
56
+ .nox/
57
+ .coverage
58
+ .coverage.*
59
+ .cache
60
+ nosetests.xml
61
+ coverage.xml
62
+ *.cover
63
+ *.py,cover
64
+ .hypothesis/
65
+ .pytest_cache/
66
+ cover/
67
+
68
+ # Translations
69
+ *.mo
70
+ *.pot
71
+
72
+ # Django stuff:
73
+ local_settings.py
74
+ db.sqlite3
75
+ db.sqlite3-journal
76
+
77
+ # Flask stuff:
78
+ instance/
79
+ .webassets-cache
80
+
81
+ # Scrapy stuff:
82
+ .scrapy
83
+
84
+ # Sphinx documentation
85
+ docs/_build/
86
+
87
+ # PyBuilder
88
+ .pybuilder/
89
+ target/
90
+
91
+ # Jupyter Notebook
92
+ .ipynb_checkpoints
93
+
94
+ # IPython
95
+ profile_default/
96
+ ipython_config.py
97
+
98
+ # pyenv
99
+ # For a library or package, you might want to ignore these files since the code is
100
+ # intended to run in multiple environments; otherwise, check them in:
101
+ # .python-version
102
+
103
+ # pipenv
104
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
105
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
106
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
107
+ # install all needed dependencies.
108
+ #Pipfile.lock
109
+
110
+ # poetry
111
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
112
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
113
+ # commonly ignored for libraries.
114
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
115
+ #poetry.lock
116
+
117
+ # pdm
118
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
119
+ #pdm.lock
120
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
121
+ # in version control.
122
+ # https://pdm.fming.dev/#use-with-ide
123
+ .pdm.toml
124
+
125
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
126
+ __pypackages__/
127
+
128
+ # Celery stuff
129
+ celerybeat-schedule
130
+ celerybeat.pid
131
+
132
+ # SageMath parsed files
133
+ *.sage.py
134
+
135
+ # Environments
136
+ .env
137
+ .venv
138
+ env/
139
+ venv/
140
+ ENV/
141
+ env.bak/
142
+ venv.bak/
143
+
144
+ # Spyder project settings
145
+ .spyderproject
146
+ .spyproject
147
+
148
+ # Rope project settings
149
+ .ropeproject
150
+
151
+ # mkdocs documentation
152
+ /site
153
+
154
+ # mypy
155
+ .mypy_cache/
156
+ .dmypy.json
157
+ dmypy.json
158
+
159
+ # Pyre type checker
160
+ .pyre/
161
+
162
+ # pytype static type analyzer
163
+ .pytype/
164
+
165
+ # Cython debug symbols
166
+ cython_debug/
167
+
168
+ # PyCharm
169
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
170
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
171
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
172
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
173
+ .idea/
174
+ site/
@@ -0,0 +1,16 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v2.3.0
4
+ hooks:
5
+ - id: check-yaml
6
+ - id: end-of-file-fixer
7
+ - id: trailing-whitespace
8
+ - id: detect-private-key
9
+ - repo: https://github.com/astral-sh/ruff-pre-commit
10
+ rev: v0.9.7
11
+ hooks:
12
+ # Run the linter.
13
+ - id: ruff
14
+ args: [--fix, --exit-non-zero-on-fix]
15
+ # Run the formatter.
16
+ - id: ruff-format