データサイエンス研修 生命情報学コースというページで、バイオインフォマティクスに関連したデータ処理(主にテキストの処理)の問題を出し合ってみんなで解いてみようというようなことをしています。
こちらの記事 バイオインフォ関連の簡単な問題を解いてみる(1)の続きです。
2番目の問題
データサイエンス研修 生命情報学コース 練習問題 fq00006
問題の引用をする場合は上記コース名と問題番号を記載してください
テキストファイルの入出力のプログラミングを行います。
まず塩基配列をFASTA形式でテキストファイルに保存してください。
このファイル名を何らかの形で指定し、標準入力を介さずに読み込みます。
FASTA形式でなかった場合は、標準エラー出力にメッセージを表示し、実行を止めてください。
問題がなければ、塩基配列を扱うライブラリやモジュールなどを使わずに
独自の文字および文字列処理を行って相補配列に変換、
FASTAヘッダを適当な文字列に変更し、
相補鎖の5'側から3'側に向かう塩基配列を標準出力を利用せず、
別な新規テキストファイルに入力と同じFASTA形式で出力してください。
入力データについては
例えば以下のURLから得られるデータを NM_001167589.fna などと保存して利用してください。
https://www.ncbi.nlm.nih.gov/nuccore/NM_001167589?report=fasta&format=text
シェルスクリプトで解けるのか?
しかもワンライナーで解こうとしているけど大丈夫か?
とりあえずfasta形式のファイルと偽fasta形式(?)のファイルを用意します。
% more sequence.fasta|head -2
>LC511682.1 Homo sapiens CYP1A1 gene, partial sequence
ACCCATCTGAGTTCCTACCTGAACGGTTTCTCACCCCTGATGGTGCTATCGACAAGGTGTTAAGTGAGAA
% more seq_gb.fasta|head -2
LOCUS LC511682 251 bp DNA linear PRI 29-NOV-2019
DEFINITION Homo sapiens CYP1A1 gene, partial sequence.
長いので頭2行だけ表示しました。seq_gb.fasta
は拡張子を.fasta
にしましたが、fasta形式ではなくGenbank形式です。こちらでエラーのテストをします。
では処理を考えましょう。
「このファイル名を何らかの形で指定し、標準入力を介さずに読み込みます。」
最初からわからん...「標準入力を介さずに」ってどういうこと?
コマンドラインの引数にするのかな?それだとワンライナーは無理かもしれない。
途中でupしてもいいということだったので追記していきます。(2022-03-04)