biodiversity 1.0.9 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009 Dmitry Mozzherin
1
+ Copyright (c) 2009-2012 Marine Biological Laboratory
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.rdoc CHANGED
@@ -31,9 +31,9 @@ to return a canonical form of the name string
31
31
 
32
32
  parserver --output=canonical_with_rank
33
33
 
34
- the same as above, but infracpecies' rank is shown if available
34
+ the same as above, but infraspecies' rank is shown if available
35
35
 
36
- praserver --port 5555
36
+ parserver --port 5555
37
37
 
38
38
  run socket server on a different port
39
39
 
@@ -88,7 +88,9 @@ You can use it as a library
88
88
  # to parse using several CPUs (4 seem to be optimal)
89
89
  parser = ParallelParser.new # ParallelParser.new(4) will try to run 4 processes if hardware allows
90
90
  array_of_names = ["Betula alba", "Homo sapiens"....]
91
- parser.parse(array_of_names) # -> {"Betula alba" => "{scientificName...}", "Homo sapiens" => "{scientificName...}", ...}
91
+ parser.parse(array_of_names) # -> {"Betula alba" => {:scientificName...}, "Homo sapiens" => {:scientificName...}, ...}
92
+
93
+ parallel parser takes list of names and returns back a hash with names as keys and parsed data as values
92
94
 
93
95
  # to resolve lsid and get back RDF file
94
96
  LsidResolver.resolve("urn:lsid:ubio.org:classificationbank:2232671")
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.9
1
+ 1.0.10
@@ -47,7 +47,7 @@ class ParallelParser
47
47
  private
48
48
  def parse_process(name)
49
49
  p = ScientificNameParser.new
50
- p.parse(name).to_json rescue {'scientificName' => {'parsed' => false, 'verbatim' => name, 'error' => 'Parser error'}}.to_json
50
+ p.parse(name) rescue {:scientificName => {:parsed => false, :verbatim => name, :error => 'Parser error'}}
51
51
  end
52
52
  end
53
53
 
@@ -909,7 +909,7 @@ grammar ScientificNameClean
909
909
  end
910
910
 
911
911
  rule author_name
