geoseeq 0.6.14.dev6__py3-none-any.whl → 0.6.15.dev1__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/main.py +1 -1
- geoseeq/cli/upload/__init__.py +4 -0
- geoseeq/cli/upload/upload.py +114 -0
- geoseeq/cli/upload/upload_advanced.py +2 -2
- geoseeq/cli/upload/upload_reads.py +7 -7
- geoseeq/constants.py +7 -1
- geoseeq/result/result_file.py +2 -1
- geoseeq/result/result_folder.py +8 -0
- geoseeq/result/smart_objects.py +40 -0
- geoseeq/smart_table.py +3 -2
- geoseeq/smart_tree.py +57 -0
- {geoseeq-0.6.14.dev6.dist-info → geoseeq-0.6.15.dev1.dist-info}/METADATA +1 -1
- {geoseeq-0.6.14.dev6.dist-info → geoseeq-0.6.15.dev1.dist-info}/RECORD +17 -15
- {geoseeq-0.6.14.dev6.dist-info → geoseeq-0.6.15.dev1.dist-info}/LICENSE +0 -0
- {geoseeq-0.6.14.dev6.dist-info → geoseeq-0.6.15.dev1.dist-info}/WHEEL +0 -0
- {geoseeq-0.6.14.dev6.dist-info → geoseeq-0.6.15.dev1.dist-info}/entry_points.txt +0 -0
- {geoseeq-0.6.14.dev6.dist-info → geoseeq-0.6.15.dev1.dist-info}/top_level.txt +0 -0
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.6.
|
58
|
+
click.echo('0.6.15dev1') # remember to update pyproject.toml
|
59
59
|
|
60
60
|
|
61
61
|
@main.group('advanced')
|
geoseeq/cli/upload/__init__.py
CHANGED
@@ -4,6 +4,8 @@ from .upload import (
|
|
4
4
|
cli_upload_file,
|
5
5
|
cli_upload_folder,
|
6
6
|
cli_metadata,
|
7
|
+
cli_upload_smart_table,
|
8
|
+
cli_upload_smart_tree,
|
7
9
|
)
|
8
10
|
from .upload_reads import cli_upload_reads_wizard
|
9
11
|
from .upload_advanced import cli_find_urls_for_reads
|
@@ -17,6 +19,8 @@ cli_upload.add_command(cli_upload_reads_wizard)
|
|
17
19
|
cli_upload.add_command(cli_upload_file)
|
18
20
|
cli_upload.add_command(cli_upload_folder)
|
19
21
|
cli_upload.add_command(cli_metadata)
|
22
|
+
cli_upload.add_command(cli_upload_smart_table)
|
23
|
+
cli_upload.add_command(cli_upload_smart_tree)
|
20
24
|
|
21
25
|
@click.group('upload')
|
22
26
|
def cli_upload_advanced():
|
geoseeq/cli/upload/upload.py
CHANGED
@@ -263,3 +263,117 @@ def cli_metadata(state, overwrite, yes, private, create, index_col, encoding, pr
|
|
263
263
|
sample.metadata = new_meta
|
264
264
|
sample.idem()
|
265
265
|
click.echo(f'Wrote metadata for {len(samples)} samples')
|
266
|
+
|
267
|
+
|
268
|
+
@click.command('smart-table')
|
269
|
+
@use_common_state
|
270
|
+
@overwrite_option
|
271
|
+
@yes_option
|
272
|
+
@private_option
|
273
|
+
@click.option('-n', '--geoseeq-file-name', default=None,
|
274
|
+
help='Specify a different name for the file on GeoSeeq than the local file name.',
|
275
|
+
show_default=True)
|
276
|
+
@folder_id_arg
|
277
|
+
@click.argument('file_path', type=click.Path(exists=True), nargs=1)
|
278
|
+
def cli_upload_smart_table(state, overwrite, yes, private, folder_id, geoseeq_file_name, file_path):
|
279
|
+
"""Upload a smart table to GeoSeeq.
|
280
|
+
|
281
|
+
This command uploads a smart table to a project or sample on GeoSeeq. It can be used to upload
|
282
|
+
a single file to a folder at once.
|
283
|
+
|
284
|
+
---
|
285
|
+
|
286
|
+
Example Usage:
|
287
|
+
|
288
|
+
\b
|
289
|
+
# Upload a smart table from a file
|
290
|
+
$ geoseeq upload smart-table "My Org/My Project/My Sample/My Folder" /path/to/my_table.csv
|
291
|
+
|
292
|
+
\b
|
293
|
+
# Upload a smart table from a file but name it "My Smart Table" on GeoSeeq
|
294
|
+
$ geoseeq upload smart-table "My Org/My Project/My Sample/My Folder" /path/to/my_table.csv -n "My Smart Table"
|
295
|
+
|
296
|
+
---
|
297
|
+
|
298
|
+
Command Arguments:
|
299
|
+
|
300
|
+
[FOLDER_ID] Can be a folder UUID, GeoSeeq Resource Number (GRN), or an
|
301
|
+
names for an org, project, sample, folder separated by a slash. Can exclude
|
302
|
+
the sample name if the folder is for a project.
|
303
|
+
|
304
|
+
[FILE_PATH] A path to a file on your local machine.
|
305
|
+
|
306
|
+
---
|
307
|
+
"""
|
308
|
+
knex = state.get_knex()
|
309
|
+
result_folder = handle_folder_id(knex, folder_id, yes=yes, private=private)
|
310
|
+
|
311
|
+
if not geoseeq_file_name:
|
312
|
+
geoseeq_file_name = basename(file_path)
|
313
|
+
|
314
|
+
if not overwrite and result_folder.result_file(geoseeq_file_name).exists():
|
315
|
+
raise click.UsageError(f'{geoseeq_file_name} already exists in {result_folder}. Use --overwrite to overwrite it.')
|
316
|
+
|
317
|
+
result_file = result_folder.result_file(geoseeq_file_name)
|
318
|
+
smart_table = result_file.as_smart_table()
|
319
|
+
smart_table.import_csv(file_path)
|
320
|
+
|
321
|
+
|
322
|
+
@click.command('smart-tree')
|
323
|
+
@use_common_state
|
324
|
+
@click.option('-m/-nm', '--make-name-map/--no-name-map', default=True, help="Create a sample name map with all samples currently in the project.")
|
325
|
+
@overwrite_option
|
326
|
+
@yes_option
|
327
|
+
@private_option
|
328
|
+
@click.option('-n', '--geoseeq-file-name', default=None,
|
329
|
+
help='Specify a different name for the file on GeoSeeq than the local file name.',
|
330
|
+
show_default=True)
|
331
|
+
@folder_id_arg
|
332
|
+
@click.argument('newick_file_path', type=click.Path(exists=True), nargs=1)
|
333
|
+
def cli_upload_smart_tree(state, make_name_map, overwrite, yes, private, folder_id, geoseeq_file_name, newick_file_path):
|
334
|
+
"""Upload a smart tree to GeoSeeq.
|
335
|
+
|
336
|
+
This command uploads a smart tree to a project or sample on GeoSeeq. It can be used to upload
|
337
|
+
a single file to a folder at once.
|
338
|
+
|
339
|
+
---
|
340
|
+
|
341
|
+
Example Usage:
|
342
|
+
|
343
|
+
\b
|
344
|
+
# Upload a smart tree from a file
|
345
|
+
$ geoseeq upload smart-tree "My Org/My Project/My Sample/My Folder" /path/to/my_tree.nwk
|
346
|
+
|
347
|
+
\b
|
348
|
+
# Upload a smart tree from a file but name it "My Smart Tree" on GeoSeeq
|
349
|
+
$ geoseeq upload smart-tree "My Org/My Project/My Sample/My Folder" /path/to/my_tree.nwk -n "My Smart Tree"
|
350
|
+
|
351
|
+
---
|
352
|
+
|
353
|
+
Command Arguments:
|
354
|
+
|
355
|
+
[FOLDER_ID] Can be a folder UUID, GeoSeeq Resource Number (GRN), or an
|
356
|
+
names for an org, project, sample, folder separated by a slash. Can exclude
|
357
|
+
the sample name if the folder is for a project.
|
358
|
+
|
359
|
+
[NEWICK_FILE_PATH] A path to a newick file on your local machine.
|
360
|
+
|
361
|
+
---
|
362
|
+
"""
|
363
|
+
knex = state.get_knex()
|
364
|
+
result_folder = handle_folder_id(knex, folder_id, yes=yes, private=private)
|
365
|
+
|
366
|
+
if not geoseeq_file_name:
|
367
|
+
geoseeq_file_name = basename(newick_file_path)
|
368
|
+
|
369
|
+
if not overwrite and result_folder.result_file(geoseeq_file_name).exists():
|
370
|
+
raise click.UsageError(f'{geoseeq_file_name} already exists in {result_folder}. Use --overwrite to overwrite it.')
|
371
|
+
|
372
|
+
result_file = result_folder.result_file(geoseeq_file_name)
|
373
|
+
smart_tree = result_file.as_smart_tree()
|
374
|
+
with open(newick_file_path) as f:
|
375
|
+
newick_str = f.read()
|
376
|
+
smart_tree.create_from_newick(newick_str)
|
377
|
+
if make_name_map:
|
378
|
+
smart_tree.add_all_samples_to_map(result_folder.project)
|
379
|
+
smart_tree.idem()
|
@@ -6,7 +6,7 @@ from .upload_reads import (
|
|
6
6
|
_make_in_process_logger,
|
7
7
|
_get_regex,
|
8
8
|
_group_files,
|
9
|
-
|
9
|
+
flatten_list_of_fastxs,
|
10
10
|
)
|
11
11
|
|
12
12
|
from multiprocessing import Pool, current_process
|
@@ -84,7 +84,7 @@ def cli_find_urls_for_reads(state, cores, overwrite, yes, regex, private, module
|
|
84
84
|
"""
|
85
85
|
knex = state.get_knex()
|
86
86
|
proj = handle_project_id(knex, project_id, yes, private)
|
87
|
-
filepaths = {basename(line): line for line in
|
87
|
+
filepaths = {basename(line): line for line in flatten_list_of_fastxs(fastq_files)}
|
88
88
|
click.echo(f'Found {len(filepaths)} files to upload.', err=True)
|
89
89
|
regex = _get_regex(knex, filepaths, module_name, proj, regex)
|
90
90
|
groups = _group_files(knex, filepaths, module_name, regex, yes)
|
@@ -118,7 +118,7 @@ def _is_fastq(path, fq_exts=['.fastq', '.fq'], compression_exts=['.gz', '.bz2',
|
|
118
118
|
return False
|
119
119
|
|
120
120
|
|
121
|
-
def _is_fasta(path, fa_exts=['.fasta', '.fa'], compression_exts=['.gz', '.bz2', '']):
|
121
|
+
def _is_fasta(path, fa_exts=['.fasta', '.fa', '.fna', '.faa'], compression_exts=['.gz', '.bz2', '']):
|
122
122
|
for fa_ext in fa_exts:
|
123
123
|
for compression_ext in compression_exts:
|
124
124
|
if path.endswith(fa_ext + compression_ext):
|
@@ -289,9 +289,9 @@ def cli_upload_reads_wizard(state, cores, overwrite, yes, regex, private, link_t
|
|
289
289
|
[FILES...] can be paths to BAM files or a file containing a list of paths, or a mix of both.
|
290
290
|
Example: "path/to/bam/files
|
291
291
|
"""
|
292
|
-
knex = state.get_knex()
|
293
|
-
proj = handle_project_id(knex, project_id, yes, private)
|
294
|
-
filepaths = {basename(line): line for line in flatten_list_of_bams(files)}
|
295
|
-
click.echo(f'Found {len(filepaths)} files to upload.', err=True)
|
296
|
-
groups = _group_files(knex, filepaths, 'bam::bam', regex, yes)
|
297
|
-
_do_upload(groups, 'bam::bam', link_type, proj, filepaths, overwrite, no_new_versions, cores, state)
|
292
|
+
# knex = state.get_knex()
|
293
|
+
# proj = handle_project_id(knex, project_id, yes, private)
|
294
|
+
# filepaths = {basename(line): line for line in flatten_list_of_bams(files)}
|
295
|
+
# click.echo(f'Found {len(filepaths)} files to upload.', err=True)
|
296
|
+
# groups = _group_files(knex, filepaths, 'bam::bam', regex, yes)
|
297
|
+
# _do_upload(groups, 'bam::bam', link_type, proj, filepaths, overwrite, no_new_versions, cores, state)
|
geoseeq/constants.py
CHANGED
@@ -2,7 +2,13 @@ from os import environ
|
|
2
2
|
from os.path import join
|
3
3
|
|
4
4
|
FIVE_MB = 5 * (1024 ** 2)
|
5
|
-
FASTQ_MODULE_NAMES = [
|
5
|
+
FASTQ_MODULE_NAMES = [
|
6
|
+
'short_read::paired_end',
|
7
|
+
'short_read::single_end',
|
8
|
+
'long_read::nanopore',
|
9
|
+
'raw::raw_reads',
|
10
|
+
'genome::fasta',
|
11
|
+
]
|
6
12
|
DEFAULT_ENDPOINT = "https://backend.geoseeq.com"
|
7
13
|
|
8
14
|
CONFIG_FOLDER = environ.get("XDG_CONFIG_HOME", join(environ["HOME"], ".config"))
|
geoseeq/result/result_file.py
CHANGED
@@ -18,9 +18,10 @@ from geoseeq.knex import GeoseeqOtherError
|
|
18
18
|
from .utils import *
|
19
19
|
from .file_upload import ResultFileUpload
|
20
20
|
from .file_download import ResultFileDownload
|
21
|
+
from .smart_objects import ResultFileSmartObjects
|
21
22
|
|
22
23
|
|
23
|
-
class ResultFile(RemoteObject, ResultFileUpload, ResultFileDownload):
|
24
|
+
class ResultFile(RemoteObject, ResultFileUpload, ResultFileDownload, ResultFileSmartObjects):
|
24
25
|
remote_fields = [
|
25
26
|
"uuid",
|
26
27
|
"created_at",
|
geoseeq/result/result_folder.py
CHANGED
@@ -225,6 +225,10 @@ class SampleResultFolder(ResultFolder, SampleBioInfoFolder):
|
|
225
225
|
|
226
226
|
def get_fields(self, *args, **kwargs):
|
227
227
|
return self.get_result_files(*args, **kwargs)
|
228
|
+
|
229
|
+
@property
|
230
|
+
def project(self):
|
231
|
+
return self.sample.project
|
228
232
|
|
229
233
|
def __str__(self):
|
230
234
|
return f"<Geoseeq::SampleResultFolder {self.module_name} {self.replicate} {self.uuid} />"
|
@@ -288,6 +292,10 @@ class ProjectResultFolder(ResultFolder):
|
|
288
292
|
|
289
293
|
def get_fields(self, *args, **kwargs):
|
290
294
|
return self.get_result_files(*args, **kwargs)
|
295
|
+
|
296
|
+
@property
|
297
|
+
def project(self):
|
298
|
+
return self.grp
|
291
299
|
|
292
300
|
def __str__(self):
|
293
301
|
return f"<Geoseeq::ProjectResultFolder {self.module_name} {self.replicate} {self.uuid} />"
|
@@ -0,0 +1,40 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
class ResultFileSmartObjects:
|
4
|
+
"""Interface for ResultFiles to easily create and use smart objects like tables"""
|
5
|
+
|
6
|
+
def is_smart_table(self):
|
7
|
+
"""Return True iff this ResultFile is a smart table."""
|
8
|
+
return self.stored_data.get("__type__") == "smartTable"
|
9
|
+
|
10
|
+
def as_smart_table(self, description=""):
|
11
|
+
"""Return a SmartTable object for this ResultFile. Will create a new SmartTable if it doesn't exist yet."""
|
12
|
+
if self.exists() and not self.is_smart_table():
|
13
|
+
raise ValueError("ResultFile exists but is not a smart table")
|
14
|
+
from geoseeq.smart_table import SmartTable # import here to avoid circular import
|
15
|
+
if self.exists(): # already a smart table
|
16
|
+
smart_table = SmartTable(self.knex, self.name, connected_file_id=self.uuid).get()
|
17
|
+
else: # create a new smart table
|
18
|
+
smart_table = SmartTable(self.knex, self.name, connected_file_id=self.uuid, description=description)
|
19
|
+
smart_table.create(self.parent)
|
20
|
+
return smart_table
|
21
|
+
|
22
|
+
def is_smart_tree(self):
|
23
|
+
"""Return True iff this ResultFile is a smart tree."""
|
24
|
+
return self.stored_data.get("__type__") == "phylodynamics"
|
25
|
+
|
26
|
+
def as_smart_tree(self, newick_str=None, sample_name_id_map=None):
|
27
|
+
"""Return a SmartTree object for this ResultFile. Will create a new SmartTree if it doesn't exist yet."""
|
28
|
+
if self.exists() and not self.is_smart_tree():
|
29
|
+
raise ValueError("ResultFile exists but is not a smart tree")
|
30
|
+
from geoseeq.smart_tree import SmartTree # import here to avoid circular import
|
31
|
+
if self.exists(): # already a smart tree
|
32
|
+
smart_tree = SmartTree.from_blob(self, self.stored_data)
|
33
|
+
else: # create a new smart tree
|
34
|
+
smart_tree = SmartTree(self)
|
35
|
+
if newick_str is not None:
|
36
|
+
smart_tree.create_from_newick(newick_str, sample_name_id_map)
|
37
|
+
smart_tree.create()
|
38
|
+
return smart_tree
|
39
|
+
|
40
|
+
|
geoseeq/smart_table.py
CHANGED
@@ -53,11 +53,12 @@ class SmartTable(RemoteObject):
|
|
53
53
|
|
54
54
|
without_default_columns: if False the server creates 3 example columns.
|
55
55
|
"""
|
56
|
-
|
56
|
+
if description:
|
57
|
+
self.description = description
|
57
58
|
data = {
|
58
59
|
"name": self.name,
|
59
60
|
"folder_id": result_folder.uuid,
|
60
|
-
"description": description,
|
61
|
+
"description": self.description,
|
61
62
|
}
|
62
63
|
url = f"table?without_default_columns={without_default_columns}"
|
63
64
|
blob = self.knex.post(url, json=data)
|
geoseeq/smart_tree.py
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
class SmartTree:
|
2
|
+
|
3
|
+
def __init__(self, result_file):
|
4
|
+
self.result_file = result_file # the result file that contains the smart tree
|
5
|
+
self.content = None
|
6
|
+
|
7
|
+
def create_from_newick(self, newick_str, sample_name_id_map=None):
|
8
|
+
self.content = {
|
9
|
+
"__type__": "phylodynamics",
|
10
|
+
"version": "1.0",
|
11
|
+
"tree": {
|
12
|
+
"value": newick_str,
|
13
|
+
"kind": "newick",
|
14
|
+
"sampleNameIdMap": {} if sample_name_id_map is None else sample_name_id_map,
|
15
|
+
}
|
16
|
+
}
|
17
|
+
return self
|
18
|
+
|
19
|
+
def add_sample_to_map(self, sample):
|
20
|
+
if self.content is None:
|
21
|
+
raise ValueError("Must create tree before adding samples")
|
22
|
+
self.content["tree"]["sampleNameIdMap"][sample.name] = sample.uuid
|
23
|
+
return self
|
24
|
+
|
25
|
+
def add_all_samples_to_map(self, project):
|
26
|
+
for sample in project.get_samples():
|
27
|
+
self.add_sample_to_map(sample)
|
28
|
+
|
29
|
+
@classmethod
|
30
|
+
def from_blob(cls, result_file, blob):
|
31
|
+
smart_tree = cls(result_file)
|
32
|
+
smart_tree.content = blob
|
33
|
+
return smart_tree
|
34
|
+
|
35
|
+
def save(self):
|
36
|
+
if self.content is None:
|
37
|
+
raise ValueError("Must create tree before saving")
|
38
|
+
self.result_file.upload_json(self.content)
|
39
|
+
return self
|
40
|
+
|
41
|
+
def idem(self):
|
42
|
+
if self.content is None:
|
43
|
+
raise ValueError("Must create tree before saving")
|
44
|
+
self.result_file.upload_json(self.content)
|
45
|
+
return self
|
46
|
+
|
47
|
+
def get(self):
|
48
|
+
self.result_file.get()
|
49
|
+
self.content = self.result_file.stored_data
|
50
|
+
return self
|
51
|
+
|
52
|
+
def create(self):
|
53
|
+
if self.content is None:
|
54
|
+
raise ValueError("Must create tree before saving")
|
55
|
+
self.result_file.upload_json(self.content)
|
56
|
+
return self
|
57
|
+
|
@@ -2,7 +2,7 @@ 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=g9YEczT2ssteTrdgFrRimXo5I0C8-MqftoG-hE3KAkg,489
|
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
|
@@ -11,7 +11,8 @@ geoseeq/project.py,sha256=Ba3yvrSyPVnEM5_VGSQu6YPH3CTwE3fHs4JjAepEK7g,13880
|
|
11
11
|
geoseeq/remote_object.py,sha256=GYN6PKU7Zz3htIdpFjfZiFejzGqqJHbJyKlefM1Eixk,7151
|
12
12
|
geoseeq/sample.py,sha256=HAfMiDPHp1UJgIA2lI6oGnNit4YKyj7nx9X07CCN98U,8316
|
13
13
|
geoseeq/search.py,sha256=gawad6Cx5FxJBPlYkXWb-UKAO-UC0_yhvyU9Ca1kaNI,3388
|
14
|
-
geoseeq/smart_table.py,sha256=
|
14
|
+
geoseeq/smart_table.py,sha256=rihMsFUIn-vn4w6ukVZTHI9bjDSEr8xHExBfX8mwCHM,6169
|
15
|
+
geoseeq/smart_tree.py,sha256=bSjDlwmOuNXutYJhytA1RovwRCHV6ZxXXJPiIGFhPaA,1825
|
15
16
|
geoseeq/upload_download_manager.py,sha256=eNR_Lw6JJstZ2X1Si43MM-0JZGv9GT-4fDjykaoH38A,9368
|
16
17
|
geoseeq/user.py,sha256=tol8i1UGLRrbMw5jeJDnna1ikRgrCDd50Jxz0a1lSgg,690
|
17
18
|
geoseeq/utils.py,sha256=ZXpWb2MetUIeLrExiXb7IaOXYrW1pvrdP3o0KWzbwCs,4035
|
@@ -24,7 +25,7 @@ geoseeq/cli/download.py,sha256=cOLIVzAfxpOJnSd4WKWR-HCkOrKjPMbgYaNXDSd9i90,21305
|
|
24
25
|
geoseeq/cli/fastq_utils.py,sha256=-bmeQLaiMBm57zWOF0R5OlWTU0_3sh1JBC1RYw2BOFM,3083
|
25
26
|
geoseeq/cli/find_grn.py,sha256=oMDxkzGQBQb2_cCuvmwoeHOsFHqyO9RLeJzrB6bAe5M,439
|
26
27
|
geoseeq/cli/get_eula.py,sha256=79mbUwyiF7O1r0g6UTxG9kJGQEqKuH805E6eLkPC6Y4,997
|
27
|
-
geoseeq/cli/main.py,sha256=
|
28
|
+
geoseeq/cli/main.py,sha256=o1nrW3v2TAeWRAhctf97r6u4ic1J4SCPhqNGrDcnnFo,3987
|
28
29
|
geoseeq/cli/manage.py,sha256=wGXAcVaXqE5JQEU8Jh6OlHr02nB396bpS_SFcOZdrEo,5929
|
29
30
|
geoseeq/cli/progress_bar.py,sha256=p1Xl01nkYxSBZCB30ue2verIIi22W93m3ZAMAxipD0g,738
|
30
31
|
geoseeq/cli/project.py,sha256=V5SdXm2Hwo2lxrkpwRDedw-mAE4XnM2uwT-Gj1D90VQ,3030
|
@@ -40,10 +41,10 @@ geoseeq/cli/shared_params/config.py,sha256=HQ0xQh_jdt3EKI5VXYqQXzo-s8Rm6YlziMyVX
|
|
40
41
|
geoseeq/cli/shared_params/id_handlers.py,sha256=KtzflnplYVkXsyqI5Ej6r-_BwQnuXVHPr7JcYumTKNc,10700
|
41
42
|
geoseeq/cli/shared_params/obj_getters.py,sha256=ZSkt6LnDkVFlNVYKgLrjzg60-6BthZMr3eeD3HNqzac,2741
|
42
43
|
geoseeq/cli/shared_params/opts_and_args.py,sha256=_DcJ-TqgrbBaeDd-kuHEx2gLZPQN6EHZYWh8Ag-d8Vg,2091
|
43
|
-
geoseeq/cli/upload/__init__.py,sha256=
|
44
|
-
geoseeq/cli/upload/upload.py,sha256=
|
45
|
-
geoseeq/cli/upload/upload_advanced.py,sha256=
|
46
|
-
geoseeq/cli/upload/upload_reads.py,sha256=
|
44
|
+
geoseeq/cli/upload/__init__.py,sha256=xNbAI_eLbepgtW9nD8z5KmVjEK7O9CcJk8OpVspwI5A,775
|
45
|
+
geoseeq/cli/upload/upload.py,sha256=U9w18sG6dZ0uJoAMcQDLdrEtgmRaSaPS7-8KM5LkVd4,14220
|
46
|
+
geoseeq/cli/upload/upload_advanced.py,sha256=tXP7SWaLbLay5FVtqOoj-oToBM1ha2NWzywMnE0Foeo,3434
|
47
|
+
geoseeq/cli/upload/upload_reads.py,sha256=IlO-9b8dHbA-fx8FK_R0BwyoRgtqQUoowgXJcyx_O3k,11018
|
47
48
|
geoseeq/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
48
49
|
geoseeq/contrib/ncbi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
49
50
|
geoseeq/contrib/ncbi/api.py,sha256=WQeLoGA_-Zha-QeSO8_i7HpvXyD8UkV0qc5okm11KiA,1056
|
@@ -70,10 +71,11 @@ geoseeq/result/bioinfo.py,sha256=QQtbyogrdro9avJSN0713sxLVnVeA24mFw3hWtKDKyw,178
|
|
70
71
|
geoseeq/result/file_chunker.py,sha256=bXq1csuRtqMB5sbH-AfWo6gdPwrivv5DJPuHVj-h08w,1758
|
71
72
|
geoseeq/result/file_download.py,sha256=5IXg_dIWlrRHBJQssO42da5_bIJOyH0_b8K2KWVAFBE,8210
|
72
73
|
geoseeq/result/file_upload.py,sha256=xs1DrI-h4ZP7xN8HPBc3SFpcPAxR5HAolraP1Zu7tvE,10648
|
73
|
-
geoseeq/result/result_file.py,sha256=
|
74
|
-
geoseeq/result/result_folder.py,sha256
|
74
|
+
geoseeq/result/result_file.py,sha256=mkFh2DpKO1-kEAARCMYjkc7TmkJh41azyauGIHl_VZo,9173
|
75
|
+
geoseeq/result/result_folder.py,sha256=iyO0hwZWokrH6oWhBgHlunWMpCMpejKb8v2sHFhecws,11283
|
75
76
|
geoseeq/result/resumable_download_tracker.py,sha256=YEzqHBBnE7L3XokTvlTAhHZ8TcDTIE_pyTQ7YadOfbU,3667
|
76
77
|
geoseeq/result/resumable_upload_tracker.py,sha256=2aI09gYz2yw63jEXqs8lmCRKQ79TIc3YuPETvP0Jeek,3811
|
78
|
+
geoseeq/result/smart_objects.py,sha256=-krK9h9HcznIglf189uPghOidF_BzOeSxmBWxrtFFo8,1991
|
77
79
|
geoseeq/result/utils.py,sha256=C-CxGzB3WddlnRiqFSkrY78I_m0yFgNqsTBRzGU-y8Q,2772
|
78
80
|
geoseeq/vc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
79
81
|
geoseeq/vc/checksum.py,sha256=y8rh1asUZNbE_NLiFO0-9hImLNiTOc2YXQBRKORWK7k,710
|
@@ -87,9 +89,9 @@ geoseeq/vc/vc_stub.py,sha256=IQr8dI0zsWKVAeY_5ybDD6n49_3othcgfHS3P0O9tuY,3110
|
|
87
89
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
88
90
|
tests/test_api_client.py,sha256=TS5njc5pcPP_Ycy-ljcfPVT1hQRBsFVdQ0lCqBmoesU,12810
|
89
91
|
tests/test_plotting.py,sha256=TcTu-2ARr8sxZJ7wPQxmbs3-gHw7uRvsgrhhhg0qKik,784
|
90
|
-
geoseeq-0.6.
|
91
|
-
geoseeq-0.6.
|
92
|
-
geoseeq-0.6.
|
93
|
-
geoseeq-0.6.
|
94
|
-
geoseeq-0.6.
|
95
|
-
geoseeq-0.6.
|
92
|
+
geoseeq-0.6.15.dev1.dist-info/LICENSE,sha256=IuhIl1XCxXLPLJT_coN1CNqQU4Khlq7x4IdW7ioOJD8,1067
|
93
|
+
geoseeq-0.6.15.dev1.dist-info/METADATA,sha256=r1u5D-DMAZpT_8OSYg3MBUmHLJEjX16pdG2Z-cy8Ago,4937
|
94
|
+
geoseeq-0.6.15.dev1.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
95
|
+
geoseeq-0.6.15.dev1.dist-info/entry_points.txt,sha256=yF-6KDM8zXib4Al0qn49TX-qM7PUkWUIcYtsgt36rjM,45
|
96
|
+
geoseeq-0.6.15.dev1.dist-info/top_level.txt,sha256=zZk7mmeaqAYqFJG8nq2DTgSQPbflRjJwkDIhNURPDEU,14
|
97
|
+
geoseeq-0.6.15.dev1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|