PageRenderTime 61ms CodeModel.GetById 35ms RepoModel.GetById 1ms app.codeStats 0ms

/analysis/whole_surface_avgs.py

https://gitlab.com/Cadair/driver-widths-paper
Python | 82 lines | 65 code | 7 blank | 10 comment | 4 complexity | 6ce2bb05bbf9d22b7ba24fb330f2d31d MD5 | raw file
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Thu Apr 3 16:45:11 2014
  4. Calculate and save to disk the surface Flux averages
  5. Usage:
  6. whole_surface_avgs.py
  7. """
  8. import os
  9. import sys
  10. import glob
  11. import numpy as np
  12. import pysac.analysis.tube3D.tvtk_tube_functions as ttf
  13. sys.path.append('../')
  14. from scripts import sacconfig
  15. cfg = sacconfig.SACConfig()
  16. try:
  17. import docopt
  18. except ImportError:
  19. from script.extern import docopt
  20. arguments = docopt.docopt(__doc__, version='Surface Analysis 13/11/13')
  21. driver = cfg.driver
  22. post_amp = cfg.amp
  23. period = cfg.str_period
  24. #Add the '_' to exp_fac
  25. if cfg.exp_fac:
  26. exp_fac = '_' + cfg.str_exp_fac
  27. else:
  28. exp_fac=''
  29. def glob_files(tube_r, search):
  30. files = glob.glob(os.path.join(cfg.data_dir,tube_r,search))
  31. files.sort()
  32. return files
  33. def path_join(filename):
  34. return os.path.join(os.path.join(cfg.data_dir,'%s/'%tube_r),filename)
  35. for tube_r in cfg.tube_radii:
  36. print tube_r
  37. wave = glob_files(tube_r, 'Wave*')
  38. Fpar = np.zeros([len(wave)])
  39. Fperp = np.zeros([len(wave)])
  40. Fphi = np.zeros([len(wave)])
  41. for i, awave in enumerate(wave):
  42. surf_poly = ttf.read_step(awave)
  43. Fwperp = ttf.get_data(surf_poly, 'Fwperp')
  44. Fwpar = ttf.get_data(surf_poly, 'Fwpar')
  45. Fwphi = ttf.get_data(surf_poly, 'Fwphi')
  46. Fperp[i] = np.mean(Fwperp)
  47. Fpar[i] = np.mean(Fwpar)
  48. Fphi[i] = np.mean(Fwphi)
  49. Fwpar[np.abs(Fwpar)<1e-5], Fwperp[np.abs(Fwperp)<1e-5], Fwphi[np.abs(Fwphi)<1e-5] = 0., 0., 0.
  50. Fwtot = np.sqrt(Fwpar**2 + Fwperp**2 + Fwphi**2)
  51. Fwpar, Fwperp, Fwphi = (Fwpar/Fwtot)*100, (Fwperp/Fwtot)*100, (Fwphi/Fwtot)*100
  52. Fwpar, Fwperp, Fwphi = map(np.abs, [Fwpar, Fwperp, Fwphi])
  53. Fwpar = np.mean(np.ma.masked_array(Fwpar,np.isnan(Fwpar)))
  54. Fwperp = np.mean(np.ma.masked_array(Fwperp,np.isnan(Fwperp)))
  55. Fwphi = np.mean(np.ma.masked_array(Fwphi,np.isnan(Fwphi)))
  56. np.save(path_join("AveragePercentFlux_%s_%s_%s_%s_%s_Fperp.npy"%(cfg.driver, cfg.str_period,
  57. cfg.amp, tube_r, cfg.str_exp_fac)),Fwperp)
  58. np.save(path_join("AveragePercentFlux_%s_%s_%s_%s_%s_Fpar.npy"%(cfg.driver, cfg.str_period,
  59. cfg.amp, tube_r, cfg.str_exp_fac)),Fwpar)
  60. np.save(path_join("AveragePercentFlux_%s_%s_%s_%s_%s_Fphi.npy"%(cfg.driver, cfg.str_period,
  61. cfg.amp, tube_r, cfg.str_exp_fac)),Fwphi)