1

私は非常に Python NEWBIE です! 私は自分のクラスの課題に取り組んでいます。私たちは独力で、教えられなかったことをいくつか行うことが期待されています。それは言った:

複数の行を 1 つの行に結合しようとしています。私はこれを必要とする:

>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

4 に答える 4

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)                                           

改行文字を取り除きますが、それでもすべてを 1 行に収めることはできません。

于 2013-04-18T15:46:11.023 に答える
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)
于 2013-04-17T01:02:18.637 に答える