activityanalyzer.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #include "sys.hpp" // for libcwd
  2. #include "debug.hpp" // for libcwd
  3. #include <iostream>
  4. #include "activityanalyzer.hpp"
  5. #include "spiketrain.hpp"
  6. ActivityAnalyzer::ActivityAnalyzer(SpikeTrain *SpikeTrain)
  7. {
  8. if (SpikeTrain) {
  9. SpikeTrain->MeanSpikeRate(20, &mTimeScale, &mSpikeRate);
  10. /*
  11. for (vector<double>::iterator it=mTimeScale.begin();it!=mTimeScale.end();++it) {
  12. cout << "t=" << (*it) << " ";
  13. }
  14. */
  15. meanActivityParameters();
  16. }
  17. }
  18. ActivityAnalyzer::~ActivityAnalyzer()
  19. {
  20. // std::cout << " ActivityAnalyzer::~ActivityAnalyzer() \n"; fflush(stdout);
  21. }
  22. /** calculate statistical parameters of mean neural activity (psth)
  23. */
  24. void ActivityAnalyzer::meanActivityParameters()
  25. {
  26. int nTimeSteps = mSpikeRate.size();
  27. int TimeScaleSize=mTimeScale.size();
  28. if ((nTimeSteps<=1) || nTimeSteps!= mSpikeRate.size()) {
  29. return;
  30. }
  31. double totalTime = mTimeScale.back() - mTimeScale.front();
  32. mDeltaT = totalTime / (nTimeSteps-1); // -1, denn Zahl der Intervalle = Zahl der Schritte -1
  33. mTotalNoSpikeTime=0;
  34. mMaxNoSpikeTime=0;
  35. int curNoSpikeTime=0;
  36. //std::cout << "TimeScalesize=" << TimeScaleSize << " totalTime=" << totalTime << " mDeltaT=" <<mDeltaT << "\n"; fflush(stdout);
  37. for (int tStep=0; tStep<nTimeSteps; ++tStep) {
  38. if (mSpikeRate[tStep]==0) {
  39. ++curNoSpikeTime;
  40. ++mTotalNoSpikeTime;
  41. if (mMaxNoSpikeTime < curNoSpikeTime) {
  42. ++mMaxNoSpikeTime;
  43. }
  44. } else {
  45. curNoSpikeTime=0;
  46. }
  47. }
  48. }