package RelRead; =head1 NAME RelRead -- Read a Related Genes file and save the pertinent information into the database =head1 SYNOPSIS my $boolean = RelRead -> new; =head1 DESCRIPTION This package reads a Related Genes file and saves the pertinent data into the database. RelRead, 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 = RelRead->new; Reads a Related Genes 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->{rel_file} ne "") { message("Data from Related Genes file $project->{rel_file}"); message("is already in the database."); if(yes("Refresh the database from this file?")) { $file_name = $project->{rel_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 Related Genes 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->{rel_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 = RelRead->file_name_ok($file_name, $configuration, $db_manager); Determines if a file name is acceptable. If the file name is ok, then the Related Genes 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 $number_lines = 0; open(INPUT_FILE, "<", "$file_name") or $error = TRUE; if($error) { message_start; message("Could not read $file_name"); message("$!"); $name_ok = FALSE; } # if else { # Read the Related Genes input file message("Related Genes file $file_name opened"); message("Connecting to the database."); $db_manager->connect; message("Deleting any previous Related Genes data in the database."); $db_manager->execute("delete from related"); 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 @field_array = split /\t/, $file_array[$current_line]; my $mlg = $field_array[0]; my $start = $field_array[3]; my $end = $field_array[4]; my $data_field = $field_array[8]; my @data_array = split /"/, $data_field; my $related = $data_array[1]; my $hit = $data_array[3]; # Save the relations in the related database table $related = $db_manager->{dbh}->quote($related); $db_manager->execute("insert into related values('', $related, '$hit', '$mlg', '$start', '$end')"); } # for # print closing information message("Number of Related Genes: $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