moose-classifier 0.14__tar.gz → 1.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 (87) hide show
  1. moose_classifier-1.0/.github/workflows/publish-pypi.yml +39 -0
  2. moose_classifier-0.14/.github/workflows/unnittests.yml → moose_classifier-1.0/.github/workflows/unittests.yml +1 -2
  3. {moose_classifier-0.14 → moose_classifier-1.0}/.gitignore +1 -0
  4. {moose_classifier-0.14/src/moose_classifier.egg-info → moose_classifier-1.0}/PKG-INFO +1 -1
  5. {moose_classifier-0.14 → moose_classifier-1.0}/src/classify.py +16 -22
  6. {moose_classifier-0.14 → moose_classifier-1.0/src/moose_classifier.egg-info}/PKG-INFO +1 -1
  7. {moose_classifier-0.14 → moose_classifier-1.0}/src/moose_classifier.egg-info/SOURCES.txt +2 -1
  8. moose_classifier-1.0/testfiles/TestClassify/test01/details.csv.bz2 +0 -0
  9. moose_classifier-1.0/testfiles/TestClassify/test02/details.csv.bz2 +0 -0
  10. moose_classifier-1.0/testfiles/TestClassify/test03/details.csv.bz2 +0 -0
  11. moose_classifier-1.0/testfiles/TestClassify/test06/details.csv.bz2 +0 -0
  12. moose_classifier-1.0/testfiles/TestClassify/test14/details.csv.bz2 +0 -0
  13. moose_classifier-1.0/testfiles/TestClassify/test15/details.csv.bz2 +0 -0
  14. moose_classifier-1.0/testfiles/TestClassify/test16/details.csv.bz2 +0 -0
  15. moose_classifier-0.14/testfiles/TestClassify/test01/details.csv.bz2 +0 -0
  16. moose_classifier-0.14/testfiles/TestClassify/test02/details.csv.bz2 +0 -0
  17. moose_classifier-0.14/testfiles/TestClassify/test03/details.csv.bz2 +0 -0
  18. moose_classifier-0.14/testfiles/TestClassify/test06/details.csv.bz2 +0 -0
  19. moose_classifier-0.14/testfiles/TestClassify/test14/details.csv.bz2 +0 -0
  20. moose_classifier-0.14/testfiles/TestClassify/test15/details.csv.bz2 +0 -0
  21. moose_classifier-0.14/testfiles/TestClassify/test16/details.csv.bz2 +0 -0
  22. {moose_classifier-0.14 → moose_classifier-1.0}/README.md +0 -0
  23. {moose_classifier-0.14 → moose_classifier-1.0}/pyproject.toml +0 -0
  24. {moose_classifier-0.14 → moose_classifier-1.0}/requirements.txt +0 -0
  25. {moose_classifier-0.14 → moose_classifier-1.0}/setup.cfg +0 -0
  26. {moose_classifier-0.14 → moose_classifier-1.0}/sphinx/Makefile +0 -0
  27. {moose_classifier-0.14 → moose_classifier-1.0}/sphinx/classifier.rst +0 -0
  28. {moose_classifier-0.14 → moose_classifier-1.0}/sphinx/conf.py +0 -0
  29. {moose_classifier-0.14 → moose_classifier-1.0}/sphinx/index.rst +0 -0
  30. {moose_classifier-0.14 → moose_classifier-1.0}/sphinx/make.bat +0 -0
  31. {moose_classifier-0.14 → moose_classifier-1.0}/sphinx/modules.rst +0 -0
  32. {moose_classifier-0.14 → moose_classifier-1.0}/src/lineages.py +0 -0
  33. {moose_classifier-0.14 → moose_classifier-1.0}/src/moose_classifier.egg-info/dependency_links.txt +0 -0
  34. {moose_classifier-0.14 → moose_classifier-1.0}/src/moose_classifier.egg-info/entry_points.txt +0 -0
  35. {moose_classifier-0.14 → moose_classifier-1.0}/src/moose_classifier.egg-info/requires.txt +0 -0
  36. {moose_classifier-0.14 → moose_classifier-1.0}/src/moose_classifier.egg-info/top_level.txt +0 -0
  37. {moose_classifier-0.14 → moose_classifier-1.0}/src/version.py +0 -0
  38. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/blast.csv.bz2 +0 -0
  39. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/blast_3strepto.csv +0 -0
  40. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/blast_extrafields.csv.bz2 +0 -0
  41. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/map.csv.bz2 +0 -0
  42. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/map_single.csv.bz2 +0 -0
  43. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/seq_info.csv.bz2 +0 -0
  44. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/taxonomy.csv.bz2 +0 -0
  45. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test01/classifications.csv.bz2 +0 -0
  46. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test02/classifications.csv.bz2 +0 -0
  47. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test02/map_single.csv.bz2 +0 -0
  48. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test03/classifications.csv.bz2 +0 -0
  49. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test06/classifications.csv.bz2 +0 -0
  50. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test06/map.csv.bz2 +0 -0
  51. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test07/blast.csv.bz2 +0 -0
  52. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test07/classifications.csv.bz2 +0 -0
  53. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test07/details.csv.bz2 +0 -0
  54. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test07/map.csv.bz2 +0 -0
  55. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test07/seq_info.csv.bz2 +0 -0
  56. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test07/taxonomy.csv.bz2 +0 -0
  57. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test08/classifications.csv.bz2 +0 -0
  58. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test08/details.csv.bz2 +0 -0
  59. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test09/blast.csv.bz2 +0 -0
  60. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test09/classifications.csv.bz2 +0 -0
  61. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test09/details.csv.bz2 +0 -0
  62. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test09/map.csv.bz2 +0 -0
  63. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test10/classifications.csv.bz2 +0 -0
  64. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test10/details.csv.bz2 +0 -0
  65. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test11/blast.csv.bz2 +0 -0
  66. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test11/classifications.csv.bz2 +0 -0
  67. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test11/details.csv.bz2 +0 -0
  68. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test11/seq_info.csv.bz2 +0 -0
  69. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test11/taxonomy.csv.bz2 +0 -0
  70. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test12/map_single.csv.bz2 +0 -0
  71. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test13/blast.csv.bz2 +0 -0
  72. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test13/classifications.csv.bz2 +0 -0
  73. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test13/seq_info.csv.bz2 +0 -0
  74. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test13/weights.csv.bz2 +0 -0
  75. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test14/classifications.csv.bz2 +0 -0
  76. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test15/classifications.csv.bz2 +0 -0
  77. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test16/classifications.csv.bz2 +0 -0
  78. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test17/classifications.csv.bz2 +0 -0
  79. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test17/details.csv.bz2 +0 -0
  80. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test18/classifications.csv.bz2 +0 -0
  81. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/test18/details.csv.bz2 +0 -0
  82. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/TestClassify/weights.csv.bz2 +0 -0
  83. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/rank_thresholds.csv +0 -0
  84. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/rrnDB_16S_copy_num.csv.bz2 +0 -0
  85. {moose_classifier-0.14 → moose_classifier-1.0}/testfiles/taxonomy.csv.bz2 +0 -0
  86. {moose_classifier-0.14 → moose_classifier-1.0}/tests/__init__.py +0 -0
  87. {moose_classifier-0.14 → moose_classifier-1.0}/tests/test_classify.py +0 -0
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: Publish to PyPI
3
+
4
+ on:
5
+ release:
6
+ types: [published]
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ test:
11
+ uses: ./.github/workflows/unittests.yml
12
+
13
+ publish:
14
+ needs: test
15
+ runs-on: ubuntu-latest
16
+ environment: pypi
17
+ permissions:
18
+ id-token: write
19
+
20
+ steps:
21
+ - name: Checkout tag
22
+ uses: actions/checkout@v4
23
+ with:
24
+ ref: ${{ github.ref }}
25
+ fetch-depth: 0
26
+
27
+ - name: Set up Python
28
+ uses: actions/setup-python@v5
29
+ with:
30
+ python-version: '3.12'
31
+
32
+ - name: Install build
33
+ run: python -m pip install build
34
+
35
+ - name: Build package
36
+ run: python -m build
37
+
38
+ - name: Publish to PyPI
39
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -5,8 +5,7 @@ on:
5
5
  branches: [ master ]
