dimensiereductie_PDL_9010.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/bin/env python3
  2. import ithildin as ith
  3. import numpy as np
  4. import matplotlib.pyplot as plt
  5. import sys
  6. from typing import List
  7. from scipy.interpolate import RectBivariateSpline
  8. from pydiffmap.diffusion_map import DiffusionMap
  9. from pydiffmap import visualization as diff_visualization
  10. import matplotlib
  11. data_BOCF = ith.SimData.from_stem("../KORRR/results_9010/PDL_9010")
  12. # Variabelen
  13. var1 = data_BOCF.vars['u'].ravel()
  14. var2 = data_BOCF.vars['v'].ravel()
  15. var3 = data_BOCF.vars['w'].ravel()
  16. var4 = data_BOCF.vars['s'].ravel()
  17. # Verlaag aantal punten om geheugengebruik en tijdsduur te beperken.
  18. # replace=True strikt genomen incorrect maar verlaagt geheugengebruik
  19. # en wegens de hoge hoeveelheid punten weinig belangrijk
  20. keuzes = np.random.choice(var1.shape[0], 10000,replace=True)
  21. var1 = var1[keuzes]
  22. var2 = var2[keuzes]
  23. var3 = var3[keuzes]
  24. var4 = var4[keuzes]
  25. #matplotlib.use("TkAgg")
  26. #fig = plt.figure()
  27. #ax = fig.add_subplot(projection='3d')
  28. #ax.scatter(var1, var2, var3, c=var4,cmap=plt.hot())
  29. #plt.show()
  30. # Haal twee groepjes uitschieters weg (die zullen afzonderlijk gebestudeerd
  31. # worden).
  32. keuzes = np.where(var3 < 0.9999999)
  33. var1 = var1[keuzes]
  34. var2 = var2[keuzes]
  35. var3 = var3[keuzes]
  36. var4 = var4[keuzes]
  37. # laatste 50, eerste 50 (tijdsranden), xyz randen weggooien voldoende
  38. # (((---> rare dingen weg, wave links rechts wegsnijden voor beter)
  39. # TODO: 0. voor AP model (phase_1000), voor nog minder punten
  40. # TODO: 1. afsnijden
  41. # 2. random (?)
  42. # Picasso?
  43. # Overleaf -- nadenken, delen
  44. matplotlib.use("TkAgg")
  45. fig = plt.figure()
  46. ax = fig.add_subplot(projection='3d')
  47. ax.scatter(var1, var2, var3, c=var4,cmap=plt.hot())
  48. plt.show()
  49. # Nu de uitschieters verwijderd zijn, kunnen we proberen diffusion maps te
  50. # gebruiken.
  51. #del keuzes
  52. #faseruimte = np.array([var1, var2, var3, var4]).transpose()
  53. #del var1, var2, var3, var4 # geheugengebruik beperken
  54. #dmap = DiffusionMap.from_sklearn(n_evecs = 4)
  55. #map.fit(faseruimte)