1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
#!/usr/bin/env perl
# Copyright © 2011, Battelle National Biodefense Institute (BNBI);
# all rights reserved. Authored by: Brian Ondov, Nicholas Bergman, and
# Adam Phillippy
#
# See the LICENSE.txt file included with this software for license information.
use strict;
BEGIN
{
use File::Basename;
use Cwd 'abs_path';
use lib dirname(abs_path($0)) . "/../lib";
use KronaTools;
}
setOption('out', 'fcp.krona.html');
setOption('name', 'root');
my @options =
qw(
out
name
combine
depth
url
postUrl
);
getKronaOptions(@options);
if
(
@ARGV < 1
)
{
printUsage
(
'Creates a Krona chart based on the results of FCP (Fragment Classification
Package).',
'fcp_output',
'Results of running any FCP classification tool (except BLASTN.py, which only
outputs raw BLAST results).',
1,
1,
\@options
);
exit 0;
}
my $tree = newTree();
my @datasetNames;
my $set = 0;
my $useMag;
foreach my $input ( @ARGV )
{
my ($fileName, $magFile, $name) = parseDataset($input);
if ( ! getOption('combine') )
{
push @datasetNames, $name;
}
my %magnitudes;
my $totalMagnitude;
if ( defined $magFile )
{
print " Loading magnitudes from $magFile...\n";
loadMagnitudes($magFile, \%magnitudes);
$useMag = 1;
}
print " Reading classifications from $fileName...\n";
open INFILE, "<$fileName" or die $!;
<INFILE>; # eat header
while ( my $line = <INFILE> )
{
chomp $line;
my ($readID, $classification) = split /\t/, $line;
my @lineage = split /;/, $classification;
my $magnitude = 1;
if ( %magnitudes )
{
if ( defined $magnitudes{$readID} )
{
$magnitude = $magnitudes{$readID};
}
else
{
ktWarn("Query ID \"$readID\" doesn't exist in magnitude file; using 1.");
}
}
addByLineage($tree, $set, \@lineage, $readID, $magnitude);
}
if ( ! getOption('combine') )
{
$set++;
}
close INFILE;
}
my @attributeNames =
(
'magnitude',
'magnitudeUnassigned',
'count',
'unassigned'
);
my @attributeDisplayNames =
(
$useMag ? 'Magnitude' : undef,
$useMag ? 'Unassigned magnitude' : undef,
'Count',
'Unassigned'
);
writeTree
(
$tree,
\@attributeNames,
\@attributeDisplayNames,
\@datasetNames,
);
|