分裂科学名称

Hav*_*v0k 6 parsing r bioinformatics julia

科学名称通常由3个信息组成:属,种上皮和作者.一个简单的例子如下:

Acanthus ilicifolius L.

  • 属:Acanthus
  • 物种上皮:ilicifolious
  • 作者:L.

简单.然而,当我们必须处理杂交种,亚种/品种/形态,几个作者和其他不一致时,问题变得更加复杂.在这些情况下,物种名称可能如下所示:

比照 穿心莲(Burm.f.)墙.前Nees

  • cf.:物种未确定100%确定
  • 属:穿心莲
  • 物种上皮:paniculata
  • 作者:( Burm.f.)Wall.前Nees

或这个:

Ipomoea pes-caprae(L.)DC.亚种.brasiliensis(L.)Ooststr.f

  • 属:Ipomea
  • 物种上皮:pes-caprae
  • 物种作者:(L.)DC.
  • 亚种上皮:brasiliensis
  • 亚种作者:(L.)Ooststr.f

我正试图找到一种可靠的解构这些名字的方法.如果if/else语句我可以使用吨写一些hackish代码,但我正在寻找更优雅(和健壮)的东西.我想的是某种解析器的名称类似于解析数学表达式的计算器.不幸的是,我不是最复杂的程序员,我之前也没有写过真正的解析器,也不知道在这种情况下它是否有意义,因为科学名称有很多变化.你认为解决这个问题的最佳方法是什么?首选语言是R,如果它更适合任务,也许也是Julia.

jba*_*ums 15

你很幸运(有点).GBIF有一个名称解析器,并且该taxize包与该gbif_parse函数挂钩到其API .

library(taxize)
gbif_parse(c('Acanthus ilicifolius L.', 
             'cf. Andrographis paniculata (Burm.f.) Wall. ex Nees', 
             'Ipomoea pes-caprae (L.) DC. subsp. brasiliensis (L.) Ooststr.f'))

#                                                   scientificname       type genusorabove specificepithet authorsparsed    authorship                   canonicalname                canonicalnamewithmarker                                 canonicalnamecomplete bracketauthorship infraspecificepithet  rankmarker
# 1                                        Acanthus ilicifolius L. WELLFORMED     Acanthus     ilicifolius          TRUE            L.            Acanthus ilicifolius                   Acanthus ilicifolius                               Acanthus ilicifolius L.              <NA>                 <NA>       <NA>
# 2            cf. Andrographis paniculata (Burm.f.) Wall. ex Nees   INFORMAL Andrographis      paniculata          TRUE Wall. ex Nees         Andrographis paniculata                Andrographis paniculata      Andrographis paniculata (Burm. f.) Wall. ex Nees          Burm. f.                 <NA>       <NA>
# 3 Ipomoea pes-caprae (L.) DC. subsp. brasiliensis (L.) Ooststr.f    SCINAME      Ipomoea      pes-caprae          TRUE     Ooststr.f Ipomoea pes-caprae brasiliensis Ipomoea pes-caprae subsp. brasiliensis Ipomoea pes-caprae subsp. brasiliensis (L.) Ooststr.f                L.         brasiliensis     subsp.
Run Code Online (Sandbox Code Playgroud)

有关详情?gbif_parse,请参阅.您还可以在github上找到GBIF.

taxize也利用了EOL API - 请参阅?gni_parse.