#!/usr/bin/env perl # ============================================================================== # Examples of uses for EBeyeWSWrapper. # ============================================================================== use strict; use Data::Dumper; use EBeyeWSWrapper; my $wrapper = EBeyeWSWrapper->new(); # ============================================================================== sub testListDomains() { my @results = $wrapper->listDomains(); my $domain; foreach $domain (@results) { print "$domain "; } print "\n" } # ============================================================================== sub testGetNumberOfResults() { my $domain = 'medline'; my @queries = ('immunology', 'immunolog*', # All the terms that begin with immunolog 'immunolog* nutrition', # (AND by default) ); print "Search in $domain: \n"; foreach my $query (@queries) { print "$query :" . $wrapper->getNumberOfResults($domain, $query) . "\n"; } } # ============================================================================== sub testGetResultsIds() { my $domain = 'uniprot'; my $query = 'polymerase'; my $nbResults = $wrapper->getNumberOfResults($domain, $query); my $start = 0; my $size = 10; my $yesno = 'y'; while (($start < $nbResults) && ($yesno eq 'y')) { foreach my $result ($wrapper->getResultsIds($domain, $query, $start, $size)) { print "$result "; } $start += $size; print "\ncontinue (y/n)"; $yesno = ; $yesno =~ s/[\r\n]//g; } } # ============================================================================== sub testGetAllResultsIds() { my $domain = 'medline'; my $query = 'python'; my @results = $wrapper->getAllResultsIds($domain, $query); foreach my $result (@results) { print "$result "; } print "\n"; } # ============================================================================== sub testListFields() { my $domain; my $line; my @fields; foreach $domain ($wrapper->listDomains()) { printf "%-24s ", $domain; @fields = $wrapper->listFields($domain); foreach my $field (@fields) { print "$field "; } print "\n"; } } # ============================================================================== sub testGetResults() { my $domain = 'uniprot'; my $query = 'polymerase'; my @fields = $wrapper->listFields($domain); my $nbResults = $wrapper->getNumberOfResults($domain, $query); my $field; foreach $field (@fields) { printf '%-30s ' , $field; } print "\n"; my $start = 0; my $size = 10; my $yesno = 'y'; my $refResults; while ( ($start < $nbResults) && ($yesno eq 'y')) { $refResults = $wrapper->getResults($domain, $query, \@fields, $start, $size); foreach my $result (@$refResults) { foreach my $r (@$result) { printf '%-30s ' , $r; } print "\n"; } $start += $size; print "\ncontinue (y/n)"; $yesno = ; $yesno =~ s/[\r\n]//g; } print $yesno; } # ============================================================================== sub testGetEntry(){ my $domain = 'medline'; my $entry = '7605758'; my @fields = ('description', 'publication_date' , 'authors'); my @results = $wrapper->getEntry($domain, $entry, \@fields); for (my $idx=0 ; $idx < @fields ; $idx++) { printf "%-18s:\n%s\n" , (@fields[$idx], @results[$idx]); } } # ============================================================================== sub testGetEntries(){ my $domain = 'medline'; my @entries = ('10940346', '12534098', '14619687'); my @fields = ('id', 'title', 'description', 'publication_date' , 'authors'); my $refEntries = $wrapper->getEntries($domain, \@entries, \@fields); foreach my $entry (@$refEntries) { print "-----------------------\n"; for (my $idx=0 ; $idx < @fields ; $idx++) { printf "%-18s:\n%s\n" , (@fields[$idx], $$entry[$idx]); } } } # ============================================================================== sub testGetEntryFieldUrls() { my $domain = 'uniprot'; my $entry = 'Q9QUZ9_9MURI'; my @fields = ('id'); print $wrapper->getEntryFieldUrls($domain, $entry, \@fields); print "\n"; } # ============================================================================== sub testGetEntriesFieldUrls() { my $domain = 'uniprot'; my @entries = ('Q9QUZ9_9MURI', 'A8WCM9_TAESO', 'Q64224_9MURI'); my @fields = ('id', 'acc'); my $refResults = $wrapper->getEntriesFieldUrls($domain, \@entries, \@fields); for (my $idx=0 ; $idx < @entries ; $idx++) { printf "%-18s: " , (@entries[$idx]); my @fieldValues = @$refResults[$idx]; foreach my $field (@fieldValues) { print "'@$field' "; } print "\n"; } } # ============================================================================== sub testGetDomainsReferencedInDomain() { my $domain = 'ensembl'; my @domains = $wrapper->getDomainsReferencedInDomain($domain); foreach $domain (@domains) { print "$domain "; } print "\n"; } # ============================================================================== sub testGetDomainsReferencedInEntry() { my $domain = 'ensembl'; my $entry = 'CG2102'; my @domains = $wrapper->getDomainsReferencedInEntry($domain, $entry); foreach $domain (@domains) { print "$domain "; } print "\n"; } # ============================================================================== sub testListAdditionalReferenceFields(){ my $domain = 'msdpdb'; print "The additional cross-references in ", $domain, " are:\n"; my @refs = $wrapper->listAdditionalReferenceFields($domain); foreach my $ref (@refs) { print "$ref "; } print "\n"; } # ============================================================================== sub testGetReferencedEntries() { my $domain = 'ensembl'; my $entry = 'CG2102'; my $referencedDomain = 'go'; my @refs = $wrapper->getReferencedEntries($domain, $entry, $referencedDomain); foreach my $ref (@refs) { print "$ref "; } print "\n"; } # ============================================================================== sub testGetReferencedEntriesSet() { my $domain = 'ensembl'; my @entries = ('CG2102', 'AAEL005345'); my $referencedDomain = 'go'; my @fields = ('id', 'name'); my $refDict = $wrapper->getReferencedEntriesSet($domain, \@entries, $referencedDomain, \@fields); for my $entry (keys %$refDict) { print "Cross-references for $entry:\n"; foreach my $field (@fields) { printf '%-25s ' , $field; } print "\n"; my $refReferencedEntries = $refDict->{$entry}; for my $referencedEntry (@$refReferencedEntries) { for my $field (@$referencedEntry) { printf '%-25s ' , $field; } print "\n"; } } } # ============================================================================== sub testGetReferencedEntriesFlatSet() { my $domain = 'ensembl'; my @entries = ('CG2102', 'AAEL005345'); my $referencedDomain = 'go'; my @fields = ('id', 'name'); my $refArrays = $wrapper->getReferencedEntriesFlatSet($domain, \@entries, $referencedDomain, \@fields); foreach my $refArray (@$refArrays) { print "["; foreach my $elt (@$refArray) { print "$elt "; } print "]\n"; } } # ============================================================================== # ============================================================================== testListDomains(); #testGetNumberOfResults(); #testGetResultsIds(); #testGetAllResultsIds(); #testListFields(); #testGetResults(); #testGetEntry(); #testGetEntries(); #testGetEntryFieldUrls(); #testGetEntriesFieldUrls(); #testGetDomainsReferencedInDomain(); #testGetDomainsReferencedInEntry(); #testListAdditionalReferenceFields(); #testGetReferencedEntries(); #testGetReferencedEntriesSet(); #testGetReferencedEntriesFlatSet();