if( scalar @ARGV < 6 ) {
    print "fix_adapter_trimming.pl <input_fastq_mate1> <input_fastq_mate2> [read_length] [minimum_fragment_size] <output_fastq_mate1> <output_fastq_mate2>\n";
} else {

$input_mate1 = shift(@ARGV);
$input_mate2 = shift(@ARGV);
$read_length = shift(@ARGV);
$min_size = shift(@ARGV);
$output_mate1 = shift(@ARGV);
$output_mate2 = shift(@ARGV);

$total_pairs = 0;
$adapter_dimers = 0;
$too_small = 0;
$trimmed = 0;

open( IN1, "<".$input_mate1 );
open( IN2, "<".$input_mate2 );
open( OUT1, ">".$output_mate1 );
open( OUT2, ">".$output_mate2 );

while( $L1_1 = <IN1> ) {
    $L1_2 = <IN1>;
    $L1_3 = <IN1>;
    $L1_4 = <IN1>;
    $L2_1 = <IN2>;
    $L2_2 = <IN2>;
    $L2_3 = <IN2>;
    $L2_4 = <IN2>;

    chomp( $L1_1 );
    chomp( $L1_2 );
    chomp( $L1_3 );
    chomp( $L1_4 );
    chomp( $L2_1 );
    chomp( $L2_2 );
    chomp( $L2_3 );
    chomp( $L2_4 );

    if( length( $L1_2 ) < $min_size || length( $L2_2 ) < $min_size ) {
	if( length( $L1_2 ) == 0 || length( $L2_2 ) == 0 ) {
	    $adapter_dimers++;
	} else {
	    $too_small++;
	}
    } else {
	$this_trimmed = 0;

        @read1 = split( / /, $L1_1 );
	if( length( $L1_2 ) < $read_length ) {
	    print OUT1 $read1[0]."\n";
            print OUT1 substr( $L1_2, 0, -1 )."\n";
            print OUT1 $L1_3."\n";
            print OUT1 substr( $L1_4, 0, -1 )."\n";
	    $this_trimmed = 1;
	} else {
            print OUT1 $read1[0]."\n";
            print OUT1 $L1_2."\n";
            print OUT1 $L1_3."\n";
            print OUT1 $L1_4."\n";
	}

        @read2 = split( / /, $L2_1 );
        if( length( $L2_2 ) < $read_length ) {
            print OUT2 $read2[0]."\n";
            print OUT2 substr( $L2_2, 0, -1 )."\n";
            print OUT2 $L2_3."\n";
            print OUT2 substr( $L2_4, 0, -1 )."\n";
            $this_trimmed = 1;
        } else {
            print OUT2 $read2[0]."\n";
            print OUT2 $L2_2."\n";
            print OUT2 $L2_3."\n";
            print OUT2 $L2_4."\n";
        }

	if( $this_trimmed == 1 ) {
	    $trimmed++;
	}
    }

    $total_pairs++;
}

close( IN1 );
close( IN2 );
close( OUT1 );
close( OUT2 );

print "Total Pairs\t".$total_pairs."\n";
print "Trimmed\t".$trimmed."\n";
print "Too Small (<".$min_size." bp)\t".$too_small."\n";
print "Adapter Dimers\t".$adapter_dimers."\n";

}
