1

何千もの DNA シーケンスを fasta 形式で含む 1 つのファイルがあり、100 個の個々の短いシーケンス (モチーフ) が大きなファイルで何回出現するかを数える必要があります。これまでのところ、モチーフごとに行ってきましたが、何千もの値の列がないように出力を合計する方法がわかりません。一度にすべてのモチーフを入力してテーブルを戻すのもいいでしょう。私はコーディングに非常に慣れていないので、フィードバックをいただければ幸いです。私は持っている;

from Bio import SeqIO
for i in SeqIO.parse(f,'fasta'):
   print i.seq.count('motif')

モチーフがシーケンス名にヒットしないため、これにはBiopythonは本当に必要ないと考えていました。では、行ごとに読み取るイテレータを実行できますか (...)?

私の入力は次のようなものです。

>fasta1
AACTGGGGTCCGTCGATAATATAGGATAG...
>fasta2
GCGCGTGATAGATATGATTAGCGGCGCAA...

そのようなcsvファイルのモチーフで;

ACCGAATTTAAA,AAATTATAAAA,GCCCTAAAAAG
4

2 に答える 2

0
from Bio import SeqIO

sum = 0
for i in SeqIO.parse(f,'fasta'):
    sum += i.seq.count('motif')

print sum

次のようなファイル名の複数のファイルをカウントする場合: fasta1、fasta2、... fastaN

from Bio import SeqIO

sum_table

for k in range(N): 
    sum = 0   
    for i in SeqIO.parse(f,'fasta'+str(k+1)):
        sum += i.seq.count('motif')
    sum_table.append(sum)

print sum_table

もちろん、ライブラリなしでこれを行うことができます。しかし、ライブラリが手元にあるのに、わざわざ車輪の再発明をする必要はありません。

于 2012-06-27T20:46:25.727 に答える
0

解析を除外する場合は、オプションが必要になります。ファイルを 1 行ずつ処理するか、最初に全体として読み取るかのいずれかです。どちらのアプローチにも重大な欠点があります。

行ごとに読んでカウントすると、改行でインターセプトされたモチーフは検出されません。

文字列で一度に読み取り、すべての改行文字 ( \n) を削除すると、ファイルのサイズと使用可能な RAM によってはメモリが不足する可能性があります。

いずれにせよ、csv からモチーフ シーケンスを読み取ったと仮定します。

#let's say `motifs` is a list of motif sequences
counts = [0] * len(motifs)
for s in SeqIO.parse(f,'fasta'):
    for i, motif in enumerate(motifs):
        counts[i] += s.seq.count(motif)
于 2012-06-27T20:51:26.313 に答える