ML METHOD – FUNCTIONS

A data pipeline for sugar beet clamp temperature modelling – Functions

1 About

In this notebook, the functions used in the method used for building a model of sugar beet clamp temperature are described. The following custom functions included:

  1. sql_import:
  2. next

2 Method

2.1 Data import

sql_import

This function connects to a SQL database to import the required data. Currently, the function does not have any input arguments as the joins and selections are static within this project. The database is local, uses PostgreSQL, and is built from a PostgreSQL script (built in ATOM) and csv files in the directories /650.1-Clamp_statistical_model and /650.1-Clamp_statistical_model/Data/sql_csv/yrs respectively.

sql_import <- function(){
  con <- dbConnect(drv=PostgreSQL(), 
                 user="postgres", 
                 password="password",
                 host="localhost", 
                 port=5432, 
                 dbname="nbr_trials")

  #query the database and store the data in dataframe
  tb_data <- dbGetQuery(con, "SELECT * FROM data 
                      INNER JOIN metrics ON data.metric_id = metrics.id
                      INNER JOIN plots ON data.plot_id = plots.yr_series_trial_plot
                      INNER JOIN treatments ON plots.treatment_1_id = treatments.id
                      WHERE (metric_id = 1 OR metric_id = 2 OR metric_id = 3 OR metric_id = 4 OR metric_id = 8
                      OR metric_id = 9 OR metric_id = 10 OR metric_id = 11 OR metric_id = 12)
                      AND (treatment_1_id = 1 OR treatment_1_id = 4 OR treatment_1_id = 7);")

  dbDisconnect(con)   #disconnect from database
}
LS0tDQp0aXRsZTogIkEgZGF0YSBwaXBlbGluZSBmb3Igc3VnYXIgYmVldCBjbGFtcCB0ZW1wZXJhdHVyZSBtb2RlbGxpbmcgLSBGdW5jdGlvbnMiDQpvdXRwdXQ6DQogIGh0bWxfbm90ZWJvb2s6DQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgaHRtbF9kb2N1bWVudDoNCiAgICBkZl9wcmludDogcGFnZWQNCi0tLQ0KDQojIEFib3V0DQoNCkluIHRoaXMgbm90ZWJvb2ssIHRoZSBmdW5jdGlvbnMgdXNlZCBpbiB0aGUgbWV0aG9kIHVzZWQgZm9yIGJ1aWxkaW5nIGEgbW9kZWwgb2Ygc3VnYXIgYmVldCBjbGFtcCB0ZW1wZXJhdHVyZSBhcmUgZGVzY3JpYmVkLiBUaGUgZm9sbG93aW5nIGN1c3RvbSBmdW5jdGlvbnMgaW5jbHVkZWQ6IA0KDQoxLiBgc3FsX2ltcG9ydGA6IA0KMi4gYG5leHRgDQoNCiMgTWV0aG9kDQoNCiMjIERhdGEgaW1wb3J0DQpgc3FsX2ltcG9ydGANCg0KVGhpcyBmdW5jdGlvbiBjb25uZWN0cyB0byBhIFNRTCBkYXRhYmFzZSB0byBpbXBvcnQgdGhlIHJlcXVpcmVkIGRhdGEuIEN1cnJlbnRseSwgdGhlIGZ1bmN0aW9uIGRvZXMgbm90IGhhdmUgYW55IGlucHV0IGFyZ3VtZW50cyBhcyB0aGUgam9pbnMgYW5kIHNlbGVjdGlvbnMgYXJlIHN0YXRpYyB3aXRoaW4gdGhpcyBwcm9qZWN0LiBUaGUgZGF0YWJhc2UgaXMgbG9jYWwsIHVzZXMgUG9zdGdyZVNRTCwgYW5kIGlzIGJ1aWx0IGZyb20gYSBQb3N0Z3JlU1FMIHNjcmlwdCAoYnVpbHQgaW4gQVRPTSkgYW5kIGNzdiBmaWxlcyBpbiB0aGUgZGlyZWN0b3JpZXMgLzY1MC4xLUNsYW1wX3N0YXRpc3RpY2FsX21vZGVsIGFuZCAvNjUwLjEtQ2xhbXBfc3RhdGlzdGljYWxfbW9kZWwvRGF0YS9zcWxfY3N2L3lycyByZXNwZWN0aXZlbHkuDQoNCmBgYHtyfQ0Kc3FsX2ltcG9ydCA8LSBmdW5jdGlvbigpew0KICBjb24gPC0gZGJDb25uZWN0KGRydj1Qb3N0Z3JlU1FMKCksIA0KICAgICAgICAgICAgICAgICB1c2VyPSJwb3N0Z3JlcyIsIA0KICAgICAgICAgICAgICAgICBwYXNzd29yZD0icGFzc3dvcmQiLA0KICAgICAgICAgICAgICAgICBob3N0PSJsb2NhbGhvc3QiLCANCiAgICAgICAgICAgICAgICAgcG9ydD01NDMyLCANCiAgICAgICAgICAgICAgICAgZGJuYW1lPSJuYnJfdHJpYWxzIikNCg0KICAjcXVlcnkgdGhlIGRhdGFiYXNlIGFuZCBzdG9yZSB0aGUgZGF0YSBpbiBkYXRhZnJhbWUNCiAgdGJfZGF0YSA8LSBkYkdldFF1ZXJ5KGNvbiwgIlNFTEVDVCAqIEZST00gZGF0YSANCiAgICAgICAgICAgICAgICAgICAgICBJTk5FUiBKT0lOIG1ldHJpY3MgT04gZGF0YS5tZXRyaWNfaWQgPSBtZXRyaWNzLmlkDQogICAgICAgICAgICAgICAgICAgICAgSU5ORVIgSk9JTiBwbG90cyBPTiBkYXRhLnBsb3RfaWQgPSBwbG90cy55cl9zZXJpZXNfdHJpYWxfcGxvdA0KICAgICAgICAgICAgICAgICAgICAgIElOTkVSIEpPSU4gdHJlYXRtZW50cyBPTiBwbG90cy50cmVhdG1lbnRfMV9pZCA9IHRyZWF0bWVudHMuaWQNCiAgICAgICAgICAgICAgICAgICAgICBXSEVSRSAobWV0cmljX2lkID0gMSBPUiBtZXRyaWNfaWQgPSAyIE9SIG1ldHJpY19pZCA9IDMgT1IgbWV0cmljX2lkID0gNCBPUiBtZXRyaWNfaWQgPSA4DQogICAgICAgICAgICAgICAgICAgICAgT1IgbWV0cmljX2lkID0gOSBPUiBtZXRyaWNfaWQgPSAxMCBPUiBtZXRyaWNfaWQgPSAxMSBPUiBtZXRyaWNfaWQgPSAxMikNCiAgICAgICAgICAgICAgICAgICAgICBBTkQgKHRyZWF0bWVudF8xX2lkID0gMSBPUiB0cmVhdG1lbnRfMV9pZCA9IDQgT1IgdHJlYXRtZW50XzFfaWQgPSA3KTsiKQ0KDQogIGRiRGlzY29ubmVjdChjb24pICAgI2Rpc2Nvbm5lY3QgZnJvbSBkYXRhYmFzZQ0KfQ0KYGBgDQoNCiMgSGVhZGVyDQojIyBIZWFkZXINCiMjIyBIZWFkZXINCioqYm9sZCoqDQoqaXRhbGljKg0KwrRpbmxpbmUgY29kZcK0DQo8aHR0cHM6Ly93d3cubWVyYW4uc2U+DQoNCkFuZCBzb21lIExhVGVYICRcYWxwaGEgXGJldGEgXGdhbW1hJA0KDQo8IS0tIHlvdXIgY29tbWVudCAtLT4NCg0KPCEtLQ0KQSBwbG90IHRpdGxlDQpgYGB7ciBjYXJzLCBmaWcuY2FwID0gIkEgcGxvdCB0aXRsZSJ9DQpwbG90KGNhcnMpDQpgYGANCg0KQSBjcm9zc3JlZmVyZW5jZToNClNlZSBGaWd1cmUgXEByZWYoZmlnOmNhcnMtcGxvdCkuDQoNCmBgYHtyIGNhcnMtcGxvdCwgZmlnLmNhcD0iVGhlIGNhcnMgZGF0YS4iLCBlY2hvPUZBTFNFfQ0KcGFyKG1hciA9IGMoNCwgNCwgLjIsIC4xKSkNCnBsb3QoY2FycykgICMgYSBzY2F0dGVycGxvdA0KYGBgDQotLT4NCg==