BioPerl-DB

 view release on metacpan or  search on metacpan

scripts/biosql/terms/importrelation.pl  view on Meta::CPAN

#!/usr/bin/perl

use strict;
use URI;
use LWP::UserAgent;
use HTTP::Request;
use XML::LibXML;
use File::Temp qw(tempfile tempdir);

use Bio::DB::BioDB;
use Bio::Seq;
use Bio::Annotation::OntologyTerm;
use Bio::Ontology::Ontology;
use Bio::Ontology::Term;
use Bio::Ontology::RelationshipType;
use Bio::Ontology::Relationship;
use Bio::SeqIO;

# Open the config file.
my $root = XML::LibXML->new()->parse_file('conf.xml')->getDocumentElement() or die("Could not parse XML config file");
my $node;

#
# create the DBAdaptorI for our database
#
$node = @{$root->findnodes('database')}[0];
my $db = Bio::DB::BioDB->new(-database => "biosql",
                             -driver   => $node->findvalue('driver'),
                             -host     => $node->findvalue('host'),
                             -dbname   => $node->findvalue('dbname'),
                             -user     => $node->findvalue('username'),
                             -pass     => $node->findvalue('password')
                             );

#
# create the UserAgent to do our web fetches
#
my $ua = LWP::UserAgent->new();
$node = @{$root->findnodes('httpproxy')}[0];
$ua->proxy(['http','https'],$node->findvalue('url')) if $node;

print "Running parsers...\n";

# Loop through the parser children of parsers
for my $parser (@{$root->findnodes('parsers')}[0]->findnodes('parser')) {
	my $parsertype = $parser->findvalue('@type');
	my $sourcenamespace = $parser->findvalue('sourcenamespace');
	my $targetnamespace = $parser->findvalue('targetnamespace');
	my $relnamespace = "Term Importer Map";
	my $script = $parser->findvalue('../@scriptdir').'/'.$parser->findvalue('script');
	print "Parser ".$parser->findvalue('@name')." (type ".$parsertype.") lives at ".$script."\n";
	print "(links ".$sourcenamespace." to ".$targetnamespace.")\n";

	if (! ($parsertype eq 'TERM2TERM' || $parsertype eq 'SEQ2TERM')) {
		print("!!! ".$parsertype." is not a valid parser type. Skipping.");
		next;
	}

	my $uri = new URI;
	$uri->scheme($parser->findvalue('server/@protocol'));
	$uri->host($parser->findvalue('server/host'));
	$uri->path($parser->findvalue('server/filename'));
	print "Downloading data from: ".$uri->as_string()."\n";

	my $res = $ua->get($uri->as_string());
	die("Could not download data!") unless $res->is_success();



( run in 3.024 seconds using v1.01-cache-2.11-cpan-5623c5533a1 )