File: ImportText.pl

package info (click to toggle)
radiant 2.7%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,048 kB
  • sloc: perl: 5,393; sh: 323; makefile: 35
file content (123 lines) | stat: -rwxr-xr-x 1,898 bytes parent folder | download | duplicates (3)
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
#!/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', 'text.krona.html');
setOption('name', 'all');

my @options =
qw(
	out
	name
	noMag
	combine
	url
);

getKronaOptions(@options);

if
(
	@ARGV < 1
)
{
	printUsage
	(
		'Creates a Krona chart from text files listing quantities and
lineages.',
		'text',
		'Tab-delimited text file. Each line should be a number followed by a
list of wedges to contribute to (starting from the highest level). If no wedges
are listed (and just a quantity is given), it will contribute to the top level.
If the same lineage is listed more than once, the values will be added.
Quantities can be omitted if -q is specified. Lines beginning with "#" will be
ignored.',
		0,
		1,
		\@options
	);
	
	exit 0;
}

my $tree = newTree();
my @datasetNames;
my $set = 0;

foreach my $input ( @ARGV )
{
	my ($fileName, $magFile, $name) = parseDataset($input);
	
	if ( ! getOption('combine') )
	{
		push @datasetNames, $name;
	}
	
	open INFILE, "<$fileName" or die $!;
	
	while ( <INFILE> )
	{
		if ( /^#/ )
		{
			next;
		}
		
		chomp;
		
		my @lineage = split /\t/;
		my $magnitude;
		
		if ( getOption('noMag') )
		{
			$magnitude = 1;
		}
		else
		{
			$magnitude = shift @lineage;
		}
		
		addByLineage($tree, $set, \@lineage, undef, $magnitude);
	}
	
	if ( ! getOption('combine') )
	{
		$set++;
	}
	
	close INFILE;
}

my @attributeNames =
(
	'magnitude',
	'magnitudeUnassigned'
);

my @attributeDisplayNames =
(
	'Total',
	'Unassigned'
);

writeTree
(
	$tree,
	\@attributeNames,
	\@attributeDisplayNames,
	\@datasetNames
);