Script for ChromoPainter
- Post by: EEPuckett
- December 8, 2014
- Comments off
I’m new to Perl so this may not be the most elegant script. The script converts fastPHASE output into a ChromoPainter input file. The for loop makes an input file for each scaffold for which my data maps to (in my case 284 scaffolds of the polar bear genome).
#!/usr/bin/perl use strict; use warnings; use diagnostics; my($infile, $phasefile, $Chromofile, $constant, $i); foreach my $chr (1..284){ #1 to 284 b/c my data maps to scaffolds that are named numerically and range from 1 to 284, non exclusive) $constant = "0 0\n"; $infile="batch_1.scaffold".$chr.".phase.inp"; #Exported fastPHASE input file (.inp) for each scaffold from STACKS $phasefile="Scaf".$chr."._hapguess_switch.out"; #_hapguess_switch.out is output from fastPHASE $Chromofile="Scaf".$chr.".phase"; if (-e $infile && $phasefile) { #Using -e flag on infile and phasefile names to skip over any scaffold numbers (between 1-284) where my data does not map to; ex: no data on scaffold 100 open (INFILE, '+<', "$infile"); open (PHASEFILE, '+<', "$phasefile"); open (CHROMOFILE, '>>', "$Chromofile"); print CHROMOFILE ($constant); #Prints a 0 on the first line of the Chromofile, then moves to next line my @infile = ; my @phasefile = ; print CHROMOFILE @infile[0..3]; #Prints first four lines of fastPHASE input file (num samples, num loci, loci bp position on scaffold, and a row of "S" * num loci) print CHROMOFILE @phasefile[0..187]; #I have 94 samples (diploid); therefore, 188 haplotype lines when -Z flag used in fastPHASE. This prints all lines of the file fastPHASE output to ChromoPainter input file. close INFILE; close PHASEFILE; close CHROMOFILE; } }
Categories: Uncategorized
Tagged: Bioinformatics, ChromoPainter, Data Analysis, fastPHASE, Perl