xengsort 2.0.4__tar.gz → 2.0.5__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 (58) hide show
  1. {xengsort-2.0.4/xengsort.egg-info → xengsort-2.0.5}/PKG-INFO +25 -4
  2. {xengsort-2.0.4 → xengsort-2.0.5}/pyproject.toml +15 -10
  3. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_classify.cpython-311.pyc +0 -0
  4. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_index.cpython-311.pyc +0 -0
  5. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_main.cpython-311.pyc +0 -0
  6. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_weak.cpython-311.pyc +0 -0
  7. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/xengsort_classify.py +5 -10
  8. xengsort-2.0.5/xengsort/xengsort/xengsort_info.py +83 -0
  9. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/xengsort_main.py +10 -4
  10. {xengsort-2.0.4 → xengsort-2.0.5/xengsort.egg-info}/PKG-INFO +25 -4
  11. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort.egg-info/SOURCES.txt +1 -3
  12. xengsort-2.0.4/setup.py +0 -42
  13. xengsort-2.0.4/xengsort/_version.py +0 -27
  14. xengsort-2.0.4/xengsort.egg-info/not-zip-safe +0 -1
  15. {xengsort-2.0.4 → xengsort-2.0.5}/LICENSE +0 -0
  16. {xengsort-2.0.4 → xengsort-2.0.5}/MANIFEST.in +0 -0
  17. {xengsort-2.0.4 → xengsort-2.0.5}/README.md +0 -0
  18. {xengsort-2.0.4 → xengsort-2.0.5}/setup.cfg +0 -0
  19. {xengsort-2.0.4 → xengsort-2.0.5}/tests/test_encoding.py +0 -0
  20. {xengsort-2.0.4 → xengsort-2.0.5}/tests/test_trimmed_reads.py +0 -0
  21. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/cptasks_kmers.py +0 -0
  22. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/dnaencode.py +0 -0
  23. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/hash_s3c_fbcbvb.py +0 -0
  24. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/io/fastaio.py +0 -0
  25. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/io/fastqio.py +0 -0
  26. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/io/generalio.py +0 -0
  27. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/io/hashio.py +0 -0
  28. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/io/seqio.py +0 -0
  29. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/io/textio.py +0 -0
  30. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/kmers.py +0 -0
  31. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/lowlevel/aligned_arrays.py +0 -0
  32. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/lowlevel/bitarray.py +0 -0
  33. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/lowlevel/conpro.py +0 -0
  34. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/lowlevel/debug.py +0 -0
  35. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/lowlevel/intbitarray.py +0 -0
  36. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/lowlevel/libc.py +0 -0
  37. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/lowlevel/llvm.py +0 -0
  38. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/mask.py +0 -0
  39. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/mathutils.py +0 -0
  40. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/parameters.py +0 -0
  41. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/srhash.py +0 -0
  42. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/subtable_hashfunctions.py +0 -0
  43. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/values/xenograft.py +0 -0
  44. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_classify.cpython-310.pyc +0 -0
  45. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_index.cpython-310.pyc +0 -0
  46. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_info.cpython-311.pyc +0 -0
  47. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_main.cpython-310.pyc +0 -0
  48. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_weak.cpython-310.pyc +0 -0
  49. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/config/classify.yaml +0 -0
  50. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/config/index.yaml +0 -0
  51. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/xengsort_index.py +0 -0
  52. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/xengsort_load.py +0 -0
  53. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/xengsort_remove.py +0 -0
  54. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/xengsort_weak.py +0 -0
  55. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort.egg-info/dependency_links.txt +0 -0
  56. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort.egg-info/entry_points.txt +0 -0
  57. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort.egg-info/requires.txt +0 -0
  58. {xengsort-2.0.4 → xengsort-2.0.5}/xengsort.egg-info/top_level.txt +0 -0
@@ -1,9 +1,30 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xengsort
3
- Version: 2.0.4
4
- Summary: A fast xenograft read sorter based on space-efficient k-mer hashing
3
+ Version: 2.0.5
4
+ Summary: xenograft sorting of FASTQ reads into five categories: host, graft, both, neither, ambiguous
5
5
  Author-email: Jens Zentgraf <zentgraf@cs.uni-saarland.de>, Sven Rahmann <rahmann@cs.uni-saarland.de>
6
- License: MIT
6
+ License: MIT License
7
+
8
+ Copyright (c) 2019-2022 Jens Zentgraf & Sven Rahmann
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
7
28
  Project-URL: Homepage, https://gitlab.com/genomeinformatics/xengsort
