Script optimize_LSTM_emulator.py can either train an LSTM emulator with a predefined hyperparameter set, or optimize hyperparameters from a hyperparameter space given in the code inside the "objective" function. The script performs 5 trainings, one for each fold, in order to perform cross validation and saves the trained weights to a defined directory. Script NUTS_calibration.py calibrates the emulator using the NUTS algorithm against data from the given sites and years. The paths to scalers, and trained state of the NN-model, which are defined in the training/optimizing script, should be inserted in the code (scaler_X_file, scaler_y_file, ckpt_dir). Examples for running optimize_LSTM_emulator.py: When training a network with known hyperparameters: python3 optimize_LSTM_emulator.py --train_data='data_folder_with_all_folds/training_data_fold_{}.parquett' train --LSTM_size=100 --dense1_size=100 --dense2_size=None --dense3_size=100 --dropout_rate=0 --batch_size=10 --learning_rate=0.01 --number_epochs=100 When optimizing the network with predefined hyperparameter space, defined in the script: python3 optimize_LSTM_emulator.py --train_data='data_folder_with_all_folds/training_data_fold_{}.parquet' optimize --number_trials=10 Example for running NUTS_calibration.py: NUTS_calibration.py --sites qvidja ruukki --years "2, 3", "0, 1" Where the model is calibrated against data from third (20-21) and fourth (21-22) year of the Qvidja data and first (20-21) and second (21-22) year of the Ruukki data.