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
Create a new Bio::Reference object from a Hash of values. Data is extracted from the values for keys:
authors - expected value: Array of Strings
title - expected value: String
journal - expected value: String
volume - expected value: Fixnum or String
issue - expected value: Fixnum or String
pages - expected value: String
year - expected value: Fixnum or String
pubmed - expected value: Fixnum or String
medline - expected value: Fixnum or String
abstract - expected value: String
url - expected value: String
mesh - expected value: Array of Strings
affiliations - expected value: Array of Strings
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:
(required) hash: Hash
Returns |
Bio::Reference object |
# File lib/bio/reference.rb, line 133 def initialize(hash) @authors = hash['authors'] || [] # [ "Hoge, J.P.", "Fuga, F.B." ] @title = hash['title'] || '' # "Title of the study." @journal = hash['journal'] || '' # "Theor. J. Hoge" @volume = hash['volume'] || '' # 12 @issue = hash['issue'] || '' # 3 @pages = hash['pages'] || '' # 123-145 @year = hash['year'] || '' # 2001 @pubmed = hash['pubmed'] || '' # 12345678 @medline = hash['medline'] || '' # 98765432 @doi = hash['doi'] @abstract = hash['abstract'] || '' @url = hash['url'] @mesh = hash['mesh'] || [] @embl_gb_record_number = hash['embl_gb_record_number'] || nil @sequence_position = hash['sequence_position'] || nil @comments = hash['comments'] @affiliations = hash['affiliations'] || [] end
If other is equal with the self, returns true. Otherwise, returns false.
Arguments:
(required) other: any object
Returns |
true or false |
# File lib/bio/reference.rb, line 159 def ==(other) return true if super(other) return false unless other.instance_of?(self.class) flag = false [ :authors, :title, :journal, :volume, :issue, :pages, :year, :pubmed, :medline, :doi, :abstract, :url, :mesh, :embl_gb_record_number, :sequence_position, :comments, :affiliations ].each do |m| begin flag = (self.__send__(m) == other.__send__(m)) rescue NoMethodError, ArgumentError, NameError flag = false end break unless flag end flag 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:
(optional) item: label string (default: "PMID:#{pubmed}").
Returns |
# File lib/bio/reference.rb, line 316 def bibitem(item = nil) item = "PMID:#{@pubmed}" unless item pages = @pages.sub('-', '--') return \\bibitem{#{item}} #{@authors.join(', ')} #{@title}, {\\em #{@journal}}, #{@volume}(#{@issue}):#{pages}, #{@year}..enum_for(:each_line).collect {|line| line.strip}.join("\n") 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:
(optional) section: BiBTeX section as String
(optional) label: Label string cited by LaTeX documents.
Default is <tt>"PMID:#{pubmed}"</tt>.
(optional) keywords: Hash of additional keywords,
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 |
# File lib/bio/reference.rb, line 366 def bibtex(section = nil, label = nil, keywords = {}) section = "article" unless section authors = authors_join(' and ', ' and ') thepages = pages.to_s.empty? ? nil : pages.sub(/\-/, '--') unless label then label = "PMID:#{pubmed}" end theurl = if !(url.to_s.empty?) then url elsif pmurl = pubmed_url and !(pmurl.to_s.empty?) then pmurl else nil end hash = { 'author' => authors.empty? ? nil : authors, 'title' => title.to_s.empty? ? nil : title, 'number' => issue.to_s.empty? ? nil : issue, 'pages' => thepages, 'url' => theurl } keys = %( author title journal year volume number pages url ) keys.each do |k| hash[k] = self.__send__(k.intern) unless hash.has_key?(k) end hash.merge!(keywords) { |k, v1, v2| v2.nil? ? v1 : v2 } bib = [ "@#{section}{#{label}," ] keys.concat((hash.keys - keys).sort) keys.each do |kw| ref = hash[kw] bib.push " #{kw.ljust(12)} = {#{ref}}," if ref end bib.push "}\n" return bib.join("\n") 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 |
# File lib/bio/reference.rb, line 560 def cell authors = authors_join(' and ') "#{authors} (#{@year}). #{@title} #{@journal} #{@volume}, #{pages}." 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 |
# File lib/bio/reference.rb, line 518 def current self.genome_biol 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 296 def embl r = self Bio::Sequence::Format::NucFormatter::Embl.new('').instance_eval { reference_format_embl(r) } 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 |
# File lib/bio/reference.rb, line 262 def endnote lines = [] lines << "%0 Journal Article" @authors.each do |author| lines << "%A #{author}" end lines << "%D #{@year}" unless @year.to_s.empty? lines << "%T #{@title}" unless @title.empty? lines << "%J #{@journal}" unless @journal.empty? lines << "%V #{@volume}" unless @volume.to_s.empty? lines << "%N #{@issue}" unless @issue.to_s.empty? lines << "%P #{@pages}" unless @pages.empty? lines << "%M #{@pubmed}" unless @pubmed.to_s.empty? u = @url.to_s.empty? ? pubmed_url : @url lines << "%U #{u}" unless u.empty? lines << "%X #{@abstract}" unless @abstract.empty? @mesh.each do |term| lines << "%K #{term}" end lines << "%+ #{@affiliations.join(' ')}" unless @affiliations.empty? return lines.join("\n") end
Formats the reference in a given style.
Styles:
nil - general
endnote - Endnote
bibitem - Bibitem (option available)
bibtex - BiBTeX (option available)
rd - rd (option available)
nature - Nature (option available)
science - Science
genome_biol - Genome Biology
genome_res - Genome Research
nar - Nucleic Acids Research
current - Current Biology
trends - Trends in *
cell - Cell Press
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:
(optional) style: String with style identifier
(optional) options: Options for styles accepting one
Returns |
# File lib/bio/reference.rb, line 210 def format(style = nil, *options) case style when 'embl' return embl when 'endnote' return endnote when 'bibitem' return bibitem(*options) when 'bibtex' return bibtex(*options) when 'rd' return rd(*options) when /^nature$/ return nature(*options) when /^science$/ return science when /^genome\s*_*biol/ return genome_biol when /^genome\s*_*res/ return genome_res when /^nar$/ return nar when /^current/ return current when /^trends/ return trends when /^cell$/ return cell else return general end 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 |
# File lib/bio/reference.rb, line 410 def general authors = @authors.join(', ') "#{authors} (#{@year}). \"#{@title}\" #{@journal} #{@volume}:#{@pages}." 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 |
# File lib/bio/reference.rb, line 503 def genome_biol authors = @authors.collect {|name| strip_dots(name)}.join(', ') journal = strip_dots(@journal) "#{authors}: #{@title} #{journal} #{@year}, #{@volume}:#{@pages}." 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 |
# File lib/bio/reference.rb, line 532 def genome_res authors = authors_join(' and ') "#{authors} #{@year}.\n #{@title} #{@journal} #{@volume}: #{@pages}." 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 |
# File lib/bio/reference.rb, line 546 def nar authors = authors_join(' and ') "#{authors} (#{@year}) #{@title} #{@journal}, #{@volume}, #{@pages}." 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:
(optional) short: Boolean (default false)
Returns |
# File lib/bio/reference.rb, line 459 def nature(short = false) if short if @authors.size > 4 authors = "#{@authors[0]} et al." elsif @authors.size == 1 authors = "#{@authors[0]}" else authors = authors_join(' & ') end "#{authors} #{@journal} #{@volume}, #{@pages} (#{@year})." else authors = authors_join(' & ') "#{authors} #{@title} #{@journal} #{@volume}, #{@pages} (#{@year})." end end
Returns a valid URL for pubmed records
Returns |
# File lib/bio/reference.rb, line 588 def pubmed_url unless @pubmed.to_s.empty? head = "http://www.ncbi.nlm.nih.gov/pubmed" return "#{head}/#{@pubmed}" end '' 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:
(optional) str: String (default nil)
Returns |
# File lib/bio/reference.rb, line 433 def rd(str = nil) @abstract ||= str lines = [] lines << "== " + @title lines << "* " + authors_join(' and ') lines << "* #{@journal} #{@year} #{@volume}:#{@pages} [PMID:#{@pubmed}]" lines << @abstract return lines.join("\n\n") 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 |
# File lib/bio/reference.rb, line 484 def science if @authors.size > 4 authors = rev_name(@authors[0]) + " et al." else authors = @authors.collect {|name| rev_name(name)}.join(', ') end page_from, = @pages.split('-') "#{authors}, #{@journal} #{@volume} #{page_from} (#{@year})." 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 |
# File lib/bio/reference.rb, line 574 def trends if @authors.size > 2 authors = "#{@authors[0]} et al." elsif @authors.size == 1 authors = "#{@authors[0]}" else authors = authors_join(' and ') end "#{authors} (#{@year}) #{@title} #{@journal} #{@volume}, #{@pages}" end
Generated with the Darkfish Rdoc Generator 2.
Comments for the reference (typically Array of String, or nil)