8
29
  Project-URL: Bug Tracker, https://gitlab.com/genomeinformatics/xengsort/issues
9
30
  Classifier: Programming Language :: Python :: 3
@@ -14,7 +35,7 @@ Classifier: Environment :: Console
14
35
  Classifier: Intended Audience :: Science/Research
15
36
  Classifier: Natural Language :: English
16
37
  Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
17
- Requires-Python: ==3.11
38
+ Requires-Python: <3.12
18
39
  Description-Content-Type: text/markdown
19
40
  License-File: LICENSE
20
41
  Requires-Dist: numpy>=1.24
@@ -1,17 +1,25 @@
1
1
  [build-system]
2
- requires = ["setuptools==68.2.2"]
2
+ requires = ["setuptools>=69.0.3"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "xengsort"
7
- version = "2.0.4"
7
+ version = "2.0.5"
8
+ license = {file = "LICENSE"}
8
9
  authors = [
9
10
  { name="Jens Zentgraf", email="zentgraf@cs.uni-saarland.de" },
10
11
  { name="Sven Rahmann", email="rahmann@cs.uni-saarland.de" }
11
12
  ]
12
- description = "A fast xenograft read sorter based on space-efficient k-mer hashing"
13
+ description = "xenograft sorting of FASTQ reads into five categories: host, graft, both, neither, ambiguous"
13
14
  readme = "README.md"
14
- requires-python = "==3.11"
15
+ requires-python = "<3.12"
16
+ dependencies = [
17
+ "numpy>=1.24",
18
+ "numba>=0.57",
19
+ "pytest",
20
+ "jsonargparse",
21
+ ]
22
+ scripts = {xengsort = "xengsort.xengsort.xengsort_main:main"}
15
23
  classifiers = [
16
24
  "Programming Language :: Python :: 3",
17
25
  "License :: OSI Approved :: MIT License",
@@ -22,12 +30,9 @@ classifiers = [
22
30
  "Natural Language :: English",
23
31
  "Topic :: Scientific/Engineering :: Bio-Informatics"
24
32
  ]
25
- dependencies = [
26
- "numpy>=1.24",
27
- "numba>=0.57",
28
- "pytest",
29
- "jsonargparse",
30
- ]
33
+
34
+ [tool.setuptools]
35
+ packages=["xengsort"]
31
36
 
32
37
  [project.urls]
33
38
  "Homepage" = "https://gitlab.com/genomeinformatics/xengsort"
@@ -109,7 +109,6 @@ def compile_coverage_based_classification(cov, mask, params):
109
109
  ret_amb = 2
110
110
  ret_both = 3
111
111
  ret_neither = 4
112
- ret_unclassified = 5
113
112
 
114
113
  # define default params:
115
114
  p = dict()
@@ -138,7 +137,6 @@ def compile_coverage_based_classification(cov, mask, params):
138
137
  def classify_xengsort_cov(counts, neither, stronghost, stronggraft, both, weakhost, weakgraft, weakboth, size):
139
138
  # number of bases covered by k-mers of each class
140
139
 
141
-
142
140
  # no k-mers
143
141
  if size <= W + min_size:
144
142
  return ret_amb
@@ -169,7 +167,7 @@ def compile_coverage_based_classification(cov, mask, params):
169
167
  scores[3] = score_neither = np.float64((size - popcount(s_w_host_graft_both)) / size)
170
168
 
171
169
  # ############### first classify ##########
172
- # return: 0:host, 1:graft, 2:ambiguous, 3:both, 4:neither, 5:unclassified
170
+ # return: 0:host, 1:graft, 2:ambiguous, 3:both, 4:neither
173
171
 
174
172
  # No host
175
173
  if strongHostBits == 0 and weakHostBits <= W + 2:
@@ -585,10 +583,8 @@ def compile_classify_read_from_fastq(
585
583
  cond_contextmgr(path, f"-both.1.fq{compression}", count, filt) as both1, \
586
584
  cond_contextmgr(path, f"-both.2.fq{compression}", count, filt) as both2, \
587
585
  cond_contextmgr(path, f"-neither.1.fq{compression}", count, filt) as neither1, \
588
- cond_contextmgr(path, f"-neither.2.fq{compression}", count, filt) as neither2, \
589
- cond_contextmgr(path, f"-unclassified.1.fq{compression}", count, filt) as unclassified1,\
590
- cond_contextmgr(path, f"-unclassified.2.fq{compression}", count, filt) as unclassified2:
591
- streams = ((host1, host2), (graft1, graft2), (ambiguous1, ambiguous2), (both1, both2), (neither1, neither2), (unclassified1, unclassified2))
586
+ cond_contextmgr(path, f"-neither.2.fq{compression}", count, filt) as neither2:
587
+ streams = ((host1, host2), (graft1, graft2), (ambiguous1, ambiguous2), (both1, both2), (neither1, neither2))
592
588
 
593
589
  with ThreadPoolExecutor(max_workers=threads) as executor:
594
590
  for fastq1, fastq2 in zip(fastqs, pairs):
@@ -649,9 +645,8 @@ def compile_classify_read_from_fastq(
649
645
  cond_contextmgr(path, f"-graft.fq{compression}", count, filt) as graft, \
650
646
  cond_contextmgr(path, f"-ambiguous.fq{compression}", count, filt) as ambiguous, \
651
647
  cond_contextmgr(path, f"-both.fq{compression}", count, filt) as both, \
652
- cond_contextmgr(path, f"-neither.fq{compression}", count, filt) as neither, \
653
- cond_contextmgr(path, f"-unclassified.fq{compression}", count, filt) as unclassified:
654
- streams = (host, graft, ambiguous, both, neither, unclassified)
648
+ cond_contextmgr(path, f"-neither.fq{compression}", count, filt) as neither:
649
+ streams = (host, graft, ambiguous, both, neither)
655
650
 
656
651
  running_jobs = []
657
652
  with ThreadPoolExecutor(max_workers=threads) as executor:
@@ -0,0 +1,83 @@
1
+ """
2
+ xengsort/xengsort.py:
3
+ Collect and print information on a hash table stored on disk.
4
+ """
5
+
6
+ from numba import njit
7
+
8
+ from ..lowlevel import debug
9
+ from ..srhash import print_statistics
10
+ from ..io.hashio import load_hash, dump_to_datafiles
11
+
12
+
13
+ def print_dict(d, title=None):
14
+ if title is not None:
15
+ print(f"\n### {title}")
16
+ for key, value in d.items():
17
+ print(f"- {key}: {value}")
18
+
19
+
20
+ def print_values(values, valuetup, title=None):
21
+ if title is not None:
22
+ print(f"\n### {title}")
23
+ print(f"- value set specification: {valuetup}")
24
+ print(f"- value set name: {values.NAME}")
25
+ print(f"- value set nvalues: {values.NVALUES}")
26
+
27
+
28
+ def compile_filter_function(expr):
29
+ if expr is not None:
30
+ f = eval(f'lambda key, choice, value: ({expr})')
31
+ else:
32
+ f = (lambda key, choice, value: True)
33
+ ff = njit(nogil=True)(f)
34
+ return ff
35
+
36
+
37
+ def dump_dna_to_text(h, nvalues, infotup, prefix, packed, filterfunc):
38
+ fname = prefix + ".dna.txt"
39
+ raise NotImplementedError(f"DNA text dump not implemented yet. {fname=}")
40
+
41
+
42
+ def main(args):
43
+ global debugprint0, debugprint1, debugprint2
44
+ global timestamp0, timestamp1, timestamp2
45
+ debugprint0, debugprint1, debugprint2 = debug.debugprint
46
+ timestamp0, timestamp1, timestamp2 = debug.timestamp
47
+ starttime = timestamp0(msg="\n# fastcash info")
48
+
49
+ h, values, infotup = load_hash(args.hashname)
50
+ (hashinfo, valueinfo, optinfo, appinfo) = infotup
51
+ print_dict(hashinfo, "Hash table properties")
52
+ print_dict(optinfo)
53
+ print_dict(appinfo)
54
+ print_values(values, valueinfo, "Value set properties")
55
+ SV = {'all': values.NVALUES, 'none': False}
56
+ sv = args.showvalues
57
+ sv = SV[sv] if sv in SV else int(sv)
58
+ print("!!!", sv)
59
+ print_statistics(h, level=args.statistics, show_values=sv)
60
+
61
+ # dump data if requested
62
+ fmt = args.format # native, packed, text/txt, dna
63
+ anyformat = (fmt is not None)
64
+ prefix = args.outprefix
65
+ nvalues = values.NVALUES
66
+ filterfunc = compile_filter_function(args.filter)
67
+ if (prefix is None) and anyformat:
68
+ prefix = args.hashname
69
+ if prefix is not None:
70
+ startout = timestamp0(msg="\n## Data Output")
71
+ if fmt == "dna":
72
+ written = dump_dna_to_text(h, nvalues, infotup, prefix, filterfunc)
73
+ else:
74
+ if fmt is None:
75
+ fmt = "native"
76
+ elif fmt == "txt":
77
+ fmt = "text"
78
+ written = dump_to_datafiles(h, nvalues, infotup, prefix, fmt, filterfunc)
79
+ debugprint0(f"- wrote {written} items")
80
+ timestamp0(startout, msg="- done writing data; writing time")
81
+
82
+ # that's it; successfully exit the program
83
+ timestamp0(starttime, msg="- DONE; total time")
@@ -6,19 +6,25 @@ by Jens Zentgraf & Sven Rahmann, 2019--2023
6
6
 
7
7
  from importlib import import_module # dynamically import subcommand
8
8
  from os import path
9
+ from importlib.metadata import metadata
9
10
 
10
11
  from jsonargparse import ArgumentParser, ActionConfigFile, SUPPRESS
11
12
  from jsonargparse.typing import restricted_number_type
12
13
 
13
- from .._version import VERSION, DESCRIPTION
14
14
  from ..lowlevel.debug import set_debugfunctions
15
15
 
16
+ NAME = "xengsort"
17
+ VERSION = metadata(NAME).json['version']
18
+ DESCRIPTION = f"{NAME} {VERSION}: " + metadata(NAME).json['summary']
19
+
20
+
16
21
  def get_config_path():
17
22
  mainpath = __file__
18
23
  xengsortfolder = path.dirname(mainpath)
19
24
  cfgpath = path.join(xengsortfolder, "config")
20
25
  return cfgpath
21
26
 
27
+
22
28
  def classify(p):
23
29
  p.add_argument("--fastq", "-q", metavar="FASTQ", required=True, nargs="+",
24
30
  help="single or first paired-end FASTQ file to classify")
@@ -41,7 +47,7 @@ def classify(p):
41
47
  p.add_argument("--params_coverage", type=dict, help=SUPPRESS)
42
48
  # help="All paramteres for classification based on coverage as a dictionary. Update in config file.")
43
49
  p.add_argument("--threads", "-T", "-j", metavar="INT", type=int,
44
- help=f"maximum number of worker threads for classification")
50
+ help="maximum number of worker threads for classification")
45
51
  gmode = p.add_mutually_exclusive_group(required=False)
46
52
  gmode.add_argument("--filter", action="store_true",
47
53
  help="only output the graft FASTQ file, not the other class FASTQ files")
@@ -49,9 +55,9 @@ def classify(p):
49
55
  help="only count reads or read pairs for each class, do not output any FASTQ")
50
56
  p.add_argument("--prefetchlevel", metavar="INT",
51
57
  type=restricted_number_type("from_0_to_2", int, [(">=", 0), ("<=", 2)]),
52
- help=f"amount of prefetching: none (0), second bucket (1), all buckets (2)")
58
+ help="amount of prefetching: none (0), second bucket (1), all buckets (2)")
53
59
  p.add_argument("--chunksize", "-C", metavar="FLOAT_SIZE_MB", type=float, default=8.0,
54
- help=f"chunk size in MB; one chunk is allocated per thread.")
60
+ help="chunk size in MB; one chunk is allocated per thread.")
55
61
  p.add_argument("--chunkreads", "-R", metavar="INT", type=int,
56
62
  help="maximum number of reads per chunk per thread [SIZE_MB*(2**20) // 200]")
