Skip to content

Commit c2d6dfd

Browse files
committed
Reload failed SequencingExperiment
1 parent 75d0900 commit c2d6dfd

2 files changed

Lines changed: 14 additions & 5 deletions

File tree

app/models/genome/external_resources.rb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ def reload_source_json!
5151
# String (or +nil+)
5252
def external_sra_to_biosample(acc)
5353
sr = SequencingExperiment.by_sra(acc)
54-
sr.reload_metadata! unless sr.metadata_xml.present?
5554
ephemeral_report << (sr.try(:ephemeral_report) || 'No SRA experiments')
5655
sr.try(:biosample_accession)
5756
end
@@ -67,8 +66,7 @@ def external_biosample_to_sra(acc)
6766
ng = Nokogiri::XML(body)
6867
ng.xpath('//result/entries/entry').map do |exp|
6968
sra_acc = exp['acc'] || exp['id'] or next
70-
sr = SequencingExperiment.find_or_create_by(sra_accession: sra_acc)
71-
sr.reload_metadata! unless sr.metadata_xml.present?
69+
sr = SequencingExperiment.by_sra(sra_acc)
7270
ephemeral_report << (sr.try(:ephemeral_report) || 'No SRA experiments')
7371
end
7472
end

app/models/sequencing_experiment.rb

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,15 @@ class SequencingExperiment < ApplicationRecord
1010

1111
class << self
1212
def by_biosample(acc)
13-
SequencingExperiment.where(biosample_accession: acc)
13+
SequencingExperiment
14+
.where(biosample_accession: acc)
15+
.tap(&:load_and_save_metadata!)
1416
end
1517

1618
def by_sra(acc)
17-
SequencingExperiment.find_or_create_by(sra_accession: acc)
19+
SequencingExperiment
20+
.find_or_create_by(sra_accession: acc)
21+
.tap(&:load_and_save_metadata!)
1822
end
1923
end
2024

@@ -61,6 +65,13 @@ def amplicon?
6165
%w[amplicon].include? strategy.downcase
6266
end
6367

68+
def load_and_save_metadata!
69+
unless metadata_xml.present?
70+
reload_metadata!
71+
save
72+
end
73+
end
74+
6475
private
6576

6677
def load_from_sra_accession

0 commit comments

Comments
 (0)