コード例 #1
0
def test_pdbfix_templates():
    set_loglevel('debug')
    template1_pdb_gz_filepath = get_installed_resource_filename(os.path.join('tests', 'resources', 'KC1D_HUMAN_D0_4KB8_D.pdb.gz'))
    template1_pdb_filepath = os.path.join(ensembler.core.default_project_dirnames.templates_structures_resolved, 'KC1D_HUMAN_D0_4KB8_D.pdb')
    template2_pdb_gz_filepath = get_installed_resource_filename(os.path.join('tests', 'resources', 'KC1D_HUMAN_D0_3UYS_D.pdb.gz'))
    template2_pdb_filepath = os.path.join(ensembler.core.default_project_dirnames.templates_structures_resolved, 'KC1D_HUMAN_D0_3UYS_D.pdb')
    with ensembler.utils.enter_temp_dir():
        ensembler.utils.create_dir(ensembler.core.default_project_dirnames.templates_structures_resolved)
        ensembler.utils.create_dir(ensembler.core.default_project_dirnames.templates_structures_modeled_loops)
        with gzip.open(template1_pdb_gz_filepath) as template1_pdb_gz_file:
            with open(template1_pdb_filepath, 'w') as template1_pdb_file:
                contents = template1_pdb_gz_file.read()
                if type(contents) == bytes:
                    contents = contents.decode('utf-8')
                template1_pdb_file.write(contents)
        with gzip.open(template2_pdb_gz_filepath) as template2_pdb_gz_file:
            with open(template2_pdb_filepath, 'w') as template2_pdb_file:
                contents = template2_pdb_gz_file.read()
                if type(contents) == bytes:
                    contents = contents.decode('utf-8')
                template2_pdb_file.write(contents)

        template1 = Mock()
        template1.id = 'KC1D_HUMAN_D0_4KB8_D'
        template1.seq = 'LRVGNRYRLGRKIGSGSFGDIYLGTDIAAGEEVAIKLECVKTKHPQLHIESKIYKMMQGGVGIPTIRWCGAEGDYNVMVMELLGPSLEDLFNFCSRKFSLKTVLLLADQMISRIEYIHSKNFIHRDVKPDNFLMGLGKKGNLVYIIDFGLAKKYRDARTHQHIPYRENKNLTGTARYASINTHLGIEQSRRDDLESLGYVLMYFNLGSLPWQGLKAATKRQKYERISEKKMSTPIEVLCKGYPSEFATYLNFCRSLRFDDKPDYSYLRQLFRNLFHRQGFSYDYVFDWNMLKFGASRAADDAERERRDREERLRH'

        template2 = Mock()
        template2.id = 'KC1D_HUMAN_D0_3UYS_D'
        template2.seq = 'MELRVGNRYRLGRKIGSGSFGDIYLGTDIAAGEEVAIKLECVKTKHPQLHIESKIYKMMQGGVGIPTIRWCGAEGDYNVMVMELLGPSLEDLFNFCSRKFSLKTVLLLADQMISRIEYIHSKNFIHRDVKPDNFLMGLGKKGNLVYIIDFGLAKKYRDARTHQHIPYRENKNLTGTARYASINTHLGIEQSRRDDLESLGYVLMYFNLGSLPWQGLKAATKRQKYERISEKKMSTPIEVLCKGYPSEFATYLNFCRSLRFDDKPDYSYLRQLFRNLFHRQGFSYDYVFDWNMLK'

        templates = [template1, template2]

        missing_residues_list = pdbfix_templates(templates)
コード例 #2
0
 def templates_resolved(self):
     self.targets()
     shutil.copy(
         get_installed_resource_filename(
             os.path.join('tests', 'example_project',
                          default_project_dirnames.templates,
                          'meta0.yaml')),
         os.path.join(self.project_dir, default_project_dirnames.templates))
     shutil.copy(
         get_installed_resource_filename(
             os.path.join('tests', 'example_project',
                          default_project_dirnames.templates,
                          'templates-resolved-seq.fa')),
         os.path.join(self.project_dir, default_project_dirnames.templates))
     shutil.copy(
         get_installed_resource_filename(
             os.path.join('tests', 'example_project',
                          default_project_dirnames.templates,
                          'templates-full-seq.fa')),
         os.path.join(self.project_dir, default_project_dirnames.templates))
     distutils.dir_util.copy_tree(
         get_installed_resource_filename(
             os.path.join(
                 'tests', 'example_project',
                 default_project_dirnames.templates_structures_resolved)),
         os.path.join(
             self.project_dir,
             default_project_dirnames.templates_structures_resolved))
