Data-Stag

 view release on metacpan or  search on metacpan

t/bio.x  view on Meta::CPAN

    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 )