hdiff output

r33378/get_FreeEnergy_GroupRep.py 2017-10-05 20:30:14.278418878 +0100 r33377/get_FreeEnergy_GroupRep.py 2017-10-05 20:30:14.498421785 +0100
  1: #!/usr/bin/python  1: svn: E195012: Unable to find repository location for 'svn+ssh://svn.ch.private.cam.ac.uk/groups/wales/trunk/SCRIPTS/PATHSAMPLE/get_FreeEnergy_GroupRep.py' in revision 33377
  2: import sys 
  3: import glob 
  4: script, filename = sys.argv 
  5: script = sys.argv[0] 
  6: filename = sys.argv[1] 
  7:  
  8:  
  9: # Author: Jerelle A Joseph jaj52@cam.ac.uk 
 10: # If you want to colour the free energy (FE) disconnectivity graph based on some order parameter  
 11: # you need to get the potential energy (PE)  minimum that is representative of each FE group.  
 12: # 
 13: # ***USAGE*** 
 14: # python get_FreeEnergy_GroupRep.py minima_groups.<TEMPERATURE> 
 15: # 
 16: # ***FILE NEEDED*** 
 17: # minima_groups.<TEMPERATURE> - output file from PATHSAMPLE specifying the composition of each FE group  
 18: # 
 19: # This script will create: 
 20: # 1. FEgroup_PErep.out - specifies the FE group index (in min.data.regrouped.<TEMEPERATURE>)  
 21: #                        and the representative PE minimum index (in min.data) 
 22: # 2. PErep.out - list the PE minimum indices (one per line) for each FE group 
 23: # 
 24: # 3. The script can also dump the free energy groups into individual files and also produce a file that gives  
 25: # a summary of number of minima in each FE group ("GROUP_COUNT"). Uncomment the lines at the end of the script if you 
 26: # want this.  
 27: # 
 28: # ***BEYOND THE SCRIPT*** 
 29: # 
 30: # You will then need to compute the order parameter ONLY for the minima specified in "PErep.out" 
 31: # Then, as for PE disconnectivity graphs, provide the values for your order parameter in a file listed the same order 
 32: # as the PE mininma appear in "PErep.out" and include the necessary key words in your dinfo file.  
 33: # The values will then match the FE groups once you DO NOT change the order!  
 34: # 
 35: # ***CAUTION*** 
 36: # 
 37: # The order in which the groups are lised in minima_groups.<TEMEPERATURE> match the order in which they appear 
 38: # in min.data.regrouped.<TEMPERATURE> but NOT necessarily how they are listed in min.data.regrouped.resorted!!! 
 39: # Hence, using min.data.regrouped.<TEMPERATURE> for your analyses is highly recommended!! 
 40:  
 41:  
 42: def get_rep(fileofgroups): 
 43:     '''Get a PE minimum representative for each FE group''' 
 44:     output1 = open('FEgroup_PErep.out', 'w') 
 45:     output1.write('FE group      PE rep') 
 46:     output1.write('\n') 
 47:  
 48:     with open(fileofgroups) as f: 
 49:         lines = f.readlines() 
 50:  
 51:     this_group = [] 
 52:     for index, line in enumerate(lines): 
 53:         if not 'group' in line:  
 54:             if line.strip() != '': 
 55:                 this_group.append(line) 
 56:         elif 'group' in line: 
 57:             header = line.split() 
 58:             groupnum = header[1] 
 59:             rep = this_group[0]    
 60:             PE_rep.append(rep)      
 61:             output1.write('%s      %s' %(groupnum,rep)) 
 62:             output1.write('\n') 
 63:             this_group = []     
 64:     return  
 65:  
 66:  
 67: def dump_groups(minima_groups): 
 68:     '''Dumps each free energy group in a separate file. Useful for colouring the  
 69:         PE disconnectivity graph based on the composition of specific FE groups''' 
 70:     with open(minima_groups) as f: 
 71:         lines = f.readlines() 
 72:          
 73:     currset=[] 
 74:     for index, line in enumerate(lines): 
 75:         if not 'group' in line: 
 76:             currset.append(line) 
 77:         elif 'group' in line: 
 78:             header = line.split() 
 79:             groupnum = header[1] 
 80:             newgroup = open('group_%s' % groupnum, 'w') 
 81:             newgroup.write(line) 
 82:              
 83:             for min_ in currset: 
 84:                 newgroup.write(min_) 
 85:             newgroup.close() 
 86:             currset=[] 
 87:     return  
 88:  
 89:  
 90:  
 91: def group_info(singlegroup): 
 92:     '''Gets the number of minima present in each group and the group number''' 
 93:     with open(singlegroup) as f: 
 94:         first_line = f.readline() 
 95:     data = first_line.split() 
 96:     group_number = data [1] 
 97:     num_of_min = data[7] 
 98:      
 99:     return [group_number, num_of_min] 
100:  
101:  
102:  
103: def group_count(): 
104:     '''Produces a file with the FE group number and the number of minima in each''' 
105:     output = open('GROUP_COUNT', 'w') 
106:  
107:     for file_ in glob.glob('group_*'): 
108:         group_data = group_info(file_) 
109:         num_min = group_data[1] 
110:         group_num = group_data[0] 
111:         output.write(str(group_num)) 
112:         output.write(' ') 
113:         output.write(str(num_min)) 
114:         output.write('\n') 
115:     return  
116:  
117: # CODE TO RUN 
118: PE_rep = [] 
119:  
120: get_rep(filename) 
121:  
122: output2 = open('PErep.out', 'w') 
123:  
124: for r in PE_rep: 
125:     output2.write(r) 
126:  
127: # Uncomment this line if you want to dump the free energy groups into separate files  
128: ############## dump_groups(filename) 
129:  
130: # Uncommment this line if you want to get a summary of ONLY the number of PE minima 
131: # in each free group. NOTE you must uncomment the <dump_groups(fileofgroups)> line above 
132: # if you want to use this 
133: ############# #group_count() 


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0