From dd447260c4aed1d5e59ec3612f8bb4c4c13aa25b Mon Sep 17 00:00:00 2001 From: Diane Trout Date: Tue, 24 Sep 2013 14:38:39 -0700 Subject: [PATCH] Share more code to generate result tree. This was in preparation of trying to support some mechanism to submit different analysis from one directory somehow. --- .../submission/test/submission_test_common.py | 33 +++++++++++++++++++ htsworkflow/submission/test/test_daf.py | 7 ++-- htsworkflow/submission/test/test_results.py | 29 +++++----------- .../submission/test/test_submission.py | 25 +++----------- 4 files changed, 50 insertions(+), 44 deletions(-) diff --git a/htsworkflow/submission/test/submission_test_common.py b/htsworkflow/submission/test/submission_test_common.py index 32e87f7..3f43576 100644 --- a/htsworkflow/submission/test/submission_test_common.py +++ b/htsworkflow/submission/test/submission_test_common.py @@ -1,12 +1,14 @@ """Code shared between test cases. """ import RDF +import logging import os import tempfile import htsworkflow.util.rdfhelp S1_NAME = '1000-sample' S2_NAME = '2000-sample' +SCOMBINED_NAME = 'directory' S1_FILES = [ os.path.join(S1_NAME, 'file1_l8_r1.fastq'), @@ -18,6 +20,14 @@ S2_FILES = [ os.path.join(S2_NAME, 'file1_l5.fastq'), ] +SCOMBINED_FILES = [ + os.path.join(SCOMBINED_NAME, 's1_file1.bam'), + os.path.join(SCOMBINED_NAME, 's1_l5.fastq'), + os.path.join(SCOMBINED_NAME, 's2_file1.bam'), + os.path.join(SCOMBINED_NAME, 's2_l4.read1.fastq'), + os.path.join(SCOMBINED_NAME, 's2_l4.read2.fastq'), +] + TURTLE_PREFIX = htsworkflow.util.rdfhelp.get_turtle_header() S1_TURTLE = TURTLE_PREFIX + """ @@ -68,3 +78,26 @@ class MockAddDetails(object): break assert found +def generate_sample_results_tree(obj, prefix): + obj.tempdir = tempfile.mkdtemp(prefix=prefix) + obj.sourcedir = os.path.join(obj.tempdir, 'source') + os.mkdir(obj.sourcedir) + obj.resultdir = os.path.join(obj.tempdir, 'results') + os.mkdir(obj.resultdir) + + for d in [os.path.join(obj.sourcedir, S1_NAME), + os.path.join(obj.sourcedir, S2_NAME), + ]: + logging.debug("Creating: %s", d) + os.mkdir(d) + + tomake = [] + tomake.extend(S1_FILES) + tomake.extend(S2_FILES) + for f in tomake: + target = os.path.join(obj.sourcedir, f) + logging.debug("Creating: %s", target) + stream = open(target, 'w') + stream.write(f) + stream.close() + diff --git a/htsworkflow/submission/test/test_daf.py b/htsworkflow/submission/test/test_daf.py index 7959d1e..082c4ab 100644 --- a/htsworkflow/submission/test/test_daf.py +++ b/htsworkflow/submission/test/test_daf.py @@ -1,4 +1,5 @@ from contextlib import contextmanager +import logging import os from StringIO import StringIO import shutil @@ -167,7 +168,7 @@ def dump_model(model): class TestUCSCSubmission(TestCase): def setUp(self): - test_results.generate_sample_results_tree(self) + test_results.generate_sample_results_tree(self, 'daf_results') def tearDown(self): # see things created by temp_results.generate_sample_results_tree @@ -331,9 +332,11 @@ def mktempfile(suffix='', prefix='tmp', dir=None): def suite(): suite = TestSuite() - suite.addTests(defaultTestLoader.loadTestsFromTestCase(TestUCSCInfo)) + suite.addTests(defaultTestLoader.loadTestsFromTestCase(TestDAF)) + suite.addTests(defaultTestLoader.loadTestsFromTestCase(TestUCSCSubmission)) return suite if __name__ == "__main__": + logging.basicConfig(level=logging.DEBUG) from unittest2 import main main(defaultTest='suite') diff --git a/htsworkflow/submission/test/test_results.py b/htsworkflow/submission/test/test_results.py index e4d28cf..ee207cf 100644 --- a/htsworkflow/submission/test/test_results.py +++ b/htsworkflow/submission/test/test_results.py @@ -8,29 +8,9 @@ from unittest2 import TestCase, defaultTestLoader from htsworkflow.submission.results import ResultMap from submission_test_common import * -def generate_sample_results_tree(obj): - obj.tempdir = tempfile.mkdtemp(prefix="results_test") - obj.sourcedir = os.path.join(obj.tempdir, 'source') - obj.resultdir = os.path.join(obj.tempdir, 'results') - - for d in [obj.sourcedir, - os.path.join(obj.sourcedir, S1_NAME), - os.path.join(obj.sourcedir, S2_NAME), - obj.resultdir]: - os.mkdir(os.path.join(obj.tempdir, d)) - - tomake = [] - tomake.extend(S1_FILES) - tomake.extend(S2_FILES) - for f in tomake: - stream = open(os.path.join(obj.sourcedir, f), 'w') - stream.write(f) - stream.close() - - class TestResultMap(TestCase): def setUp(self): - generate_sample_results_tree(self) + generate_sample_results_tree(self, 'results_test') def tearDown(self): shutil.rmtree(self.tempdir) @@ -96,6 +76,13 @@ class TestResultMap(TestCase): os.path.islink( os.path.join(self.resultdir, f))) + def test_make_from_shared_directory(self): + """Split multiple datasets stored in a single directory + """ + self.skipTest("not implemented yet") + results = ResultMap() + results['S1'] = os.path.join(SCOMBINED_NAME, 's1*') + results['S2'] = os.path.join(SCOMBINED_NAME, 's2*') def suite(): suite = defaultTestLoader.loadTestsFromTestCase(TestResultMap) diff --git a/htsworkflow/submission/test/test_submission.py b/htsworkflow/submission/test/test_submission.py index 90852ce..53b4e91 100644 --- a/htsworkflow/submission/test/test_submission.py +++ b/htsworkflow/submission/test/test_submission.py @@ -1,3 +1,4 @@ + import os from StringIO import StringIO import shutil @@ -24,24 +25,6 @@ import RDF #import logging #logging.basicConfig(level=logging.DEBUG) -def generate_sample_results_tree(obj): - obj.tempdir = tempfile.mkdtemp(prefix="submission_test") - obj.sourcedir = os.path.join(obj.tempdir, 'source') - obj.resultdir = os.path.join(obj.tempdir, 'results') - - for d in [os.path.join(obj.tempdir, S1_NAME), - os.path.join(obj.tempdir, S2_NAME), - ]: - os.mkdir(os.path.join(obj.tempdir, d)) - - tomake = [] - tomake.extend(S1_FILES) - tomake.extend(S2_FILES) - for f in tomake: - stream = open(os.path.join(obj.tempdir, f), 'w') - stream.write(f) - stream.close() - class TestSubmissionModule(TestCase): def test_empty_list_submission(self): model = get_model() @@ -84,7 +67,7 @@ class TestSubmissionModule(TestCase): class TestSubmission(TestCase): def setUp(self): - generate_sample_results_tree(self) + generate_sample_results_tree(self, 'submission_test') self.model = get_model() def tearDown(self): @@ -124,8 +107,8 @@ thisView:alignments ucscDaf:filename_re ".*\\.bam$" ; map = ResultMap() print self.tempdir print os.listdir(self.tempdir) - map['1000'] = os.path.join(self.tempdir, S1_NAME) - map['2000'] = os.path.join(self.tempdir, S2_NAME) + map['1000'] = os.path.join(self.sourcedir, S1_NAME) + map['2000'] = os.path.join(self.sourcedir, S2_NAME) s = Submission('foo', self.model, 'http://localhost') mock = MockAddDetails(self.model, turtle) -- 2.30.2