check_golden_rules2 <- function(curformula, NOPS_check = FALSE) {
# curformula<-d2$Formula[1]
curformula <- as.character(curformula)
strsplit_var <- strsplit(curformula, split = "")
g1 <- gregexpr(curformula, pattern = "N[0-9]*")
regexp_len <- attr(g1[[1]], "match.length")
if (regexp_len > 0) {
if (regexp_len == 1) {
numnitrogens <- 1
} else {
numnitrogens <- paste(strsplit_var[[1]][(g1[[1]][1] +
1):(g1[[1]][1] + regexp_len - 1)], collapse = "")
numnitrogens <- as.numeric(numnitrogens)
}
} else {
numnitrogens <- 0
}
g1 <- gregexpr(curformula, pattern = "C[0-9]*")
regexp_len <- attr(g1[[1]], "match.length")
numcarbons <- 0
if (regexp_len > 0) {
if (regexp_len == 1) {
numcarbons <- 1
} else {
numcarbons <- paste(strsplit_var[[1]][(g1[[1]][1] +
1):(g1[[1]][1] + regexp_len - 1)], collapse = "")
numcarbons <- as.numeric(numcarbons)
}
} else {
numcarbons <- 0
}
g1 <- gregexpr(curformula, pattern = "O[0-9]*")
regexp_len <- attr(g1[[1]], "match.length")
if (regexp_len > 0) {
if (regexp_len == 1) {
numoxygens <- 1
} else {
numoxygens <- paste(strsplit_var[[1]][(g1[[1]][1] +
1):(g1[[1]][1] + regexp_len - 1)], collapse = "")
numoxygens <- as.numeric(numoxygens)
}
} else {
numoxygens <- 0
}
g3 <- gregexpr(curformula, pattern = "H[0-9]*")
regexp_len3 <- attr(g3[[1]], "match.length")
numhydrogens <- 0
if (regexp_len3 > 0) {
if (regexp_len3 == 1) {
numhydrogens <- 1
} else {
numhydrogens <- paste(strsplit_var[[1]][(g3[[1]][1] +
1):(g3[[1]][1] + regexp_len3 - 1)], collapse = "")
numhydrogens <- as.numeric(numhydrogens)
}
} else {
numhydrogens <- 0
}
g3 <- gregexpr(curformula, pattern = "P[0-9]*")
regexp_len3 <- attr(g3[[1]], "match.length")
if (regexp_len3 > 0) {
if (regexp_len3 == 1) {
numphos <- 1
} else {
numphos <- paste(strsplit_var[[1]][(g3[[1]][1] +
1):(g3[[1]][1] + regexp_len3 - 1)], collapse = "")
numphos <- as.numeric(numphos)
}
} else {
numphos <- 0
}
g3 <- gregexpr(curformula, pattern = "S[0-9]*")
regexp_len3 <- attr(g3[[1]], "match.length")
if (regexp_len3 > 0) {
if (regexp_len3 == 1) {
numsulphur <- 1
} else {
numsulphur <- paste(strsplit_var[[1]][(g3[[1]][1] +
1):(g3[[1]][1] + regexp_len3 - 1)], collapse = "")
numsulphur <- as.numeric(numsulphur)
}
} else {
numsulphur <- 0
}
if (numcarbons < 1) {
bool_check <- 0
} else {
max_hydrogens <- (2 * numcarbons) + numnitrogens +
2
nitrogen_to_carbon_ratio <- numnitrogens/numcarbons
oxygen_to_carbon_ratio <- numoxygens/numcarbons
phosphorus_to_carbon_ratio <- numphos/numcarbons
sulphur_to_carbon_ratio <- numsulphur/numcarbons
hydrogens_to_carbon_ratio <- numhydrogens/numcarbons
bool_check <- 1
if (hydrogens_to_carbon_ratio < 0.1 | hydrogens_to_carbon_ratio >
6) {
bool_check = 0
}
if (nitrogen_to_carbon_ratio > 4) {
bool_check = 0
}
if (oxygen_to_carbon_ratio > 3) {
bool_check = 0
}
if (phosphorus_to_carbon_ratio > 2) {
bool_check = 0
}
if (sulphur_to_carbon_ratio > 3) {
bool_check = 0
}
if (NOPS_check == TRUE) {
# NOPS>1
if (numnitrogens > 1 & numoxygens > 1 & numphos >
1 & numsulphur > 1) {
if (numnitrogens > 10 | numoxygens > 20 |
numphos > 4 | numsulphur > 3) {
bool_check <- 0
}
}
# NOP>3
if (numnitrogens > 3 & numoxygens > 3 & numphos >
3) {
if (numnitrogens > 11 | numoxygens > 22 |
numphos > 6) {
bool_check <- 0
}
}
# OPS>1
if (numoxygens > 1 & numphos > 1 & numsulphur >
1) {
if (numoxygens > 14 | numphos > 3 | numsulphur >
3) {
bool_check <- 0
}
}
# PSN>1
if (numnitrogens > 1 & numphos > 1 & numsulphur >
1) {
if (numnitrogens > 4 | numphos > 3 | numsulphur >
3) {
bool_check <- 0
}
}
# NOS>6
if (numnitrogens > 6 & numoxygens > 6 & numsulphur >
6) {
if (numnitrogens > 19 | numoxygens > 14 |
numsulphur > 8) {
bool_check <- 0
}
}
}
}
res <- cbind(curformula, bool_check)
res <- as.data.frame(res)
return(res)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.