Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compiles for me #3

Open
wants to merge 28 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
e23e615
Test for option parsing, some works.
Nov 27, 2018
353fc01
Merge github.com:AndreyAgeev/SSM_2018
Dec 5, 2018
2817c87
Better tab output
Dec 5, 2018
e7919e8
Change pp formula to 2.0/15.0
Dec 7, 2018
39c9546
Merge github.com:AndreyAgeev/SSM_2018
mackoel Dec 14, 2018
b7e8a81
Merge github.com:AndreyAgeev/SSM_2018
mackoel Jan 11, 2019
f91b58d
Merge branch 'master' of github.com:AndreyAgeev/SSM_2018
mackoel Mar 20, 2019
f10e4d8
Edited nlreg, see comments
mackoel Mar 20, 2019
aabbbd0
Builds now
mackoel Mar 21, 2019
3af8e4a
Merge branch 'master' of github.com:AndreyAgeev/SSM_2018
mackoel Mar 27, 2019
46ee103
Compiles
mackoel Mar 27, 2019
95ae4d0
Correctly reads data
mackoel Mar 27, 2019
adcc6a3
Fixed printing in nlreg
mackoel Mar 27, 2019
be42a85
Added max beta
mackoel Mar 27, 2019
1cc312a
Changed behaviour to return when finished
mackoel Mar 27, 2019
6744c10
Update parametrs.h
AndreyAgeev Mar 27, 2019
1c1ae07
Merge branch 'master' of github.com:AndreyAgeev/SSM_2018
mackoel Mar 27, 2019
ae17756
Merge branch 'master' of github.com:mackoel/SSM_2018
mackoel Mar 27, 2019
c7787c5
Fixed comparison of cbd
mackoel Mar 27, 2019
6d19500
Merge github.com:AndreyAgeev/SSM_2018
mackoel Mar 28, 2019
7442cfc
Added needed options and also added them to parame struct
mackoel Mar 28, 2019
1964253
Merge branch 'master' of github.com:AndreyAgeev/SSM_2018
mackoel Apr 3, 2019
93e8b59
Changed behaviour to read all params from ini file
mackoel Apr 3, 2019
e730ebe
Merge branch 'master' of github.com:AndreyAgeev/SSM_2018
mackoel Apr 3, 2019
e876678
Merge branch 'master' of github.com:AndreyAgeev/SSM_2018
mackoel Jul 20, 2021
af4a3e8
Added script in Python that combines several models
mackoel Jul 22, 2021
56cec04
Open file with summary and daily output in std:ios:trunc mode
mackoel Jul 27, 2021
d7b9249
Added an option to limit maximum error
mackoel Jul 27, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Open file with summary and daily output in std:ios:trunc mode
  • Loading branch information