6
6
  pull_request:
7
7
  branches: [ master ]
8
- schedule:
9
- - cron: '0 6 * * 1' # 6am Monday
8
+ workflow_call:
10
9
 
11
10
  jobs:
12
11
  build:
@@ -3,3 +3,4 @@ build/
3
3
  dist
4
4
  *.egg-info
5
5
  test_output
6
+ .venv/
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: moose_classifier
3
- Version: 0.14
3
+ Version: 1.0
4
4
  Summary: Alignment based taxonomic classifier
5
5
  Author: Chris Rosenthal
6
6
  Author-email: crosenth@gmail.com
@@ -128,6 +128,7 @@ assigned tax_ids of a higher threshold that *could* represent invalid tax_ids
128
128
  TODO: generate rank thresholds based on lineages input
129
129
  """
130
130
  import argparse
131
+ import codecs
131
132
  import bz2
132
133
  import csv
133
134
  import gzip
@@ -178,11 +179,6 @@ ALIGNMENT_DTYPES = {
178
179
  'tax_name': str
179
180
  }
180
181
 
181
- ALIGNMENT_CONVERT = {
182
- 'qaccver': 'qseqid',
183
- 'saccver': 'sseqid'
184
- }
185
-
186
182
  OUTPUT_COLS = [
187
183
  'specimen', 'assignment_id', 'assignment',
188
184
  'best_rank', 'max_percent', 'min_percent',
@@ -222,9 +218,8 @@ def action(args):
222
218
  details_cols = list(DETAILS_COLS)
223
219
  if args.columns:
224
220
  header = None
225
- sep = csv.Sniffer().sniff(args.columns).delimiter
226
- conv = ALIGNMENT_CONVERT
227
- names = [conv.get(c, c) for c in args.columns.split(sep)]
221
+ sep = args.delimiter
222
+ names = args.columns.split(',')
228
223
  elif args.delimiter:
229
224
  header = 0
230
225
  sep = args.delimiter
@@ -628,7 +623,10 @@ def action(args):
628
623
  """sort details for consistency and ease of viewing.
