Hi,
We have been trying to get the Perl API working for the Reactome
BioMart installation, but it keeps on breaking and I can't work out
why. Here is the bit of the script that causes the trouble:
$query->setDataset("pathway");
$query->addFilter("species_selection", ["Rattus norvegicus"]);
$query->addFilter("reaction_db_id_list",
["234045","229659","234425","230628","224997","234275","229663","230532","224989"]);
$query->addAttribute("db_id");
$query->addAttribute("_displayname");
my $query_runner = BioMart::QueryRunner->new();
Here is what is in the config file:
MartURLLocation database="test_reactome_mart" default="1"
displayName="REACTOME" host="banon.cshl.edu"
includeDatasets="complex,pathway,reaction" martUser="" name="REACTOME"
path="/biomart/martservice" port="5555" serverVirtualSchema="default"
visible="1" />
And here is the error that we get:
Filter 'reaction_db_id_list' not found in dataset default.pathway
Trace begun at
/homes/ruklisa/QTL_Inference/biomart-perl/lib/BioMart/Registry.pm line 554
BioMart::Registry::getFilter('BioMart::Registry=HASH(0x8c1e128)',
'pathway', 'reaction_db_id_list', 'default', 'default') called at
/homes/ruklisa/QTL_Inference/biomart-perl/lib/BioMart/Query.pm line 1350
BioMart::Query::addFilter('BioMart::Query=HASH(0x8d92ba0)',
'reaction_db_id_list', 'ARRAY(0x8d92c0c)') called at FetchPathwayNames.pl
line 26
It seems superficially as if the filter has not been
defined. But if you go to the web site:
http://banon.cshl.edu:5555/biomart/martview/
Choose database REACTOME, dataset pathway and in the
filter section, set the "Limit pathways..." to "Reaction
DB_ID(s)..." and put in one of the numbers above, e.g.
234045. Set the species limit to Rattus Norvegicus.
Now run.
Wow! It works!
So, why does the martview version work, but the Perl API
doesn't? Could the value of the $action variable play
a role, e.g. if it is 'cached', could it be that remnants
of previous queries are still hanging around and causing
problems?
Cheers,
David.