912
- space a:author_name_without_postfix space b:author_postix_word {
912
+ space a:author_name_without_postfix space b:author_postfix_word space !latin_word {
913
913
  def value
914
914
  a.value + ' ' + b.value
915
915
  end
@@ -1032,8 +1032,8 @@ grammar ScientificNameClean
1032
1032
  }
1033
1033
  end
1034
1034
 
1035
- rule author_postix_word
1036
- space ("f."/"filius") space {
1035
+ rule author_postfix_word
1036
+ ("f."/"filius") {
1037
1037
  def value
1038
1038
  text_value.strip
1039
1039
  end
@@ -70,4 +70,16 @@ describe ParallelParser do
70
70
  names.size.should > 100
71
71
  res.keys.size.should == names.size
72
72
  end
73
+
74
+ it "should have parsed name in native ruby format and in returned as a hash with name as a key and parsed data as value" do
75
+ names = []
76
+ read_test_file { |n| names << (n[:name]) if n[:name] }
77
+ names.uniq!
78
+ pparser = ParallelParser.new(4)
79
+ res = pparser.parse(names)
80
+ names.each_with_index do |name, i|
81
+ res[name].is_a?(Hash).should be_true
82
+ res[name][:scientificName][:verbatim].should == name
83
+ end
84
+ end
73
85
  end
@@ -255,7 +255,23 @@ describe ScientificNameClean do
255
255
  sn = "Cassytha peninsularis J. Z. Weber var. flindersii"
256
256
  canonical(sn).should == "Cassytha peninsularis flindersii"
257
257
  sn = "Prunus armeniaca convar. budae (Pénzes) Soó"
258
+
258
259
  canonical(sn).should == "Prunus armeniaca budae"
260
+ sn = "Polypodium pectinatum L. f. typica Rosenst."
261
+ canonical(sn).should == "Polypodium pectinatum typica"
262
+ # might get confused with forma vs filius
263
+ sn = "Polypodium pectinatum L.f. typica Rosenst."
264
+ canonical(sn).should == "Polypodium pectinatum typica"
265
+ sn = "Polypodium pectinatum (L.) f. typica Rosenst."
266
+ canonical(sn).should == "Polypodium pectinatum typica"
267
+ sn = "Polypodium pectinatum L. f., Rosenst."
268
+ canonical(sn).should == "Polypodium pectinatum"
269
+ sn = "Polypodium pectinatum L. f."
270
+ canonical(sn).should == "Polypodium pectinatum"
271
+ sn = "Polypodium pectinatum (L. f.) typica Rosent."
272
+ canonical(sn).should == "Polypodium pectinatum typica"
273
+ sn = "Polypodium pectinatum L. f. thisisjunk Rosent."
274
+ canonical(sn).should == "Polypodium pectinatum thisisjunk"
259
275
  end
260
276
 
261
277
  it 'should parse unknown original authors (auct.)/(hort.)/(?)' do
@@ -93,7 +93,7 @@ describe ScientificNameDirty do
93
93
  end
94
94
 
95
95
  it 'should parse names with "common" utf-8 charactes' do
96
- names = ["Rühlella","Sténométope laevissimus Bibron 1855"].each do |name|
96
+ names = ["Rühlella","Sténométope laevissimus Bibron 1855", "Döringina Ihering 1929"].each do |name|
97
97
  parse(name).should_not be_nil
98
98
  end
99
99
  end
@@ -9,6 +9,7 @@ Pseudocercospora|{"scientificName":{"parsed":true, "parser_version":"test_versio
9
9
 
10
10
  #uninomial with author
11
11
  Pseudocercospora Speg.|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Pseudocercospora Speg.","normalized":"Pseudocercospora Speg.","canonical":"Pseudocercospora","hybrid":false,"details":[{"uninomial":{"string":"Pseudocercospora","authorship":"Speg.","basionymAuthorTeam":{"authorTeam":"Speg.","author":["Speg."]}}}],"positions":{"0":["uninomial",16],"17":["author_word",22]}}}
12
+ Döringina Ihering 1929|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Döringina Ihering 1929", "normalized":"Doringina Ihering 1929", "canonical":"Doringina", "hybrid":false, "details":[{"uninomial":{"string":"Doringina", "authorship":"Ihering 1929", "basionymAuthorTeam":{"authorTeam":"Ihering", "author":["Ihering"], "year":"1929"}}}], "parser_run":2, "positions":{"0":["uninomial", 9], "10":["author_word", 17], "18":["year", 22]}}}
12
13
 
13
14
  #uninomial with author and year
14
15
  Pseudocercospora Speg. 1910|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":1,"verbatim":"Pseudocercospora Speg. 1910","normalized":"Pseudocercospora Speg. 1910","canonical":"Pseudocercospora","hybrid":false,"details":[{"uninomial":{"string":"Pseudocercospora","authorship":"Speg. 1910","basionymAuthorTeam":{"authorTeam":"Speg.","author":["Speg."],"year":"1910"}}}],"positions":{"0":["uninomial",16],"17":["author_word",22],"23":["year",27]}}}
@@ -110,6 +111,13 @@ Sphaerotheca fuliginea f. dahliae Movss. 1967|{"scientificName"
110
111
  Polypodium vulgare nothosubsp. mantoniae (Rothm.) Schidlay|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Polypodium vulgare nothosubsp. mantoniae (Rothm.) Schidlay", "normalized":"Polypodium vulgare nothosubsp. mantoniae (Rothm.) Schidlay", "canonical":"Polypodium vulgare mantoniae", "hybrid":false, "details":[{"genus":{"string":"Polypodium"}, "species":{"string":"vulgare"}, "infraspecies":[{"string":"mantoniae", "rank":"nothosubsp.", "authorship":"(Rothm.) Schidlay", "combinationAuthorTeam":{"authorTeam":"Schidlay", "author":["Schidlay"]}, "basionymAuthorTeam":{"authorTeam":"Rothm.", "author":["Rothm."]}}]}], "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 18], "19":["infraspecific_type", 30], "31":["infraspecies", 40], "42":["author_word", 48], "50":["author_word", 58]}}}
111
112
  Allophylus amazonicus var amazonicus|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Allophylus amazonicus var amazonicus", "normalized":"Allophylus amazonicus var amazonicus", "canonical":"Allophylus amazonicus amazonicus", "hybrid":false, "details":[{"genus":{"string":"Allophylus"}, "species":{"string":"amazonicus"}, "infraspecies":[{"string":"amazonicus", "rank":"var"}]}], "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 21], "22":["infraspecific_type", 25], "26":["infraspecies", 36]}}}
