python - 序列的计数(不重复)
问题描述
我实际上有一个这样的 multifasta 文件:
>seqA_0042_0035
AGGACCATGA
>seqB_0035_0042
ATGGATGGAGGAGATG
>seqC_0042_0035
AGGATGGAGGATAG
>seqA_0042_0035
ATGGAGAGAG
>seqD_0042_0035
ATTGGGAA
>seqC_0035_0042
ATGGGAGAGAAGA
>seqA_0042_0035
我只是想计算我有多少个序列(带有 ID 名称),但如果我有一个 seqA 例如只计算一次,即使它出现两次,我也想保留一次。_number_number 无关紧要,它们一直在变化。
对于这个例子,我将有输出:序列数:4
谢谢 :)
解决方案
创建一个包含标签的哈希集,扫描文件,将每个标签添加到哈希集中:
set_of_labels = set()
with open("path/to/my_multi_FASTA_file") as f:
for line in f:
if line.startswith('>seq'):
label = line[4:].split('_')[0]
set_of_labels.add(label)
print(f"Number of distinct labels: {len(set_of_labels)}")
输出:
Number of distinct labels: 4
重复项会自动删除,因为该集合始终只包含每个元素的一个副本。
我已经从 -labels 中删除了>seq
-part 和数字>seqX_Y_Z
,所以我只保留X
. 如果您想要其他内容,请相应地调整子字符串的选择label = ....
。
推荐阅读
- css - 在反应中,在方形和圆形按钮内使用 faPlay 图标居中 fontawesome 组件
- rest - 如何为 REST API 建模以设计计算器服务
- angular - 如何修复 angular7 中的 TypeError
- android - 相同TextView的不同字体大小和重力?
- swift - SwiftUI VStack 和 List 中其他视图压缩的视图
- angular - 在子应用程序中从 Angular 应用程序扩展一个模块
- python-3.x - 无法在 BST 级别找到所有节点的平均值
- spring-boot - Activiti引擎(activiti bpmn 2.0)可以读取位于类路径之外的文件吗?
- amazon-web-services - CloudFormation AWS::EC2::Route
- java - 与导航主机片段不同大小的片段