1

スクリプト (下記参照) を実行して fasta ファイルを読み込み、タクソノミー ファイルを出力しようとしています (「>」文字を含まないシーケンス ヘッダーのみを出力します) が、解決できない構文エラーが発生し続けます。 . その結果、スクリプトは cleanseqs.tax ファイルを作成しますが、ファイルは空白です。誰でも助けてもらえますか?

ありがとうございました!

>>> Fasta = open("testseqs.fasta", "r")
>>> Tax = open("cleanseqs.tax", "w")
>>> while 1:
...     SequenceHeader= Fasta.readline()
...     Sequence= Fasta.readline()
...     if SequenceHeader == '':
...             break
...     Tax.write(SequenceHeader.replace('>', ''))
... Fasta.close()
  File "<stdin>", line 7
    Fasta.close()
        ^
SyntaxError: invalid syntax
>>> Tax.close()
4

5 に答える 5

0

ファイル オブジェクトコンテキスト マネージャーなので、with ステートメントを使用してファイルを自動的に閉じることができます。

with open("testseqs.fasta", "r") as fasta, open("cleanseqs.tax", "w") as tax:
    while True:
        ...
于 2013-05-31T09:21:48.873 に答える
0

私は同じ問題を抱えていました.私のプログラムはファイルに書き込みますが、ファイルは空であることが判明しました.

インデントを修正してからファイルを閉じます。Pythonでファイルを閉じた後、ファイルにコンテンツが存在します。

于 2013-05-31T10:11:18.137 に答える
0

ご要望に応じて、既存の FASTA パーサーを使用した例をいくつか示します。

サンプルファイル:

$ cat test.fasta 
>header1 description1
SEQUENCE
>header2 description2
SEQUENCESEQUENCE
  1. BioPython.SeqIO:

    from Bio import SeqIO
    reader = SeqIO.parse('test.fasta', 'fasta')
    with open('biopython.tax', 'w') as out:
        for prot in reader:
            out.write(prot.description + '\n')
    reader.close()
    

    出力:

    $ cat biopython.tax 
    header1 description1
    header2 description2
    
  2. With pyteomics.fasta(pyteomicsは私と私の同僚によって開発されたライブラリです):

    from pyteomics import fasta
    with open('pyteomics.tax', 'w') as out, fasta.read('test.fasta') as reader:
        for prot in reader:
            out.write(prot.description + '\n')
    

    出力:

    $ cat pyteomics.tax 
    header1 description1
    header2 description2
    
于 2013-05-31T10:09:43.613 に答える