为Scikit分类算法准备二进制矩阵数据

时间:2017-06-12 18:45:52

标签: python machine-learning scikit-learn bioinformatics

我是一名研究员(我的编程知识很小)对一组抗生素(甲氧西林)和一组易受影响的抗生素(甲氧西林)进行分析。假设这两组之间的唯一差异是电阻(R)与磁化率(S)。

我想找出抗性或易感基因组中的遗传元件是否与抗性相关(正面或负面)。

我已经完成了一项完整的渔民精确测试,并将在下面详细说明我是如何做到的。但是,我想弄清楚如何为更复杂的学习算法准备我的数据,例如sci-kit提供的算法。

(我的许多技巧都来自这个article

首先,我使用KMC将R和S基因组的每个fasta文件分成k-mers(我没有足够的"声誉"所以我不能' t使用> 2个链接,但k-mers基本上是k长度的遗传序列。 KMC的输出是基因组中存在的k-mers转储。

示例:kmc dump

AAAAAAAAAACGAATGTACACAATCGAA    1
AAAAAAAAACGAATGTACACAATCGAAC    1
AAAAAAAAATCAAATCCTGACTATTTAG    1
AAAAAAAAATCGGTCAATTCATTAAAAG    1
AAAAAAAACAAACATGAAGACCTTGTTA    1
AAAAAAAACGAATGTACACAATCGAACA    1
AAAAAAAACGTGTTAAAGTGAATCACAC    1

然后我将数据合并为一个二进制矩阵,其中列为基因组,行为k-mers。

示例:1个抗性基因组和1个易感基因组

kmer    R_1    S_1
AAAAAAAAAACGAATGTACACAATCGAA    1   0
AAAAAAAAACGAATGTACACAATCGAAC    1   0
AAAAAAAAATCAAATCCTGACTATTTAG    1   0
AAAAAAAAATCGGTCAATTCATTAAAAG    1   0
AAAAAAAAATTCCCTTCTAATCTTGAAT    0   1
AAAAAAAACAAAAATTATATAAAGCGAA    0   1
AAAAAAAACAAACATGAAGACCTTGTTA    1   1
AAAAAAAACAACCACCCATACATTGAGT    0   1
AAAAAAAACCCTTACAACAAATATGTAA    0   1

这是我一直在使用的数据,并希望使用sci工具包或其他分类算法进一步分析。基本上每个k聚体是一个特征,其与抗性的相关性基于其在R对S基因组中的存在。这是我想帮助将这些数据转换为适合sci kit的数据集格式的地方。

我使用R对每个k聚体进行了Fisher精确检验。对于每个k聚体,产生2x2矩阵,第一列为抗性,第二列为易感。这两行是否存在。所以有四个数字(R中存在#次k-mer,敏感中#,#不在R中,#不在S中)。

      R    S
yes   #    #
no    #    #

我在R中使用了以下代码:

phenotype = as.numeric(grepl('^R_', colnames(raw_kmer_table)[2:ncol(raw_kmer_table)]))
fe_results = apply(kmer_pres_abs_matrix, 1, 
               FUN = function(row) {
                 fe_mat = matrix(0, ncol = 2, nrow = 2)
                 fe_mat[1,1] = sum(row == 1 & phenotype == 1)
                 fe_mat[1,2] = sum(row == 1 & phenotype == 0)
                 fe_mat[2,1] = sum(row == 0 & phenotype == 1)
                 fe_mat[2,2] = sum(row == 0 & phenotype == 0)

                 fe = fisher.test(fe_mat)
                 return(fe$p.value)
               }
)

现在您已经了解了我的数据当前是如何格式化的,我想听听有关如何使用sci工具包或其他资源将这些数据整合到更复杂的测试中的建议。我感兴趣的算法是您认为合适的任何算法以及之前经过现场测试的算法,例如adaboost和森林学习算法。另外,请问我这篇文章中遗漏的任何澄清或事情!

0 个答案:

没有答案