一个小的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例外。Lang.Stringindexoutofboundsexception索引超出范围(0)   java Spring引导Freemarker从2.2.0升级失败   重构Java反模式名称?包含对象的对象包含。。。等   用java处理JDBC可能出现的死锁的最佳方法   java无法访问主线程上的数据库,因为它可能会在很长一段时间内锁定UI   java如何将固定大小的画布包装在边框窗格中的滚动窗格居中?   java解析xsd文件后得到空结果   在html页面中表示XML文件的java   socketjava对象流   sql Java越界异常数据库   JavaJBoss7.1.1不会在Mavericks上启动   Twincat ADS事件驱动读取在一段时间后停止工作(Java)   java MyBatis使用生成的ID插入所有   Mojave上缺少MacOS Java控制面板   JavaGuice:如果多次注入相同的依赖项,是否注入了该依赖项的相同实例?