コード例 #3
0
 def init(self):
     ensembler.initproject.InitProject(self.project_dir)
     shutil.copy(
         get_installed_resource_filename(
             os.path.join('tests', 'example_project', 'meta0.yaml')),
         self.project_dir)
     shutil.copy(
         get_installed_resource_filename(
             os.path.join('tests', 'example_project',
                          'manual-overrides.yaml')), self.project_dir)
コード例 #4
0
 def init(self):
     ensembler.initproject.InitProject(self.project_dir)
     shutil.copy(
         get_installed_resource_filename(os.path.join(
             'tests', 'example_project', 'meta0.yaml'
         )),
         self.project_dir
     )
     shutil.copy(
         get_installed_resource_filename(os.path.join(
             'tests', 'example_project', 'manual-overrides.yaml'
         )),
         self.project_dir
     )
コード例 #5
0
def test_build_model():
    template_filepath = get_installed_resource_filename(
        os.path.join('tests', 'resources', 'mock_template.pdb'))
    aln_filepath = get_installed_resource_filename(
        os.path.join('tests', 'resources', 'mock_template-alignment.pir'))

    with enter_temp_dir():
        target = Mock()
        template = Mock()
        target_setup_data = Mock()
        target.id = 'mock_target'
        target.seq = 'YILGDTLGVGGKVKVGKH'
        template.id = 'mock_template'
        template.seq = 'YQNLSPVGSGGSVCAAFD'
        target_setup_data.target_starttime = datetime.datetime.utcnow()
        target_setup_data.models_target_dir = os.path.join(
            ensembler.core.default_project_dirnames.models, target.id)
        os.mkdir(ensembler.core.default_project_dirnames.models)
        model_dir = os.path.join(
            ensembler.core.default_project_dirnames.models, 'mock_target',
            'mock_template')
        os.makedirs(model_dir)
        os.mkdir(ensembler.core.default_project_dirnames.templates)
        os.mkdir(ensembler.core.default_project_dirnames.
                 templates_structures_resolved)

        shutil.copy(
            template_filepath, ensembler.core.default_project_dirnames.
            templates_structures_resolved)
        shutil.copy(aln_filepath, os.path.join(model_dir, 'alignment.pir'))

        ensembler.modeling.build_model(target,
                                       template,
                                       target_setup_data=target_setup_data)

        # Example model.pdb.gz contents (not testing this as it may be dependent
        # upon Modeller version as well as modelling stochasticity):
        #
        # ..EXPDTA    THEORETICAL MODEL, MODELLER 9.12 2014/08/26 13:15:44
        # REMARK   6 MODELLER OBJECTIVE FUNCTION:       326.6798
        # REMARK   6 MODELLER BEST TEMPLATE % SEQ ID:  27.778
        # ATOM      1  N   TYR     1      48.812  50.583  13.949  1.00110.28           N
        # ATOM      2  CA  TYR     1      49.070  50.334  15.387  1.00110.28           C

        model_filepath = os.path.join(target_setup_data.models_target_dir,
                                      template.id, 'model.pdb.gz')
        assert os.path.exists(model_filepath)
        assert os.path.getsize(model_filepath) > 0
