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 +1 -1
- data/README.rdoc +5 -3
- data/VERSION +1 -1
- data/lib/biodiversity/parser.rb +1 -1
- data/lib/biodiversity/parser/scientific_name_clean.treetop +3 -3
- data/spec/parser/scientific_name.spec.rb +12 -0
- data/spec/parser/scientific_name_clean.spec.rb +16 -0
- data/spec/parser/scientific_name_dirty.spec.rb +1 -1
- data/spec/parser/test_data.txt +13 -2
- data/spec/parser/todo.txt +28 -0
- metadata +26 -25
data/LICENSE
CHANGED
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
|
34
|
+
the same as above, but infraspecies' rank is shown if available
|
35
35
|
|
36
|
-
|
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" =>
|
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.
|
1
|
+
1.0.10
|
data/lib/biodiversity/parser.rb
CHANGED
@@ -47,7 +47,7 @@ class ParallelParser
|
|
47
47
|
private
|
48
48
|
def parse_process(name)
|
49
49
|
p = ScientificNameParser.new
|
50
|
-
p.parse(name)
|
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:
|
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
|
1036
|
-
|
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
|
data/spec/parser/test_data.txt
CHANGED
@@ -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",
|
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",
|
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:
|
4
|
+
hash: 3
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
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:
|
18
|
+
date: 2012-01-25 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
|
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
|
-
|
31
|
-
name: treetop
|
30
|
+
requirement: *id001
|
32
31
|
prerelease: false
|
32
|
+
name: treetop
|
33
33
|
type: :runtime
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
|
-
|
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
|
-
|
45
|
-
name: parallel
|
44
|
+
requirement: *id002
|
46
45
|
prerelease: false
|
46
|
+
name: parallel
|
47
47
|
type: :runtime
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
|
-
|
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
|
-
|
59
|
-
name: jeweler
|
58
|
+
requirement: *id003
|
60
59
|
prerelease: false
|
60
|
+
name: jeweler
|
61
61
|
type: :development
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
|
-
|
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
|
-
|
73
|
-
name: treetop
|
72
|
+
requirement: *id004
|
74
73
|
prerelease: false
|
74
|
+
name: treetop
|
75
75
|
type: :runtime
|
76
76
|
- !ruby/object:Gem::Dependency
|
77
|
-
|
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
|
-
|
87
|
-
name: parallel
|
86
|
+
requirement: *id005
|
88
87
|
prerelease: false
|
88
|
+
name: parallel
|
89
89
|
type: :runtime
|
90
90
|
- !ruby/object:Gem::Dependency
|
91
|
-
|
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
|
-
|
101
|
-
name: json
|
100
|
+
requirement: *id006
|
102
101
|
prerelease: false
|
102
|
+
name: json
|
103
103
|
type: :runtime
|
104
104
|
- !ruby/object:Gem::Dependency
|
105
|
-
|
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
|
-
|
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: []
|