mackoel committed Jul 27, 2021
commit 56cec04aef81315f87ec8d06cce56e103bde1a4c
9 changes: 6 additions & 3 deletions model.h
Original file line number Diff line number Diff line change
Expand Up @@ -1159,10 +1159,12 @@ class Model : public QObject
}
void DailyPrintOut(void)
{
out.open(param.func_file_name.toStdString() + "_" + "daily_output.txt", std::ios::app);
if (write_check == false) {
out.open(param.func_file_name.toStdString() + "_" + "daily_output.txt", std::ios::trunc);
out << "GEO_ID= " << "NSAM= " << "ROW= " << "YEARS= " << "DOY= " << "DAP= " << "TMP= " << "DTT= " << "CBD= " << "rhs_EM= " << "rhs_R1= " << "rhs_R3= " << "rhs_R5= " << "rhs_R7= " << "rhs_R8= " << "MSNN= " << "GLAI= " << "DLAI= " << "LAI= " << "TCFRUE= " << "FINT= " << "DDMP= " << "GLF= " << "GST= " << "SGR= " << "WLF= " << "WST= " << "WVEG= " << "WGRN= " << "WTOP= " << "DEPORT= " << "RAIN= " << "IRGW= " << "RUNOF= " << "PET= " << "SEVP= " << "TR= " << "ATSW= " << "FTSW= " << "CRAIN= " << "CIRGW= " << "IRGNO= " << "CRUNOF= " << "CE= " << "CTR= " << "WSTORG= " << "NUP= " << "NLF= " << "NST= " << "NVEG= " << "NGRN= " << "CNUP= " << "MAT= " << endl;
write_check = true;
} else {
out.open(param.func_file_name.toStdString() + "_" + "daily_output.txt", std::ios::app);
}
out << data.data_a5.geo_id[NSAM] << " ";
out << NSAM << " ";
Expand Down Expand Up @@ -1223,11 +1225,12 @@ class Model : public QObject

void SummaryPrintOut(double s_error_EM, double s_error_R1, double s_error_R3, double s_error_R5, double s_error_R7, double s_error_R8, double training_error_EM, double training_error_R1, double training_error_R3, double training_error_R5, double training_error_R7, double training_error_R8)
{
out_s.open(param.func_file_name.toStdString() + "_" + "output_summary.txt", std::ios::app);

if (write_check_summary == false) {
out_s.open(param.func_file_name.toStdString() + "_" + "output_summary.txt", std::ios::trunc);
out_s << "NSAM;" << "NAME;" << "dtEM;" << "event_day_EM;" << "dtR1;" << "event_day_R1;" << "dtR3;" << "event_day_R3;" << "dtR5;" << "event_day_R5;" << "dtR7;" << "event_day_R7;" << "dtR8;" << "event_day_R8;" << "cbdEM;" << "bdEM;" << "cbdR1;" << "bdR1;" << "cbdR3;" << "bdR3;" << "cbdR5;" << "bdR5;" << "cbdR7;" << "bdR7;" << "cbdR8;" << "bdR8;" << "s_error_EM;" << "s_error_R1;" << "s_error_R3;" << "s_error_R5;" << "s_error_R7;" << "s_error_R8;" << "training_error_EM;" << "training_error_R1;" << "training_error_R3;" << "training_error_R5;" << "training_error_R7;" << "training_error_R8;" << endl;
write_check_summary = true;
} else {
out_s.open(param.func_file_name.toStdString() + "_" + "output_summary.txt", std::ios::app);
}
out_s << NSAM <<';'<< data.data_a5.species[NSAM] << ';' << dtEM << ';' << data.data_a5.response_EM[NSAM] <<';' << dtR1 << ';' << data.data_a5.response_R1[NSAM] << ';' << dtR3 <<';' << data.data_a5.response_R3[NSAM] << ';' << dtR5 << ';' << data.data_a5.response_R5[NSAM] << ';' << dtR7 << ';' << data.data_a5.response_R7[NSAM] << ';' << dtR8 << ';' << data.data_a5.response_R8[NSAM] << ';' << cbdEM << ';' << bdEM << ';' << cbdR1 << ';' << bdR1 << ';' << cbdR3 <<';' << bdR3 <<';' << cbdR5 << ';' << bdR5 << ';' << cbdR7 << ';' << bdR7 <<';' << cbdR8 << ';' << bdR8 << ';' << s_error_EM << ';' << s_error_R1 << ';' << s_error_R3 << ';' << s_error_R5 <<';' << s_error_R7 <<';' << s_error_R8 << ';' << training_error_EM << ';' << training_error_R1 << ';' << training_error_R3 << ';' << training_error_R5 << ';' << training_error_R7 << ';' << training_error_R8 << ';' << endl;
out_s.close();
Expand Down
42 changes: 32 additions & 10 deletions ssm_stacked
Original file line number Diff line number Diff line change
Expand Up @@ -3,40 +3,62 @@
import os, sys
import numpy as np
import pandas as pd

from math import sqrt

def run_ssm_once(N, L, samples_nm, features_nm, log_deeps):
cmd_str = 'ssm -G 0 -C 1 -A 1 -P 1 -T 1' + ' -N' + str(N) + ' -L' + str(L) + ' -R 1 -l 3.453 -D 230 -s 0.75 -i 1 -d 60 -w 15 -f 15 -m 2 -r 0.5 -t 900 -q 200 -z 0.13 -x 79 -c 0.5 -b 0.36 -k 0.264 -E 0.13 -j 1 -a 1 -o 3 -U 6 ' + samples_nm + ' ' + features_nm + ' ' + log_deeps
print(cmd_str)
# os.system(cmd_str)
os.system(cmd_str)
summary_nm = log_deeps + '_output_summary.txt'
return (summary_nm)

def aggregate_stack(res_tabs):
stack_tab = pd.read_csv(res_tabs[0], sep=';')
for j in range(2, len(res_tabs)):
def aggregate_stack(res_tabs, max_max):
stack_tab = []
list_of_models = []
kounter = 0
for j in range(0, len(res_tabs)):
cur_tab = pd.read_csv(res_tabs[j], sep=';')
stack_tab['dtR1'] = stack_tab['dtR1'] + cur_tab['dtR1']
stack_tab['dtR1'] = stack_tab['dtR1']/len(res_tabs)
return(stack_tab)
y_data = cur_tab['event_day_R1'].to_numpy()
y_model = cur_tab['dtR1'].to_numpy()
err_corr = np.corrcoef(y_data, y_model)[0, 1]
err_max = np.max(abs(y_data - y_model))
print(str(j) + ' ' + 'correlation:' + str(err_corr) + ' ' + 'maximum:' + str(err_max) + ' ' + 'argmax:' + str(np.argmax(abs(y_data - y_model))))
if (err_max < 60):
list_of_models.append(j)
kounter += 1
if (kounter == 1):
stack_tab = cur_tab
if (kounter > 1):
stack_tab['dtR1'] = stack_tab['dtR1'] + cur_tab['dtR1']
# for j in range(2876):
# print(str(j) + ' ' + stack_tab['dtR1'][j])
# tmp = int(stack_tab['dtR1'][j])/len(res_tabs)
# print(tmp)
# print(len(list_of_models))
# print(stack_tab.head())
stack_tab['dtR1'] = stack_tab['dtR1']/len(list_of_models)
# print(stack_tab.head())
return(stack_tab, list_of_models)

if __name__ == "__main__":
samples_nm = sys.argv[1]
features_nm = sys.argv[2]
log_deeps_list_nm = sys.argv[3]
max_max = float(sys.argv[4])
res_tabs = []
with open(log_deeps_list_nm) as f:
for line in f:
line_tk = line.split(",")
res_tab = run_ssm_once(int(line_tk[1]), int(line_tk[2]), samples_nm, features_nm, line_tk[0])
res_tabs.append(res_tab)
stack_tab = aggregate_stack(res_tabs)
stack_tab, list_of_models = aggregate_stack(res_tabs, max_max)
stack_tab.to_csv(log_deeps_list_nm + '_stack_output.csv')
y_data = stack_tab['event_day_R1'].to_numpy()
y_model = stack_tab['dtR1'].to_numpy()
print(list_of_models)
print('correlation=' + str(np.corrcoef(y_data, y_model)[0, 1]))
print('maximum=' + str(np.max(abs(y_data - y_model))))
print('average=' + str(np.mean(abs(y_data - y_model))))
print('median=' + str(np.median(abs(y_data - y_model))))
print('minimum=' + str(np.min(abs(y_data - y_model))))
print('rms=' + str(np.square(y_data - y_model).mean()))
print('rms=' + str(sqrt(np.square(y_data - y_model).mean())))