いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【KNIME】KNIMEで逆相補鎖、翻訳、分子量、等電点を算出してみたい(python)。

・KNIMEで分子生物学的なワークフローを構築しようと思ったが、いまひとつしっくりこない。翻訳ワークフローのように、頑張って組むのも不可能ではなさそうだが、何とかならないか。

pythonで何とかなりそうなので、pythonを入れ込んでバイオしてみた。

・Anaconda PromptでKNIME用の仮想環境をactivateし、conda install biopythonでbiopythonをインストールした。

・次に、KNIME上でワークフローを組んでみた(下図)。

f:id:choron81:20220217004731p:plain

・もはやKNIMEのワークフローとしては嘆かわしい限りであるが、これで目的を達成することはできる。流れは以下の通り。

・Table Creator塩基配列を入力する(以下)。

f:id:choron81:20220217004946p:plain

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

f:id:choron81:20220217005208p:plain

・最後に、翻訳後のアミノ酸配列の分子量と等電点を算出した(以下、スクリプト及び出力)。ポイントは、翻訳時に入った終止コドンの*を除くことアミノ酸以外の文字が入るとエラーが返る。途中で終止コドンが入った場合に弾くことができるので、この機能自体は有効。ただ、今回は翻訳から流すため必ず右端が*になってしまうので、これだけは除く必要がある。

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

f:id:choron81:20220217005915p:plain

・biopythonを深堀すれば、もっといろいろ出来るようになる気がする今日この頃。

 

終わり。