Class: Dratools::AccessionResolver
- Inherits:
-
Object
- Object
- Dratools::AccessionResolver
- Defined in:
- lib/dratools/accession_resolver.rb
Overview
accession を受け取り、DDBJ 上の実ファイル候補へ解決する調停役。
Constant Summary collapse
- FILE_TYPE_SRA =
DdbjRecordFields::FILE_TYPE_SRA
- FILE_TYPE_FASTQ =
DdbjRecordFields::FILE_TYPE_FASTQ
- FILE_TYPE_ALL =
DdbjRecordFields::FILE_TYPE_ALL
Instance Method Summary collapse
- #fetch_record_for(accession) ⇒ Object
-
#initialize(client: DdbjResourceClient.new, resource_type_classifier: AccessionResourceTypeClassifier.new, run_record_collector: nil, download_candidate_builder: DownloadCandidateBuilder.new) ⇒ AccessionResolver
constructor
A new instance of AccessionResolver.
- #resolve_downloads(accession, file_type: FILE_TYPE_SRA) ⇒ Object
- #resolve_downloads_from_record(accession, ddbj_record, file_type: FILE_TYPE_SRA) ⇒ Object
- #resolve_tree(accession, file_type: FILE_TYPE_SRA, tolerant: true, direct_run_fetch_limit: nil) ⇒ Object
- #resolve_tree_from_record(_accession, ddbj_record, file_type: FILE_TYPE_SRA, tolerant: true, direct_run_fetch_limit: nil) ⇒ Object
- #resource_type_for(accession) ⇒ Object
Constructor Details
#initialize(client: DdbjResourceClient.new, resource_type_classifier: AccessionResourceTypeClassifier.new, run_record_collector: nil, download_candidate_builder: DownloadCandidateBuilder.new) ⇒ AccessionResolver
Returns a new instance of AccessionResolver.
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/dratools/accession_resolver.rb', line 18 def initialize( client: DdbjResourceClient.new, resource_type_classifier: AccessionResourceTypeClassifier.new, run_record_collector: nil, download_candidate_builder: DownloadCandidateBuilder.new ) @client = client @resource_type_classifier = resource_type_classifier @run_record_collector = run_record_collector || RunRecordCollector.new(client: client) @download_candidate_builder = download_candidate_builder end |
Instance Method Details
#fetch_record_for(accession) ⇒ Object
70 71 72 73 |
# File 'lib/dratools/accession_resolver.rb', line 70 def fetch_record_for(accession) resource_type = resource_type_for(accession) @client.fetch_resource_record(resource_type, accession) end |
#resolve_downloads(accession, file_type: FILE_TYPE_SRA) ⇒ Object
30 31 32 33 34 |
# File 'lib/dratools/accession_resolver.rb', line 30 def resolve_downloads(accession, file_type: FILE_TYPE_SRA) accession = accession.to_s.upcase ddbj_record = fetch_record_for(accession) resolve_downloads_from_record(accession, ddbj_record, file_type: file_type) end |
#resolve_downloads_from_record(accession, ddbj_record, file_type: FILE_TYPE_SRA) ⇒ Object
36 37 38 39 40 41 42 43 44 |
# File 'lib/dratools/accession_resolver.rb', line 36 def resolve_downloads_from_record(accession, ddbj_record, file_type: FILE_TYPE_SRA) tree = resolve_tree_from_record(accession, ddbj_record, file_type: file_type, tolerant: false) downloads = tree.downloads if downloads.empty? raise NotFoundError, "download URL not found: #{accession.to_s.upcase} (type=#{file_type})" end downloads end |
#resolve_tree(accession, file_type: FILE_TYPE_SRA, tolerant: true, direct_run_fetch_limit: nil) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/dratools/accession_resolver.rb', line 46 def resolve_tree(accession, file_type: FILE_TYPE_SRA, tolerant: true, direct_run_fetch_limit: nil) accession = accession.to_s.upcase ddbj_record = fetch_record_for(accession) resolve_tree_from_record( accession, ddbj_record, file_type: file_type, tolerant: tolerant, direct_run_fetch_limit: direct_run_fetch_limit ) end |
#resolve_tree_from_record(_accession, ddbj_record, file_type: FILE_TYPE_SRA, tolerant: true, direct_run_fetch_limit: nil) ⇒ Object
59 60 61 62 63 64 65 66 67 68 |
# File 'lib/dratools/accession_resolver.rb', line 59 def resolve_tree_from_record(_accession, ddbj_record, file_type: FILE_TYPE_SRA, tolerant: true, direct_run_fetch_limit: nil) tree = @run_record_collector.explore( ddbj_record, tolerant: tolerant, direct_run_fetch_limit: direct_run_fetch_limit ) attach_downloads(tree, file_type: file_type) tree end |
#resource_type_for(accession) ⇒ Object
75 76 77 |
# File 'lib/dratools/accession_resolver.rb', line 75 def resource_type_for(accession) @resource_type_classifier.resource_type_for(accession) end |