Skip to content

Commit ea7b554

Browse files
author
victor73
committed
Fixes to SixteenSTrimmedSeqSet that was dropping the urls field data. New example file and improved test script.
1 parent 3b5270c commit ea7b554

4 files changed

Lines changed: 92 additions & 6 deletions

File tree

CHANGES

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
1+
cutlass 0.27
2+
3+
* Bug fix to SixteenSTrimmedSeqSet save() functionality which
4+
was losing the urls property.
5+
* Improved test for SixteenSTrimmedSeqSet class.
6+
* Added missing example script for SixteenSTrimmedSeqSet data.
7+
8+
- Victor <victor73@github.com> Tue, 17 Jan 2017 15:00:00 -0400
9+
110
cutlass 0.26
211

312
* Added missing SubjectAttribute node, example and test.
413
* Modified Subject node to add attributes() method for retrieval
514
of SubjectAttribute information.
615
* Modified Annotation class to require file size.
7-
* Bug fix to SixteenSTrimmedSeqSet save() functionality which
8-
was losing the urls property.
916
* Removed WgsRawSeqSetPrivate class, test and example in favor
1017
of more generic solution.
1118
* Improved flexibility of test scripts by using a configuration

cutlass/SixteenSTrimmedSeqSet.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -618,6 +618,8 @@ def save(self):
618618
self.logger.error("Experienced an error uploading the sequence " + \
619619
"set. Aborting save.")
620620
return success
621+
else:
622+
self._urls = [ "fasp://" + aspera_server + remote_path ]
621623

622624
self.logger.info("Uploaded the %s to the iHMP Aspera server (%s) successfully." %
623625
(self._local_file, aspera_server))
@@ -638,11 +640,9 @@ def save(self):
638640
self.logger.info("Setting ID for " + __name__ + " %s." % node_id)
639641
self._set_id(node_id)
640642
self._version = 1
641-
self._urls = [ "fasp://" + aspera_server + remote_path ]
642643

643644
success = True
644645
except Exception as e:
645-
self.logger.exception(e)
646646
self.logger.error("An error occurred while saving " + __name__ + ". " + \
647647
"Reason: %s" % e)
648648
else:

examples/16s_trimmed_seq_set.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#!/usr/bin/env python
2+
3+
import json
4+
import logging
5+
from cutlass import SixteenSTrimmedSeqSet
6+
from cutlass import iHMPSession
7+
from pprint import pprint
8+
import tempfile
9+
import sys
10+
11+
root = logging.getLogger()
12+
root.setLevel(logging.DEBUG)
13+
ch = logging.StreamHandler(sys.stdout)
14+
ch.setLevel(logging.DEBUG)
15+
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
16+
ch.setFormatter(formatter)
17+
root.addHandler(ch)
18+
19+
username = "test"
20+
password = "test"
21+
22+
session = iHMPSession(username, password)
23+
24+
print("Required fields: ")
25+
print(SixteenSTrimmedSeqSet.required_fields())
26+
27+
seq_set = SixteenSTrimmedSeqSet()
28+
29+
seq_set.checksums = { "md5": "72bdc024d83226ccc90fbd2177e78d56" }
30+
seq_set.comment = "test comment. Hello world!"
31+
seq_set.exp_length = 2000
32+
seq_set.format = "fasta"
33+
seq_set.format_doc = "url"
34+
seq_set.seq_model = "a machine"
35+
seq_set.sequence_type = "nucleotide"
36+
seq_set.size = 3000
37+
seq_set.study = "prediabetes"
38+
39+
print("Creating a temp file for example/testing purposes.")
40+
temp_file = tempfile.NamedTemporaryFile(delete=False).name
41+
print("Local file: %s" % temp_file)
42+
43+
seq_set.local_file = temp_file
44+
45+
seq_set.links = { "computed_from": [ "610a4911a5ca67de12cdc1e4b4014cd0" ] }
46+
47+
seq_set.tags = [ "16s_trimmed_seq_set", "ihmp" ]
48+
seq_set.add_tag("another")
49+
seq_set.add_tag("and_another")
50+
51+
print(seq_set.to_json(indent=2))
52+
53+
if seq_set.is_valid():
54+
print("Valid!")
55+
56+
success = seq_set.save()
57+
58+
if success:
59+
seq_set_id = seq_set.id
60+
print("Successfully saved sequence set with ID: %s" % seq_set_id)
61+
62+
seq_set2 = SixteenSTrimmedSeqSet.load(seq_set_id)
63+
64+
print(seq_set.to_json(indent=4))
65+
66+
deletion_success = seq_set.delete()
67+
68+
if deletion_success:
69+
print("Deleted 16s_trimmed_seq_set with ID %s" % seq_set_id)
70+
else:
71+
print("Deletion of 16s_trimmed_seq_set %s failed." % seq_set_id)
72+
else:
73+
print("Save failed")
74+
else:
75+
print("Invalid...")
76+
validation_errors = seq_set.validate()
77+
pprint(validation_errors)

tests/test_16s_trimmed_seq_set.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import random
66
import string
77
import sys
8+
import tempfile
89

910
from cutlass import iHMPSession
1011
from cutlass import SixteenSTrimmedSeqSet
@@ -324,6 +325,8 @@ def testRequiredFields(self):
324325
"required_field() did not return empty value.")
325326

326327
def testLoadSaveDeleteSixteenSTrimmedSeqSet(self):
328+
temp_file = tempfile.NamedTemporaryFile(delete=False).name
329+
327330
# Attempt to save the sixteenSTrimmedSeqSet at all points before and
328331
# after adding the required fields
329332

@@ -334,7 +337,6 @@ def testLoadSaveDeleteSixteenSTrimmedSeqSet(self):
334337
exp_length = 100
335338
test_format = "fasta"
336339
test_format_doc = "http://example.com"
337-
local_fasta_file = "test.fasta"
338340
seq_model = "center for sequencing"
339341
size = 132
340342
study = "ibd"
@@ -366,7 +368,7 @@ def testLoadSaveDeleteSixteenSTrimmedSeqSet(self):
366368
sixteenSTrimmedSeqSet.format_doc = test_format_doc
367369
sixteenSTrimmedSeqSet.format = test_format
368370
sixteenSTrimmedSeqSet.seq_model = seq_model
369-
sixteenSTrimmedSeqSet.local_file = local_fasta_file
371+
sixteenSTrimmedSeqSet.local_file = temp_file
370372
sixteenSTrimmedSeqSet.size = size
371373
sixteenSTrimmedSeqSet.study = study
372374

0 commit comments

Comments
 (0)