standaloneJob

DESCRIPTION

standaloneJob.pl is an eHive component script that

  1. takes in a Runnable module,

  2. creates a standalone Job outside an eHive database by initialising parameters from command line arguments

  3. and runs that Job outside of any eHive database.

    WARNING the Runnable code may still access databases provided as arguments and even harm them!

  4. can optionally dataflow into tables fully defined by URLs

Naturally, only certain Runnable modules can be run using this script, and some database-related functionality will be lost.

There are several ways of initialising the Job parameters:

  1. Module::Name -input_id. The simplest one: just provide a stringified hash

  2. Module::Name -param1 value1 -param2 value2 (...). Enumerate all the arguments on the command-line. ARRAY- and HASH- arguments can be passed+parsed too!

  3. -url $ehive_url job_id XXX. The reference to an existing Job from which the parameters will be pulled. It is a convenient way of gathering all the parameters (the Job’s input_id, the Job’s accu, the Analysis parameters and the pipeline-wide parameters). Further parameters can be added with -param1 value1 -param2 value2 (...) and they take priority over the existing Job’s parameters. The Runnable is also found in the database.

    <NOTE> the standaloneJob will *not* interact any further with this eHive database. There won’t be any updates to the job, worker, log_message etc tables.

USAGE EXAMPLES

    # Run a Job with default parameters, specify module by its package name:
standaloneJob.pl Bio::EnsEMBL::Hive::RunnableDB::FailureTest

    # Run the same Job with default parameters, but specify module by its relative filename:
standaloneJob.pl RunnableDB/FailureTest.pm

    # Run a Job and re-define some of the default parameters:
standaloneJob.pl Bio::EnsEMBL::Hive::RunnableDB::FailureTest -time_RUN=2 -time_WRITE_OUTPUT=3 -state=WRITE_OUTPUT -value=2
standaloneJob.pl Bio::EnsEMBL::Hive::RunnableDB::SystemCmd -cmd 'ls -l'
standaloneJob.pl Bio::EnsEMBL::Hive::RunnableDB::SystemCmd -input_id "{ 'cmd' => 'ls -l' }"

    # Run a Job and re-define its "db_conn" parameter to allow it to perform some database-related operations:
standaloneJob.pl RunnableDB/SqlCmd.pm -db_conn mysql://ensadmin:xxxxxxx@127.0.0.1:2912/lg4_compara_families_63 -sql 'INSERT INTO meta (meta_key,meta_value) VALUES ("hello", "world2")'

    # Run a Job initialised from the parameters of an existing Job topped-up with extra ones.
    # In this particular example the Runnable needs a "compara_db" parameter which defaults to the eHive database.
    # Since there is no eHive database here we need to define -compara_db on the command-line
standaloneJob.pl -url mysql://ensro@compara1.internal.sanger.ac.uk:3306/mm14_pecan_24way_86b -job_id 16781 -compara_db mysql://ensro@compara1.internal.sanger.ac.uk:3306/mm14_pecan_24way_86b

    # Run a Job with given parameters, but skip the write_output() step:
standaloneJob.pl Bio::EnsEMBL::Hive::RunnableDB::FailureTest -no_write -time_RUN=2 -time_WRITE_OUTPUT=3 -state=WRITE_OUTPUT -value=2

    # Run a Job and re-direct its dataflow into tables:
standaloneJob.pl Bio::EnsEMBL::Hive::RunnableDB::JobFactory -inputfile foo.txt -delimiter '\t' -column_names "[ 'name', 'age' ]" \
                    -flow_into "{ 2 => ['mysql://ensadmin:xxxxxxx@127.0.0.1:2914/lg4_triggers/foo', 'mysql://ensadmin:xxxxxxx@127.0.0.1:2914/lg4_triggers/bar'] }"

    # Run a Compara Job that needs a connection to Compara database:
standaloneJob.pl Bio::EnsEMBL::Compara::RunnableDB::ObjectFactory -compara_db 'mysql://ensadmin:xxxxxxx@127.0.0.1:2911/sf5_ensembl_compara_master' \
                    -adaptor_name MethodLinkSpeciesSetAdaptor -adaptor_method fetch_all_by_method_link_type -method_param_list "[ 'ENSEMBL_ORTHOLOGUES' ]" \
                    -column_names2getters "{ 'name' => 'name', 'mlss_id' => 'dbID' }" -flow_into "{ 2 => 'mysql://ensadmin:xxxxxxx@127.0.0.1:2914/lg4_triggers/baz' }"

    # Create a new Job in a database using automatic dataflow from a database-less Dummy Job:
standaloneJob.pl Bio::EnsEMBL::Hive::RunnableDB::Dummy -a_multiplier 1234567 -b_multiplier 9876543 \
                    -flow_into "{ 1 => 'mysql://ensadmin:xxxxxxx@127.0.0.1/lg4_long_mult/analysis?logic_name=start' }"

    # Produce a Semaphore group of Jobs from a database-less DigitFactory Job:
standaloneJob.pl Bio::EnsEMBL::Hive::Examples::LongMult::RunnableDB::DigitFactory -input_id "{ 'a_multiplier' => '2222222222', 'b_multiplier' => '3434343434'}" \
    -flow_into "{ '2->A' => 'mysql://ensadmin:${ENSADMIN_PSW}@127.0.0.1/lg4_long_mult/analysis?logic_name=part_multiply', 'A->1' => 'mysql://ensadmin:${ENSADMIN_PSW}@127.0.0.1/lg4_long_mult/analysis?logic_name=add_together' }"

SCRIPT-SPECIFIC OPTIONS

--help

print this help

--debug <level>

turn on debug messages at <level>

--no_write

skip the execution of write_output() step this time

--no_cleanup

do not cleanup temporary files

--reg_conf <path>

load registry entries from the given file (these entries may be needed by the Runnable itself)

--input_id <hash>

specify the whole input_id parameter in one stringified hash

--flow_out <hash>

defines the dataflow re-direction rules in a format similar to PipeConfig’s - see the last example

--language <name>

language in which the Runnable is written

All other options will be passed to the Runnable (leading dashes removed) and will constitute the parameters for the Job.