Class | Bio::Reference |
In: |
lib/bio/reference.rb
|
Parent: | Object |
A class for journal reference information.
hash = {'authors' => [ "Hoge, J.P.", "Fuga, F.B." ], 'title' => "Title of the study.", 'journal' => "Theor. J. Hoge", 'volume' => 12, 'issue' => 3, 'pages' => "123-145", 'year' => 2001, 'pubmed' => 12345678, 'medline' => 98765432, 'abstract' => "Hoge fuga. ...", 'url' => "http://example.com", 'mesh' => [], 'affiliations' => []} ref = Bio::Reference.new(hash) # Formats in the BiBTeX style. ref.format("bibtex") # Short-cut for Bio::Reference#format("bibtex") ref.bibtex
abstract | [R] | Abstract text in String. |
affiliations | [R] | Affiliations in an Array. |
authors | [R] | Author names in an Array, [ "Hoge, J.P.", "Fuga, F.B." ]. |
comments | [R] | Comments for the reference (typically Array of String, or nil) |
doi | [R] | DOI identifier (typically String, e.g. "10.1126/science.1110418") |
embl_gb_record_number | [R] | Sequence number in EMBL/GenBank records |
issue | [R] | issue number (typically Fixnum) |
journal | [R] | String with journal name |
medline | [R] | medline identifier (typically Fixnum) |
mesh | [R] | MeSH terms in an Array. |
pages | [R] | page range (typically String, e.g. "123-145") |
pubmed | [R] | pubmed identifier (typically Fixnum) |
sequence_position | [R] | Position in a sequence that this reference refers to |
title | [R] | String with title of the study |
url | [R] | An URL String. |
volume | [R] | volume number (typically Fixnum) |
year | [R] | year of publication (typically Fixnum) |
Create a new Bio::Reference object from a Hash of values. Data is extracted from the values for keys:
hash = {'authors' => [ "Hoge, J.P.", "Fuga, F.B." ], 'title' => "Title of the study.", 'journal' => "Theor. J. Hoge", 'volume' => 12, 'issue' => 3, 'pages' => "123-145", 'year' => 2001, 'pubmed' => 12345678, 'medline' => 98765432, 'abstract' => "Hoge fuga. ...", 'url' => "http://example.com", 'mesh' => [], 'affiliations' => []} ref = Bio::Reference.new(hash)
Arguments:
Returns: | Bio::Reference object |
# File lib/bio/reference.rb, line 133 133: def initialize(hash) 134: @authors = hash['authors'] || [] # [ "Hoge, J.P.", "Fuga, F.B." ] 135: @title = hash['title'] || '' # "Title of the study." 136: @journal = hash['journal'] || '' # "Theor. J. Hoge" 137: @volume = hash['volume'] || '' # 12 138: @issue = hash['issue'] || '' # 3 139: @pages = hash['pages'] || '' # 123-145 140: @year = hash['year'] || '' # 2001 141: @pubmed = hash['pubmed'] || '' # 12345678 142: @medline = hash['medline'] || '' # 98765432 143: @doi = hash['doi'] 144: @abstract = hash['abstract'] || '' 145: @url = hash['url'] 146: @mesh = hash['mesh'] || [] 147: @embl_gb_record_number = hash['embl_gb_record_number'] || nil 148: @sequence_position = hash['sequence_position'] || nil 149: @comments = hash['comments'] 150: @affiliations = hash['affiliations'] || [] 151: end
Returns reference formatted in the bibitem style
# ref is a Bio::Reference object puts ref.bibitem \bibitem{PMID:12345678} Hoge, J.P., Fuga, F.B. Title of the study., {\em Theor. J. Hoge}, 12(3):123--145, 2001.
Arguments:
Returns: | String |
# File lib/bio/reference.rb, line 292 292: def bibitem(item = nil) 293: item = "PMID:#{@pubmed}" unless item 294: pages = @pages.sub('-', '--') 295: return "\\\\bibitem{\#{item}}\n\#{@authors.join(', ')}\n\#{@title},\n{\\\\em \#{@journal}}, \#{@volume}(\#{@issue}):\#{pages}, \#{@year}.\n".enum_for(:each_line).collect {|line| line.strip}.join("\n") 296: end
Returns reference formatted in the BiBTeX style.
# ref is a Bio::Reference object puts ref.bibtex @article{PMID:12345678, author = {Hoge, J.P. and Fuga, F.B.}, title = {Title of the study.}, journal = {Theor. J. Hoge}, year = {2001}, volume = {12}, number = {3}, pages = {123--145}, } # using a different section (e.g. "book") # (but not really configured for anything other than articles) puts ref.bibtex("book") @book{PMID:12345678, author = {Hoge, J.P. and Fuga, F.B.}, title = {Title of the study.}, journal = {Theor. J. Hoge}, year = {2001}, volume = {12}, number = {3}, pages = {123--145}, }
Arguments:
Default is <tt>"PMID:#{pubmed}"</tt>.
e.g. { 'abstract' => 'This is abstract.' }. You can also override default keywords. To disable default keywords, specify false as value, e.g. { 'url' => false, 'year' => false }.
Returns: | String |
# File lib/bio/reference.rb, line 343 343: def bibtex(section = nil, label = nil, keywords = {}) 344: section = "article" unless section 345: authors = authors_join(' and ', ' and ') 346: thepages = pages.to_s.empty? ? nil : pages.sub(/\-/, '--') 347: unless label then 348: label = "PMID:#{pubmed}" 349: end 350: theurl = if !(url.to_s.empty?) then 351: url 352: elsif pmurl = pubmed_url and !(pmurl.to_s.empty?) then 353: pmurl 354: else 355: nil 356: end 357: hash = { 358: 'author' => authors.empty? ? nil : authors, 359: 'title' => title.to_s.empty? ? nil : title, 360: 'number' => issue.to_s.empty? ? nil : issue, 361: 'pages' => thepages, 362: 'url' => theurl 363: } 364: keys = %w( author title journal year volume number pages url ) 365: keys.each do |k| 366: hash[k] = self.__send__(k.intern) unless hash.has_key?(k) 367: end 368: hash.merge!(keywords) { |k, v1, v2| v2.nil? ? v1 : v2 } 369: bib = [ "@#{section}{#{label}," ] 370: keys.concat((hash.keys - keys).sort) 371: keys.each do |kw| 372: ref = hash[kw] 373: bib.push " #{kw.ljust(12)} = {#{ref}}," if ref 374: end 375: bib.push "}\n" 376: return bib.join("\n") 377: end
Returns reference formatted in the CELL Press style.
# ref is a Bio::Reference object puts ref.cell Hoge, J.P. and Fuga, F.B. (2001). Title of the study. Theor. J. Hoge 12, 123-145.
Returns: | String |
# File lib/bio/reference.rb, line 537 537: def cell 538: authors = authors_join(' and ') 539: "#{authors} (#{@year}). #{@title} #{@journal} #{@volume}, #{pages}." 540: end
Returns reference formatted in the Current Biology (current-biology.com) style. (Same as the Genome Biology style)
# ref is a Bio::Reference object puts ref.current Hoge JP, Fuga FB: Title of the study. Theor J Hoge 2001, 12:123-145.
Returns: | String |
# File lib/bio/reference.rb, line 495 495: def current 496: self.genome_biol 497: end
Returns reference formatted in the EMBL style.
# ref is a Bio::Reference object puts ref.embl RP 1-1859 RX PUBMED; 1907511. RA Oxtoby E., Dunn M.A., Pancoro A., Hughes M.A.; RT "Nucleotide and derived amino acid sequence of the cyanogenic RT beta-glucosidase (linamarase) from white clover (Trifolium repens L.)"; RL Plant Mol. Biol. 17(2):209-219(1991).
# File lib/bio/reference.rb, line 272 272: def embl 273: r = self 274: Bio::Sequence::Format::NucFormatter::Embl.new('').instance_eval { 275: reference_format_embl(r) 276: } 277: end
Returns reference formatted in the Endnote style.
# ref is a Bio::Reference object puts ref.endnote %0 Journal Article %A Hoge, J.P. %A Fuga, F.B. %D 2001 %T Title of the study. %J Theor. J. Hoge %V 12 %N 3 %P 123-145 %M 12345678 %U http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&dopt=Citation&list_uids=12345678 %X Hoge fuga. ...
Returns: | String |
# File lib/bio/reference.rb, line 238 238: def endnote 239: lines = [] 240: lines << "%0 Journal Article" 241: @authors.each do |author| 242: lines << "%A #{author}" 243: end 244: lines << "%D #{@year}" unless @year.to_s.empty? 245: lines << "%T #{@title}" unless @title.empty? 246: lines << "%J #{@journal}" unless @journal.empty? 247: lines << "%V #{@volume}" unless @volume.to_s.empty? 248: lines << "%N #{@issue}" unless @issue.to_s.empty? 249: lines << "%P #{@pages}" unless @pages.empty? 250: lines << "%M #{@pubmed}" unless @pubmed.to_s.empty? 251: u = @url.empty? ? pubmed_url : @url 252: lines << "%U #{u}" unless u.empty? 253: lines << "%X #{@abstract}" unless @abstract.empty? 254: @mesh.each do |term| 255: lines << "%K #{term}" 256: end 257: lines << "%+ #{@affiliations.join(' ')}" unless @affiliations.empty? 258: return lines.join("\n") 259: end
Formats the reference in a given style.
Styles:
See individual methods for details. Basic usage is:
# ref is Bio::Reference object # using simplest possible call (for general style) puts ref.format # output in Nature style puts ref.format("nature") # alternatively, puts ref.nature # output in Nature short style (see Bio::Reference#nature) puts ref.format("nature",true) # alternatively, puts ref.nature(true)
Arguments:
Returns: | String |
# File lib/bio/reference.rb, line 186 186: def format(style = nil, *options) 187: case style 188: when 'embl' 189: return embl 190: when 'endnote' 191: return endnote 192: when 'bibitem' 193: return bibitem(*options) 194: when 'bibtex' 195: return bibtex(*options) 196: when 'rd' 197: return rd(*options) 198: when /^nature$/i 199: return nature(*options) 200: when /^science$/i 201: return science 202: when /^genome\s*_*biol/i 203: return genome_biol 204: when /^genome\s*_*res/i 205: return genome_res 206: when /^nar$/i 207: return nar 208: when /^current/i 209: return current 210: when /^trends/i 211: return trends 212: when /^cell$/i 213: return cell 214: else 215: return general 216: end 217: end
Returns reference formatted in a general/generic style.
# ref is a Bio::Reference object puts ref.general Hoge, J.P., Fuga, F.B. (2001). "Title of the study." Theor. J. Hoge 12:123-145.
Returns: | String |
# File lib/bio/reference.rb, line 387 387: def general 388: authors = @authors.join(', ') 389: "#{authors} (#{@year}). \"#{@title}\" #{@journal} #{@volume}:#{@pages}." 390: end
Returns reference formatted in the Genome Biology (genomebiology.com) style.
# ref is a Bio::Reference object puts ref.genome_biol Hoge JP, Fuga FB: Title of the study. Theor J Hoge 2001, 12:123-145.
Returns: | String |
# File lib/bio/reference.rb, line 480 480: def genome_biol 481: authors = @authors.collect {|name| strip_dots(name)}.join(', ') 482: journal = strip_dots(@journal) 483: "#{authors}: #{@title} #{journal} #{@year}, #{@volume}:#{@pages}." 484: end
Returns reference formatted in the Genome Research (genome.org) style.
# ref is a Bio::Reference object puts ref.genome_res Hoge, J.P. and Fuga, F.B. 2001. Title of the study. Theor. J. Hoge 12: 123-145.
Returns: | String |
# File lib/bio/reference.rb, line 509 509: def genome_res 510: authors = authors_join(' and ') 511: "#{authors} #{@year}.\n #{@title} #{@journal} #{@volume}: #{@pages}." 512: end
Returns reference formatted in the Nucleic Acids Reseach (nar.oxfordjournals.org) style.
# ref is a Bio::Reference object puts ref.nar Hoge, J.P. and Fuga, F.B. (2001) Title of the study. Theor. J. Hoge, 12, 123-145.
Returns: | String |
# File lib/bio/reference.rb, line 523 523: def nar 524: authors = authors_join(' and ') 525: "#{authors} (#{@year}) #{@title} #{@journal}, #{@volume}, #{@pages}." 526: end
Formats in the Nature Publishing Group (www.nature.com) style.
# ref is a Bio::Reference object puts ref.nature Hoge, J.P. & Fuga, F.B. Title of the study. Theor. J. Hoge 12, 123-145 (2001). # optionally, output short version puts ref.nature(true) # or puts ref.nature(short=true) Hoge, J.P. & Fuga, F.B. Theor. J. Hoge 12, 123-145 (2001).
Arguments:
Returns: | String |
# File lib/bio/reference.rb, line 436 436: def nature(short = false) 437: if short 438: if @authors.size > 4 439: authors = "#{@authors[0]} et al." 440: elsif @authors.size == 1 441: authors = "#{@authors[0]}" 442: else 443: authors = authors_join(' & ') 444: end 445: "#{authors} #{@journal} #{@volume}, #{@pages} (#{@year})." 446: else 447: authors = authors_join(' & ') 448: "#{authors} #{@title} #{@journal} #{@volume}, #{@pages} (#{@year})." 449: end 450: end
Returns a valid URL for pubmed records
Returns: | String |
# File lib/bio/reference.rb, line 565 565: def pubmed_url 566: unless @pubmed.to_s.empty? 567: cgi = "http://www.ncbi.nlm.nih.gov/entrez/query.fcgi" 568: opts = "cmd=Retrieve&db=PubMed&dopt=Citation&list_uids" 569: return "#{cgi}?#{opts}=#{@pubmed}" 570: end 571: '' 572: end
Return reference formatted in the RD style.
# ref is a Bio::Reference object puts ref.rd == Title of the study. * Hoge, J.P. and Fuga, F.B. * Theor. J. Hoge 2001 12:123-145 [PMID:12345678] Hoge fuga. ...
An optional string argument can be supplied, but does nothing.
Arguments:
Returns: | String |
# File lib/bio/reference.rb, line 410 410: def rd(str = nil) 411: @abstract ||= str 412: lines = [] 413: lines << "== " + @title 414: lines << "* " + authors_join(' and ') 415: lines << "* #{@journal} #{@year} #{@volume}:#{@pages} [PMID:#{@pubmed}]" 416: lines << @abstract 417: return lines.join("\n\n") 418: end
Returns reference formatted in the Science style.
# ref is a Bio::Reference object puts ref.science J.P. Hoge, F.B. Fuga, Theor. J. Hoge 12 123 (2001).
Returns: | String |
# File lib/bio/reference.rb, line 461 461: def science 462: if @authors.size > 4 463: authors = rev_name(@authors[0]) + " et al." 464: else 465: authors = @authors.collect {|name| rev_name(name)}.join(', ') 466: end 467: page_from, = @pages.split('-') 468: "#{authors}, #{@journal} #{@volume} #{page_from} (#{@year})." 469: end
Returns reference formatted in the TRENDS style.
# ref is a Bio::Reference object puts ref.trends Hoge, J.P. and Fuga, F.B. (2001) Title of the study. Theor. J. Hoge 12, 123-145
Returns: | String |
# File lib/bio/reference.rb, line 551 551: def trends 552: if @authors.size > 2 553: authors = "#{@authors[0]} et al." 554: elsif @authors.size == 1 555: authors = "#{@authors[0]}" 556: else 557: authors = authors_join(' and ') 558: end 559: "#{authors} (#{@year}) #{@title} #{@journal} #{@volume}, #{@pages}" 560: end