コード例 #6
0
ファイル: test_modeling.py プロジェクト: choderalab/ensembler
def test_align_command():
    ref_resources_dirpath = get_installed_resource_filename(os.path.join('tests', 'example_project'))
    with integrationtest_context(set_up_project_stage='templates_modeled_loops'):
        targets = ['KC1D_HUMAN_D0', 'EGFR_HUMAN_D0']
        templates = ['KC1D_HUMAN_D0_4KB8_D', 'KC1D_HUMAN_D0_4HNF_A']
        args = {
            '--targets': ','.join(targets),
            '--targetsfile': False,
            '--templates': ','.join(templates),
            '--templatesfile': False,
            '--verbose': False,
        }

        ensembler.cli_commands.align.dispatch(args)
        for target in targets:
            naln_files = 0
            for dir, subdirs, files in os.walk(os.path.join(ensembler.core.default_project_dirnames.models, target)):
                for file in files:
                    if file == 'alignment.pir':
                        naln_files += 1
            assert naln_files == len(templates)

        for target in targets:
            seqid_filepath = os.path.join(ensembler.core.default_project_dirnames.models, target, 'sequence-identities.txt')
            ref_seqid_filepath = os.path.join(ref_resources_dirpath, seqid_filepath)
            with open(seqid_filepath) as seqid_file:
                seqid_file_text = seqid_file.read()
            with open(ref_seqid_filepath) as ref_seqid_file:
                ref_seqid_file_text = ref_seqid_file.read()
            print(seqid_file_text)
            print(ref_seqid_file_text)
            assert seqid_file_text == ref_seqid_file_text
コード例 #7
0
 def targets(self):
     self.init()
     distutils.dir_util.copy_tree(
         get_installed_resource_filename(
             os.path.join('tests', 'example_project',
                          default_project_dirnames.targets)),
         os.path.join(self.project_dir, default_project_dirnames.targets))
コード例 #8
0
 def targets(self):
     self.init()
     distutils.dir_util.copy_tree(
         get_installed_resource_filename(
             os.path.join('tests', 'example_project', default_project_dirnames.targets)
         ),
         os.path.join(self.project_dir, default_project_dirnames.targets)
     )
コード例 #9
0
 def _write_manual_overrides_file(self):
     if not os.path.exists(manual_overrides_filename):
         template_manual_overrides_filepath = get_installed_resource_filename(
             os.path.join('resources', 'template-manual-overrides.yaml'))
         manual_overrides_filepath = os.path.join(
             self.project_toplevel_dir, manual_overrides_filename)
         shutil.copy(template_manual_overrides_filepath,
                     manual_overrides_filepath)
コード例 #10
0
 def templates_modeled_loops(self):
     self.templates_resolved()
     distutils.dir_util.copy_tree(
         get_installed_resource_filename(
             os.path.join('tests', 'example_project', default_project_dirnames.templates_structures_modeled_loops)
         ),
         os.path.join(self.project_dir, default_project_dirnames.templates_structures_modeled_loops)
     )
コード例 #11
0
def test_attempt_symlink_structure_files():
    pdbid = '4CFE'
    structure_paths = [get_installed_resource_filename(os.path.join('tests', 'resources'))]
    with enter_temp_dir():
        os.mkdir('pdb')
        project_pdb_filepath = os.path.join('pdb', pdbid + '.pdb.gz')
        structure_type = 'pdb'
        ensembler.initproject.attempt_symlink_structure_files(pdbid, '.', structure_paths, structure_type)
        assert os.path.exists(project_pdb_filepath)
コード例 #12
0
def test_log_unique_domain_names():
    with open(
        get_installed_resource_filename(
            os.path.join('tests', 'resources', 'uniprot-CK1-kinases.xml')
        )
    ) as uniprotxml_file:
        uniprotxml_string = ensembler.uniprot.remove_uniprot_xmlns(uniprotxml_file.read())
        uniprotxml = etree.fromstring(uniprotxml_string)
    ensembler.initproject.log_unique_domain_names('domain:"Protein kinase" AND reviewed:yes AND family:"CK1" AND taxonomy:9606', uniprotxml)
コード例 #13
0
ファイル: initproject.py プロジェクト: choderalab/ensembler
 def _write_manual_overrides_file(self):
     if not os.path.exists(manual_overrides_filename):
         template_manual_overrides_filepath = get_installed_resource_filename(
             os.path.join('resources', 'template-manual-overrides.yaml')
         )
         manual_overrides_filepath = os.path.join(
             self.project_toplevel_dir, manual_overrides_filename
         )
         shutil.copy(template_manual_overrides_filepath, manual_overrides_filepath)
コード例 #14
0
def test_extract_residues_by_resnum_from_4CFE():
    # 4CFE contains a 'TPO' residue
    pdb_input_filepath = get_installed_resource_filename(os.path.join('tests', 'resources', '4CFE.pdb.gz'))
    template = Mock()
    template.chainid= 'A'
    template.resolved_pdbresnums = [str(x) for x in range(16, 269)]
    ofile = StringIO()
    ensembler.pdb.extract_residues_by_resnum(ofile, pdb_input_filepath, template)
    ofile.close()
