[BioMart Users] Biomart Query Question

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[BioMart Users] Biomart Query Question

Drake Evans
Hi my name is Andrew Evans and I work at a lab at Vanderbilt University and we're trying to use Biomart to query databases for gene data.  However, I have been unable to run the queries effectively and I was hoping you could help.

I want to be able to query the Biomart Central portal without using the Web Interface manually.  I have been able to generate queries in Perl and XML format via the Martview at biomart.org.

When I try to run this perl script:

# An example script demonstrating the use of BioMart API.
# This perl API representation is only available for configuration versions >=  0.5
use strict;
use BioMart::Initializer;
use BioMart::Query;
use BioMart::QueryRunner;

my $confFile = "http://www.biomart.org/biomart/martservice?type=registry";
#
# NB: change action to 'clean' if you wish to start a fresh configuration 
# and to 'cached' if you want to skip configuration step on subsequent runs from the same registry
#

my $action='clean';
my $initializer = BioMart::Initializer->new('registryFile'=>$confFile, 'action'=>$action);
my $registry = $initializer->getRegistry;

my $query = BioMart::Query->new('registry'=>$registry,'virtualSchemaName'=>'default');

       
    $query->setDataset("mmusculus_gene_ensembl");
    $query->addFilter("refseq_dna", ["NM_016894","NM_177410","NM_145506","NM_001114662","NM_001159649","NM_026500","NM_178052","NM_001111316","NM_011210","NM_001039511","NM_001039512","NM_054102","NM_172843","NM_022329","NM_138314","NM_178071","NM_001113391","NM_001160262"]);
    $query->addAttribute("ensembl_gene_id");
    $query->addAttribute("ensembl_transcript_id");
    $query->addAttribute("external_gene_id");
    $query->addAttribute("name_1006");
    $query->addAttribute("go_cellular_component__dm_name_1006");
    $query->addAttribute("go_molecular_function__dm_name_1006");
    $query->addAttribute("refseq_dna");
    $query->addAttribute("refseq_peptide");

$query->formatter("TSV");

my $query_runner = BioMart::QueryRunner->new();
############################## GET COUNT ############################
# $query->count(1);
# $query_runner->execute($query);
# print $query_runner->getCount();
#####################################################################


############################## GET RESULTS ##########################
# to obtain unique rows only
# $query_runner->uniqueRowsOnly(1);

$query_runner->execute($query);
$query_runner->printHeader();
$query_runner->printResults();
$query_runner->printFooter();
#####################################################################


I get this message:

Can't locate BioMart/Initializer.pm in @INC (@INC contains: /Library/Perl/Updates/5.10.0/darwin-thread-multi-2level /Library/Perl/Updates/5.10.0 /System/Library/Perl/5.10.0/darwin-thread-multi-2level /System/Library/Perl/5.10.0 /Library/Perl/5.10.0/darwin-thread-multi-2level /Library/Perl/5.10.0 /Network/Library/Perl/5.10.0/darwin-thread-multi-2level /Network/Library/Perl/5.10.0 /Network/Library/Perl /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level /System/Library/Perl/Extras/5.10.0 .) at query.pl line 4.
BEGIN failed--compilation aborted at query.pl line 4.


When i try to run wget -O results.txt 'http://www.biomart.org/biomart/martservice?query=Query.xml using query.xml i created from Martview this is the results.txt:

Query ERROR: caught BioMart::Exception: non-BioMart die(): File does not exist: Query.xml at /srv/biomart_server/biomart.org/biomart-perl/lib/BioMart/Query.pm line 1935

When I try to run the Webexample.pl from the scripts directory using the xml I got from martview (saved as query.xml) the terminal window says:

Usage: perl webExample.pl Query.xml
and there is no results.txt file.

Not sure If maybe I installed the Biomart-Perl API wrong or if I am not configuring my perl or xml files correctly.  Any help would be greatly appreciated.

Thanks
Andrew Evans

_______________________________________________
Users mailing list
[hidden email]
https://lists.biomart.org/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: [BioMart Users] Biomart Query Question

Syed Haider
Hi Drake,

there is one change that you need to get this working and that is to
point the $conf variable to a local file:

my $confFile = "conf/apiExampleRegistry.xml";

Additionally, for perl API to work, you need biomart-perl downloaded
with API dependencies installed. See instructions here:

http://www.biomart.org/install-overview.html

There is an example (apiExample.pl) of perl script under
biomart-perl/scripts/

Furthermore, since you are querying ensembl mouse dataset, i have
attached an example registry file that you cant drop into
biomart-perl/conf/ and point the $conf variable to this file in your script.


