ExtractMappings
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Extract Mappings - Sample code
#!/usr/bin/perl ############################################################# # DESCRIPTION: Code to extract mapping data from # BioPortal(http://bioportal.bioontology.org). # # NOTE: The Web services used in this code are prototype # services and will change. Subscribe to the bioportal-announce # mailing list (https://mailman.stanford.edu/mailman/listinfo/bioportal-announce) # to be notified of changes in this Web service. # # USAGE: perl extract_mappings.pl > outputfile.txt # # AUTHOR: Trish Whetzel (support@bioontology.org) # DATE: Tue Oct 27 18:55:06 PDT 2009 ############################################################# use LWP::UserAgent; use XML::LibXML; use strict; use warnings; # Declare variables my ($ontology_id, $term_id, $term, $ontology, $dest_ontology_id, $dest_ontology, $dest_term_id, $dest_term, $user_id); # Main method get_mappings(); # Subroutines sub get_mappings { my $ua = new LWP::UserAgent; # make request # NOTE: ontology id is hard-coded, the ontology id can be found from the web interface ontology metadata page or # the web service http://rest.bioontology.org/bioportal/ontologies?email=example@example.org my $req = new HTTP::Request GET => 'http://bioportal.bioontology.org/mappings/service/1430/?email=bioportal-mapping'; #1023 $req->content_type('application/x-www-form-urlencoded'); # send request and get response. my $res = $ua->request($req); # If you want to get a large result. It is better to write to a file directly. # my $res = $ua->request($req,'file_name.txt'); # Check the outcome of the response if ( $res->is_success ) { print STDERR "Call successful\n"; # read XML file my $parser = XML::LibXML->new(); my $xml = $parser->parse_string( $res->decoded_content ); my $num_of_responses = 0; # print output foreach my $mappingBlock ( $xml->findnodes('hash/mapping-from/mapping-from') ) { my ($source) = $mappingBlock->findnodes('./source-ont'); my ($ontology_name) = $mappingBlock->findnodes('./source-ont-name'); my ($source_id) = $mappingBlock->findnodes('./source-id'); my ($source_name) = $mappingBlock->findnodes('./source-name'); my ($id) = $mappingBlock->findnodes('./user-id'); my ($dest_ont) = $mappingBlock->findnodes('./destination-ont'); my ($dest_ontology_name) = $mappingBlock->findnodes('./destination-ont-name'); my ($dest_source_id) = $mappingBlock->findnodes('./destination-id'); my ($dest_source_name) = $mappingBlock->findnodes('./destination-name'); $ontology_id = $source->to_literal; $ontology = $ontology_name->to_literal; $term_id = $source_id->to_literal; $term = $source_name->to_literal; $user_id = $id->to_literal; $dest_ontology_id = $dest_ont->to_literal; $dest_ontology = $dest_ontology_name->to_literal; $dest_term_id = $dest_source_id->to_literal; $dest_term = $dest_source_name->to_literal; #add line to check if mapping is to a specific ontology my $ontology_id_of_interest = '1341'; my $user_of_interest = ''; if ($dest_ontology_id == $ontology_id_of_interest) { #} && $user_id == $user_of_interest) { #use for mapping-from #if ($ontology_id == $ontology_id_of_interest && $user_id == $user_of_interest) { #use for mapping-to $num_of_responses++; print ("$num_of_responses: S: $ontology_id, D: $dest_ontology_id; S: $ontology, D: $dest_ontology; S: $term_id, D: $dest_term_id; S: $term, D: $dest_term \n"); } # For testing script else { #print STDERR ("**Not mapped to ontol of interest: $ontology_id_of_interest\t - $ontology_id, $ontology, $term_id, $term, $dest_ontology_id, $dest_ontology, $dest_term_id, $dest_term \n"); } } } }