コード例 #15
0
 def templates_modeled_loops(self):
     self.templates_resolved()
     distutils.dir_util.copy_tree(
         get_installed_resource_filename(
             os.path.join(
                 'tests', 'example_project', default_project_dirnames.
                 templates_structures_modeled_loops)),
         os.path.join(
             self.project_dir,
             default_project_dirnames.templates_structures_modeled_loops))
コード例 #16
0
def test_extract_residues_by_resnum_from_4CFE():
    # 4CFE contains a 'TPO' residue
    pdb_input_filepath = get_installed_resource_filename(
        os.path.join('tests', 'resources', '4CFE.pdb.gz'))
    template = Mock()
    template.chainid = 'A'
    template.resolved_pdbresnums = [str(x) for x in arange(16, 269)]
    ofile = StringIO()
    ensembler.pdb.extract_residues_by_resnum(ofile, pdb_input_filepath,
                                             template)
    ofile.close()
コード例 #17
0
def test_extract_residues_by_resnum_from_3HLL():
    # 3HLL contains resnums '56A' and '93B'
    pdb_input_filepath = get_installed_resource_filename(os.path.join('tests', 'resources', '3HLL.pdb.gz'))
    template = Mock()
    template.chainid = 'A'
    template.resolved_pdbresnums = [str(x) for x in range(24, 172) + range(183, 309)]
    template.resolved_pdbresnums[template.resolved_pdbresnums.index('56')] = '56A'
    template.resolved_pdbresnums[template.resolved_pdbresnums.index('93')] = '93B'
    ofile = StringIO()
    ensembler.pdb.extract_residues_by_resnum(ofile, pdb_input_filepath, template)
    ofile.close()
コード例 #18
0
def test_log_unique_domain_names():
    with open(
            get_installed_resource_filename(
                os.path.join('tests', 'resources',
                             'uniprot-CK1-kinases.xml'))) as uniprotxml_file:
        uniprotxml_string = ensembler.uniprot.remove_uniprot_xmlns(
            uniprotxml_file.read())
        uniprotxml = etree.fromstring(uniprotxml_string)
    ensembler.initproject.log_unique_domain_names(
        'domain:"Protein kinase" AND reviewed:yes AND family:"CK1" AND taxonomy:9606',
        uniprotxml)
コード例 #19
0
def test_attempt_symlink_structure_files():
    pdbid = '4CFE'
    structure_paths = [
        get_installed_resource_filename(os.path.join('tests', 'resources'))
    ]
    with enter_temp_dir():
        os.mkdir('pdb')
        project_pdb_filepath = os.path.join('pdb', pdbid + '.pdb.gz')
        structure_type = 'pdb'
        ensembler.initproject.attempt_symlink_structure_files(
            pdbid, '.', structure_paths, structure_type)
        assert os.path.exists(project_pdb_filepath)
コード例 #20
0
 def _copy_modeling_files(self,
                          target_level_files=None,
                          template_level_files=None):
     for target in self.targets_list:
         for filename in target_level_files:
             shutil.copy(
                 get_installed_resource_filename(
                     os.path.join('tests', 'example_project',
                                  default_project_dirnames.models, target,
                                  filename)),
                 os.path.join(self.project_dir,
                              default_project_dirnames.models, target))
         for template in self.templates_list:
             for filename in template_level_files:
                 shutil.copy(
                     get_installed_resource_filename(
                         os.path.join('tests', 'example_project',
                                      default_project_dirnames.models,
                                      target, template, filename)),
                     os.path.join(self.project_dir,
                                  default_project_dirnames.models, target,
                                  template))
