def center_at_protein_chain_groups(atomistic_protein_input, cg_com, protein_mass, cg_backbone_masses): for chain in atomistic_protein_input: for part_val, part in enumerate(atomistic_protein_input[chain]): sls, sle = int(part.split(':')[0]), int(part.split(':')[1]) if chain in g_var.group_chains: atomistic_protein_mass = at_mod.COM( protein_mass[g_var.group_chains[chain]], 'AT protein chain: ' + str(chain)) cg_com[chain].append( at_mod.COM(cg_backbone_masses[g_var.group_chains[chain]], 'CG protein chain: ' + str(chain))) else: protein_mass = fetch_backbone_mass( atomistic_protein_input[chain][part], []) atomistic_protein_mass = at_mod.COM( protein_mass, 'protein at: ' + str(chain) + ' ' + part) #### add center of mass of CG_proteins cg_com[chain].append( at_mod.COM(g_var.backbone_coords[chain][sls:sle], 'protein cg: ' + str(chain) + ' ' + part)) atomistic_protein_input[chain][part] = update_part_coordinate( atomistic_protein_input[chain][part], atomistic_protein_mass, cg_com[chain][part_val]) return atomistic_protein_input, cg_com
def center_at_protein_all_chains(atomistic_protein_input, cg_com, protein_mass, cg_backbone_masses): atomistic_protein_mass = at_mod.COM(protein_mass, 'All AT protein chains') for chain in atomistic_protein_input: for part_val, part in enumerate(atomistic_protein_input[chain]): cg_com[chain].append( at_mod.COM(cg_backbone_masses['all'], 'All CG protein chains')) atomistic_protein_input[chain][part] = update_part_coordinate( atomistic_protein_input[chain][part], atomistic_protein_mass, cg_com[chain][part_val]) return atomistic_protein_input, cg_com
def center_atomistic(atomistic_protein_input, backbone_coords): cg_com={} #### for each protein chain center on cg representation for chain in atomistic_protein_input: cg_com[chain]=[] for part_val, part in enumerate(atomistic_protein_input[chain]): sls, sle= int(part.split(':')[0]),int(part.split(':')[1]) protein_mass=[] for residue in atomistic_protein_input[chain][part]: #### creates a list of all coordinates and masses [[coord, mass],[coord, mass]] for atom in atomistic_protein_input[chain][part][residue]: short_line=atomistic_protein_input[chain][part][residue][atom] protein_mass.append([short_line['coord'][0],short_line['coord'][1],short_line['coord'][2],short_line['frag_mass']]) #### returns the COM of the atomistic protein atomistic_protein_mass = at_mod.COM(protein_mass, 'protein at: '+str(chain)+' '+part)#### add center of mass of CG_proteins cg_com[chain].append(at_mod.COM(backbone_coords[chain][sls:sle], 'protein cg: '+str(chain)+' '+part)) #### each atoms coord is updated so the monomer COM is the same as the CG for residue in atomistic_protein_input[chain][part]: for atom in atomistic_protein_input[chain][part][residue]: atomistic_protein_input[chain][part][residue][atom]['coord']=atomistic_protein_input[chain][part][residue][atom]['coord']-(atomistic_protein_mass-cg_com[chain][part_val]) return atomistic_protein_input, cg_com
def center_atomistic(): cg_com = {} #### for each protein chain center on cg representation for chain in g_var.atomistic_protein_input_aligned: cg_com[chain] = [] for part_val, part in enumerate( g_var.atomistic_protein_input_aligned[chain]): sls, sle = int(part.split(':')[0]), int(part.split(':')[1]) if g_var.group_chains is None: protein_mass = fetch_backbone_mass( g_var.atomistic_protein_input_aligned[chain][part], []) atomistic_protein_mass = at_mod.COM( protein_mass, 'protein at: ' + str(chain) + ' ' + part) #### add center of mass of CG_proteins cg_com[chain].append( at_mod.COM(g_var.backbone_coords[chain][sls:sle], 'protein cg: ' + str(chain) + ' ' + part)) g_var.atomistic_protein_input_aligned[chain][ part] = update_part_coordinate( g_var.atomistic_protein_input_aligned[chain][part], atomistic_protein_mass, cg_com[chain][part_val]) elif g_var.group_chains == 'all': if 'protein_mass' not in locals(): protein_mass = [] protein_mass = fetch_backbone_mass( g_var.atomistic_protein_input_aligned[chain][part], protein_mass) if 'cg_backbone_masses' not in locals(): cg_backbone_masses = {} cg_backbone_masses['all'] = g_var.backbone_coords[chain][ sls:sle] else: cg_backbone_masses['all'] += g_var.backbone_coords[chain][ sls:sle] else: if 'protein_mass' not in locals(): protein_mass = {} if chain in g_var.group_chains: if g_var.group_chains[chain] not in protein_mass: protein_mass[ g_var.group_chains[chain]] = fetch_backbone_mass( g_var.atomistic_protein_input_aligned[chain] [part], []) else: protein_mass[ g_var.group_chains[chain]] = fetch_backbone_mass( g_var.atomistic_protein_input_aligned[chain] [part], protein_mass[group_chain[chain]]) if 'cg_backbone_masses' not in locals(): cg_backbone_masses = {} if g_var.group_chains[chain] not in cg_backbone_masses: cg_backbone_masses[g_var.group_chains[ chain]] = g_var.backbone_coords[chain][sls:sle] else: cg_backbone_masses[g_var.group_chains[ chain]] += g_var.backbone_coords[chain][sls:sle] if g_var.group_chains == 'all': g_var.atomistic_protein_input_aligned, cg_com = center_at_protein_all_chains( g_var.atomistic_protein_input_aligned, cg_com, protein_mass, cg_backbone_masses) if g_var.group_chains not in ['all', None]: g_var.atomistic_protein_input_aligned, cg_com = center_at_protein_chain_groups( g_var.atomistic_protein_input_aligned, cg_com, protein_mass, cg_backbone_masses) return g_var.atomistic_protein_input_aligned, cg_com