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()