コード例 #21
0
def test_extract_residues_by_resnum_output():
    pdb_input_filepath = get_installed_resource_filename(os.path.join('tests', 'resources', '3HLL.pdb.gz'))
    template = Mock()
    template.chainid = 'A'
    template.resolved_pdbresnums = [str(x) for x in range(24, 172) + range(183, 309)]
    template.resolved_pdbresnums[template.resolved_pdbresnums.index('56')] = '56A'
    template.resolved_pdbresnums[template.resolved_pdbresnums.index('93')] = '93B'
    ofile = StringIO()
    ensembler.pdb.extract_residues_by_resnum(ofile, pdb_input_filepath, template)
    ofile_text = ofile.getvalue()
    first_line = ofile_text[0: ofile_text.index('\n')]
    assert first_line == 'ATOM    175  N   TYR A  24      50.812  43.410  19.390  1.00 38.55           N  '
    ofile.close()
コード例 #22
0
 def _copy_modeling_files(self, target_level_files=None, template_level_files=None):
     for target in self.targets_list:
         for filename in target_level_files:
             shutil.copy(
                 get_installed_resource_filename(os.path.join(
                     'tests',
                     'example_project',
                     default_project_dirnames.models,
                     target, filename
                 )),
                 os.path.join(self.project_dir, default_project_dirnames.models, target)
             )
         for template in self.templates_list:
             for filename in template_level_files:
                 shutil.copy(
                     get_installed_resource_filename(os.path.join(
                         'tests',
                         'example_project',
                         default_project_dirnames.models,
                         target, template, filename
                     )),
                     os.path.join(self.project_dir, default_project_dirnames.models, target, template)
                 )
コード例 #23
0
ファイル: test_modeling.py プロジェクト: choderalab/ensembler
def test_build_model():
    template_filepath = get_installed_resource_filename(os.path.join('tests', 'resources',  'mock_template.pdb'))
    aln_filepath = get_installed_resource_filename(os.path.join('tests', 'resources', 'mock_template-alignment.pir'))

    with enter_temp_dir():
        target = Mock()
        template = Mock()
        target_setup_data = Mock()
        target.id = 'mock_target'
        target.seq = 'YILGDTLGVGGKVKVGKH'
        template.id = 'mock_template'
        template.seq = 'YQNLSPVGSGGSVCAAFD'
        target_setup_data.target_starttime = datetime.datetime.utcnow()
        target_setup_data.models_target_dir = os.path.join(ensembler.core.default_project_dirnames.models, target.id)
        os.mkdir(ensembler.core.default_project_dirnames.models)
        model_dir = os.path.join(ensembler.core.default_project_dirnames.models, 'mock_target', 'mock_template')
        os.makedirs(model_dir)
        os.mkdir(ensembler.core.default_project_dirnames.templates)
        os.mkdir(ensembler.core.default_project_dirnames.templates_structures_resolved)

        shutil.copy(template_filepath, ensembler.core.default_project_dirnames.templates_structures_resolved)
        shutil.copy(aln_filepath, os.path.join(model_dir, 'alignment.pir'))

        ensembler.modeling.build_model(target, template, target_setup_data=target_setup_data)

        # Example model.pdb.gz contents (not testing this as it may be dependent
        # upon Modeller version as well as modelling stochasticity):
        #
        # ..EXPDTA    THEORETICAL MODEL, MODELLER 9.12 2014/08/26 13:15:44
        # REMARK   6 MODELLER OBJECTIVE FUNCTION:       326.6798
        # REMARK   6 MODELLER BEST TEMPLATE % SEQ ID:  27.778
        # ATOM      1  N   TYR     1      48.812  50.583  13.949  1.00110.28           N
        # ATOM      2  CA  TYR     1      49.070  50.334  15.387  1.00110.28           C

        model_filepath = os.path.join(target_setup_data.models_target_dir, template.id, 'model.pdb.gz')
        assert os.path.exists(model_filepath)
        assert os.path.getsize(model_filepath) > 0
コード例 #24
0
def test_package_for_fah():
    with integrationtest_context(set_up_project_stage='refined_explicit'):
        package_for_fah(process_only_these_targets=['EGFR_HUMAN_D0'],
                        process_only_these_templates=[
                            'KC1D_HUMAN_D0_4HNF_A', 'KC1D_HUMAN_D0_4KB8_D'
                        ])
        packaged_project_base_path = os.path.join(
            default_project_dirnames.packaged_models, 'fah-projects',
            'EGFR_HUMAN_D0')
        assert os.path.exists(packaged_project_base_path)
        assert os.path.exists(os.path.join(packaged_project_base_path, 'RUN0'))
        assert os.path.exists(os.path.join(packaged_project_base_path, 'RUN1'))
        target_filenames = [
            'system.xml',
            'integrator.xml',
        ]

        for target_filename in target_filenames:
            assert os.path.exists(
                os.path.join(packaged_project_base_path, target_filename))

        run_filenames = [
            'template.txt',
            'system.pdb',
            'protein.pdb',
            'sequence-identity.txt',
            'state0.xml',
        ]

        for run_id in range(2):
            for run_filename in run_filenames:
                assert os.path.exists(
                    os.path.join(packaged_project_base_path,
                                 'RUN{}'.format(run_id), run_filename))

        # test whether kinetic energy in new state file is reasonable
        test_state_filepath = os.path.join(packaged_project_base_path, 'RUN0',
                                           'state0.xml')
        with open(test_state_filepath) as test_state_file:
            test_state = mm.XmlSerializer.deserialize(test_state_file.read())
        ref_state_filepath = get_installed_resource_filename(
            os.path.join('tests', 'example_project', 'models', 'EGFR_HUMAN_D0',
                         'KC1D_HUMAN_D0_4HNF_A', 'explicit-state.xml.gz'))
        with gzip.open(ref_state_filepath) as ref_state_file:
            ref_state = mm.XmlSerializer.deserialize(ref_state_file.read())
        test_state_kinetic_energy = test_state.getKineticEnergy()
        ref_state_kinetic_energy = ref_state.getKineticEnergy()
        assert abs(test_state_kinetic_energy -
                   ref_state_kinetic_energy) < ref_state_kinetic_energy
コード例 #25
0
 def templates_resolved(self):
     self.targets()
     shutil.copy(
         get_installed_resource_filename(
             os.path.join('tests', 'example_project', default_project_dirnames.templates, 'meta0.yaml')
         ),
         os.path.join(self.project_dir, default_project_dirnames.templates))
     shutil.copy(
         get_installed_resource_filename(
             os.path.join('tests', 'example_project', default_project_dirnames.templates, 'templates-resolved-seq.fa')
         ),
         os.path.join(self.project_dir, default_project_dirnames.templates))
     shutil.copy(
         get_installed_resource_filename(
             os.path.join('tests', 'example_project', default_project_dirnames.templates, 'templates-full-seq.fa')
         ),
         os.path.join(self.project_dir, default_project_dirnames.templates)
     )
     distutils.dir_util.copy_tree(
         get_installed_resource_filename(
             os.path.join('tests', 'example_project', default_project_dirnames.templates_structures_resolved)
         ),
         os.path.join(self.project_dir, default_project_dirnames.templates_structures_resolved)
     )
コード例 #26
0
def test_extract_residues_by_resnum_from_3HLL():
    # 3HLL contains resnums '56A' and '93B'
    pdb_input_filepath = get_installed_resource_filename(
        os.path.join('tests', 'resources', '3HLL.pdb.gz'))
    template = Mock()
    template.chainid = 'A'
    template.resolved_pdbresnums = [
        str(x) for x in list(arange(24, 172)) + list(arange(183, 309))
    ]
    template.resolved_pdbresnums[template.resolved_pdbresnums.index(
        '56')] = '56A'
    template.resolved_pdbresnums[template.resolved_pdbresnums.index(
        '93')] = '93B'
    ofile = StringIO()
    ensembler.pdb.extract_residues_by_resnum(ofile, pdb_input_filepath,
                                             template)
    ofile.close()
コード例 #27
0
ファイル: test_core.py プロジェクト: choderalab/ensembler
def test_manual_overrides_file():
    with enter_temp_dir():
        ref_manual_overrides_file = get_installed_resource_filename(
            os.path.join('tests', 'example_project', 'manual-overrides.yaml')
        )
        shutil.copy(ref_manual_overrides_file, manual_overrides_filename)
        manual_overrides = ManualOverrides()
        assert manual_overrides.target.domain_spans == {'ABL1_HUMAN_D0': '242-513'}
        assert manual_overrides.template.min_domain_len == 0
        assert manual_overrides.template.max_domain_len == 350
        assert manual_overrides.template.domain_spans == {'ABL1_HUMAN_D0': '242-513'}
        assert manual_overrides.template.skip_pdbs == [
            '4CYJ', '4P41', '4P2W', '4QTD', '4Q2A', '4CTB', '4QOX'
        ]
        assert manual_overrides.refinement.ph == 8.0
        assert manual_overrides.refinement.custom_residue_variants_by_targetid == {
            'EGFR_HUMAN_D0': {49: 'ASH'}
        }
