Exemplo n.º 1
0
 def test_clone_analysis_dir_copy_fastqs(self):
     """
     clone: copies an analysis directory
     """
     # Make a source analysis dir
     analysis_dir = MockAnalysisDirFactory.bcl2fastq2(
         "190116_M01234_0002_AXYZ123",
         platform="miseq",
         paired_end=True,
         no_lane_splitting=False,
         include_stats_files=True,
         top_dir=self.dirn)
     analysis_dir.create()
     ap = AutoProcess(analysis_dir.dirn)
     UpdateAnalysisDir(ap).add_processing_report()
     ap.add_directory("primary_data/190116_M01234_0002_AXYZ123")
     # Make a copy
     clone_dir = os.path.join(self.dirn, "190116_M01234_0002_AXYZ123_copy")
     self.assertFalse(os.path.exists(clone_dir))
     clone(ap, clone_dir, copy_fastqs=True)
     self.assertTrue(os.path.isdir(clone_dir))
     # Check contents
     for subdir in ('logs', 'ScriptCode'):
         d = os.path.join(clone_dir, subdir)
         self.assertTrue(os.path.isdir(d), "Missing '%s'" % subdir)
     for filen in (
             'SampleSheet.orig.csv',
             'custom_SampleSheet.csv',
             'auto_process.info',
             'metadata.info',
             'statistics.info',
             'statistics_full.info',
             'per_lane_statistics.info',
             'per_lane_sample_stats.info',
             'processing_qc.html',
     ):
         f = os.path.join(clone_dir, filen)
         self.assertTrue(os.path.isfile(f), "Missing '%s'" % filen)
     # Check unaligned
     unaligned = os.path.join(clone_dir, 'bcl2fastq')
     self.assertTrue(os.path.isdir(unaligned))
     # Check primary data
     primary_data = os.path.join(clone_dir, 'primary_data',
                                 '190116_M01234_0002_AXYZ123')
     self.assertTrue(os.path.islink(primary_data))
     # Check projects
     for proj in ('AB', 'CDE', 'undetermined'):
         d = os.path.join(clone_dir, proj)
         self.assertTrue(os.path.isdir(d), "Missing '%s'" % proj)
     # Check parameters
     params = AnalysisDirParameters(
         filen=os.path.join(clone_dir, 'auto_process.info'))
     self.assertEqual(params.sample_sheet,
                      os.path.join(clone_dir, "custom_SampleSheet.csv"))
     self.assertEqual(params.primary_data_dir,
                      os.path.join(clone_dir, "primary_data"))
Exemplo n.º 2
0
 def test_clone_fails_if_target_dir_exists(self):
     """
     clone: raises an exception if target dir already exists 
     """
     # Make a source analysis dir
     analysis_dir = MockAnalysisDirFactory.bcl2fastq2(
         "190116_M01234_0002_AXYZ123",
         platform="miseq",
         paired_end=True,
         no_lane_splitting=False,
         include_stats_files=True,
         top_dir=self.dirn)
     analysis_dir.create()
     ap = AutoProcess(analysis_dir.dirn)
     UpdateAnalysisDir(ap).add_processing_report()
     ap.add_directory("primary_data/190116_M01234_0002_AXYZ123")
     # Make target dir
     clone_dir = os.path.join(self.dirn, "190116_M01234_0002_AXYZ123_copy")
     os.mkdir(clone_dir)
     # Try to copy source dir
     self.assertRaises(Exception, clone, ap, clone_dir)
Exemplo n.º 3
0
 def test_clone_analysis_dir_empty_params(self):
     """
     clone: copies an analysis directory when parameter file is empty
     """
     # Make a source analysis dir
     analysis_dir = MockAnalysisDirFactory.bcl2fastq2(
         "190116_M01234_0002_AXYZ123",
         platform="miseq",
         paired_end=True,
         no_lane_splitting=False,
         include_stats_files=True,
         top_dir=self.dirn)
     analysis_dir.create()
     ap = AutoProcess(analysis_dir.dirn)
     UpdateAnalysisDir(ap).add_processing_report()
     ap.add_directory("primary_data/190116_M01234_0002_AXYZ123")
     # Remove data from parameter file
     parameter_file = ap.parameter_file
     tmp_parameter_file = os.path.join(self.dirn, 'new_params.tmp')
     del (ap)
     with open(parameter_file, 'r') as fp:
         with open(tmp_parameter_file, 'w') as fpp:
             for line in fp:
                 line = "%s\t." % line.split('\t')[0]
                 fpp.write(line)
     os.remove(parameter_file)
     os.rename(tmp_parameter_file, parameter_file)
     ap = AutoProcess(analysis_dir.dirn)
     # Make a copy
     clone_dir = os.path.join(self.dirn, "190116_M01234_0002_AXYZ123_copy")
     self.assertFalse(os.path.exists(clone_dir))
     clone(ap, clone_dir, exclude_projects=False)
     self.assertTrue(os.path.isdir(clone_dir))
     # Check contents
     for subdir in ('logs', 'ScriptCode'):
         d = os.path.join(clone_dir, subdir)
         self.assertTrue(os.path.isdir(d), "Missing '%s'" % subdir)
     for filen in (
             'SampleSheet.orig.csv',
             'custom_SampleSheet.csv',
             'auto_process.info',
             'metadata.info',
             'statistics.info',
             'statistics_full.info',
             'per_lane_statistics.info',
             'per_lane_sample_stats.info',
             'processing_qc.html',
     ):
         f = os.path.join(clone_dir, filen)
         self.assertTrue(os.path.isfile(f), "Missing '%s'" % filen)
     # Check unaligned
     unaligned = os.path.join(clone_dir, 'bcl2fastq')
     self.assertTrue(os.path.islink(unaligned))
     # Check primary data
     primary_data = os.path.join(clone_dir, 'primary_data',
                                 '190116_M01234_0002_AXYZ123')
     self.assertFalse(os.path.exists(primary_data))
     # Check projects
     for proj in ('AB', 'CDE', 'undetermined'):
         d = os.path.join(clone_dir, proj)
         self.assertTrue(os.path.exists(d), "Missing '%s'" % proj)