Changeset 2665
- Timestamp:
- Apr 6, 2006, 9:47:08 AM (17 years ago)
- Location:
- inundation/pyvolution
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
inundation/pyvolution/least_squares.py
r2663 r2665 226 226 X = point_coordinates[:,0] 227 227 Y = point_coordinates[:,1] 228 Z = point_attributes 228 Z = ensure_numeric(point_attributes) 229 if len(Z.shape) == 1: 230 Z = Z[:, NewAxis] 231 229 232 230 233 #Data points inside mesh boundary … … 242 245 Xi = vertex_coordinates[:,0] 243 246 Eta = vertex_coordinates[:,1] 244 Zeta = vertex_attributes 245 246 247 248 if max(Zeta) > max(Zc)*acceptable_fit_overshoot or\ 249 min(Zeta) < min(Zc)/acceptable_fit_overshoot: 250 msg = 'Least sqares produced values outside the range of the input ' 251 msg += 'data by a factor greater than %.2f. ' %acceptable_fit_overshoot 252 msg += 'Z in [%f, %f], Zeta in [%f, %f].\n' %(min(Zc), max(Zc), 253 min(Zeta), max(Zeta)) 254 255 offending_vertices = (Zeta > max(Zc)*acceptable_fit_overshoot) or\ 256 (Zeta < min(Zc)/acceptable_fit_overshoot) 257 258 Xi_c = compress(offending_vertices, Xi) 259 Eta_c = compress(offending_vertices, Eta) 260 offending_coordinates = concatenate((Xi_c[:, NewAxis], 261 Eta_c[:, NewAxis]), 262 axis=1) 263 264 msg += 'Offending locations:\n %s' %(offending_coordinates) 247 Zeta = ensure_numeric(vertex_attributes) 248 if len(Zeta.shape) == 1: 249 Zeta = Zeta[:, NewAxis] 250 251 for i in range(Zeta.shape[1]): #For each attribute 252 zeta = Zeta[:,i] 253 z = Z[:,i] 254 zc = Zc[:,i] 265 255 266 raise FittingError, msg 256 if max(zeta) > max(zc)*acceptable_fit_overshoot or\ 257 min(zeta) < min(zc)/acceptable_fit_overshoot: 258 msg = 'Least sqares produced values outside the range of the input ' 259 msg += 'data by a factor greater than %.2f. ' %acceptable_fit_overshoot 260 msg += 'z in [%f, %f], zeta in [%f, %f].\n' %(min(zc), max(zc), 261 min(zeta), max(zeta)) 262 263 offending_vertices = (zeta > max(zc)*acceptable_fit_overshoot) or\ 264 (zeta < min(zc)/acceptable_fit_overshoot) 265 266 Xi_c = compress(offending_vertices, Xi) 267 Eta_c = compress(offending_vertices, Eta) 268 offending_coordinates = concatenate((Xi_c[:, NewAxis], 269 Eta_c[:, NewAxis]), 270 axis=1) 271 272 msg += 'Offending locations:\n %s' %(offending_coordinates) 273 274 raise FittingError, msg 267 275 268 276 269 277 270 if verbose: 271 print '+------------------------------------------------' 272 print 'Least squares statistics' 273 print '+------------------------------------------------' 274 print 'points: %d points' %(len(Z)) 275 print ' x in [%f, %f]'%(min(X), max(X)) 276 print ' y in [%f, %f]'%(min(Y), max(Y)) 277 print ' z in [%f, %f]'%(min(Z), max(Z)) 278 print 279 280 if indices is not None: 281 print 'Cropped points: %d points' %(len(Zc)) 282 print ' x in [%f, %f]'%(min(Xc), max(Xc)) 283 print ' y in [%f, %f]'%(min(Yc), max(Yc)) 284 print ' z in [%f, %f]'%(min(Zc), max(Zc)) 278 if verbose: 279 print '+------------------------------------------------' 280 print 'Least squares statistics' 281 print '+------------------------------------------------' 282 print 'points: %d points' %(len(z)) 283 print ' x in [%f, %f]'%(min(X), max(X)) 284 print ' y in [%f, %f]'%(min(Y), max(Y)) 285 print ' z in [%f, %f]'%(min(z), max(z)) 285 286 print 286 287 288 print 'Mesh: %d vertices' %(len(Zeta)) 289 print ' xi in [%f, %f]'%(min(Xi), max(Xi)) 290 print ' eta in [%f, %f]'%(min(Eta), max(Eta)) 291 print ' zeta in [%f, %f]'%(min(Zeta), max(Zeta)) 292 print '+------------------------------------------------' 287 288 if indices is not None: 289 print 'Cropped points: %d points' %(len(zc)) 290 print ' x in [%f, %f]'%(min(Xc), max(Xc)) 291 print ' y in [%f, %f]'%(min(Yc), max(Yc)) 292 print ' z in [%f, %f]'%(min(zc), max(zc)) 293 print 294 295 296 print 'Mesh: %d vertices' %(len(zeta)) 297 print ' xi in [%f, %f]'%(min(Xi), max(Xi)) 298 print ' eta in [%f, %f]'%(min(Eta), max(Eta)) 299 print ' zeta in [%f, %f]'%(min(zeta), max(zeta)) 300 print '+------------------------------------------------' 293 301 294 302 return vertex_attributes -
inundation/pyvolution/test_least_squares.py
r2663 r2665 1863 1863 #------------------------------------------------------------- 1864 1864 if __name__ == "__main__": 1865 suite = unittest.makeSuite(Test_Least_Squares,'test_pts') 1865 #suite = unittest.makeSuite(Test_Least_Squares,'test_smooth_attributes_to_mesh_function') 1866 suite = unittest.makeSuite(Test_Least_Squares,'test_fit_using_fit_to_mesh') 1866 1867 1867 1868 #suite = unittest.makeSuite(Test_Least_Squares,'test_fit_to_msh_netcdf_fileII')
Note: See TracChangeset
for help on using the changeset viewer.