Class: Dratools::AccessionResourceTypeClassifier

Inherits:
Object
  • Object
show all
Defined in:
lib/dratools/accession_resource_type_classifier.rb

Overview

accession の接頭辞から DDBJ resource API の type を判定する。

Constant Summary collapse

RUN_PREFIXES =
/\A[DES]RR\d+\z/
EXPERIMENT_PREFIXES =
/\A[DES]RX\d+\z/
SAMPLE_PREFIXES =
/\A[DES]RS\d+\z/
STUDY_PREFIXES =
/\A[DES]RP\d+\z/
SUBMISSION_PREFIXES =
/\A[DES]RA\d+\z/
BIOPROJECT_PREFIXES =
/\APRJ(?:DA|DB|NA|EB)\d+\z/
BIOSAMPLE_PREFIXES =
/\ASAM(?:D|N|EA|EG)?\d+\z/
TYPE_BY_ACCESSION =
[
  [RUN_PREFIXES, DdbjRecordFields::SRA_RUN_RESOURCE_TYPE],
  [EXPERIMENT_PREFIXES, DdbjRecordFields::SRA_EXPERIMENT_RESOURCE_TYPE],
  [SAMPLE_PREFIXES, DdbjRecordFields::SRA_SAMPLE_RESOURCE_TYPE],
  [STUDY_PREFIXES, DdbjRecordFields::SRA_STUDY_RESOURCE_TYPE],
  [SUBMISSION_PREFIXES, DdbjRecordFields::SRA_SUBMISSION_RESOURCE_TYPE],
  [BIOPROJECT_PREFIXES, DdbjRecordFields::BIOPROJECT_RESOURCE_TYPE],
  [BIOSAMPLE_PREFIXES, DdbjRecordFields::BIOSAMPLE_RESOURCE_TYPE]
].freeze

Instance Method Summary collapse

Instance Method Details

#resource_type_for(accession) ⇒ Object



27
28
29
30
31
32
# File 'lib/dratools/accession_resource_type_classifier.rb', line 27

def resource_type_for(accession)
  matching_rule = TYPE_BY_ACCESSION.find { |pattern, _resource_type| pattern.match?(accession) }
  raise UnsupportedAccessionError, "unsupported accession: #{accession}" unless matching_rule

  matching_rule.last
end