def test_handles_cwltool_failures(self, mock_cwl_main): p = PredictionRunner(self.sequence, self.model, self.config, self.models_dir, self.output_dir) def side_effect(args, stdout, stderr): print >> stderr, 'error in cwl_main' return 1 mock_cwl_main.side_effect = side_effect with self.assertRaises(RunnerException): p.run() self.assertTrue(mock_cwl_main.called)
def test_runs_cwltool_gets_output(self, mock_cwl_main): p = PredictionRunner(self.sequence, self.model, self.config, self.models_dir, self.output_dir) def side_effect(args, stdout, stderr): print >> stdout, '{"predictions":{"path": "/preds.bed","class": "File","size": 124}}' return 0 mock_cwl_main.side_effect = side_effect result = p.run() self.assertTrue(mock_cwl_main.called) self.assertEqual(result['path'], '/preds.bed')
def run(self, sequence_file, model_identifier): if '_vs_' in model_identifier: strategy = PredictionRunner.strategy_preference config_file = self.config.preferences_config_file else: strategy = PredictionRunner.strategy_predict config_file = self.config.predictions_config_file runner = PredictionRunner(sequence_file, model_identifier, config_file, self.config.model_files_dir, self.config.output_dir, strategy) return self.extract_predictions(runner.run())
def test_generates_ooutput_file_name(self): p = PredictionRunner(self.sequence, self.model, self.config, self.models_dir, self.output_dir) output_file_name = p.output_file_name self.assertIn('.bed', output_file_name) self.assertIn(self.model, output_file_name)
def test_fails_with_missing_config(self): with self.assertRaises(ValueError): PredictionRunner(self.sequence, self.model, None, self.models_dir, self.output_dir)
def test_writes_json_order(self): p = PredictionRunner(self.sequence, self.model, self.config, self.models_dir, self.output_dir) p.write_json_order()