一个小的python库,用于将字符矩阵(对齐)输入和输出panda

pandas-charm的Python项目详细描述


Build statusCoverage statusPyPI statusLicenseDOI

pandas charm是一个小python包,用于获取字符 矩阵(对齐)进出pandas。 使用此库使pandas可以与 BioPythonDendroPy

在下列对象之间转换:

  • Biopython MultipleSeqAlignment<;->;熊猫数据框
  • 树状特征矩阵<;->;熊猫数据框
  • “序列字典”<;->;熊猫数据框

代码已经用Python2.7、3.5和3.6进行了测试。

源存储库:https://github.com/jmenglund/pandas-charm


安装

对于大多数用户来说,最简单的方法可能是安装最新版本 主持于PyPI

$ pip install pandas-charm

该项目位于https://github.com/jmenglund/pandas-charm和 也可以使用git安装:

$ git clone https://github.com/jmenglund/pandas-charm.git
$ cd pandas-charm
$ python setup.py install

您可以考虑安装pandas charm及其所需的python包 在虚拟环境中,以避免系统混乱 python路径。例如参见环境管理系统 conda或包 virtualenv

运行测试

使用pytest

进行测试
$ pytest -v test_pandascharm.py

可以使用以下命令使用Coverage.py计算测试覆盖率:

$ coverage run -m pytest
$ coverage report -m pandascharm.py

代码遵循PEP8中的样式约定,可以检查 使用pycodestyle

$ pycodestyle pandascharm.py test_pandascharm.py setup.py

用法

下面的例子展示了如何使用熊猫的魅力。例如 使用python 3代码编写,但是pandas charm也应该与 Python2.7+。您需要手动安装Biopython和/或Dendropy 开始之前:

$ pip install biopython
$ pip install dendropy

熊猫树状体特征矩阵数据框

>>> importpandasaspd>>> importpandascharmaspc>>> importdendropy>>> dna_string='3 5\nt1  TCCAA\nt2  TGCAA\nt3  TG-AA\n'>>> print(dna_string)3 5
t1  TCCAA
t2  TGCAA
t3  TG-AA

>>> matrix=dendropy.DnaCharacterMatrix.get(... data=dna_string,schema='phylip')>>> df=pc.from_charmatrix(matrix)>>> df  t1 t2 t3
0  T  T  T
1  C  G  G
2  C  C  -
3  A  A  A
4  A  A  A

默认情况下,字符存储为行,序列存储为列 在数据帧中。如果想让行保存序列,只需转置 熊猫中的矩阵:

>>> df.transpose()    0  1  2  3  4
t1  T  C  C  A  A
t2  T  G  C  A  A
t3  T  G  -  A  A

熊猫数据帧到树状体特征矩阵

>>> importpandasaspd>>> importpandascharmaspc>>> importdendropy>>> df=pd.DataFrame({... 't1':['T','C','C','A','A'],... 't2':['T','G','C','A','A'],... 't3':['T','G','-','A','A']})>>> df  t1 t2 t3
0  T  T  T
1  C  G  G
2  C  C  -
3  A  A  A
4  A  A  A

>>> matrix=pc.to_charmatrix(df,data_type='dna')>>> print(matrix.as_string('phylip'))3 5
t1  TCCAA
t2  TGCAA
t3  TG-AA

Biopython MultipleSeqAlignment to Pandas数据框

>>> fromioimportStringIO>>> importpandasaspd>>> importpandascharmaspc>>> fromBioimportAlignIO>>> dna_string='3 5\nt1  TCCAA\nt2  TGCAA\nt3  TG-AA\n'>>> f=StringIO(dna_string)# make the string a file-like object>>> alignment=AlignIO.read(f,'phylip-relaxed')>>> print(alignment)SingleLetterAlphabet() alignment with 3 rows and 5 columns
TCCAA t1
TGCAA t2
TG-AA t3
>>> df=pc.from_bioalignment(alignment)>>> df  t1 t2 t3
0  T  T  T
1  C  G  G
2  C  C  -
3  A  A  A
4  A  A  A

Pandas数据框到Biopython多重定位

>>> importpandasaspd>>> importpandascharmaspc>>> importBio>>> df=pd.DataFrame({... 't1':['T','C','C','A','A'],... 't2':['T','G','C','A','A'],... 't3':['T','G','-','A','A']})>>> df  t1 t2 t3
0  T  T  T
1  C  G  G
2  C  C  -
3  A  A  A
4  A  A  A

>>> alignment=pc.to_bioalignment(df,alphabet='generic_dna')>>> print(alignment)SingleLetterAlphabet() alignment with 3 rows and 5 columns
TCCAA t1
TGCAA t2
TG-AA t3

“序列字典”到pandas数据框

>>> importpandasaspd>>> importpandascharmaspc>>> d={... 't1':'TCCAA',... 't2':'TGCAA',... 't3':'TG-AA'... }>>> df=pc.from_sequence_dict(d)>>> df  t1 t2 t3
0  T  T  T
1  C  G  G
2  C  C  -
3  A  A  A
4  A  A  A

熊猫数据帧到“序列字典”

>>> importpandasaspd>>> importpandascharmaspc>>> df=pd.DataFrame({... 't1':['T','C','C','A','A'],... 't2':['T','G','C','A','A'],... 't3':['T','G','-','A','A']})>>> pc.to_sequence_dict(df){'t1': 'TCCAA', 't2': 'TGCAA', 't3': 'TG-AA'}

名称

熊猫魅力的名字来自熊猫图书馆,还有一个缩写 字符矩阵。

许可证

熊猫的魅力是分布在MIT license

引用

如果你在科学研究中使用这个包产生的结果 出版物,请在文中注明包装名称 引用这个项目的zenodo doi:

DOI

在Zenodo的“引用为”部分选择您喜欢的引用样式 第页。

作者

马库斯·恩格伦德,orcid.org/0000-0003-1688-7112

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么加载个人密钥库需要这么多时间?   当我使用main创建Android应用程序UI时,如何通过java修改它。xml文件?   java Tomcat 6和7:WebappClassLoader:尝试为名称org/apache/openjpa/persistence/osgi/BundleUtils复制类定义   java`parseInt()`和`parseDouble()`throw`NumberFormatExeption`   JavaSpringMongoDB填充引用   在LinuxMint中打开Eclipse时发生java错误;OpenJDK 64位服务器VM警告:忽略选项MaxPermSize=512m;支持在8.0中被删除   使用PKCS7Padding的AES CBC加密在Java和Objective中有不同的结果   java为什么Jackson要用一个以类命名的额外层来包装我的对象?   json在Java中使用parallelStream提取值   JavaSpring存储库自动生成方法:按给定的顶部编号+按字段描述排序选择   java是否有可序列化的标准闭包接口?   .NET与Java在初创公司的web应用程序开发   如何修复java。java中的lang.unsatifiedLinkError   JavaFX+Spring Boot+Hibernate应用程序对多个环境的java支持   自定义视图组中的java更改未呈现