112
113
  Prunus armeniaca convar. budae (Pénzes) Soó|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Prunus armeniaca convar. budae (Pénzes) Soó", "normalized":"Prunus armeniaca convar. budae (Pénzes) Soó", "canonical":"Prunus armeniaca budae", "hybrid":false, "details":[{"genus":{"string":"Prunus"}, "species":{"string":"armeniaca"}, "infraspecies":[{"string":"budae", "rank":"convar.", "authorship":"(Pénzes) Soó", "combinationAuthorTeam":{"authorTeam":"Soó", "author":["Soó"]}, "basionymAuthorTeam":{"authorTeam":"Pénzes", "author":["Pénzes"]}}]}], "parser_run":1, "positions":{"0":["genus", 6], "7":["species", 16], "17":["infraspecific_type", 24], "25":["infraspecies", 30], "32":["author_word", 38], "40":["author_word", 43]}}}
114
+ Polypodium pectinatum (L.) f. typica Rosenst.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Polypodium pectinatum (L.) f. typica Rosenst.", "normalized":"Polypodium pectinatum (L.) f. typica Rosenst.", "canonical":"Polypodium pectinatum typica", "hybrid":false, "details":[{"genus":{"string":"Polypodium"}, "species":{"string":"pectinatum", "authorship":"(L.)", "basionymAuthorTeam":{"authorTeam":"L.", "author":["L."]}}, "infraspecies":[{"string":"typica", "rank":"f.", "authorship":"Rosenst.", "basionymAuthorTeam":{"authorTeam":"Rosenst.", "author":["Rosenst."]}}]}], "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 21], "23":["author_word", 25], "27":["infraspecific_type", 29], "30":["infraspecies", 36], "37":["author_word", 45]}}}
115
+ Polypodium pectinatum L. f. typica Rosenst.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Polypodium pectinatum L. f. typica Rosenst.", "normalized":"Polypodium pectinatum L. f. typica Rosenst.", "canonical":"Polypodium pectinatum typica", "hybrid":false, "details":[{"genus":{"string":"Polypodium"}, "species":{"string":"pectinatum", "authorship":"L.", "basionymAuthorTeam":{"authorTeam":"L.", "author":["L."]}}, "infraspecies":[{"string":"typica", "rank":"f.", "authorship":"Rosenst.", "basionymAuthorTeam":{"authorTeam":"Rosenst.", "author":["Rosenst."]}}]}], "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 21], "22":["author_word", 24], "25":["infraspecific_type", 27], "28":["infraspecies", 34], "35":["author_word", 43]}}}
116
+ # TODO: the following phrasing can be ambiguous. Does f mean forma or filius? Currently capturing it as filius
117
+ Polypodium pectinatum L.f. typica Rosenst.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Polypodium pectinatum L.f. typica Rosenst.", "normalized":"Polypodium pectinatum L.f. typica Rosenst.", "canonical":"Polypodium pectinatum typica", "hybrid":false, "details":[{"genus":{"string":"Polypodium"}, "species":{"string":"pectinatum", "authorship":"L.f.", "basionymAuthorTeam":{"authorTeam":"L.f.", "author":["L.f."]}}, "infraspecies":[{"string":"typica", "rank":"n/a", "authorship":"Rosenst.", "basionymAuthorTeam":{"authorTeam":"Rosenst.", "author":["Rosenst."]}}]}], "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 21], "22":["author_word", 26], "27":["infraspecies", 33], "34":["author_word", 42]}}}
118
+ Polypodium pectinatum L. f. thisisjunk Rosent.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Polypodium pectinatum L. f. thisisjunk Rosent.", "normalized":"Polypodium pectinatum L. f. thisisjunk Rosent.", "canonical":"Polypodium pectinatum thisisjunk", "hybrid":false, "details":[{"genus":{"string":"Polypodium"}, "species":{"string":"pectinatum", "authorship":"L.", "basionymAuthorTeam":{"authorTeam":"L.", "author":["L."]}}, "infraspecies":[{"string":"thisisjunk", "rank":"f.", "authorship":"Rosent.", "basionymAuthorTeam":{"authorTeam":"Rosent.", "author":["Rosent."]}}]}], "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 21], "22":["author_word", 24], "25":["infraspecific_type", 27], "28":["infraspecies", 38], "39":["author_word", 46]}}}
119
+ Polypodium lineare C.Chr. f. caudatoattenuatum Takeda|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Polypodium lineare C.Chr. f. caudatoattenuatum Takeda", "normalized":"Polypodium lineare C.Chr. f. caudatoattenuatum Takeda", "canonical":"Polypodium lineare caudatoattenuatum", "hybrid":false, "details":[{"genus":{"string":"Polypodium"}, "species":{"string":"lineare", "authorship":"C.Chr.", "basionymAuthorTeam":{"authorTeam":"C.Chr.", "author":["C.Chr."]}}, "infraspecies":[{"string":"caudatoattenuatum", "rank":"f.", "authorship":"Takeda", "basionymAuthorTeam":{"authorTeam":"Takeda", "author":["Takeda"]}}]}], "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 18], "19":["author_word", 25], "26":["infraspecific_type", 28], "29":["infraspecies", 46], "47":["author_word", 53]}}}
120
+ Rhododendron weyrichii Maxim. f. albiflorum T.Yamaz.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Rhododendron weyrichii Maxim. f. albiflorum T.Yamaz.", "normalized":"Rhododendron weyrichii Maxim. f. albiflorum T.Yamaz.", "canonical":"Rhododendron weyrichii albiflorum", "hybrid":false, "details":[{"genus":{"string":"Rhododendron"}, "species":{"string":"weyrichii", "authorship":"Maxim.", "basionymAuthorTeam":{"authorTeam":"Maxim.", "author":["Maxim."]}}, "infraspecies":[{"string":"albiflorum", "rank":"f.", "authorship":"T.Yamaz.", "basionymAuthorTeam":{"authorTeam":"T.Yamaz.", "author":["T.Yamaz."]}}]}], "parser_run":1, "positions":{"0":["genus", 12], "13":["species", 22], "23":["author_word", 29], "30":["infraspecific_type", 32], "33":["infraspecies", 43], "44":["author_word", 52]}}}
113
121
 
