From 148b371072f2676846ee8f1e3f4c6aa72fa63f91 Mon Sep 17 00:00:00 2001 From: Ian Longden <ianl@sanger.ac.uk> Date: Mon, 5 Sep 2011 15:36:56 +0000 Subject: [PATCH] general tidy --- .../xref_mapping/XrefMapper/Interpro.pm | 110 ++++++++++++------ 1 file changed, 76 insertions(+), 34 deletions(-) diff --git a/misc-scripts/xref_mapping/XrefMapper/Interpro.pm b/misc-scripts/xref_mapping/XrefMapper/Interpro.pm index 0cb4fd6d86..81dee341bd 100644 --- a/misc-scripts/xref_mapping/XrefMapper/Interpro.pm +++ b/misc-scripts/xref_mapping/XrefMapper/Interpro.pm @@ -1,10 +1,11 @@ package XrefMapper::Interpro; +use strict; +use warnings; use vars '@ISA'; @ISA = qw{ XrefMapper::BasicMapper }; -use strict; -use warnings; + use XrefMapper::BasicMapper; sub new { @@ -34,18 +35,47 @@ sub process{ $object_xref_id++; - my $add_object_xref_sth = $self->xref->dbc->prepare('insert into object_xref (object_xref_id, ensembl_id,ensembl_object_type, xref_id, linkage_type, ox_status, master_xref_id ) values (?, ?, ?, ?, ?, "DUMP_OUT", ?)'); + +# +# Get the sql and sths required. +# + + my $add_ox_sql = (<<"AOX"); +INSERT INTO object_xref + (object_xref_id, ensembl_id,ensembl_object_type, xref_id, + linkage_type, ox_status, master_xref_id ) + VALUES (?, ?, ?, ?, ?, "DUMP_OUT", ?) +AOX + my $add_object_xref_sth = $self->xref->dbc->prepare($add_ox_sql); + + + my $add_go_xref_sql = (<<"AGX"); +INSERT INTO go_xref (object_xref_id, linkage_type) + VALUES (?, ?) +AGX + my $add_go_xref_sth = $self->xref->dbc->prepare($add_go_xref_sql); + + my $ins_ix_sql = (<<"IXS"); +INSERT INTO identity_xref (object_xref_id, query_identity, target_identity) + VALUES (?, 100, 100) +IXS + my $ins_ix_sth = $self->xref->dbc->prepare($ins_ix_sql); + + my $dep_sql = (<<"DLS"); +SELECT dependent_xref_id, linkage_annotation + FROM dependent_xref + WHERE master_xref_id = ? +DLS + my $dep_sth = $self->xref->dbc->prepare($dep_sql); + local $add_object_xref_sth->{RaiseError}; #catch duplicates local $add_object_xref_sth->{PrintError}; # cut down on error messages - - my $add_go_xref_sth = $self->xref->dbc->prepare('insert into go_xref (object_xref_id, linkage_type) values (?, ?)'); - my $ins_ix_sth = $self->xref->dbc->prepare("insert into identity_xref (object_xref_id, query_identity, target_identity) values(?, 100, 100)"); # Get a mapping of protein domains to ensembl translations for # interpro dependent xrefs - my $core_sql = "SELECT hit_name, translation_id FROM protein_feature" ; + my $core_sql = 'SELECT hit_name, translation_id FROM protein_feature' ; my $core_sth = $self->core->dbc->prepare($core_sql); $core_sth->execute(); my %domain_to_translation = (); @@ -56,26 +86,35 @@ sub process{ push @{$domain_to_translation{$domain}}, $translation; } - my $dep_sth = $self->xref->dbc->prepare("select dependent_xref_id, linkage_annotation from dependent_xref where master_xref_id = ?"); - - # Get a list of interpro data, including dependent xrefs if avail - $sth = $self->xref->dbc->prepare(" - SELECT ip.interpro, ip.pfam, x2.xref_id, x2.source_id, - dx.linkage_annotation, dx.master_xref_id - FROM interpro ip, xref x - LEFT JOIN dependent_xref dx ON x.xref_id=dx.master_xref_id - LEFT JOIN xref x2 ON dx.dependent_xref_id=x2.xref_id - WHERE ip.interpro = x.accession and ip.dbtype != 'PRINTS'"); + + my $int_sql = (<<"ISQ"); +SELECT ip.interpro, ip.pfam, x2.xref_id, x2.source_id, + dx.linkage_annotation, dx.master_xref_id + FROM interpro ip, xref x + LEFT JOIN dependent_xref dx + ON x.xref_id=dx.master_xref_id + LEFT JOIN xref x2 + ON dx.dependent_xref_id=x2.xref_id + WHERE ip.interpro = x.accession and ip.dbtype != 'PRINTS' +ISQ + $sth = $self->xref->dbc->prepare($int_sql); + + my $rv = $sth->execute(); -# my %interpro_cache; - my %added; + +# my %added; my $dup=0; while( my $row = $sth->fetchrow_arrayref() ){ my ( $interpro, $pfam, $dx_xref_id, $dx_source_id, $go_linkage, $master_id ) = @$row; if( $dx_xref_id ){ foreach my $ensembl_id( @{$domain_to_translation{$pfam}||[]} ){ #...And the interpro domain maps to a translation - $add_object_xref_sth->execute($object_xref_id, $ensembl_id, 'Translation', $dx_xref_id, 'DEPENDENT', $master_id); + $add_object_xref_sth->execute($object_xref_id, + $ensembl_id, + 'Translation', + $dx_xref_id, + 'DEPENDENT', + $master_id); if($add_object_xref_sth->err){ my $err = $add_object_xref_sth->errstr; if($err =~ /Duplicate/){ @@ -87,7 +126,6 @@ sub process{ } } $ins_ix_sth->execute($object_xref_id); - $added{$dx_source_id}++; $oxref_count++; if($go_linkage){ $add_go_xref_sth->execute($object_xref_id, $go_linkage ); @@ -107,15 +145,20 @@ sub process{ my $dep_xref_id; my $link; $dep_sth->bind_columns(\$dep_xref_id, \$link); - while($dep_sth->fetch()){ - $add_object_xref_sth->execute($object_xref_id, $ensembl_id, 'Translation', $dep_xref_id, 'DEPENDENT', $new_master_id); + while($dep_sth->fetch()){ + $add_object_xref_sth->execute($object_xref_id, + $ensembl_id, + 'Translation', + $dep_xref_id, + 'DEPENDENT', + $new_master_id); if(!$add_object_xref_sth->err){ push @master_xref_ids, $dep_xref_id; if($link){ $add_go_xref_sth->execute($object_xref_id, $link ); } $ins_ix_sth->execute($object_xref_id); - } + } $object_xref_id++; } } @@ -127,16 +170,15 @@ sub process{ } } $sth->finish(); - - - print "\n".$dup." already existed\n\n" if($self->verbose); - - print(" Wrote $ipro_count interpro table entries\n") if($self->verbose); - print(" including $oxref_count object xrefs, \n") if($self->verbose); - print(" and $goxref_count go xrefs\n") if($self->verbose); -# foreach my $key (keys %added){ -# print "id= $key has ".$added{$key}. " object xrefs added\n"; -# } + + + if($self->verbose){ + print "\n".$dup." already existed\n\n"; + print " Wrote $ipro_count interpro table entries\n"; + print " including $oxref_count object xrefs, \n"; + print " and $goxref_count go xrefs\n"; + } + return; } 1; -- GitLab