サンプルコード集
◯サンプルコードを写す時はコピペをしないようにしましょう。
◯▶を押すと出力が表示されます。
◯Geminiボタンを押すとGemini(AI)による解説が表示されます。間違っていることもあるので、疑問に思った場合はご質問ください。
◯全て
◯if文
◯for文
◯関数
◯配列
◯ファイル入出力
◯Numpy
◯Matplotlib
◯openpyxl
◯Pandas
◯正規表現
◯Biopython
◯scikit-learn
◯seaborn
◯Graphviz
◯Gemini
◯Tkinter
CODE: c-1 (Biopython)
from Bio import SeqIO
# ---- Config ----
#FILE_NAME = "https://www.uniprot.org/uniprot/P59082.fasta"
FILE_NAME = "P59082.fasta"
def main():
fname = FILE_NAME
with open(fname, mode="r") as f:
for record in SeqIO.parse(f, "fasta"):
id_part = record.id
desc_part = record.description
seq = record.seq
print("id: %s" % (id_part))
print("desc: %s" % (desc_part))
print("seq: %s" % (seq))
return(0)
main()
【ポイント】
◯pip install biopythonなどでライブラリのインストールが必要。
◯FASTAファイルはこちらからダウンロード->https://www.uniprot.org/uniprot/P59082.fasta
◯SeqIO.parse()だけでFASTAデータを便利に使うことができる。
◯取得したseqに対して文字列処理を行うのが一般。
◯参考: https://qiita.com/Ag_smith/items/94c4b97729b043fae0cb

CODE: c-2 (Biopython)
from Bio import SeqIO
# ---- Config ----
FILE_NAME = "P59082.fasta"
def calc_gc(seq):
gc = (seq.count("G") + seq.count("C")) / len(seq)
return(gc)
def main():
fname = FILE_NAME
with open(fname, mode="r") as f:
for record in SeqIO.parse(f, "fasta"):
id_part = record.id
desc_part = record.description
seq = record.seq
rev_seq = seq.reverse_complement()
gc = calc_gc(seq)
print("id: %s" % (id_part))
print("desc: %s" % (desc_part))
print("Reverse complement seq: %s" % (rev_seq))
print("GC: %s" % (gc))
return(0)
main()
【ポイント】
◯reverse_complement()で逆相補鎖の配列を作成。
◯文字列操作の部分はBiopythonの関数に頼らなくてもOK。むしろ自分自身で書けるようになった方がよい。
◯calc_gc()でGC含量を計算。
◯参考: https://qiita.com/ponnhide/items/0eaf8cbf8aeb35b3b925
◯biopythonのドキュメント: https://biopython.org/wiki/Documentation
◯アップデートによって前まで使われていた関数が使えなくなっていたりするので、あまりBiopythonの関数を信用しないようにしたほうがよい。

CODE: c-3 (Biopython)
from Bio import SeqIO
import gzip
# ---- Config ----
FILE_NAME = "pdb_seqres.txt.gz"
PRINT_NUM = 5
def main():
fname = FILE_NAME
f = gzip.open(fname, mode="rt")
i = 0
for record in SeqIO.parse(f, "fasta"):
id_part = record.id
desc_part = record.description
seq = record.seq
print("id: %s" % (id_part))
print("desc: %s" % (desc_part))
print("seq: %s" % (seq))
i += 1
if ( PRINT_NUM<=i ):
break
f.close()
return(0)
main()
【ポイント】
◯.gzファイルはこちらからダウンロード: https://files.wwpdb.org/pub/pdb/derived_data/pdb_seqres.txt.gz
◯.gzファイルの読み込みは通常のopen()ではなくgzip.open()を使う。
◯c-0, c-1のようにwithを使ってもいいが、インデントが深くなり可読性が悪くなることがある。今回のようにopen()/close()を使うとインデントが深くならないという利点があるが、close()を忘れないようにしないといけない。
◯今回は出力が延々と続くので、5件で切っている。
