def calculate_binned_contacts_vs_q(args): trajsfile = args.trajs function = args.function coordfile = args.coordfile coordname = coordfile.split(".")[0] bins = args.bins chunksize = args.chunksize topology = args.topology periodic = args.periodic # Data source trajfiles = ["%s" % x.rstrip("\n") for x in open(trajsfile, "r").readlines()] dir = os.path.dirname(trajfiles[0]) # Parameterize contact-based reaction coordinate pairs, contact_params = util.get_contact_params(dir, args) coord_sources = ["%s/%s" % (os.path.dirname(trajfiles[i]), coordfile) for i in range(len(trajfiles))] if not all([os.path.exists(x) for x in coord_sources]): # Parameterize contact-based reaction coordinate contact_function = util.get_sum_contact_function(pairs, function, contact_params, periodic=periodic) # Calculate contact function over directories contacts = util.calc_coordinate_multiple_trajs( trajfiles, contact_function, topology, chunksize, save_coord_as=args.coordfile, savepath=args.savepath, collect=True, ) else: # Load precalculated coordinate contacts = [np.loadtxt(coord_sources[i]) for i in range(len(coord_sources))] # Parameterize pairwise contact function pairwise_contact_function = util.get_pair_contact_function(pairs, function, contact_params, periodic=periodic) # Calculate pairwise contacts over directories bin_edges, avgqi_by_bin = util.bin_multiple_coordinates_for_multiple_trajs( trajfiles, contacts, pairwise_contact_function, pairs.shape[0], bins, topology, chunksize ) return bin_edges, avgqi_by_bin
args = parser.parse_args() return args if __name__ == "__main__": args = get_args() trajsfile = args.trajs topology = args.topology chunksize = args.chunksize periodic = args.periodic if args.saveas is None: save_coord_as = {"native": "Enative.dat", "nonnative": "Enonnative.dat"}[args.contacts] else: save_coord_as = args.saveas # Data source trajfiles = ["%s" % (x.rstrip("\n")) for x in open(trajsfile, "r").readlines()] dir = os.path.dirname(trajfiles[0]) # Parameterize contact energy function. pairs, pair_type, eps, contact_params = util.get_pair_energy_params(dir, args) energy_function = util.get_contact_energy_function(pairs, pair_type, eps, contact_params, periodic=periodic) # Calculate contact function over directories util.calc_coordinate_multiple_trajs( trajfiles, energy_function, topology, chunksize, save_coord_as=save_coord_as, savepath=args.savepath )