hdiff output

r32046/DNA_phos_rotations.py 2017-03-07 23:30:26.025113811 +0000 r32045/DNA_phos_rotations.py 2017-03-07 23:30:26.245116707 +0000
  1: #! /usr/bin/env python 
  2: import sys 
  3:  
  4: def read_pdb(pdb,exit): 
  5:         pdb_atom_list=[] 
  6:         pdbopen=False 
  7:         while (not pdbopen): 
  8:                 try: 
  9:                         with open(pdb,'r') as f: 
 10:                                 for line in f: 
 11:                                         s=line.split() 
 12:                                         if (s[0]=='ATOM'): 
 13:                                                 pdb_atom_list.append((s[1],s[2],s[3],s[4])) 
 14:                         pdbopen=True 
 15:                 except IOError: 
 16:                         pdb=raw_input("{} could not be opened. Please type the AMBER-produced pdb filepath, or 'exit' to end the program: ".format(pdb)) 
 17:                         if pdb.lower() in exit: 
 18:                                 quit() 
 19:         return pdb_atom_list 
 20:  
 21: def get_prob(): 
 22:         global accept 
 23:         prob_in= raw_input('Input a Probability of group rotation (suggested: 0.025): ') 
 24:         try:  
 25:                 prob=float(prob_in) 
 26:                 if (prob>0.01 and prob<=0.10): 
 27:                         prob_allow=True 
 28:                 else: 
 29:                         prob_allow=False 
 30:                 while not prob_allow: 
 31:                         if prob > 0.1: 
 32:                                 print('This is a large probability (values recommended: 0.01 to 0.1).') 
 33:                                 prob_check = raw_input(' Continue with the selected value (y/n)? ') 
 34:                                 if prob_check in accept: 
 35:                                         prob_allow=True 
 36:                         elif prob < 0.01: 
 37:                                 print('This is a small probability (values recommended: 0.01 to 0.1).') 
 38:                                 prob_check = raw_input(' Continue with the selected value (y/n)? ') 
 39:                                 if prob_check in accept: 
 40:                                         prob_allow=True 
 41:                         else: 
 42:                                 prob_allow=True 
 43:                         if not prob_allow: 
 44:                                 prob_in= raw_input('Input a Probability of group rotation (suggested: 0.025): ') 
 45:                                 try:  
 46:                                         prob=float(prob_in) 
 47:                                 except ValueError: 
 48:                                         print('Probability needs to be a float') 
 49:         except ValueError: 
 50:                 print('Input needs to be a float') 
 51:         return prob 
 52:  
 53: def get_amp(): 
 54:         global accept 
 55:         global reject 
 56:         amp_in= raw_input('Input the amplitude of group rotation (suggested: 0.05): ') 
 57:         try:  
 58:                 amp=float(amp_in) 
 59:                 if (amp<=1.0 and amp>=0.0): 
 60:                         amp_allow=True 
 61:                 else: 
 62:                         amp_allow=False 
 63:                 while not amp_allow: 
 64:                         if amp > 1.0: 
 65:                                 print('The amplitude should be in the half-open interval (0,1].') 
 66:                                 amp_check = raw_input('Set the amplitude to 1 (y/n)? ') 
 67:                                 if amp_check in accept: 
 68:                                         amp=1.0 
 69:                                         amp_allow=True 
 70:                         elif amp <= 0.00: 
 71:                                 print('The amplitude should be in the half-open interval (0,1].') 
 72:                                 amp_check = raw_input('Set to default value of 0.025 (y/n)? ') 
 73:                                 if amp_check not in reject: 
 74:                                         amp=0.025 
 75:                                         amp_allow=True 
 76:                         else: 
 77:                                 amp_allow=True 
 78:                         if not amp_allow: 
 79:                                 amp_in= raw_input('Input the amplitude of group rotation (suggested: 0.05): ') 
 80:                                 try:  
 81:                                         amp=float(amp_in) 
 82:                                 except ValueError: 
 83:                                         print('Amplitude needs to be a float') 
 84:         except ValueError: 
 85:             print('Input needs to be a float') 
 86:         return amp 
 87:  
 88: ##################################################################################### 
 89:  
 90: backbone_rotation = [False, False, False] 
 91: prob_def = [0.025, 0.025, 0.025] 
 92: amp_def = [0.05, 0.05, 0.05] 
 93: def_change_check=False 
 94: accept = ['y','yes', 'affirmative','yeah', 'accept'] 
 95: exit = ['exit', 'break', 'stop', 'die', 'quit', 'kill'] 
 96: reject = ['n','no','negative','nope', 'reject'] 
 97:  
 98: pdb=raw_input("Please type the AMBER-produced pdb filepath, or 'exit' to end the program: ") 
 99: pdb_atom_list=read_pdb(pdb,exit) 
