puqi commited on
Commit
bea3bac
·
1 Parent(s): 2e37859

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +70 -9
app.py CHANGED
@@ -19,16 +19,23 @@ st.title('A _Quickstart Notebook_ for :blue[ClimSim]:')
19
  st.link_button("ClimSim", "https://huggingface.co/datasets/LEAP/subsampled_low_res/tree/main",use_container_width=True)
20
  st.header('**Step 1:** Import data_utils')
21
  st.code('''from data_utils import *''',language='python')
22
- st.header('**Step 2:** Instantiate class')
23
- st.header('**Step 3:** Load training and validation data')
24
-
25
- st.header('**Step 4:** Train models')
26
- st.subheader('Train constant prediction model')
27
- st.link_button("Go to Original Dataset", "https://huggingface.co/datasets/LEAP/subsampled_low_res/tree/main",,use_container_width=True)
28
-
29
 
 
 
 
 
 
 
 
30
 
 
 
 
 
 
 
31
 
 
32
  grid_info = xr.open_dataset('ClimSim_low-res_grid-info.nc')
33
  input_mean = xr.open_dataset('input_mean.nc')
34
  input_max = xr.open_dataset('input_max.nc')
@@ -43,19 +50,74 @@ data = data_utils(grid_info = grid_info,
43
 
44
  data.set_to_v1_vars()
45
 
 
 
 
 
 
 
 
46
  data.input_train = data.load_npy_file('train_input_small.npy')
47
  data.target_train = data.load_npy_file('train_target_small.npy')
48
  data.input_val = data.load_npy_file('val_input_small.npy')
49
  data.target_val = data.load_npy_file('val_target_small.npy')
50
 
51
 
 
 
 
 
52
  const_model = data.target_train.mean(axis = 0)
 
 
 
 
 
 
 
 
53
  X = data.input_train
54
  bias_vector = np.ones((X.shape[0], 1))
55
  X = np.concatenate((X, bias_vector), axis=1)
 
 
 
 
 
56
  mlr_weights = np.linalg.inv(X.transpose()@X)@X.transpose()@data.target_train
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  data.set_pressure_grid(data_split = 'val')
58
 
 
59
  const_pred_val = np.repeat(const_model[np.newaxis, :], data.target_val.shape[0], axis = 0)
60
  print(const_pred_val.shape)
61
 
@@ -63,6 +125,7 @@ print(const_pred_val.shape)
63
  X_val = data.input_val
64
  bias_vector_val = np.ones((X_val.shape[0], 1))
65
  X_val = np.concatenate((X_val, bias_vector_val), axis=1)
 
66
  mlr_pred_val = X_val@mlr_weights
67
  print(mlr_pred_val.shape)
68
 
@@ -73,13 +136,11 @@ data.model_names = ['const', 'mlr'] # add names of your models here
73
  preds = [const_pred_val, mlr_pred_val] # add your custom predictions here
74
  data.preds_val = dict(zip(data.model_names, preds))
75
 
76
-
77
  data.reweight_target(data_split = 'val')
78
  data.reweight_preds(data_split = 'val')
79
  data.metrics_names = ['MAE', 'RMSE', 'R2', 'bias']
80
  data.create_metrics_df(data_split = 'val')
81
 
82
-
83
  letters = string.ascii_lowercase
84
 
85
  # create custom dictionary for plotting
 
19
  st.link_button("ClimSim", "https://huggingface.co/datasets/LEAP/subsampled_low_res/tree/main",use_container_width=True)
20
  st.header('**Step 1:** Import data_utils')
21
  st.code('''from data_utils import *''',language='python')
 
 
 
 
 
 
 
22
 
23
+ st.header('**Step 2:** Instantiate class')
24
+ st.code('''#Change the path to your own
25
+ grid_info = xr.open_dataset('ClimSim_low-res_grid-info.nc')
26
+ input_mean = xr.open_dataset('input_mean.nc')
27
+ input_max = xr.open_dataset('input_max.nc')
28
+ input_min = xr.open_dataset('input_min.nc')
29
+ output_scale = xr.open_dataset('output_scale.nc')
30
 
31
+ data = data_utils(grid_info = grid_info,
32
+ input_mean = input_mean,
33
+ input_max = input_max,
34
+ input_min = input_min,
35
+ output_scale = output_scale)
36
+ data.set_to_v1_vars()''',language='python')
37
 
38
+ #Change the path to your own
39
  grid_info = xr.open_dataset('ClimSim_low-res_grid-info.nc')
40
  input_mean = xr.open_dataset('input_mean.nc')
41
  input_max = xr.open_dataset('input_max.nc')
 
50
 
51
  data.set_to_v1_vars()
52
 
53
+
54
+ st.header('**Step 3:** Load training and validation data')
55
+ st.code('''data.input_train = data.load_npy_file('train_input_small.npy')
56
+ data.target_train = data.load_npy_file('train_target_small.npy')
57
+ data.input_val = data.load_npy_file('val_input_small.npy')
58
+ data.target_val = data.load_npy_file('val_target_small.npy')''',language='python')
59
+
60
  data.input_train = data.load_npy_file('train_input_small.npy')
61
  data.target_train = data.load_npy_file('train_target_small.npy')
62
  data.input_val = data.load_npy_file('val_input_small.npy')
63
  data.target_val = data.load_npy_file('val_target_small.npy')
64
 
65
 
66
+ st.header('**Step 4:** Train models')
67
+ st.subheader('Train constant prediction model')
68
+ st.code('''const_model = data.target_train.mean(axis = 0)''',language='python')
69
+
70
  const_model = data.target_train.mean(axis = 0)
71
+
72
+
73
+ st.subheader('Train multiple linear regression model')
74
+ st.text('adding bias unit')
75
+ st.code('''X = data.input_train
76
+ bias_vector = np.ones((X.shape[0], 1))
77
+ X = np.concatenate((X, bias_vector), axis=1)''',language='python')
78
+
79
  X = data.input_train
80
  bias_vector = np.ones((X.shape[0], 1))
81
  X = np.concatenate((X, bias_vector), axis=1)
82
+
83
+
84
+ st.text('create model')
85
+ st.code('''mlr_weights = np.linalg.inv(X.transpose()@X)@X.transpose()@data.target_train''',language='python')
86
+
87
  mlr_weights = np.linalg.inv(X.transpose()@X)@X.transpose()@data.target_train
88
+
89
+
90
+ st.subheader('Train your models here')
91
+ st.code('''###
92
+ # train your model here
93
+ ###''',language='python')
94
+
95
+ ###
96
+ # train your model here
97
+ ###
98
+
99
+
100
+ st.link_button("Go to Original Dataset", "https://huggingface.co/datasets/LEAP/subsampled_low_res/tree/main",use_container_width=True)
101
+
102
+ st.header('**Step 5:** Evaluate on validation data')
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
  data.set_pressure_grid(data_split = 'val')
119
 
120
+ # Constant Prediction
121
  const_pred_val = np.repeat(const_model[np.newaxis, :], data.target_val.shape[0], axis = 0)
122
  print(const_pred_val.shape)
123
 
 
125
  X_val = data.input_val
126
  bias_vector_val = np.ones((X_val.shape[0], 1))
127
  X_val = np.concatenate((X_val, bias_vector_val), axis=1)
128
+
129
  mlr_pred_val = X_val@mlr_weights
130
  print(mlr_pred_val.shape)
131
 
 
136
  preds = [const_pred_val, mlr_pred_val] # add your custom predictions here
137
  data.preds_val = dict(zip(data.model_names, preds))
138
 
 
139
  data.reweight_target(data_split = 'val')
140
  data.reweight_preds(data_split = 'val')
141
  data.metrics_names = ['MAE', 'RMSE', 'R2', 'bias']
142
  data.create_metrics_df(data_split = 'val')
143
 
 
144
  letters = string.ascii_lowercase
145
 
146
  # create custom dictionary for plotting