629
624
  [no blast results] may have irregular aligns.columns
630
625
  """
631
- aligns = aligns.sort_values(by=details_cols)
626
+ aligns = aligns.sort_values(
627
+ by=['specimen', 'assignment_id', 'weight', 'pident', 'tax_name'],
628
+ ascending=[True, True, False, False, True]
629
+ )
632
630
 
633
631
  aligns.to_csv(
634
632
  args.details_out,
@@ -741,20 +739,23 @@ def build_parser():
741
739
  title='alignment input format options',
742
740
  description='Options for alignment input that is '
743
741
  'header-less or not comma-delimited')
742
+ align_parser.add_argument(
743
+ '--delimiter',
744
+ metavar='',
745
+ default=',',
746
+ type=lambda x: codecs.decode(x, 'unicode_escape'),
747
+ help='specify delimiter')
748
+
744
749
  columns_parser = align_parser.add_mutually_exclusive_group(required=False)
745
750
  columns_parser.add_argument(
746
751
  '--columns', '--header', '-c',
747
752
  dest='columns',
748
753
  metavar='',
749
- help='specify columns names with delimiter')
750
- columns_parser.add_argument(
751
- '--delimiter',
752
- metavar='',
753
- help='specify just delimiter')
754
+ help='specify comma separated column names')
754
755
  columns_parser.add_argument(
755
756
  '--blast6', '--std',
756
757
  action='store_true',
757
- help='standard blast tab-separated format')
758
+ help='standard blast tab-separated format (ignores delimiter)')
758
759
  columns_parser.add_argument(
759
760
  '--infer',
760
761
  action='store_true',
@@ -768,13 +769,6 @@ def build_parser():
768
769
  '--rank-thresholds',
769
770
  metavar='',
770
771
  help='Columns [tax_id,ranks...] [%(default)s]')
771
- selection_parser.add_argument(
772
- '--top-n-pct',
773
- metavar='',
774
- default=25,
775
- type=float,
776
- help=('top percent hits sorted by pident, evalue '
777
- 'or bitscore per taxonomy group'))
778
772
 
779
773
  assignment_parser = parser.add_argument_group('assignment options')
780
774
  assignment_parser.add_argument(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: moose_classifier
3
- Version: 0.14
3
+ Version: 1.0
4
4
  Summary: Alignment based taxonomic classifier
5
5
  Author: Chris Rosenthal
6
6
  Author-email: crosenth@gmail.com
@@ -2,7 +2,8 @@
2
2
  README.md
3
3
  pyproject.toml
4
4
  requirements.txt
5
- .github/workflows/unnittests.yml
5
+ .github/workflows/publish-pypi.yml
6
+ .github/workflows/unittests.yml
6
7
  sphinx/Makefile
7
8
  sphinx/classifier.rst
8
9
  sphinx/conf.py