biodiversity 1.0.9 → 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
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: []