SES triggering code

In [9]:
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.metrics import r2_score
import numpy as np
In [11]:
atn_test_data = pd.read_csv('//atlas/ProjectLibrary/902305_Event_Detection_with_SES/Deployments/MARS2024B-2025/SES_out_atn_og_Throttle test.csv')
In [13]:
atn_test_data.dtypes
Out[13]:
file_name            object
atn_og              float64
rm150               float64
diff                float64
trigger007          float64
trigger005          float64
trigger011          float64
trigger014          float64
007countpermonth    float64
005CPM              float64
011CPM              float64
3 weekcount         float64
014CPM              float64
Fire                float64
Switch              float64
Switch or fire      float64
dtype: object
In [19]:
atn_test_data.head()
Out[19]:
file_name atn_og rm150 diff trigger007 trigger005 trigger011 trigger014 007countpermonth 005CPM ... YMD YMD2 year month day HMS hour minutes second datetime
0 SED_AT_MARS_5min_Ext_240620-103701.jpg 0.406569 NaN NaN NaN NaN NaN NaN NaN NaN ... 240620 20240620 2024 06 20 103701 10 37 01 2024-06-20 10:37:00
1 SED_AT_MARS_5min_Ext_240620-114507.jpg 0.489784 NaN NaN NaN NaN NaN NaN NaN NaN ... 240620 20240620 2024 06 20 114507 11 45 07 2024-06-20 11:45:00
2 SED_AT_MARS_5min_Ext_240620-125316.jpg 0.402797 NaN NaN NaN NaN NaN NaN NaN NaN ... 240620 20240620 2024 06 20 125316 12 53 16 2024-06-20 12:53:00
3 SED_AT_MARS_5min_Ext_240620-140106.jpg 0.264394 NaN NaN NaN NaN NaN NaN NaN NaN ... 240620 20240620 2024 06 20 140106 14 01 06 2024-06-20 14:01:00
4 SED_AT_MARS_5min_Ext_240620-150916.jpg 0.737178 NaN NaN NaN NaN NaN NaN NaN NaN ... 240620 20240620 2024 06 20 150916 15 09 16 2024-06-20 15:09:00

5 rows × 28 columns

In [51]:
atn_test_data['datetemp'] = atn_test_data['file_name'].str.split('_').str[-1]
atn_test_data['collect_time'] = atn_test_data['file_name'].str.split('_').str[-3]
#year month date
atn_test_data['YMD'] = atn_test_data['datetemp'].str.split('-').str[-2]
atn_test_data['YMD'] = atn_test_data['YMD'].astype(int)

#Year is YY but want YYYY. Add "20" to left of integer by adding 20000000
atn_test_data['YMD2'] = atn_test_data['YMD']+20000000
atn_test_data['YMD2'] = atn_test_data['YMD2'].astype(str)
atn_test_data['year'] =atn_test_data["YMD2"].str[:4] 
atn_test_data['month'] = atn_test_data["YMD2"].str[4:6] 
atn_test_data['day']=  atn_test_data["YMD2"].str[6:]

atn_test_data['HMS'] = atn_test_data['datetemp'].str.split('-').str[-1]
#remove .jpg
atn_test_data["HMS"] = atn_test_data["HMS"].str[:-4] 
#can't convert to int because removes zeroes on left

atn_test_data['hour'] =atn_test_data["HMS"].str[:2] 
atn_test_data['minutes'] = atn_test_data["HMS"].str[2:4] 
atn_test_data['second']=  atn_test_data["HMS"].str[4:]

atn_test_data['datetime'] = pd.to_datetime(atn_test_data[['year','month','day', 'hour', 'minutes']], format="%Y-%m-%d %H:%M")

#sort by datetime
atn_test_data_sorted = atn_test_data.sort_values(by='datetime')

atn_test_data_sorted.set_index('datetime')
Out[51]:
file_name atn_og rm150 diff trigger007 trigger005 trigger011 trigger014 007countpermonth 005CPM ... collect_time YMD YMD2 year month day HMS hour minutes second
datetime
2024-06-20 10:37:00 SED_AT_MARS_5min_Ext_240620-103701.jpg 0.406569 NaN NaN NaN NaN NaN NaN NaN NaN ... 5min 240620 20240620 2024 06 20 103701 10 37 01
2024-06-20 11:45:00 SED_AT_MARS_5min_Ext_240620-114507.jpg 0.489784 NaN NaN NaN NaN NaN NaN NaN NaN ... 5min 240620 20240620 2024 06 20 114507 11 45 07
2024-06-20 12:53:00 SED_AT_MARS_5min_Ext_240620-125316.jpg 0.402797 NaN NaN NaN NaN NaN NaN NaN NaN ... 5min 240620 20240620 2024 06 20 125316 12 53 16
2024-06-20 14:01:00 SED_AT_MARS_5min_Ext_240620-140106.jpg 0.264394 NaN NaN NaN NaN NaN NaN NaN NaN ... 5min 240620 20240620 2024 06 20 140106 14 01 06
2024-06-20 15:09:00 SED_AT_MARS_5min_Ext_240620-150916.jpg 0.737178 NaN NaN NaN NaN NaN NaN NaN NaN ... 5min 240620 20240620 2024 06 20 150916 15 09 16
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2024-09-18 06:05:00 SED_AT_MARS_5min_Ext_240918-060530.jpg 0.205313 0.276795 -0.000342 0.0 0.0 0.0 0.0 NaN NaN ... 5min 240918 20240918 2024 09 18 060530 06 05 30
2024-09-18 07:20:00 SED_AT_MARS_5min_Ext_240918-072015.jpg 0.151753 0.277013 0.000219 0.0 0.0 0.0 0.0 NaN NaN ... 5min 240918 20240918 2024 09 18 072015 07 20 15
2024-09-18 08:34:00 SED_AT_MARS_5min_Ext_240918-083424.jpg 0.554431 0.279544 0.002531 0.0 0.0 0.0 0.0 NaN NaN ... 5min 240918 20240918 2024 09 18 083424 08 34 24
2024-09-18 09:47:00 SED_AT_MARS_5min_Ext_240918-094710.jpg 0.020617 0.278050 -0.001494 0.0 0.0 0.0 0.0 NaN NaN ... 5min 240918 20240918 2024 09 18 094710 09 47 10
2024-09-18 11:01:00 SED_AT_MARS_5min_Ext_240918-110116.jpg -0.070835 0.276558 -0.001492 0.0 0.0 0.0 0.0 NaN NaN ... 5min 240918 20240918 2024 09 18 110116 11 01 16

