Data-Stag
view release on metacpan or search on metacpan
my $tree = shift;
return sub {
my $f = shift;
substr(
findSubTreeVal($tree, "residues"),
findSubTreeVal($f, "seq_start"),
fLen($f)
)
}
}
sub translate {
my $seq = shift;
my %table = @_;
$seq =~ s/(.{3})/$1 /g;
my @codons = split(' ',$seq);
join('',
map {$table{$_} || '?'} @codons);
}
sub mk_translate {
my %table = @_;
return sub {
my $seq = shift;
return translate($seq, %table);
}
}
my $subSeq = mk_subSeq($tree);
my ($f) = findSubTree($tree, 'feature');
print $subSeq->($f);
my $translate = mk_translate(atg=>'M');
print $translate->($subSeq->($f));
sub intersects {
my ($f1, $f2) = @_;
printf "\nc1=%s %s\n", ($f1.'seq_start'), ($f1.'seq_end');
printf "\nc2=%s %s\n", ($f2.'seq_start'), ($f2.'seq_end');
($f1 . 'seq_start') <= ($f2 . 'seq_end') &&
($f2 . 'seq_start') <= ($f1 . 'seq_end');
}
sub mk_intersects {
my $f = shift;
return sub {
my $f2 = shift;
intersects($f, $f2);
}
}
sub project {
my ($f1, $f2) = @_;
}
sub composite {
my $fset = shift;
return
Node(gene=>[
[transcript=>[
]
],
[funcdata=>[
[function=>'tm receptor'],
],
],
]
);
}
my $intersects_f1 = mk_intersects($f);
print 111 if $intersects_f1->($f);
print 222 if $intersects_f1->(Node(feature=>[
[seq_start=>122],
[seq_end=>222]
]
));
my $tree1 =
[
biosequence=>[
[residues=>'atgtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'],
[range=>[
[seq_start=>10000],
[seq_end=>20000],
[seq_strand=>+1],
],
],
[featureset=>[
[feature=>[
[feature_type=>'transcript'],
[gene_ref=>'xyz'],
[location=>[
[seq_start=>0],
[seq_end=>10],
[seq_strand=>+1],
],
],
[location=>[
[seq_start=>20],
[seq_end=>30],
[seq_strand=>+1],
],
],
[location=>[
[seq_start=>40],
[seq_end=>50],
[seq_strand=>+1],
],
],
],
],
[feature=>[
[feature_type=>'cds'],
[gene_ref=>'xyz'],
[location=>[
[seq_start=>5],
[seq_end=>10],
[seq_strand=>+1],
],
],
[location=>[
[seq_start=>20],
[seq_end=>30],
( run in 1.018 second using v1.01-cache-2.11-cpan-6aa56a78535 )