geoseeq 0.7.3.dev4__py3-none-any.whl → 0.7.5__py3-none-any.whl
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.
- geoseeq/cli/constants.py +2 -2
- geoseeq/cli/download.py +95 -15
- geoseeq/cli/main.py +1 -1
- geoseeq/cli/upload/upload_reads.py +34 -9
- geoseeq/constants.py +10 -1
- geoseeq/result/result_file.py +12 -0
- geoseeq/sample.py +3 -1
- {geoseeq-0.7.3.dev4.dist-info → geoseeq-0.7.5.dist-info}/METADATA +8 -2
- {geoseeq-0.7.3.dev4.dist-info → geoseeq-0.7.5.dist-info}/RECORD +12 -12
- {geoseeq-0.7.3.dev4.dist-info → geoseeq-0.7.5.dist-info}/WHEEL +0 -0
- {geoseeq-0.7.3.dev4.dist-info → geoseeq-0.7.5.dist-info}/entry_points.txt +0 -0
- {geoseeq-0.7.3.dev4.dist-info → geoseeq-0.7.5.dist-info}/licenses/LICENSE +0 -0
geoseeq/cli/constants.py
CHANGED
geoseeq/cli/download.py
CHANGED
|
@@ -3,6 +3,7 @@ import logging
|
|
|
3
3
|
from os import makedirs
|
|
4
4
|
from os.path import dirname, join
|
|
5
5
|
|
|
6
|
+
import gzip
|
|
6
7
|
import click
|
|
7
8
|
import pandas as pd
|
|
8
9
|
from multiprocessing import Pool
|
|
@@ -32,6 +33,7 @@ from .utils import convert_size
|
|
|
32
33
|
from geoseeq.constants import FASTQ_MODULE_NAMES
|
|
33
34
|
from geoseeq.result import ResultFile
|
|
34
35
|
from geoseeq.upload_download_manager import GeoSeeqDownloadManager
|
|
36
|
+
import os
|
|
35
37
|
|
|
36
38
|
logger = logging.getLogger('geoseeq_api')
|
|
37
39
|
|
|
@@ -378,7 +380,27 @@ def cli_download_ids(state, cores, target_dir, file_name, yes, download, head, i
|
|
|
378
380
|
download_manager.download_files()
|
|
379
381
|
|
|
380
382
|
|
|
381
|
-
def
|
|
383
|
+
def _get_local_filename_for_fastq(sample, result_file, read_type, read_num, lane_num, file_name_mode):
|
|
384
|
+
"""Return a local filename for a fastq file based on the specified naming mode."""
|
|
385
|
+
if file_name_mode == "original":
|
|
386
|
+
return result_file.get_stored_data_filename()
|
|
387
|
+
elif file_name_mode == "geoseeq":
|
|
388
|
+
sname = sample.name.replace(".", "-").replace(" ", "_").lower()
|
|
389
|
+
rtype = read_type.replace("::", "__").replace(".", "-").replace(" ", "_").lower()
|
|
390
|
+
filename = f"{sname}.{rtype}.R{read_num}.L{lane_num}.fastq.gz"
|
|
391
|
+
return filename
|
|
392
|
+
elif file_name_mode == "sample-uuid":
|
|
393
|
+
filename = f"{sample.uuid}.R{read_num}.L{lane_num}.fastq.gz"
|
|
394
|
+
return filename
|
|
395
|
+
elif file_name_mode == "file-uuid":
|
|
396
|
+
filename = f"{result_file.uuid}.fastq.gz"
|
|
397
|
+
return filename
|
|
398
|
+
else:
|
|
399
|
+
raise ValueError(f"Unknown file name mode: {file_name_mode}")
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
def _get_sample_result_files_with_names(sample, module_name=None, which_fastqs_mode='all', file_name_mode='original'):
|
|
403
|
+
"""Return list of (result_file, filename, key) tuples for all fastq files in a sample."""
|
|
382
404
|
result_files_with_names = []
|
|
383
405
|
for read_type, folder in sample.get_all_fastqs().items():
|
|
384
406
|
if module_name and module_name != read_type:
|
|
@@ -388,19 +410,18 @@ def _get_sample_result_files_with_names(sample, module_name=None, first=False):
|
|
|
388
410
|
lane_num = lane_num + 1 # 1 indexed
|
|
389
411
|
if read_type in ["short_read::paired_end"]:
|
|
390
412
|
key = (sample, read_type, 1, lane_num) # sample name, read type, read number, lane number
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
413
|
+
fname = _get_local_filename_for_fastq(sample, result_file[0], read_type, 1, lane_num, file_name_mode)
|
|
414
|
+
result_files_with_names.append((result_file[0], fname, key))
|
|
415
|
+
if which_fastqs_mode == "first-r1":
|
|
416
|
+
break
|
|
394
417
|
key = (sample, read_type, 2, lane_num)
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
)
|
|
418
|
+
fname = _get_local_filename_for_fastq(sample, result_file[1], read_type, 2, lane_num, file_name_mode)
|
|
419
|
+
result_files_with_names.append((result_file[1], fname, key))
|
|
398
420
|
else:
|
|
399
421
|
key = (sample, read_type, 1, lane_num)
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
if first:
|
|
422
|
+
fname = _get_local_filename_for_fastq(sample, result_file, read_type, 1, lane_num, file_name_mode)
|
|
423
|
+
result_files_with_names.append((result_file, fname, key))
|
|
424
|
+
if which_fastqs_mode in ["first-all", "first-r1"]:
|
|
404
425
|
break
|
|
405
426
|
|
|
406
427
|
return result_files_with_names
|
|
@@ -442,14 +463,52 @@ def _make_read_configs(download_results, config_dir="."):
|
|
|
442
463
|
with open(config_path, "w") as f:
|
|
443
464
|
json.dump(config_blob, f, indent=4)
|
|
444
465
|
|
|
466
|
+
def _open_maybe_gzip(local_path):
|
|
467
|
+
"""Open a file that may be gzipped. Do not rely on file extension."""
|
|
468
|
+
with open(local_path, "rb") as f:
|
|
469
|
+
magic_number = f.read(2)
|
|
470
|
+
if magic_number == b'\x1f\x8b':
|
|
471
|
+
return gzip.open(local_path, "rt")
|
|
472
|
+
else:
|
|
473
|
+
return open(local_path, "r")
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
def _trim_fastq_to_complete_reads(key, local_path):
|
|
477
|
+
"""Trim a fastq file to the nearest complete read boundary under head_bytes.
|
|
478
|
+
|
|
479
|
+
Write the output as a gzipped file regardless of input compression.
|
|
480
|
+
"""
|
|
481
|
+
temp_path = local_path + ".tmp"
|
|
482
|
+
with _open_maybe_gzip(local_path) as infile, gzip.open(temp_path, "wt") as outfile:
|
|
483
|
+
lines_written = 0
|
|
484
|
+
while True:
|
|
485
|
+
read_lines = []
|
|
486
|
+
for _ in range(4):
|
|
487
|
+
line = infile.readline()
|
|
488
|
+
if not line:
|
|
489
|
+
break
|
|
490
|
+
read_lines.append(line)
|
|
491
|
+
if len(read_lines) < 4:
|
|
492
|
+
break # end of file
|
|
493
|
+
if infile.tell() > key[4]: # key[4] is head_bytes
|
|
494
|
+
break # reached head limit
|
|
495
|
+
for line in read_lines:
|
|
496
|
+
outfile.write(line)
|
|
497
|
+
lines_written += 4
|
|
498
|
+
# Replace original file with trimmed file
|
|
499
|
+
|
|
500
|
+
os.replace(temp_path, local_path)
|
|
501
|
+
|
|
445
502
|
|
|
446
503
|
@cli_download.command("fastqs")
|
|
447
504
|
@use_common_state
|
|
448
505
|
@cores_option
|
|
449
506
|
@click.option("--target-dir", default=".")
|
|
450
507
|
@yes_option
|
|
451
|
-
@click.option(
|
|
508
|
+
@click.option('--file-name-mode', type=click.Choice(['original', 'geoseeq', 'sample-uuid', 'file-uuid']), help="Choose how the downloaded fastq files are named.", default='original')
|
|
509
|
+
@click.option("--which-fastqs-mode", type=click.Choice(["first-all", "first-r1", "all"]), default="all", help="Choose which fastq files to download per sample. ")
|
|
452
510
|
@click.option("--download/--urls-only", default=True, help="Download files or just print urls")
|
|
511
|
+
@head_option
|
|
453
512
|
@click.option("--config-dir", default=None, help="Directory to write read config files. If unset do not write config files.")
|
|
454
513
|
@module_option(FASTQ_MODULE_NAMES, use_default=False)
|
|
455
514
|
@ignore_errors_option
|
|
@@ -460,8 +519,10 @@ def cli_download_fastqs(state,
|
|
|
460
519
|
cores,
|
|
461
520
|
target_dir,
|
|
462
521
|
yes,
|
|
463
|
-
|
|
522
|
+
file_name_mode,
|
|
523
|
+
which_fastqs_mode,
|
|
464
524
|
download,
|
|
525
|
+
head,
|
|
465
526
|
config_dir,
|
|
466
527
|
module_name,
|
|
467
528
|
ignore_errors,
|
|
@@ -474,6 +535,20 @@ def cli_download_fastqs(state,
|
|
|
474
535
|
This command will download fastq files from a GeoSeeq project. You can filter
|
|
475
536
|
files by sample name and by specific fastq read types.
|
|
476
537
|
|
|
538
|
+
The filenames of the downloaded fastq files can be controlled using the --file-name-mode option:
|
|
539
|
+
- original: Use the original filename as uploaded to GeoSeeq (default)
|
|
540
|
+
- geoseeq: Use a normalized GeoSeeq generated filename that includes the sample name, read type, read number, and lane number.
|
|
541
|
+
- sample-uuid: Use the GeoSeeq UUID of the sample along with lane number and read number.
|
|
542
|
+
- file-uuid: Use the GeoSeeq UUID of the result file only.
|
|
543
|
+
|
|
544
|
+
If the --head option is used to only download the first N bytes of each fastq file, this command
|
|
545
|
+
will automatically clip the fastq files at the nearest complete read boundary to avoid incomplete reads.
|
|
546
|
+
|
|
547
|
+
The --which-fastqs-mode option controls which fastq files are downloaded per sample:
|
|
548
|
+
- first-all: Download all fastq files but from the first fastq folder only.
|
|
549
|
+
- first-r1: Download only the first read (R1) fastq file from the first fastq folder.
|
|
550
|
+
- all: Download all fastq files from all folders.
|
|
551
|
+
|
|
477
552
|
---
|
|
478
553
|
|
|
479
554
|
Example Usage:
|
|
@@ -523,7 +598,7 @@ def cli_download_fastqs(state,
|
|
|
523
598
|
result_files_with_names = []
|
|
524
599
|
for sample in samples:
|
|
525
600
|
try:
|
|
526
|
-
result_files_with_names += _get_sample_result_files_with_names(sample, module_name,
|
|
601
|
+
result_files_with_names += _get_sample_result_files_with_names(sample, module_name, which_fastqs_mode, file_name_mode)
|
|
527
602
|
except Exception as e:
|
|
528
603
|
logger.error(f"Error fetching fastq files for sample {sample.name}: {e}")
|
|
529
604
|
if not ignore_errors:
|
|
@@ -538,9 +613,14 @@ def cli_download_fastqs(state,
|
|
|
538
613
|
ignore_errors=ignore_errors,
|
|
539
614
|
log_level=state.log_level,
|
|
540
615
|
progress_tracker_factory=PBarManager().get_new_bar,
|
|
616
|
+
head=head,
|
|
541
617
|
)
|
|
542
618
|
for result_file, filename, key in result_files_with_names:
|
|
543
|
-
|
|
619
|
+
callback = None
|
|
620
|
+
if head:
|
|
621
|
+
callback = _trim_fastq_to_complete_reads
|
|
622
|
+
key = key + (head,) # append head bytes to key
|
|
623
|
+
download_manager.add_download(result_file, join(target_dir, filename), key=key, callback=callback)
|
|
544
624
|
if not download:
|
|
545
625
|
print(download_manager.get_url_string(), file=state.outfile)
|
|
546
626
|
else:
|
geoseeq/cli/main.py
CHANGED
|
@@ -55,7 +55,7 @@ def version():
|
|
|
55
55
|
Use of this tool implies acceptance of the GeoSeeq End User License Agreement.
|
|
56
56
|
Run `geoseeq eula show` to view the EULA.
|
|
57
57
|
"""
|
|
58
|
-
click.echo("0.7.
|
|
58
|
+
click.echo("0.7.5") # remember to update pyproject.toml
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
@main.group("advanced")
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
# pylint: disable=line-too-long
|
|
1
2
|
import logging
|
|
2
3
|
import click
|
|
3
4
|
import requests
|
|
4
5
|
from os.path import basename
|
|
5
6
|
import pandas as pd
|
|
6
|
-
from multiprocessing import
|
|
7
|
+
from multiprocessing import current_process
|
|
7
8
|
|
|
8
9
|
from geoseeq.cli.constants import *
|
|
9
10
|
from geoseeq.cli.shared_params import (
|
|
@@ -46,10 +47,10 @@ def _upload_one_file(args):
|
|
|
46
47
|
|
|
47
48
|
def _get_regex(knex, filepaths, module_name, lib, regex):
|
|
48
49
|
"""Return a regex that will group the files into samples
|
|
49
|
-
|
|
50
|
+
|
|
50
51
|
Tell the user how many files did could not be matched using the regex.
|
|
51
52
|
"""
|
|
52
|
-
|
|
53
|
+
_, seq_type = module_name.split('::')[:2]
|
|
53
54
|
args = {
|
|
54
55
|
'filenames': list(filepaths.keys()),
|
|
55
56
|
'sequence_type': seq_type,
|
|
@@ -181,7 +182,13 @@ def flatten_list_of_bams(filepaths):
|
|
|
181
182
|
@private_option
|
|
182
183
|
@link_option
|
|
183
184
|
@no_new_versions_option
|
|
184
|
-
@click.option(
|
|
185
|
+
@click.option(
|
|
186
|
+
'--name-map',
|
|
187
|
+
default=None,
|
|
188
|
+
nargs=3,
|
|
189
|
+
required=False,
|
|
190
|
+
help='Optional CSV and column names used to map existing names to new ones. Provide: <file> <current_name_col> <new_name_col>.'
|
|
191
|
+
)
|
|
185
192
|
@module_option(FASTQ_MODULE_NAMES)
|
|
186
193
|
@project_id_arg
|
|
187
194
|
@click.argument('fastq_files', type=click.Path(exists=True), nargs=-1)
|
|
@@ -214,15 +221,23 @@ def cli_upload_reads_wizard(state, cores, overwrite, yes, regex, private, link_t
|
|
|
214
221
|
$ ls -1 path/to/fastq/files/*.fastq.gz > file_list.txt
|
|
215
222
|
$ geoseeq upload reads --yes --overwrite "GeoSeeq/Example CLI Project" file_list.txt
|
|
216
223
|
|
|
224
|
+
\b
|
|
225
|
+
# Remap sample names using a CSV file with current and new names
|
|
226
|
+
$ geoseeq upload reads --name-map sample_map.csv current_name new_name "GeoSeeq/Example CLI Project" fastq_files.txt
|
|
227
|
+
|
|
217
228
|
---
|
|
218
229
|
|
|
230
|
+
The optional ``--name-map`` flag takes three values: a CSV filename,
|
|
231
|
+
the column containing current names and the column containing new names.
|
|
232
|
+
When provided, sample names will be translated during upload.
|
|
233
|
+
|
|
219
234
|
Command Arguments:
|
|
220
|
-
|
|
235
|
+
|
|
221
236
|
[PROJECT_ID] Can be a project UUID, GeoSeeq Resource Number (GRN), or an
|
|
222
237
|
organization name and project name separated by a slash.
|
|
223
238
|
|
|
224
239
|
\b
|
|
225
|
-
Examples:
|
|
240
|
+
Examples:
|
|
226
241
|
- Name pair: "GeoSeeq/Example CLI Project"
|
|
227
242
|
- UUID: "ed59b913-91ec-489b-a1b9-4ea137a6e5cf"
|
|
228
243
|
- GRN: "grn:gs1:project:ed59b913-91ec-489b-a1b9-4ea137a6e5cf"
|
|
@@ -284,12 +299,12 @@ def cli_upload_reads_wizard(state, cores, overwrite, yes, regex, private, link_t
|
|
|
284
299
|
---
|
|
285
300
|
|
|
286
301
|
Command Arguments:
|
|
287
|
-
|
|
302
|
+
|
|
288
303
|
[PROJECT_ID] Can be a project UUID, GeoSeeq Resource Number (GRN), or an
|
|
289
304
|
organization name and project name separated by a slash.
|
|
290
305
|
|
|
291
306
|
\b
|
|
292
|
-
Examples:
|
|
307
|
+
Examples:
|
|
293
308
|
- Name pair: "GeoSeeq/Example CLI Project"
|
|
294
309
|
- UUID: "ed59b913-91ec-489b-a1b9-4ea137a6e5cf"
|
|
295
310
|
- GRN: "grn:gs1:project:ed59b913-91ec-489b-a1b9-4ea137a6e5cf"
|
|
@@ -303,4 +318,14 @@ def cli_upload_reads_wizard(state, cores, overwrite, yes, regex, private, link_t
|
|
|
303
318
|
# filepaths = {basename(line): line for line in flatten_list_of_bams(files)}
|
|
304
319
|
# click.echo(f'Found {len(filepaths)} files to upload.', err=True)
|
|
305
320
|
# groups = _group_files(knex, filepaths, 'bam::bam', regex, yes)
|
|
306
|
-
# _do_upload(
|
|
321
|
+
# _do_upload(
|
|
322
|
+
# groups,
|
|
323
|
+
# 'bam::bam',
|
|
324
|
+
# link_type,
|
|
325
|
+
# proj,
|
|
326
|
+
# filepaths,
|
|
327
|
+
# overwrite,
|
|
328
|
+
# no_new_versions,
|
|
329
|
+
# cores,
|
|
330
|
+
# state,
|
|
331
|
+
# )
|
geoseeq/constants.py
CHANGED
|
@@ -7,6 +7,7 @@ FASTQ_MODULE_NAMES = [
|
|
|
7
7
|
'short_read::paired_end',
|
|
8
8
|
'short_read::single_end',
|
|
9
9
|
'long_read::nanopore',
|
|
10
|
+
'long_read::pacbio',
|
|
10
11
|
'raw::raw_reads',
|
|
11
12
|
'genome::fasta',
|
|
12
13
|
]
|
|
@@ -16,4 +17,12 @@ CONFIG_FOLDER = environ.get("XDG_CONFIG_HOME", join(environ["HOME"], ".config"))
|
|
|
16
17
|
CONFIG_DIR = environ.get("GEOSEEQ_CONFIG_DIR", join(CONFIG_FOLDER, "geoseeq"))
|
|
17
18
|
PROFILES_PATH = join(CONFIG_DIR, "profiles.json")
|
|
18
19
|
|
|
19
|
-
OBJECT_TYPE_STR = Literal[
|
|
20
|
+
OBJECT_TYPE_STR = Literal[
|
|
21
|
+
'org',
|
|
22
|
+
'project',
|
|
23
|
+
'sample',
|
|
24
|
+
'sample_result_folder',
|
|
25
|
+
'project_result_folder',
|
|
26
|
+
'sample_result_file',
|
|
27
|
+
'project_result_file',
|
|
28
|
+
]
|
geoseeq/result/result_file.py
CHANGED
|
@@ -103,6 +103,18 @@ class ResultFile(RemoteObject, ResultFileUpload, ResultFileDownload, ResultFileS
|
|
|
103
103
|
# except TypeError:
|
|
104
104
|
# return basename(self.get_blob_filename())
|
|
105
105
|
|
|
106
|
+
def get_stored_data_filename(self):
|
|
107
|
+
"""Return the filename that is stored in the stored_data field.
|
|
108
|
+
|
|
109
|
+
This is typically the filename that was originally uploaded to create this result file.
|
|
110
|
+
"""
|
|
111
|
+
try:
|
|
112
|
+
key = [k for k in ["filename", "uri", "url"] if k in self.stored_data][0]
|
|
113
|
+
except IndexError:
|
|
114
|
+
raise TypeError("Cannot make a reference filename for a BLOB type result field.")
|
|
115
|
+
filepath = self.stored_data[key]
|
|
116
|
+
return basename(filepath)
|
|
117
|
+
|
|
106
118
|
def _save(self):
|
|
107
119
|
data = {field: getattr(self, field) for field in self.remote_fields if hasattr(self, field)}
|
|
108
120
|
data["analysis_result"] = self.parent.uuid
|
geoseeq/sample.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import urllib
|
|
2
2
|
from .remote_object import RemoteObject
|
|
3
|
-
from .result import
|
|
3
|
+
from .result import SampleResultFolder
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class Sample(RemoteObject):
|
|
@@ -166,12 +166,14 @@ class Sample(RemoteObject):
|
|
|
166
166
|
"short_read::paired_end"
|
|
167
167
|
"short_read::single_end"
|
|
168
168
|
"long_read::nanopore"
|
|
169
|
+
"long_read::pacbio"
|
|
169
170
|
"""
|
|
170
171
|
if preference_order is None:
|
|
171
172
|
preference_order = [
|
|
172
173
|
"short_read::paired_end",
|
|
173
174
|
"short_read::single_end",
|
|
174
175
|
"long_read::nanopore",
|
|
176
|
+
"long_read::pacbio",
|
|
175
177
|
]
|
|
176
178
|
all_fastqs = self.get_all_fastqs()
|
|
177
179
|
for read_type in preference_order:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: geoseeq
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.5
|
|
4
4
|
Summary: GeoSeeq command line tools and python API
|
|
5
5
|
Project-URL: Homepage, https://github.com/biotia/geoseeq_api_client
|
|
6
6
|
Project-URL: Issues, https://github.com/biotia/geoseeq_api_client/issues
|
|
@@ -84,7 +84,7 @@ $ geoseeq download files --extension fastq.gz "GeoSeeq/Example CLI Project"
|
|
|
84
84
|
|
|
85
85
|
GeoSeeq can automatically group fastq files into samples according to their
|
|
86
86
|
sample name, read number, and lane number. It supports paired end, single end,
|
|
87
|
-
and
|
|
87
|
+
nanopore, and pacbio reads.
|
|
88
88
|
|
|
89
89
|
Assume you have data from a single ended sequencing run stored as fastq files:
|
|
90
90
|
- Sample1_L1_R1.fastq.gz
|
|
@@ -115,6 +115,12 @@ GeoSeeq will automatically create a new sample named `Sample1` if it does not al
|
|
|
115
115
|
|
|
116
116
|
This command would upload data [to this project.](https://portal.geoseeq.com/sample-groups/ed59b913-91ec-489b-a1b9-4ea137a6e5cf/samples). Since only organization members can upload data, you will need to replace `GeoSeeq` with your organization name.
|
|
117
117
|
|
|
118
|
+
To rename samples on the fly, provide a CSV file with current and new names using the `--name-map` option:
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
$ geoseeq upload reads --name-map sample_map.csv current_name new_name "GeoSeeq/Example CLI Project" fastq_files.txt
|
|
122
|
+
```
|
|
123
|
+
|
|
118
124
|
Note: You will need to have an API token set to use this command (see above)
|
|
119
125
|
|
|
120
126
|
## Using the Python API in a program
|
|
@@ -2,14 +2,14 @@ geoseeq/__init__.py,sha256=YqYqeHbqjgWI5OBIxkPXNvLISOjVWaNwVFy6AGJ7uwc,982
|
|
|
2
2
|
geoseeq/app.py,sha256=Y6d1UzxFLfE3RNccATbFCVi6kH3eFmzwoUbeR2Ry09A,2387
|
|
3
3
|
geoseeq/blob_constructors.py,sha256=AkWpDQY0EdGMxF1p6eRspyHKubcUdiW4it-_Q7S2QWk,188
|
|
4
4
|
geoseeq/bulk_creators.py,sha256=pdn-Dv7yv5SFv-PfDuQbuOnw2W4-BfIfRJVRAhM8U6s,2115
|
|
5
|
-
geoseeq/constants.py,sha256=
|
|
5
|
+
geoseeq/constants.py,sha256=Vi9tahoQI6vnRaYoXuzZ7Dq12oAwwPCBfmPYeDWbjDE,722
|
|
6
6
|
geoseeq/file_system_cache.py,sha256=HzVZWtwLD2fjWWSo_UfWmGeBltm9He4lP_OqzKwNGWg,4138
|
|
7
7
|
geoseeq/knex.py,sha256=zcjafsmUn9SC3LlRnvvaXpr-pHYZ0IXk7LpzuUoE3MI,8312
|
|
8
8
|
geoseeq/organization.py,sha256=bJkYL8_D-k6IYAaii2ZbxjwYnXy6lvu6iLXscxKlA3w,2542
|
|
9
9
|
geoseeq/pipeline.py,sha256=89mhWaecsKnm6tyRkdkaVp4dmZh62_v42Ze0oXf8OTY,9873
|
|
10
10
|
geoseeq/project.py,sha256=jryxHMx5PdQNaMJWjlzgQmxJt_s2M-HAHARBCPd1Vzc,17075
|
|
11
11
|
geoseeq/remote_object.py,sha256=GYN6PKU7Zz3htIdpFjfZiFejzGqqJHbJyKlefM1Eixk,7151
|
|
12
|
-
geoseeq/sample.py,sha256=
|
|
12
|
+
geoseeq/sample.py,sha256=oVUNnfqsRCCDUZdyI6fGylaMgLHd_7FLLJVGuOd5Jb8,10946
|
|
13
13
|
geoseeq/search.py,sha256=gawad6Cx5FxJBPlYkXWb-UKAO-UC0_yhvyU9Ca1kaNI,3388
|
|
14
14
|
geoseeq/smart_table.py,sha256=rihMsFUIn-vn4w6ukVZTHI9bjDSEr8xHExBfX8mwCHM,6169
|
|
15
15
|
geoseeq/smart_tree.py,sha256=bSjDlwmOuNXutYJhytA1RovwRCHV6ZxXXJPiIGFhPaA,1825
|
|
@@ -18,14 +18,14 @@ geoseeq/user.py,sha256=tol8i1UGLRrbMw5jeJDnna1ikRgrCDd50Jxz0a1lSgg,690
|
|
|
18
18
|
geoseeq/utils.py,sha256=ZXpWb2MetUIeLrExiXb7IaOXYrW1pvrdP3o0KWzbwCs,4035
|
|
19
19
|
geoseeq/work_orders.py,sha256=5uLVVfdKE8qh4gGaHkdBpXJGRTujuSg59knWCqEET4A,8071
|
|
20
20
|
geoseeq/cli/__init__.py,sha256=4WnK87K5seRK3SGJAxNWnQTqyg5uBhdhrOrzB1D4b3M,24
|
|
21
|
-
geoseeq/cli/constants.py,sha256=
|
|
21
|
+
geoseeq/cli/constants.py,sha256=NtRSNBuna42605LE0sVywTPfmzYQnG-3yrT_M7Ml5B0,213
|
|
22
22
|
geoseeq/cli/copy.py,sha256=02U9kdrAIbbM8MlRMLL6p-LMYFSuRObE3h5jyvcL__M,2275
|
|
23
23
|
geoseeq/cli/detail.py,sha256=q8Suu-j2k18knfSVFG-SWWGNsKM-n8y9RMA3LcIIi9Y,4132
|
|
24
|
-
geoseeq/cli/download.py,sha256=
|
|
24
|
+
geoseeq/cli/download.py,sha256=U4x-Y5DMkRGcWctVdp6YIFviLZI6tpMMyXEeV2tbzaM,25407
|
|
25
25
|
geoseeq/cli/fastq_utils.py,sha256=-bmeQLaiMBm57zWOF0R5OlWTU0_3sh1JBC1RYw2BOFM,3083
|
|
26
26
|
geoseeq/cli/find_grn.py,sha256=oMDxkzGQBQb2_cCuvmwoeHOsFHqyO9RLeJzrB6bAe5M,439
|
|
27
27
|
geoseeq/cli/get_eula.py,sha256=79mbUwyiF7O1r0g6UTxG9kJGQEqKuH805E6eLkPC6Y4,997
|
|
28
|
-
geoseeq/cli/main.py,sha256=
|
|
28
|
+
geoseeq/cli/main.py,sha256=Gvi5Bh5zbEmYPdShcrY0C3KAwQdRiNxsMUhATVtDWMc,4133
|
|
29
29
|
geoseeq/cli/manage.py,sha256=wGXAcVaXqE5JQEU8Jh6OlHr02nB396bpS_SFcOZdrEo,5929
|
|
30
30
|
geoseeq/cli/progress_bar.py,sha256=p1Xl01nkYxSBZCB30ue2verIIi22W93m3ZAMAxipD0g,738
|
|
31
31
|
geoseeq/cli/project.py,sha256=V5SdXm2Hwo2lxrkpwRDedw-mAE4XnM2uwT-Gj1D90VQ,3030
|
|
@@ -44,7 +44,7 @@ geoseeq/cli/shared_params/opts_and_args.py,sha256=_DcJ-TqgrbBaeDd-kuHEx2gLZPQN6E
|
|
|
44
44
|
geoseeq/cli/upload/__init__.py,sha256=tRrljqG7uBM6zVBKpDw1zevHz6Vy418HuIYZKwByyWg,862
|
|
45
45
|
geoseeq/cli/upload/upload.py,sha256=tBga8TW_5qXM4avXH5BAfLrYNms_5eqdyJZex47hZ90,14294
|
|
46
46
|
geoseeq/cli/upload/upload_advanced.py,sha256=1pjtbe8EidIo4eR1_oVD00rPCTxYj8CRqB8D9buA62M,12432
|
|
47
|
-
geoseeq/cli/upload/upload_reads.py,sha256=
|
|
47
|
+
geoseeq/cli/upload/upload_reads.py,sha256=da_a-ojltmcUa1MGycMg8LLKd0ZXCZ8-F3zpuijwWd4,12181
|
|
48
48
|
geoseeq/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
49
|
geoseeq/contrib/ncbi/README.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
50
50
|
geoseeq/contrib/ncbi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -76,7 +76,7 @@ geoseeq/result/bioinfo.py,sha256=QQtbyogrdro9avJSN0713sxLVnVeA24mFw3hWtKDKyw,178
|
|
|
76
76
|
geoseeq/result/file_chunker.py,sha256=bXq1csuRtqMB5sbH-AfWo6gdPwrivv5DJPuHVj-h08w,1758
|
|
77
77
|
geoseeq/result/file_download.py,sha256=5IXg_dIWlrRHBJQssO42da5_bIJOyH0_b8K2KWVAFBE,8210
|
|
78
78
|
geoseeq/result/file_upload.py,sha256=xs1DrI-h4ZP7xN8HPBc3SFpcPAxR5HAolraP1Zu7tvE,10648
|
|
79
|
-
geoseeq/result/result_file.py,sha256=
|
|
79
|
+
geoseeq/result/result_file.py,sha256=Mu_8cJYN3tVlkLYnbd_pyGinBoePlmQxLFIbeF-PWyo,9698
|
|
80
80
|
geoseeq/result/result_folder.py,sha256=iyO0hwZWokrH6oWhBgHlunWMpCMpejKb8v2sHFhecws,11283
|
|
81
81
|
geoseeq/result/resumable_download_tracker.py,sha256=YEzqHBBnE7L3XokTvlTAhHZ8TcDTIE_pyTQ7YadOfbU,3667
|
|
82
82
|
geoseeq/result/resumable_upload_tracker.py,sha256=2aI09gYz2yw63jEXqs8lmCRKQ79TIc3YuPETvP0Jeek,3811
|
|
@@ -92,8 +92,8 @@ geoseeq/vc/vc_cache.py,sha256=P4LXTbq2zOIv1OhP7Iw5MmypR2vXuy29Pq5K6gRvi-M,730
|
|
|
92
92
|
geoseeq/vc/vc_dir.py,sha256=A9CLTh2wWCRzZjiLyqXD1vhtsWZGD3OjaMT5KqlfAXI,457
|
|
93
93
|
geoseeq/vc/vc_sample.py,sha256=qZeioWydXvfu4rGMs20nICfNcp46y_XkND-bHdV6P5M,3850
|
|
94
94
|
geoseeq/vc/vc_stub.py,sha256=IQr8dI0zsWKVAeY_5ybDD6n49_3othcgfHS3P0O9tuY,3110
|
|
95
|
-
geoseeq-0.7.
|
|
96
|
-
geoseeq-0.7.
|
|
97
|
-
geoseeq-0.7.
|
|
98
|
-
geoseeq-0.7.
|
|
99
|
-
geoseeq-0.7.
|
|
95
|
+
geoseeq-0.7.5.dist-info/METADATA,sha256=SzijU4fXQxHJBEgmy8c8Uv8Y2JmdNDOQYD92EwmPTBw,5652
|
|
96
|
+
geoseeq-0.7.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
97
|
+
geoseeq-0.7.5.dist-info/entry_points.txt,sha256=yF-6KDM8zXib4Al0qn49TX-qM7PUkWUIcYtsgt36rjM,45
|
|
98
|
+
geoseeq-0.7.5.dist-info/licenses/LICENSE,sha256=IuhIl1XCxXLPLJT_coN1CNqQU4Khlq7x4IdW7ioOJD8,1067
|
|
99
|
+
geoseeq-0.7.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|