package ConRead; =head1 NAME ConRead -- Read a Confirmed file and save the pertinent information into the database =head1 SYNOPSIS my $boolean = ConRead -> new; =head1 DESCRIPTION This package reads a Confirmedfile and saves the pertinent data into the database. ConRead, itself, is not an object and cannot be instantiated. =head1 VERSION 0.001 (last update: 6/30/04) =head1 AUTHOR Chet Langin, clangin@siu.edu SIU Plant Biotechnology and Genomics Core-facility =head1 BUGS None known. =head1 SEE ALSO extropy ExtropyConstants ExtropyUtils Extropy::MenuMain =head1 COPYRIGHT Copyright 2004, Chet Langin, All Rights Reserved. This program is free software. You may copy or redistribute it under the same terms as Perl itself. =head1 METHODS The remainder of this document describes the methods available to the programmer. =cut # load the pragmas use warnings; use strict; # load other modules use ExtropyConstants; use ExtropyUtils; =head2 new() my $boolean = ConRead->new; Reads a Confirmed file and loads the data into the database. =cut # package variables # ******************************** new ****************************** sub new { my $self = shift; my $configuration = shift; my $db_manager = shift; my $project = shift; my $file_name = ""; my $file_obtained = TRUE; my $refresh = FALSE; message_start; if($project->{current_project} eq "") { message("You must activate a project, first."); $file_obtained = FALSE; } # if else { # A project has been activated if($project->{con_file} ne "") { message("Data from Confirmed file $project->{con_file}"); message("is already in the database."); if(yes("Refresh the database from this file?")) { $file_name = $project->{con_file}; $refresh = TRUE; } # if elsif(!yes("Delete this existing data in the database and continue?")) { return FALSE; } # elsif } # if my $loop = TRUE; while($loop) { if(!$refresh) { message("Give the /path/to/file.txt."); blank_line; $file_name = prompt("Enter path and Confirmed file name"); } # if if($file_name eq "Q") { $loop = FALSE; $file_obtained = FALSE; } # if elsif(file_name_ok($file_name, $configuration, $db_manager)) { $loop = FALSE; $file_obtained = TRUE; } # elsif else { $file_obtained = FALSE; if(!yes("Try another file name?")) { $loop = FALSE; } # if } # else } # while } # else(a project has been activated) if($file_obtained) { # save the configuration $project->{con_file} = $file_name; $configuration->save($project); press_enter; TRUE; } # if else { press_enter; FALSE; } # else } # new # ******************************** file_name_ok ****************************** =head2 file_name_ok my $boolean = ConRead->file_name_ok($file_name, $configuration, $db_manager); Determines if a file name is acceptable. If the file name is ok, then the Confirmed file is read and the data is stored in MySQL for later use. For internal usage only. =cut # --------------------------------------------------------------------------------- sub file_name_ok { my $file_name = shift; my $configuration = shift; my $db_manager = shift; my $name_ok = TRUE; my $error = FALSE; my $output_error = FALSE; my $number_lines = 0; open(INPUT_FILE, "<", "$file_name") or $error = TRUE; if($error) { message("Could not read $file_name"); message("$!"); $name_ok = FALSE; } # if open(OUTPUT_FILE, ">", "../given_data/iastate_loci.txt") or $output_error = FALSE; if($output_error == TRUE) { message("Could not open output file"); message("$!"); } # if else { # Read the Confirmed input file message("Confirmed file $file_name opened"); message("Connecting to the database."); $db_manager->connect; message("Deleting any previous Confirmed data in the database."); $db_manager->execute("delete from confirmed"); message("Entering data into the database..."); # read the input file my @file_array = ; close INPUT_FILE; $number_lines = scalar(@file_array); # look at each line in the input file for(my $current_line = 0; $current_line < $number_lines; $current_line++) { my $this_line = $file_array[$current_line]; chomp $this_line; my @field_array = split /\t/, $this_line; my $probe = $field_array[0]; my $probe2 = $field_array[1]; my $clone = $field_array[2]; my $mlg = $field_array[3]; my $cM = $field_array[4]; my $method = $field_array[5]; $probe2 =~ s/^Gm_//; $probe2 =~ s/_ctg_.$//; $clone =~ s/^Gm_//; $clone =~ s/b001//; $clone =~ s/_//g; $cM = "-1" if($cM eq ""); $method =~ s/\s$//; if($method =~ /RFLP-1/) { $method = "RFLP-1 soybase locus"; } # if if($method =~ /RFLP-2/) { $method = "RFLP-2 soybase locus"; } # if if($method =~ /RFLP-3/) { $method = "RFLP-3 soybase locus"; } # if # Save the relations in the confirmed database table $db_manager->execute("insert into confirmed values('', '$probe', '$probe2', '$clone', '$mlg', '$cM', '$method')"); # write to iastate.txt file, if appropriate if($cM != -1) { my $sth1 = $db_manager->execute("select locus from loci where locus = 'probe'"); my @row1 = (); my $found = FALSE; while(@row1 = $sth1->fetchrow_array()) { $found = TRUE; } # while if($found == FALSE) { print OUTPUT_FILE "$probe\t$mlg\t$cM\tIAState\tIAState\n"; } # if if($probe ne $probe2) { my $sth2 = $db_manager->execute("select locus from loci where locus = 'probe2'"); my @row2 = (); my $found = FALSE; while(@row2 = $sth2->fetchrow_array()) { $found = TRUE; } # while if($found == FALSE) { print OUTPUT_FILE "$probe2\t$mlg\t$cM\tIAState\tIAState\n"; } # if } # if } # if } # for close OUTPUT_FILE; # print closing information message("Number of Confirmed: $number_lines"); } # else message("Disconnecting from the database."); $db_manager->disconnect; close INPUT_FILE; if($name_ok) { TRUE; } # if else { FALSE; } # else } # file_name_ok 1