'mol%i' % new_mol_number] = inputData[section][mol] return newRestartData, newInputData from MCFlow.file_formatting.writer import sort_keys from MCFlow.file_formatting import reader, writer if __name__ == '__main__': from MCFlow.parser import ChangeInput my_parser = ChangeInput() my_parser.molecules() my_parser.parser.add_argument('-b', '--boxes', help='boxes to keep', type=str, nargs='+') args = vars(my_parser.parse_args()) for feed in args['feeds']: for sim in args['indep']: path = feed + '/' + str(sim) + '/' input_data = reader.read_fort4(path + args['input']) nmolty, nbox = int(input_data['&mc_shared']['nmolty']), int( input_data['&mc_shared']['nbox']) restart_data = reader.read_restart(path + args['restart'], nmolty, nbox) newRes, newIn = removeExtraInfo(args['boxes'], restart_data, input_data) writer.write_fort4(newIn, path + 'fort.4.purified') writer.write_restart(newRes, path + 'fort.77.purified')
from MCFlow.file_formatting import reader, writer import copy import numpy as np if __name__ == '__main__': import argparse, os parser = argparse.ArgumentParser(description='add explicit to unit cell') parser.add_argument('-f', '--file', type=str) parser.add_argument('-lmn', '--vectors', type=int, nargs='+', default=[2, 2, 3]) parser.add_argument('-i', '--input', default='fort.4') parser.add_argument('-r', '--restart', default='fort.77') args = vars(parser.parse_args()) base_dir = os.getcwd() + '/' data = reader.PDB(args['file']) input_data = reader.read_fort4('%s%s' % (base_dir, args['input'])) nmolty, nbox = (int(input_data['&mc_shared']['nmolty']), int(input_data['&mc_shared']['nbox'])) restart_data = reader.read_restart('%s%s' % (base_dir, args['restart']), nmolty, nbox) input_data, restart_data = main(input_data, restart_data, data) writer.write_fort4(input_data, 'fort.4.new') writer.write_restart(restart_data, 'fort.77.new')
nargs='+') my_parser.parser.add_argument('-ib', '--impurityBoxes', help='impurity boxes', type=str, nargs='+') args = vars(my_parser.parser.parse_args()) feeds = args.pop('feeds') for feed in feeds: args['feeds'] = [feed] data, gen_data = getFileData(**args) nbox = len(data['rho'].averages[feed].keys()) try: input_data = reader.read_fort4(args['path'] + '/' + feed + '/1/fort.4') except FileNotFoundError: input_data = reader.read_fort4(args['path'] + '/' + feed + '/1/old-fort4') bias = newBias(data['N'].averages[feed], input_data['UNIFORM_BIASING_POTENTIALS'], gen_data[feed]['temperature'], args['impurityMols'], args['impurityBoxes']) # change data input_data['UNIFORM_BIASING_POTENTIALS'] = bias input_data['&mc_shared']['nstep'] = '%i' % args['nstep'] # iprint, iblock = iaverage(args['nstep']) # input_data['&analysis']['iprint'] = '%i'%iprint # input_data['&analysis']['iblock'] = '%i'%iblock # write new files
if __name__ == '__main__': import argparse, os parser = argparse.ArgumentParser(description = 'Analyze and collect data for vapor adsorption') parser.add_argument('-f','--in_file',help ='fort.4 file to change',type=str, default=os.getcwd() + '/fort.4') parser.add_argument('-r','--in_rest',help ='fort.77 file to change',type=str, default=os.getcwd() + '/fort.77') parser.add_argument('-b','--new_beads',help ='''new beads for each molecule type: New order is lists for each mol. Ex: you might pass in `4,6,1,2,3,5' to get --> [4,6,1,2,3,5]. This changes 4 --> 1 (old bead 4 to new bead 1), 6 --> 2, 1 --> 3, etc...N.B: mols are read in string as list''',type=str,nargs='+') parser.add_argument('-m','--mols',help='mols to change coresponding to those passed into new beads', type=str,nargs='+') args = vars(parser.parse_args()) if len(args['new_beads']) != len(args['mols']): print('beads and mols not specified correctly') for key in ['new_beads','mols']: print('{} {} len: {}'.format(key, args[key], len(args[key]))) quit() new_beads = [list(map(int,i.split(','))) for i in args['new_beads']] input_data = read_fort4(args['in_file']) nmolty, nbox = int(input_data['&mc_shared']['nmolty']), int(input_data['&mc_shared']['nbox']) restart_data = read_restart(args['in_rest'],nmolty, nbox) new_in, new_res = changeBeadOrder(args['mols'], new_beads, input_data.copy(), restart_data.copy()) if args['in_file'].rfind('/') != -1: new_path = args['in_file'][:args['in_file'].rfind('/')] + '/' else: new_path = '' write_fort4(new_in, new_path + 'fort.4.new') write_restart(new_res, new_path + 'fort.77.new')
newSwaps, newSwatches, pctAct, nActCycle, normSwaps, normSwatches, pmvol, pswatch_norm, pswap_norm ) = analyzeTransfers( data['SWAP'].averages[feed], gen_data[feed]['ncycle'], # nActPerCycle=3656/200, tavol=0.3, gen_data[feed]['compositions']) except NoSwapsAccepted: print('no swaps accepted for {}'.format(feed)) continue print(newSwaps) # read and write for sim in args['indep']: my_path = '%s/%s/%i/' % (args['path'], feed, sim) try: input_data = reader.read_fort4(my_path + 'fort.4') except FileNotFoundError: input_data = reader.read_fort4(my_path + 'old-fort4') # add in swaps if input_data['&mc_swap']['pmswap'][-2:] == 'd0': input_data['&mc_swap']['pmswap'] = input_data['&mc_swap'][ 'pmswap'][:-2] pswap_old = float(input_data['&mc_swap']['pmswap']) input_data['&mc_swap']['pmswap'] = '%e' % pswap_norm input_data['&mc_shared']['seed'] = '%i' % sim nmolty = int(input_data['&mc_shared']['nmolty']) assert len(newSwaps) == nmolty, 'Incorrect swaps: too many' total_pswap = 0. for molNum in range(1, nmolty + 1): for mol in newSwaps.keys(): if mol.split()[0] == '%i' % molNum: