weixin_73062642 2022-12-19 14:19 采纳率: 100%
浏览 91
已结题

关于#python#的问题:一条序列中的元素与另一条序列中的元素一一对应的比较方法

刚刚学python,想写一个关于文本内容比对的代码,这是从文本中摘取的几列内容
#Sequence Barcode Count Percentage(%)
AAGAGTGTATGTAGGGAGGA barcodeMD-AS-17MD-S-50 73974821 1.240810
GGTGGAAGGGGGAGGTGGTG barcodeMD-AS-21MD-S-61 73670799 1.235710
GGTGGAAGGGCTAGGGAGCA barcodeMD-AS-21MD-S-50 73627661 1.234987
GGAGTTATGGCTGAGTGGTT ambiguous 22315579 0.374308
我需要比对的ambiguous这一行的Sequence和其他列的Sequence中不同的碱基,如果超过3个碱基不同,就将他舍弃,如果是三个碱基以下则将其写入文本文件中,并输出一共有多少有个碱基差异小于3个序列。
现在代码写完了,但是我嵌套了三个循环导致代码运行速度很慢,有办法可以提高他跑的速度呢?
目前我采用的方法是,一条序列中的元素与另一条序列中的元素,一一对应进行比较,还有别的方法可以达到这样的效果吗?

allcount = 0 #定义一个计数器 
for w in range(0,listAmbiguousLen): #我将所有的ambiguous列添加到了一个列表中,listAmbiguousLen 指的是ambiguous一共有多少行
    for u in range(0,lenSeq): #Seq是整个文本,lenSeq指的是这个文本一共有多少行
        count = 0  # 定义一个计数器
        uncount = 0 
        for x in range(0,lenAmbiguous): # lenAmbiguous 指的是Sequence列中,碱基的个数,一般为20个
            if listAmbiguous[w][x] == Seq[u][x]: #如果first的元素与list的元素相同
                count = count + 1  
            else: # 如果不相同
                uncount = uncount+1  
            if uncount>3: # 如果碱基不同的个数大于3个,则舍弃
                break
            elif count > lenAmbiguous-number: #如果碱基小于三个,就把他写入文档中
                allcount = allcount + 1 #allcount+1
                l.write(str(uncount)+"\t"+listAmbiguous[w]+"\t\t"+Seq[u])
                break
  • 写回答

5条回答 默认 最新

  • chuifengde 2022-12-19 16:33
    关注
    import Levenshtein
    
    a = 'GGAGTTATGGCTGAGTGGTT'
    b = 'GGTGGAAGGGCTAGGGAGCA'
    
    res = Levenshtein.hamming(a, b)
    print(res)
    --result
    10
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 12月27日
  • 已采纳回答 12月19日
  • 创建了问题 12月19日

悬赏问题

  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥15 复杂网络,变滞后传递熵,FDA
  • ¥20 csv格式数据集预处理及模型选择
  • ¥15 部分网页页面无法显示!
  • ¥15 怎样解决power bi 中设置管理聚合,详细信息表和详细信息列显示灰色,而不能选择相应的内容呢?
  • ¥15 QTOF MSE数据分析
  • ¥15 平板录音机录音问题解决