114
122
  #infraspecies_multiple
115
123
  Hydnellum scrobiculatum var. zonatum f. parvum (Banker) D. Hall & D.E. Stuntz 1972|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Hydnellum scrobiculatum var. zonatum f. parvum (Banker) D. Hall & D.E. Stuntz 1972", "normalized":"Hydnellum scrobiculatum var. zonatum f. parvum (Banker) D. Hall et D.E. Stuntz 1972", "canonical":"Hydnellum scrobiculatum zonatum parvum", "hybrid":false, "details":[{"genus":{"string":"Hydnellum"}, "species":{"string":"scrobiculatum"}, "infraspecies":[{"string":"zonatum", "rank":"var."}, {"string":"parvum", "rank":"f.", "authorship":"(Banker) D. Hall & D.E. Stuntz 1972", "combinationAuthorTeam":{"authorTeam":"D. Hall & D.E. Stuntz", "author":["D. Hall", "D.E. Stuntz"], "year":"1972"}, "basionymAuthorTeam":{"authorTeam":"Banker", "author":["Banker"]}}]}], "parser_run":1, "positions":{"0":["genus", 9], "10":["species", 23], "24":["infraspecific_type", 28], "29":["infraspecies", 36], "37":["infraspecific_type", 39], "40":["infraspecies", 46], "48":["author_word", 54], "56":["author_word", 58], "59":["author_word", 63], "66":["author_word", 70], "71":["author_word", 77], "78":["year", 82]}}}
