Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions qiita_ware/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ def submit_EBI(artifact_id, action, send, test=False, test_size=False):
ebi_submission.submission_xml_fp]
total_size = sum([stat(tr).st_size for tr in to_review if tr is not None])
# note that the max for EBI is 10M but let's play it safe
max_size = 8.5e+6 if not test_size else 6000
max_size = 10e+6 if not test_size else 5000
if total_size > max_size:
LogEntry.create(
'Runtime', 'The submission: %d is larger than allowed (%d), will '
Expand All @@ -228,10 +228,12 @@ def submit_EBI(artifact_id, action, send, test=False, test_size=False):
cols_to_drop = cols_to_drop - {'taxon_id', 'scientific_name',
'description'}
all_samples = ebi_submission.sample_template.ebi_sample_accessions
samples = {k: all_samples[k] for k in ebi_submission.samples}
ebi_submission.write_xml_file(
ebi_submission.generate_sample_xml(samples, cols_to_drop),
ebi_submission.sample_xml_fp)
samples = {k: all_samples[k] for k in ebi_submission.samples
if all_samples[k] is None}
if samples:
ebi_submission.write_xml_file(
ebi_submission.generate_sample_xml(samples, cols_to_drop),
ebi_submission.sample_xml_fp)

# now let's recalculate the size to make sure it's fine
new_total_size = sum([stat(tr).st_size
Expand Down
18 changes: 11 additions & 7 deletions qiita_ware/ebi.py
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ def generate_sample_xml(self, samples=None, ignore_columns=None):
The list of samples to be included in the sample xml. If not
provided or an empty list is provided, all the samples are used
ignore_columns : list of str, optional
The list of columns to ignore during submission; helful for when
The list of columns to ignore during submission; helpful for when
the submissions are too large

Returns
Expand All @@ -411,14 +411,18 @@ def generate_sample_xml(self, samples=None, ignore_columns=None):
for sample_name in sorted(samples):
sample_info = dict(self.samples[sample_name])

if self._ebi_sample_accessions[sample_name] is None:
sample = ET.SubElement(sample_set, 'SAMPLE', {
'alias': self._get_sample_alias(sample_name),
'center_name': qiita_config.ebi_center_name}
)
sample_accession = self._ebi_sample_accessions[sample_name]
if self.action in ('ADD', 'VALIDATE'):
if sample_accession is not None:
continue
else:
sample = ET.SubElement(sample_set, 'SAMPLE', {
'alias': self._get_sample_alias(sample_name),
'center_name': qiita_config.ebi_center_name}
)
else:
sample = ET.SubElement(sample_set, 'SAMPLE', {
'accession': self._ebi_sample_accessions[sample_name],
'accession': sample_accession,
'center_name': qiita_config.ebi_center_name}
)

Expand Down
2 changes: 0 additions & 2 deletions qiita_ware/test/test_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,8 +236,6 @@ def test_max_ebiena_curl_error(self):

rmtree(join(self.base_fp, '%d_ebi_submission' % aid), True)

submit_EBI


FASTA_EXAMPLE = """>1.SKB2.640194_1 X orig_bc=X new_bc=X bc_diffs=0
CCACCCAGTAAC
Expand Down
5 changes: 3 additions & 2 deletions qiita_ware/test/test_ebi.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,9 @@ def test_generate_sample_xml(self):

samples = ['1.SKB2.640194', '1.SKB3.640195']
obs = ET.tostring(submission.generate_sample_xml(samples=samples))
exp = ''.join([l.strip() for l in SAMPLEXML.splitlines()])
exp = ('<SAMPLE_SET xmlns:xsi="http://www.w3.org/2001/XMLSchema-'
'instance" xsi:noNamespaceSchemaLocation="ftp://ftp.sra.ebi.ac.'
'uk/meta/xsd/sra_1_3/SRA.sample.xsd" />')
self.assertEqual(obs.decode('ascii'), exp)

# removing samples so test text is easier to read
Expand All @@ -194,7 +196,6 @@ def test_generate_sample_xml(self):
del(submission.samples[k])
del(submission.samples_prep[k])
obs = ET.tostring(submission.generate_sample_xml())
exp = ''.join([l.strip() for l in SAMPLEXML.splitlines()])
self.assertEqual(obs.decode('ascii'), exp)

obs = ET.tostring(submission.generate_sample_xml(samples=[]))
Expand Down