私が取り組んでいるバイオインフォマティクス プロジェクトでコーディングに少し問題があります。基本的に、私の仕事は、データベースからモチーフ配列を抽出し、その情報を使用して配列アラインメント ファイルに注釈を付けることです。アラインメント ファイルはプレーン テキストであるため、アノテーションは精巧なものではなく、せいぜいアラインメント ファイル自体で抽出された配列をアスタリスクに置き換えるだけです。
データベース ファイルをスキャンし、必要なすべてのシーケンスを抽出し、それらを出力ファイルに書き込むスクリプトがあります。私が必要とするのは、クエリが与えられた場合、これらのシーケンスを読み取り、ASCII アライメント ファイル内の対応する部分文字列と一致させることです。最後に、モチーフ シーケンス (非常に大きな文字列の部分文字列) が出現するたびに、モチーフ シーケンス XXXXXXX を一連のアスタリスク*に置き換えます。
私が使用しているコードは次のようになります (11SGLOBULIN はデータベース内のタンパク質エントリの名前です)。
motif_file = open('/users/myfolder/final motifs_11SGLOBULIN','r')
align_file = open('/Users/myfolder/alignmentfiles/11sglobulin.seqs', 'w+')
finalmotifs = motif_file.readlines()
seqalign = align_file.readlines()
for line in seqalign:
if motif[i] in seqalign: # I have stored all motifs in a list called "motif"
replace(motif, '*****')
ただし、各文字列を一連のアスタリスクに置き換える代わりに、ファイル全体を削除します。なぜこれが起こっているのか誰にもわかりますか?
問題は、私の ASCII ファイルが基本的にアミノ酸の非常に長いリストの 1 つにすぎず、Python が非常に長い文字列内に隠されている特定の部分文字列を置き換える方法を認識できないという事実にあると思われます。