This module defines a common framework among GenBank, GenPept, RefSeq, and DDBJ. For more details, see the documentations in each genbank/*.rb files.
Returns the first part of the VERSION record as "ACCESSION.VERSION" String.
# File lib/bio/db/genbank/common.rb, line 57 def acc_version versions.first.to_s end
Returns the ACCESSION part of the acc_version.
# File lib/bio/db/genbank/common.rb, line 62 def accession acc_version.split(/\./).first.to_s end
ACCESSION -- Returns contents of the ACCESSION record as an Array.
# File lib/bio/db/genbank/common.rb, line 46 def accessions field_fetch('ACCESSION').strip.split(/\s+/) end
# File lib/bio/db/genbank/common.rb, line 120 def common_name source['common_name'] end
DEFINITION -- Returns contents of the DEFINITION record as a String.
# File lib/bio/db/genbank/common.rb, line 40 def definition field_fetch('DEFINITION') end
FEATURES -- Returns contents of the FEATURES record as an array of Bio::Feature objects.
# File lib/bio/db/genbank/common.rb, line 209 def features unless @data['FEATURES'] ary = [] in_quote = false get('FEATURES').each_line do |line| next if line =~ /^FEATURES/ # feature type (source, CDS, ...) head = line[0,20].to_s.strip # feature value (position or /qualifier=) body = line[20,60].to_s.chomp # sub-array [ feature type, position, /q="data", ... ] if line =~ /^ {5}\S/ ary.push([ head, body ]) # feature qualifier start (/q="data..., /q="data...", /q=data, /q) elsif body =~ /^ \// and not in_quote # gb:IRO125195 ary.last.push(body) # flag for open quote (/q="data...) if body =~ /="/ and body !~ /"$/ in_quote = true end # feature qualifier continued (...data..., ...data...") else ary.last.last << body # flag for closing quote (/q="data... lines ...") if body =~ /"$/ in_quote = false end end end ary.collect! do |subary| parse_qualifiers(subary) end @data['FEATURES'] = ary.extend(Bio::Features::BackwardCompatibility) end if block_given? @data['FEATURES'].each do |f| yield f end else @data['FEATURES'] end end
Returns the second part of the VERSION record as a "GI:#######" String.
# File lib/bio/db/genbank/common.rb, line 72 def gi versions.last end
KEYWORDS -- Returns contents of the KEYWORDS record as an Array of Strings.
# File lib/bio/db/genbank/common.rb, line 84 def keywords @data['KEYWORDS'] ||= fetch('KEYWORDS').chomp('.').split(/; /) end
LOCUS -- Locus class must be defined in child classes.
# File lib/bio/db/genbank/common.rb, line 35 def locus # must be overrided in each subclass end
NID -- Returns contents of the NID record as a String.
# File lib/bio/db/genbank/common.rb, line 78 def nid field_fetch('NID') end
# File lib/bio/db/genbank/common.rb, line 125 def organism source['organism'] end
ORIGIN -- Returns contents of the ORIGIN record as a String.
# File lib/bio/db/genbank/common.rb, line 263 def origin unless @data['ORIGIN'] ori, seqstr = get('ORIGIN').split("\n", 2) seqstr ||= "" @data['ORIGIN'] = truncate(tag_cut(ori)) @data['SEQUENCE'] = seqstr.tr("0-9 \t\n\r\/", '') end @data['ORIGIN'] end
REFERENCE -- Returns contents of the REFERENCE records as an Array of Bio::Reference objects.
# File lib/bio/db/genbank/common.rb, line 136 def references unless @data['REFERENCE'] ary = [] toptag2array(get('REFERENCE')).each do |ref| hash = Hash.new subtag2array(ref).each do |field| case tag_get(field) when /REFERENCE/ if /(\d+)(\s*\((.+)\))?/ =~ tag_cut(field) then hash['embl_gb_record_number'] = $1.to_i if $3 and $3 != 'sites' then seqpos = $3 seqpos.sub!(/\A\s*bases\s+/, '') seqpos.gsub!(/(\d+)\s+to\s+(\d+)/, "\\1-\\2") seqpos.gsub!(/\s*\;\s*/, ', ') hash['sequence_position'] = seqpos end end when /AUTHORS/ authors = truncate(tag_cut(field)) authors = authors.split(/, /) authors[-1] = authors[-1].split(/\s+and\s+/) if authors[-1] authors = authors.flatten.map { |a| a.sub(/,/, ', ') } hash['authors'] = authors when /TITLE/ hash['title'] = truncate(tag_cut(field)) # CHECK Actually GenBank is not demanding for dot at the end of TITLE #+ '.' when /JOURNAL/ journal = truncate(tag_cut(field)) if journal =~ /(.*) (\d+) \((\d+)\), (\d+-\d+) \((\d+)\)$/ hash['journal'] = $1 hash['volume'] = $2 hash['issue'] = $3 hash['pages'] = $4 hash['year'] = $5 else hash['journal'] = journal end when /MEDLINE/ hash['medline'] = truncate(tag_cut(field)) when /PUBMED/ hash['pubmed'] = truncate(tag_cut(field)) when /REMARK/ hash['comments'] ||= [] hash['comments'].push truncate(tag_cut(field)) end end ary.push(Reference.new(hash)) end @data['REFERENCE'] = ary.extend(Bio::References::BackwardCompatibility) end if block_given? @data['REFERENCE'].each do |r| yield r end else @data['REFERENCE'] end end
SEGMENT -- Returns contents of the SEGMENT record as a "m/n" form String.
# File lib/bio/db/genbank/common.rb, line 90 def segment @data['SEGMENT'] ||= fetch('SEGMENT').scan(/\d+/).join("/") end
SOURCE -- Returns contents of the SOURCE record as a Hash.
# File lib/bio/db/genbank/common.rb, line 96 def source unless @data['SOURCE'] name, org = get('SOURCE').split('ORGANISM') org ||= "" if org[/\S+;/] organism = $` taxonomy = $& + $' elsif org[/\S+\./] # rs:NC_001741 organism = $` taxonomy = $& + $' else organism = org taxonomy = '' end @data['SOURCE'] = { 'common_name' => truncate(tag_cut(name)), 'organism' => truncate(organism), 'taxonomy' => truncate(taxonomy), } @data['SOURCE'].default = '' end @data['SOURCE'] end
# File lib/bio/db/genbank/common.rb, line 129 def taxonomy source['taxonomy'] end
Returns the VERSION part of the acc_version as a Fixnum
# File lib/bio/db/genbank/common.rb, line 67 def version acc_version.split(/\./).last.to_i end
Generated with the Darkfish Rdoc Generator 2.
COMMENT -- Returns contents of the COMMENT record as a String.