Class | Bio::PubMed |
In: |
lib/bio/io/pubmed.rb
|
Parent: | Bio::NCBI::REST |
The Bio::PubMed class provides several ways to retrieve bibliographic information from the PubMed database at
http://www.ncbi.nlm.nih.gov/sites/entrez?db=PubMed
Basically, two types of queries are possible:
The different methods within the same group are interchangeable and should return the same result.
Additional information about the MEDLINE format and PubMed programmable APIs can be found on the following websites:
http://www.ncbi.nlm.nih.gov/entrez/query/static/overview.html
http://www.ncbi.nlm.nih.gov/entrez/query/static/help/pmhelp.html
http://www.ncbi.nlm.nih.gov/entrez/utils/utils_index.html
http://www.ncbi.nlm.nih.gov/books/bv.fcgi?rid=helplinks.chapter.linkshelp
require 'bio' # If you don't know the pubmed ID: Bio::PubMed.esearch("(genome AND analysis) OR bioinformatics").each do |x| p x end Bio::PubMed.search("(genome AND analysis) OR bioinformatics").each do |x| p x end # To retrieve the MEDLINE entry for a given PubMed ID: puts Bio::PubMed.efetch("10592173", "14693808") puts Bio::PubMed.query("10592173") puts Bio::PubMed.pmfetch("10592173") # This can be converted into a Bio::MEDLINE object: manuscript = Bio::PubMed.query("10592173") medline = Bio::MEDLINE.new(manuscript)
# File lib/bio/io/pubmed.rb, line 200 200: def self.efetch(*args) 201: self.new.efetch(*args) 202: end
# File lib/bio/io/pubmed.rb, line 196 196: def self.esearch(*args) 197: self.new.esearch(*args) 198: end
# File lib/bio/io/pubmed.rb, line 212 212: def self.pmfetch(*args) 213: self.new.pmfetch(*args) 214: end
# File lib/bio/io/pubmed.rb, line 208 208: def self.query(*args) 209: self.new.query(*args) 210: end
# File lib/bio/io/pubmed.rb, line 204 204: def self.search(*args) 205: self.new.search(*args) 206: end
Retrieve PubMed entry by PMID and returns MEDLINE formatted string using entrez efetch. Multiple PubMed IDs can be provided:
Bio::PubMed.efetch(123) Bio::PubMed.efetch([123,456,789])
Arguments:
Returns: | Array of MEDLINE formatted String |
# File lib/bio/io/pubmed.rb, line 117 117: def efetch(ids, hash = {}) 118: opts = { "db" => "pubmed", "rettype" => "medline" } 119: opts.update(hash) 120: super(ids, opts) 121: end
Search the PubMed database by given keywords using E-Utils and returns an array of PubMed IDs.
For information on the possible arguments, see eutils.ncbi.nlm.nih.gov/entrez/query/static/esearch_help.html#PubMed
Arguments:
Returns: | array of PubMed IDs or a number of results |
# File lib/bio/io/pubmed.rb, line 93 93: def esearch(str, hash = {}) 94: opts = { "db" => "pubmed" } 95: opts.update(hash) 96: super(str, opts) 97: end
Retrieve PubMed entry by PMID and returns MEDLINE formatted string using entrez pmfetch.
Arguments:
Returns: | MEDLINE formatted String |
# File lib/bio/io/pubmed.rb, line 179 179: def pmfetch(id) 180: host = "www.ncbi.nlm.nih.gov" 181: path = "/entrez/utils/pmfetch.fcgi?tool=bioruby&mode=text&report=medline&db=PubMed&id=" 182: 183: ncbi_access_wait 184: 185: http = Bio::Command.new_http(host) 186: response = http.get(path + CGI.escape(id.to_s)) 187: result = response.body 188: if result =~ /#{id}\s+Error/ 189: raise( result ) 190: else 191: result = result.gsub("\r", "\n").squeeze("\n").gsub(/<\/?pre>/, '') 192: return result 193: end 194: end
Retrieve PubMed entry by PMID and returns MEDLINE formatted string using entrez query.
Arguments:
Returns: | MEDLINE formatted String |
# File lib/bio/io/pubmed.rb, line 149 149: def query(*ids) 150: host = "www.ncbi.nlm.nih.gov" 151: path = "/sites/entrez?tool=bioruby&cmd=Text&dopt=MEDLINE&db=PubMed&uid=" 152: list = ids.collect { |x| CGI.escape(x.to_s) }.join(",") 153: 154: ncbi_access_wait 155: 156: http = Bio::Command.new_http(host) 157: response = http.get(path + list) 158: result = response.body 159: result = result.scan(/<pre>\s*(.*?)<\/pre>/m).flatten 160: 161: if result =~ /id:.*Error occurred/ 162: # id: xxxxx Error occurred: Article does not exist 163: raise( result ) 164: else 165: if ids.size > 1 166: return result 167: else 168: return result.first 169: end 170: end 171: end
Search the PubMed database by given keywords using entrez query and returns an array of PubMed IDs. Caution: this method returns the first 20 hits only. Instead, use of the ‘esearch’ method is strongly recomended.
Arguments:
Returns: | array of PubMed IDs |
# File lib/bio/io/pubmed.rb, line 130 130: def search(str) 131: host = "www.ncbi.nlm.nih.gov" 132: path = "/sites/entrez?tool=bioruby&cmd=Search&doptcmdl=Brief&db=PubMed&term=" 133: 134: ncbi_access_wait 135: 136: http = Bio::Command.new_http(host) 137: response = http.get(path + CGI.escape(str)) 138: result = response.body 139: result = result.scan(/value="(\d+)" id="UidCheckBox"/m).flatten 140: return result 141: end