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.
- {xengsort-2.0.4/xengsort.egg-info → xengsort-2.0.5}/PKG-INFO +25 -4
- {xengsort-2.0.4 → xengsort-2.0.5}/pyproject.toml +15 -10
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_classify.cpython-311.pyc +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_index.cpython-311.pyc +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_main.cpython-311.pyc +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_weak.cpython-311.pyc +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/xengsort_classify.py +5 -10
- xengsort-2.0.5/xengsort/xengsort/xengsort_info.py +83 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/xengsort_main.py +10 -4
- {xengsort-2.0.4 → xengsort-2.0.5/xengsort.egg-info}/PKG-INFO +25 -4
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort.egg-info/SOURCES.txt +1 -3
- xengsort-2.0.4/setup.py +0 -42
- xengsort-2.0.4/xengsort/_version.py +0 -27
- xengsort-2.0.4/xengsort.egg-info/not-zip-safe +0 -1
- {xengsort-2.0.4 → xengsort-2.0.5}/LICENSE +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/MANIFEST.in +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/README.md +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/setup.cfg +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/tests/test_encoding.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/tests/test_trimmed_reads.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/cptasks_kmers.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/dnaencode.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/hash_s3c_fbcbvb.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/io/fastaio.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/io/fastqio.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/io/generalio.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/io/hashio.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/io/seqio.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/io/textio.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/kmers.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/lowlevel/aligned_arrays.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/lowlevel/bitarray.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/lowlevel/conpro.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/lowlevel/debug.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/lowlevel/intbitarray.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/lowlevel/libc.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/lowlevel/llvm.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/mask.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/mathutils.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/parameters.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/srhash.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/subtable_hashfunctions.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/values/xenograft.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_classify.cpython-310.pyc +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_index.cpython-310.pyc +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_info.cpython-311.pyc +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_main.cpython-310.pyc +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_weak.cpython-310.pyc +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/config/classify.yaml +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/config/index.yaml +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/xengsort_index.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/xengsort_load.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/xengsort_remove.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/xengsort_weak.py +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort.egg-info/dependency_links.txt +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort.egg-info/entry_points.txt +0 -0
- {xengsort-2.0.4 → xengsort-2.0.5}/xengsort.egg-info/requires.txt +0 -0
- {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
|
-
Summary:
|
|
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:
|
|
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
|
|
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.
|
|
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 = "
|
|
13
|
+
description = "xenograft sorting of FASTQ reads into five categories: host, graft, both, neither, ambiguous"
|
|
13
14
|
readme = "README.md"
|
|
14
|
-
requires-python = "
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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"
|
{xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_classify.cpython-311.pyc
RENAMED
|
Binary file
|
{xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_index.cpython-311.pyc
RENAMED
|
Binary file
|
{xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_main.cpython-311.pyc
RENAMED
|
Binary file
|
{xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_weak.cpython-311.pyc
RENAMED
|
Binary file
|
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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=
|
|
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=
|
|
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=
|
|
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
|
-
Summary:
|
|
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:
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_classify.cpython-310.pyc
RENAMED
|
File without changes
|
{xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_index.cpython-310.pyc
RENAMED
|
File without changes
|
{xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_info.cpython-311.pyc
RENAMED
|
File without changes
|
{xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_main.cpython-310.pyc
RENAMED
|
File without changes
|
{xengsort-2.0.4 → xengsort-2.0.5}/xengsort/xengsort/__pycache__/xengsort_weak.cpython-310.pyc
RENAMED
|
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
|