def test_generate_target_dirname(self): lines = [] lines.append("#pspec\n") lines.append("(permute):number=1-3\n") lines.append("(permute):letter=AAA,BBB\n") lines.append("(permute):singleton_val=300\n") lines.append("(permute):animal=dog,cat\n") lines.append("concise_print:animal,an\n") lines.append("concise_print:letter,l\n") lines.append("concise_print:singleton_val,s\n") lines.append("concise_print:resolution,res\n") lines.append("concise_print:AAA,aa\n") lines.append("concise_print:BBB,bb\n") lines.append("scores_permute:resolution=userDay,userMonth\n") lines.append( "scores_from:file=<permutation_output_dir>/(resolution).csv,column_name=auc,row_number=1\n" ) lines.append("scores_to:./collected_results\n") lines.append("scores_y_axis:letter\n") lines.append("scores_x_axis:number,animal\n") stdout = mock_stdout.MockStdout() cspec = cluster_spec.ClusterSpec("/foo/bar/baz.cspec", lines, stdout, [], False, False) dirname = pooled_results_file.generate_target_dirname(cspec) #print "DIR IS : {0}".format(dirname) self.assertTrue(dirname == './collected_results/baz')
def test_gen_cluster_job_perm_code_from_pieces(self): lines = [] lines.append("#pspec\n") lines.append("trials:2\n") lines.append("(permute):number=1-3\n") lines.append("(permute):letter=AAA,BBB\n") lines.append("(permute):singleton_val=300\n") lines.append("(permute):animal=dog,cat\n") lines.append("concise_print:animal,an\n") lines.append("concise_print:letter,l\n") lines.append("concise_print:singleton_val,s\n") lines.append("concise_print:resolution,res\n") lines.append("concise_print:AAA,aa\n") lines.append("concise_print:BBB,bb\n") lines.append("scores_permute:resolution=userDay,userMonth\n") lines.append( "scores_from:file=<permutation_output_dir>/(resolution).csv,column_name=auc,row_number=1\n" ) lines.append("scores_to:./collected_results\n") lines.append("scores_y_axis:letter\n") lines.append("scores_x_axis:number,animal\n") stdout = mock_stdout.MockStdout() cspec = cluster_spec.ClusterSpec("/foo/bar/baz.cspec", lines, stdout, [], False, False) y_permutation = {'letter': 'AAA'} x_permutation = {'number': '3', 'animal': 'dog'} filename_perm_dict = {'singleton_val': '300', 'resolution': 'userDay'} result = pooled_timings_file.gen_cluster_job_perm_code_from_pieces( y_permutation, x_permutation, filename_perm_dict, cspec, '2') print "RESULT : {0}".format(result) self.assertTrue(result == 'an_dog_l_aa_number_3_s_300_trial_2')
def testCreateScript(self): pcode = 'l_a_n_1_trial_1' stdout = mock_stdout.MockStdout() cspec = cluster_spec.ClusterSpec("/foo/bar/baz.cspec", self.lines, stdout, [], False, False) cluster_runs = cluster_runs_info.ClusterRunsInfo(cspec, stdout) cluster = mock_cluster.MockCluster(cluster_runs) self.assertFalse(cluster.scripts) cscript = cluster.create_script(pcode) self.assertTrue(cluster.scripts[pcode] == cscript)
def testIsPermissionBlocked(self): pcode = 'l_a_n_1_trial_1' stdout = mock_stdout.MockStdout() cspec = cluster_spec.ClusterSpec("/foo/bar/baz.cspec", self.lines, stdout, [], False, False) cluster_runs = cluster_runs_info.ClusterRunsInfo(cspec, stdout) cluster = mock_cluster.MockCluster(cluster_runs) cluster.create_script(pcode) cluster.launch(pcode) cluster.test_helper_set_invoke_error(pcode) self.assertTrue(cluster.get_invoke_error(pcode) != '')
def testStopWaitingRun(self): pcode = 'l_a_n_1_trial_1' stdout = mock_stdout.MockStdout() cspec = cluster_spec.ClusterSpec("/foo/bar/baz.cspec", self.lines, stdout, [], False, False) cluster_runs = cluster_runs_info.ClusterRunsInfo(cspec, stdout) cluster = mock_cluster.MockCluster(cluster_runs) cluster.create_script(pcode) cluster.launch(pcode) cluster.stop_run(pcode) self.assertTrue(not (cluster.running_state.has_key(pcode)))
def testGetModTimeOutputFileRunIncomplete(self): pcode = 'l_a_n_1_trial_1' stdout = mock_stdout.MockStdout() cspec = cluster_spec.ClusterSpec("/foo/bar/baz.cspec", self.lines, stdout, [], False, False) cluster_runs = cluster_runs_info.ClusterRunsInfo(cspec, stdout) cluster = mock_cluster.MockCluster(cluster_runs) cluster.create_script(pcode) cluster.launch(pcode) cluster.test_helper_set_ok_to_run(pcode) cluster.test_helper_set_run_finished_incomplete(pcode) self.assertTrue(cluster.get_output_file_mod_time(pcode) == 0)
def testLaunch(self): pcode = 'l_a_n_1_trial_1' stdout = mock_stdout.MockStdout() cspec = cluster_spec.ClusterSpec("/foo/bar/baz.cspec", self.lines, stdout, [], False, False) cluster_runs = cluster_runs_info.ClusterRunsInfo(cspec, stdout) cluster = mock_cluster.MockCluster(cluster_runs) cluster.create_script(pcode) cluster.launch(pcode) self.assertTrue(cluster.running_state[pcode] == 'waiting') cluster.test_helper_set_ok_to_run(pcode) self.assertTrue(cluster.running_state[pcode] == 'running')
def testDeleteQstatLog(self): pcode = 'l_a_n_1_trial_1' stdout = mock_stdout.MockStdout() cspec = cluster_spec.ClusterSpec("/foo/bar/baz.cspec", self.lines, stdout, [], False, False) cluster_runs = cluster_runs_info.ClusterRunsInfo(cspec, stdout) cluster = mock_cluster.MockCluster(cluster_runs) self.assertFalse(cluster.is_qstat_log_present()) cluster.test_helper_set_qstat_info('qstatInfo') self.assertTrue(cluster.is_qstat_log_present()) cluster.delete_qstat_log() self.assertFalse(cluster.is_qstat_log_present())
def testDeleteInvokeLog(self): pcode = 'l_a_n_1_trial_1' stdout = mock_stdout.MockStdout() cspec = cluster_spec.ClusterSpec("/foo/bar/baz.cspec", self.lines, stdout, [], False, False) cluster_runs = cluster_runs_info.ClusterRunsInfo(cspec, stdout) cluster = mock_cluster.MockCluster(cluster_runs) cluster.create_script(pcode) self.assertFalse(cluster.is_invoke_log_present(pcode)) cluster.launch(pcode) self.assertTrue(cluster.is_invoke_log_present(pcode)) cluster.delete_invoke_log(pcode) self.assertFalse(cluster.is_invoke_log_present(pcode))
def testDeleteResults(self): pcode = 'l_a_n_1_trial_1' stdout = mock_stdout.MockStdout() cspec = cluster_spec.ClusterSpec("/foo/bar/baz.cspec", self.lines, stdout, [], False, False) cluster_runs = cluster_runs_info.ClusterRunsInfo(cspec, stdout) cluster = mock_cluster.MockCluster(cluster_runs) cluster.create_script(pcode) cluster.launch(pcode) cluster.test_helper_set_ok_to_run(pcode) cluster.test_helper_set_run_finished_complete(pcode) self.assertTrue(cluster.is_output_files_present(pcode)) cluster.delete_results(pcode) self.assertFalse(cluster.is_output_files_present(pcode))
def testIsDoneMarkerPresentRunIncomplete(self): pcode = 'l_a_n_1_trial_1' stdout = mock_stdout.MockStdout() cspec = cluster_spec.ClusterSpec("/foo/bar/baz.cspec", self.lines, stdout, [], False, False) cluster_runs = cluster_runs_info.ClusterRunsInfo(cspec, stdout) cluster = mock_cluster.MockCluster(cluster_runs) self.assertFalse(cluster.is_done_marker_present(pcode)) cluster.create_script(pcode) cluster.launch(pcode) self.assertFalse(cluster.is_done_marker_present(pcode)) cluster.test_helper_set_ok_to_run(pcode) self.assertFalse(cluster.is_done_marker_present(pcode)) cluster.test_helper_set_run_finished_incomplete(pcode) self.assertTrue(cluster.is_done_marker_present(pcode))
def test_build_code_using_dictionary(self): lines = [] lines.append("#pspec\n") lines.append("concise_print:letter,l\n") lines.append("concise_print:singleton_val,s\n") lines.append("concise_print:resolution,res\n") lines.append("concise_print:AAA,aa\n") lines.append("concise_print:BBB,bb\n") stdout = mock_stdout.MockStdout() cspec = cluster_spec.ClusterSpec("/foo/bar/baz.cspec", lines, stdout, [], False, False) perm_dict = {'singleton_val': '300', 'res': 'userDay'} code = pooled_results_file.build_code_using_dictionary( perm_dict, cspec) self.assertTrue(code == 'res_userDay_s_300')
def test_validate_statement_present_in_lines(self): stdout = mock_stdout.MockStdout() lines = [] lines.append("root_dir\n") self.assertFalse( cluster_spec.validate_statement_present(lines, "root_dir:", "some_dir", stdout)) lines.append("root_dir:\n") self.assertFalse( cluster_spec.validate_statement_present(lines, "root_dir:", "some_dir", stdout)) lines.append("root_dir:/foo/bar\n") self.assertTrue( cluster_spec.validate_statement_present(lines, "root_dir:", "some_dir", stdout)) # with spaces lines = [] lines.append("root_dir: /foo/bar \n") self.assertTrue( cluster_spec.validate_statement_present(lines, "root_dir:", "some_dir", stdout))
def test_gather_file_permuters(self): lines = [] lines.append("#pspec\n") lines.append("(permute):number=1-3\n") lines.append("(permute):letter=AAA,BBB\n") lines.append("(permute):singleton_val=300\n") lines.append("(permute):animal=dog,cat\n") lines.append("scores_permute:resolution=userDay,userMonth\n") lines.append( "scores_from:file=<permutation_output_dir>/(resolution).csv,column_name=auc,row_number=1\n" ) lines.append("scores_to:./collected_results\n") lines.append("scores_y_axis:letter\n") lines.append("scores_x_axis:number,animal\n") stdout = mock_stdout.MockStdout() cspec = cluster_spec.ClusterSpec("/foo/bar/baz.cspec", lines, stdout, [], False, False) perm_dict = pooled_results_file.gather_file_permuters(cspec) keys = perm_dict.keys() self.assertTrue(len(keys) == 2) self.assertTrue(perm_dict.has_key('singleton_val')) self.assertTrue(perm_dict.has_key('resolution'))
def test_load_cspec(self): lines = [] lines.append("#pspec\n") lines.append("trials:2\n") lines.append("tag=_myTag\n") lines.append("(permute):number=range(1,4)\n") # new form lines.append("(permute):letter=AAA,BBB\n") lines.append("(permute):singleton_val=300\n") lines.append("(permute):animal=dog,cat\n") lines.append("concise_print:animal,an\n") lines.append("encode:letter,l\n") # alternate form lines.append("concise_print:singleton_val,s\n") lines.append("concise_print:resolution,res\n") lines.append("concise_print:AAA,aa\n") lines.append("concise_print:BBB,bb\n") #lines.append("scores_permute:resolution=userDay,userMonth\n") #lines.append("scores_from:file=<permutation_output_dir>/(resolution).csv,column_name=auc,row_number=1\n") #lines.append("scores_to:./collected_results\n") #lines.append("scores_y_axis:letter\n") #lines.append("scores_x_axis:number,animal\n") lines.append("<replace>:config[AAA]=aaa\n") lines.append("<replace>:config[BBB]=bbb\n") lines.append("<replace>:pretty[1]=one\n") lines.append("<replace>:pretty[2]=two\n") lines.append("<replace>:pretty[3]=three\n") lines.append("<replace>:root=/nfs/foo/bar\n") lines.append( "<replace>:x_dir=<root>/(letter)/<config[(letter)]>/(number)\n") lines.append("<replace>:algs_dir=/nfs/algs\n") lines.append("<replace>:tools_dir=<algs_dir>/tools\n") lines.append("<replace>:outfile_root=<pretty[(number)]>__TEST\n") lines.append("root_dir:/myRuns\n") lines.append("qsub_command:-q eecs,eecs1,eecs,share\n") lines.append("qsub_command:-M [email protected]\n") lines.append("qsub_command:-m beas\n") lines.append("first_job_number:100\n") lines.append( "command:echo (letter) (number) (singleton_val) > <permutation_output_dir>/(letter)_(number)_<pretty[(number)]>.txt\n" ) stdout = mock_stdout.MockStdout() cspec = cluster_spec.ClusterSpec("/foo/bar/baz.cspec", lines, stdout, [], False, False) #print self.cspec.concise_print_map # concise_name self.assertTrue(cspec.get_concise_name('number') == 'number') self.assertTrue(cspec.get_concise_name('letter') == 'l') self.assertTrue(cspec.get_concise_name('singleton_val') == 's') self.assertTrue(cspec.get_concise_name('resolution') == 'res') #scores_info #self.assertTrue(cspec.scores_permuters['resolution'][0] == 'userDay') #self.assertTrue(cspec.scores_permuters['resolution'][1] == 'userMonth') #self.assertTrue(cspec.scores_from_filepath=='<permutation_output_dir>/(resolution).csv') #self.assertTrue(cspec.scores_from_colname=='auc') #self.assertTrue(cspec.scores_from_rownum=='1') #print 'self.cspec.scores_to : {0}'.format(self.cspec.scores_to) #self.assertTrue(cspec.scores_to=='./collected_results') #self.assertTrue(cspec.scores_x_axis==['number', 'animal']) #self.assertTrue(cspec.scores_y_axis==['letter']) #script_dir self.assertTrue(cspec.script_dir == '/myRuns/baz/scripts') #trials: self.assertTrue(cspec.trials == '2') #master_job_name: self.assertTrue(cspec.cspec_name == 'baz') #first_job_number: self.assertTrue(cspec.first_job_number == '100') #root_dir: self.assertTrue(cspec.root_dir == '/myRuns') # permuters: self.assertTrue(cspec.permuters['number'][0] == '1') self.assertTrue(cspec.permuters['number'][1] == '2') self.assertTrue(cspec.permuters['number'][2] == '3') self.assertTrue(cspec.permuters['letter'][0] == 'AAA') self.assertTrue(cspec.permuters['letter'][1] == 'BBB') # generate_results_dir_for_permutation: self.assertTrue( cspec.generate_results_dir_for_permutation('xyz_trial3') == '/myRuns/baz/results/xyz_trial3') #concise_print_map: self.assertTrue(cspec.concise_print_map['letter'] == 'l') self.assertTrue(cspec.concise_print_map['singleton_val'] == 's') #key_val_map: kvm = cspec.key_val_map self.assertTrue(kvm['config[AAA]'] == 'aaa') self.assertTrue(kvm['config[BBB]'] == 'bbb') self.assertTrue(kvm['pretty[1]'] == 'one') self.assertTrue(kvm['pretty[2]'] == 'two') self.assertTrue(kvm['pretty[3]'] == 'three') self.assertTrue(kvm['cspec_name'] == 'baz') self.assertTrue(kvm['root'] == '/nfs/foo/bar') self.assertTrue(kvm['x_dir'] == '/nfs/foo/bar/(letter)/<config[(letter)]>/(number)') self.assertTrue(kvm['algs_dir'] == '/nfs/algs') self.assertTrue(kvm['tools_dir'] == '/nfs/algs/tools') self.assertTrue(kvm['outfile_root'] == '<pretty[(number)]>__TEST') #commands: commands_as_string = "{0}".format(cspec.commands) self.assertTrue( commands_as_string == "['echo (letter) (number) (singleton_val) > <permutation_output_dir>/(letter)_(number)_<pretty[(number)]>.txt']" ) #qsub_commands: qsub_commands_as_string = "{0}".format(cspec.qsub_commands) self.assertTrue( qsub_commands_as_string == "['-q eecs,eecs1,eecs,share', '-M [email protected]', '-m beas']")
def test_expand_permutations(self): stdout = mock_stdout.MockStdout() lines = [] lines.append("#pspec\n") lines.append("(permute):number=range(1,4)\n") lines.append("(permute):letter=AAA,BBB\n") lines.append("(permute):singleton_val=300\n") lines.append("(permute):animal=dog,cat\n") cspec = cluster_spec.ClusterSpec("/foo/bar/baz.cspec", lines, stdout, [], False, False) permuters = cspec.permuters dict_list = permutations.expand_permutations(permuters) #print dict_list self.assertTrue(len(dict_list) == 12) dict1 = { 'animal': 'cat', 'number': '1', 'letter': 'AAA', 'singleton_val': '300' } dict2 = { 'animal': 'cat', 'number': '1', 'letter': 'BBB', 'singleton_val': '300' } dict3 = { 'animal': 'cat', 'number': '2', 'letter': 'AAA', 'singleton_val': '300' } dict4 = { 'animal': 'cat', 'number': '2', 'letter': 'BBB', 'singleton_val': '300' } dict5 = { 'animal': 'cat', 'number': '3', 'letter': 'AAA', 'singleton_val': '300' } dict6 = { 'animal': 'cat', 'number': '3', 'letter': 'BBB', 'singleton_val': '300' } dict7 = { 'animal': 'dog', 'number': '1', 'letter': 'AAA', 'singleton_val': '300' } dict8 = { 'animal': 'dog', 'number': '1', 'letter': 'BBB', 'singleton_val': '300' } dict9 = { 'animal': 'dog', 'number': '2', 'letter': 'AAA', 'singleton_val': '300' } dict10 = { 'animal': 'dog', 'number': '2', 'letter': 'BBB', 'singleton_val': '300' } dict11 = { 'animal': 'dog', 'number': '3', 'letter': 'AAA', 'singleton_val': '300' } dict12 = { 'animal': 'dog', 'number': '3', 'letter': 'BBB', 'singleton_val': '300' } self.assertTrue(dict1 in dict_list) self.assertTrue(dict2 in dict_list) self.assertTrue(dict3 in dict_list) self.assertTrue(dict4 in dict_list) self.assertTrue(dict5 in dict_list) self.assertTrue(dict6 in dict_list) self.assertTrue(dict7 in dict_list) self.assertTrue(dict8 in dict_list) self.assertTrue(dict9 in dict_list) self.assertTrue(dict10 in dict_list) self.assertTrue(dict11 in dict_list) self.assertTrue(dict12 in dict_list)