class Bio::Reference
DESCRIPTION¶ ↑
A class for journal reference information.
USAGE¶ ↑
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
Attributes
Abstract text in String.
Affiliations in an Array.
Comments for the reference (typically Array of String, or nil)
DOI identifier (typically String, e.g. “10.1126/science.1110418”)
Sequence
number in EMBL/GenBank records
issue number (typically Fixnum)
String with journal name
medline identifier (typically Fixnum)
MeSH terms in an Array.
page range (typically String, e.g. “123-145”)
pubmed identifier (typically Fixnum)
Position in a sequence that this reference refers to
String with title of the study
An URL String.
volume number (typically Fixnum)
year of publication (typically Fixnum)
Public Class Methods
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 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
Public Instance Methods
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 159 def ==(other) 160 return true if super(other) 161 return false unless other.instance_of?(self.class) 162 flag = false 163 [ :authors, :title, :journal, :volume, :issue, :pages, 164 :year, :pubmed, :medline, :doi, :abstract, 165 :url, :mesh, :embl_gb_record_number, 166 :sequence_position, :comments, :affiliations ].each do |m| 167 begin 168 flag = (self.__send__(m) == other.__send__(m)) 169 rescue NoMethodError, ArgumentError, NameError 170 flag = false 171 end 172 break unless flag 173 end 174 flag 175 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
-
String
# File lib/bio/reference.rb 316 def bibitem(item = nil) 317 item = "PMID:#{@pubmed}" unless item 318 pages = @pages.sub('-', '--') 319 return <<-"END".enum_for(:each_line).collect {|line| line.strip}.join("\n") 320 \\bibitem{#{item}} 321 #{@authors.join(', ')} 322 #{@title}, 323 {\\em #{@journal}}, #{@volume}(#{@issue}):#{pages}, #{@year}. 324 END 325 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
-
String
# File lib/bio/reference.rb 366 def bibtex(section = nil, label = nil, keywords = {}) 367 section = "article" unless section 368 authors = authors_join(' and ', ' and ') 369 thepages = pages.to_s.empty? ? nil : pages.sub(/\-/, '--') 370 unless label then 371 label = "PMID:#{pubmed}" 372 end 373 theurl = if !(url.to_s.empty?) then 374 url 375 elsif pmurl = pubmed_url and !(pmurl.to_s.empty?) then 376 pmurl 377 else 378 nil 379 end 380 hash = { 381 'author' => authors.empty? ? nil : authors, 382 'title' => title.to_s.empty? ? nil : title, 383 'number' => issue.to_s.empty? ? nil : issue, 384 'pages' => thepages, 385 'url' => theurl 386 } 387 keys = %w( author title journal year volume number pages url ) 388 keys.each do |k| 389 hash[k] = self.__send__(k.intern) unless hash.has_key?(k) 390 end 391 hash.merge!(keywords) { |k, v1, v2| v2.nil? ? v1 : v2 } 392 bib = [ "@#{section}{#{label}," ] 393 keys.concat((hash.keys - keys).sort) 394 keys.each do |kw| 395 ref = hash[kw] 396 bib.push " #{kw.ljust(12)} = {#{ref}}," if ref 397 end 398 bib.push "}\n" 399 return bib.join("\n") 400 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 560 def cell 561 authors = authors_join(' and ') 562 "#{authors} (#{@year}). #{@title} #{@journal} #{@volume}, #{pages}." 563 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 518 def current 519 self.genome_biol 520 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 296 def embl 297 r = self 298 Bio::Sequence::Format::NucFormatter::Embl.new('').instance_eval { 299 reference_format_embl(r) 300 } 301 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 262 def endnote 263 lines = [] 264 lines << "%0 Journal Article" 265 @authors.each do |author| 266 lines << "%A #{author}" 267 end 268 lines << "%D #{@year}" unless @year.to_s.empty? 269 lines << "%T #{@title}" unless @title.empty? 270 lines << "%J #{@journal}" unless @journal.empty? 271 lines << "%V #{@volume}" unless @volume.to_s.empty? 272 lines << "%N #{@issue}" unless @issue.to_s.empty? 273 lines << "%P #{@pages}" unless @pages.empty? 274 lines << "%M #{@pubmed}" unless @pubmed.to_s.empty? 275 u = @url.to_s.empty? ? pubmed_url : @url 276 lines << "%U #{u}" unless u.empty? 277 lines << "%X #{@abstract}" unless @abstract.empty? 278 @mesh.each do |term| 279 lines << "%K #{term}" 280 end 281 lines << "%+ #{@affiliations.join(' ')}" unless @affiliations.empty? 282 return lines.join("\n") 283 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
-
String
# File lib/bio/reference.rb 210 def format(style = nil, *options) 211 case style 212 when 'embl' 213 return embl 214 when 'endnote' 215 return endnote 216 when 'bibitem' 217 return bibitem(*options) 218 when 'bibtex' 219 return bibtex(*options) 220 when 'rd' 221 return rd(*options) 222 when /^nature$/i 223 return nature(*options) 224 when /^science$/i 225 return science 226 when /^genome\s*_*biol/i 227 return genome_biol 228 when /^genome\s*_*res/i 229 return genome_res 230 when /^nar$/i 231 return nar 232 when /^current/i 233 return current 234 when /^trends/i 235 return trends 236 when /^cell$/i 237 return cell 238 else 239 return general 240 end 241 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 410 def general 411 authors = @authors.join(', ') 412 "#{authors} (#{@year}). \"#{@title}\" #{@journal} #{@volume}:#{@pages}." 413 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 503 def genome_biol 504 authors = @authors.collect {|name| strip_dots(name)}.join(', ') 505 journal = strip_dots(@journal) 506 "#{authors}: #{@title} #{journal} #{@year}, #{@volume}:#{@pages}." 507 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 532 def genome_res 533 authors = authors_join(' and ') 534 "#{authors} #{@year}.\n #{@title} #{@journal} #{@volume}: #{@pages}." 535 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 546 def nar 547 authors = authors_join(' and ') 548 "#{authors} (#{@year}) #{@title} #{@journal}, #{@volume}, #{@pages}." 549 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
-
String
# File lib/bio/reference.rb 459 def nature(short = false) 460 if short 461 if @authors.size > 4 462 authors = "#{@authors[0]} et al." 463 elsif @authors.size == 1 464 authors = "#{@authors[0]}" 465 else 466 authors = authors_join(' & ') 467 end 468 "#{authors} #{@journal} #{@volume}, #{@pages} (#{@year})." 469 else 470 authors = authors_join(' & ') 471 "#{authors} #{@title} #{@journal} #{@volume}, #{@pages} (#{@year})." 472 end 473 end
Returns a valid URL for pubmed records
- Returns
-
String
# File lib/bio/reference.rb 588 def pubmed_url 589 unless @pubmed.to_s.empty? 590 head = "http://www.ncbi.nlm.nih.gov/pubmed" 591 return "#{head}/#{@pubmed}" 592 end 593 '' 594 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
-
String
# File lib/bio/reference.rb 433 def rd(str = nil) 434 @abstract ||= str 435 lines = [] 436 lines << "== " + @title 437 lines << "* " + authors_join(' and ') 438 lines << "* #{@journal} #{@year} #{@volume}:#{@pages} [PMID:#{@pubmed}]" 439 lines << @abstract 440 return lines.join("\n\n") 441 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 484 def science 485 if @authors.size > 4 486 authors = rev_name(@authors[0]) + " et al." 487 else 488 authors = @authors.collect {|name| rev_name(name)}.join(', ') 489 end 490 page_from, = @pages.split('-') 491 "#{authors}, #{@journal} #{@volume} #{page_from} (#{@year})." 492 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 574 def trends 575 if @authors.size > 2 576 authors = "#{@authors[0]} et al." 577 elsif @authors.size == 1 578 authors = "#{@authors[0]}" 579 else 580 authors = authors_join(' and ') 581 end 582 "#{authors} (#{@year}) #{@title} #{@journal} #{@volume}, #{@pages}" 583 end