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)
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')
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_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'))
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'} }
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" ) )
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)
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' } }
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