2009/07/17 15:45:56 BioMart.Web:449:INFO> Restoring existing session 5b5d2aef618096f01d122bd0a82f7fe6
2009/07/17 15:45:56 BioMart.QueryRunner:169:WARN> NO ATTRIBUTES
2009/07/17 15:45:56 BioMart.QueryRunner:179:WARN> NO FILTERS
2009/07/17 15:45:56 BioMart.Dataset.TableSet:852:INFO> MAIN TABLE: kermits__emi_clone__main and i IS 0 2009/07/17 15:45:56 BioMart.Dataset.TableSet:906:INFO> COUNT SQL: SELECT COUNT(*) FROM htgt_mart_alt.kermits__emi_clone__main main
2009/07/17 15:45:56 BioMart.QueryRunner:169:WARN> NO ATTRIBUTES
2009/07/17 15:45:56 BioMart.QueryRunner:174:WARN> FILTER TABLE: kermits status_code main 2009/07/17 15:45:56 BioMart.QueryRunner:174:WARN> FILTER TABLE: kermits centre main
2009/07/17 15:45:56 BioMart.Dataset.TableSet:834:INFO> KEY:  id_101_key
2009/07/17 15:45:56 BioMart.Dataset.TableSet:836:INFO> KEY TO MATCH: id_103_key
2009/07/17 15:45:56 BioMart.Dataset.TableSet:834:INFO> KEY:  id_103_key
2009/07/17 15:45:56 BioMart.Dataset.TableSet:836:INFO> KEY TO MATCH: id_103_key 2009/07/17 15:45:56 BioMart.Dataset.TableSet:852:INFO> MAIN TABLE: kermits__emi_event__main and i IS 1 2009/07/17 15:45:56 BioMart.Dataset.TableSet:906:INFO> COUNT SQL: SELECT COUNT(DISTINCT main.id_102_key) FROM htgt_mart_alt.kermits__emi_event__main main WHERE (main.status_code = 'GC') AND (main.centre = 'WTSI') 2009/07/17 15:45:56 martview:142:ERROR> ERROR: caught BioMart::Exception: non-BioMart die(): Can't use an undefined value as an ARRAY reference at /software/team87/biomart/biomart-0_7-prod/lib/ BioMart/Dataset/TableSet.pm line 917.

Stacktrace:
Exception::Class::Base::new /software/team87/biomart/biomart-0_7- prod/cgi-bin/martview:125 ModPerl ::ROOT ::ModPerl ::Registry ::software_team87_biomart_biomart_2d0_7_2dprod_cgi_2dbin_martview ::handler /software/team87/HTGT/perl/lib/site_perl/5.8.8/x86_64-linux- thread-multi/ModPerl/RegistryCooker.pm:204 (eval) /software/team87/HTGT/perl/lib/site_perl/5.8.8/x86_64-linux- thread-multi/ModPerl/RegistryCooker.pm:204 ModPerl::RegistryCooker::run /software/team87/HTGT/perl/lib/ site_perl/5.8.8/x86_64-linux-thread-multi/ModPerl/RegistryCooker.pm:170 ModPerl::RegistryCooker::default_handler /software/team87/HTGT/ perl/lib/site_perl/5.8.8/x86_64-linux-thread-multi/ModPerl/Registry.pm: 31
  ModPerl::Registry::handler  -e:0
  (eval)  -e:0
2009/07/17 15:45:56 BioMart.Web:264:INFO> START PROCESSING TEMPLATE error.tt 2009/07/17 15:45:56 BioMart.Web:271:INFO> !!!! 0 to get process template error.tt and print to string

On 17 Jul 2009, at 15:42, Damian Smedley wrote:

so its cycling through the tables and keys in the correct reverse order but somehow not picking up the fact that status uses id_101_key. It should be bailing out of the loop at that stage. Can you put in one more logger statement in the nested loop (see below) - sorry, should have got you to do that straight away.

