Exemplo n.º 1
0
    def test_salmontools_with_bad_processor(self):
        """Test salmontools with a bad processor key."""
        test_dir = '/home/user/data_store/salmontools/'
        job_context = {
            'job_id': 123,
            'job': ProcessorJob.objects.create(),
            'pipeline': Pipeline(name="Salmon"),
            'input_file_path': test_dir + 'double_input/reads_1.fastq',
            'input_file_path_2': test_dir + 'double_input/reads_2.fastq',
            'salmontools_directory': test_dir + 'double_salmontools/',
            'salmontools_archive': test_dir + 'salmontools-result.tar.gz',
            'output_directory': test_dir + 'double_output/'
        }
        os.makedirs(job_context["salmontools_directory"], exist_ok=True)
        homo_sapiens = Organism.get_object_for_name("HOMO_SAPIENS")
        sample = Sample()
        sample.organism = homo_sapiens
        sample.save()
        job_context["sample"] = sample

        # Set the wrong yml filename on purpose to mess up Salmontools processor
        original_yml_file = utils.ProcessorEnum['SALMONTOOLS'].value['yml_file']
        utils.ProcessorEnum['SALMONTOOLS'].value['yml_file'] = 'foobar.yml'

        salmon._run_salmontools(job_context)
        self.assertEqual(job_context["success"], False)
        self.assertTrue(job_context["job"].failure_reason.startswith('Failed to set processor:'))

        # Change yml filename back
        utils.ProcessorEnum['SALMONTOOLS'].value['yml_file'] = original_yml_file
Exemplo n.º 2
0
    def test_single_read(self):
        """Test outputs when the sample has one read only."""
        job_context = {
            'job_id': 456,
            'job': ProcessorJob(),
            'pipeline': Pipeline(name="Salmon"),
            'input_file_path': self.test_dir + 'single_input/single_read.fastq',
            'output_directory': self.test_dir + 'single_output/',
            'salmontools_directory': self.test_dir + 'single_salmontools/',
            'salmontools_archive': self.test_dir + 'salmontools-result.tar.gz',
            'computed_files': []
        }
        os.makedirs(job_context["salmontools_directory"], exist_ok=True)

        homo_sapiens = Organism.get_object_for_name("HOMO_SAPIENS")
        sample = Sample()
        sample.organism = homo_sapiens
        sample.save()
        job_context["sample"] = sample

        salmon._run_salmontools(job_context)

        # Confirm job status
        self.assertTrue(job_context["success"])

        # Unpack result for checking
        os.system('gunzip ' + job_context['salmontools_directory'] + "*.gz")

        # Check output file
        output_file = job_context['salmontools_directory'] + 'unmapped_by_salmon.fa'
        expected_output_file = self.test_dir + 'expected_single_output/unmapped_by_salmon.fa'
        self.assertTrue(identical_checksum(output_file, expected_output_file))