#! /usr/bin/perl use strict; print "Enter the csfasta file name: "; my $inputFile1 = ; chomp ($inputFile1); if (not (-e "$inputFile1")) { print "File does not exist. Exiting program\n"; exit; } print "Enter the quality score file name: "; my $inputFile2 = ; chomp ($inputFile2); if (not (-e "$inputFile2")) { print "File does not exist. Exiting program\n"; exit; } #my $inputFile2 = "QV_1.qual"; #my $inputFile1 = "CS_1.csfasta"; print "Enter the number of nodes available:"; my $grids = ; print "Enter the reference genome file name: "; my $ref = ; chomp ($ref); print "Enter the output base name: "; my $out = ; chomp ($out); print "Enter the number of mismatches: "; my $mismatch = ; chomp ($mismatch); print "Enter the RAM available: "; my $reads = ; chomp ($reads); print "Enter the number of threads: "; my $threads = ; chomp ($threads); print "Splitting csfasta...\n"; my ($totalLen, $length) = divideCS(); print "Splitting quality file\n"; divideQual(); print "Creating preference files...\n"; makeOption($totalLen, $length); sub divideCS { open (INPUT, "$inputFile1"); my $line; my $numLines = 1; my $header = ''; my $i; my $j; my $len; my $filename; my $numheader = 0; while (defined ($line = )) { if ($line=~/#/) { $header .=$line; $numheader++; } else { last; } } #print $header, "\n\n"; while (defined ($line = )) { $numLines++; } $numLines = $numLines/2; my $len; $len = int ($numLines/$grids); #print $len, " :len\n"; seek (INPUT, 0, 0); my $i; for ($i = 0; $i < $numheader; $i++) { $line = ; } for ($j = 1; $j < $grids; $j++) { $filename = "CS_".$j.".csfasta"; open (INPUT1, ">$filename"); #print $header, "\n"; print INPUT1 $header; #print $j, "\n"; for ($i = 0; $i < $len; $i++) { $line = ; print INPUT1 $line; $line = ; print INPUT1 $line; } close INPUT1; } $filename = "CS_".$j.".csfasta"; open (INPUT1, ">$filename"); print INPUT1 $header; while (defined ($line = )) { print INPUT1 $line; } close INPUT1; close INPUT; return ($numLines, $len); } sub divideQual { open (INPUT, "$inputFile2"); my $line; my $numLines = 1; my $header = ""; my $i; my $j; my $len; my $filename; my $numheader = 0; while (defined ($line = )) { if ($line =~/#/) { $header .=$line; $numheader++; } else { last; } } #print $numheader, "\n"; #print $header, "\n\n"; while (defined ($line = )) { $numLines++; } $numLines = $numLines/2; my $len; $len = int ($numLines/$grids); #print $len, " :len\n"; seek (INPUT, 0, 0); for ($i = 0; $i < $numheader; $i++) { $line = ; } for ($j = 1; $j < $grids; $j++) { $filename = "QV_".$j.".qual"; open (INPUT1, ">$filename"); #print $header, "\n"; print INPUT1 $header; for ($i = 0; $i < $len; $i++) { $line = ; print INPUT1 $line; $line = ; print INPUT1 $line; } close INPUT1; } $filename = "QV_".$j.".qual"; open (INPUT1, ">$filename"); print INPUT1 $header; while (defined ($line = )) { print INPUT1 $line; } close INPUT1; close INPUT; } sub makeOption { my $total = shift; my $len = shift; my $i; my $start; my $inputFile; for ($i = 1; $i <= $grids; $i++) { $start = ($i - 1) * $len; $inputFile = "part$i.pref"; open (INPUT, ">$inputFile"); print INPUT "$ref\n"; print INPUT "CS_$i.csfasta\n"; print INPUT "QV_$i.qual\n"; print INPUT "$out$i\n"; print INPUT "$mismatch\n"; print INPUT "$reads\n"; print INPUT "$threads\n"; print INPUT "false\n"; print INPUT "false\n"; print INPUT "$start\n"; close INPUT; } }