OUTER:foreach my $key (reverse @$keys){
          $logger->info("KEY:  $key");
          foreach my $join_table (keys %joinTables){
              $logger->info("KEY TO MATCH: $joinTables{$join_table}");
              if (uc($joinTables{$join_table}) eq uc($key)){
                  last OUTER;
              }
          }
          $i--;



On Fri, Jul 17, 2009 at 7:34 AM, Darren Oakley <[email protected]> wrote:
Hi Damian,

Here's the output:

2009/07/17 15:33:21 BioMart.Web:271:INFO> !!!! 0.07 to get process template main.tt and print to SCALAR 2009/07/17 15:33:31 BioMart.Web:449:INFO> Restoring existing session c572e58e911da4fc2a47d5e28c8f437c 2009/07/17 15:33:31 BioMart.Web:449:INFO> Restoring existing session c572e58e911da4fc2a47d5e28c8f437c
2009/07/17 15:33:31 BioMart.QueryRunner:169:WARN> NO ATTRIBUTES
2009/07/17 15:33:31 BioMart.QueryRunner:179:WARN> NO FILTERS
2009/07/17 15:33:31 BioMart.Dataset.TableSet:851:INFO> MAIN TABLE: kermits__emi_clone__main and i IS 0 2009/07/17 15:33:31 BioMart.Dataset.TableSet:905:INFO> COUNT SQL: SELECT COUNT(*) FROM htgt_mart_alt.kermits__emi_clone__main main
2009/07/17 15:33:31 BioMart.QueryRunner:169:WARN> NO ATTRIBUTES
2009/07/17 15:33:31 BioMart.QueryRunner:174:WARN> FILTER TABLE: kermits status_code main 2009/07/17 15:33:31 BioMart.QueryRunner:174:WARN> FILTER TABLE: kermits centre main 2009/07/17 15:33:31 BioMart.Dataset.TableSet:834:INFO> KEY: id_101_key 2009/07/17 15:33:31 BioMart.Dataset.TableSet:834:INFO> KEY: id_103_key 2009/07/17 15:33:31 BioMart.Dataset.TableSet:851:INFO> MAIN TABLE: kermits__emi_event__main and i IS 1 2009/07/17 15:33:31 BioMart.Dataset.TableSet:905:INFO> COUNT SQL: SELECT COUNT(DISTINCT main.id_102_key) FROM htgt_mart_alt.kermits__emi_event__main main WHERE (main.status_code = 'GC') AND (main.centre = 'WTSI') 2009/07/17 15:33:31 martview:142:ERROR> ERROR: caught BioMart::Exception: non-BioMart die(): Can't use an undefined value as an ARRAY reference at /software/team87/biomart/biomart-0_7-prod/ lib/BioMart/Dataset/TableSet.pm line 916.

Stacktrace:
Exception::Class::Base::new /software/team87/biomart/biomart-0_7- prod/cgi-bin/martview:125 ModPerl ::ROOT ::ModPerl ::Registry ::software_team87_biomart_biomart_2d0_7_2dprod_cgi_2dbin_martview ::handler /software/team87/HTGT/perl/lib/site_perl/5.8.8/x86_64- linux-thread-multi/ModPerl/RegistryCooker.pm:204 (eval) /software/team87/HTGT/perl/lib/site_perl/5.8.8/x86_64- linux-thread-multi/ModPerl/RegistryCooker.pm:204 ModPerl::RegistryCooker::run /software/team87/HTGT/perl/lib/ site_perl/5.8.8/x86_64-linux-thread-multi/ModPerl/RegistryCooker.pm: 170 ModPerl::RegistryCooker::default_handler /software/team87/HTGT/ perl/lib/site_perl/5.8.8/x86_64-linux-thread-multi/ModPerl/ Registry.pm:31
  ModPerl::Registry::handler  -e:0
  (eval)  -e:0
2009/07/17 15:33:31 BioMart.Web:264:INFO> START PROCESSING TEMPLATE error.tt 2009/07/17 15:33:31 BioMart.Web:271:INFO> !!!! 0 to get process template error.tt and print to string



On 17 Jul 2009, at 15:12, Damian Smedley wrote:


in the code in TableSet.pm around like 822 (in the _getCount function) you need to add a couple of extra logger calls to sort this out. Let us know what output you get

    # identify the lowest key and set main accordingly
    my $keys = $self->get('keys');
    if (%joinTables){

        $i = scalar @$keys - 1;
      OUTER:foreach my $key (reverse @$keys){
          $logger->info("KEY:  $key");
          foreach my $join_table (keys %joinTables){
              if (uc($joinTables{$join_table}) eq uc($key)){
                  last OUTER;
              }
          }
          $i--;
      }
    }
    else{
      $i = 0;# for when no join tables
    }



    my $mains = $self->get('mains');
    $main = $$mains[$i];

    $logger->info("MAIN TABLE:  $main and i IS $i");


On Fri, Jul 17, 2009 at 5:30 AM, Darren Oakley <[email protected]> wrote:
Hmmm,

This is strange...  Running

SELECT COUNT(DISTINCT main.id_102_key) FROM htgt_mart.kermits__emi_event__main main WHERE (main.status_code = 'GC') AND (main.centre = 'WTSI')

on the database actually throws an error:

Unknown column 'main.status_code' in 'where clause'


as the mart is looking at the wrong table. The attribute 'status_code' is only on the last table in the sequence 'kermits__emi_attempt__main' (the main tables in our mart go: clone -> event -> attempt). Why would it be looking at the wrong table? I've attached my MartEditor xmls for this dataset in case this might help...


-- The Wellcome Trust Sanger Institute is operated by Genome Research Limited, a charity registered in England with number 1021457 and a company registered in England with number 2742969, whose registered office is 215 Euston Road, London, NW1 2BE.


The primary keys for the main tables are:

clone -> id_102_key
event -> id_103_key
attempt -> id_101_key

Cheers,

Daz


On 17 Jul 2009, at 12:39, Damian Smedley wrote:

Hi Darren,

What does that SQL do when you run it direct on the server - it looks fine but seems like $ret = ${$sth->fetchrow_arrayref}[0]; is giving the error i.e. no rows are coming back

Cheers
Damian


On Fri, Jul 17, 2009 at 4:10 AM, Darren Oakley <[email protected]> wrote:
Hi Syed,

Here's the dump from my log file:

2009/07/17 12:07:53 BioMart.Web:449:INFO> Restoring existing session d2e13b828c9c73a18e2b0d1808c66e8c
2009/07/17 12:07:53 BioMart.QueryRunner:169:WARN> NO ATTRIBUTES
2009/07/17 12:07:53 BioMart.QueryRunner:179:WARN> NO FILTERS
2009/07/17 12:07:53 BioMart.Dataset.TableSet:900:INFO> COUNT SQL: SELECT COUNT(*) FROM htgt_mart.kermits__emi_clone__main main
2009/07/17 12:07:53 BioMart.QueryRunner:169:WARN> NO ATTRIBUTES
2009/07/17 12:07:53 BioMart.QueryRunner:174:WARN> FILTER TABLE: kermits status_code main 2009/07/17 12:07:53 BioMart.QueryRunner:174:WARN> FILTER TABLE: kermits centre main 2009/07/17 12:07:53 BioMart.Dataset.TableSet:900:INFO> COUNT SQL: SELECT COUNT(DISTINCT main.id_102_key) FROM htgt_mart.kermits__emi_event__main main WHERE (main.status_code
= 'GC') AND (main.centre = 'WTSI')
2009/07/17 12:07:53 martview:142:ERROR> ERROR: caught BioMart::Exception: non-BioMart die(): Can't use an undefined value as an ARRAY reference at /software/team87/biomart/bio

mart-0_7-prod/lib/BioMart/Dataset/TableSet.pm line 911.

Stacktrace:
Exception::Class::Base::new /software/team87/biomart/biomart-0_7- prod/cgi-bin/martview:125 ModPerl ::ROOT ::ModPerl ::Registry ::software_team87_biomart_biomart_2d0_7_2dprod_cgi_2dbin_martview ::handler /software/team87/HTGT/perl/lib/site_perl/5.8.8/x86_64- linux-threa
d-multi/ModPerl/RegistryCooker.pm:204
(eval) /software/team87/HTGT/perl/lib/site_perl/5.8.8/x86_64- linux-thread-multi/ModPerl/RegistryCooker.pm:204 ModPerl::RegistryCooker::run /software/team87/HTGT/perl/lib/ site_perl/5.8.8/x86_64-linux-thread-multi/ModPerl/ RegistryCooker.pm:170 ModPerl::RegistryCooker::default_handler /software/team87/HTGT/ perl/lib/site_perl/5.8.8/x86_64-linux-thread-multi/ModPerl/ Registry.pm:31
 ModPerl::Registry::handler  -e:0
 (eval)  -e:0
2009/07/17 12:07:53 BioMart.Web:264:INFO> START PROCESSING TEMPLATE error.tt 2009/07/17 12:07:53 BioMart.Web:271:INFO> !!!! 0.03 to get process template error.tt and print to string

Cheers,

Daz


On 17 Jul 2009, at 11:30, Syed Haider wrote:

Hi Darren,

when you hit the count button, please see what goes in the error_log. you would need to switch on the logging to INFO from FATAL in conf/log4perl.conf and reconfigure/restart.

Cheers
Syed


Darren Oakley wrote:
Hi All,
Sorry to disturb, but I'm getting an error which I just can't figure out when doing a count on one of our Marts...
Here's the URL for the search:
http://www.sanger.ac.uk/htgt/biomart/martview?VIRTUALSCHEMANAME=default&ATTRIBUTES=kermits.default.attributes.sponsor |kermits.default.attributes.marker_symbol| kermits .default .attributes .status&FILTERS=kermits.default.filters.status_code."GC"| kermits.default.filters.centre."WTSI"&VISIBLEPANEL=resultspanel The search works fine and returns results, but when I try to get a count from this search (I'd like to know the number of genes with this criteria), the mart throws the following error (both in MartView and through the APIs): Query ERROR: caught BioMart::Exception: non-BioMart die(): Can't use an undefined value as an ARRAY reference at /software/team87/ biomart/biomart-0_7-prod/lib/BioMart/Dataset/TableSet.pm line 911. To get the count, I'm hitting it via the rest api with the following xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Query>
<Query virtualSchemaName="default" formatter="TSV" header="0" uniqueRows="1" count="1" datasetConfigVersion="0.6">
 <Dataset name="kermits" interface="default">
  <Filter name="status_code" value="GC"/>
  <Filter name="centre" value="WTSI"/>
 </Dataset>
</Query>
Any idea what could be the issue here?
Thanks,
Daz
P.S. Forgot to let you all know - our new (preview) Mouse portal at the Sanger is now running off Biomart: http://www.sanger.ac.uk/mouseportal/ (well, several biomarts really...) It's still in development, and things can be flaky every now and then, so be gentle! ;)



--
The Wellcome Trust Sanger Institute is operated by Genome ResearchLimited, a charity registered in England with number 1021457 and acompany registered in England with number 2742969, whose registeredoffice is 215 Euston Road, London, NW1 2BE.






-- The Wellcome Trust Sanger Institute is operated by Genome Research Limited, a charity registered in England with number 1021457 and a company registered in England with number 2742969, whose registered office is 215 Euston Road, London, NW1 2BE.




--
The Wellcome Trust Sanger Institute is operated by Genome Research Limited, a charity registered in England with number 1021457 and a company registered in England with number 2742969, whose registered office is 215 Euston Road, London, NW1 2BE.

Reply via email to