Я анализирую данные ЭЭГ для моего проекта с отличием.В частности, я анализирую всплески ЭЭГ (т. Е. Количество отсчетов, превышающих критерии).Значения ЭЭГ записываются каждую секунду.В моем случае критерием взрыва ЭЭГ является каждый раз, когда значение ЭЭГ превышает 15% от 5-минутного среднего значения.Тем не менее, я также хотел бы найти продолжительность, которая остается выше 15% от среднего значения.Как я могу это сделать?
редактировать: это данные для 5-минутного блока, регионов2 [0] [0] [0]
array([2.6749268, 2.3965783, 2.2648365, 2.2901094, 2.5218956, 2.6369736,
2.3637865, 2.1217346, 1.895203 , 2.055559 , 1.9365673, 2.4218671,
2.530769 , 2.385391 , 2.293663 , 2.3126507, 2.323733 , 2.2733889,
2.3903291, 2.6176193, 2.6430926, 2.58586 , 2.352392 , 2.4955454,
2.6099124, 2.3200274, 2.1760976, 2.5159674, 2.76305 , 2.3733828,
2.4342089, 2.4008656, 2.2075768, 2.232682 , 2.2406263, 2.4858663,
2.4188566, 2.5680597, 2.5303915, 2.3958497, 2.2115357, 2.444274 ,
2.5103524, 2.0567694, 2.441487 , 2.430129 , 2.4614134, 2.282298 ,
2.4610975, 2.5782802, 2.3088896, 2.660237 , 2.8228939, 2.386515 ,
1.9969627, 2.0703123, 2.891341 , 2.929259 , 2.3676789, 2.39686 ,
2.559953 , 2.4817688, 2.4235504, 2.2657301, 2.6064477, 2.6751654,
2.5263813, 2.1663566, 2.2710345, 2.6688013, 2.1095626, 2.560567 ,
2.6420567, 2.3834925, 2.4658787, 2.6067703, 2.5786612, 2.6147954,
2.5842502, 2.5785747, 2.427758 , 2.2909386, 2.2653525, 2.382083 ,
2.5664327, 2.5153337, 1.820536 , 2.5582454, 2.3047743, 2.0991004,
2.4578576, 2.7292717, 2.6083386, 2.4281838, 2.453028 , 2.4099083,
2.3806388, 2.3578563, 2.590041 , 2.621177 , 2.3468106, 2.145658 ,
2.077852 , 2.2439861, 2.6040363, 2.7262418, 2.5456822, 2.4032714,
2.4305286, 2.3440735, 2.4467494, 2.8309298, 2.484087 , 2.4205194,
2.9501045, 2.9746544, 2.4083674, 2.3036501, 2.6792996, 2.3589804,
2.3387434, 3.1610718, 3.1351097, 2.5165584, 2.52014 , 2.4717925,
2.3442857, 2.4484215, 2.6329467, 2.5656624, 2.1032746, 2.6107414,
2.6543136, 2.3989596, 2.491326 , 2.448652 , 2.0739408, 2.1546881,
2.2125206, 2.3453302, 2.206572 , 2.5481203, 2.4757648, 2.321009 ,
2.151885 , 2.5293174, 2.4324925, 2.5090148, 2.511013 , 2.3891613,
2.410615 , 2.4933898, 2.5637872, 2.5406888, 2.3262205, 2.3038528,
2.3525562, 2.5020993, 2.418803 , 2.3449333, 2.3671083, 2.2996266,
2.3794844, 2.567588 , 2.4661932, 2.2262957, 2.23916 , 2.4768639,
2.5996208, 2.0967448, 2.6293585, 2.63859 , 2.1346848, 2.396465 ,
2.5590088, 2.7100194, 2.5844605, 2.509511 , 2.3888776, 2.3450603,
2.3059156, 2.3003197, 2.265796 , 2.409108 , 2.3471978, 2.3690042,
2.3681839, 2.1804225, 2.3097868, 2.5214322, 2.5647783, 2.2263277,
2.237076 , 2.1725235, 2.7022493, 2.6051672, 2.3920796, 2.5295384,
2.3592722, 2.3246412, 2.6447232, 2.471837 , 2.7084064, 2.891163 ,
2.853586 , 2.5431767, 2.626647 , 2.384906 , 2.4660795, 2.3987703,
1.952864 , 2.200941 , 2.0904007, 2.3755703, 2.4843922, 2.2047417,
2.356966 , 2.3752437, 2.3846717, 2.306039 , 2.1720207, 2.3954203,
2.3085623, 2.3531506, 1.9799676, 2.211963 , 2.141896 , 2.23061 ,
2.3369045, 2.0759099, 2.3769715, 2.2083194, 2.3833442, 2.519347 ,
2.3158543, 2.349166 , 2.4172142, 2.4422796, 2.513461 , 2.3867416,
2.2908096, 2.5697057, 2.5763984, 2.319024 , 2.2902663, 2.6102533,
2.6331408, 2.0932658, 2.323995 , 2.5237315, 2.5517514, 2.2664344,
2.6006377, 2.3638246, 2.1815908, 2.440507 , 2.319951 , 2.399297 ,
2.4986413, 2.3624146, 2.2377589, 2.277511 , 2.2512653, 2.1235788,
2.1558921, 2.0374463, 2.2526782, 2.3825428, 2.2467673, 2.2891142,
2.2968547, 2.2971904, 2.3470707, 2.2792215, 2.4101918, 2.4403389,
2.674443 , 2.7500827, 2.4176645, 2.4565153, 2.5339708, 2.545448 ,
2.3907104, 2.4448986, 2.571172 , 2.3371966, 2.5683126, 2.6280603,
2.4276655, 2.4700544, 2.421201 , 2.499506 , 2.555047 , 2.7138271,
2.546179 , 2.484039 , 2.3956237, 2.591265 , 2.6552162, 2.6930716],
dtype=float32)
1.15 * np.mean(regions2[0][0][0])
Out[17]: 2.783561062812805
np.where(regions2[0][0][0] > 1.15 * np.mean(regions2[0][0][0]))
Out[13]: (array([ 52, 56, 57, 111, 114, 115, 121, 122, 203, 204], dtype=int64),)
редактировать: просмотр индексачисла значений больше, чем 1,15 от среднего, я понял, что показывает продолжительность, которую я ищу.то есть, если это одно число 52, то это 1-секундный пакет, если это 56 и 57 (2 последовательных номера индекса), то это 2-секундный пакет.Как я могу сделать скрипт для расчета средней продолжительности вспышки для каждого 5-минутного блока?В этом примере это будет среднее значение (1 с + 2 с + 1 с + 2 с + 2 с + 2 с)
Я прикрепил фрагмент кода, который работает и способен подсчитывать количество пакетов, выполняя итерацию поndarray и сравнение двух последовательных значений ЭЭГ (добавьте 1 отсчет пакета (temp + = 1), если первое значение меньше 1,15 от среднего, а второе значение больше 1,15 от среднего).Это для одного 5-минутного блока, и я повторяю это для 18 5-минутных блоков.
burst = 0
for l in range(1,len(regions[i][j][k])): #regions[i][j][k] refers to a 5-min block of EEG data
if regions[i][j][k][l-1] < (1.15 * np.nanmean(regions[i][j][k])) and regions2[i][j][k][l] > (1.15 * np.nanmean(regions2[i][j][k])):
burst += 1 #counts a burst
Я думал, что смогу найти номер индекса точки, в которой происходит взрыв, и номер индексазначение, при котором заканчивается всплеск (значение ЭЭГ падает ниже 1,15 от среднего значения).Продолжительность в секундах будет разницей между двумя значениями индекса.
Однако я понятия не имею, как это сделать, или это лучший способ.Эти всплески происходят несколько раз, поэтому моя конечная цель - находить средние значения этих всплесков каждые 5 минут.Я только начал изучать Python несколько месяцев назад, поэтому любая помощь будет принята с благодарностью!