结合DNA线

时间:2013-04-17 00:15:20

标签: python

我首先要说的是,我非常喜欢Python新手!我正在为我的课程完成一项任务,我们正处于我们自己的部分,并且期望做一些没有教过的事情。那说:

我正在尝试将多行组合成一行。我需要这个:

>taxon1
ACCGTGGATC
CCTATTGATT
GGATATTATC

看起来像这样: taxon1 ACCGTGGATCCCTATTGATTGGATATTATC

我正在编写一个python脚本并以:

开头
#!/usr/bin/python

import sys

if len(sys.argv) < 2:
    print "usage: finalmyscript.py infile.txt"
    sys.exit(1)

fname = sys.argv[1]

handle = open(fname, "r")

for line in handle:
    handle.close()

4 个答案:

答案 0 :(得分:0)

对于这个例子,您可能只处理一个序列,因此该解决方案适用于您所寻找的内容:

#!/usr/bin/python

import sys

if len(sys.argv) < 2:
    print "usage: finalmyscript.py infile.txt"
    sys.exit(1)

fname = sys.argv[1]
handle = open( fname )

for line in handle:
  # Only the lines that are identifier lines(Aka, start with >)
  if line[0] == '>':
    # We could use print, but sys.stdout.write is just as easy to
    #  write to the terminal without a newline at the end
    sys.stdout.write( line.replace( '\n', ' ' ) )
  else:
    sys.stdout.write( line.replace( '\n', '' ) )

handle.close()

我留给你了解如何修改上面的代码以处理单个文件中的多个序列。

如果您稍后要进行更多的生物信息学处理,您应该查看Biopython项目,这将使事情变得更加容易。

以下是使用Biopython的SeqIO模块

轻松解决上述问题的示例
#!/usr/bin/python

from Bio import SeqIO
import sys

if len(sys.argv) < 2:
    print "usage: finalmyscript.py infile.txt"
    sys.exit(1)

fname = sys.argv[1]

for seq in SeqIO.parse( fname, 'fasta' ):
    print ">" + seq.id + " " + str(seq.seq)

答案 1 :(得分:0)

我认为这会做你想要的:

#!/usr/bin/python

import os
import sys

if len(sys.argv) < 2:
    print "usage: %s <input file>" % os.path.split(sys.argv[0])[1]
    sys.exit(1)

with open(sys.argv[1]) as input_file:
    print(''.join([input_file.next().rstrip()[1:]+' '] +
                  [line.rstrip() for line in input_file]))

答案 2 :(得分:0)

好的,我现在有了这个:

#!/usr/bin/python

import sys

if len(sys.argv) < 2:
print "usage: finalmyscript.py infile.txt"
sys.exit(1)

fname = sys.argv[1]                                                
handle = open(fname, "r")
list = handle.readlines()

for line in list:
parts = line.rstrip().split('\n')
print "".join(parts)                                           

哪个摆脱了换行符,但它仍然不会将所有内容都放在一行上。

答案 3 :(得分:0)

试试这段代码:

    result=""
    for line in fname.readlines():
        if line[0]!=">": #does not import the first line with name of sequence
            result+=line.strip()
    fname.close()

    print result