class DwcaHunter::ResourceHowardMoore
Public Class Methods
new(opts = {})
click to toggle source
Calls superclass method
DwcaHunter::Resource::new
# File lib/dwca_hunter/resources/how-moore-birds.rb, line 5 def initialize(opts = {}) @command = "how-moore-birds" @title = "Howard and Moore Complete Checklist of the Birds of the World" @url = "https://uofi.box.com/shared/static/m71m541dr5unc41xzg4y51d92b7wiy2k.csv" @UUID = "85023fe5-bf2a-486b-bdae-3e61cefd41fd" @download_path = File.join(Dir.tmpdir, "dwca_hunter", "how-moore-birds", "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/how-moore-birds.rb, line 23 def download puts "Downloading cached verion of the file." puts "Check https://www.howardandmoore.org/howard-and-moore-database/" puts "If there is a more recent edition" `curl -s -L #{@url} -o #{@download_path}` end
make_dwca()
click to toggle source
# File lib/dwca_hunter/resources/how-moore-birds.rb, line 32 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/how-moore-birds.rb, line 30 def unpack; end
Private Instance Methods
collect_names()
click to toggle source
# File lib/dwca_hunter/resources/how-moore-birds.rb, line 45 def collect_names file = CSV.open(File.join(@download_dir, "data.csv"), headers: true) file.each_with_index do |row, i| kingdom = "Animalia" phylum = "Chordata" klass = "Aves" family = row["FAMILY_NAME"].capitalize genus = row["GENERA_NAME"].capitalize species = row["SPECIES_NAME"] species_au = "#{row['species_author']} #{row['species_rec_year']}".strip subspecies = row["SUB_SPECIES_NAME"] subspecies_au = "#{row['subspecies_author']} #{row['subspecies_rec_year']}".strip code = "ICZN" taxon_id = "gn_#{i + 1}" name_string = species name_string = if subspecies.to_s == "" || name_string.include?(subspecies) "#{name_string} #{species_au}".strip else "#{name_string} #{subspecies} #{subspecies_au}".strip end @names << { taxon_id: taxon_id, name_string: name_string, kingdom: kingdom, phylum: phylum, klass: klass, family: family, genus: genus, code: code } if row["species_english_name"].to_s != "" @vernaculars << { taxon_id: taxon_id, vern: row["species_english_name"], lang: "en" } end if row["species_english_name2"].to_s != "" @vernaculars << { taxon_id: taxon_id, vern: row["species_english_name2"], lang: "en" } end puts "Processed %s names" % i if i % 10_000 == 0 end end
generate_dwca()
click to toggle source
Calls superclass method
DwcaHunter::Resource#generate_dwca
# File lib/dwca_hunter/resources/how-moore-birds.rb, line 116 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/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[: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: [ { last_name: "Christidis" } ], metadata_providers: [ { first_name: "Dmitry", last_name: "Mozzherin", email: "dmozzherin@gmail.com" } ], abstract: "Christidis et al. 2018. The Howard and Moore Complete " \ "Checklist of the Birds of the World, version 4.1 " \ "(Downloadable checklist). " \ "Accessed from https://www.howardandmoore.org.", url: @url } super end
get_names()
click to toggle source
# File lib/dwca_hunter/resources/how-moore-birds.rb, line 40 def get_names Dir.chdir(@download_dir) collect_names end
update_synonym(taxon_id, canonical)
click to toggle source
# File lib/dwca_hunter/resources/how-moore-birds.rb, line 107 def update_synonym(taxon_id, canonical) return unless @synonyms_hash.key?(canonical) @synonyms_hash[canonical].each do |syn| @synonyms << { taxon_id: taxon_id, name_string: syn[:name_string], status: syn[:status] } end end
update_vernacular(taxon_id, canonical)
click to toggle source
# File lib/dwca_hunter/resources/how-moore-birds.rb, line 99 def update_vernacular(taxon_id, canonical) return unless @vernaculars_hash.key?(canonical) @vernaculars_hash[canonical].each do |vern| @vernaculars << { taxon_id: taxon_id, vern: vern } end end