Exemple #1
0
def test_check_project_toplevel_dir():
    with enter_temp_dir():
        assert ensembler.core.check_project_toplevel_dir(
            raise_exception=False) == False
        ensembler.initproject.InitProject('.')
        assert ensembler.core.check_project_toplevel_dir(
            raise_exception=False) == True
def test_attempt_symlink_structure_files():
    pdbid = '4CFE'
    structure_paths = [os.path.abspath(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)
Exemple #3
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)
def test_initproject():
    with enter_temp_dir():
        ensembler.initproject.InitProject('.')
        assert os.path.exists(ensembler.core.default_project_dirnames.targets)
        assert os.path.exists(ensembler.core.default_project_dirnames.templates)
        assert os.path.exists(ensembler.core.default_project_dirnames.structures)
        assert os.path.exists(ensembler.core.default_project_dirnames.models)
        assert os.path.exists(ensembler.core.default_project_dirnames.packaged_models)
        assert os.path.exists(ensembler.core.default_project_dirnames.structures_pdb)
        assert os.path.exists(ensembler.core.default_project_dirnames.structures_sifts)
        assert os.path.exists(ensembler.core.default_project_dirnames.templates_structures_resolved)
        assert os.path.exists(ensembler.core.default_project_dirnames.templates_structures_modeled_loops)
        assert os.path.exists('meta0.yaml')
Exemple #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
Exemple #6
0
def test_quick_model():
    uniprot_entry_name = 'EGFR_HUMAN'
    uniprot_domain_regex = '^Protein kinase'
    pdbids = ['4AF3']
    chainids = {'4AF3': ['A']}
    with enter_temp_dir():
        QuickModel(
            target_uniprot_entry_name=uniprot_entry_name,
            uniprot_domain_regex=uniprot_domain_regex,
            pdbids=pdbids,
            chainids=chainids,
            loopmodel=False,
            sim_length=2.0 * unit.femtoseconds,
        )
        assert os.path.exists(
            os.path.join(default_project_dirnames.models, 'EGFR_HUMAN_D0',
                         'AURKB_HUMAN_D0_4AF3_A', 'explicit-refined.pdb.gz'))
Exemple #7
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'}
        }
Exemple #8
0
def test_quick_model():
    uniprot_entry_name = "EGFR_HUMAN"
    uniprot_domain_regex = "^Protein kinase"
    pdbids = ["4AF3"]
    chainids = {"4AF3": ["A"]}
    with enter_temp_dir():
        QuickModel(
            target_uniprot_entry_name=uniprot_entry_name,
            uniprot_domain_regex=uniprot_domain_regex,
            pdbids=pdbids,
            chainids=chainids,
            loopmodel=False,
            sim_length=2.0 * unit.femtoseconds,
        )
        assert os.path.exists(
            os.path.join(
                default_project_dirnames.models, "EGFR_HUMAN_D0", "AURKB_HUMAN_D0_4AF3_A", "explicit-refined.pdb.gz"
            )
        )
Exemple #9
0
def test_initproject():
    with enter_temp_dir():
        ensembler.initproject.InitProject('.')
        assert os.path.exists(ensembler.core.default_project_dirnames.targets)
        assert os.path.exists(
            ensembler.core.default_project_dirnames.templates)
        assert os.path.exists(
            ensembler.core.default_project_dirnames.structures)
        assert os.path.exists(ensembler.core.default_project_dirnames.models)
        assert os.path.exists(
            ensembler.core.default_project_dirnames.packaged_models)
        assert os.path.exists(
            ensembler.core.default_project_dirnames.structures_pdb)
        assert os.path.exists(
            ensembler.core.default_project_dirnames.structures_sifts)
        assert os.path.exists(ensembler.core.default_project_dirnames.
                              templates_structures_resolved)
        assert os.path.exists(ensembler.core.default_project_dirnames.
                              templates_structures_modeled_loops)
        assert os.path.exists('meta0.yaml')
        assert os.path.exists(ensembler.core.manual_overrides_filename)
Exemple #10
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'
            }
        }
Exemple #11
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
def test_check_project_toplevel_dir():
    with enter_temp_dir():
        assert ensembler.core.check_project_toplevel_dir(raise_exception=False) == False
        ensembler.initproject.InitProject('.')
        assert ensembler.core.check_project_toplevel_dir(raise_exception=False) == True