跳转到主要内容

一种用于转换和操作系统发育数据的工具

项目描述

panphylo

PyPI CI

panphylo 是一个免费且开源的系统发育数据转换和操作工具,特别适用于非生物数据集。

Panfilo, from Boccaccio's Decameron, as pictured in Bodleian Library MS. Holkham 49, fol. 148r

有各种类似工具,用于本地和远程执行。panphylo 的特点是专注于非生物起源的系统发育数据,特别是在历史语言学和谱系学领域。标准数据类型是标准,并关注多状态字符,其中最受欢迎的格式之一是文本表格(例如 CSV),这使得与这些领域使用的工具更容易集成。同样,我们的库提供现成的数据操作支持,例如自动二值化(带或不带鉴定字符的添加)、标签适应许多程序的约束(例如,将Unicode序列重新映射到ASCII但保持标识符的唯一性)、删除常量特征、添加鉴定校正字符等。

该库根据受广泛认可的 pandoc 工具的结构组织,该工具用于在文本文档格式之间进行转换,即“过滤器”,将不同的格式转换为具有多状态的内部分布。其他“过滤器”允许将此内部表示转换为不同的格式和方言,执行用户请求的操作。由于相同的数据格式可以指示为输入和输出,因此该工具还可以用于整理现有文件。

该库的名称是对“pandoc”的致敬和参考。它也是对它在谱系学领域的起源的提醒,指的是潘菲洛(“所有之爱者”),博卡丘的《十日谈》中的主要人物之一。本文档中使用的图片取自该作品的抄本,美丽的博德利安图书馆MS. Holkham 49(第148页)。

安装

在任何标准的Python环境中,可以使用以下命令安装panphylo

pip install panphylo

使用panphylo

如果未指定输入文件,则从stdin读取输入。默认情况下,输出到stdout。要输出到文件,请使用-o选项

panphylo -o data.nex data.csv

可以使用命令行选项显式指定输入和输出格式。可以使用-f/--from选项指定输入格式,使用-t/--to选项指定输出格式。因此,要将data.nex从NEXUS转换为PHYLIP,您可以输入:

panphylo -f nexus -t phylip data.nex

支持的输入和输出格式在“选项”部分下列出(有关输入格式,请参阅-f;有关输出格式,请参阅-t)。如果未显式指定输入格式,panphylo将尝试从文件内容中猜测它。如果未指定输出格式,它将尝试从文件扩展名中猜测,默认为CSV。

关于字符编码,panphylo使用UTF-8字符编码进行输出,在大多数情况下将限制为ASCII字符。如果您的本地字符编码不是UTF-8,您应该使用如iconv之类的工具将输出通过管道。可以使用-e选项指定输入编码,如果未提供,则自动检测(使用chardet库)。

panphylo使用的内部表示是专门的多状态表示,即使是从二进制数据转换而来也是如此,并且默认为多状态输出。要二值化数据(或“重新二值化”以允许执行实施的操作),可以使用b选项。

选项

选项 帮助
--input 文件 文件读取输入。如果文件-,则输入将从stdin读取。
-o--output 文件 将输出写入文件而不是stdout。如果文件-,则输出将写入stdout
-b--binarize 二值化输出。是否以及如何添加确定性校正的说明由--ascertainment选项指定。
-f--from 格式 指定输入格式。有效的格式选择为autotabularcsvtsvnexusphylipauto将尝试从文件内容中自动检测格式,而tabular将尝试检测表格文本文件中的分隔符(逗号或制表符)。默认为auto
-t--to 格式 指定输出格式。有效的格式选择为autocsvtsvnexusphylipauto将根据文件扩展名决定格式。默认为csv
-e--encoding 编码 使用Python中的标准字符编码名称指定输入的字符编码。默认为使用chardet库的自动检测。
--i-taxa 标签 输入标签、列或名称用于分类群。如果未提供,库将尝试自动检测。不适用于所有格式。
--i-char 标签 输入标签、列或名称用于特征。如果未提供,库将尝试自动检测。不适用于所有格式。
--i-state 标签 输入状态标签、列或名称。如果没有提供,库将尝试自动检测。不适用于所有格式。
--o-taxa 标签 输出标签、列或名称用于物种。如果没有提供,默认为 "Taxon"。不适用于所有格式。
--o-char 标签 输出标签、列或名称用于特征。如果没有提供,默认为 "Character"。不适用于所有格式。
--o-state 标签 输出标签、列或名称用于状态。如果没有提供,默认为 "State"。不适用于所有格式。
--slug_taxa 级别 物种名称的“简化”(简化)级别。有效的级别选项为 nonesimplefull
--slug_chars 级别 特征名称的“简化”(简化)级别。有效的级别选项为 nonesimplefull
-v--verbosity 级别 设置日志级别。有效的级别选项,遵循 Python logging 库,为 "debug""info""warning""error""critical"

替代方案

如前所述,有许多本地和远程执行的工具与 panphylo 有所重叠。它们通常支持更多格式,并提供更好的遗传数据支持,但并不总是提供数据操作方法,如二值化和去二值化,或标签转换。最常用的工具有

  • 最常用的工具 readseq,可在多个在线界面找到,例如 [https://mafft.cbrc.jp/alignment/server/cgi-bin/readseq.txt] 和 [http://avermitilis.ls.kitasato-u.ac.jp/readseq.cgi]

  • EMBOSS seqret 工具,部分源自 readseq,在线界面为 [https://www.ebi.ac.uk/Tools/sfc/emboss_seqret/]

  • LIRMM 的 Web 界面 [http://phylogeny.lirmm.fr/phylo_cgi/data_converter.cgi]

  • phangorn R 库中的 phyDat 方法,在 [https://rdrr.io/cran/phangorn/man/phyDat.html]

变更日志

版本 0.2

  • 添加 Brython 支持,以在浏览器和 Web 界面中本地运行
  • 输出生成的修正,主要与多状态数据相关(请注意,不建议在多状态数据上运行)

版本 0.1

  • 首次公开发布

社区指南

虽然作者可以直接联系以获得支持,但建议第三方使用 GitHub 标准功能,如问题和拉取请求,以贡献、报告问题或寻求支持。

贡献指南,包括行为准则,可以在 CONTRIBUTING.md 文件中找到。

作者和引用

该库由 Tiago Tresoldi 开发(tiago.tresoldi@lingfil.uu.se)。该库是在 Cultural Evolution of Texts 项目的背景下开发的,并由 Riksbankens Jubileumsfond (协议 ID:MXM19-1087:1)资助。

如果您使用 panphylo,请引用如下

Tresoldi, T. (2022). panphylo: 转换和处理系统发育数据的工具。版本 0.3. 乌普萨拉:乌普萨拉大学

在 BibTeX 中

@misc{Tresoldi2021panphylo,
  url = {https://github.com/tresoldi/panphylo},
  year = {2022},
  author = {Tiago Tresoldi},
  title = {panphylo: a tool for converting and manipulating phylogenetic data. Version 0.3.},
  address = {Uppsala},
  publisher = {Uppsala Universitet}
}

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

panphylo-0.3.tar.gz (23.8 KB 查看散列

上传于

构建版本

panphylo-0.3-py3-none-any.whl (23.8 kB 查看哈希)

上传于 Python 3

支持

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面