@@ -277,8 +285,8 @@ Eichornia crassipes ( (Martius) ) Solms-Laub.|{"scientificName":{"parsed":true,
277
285
  Acarospora cratericola 1929|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":2,"verbatim":"Acarospora cratericola 1929","normalized":"Acarospora cratericola 1929","canonical":"Acarospora cratericola","hybrid":false,"details":[{"genus":{"string":"Acarospora"},"species":{"string":"cratericola","year":"1929"}}],"positions":{"0":["genus",10],"11":["species",22],"23":["year",27]}}}
278
286
 
279
287
  #authorship with filius (son of)
280
- Platypus bicaudatulus Schedl f. 1935|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Platypus bicaudatulus Schedl f. 1935", "normalized":"Platypus bicaudatulus Schedl f. 1935", "canonical":"Platypus bicaudatulus", "hybrid":false, "details":[{"genus":{"string":"Platypus"}, "species":{"string":"bicaudatulus", "authorship":"Schedl f. 1935", "basionymAuthorTeam":{"authorTeam":"Schedl f.", "author":["Schedl f."], "year":"1935"}}}], "parser_run":1, "positions":{"0":["genus", 8], "9":["species", 21], "22":["author_word", 28], "29":["author_word", 32], "32":["year", 36]}}}
281
- Platypus bicaudatulus Schedl filius 1935|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Platypus bicaudatulus Schedl filius 1935", "normalized":"Platypus bicaudatulus Schedl filius 1935", "canonical":"Platypus bicaudatulus", "hybrid":false, "details":[{"genus":{"string":"Platypus"}, "species":{"string":"bicaudatulus", "authorship":"Schedl filius 1935", "basionymAuthorTeam":{"authorTeam":"Schedl filius", "author":["Schedl filius"], "year":"1935"}}}], "parser_run":1, "positions":{"0":["genus", 8], "9":["species", 21], "22":["author_word", 28], "29":["author_word", 36], "36":["year", 40]}}}
288
+ Platypus bicaudatulus Schedl f. 1935|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Platypus bicaudatulus Schedl f. 1935", "normalized":"Platypus bicaudatulus Schedl f. 1935", "canonical":"Platypus bicaudatulus", "hybrid":false, "details":[{"genus":{"string":"Platypus"}, "species":{"string":"bicaudatulus", "authorship":"Schedl f. 1935", "basionymAuthorTeam":{"authorTeam":"Schedl f.", "author":["Schedl f."], "year":"1935"}}}], "parser_run":1, "positions":{"0":["genus", 8], "9":["species", 21], "22":["author_word", 28], "29":["author_word", 31], "32":["year", 36]}}}
289
+ Platypus bicaudatulus Schedl filius 1935|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Platypus bicaudatulus Schedl filius 1935", "normalized":"Platypus bicaudatulus Schedl filius 1935", "canonical":"Platypus bicaudatulus", "hybrid":false, "details":[{"genus":{"string":"Platypus"}, "species":{"string":"bicaudatulus", "authorship":"Schedl filius 1935", "basionymAuthorTeam":{"authorTeam":"Schedl filius", "author":["Schedl filius"], "year":"1935"}}}], "parser_run":1, "positions":{"0":["genus", 8], "9":["species", 21], "22":["author_word", 28], "29":["author_word", 35], "36":["year", 40]}}}
282
290
  Fimbristylis ovata (Burm. f.) J. Kern|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Fimbristylis ovata (Burm. f.) J. Kern", "normalized":"Fimbristylis ovata (Burm. f.) J. Kern", "canonical":"Fimbristylis ovata", "hybrid":false, "details":[{"genus":{"string":"Fimbristylis"}, "species":{"string":"ovata", "authorship":"(Burm. f.) J. Kern", "combinationAuthorTeam":{"authorTeam":"J. Kern", "author":["J. Kern"]}, "basionymAuthorTeam":{"authorTeam":"Burm. f.", "author":["Burm. f."]}}}], "parser_run":1, "positions":{"0":["genus", 12], "13":["species", 18], "20":["author_word", 25], "26":["author_word", 28], "30":["author_word", 32], "33":["author_word", 37]}}}
283
291
  Carex chordorrhiza Ehrh. ex L. f.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Carex chordorrhiza Ehrh. ex L. f.", "normalized":"Carex chordorrhiza Ehrh. ex L. f.", "canonical":"Carex chordorrhiza", "hybrid":false, "details":[{"genus":{"string":"Carex"}, "species":{"string":"chordorrhiza", "authorship":"Ehrh. ex L. f.", "basionymAuthorTeam":{"authorTeam":"Ehrh.", "author":["Ehrh."], "exAuthorTeam":{"authorTeam":"L. f.", "author":["L. f."]}}}}], "parser_run":1, "positions":{"0":["genus", 5], "6":["species", 18], "19":["author_word", 24], "28":["author_word", 30], "31":["author_word", 33]}}}
284
292
  Amelanchier arborea var. arborea (Michx. f.) Fernald|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Amelanchier arborea var. arborea (Michx. f.) Fernald", "normalized":"Amelanchier arborea var. arborea (Michx. f.) Fernald", "canonical":"Amelanchier arborea arborea", "hybrid":false, "details":[{"genus":{"string":"Amelanchier"}, "species":{"string":"arborea"}, "infraspecies":[{"string":"arborea", "rank":"var.", "authorship":"(Michx. f.) Fernald", "combinationAuthorTeam":{"authorTeam":"Fernald", "author":["Fernald"]}, "basionymAuthorTeam":{"authorTeam":"Michx. f.", "author":["Michx. f."]}}]}], "parser_run":1, "positions":{"0":["genus", 11], "12":["species", 19], "20":["infraspecific_type", 24], "25":["infraspecies", 32], "34":["author_word", 40], "41":["author_word", 43], "45":["author_word", 52]}}}
@@ -289,6 +297,9 @@ Amelanchier arborea f. hirsuta (Michx. f.) Fernald|{"scientificName":{"parsed":t
289
297
  Betula pendula fo. dalecarlica (L. f.) C.K. Schneid.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Betula pendula fo. dalecarlica (L. f.) C.K. Schneid.", "normalized":"Betula pendula f. dalecarlica (L. f.) C.K. Schneid.", "canonical":"Betula pendula dalecarlica", "hybrid":false, "details":[{"genus":{"string":"Betula"}, "species":{"string":"pendula"}, "infraspecies":[{"string":"dalecarlica", "rank":"f.", "authorship":"(L. f.) C.K. Schneid.", "combinationAuthorTeam":{"authorTeam":"C.K. Schneid.", "author":["C.K. Schneid."]}, "basionymAuthorTeam":{"authorTeam":"L. f.", "author":["L. f."]}}]}], "parser_run":1, "positions":{"0":["genus", 6], "7":["species", 14], "15":["infraspecific_type", 18], "19":["infraspecies", 30], "32":["author_word", 34], "35":["author_word", 37], "39":["author_word", 43], "44":["author_word", 52]}}}
290
298
  Racomitrium canescens f. ericoides (F. Weber ex Brid.) Mönk.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Racomitrium canescens f. ericoides (F. Weber ex Brid.) Mönk.", "normalized":"Racomitrium canescens f. ericoides (F. Weber ex Brid.) Mönk.", "canonical":"Racomitrium canescens ericoides", "hybrid":false, "details":[{"genus":{"string":"Racomitrium"}, "species":{"string":"canescens"}, "infraspecies":[{"string":"ericoides", "rank":"f.", "authorship":"(F. Weber ex Brid.) Mönk.", "combinationAuthorTeam":{"authorTeam":"Mönk.", "author":["Mönk."]}, "basionymAuthorTeam":{"authorTeam":"F. Weber", "author":["F. Weber"], "exAuthorTeam":{"authorTeam":"Brid.", "author":["Brid."]}}}]}], "parser_run":1, "positions":{"0":["genus", 11], "12":["species", 21], "22":["infraspecific_type", 24], "25":["infraspecies", 34], "36":["author_word", 38], "39":["author_word", 44], "48":["author_word", 53], "55":["author_word", 60]}}}
291
299
  Racomitrium canescens forma ericoides (F. Weber ex Brid.) Mönk.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Racomitrium canescens forma ericoides (F. Weber ex Brid.) Mönk.", "normalized":"Racomitrium canescens f. ericoides (F. Weber ex Brid.) Mönk.", "canonical":"Racomitrium canescens ericoides", "hybrid":false, "details":[{"genus":{"string":"Racomitrium"}, "species":{"string":"canescens"}, "infraspecies":[{"string":"ericoides", "rank":"f.", "authorship":"(F. Weber ex Brid.) Mönk.", "combinationAuthorTeam":{"authorTeam":"Mönk.", "author":["Mönk."]}, "basionymAuthorTeam":{"authorTeam":"F. Weber", "author":["F. Weber"], "exAuthorTeam":{"authorTeam":"Brid.", "author":["Brid."]}}}]}], "parser_run":1, "positions":{"0":["genus", 11], "12":["species", 21], "22":["infraspecific_type", 27], "28":["infraspecies", 37], "39":["author_word", 41], "42":["author_word", 47], "51":["author_word", 56], "58":["author_word", 63]}}}
300
+ Polypodium pectinatum L. f., Rosenst.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Polypodium pectinatum L. f., Rosenst.", "normalized":"Polypodium pectinatum L. f., Rosenst.", "canonical":"Polypodium pectinatum", "hybrid":false, "details":[{"genus":{"string":"Polypodium"}, "species":{"string":"pectinatum", "authorship":"L. f., Rosenst.", "basionymAuthorTeam":{"authorTeam":"L. f., Rosenst.", "author":["L. f.", "Rosenst."]}}}], "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 21], "22":["author_word", 24], "25":["author_word", 27], "29":["author_word", 37]}}}
301
+ Polypodium pectinatum L. f.|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Polypodium pectinatum L. f.", "normalized":"Polypodium pectinatum L. f.", "canonical":"Polypodium pectinatum", "hybrid":false, "details":[{"genus":{"string":"Polypodium"}, "species":{"string":"pectinatum", "authorship":"L. f.", "basionymAuthorTeam":{"authorTeam":"L. f.", "author":["L. f."]}}}], "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 21], "22":["author_word", 24], "25":["author_word", 27]}}}
302
+ Polypodium pectinatum (L. f.) typica Rosent|{"scientificName":{"parsed":true, "parser_version":"test_version", "verbatim":"Polypodium pectinatum (L. f.) typica Rosent", "normalized":"Polypodium pectinatum (L. f.) typica Rosent", "canonical":"Polypodium pectinatum typica", "hybrid":false, "details":[{"genus":{"string":"Polypodium"}, "species":{"string":"pectinatum", "authorship":"(L. f.)", "basionymAuthorTeam":{"authorTeam":"L. f.", "author":["L. f."]}}, "infraspecies":[{"string":"typica", "rank":"n/a", "authorship":"Rosent", "basionymAuthorTeam":{"authorTeam":"Rosent", "author":["Rosent"]}}]}], "parser_run":1, "positions":{"0":["genus", 10], "11":["species", 21], "23":["author_word", 25], "26":["author_word", 28], "30":["infraspecies", 36], "37":["author_word", 43]}}}
292
303
 