コード例 #28
0
def test_extract_residues_by_resnum_output():
    pdb_input_filepath = get_installed_resource_filename(
        os.path.join('tests', 'resources', '3HLL.pdb.gz'))
    template = Mock()
    template.chainid = 'A'
    template.resolved_pdbresnums = [
        str(x) for x in list(arange(24, 172)) + list(arange(183, 309))
    ]
    template.resolved_pdbresnums[template.resolved_pdbresnums.index(
        '56')] = '56A'
    template.resolved_pdbresnums[template.resolved_pdbresnums.index(
        '93')] = '93B'
    ofile = StringIO()
    ensembler.pdb.extract_residues_by_resnum(ofile, pdb_input_filepath,
                                             template)
    ofile_text = ofile.getvalue()
    first_line = ofile_text[0:ofile_text.index('\n')]
    assert first_line == 'ATOM    175  N   TYR A  24      50.812  43.410  19.390  1.00 38.55           N  '
    ofile.close()
コード例 #29
0
def test_align_command():
    ref_resources_dirpath = get_installed_resource_filename(
        os.path.join('tests', 'example_project'))
    with integrationtest_context(
            set_up_project_stage='templates_modeled_loops'):
        targets = ['KC1D_HUMAN_D0', 'EGFR_HUMAN_D0']
        templates = ['KC1D_HUMAN_D0_4KB8_D', 'KC1D_HUMAN_D0_4HNF_A']
        args = {
            '--targets': ','.join(targets),
            '--targetsfile': False,
            '--templates': ','.join(templates),
            '--templatesfile': False,
            '--verbose': False,
        }

        ensembler.cli_commands.align.dispatch(args)
        for target in targets:
            naln_files = 0
            for dir, subdirs, files in os.walk(
                    os.path.join(
                        ensembler.core.default_project_dirnames.models,
                        target)):
                for file in files:
                    if file == 'alignment.pir':
                        naln_files += 1
            assert naln_files == len(templates)

        for target in targets:
            seqid_filepath = os.path.join(
                ensembler.core.default_project_dirnames.models, target,
                'sequence-identities.txt')
            ref_seqid_filepath = os.path.join(ref_resources_dirpath,
                                              seqid_filepath)
            with open(seqid_filepath) as seqid_file:
                seqid_file_text = seqid_file.read()
            with open(ref_seqid_filepath) as ref_seqid_file:
                ref_seqid_file_text = ref_seqid_file.read()
            print(seqid_file_text)
            print(ref_seqid_file_text)
            assert seqid_file_text == ref_seqid_file_text
コード例 #30
0
def test_manual_overrides_file():
    with enter_temp_dir():
        ref_manual_overrides_file = get_installed_resource_filename(
            os.path.join('tests', 'example_project', 'manual-overrides.yaml'))
        shutil.copy(ref_manual_overrides_file, manual_overrides_filename)
        manual_overrides = ManualOverrides()
        assert manual_overrides.target.domain_spans == {
            'ABL1_HUMAN_D0': '242-513'
        }
        assert manual_overrides.template.min_domain_len == 0
        assert manual_overrides.template.max_domain_len == 350
        assert manual_overrides.template.domain_spans == {
            'ABL1_HUMAN_D0': '242-513'
        }
        assert manual_overrides.template.skip_pdbs == [
            '4CYJ', '4P41', '4P2W', '4QTD', '4Q2A', '4CTB', '4QOX'
        ]
        assert manual_overrides.refinement.ph == 8.0
        assert manual_overrides.refinement.custom_residue_variants_by_targetid == {
            'EGFR_HUMAN_D0': {
                49: 'ASH'
            }
        }
