def setUpClass(cls): cls.my_emap = pyemap.parse( os.path.join(sys.path[0], "pyemap/tests/test_pdbs/2oal.pdb")) if platform == "linux": pyemap.process(cls.my_emap, sdef=0) elif platform == "darwin": pyemap.process(cls.my_emap)
def test_save_functions(): my_emap = pyemap.parse( os.path.join(sys.path[0], "pyemap/tests/test_pdbs/4DJA.pdb")) #cluster fout = tempfile.NamedTemporaryFile(suffix=".png") ''' commented out for now until we can find a solution with newer RDKit #aromatic eta moiety my_emap.residue_to_Image("SF4603(A)") my_emap.residue_to_file("SF4603(A)",dest=fout.name) my_emap.residue_to_Image("FAD601(A)-1") my_emap.residue_to_file("FAD601(A)-1",dest=fout.name) ''' #after file is processed pyemap.process(my_emap) #standard residue ''' commented out for now until we can find a solution with newer RDKit my_emap.residue_to_Image("Y443(A)") my_emap.residue_to_file("Y443(A)",dest=fout.name) ''' #init graph my_emap.init_graph_to_Image() my_emap.init_graph_to_file(dest=fout.name) pyemap.find_paths(my_emap, "Y443(A)") #paths graph my_emap.paths_graph_to_Image() my_emap.paths_graph_to_file(dest=fout.name) #check that report does something assert my_emap.report() != None
def test_distance_options(self): pyemap.process(self.my_emap) com_weight = self.my_emap.init_graph["W385(A)"]["Y53(A)"]['weight'] assert isclose(com_weight,6.18,abs_tol=1e-2) pyemap.process(self.my_emap,dist_def=1) closest_atom_weight = self.my_emap.init_graph["W385(A)"]["Y53(A)"]['weight'] assert isclose(closest_atom_weight,3.97,abs_tol=1e-2)
def test_custom_atom_range(self): #custom residues pyemap.process(self.my_emap,eta_moieties=[], custom = "(134-140),(109-117)") resnames=[] for residue in self.my_emap.residues.values(): resnames.append(residue.resname) assert all(elem in resnames for elem in ["CUST-1","CUST-2"]) #example for bad custom residues, shoud raise exception try: pyemap.process(self.my_emap, custom = "(28-41)") assert False except Exception as e: assert True
def test_chains(self): #default all chains on pyemap.process(self.my_emap) labels=[] for residue in self.my_emap.residues.values(): labels.append(residue.node_label) assert all(elem in labels for elem in ["W18(A)" and 'Y298(B)']) #B chain off pyemap.process(self.my_emap,chains=["A"]) labels=[] for residue in self.my_emap.residues.values(): labels.append(residue.node_label) assert "W18(A)" in labels assert 'Y298(B)' not in labels
def test_choose_eta_moieties(self): pyemap.process(self.my_emap) eta_moieties_resnames = [] for res in self.my_emap.eta_moieties: eta_moieties_resnames.append(res) #default resnames=[] for residue in self.my_emap.residues.values(): resnames.append(residue.resname) assert all(elem in resnames for elem in eta_moieties_resnames) #deselected eta moiety pyemap.process(self.my_emap,eta_moieties=eta_moieties_resnames[:-1]) resnames=[] for residue in self.my_emap.residues.values(): resnames.append(residue.resname) assert all(elem in resnames for elem in eta_moieties_resnames[:-1]) assert eta_moieties_resnames[-1] not in resnames
def test_aromatic_amino_acid_options(self): pyemap.process(self.my_emap) ##default, tryptophan and tyrosine on resnames=[] for residue in self.my_emap.residues.values(): resnames.append(residue.resname) assert "TYR" in resnames assert "TRP" in resnames assert "PHE" not in resnames assert "HIS" not in resnames #phenylalanine on pyemap.process(self.my_emap,phe=True) resnames=[] for residue in self.my_emap.residues.values(): resnames.append(residue.resname) assert "TYR" in resnames assert "TRP" in resnames assert "PHE" in resnames assert "HIS" not in resnames #histidine on resnames=[] pyemap.process(self.my_emap,his=True) for residue in self.my_emap.residues.values(): resnames.append(residue.resname) assert "TYR" in resnames assert "TRP" in resnames assert "PHE" not in resnames assert "HIS" in resnames #tyrosine off resnames=[] pyemap.process(self.my_emap,tyr=False) for residue in self.my_emap.residues.values(): resnames.append(residue.resname) assert "TYR" not in resnames assert "TRP" in resnames assert "PHE" not in resnames assert "HIS" not in resnames #tryptophan off resnames=[] pyemap.process(self.my_emap,trp=False) for residue in self.my_emap.residues.values(): resnames.append(residue.resname) assert "TYR" in resnames assert "TRP" not in resnames assert "PHE" not in resnames assert "HIS" not in resnames
def test_surface_options(self): rd_check = 'Y53(A)' asa_check = 'W61(A)' #residue depth pyemap.process(self.my_emap) G = self.my_emap.init_graph rd_ser = [] for n, d in G.nodes(data=True): if d['shape'] == "box": rd_ser.append(n) #solvent accessibility pyemap.process(self.my_emap, sdef=1) G = self.my_emap.init_graph asa_ser = [] for n, d in G.nodes(data=True): if d['shape'] == "box": asa_ser.append(n) assert rd_check in rd_ser assert asa_check not in rd_ser assert rd_check not in asa_ser assert asa_check in asa_ser
def test_graph_parameters(self): pyemap.process(self.my_emap,num_st_dev_edges=5,percent_edges=3) g1 = self.my_emap.init_graph # check st_dev_edges works pyemap.process(self.my_emap,num_st_dev_edges=1,percent_edges=3) g2 = self.my_emap.init_graph assert g1.edges() != g2.edges() #check distance cutoff works pyemap.process(self.my_emap,num_st_dev_edges=5,percent_edges=3,distance_cutoff=30) g3 = self.my_emap.init_graph assert g1.edges() != g3.edges() #check percent edges works pyemap.process(self.my_emap,num_st_dev_edges=5,percent_edges=1,distance_cutoff=30) g4 = self.my_emap.init_graph assert g1.edges() != g4.edges()
def test_surface_options(self): #residue depth asa_ser = [] rd_ser = [] pyemap.process(self.my_emap,sdef=0) G = self.my_emap.init_graph for n, d in G.nodes(data=True): if d['shape'] == "box": rd_ser.append(n) #solvent accessibility pyemap.process(self.my_emap,sdef=1) G = self.my_emap.init_graph for n, d in G.nodes(data=True): if d['shape'] == "box": asa_ser.append(n) import subprocess try: cmd = "msms" output = subprocess.check_output(cmd, shell=True) assert rd_ser except: pass assert asa_ser assert rd_ser != asa_ser
def test_penalty_function_parameters(self): #alpha pyemap.process(self.my_emap,coef_alpha=0.5) alpha_weight = self.my_emap.init_graph["W385(A)"]["Y53(A)"]['weight'] assert isclose(alpha_weight,6.48,abs_tol=1e-2) #Roffset pyemap.process(self.my_emap,r_offset=1) alpha_weight = self.my_emap.init_graph["W385(A)"]["Y53(A)"]['weight'] assert isclose(alpha_weight,5.18,abs_tol=1e-2) #Roffset pyemap.process(self.my_emap,exp_beta=5) beta_weight = self.my_emap.init_graph["W385(A)"]["Y53(A)"]['weight'] assert isclose(beta_weight,13.44,abs_tol=1e-2)
def setUpClass(cls): cls.my_emap = pyemap.parse(os.path.join(sys.path[0],"pyemap/tests/test_pdbs/2oal.pdb")) pyemap.process(cls.my_emap)
# PyeMap: A python package for automatic identification of electron and hole transfer pathways in proteins. # Copyright(C) 2017-2020 Ruslan Tazhigulov, James Gayvert, Ksenia Bravaya (Boston University, USA) import pyemap my_emap = pyemap.fetch_and_parse("1u3d") # view residue my_emap.residue_to_Image("FAD510(A)-2").show() # process file pyemap.process(my_emap) my_emap.init_graph_to_Image().show() # find paths pyemap.find_paths(my_emap,"FAD510(A)-2") my_emap.paths_graph_to_Image().show() # print report print(my_emap.report())