57
63
  p.add_argument("--progress", "-P", action="store_true",
@@ -1,9 +1,30 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xengsort
3
- Version: 2.0.4
4
- Summary: A fast xenograft read sorter based on space-efficient k-mer hashing
3
+ Version: 2.0.5
4
+ Summary: xenograft sorting of FASTQ reads into five categories: host, graft, both, neither, ambiguous
5
5
  Author-email: Jens Zentgraf <zentgraf@cs.uni-saarland.de>, Sven Rahmann <rahmann@cs.uni-saarland.de>
6
- License: MIT
6
+ License: MIT License
7
+
8
+ Copyright (c) 2019-2022 Jens Zentgraf & Sven Rahmann
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
7
28
  Project-URL: Homepage, https://gitlab.com/genomeinformatics/xengsort
8
29
  Project-URL: Bug Tracker, https://gitlab.com/genomeinformatics/xengsort/issues
9
30
  Classifier: Programming Language :: Python :: 3
@@ -14,7 +35,7 @@ Classifier: Environment :: Console
14
35
  Classifier: Intended Audience :: Science/Research
15
36
  Classifier: Natural Language :: English
16
37
  Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
17
- Requires-Python: ==3.11
38
+ Requires-Python: <3.12
18
39
  Description-Content-Type: text/markdown
19
40
  License-File: LICENSE
20
41
  Requires-Dist: numpy>=1.24
@@ -2,10 +2,8 @@ LICENSE
2
2
  MANIFEST.in
3
3
  README.md
4
4
  pyproject.toml
5
- setup.py
6
5
  tests/test_encoding.py
7
6
  tests/test_trimmed_reads.py
8
- xengsort/_version.py
9
7
  xengsort/cptasks_kmers.py
10
8
  xengsort/dnaencode.py
11
9
  xengsort/hash_s3c_fbcbvb.py
@@ -19,7 +17,6 @@ xengsort.egg-info/PKG-INFO
19
17
  xengsort.egg-info/SOURCES.txt
20
18
  xengsort.egg-info/dependency_links.txt
21
19
  xengsort.egg-info/entry_points.txt
22
- xengsort.egg-info/not-zip-safe
23
20
  xengsort.egg-info/requires.txt
24
21
  xengsort.egg-info/top_level.txt
25
22
  xengsort/io/fastaio.py
@@ -38,6 +35,7 @@ xengsort/lowlevel/llvm.py
38
35
  xengsort/values/xenograft.py
39
36
  xengsort/xengsort/xengsort_classify.py
40
37
  xengsort/xengsort/xengsort_index.py
38
+ xengsort/xengsort/xengsort_info.py
41
39
  xengsort/xengsort/xengsort_load.py
42
40
  xengsort/xengsort/xengsort_main.py
43
41
  xengsort/xengsort/xengsort_remove.py
xengsort-2.0.4/setup.py DELETED
@@ -1,42 +0,0 @@
1
- # coding: utf-8
2
- NAME = "xengsort"
3
-
4
- import sys
5
- try:
6
- from setuptools import setup
7
- except ImportError:
8
- print(f"Please install setuptools before installing {NAME}.", file=sys.stderr)
9
- exit(1)
10
-
11
- if sys.version_info < (3,10):
12
- print(f"At least Python 3.10 is required for {NAME}.", file=sys.stderr)
13
- exit(1)
14
-
15
-
16
- # load and set VERSION and DESCRIPTION
17
- vcontent = open(f"{NAME}/_version.py").read()
18
- exec(vcontent)
19
-
20
- setup(
21
- name=NAME,
22
- version=VERSION,
23
- description=DESCRIPTION,
24
- zip_safe=False,
25
- license='MIT',
26
- packages=[NAME],
27
- entry_points={
28
- "console_scripts": [
29
- f"{NAME} = {NAME}.{NAME}.{NAME}_main:main",
30
- ],
31
- },
32
- package_data={'': ['*.css', '*.sh', '*.html']},
33
- classifiers=[
34
- "Development Status :: 5 - Production/Stable",
35
- "Environment :: Console",
36
- "Intended Audience :: Science/Research",
37
- "License :: OSI Approved :: MIT License",
38
- "Natural Language :: English",
39
- "Programming Language :: Python :: 3",
40
- "Topic :: Scientific/Engineering :: Bio-Informatics"
41
- ]
42
- )
@@ -1,27 +0,0 @@
1
- VERSION = "2.0.4"
2
- __version__ = VERSION
3
-
4
- DESCRIPTION = f"xengsort {VERSION}: xenograft sorting of FASTQ reads into five categories: host, graft, both, neither, ambiguous"
5
-
6
-
7
- LONG_DESCRIPTION = """
8
- The xengsort tool is made for xenograft sorting of single-end or paired-end FASTQ reads.
9
- The input reads are assumed to be a mixture of reads from (mainly) two organisms,
10
- typically human (tumor) and mouse (normal tissue),
11
- obtained from sequencing a human tumor that was implanted
12
- into a mouse model to study its growth and evolution,
13
- or its behavior under certain treatments.
14
-
15
- Using a k-mer-based approach and an ultra-fast hash table,
16
- xengsort separates (sorts) reads into five categories:
17
- (1) host (mouse) reads,
18
- (2) graft (human) reads,
19
- (3) reads that could result from both species,
20
- (4) reads that fit neither species,
21
- (5) ambiguous reads, which contain conflicting information.
22
-
23
- So the reads (or pairs) from a FASTQ file (or a pair of FASTQ files)
24
- are split into five output files (or pairs of files).
25
- Compared to other alignment-free tools, xengsort can be up to 4 times faster.
26
- Compared to alignment-based tools, xengsort is faster by orders of magnitude.
27
- """
@@ -1 +0,0 @@
1
-
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes