Bio-Palantir
view release on metacpan or search on metacpan
bin/explore_bgc_domains.pl view on Meta::CPAN
#!/usr/bin/env perl
# PODNAME: explore_bgc_domains.pl
# ABSTRACT: Reports all detected domain signatures for a NRPS/PKS gene cluster
# CONTRIBUTOR: Denis BAURAIN <denis.baurain@uliege.be>
use Modern::Perl '2011';
use autodie;
use Getopt::Euclid qw(:vars);
use JSON::Create qw(create_json);
use aliased 'Bio::Palantir::Explorer::ClusterFasta';
my (%json_for, $i);
my $cluster = ClusterFasta->new( file => $ARGV_fasta_file );
my @lines;
GENE:
for my $gene (sort { $a->rank <=> $b->rank } $cluster->all_genes) {
$json_for{'no-taxonomy'}{Clusters}{++$i}{GenesPlus}{$gene->rank} = {
# uui => $gene->uui,
rank => $gene->rank,
name => $gene->name,
size => $gene->size,
coordinates => (join '-', @{ $gene->coordinates }),
begin => $gene->gene_begin,
end => $gene->gene_end,
};
DOMAIN:
for my $domain (sort { $a->rank <=> $b->rank } $gene->all_domains) {
my $subtype = $domain->subtype // 'NULL';
my $subtype_evalue = $domain->subtype_evalue // 'NULL';
my $subtype_score = $domain->subtype_score // 'NULL';
$json_for{'no-taxonomy'}{Clusters}{$i}{GenesPlus}{$gene->rank}{'Do'
. 'mainsPlus'}{$domain->rank} = {
rank => $domain->rank,
function => $domain->symbol,
size => $domain->size,
coordinates => (join '-', @{ $domain->coordinates }),
begin => $domain->begin,
end => $domain->end,
evalue => $domain->evalue,
bit_score => $domain->score,
subtype => $subtype,
subtype_evalue => $subtype_evalue,
subtype_bit_score => $subtype_score,
};
push @lines, [
'gene' . $gene->rank, $gene->name,
(join '-', @{ $gene->coordinates }),
'domain' . $domain->rank, $domain->symbol,
(join '-', @{ $domain->coordinates }), $domain->size,
$domain->evalue, $domain->score, $subtype,
$subtype_evalue, $subtype_score,
];
}
}
open my $out, '>', $ARGV_outfile . '.json';
say {$out} create_json(\%json_for);
( run in 0.688 second using v1.01-cache-2.11-cpan-b16cb0d3907 )