python - 在其他序列中找到频率最高的序列
问题描述
我得到了 10 个 DNA 序列,每个序列由 18 个碱基组成,我被要求编写一个程序来计算所有这些序列中最常见的序列(共识)。例如,假设我有“ACTGGA”、“ACCAAT”、“CTTAGG”、“ATGAAG”
共有序列将是“A(CT)TA(GA)G”,因为在每个序列的第一个碱基位置“A”存在 3/4 次。对于每个序列的第二个碱基位置,我有 2 个带有“C”的序列和 2 个带有 "T" 的序列。到目前为止,我的共识序列看起来像 A(CT),因为我已经确定“A”在位置 1 出现 75% 的时间,而位置 2 有 50-50% 的机会出现“T”或“C”等.所以,我将在我的共识的第二个位置包括“C”和“T”。现在我正在尝试使用 pycharm 在 python 中执行此操作,即使我不是很熟悉它。我只是想推动自己学习新的东西。我的问题是,当我将 txt 文件读入这样的 numpy 数组时:
seq_array = np.asarray(list(map(str.strip, seq)))
我的数组最终变成像 (10,) 而不是 (10,18) 的 1d,所以我不能遍历每一行和每一列来计算每个字符。那么如何将文件读入 2d 大小(10,18)?而不是迭代 every seq_array[r][c]
,有没有更快的方法可以到达最频繁的序列?
解决方案
您在生成多维数组时遇到的问题:
list(map(str.strip, seq)) # Returns a list of strings
list(map(list, map(str.strip, seq))) # Will return a list of lists
seq_array = np.asarray(list(map(list, map(str.strip, seq))))
推荐阅读
- javascript - 获取响应问题
- node.js - NodeJS Express Web 应用程序的一次性密码验证
- css - 如何保持 div 可滚动溢出,但禁用任何其他触摸动作?
- angular - 如何在 Angular 9 中为同一个组件实现两个 html 文件?一款适合手机大小,一款适合台式机?
- node.js - 我们如何使用 process.stdout.on(....) 之外的变量?
- android - 带有屏幕截图的 FastPass 报告
- c - tcp header 和 payload 的实用函数——是否有内核
- python - 如何抓取画布标签,为什么它在我的浏览器中不可见?
- kubernetes - Kafka增量粘性再平衡
- html - 为什么网格模板行不能正常工作?