条件に一致した塩基配列を含むデータの抽出方法を教えて下さい。(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で質問しましょう!
似たような質問が見つかりました
- 生物学 塩基配列を解析する意味は? 1 2023/02/02 00:51
- 高校 生物の問題で下の塩基配列は、DNAを構成する2本のヌクレオチド鎖のうち、一方の塩基配列の一部を示した 2 2022/05/08 17:01
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- Excel(エクセル) excel vbaの配列なんですが・・・ 1 2022/12/26 18:50
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Microsoft ASP プログラミング関係で質問です。 3 2022/10/11 16:06
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クラスに配列を渡す方法
-
VBScript 配列
-
perl 初等プログラミングについて
-
Strawberry Perl for Windows ...
-
DataGridViewに配列の値を表示...
-
参照配列の要素数の求め方は?
-
Dim flag(4) as boolean で配列...
-
エクセルVBAでTransposeの不思議
-
Excel VBA ユーザーフォームの...
-
VBAのautofilter、criteriaの配...
-
VB6で配列の最大値を簡単に求め...
-
perlで2次元配列をサブルーチ...
-
リストボックスに縦スクロール...
-
文字の整列(printf)
-
プログラミングについて。 1つ...
-
画面を強制的に再描画させる方法
-
VBのReturnの使い方
-
DoEventsが必要な理由について
-
pythonでファイルのコメント行...
-
DOSコマンドのループ内のTIMEコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのautofilter、criteriaの配...
-
二次元配列のインデックスについて
-
リストボックスに縦スクロール...
-
Excel VBA ユーザーフォームの...
-
マクロ Publicでの配列定義
-
エクセルVBAでTransposeの不思議
-
二次元配列における要素数のは...
-
Strawberry Perl for Windows ...
-
perlで2次元配列をサブルーチ...
-
クラスに配列を渡す方法
-
Dim flag(4) as boolean で配列...
-
文字の整列(printf)
-
perlで配列の要素が空なのを知...
-
jcode->jfold で禁則処理
-
VB6で配列の最大値を簡単に求め...
-
perl 配列の要素数について
-
ファイル名に日付・時刻を付与...
-
チェックボックスのperlでの値...
-
組み合わせについての質問です...
-
配列を初期化する時ってどうす...
おすすめ情報