循环两个文件并计算第一个文件行中第二个文件的字符串出现次数

我需要生成一些单词(A,T,G,C)的排列实际上是二元合成的核苷酸(如AA,AT AG,AC),三合成(AAA,AAT,AAC AAG),四元,五元等(一次一个),然后检入另一个文件,其中包含一些值的序列,每个排列出现的计数。我生成了排列列表。现在,我只需要循环遍历序列(从值中拆分序列),以计算上面生成的每个排列,并在新文件中获得输出。但我只得到了一个序列的答案,其他序列没有。
我试图遵循的节目逻辑是:
在文件1中生成ATCG的排列(例如AT AG AC AA...)
读取生成的文件1和Sequence#Value文件(DNA_seq_val.txt)
读取序列并将序列与值分开
循环排列的序列,并在结果文件中打印它们的匹配值(每个值用逗号分隔)。
输入测试文件名为DNA_seq_val.txt
AAAATTTT#99
CCCCGGGG#77
ATATATCGCGCG#88
*我得到的产出是--
2,0,1,0,0,0,0,0,0,0,0,0,0,2,99 AAAATTTT
77 CCGGGG
88 ATATCGCGCG
所需输出为2,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,99 AAAATTTT
X,x,77 CCCCGGGGx
X、x、88 ATATATCGCGCG
(其中x=相应的计数与第一行相同)

选择 | 换行 | 行号
  1. from itertools import product
  2. import os
  3.  
  4. f2 = open('TRYYY', 'a')
  5.  
  6. #********Generate the permutations start********
  7. per = product('ACGT', repeat=2)    # ATGC =nucleotides; 2= for di ntd(replace 2 with 3 fir tri ntds and so on)
  8. f = open('myfile', 'w')
  9. p = ""
  10. for p in per:
  11.     p = "".join(p)
  12.     f.write(p + "\n")
  13. f.close()
  14.  
  15. #********Generate the permutations ENDS********
  16.  
  17. with open('DNA_seq_val.txt', 'r+') as SEQ, open('myfile', 'r+') as TET: #open two files
  18.     SEQ_lines = sum(1 for line in open('DNA_seq_val.txt'))        #count lines in sequences file
  19.     #print (SEQ_lines)
  20.     compo_lines = sum(1 for line in open('myfile'))        #count lines in composition
  21.     #print (compo_lines)
  22.     for lines in SEQ:
  23.         line,val1 = lines.split("#")
  24.         val2 = val1.rstrip('\n')
  25.         val = str(val2)
  26.         line = line.rstrip('\n')
  27.         length =len(line)
  28.         #print (line)        
  29.         #print (val)
  30.         LIN = line, val
  31.         #print (LIN)
  32.         newstr = "".join((line))
  33.         print (newstr)
  34.         #while True:        # infinte loop
  35.         for PER in TET:
  36.             #print (line)
  37.             PER = PER.rstrip('\n')
  38.             length2 =len(PER)
  39.             #print (length2)
  40.             #print (line)
  41. #            print (PER)
  42.             C_PER  = str(line.count(PER))
  43. #            print (C_PER)
  44.             for R in C_PER:
  45.                 R1 = "".join(R)
  46.                 f2.write(R1+ ",")
  47.         f2.write(val,)
  48.         f2.write('\t')
  49.         f2.write(line)
  50.         f2.write('\n')
  51.     #exit()
  52.  
# 回答1


这很好,但是我们如何帮助你从未知的输入中获得这个结果,所有这些数字是什么意思,2,0,1,0,0,0,0,0,0,0,2,x,x呢??统计发生次数相对简单,但这里没有足够的信息。

标签: python

添加新评论