diff --git a/scripts/Modules/Mars.pm b/scripts/Modules/Mars.pm index 922a6c7..df0c1e9 100644 --- a/scripts/Modules/Mars.pm +++ b/scripts/Modules/Mars.pm @@ -178,6 +178,19 @@ sub db_selectrow { return @row; } +sub db_variant_name { + my ($db_name) = @_; + + my ($count) = + db_selectrow("SELECT COUNT(DISTINCT variant) FROM `$db_name`.variant"); + return undef unless defined $count && $count == 1; + + my ($variant) = + db_selectrow("SELECT DISTINCT variant FROM `$db_name`.variant"); + + return $variant; +} + sub db_create { my ($db_name) = @_; say " - Creating database $db_name..."; diff --git a/scripts/menu.pl b/scripts/menu.pl index d219a98..eda3d0e 100644 --- a/scripts/menu.pl +++ b/scripts/menu.pl @@ -129,6 +129,19 @@ my %handlers = ( # Run queries on databases foreach my $db (@selected_dbs) { + my $experiment = $db =~ s/smchurla_//r; + + my $variant_name = Mars::db_variant_name($db); + if ( !defined $variant_name ) { + say "Skipping $db: contains multiple variants"; + next; + } + if ( $variant_name ne $experiment ) { + say +"Skipping $db: the variant is '$variant_name' but the queries use '$experiment'."; + next; + } + foreach my $query (@selected_queries) { Util::rewrite_file( $local_db_conf, "database=", "database=$db\n" ); @@ -138,7 +151,7 @@ my %handlers = ( ? " (" . join( "+", @filter_configs ) . ")" : ""; say "Running $query$config_label on $db..."; - Util::execute_query( $db =~ s/smchurla_//r, + Util::execute_query( $experiment, $query, $local_db_conf, $local_archive_dir, 0, @filter_configs ); }