バイオインフォマティクスっぽいことをしてみる
誰か、pythonを使って、バイオインフォマティクスを説明している人がいないかなと思って、いろいろ調べてみましたが、実際に分析などを載せておられる方はいないものの、オープンデータをダウンロードしてこういう準備をするといいでしょう、というようなごく入門的、入門以前の情報を載せておられる方はいます。
情報量が大きいので、扱いが難しいですが、研究者向けにデータを提供しているサイトがあるので記しておきます。
ensembl.org というヨーロッパのサイトです。
英語で書いてあるので、wikipedia を読んでもよくわかりませんでしたが、日本からアクセスすると、https://asia.ensembl.org に飛ばされるので、世界的に結構有名なサイトであるような気がします。
例示に示したファイルは、
gz で 840MBぐらいあり、
解凍すると、3.3GBくらいあるので、普通のテキストエディタでは開けません。
それなりのツール選びが必要になってくると思います。
gzで11MB程度の者もあります。
ヒトゲノムのある部分的な部分のものであると予想されます。
chatGPTに要約させると、
Ensemblゲノムデータベースプロジェクトは、生命科学研究者や遺伝学者向けの重要なリソースとして知られています。Ensemblは、遺伝子、ゲノム構造、およびその他の生物学的データを包括的に収集し、それを使いやすい形式で提供することを目的としています。
とのことです。
ftp://ftp.ensembl.org/pub/ の覗くと、いろいろデータが置いてあるので、いろいろ試すのにはいいと思います。
curl -O ftp://ftp.ensembl.org/pub/current_fasta/homo_sapiens/dna/Homo_sapiens.GRCh38.dna.toplevel.fa.gz
pythonで、ある特定の行を読みだすスクリプトを書いてみました。
python3 loadLine.py 400000
などと、引数をつけて実行するとその該当の行が表示されるというものです。
実用的ではありませんが、ファイルサイズの大きいデータを見るのに、少しばかり使えるのではないかと思います。
#!/usr/bin/python3
import sys
def main() -> None:
args = sys.argv
path = 'Homo_sapiens.txt'
with open(path) as f:
i = 0
while i < int(args[1]):
a = f.readline()
i += 1
b = f.readline()
print(b)
if __name__ == '__main__':
main()
python3 loadLine.py 400000