1855 rows × 27 columns

In [47]:
atn_test_data_sorted.head()
Out[47]:
file_name atn_og rm150 diff trigger007 trigger005 trigger011 trigger014 007countpermonth 005CPM ... day HMS hour minutes second datetime Trigger0.005 Trigger0.007 Trigger0.011 Trigger0.014
0 SED_AT_MARS_5min_Ext_240620-103701.jpg 0.406569 NaN NaN NaN NaN NaN NaN NaN NaN ... 20 103701 10 37 01 2024-06-20 10:37:00 WaitSlope WaitSlope SpinalTap DoubldBond
1 SED_AT_MARS_5min_Ext_240620-114507.jpg 0.489784 NaN NaN NaN NaN NaN NaN NaN NaN ... 20 114507 11 45 07 2024-06-20 11:45:00 WaitSlope WaitSlope SpinalTap DoubldBond
2 SED_AT_MARS_5min_Ext_240620-125316.jpg 0.402797 NaN NaN NaN NaN NaN NaN NaN NaN ... 20 125316 12 53 16 2024-06-20 12:53:00 WaitSlope WaitSlope SpinalTap DoubldBond
3 SED_AT_MARS_5min_Ext_240620-140106.jpg 0.264394 NaN NaN NaN NaN NaN NaN NaN NaN ... 20 140106 14 01 06 2024-06-20 14:01:00 WaitSlope WaitSlope SpinalTap DoubldBond
4 SED_AT_MARS_5min_Ext_240620-150916.jpg 0.737178 NaN NaN NaN NaN NaN NaN NaN NaN ... 20 150916 15 09 16 2024-06-20 15:09:00 WaitSlope WaitSlope SpinalTap DoubldBond

5 rows × 32 columns

In [23]:
FirstGear = 0.005
BondTrigger = 0.007
SpinalTap = 0.011
DoubldBond = 0.014
In [53]:
gears = [FirstGear, BondTrigger, SpinalTap, DoubldBond]
print(gears)
[0.005, 0.007, 0.011, 0.014]
In [55]:
geartriggers = []
for i in gears:
    geartriggers.append('Trigger'+str(i))

print(geartriggers)
['Trigger0.005', 'Trigger0.007', 'Trigger0.011', 'Trigger0.014']
In [61]:
atn_test_data_sorted["Trigger005"] = np.where(atn_test_data_sorted['diff'] >= FirstGear, 'FirstGear', 'WaitSlope')
atn_test_data_sorted["Trigger007"] = np.where(atn_test_data_sorted['diff'] >= BondTrigger, 'BondTrigger', 'WaitSlope')
atn_test_data_sorted["Trigger011"] = np.where(atn_test_data_sorted['diff'] >= BondTrigger, 'SpinalTap', 'WaitSlope')
atn_test_data_sorted["Trigger014"] = np.where(atn_test_data_sorted['diff'] >= BondTrigger, 'DoubldBond', 'WaitSlope')
In [63]:
ratespan = '10 days'

atn_test_data_sorted["Rate005"] = (atn_test_data_sorted['Trigger005'] == 'FirstGear').rolling(953, min_periods=2).sum()
atn_test_data_sorted["Rate007"] = (atn_test_data_sorted['Trigger007'] == 'BondTrigger').rolling(953, min_periods=2).sum()
atn_test_data_sorted["Rate011"] = (atn_test_data_sorted['Trigger011'] == 'SpinalTap').rolling(953, min_periods=2).sum()
atn_test_data_sorted["Rate014"] = (atn_test_data_sorted['Trigger014'] == 'DoubldBond').rolling(953, min_periods=2).sum()
In [65]:
atn_test_data_sorted['max_rate005'] = atn_test_data_sorted['Trigger005'].cummax()
atn_test_data_sorted['max_rate007'] = atn_test_data_sorted['Trigger007'].cummax()
atn_test_data_sorted['max_rate011'] = atn_test_data_sorted['Trigger011'].cummax()
atn_test_data_sorted['max_rate-14'] = atn_test_data_sorted['Trigger014'].cummax()