Biopythonパッケージを使用していますが、tsvファイルのような結果を保存したいと思います。これは、printからtsvへの出力です。
for record in SeqIO.parse("/home/fil/Desktop/420_2_03_074.fastq", "fastq"):
print ("%s %s %s" % (record.id,record.seq, record.format("qual")))
ありがとうございました。
これはかなり単純です。印刷する代わりに、ファイルに書き込む必要があります。
with open("records.tsv", "w") as record_file:
for record in SeqIO.parse("/home/fil/Desktop/420_2_03_074.fastq", "fastq"):
record_file.write("%s %s %s\n" % (record.id,record.seq, record.format("qual")))
また、ファイル内のさまざまな列に名前を付けたい場合は、次のように使用できます。
record_file.write("Record_Id Record_Seq Record_Qal\n")
したがって、完全なコードは次のようになります。
with open("records.tsv", "w") as record_file:
record_file.write("Record_Id Record_Seq Record_Qal\n")
for record in SeqIO.parse("/home/fil/Desktop/420_2_03_074.fastq", "fastq"):
record_file.write(str(record.id)+" "+str(record.seq)+" "+ str(record.format("qual"))+"\n")
私の好ましい解決策は、 [〜#〜] csv [〜#〜] モジュールを使用することです。これは標準モジュールなので、次のようになります。
次のコードスニペットはあなたのためのトリックをする必要があります:
#! /bin/env python3
import csv
with open('records.tsv', 'w') as tsvfile:
writer = csv.writer(tsvfile, delimiter='\t', newline='\n')
for record in SeqIO.parse("/home/fil/Desktop/420_2_03_074.fastq", "fastq"):
writer.writerow([record.id, record.seq, record.format("qual")])
これはPython 3.xの場合です。2.xを使用している場合、open
およびwriter = ...
は少し異なります。
.tsv
を使用してTensorBoardのWord埋め込みにラベルを付ける場合は、次のスニペットを使用します。 [〜#〜] csv [〜#〜] モジュールを使用します( Dougの回答 を参照)。
# /bin/env python3
import csv
def save_vocabulary():
label_file = "Word2context/labels.tsv"
with open(label_file, 'w', encoding='utf8', newline='') as tsv_file:
tsv_writer = csv.writer(tsv_file, delimiter='\t', lineterminator='\n')
tsv_writer.writerow(["Word", "Count"])
for Word, count in Word_count:
tsv_writer.writerow([Word, count])
Word_count
は、次のようなタプルのリストです。
[('the', 222594), ('to', 61479), ('in', 52540), ('of', 48064) ... ]
次のスニペット:
from __future__ import print_function
with open("output.tsv", "w") as f:
print ("%s\t%s\t%s" % ("asd", "sdf", "dfg"), file=f)
print ("%s\t%s\t%s" % ("sdf", "dfg", "fgh"), file=f)
ファイルを生成するoutput.tsv
含む
asd sdf dfg
sdf dfg fgh
したがって、あなたの場合:
from __future__ import print_function
with open("output.tsv", "w") as f:
for record in SeqIO.parse("/home/fil/Desktop/420_2_03_074.fastq", "fastq"):
print ("%s %s %s" % (record.id,record.seq, record.format("qual")), file=f)
私はこのタイプのコードでjoin()
を使用することを好みます:
for record in SeqIO.parse("/home/fil/Desktop/420_2_03_074.fastq", "fastq"):
print ( '\t'.join((str(record.id), str(record.seq), str(record.format("qual"))) )
「タブ」文字は\t
とjoin関数は(3)引数を取り、その間にタブを付けて出力します。