看板 Perl 關於我們 聯絡資訊
※ 引述《adu (^_^)》之銘言: : 想做的類似找出consensus : 原始的資料是已經排列好的字串: : >字串名子 : 字串內容 : 的形式 : === : i.e. : >1F3T.pdb_chainA_s004 : ---------------RFL-EG-----FNTRDALCKKIS : >7ODC.pdb_chainA_s010 : SSFTKDEFD-----CHILDEG-----FTAKDILDQKIN : >1D7K.pdb_chainA_s003 : -----EEFD-----CHFLDEG-----FTAKDILDQKIN : === : 內容的長度都一樣。(-算第27個字母) : 想將相同定位點的字元做統計 : 如倒數第四個分別是K, Q, Q, 可以算出2/3Q, 1/3K,然後輸出Q : 倒數第三K, K, K,就直接輸出K, : 想請板大提供一些方法>< : 謝謝~~ 不知道這樣寫是否符合你的要求? my @out = (); my @cnt = (); while (<DATA>) { next if /^>/; chomp; my @c = split //; for my $i (0 .. $#c) { my $c = $c[$i]; ++$cnt[$i]{$c}; for ($out[$i]) { # alias $_ = $c if !defined($_) || $cnt[$i]{$c} > $cnt[$i]{$_}; } } } print join '', @out; *Write only 版本:-) use List::Util qw(reduce); my @c = (); sub { ++$c[$_]{$_[$_]} for 0 .. $#_ } ->( split // ) for sub { chomp @_; @_ } ->( grep { !/^>/ } <DATA> ); print reduce { !defined($a) ? $b : $_->{$b} > $_->{$a} ? $b : $a } undef, keys(%$_) for @c; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.178.211
adu:alias? 謝謝f大! 02/24 10:49
※ 編輯: frank1983 來自: 61.230.178.211 (02/26 03:22)
paulpu:ㄅ錯看喔...箭頭丟進去 reduce排... 02/26 04:30