基于稀疏支持向量机的细菌致病性分类

bacpacs的Python项目详细描述


BACPACS 0.1.1版
用户指南

概述

bacpacs是一个细菌致病性分类python模块,基于以下论文:"bacpacs–通过稀疏支持向量机进行细菌致病性分类",作者是elan barash、neta sal man、sivan sabato和michal ziv ukelson(已提交)。它可用于使用预先训练的模型进行分类,或用于从序列蛋白质组的标记训练数据生成新模型。培训渠道:

  1. bacpacs从所有训练样本的所有蛋白质中选择10%最长的蛋白质。

  2. 使用cd-hit,bacpacs对所选的蛋白质进行聚类。这将导致 簇或蛋白质家族(pfs)。每个pf由其 最长蛋白质。

  3. 对于训练集中的每个有机体,bacpacs比较 利用cd-hit-2d将生物体的蛋白质转化为pfs的代表。 这将为每个生物体生成一个二元特征向量。这个 向量索引表示不同的pfs。 如果索引i的细胞具有值true,则该生物体具有蛋白质 类似于pfi的代表。否则,单元格的值为false

  4. 训练集中生物的二元特征向量(及其已知的 致病性标签),然后可用于训练线性支持向量机模型(使用l1 作为惩罚的规范)。其他车型也可以接受培训。

  5. < > >

    安装和依赖项

    BACPAC可通过以下三种选择之一安装:

    1. 在Linux终端上运行:$pip install bacpacs(推荐)
    2. 克隆或下载bacpacs github存储库
    3. 克隆或下载bacpacs github存储库并使用下面描述的命令行界面。
    4. < > >

      依赖关系:

      • 操作系统:Linux。cd-hit只在linux操作系统上运行,bacpacs也是如此。

      • cd-hit:bacpacs要求安装cd-hit。还建议将cd-hit添加到path变量中。CD-HIT可以从其官方网站下载。

      • 巨蟒2.7.

      • python包:numpy、scipy、scikit learn和biopython。如果 您缺少一个包,只需使用 pipeasyinstall

      将bacpacs作为python模块运行

      下面是两种可能的bacpac方案的详细运行示例:

      1. 使用bacpacs预训练模型预测数据:bacpacs附带了一个预训练模型,用于bacpacs论文中。预先训练的模型可以很容易地下载和使用。
      2. 训练和使用模型:bacpacs还可用于将一组生物体翻译成一个特征向量,该特征向量可输入支持向量机训练模块,然后将一个测试集翻译成一个使用与训练集相同特征的特征向量。然后,可以使用训练的模型预测测试集中生物体的致病性。训练集和测试集中的生物体都作为生氨基酸fasta文件(faa文件)喂养。
      3. 使用命令行界面训练预测模型。
      4. 通过命令行界面使用bacpacs训练模型进行预测。
      5. < > >

        下面的示例代码应该在Python2.7中使用。代码中显示了每个方法的完整文档。此示例代码可以在示例中找到。 <H2>1。使用bacpacs预训练模型预测数据< H3>端口

        <〔1〕

        importbacpacsfromsklearn.svmimportLinearSVC

        bacpacs预训练模型可以在https://github.com/barahe/bacpacs/tree/master/trained中找到。它也可以直接从python下载和加载,如下所述。

        加载预先训练的模型

        <〔2〕

        bp,clf=bacpacs.load_trained_model(output_dir='out1')

        出[2]

        Retrieving files from github
        Downloading full_bacpacs.pkl
        Downloading linearsvc_full.pkl
        Downloading protein_families
        

        load_trained_model()返回一个bacpacs对象和一个sklearn.svm.linearsvc训练的分类器。我们需要bp进行特征提取,clf进行预测。 这里的"bacpacs"是一个空文件夹,在调用load_trained_model()时创建"out1"。可以根据偏好设置这些名称。现有的输出目录也可以接受,但要注意文件溢出。

        下载玩具数据

        使用真实的数据,或者下载bacpacs toy data(也可以在github上获得):

        <〔3〕

        bacpacs.download_toy_data('.')

        出[3]

        Toy data stored in ./toy
        

        您可以将基因组从toy/train移动到toy/validate,反之亦然,甚至可以删除一些基因组。可以通过将"."替换为所需目标来设置目标文件夹。

        提取供试生物体的特征

        此步骤需要一段时间,具体取决于您的机器:

        <在[ 4 ]中>
        bp.genomes_vs_pfs('toy/validate',n_jobs=0)

        出[4]

        Running genomes against protein families representatives
        Genome cluster files are stored in out1/pred_clusters
        

        genomes_vs_pfs()使用cd-hit-2d对预先建立的蛋白质家族运行所有测试基因组。分配n_jobs=0告诉cd-hit-2d为每个基因组使用所有可用的cpu。然而,基因组是按顺序处理的。在多台机器上运行基因组与pfs()可以节省大量时间。

        接下来,提取特征并将其存储在变量中:

        <〔5〕

        X_pred=bp.extract_features(feats_type='pred')

        从csv文件中读取致病性标签

        read_labels()接受一个包含两列且没有标题的csv文件:第一列应该列出基因组id,第二列应该列出致病性标签。基因组ID应与原始基因组文件名匹配。例如:对于名为org1.faa的基因组文件,csv文件应列出"org1"基因组ID。致病性应为布尔值:对于病原体为true,对于非病原体为false。请注意,我们包含了相应的特征矩阵(x_pred),以确保返回标签的顺序与特征矩阵中基因组的顺序相对应。

        <〔6〕

        y_true=bacpacs.read_labels('toy/labels.csv',X=X_pred)

        预测致病性

        <〔7〕

        importbacpacsfromsklearn.svmimportLinearSVC
        0

        计算精度:

        <〔8〕

        importbacpacsfromsklearn.svmimportLinearSVC
        1

        出[8]

        importbacpacsfromsklearn.svmimportLinearSVC
        2

        或者简单地说:

        <〔9〕

        importbacpacsfromsklearn.svmimportLinearSVC
        3

        出[9]

        importbacpacsfromsklearn.svmimportLinearSVC
        2 <H2>2。培训和使用模型

        进口

        <〔1〕

        importbacpacsfromsklearn.svmimportLinearSVC

        下载玩具数据

        使用您的真实数据,或下载bacpacs toy数据(也可以在github上获得):

        <〔2〕

        bacpacs.download_toy_data('.')

        出[2]

        Toy data stored in ./toy
        

        初始化bacpacs对象

        <〔3〕

        importbacpacsfromsklearn.svmimportLinearSVC
        8

        合并训练数据

        将所有training.faa文件合并为一个大型.faa文件。

        <〔4〕

        importbacpacsfromsklearn.svmimportLinearSVC
        9

        指定输出路径以覆盖默认目标目录。

        出[4]

        bp,clf=bacpacs.load_trained_model(output_dir='out1')
        0

        请注意,可以指定不同的输出路径。

        将合并的文件减少到10%最长的蛋白质

        <〔5〕

        bp,clf=bacpacs.load_trained_model(output_dir='out1')
        1

        出[5]

        bp,clf=bacpacs.load_trained_model(output_dir='out1')
        2

        long_percent可以设置为1到100之间的任何值。如果所要求的百分比不能产生一个整数,则所选择的蛋白质的数量将被舍入。 默认合并路径为<;output_directory>;/merged.faa,默认输出路径为<;output_directory>;/reduced.faa。两者都可以使用"reduce"的适当参数设置。

        将训练蛋白聚类成蛋白质家族

        <〔6〕

        bp,clf=bacpacs.load_trained_model(output_dir='out1')
        3

        输出[6]

        bp,clf=bacpacs.load_trained_model(output_dir='out1')
        4

        如果系统路径中包含cd-hit,则无需提供"cdhit_path"的路径。如果路径中不包含cd hit,则必须提供有效的路径。 注意我们正在使用n_jobs=0,以使用所有可用的CPU。

        提取功能

        <〔7〕

        bp,clf=bacpacs.load_trained_model(output_dir='out1')
        5

        出[7]

        bp,clf=bacpacs.load_trained_model(output_dir='out1')
        6

        <〔8〕

        bp,clf=bacpacs.load_trained_model(output_dir='out1')
        7

        出[8]

        bp,clf=bacpacs.load_trained_model(output_dir='out1')
        8

        <〔9〕

        bp,clf=bacpacs.load_trained_model(output_dir='out1')
        9

        从csv文件中读取致病性标签

        read_labels()接受一个包含两列且没有标题的csv文件:第一列应该列出基因组id,第二列应该列出致病性标签。基因组ID应与原始基因组文件名匹配。例如:对于名为org1.faa的基因组文件,csv文件应列出"org1"基因组ID。致病性应为布尔值:对于病原体为true,对于非病原体为false。请注意,我们包含了相应的特征矩阵(x_train,x_pred),以确保返回的标签集的顺序与特征矩阵中基因组的顺序相对应。

        在[10]中

        Retrieving files from github
        Downloading full_bacpacs.pkl
        Downloading linearsvc_full.pkl
        Downloading protein_families
        
        0

        加载线性SVM对象:

        在[11]中

        Retrieving files from github
        Downloading full_bacpacs.pkl
        Downloading linearsvc_full.pkl
        Downloading protein_families
        
        1

        根据创建的功能和标签进行调整:

        在[12]中

        Retrieving files from github
        Downloading full_bacpacs.pkl
        Downloading linearsvc_full.pkl
        Downloading protein_families
        
        2

        出[12]

        Retrieving files from github
        Downloading full_bacpacs.pkl
        Downloading linearsvc_full.pkl
        Downloading protein_families
        
        3

        计算模型预测的精度:

        在[13]中

        Retrieving files from github
        Downloading full_bacpacs.pkl
        Downloading linearsvc_full.pkl
        Downloading protein_families
        
        4

        出[13]

        importbacpacsfromsklearn.svmimportLinearSVC
        2 <H2>3。使用命令行界面训练预测模型

        bacpac使用命令行的流程与上面描述的将其用作python模块非常相似。 打字< /P>

        <〔1〕

        Retrieving files from github
        Downloading full_bacpacs.pkl
        Downloading linearsvc_full.pkl
        Downloading protein_families
        
        6

        产生:

        出[1]

        Retrieving files from github
        Downloading full_bacpacs.pkl
        Downloading linearsvc_full.pkl
        Downloading protein_families
        
        7

        初始化工作目录

        <〔1〕

        Retrieving files from github
        Downloading full_bacpacs.pkl
        Downloading linearsvc_full.pkl
        Downloading protein_families
        
        8

        出[1]

        Retrieving files from github
        Downloading full_bacpacs.pkl
        Downloading linearsvc_full.pkl
        Downloading protein_families
        
        9

        -w是此bacpac运行的工作目录。json存储在工作目录中,它保存来自所有运行 步骤。工作目录是必需的参数,每次操作都需要传递该参数。

        合并训练数据

        将所有training.faa文件合并为一个大型.faa文件。

        bacpacs项目包括toy.tar.gz文件。使用tar-xzvf toy.tar.gz<;destination>;解压。您可以替换<;destination>; 使用我的BP目录/玩具。我们将在余下的运行示例中使用玩具集。

        <〔2〕

        bacpacs.download_toy_data('.')
        0

        指定输出路径以覆盖默认目标目录。

        出[2]

        bacpacs.download_toy_data('.')
        1

        请注意,可以指定不同的输出路径。

        将合并的文件减少到10%最长的蛋白质

        <〔3〕

        bacpacs.download_toy_data('.')
        2

        出[3]

        bacpacs.download_toy_data('.')
        3

        -r可以设置为1到100之间的任何值。如果所要求的百分比不能产生一个整数,则所选择的蛋白质的数量将被舍入。 默认合并路径为<;工作目录>;/merged.faa,默认输出路径为<;工作目录>;/reduced.faa。两者都可以使用--input--output设置

        将训练蛋白聚类成蛋白质家族

        <〔4〕

        bacpacs.download_toy_data('.')
        4

        出[4]

        bacpacs.download_toy_data('.')
        5

        如果cd-hit包含在系统路径中,则无需提供cd-hit的路径。如果路径中不包括cd hit,则必须使用--cdhit提供有效路径。 请注意,我们使用n_jobs=0来使用所有可用的CPU。

        创建和提取功能

        <〔5〕

        bacpacs.download_toy_data('.')
        6

        出[5]

        bacpacs.download_toy_data('.')
        7

        <〔6〕

        bacpacs.download_toy_data('.')
        8

        输出[6]

        bacpacs.download_toy_data('.')
        9

        <〔7〕

        Toy data stored in ./toy
        
        0

        出[7]

        Toy data stored in ./toy
        
        1

        <〔8〕

        Toy data stored in ./toy
        
        2

        出[8]

        Toy data stored in ./toy
        
        3

        训练线性SVM分类器

        <〔9〕

        Toy data stored in ./toy
        
        4

        注意参数--labels_path(简称-l)。提供的路径包含一个csv文件,该文件有两列,没有 标题:第一列应列出基因组ID,第二列应列出致病性标签。基因组 id应该与原始基因组文件名匹配。例如:对于名为org1.faa的基因组文件,csv文件应该 列出一个"org1"基因组ID。致病性应该是布尔值:对于病原体为真,对于非病原体为假。

        出[9]

        Toy data stored in ./toy
        
        5

        预测验证集致病性标签

        在[10]中

        Toy data stored in ./toy
        
        6

        出[10]

        Toy data stored in ./toy
        
        7 <H2>4。利用bacpacs训练模型预测命令行界面

        初始化工作目录

        <〔1〕

        Toy data stored in ./toy
        
        8

        出[1]

        Toy data stored in ./toy
        
        9

        现在您可以像以前一样简单地继续,而无需进行群集和培训:

        创建和提取功能

        bacpacs项目包括toy.tar.gz文件。使用tar-xzvf toy.tar.gz<;destination>;解压。您可以替换<;destination>; 使用My_BP_Dir2/Toy。我们将在余下的运行示例中使用玩具集。

        <〔2〕

        bp.genomes_vs_pfs('toy/validate',n_jobs=0)
        0

        出[2]

        bp.genomes_vs_pfs('toy/validate',n_jobs=0)
        1

        <〔3〕

        bp.genomes_vs_pfs('toy/validate',n_jobs=0)
        2

        出[3]

        bp.genomes_vs_pfs('toy/validate',n_jobs=0)
        3

        预测验证集致病性标签

        <〔4〕

        bp.genomes_vs_pfs('toy/validate',n_jobs=0)
        4

        出[4]

        bp.genomes_vs_pfs('toy/validate',n_jobs=0)
        5

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

        推荐PyPI第三方库


热门话题
java在通配符泛型类型和泛型类型之间未经检查的强制转换   java Eclipse SWT Hello world教程:无法将显示解析为类型   java如何向远程用户发送注销消息?   java RDD之后的空文件是什么。保存ASTEXTFILE?   用户界面在java中创建一个htmljs UI GCalendar   Java多个哈希映射指向同一个键   Java Dowhile循环不工作?   oraclejava类。组织。阿帕奇。梁sdk。util。UserCodeException:java。sql。SQLException:无法创建PoolableConnectionFactory   java是org类型。日食用户界面。文本编辑器。*看不见   java有没有从弹出窗口复制eclipse中变量值的插件或快捷方式?   java getSubimage为我提供了期望值null   java我想让它变得更简单   swing AWTEventQueue0一直在运行,java中的程序变得非常慢   java Solr实例化类时出错:自定义类   java将ListView适配器移植到RecyclerView适配器   c#测试混合web和桌面应用程序的安全性