1 #!/usr/local/bin/perl -w
4 use Bio
::DB
::Map
::SQL
::DBAdaptor
;
5 use Bio
::DB
::Map
::Marker
;
13 use HTTP
::Request
::Common
;
16 use vars
qw($MARKERDATA $GENETHONURL $GENETHONDATA
18 $GENETHONURL = 'ftp://ftp.genethon.fr/pub/Gmap/Nature-1995/data';
19 $GENETHONDATA = '/tmp/markers/genethon';
23 #set proxy stuff here where applicable
24 my $ua = new LWP::UserAgent();
28 my $host = 'localhost';
30 my $dbname = 'markerdb';
33 my $module = 'Bio::DB::Map::SQL::DBAdaptor';
40 'db|dbname:s' => \$dbname,
41 'user|dbuser:s' => \$dbuser,
42 'p|dbpass:s' => \$dbpass,
43 'm|module:s' => \$module,
46 my %props = ( '-host' => $host,
50 if( defined $dbpass ) {
51 $props{'-dbpass'} = $dbpass;
54 my $db = Bio::DB::Map::SQL::DBAdaptor->new( %props );
56 my $mapadaptor = $db->get_MapAdaptor();
58 my $markeradaptor = $db->get_MarkerAdaptor();
62 foreach my $chrom ( 1..23 ) {
63 my ($DATA) = &get_genethon_data($chrom);
67 my ($probe,$sexavg,$female,$male,$locus,$genbank,
68 $allelect,$heterozygosity,$fwd,$rev,$genotype,$minmax);
70 ($probe,$sexavg,$female,$male,$locus,$genbank,
71 $allelect,$heterozygosity,$fwd,$rev,$genotype,$minmax) = split;
73 ($probe,$sexavg,$locus,$genbank,
74 $allelect,$heterozygosity,$fwd,$rev,$genotype,$minmax) = split;
76 if( $sexavg !~ /^\d+(\.\d+)?$/ ) { next; } # I'm so bad, would rather skip this
77 # line that try and figure how to parse
78 # it correctly when map info is omitted.
80 my ($min,$max) = split('-',$minmax);
81 my $len = ($min + $max) / 2;
83 my $marker = new Bio::DB::Map::Marker( '-locus' => $locus,
91 $marker->add_alias($genbank, 'genbank');
93 $marker->add_position($sexavg, 'genethon');
94 $marker->add_position($male, 'genethon_male') if( $male);
95 $marker->add_position($female, 'genethon_female') if( $female);
96 $markers{$probe} = $marker;
99 my ($count,$total,$duplicate) = (0,0,0);
100 foreach my $marker ( values %markers ) {
102 if( ! $marker->pcrfwd ) {
104 $markeradaptor->warn("no pcr info, skipping \n".
109 if( ! $markeradaptor->write($marker) ) {
111 $markeradaptor->add_duplicate_marker($marker);
115 print "No primers for $count, $duplicate duplicates, out of $total\n";
117 sub get_genethon_data {
123 my $request = GET $GENETHONURL. "/data_chrom$chrom";
124 my $response = $ua->request($request);
125 if( $response->is_success ) {
126 $fh = new IO::String($response->content);
128 warn(sprintf"Error: Request was %s error was %s",
129 $request->as_string(),
130 $response->error_as_HTML);
134 $fh = new IO::File("< $GENETHONDATA/data_chrom$chrom") or do {
135 warn("cannot open $GENETHONDATA/data_chrom$chrom");