class DwcaHunter::ResourceIOCWorldBird
Public Class Methods
new(opts = {})
click to toggle source
Calls superclass method
DwcaHunter::Resource::new
# File lib/dwca_hunter/resources/ioc_word_bird.rb, line 5 def initialize(opts = {}) @command = 'ioc-world-bird' @title = 'IOC World Bird List' @url = 'https://uofi.box.com/shared/static/znsd734a78saq87hes979p5uspgkzy93.csv' @UUID = '6421ffec-38e3-40fb-a6d9-af27238a47a1' @download_path = File.join(Dir.tmpdir, 'dwca_hunter', 'ioc-bird', 'data.csv') @synonyms = [] @names = [] @vernaculars = [] @extensions = [] @synonyms_hash = {} @vernaculars_hash = {} super(opts) end
Public Instance Methods
download()
click to toggle source
# File lib/dwca_hunter/resources/ioc_word_bird.rb, line 23 def download puts 'Downloading cached and converted to csv version.' puts 'CHECK FOR NEW VERSION at' puts 'https://www.worldbirdnames.org/ioc-lists/master-list-2/' puts 'Use libreoffice to convert to csv.' `curl -s -L #{@url} -o #{@download_path}` end
make_dwca()
click to toggle source
# File lib/dwca_hunter/resources/ioc_word_bird.rb, line 33 def make_dwca DwcaHunter.logger_write(object_id, 'Extracting data') get_names generate_dwca end
unpack()
click to toggle source
# File lib/dwca_hunter/resources/ioc_word_bird.rb, line 31 def unpack; end
Private Instance Methods
clean(n)
click to toggle source
# File lib/dwca_hunter/resources/ioc_word_bird.rb, line 109 def clean(n) n = n.gsub(/†/, '') n.gsub(/\s+/, ' ') end
collect_names()
click to toggle source
# File lib/dwca_hunter/resources/ioc_word_bird.rb, line 46 def collect_names @names_index = {} file = CSV.open(File.join(@download_dir, 'data.csv'), headers: true) order = '' family = '' genus = '' species = '' count = 0 file.each do |row| order1 = row['Order'] order = order1.capitalize if order1.to_s != '' family1 = row['Family (Scientific)'] family = family1.capitalize if family1.to_s != '' genus1 = row['Genus'] genus = genus1.capitalize if genus1.to_s != '' species1 = row['Species (Scientific)'] species = species1 if species1.to_s != '' subspecies = row['Subspecies'] next if species.to_s == '' count += 1 taxon_id = "gn_#{count}" name = { taxon_id: taxon_id, kingdom: 'Animalia', phylum: 'Chordata', klass: 'Aves', order: order, family: family, genus: genus, code: 'ICZN' } if subspecies.to_s == '' auth = row['Authority'].to_s auth = DwcaHunter.normalize_authors(auth) if auth != '' name[:name_string] = clean( "#{genus} #{species} #{auth}" .strip ) @names << name vernacular = row['Species (English)'] if vernacular.to_s != '' vernaclar = { taxon_id: taxon_id, vern: vernacular, lang: 'en' } @vernaculars << vernaclar end species = '' else name[:name_string] = clean( "#{genus} #{species} #{subspecies} #{row['Authority']}" .strip ) @names << name species = '' subspecies = '' end end end
generate_dwca()
click to toggle source
Calls superclass method
DwcaHunter::Resource#generate_dwca
# File lib/dwca_hunter/resources/ioc_word_bird.rb, line 114 def generate_dwca DwcaHunter.logger_write(object_id, 'Creating DarwinCore Archive file') @core = [['http://rs.tdwg.org/dwc/terms/taxonID', 'http://rs.tdwg.org/dwc/terms/scientificName', 'http://rs.tdwg.org/dwc/terms/kingdom', 'http://rs.tdwg.org/dwc/terms/phylum', 'http://rs.tdwg.org/dwc/terms/class', 'http://rs.tdwg.org/dwc/terms/order', 'http://rs.tdwg.org/dwc/terms/family', 'http://rs.tdwg.org/dwc/terms/genus', 'http://rs.tdwg.org/dwc/terms/nomenclaturalCode']] @names.each do |n| @core << [n[:taxon_id], n[:name_string], n[:kingdom], n[:phylum], n[:klass], n[:order], n[:family], n[:genus], n[:code]] end @extensions << { data: [[ 'http://rs.tdwg.org/dwc/terms/taxonID', 'http://rs.tdwg.org/dwc/terms/vernacularName', 'http://purl.org/dc/terms/language' ]], file_name: 'vernacular_names.txt', row_type: 'http://rs.gbif.org/terms/1.0/VernacularName' } @vernaculars.each do |v| @extensions[-1][:data] << [v[:taxon_id], v[:vern], v[:lang]] end @eml = { id: @uuid, title: @title, authors: [ { first_name: 'Per', last_name: 'Alstrom' }, { first_name: 'Mike', last_name: 'Blair' }, { first_name: 'Rauri', last_name: 'Bowie' }, { first_name: 'Nigel', last_name: 'Redman' }, { first_name: 'Jon', last_name: 'Fjeldsa' }, { first_name: 'Phil', last_name: 'Gregory' }, { first_name: 'Leo', last_name: 'Joseph' }, { first_name: 'Peter', last_name: 'Kovalik' }, { first_name: 'Adolfo', last_name: 'Navarro-Siguenza' }, { first_name: 'David', last_name: 'Parkin' }, { first_name: 'Alan', last_name: 'Peterson' }, { first_name: 'Douglas', last_name: 'Pratt' }, { first_name: 'Pam', last_name: 'Rasmussen' }, { first_name: 'Frank', last_name: 'Rheindt' }, { first_name: 'Robert', last_name: 'Ridgely' }, { first_name: 'Peter', last_name: 'Ryan' }, { first_name: 'George', last_name: 'Sangster' }, { first_name: 'Dick', last_name: 'Schodde' }, { first_name: 'Minturn', last_name: 'Wright' } ], metadata_providers: [ { first_name: 'Dmitry', last_name: 'Mozzherin', email: 'dmozzherin@gmail.com' } ], abstract: 'The IOC World Bird List is an open access resource of ' \ 'the international community of ornithologists.', url: 'https://www.worldbirdnames.org' } super end
get_names()
click to toggle source
# File lib/dwca_hunter/resources/ioc_word_bird.rb, line 41 def get_names Dir.chdir(@download_dir) collect_names end