def test_lipid_grid_surface_area(): name_dict = {'DOPE': ['P'], 'POPC': ['P'], 'TLCL2': ['P1', 'P3']} analyzer = BilayerAnalyzer( structure='../pybilt/sample_bilayer/sample_bilayer.psf', trajectory='../pybilt/sample_bilayer/sample_bilayer_10frames.dcd', selection="resname POPC DOPE TLCL2") analyzer.remove_analysis('msd_1') analyzer.rep_settings['com_frame']['name_dict'] = name_dict analyzer._analysis_protocol.use_objects['lipid_grid'] = True # adjust the number of bins for gridding nbins = 100 analyzer.rep_settings['lipid_grid']['n_xbins'] = nbins analyzer.rep_settings['lipid_grid']['n_ybins'] = nbins analyzer.set_frame_range(0, 1, 1) for _frame in analyzer: sa_upper, sa_lower = analyzer.reps['lipid_grid'].surface_area( filter_sigma=5.0) print(("surface for upper leaflet: {} lower leaflet {}".format( sa_upper, sa_lower))) box_area = analyzer.reps['current_mda_frame'].dimensions[0:2].prod() print(("box area: {}".format(box_area))) area_diff = (sa_upper + sa_lower) - (2.0 * box_area) print(area_diff) area_ratio = (sa_upper + sa_lower) / (2.0 * box_area) print(area_ratio) kc = (scicon.k * 303.15 * np.log(300.0)) / (8.0 * np.pi * (area_ratio - 1.0)) print(kc) return
def test_analysis_iterator(): print("testing the analysis iterator...") # initialize analyzer with keyword options--and default analysis sel_string = "segid MEMB" ba = BilayerAnalyzer( structure='../pybilt/sample_bilayer/sample_bilayer.psf', trajectory='../pybilt/sample_bilayer/sample_bilayer_10frames.dcd', selection=sel_string, ) # add analysis by string input ba.add_analysis('msd msd_2 leaflet upper resname POPC') print('Doing analysis iteration...') for _frame in ba: print(ba.reps['com_frame']) print(" ")
def test_analysis_defaults(): print("testing the default settings of all analysis protocols...") sel_string = "segid MEMB" ba = BilayerAnalyzer( structure='../pybilt/sample_bilayer/sample_bilayer.psf', trajectory='../pybilt/sample_bilayer/sample_bilayer_10frames.dcd', selection=sel_string, ) for key in valid_analysis: analysis_in = [key, key+"_t", dict()] ba.add_analysis(analysis_in) ba.settings['print_interval'] = 1 ba.print_analysis_protocol() ba.run_analysis() print("outputs:") for key in valid_analysis: a_id = key+"_t" print(a_id+":") print(ba.get_analysis_data(a_id))
def test_lipid_grid_pdb_writer(): sel_string = "resname POPC DOPE TLCL2" name_dict = {'DOPE': ['P'], 'POPC': ['P'], 'TLCL2': ['P1', 'P3']} analyzer = BilayerAnalyzer( structure='../pybilt/sample_bilayer/sample_bilayer.psf', trajectory='../pybilt/sample_bilayer/sample_bilayer_10frames.dcd', selection="resname POPC DOPE TLCL2") analyzer.remove_analysis('msd_1') analyzer.rep_settings['com_frame']['name_dict'] = name_dict analyzer._analysis_protocol.use_objects['lipid_grid'] = True # adjust the number of bins for gridding nbins = 75 analyzer.rep_settings['lipid_grid']['n_xbins'] = nbins analyzer.rep_settings['lipid_grid']['n_ybins'] = nbins analyzer.set_frame_range(0, 5, 1) i = 0 zgrid = None for _frame in analyzer: if i == 0: zgrid = analyzer.reps['lipid_grid'].leaf_grid['upper'].lipid_grid_z else: zgrid += analyzer.reps['lipid_grid'].leaf_grid[ 'upper'].lipid_grid_z i += 1 zgrid /= i analyzer.reps['lipid_grid'].write_pdb('lipid_grid_t0.pdb', leaflet='both', beta_grid_upper=zgrid) analyzer.reps['lipid_grid'].write_pdb('lipid_grid_t1.pdb', leaflet='upper', z_grid_upper=zgrid) analyzer.reps['lipid_grid'].write_pdb('lipid_grid_t2.pdb', leaflet='both', use_gaussian_filter=True, filter_sigma=5.0) return
def test_lipid_grid_curvature(): sel_string = "resname POPC DOPE TLCL2" name_dict = {'DOPE': ['P'], 'POPC': ['P'], 'TLCL2': ['P1', 'P3']} analyzer = BilayerAnalyzer( structure='../pybilt/sample_bilayer/sample_bilayer.psf', trajectory='../pybilt/sample_bilayer/sample_bilayer_10frames.dcd', selection="resname POPC DOPE TLCL2") analyzer.remove_analysis('msd_1') analyzer.rep_settings['com_frame']['name_dict'] = name_dict analyzer._analysis_protocol.use_objects['lipid_grid'] = True # adjust the number of bins for gridding nbins = 75 analyzer.rep_settings['lipid_grid']['n_xbins'] = nbins analyzer.rep_settings['lipid_grid']['n_ybins'] = nbins analyzer.set_frame_range(0, 1, 1) i = 0 zgrid = None for _frame in analyzer: if i == 0: zgrid = analyzer.reps['lipid_grid'].leaf_grid['upper'].lipid_grid_z else: zgrid += analyzer.reps['lipid_grid'].leaf_grid[ 'upper'].lipid_grid_z i += 1 zgrid_i = zgrid / float(i) zgrid_i_f = gaussian_filter(zgrid_i, 5.0, mode="nearest") x_vals = analyzer.reps['lipid_grid'].leaf_grid['upper'].x_centers y_vals = analyzer.reps['lipid_grid'].leaf_grid['upper'].y_centers curvature_grids_i = grid_curvature(x_vals, y_vals, zgrid_i_f) xyzc_mean = analyzer.reps['lipid_grid'].get_xyzc( leaflet='upper', color_grid=curvature_grids_i[0])['upper'] #xyzc_u_mean_i = (x_vals, y_vals, x_vals, curvature_grids_i[0].flatten()) pgf.plot_grid_as_scatter(xyzc_mean, save=False, show=False, colorbar=True) analyzer.reps['lipid_grid'].curvature() return
def test_lipid_grid_opt(): sel_string = "resname POPC DOPE TLCL2" name_dict = {'DOPE': ['P'], 'POPC': ['P'], 'TLCL2': ['P1', 'P3']} analyzer = BilayerAnalyzer( structure='../pybilt/sample_bilayer/sample_bilayer.psf', trajectory='../pybilt/sample_bilayer/sample_bilayer_10frames.dcd', selection="resname POPC DOPE TLCL2") analyzer.remove_analysis('msd_1') analyzer.rep_settings['com_frame']['name_dict'] = name_dict #analyzer._analysis_protocol.use_objects['lipid_grid'] = True # adjust the number of bins for gridding nbins = 100 #analyzer.rep_settings['lipid_grid']['n_xbins'] = nbins #analyzer.rep_settings['lipid_grid']['n_ybins'] = nbins analyzer.set_frame_range(0, 1, 1) i = 0 zgrid = None for _frame in analyzer: lipid_grid = lg.LipidGrids(analyzer.reps['com_frame'], analyzer.reps['leaflets'], [0, 1], nxbins=nbins, nybins=nbins) lipid_grid_opt = lgo.LipidGrids(analyzer.reps['com_frame'], analyzer.reps['leaflets'], [0, 1], nxbins=nbins, nybins=nbins) lg_u = lipid_grid.leaf_grid['upper'].lipid_grid lgo_u = lipid_grid_opt.leaf_grid['upper'].lipid_grid lg_l = lipid_grid.leaf_grid['lower'].lipid_grid lgo_l = lipid_grid_opt.leaf_grid['lower'].lipid_grid print((np.array_equal(lg_u, lgo_u))) print((np.array_equal(lg_l, lgo_l))) comp_l = lg_l == lgo_l wh = np.where(comp_l == False) print(wh) print((lg_l[wh])) print((lgo_l[wh])) # break return
def test_leaflet_builder(): sel_string = "resname POPC DOPE TLCL2" name_dict = {'DOPE': ['P'], 'POPC': ['P'], 'TLCL2': ['P1', 'P3']} analyzer = BilayerAnalyzer( structure='../pybilt/sample_bilayer/sample_bilayer.psf', trajectory='../pybilt/sample_bilayer/sample_bilayer_10frames.dcd', selection="resname POPC DOPE TLCL2") analyzer.rep_settings['com_frame']['name_dict'] = name_dict # Assign the leaflets using the 'avg_norm' method. (This is actually the # default). analyzer.adjust_rep_setting('leaflets', 'assign_method', 'avg_norm') analyzer.run_analysis() analyzer.reset() # Now redo it using the 'orientation' mehtod to assign leaflets."" analyzer.adjust_rep_setting('leaflets', 'assign_method', 'orientation') analyzer.adjust_rep_setting('leaflets', 'orientation_atoms', { 'DOPE': ['C218', 'P'], 'POPC': ['C218', 'P'], 'TLCL2': ['CA18', 'P1'] }) analyzer.run_analysis() return
def test_input_options(): print("testing various input options...") #initialize analyzer with keyword options--and default analysis print("Initialize using keyword options:") sel_string = "segid MEMB" ba = BilayerAnalyzer( structure='../pybilt/sample_bilayer/sample_bilayer.psf', trajectory='../pybilt/sample_bilayer/sample_bilayer_10frames.dcd', selection=sel_string, ) #add analysis by string input ba.add_analysis('msd msd_2 leaflet upper resname POPC') #add plot by string -- currenlty only available ba.add_plot('msd msd_p msd_1 DOPE-U msd_2 POPC-U') #add analysis by list/tuple input ba.add_analysis(['msd', 'msd_3', {'resname': 'POPC', 'leaflet': 'lower'}]) #add analysis by dictionary input analysis_in_dict = dict() analysis_in_dict['analysis_key'] = 'msd' analysis_in_dict['analysis_id'] = 'msd_4' analysis_in_dict['analysis_settings'] = {'resname': 'DOPE', 'leaflet': 'lower'} ba.add_analysis(analysis_in_dict) # run the analyses ba.run_analysis() #initialize analyzer using input script print("Initialize with an input script:") ba = BilayerAnalyzer(input_file='sample_1.in') #run analysis ba.run_analysis() #now initialize with an input dictionary # define the input dictionary input_dict = {'structure' : '../pybilt/sample_bilayer/sample_bilayer.psf', 'trajectory' : '../pybilt/sample_bilayer/sample_bilayer_10frames.dcd', 'selection' : 'segid MEMB' } #now initialize the analyzer print("Initializing using input dictionary:") ba = BilayerAnalyzer(input_dict=input_dict) ba.add_analysis('msd msd_b resname DOPE leaflet upper') ba.run_analysis() return
from tqdm import tqdm # tqdm import seaborn as sns # pybilt modules from pybilt.bilayer_analyzer import BilayerAnalyzer from pybilt.bilayer_analyzer import print_valid_analyses from pybilt.com_trajectory import COMTraj from pybilt.lipid_grid.lipid_grid import grid_curvature from pybilt.lipid_grid.lipid_grid import LipidGrid2d from pybilt.lipid_grid.lipid_grid_opt import LipidGrids sel_string = "resname DPPC or resname DUPC" ba = BilayerAnalyzer( structure='../replicate.gro', trajectory='../md.xtc', selection=sel_string, ) ba.add_analysis('ndcorr ndcorr_1') #ba.run_analysis() #ndcorr_1Dat = ba.get_analysis_data('ndcorr_1') # Separate Curvature analysis u = mda.Universe('../replicate.gro', '../md.xtc') lipids = u.select_atoms("resname DPPC DUPC") lipidindices = lipids.indices #G = [u.select_atoms("resid {}".format(index)) for index in lipidindices] #COM = [i.center_of_mass() for i in G]