1. 程式人生 > >篩選染色體連續區域的策略

篩選染色體連續區域的策略

正則匹配 for 斷點 子函數 foreach bsp stty 後繼 get

要求:篩選染色體上符合要求的連續的純合突變區域。perl (/(ㄒoㄒ)/~~現在只會用perl)

笨辦法,正則匹配:

舉例子1:

my $info=(HOMA,871334,HET,874950,HOMA,876499,HOMA,887643);

while($info =~ /((HOMA,(\d+),){2,})/g){
print "$1\n"; ##$1是輸出大括號內的內容,所有符合要求的具有連續連續至少兩次純合突變的區域被篩選出來啦
}

舉例子2:

因為是按照染色體的位置順序依次判斷,預先設置一個變量來判斷“區域中斷點”,先設置為空,將讀進去的區域第一個符合要求的變量賦給他,不同即為斷點,判斷之前存儲的區域是否符合要求即可,然後從斷點後繼續篩選,將符合要求的純合突變賦值給“斷點”。。。

my @getpos=();##存儲連續的homa位置信息
my $lasttype="";

foreach my $pos(@sortpos){##排好順序的位置
my $geno=$$hash{$chr}{$pos}{‘geno‘};
if($geno ne $lasttype){
if($lasttype eq ""){
if($geno eq ‘HOMA‘){
push @getpos,$pos;
$lasttype=‘HOMA‘;
next;
}
}else{
check();##子函數檢查模塊
$lasttype="";
@getpos=();
}
}else{
push @getpos,$pos;
}
}

bingo!!!

篩選染色體連續區域的策略