| 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