293
304
  #year range
294
305
  Tridentella tangeroae Bruce, 1987-92|{"scientificName":{"parsed":true, "parser_version":"test_version", "parser_run":2,"verbatim":"Tridentella tangeroae Bruce, 1987-92","normalized":"Tridentella tangeroae Bruce 1987-92","canonical":"Tridentella tangeroae","hybrid":false,"details":[{"genus":{"string":"Tridentella"},"species":{"string":"tangeroae","authorship":"Bruce, 1987-92","basionymAuthorTeam":{"authorTeam":"Bruce","author":["Bruce"],"year":"1987-92"}}}],"positions":{"0":["genus",11],"12":["species",21],"22":["author_word",27],"29":["year",36]}}}
@@ -0,0 +1,28 @@
1
+ Rana aurora Baird and Girard, 1852; H.B. Shaffer et al., 2004 <---- WRONG CANONICAL FORM!!!!!!!!
2
+
3
+ Gemmula cf. cosmoi NP-2008 <--- WRONG CANONICAL FORM
4
+ Eupithecia cf. E. maestosa
5
+ Eupithecia cf. maestosa
6
+ Aleiodes Tetrasphaeropyx chumashanus => Aleiodes [subgenus] chumashanus
7
+
8
+ Cucurbita pepo subsp. ovifera x subsp. fraterna
9
+
10
+ Döringina Ihering 1929 (synonym) Dzzringina
11
+ Doringina Ihering, 1929 (synonym) Döringina
12
+
13
+ Lacanobia nr. subjuncta Bold:Aab, 0925 Lacanobia nr
14
+ Lacanobia sp. nr. subjuncta Bold:Aab, 0925 Lacanobia sp
15
+
16
+ Agropyron pectiniforme var. karabaljikji ined.? Agropyron pectiniforme
17
+ Shaanxilithes Xing, Yue & Zhang, 1984 Shaanxilithes ing
18
+ Parapandorina Xue, Tang, Yu & Zhou 1995 Parapandorina ue
19
+
20
+ Potamogeton iilinoensis var. ventanicola (Hicken) Horn af Rantzien Potamogeton iilinoensis var. ventanicola af
21
+ Rhododendron weyrichii Maxim. f. albiflorum T.Yamaz. Rhododendron
22
+
23
+ Polypodium pectinatum L. f. typica Rosenst. Polypodium
24
+ Polypodium lineare C.Chr. f. caudatoattenuatum Takeda Polypodium
25
+
26
+
27
+ Rosa gallica × tomentosa var. eglandulosa R.Keller Rosa gallica
28
+ Rosa gallica × afzeliana subsp. vosagiaca forma subcomplicata R.Keller Rosa gallica
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: biodiversity
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 9
10
- version: 1.0.9
9
+ - 10
10
+ version: 1.0.10
11
11
  platform: ruby
