library(rBayesianOptimization)
library(stats)
library(dplyr)
library(lme4)
library(ggplot2)
library(Metrics)

seeds <- read.csv("../input/google-cloud-ncaa-march-madness-2020-division-1-mens-tournament/MDataFiles_Stage1/MNCAATourneySeeds.csv")
regresults <- read.csv("../input/google-cloud-ncaa-march-madness-2020-division-1-mens-tournament/MDataFiles_Stage1/MRegularSeasonDetailedResults.csv")
results <- read.csv("../input/google-cloud-ncaa-march-madness-2020-division-1-mens-tournament/MDataFiles_Stage1/MNCAATourneyDetailedResults.csv")
sub <- read.csv("../input/google-cloud-ncaa-march-madness-2020-division-1-mens-tournament/MSampleSubmissionStage1_2020.csv")
seeds$Seed = as.numeric(substring(seeds$Seed,2,3))

### Collect regular season results - double the data by swapping team positions

r1 = regresults[, c("Season", "DayNum", "WTeamID", "WScore", "LTeamID", "LScore", "NumOT", "WFGA", "WAst", "WBlk", "LFGA", "LAst", "LBlk")]
r2 = regresults[, c("Season", "DayNum", "LTeamID", "LScore", "WTeamID", "WScore", "NumOT", "LFGA", "LAst", "LBlk", "WFGA", "WAst", "WBlk")]
names(r1) = c("Season", "DayNum", "T1", "T1_Points", "T2", "T2_Points", "NumOT", "T1_fga", "T1_ast", "T1_blk", "T2_fga", "T2_ast", "T2_blk")
names(r2) = c("Season", "DayNum", "T1", "T1_Points", "T2", "T2_Points", "NumOT", "T1_fga", "T1_ast", "T1_blk", "T2_fga", "T2_ast", "T2_blk")
regular_season = rbind(r1, r2)


### Collect tourney results - double the data by swapping team positions

t1 = results[, c("Season", "DayNum", "WTeamID", "LTeamID", "WScore", "LScore")] %>% mutate(ResultDiff = WScore - LScore)
t2 = results[, c("Season", "DayNum", "LTeamID", "WTeamID", "LScore", "WScore")] %>% mutate(ResultDiff = LScore - WScore)
names(t1) = c("Season", "DayNum", "T1", "T2", "T1_Points", "T2_Points", "ResultDiff")
names(t2) = c("Season", "DayNum", "T1", "T2", "T1_Points", "T2_Points", "ResultDiff")
tourney = rbind(t1, t2)


### Fit GLMM on regular season data (selected march madness teams only) - extract random effects for each team

march_teams = select(seeds, Season, Team = TeamID)
X =  regular_season %>% 
  inner_join(march_teams, by = c("Season" = "Season", "T1" = "Team")) %>% 
  inner_join(march_teams, by = c("Season" = "Season", "T2" = "Team")) %>% 
  select(Season, T1, T2, T1_Points, T2_Points, NumOT) %>% distinct()
X$T1 = as.factor(X$T1)
X$T2 = as.factor(X$T2)

quality = list()
for (season in unique(X$Season)) {
  glmm = glmer(I(T1_Points > T2_Points) ~  (1 | T1) + (1 | T2), data = X[X$Season == season & X$NumOT == 0, ], family = binomial) 
  random_effects = ranef(glmm)$T1
  quality[[season]] = data.frame(Season = season, Team_Id = as.numeric(row.names(random_effects)), quality = exp(random_effects[,"(Intercept)"]))
}
quality = do.call(rbind, quality)

### Regular season statistics

season_summary = 
  regular_season %>%
  mutate(win14days = ifelse(DayNum > 118 & T1_Points > T2_Points, 1, 0),
         last14days = ifelse(DayNum > 118, 1, 0)) %>% 
  group_by(Season, T1) %>%
  summarize(
    WinRatio14d = sum(win14days) / sum(last14days),
    PointsMean = mean(T1_Points),
    PointsMedian = median(T1_Points),
    PointsDiffMean = mean(T1_Points - T2_Points),
    FgaMean = mean(T1_fga), 
    FgaMedian = median(T1_fga),
    FgaMin = min(T1_fga), 
    FgaMax = max(T1_fga), 
    AstMean = mean(T1_ast), 
    BlkMean = mean(T1_blk), 
    OppFgaMean = mean(T2_fga), 
    OppFgaMin = min(T2_fga)  
  )

season_summary_X1 = season_summary
season_summary_X2 = season_summary
names(season_summary_X1) = c("Season", "T1", paste0("X1_",names(season_summary_X1)[-c(1,2)]))
names(season_summary_X2) = c("Season", "T2", paste0("X2_",names(season_summary_X2)[-c(1,2)]))


### Combine all features into a data frame

data_matrix =
  tourney %>% 
  left_join(season_summary_X1, by = c("Season", "T1")) %>% 
  left_join(season_summary_X2, by = c("Season", "T2")) %>%
  left_join(select(seeds, Season, T1 = TeamID, Seed1 = Seed), by = c("Season", "T1")) %>% 
  left_join(select(seeds, Season, T2 = TeamID, Seed2 = Seed), by = c("Season", "T2")) %>% 
  mutate(SeedDiff = Seed1 - Seed2) %>%
  left_join(select(quality, Season, T1 = Team_Id, quality_march_T1 = quality), by = c("Season", "T1")) %>%
  left_join(select(quality, Season, T2 = Team_Id, quality_march_T2 = quality), by = c("Season", "T2"))
names(data_matrix)

### Prepare xgboost 
features = setdiff(names(data_matrix), c("Season", "DayNum", "T1", "T2", "T1_Points", "T2_Points", "ResultDiff"))
allfeatures<-append(features,"ResultDiff")

