从光谱推断蛋白质
作者:L. Grondin
http://rosalind.info/problems/spec/
样本输入
3524.8542 3710.9335 3841.974 3970.0326 4057.0646
样本输出
WMQS
源代码:spec-grondilu.pl
use v6;
constant monoisotopic-mass-table = Hash.new: <
A 71.03711
C 103.00919
D 115.02694
E 129.04259
F 147.06841
G 57.02146
H 137.05891
I 113.08406
K 128.09496
L 113.08406
M 131.04049
N 114.04293
P 97.05276
Q 128.05858
R 156.10111
S 87.03203
T 101.04768
V 99.06841
W 186.07931
Y 163.06333
>;
my @default-data = qw:to/END/;
3524.8542
3710.9335
3841.974
3970.0326
4057.0646
END
sub spec(@weight, :$accuracy = .01) {
my @a = my @b = sort *.Num, @weight;
join '', gather
for @b[1..*] Z- @b[0..*] -> $mass {
take .key given
first { abs($_.value - $mass) < $accuracy },
monoisotopic-mass-table;
}
}
sub MAIN($input-file = Nil) {
my @weights = $input-file ?? $input-file.IO.lines !! @default-data;
say spec @weights;
}
Perl 6 示例