12
12
  authors:
13
13
  - Dmitry Mozzherin
@@ -15,10 +15,10 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-11-30 00:00:00 Z
18
+ date: 2012-01-25 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- requirement: &id001 !ruby/object:Gem::Requirement
21
+ version_requirements: &id001 !ruby/object:Gem::Requirement
22
22
  none: false
23
23
  requirements:
24
24
  - - ">="
@@ -27,12 +27,12 @@ dependencies:
27
27
  segments:
28
28
  - 0
29
29
  version: "0"
30
- version_requirements: *id001
31
- name: treetop
30
+ requirement: *id001
32
31
  prerelease: false
32
+ name: treetop
33
33
  type: :runtime
34
34
  - !ruby/object:Gem::Dependency
35
- requirement: &id002 !ruby/object:Gem::Requirement
35
+ version_requirements: &id002 !ruby/object:Gem::Requirement
36
36
  none: false
37
37
  requirements:
38
38
  - - ">="
@@ -41,12 +41,12 @@ dependencies:
41
41
  segments:
42
42
  - 0
43
43
  version: "0"
44
- version_requirements: *id002
45
- name: parallel
44
+ requirement: *id002
46
45
  prerelease: false
46
+ name: parallel
47
47
  type: :runtime
48
48
  - !ruby/object:Gem::Dependency
