基于稀疏支持向量机的细菌致病性分类
bacpacs的Python项目详细描述
BACPACS 0.1.1版
用户指南
概述
bacpacs是一个细菌致病性分类python模块,基于以下论文:"bacpacs–通过稀疏支持向量机进行细菌致病性分类",作者是elan barash、neta sal man、sivan sabato和michal ziv ukelson(已提交)。它可用于使用预先训练的模型进行分类,或用于从序列蛋白质组的标记训练数据生成新模型。培训渠道:
bacpacs从所有训练样本的所有蛋白质中选择10%最长的蛋白质。
使用cd-hit,bacpacs对所选的蛋白质进行聚类。这将导致 簇或蛋白质家族(pfs)。每个pf由其 最长蛋白质。
对于训练集中的每个有机体,bacpacs比较 利用cd-hit-2d将生物体的蛋白质转化为pfs的代表。 这将为每个生物体生成一个二元特征向量。这个 向量索引表示不同的pfs。 如果索引i的细胞具有值
true
,则该生物体具有蛋白质 类似于pfi的代表。否则,单元格的值为false
训练集中生物的二元特征向量(及其已知的 致病性标签),然后可用于训练线性支持向量机模型(使用l1 作为惩罚的规范)。其他车型也可以接受培训。
< > >- 在Linux终端上运行:
$pip install bacpacs
(推荐) - 克隆或下载bacpacs github存储库
- 克隆或下载bacpacs github存储库并使用下面描述的命令行界面。 < > >
操作系统:Linux。cd-hit只在linux操作系统上运行,bacpacs也是如此。
cd-hit:bacpacs要求安装cd-hit。还建议将cd-hit添加到path变量中。CD-HIT可以从其官方网站下载。
巨蟒2.7.
python包:numpy、scipy、scikit learn和biopython。如果 您缺少一个包,只需使用 pip或 easyinstall
- 使用bacpacs预训练模型预测数据:bacpacs附带了一个预训练模型,用于bacpacs论文中。预先训练的模型可以很容易地下载和使用。
- 训练和使用模型:bacpacs还可用于将一组生物体翻译成一个特征向量,该特征向量可输入支持向量机训练模块,然后将一个测试集翻译成一个使用与训练集相同特征的特征向量。然后,可以使用训练的模型预测测试集中生物体的致病性。训练集和测试集中的生物体都作为生氨基酸fasta文件(faa文件)喂养。
- 使用命令行界面训练预测模型。
- 通过命令行界面使用bacpacs训练模型进行预测。 < > >
安装和依赖项
BACPAC可通过以下三种选择之一安装:
依赖关系:
将bacpacs作为python模块运行
下面是两种可能的bacpac方案的详细运行示例:
下面的示例代码应该在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.svmimportLinearSVC0
计算精度:
<〔8〕
importbacpacsfromsklearn.svmimportLinearSVC1
出[8]
importbacpacsfromsklearn.svmimportLinearSVC2
或者简单地说:
<〔9〕
importbacpacsfromsklearn.svmimportLinearSVC3
出[9]
importbacpacsfromsklearn.svmimportLinearSVC2 <H2>2。培训和使用模型
进口
<〔1〕
importbacpacsfromsklearn.svmimportLinearSVC
下载玩具数据
使用您的真实数据,或下载bacpacs toy数据(也可以在github上获得):
<〔2〕
bacpacs.download_toy_data('.')
出[2]
Toy data stored in ./toy
初始化bacpacs对象
<〔3〕
importbacpacsfromsklearn.svmimportLinearSVC8
合并训练数据
将所有training.faa文件合并为一个大型.faa文件。
<〔4〕
importbacpacsfromsklearn.svmimportLinearSVC9
指定输出路径以覆盖默认目标目录。
出[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.svmimportLinearSVC2 <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