Skip to content

Commit

Permalink
Fixed bug where first cluster (if it was a singlet) was being printed…
Browse files Browse the repository at this point in the history
… twice. Also, fixed bug where the last cluster was never being printed. Finally, reconfigured the code so the logic was sane.
  • Loading branch information
jaredbischof committed Mar 20, 2013
1 parent 7342dbc commit 4a6c2f8
Showing 1 changed file with 23 additions and 20 deletions.
43 changes: 23 additions & 20 deletions bin/process_clusters
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ open IN, "<".$file or die $!;
open MAP, ">".$mapping or die $!;
open FNA, ">".$fasta or die $!;

my $cur_cluster = "";
my $cur_seq_id = "";
my $cur_seq = "";
my $prev_cluster = "";
my $prev_seq_id = "";
my $prev_seq = "";
my @ids = ();
my @pids = ();

Expand All @@ -44,30 +44,33 @@ while (my $l = <IN>) {

if ($id_line =~ /^(\d+)\|(\d+\.\d\%|\*)\|(\S+)/) {
my ($cid,$pid,$seq_id) = ($1,$2,$3);
if ($pid ne "*") {
if ($pid eq "*") {
if (scalar @ids) {
print MAP $prefix.$prev_cluster."\t".$prev_seq_id."\t".join(",",@ids)."\t".join(",",@pids)."\n";
print FNA ">".$prefix.$prev_cluster."\n$prev_seq\n";
} elsif ($prev_seq_id) {
print FNA ">$prev_seq_id\n$prev_seq\n";
}
$prev_cluster = $cid;
$prev_seq_id = $seq_id;
$prev_seq = $seq;
@ids = ();
@pids = ();
} else {
push @ids, $seq_id;
push @pids, $pid;
next;
} else {
unless (scalar @ids) {
if ($cur_seq_id) {
print FNA ">$cur_seq_id\n$cur_seq\n";
} else {
print FNA ">$seq_id\n$seq\n";
}
} else {
print MAP $prefix.$cur_cluster."\t".$cur_seq_id."\t".join(",",@ids)."\t".join(",",@pids)."\n";
print FNA ">".$prefix.$cur_cluster."\n$cur_seq\n";
}
}
$cur_cluster = $cid;
$cur_seq_id = $seq_id;
$cur_seq = $seq;
@ids = ();
@pids = ();
}
}

if (scalar @ids) {
print MAP $prefix.$prev_cluster."\t".$prev_seq_id."\t".join(",",@ids)."\t".join(",",@pids)."\n";
print FNA ">".$prefix.$prev_cluster."\n$prev_seq\n";
} elsif ($prev_seq_id) {
print FNA ">$prev_seq_id\n$prev_seq\n";
}

close(IN);
close(MAP);
close(FNA);

0 comments on commit 4a6c2f8

Please sign in to comment.