Hope this helps, let us know if you have any questions.
Syed




On 10/02/2011 19:14, Drake Evans wrote:

> Hi my name is Andrew Evans and I work at a lab at Vanderbilt University and we're trying to use Biomart to query databases for gene data.  However, I have been unable to run the queries effectively and I was hoping you could help.
>
> I want to be able to query the Biomart Central portal without using the Web Interface manually.  I have been able to generate queries in Perl and XML format via the Martview at biomart.org<http://biomart.org>.
>
> When I try to run this perl script:
>
> # An example script demonstrating the use of BioMart API.
> # This perl API representation is only available for configuration versions>=  0.5
> use strict;
> use BioMart::Initializer;
> use BioMart::Query;
> use BioMart::QueryRunner;
>
> my $confFile = "http://www.biomart.org/biomart/martservice?type=registry";
> #
> # NB: change action to 'clean' if you wish to start a fresh configuration
> # and to 'cached' if you want to skip configuration step on subsequent runs from the same registry
> #
>
> my $action='clean';
> my $initializer = BioMart::Initializer->new('registryFile'=>$confFile, 'action'=>$action);
> my $registry = $initializer->getRegistry;
>
> my $query = BioMart::Query->new('registry'=>$registry,'virtualSchemaName'=>'default');
>
>
>      $query->setDataset("mmusculus_gene_ensembl");
>      $query->addFilter("refseq_dna", ["NM_016894","NM_177410","NM_145506","NM_001114662","NM_001159649","NM_026500","NM_178052","NM_001111316","NM_011210","NM_001039511","NM_001039512","NM_054102","NM_172843","NM_022329","NM_138314","NM_178071","NM_001113391","NM_001160262"]);
>      $query->addAttribute("ensembl_gene_id");
>      $query->addAttribute("ensembl_transcript_id");
>      $query->addAttribute("external_gene_id");
>      $query->addAttribute("name_1006");
>      $query->addAttribute("go_cellular_component__dm_name_1006");
>      $query->addAttribute("go_molecular_function__dm_name_1006");
>      $query->addAttribute("refseq_dna");
>      $query->addAttribute("refseq_peptide");
>
> $query->formatter("TSV");
>
> my $query_runner = BioMart::QueryRunner->new();
> ############################## GET COUNT ############################
> # $query->count(1);
> # $query_runner->execute($query);
> # print $query_runner->getCount();
> #####################################################################
>
>
> ############################## GET RESULTS ##########################
> # to obtain unique rows only
> # $query_runner->uniqueRowsOnly(1);
>
> $query_runner->execute($query);
> $query_runner->printHeader();
> $query_runner->printResults();
> $query_runner->printFooter();
> #####################################################################
>
>
> I get this message:
>
> Can't locate BioMart/Initializer.pm in @INC (@INC contains: /Library/Perl/Updates/5.10.0/darwin-thread-multi-2level /Library/Perl/Updates/5.10.0 /System/Library/Perl/5.10.0/darwin-thread-multi-2level /System/Library/Perl/5.10.0 /Library/Perl/5.10.0/darwin-thread-multi-2level /Library/Perl/5.10.0 /Network/Library/Perl/5.10.0/darwin-thread-multi-2level /Network/Library/Perl/5.10.0 /Network/Library/Perl /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level /System/Library/Perl/Extras/5.10.0 .) at query.pl<http://query.pl>  line 4.
> BEGIN failed--compilation aborted at query.pl<http://query.pl>  line 4.
>
>
> When i try to run wget -O results.txt 'http://www.biomart.org/biomart/martservice?query=Query.xml using query.xml i created from Martview this is the results.txt:
>
> Query ERROR: caught BioMart::Exception: non-BioMart die(): File does not exist: Query.xml at /srv/biomart_server/biomart.org/biomart-perl/lib/BioMart/Query.pm<http://biomart.org/biomart-perl/lib/BioMart/Query.pm>  line 1935
>
> When I try to run the Webexample.pl from the scripts directory using the xml I got from martview (saved as query.xml) the terminal window says:
>
> Usage: perl webExample.pl Query.xml
> and there is no results.txt file.
>
> Not sure If maybe I installed the Biomart-Perl API wrong or if I am not configuring my perl or xml files correctly.  Any help would be greatly appreciated.
>
> Thanks
> Andrew Evans

_______________________________________________
Users mailing list
[hidden email]
https://lists.biomart.org/mailman/listinfo/users

ensembl.xml (1K) Download Attachment