49
- requirement: &id003 !ruby/object:Gem::Requirement
49
+ version_requirements: &id003 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ">="
@@ -55,12 +55,12 @@ dependencies:
55
55
  segments:
56
56
  - 0
57
57
  version: "0"
58
- version_requirements: *id003
59
- name: jeweler
58
+ requirement: *id003
60
59
  prerelease: false
60
+ name: jeweler
61
61
  type: :development
62
62
  - !ruby/object:Gem::Dependency
63
- requirement: &id004 !ruby/object:Gem::Requirement
63
+ version_requirements: &id004 !ruby/object:Gem::Requirement
64
64
  none: false
65
65
  requirements:
66
66
  - - ">="
@@ -69,12 +69,12 @@ dependencies:
69
69
  segments:
70
70
  - 0
71
71
  version: "0"
72
- version_requirements: *id004
73
- name: treetop
72
+ requirement: *id004
74
73
  prerelease: false
74
+ name: treetop
75
75
  type: :runtime
76
76
  - !ruby/object:Gem::Dependency
77
- requirement: &id005 !ruby/object:Gem::Requirement
77
+ version_requirements: &id005 !ruby/object:Gem::Requirement
78
78
  none: false
79
79
  requirements:
80
80
  - - ">="
@@ -83,12 +83,12 @@ dependencies:
83
83
  segments:
84
84
  - 0
85
85
  version: "0"
86
- version_requirements: *id005
87
- name: parallel
86
+ requirement: *id005
88
87
  prerelease: false
88
+ name: parallel
89
89
  type: :runtime
90
90
  - !ruby/object:Gem::Dependency
91
- requirement: &id006 !ruby/object:Gem::Requirement
91
+ version_requirements: &id006 !ruby/object:Gem::Requirement
92
92
  none: false
93
93
  requirements:
94
94
  - - ">="
@@ -97,12 +97,12 @@ dependencies:
97
97
  segments:
98
98
  - 0
99
99
  version: "0"
100
- version_requirements: *id006
101
- name: json
100
+ requirement: *id006
102
101
  prerelease: false
102
+ name: json
103
103
  type: :runtime
104
104
  - !ruby/object:Gem::Dependency
105
- requirement: &id007 !ruby/object:Gem::Requirement
105
+ version_requirements: &id007 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ">="
@@ -111,9 +111,9 @@ dependencies:
111
111
  segments:
112
112
  - 0
113
113
  version: "0"
114
- version_requirements: *id007
115
- name: rspec
114
+ requirement: *id007
116
115
  prerelease: false
116
+ name: rspec
117
117
  type: :development
118
118
  description: Tools for biodiversity informatics
119
119
  email: dmozzherin@gmail.com
@@ -154,6 +154,7 @@ files:
154
154
  - spec/parser/scientific_name_dirty.spec.rb
155
155
  - spec/parser/spec_helper.rb
156
156
  - spec/parser/test_data.txt
157
+ - spec/parser/todo.txt
157
158
  - spec/spec_helper.rb
158
159
  homepage: http://github.com/GlobalNamesArchitecture/biodiversity
159
160
  licenses: []