#!/usr/bin/perl # c13no_unfold # # # syntax: peak_duplicate_dimer input_file > output_file # loop through input_file line by line while (<>){ # split line into fields, store in array of $fld variables @fld = split; #delimits by whitespace #print "$fld[10] $fld[11] \n"; # identify and print header lines without change if(/#/){ print "$_"; next; } if($fld[0] > 0){ #print "$fld[0] \n"; $peak_num = $fld[0] + 10000; #print "$peak_num \n"; } # select peaks based on combination of 13C and 1H shift if($fld[10] < 2500 && $fld[10] > 0 && $fld[11] > 2500 && $fld[11] > 0){ #print "$fld[10] $fld[11] $fld[12] \n"; $atom_number1 = $fld[10] + 3000; $atom_number2 = $fld[11] - 3000; $atom_number3 = $fld[12] + 3000; #print "$atom_number1 $atom_number2 $atom_number3\n"; } elsif($fld[10] < 2500 && $fld[10] > 0 && $fld[11] < 2500 && $fld[11] > 0){ $atom_number1 = $fld[10] + 3000; $atom_number2 = $fld[11] + 3000; $atom_number3 = $fld[12] + 3000; #print "$atom_number1 $atom_number2 $atom_number3\n"; } elsif($fld[10] < 2500 && $fld[10] > 0 && $fld[11] == 0){ $atom_number1 = $fld[10] + 3000; $atom_number2 = $fld[11]; $atom_number3 = $fld[12] + 3000; #print "$atom_number1 $atom_number2 $atom_number3\n"; } else{ $atom_number1 = $fld[10]; $atom_number2 = $fld[11]; $atom_number3 = $fld[12]; #print "$atom_number1 $atom_number2 $atom_number3\n"; } # write out each peak with correct 13C shift $~ = "PEAKS"; write; } #define format for output format PEAKS = @>>>> @##.### @##.### @##.### @ @ @>>>>>>>>> @>>>>>>> @ @ @>>> @>>> @>>> 0 $peak_num, $fld[1], $fld[2], $fld[3], $fld[4], $fld[5], $fld[6], $fld[7], $fld[8], $fld[9], $atom_number1, $atom_number2, $atom_number3 .