
条件に一致した塩基配列を含むデータの抽出方法を教えて下さい。(perl)
下記のように、塩基配列(ACTTC…)と、その上に配列名(>id_000)が
数百万配列ならんだデータがあります。
(fasta形式)
>id_001
CGCTGCCGGGGAACGGTCTGGTCAGGGATCTATCATGAGG
CGTGGGAATTTCGCCCCGGACAGTGAGGATTTGGGTGCTT
CCTTTGCTGTGATTTTAAGTTACCTCACCAAA
>id_002
GCAGTCCTTCGCCTGAAGTGCAGGACGGGTAGTAACGTAG
AGAGATCTTGCTTAGTTACTACTGC
>id_003
・
・
この中から、指定した塩基配列(例:TGAAGTGCA)を含むデータを、
下記のように別名のファイルに、配列名と塩基配列を一緒に出力したいのですが、
どのようにすればよいかが、分からず困っています。
>id_002
GCAGTCCTTCGCCTGAAGTGCAGGACGGGTAGTAACGTAG
AGAGATCTTGCTTAGTTACTACTGC
>id_015
ATGTGAAGTGCAGTGTGTTAGT
・
・
「BioPerl」のSeqIOオブジェクト?を使用することで、
何とか同じ結果を出せるようにはなったのですが、
実際に、どのような処理がされているのかは、理解できていません。
今後、色々なパターンに活用できるよう、perlだけの記述では
どのような記述をすればよいのか、理解したいのです。
perl初心者なので、より基本的な記述だと助かります。
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
少々泥臭いですすみません
#!/usr/bin/perl
# 使い方の例
# perl このスクリプト.pl TGAAGTGCA
# TODO 要件に合わせて改造
$pattern = (@ARGV == 1)? $ARGV[0]: 'TGAAGTGCA';
open(F, 'foo.fasta') || die "no file error";
$cache = '';
$match = 0;
foreach (<F>) {
# シーケンスデータの始まり
if (/^>/) {
$match = 0;
$cache = $_;
next;
}
# シーケンス文字列に該当パターンが含まれるか検証
if (!$match && /$pattern/) {
$match = 1;
print $cache; # ここまでのシーケンスデータを出力
}
# 入力行を出力またはキャッシュ
if ($match) { print $_; } else { $cache .= $_; }
}
close(F);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlで2次元配列をサブルーチ...
-
エクセルVBAでTransposeの不思議
-
二次元配列のインデックスについて
-
マクロ Publicでの配列定義
-
perl 配列の要素数について
-
可変長配列を、動的確保した固...
-
CSVファイルの特定の行だけを読...
-
範囲指定したセルを1つずつ飛...
-
画面を強制的に再描画させる方法
-
UWSCの終了の仕方
-
vb.netです。2次元配列の要素を...
-
VBAでの一時停止と再開の方法
-
Escキーを押すと、中断する時と...
-
VBAで3秒だけ時間を止めたい
-
ハッシュマーク以降のアドレス取得
-
文字列を変数名として扱う方法
-
英語でのシャープとコメの呼び...
-
エクセルの当番表を作っていま...
-
VBのReturnの使い方
-
UWSCに制限時間を付けたいです
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
文字の整列(printf)
-
クラスに配列を渡す方法
-
Dim flag(4) as boolean で配列...
-
エクセルVBAでTransposeの不思議
-
二次元配列のインデックスについて
-
Excel VBA ユーザーフォームの...
-
Strawberry Perl for Windows ...
-
バイナリデータの操作
-
perlで配列の要素が空なのを知...
-
perlの配列追加について
-
perl 配列の要素数について
-
グループ分けの仕方について
-
最後のフィールドを抜き出したい。
-
リストボックスに縦スクロール...
-
チェックボックスのperlでの値...
-
二つの配列から連想配列を作る方法
-
変則的なスタック配列を使う
-
二次元配列における要素数のは...
-
配列を使わずに、数字(連番)...
おすすめ情報