data_matrix<-data_matrix %>% mutate_all(~ifelse(is.na(.), -999, .))
data_matrix$kfix<-c(1:nrow(data_matrix))
gpStdI<-function(data){
  prediction<-(  0.100000*tanh(((((data$Seed2) * (data$X2_FgaMin))) - (((pmax((data$X2_PointsMean), (((data$X1_OppFgaMin) * (data$Seed1))))) - ((-((data$X2_OppFgaMin)))))))) +
                 0.100000*tanh(((((-10.500000))) * ((((data$SeedDiff) + (ifelse(rep(1.,NROW(data))*(data$quality_march_T1 > data$SeedDiff),((-10.500000)),0)))/2.0)))) +
                 0.100000*tanh(((data$X1_PointsMean) + (((data$X2_FgaMax) + (((data$X1_FgaMean) * (((((data$X2_FgaMax) + (((((10.500000))) * ((-((data$SeedDiff)))))))) - (data$X1_PointsMean))))))))) +
                 0.100000*tanh(((((pmin(((-((data$SeedDiff)))), (((data$SeedDiff) * (((-14.0))))))) - (((data$X1_AstMean) - ((-((data$SeedDiff)))))))) - (((-14.0))))) +
                 0.100000*tanh(((data$X2_FgaMean) * (((ifelse(rep(1.,NROW(data))*(data$quality_march_T2 > data$quality_march_T1),((data$X2_FgaMin) * (((data$quality_march_T1) - (data$SeedDiff)))),0)) - (data$SeedDiff))))) +
                 0.100000*tanh((-((((data$Seed1) * (((((data$Seed1) * (((((data$Seed1) * (((data$Seed1) - (data$Seed2))))) - (data$Seed1))))) - (data$Seed1)))))))) +
                 0.100000*tanh((((-((ifelse(rep(1.,NROW(data))*(data$X1_FgaMean > -998),((data$X1_BlkMean) + (data$X1_BlkMean)),data$SeedDiff))))) * (pmin((((((1.239915))) + (data$SeedDiff))), (data$X2_PointsDiffMean))))) +
                 0.100000*tanh((((((10.0)) * ((-((data$SeedDiff)))))) + ((((10.0)) * ((-((data$quality_march_T2)))))))) +
                 0.100000*tanh(((data$SeedDiff) - (((((((((12.074242))) * (data$SeedDiff))) + (((((data$X2_BlkMean) * (data$X2_BlkMean))) - (((12.074242))))))) * 2.0)))) +
                 0.100000*tanh(((data$X2_FgaMean) + (((((data$X2_FgaMean) + ((((-((data$SeedDiff)))) * (data$X1_FgaMean))))) * (((79.250000))))))) +
                 0.100000*tanh(ifelse(rep(1.,NROW(data))*(data$SeedDiff <= -998),data$X1_AstMean,((data$X1_AstMean) * (((((data$SeedDiff) + (data$X1_FgaMin))) * ((-((((data$SeedDiff) + (data$quality_march_T2))))))))))) +
                 0.100000*tanh(((((((((((((((tanh((((data$SeedDiff) * 2.0)))) - (data$SeedDiff))) * 2.0)) * 2.0)) - ((-((data$SeedDiff)))))) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh((((data$X2_FgaMin) + (((((data$X1_FgaMin) * (((data$X1_FgaMin) * (((data$quality_march_T1) - (data$SeedDiff))))))) - (((data$quality_march_T1) - (data$SeedDiff))))))/2.0)) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(((data$X1_PointsDiffMean) - (data$X2_PointsDiffMean)) > pmin((pmin((data$quality_march_T2), ((-3.0)))), (((data$Seed1) - (data$X1_PointsDiffMean))))),data$Seed2,0)) - (data$Seed1))) +
                 0.100000*tanh(((data$X1_WinRatio14d) - (((data$SeedDiff) - (((data$X1_WinRatio14d) - ((((1.99983048439025879)) - (ifelse(rep(1.,NROW(data))*(pmin((data$Seed2), (data$SeedDiff)) > data$X1_WinRatio14d),(1.99983048439025879),0)))))))))) +
                 0.100000*tanh(((pmin((((((-12.0))) + (data$X2_AstMean))), (ifelse(rep(1.,NROW(data))*(data$quality_march_T1 > data$SeedDiff),data$X2_AstMean,0)))) - (((((data$SeedDiff) + (((0.964010))))) + (data$SeedDiff))))) +
                 0.100000*tanh(((data$X1_BlkMean) - (((data$X2_BlkMean) - (((data$X1_BlkMean) - (((data$X2_BlkMean) - (((data$SeedDiff) * ((-((data$Seed2)))))))))))))) +
                 0.100000*tanh(((((ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= ((1.239915))),ifelse(rep(1.,NROW(data))*(data$SeedDiff <= data$quality_march_T1),data$X2_BlkMean,0),0)) - (data$SeedDiff))) - (data$SeedDiff))) +
                 0.100000*tanh(((pmax((ifelse(rep(1.,NROW(data))*(data$SeedDiff <= ifelse(rep(1.,NROW(data))*(((3.881696)) <= data$X2_BlkMean),data$X1_PointsDiffMean,0)),((3.881696)),0)), (((data$X1_BlkMean) - (((3.881696))))))) - (((data$SeedDiff) * 2.0)))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= data$quality_march_T1),ifelse(rep(1.,NROW(data))*(((data$quality_march_T1) * (data$SeedDiff)) <= ((2.500000))),((((2.500000))) + (((2.500000)))),0),0)) - (data$SeedDiff))) +
                 0.100000*tanh(((data$X1_WinRatio14d) - ((((((data$SeedDiff) <= (data$X1_WinRatio14d))*1.)) - (((tanh((((((((data$X1_WinRatio14d) + (data$SeedDiff))) * 2.0)) * 2.0)))) - (data$SeedDiff))))))) +
                 0.100000*tanh(((((((14.0))) * (((((((data$X1_PointsDiffMean) - ((9.0)))) - (data$SeedDiff))) + (((data$X1_PointsDiffMean) - ((9.0)))))))) - (((data$SeedDiff) / 2.0)))) +
                 0.100000*tanh(((data$Seed2) - (ifelse(rep(1.,NROW(data))*(pmax((((13.500000))), (data$X2_PointsDiffMean)) > data$X1_PointsDiffMean),((data$X2_PointsDiffMean) - (((data$X1_PointsDiffMean) - (data$X2_PointsDiffMean)))),0)))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(data$SeedDiff <= ((data$Seed2) + (((data$Seed2) / 2.0)))),ifelse(rep(1.,NROW(data))*(data$X2_BlkMean > ((data$Seed2) / 2.0)),data$X2_OppFgaMean,0),0)) - (data$SeedDiff))) +
                 0.100000*tanh((-((((((data$SeedDiff) + (((pmin((data$X1_BlkMean), (((((15.763636))) - (((data$X1_BlkMean) + (data$X1_BlkMean))))))) + ((-(((-1.0))))))))) * 2.0))))) +
                 0.100000*tanh(((((((((((((((data$Seed2) - ((-2.0)))) - (data$SeedDiff))) * 2.0)) * 2.0)) * 2.0)) - (data$SeedDiff))) * 2.0)) +
                 0.100000*tanh((((((-((((((data$X1_BlkMean) / 2.0)) + (ifelse(rep(1.,NROW(data))*(((10.500000)) > data$SeedDiff),((((4.982759))) + (data$SeedDiff)),0))))))) * (data$X1_AstMean))) * (((5.647619))))) +
                 0.100000*tanh(((data$X2_BlkMean) - ((((data$SeedDiff) + ((((ifelse(rep(1.,NROW(data))*(((data$X1_PointsDiffMean) / 2.0) <= data$X2_BlkMean),data$SeedDiff,0)) + (((data$SeedDiff) - ((9.54454231262207031)))))/2.0)))/2.0)))) +
                 0.100000*tanh((-((((data$X2_FgaMax) + (((data$X2_FgaMax) + ((((((15.763636))) + (((data$SeedDiff) * (((41.500000))))))/2.0))))))))) +
                 0.100000*tanh(((tanh((data$SeedDiff))) - (((data$SeedDiff) + ((((data$SeedDiff) + (((((((tanh((data$SeedDiff))) * ((-1.0)))) * (((41.500000))))) / 2.0)))/2.0)))))) +
                 0.100000*tanh(((((((((data$X1_PointsDiffMean) - (data$X2_PointsDiffMean))) + (pmin((data$X2_PointsDiffMean), (pmin((((data$Seed2) - (data$X2_PointsDiffMean))), ((-3.0)))))))) * 2.0)) * 2.0)) +
                 0.100000*tanh(((((((data$Seed2) - (((data$SeedDiff) - (((data$Seed2) * 2.0)))))) * 2.0)) + ((((((((data$Seed2) * 2.0)) * 2.0)) > (data$X2_BlkMean))*1.)))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(data$Seed1 <= data$Seed1),ifelse(rep(1.,NROW(data))*(data$Seed1 <= ((12.433334))),((13.500000)),0),0)) - (pmax((data$X2_PointsDiffMean), (((1.172603))))))) +
                 0.100000*tanh(((data$X1_PointsDiffMean) + ((-(((((((13.500000))) + (ifelse(rep(1.,NROW(data))*(ifelse(rep(1.,NROW(data))*(((12.433334)) > data$Seed2),data$X1_AstMean,0) > data$X2_AstMean),((12.433334)),0)))/2.0))))))) +
                 0.100000*tanh(((((data$X1_BlkMean) + (((((13.500000))) - (data$Seed2))))) * (((((data$X1_BlkMean) * (((data$Seed2) - (((13.500000))))))) - (((1.108447))))))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(((10.500000)) > pmax((((data$X1_PointsDiffMean) / 2.0)), (data$SeedDiff))),pmax((((data$X1_PointsDiffMean) / 2.0)), (data$SeedDiff)),0)) - (data$X2_BlkMean))) +
                 0.100000*tanh(((((((((((10.500000))) * (((((data$X1_BlkMean) - (((((((((10.500000))) + (data$SeedDiff))/2.0)) + ((-3.0)))/2.0)))) * 2.0)))) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh(((data$X1_BlkMean) - (((data$X2_BlkMean) - (ifelse(rep(1.,NROW(data))*(data$X2_OppFgaMean <= ((55.983334))),(((((data$X2_BlkMean) > (data$X1_BlkMean))*1.)) - (((data$SeedDiff) + (((12.433334)))))),0)))))) +
                 0.100000*tanh(((((ifelse(rep(1.,NROW(data))*((7.24063587188720703) <= (((ifelse(rep(1.,NROW(data))*(data$X1_OppFgaMean <= data$X1_FgaMean),((data$X1_FgaMean) * 2.0),0)) + (data$Seed2))/2.0)),(((7.24063587188720703)) * 2.0),0)) - (data$X2_PointsDiffMean))) * 2.0)) +
                 0.100000*tanh(pmin((((data$Seed2) - (ifelse(rep(1.,NROW(data))*(((13.500000)) > data$Seed2),((((data$Seed2) - (data$SeedDiff))) * 2.0),0)))), (((((10.500000))) - (data$SeedDiff))))))
}

gpStdII<-function(data){
  prediction<-(  0.100000*tanh(ifelse(rep(1.,NROW(data))*(data$X2_PointsMedian > ((57.340073))),((((-14.0))) * (data$SeedDiff)),0)) +
                 0.100000*tanh(((((((57.340073))) * (((ifelse(rep(1.,NROW(data))*(data$quality_march_T1 > data$quality_march_T2),tanh((((-2.500000)))),0)) - (data$SeedDiff))))) - (((-14.0))))) +
                 0.100000*tanh((-((((((((data$X2_BlkMean) - (((data$X1_BlkMean) - (((data$SeedDiff) * 2.0)))))) * (data$X1_PointsMean))) * (data$X1_PointsMean)))))) +
                 0.100000*tanh((((data$X2_FgaMean) + ((-(((((((data$X1_FgaMean) > (data$X2_FgaMean))*1.)) + (((data$X1_FgaMean) * ((((((data$X1_FgaMean) > (data$X2_FgaMean))*1.)) + (data$SeedDiff)))))))))))/2.0)) +
                 0.100000*tanh(((pmin((data$X2_PointsDiffMean), (((data$X2_PointsDiffMean) * (data$X2_PointsDiffMean))))) - (((((11.286795))) * (data$SeedDiff))))) +
                 0.100000*tanh(((((data$Seed2) + (((data$X1_PointsDiffMean) - (((12.500000))))))) - (((ifelse(rep(1.,NROW(data))*(data$Seed2 <= data$Seed1),data$X1_PointsDiffMean,0)) * 2.0)))) +
                 0.100000*tanh((((((((data$X1_PointsDiffMean) <= (((11.286795))))*1.)) - ((((((((data$X1_PointsDiffMean) <= (((11.286795))))*1.)) + (((11.286795))))) * (data$SeedDiff))))) - (data$X1_PointsDiffMean))) +
                 0.100000*tanh(((data$X2_PointsDiffMean) - (((data$SeedDiff) * (((11.286795))))))) +
                 0.100000*tanh(((pmin((((((data$X2_PointsDiffMean) * 2.0)) - ((7.0)))), (data$X2_AstMean))) - (((((14.971033))) * (data$SeedDiff))))) +
                 0.100000*tanh(((((9.500000))) * ((((-((((data$SeedDiff) * (pmax((data$X2_PointsMean), (((78.469154)))))))))) - (data$X1_PointsMedian))))) +
                 0.100000*tanh((((((data$X2_OppFgaMean) + ((((((data$SeedDiff) > (data$X1_PointsDiffMean))*1.)) - (data$X1_OppFgaMean))))/2.0)) - (((((4.059742))) * (data$SeedDiff))))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(data$SeedDiff <= tanh((((((data$X2_FgaMean) * 2.0)) * (((data$X2_FgaMean) - (data$X1_FgaMean))))))),data$X1_PointsMedian,0)) - (data$X2_FgaMean))) +
                 0.100000*tanh(((data$X2_FgaMean) * (((data$X2_FgaMean) * ((-((((((data$SeedDiff) / 2.0)) + (((((((data$X1_BlkMean) / 2.0)) / 2.0)) + (data$SeedDiff)))))))))))) +
                 0.100000*tanh(((((data$Seed2) * (((((data$X1_PointsDiffMean) + (((data$Seed2) * (((data$Seed2) - (data$Seed1))))))) - (((11.911903))))))) - (((11.911903))))) +
                 0.100000*tanh((((((((-3.0)) + (data$X1_BlkMean))) + (((data$X1_BlkMean) - (((data$SeedDiff) - ((-3.0)))))))) - (((data$SeedDiff) * 2.0)))) +
                 0.100000*tanh((-((((((data$SeedDiff) / 2.0)) * (pmax((data$SeedDiff), (((((data$Seed2) * (((data$quality_march_T1) / 2.0)))) * (((data$quality_march_T1) / 2.0))))))))))) +
                 0.100000*tanh(((((((((((data$X1_BlkMean) - (data$SeedDiff))) - (((data$X1_BlkMean) + (data$SeedDiff))))) - (data$SeedDiff))) - (data$SeedDiff))) - (data$X1_BlkMean))) +
                 0.100000*tanh(((((79.065475))) * (((ifelse(rep(1.,NROW(data))*(data$X1_PointsMean <= ((79.065475))),((pmax((data$X2_PointsMean), (((79.065475))))) - (((4.059742)))),0)) - (((data$SeedDiff) * (data$X1_PointsMean))))))) +
                 0.100000*tanh(((((((((((tanh((tanh((tanh((((data$X2_FgaMean) - (data$X1_FgaMean))))))))) * 2.0)) * 2.0)) - (data$SeedDiff))) * 2.0)) * 2.0)) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= data$SeedDiff),data$X1_BlkMean,0)) + (((((ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= data$quality_march_T2),((4.059742)),0)) - ((2.0)))) - (((data$SeedDiff) * 2.0)))))) +
                 0.100000*tanh(((data$Seed2) - ((((((14.971033))) + ((-((((data$X1_PointsDiffMean) - ((((((14.971033))) + (ifelse(rep(1.,NROW(data))*((5.0) > data$X1_PointsDiffMean),((13.500000)),0)))/2.0))))))))/2.0)))) +
                 0.100000*tanh(((((55.295696))) * ((((((data$X1_BlkMean) + (ifelse(rep(1.,NROW(data))*(data$quality_march_T1 > data$quality_march_T2),((-9.500000)),0)))/2.0)) - (data$SeedDiff))))) +
                 0.100000*tanh(((((ifelse(rep(1.,NROW(data))*(((14.971033)) <= data$X1_PointsDiffMean),data$X1_BlkMean,0)) - ((((data$SeedDiff) + (data$X1_BlkMean))/2.0)))) - ((((data$SeedDiff) + (((data$SeedDiff) + (data$X1_BlkMean))))/2.0)))) +
                 0.100000*tanh(((((3.0)) + (((((((2.500000))) * ((((((11.286795))) + ((-((data$SeedDiff)))))/2.0)))) - (pmax(((2.0)), (pmax((data$X2_PointsDiffMean), (data$SeedDiff))))))))/2.0)) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*((1.0) > data$X1_WinRatio14d),ifelse(rep(1.,NROW(data))*((1.0) > data$SeedDiff),((((-9.500000))) - (((data$SeedDiff) / 2.0))),0),0)) - (data$SeedDiff))) +
                 0.100000*tanh(((pmax((((data$X1_PointsDiffMean) - (pmax((((2.500000))), (data$X1_AstMean))))), ((((((4.24983215332031250)) - (data$X1_PointsDiffMean))) - (data$X1_PointsDiffMean))))) - (data$SeedDiff))) +
                 0.100000*tanh(((((((((((((((((data$X2_BlkMean) > ((((tanh(((13.14612102508544922)))) + (data$SeedDiff))/2.0)))*1.)) * 2.0)) + ((13.14612102508544922)))/2.0)) - (data$SeedDiff))) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh(pmin((((((11.286795))) - (((data$SeedDiff) + (((data$X2_BlkMean) + (data$X2_PointsDiffMean))))))), (((((data$X1_PointsDiffMean) / 2.0)) - (((data$SeedDiff) + (((11.286795))))))))) +
                 0.100000*tanh(((((((76.250000))) * ((((((8.0)) * ((((((((12.500000))) > (data$Seed1))*1.)) * (data$Seed2))))) - (data$X2_AstMean))))) - (((12.500000))))) +
                 0.100000*tanh(((((-14.0))) - (((((((data$SeedDiff) + (((((14.0))) - (ifelse(rep(1.,NROW(data))*(data$SeedDiff <= tanh((data$SeedDiff))),data$X1_PointsDiffMean,0)))))) * 2.0)) * 2.0)))) +
                 0.100000*tanh(((((55.295696))) + (((data$X1_PointsDiffMean) + (ifelse(rep(1.,NROW(data))*(data$X1_PointsDiffMean <= data$SeedDiff),ifelse(rep(1.,NROW(data))*(data$X2_BlkMean <= data$SeedDiff),((data$SeedDiff) * ((-((data$SeedDiff))))),0),0)))))) +
                 0.100000*tanh((((tanh((((data$quality_march_T2) - (((-9.500000))))))) + (((((((data$SeedDiff) - (((-9.500000))))) * (((-9.500000))))) / 2.0)))/2.0)) +
                 0.100000*tanh(((((data$X2_BlkMean) + (((((((data$X2_BlkMean) + (((data$X1_BlkMean) + (((data$X1_BlkMean) - (data$SeedDiff))))))) * 2.0)) - (data$SeedDiff))))) * 2.0)) +
                 0.100000*tanh((-((((data$SeedDiff) - (((((data$SeedDiff) + (((((55.295696))) - (((43.500000))))))) * (pmin((data$SeedDiff), (((((9.500000))) - (data$SeedDiff)))))))))))) +
                 0.100000*tanh(((((((data$X1_AstMean) - (((data$X2_PointsDiffMean) * 2.0)))) * (pmax(((((7.0)) * 2.0)), (((data$X2_PointsDiffMean) * 2.0)))))) - ((((-3.0)) * 2.0)))) +
                 0.100000*tanh(((data$X1_PointsDiffMean) + (((((data$X1_PointsDiffMean) + (((-14.0))))) + (((data$X1_PointsDiffMean) + (((data$X1_PointsDiffMean) + ((((-3.0)) - (data$X2_PointsDiffMean))))))))))) +
                 0.100000*tanh(((((14.971033))) * (((((data$X2_OppFgaMean) * (((((((-((data$SeedDiff)))) - (data$X1_BlkMean))) + ((-((data$X2_BlkMean)))))/2.0)))) - (((14.971033))))))) +
                 0.100000*tanh(pmin((pmin((data$X1_BlkMean), (((data$X2_OppFgaMean) - (((55.295696))))))), ((((11.31510925292968750)) - (data$SeedDiff))))) +
                 0.100000*tanh(((((data$X1_PointsDiffMean) - (((data$X2_BlkMean) * 2.0)))) - ((((((data$X1_PointsDiffMean) - (((data$X2_BlkMean) * 2.0)))) <= (data$quality_march_T1))*1.)))) +
                 0.100000*tanh((((((pmax(((11.37531948089599609)), (data$X2_AstMean))) * (((ifelse(rep(1.,NROW(data))*(data$X2_OppFgaMean > data$X2_FgaMean),((9.500000)),0)) - (data$X2_PointsDiffMean))))) + (data$X1_OppFgaMean))/2.0)))
}

gpStdIII<-function(data){
  prediction<-(  0.100000*tanh(((((data$X2_BlkMean) + (data$X2_BlkMean))) - ((((3.0)) + (((data$SeedDiff) + (ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= data$SeedDiff),((79.250000)),0)))))))) +
                 0.100000*tanh(((((data$X1_FgaMean) * ((((-1.0)) - (((data$SeedDiff) - (tanh(((((((data$SeedDiff) - (data$quality_march_T1))) + (data$quality_march_T2))/2.0)))))))))) + (data$X2_FgaMean))) +
                 0.100000*tanh((((((((((-((((data$SeedDiff) - (((((((((57.197311))) > (data$X1_OppFgaMean))*1.)) > (((data$quality_march_T1) / 2.0)))*1.))))))) * 2.0)) * 2.0)) + (data$SeedDiff))) * 2.0)) +
                 0.100000*tanh(((((((57.197311))) - (data$X1_OppFgaMean))) - ((((-2.0)) * (((((data$SeedDiff) * 2.0)) * (((((57.197311))) - (data$X2_PointsMedian))))))))) +
                 0.100000*tanh(((((((-14.0))) * 2.0)) - (((((((-10.500000))) - (((((data$X2_PointsDiffMean) + (((((-10.500000))) * (data$SeedDiff))))) * (((-10.500000))))))) * (((-10.500000))))))) +
                 0.100000*tanh((-((((data$X1_OppFgaMean) * (((((data$X1_OppFgaMean) + (((data$X2_FgaMean) * (data$SeedDiff))))) * (data$X1_OppFgaMean)))))))) +
                 0.100000*tanh(((((((-10.500000))) * (data$SeedDiff))) - (((data$X1_PointsDiffMean) + (pmin((data$SeedDiff), (((data$X1_PointsDiffMean) + ((-3.0)))))))))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= data$X2_BlkMean),ifelse(rep(1.,NROW(data))*(data$quality_march_T1 > data$SeedDiff),data$X2_AstMean,0),0)) + (((data$SeedDiff) * (((-14.0))))))) +
                 0.100000*tanh(((((data$X2_PointsDiffMean) + (((data$SeedDiff) * ((-((((12.493761)))))))))) + ((-((((((tanh((data$X1_PointsDiffMean))) * 2.0)) - (((data$SeedDiff) * 2.0))))))))) +
                 0.100000*tanh(((data$X2_AstMean) * (((((((data$X2_AstMean) - (((((((((data$SeedDiff) * 2.0)) * 2.0)) * 2.0)) * 2.0)))) * 2.0)) * 2.0)))) +
                 0.100000*tanh((-((((((data$X2_AstMean) * (((data$X2_AstMean) + ((((data$X2_AstMean) + (((data$SeedDiff) * (data$X2_OppFgaMin))))/2.0)))))) * (data$X2_OppFgaMin)))))) +
                 0.100000*tanh((((((pmin((data$X2_BlkMean), (ifelse(rep(1.,NROW(data))*(((((-14.0))) * (data$SeedDiff)) <= ((48.500000))),((data$X2_AstMean) / 2.0),0)))) + (((-10.500000))))/2.0)) * (data$SeedDiff))) +
                 0.100000*tanh((((((((((((((data$SeedDiff) <= (data$quality_march_T1))*1.)) * (data$X2_AstMean))) - (data$SeedDiff))) - (tanh((data$X1_FgaMean))))) - (((10.500000))))) - (data$SeedDiff))) +
                 0.100000*tanh((-((((((((((((data$X1_BlkMean) + ((((((-2.0)) + (data$SeedDiff))) * 2.0)))) * 2.0)) * 2.0)) * 2.0)) + ((-2.0))))))) +
                 0.100000*tanh(((((14.0))) * (((ifelse(rep(1.,NROW(data))*(data$quality_march_T1 > data$SeedDiff),((57.197311)),0)) + ((-((ifelse(rep(1.,NROW(data))*(data$SeedDiff > (-((data$quality_march_T2)))),data$X1_OppFgaMean,0))))))))) +
                 0.100000*tanh((((((((-((data$SeedDiff)))) * (data$X2_FgaMin))) + ((-(((((-3.0)) * (data$X2_AstMean)))))))) + ((-((data$SeedDiff)))))) +
                 0.100000*tanh(((((((((((tanh((data$X2_PointsDiffMean))) - (ifelse(rep(1.,NROW(data))*(data$X1_PointsDiffMean <= -998),data$X2_PointsDiffMean,tanh((data$X1_PointsDiffMean)))))) * 2.0)) * 2.0)) + ((-((data$SeedDiff)))))) * 2.0)) +
                 0.100000*tanh((((((((-((data$SeedDiff)))) + (tanh((data$SeedDiff))))) + (tanh((tanh((data$SeedDiff))))))) + (((((1.0)) > (data$X1_PointsDiffMean))*1.)))) +
                 0.100000*tanh(((((data$X2_BlkMean) - (((ifelse(rep(1.,NROW(data))*(data$SeedDiff <= ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= data$SeedDiff),data$SeedDiff,0)),data$X2_BlkMean,0)) * 2.0)))) - (((data$SeedDiff) + (data$SeedDiff))))) +
                 0.100000*tanh(((data$X1_BlkMean) - ((((-3.0)) * (((((((data$X1_BlkMean) - (ifelse(rep(1.,NROW(data))*(data$X1_FgaMin <= data$X2_OppFgaMin),data$SeedDiff,0)))) - (data$SeedDiff))) - (data$SeedDiff))))))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*((1.0) <= data$X2_PointsDiffMean),ifelse(rep(1.,NROW(data))*((1.0) <= data$X1_PointsDiffMean),((data$X1_PointsDiffMean) - (data$X2_PointsDiffMean)),0),0)) + ((((0.0)) - (((data$SeedDiff) / 2.0)))))) +
                 0.100000*tanh((((-((((data$X1_PointsMedian) * ((((data$SeedDiff) + ((((data$X2_BlkMean) + (((2.500000))))/2.0)))/2.0))))))) - (((data$X1_PointsMedian) * ((((data$SeedDiff) + (((2.500000))))/2.0)))))) +
                 0.100000*tanh(ifelse(rep(1.,NROW(data))*(data$X2_PointsMedian > ((59.422409))),((tanh((((((((((((data$SeedDiff) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)))) - (((data$SeedDiff) / 2.0))),0)) +
                 0.100000*tanh(((pmax((ifelse(rep(1.,NROW(data))*(data$quality_march_T2 <= data$X1_BlkMean),((4.883334)),0)), (data$X1_BlkMean))) - (((data$SeedDiff) - (ifelse(rep(1.,NROW(data))*(data$quality_march_T2 <= data$quality_march_T1),(-((((10.500000))))),0)))))) +
                 0.100000*tanh(((((data$Seed2) + (ifelse(rep(1.,NROW(data))*(((4.061080)) > data$SeedDiff),((((data$Seed2) * 2.0)) - (data$SeedDiff)),0)))) + ((-((((data$SeedDiff) - (((1.117843)))))))))) +
                 0.100000*tanh(((((((ifelse(rep(1.,NROW(data))*(data$X1_PointsDiffMean > ((10.117352))),((((10.117352))) * 2.0),0)) - (data$X1_PointsDiffMean))) - (data$SeedDiff))) - ((((((data$SeedDiff) / 2.0)) + (((3.681985))))/2.0)))) +
                 0.100000*tanh((((8.23527431488037109)) - (((data$SeedDiff) - (pmin(((((9.0)) - (data$X2_PointsDiffMean))), (((data$X2_PointsDiffMean) - ((8.23527431488037109)))))))))) +
                 0.100000*tanh((((((((((-(((((((14.500000))) + (((data$SeedDiff) * 2.0)))/2.0))))) * 2.0)) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh(((((((((8.0)) + (((data$X1_PointsDiffMean) + (((4.970588))))))/2.0)) - (data$X2_PointsDiffMean))) - (ifelse(rep(1.,NROW(data))*(data$X2_PointsDiffMean <= data$SeedDiff),((4.970588)),0)))) +
                 0.100000*tanh(((((((data$X1_PointsDiffMean) - (((data$X2_BlkMean) * (data$quality_march_T2))))) - (((data$X2_BlkMean) * (data$quality_march_T2))))) - (pmin((data$X1_PointsDiffMean), (data$quality_march_T2))))) +
                 0.100000*tanh(((pmax((data$Seed2), (data$X1_PointsDiffMean))) - ((12.28884792327880859)))) +
                 0.100000*tanh((((((ifelse(rep(1.,NROW(data))*(data$SeedDiff > data$X1_BlkMean),(((((((-((data$SeedDiff)))) * 2.0)) - (((-12.500000))))) - (((-12.500000)))),0)) + (data$X1_AstMean))/2.0)) - (data$X2_PointsDiffMean))) +
                 0.100000*tanh(((((((14.500000))) - (((data$SeedDiff) * 2.0)))) * (((14.500000))))) +
                 0.100000*tanh((((((((-(((((((((((((8.0)) + (data$SeedDiff))) * 2.0)) * 2.0)) * 2.0)) + (data$SeedDiff)))))) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh(((((1.108935))) - (((((data$SeedDiff) - (((((10.500000))) - (ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= -998),((data$SeedDiff) / 2.0),data$SeedDiff)))))) - (data$X1_PointsDiffMean))))) +
                 0.100000*tanh((((-((((12.106062)))))) - (((((10.500000))) * ((((((10.500000))) + (((data$X2_OppFgaMean) * ((((((10.500000))) + (data$SeedDiff))/2.0)))))/2.0)))))) +
                 0.100000*tanh(((((data$X2_BlkMean) * (((((12.678505))) - (((data$Seed1) - (((3.525757))))))))) - (((data$Seed1) - ((((data$X2_BlkMean) > (((3.525757))))*1.)))))) +
                 0.100000*tanh((-((((data$SeedDiff) + (((tanh(((-((((data$SeedDiff) + (((tanh((data$X1_PointsDiffMean))) * (data$SeedDiff)))))))))) * (((10.500000)))))))))) +
                 0.100000*tanh((((((-1.0)) + (ifelse(rep(1.,NROW(data))*(data$quality_march_T2 <= data$quality_march_T1),((((-10.500000))) + ((-((data$SeedDiff))))),0)))) + ((((((data$SeedDiff) <= (((12.106062))))*1.)) * 2.0)))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(data$SeedDiff > data$X2_BlkMean),data$X2_OppFgaMin,0)) + (((((((((-14.0))) - (data$SeedDiff))) + ((2.0)))) * 2.0)))))
}

gpStdIV<-function(data){
  prediction<-(  0.100000*tanh(((pmax(((2.0)), (data$Seed2))) * (((pmax(((2.0)), (data$Seed2))) - (pmax((pmax(((2.0)), (data$Seed1))), (data$Seed1))))))) +
                 0.100000*tanh(((((((((((data$X1_BlkMean) - (((((data$SeedDiff) + (((1.108376))))) * 2.0)))) - (((((1.108376))) + (data$SeedDiff))))) * 2.0)) - (data$SeedDiff))) * 2.0)) +
                 0.100000*tanh((((((((((((((((data$X2_PointsDiffMean) + (((data$SeedDiff) * (((-9.500000))))))/2.0)) - (data$X1_WinRatio14d))) * 2.0)) - ((((2.0)) / 2.0)))) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh(((((((-12.0))) * (((data$X1_PointsDiffMean) - (((((-12.0))) * (((data$SeedDiff) * 2.0)))))))) - (((data$X1_PointsDiffMean) - (((((-12.0))) * (data$X1_PointsDiffMean))))))) +
                 0.100000*tanh((-((((((-12.0))) * (((((data$X2_OppFgaMean) - ((((data$X1_FgaMean) + (((data$SeedDiff) * (data$X2_OppFgaMean))))/2.0)))) - (((((3.0)) + (data$X1_FgaMean))/2.0))))))))) +
                 0.100000*tanh(((((12.617647))) * ((((((data$SeedDiff) * (((-12.0))))) + (data$X2_PointsDiffMean))/2.0)))) +
                 0.100000*tanh((((((((-((((((1.109469))) - ((-((((data$SeedDiff) - (((ifelse(rep(1.,NROW(data))*(data$X1_FgaMean <= data$X2_FgaMedian),((1.109469)),0)) * 2.0)))))))))))) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh(((((((((data$X2_AstMean) + (data$X2_PointsDiffMean))) + (((data$SeedDiff) + (data$SeedDiff))))) + (((-14.0))))) + (((data$SeedDiff) * (((-14.0))))))) +
                 0.100000*tanh(((((ifelse(rep(1.,NROW(data))*(data$quality_march_T2 > data$quality_march_T1),(2.0),0)) - (((data$SeedDiff) * (((data$Seed2) * 2.0)))))) - ((((data$quality_march_T2) <= (data$quality_march_T1))*1.)))) +
                 0.100000*tanh(((((data$X2_PointsMean) - (((((79.450142))) * (data$SeedDiff))))) - (((1.109469))))) +
                 0.100000*tanh(((((data$X1_OppFgaMean) + (((((data$X1_FgaMin) * (((data$X1_FgaMin) * (((data$quality_march_T1) - (data$SeedDiff))))))) - (data$SeedDiff))))) - ((3.0)))) +
                 0.100000*tanh(ifelse(rep(1.,NROW(data))*(((data$SeedDiff) * (data$X2_PointsDiffMean)) <= -998),data$SeedDiff,((data$X2_PointsDiffMean) - (((data$SeedDiff) * (((((12.0))) - (tanh((tanh((data$SeedDiff)))))))))))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(((55.830490)) <= ifelse(rep(1.,NROW(data))*(data$X1_OppFgaMean <= data$X2_OppFgaMean),data$X2_OppFgaMean,0)),data$X2_OppFgaMean,0)) - ((((((((55.830490))) * (data$SeedDiff))) + (data$X1_OppFgaMean))/2.0)))) +
                 0.100000*tanh(((((((ifelse(rep(1.,NROW(data))*(data$X2_PointsDiffMean <= (((3.0)) * 2.0)),ifelse(rep(1.,NROW(data))*((3.0) <= ((data$X2_PointsDiffMean) * 2.0)),(3.0),0),0)) - (data$SeedDiff))) - (((1.109469))))) * 2.0)) +
                 0.100000*tanh(ifelse(rep(1.,NROW(data))*(data$SeedDiff <= -998),data$X1_FgaMin,(((((((((43.500000))) > (data$X1_FgaMin))*1.)) - ((((((((43.500000))) > (data$SeedDiff))*1.)) / 2.0)))) - (data$SeedDiff)))) +
                 0.100000*tanh(((((((43.500000))) - (pmax((data$X1_FgaMin), (((data$X1_FgaMin) - (data$X1_PointsDiffMean))))))) - (((data$SeedDiff) * (data$X1_FgaMin))))) +
                 0.100000*tanh(((((((tanh((((((((data$SeedDiff) + (data$X2_WinRatio14d))) * 2.0)) * 2.0)))) - (((data$X2_WinRatio14d) + (data$SeedDiff))))) * 2.0)) * 2.0)) +
                 0.100000*tanh((((((((((((-((data$SeedDiff)))) - (((data$X1_AstMean) - (((data$SeedDiff) * ((-((((14.500000)))))))))))) * 2.0)) - (data$SeedDiff))) * 2.0)) * 2.0)) +
                 0.100000*tanh(((((tanh(((((((((-((data$SeedDiff)))) * 2.0)) * 2.0)) * 2.0)))) - (((data$X2_PointsDiffMean) - (data$X1_PointsDiffMean))))) - (data$SeedDiff))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(data$X2_WinRatio14d <= ((0.690477))),data$X1_BlkMean,0)) - (((((data$SeedDiff) + (((((((data$X2_WinRatio14d) > (data$SeedDiff))*1.)) > (data$X2_WinRatio14d))*1.)))) * 2.0)))) +
                 0.100000*tanh(((((data$X1_WinRatio14d) - (ifelse(rep(1.,NROW(data))*((-((data$X1_WinRatio14d))) > (-((data$X2_WinRatio14d)))),(2.0),0)))) - ((((data$SeedDiff) + ((((data$X1_WinRatio14d) <= (data$X2_WinRatio14d))*1.)))/2.0)))) +
                 0.100000*tanh(((((((data$X1_OppFgaMean) * (((((((data$X1_BlkMean) - (((data$SeedDiff) / 2.0)))) - ((3.0)))) - (data$SeedDiff))))) - (data$Seed2))) - (data$X1_BlkMean))) +
                 0.100000*tanh((((((-((data$SeedDiff)))) - (((data$X2_PointsDiffMean) - (((((((1.109469))) + (((data$quality_march_T1) + (data$X2_AstMean))))) - (data$Seed2))))))) * 2.0)) +
                 0.100000*tanh(((((data$Seed2) + (data$SeedDiff))) * (((data$Seed2) + (((((((data$Seed2) + (((data$Seed2) - (data$SeedDiff))))) * 2.0)) - (data$SeedDiff))))))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(((12.211823)) > data$Seed1),data$Seed2,0)) - (ifelse(rep(1.,NROW(data))*(data$SeedDiff > (-(((((data$Seed2) + (data$Seed1))/2.0))))),((12.211823)),0)))) +
                 0.100000*tanh(((((data$Seed2) * (ifelse(rep(1.,NROW(data))*(data$Seed1 <= ((12.500000))),ifelse(rep(1.,NROW(data))*(data$X2_PointsDiffMean <= ((12.500000))),ifelse(rep(1.,NROW(data))*(data$X1_BlkMean <= data$X1_PointsDiffMean),data$X1_BlkMean,0),0),0)))) - (data$Seed1))) +
                 0.100000*tanh(((((((((data$quality_march_T1) / 2.0)) * (((14.500000))))) - (data$SeedDiff))) - (ifelse(rep(1.,NROW(data))*(data$SeedDiff <= ((0.690477))),((14.500000)),0)))) +
                 0.100000*tanh((-((((data$SeedDiff) + ((((data$Seed2) + (((((((data$SeedDiff) + ((((((((data$Seed2) + (data$SeedDiff))/2.0)) * 2.0)) * 2.0)))) * 2.0)) * 2.0)))/2.0))))))) +
                 0.100000*tanh((((-((data$X2_PointsDiffMean)))) + ((((data$X1_PointsDiffMean) + (((((data$Seed2) - (((((-((pmax((data$SeedDiff), (data$Seed2)))))) + (data$SeedDiff))/2.0)))) / 2.0)))/2.0)))) +
                 0.100000*tanh(((((15.677450))) * (((((15.677450))) * (((data$Seed2) - (pmax((tanh((data$Seed1))), (((data$Seed1) - (((((15.677450))) / 2.0)))))))))))) +
                 0.100000*tanh((-((((data$SeedDiff) + (((((((((((8.500000))) + (data$X1_BlkMean))) + (data$X1_BlkMean))) * ((-((tanh((((data$SeedDiff) / 2.0))))))))) / 2.0))))))) +
                 0.100000*tanh((((((((((data$SeedDiff) / 2.0)) <= (data$SeedDiff))*1.)) + (((data$X1_PointsDiffMean) - ((((((data$X1_FgaMean) / 2.0)) + (data$SeedDiff))/2.0)))))) * 2.0)) +
                 0.100000*tanh(((((-((data$SeedDiff)))) + (((ifelse(rep(1.,NROW(data))*(ifelse(rep(1.,NROW(data))*((10.66819286346435547) > data$Seed2),(10.66819286346435547),0) > data$SeedDiff),ifelse(rep(1.,NROW(data))*(((14.0)) > data$Seed2),data$SeedDiff,0),0)) * 2.0)))/2.0)) +
                 0.100000*tanh(((data$X1_PointsMean) - ((((((((data$X2_PointsDiffMean) * 2.0)) * 2.0)) + (ifelse(rep(1.,NROW(data))*(data$X2_PointsDiffMean <= ((data$Seed1) * (data$Seed1))),((data$X2_PointsDiffMean) * (data$Seed1)),0)))/2.0)))) +
                 0.100000*tanh(((data$X1_PointsDiffMean) - (ifelse(rep(1.,NROW(data))*(data$X1_PointsDiffMean <= ((((data$SeedDiff) + (ifelse(rep(1.,NROW(data))*(data$Seed2 <= ((12.022091))),((14.0)),0)))) * 2.0)),((14.0)),0)))) +
                 0.100000*tanh(((((((((((((data$X1_PointsDiffMean) * 2.0)) - (data$X2_AstMean))) * (((((74.500000))) - (((data$X2_PointsDiffMean) * 2.0)))))) - (data$X2_AstMean))) * 2.0)) - (data$X2_AstMean))) +
                 0.100000*tanh(((data$X2_WinRatio14d) * (((data$Seed2) * (((data$X2_WinRatio14d) * (((((3.0)) + (((data$Seed2) - (((data$X2_PointsDiffMean) * 2.0)))))/2.0)))))))) +
                 0.100000*tanh((((((7.84460830688476562)) + (ifelse(rep(1.,NROW(data))*(((77.750000)) > ifelse(rep(1.,NROW(data))*(data$X2_AstMean > data$Seed2),ifelse(rep(1.,NROW(data))*(((14.0)) > data$X1_PointsDiffMean),data$X1_PointsMedian,0),0)),data$X1_PointsDiffMean,0)))) - (data$X2_AstMean))) +
                 0.100000*tanh(((((((((14.0))) - (tanh((ifelse(rep(1.,NROW(data))*(((data$X2_PointsDiffMean) * 2.0) > ((14.0))),((data$X2_PointsDiffMean) + (((14.0)))),0)))))) - (((data$X2_PointsDiffMean) * 2.0)))) * 2.0)) +
                 0.100000*tanh(((((data$quality_march_T2) - (data$quality_march_T1))) * (((((((14.500000))) - (data$Seed2))) * (((((((((14.500000))) - (data$Seed2))) - (data$SeedDiff))) * 2.0)))))))
}

gpStdV<-function(data){
  prediction<-(  0.100000*tanh(((data$X1_BlkMean) * (((((12.565151))) * (((data$quality_march_T1) + (((data$quality_march_T1) + (((data$SeedDiff) + (((data$SeedDiff) * ((-((data$X1_BlkMean)))))))))))))))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(data$SeedDiff <= -998),((-9.500000)),(((ifelse(rep(1.,NROW(data))*(data$quality_march_T2 <= data$SeedDiff),((((7.064116))) * 2.0),0)) + (((((-9.500000))) * (data$SeedDiff))))/2.0))) - (data$X2_WinRatio14d))) +
                 0.100000*tanh((((((((data$X2_PointsDiffMean) + ((((data$X2_PointsDiffMean) + (((data$SeedDiff) * (((data$X2_PointsDiffMean) - (((74.500000))))))))/2.0)))/2.0)) - (data$X1_PointsDiffMean))) - (data$X1_PointsDiffMean))) +
                 0.100000*tanh(((((((((((data$X1_FgaMax) * (((data$quality_march_T1) - (data$SeedDiff))))) * 2.0)) * 2.0)) + (((((data$SeedDiff) - (data$SeedDiff))) - (((-9.500000))))))) * 2.0)) +
                 0.100000*tanh((((((((((((((-((data$Seed1)))) * (((0.979400))))) + (ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= -998),(-3.0),data$Seed2)))) * 2.0)) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh((((((((data$X2_OppFgaMin) > (ifelse(rep(1.,NROW(data))*(data$X2_OppFgaMin <= -998),data$quality_march_T2,data$X1_OppFgaMin)))*1.)) - (data$SeedDiff))) + ((((((data$X2_OppFgaMin) > (data$X1_OppFgaMin))*1.)) - (data$quality_march_T2))))) +
                 0.100000*tanh(((pmin((((data$quality_march_T1) * 2.0)), ((((data$X2_OppFgaMin) > ((((((data$X2_PointsDiffMean) * 2.0)) + (data$X1_FgaMax))/2.0)))*1.)))) - (data$SeedDiff))) +
                 0.100000*tanh(((((9.500000))) * (((((((9.500000))) * (((data$X2_FgaMin) * (((data$quality_march_T1) - (data$SeedDiff))))))) - (data$SeedDiff))))) +
                 0.100000*tanh(((data$X2_AstMean) * (((data$X2_AstMean) + (((((((data$SeedDiff) * (((-9.500000))))) - (data$quality_march_T2))) - (((4.954545))))))))) +
                 0.100000*tanh(((((pmin((((data$X2_PointsDiffMean) + (data$X2_PointsDiffMean))), (data$quality_march_T1))) + ((((-((data$X1_PointsDiffMean)))) + (data$quality_march_T1))))) + (((data$SeedDiff) * (((-9.500000))))))) +
                 0.100000*tanh((((-((((data$X2_PointsDiffMean) - (data$quality_march_T1)))))) - ((((((((data$SeedDiff) * (((10.500000))))) + (((data$quality_march_T2) - (data$X2_PointsDiffMean))))/2.0)) * (data$X2_FgaMax))))) +
                 0.100000*tanh((-((((data$X1_PointsMean) * (((data$X1_PointsMean) * (((((data$X1_PointsMean) * (((data$SeedDiff) - (data$quality_march_T1))))) - (((data$SeedDiff) * 2.0))))))))))) +
                 0.100000*tanh((((-((data$X2_OppFgaMean)))) - (((data$X2_OppFgaMean) * (((data$X2_OppFgaMean) + (((data$X2_OppFgaMean) * (((data$X1_BlkMean) + (((data$SeedDiff) * (((4.954545))))))))))))))) +
                 0.100000*tanh(((((((((0.950981))) - ((-((data$quality_march_T1)))))) * ((((((0.950981))) > (data$quality_march_T1))*1.)))) - (((((((((data$SeedDiff) * 2.0)) * 2.0)) * 2.0)) * 2.0)))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(((58.937500)) <= data$X2_OppFgaMean),data$X2_OppFgaMean,0)) + (((data$SeedDiff) + ((-((((data$SeedDiff) * (((58.937500)))))))))))) +
                 0.100000*tanh((((((3.0)) + ((((((((((((((((((-((data$SeedDiff)))) + (data$quality_march_T1))) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)))) * 2.0)) +
                 0.100000*tanh(((((((-9.500000))) * ((((((((5.89533233642578125)) > (data$X1_PointsDiffMean))*1.)) + (data$SeedDiff))/2.0)))) - (((((1.108529))) - (ifelse(rep(1.,NROW(data))*(data$SeedDiff > data$quality_march_T2),data$X1_PointsDiffMean,0)))))) +
                 0.100000*tanh(((data$quality_march_T1) + (((data$X1_FgaMean) + (ifelse(rep(1.,NROW(data))*(data$SeedDiff > ifelse(rep(1.,NROW(data))*(((1.108529)) > data$quality_march_T2),((tanh((data$SeedDiff))) * 2.0),0)),(-((data$X1_FgaMax))),0)))))) +
                 0.100000*tanh(((((data$quality_march_T1) - (data$SeedDiff))) + ((((((-(((((data$X2_BlkMean) <= (((data$X1_FgaMax) - (data$X2_FgaMax))))*1.))))) * 2.0)) * 2.0)))) +
                 0.100000*tanh((((((data$X1_PointsMean) + (data$X1_FgaMean))/2.0)) * (ifelse(rep(1.,NROW(data))*(data$X1_FgaMax <= -998),data$quality_march_T1,((((((data$quality_march_T1) - (data$SeedDiff))) - (data$quality_march_T2))) + ((-2.0))))))) +
                 0.100000*tanh(((((pmin((((pmin((data$X2_OppFgaMean), (data$quality_march_T1))) - (((data$X2_BlkMean) + ((-2.0)))))), (data$quality_march_T1))) - (data$SeedDiff))) - (data$SeedDiff))) +
                 0.100000*tanh(ifelse(rep(1.,NROW(data))*(data$quality_march_T2 <= -998),(3.0),(((((3.0)) - ((((-((((data$SeedDiff) - (data$quality_march_T1)))))) - (data$SeedDiff))))) * (((-9.500000)))))) +
                 0.100000*tanh(((data$Seed2) + (((ifelse(rep(1.,NROW(data))*((-3.0) <= ((((data$X1_PointsDiffMean) - (data$Seed2))) / 2.0)),((15.648581)),0)) - (((data$Seed1) + (data$X2_PointsDiffMean))))))) +
                 0.100000*tanh(((((((((((((((((-((data$Seed1)))) - (data$quality_march_T2))) + ((((-((data$Seed1)))) * 2.0)))/2.0)) - (data$SeedDiff))) * 2.0)) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh((-((((((data$SeedDiff) - ((5.32810258865356445)))) + (pmin((pmin((data$quality_march_T2), ((((data$quality_march_T2) + (((data$quality_march_T2) - (((4.954545))))))/2.0)))), (data$quality_march_T2)))))))) +
                 0.100000*tanh((((((((-((((data$SeedDiff) + (((9.500000)))))))) * 2.0)) * 2.0)) - (((data$SeedDiff) + (((data$SeedDiff) + (data$quality_march_T2))))))) +
                 0.100000*tanh(((((75.250000))) + ((((-((((data$X2_PointsDiffMean) * (pmax(((((data$X2_PointsDiffMean) + (((data$SeedDiff) * 2.0)))/2.0)), (((data$SeedDiff) * 2.0))))))))) / 2.0)))) +
                 0.100000*tanh((((3.0)) + ((((5.71095705032348633)) * (((data$quality_march_T1) + ((((5.71095705032348633)) * ((((-2.0)) - (((((3.63941168785095215)) + (data$SeedDiff))/2.0)))))))))))) +
                 0.100000*tanh((-((((((data$SeedDiff) + (((data$X2_PointsDiffMean) / 2.0)))) - (ifelse(rep(1.,NROW(data))*(ifelse(rep(1.,NROW(data))*(((data$X2_PointsDiffMean) / 2.0) > (7.0)),(7.0),0) <= data$SeedDiff),(10.69132709503173828),0))))))) +
                 0.100000*tanh(((((((tanh((((data$SeedDiff) + (ifelse(rep(1.,NROW(data))*((8.0) <= data$X1_BlkMean),data$X2_PointsDiffMean,0)))))) * ((8.0)))) - (data$SeedDiff))) * (data$X1_BlkMean))) +
                 0.100000*tanh(((data$X2_BlkMean) * (((data$X2_FgaMean) * ((((-((data$X2_BlkMean)))) + (((data$X1_PointsDiffMean) - ((((data$X1_PointsDiffMean) + (data$quality_march_T2))/2.0)))))))))) +
                 0.100000*tanh(((((data$X1_PointsDiffMean) - (data$SeedDiff))) - (ifelse(rep(1.,NROW(data))*(data$X1_PointsDiffMean <= ((((9.500000))) - (data$SeedDiff))),ifelse(rep(1.,NROW(data))*(data$X2_WinRatio14d <= data$X1_PointsDiffMean),((((9.500000))) * 2.0),0),0)))) +
                 0.100000*tanh((((9.0)) - (((data$SeedDiff) - ((((9.0)) - (((data$X2_PointsDiffMean) - (ifelse(rep(1.,NROW(data))*(data$X2_PointsDiffMean > (((9.0)) - ((-1.0)))),(-1.0),0)))))))))) +
                 0.100000*tanh((-((((data$X2_PointsDiffMean) - (pmax(((((((5.43001890182495117)) + (data$quality_march_T1))) + (tanh((data$SeedDiff))))), ((-((((data$SeedDiff) + (((1.500000))))))))))))))) +
                 0.100000*tanh(((((14.873959))) * ((((((((((14.873959))) + ((((((data$quality_march_T1) > (tanh((data$SeedDiff))))*1.)) - (data$SeedDiff))))) - (data$SeedDiff))) + (data$quality_march_T1))/2.0)))) +
                 0.100000*tanh(((data$Seed2) - (ifelse(rep(1.,NROW(data))*(data$Seed2 <= ((data$quality_march_T2) + (ifelse(rep(1.,NROW(data))*(data$X1_PointsDiffMean <= ((14.500000))),((11.500000)),0)))),((((11.500000))) + (data$X1_PointsDiffMean)),0)))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(data$quality_march_T1 > -998),data$X2_OppFgaMean,data$quality_march_T1)) + ((-((ifelse(rep(1.,NROW(data))*(data$Seed2 <= ifelse(rep(1.,NROW(data))*(data$X1_PointsDiffMean <= ((12.500000))),((12.500000)),0)),data$X2_FgaMedian,0))))))) +
                 0.100000*tanh(((((data$X2_BlkMean) - (ifelse(rep(1.,NROW(data))*((((data$SeedDiff) + (data$X2_PointsDiffMean))/2.0) <= ((((1.500000))) + (((4.954545))))),data$X2_PointsDiffMean,0)))) + (((data$X1_PointsDiffMean) - (data$X2_PointsDiffMean))))) +
                 0.100000*tanh((-(((((((data$SeedDiff) + ((10.54462528228759766)))/2.0)) * (pmax((((data$X2_FgaMax) - (data$X1_FgaMedian))), ((((((data$SeedDiff) + ((10.54462528228759766)))/2.0)) * (data$SeedDiff)))))))))) +
                 0.100000*tanh(((((((ifelse(rep(1.,NROW(data))*((((((3.0)) * 2.0)) * 2.0) > data$X1_PointsDiffMean),(11.01944065093994141),0)) - (data$SeedDiff))) * ((11.01944065093994141)))) - (data$X1_PointsDiffMean))))
}

gpStdVI<-function(data){
  prediction<-(  0.100000*tanh(((((-9.500000))) + (((data$quality_march_T2) + (((((58.295696))) * ((((((((data$quality_march_T2) > (data$quality_march_T1))*1.)) - (data$SeedDiff))) - (data$SeedDiff))))))))) +
                 0.100000*tanh((((8.0)) - (((((12.926472))) - (((((data$X1_PointsDiffMean) - (((((12.926472))) - (ifelse(rep(1.,NROW(data))*(tanh((((71.250000)))) <= data$quality_march_T1),data$X1_PointsDiffMean,0)))))) * 2.0)))))) +
                 0.100000*tanh(((((54.409088))) * (((data$X1_FgaMin) * (((data$X1_BlkMean) - ((((3.40691041946411133)) * (((data$SeedDiff) + ((((data$SeedDiff) <= (((1.107978))))*1.)))))))))))) +
                 0.100000*tanh(((data$X1_PointsMean) * (((((tanh((data$quality_march_T2))) - (((data$SeedDiff) - ((-((tanh((data$quality_march_T1)))))))))) * 2.0)))) +
                 0.100000*tanh((-((pmax((((((79.250000))) * (data$SeedDiff))), (((data$X2_PointsDiffMean) - ((((2.0)) * (data$X1_PointsDiffMean)))))))))) +
                 0.100000*tanh((-((((((((((data$SeedDiff) * (((9.500000))))) + ((-((data$X1_PointsDiffMean)))))) * ((14.98255157470703125)))) + ((-((data$X1_PointsDiffMean))))))))) +
                 0.100000*tanh(((((((((data$SeedDiff) * (((-9.500000))))) - (data$X2_PointsDiffMean))) * (((data$X1_PointsMean) + ((-((data$X2_OppFgaMean)))))))) - (((data$SeedDiff) * (((-9.500000))))))) +
                 0.100000*tanh(((((data$X2_FgaMax) - (((data$SeedDiff) * (((79.522255))))))) - (((((79.522255))) * ((((((data$X2_FgaMax) <= (data$X2_PointsMean))*1.)) * 2.0)))))) +
                 0.100000*tanh(((((data$X1_PointsDiffMean) - (data$X2_PointsDiffMean))) - (((data$SeedDiff) - (((((data$X1_PointsDiffMean) - (data$X2_PointsDiffMean))) - (data$SeedDiff))))))) +
                 0.100000*tanh(((data$Seed2) + (((((ifelse(rep(1.,NROW(data))*(data$Seed1 <= data$Seed2),data$X1_PointsDiffMean,0)) + (((data$Seed2) - (((13.500000))))))) - (data$Seed1))))) +
                 0.100000*tanh(((((ifelse(rep(1.,NROW(data))*(data$X2_PointsDiffMean > ((((((((0.961457))) + (data$X2_BlkMean))/2.0)) + (data$X1_PointsDiffMean))/2.0)),((-9.500000)),0)) * (data$SeedDiff))) + (data$X1_PointsDiffMean))) +
                 0.100000*tanh(((data$X2_FgaMax) * (((data$X2_FgaMax) * (((data$X1_PointsDiffMean) - (((data$X2_PointsDiffMean) - ((-((pmin((data$SeedDiff), (data$X1_PointsDiffMean)))))))))))))) +
                 0.100000*tanh((((-2.0)) + (((((ifelse(rep(1.,NROW(data))*(data$quality_march_T2 > data$quality_march_T1),(3.0),0)) - (((data$SeedDiff) * 2.0)))) - (((data$SeedDiff) * 2.0)))))) +
                 0.100000*tanh(((((data$Seed2) - (((((4.969697))) - (((data$Seed2) - (((((4.969697))) - (((data$X1_PointsDiffMean) - (((12.074242))))))))))))) * (data$X1_AstMean))) +
                 0.100000*tanh(((((data$SeedDiff) + (((pmax((data$SeedDiff), (data$quality_march_T1))) - (pmax((data$quality_march_T2), ((-3.0)))))))) * ((-((pmax((data$quality_march_T2), (data$quality_march_T1)))))))) +
                 0.100000*tanh(((data$X2_PointsMean) + ((((3.0)) + ((((-((data$SeedDiff)))) * (data$X1_PointsMean))))))) +
                 0.100000*tanh(((((tanh((((((((data$quality_march_T2) - (data$quality_march_T1))) + (((data$SeedDiff) + (data$quality_march_T2))))) - (data$quality_march_T1))))) - (data$SeedDiff))) - (data$SeedDiff))) +
                 0.100000*tanh(((((55.232479))) - ((((((((((data$SeedDiff) + (ifelse(rep(1.,NROW(data))*(data$quality_march_T2 <= data$quality_march_T1),data$quality_march_T2,0)))/2.0)) * (((55.232479))))) * (((55.232479))))) * (((55.232479))))))) +
                 0.100000*tanh(((((data$X1_PointsDiffMean) - (pmax((((data$quality_march_T1) + (((1.109198))))), (pmax((data$X2_PointsDiffMean), (data$quality_march_T1))))))) - (data$SeedDiff))) +
                 0.100000*tanh(((((((((((((((((((data$X1_BlkMean) - (((3.560606))))) * 2.0)) - (data$SeedDiff))) - (data$SeedDiff))) * 2.0)) * 2.0)) * 2.0)) - (data$SeedDiff))) * 2.0)) +
                 0.100000*tanh(((data$X1_PointsDiffMean) - (((pmax((data$SeedDiff), (pmin((((data$quality_march_T1) + (((data$X2_BlkMean) + (data$SeedDiff))))), ((-((data$SeedDiff)))))))) * (data$X2_BlkMean))))) +
                 0.100000*tanh(((data$X1_BlkMean) - (ifelse(rep(1.,NROW(data))*((-1.0) <= data$SeedDiff),pmax((data$X2_PointsDiffMean), (ifelse(rep(1.,NROW(data))*(data$SeedDiff <= data$quality_march_T1),ifelse(rep(1.,NROW(data))*(data$X1_BlkMean <= ((3.560606))),data$X2_BlkMean,0),0))),0)))) +
                 0.100000*tanh(((((9.500000))) - (((data$SeedDiff) - (((((((9.500000))) - (((data$X2_PointsDiffMean) - (((1.107978))))))) - ((4.0)))))))) +
                 0.100000*tanh((((-((((((data$SeedDiff) / 2.0)) + (((((((((data$X2_PointsDiffMean) + (((data$SeedDiff) * 2.0)))) * 2.0)) * 2.0)) * 2.0))))))) - (((data$X2_PointsDiffMean) / 2.0)))) +
                 0.100000*tanh((((((((data$X1_PointsDiffMean) * 2.0)) > (((15.500000))))*1.)) - (((data$Seed1) - ((-((((data$X2_PointsDiffMean) - (((15.500000)))))))))))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*((-((data$X1_WinRatio14d))) <= tanh((tanh((tanh((data$SeedDiff))))))),(7.0),0)) - ((((7.0)) - ((-((data$SeedDiff)))))))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(((data$X1_PointsDiffMean) * 2.0) > ifelse(rep(1.,NROW(data))*(data$X2_PointsDiffMean > data$X1_PointsDiffMean),data$X2_AstMean,0)),ifelse(rep(1.,NROW(data))*(data$X1_PointsDiffMean > data$SeedDiff),((14.0)),0),0)) - (data$X2_PointsDiffMean))) +
                 0.100000*tanh(((data$Seed2) - (((((((13.283867))) - (data$X1_PointsDiffMean))) + (((tanh((((((13.283867))) - (data$X1_PointsDiffMean))))) * (data$X1_PointsDiffMean))))))) +
                 0.100000*tanh(((((ifelse(rep(1.,NROW(data))*(data$SeedDiff > ((data$Seed2) - (data$SeedDiff))),data$Seed2,0)) + (((ifelse(rep(1.,NROW(data))*(data$Seed2 > ((1.107978))),data$X1_BlkMean,0)) - (data$SeedDiff))))) * 2.0)) +
                 0.100000*tanh(((((((9.500000))) - (data$X2_PointsDiffMean))) + (((((9.500000))) - (pmax((pmax((((data$SeedDiff) - ((-2.0)))), (data$SeedDiff))), (((((9.500000))) / 2.0)))))))) +
                 0.100000*tanh((((((-((data$SeedDiff)))) - (((ifelse(rep(1.,NROW(data))*((1.0) <= data$SeedDiff),(-(((7.0)))),0)) * 2.0)))) - ((7.0)))) +
                 0.100000*tanh(((((-9.500000))) - (((data$SeedDiff) + (ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= -998),(((((-9.500000))) + ((-((((data$X2_FgaMin) / 2.0))))))/2.0),(((data$X2_PointsDiffMean) + (data$SeedDiff))/2.0))))))) +
                 0.100000*tanh((((((((((data$X2_PointsDiffMean) - ((8.62799263000488281)))) <= (((data$SeedDiff) * 2.0)))*1.)) - (((data$X2_PointsDiffMean) - ((8.62798881530761719)))))) - (((data$SeedDiff) - ((8.62798881530761719)))))) +
                 0.100000*tanh(((((((data$X1_PointsDiffMean) - (((data$SeedDiff) / 2.0)))) - (ifelse(rep(1.,NROW(data))*(data$SeedDiff <= ((0.961457))),((10.091856)),0)))) - (((((data$X1_PointsDiffMean) - ((2.0)))) / 2.0)))) +
                 0.100000*tanh((((((data$X1_PointsDiffMean) + ((((-(((((data$X2_PointsMean) > (data$X1_PointsMean))*1.))))) - (data$SeedDiff))))/2.0)) - ((-((((-9.500000)))))))) +
                 0.100000*tanh((((((7.11276626586914062)) - (ifelse(rep(1.,NROW(data))*((1.0) > (((data$X1_BlkMean) <= (data$X1_PointsDiffMean))*1.)),((54.409088)),0)))) - (((data$SeedDiff) - (data$X1_BlkMean))))) +
                 0.100000*tanh((((((((7.0)) + ((((7.0)) - (data$X2_PointsDiffMean))))) - (((((7.0)) <= (data$X2_PointsDiffMean))*1.)))) - (data$X2_PointsDiffMean))) +
                 0.100000*tanh(((data$Seed1) + (((data$Seed1) * (((((data$X1_PointsDiffMean) - (((11.146969))))) + (((data$Seed1) * (tanh((((((13.192957))) - (data$Seed1))))))))))))) +
                 0.100000*tanh(((((((((((((((((((((-9.500000))) - (data$SeedDiff))) * 2.0)) * 2.0)) - (data$X2_PointsDiffMean))) * 2.0)) * 2.0)) - (data$X2_PointsDiffMean))) * 2.0)) - (data$X2_PointsDiffMean))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(data$quality_march_T2 <= ((1.129684))),ifelse(rep(1.,NROW(data))*(data$quality_march_T2 > data$quality_march_T1),data$X2_FgaMax,0),0)) - (ifelse(rep(1.,NROW(data))*(((1.109198)) > data$quality_march_T1),(6.0),0)))))
}

gpStdVI<-function(data){
  prediction<-(  0.100000*tanh(((data$X1_FgaMin) * ((-(((((((data$Seed1) * (data$SeedDiff))) + (((1.172603))))/2.0))))))) +
                 0.100000*tanh(((((data$quality_march_T1) + (((((81.401047))) * (((((data$quality_march_T1) - (data$SeedDiff))) * 2.0)))))) + (((data$quality_march_T2) - ((-3.0)))))) +
                 0.100000*tanh(((((78.192352))) + (((ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= data$SeedDiff),data$X2_FgaMin,0)) * ((-((data$X2_PointsDiffMean)))))))) +
                 0.100000*tanh(((data$X1_FgaMedian) - (((((81.804237))) * (((data$X2_PointsMean) * ((((((data$X2_PointsMean) * ((((data$SeedDiff) + (data$quality_march_T2))/2.0)))) + (((1.073863))))/2.0)))))))) +
                 0.100000*tanh((-((((((((((((((data$SeedDiff) - (((data$X2_BlkMean) - (((data$SeedDiff) * 2.0)))))) - ((-((data$X2_WinRatio14d)))))) * 2.0)) * 2.0)) * 2.0)) * 2.0))))) +
                 0.100000*tanh(((data$X2_PointsMean) + (((((((-14.0))) * (pmin((data$SeedDiff), (data$X2_PointsMean))))) - ((((3.0)) + (data$X1_FgaMax))))))) +
                 0.100000*tanh(((((((((data$SeedDiff) + ((((((((((((data$SeedDiff) * 2.0)) * 2.0)) <= (data$X2_BlkMean))*1.)) * 2.0)) - (((data$SeedDiff) * 2.0)))))) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh(((((ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= ifelse(rep(1.,NROW(data))*(data$SeedDiff <= data$quality_march_T1),((82.126343)),0)),data$X2_PointsMedian,0)) + (data$X1_BlkMean))) - (((data$Seed1) * (data$SeedDiff))))) +
                 0.100000*tanh(((((74.500000))) - (((data$X2_PointsDiffMean) * (((data$Seed1) * ((((((data$Seed1) * (data$SeedDiff))) + ((-2.0)))/2.0)))))))) +
                 0.100000*tanh(((((data$X1_PointsDiffMean) * (ifelse(rep(1.,NROW(data))*(data$quality_march_T1 > ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= data$SeedDiff),((data$X2_PointsDiffMean) / 2.0),0)),data$Seed1,0)))) - (data$X2_PointsDiffMean))) +
                 0.100000*tanh(ifelse(rep(1.,NROW(data))*(data$X2_PointsDiffMean > -998),((((data$X2_PointsDiffMean) * (((0.843815))))) - (((((data$X2_PointsDiffMean) - (((data$SeedDiff) * (((12.500000))))))) * (((-14.0)))))),data$SeedDiff)) +
                 0.100000*tanh((((7.46395301818847656)) + ((((((((((-((((78.192352)))))) - (data$X2_OppFgaMean))) - ((0.0)))) * (((data$SeedDiff) - (data$quality_march_T1))))) * 2.0)))) +
                 0.100000*tanh(((((ifelse(rep(1.,NROW(data))*(data$SeedDiff <= ifelse(rep(1.,NROW(data))*(data$SeedDiff <= data$quality_march_T1),data$X2_PointsMedian,0)),((data$X2_PointsMedian) - (data$X2_OppFgaMean)),0)) - (data$Seed1))) * (((55.280548))))) +
                 0.100000*tanh(((data$SeedDiff) + (((((((((((data$X1_BlkMean) + ((((-3.0)) * (data$SeedDiff))))) + ((-3.0)))) * 2.0)) + (data$X1_BlkMean))) + ((-3.0)))))) +
                 0.100000*tanh((-((((((((((((data$SeedDiff) * (((74.500000))))) + (ifelse(rep(1.,NROW(data))*(data$X2_PointsMean <= ((74.500000))),data$X2_PointsMean,0)))/2.0)) * (data$X2_FgaMin))) + (data$X2_PointsMedian))/2.0))))) +
                 0.100000*tanh(((((((((data$Seed2) + (((((((data$X1_PointsDiffMean) + (((data$Seed2) - (data$X2_PointsDiffMean))))) - (data$Seed1))) * 2.0)))) - (data$Seed1))) * 2.0)) * 2.0)) +
                 0.100000*tanh(pmin((data$X1_PointsDiffMean), (pmin((data$X1_PointsDiffMean), (((data$Seed2) * ((((-2.0)) + (((data$Seed2) + (((data$X1_PointsDiffMean) + ((-((data$X2_AstMean)))))))))))))))) +
                 0.100000*tanh(((((((((data$X1_BlkMean) - (data$X2_BlkMean))) - (data$SeedDiff))) - (tanh((data$X2_BlkMean))))) + ((((((5.0)) - (data$X2_BlkMean))) - (data$SeedDiff))))) +
                 0.100000*tanh(((((((data$SeedDiff) - (((((((data$SeedDiff) * 2.0)) * 2.0)) - (((data$X2_BlkMean) * (tanh((data$SeedDiff))))))))) * 2.0)) * 2.0)) +
                 0.100000*tanh(((pmax((((((14.0))) * (pmax(((((-2.0)) - (data$SeedDiff))), (data$SeedDiff))))), (data$SeedDiff))) * ((((2.0)) - (data$SeedDiff))))) +
                 0.100000*tanh(((data$X1_BlkMean) - ((((((((((1.174568))) + (((1.174568))))) > (((data$X1_BlkMean) / 2.0)))*1.)) + (((((data$SeedDiff) + (((1.174568))))) * 2.0)))))) +
                 0.100000*tanh(ifelse(rep(1.,NROW(data))*(data$X2_BlkMean <= -998),((data$SeedDiff) * 2.0),((((data$X2_BlkMean) * (data$Seed2))) - (((data$SeedDiff) + (((data$SeedDiff) * 2.0))))))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*((((((data$X2_BlkMean) > (data$X2_PointsDiffMean))*1.)) - (ifelse(rep(1.,NROW(data))*((-3.0) > data$SeedDiff),data$X2_BlkMean,0))) > data$SeedDiff),(-3.0),0)) - (data$SeedDiff))) +
                 0.100000*tanh(((((((((((tanh((((data$SeedDiff) + (((data$quality_march_T1) + (tanh((data$SeedDiff))))))))) * 2.0)) * 2.0)) - (data$SeedDiff))) * 2.0)) - (data$SeedDiff))) +
                 0.100000*tanh(((((pmin((data$X2_BlkMean), (data$Seed2))) + (pmin((data$Seed2), (data$X1_BlkMean))))) - (data$SeedDiff))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(data$X2_BlkMean <= data$Seed2),ifelse(rep(1.,NROW(data))*(((((4.922822))) + (data$X2_BlkMean)) <= data$X1_PointsDiffMean),ifelse(rep(1.,NROW(data))*(data$X2_BlkMean <= ((4.922822))),data$X1_PointsDiffMean,0),0),0)) - (((4.922822))))) +
                 0.100000*tanh((-((((((data$SeedDiff) + ((((((13.344028))) + ((((((10.500000))) > (data$X1_PointsDiffMean))*1.)))/2.0)))) * (data$X2_PointsMedian)))))) +
                 0.100000*tanh((((((((7.0)) - (data$SeedDiff))) * (((14.0))))) + (((data$SeedDiff) - (data$X1_PointsDiffMean))))) +
                 0.100000*tanh((((data$Seed2) + ((((10.14647388458251953)) * ((((data$X1_PointsDiffMean) + (((((13.430302))) * ((-(((((8.0)) + (data$SeedDiff)))))))))/2.0)))))/2.0)) +
                 0.100000*tanh(pmin((((((data$X2_BlkMean) * 2.0)) - (pmax((data$X2_BlkMean), (data$SeedDiff))))), ((((((8.10927104949951172)) - (pmax((data$X2_BlkMean), (data$SeedDiff))))) * 2.0)))) +
                 0.100000*tanh((((((-((data$Seed1)))) - (data$Seed1))) - (((data$SeedDiff) + (((((data$SeedDiff) + (data$Seed1))) + (data$Seed1))))))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(((4.059742)) <= data$SeedDiff),ifelse(rep(1.,NROW(data))*(((14.500000)) <= -998),data$SeedDiff,((data$X1_BlkMean) - (data$SeedDiff))),0)) + (((((14.500000))) - (data$X2_PointsDiffMean))))) +
                 0.100000*tanh(((data$X2_OppFgaMean) * (((ifelse(rep(1.,NROW(data))*((-((data$SeedDiff))) > data$SeedDiff),((-10.500000)),0)) + (((((-((((-10.500000)))))) + ((-((data$SeedDiff)))))/2.0)))))) +
                 0.100000*tanh(((data$X1_BlkMean) - (((data$SeedDiff) + (((ifelse(rep(1.,NROW(data))*((((10.0)) - (data$SeedDiff)) > data$X1_PointsDiffMean),data$X1_BlkMean,0)) * (pmin((data$X1_BlkMean), (data$Seed1))))))))) +
                 0.100000*tanh(((((((74.500000))) * (((data$quality_march_T1) - ((((data$Seed1) + (((-10.500000))))/2.0)))))) * (((1.500000))))) +
                 0.100000*tanh(((((((-14.0))) + (data$X1_PointsDiffMean))) - ((((data$SeedDiff) + ((((data$SeedDiff) + ((((2.0)) - (((-10.500000))))))/2.0)))/2.0)))) +
                 0.100000*tanh((((-((ifelse(rep(1.,NROW(data))*(data$X2_PointsDiffMean <= (7.0)),ifelse(rep(1.,NROW(data))*((7.0) > data$SeedDiff),ifelse(rep(1.,NROW(data))*((7.0) > data$SeedDiff),((-10.500000)),0),0),0))))) - (((data$X2_PointsDiffMean) / 2.0)))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(pmax((data$X2_PointsDiffMean), (data$Seed1)) <= ((14.500000))),((data$Seed1) + (data$X1_PointsDiffMean)),0)) - ((((data$X2_PointsDiffMean) + (((14.500000))))/2.0)))) +
                 0.100000*tanh((((-(((((data$SeedDiff) + (pmin(((5.93224668502807617)), ((((-(((((data$SeedDiff) + (data$X2_PointsDiffMean))/2.0))))) + ((5.93224668502807617)))))))/2.0))))) - (data$Seed1))) +
                 0.100000*tanh(((((14.500000))) - ((((((data$X1_AstMean) + (((-10.500000))))/2.0)) + (((data$SeedDiff) + (((((-10.500000))) + (data$SeedDiff))))))))))
}

gpStdVII<-function(data){
  prediction<-(  0.100000*tanh(((data$Seed1) * (((((((81.401047))) * (tanh((tanh((((data$quality_march_T1) - (data$SeedDiff))))))))) - ((((-1.0)) - (data$SeedDiff))))))) +
                 0.100000*tanh(((data$SeedDiff) + (((data$SeedDiff) + (((data$SeedDiff) + (((((data$SeedDiff) * ((((-((data$Seed2)))) * (data$SeedDiff))))) * (data$SeedDiff))))))))) +
                 0.100000*tanh((-((((((10.500000))) * (((data$X1_OppFgaMean) * ((((((((10.500000))) * (data$SeedDiff))) + (((data$X1_PointsDiffMean) + ((-1.0)))))/2.0))))))))) +
                 0.100000*tanh((((data$X1_BlkMean) + (((data$SeedDiff) * (pmin((data$Seed1), (pmin((pmin((data$SeedDiff), (((data$SeedDiff) * (data$quality_march_T2))))), ((-((data$Seed1)))))))))))/2.0)) +
                 0.100000*tanh(((((data$X1_BlkMean) * (ifelse(rep(1.,NROW(data))*(((14.500000)) <= ((data$X1_BlkMean) * (((4.059742))))),((4.059742)),0)))) - (((((4.059742))) + (((data$SeedDiff) * (((14.500000))))))))) +
                 0.100000*tanh(((data$X2_OppFgaMean) - (((data$Seed1) * (((data$SeedDiff) * (((11.180296))))))))) +
                 0.100000*tanh(((((((((((((ifelse(rep(1.,NROW(data))*(data$X1_FgaMean <= data$X2_FgaMean),(3.0),0)) - (((0.843815))))) - (((0.843815))))) - (data$SeedDiff))) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh(((data$X2_OppFgaMean) * (((data$X1_OppFgaMean) * (((((data$SeedDiff) * ((-((data$X1_FgaMean)))))) + (data$X2_OppFgaMean))))))) +
                 0.100000*tanh(((((((((((data$Seed2) - (data$Seed1))) * (data$Seed2))) - (data$X2_BlkMean))) - (data$X2_BlkMean))) * (data$Seed2))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(ifelse(rep(1.,NROW(data))*(data$X2_BlkMean > (5.46489477157592773)),data$X2_AstMean,0) > (13.55832576751708984)),data$X2_AstMean,0)) - (((data$X2_BlkMean) * (data$SeedDiff))))) +
                 0.100000*tanh((((-((((data$SeedDiff) - ((((-((((data$SeedDiff) - ((-((((data$X2_BlkMean) - ((-(((-3.0))))))))))))))) * 2.0))))))) * 2.0)) +
                 0.100000*tanh(((((((((((((58.309799))) - (data$X1_FgaMean))) - (((data$SeedDiff) * ((((((data$SeedDiff) * (data$SeedDiff))) + (data$SeedDiff))/2.0)))))) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh((-((((((((43.500000))) - ((-((((((data$SeedDiff) - ((((tanh((data$X1_PointsMedian))) > (data$quality_march_T2))*1.)))) * (data$X2_FgaMin)))))))) * (data$X1_FgaMin)))))) +
                 0.100000*tanh((-((((((((data$X1_FgaMedian) + (((data$SeedDiff) * (data$X2_FgaMean))))) - (data$X2_FgaMean))) - (ifelse(rep(1.,NROW(data))*(data$X1_FgaMedian <= data$X2_FgaMean),data$X2_OppFgaMean,0))))))) +
                 0.100000*tanh(((data$Seed2) * ((-((((((data$SeedDiff) + ((((data$X1_PointsMedian) > (((78.192352))))*1.)))) - (tanh((ifelse(rep(1.,NROW(data))*(data$SeedDiff <= data$Seed2),data$SeedDiff,0))))))))))) +
                 0.100000*tanh(((((data$X2_FgaMin) - ((((((((((3.10548734664916992)) * ((3.10548734664916992)))) / 2.0)) + ((((((3.10548734664916992)) / 2.0)) / 2.0)))) * (data$SeedDiff))))) - (data$X1_FgaMin))) +
                 0.100000*tanh((((3.0)) * (((data$X1_BlkMean) - (pmin((((78.192352))), (((data$SeedDiff) * (ifelse(rep(1.,NROW(data))*(data$X1_BlkMean <= ((data$SeedDiff) * (data$Seed1))),data$Seed1,0)))))))))) +
                 0.100000*tanh(((((((ifelse(rep(1.,NROW(data))*(data$SeedDiff <= (((data$SeedDiff) <= (data$quality_march_T1))*1.)),(((((data$X2_FgaMean) > (data$X1_FgaMean))*1.)) * 2.0),0)) * 2.0)) - (data$SeedDiff))) - (data$quality_march_T2))) +
                 0.100000*tanh(((((data$X1_BlkMean) - (pmin((data$X2_BlkMean), (((data$SeedDiff) + (((10.500000))))))))) - (data$SeedDiff))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(((14.500000)) > data$X2_PointsDiffMean),ifelse(rep(1.,NROW(data))*(((14.500000)) > ((data$X2_BlkMean) * 2.0)),data$X2_BlkMean,0),0)) - (((data$SeedDiff) * 2.0)))) +
                 0.100000*tanh(((data$X1_PointsDiffMean) - (pmax(((((3.0)) + (tanh((((data$X2_PointsDiffMean) + (data$X2_PointsDiffMean))))))), (pmax((((1.172603))), (((data$X2_PointsDiffMean) + (data$SeedDiff))))))))) +
                 0.100000*tanh(((((((data$X1_BlkMean) - ((3.0)))) - (data$SeedDiff))) - ((((((((((data$X1_BlkMean) - ((3.0)))) - (data$SeedDiff))) * 2.0)) <= (((1.172603))))*1.)))) +
                 0.100000*tanh(((((((data$X1_BlkMean) * ((-2.0)))) + ((((data$X1_PointsDiffMean) + ((((data$X1_PointsDiffMean) + (((((-10.500000))) * (((1.172603))))))/2.0)))/2.0)))) - (data$SeedDiff))) +
                 0.100000*tanh(((((((((data$X1_PointsDiffMean) - (((data$X1_BlkMean) * ((3.0)))))) - (data$SeedDiff))) - (data$X1_BlkMean))) - (data$SeedDiff))) +
                 0.100000*tanh((((9.0)) * (((data$X2_BlkMean) + (((((data$Seed2) - (data$SeedDiff))) * 2.0)))))) +
                 0.100000*tanh(((((((15.500000))) - (data$Seed1))) - (pmax(((2.0)), (((data$X2_PointsDiffMean) - (((((15.500000))) - (data$X2_PointsDiffMean))))))))) +
                 0.100000*tanh((((-((((data$SeedDiff) + ((((data$SeedDiff) + ((((((data$SeedDiff) + (((data$Seed1) * (data$X2_BlkMean))))/2.0)) * (data$X1_BlkMean))))/2.0))))))) - (data$X1_BlkMean))) +
                 0.100000*tanh(((((56.062500))) * (((((ifelse(rep(1.,NROW(data))*(data$SeedDiff > tanh((((data$X1_AstMean) / 2.0)))),data$X1_AstMean,0)) - (((data$SeedDiff) / 2.0)))) - (data$Seed1))))) +
                 0.100000*tanh(((((-14.0))) * ((((((4.059742))) + (((((((data$SeedDiff) + ((((data$Seed1) + ((-((data$SeedDiff)))))/2.0)))/2.0)) + (data$SeedDiff))/2.0)))/2.0)))) +
                 0.100000*tanh((((((((((((((data$quality_march_T1) + ((((7.0)) - (data$SeedDiff))))/2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh((-((((ifelse(rep(1.,NROW(data))*((-((data$SeedDiff))) > data$SeedDiff),data$X2_PointsDiffMean,0)) - ((((data$X1_PointsDiffMean) + ((-((data$SeedDiff)))))/2.0))))))) +
                 0.100000*tanh(((data$Seed2) - ((((((((13.63739776611328125)) - (data$X1_PointsDiffMean))) * 2.0)) + (pmax((((((12.500000))) - (data$X1_PointsDiffMean))), (((data$X1_PointsDiffMean) / 2.0)))))))) +
                 0.100000*tanh(((((((((13.344028))) - (ifelse(rep(1.,NROW(data))*(((4.059742)) <= pmin((data$SeedDiff), (((((13.344028))) - (data$Seed1))))),data$X2_PointsDiffMean,0)))) - (data$Seed1))) * 2.0)) +
                 0.100000*tanh((((((((((-((tanh((tanh(((((data$X1_PointsDiffMean) <= (((13.344028))))*1.))))))))) * (data$X2_BlkMean))) * 2.0)) * 2.0)) - (data$SeedDiff))) +
                 0.100000*tanh(((data$X1_FgaMin) - (((pmax((ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= -998),((-1.500000)),(3.0))), (((data$SeedDiff) / 2.0)))) * (data$X2_PointsDiffMean))))) +
                 0.100000*tanh(((((((((((-10.500000))) - (data$SeedDiff))) * 2.0)) - ((((data$X2_PointsDiffMean) + ((((data$X2_PointsDiffMean) + (ifelse(rep(1.,NROW(data))*(data$SeedDiff > -998),((-10.500000)),data$X2_PointsDiffMean)))/2.0)))/2.0)))) * 2.0)) +
                 0.100000*tanh(((((((11.90554523468017578)) > (data$Seed1))*1.)) - (((data$Seed1) - ((((((((((11.90554523468017578)) * (data$Seed2))) / 2.0)) * (data$Seed2))) / 2.0)))))) +
                 0.100000*tanh(((((((43.500000))) * ((((-1.0)) - ((((((data$X2_FgaMin) - (data$X2_OppFgaMean))) + (data$X2_PointsDiffMean))/2.0)))))) - (((43.500000))))) +
                 0.100000*tanh(((((-10.500000))) * (((data$Seed1) - (ifelse(rep(1.,NROW(data))*(((-10.500000)) <= (-((data$SeedDiff)))),((data$SeedDiff) * (((data$SeedDiff) - (((-10.500000)))))),0)))))) +
                 0.100000*tanh((((((-((data$SeedDiff)))) - (data$X1_BlkMean))) + (((((data$X1_PointsDiffMean) - (((13.344028))))) * 2.0)))))
}

gpStdVIII<-function(data){
  prediction<-(  0.100000*tanh(((data$Seed2) + (((data$X1_OppFgaMean) * ((((10.0)) * (((((data$Seed2) * (((((data$Seed2) - (data$Seed1))) * 2.0)))) - ((-3.0)))))))))) +
                 0.100000*tanh(((((data$X1_BlkMean) - (data$Seed2))) + (((((((data$Seed1) * (((data$Seed2) - (data$Seed1))))) + (data$X1_BlkMean))) * (data$X1_BlkMean))))) +
                 0.100000*tanh(((data$X2_FgaMax) - (((data$X1_FgaMax) + (((pmax(((((((6.0)) * (data$SeedDiff))) * (data$SeedDiff))), ((6.0)))) * (data$SeedDiff))))))) +
                 0.100000*tanh((-(((((-2.0)) * (((data$SeedDiff) - (((data$X1_FgaMin) * (((data$SeedDiff) - (ifelse(rep(1.,NROW(data))*(data$X1_FgaMin <= ((43.500000))),data$quality_march_T1,0))))))))))))) +
                 0.100000*tanh((((((((((data$SeedDiff) + (((((79.573532))) * (((((-3.0)) + (data$X1_BlkMean))/2.0)))))/2.0)) + ((-3.0)))) * 2.0)) - (((data$X1_FgaMean) * (data$SeedDiff))))) +
                 0.100000*tanh(((data$SeedDiff) * ((-(((((-((((1.136821)))))) - (((data$SeedDiff) * (((((data$SeedDiff) * (data$Seed1))) * ((-((data$Seed1))))))))))))))) +
                 0.100000*tanh(((((9.500000))) + (((((((((data$X1_FgaMax) * (((data$quality_march_T1) - (data$SeedDiff))))) + (((1.137246))))) + (((1.137246))))) * (data$X1_FgaMax))))) +
                 0.100000*tanh(((((((((ifelse(rep(1.,NROW(data))*(data$quality_march_T2 > data$quality_march_T1),data$quality_march_T1,0)) - (data$SeedDiff))) * (data$X2_FgaMin))) * ((3.0)))) * ((3.0)))) +
                 0.100000*tanh((((((-((((data$SeedDiff) - ((((((-((((data$X2_WinRatio14d) - ((((data$X1_OppFgaMean) <= (((57.152748))))*1.))))))) * 2.0)) * 2.0))))))) * 2.0)) * 2.0)) +
                 0.100000*tanh(((((((((data$SeedDiff) + (((data$X1_PointsDiffMean) - (pmax((data$X2_BlkMean), (data$X2_PointsDiffMean))))))) / 2.0)) - (data$SeedDiff))) * (((79.279411))))) +
                 0.100000*tanh((((((((data$quality_march_T2) > (data$quality_march_T1))*1.)) - ((((data$quality_march_T2) <= (data$quality_march_T1))*1.)))) - (((data$X2_PointsMean) * (data$SeedDiff))))) +
                 0.100000*tanh(((data$X1_BlkMean) + ((((((-3.0)) - (((data$SeedDiff) * 2.0)))) - (((tanh((((((data$SeedDiff) * 2.0)) * 2.0)))) * 2.0)))))) +
                 0.100000*tanh(((((ifelse(rep(1.,NROW(data))*(data$X2_OppFgaMean > ((((((54.441177))) * (data$X1_WinRatio14d))) * (data$quality_march_T1))),data$quality_march_T1,0)) - (data$SeedDiff))) * (data$X2_FgaMean))) +
                 0.100000*tanh(((((ifelse(rep(1.,NROW(data))*(data$X1_OppFgaMean <= ifelse(rep(1.,NROW(data))*(data$X2_FgaMin <= data$X1_OppFgaMean),data$X1_FgaMean,0)),data$X2_OppFgaMean,0)) + (((data$SeedDiff) * (((data$SeedDiff) - (data$X1_FgaMean))))))) * 2.0)) +
                 0.100000*tanh(((((ifelse(rep(1.,NROW(data))*(data$quality_march_T1 > data$SeedDiff),pmax(((-((data$SeedDiff)))), (((data$X2_PointsDiffMean) - (data$SeedDiff)))),0)) * 2.0)) - (data$X2_BlkMean))) +
                 0.100000*tanh(((((1.173600))) - (((data$X1_PointsDiffMean) - (((((((2.500000))) * (((((data$Seed2) - (data$Seed1))) * 2.0)))) * 2.0)))))) +
                 0.100000*tanh((((((((79.573532))) > (data$X1_PointsMedian))*1.)) - (((((data$SeedDiff) + ((((data$X1_PointsMedian) > (data$X2_PointsMedian))*1.)))) + ((((data$X1_PointsMedian) > (data$X2_PointsMedian))*1.)))))) +
                 0.100000*tanh((((((data$X2_PointsMedian) > (((data$SeedDiff) + (data$X1_PointsMedian))))*1.)) - (data$SeedDiff))) +
                 0.100000*tanh((((((-9.500000))) + ((-((((((ifelse(rep(1.,NROW(data))*(data$quality_march_T2 > data$quality_march_T1),tanh((pmin((data$X1_PointsDiffMean), (((-9.500000)))))),0)) + (data$SeedDiff))) * (data$X1_OppFgaMean)))))))/2.0)) +
                 0.100000*tanh(((data$X1_WinRatio14d) - ((((((((data$X2_WinRatio14d) + (data$SeedDiff))/2.0)) + (tanh(((-((data$SeedDiff)))))))) + ((((data$X2_WinRatio14d) > (data$X1_WinRatio14d))*1.)))))) +
                 0.100000*tanh(((((((((((((data$X1_PointsDiffMean) + (((-9.500000))))) - ((((data$X1_PointsDiffMean) + (tanh((((data$SeedDiff) * 2.0)))))/2.0)))) - (data$SeedDiff))) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(data$X2_WinRatio14d <= data$X1_WinRatio14d),ifelse(rep(1.,NROW(data))*(ifelse(rep(1.,NROW(data))*(data$SeedDiff <= data$X1_WinRatio14d),((9.500000)),0) <= (3.0)),data$X1_BlkMean,0),0)) - (data$SeedDiff))) +
                 0.100000*tanh(ifelse(rep(1.,NROW(data))*((((data$X1_WinRatio14d) <= (((0.775000))))*1.) > pmin((((data$X2_BlkMean) - (data$SeedDiff))), (data$SeedDiff))),(((-3.0)) - (data$SeedDiff)),0)) +
                 0.100000*tanh(((pmin(((((6.12126016616821289)) - (((((6.12126016616821289)) + (data$SeedDiff))/2.0)))), (((data$X1_PointsMean) * ((((6.12126016616821289)) - (data$SeedDiff))))))) / 2.0)) +
                 0.100000*tanh((((((-2.0)) - (((data$SeedDiff) + (((4.500000))))))) * 2.0)) +
                 0.100000*tanh((((((((data$quality_march_T1) - ((((data$SeedDiff) + ((-2.0)))/2.0)))) > ((-2.0)))*1.)) - (((data$SeedDiff) - ((6.56482601165771484)))))) +
                 0.100000*tanh(((((data$quality_march_T1) + (((data$quality_march_T1) + (((((-9.500000))) - (data$SeedDiff))))))) + ((((((1.0)) * 2.0)) + (((((-9.500000))) - (data$SeedDiff))))))) +
                 0.100000*tanh((-((((((data$SeedDiff) - (((9.500000))))) + (((data$SeedDiff) + (((((data$SeedDiff) - (((9.500000))))) + ((-3.0))))))))))) +
                 0.100000*tanh((((10.93547630310058594)) - (((((ifelse(rep(1.,NROW(data))*(data$SeedDiff > -998),(((11.57979679107666016)) - (((data$X1_PointsDiffMean) - (data$SeedDiff)))),(11.57979679107666016))) + ((11.57979679107666016)))) * 2.0)))) +
                 0.100000*tanh(((data$X2_BlkMean) + (((ifelse(rep(1.,NROW(data))*((-1.0) <= ((((data$X2_BlkMean) * 2.0)) + ((-((((9.500000)))))))),((3.580156)),0)) - (data$SeedDiff))))) +
                 0.100000*tanh(((((-9.500000))) - (((data$SeedDiff) + (ifelse(rep(1.,NROW(data))*(data$quality_march_T2 > data$quality_march_T1),((((-9.500000))) + (((-9.500000)))),0)))))) +
                 0.100000*tanh(((((data$X1_AstMean) * (((((((79.573532))) * ((((((((data$X1_AstMean) + (((0.500000))))/2.0)) - (data$X2_PointsDiffMean))) * 2.0)))) - (((0.500000))))))) * 2.0)) +
                 0.100000*tanh((((((((((((((8.0)) - (data$X1_AstMean))) + (data$X1_PointsDiffMean))) - (data$X1_AstMean))) + ((8.0)))) - ((((8.0)) / 2.0)))) + (data$X1_PointsDiffMean))) +
                 0.100000*tanh((((((-2.0)) * (data$SeedDiff))) + (((((((data$SeedDiff) - (data$X2_FgaMean))) / 2.0)) + (((((1.136821))) + (data$X1_AstMean))))))) +
                 0.100000*tanh((((-((data$SeedDiff)))) - ((((((((9.500000))) > (((data$SeedDiff) + (((1.137246))))))*1.)) - (((((9.500000))) + (((tanh((data$SeedDiff))) / 2.0)))))))) +
                 0.100000*tanh(((((data$X1_FgaMedian) * (((((-9.500000))) - (data$SeedDiff))))) - (((data$X1_PointsMean) - (((-9.500000))))))) +
                 0.100000*tanh(((((pmin((((((data$X2_OppFgaMean) - (((54.441177))))) / 2.0)), (((((((data$quality_march_T2) <= (((1.136821))))*1.)) > (pmin(((0.0)), (data$SeedDiff))))*1.)))) * 2.0)) * 2.0)) +
                 0.100000*tanh(((((9.500000))) + (((((((9.500000))) + ((((((12.40173244476318359)) - (data$SeedDiff))) + ((-((data$SeedDiff)))))))) + ((-((data$SeedDiff)))))))) +
                 0.100000*tanh(((((data$X2_WinRatio14d) - (((((9.500000))) + (data$SeedDiff))))) - (((((((tanh((tanh((data$quality_march_T1))))) <= (data$X2_WinRatio14d))*1.)) <= (data$quality_march_T1))*1.)))) +
                 0.100000*tanh(((data$X1_PointsDiffMean) + ((((3.0)) + ((((((tanh((data$X1_PointsDiffMean))) <= (data$SeedDiff))*1.)) - (pmax(((((data$X1_AstMean) + (data$X1_PointsDiffMean))/2.0)), (data$SeedDiff))))))))))
}

gpStdIX<-function(data){
  prediction<-(  0.100000*tanh((((((data$X2_PointsDiffMean) + (ifelse(rep(1.,NROW(data))*(data$SeedDiff <= data$quality_march_T1),data$X2_PointsDiffMean,0)))/2.0)) - (((((0.960855))) + (((((((data$SeedDiff) * 2.0)) * 2.0)) * 2.0)))))) +
                 0.100000*tanh((-(((((14.65122699737548828)) * (((((81.841644))) * ((((ifelse(rep(1.,NROW(data))*(data$quality_march_T1 > data$quality_march_T2),data$quality_march_T2,0)) + (data$SeedDiff))/2.0))))))))) +
                 0.100000*tanh(((data$X2_PointsMedian) - (((((72.216667))) + (((data$SeedDiff) * (((((data$Seed1) + (data$Seed1))) * 2.0)))))))) +
                 0.100000*tanh(((((((((((((-9.500000))) * (data$SeedDiff))) + ((((((-2.0)) - (data$SeedDiff))) + (data$X2_PointsDiffMean))))) * 2.0)) * 2.0)) + (data$X2_BlkMean))) +
                 0.100000*tanh(((((data$Seed1) / 2.0)) * (((data$Seed2) * ((-((((((((data$Seed2) / 2.0)) / 2.0)) * (((data$Seed1) * (data$SeedDiff)))))))))))) +
                 0.100000*tanh(((((-9.500000))) - ((((((data$SeedDiff) * (((79.553032))))) + (((((-9.500000))) * (data$X2_PointsDiffMean))))/2.0)))) +
                 0.100000*tanh(((((((data$X2_FgaMin) * (((data$X2_PointsDiffMean) - (((((9.500000))) * (data$SeedDiff))))))) - (((data$X2_FgaMin) * (data$SeedDiff))))) - (data$X2_FgaMin))) +
                 0.100000*tanh(((((data$Seed2) * (((data$Seed1) * (((data$Seed2) - (data$Seed1))))))) - (data$X2_BlkMean))) +
                 0.100000*tanh(((data$X1_PointsMedian) * (((((data$X2_PointsDiffMean) + (((((((-9.500000))) * (data$SeedDiff))) - (((0.962100))))))) - ((((data$X1_PointsMedian) > (data$X2_PointsMedian))*1.)))))) +
                 0.100000*tanh(((((data$Seed2) * 2.0)) + ((-((ifelse(rep(1.,NROW(data))*(data$Seed2 <= pmax(((((((1.500000))) + ((3.0)))/2.0)), (data$Seed1))),((((3.0)) + (data$X1_FgaMedian))/2.0),0))))))) +
                 0.100000*tanh((((((data$X2_FgaMean) > (data$X1_OppFgaMean))*1.)) + ((((-(((((data$X1_OppFgaMean) > (data$X2_FgaMean))*1.))))) - (data$SeedDiff))))) +
                 0.100000*tanh((-((((((((((((79.279411))) * (data$SeedDiff))) - (((ifelse(rep(1.,NROW(data))*(data$X1_PointsMedian <= ((79.279411))),((79.279411)),0)) - (data$X1_PointsMedian))))) * 2.0)) * 2.0))))) +
                 0.100000*tanh((((-((((9.500000)))))) + ((((((-((data$SeedDiff)))) + ((((data$quality_march_T1) <= (data$quality_march_T2))*1.)))) * (data$X1_PointsMedian))))) +
                 0.100000*tanh(((((data$X2_PointsDiffMean) - (((data$SeedDiff) * (((9.500000))))))) - (((tanh((data$X1_PointsDiffMean))) * 2.0)))) +
                 0.100000*tanh(((((data$X2_PointsDiffMean) - ((((((13.06619453430175781)) * (data$SeedDiff))) * 2.0)))) - (((((((data$quality_march_T2) * 2.0)) - (data$X2_PointsDiffMean))) * 2.0)))) +
                 0.100000*tanh(((((data$X2_BlkMean) * (((((data$X1_PointsDiffMean) - (data$X2_PointsDiffMean))) - (data$SeedDiff))))) - (pmin((((data$X1_PointsDiffMean) - (data$X2_PointsDiffMean))), (((data$X2_BlkMean) / 2.0)))))) +
                 0.100000*tanh(((((((-9.500000))) * (((data$SeedDiff) - (ifelse(rep(1.,NROW(data))*(((data$SeedDiff) - ((-1.0))) > data$X1_PointsDiffMean),(2.0),0)))))) - (data$X1_PointsDiffMean))) +
                 0.100000*tanh(((data$X2_PointsMean) - (((data$X2_FgaMean) * (((((((data$SeedDiff) / 2.0)) + ((((data$X2_FgaMean) <= (data$X1_FgaMedian))*1.)))) + ((((data$X2_FgaMean) <= (data$X1_FgaMedian))*1.)))))))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(((data$SeedDiff) * (data$SeedDiff)) <= (6.94940471649169922)),((data$X2_BlkMean) * (data$SeedDiff)),0)) - (((((data$SeedDiff) * 2.0)) * 2.0)))) +
                 0.100000*tanh(((((data$X1_PointsDiffMean) - (((2.500000))))) + (((((data$Seed2) - (data$X2_PointsDiffMean))) - (pmin((data$Seed1), (data$X2_PointsDiffMean))))))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= ((1.109198))),(-3.0),0)) - ((((data$SeedDiff) + (ifelse(rep(1.,NROW(data))*(ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= data$quality_march_T2),data$SeedDiff,0) <= (-3.0)),data$SeedDiff,0)))/2.0)))) +
                 0.100000*tanh(((data$Seed2) * (pmin((((data$X1_PointsDiffMean) - (((5.828788))))), (((data$X2_BlkMean) * (((data$Seed2) + (((((1.108376))) - (data$SeedDiff))))))))))) +
                 0.100000*tanh(((pmin((((data$X1_PointsDiffMean) + (((tanh((ifelse(rep(1.,NROW(data))*(data$quality_march_T2 > data$quality_march_T1),data$X2_PointsDiffMean,0)))) - (data$X2_PointsDiffMean))))), (data$X2_PointsDiffMean))) - (((data$SeedDiff) / 2.0)))) +
                 0.100000*tanh(ifelse(rep(1.,NROW(data))*(data$X2_BlkMean <= -998),((0.960855)),(((((((1.109198))) <= (data$SeedDiff))*1.)) + ((((((data$quality_march_T1) <= (data$quality_march_T2))*1.)) - ((((data$SeedDiff) + (data$X2_BlkMean))/2.0))))))) +
                 0.100000*tanh((((((data$X2_PointsMean) <= (data$X2_PointsMedian))*1.)) - (((data$SeedDiff) - ((((((data$Seed2) <= (((9.500000))))*1.)) * (data$Seed2))))))) +
                 0.100000*tanh(((((data$X1_PointsDiffMean) - (data$X2_PointsDiffMean))) + (((((data$Seed2) - (data$X2_PointsDiffMean))) - ((((((((data$X2_PointsDiffMean) <= (((9.500000))))*1.)) * 2.0)) * 2.0)))))) +
                 0.100000*tanh((((((((((((((3.0)) - ((((data$SeedDiff) + (tanh(((-((data$Seed2)))))))/2.0)))) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh((-((((((((((((((data$SeedDiff) + (data$Seed2))/2.0)) + (((12.606062))))/2.0)) + (data$SeedDiff))) * 2.0)) * (((12.606062)))))))) +
                 0.100000*tanh(((((((((9.500000))) - (((((((data$SeedDiff) + ((((data$SeedDiff) + ((((data$SeedDiff) + (data$X2_PointsDiffMean))/2.0)))/2.0)))/2.0)) + (data$X2_PointsDiffMean))/2.0)))) * 2.0)) * 2.0)) +
                 0.100000*tanh((((-((ifelse(rep(1.,NROW(data))*((9.0) > data$Seed1),data$Seed1,0))))) + (((((data$Seed2) - (ifelse(rep(1.,NROW(data))*(data$Seed1 > (1.0)),((4.500000)),0)))) - (((2.500000))))))) +
                 0.100000*tanh((((((((9.0)) * (tanh((data$SeedDiff))))) + ((-((data$SeedDiff)))))) - (tanh((((data$SeedDiff) + (tanh(((-((data$X2_PointsDiffMean)))))))))))) +
                 0.100000*tanh(((((((((7.136161))) - (data$X1_PointsDiffMean))) * ((-((((7.136161)))))))) + (((((((data$X1_PointsDiffMean) - (data$X2_PointsDiffMean))) - (data$SeedDiff))) + ((5.0)))))) +
                 0.100000*tanh(((((-9.500000))) * (((data$SeedDiff) + (ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= -998),((data$X1_PointsDiffMean) + ((-1.0))),((9.500000)))))))) +
                 0.100000*tanh((((10.0)) - (((pmax((data$SeedDiff), (pmax((data$SeedDiff), (((((9.500000))) / 2.0)))))) - (((((9.500000))) - (data$X2_PointsDiffMean))))))) +
                 0.100000*tanh((((((((((2.0)) - (data$SeedDiff))) - (((data$X1_BlkMean) + (data$X1_BlkMean))))) - (data$SeedDiff))) - (((data$X1_BlkMean) + (data$X2_PointsDiffMean))))) +
                 0.100000*tanh(pmax((((data$SeedDiff) * (((((9.500000))) - (data$SeedDiff))))), (((((9.500000))) * (((data$X1_PointsDiffMean) - (((9.500000))))))))) +
                 0.100000*tanh(((((((data$X1_BlkMean) / 2.0)) - (((ifelse(rep(1.,NROW(data))*(((3.283092)) <= ((data$X2_PointsDiffMean) - (data$X1_BlkMean))),((7.061161)),0)) - (data$X1_BlkMean))))) * (((12.606062))))) +
                 0.100000*tanh(((((((data$X1_FgaMin) + ((((data$X1_PointsDiffMean) + (data$X1_FgaMin))/2.0)))/2.0)) + (ifelse(rep(1.,NROW(data))*(data$X1_FgaMin > ((data$X1_PointsDiffMean) * (data$X1_PointsDiffMean))),(-((data$X1_OppFgaMin))),0)))/2.0)) +
                 0.100000*tanh((((((-((((((data$X2_PointsDiffMean) - (((data$X1_PointsDiffMean) - (data$X1_BlkMean))))) - ((((data$quality_march_T1) <= ((1.0)))*1.))))))) * 2.0)) * 2.0)) +
                 0.100000*tanh(((((((ifelse(rep(1.,NROW(data))*(((12.606062)) > data$Seed1),pmax((((data$Seed1) * 2.0)), (data$Seed2)),0)) - (((12.606062))))) * (((data$Seed1) * 2.0)))) - (data$X2_PointsDiffMean))))
}

gpStdX<-function(data){
  prediction<-(  0.100000*tanh((((((-((data$X1_AstMean)))) - (((((15.031250))) * (data$SeedDiff))))) + (((ifelse(rep(1.,NROW(data))*(data$X2_FgaMedian > data$X1_FgaMean),((data$Seed2) * ((3.0))),0)) * 2.0)))) +
                 0.100000*tanh(((((((((((((43.500000))) - (((data$X1_FgaMin) + (((data$SeedDiff) * (((data$SeedDiff) * (data$SeedDiff))))))))) * 2.0)) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh((((((((((((((((-((data$X2_BlkMean)))) + (ifelse(rep(1.,NROW(data))*(data$quality_march_T1 > data$SeedDiff),(8.0),0)))) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)) * 2.0)) +
                 0.100000*tanh(((((75.500000))) * ((((-((((44.500000)))))) + (((data$X2_FgaMin) - (((data$SeedDiff) * (((75.500000))))))))))) +
                 0.100000*tanh(((((((((((data$SeedDiff) * (((-9.500000))))) - (((-9.500000))))) - (((-9.500000))))) - ((((((((-9.500000))) <= (((-9.500000))))*1.)) * 2.0)))) - (data$X2_PointsDiffMean))) +
                 0.100000*tanh((((((((((((((((((data$quality_march_T1) <= (data$quality_march_T2))*1.)) - (((data$SeedDiff) * 2.0)))) * 2.0)) * 2.0)) - ((1.0)))) * 2.0)) * 2.0)) - (data$quality_march_T2))) +
                 0.100000*tanh(((data$X2_PointsMean) + ((((-((((data$X1_PointsMean) * ((((data$SeedDiff) + (tanh((ifelse(rep(1.,NROW(data))*(data$X1_PointsMean > data$X2_PointsMean),data$Seed2,0)))))/2.0))))))) * 2.0)))) +
                 0.100000*tanh(((((74.920837))) * (ifelse(rep(1.,NROW(data))*(((74.920837)) <= -998),((75.500000)),((((data$X2_PointsDiffMean) - (((data$X1_PointsDiffMean) * 2.0)))) - (((data$X1_AstMean) * (data$SeedDiff)))))))) +
                 0.100000*tanh(((((((-5.500000))) * (data$SeedDiff))) - ((-((((((((data$X1_BlkMean) * (data$X1_BlkMean))) / 2.0)) + ((((-3.0)) + ((-3.0))))))))))) +
                 0.100000*tanh((((-((((((0.708333))) * (((data$X2_AstMean) * (data$SeedDiff)))))))) - (ifelse(rep(1.,NROW(data))*(((0.708333)) > tanh((data$X2_WinRatio14d))),data$X1_PointsDiffMean,0)))) +
                 0.100000*tanh((((((((((-3.0)) + (data$X1_BlkMean))) - (data$SeedDiff))) * (((14.500000))))) - (((data$X1_BlkMean) + (pmin((data$X1_PointsDiffMean), (data$X1_BlkMean))))))) +
                 0.100000*tanh(((data$X1_PointsDiffMean) - (ifelse(rep(1.,NROW(data))*(tanh((((((((data$X1_PointsDiffMean) - (data$X2_AstMean))) - ((1.0)))) - (tanh((data$quality_march_T2)))))) <= data$SeedDiff),((75.500000)),0)))) +
                 0.100000*tanh(((data$X2_PointsMean) * (((ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= -998),data$X1_OppFgaMean,(-((((75.500000))))))) - (((data$X2_PointsMean) * (data$SeedDiff))))))) +
                 0.100000*tanh((((((((((-((((((data$SeedDiff) * (((1.213533))))) * (((1.213533)))))))) + (pmax((data$X1_BlkMean), (data$X1_PointsDiffMean))))) - (data$X2_PointsDiffMean))) * 2.0)) * 2.0)) +
                 0.100000*tanh(((((((((((-9.500000))) * (data$SeedDiff))) - (data$X1_PointsDiffMean))) * (((12.073816))))) - (((((-((data$X2_FgaMean)))) + ((3.0)))/2.0)))) +
                 0.100000*tanh(((data$Seed2) - (ifelse(rep(1.,NROW(data))*(((75.500000)) > (-((((data$SeedDiff) * (data$X2_PointsMean)))))),data$X1_AstMean,0)))) +
                 0.100000*tanh(((((pmin((data$X2_PointsDiffMean), (data$X1_BlkMean))) - (pmin(((3.0)), (data$X1_PointsDiffMean))))) - (((data$SeedDiff) * 2.0)))) +
                 0.100000*tanh((-((((data$SeedDiff) + (((tanh(((-((ifelse(rep(1.,NROW(data))*(((1.112054)) > data$quality_march_T1),(((((((78.165054))) + ((-((data$X1_PointsMedian)))))/2.0)) * 2.0),0))))))) * 2.0))))))) +
                 0.100000*tanh((((((-((((data$SeedDiff) - ((((((((((-((data$X2_PointsDiffMean)))) + (((data$X1_PointsDiffMean) - (data$SeedDiff))))) * 2.0)) * 2.0)) * 2.0))))))) * 2.0)) * 2.0)) +
                 0.100000*tanh(((((((((data$Seed2) - (data$SeedDiff))) - (((data$SeedDiff) - (tanh((data$Seed2))))))) - (data$SeedDiff))) - (data$SeedDiff))) +
                 0.100000*tanh(((data$Seed2) - (((data$SeedDiff) - (((data$Seed2) - (((data$SeedDiff) - (pmin(((2.0)), (data$Seed2))))))))))) +
                 0.100000*tanh((((((ifelse(rep(1.,NROW(data))*(data$X2_AstMean > ((14.500000))),((75.500000)),0)) + ((-((((data$SeedDiff) * (((14.500000)))))))))/2.0)) - (data$X2_AstMean))) +
                 0.100000*tanh((-((((data$SeedDiff) + (((tanh((data$X1_PointsDiffMean))) - (ifelse(rep(1.,NROW(data))*((-((data$SeedDiff))) <= data$X1_PointsDiffMean),(-((((((14.500000))) - (data$X1_PointsDiffMean))))),0))))))))) +
                 0.100000*tanh((((-3.0)) - (((data$SeedDiff) + (ifelse(rep(1.,NROW(data))*(data$quality_march_T2 <= -998),(-(((-3.0)))),ifelse(rep(1.,NROW(data))*(data$X2_OppFgaMean <= ((55.181816))),data$X1_BlkMean,0))))))) +
                 0.100000*tanh(((pmax((data$X1_PointsDiffMean), (data$SeedDiff))) * (((((((((79.017998))) * 2.0)) * (((((data$X1_PointsDiffMean) - (((10.500000))))) - (data$SeedDiff))))) - (data$SeedDiff))))) +
                 0.100000*tanh(((((((15.632351))) - (pmax((data$X2_PointsDiffMean), (((((15.632351))) - (data$X2_PointsDiffMean))))))) - (((data$SeedDiff) - ((((data$Seed2) <= (data$X2_PointsDiffMean))*1.)))))) +
                 0.100000*tanh(((((data$Seed2) * 2.0)) + (pmin(((((((7.74417591094970703)) - (data$SeedDiff))) - (((data$Seed2) * 2.0)))), (((data$Seed2) - (data$SeedDiff))))))) +
                 0.100000*tanh(((data$X1_PointsDiffMean) - (((data$SeedDiff) + (((((((((-((data$SeedDiff)))) <= (data$X1_PointsDiffMean))*1.)) * 2.0)) + (((15.632351))))))))) +
                 0.100000*tanh(((((((((14.500000))) * (tanh((((ifelse(rep(1.,NROW(data))*(((14.984375)) > data$X1_PointsDiffMean),((4.984403)),0)) * (data$SeedDiff))))))) / 2.0)) - (data$SeedDiff))) +
                 0.100000*tanh(((tanh((data$SeedDiff))) - (pmin((((pmax((((data$Seed2) - (data$X2_BlkMean))), (((data$SeedDiff) / 2.0)))) / 2.0)), (((((5.500000))) + (data$SeedDiff))))))) +
                 0.100000*tanh(((((((((((data$X1_PointsDiffMean) - ((-3.0)))) - (data$X2_PointsDiffMean))) + ((10.89973163604736328)))) - (data$X2_PointsDiffMean))) - (ifelse(rep(1.,NROW(data))*(data$SeedDiff > data$X2_PointsDiffMean),((10.500000)),0)))) +
                 0.100000*tanh(((((((((data$X1_AstMean) - ((-1.0)))) - (((data$X2_PointsDiffMean) * 2.0)))) * 2.0)) * 2.0)) +
                 0.100000*tanh(((((((((11.500000))) - (ifelse(rep(1.,NROW(data))*(data$X1_BlkMean <= ((((data$X2_BlkMean) - (data$SeedDiff))) - (((-1.500000))))),((14.500000)),0)))) - (data$X1_BlkMean))) - (data$SeedDiff))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(data$Seed2 <= ((((data$X1_BlkMean) * 2.0)) + (((1.174509))))),ifelse(rep(1.,NROW(data))*(((1.174509)) <= data$Seed2),(((8.0)) + (((1.174509)))),0),0)) - (data$SeedDiff))) +
                 0.100000*tanh(pmin((data$X1_BlkMean), ((((((((((((((data$X1_PointsDiffMean) - (((data$X2_PointsDiffMean) * 2.0)))) / 2.0)) + (data$X1_PointsDiffMean))/2.0)) - (data$X1_BlkMean))) * 2.0)) * 2.0)))) +
                 0.100000*tanh((((11.06205177307128906)) - (((data$SeedDiff) + (ifelse(rep(1.,NROW(data))*(data$SeedDiff <= pmin((data$Seed2), (tanh((data$Seed2))))),((((10.500000))) * 2.0),0)))))) +
                 0.100000*tanh(((((((((((data$X2_PointsDiffMean) + (data$Seed1))/2.0)) + (((data$X1_PointsDiffMean) - (data$X2_PointsDiffMean))))/2.0)) - (data$X1_AstMean))) + (data$X1_PointsDiffMean))) +
                 0.100000*tanh((((4.0)) - (ifelse(rep(1.,NROW(data))*(ifelse(rep(1.,NROW(data))*(data$Seed1 <= ((11.970367))),data$X2_FgaMax,0) <= ifelse(rep(1.,NROW(data))*(((11.970367)) <= data$X1_PointsDiffMean),pmax((((11.970367))), (data$X1_FgaMax)),0)),data$Seed1,0)))) +
                 0.100000*tanh(((ifelse(rep(1.,NROW(data))*(data$X1_AstMean <= data$Seed2),data$Seed2,0)) + ((((((((-3.0)) * 2.0)) + (ifelse(rep(1.,NROW(data))*((13.55649471282958984) <= data$Seed2),data$X1_BlkMean,0)))) + (data$X1_BlkMean))))) +
                 0.100000*tanh((-((((pmax((data$SeedDiff), (data$quality_march_T2))) - (ifelse(rep(1.,NROW(data))*(ifelse(rep(1.,NROW(data))*(data$quality_march_T1 <= data$quality_march_T2),data$X1_AstMean,0) > pmax((data$SeedDiff), (data$X2_PointsDiffMean))),(12.25336360931396484),0))))))))
}



gpStd<-function(data,n){
  if(n==1){
    predictions<-gpStdI(data)
  }
  else if(n==2){
    predictions<-gpStdII(data)
  }
  else if(n==3){
    predictions<-gpStdIII(data)
  }
  else if(n==4){
    predictions<-gpStdIV(data)
  }
  else if(n==5){
    predictions<-gpStdV(data)
  }
  else if(n==6){
    predictions<-gpStdVI(data)
  }
  else if(n==7){
    predictions<-gpStdVII(data)
  }
  else if(n==8){
    predictions<-gpStdVIII(data)
  }
  else if(n==9){
    predictions<-gpStdIX(data)
  }
  else if(n==10){
    predictions<-gpStdX(data)
  }
  else{
    predictions<-(gpStdI(data)+gpStdII(data)+gpStdIII(data)+gpStdIV(data)+gpStdV(data)+gpStdVI(data)+gpStdVII(data)+gpStdVIII(data)+gpStdIX(data)+gpStdX(data))/10
  }
  
}

data_matrix$ResultDiff = sqrt(abs(data_matrix$ResultDiff)+1)*sign(data_matrix$ResultDiff)
smooth_model = list()
noOfFolds <- 10
oof<-rep(0, nrow(data_matrix))
folds<-KFold((data_matrix$ResultDiff>.0)*1, nfolds = noOfFolds, stratified = TRUE, seed = 0)

for(fld in 1:noOfFolds){
  print(paste0("Fold: ",fld))
  val<-subset(data_matrix, kfix %in% unlist(folds[fld]))[,allfeatures]
  vis<-subset(data_matrix, !(kfix %in% unlist(folds[fld])))[,allfeatures]
  p<-gpStd(val,fld)
  smooth_model[[fld]] =smooth.spline(x = p, y = ifelse(val$ResultDiff > 0, 1, 0))
  clp<-predict(smooth_model[[fld]],p)$y
  clp<-pmax( 0.025, pmin( clp, 0.975))
  oof[ unlist(folds[fld])]<-clp
  print(paste0("Smooth ", fld, " ", logLoss((val$ResultDiff>0)*1,clp )))
}
print(paste0("Smooth ",logLoss((data_matrix$ResultDiff>0)*1,oof )))

### Run predictions
sub$Season = as.numeric(substring(sub$ID,1,4))#2020
sub$T1 = as.numeric(substring(sub$ID,6,9))
sub$T2 = as.numeric(substring(sub$ID,11,14))

Z = sub %>% 
  left_join(season_summary_X1, by = c("Season", "T1")) %>% 
  left_join(season_summary_X2, by = c("Season", "T2")) %>%
  left_join(select(seeds, Season, T1 = TeamID, Seed1 = Seed), by = c("Season", "T1")) %>% 
  left_join(select(seeds, Season, T2 = TeamID, Seed2 = Seed), by = c("Season", "T2")) %>% 
  mutate(SeedDiff = Seed1 - Seed2) %>%
  left_join(select(quality, Season, T1 = Team_Id, quality_march_T1 = quality), by = c("Season", "T1")) %>%
  left_join(select(quality, Season, T2 = Team_Id, quality_march_T2 = quality), by = c("Season", "T2"))
nrow(Z)
test_matrix<-Z[,features]
test_matrix<-test_matrix %>% mutate_all(~ifelse(is.na(.), -999, .))

predCols = list()
for(fld in 1:noOfFolds)
{
  p<-gpStd(test_matrix,fld)
  clp<-predict(smooth_model[[fld]],p)$y
  clp<-pmax( 0.025, pmin( clp, 0.975))
  nm = paste0("predictions",fld)
  test_matrix[,nm]<-clp
  predCols[fld] = nm
}
predCols<-unlist(predCols)
Z$Pred<-rowMeans(test_matrix[,predCols])
write.csv(select(Z, ID, Pred), "gpsubmission_stage_1.csv", quote=F,row.names = FALSE)