【KNIME】KNIMEで逆相補鎖、翻訳、分子量、等電点を算出してみたい(python)。
・KNIMEで分子生物学的なワークフローを構築しようと思ったが、いまひとつしっくりこない。翻訳ワークフローのように、頑張って組むのも不可能ではなさそうだが、何とかならないか。
・pythonで何とかなりそうなので、pythonを入れ込んでバイオしてみた。
・Anaconda PromptでKNIME用の仮想環境をactivateし、conda install biopythonでbiopythonをインストールした。
・次に、KNIME上でワークフローを組んでみた(下図)。
・もはやKNIMEのワークフローとしては嘆かわしい限りであるが、これで目的を達成することはできる。流れは以下の通り。
・Python Scriptで逆鎖、相補鎖、逆相補鎖、翻訳後のアミノ酸配列を算出(以下、スクリプト及び出力)。ポイントは、各配列情報をDataFrameに格納する際に、文字列に変換しているところ。biopythonは型が独特なので、KNIME上でうまいこと処理されない。出力は、1行×4列のTableにしたので、表示しきれなかった。
import pandas as pd
from Bio.Seq import Seq
MySeq =Seq(input_table_1.iloc[0,0])
df = pd.DataFrame({'Original': [str(MySeq)], 'Complement': [str(MySeq.complement())],"Reverse_complement":[str(MySeq.reverse_complement())],"Translate":[str(MySeq.translate())]})
print(df)
output_table_1 = df
import pandas as pd
from Bio.Seq import Seq
MySeq =Seq(input_table_1.iloc[0,0])
df = pd.DataFrame({'Original': [str(MySeq)], 'Complement': [str(MySeq.complement())],"Reverse_complement":[str(MySeq.reverse_complement())],"Translate":[str(MySeq.translate())]})
print(df)
output_table_1 = df
・最後に、翻訳後のアミノ酸配列の分子量と等電点を算出した(以下、スクリプト及び出力)。ポイントは、翻訳時に入った終止コドンの*を除くこと。アミノ酸以外の文字が入るとエラーが返る。途中で終止コドンが入った場合に弾くことができるので、この機能自体は有効。ただ、今回は翻訳から流すため必ず右端が*になってしまうので、これだけは除く必要がある。
import pandas as pd
from Bio.SeqUtils.ProtParam import ProteinAnalysis
import re
MySeq=ProteinAnalysis(input_table_1.iloc[0,3].rstrip("*"))#右端の*を削除
df = pd.DataFrame({'Original': [str(MySeq)], 'MW': [str(MySeq.molecular_weight())],"pI":[str(MySeq.isoelectric_point())]})
print(df)
output_table_1 = df
・biopythonを深堀すれば、もっといろいろ出来るようになる気がする今日この頃。
終わり。