metaAfterTask.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Created on Tue Feb 23 10:09:40 2021
  5. @author: Oscar Portoles
  6. """
  7. import numpy as np
  8. import sys
  9. import visArchis_seq as v
  10. # import optimProbs as oudp
  11. import modelStages as udp
  12. import scipy as sp
  13. from itertools import combinations
  14. tSimu = 400
  15. saveTo = './dataSave/metaFC1000afterPulse_P040_G0p15L0p6.npz'
  16. # Load data
  17. d = v.LoadData()
  18. d.nameModel = 'stgSequence_Lopt_allPu1500_wE_P040_optIni_v5_fixG0p15L0p6_Stg'
  19. d.nameEnding =''
  20. d.stages = [1,2,3,4]
  21. m = d.getBestModel()
  22. pairs = np.array(list(combinations(range(m.nroi),2)), dtype=np.int32)
  23. # get puses and best fitness
  24. pulses = np.zeros((m.nroi,m.nStg))
  25. fits = np.zeros(m.nStg)
  26. for i in range(m.nStg):
  27. pulses[:,i] = m.logs[i][0][0]
  28. fits[i] = m.logs[i][0][3]
  29. metaG, metaL,sim2eFC = [None]*4, [None]*4, [None]*4
  30. metaGtot, metaLtot = np.zeros(4), np.zeros(4)
  31. matchFCs = [None]*4
  32. for iX in range(4):
  33. stages = list(range(iX+1))
  34. kao = udp.KAOmodel(stageIx=stages)
  35. # use model with pulses
  36. kao.iniCond = 2
  37. kao.tMax = tSimu
  38. kao._setHistDelayAndContainers()
  39. kao._edgesImpulse()
  40. kao._getEmpiReativEnv()
  41. kao.doNoise(variance=0)
  42. kao.pulse = pulses[:,stages]
  43. # kao.pulse = np.zeros((68,1))
  44. kao.runModel_Pulsein_sequence()
  45. zds = kao.downsampleModel(kao.z)
  46. # metastability
  47. metaG_ = np.abs(np.mean(np.exp(1j*np.angle(zds)),axis=0))
  48. metaGtot[iX] = np.mean(np.std(metaG_,axis=0))
  49. metaG[iX] = np.mean(metaG_, axis=1)
  50. zdsA = udp.KAOmodel._absZ(zds)
  51. metaL[iX] = zdsA
  52. metaLtot[iX] = np.mean( np.mean(np.std(zdsA,axis=1),axis=0) )
  53. # match to last FC state
  54. csi = np.sign( np.imag(zds[pairs[:,0],:,:] * np.conjugate(zds[pairs[:,1],:,:])) )
  55. mcsi = np.sign( np.mean(csi, axis=2) ) # mean over models
  56. sim2eFC_= np.ones((len(stages), mcsi.shape[1]),dtype=np.float32)
  57. for i in range(len(stages)):
  58. sim2eFC_[i,:] = np.float32(np.sum( kao.eFCs[i,:] * mcsi.T, axis=1) / kao.neFCs[i])
  59. sim2eFC[iX] = sim2eFC_
  60. np.savez(saveTo, sim2eFC=sim2eFC, metaG=metaG,metaL=metaL,metaGtot=metaGtot,metaLtot=metaLtot,pulses=pulses,fitSt=fits)