100: nres=int(pdb_atom_list[-1][3]) 
101: natoms=len(pdb_atom_list) 
102:  
103: def_change = (raw_input("Do you wish to change any default probabilities (0.025) or amplitudes (0.025) (y/n)? ")).lower() 
104: if def_change in accept: 
105:         def_change_check=True 
106: elif def_change in exit: 
107:         quit() 
108:  
109: O3Pcheck = (raw_input("Group rotations of base about O3'-P axis (y/n)? ")).lower() 
110: if O3Pcheck in accept: 
111:         backbone_rotation[0] = True 
112:         if def_change_check: 
113:                 def_prob = (raw_input('Use default values (P=0.025, amplitude =0.05) (y/n)? ')).lower() 
114:                 if def_prob in reject: 
115:                         prob_def[0] = get_prob() 
116:                         amp_def[0]=get_amp() 
117:                 elif def_prob in exit: 
118:                         quit() 
119: elif O3Pcheck in exit: 
120:         quit() 
121:  
122: PO5check = (raw_input("Group rotations of base about P-O5' axis (y/n)? ")).lower() 
123: if PO5check in accept: 
124:         backbone_rotation[1] = True 
125:         if def_change_check: 
126:                 def_prob = (raw_input('Use default values (P=0.025, amplitude =0.05) (y/n)? ')).lower() 
127:                 if def_prob in reject: 
128:                         prob_def[1] = get_prob() 
129:                         amp_def[1]=get_amp() 
130:                 elif def_prob in exit: 
131:                         quit() 
132: elif PO5check in exit: 
133:         quit() 
134:  
135: O5C5check = (raw_input("Group rotations of base about O5'-C5' axis (y/n)? ")).lower() 
136: if O5C5check in accept: 
137:         backbone_rotation[2] = True 
138:         if def_change_check: 
139:                 def_prob = (raw_input('Use default values (P=0.025, amplitude =0.05) (y/n)? ')).lower() 
140:                 if def_prob in reject: 
141:                         prob_def[2] = get_prob() 
142:                         amp_def[2]=get_amp() 
143:                 elif def_prob in exit: 
144:                         quit() 
145: elif O5C5check in exit: 
146:         quit() 
147:  
148: if (sum(backbone_rotation)==0): 
149:         print('No group rotations were selected. Exiting gracefully without file creation.') 
150:         quit() #no point in doing the rest if we don't actually want any rotations.... 
151:  
152: O3_ind=[None]*nres 
153: P_ind=[None]*nres 
154: O5_ind=[None]*nres 
155: C5_ind=[None]*nres 
156: for i in range(0,natoms): 
157:         ind=i+1 
158:         atom=pdb_atom_list[i][1] 
159:         res=int(pdb_atom_list[i][3])-1 
160:         if (atom=="O3'"): 
161:                 O3_ind[res]=ind 
162:         elif (atom=='P'): 
163:                 P_ind[res]=ind 
164:         elif (atom=="O5'"): 
165:                 O5_ind[res]=ind 
166:         elif (atom=="C5'"): 
167:                 C5_ind[res]=ind 
168:  
169: #write new atomgroups file. This is named different so as not to overwrite any other atomgroups file in the  
170: #folder; if desired, the atromgroups_phos can be concatenated onto an existing atomgroups file with bash commands 
171: print('The default atomgroups name on output is atomgroups_phos so that this will not overwrite any existing atomgroups file.') 
172: print('This can be concatenated onto an existing atomgroups file with the command "cat atomgroups_phos >> atomgroups".') 
173: changename=raw_input('Type "yes" or "y" if you would like to change the output file name. ') 
174: if changename in accept: 
175:         filename=raw_input('Type the filename you would like: ') 
176: elif changename in exit: 
177:         quit() 
178: else:  
179:         filename='atomgroups_phos' 
180: ag=open(filename,'w') 
181:  
182: for i in range(0,nres-1): 
183:         if (backbone_rotation[0]): 
184:                 name = "O3pP{}".format(i+1) 
185:                 ax1 = O3_ind[i] 
186:                 ax2 = P_ind[i+1] 
187:                 if (ax2<natoms/2): 
188:                         atomlist=range(1,O3_ind[i]) 
189:                 else: 
190:                         atomlist=range(O5_ind[i+1]+1,natoms+1) 
191:                 string="GROUP {} {} {} {} {} {}\n".format(name, ax1, ax2, len(atomlist), amp_def[0], prob_def[0]) 
192:                 ag.write(string) 
193:                 for k in atomlist: 
194:                         ag.write("{}\n".format(k)) 
195:  
196:         if (backbone_rotation[1]): 
197:                 name = "PO5p{}".format(i+1) 
198:                 ax1 = P_ind[i+1] 
199:                 ax2 = O5_ind[i+1] 
200:                 if (ax2<natoms/2): 
201:                         atomlist=list(range(1,P_ind[i+1])) + list(range(P_ind[i+1]+1,O5_ind[i+1])) 
202:                 else: 
203:                         atomlist=range(O5_ind[i+1]+1,natoms+1) 
204:                 string="GROUP {} {} {} {} {} {}\n".format(name, ax1, ax2, len(atomlist), amp_def[1], prob_def[1]) 
205:                 ag.write(string) 
206:                 for k in atomlist: 
207:                         ag.write("{}\n".format(k)) 
208:  
209:         if (backbone_rotation[2]): 
210:                 name = "O5pC5p{}".format(i+1) 
211:                 ax1 = O5_ind[i+1] 
212:                 ax2 = C5_ind[i+1] 
213:                 if (ax2<natoms/2): 
214:                         atomlist=range(1,O5_ind[i+1]) 
215:                 else: 
216:                         atomlist=range(C5_ind[i+1]+1,natoms+1) 
217:                 string="GROUP {} {} {} {} {} {}\n".format(name, ax1, ax2, len(atomlist), amp_def[2], prob_def[2]) 
218:                 ag.write(string) 
219:                 for k in atomlist: 
220:                         ag.write("{}\n".format(k)) 
221:  
222: ag.close() 
223: print('File {} was created successfully.'.format(filename)) 
224:   1: 
   2: svn: E195012: Unable to find repository location for 'svn+ssh://svn.ch.private.cam.ac.uk/groups/wales/trunk/SCRIPTS/AMBER/rigidbody/DNA_phos_rotations.py' in revision 32045


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0