コード例 #31
0
def test_pdbfix_ABL1_HUMAN_D0_2E2B_B():
    set_loglevel('debug')
    template_pdb_gz_filepath = get_installed_resource_filename(os.path.join('tests', 'resources', 'ABL1_HUMAN_D0_2E2B_B.pdb.gz'))
    template_pdb_filepath = os.path.join(ensembler.core.default_project_dirnames.templates_structures_resolved, 'ABL1_HUMAN_D0_2E2B_B.pdb')
    with ensembler.utils.enter_temp_dir():
        ensembler.utils.create_dir(ensembler.core.default_project_dirnames.templates_structures_resolved)
        ensembler.utils.create_dir(ensembler.core.default_project_dirnames.templates_structures_modeled_loops)
        with gzip.open(template_pdb_gz_filepath) as template_pdb_gz_file:
            with open(template_pdb_filepath, 'w') as template_pdb_file:
                contents = template_pdb_gz_file.read()
                if type(contents) == bytes:
                    contents = contents.decode('utf-8')
                template_pdb_file.write(contents)
        template = Mock()
        template.id = 'ABL1_HUMAN_D0_2E2B_B'
        template.seq = 'ITMKHKLGGGQYGEVYEGVWKKYSLTVAVKTLKEDTMEVEEFLKEAAVMKEIKHPNLVQLLGVCTREPPFYIITEFMTYGNLLDYLRECNRQEVNAVVLLYMATQISSAMEYLEKKNFIHRDLAARNCLVGENHLVKVADFGLSRLMTGDTYTAHAGAKFPIKWTAPESLAYNKFSIKSDVWAFGVLLWEIATYGMSPYPGIDLSQVYELLEKDYRMERPEGCPEKVYELMRACWQWNPSDRPSFAEIHQAFETMFQESSISDEVEKELGKQ'

        missing_residues = pdbfix_template(template)

        assert (0, 271) not in missing_residues
        assert missing_residues == {
            (0, 32): ['LYS', 'GLU', 'ASP', 'THR', 'MET'],
            (0, 139): ['ARG', 'LEU', 'MET', 'THR', 'GLY', 'ASP'],
        }
コード例 #32
0
def test_package_for_fah():
    with integrationtest_context(set_up_project_stage='refined_explicit'):
        package_for_fah(
            process_only_these_targets=['EGFR_HUMAN_D0'],
            process_only_these_templates=[
                'KC1D_HUMAN_D0_4HNF_A',
                'KC1D_HUMAN_D0_4KB8_D'
            ]
        )
        packaged_project_base_path = os.path.join(
            default_project_dirnames.packaged_models,
            'fah-projects',
            'EGFR_HUMAN_D0'
        )
        assert os.path.exists(packaged_project_base_path)
        assert os.path.exists(os.path.join(
            packaged_project_base_path,
            'RUN0'
        ))
        assert os.path.exists(os.path.join(
            packaged_project_base_path,
            'RUN1'
        ))
        target_filenames = [
            'system.xml',
            'integrator.xml',
        ]

        for target_filename in target_filenames:
            assert os.path.exists(os.path.join(
                packaged_project_base_path,
                target_filename
            ))

        run_filenames = [
            'template.txt',
            'system.pdb',
            'protein.pdb',
            'sequence-identity.txt',
            'state0.xml',
        ]

        for run_id in range(2):
            for run_filename in run_filenames:
                assert os.path.exists(os.path.join(
                    packaged_project_base_path,
                    'RUN{}'.format(run_id),
                    run_filename
                ))

        # test whether kinetic energy in new state file is reasonable
        test_state_filepath = os.path.join(packaged_project_base_path, 'RUN0', 'state0.xml')
        with open(test_state_filepath) as test_state_file:
            test_state = mm.XmlSerializer.deserialize(test_state_file.read())
        ref_state_filepath = get_installed_resource_filename(os.path.join(
            'tests', 'example_project', 'models',
            'EGFR_HUMAN_D0', 'KC1D_HUMAN_D0_4HNF_A', 'explicit-state.xml.gz'
        ))
        with gzip.open(ref_state_filepath) as ref_state_file:
            ref_state = mm.XmlSerializer.deserialize(ref_state_file.read())
        test_state_kinetic_energy = test_state.getKineticEnergy()
        ref_state_kinetic_energy = ref_state.getKineticEnergy()
        assert abs(
            test_state_kinetic_energy - ref_state_kinetic_energy
        ) < ref_state_kinetic_energy