通过包含最小散列(用于基因组数据集)快速准确地估计集合相似性。

CMash的Python项目详细描述


#CMASH公司 cmash是一种快速、准确地估计两个集合相似性的方法。这是一种概率数据分析方法,使用包含最小哈希。请参阅[相关文件](http://www.biorxiv.org/content/early/2017/09/04/184150)了解更多详细信息(如果您使用,请注明): >;通过包含索引改进最小散列及其在亚基因组分析中的应用 >;大卫·科斯利基,胡曼·扎贝蒂 BioXIV 184150;DOI:^ {A2}

##安装 最简单的安装方法是使用[virtualenv](https://virtualenv.pypa.io/en/stable/): `bash virtualenv CMashVE source CMashVE/bin/activate pip install -U pip pip install CMash ` 如果不想创建虚拟环境,也可以使用pip install CMash

要获得cmash的绝对最新版本,可以通过以下途径从github存储库构建: `bash virtualenv CMashVE source CMashVE/bin/activate pip install -U pip git clone https://github.com/dkoslicki/CMash.git cd CMash pip install -r requirements.txt `

注意,这个存储库中的python2和python3兼容,但是依赖项khmer在技术上需要python3(但是khmer版本2.1.1在python2中运行得很好。) 外部依赖项pytst需要python2,因此我将此设置为python2存储库。 ##用法 基本的范例是创建一个引用/训练数据库,形成一个bloom过滤器示例,然后查询数据库。

形成参考/培训数据库 假设您有三个引用fasta/q文件:ref1.faref2.faref3.fa在文件(这里称为FileNames.txt)中,放置指向fasta/q文件的绝对路径: `bash cat FileNames.txt # /abs/path/to/ref1.fa # /abs/path/to/ref2.fa # /abs/path/to/ref3.fa ` 然后,您可以通过以下方式创建培训数据库: `bash MakeDNADatabase.py FileNames.txt TrainingDatabase.h5 ` 有关形成数据库时的更多选项,请参见MakeDNADatabase.py -h

####创建示例Bloom筛选器 给定一个(大)查询fasta/q文件Metagenome.fa,您可以选择通过MakeNodeGraph.py Metagenome.fa .创建bloom过滤器。 有关此函数的详细信息,请参见MakeNodeGraph.py -h

严格来说,这一步是不必要的(因为如果您还没有创建nodegraph/bloom过滤器,下一步将自动形成一个nodegraph/bloom过滤器)。 不过,我已经提供了这个脚本,以防你想预先处理一堆元基因组。

####查询数据库 要获取查询文件Metagenome.fa中引用文件的包含和jaccard索引估计值,请使用类似于QueryDNADatabase.py Metagenome.fa TrainingDatabase.h5 Output.csv的内容。

有很多可用的选项:QueryDNADatabase.py -h。输出文件是一个csv文件,其中的行对应于ref1.faref2.fa、和ref3.fa,列对应于包含索引估计、交叉基数和jaccard索引估计。

其他功能 模块MinHash(通过from CMash import MinHash as MH在python中导入)具有更多的功能,包括(但不限于!)以下内容: 一。快速更新培训数据库(通过help(MH.delete_from_database)help(MH.insert_to_database)help(MH.union_databases)) 2能够形成一个Jaccard索引矩阵(用于比较训练数据库中所有生物体的成对Jaccard索引)。这对于识别培训数据库中的冗余/模式/结构非常有用:help(MH.form_jaccard_count_matrix)help(MH.form_jaccard_matrix)。 三。访问MinHash随机选择的k-mers(参见类CountEstimator和相关的_kmers数据结构)

我鼓励您浏览MinHash.py的源代码,并查看脚本。

蛋白质数据库(以及任意k长度字符串)即将推出…

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

推荐PyPI第三方库


热门话题
java如何在jetty请求日志中添加milliscond字段?   java在使用Scanner类从文件读取信息时遇到问题   为什么。类不适用于泛型类型?   SQLite插入上的java空指针异常   java能告诉我们Guava缓存是在禁用统计数据的情况下构建的吗?   java在应用程序中使用常量   java无法使用AutoIT和Selenium Webdriver在所需位置/文件夹保存图像   java如何在jtable中更新jprogress栏   java是比较给定日期和当前日期(在给定时区中没有时间段)的最佳方法   安卓代码中的java错误   java无法访问实体类中的字段   java如何在tomcat中处理三个JDBC连接池?   java无法使用Spring Security保护AngularJS页面   如何在没有TCP/IP协议栈的情况下用Java发送以太帧