From 6eb5165c3bbf7f9c2b69f797c46fd05fb2fe63f5 Mon Sep 17 00:00:00 2001 From: jason Date: Thu, 21 Jun 2001 21:02:59 +0000 Subject: [PATCH] added -online flag, -debug flag handle duplicated markers by merging information into existing marker svn path=/bioperl-db/trunk/; revision=265 --- Bio/DB/Map/SQL/MarkerAdaptor.pm | 11 +++++++---- scripts/load_genethon_data.pl | 17 ++++++----------- scripts/load_marshfield_map.pl | 15 ++++++--------- scripts/load_whitehead_markers.pl | 19 ++++++++----------- 4 files changed, 27 insertions(+), 35 deletions(-) diff --git a/Bio/DB/Map/SQL/MarkerAdaptor.pm b/Bio/DB/Map/SQL/MarkerAdaptor.pm index 9bc7bf5..2b6b26b 100644 --- a/Bio/DB/Map/SQL/MarkerAdaptor.pm +++ b/Bio/DB/Map/SQL/MarkerAdaptor.pm @@ -224,7 +224,6 @@ sub write { foreach my $alias ( $marker->each_alias ) { my $src = $marker->get_source_for_alias($alias); eval { - if( ! $markercopy->is_alias($alias) ) { $sth->execute($alias,$marker->id, $src); } elsif( $markercopy->get_source_for_alias($alias) ne @@ -232,9 +231,13 @@ sub write { $sthupdate->execute($src, $marker->id, $alias); } }; - if( $@) { - $self->warn($@); - $rc = -1 unless ( $@ =~ /Duplicate/ ); + if( $@) { + if ( $@ =~ /Duplicate entry/ ) { + $self->warn($@) if( $self->verbose >= 1); + } else { + $rc = -1; + $self->warn($@); + } } } $sth->finish(); diff --git a/scripts/load_genethon_data.pl b/scripts/load_genethon_data.pl index 3a3a408..e123ca0 100755 --- a/scripts/load_genethon_data.pl +++ b/scripts/load_genethon_data.pl @@ -33,6 +33,8 @@ my $dbpass = 'undef'; my $module = 'Bio::DB::Map::SQL::DBAdaptor'; &GetOptions( + 'online' => \$ONLINE, + 'debug' => \$DEBUG, 'host:s' => \$host, 'port:n' => \$port, 'db|dbname:s' => \$dbname, @@ -61,7 +63,7 @@ foreach my $chrom ( 1..23 ) { my ($DATA) = &get_genethon_data($chrom); while(<$DATA>) { - + s/\*//g; my ($probe,$sexavg,$female,$male,$locus,$genbank, $allelect,$heterozygosity,$fwd,$rev,$genotype,$minmax); if( $chrom < 23 ) { @@ -105,18 +107,11 @@ foreach my $marker ( values %markers ) { $count++; } if( ! $markeradaptor->write($marker) ) { - my ( $markercopy ) = $markeradaptor->get('-pcrprimers' => [ $marker->pcrfwd, - $marker->pcrrev ] ); $duplicate++; - if( $markercopy ) { - $marker->id($markercopy->id); - $markeradaptor->write($marker); - } else { - print "unable to find marker for primers ", $marker->pcrfwd, - ", ", $marker->pcrrev, "\n"; - } - } + $markeradaptor->add_duplicate_marker($marker); + } } + print "No primers for $count, $duplicate duplicates, out of $total\n"; sub get_genethon_data { diff --git a/scripts/load_marshfield_map.pl b/scripts/load_marshfield_map.pl index c1fbcb6..a938b8b 100755 --- a/scripts/load_marshfield_map.pl +++ b/scripts/load_marshfield_map.pl @@ -36,6 +36,8 @@ my $dbpass = 'undef'; my $module = 'Bio::DB::Map::SQL::DBAdaptor'; &GetOptions( + 'online' => \$ONLINE, + 'debug' => \$DEBUG, 'host:s' => \$host, 'port:n' => \$port, 'db|dbname:s' => \$dbname, @@ -184,17 +186,12 @@ foreach my $marker ( values %markers ) { $marker->to_string); } $count++; - } + next; + } if( ! $markeradaptor->write($marker) ) { - my ( $markercopy ) = $markeradaptor->get('-pcrprimers' => [ $marker->pcrfwd, - $marker->pcrrev ] ); $duplicate++; - if( $markercopy ) { - $marker->id($markercopy->id); - $markeradaptor->write($marker); - } else { - print "unable to find marker for primers ", $marker->pcrfwd, - ", ", $marker->pcrrev, "\n"; + if( ! $markeradaptor->add_duplicate_marker($marker) ) { + print STDERR "no duplicate marker found for ", $marker->to_string(), "\n"; } } } diff --git a/scripts/load_whitehead_markers.pl b/scripts/load_whitehead_markers.pl index 73cbd0f..9c25422 100755 --- a/scripts/load_whitehead_markers.pl +++ b/scripts/load_whitehead_markers.pl @@ -41,6 +41,8 @@ my $dbpass = 'undef'; my $module = 'Bio::DB::Map::SQL::DBAdaptor'; &GetOptions( + 'online' => \$ONLINE, + 'debug' => \$DEBUG, 'host:s' => \$host, 'port:n' => \$port, 'db|dbname:s' => \$dbname, @@ -81,7 +83,6 @@ while(<$STS>) { next; } - my $marker = new Bio::DB::Map::Marker ( -probe => $assay, -locus => $locus, -chrom => $chrom, @@ -189,24 +190,20 @@ foreach my $marker ( values %markers ) { $count++; next; } - + if( ! $markeradaptor->write($$marker) ) { $duplicate++; - my ( $markercopy ) = $markeradaptor->get('-pcrprimers' => [ $$marker->pcrfwd, - $$marker->pcrrev ] ); - if( $markercopy ) { - $$marker->id($markercopy->id); - $markeradaptor->write($$marker); - } - } + $markeradaptor->add_duplicate_marker($$marker); + } } print "skipped $count, $duplicate duplicates out of $total\n"; sub get_data_for_chrom { my ($chrom) = @_; + $chrom =~ s/23/X/; my $fh; if( $ONLINE ) { - my $url = sprintf('%s/Chr%d.rh', $WHITEHEADRHMAP,$chrom); + my $url = sprintf('%s/Chr%s.rh', $WHITEHEADRHMAP,$chrom); my $request = GET $url; my $response = $ua->request($request); if( $response->is_success ) { @@ -218,7 +215,7 @@ sub get_data_for_chrom { $fh = undef; } } else { - my $file = sprintf('< %s/Chr%d.rh', $WHITEHEADRHMAPDIR, + my $file = sprintf('< %s/Chr%s.rh', $WHITEHEADRHMAPDIR, $chrom); $fh = new IO::File($file) or do { warn("cannot open $file"); -- 2.11.4.GIT