Skip to content

Commit 7f5e0ef

Browse files
committed
MLST Legend + ParSNP support
1 parent b641699 commit 7f5e0ef

File tree

2 files changed

+48
-8
lines changed

2 files changed

+48
-8
lines changed

bin/nullarbor.pl

+17-7
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@
100100
my $set = Nullarbor::IsolateSet->new();
101101
$set->load($input);
102102
msg("Loaded", $set->num, "isolates:", $set->ids);
103+
$input = File::Spec->rel2abs($input);
103104

104105
if (not $mlst) {
105106
require_exe( qw'any2fasta.pl bash mash sort head' );
@@ -204,7 +205,7 @@
204205
};
205206

206207
$make{'report'} = {
207-
DEP => 'report/index.html',
208+
DEP => [ 'report/index.html' ],
208209
};
209210

210211
$make{'report/index.html'} = {
@@ -213,7 +214,7 @@
213214
};
214215

215216
$make{'report/index.md'} = {
216-
DEP => [ $REF, qw(yields kraken abricate mlst.tab mlst2.tab denovo.tab core.aln tree.gif distances.tab roary/roary.png) ],
217+
DEP => [ $REF, qw(yields kraken abricate mlst.tab mlst2.tab denovo.tab parsnp core.aln tree.gif distances.tab roary) ],
217218
CMD => "$FindBin::RealBin/nullarbor.pl --name $name --report --indir $outdir --outdir $outdir/report",
218219
};
219220

@@ -361,7 +362,7 @@
361362
};
362363

363364
$make{"roary"} = {
364-
DEP => "roary/roary.png",
365+
DEP => [ "roary/roary.png" ],
365366
};
366367

367368
$make{"roary/roary.png"} = {
@@ -430,17 +431,26 @@
430431
CMD => "afa-pairwise.pl $make_dep > $make_target",
431432
};
432433

433-
my $ptree = "parsnp/parsnp.tree";
434434
$make{"parsnp"} = {
435-
DEP => $ptree,
435+
DEP => "parsnp/parsnp.png",
436436
};
437437

438-
$make{$ptree} = {
438+
$make{"parsnp/parsnp.png"} = {
439+
DEP => "parsnp/parsnp.svg",
440+
CMD => "convert $make_dep $make_target"
441+
};
442+
443+
$make{"parsnp/parsnp.svg"} = {
444+
DEP => "parsnp/parsnp.tree",
445+
CMD => "nw_display -S -s -w 1024 -l 'font-size:12' -i 'opacity:0' -b 'opacity:0' $make_dep > $make_target",
446+
};
447+
448+
$make{"parsnp/parsnp.tree"} = {
439449
DEP => [ $REF, map { "$_/$CTG" } $set->ids ],
440450
CMD => [
441451
"mkdir -p parsnp/genomes",
442452
(map { "ln -sf $outdir/$_/contigs.fa $outdir/parsnp/genomes/$_.fa" } $set->ids),
443-
"parsnp -p $threads -c -d parsnp/genomes -r $REF -o parsnp",
453+
"parsnp -x -p $threads -c -d parsnp/genomes -r $REF -o parsnp",
444454
],
445455
};
446456

perl5/Nullarbor/Report.pm

+31-1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,15 @@ sub generate {
6262
#...........................................................................................
6363
# MLST
6464

65+
my $mlst_legend = [
66+
[ "Legend", "Meaning" ],
67+
[ "n", "exact intact allele" ],
68+
[ "~n", "novel allele similar to n" ],
69+
[ "n?", "partial match to known allele" ],
70+
[ "n,m", "multiple alleles" ],
71+
[ "-", "allele missing" ],
72+
];
73+
6574
my $mlst = load_tabular(-file=>"$indir/mlst.tab", -sep=>"\t", -header=>1);
6675
# print STDERR Dumper($mlst);
6776

@@ -81,6 +90,8 @@ sub generate {
8190
heading($fh, "MLST");
8291
save_tabular("$outdir/$name.mlst.csv", $mlst, ",");
8392
print $fh "Download: [$name.mlst.csv]($name.mlst.csv)\n";
93+
print $fh table_to_markdown($mlst_legend, 1);
94+
print $fh "<P>\n";
8495
print $fh table_to_markdown($mlst, 1);
8596

8697
#...........................................................................................
@@ -108,6 +119,8 @@ sub generate {
108119
unshift @{$mlst2}, [ "Isolate", "Scheme", "Sequence<BR>Type", ("Allele")x($width-3), "Quality" ];
109120

110121
heading($fh, "MLST (new)");
122+
print $fh table_to_markdown($mlst_legend, 1);
123+
print $fh "<P>\n";
111124
print $fh table_to_markdown($mlst2, 1);
112125

113126
#...........................................................................................
@@ -380,6 +393,7 @@ sub generate {
380393
my $snps = load_tabular(-file=>"$indir/distances.tab", -sep=>"\t");
381394
print $fh table_to_markdown($snps, 1);
382395

396+
383397
#...........................................................................................
384398
# Core SNP density
385399
my $ref_fai = "$indir/ref.fa.fai";
@@ -408,6 +422,7 @@ sub generate {
408422
close HIST;
409423
}
410424

425+
411426
#...........................................................................................
412427
# Pan Genome
413428
my $roary_ss = "roary/summary_statistics.txt";
@@ -425,13 +440,28 @@ sub generate {
425440
}
426441
}
427442

443+
#...........................................................................................
444+
# ParSNP
445+
heading($fh, "ParSNP");
446+
447+
print $fh "ParSNP aligns assembled contigs and does simplistic recombination filtering\n";
448+
print $fh qx(grep 'Total coverage among' $indir/parsnp/parsnpAligner.log);
449+
450+
copy("$indir/parsnp/parsnp.tree", "$outdir/$name.parsnp.tree");
451+
print $fh "Download: [$name.parsnp.tree]($name.parsnp.tree)\n";
452+
453+
copy("$indir/parsnp/parsnp.png", "$outdir/$name.parsnp.png");
454+
print $fh "![ParSNP tree]($name.parsnp.png)\n";
455+
428456
#...........................................................................................
429457
# Software
430458
heading($fh, "Software");
431459
my @inv = ( [ "Tool", "Version" ] );
432-
for my $tool (qw(nullarbor.pl mlst abricate snippy kraken samtools freebayes megahit prokka roary)) {
460+
for my $tool (qw(nullarbor.pl mlst abricate snippy kraken samtools freebayes megahit prokka roary parsnp spades.py)) {
433461
# print $fh "- $tool ```", qx($tool --version 2>&1), "```\n";
434462
my($ver) = qx($tool --version 2>&1);
463+
# ($ver) = qx($tool -V 2>&1) unless $ver =~ m/$tool/i;
464+
# ($ver) = qx($tool 2>&1) unless $ver =~ m/$tool/i;
435465
chomp $ver;
436466
$ver =~ s/$tool\s*//i;
437467
$ver =~ s/version\s*//i;

0 commit comments

Comments
 (0)