In [ ]:
# Reload when code changed:
%load_ext autoreload
%autoreload 2
%pwd
import os
import sys
path = "../"
sys.path.append(path)
#os.path.abspath("../")
print(os.path.abspath(path))
In [ ]:
import pandas as pd
import numpy as np
import json
import timeit
import time
import core
import importlib
importlib.reload(core)
import logging
importlib.reload(core)
try:
logging.shutdown()
importlib.reload(logging)
except:
pass
from event_handler import EventHandler
print(core.__file__)
pd.__version__
In [ ]:
root_directory = 'D:/github/ekostat_calculator'#"../" #os.getcwd()
workspace_directory = root_directory + '/workspaces'
resource_directory = root_directory + '/resources'
#alias = 'lena'
user_id = 'test_user' #kanske ska vara off_line user?
workspace_alias = 'Arnold_1'
In [ ]:
print(root_directory)
paths = {'user_id': user_id,
'workspace_directory': root_directory + '/workspaces',
'resource_directory': root_directory + '/resources',
'log_directory': 'D:/github' + '/log',
'test_data_directory': 'D:/github' + '/test_data'}
In [ ]:
t0 = time.time()
ekos = EventHandler(**paths)
#request = ekos.test_requests['request_workspace_list']
#response = ekos.request_workspace_list(request)
#ekos.write_test_response('request_workspace_list', response)
print('-'*50)
print('Time for request: {}'.format(time.time()-t0))
# OLD: ekos = EventHandler(root_directory)
In [ ]:
##### BEHÖVS BARA FÖRSTA GÅNGEN FÖR ATT SKAPA WORKSPACE #######
ekos.copy_workspace(source_uuid='default_workspace', target_alias=workspace_alias)
In [ ]:
ekos.print_workspaces()
In [ ]:
workspace_uuid = ekos.get_unique_id_for_alias(workspace_alias = workspace_alias)
print(workspace_uuid)
In [ ]:
workspace_alias = ekos.get_alias_for_unique_id(workspace_unique_id = workspace_uuid)
In [ ]:
ekos.load_workspace(unique_id = workspace_uuid)
In [ ]:
ekos.import_default_data(workspace_alias = workspace_alias)
In [ ]:
#ekos.get_workspace(unique_id = workspace_uuid, alias = workspace_alias).delete_alldata_export()
In [ ]:
ekos.load_data(unique_id = workspace_uuid)
In [ ]:
w = ekos.get_workspace(unique_id = workspace_uuid)
len(w.data_handler.get_all_column_data_df())
### Om "rätt" DATA så bör len bli 10694
In [ ]:
len(w.data_handler.all_data.VISS_EU_CD.unique())
#403
In [ ]:
# Only need to set filter first time you run workspace. Afterwards only if yo want to change it
w.get_data_filter_object(step=0).set_include_list_filter(filter_name = 'STATN', filter_list = [])
In [ ]:
w.get_data_filter_object(step=0).include_list_filter
In [ ]:
w.get_data_filter_object(step=0).exclude_list_filter
In [ ]:
w.apply_data_filter(step = 0) # This sets the first level of data filter in the IndexHandler
In [ ]:
ekos.copy_subset(workspace_uuid=workspace_uuid,
subset_source_uuid='default_subset',
subset_target_alias='B')
In [ ]:
subset_uuid = ekos.get_unique_id_for_alias(workspace_alias = workspace_alias, subset_alias = 'B')
print('My subsets:', w.get_subset_list())
f1 = w.get_data_filter_object(subset = subset_uuid, step=1)
print('Apply filters:', f1.include_list_filter)
In [ ]:
w.apply_data_filter(subset = subset_uuid, step = 1)
df_step1 = w.get_filtered_data(step = 1, subset = subset_uuid)
#df_step1[['SDATE', 'YEAR', 'MONTH', 'POSITION', 'VISS_EU_CD', 'WATER_TYPE_AREA', 'DEPH', 'MNDEP', 'MXDEP','BQIm']].dropna(subset = ['BQIm'])
In [ ]:
print(w.get_filtered_data(step = 1, subset = subset_uuid).columns)
In [ ]:
#### check that ref settings are in place
w.get_step_object(step = 2, subset = subset_uuid).indicator_ref_settings
In [ ]:
indicator_list = w.get_available_indicators(subset= subset_uuid, step=2)
In [ ]:
indicator_list
In [ ]:
wb_list = df_step1.VISS_EU_CD.unique()
print('number of waterbodies in step 1: {}'.format(len(wb_list)))
typeA_list = [row.split('-')[0].strip().lstrip('0') for row in df_step1.WATER_TYPE_AREA.unique()]
print('number of type areas in step 1: {}'.format(len(typeA_list)))
In [ ]:
test_wb = ['SE584340-174401',
'SE581700-113000',
'SE654470-222700',
'SE570900-121060',
'SE633000-195000',
'SE625000-180075',
'SE601440-184000',
'SE612791-171130',
'SE572072-115880',
'SE582147-111771',
'SE572227-115662',
'SE580688-114860',
'SE575500-113750',
'SE591400-183200','SE575370-164220', 'SE573940-163560', 'SE565400-163600', 'SE570080-163430', 'SE565800-163000', 'SE570340-163710', 'SE570500-163750']
In [ ]:
#for wb in wb_list:
# try:
# print(w.mapping_objects['water_body'][wb])
# print('*************************************')
# except AttributeError:
# print('no match for {}'.format(wb))
# print('*************************************')
# continue
In [ ]:
#list(zip(typeA_list, df_step1.WATER_TYPE_AREA.unique()))
indicator_list = ['oxygen','bqi','din_winter','ntot_summer', 'ntot_winter', 'dip_winter', 'ptot_summer', 'ptot_winter', 'biov', 'chl', 'secchi']
for indicator in indicator_list:
w.apply_indicator_data_filter(step = 2,
subset = subset_uuid,
indicator = indicator)#,
# water_body_list = test_wb)
print(w.mapping_objects['water_body'][wb])
print('*************************************')
In [ ]:
w.get_filtered_data(subset = subset_uuid, step= 2, water_body = 'SE581700-113000', indicator = 'din_winter').head()
In [ ]:
w.index_handler.booleans['step_0'][subset_uuid]['step_1']['step_2'][test_wb[0]].keys()#['SE584340-174401'].keys()
In [ ]:
wb = test_wb[0]#'SE583926-161744' #typomr 22
#wb = 'SE654470-222700' #typomr 13
type_area = '2'#'01s - Västkustens inre kustvatten'
indicator = 'din_winter'
#w.index_handler.booleans['step_0'][subset_uuid]['step_1']['step_2'][type_area]['din_winter']['boolean']
In [ ]:
print(w.get_filtered_data(step = 2, subset = subset_uuid, water_body = wb, indicator = indicator).MONTH.unique())
print(w.get_filtered_data(step = 2, subset = subset_uuid, water_body = wb, indicator = indicator).DEPH.min(),
w.get_filtered_data(step = 2, subset = subset_uuid, water_body = wb, indicator = indicator).DEPH.max())
print(w.get_filtered_data(step = 2, subset = subset_uuid, water_body = wb, indicator = indicator).VISS_EU_CD.unique())
w.get_filtered_data(step = 2, subset = subset_uuid, water_body = wb).WATER_TYPE_AREA.unique()
In [ ]:
w.get_filtered_data(step = 2, subset = subset_uuid, indicator = 'secchi', water_body = 'SE591400-183200').dropna(subset = ['SECCHI']).drop_duplicates(subset = ['SDATE', 'VISS_EU_CD', 'SECCHI'])[['SDATE','VISS_EU_CD','SECCHI','DEPH']]
In [ ]:
w.mapping_objects['quality_element'].cfg['indicators']
[item.strip() for item in w.mapping_objects['quality_element'].cfg['indicators'].loc[indicator][0].split(', ')]
In [ ]:
w.get_step_object(step = 3, subset = subset_uuid).indicator_setup(subset_unique_id = subset_uuid)
#, indicator_list = ['din_winter', 'dip_winter']
In [ ]:
w.get_step_object(step = 3, subset = subset_uuid).mapping_objects['water_body'].get_type_area_for_water_body('SE574050-114780', include_suffix=True)
In [ ]:
w.get_step_object(step = 3, subset = subset_uuid).calculate_status(indicator_list = ['secchi'])