def InitWalls(pdbid: str) -> TunnelWalls: """Initiate walls for a particular structure. This consumes a dataframe given that a choice of tunnel is present""" def get_tunnels_dataframe(csvpath: str) -> pd.DataFrame: tunnel_instance = pd.read_csv(csvpath) xyzr = tunnel_instance[['Distance', 'FreeRadius', 'X', 'Y', 'Z']] return xyzr TUNNELS = os.getenv("TUNNELS") log = Log(os.getenv('TUNNEL_LOG')) struct = log.get_struct(pdbid) taxid = str(int(struct['taxid'].values[0])) choice = int(struct['moletunnel'].values[0]) tunnelfile = "tunnel_{}.csv".format(choice) if choice < 1: """See docs for disambiguation. Either mole hasn't succeeded or there is something blockign the tunnel.""" print("Choice under 1.") return tunnelcsv = get_tunnels_dataframe( os.path.join(TUNNELS, taxid, pdbid, 'csv', tunnelfile)) tw = TunnelWalls(pdbid, fetchStructure(pdbid), tunnelcsv) tw.consumeMoleDataframe(10) return tw
def root_self(rootname: str = '') -> str: """Returns the rootpath for the project if it's unique in the current folder tree.""" root = os.path.abspath( __file__)[:os.path.abspath(__file__).find(rootname) + len(rootname)] sys.path.append(root) load_dotenv(os.path.join(root, '.env')) if __name__ == "__main__": root_self('ribxz') from ciftools.Structure import fetchStructure from ciftools.TunnelScripts.TunnelLog import (Log) from ciftools.Neoget import _neoget log = Log(os.getenv("TUNNEL_LOG")) def getConstrictedProteins(pdbid: str) -> List[str]: cypher = """ match (n:RibosomeStructure{{rcsb_id:"{pdbid}"}})-[]-(rp:RibosomalProtein) where "uL4" in rp.nomenclature or "uL22" in rp.nomenclature return rp.entity_poly_strand_id,rp.nomenclature, n.rcsb_id """.format_map({"pdbid": pdbid.upper()}) response = _neoget(cypher) resplist = [ *map( lambda x: (x['rp.nomenclature'][0], x['rp.entity_poly_strand_id']), response) ]
load_dotenv(os.path.join(ROOT, '.env')) if __name__ == "__main__": root_self('ribxz') from ciftools.Structure import fetchStructure from ciftools.TunnelScripts.TunnelLog import (Log) from ciftools.TunnelScripts.ptc_site import (residues_average, get_ptc_residues) from ciftools.TunnelScripts.WallsReportGeneration import InitWalls from ciftools.TunnelScripts.WallsReportGeneration import add_nomenclature_map_to_report TUNNELS = os.getenv("TUNNELS") STATIC_ROOT = os.getenv("STATIC_ROOT") log = Log(os.getenv('TUNNEL_LOG')) # for struct in log.all_structs(): # pdbid='3J7Z' # REPORT_PATH=os.path.join(STATIC_ROOT,pdbid,"{}_TUNNEL_REPORT.json".format(pdbid)) # ## Generating report # walls =InitWalls(pdbid) # walls.consumeMoleDataframe(10) # walls.generateReport(REPORT_PATH) # add_nomenclature_map_to_report(pdbid,REPORT_PATH) ## Adding ptc # for struct in log.all_structs(): # log.update_struct(struct, # dowrite=True, # **{"PTC_average":
from ciftools.Structure import fetchStructure from ciftools.scripts.splitStruct import fetchChain from typing import List from Bio.PDB.Residue import Residue from pymol import cmd from ciftools.TunnelScripts.TunnelLog import Log RADIUS = os.getenv('SCOOP_RADIUS') TUNNELS = os.getenv('TUNNELS') STATIC_ROOT = os.getenv('STATIC_ROOT') pdbid = sys.argv[1].upper() log = Log(os.getenv('TUNNEL_LOG')) struct = fetchStructure(pdbid) record = log.get_struct(pdbid) species = str( int( record.taxid.values[0] ) ) structpath = os.path.join(STATIC_ROOT,pdbid,"{}.cif".format(pdbid)) scoopsavepath = os.path.join(TUNNELS,species,pdbid,'{}_{}Ascoop.pdb'.format(pdbid,RADIUS)) if not os.path.exists(os.path.dirname( scoopsavepath )): os.makedirs(os.path.dirname( scoopsavepath )) cmd.load(structpath) x = cmd.select(f'resi 2504') cmd.select(f'br. {pdbid} w. {RADIUS} of \'sele\'') cmd.save( scoopsavepath, 'sele' ) print("Saved to {}".format(scoopsavepath))
PDBID = sys.argv[1].upper() STATIC_ROOT = os.getenv("STATIC_ROOT") STRUCT_REPORT_PATH = os.path.join(STATIC_ROOT,PDBID,f'{PDBID}_TUNNEL_REPORT.json') if not os.path.exists(STRUCT_REPORT_PATH): try: ## Generating report walls = InitWalls(PDBID) walls.consumeMoleDataframe(10) walls.generateReport(STRUCT_REPORT_PATH) add_nomenclature_map_to_report(PDBID,STRUCT_REPORT_PATH) except error: print(error) exit("Failed to generate report for {}. Does the tunnel csv exist?".format(PDBID)) log = Log(os.getenv('TUNNEL_LOG')) ProteinsColorgenerator = iter( ['purple','cyan','orange',"gray",'yellow','magenta','brown','turqoise','pink'] ) with open(STRUCT_REPORT_PATH, 'rb') as infile: report = json.load(infile) walls = InitWalls(PDBID) tunneldf = walls.mole_dataframe def locate_res_in_df(rescoords:List[float],tunnel_df:pd.DataFrame): respos = np.array(rescoords) rowid = -1 currdist = 10000000 for index,row in tunnel_df.iterrows():
moleparser = makeparser() load_dotenv(dotenv_path='/home/rxz/dev/ribxz/.env') MOLE_EXE = os.getenv('MOLE_EXECUTABLE') TUNNELS = os.getenv("TUNNELS") SCOOP_RADIUS = os.getenv("SCOOP_RADIUS") args = moleparser.parse_args() args = filter((lambda kvpair: None not in kvpair), vars(args).items()) args = dict(args) pdbid = args['PDBID'].upper() load_dotenv('/home/rxz/dev/ribxz/.env') log = Log(os.getenv("TUNNEL_LOG")) record = log.get_struct(pdbid) species = str( int( record.taxid.values[0] ) ) constriction = record.constriction_coord.values[0] inputconfigpath = os.path.join(TUNNELS, species, pdbid, '{}_moleinput.xml'.format(pdbid) ) inputstructpath = os.path.join(TUNNELS, species, pdbid, '{}_{}Ascoop.pdb'.format(pdbid, SCOOP_RADIUS)) outpath = os.path.join(TUNNELS, species, pdbid) args['Input'] = inputstructpath args['Output'] = outpath args['ConfigPath'] = inputconfigpath # pymol.cmd.load(inputstructpath) # pymol.cmd.select('PTC', 'resi 2506')