S3-eu-west-1.amazonaws.com
Supplementary InformationFigure 1: Distance weighted error from the 100 runs of stratified 10-fold cross-validation of each of the networks, the average distance weighted error for each run and a line of the cumulative average of the distance weighted error. A. Average distance weighted error of the original network after each run. B. Average distance weighted error of the reaction alerts network after each run, using the alerts from the OECD QSAR Toolbox with autoxidation and metabolism. C. Average distance weighted error of the reaction alerts network after each run, using the alerts from the OECD QSAR Toolbox without autoxidation and metabolism. D. Average distance weighted error of the control network after each run. E. Average distance weighted error of the reaction alerts network after each run, using the alerts from Toxtree with autoxidation and metabolism. F. Average distance weighted error of the reaction alerts network after each run, using the alerts from Toxtree without autoxidation and metabolism.Validation using RA basic outline of the R script we have created is given in figure 2. ADDIN ZOTERO_ITEM CSL_CITATION {"citationID":"2i2266tubi","properties":{"formattedCitation":"(25)","plainCitation":"(25)"},"citationItems":[{"id":86,"uris":[""],"uri":[""],"itemData":{"id":86,"type":"article-journal","title":"Reproducing the ITS-2 model using R","source":"Google Scholar","URL":"","author":[{"family":"Pirone","given":"Jason R."},{"family":"Smith","given":"Marjolein"},{"family":"Kleinstreuer","given":"Nicole"},{"family":"Burns","given":"Thomas"},{"family":"Strickland","given":"Judy"},{"family":"Dancik","given":"Yuri"},{"family":"Morris","given":"Richard"},{"family":"Rinckel","given":"Lori"},{"family":"Casey","given":"Warren"},{"family":"Jaworska","given":"Joanna"}],"issued":{"date-parts":[["2014"]]},"accessed":{"date-parts":[["2015",10,13]]}}}],"schema":""} (25)Figure 2: Diagram of the different steps in running the R code for the different networks. (Include load data and packages step up front.)Before beginning it should be noted that we used R 3.2.1 x86_64 unknown-linux-gnu, other versions of R may work but have not been tested. It should also be noted that as of writing this the multicore package used is not available on windows installations of R. First download the compressed (.ZIP) folder containing files for running analysis from: . Expand the zip and from the ITS-OS folder copy the ITS2_Lipid_Test_102313.txt, ITS2_Lipid_Train_102313.txt, ITS2_R_version.R, and ITS2_Supplemental_R_Funtions.R to your project folder. Open ITS2_Lipid_Test_102313.txt and ITS2_Lipid_Train_102313.txt files in any plain test editor and combine them into one large new file called All_Data.txt, save this new file to your project folder. (To duplicate the exact set-up as use you will need to eliminate the compounds with CAS numbers 5910-85-0, 3326-32-7, 2785-87-7, 26172-55-4.) Create another empty folder in your project folder labelled 1000_Strat, this is to store the results and input files generated which will be unique to your run.Open the ITS2_R_version.R file using any plain text editor. The first step of modifying the ITS2_R_version.R file will involve deleting all of the code before code chuck 7. Code chunks 9, 12, 14, 15, 18, 19, 20, 22, 23, 25, 30, and chunk number 33 to the end. The deleted code chunks either pulled in the originally test and training set or were responsible for displaying graphs and tables as the code ran, which will be unnecessary for our run. Then add the code as shown in figure 5. This will result in the ITS2_R_version.R being set-up to run as shown in figure 4.### Block 0: Import DataAll_Data <- read.delim(("All_Data.txt"),row.names=1)names(All_Data)All_Data <- read.delim(("Aug7.txt"),row.names=1)names(All_Data)### Block 1 and 2: Break-up Dataset and Loop on n Processorsstratified_folds <- function(dataFrame,columnOfInterest,kfolds=10){#note assumes that the data is of numeric value in the columnOfInterest #figuring out how many of each valuevalues <- unique(dataFrame[,columnOfInterest])distributionVector = numeric()extraVector = numeric()for(i in 1:length(values)){distributionVector <- c(distributionVector,floor(sum(dataFrame[,columnOfInterest] == values[i]) / kfolds))extraVector <- c(extraVector,sum(dataFrame[,columnOfInterest] == values[i]) %% kfolds)}#generating a list of vectors based on the number of folds and the distribution#gives number of extra to add to eachdistributionMatrix <- matrix(,nrow=kfolds,ncol=length(values))for(j in 1:kfolds){distributionMatrix[j,] <- distributionVector}number_to_add = numeric() # number of extra values to add to each listfor(k in 1:kfolds){number_to_add[k] = floor(sum(extraVector)/kfolds)}number_to_add_old <- number_to_addwhile(sum(extraVector) > sum(number_to_add)){random_extra = floor(runif(1,1,kfolds+1))if(number_to_add_old[random_extra] == number_to_add[random_extra]){number_to_add[random_extra] = number_to_add[random_extra] + 1}}tempExtraVector <- extraVectorextraMatrix <- matrix(,nrow=kfolds,ncol=length(values))extraMatrix[,] <- 0 while(sum(extraMatrix) < sum(number_to_add)){extraMatrix[,] <- 0escapeCounter = 10000 #not the greatest way to do this but it should workwhile(escapeCounter > 0){random_extra_column = floor(runif(1,1,length(values)+1))random_extra_row = floor(runif(1,1,kfolds+1))if (sum(extraMatrix[,random_extra_column]) < extraVector[random_extra_column] & sum(extraMatrix[random_extra_row,]) < number_to_add[random_extra_row]){extraMatrix[random_extra_row,random_extra_column] <- 1}escapeCounter = escapeCounter - 1}}distributionMatrix <- distributionMatrix + extraMatrix#Breaking up the Data Frame into k-fold sectionsdistributionMatrixOriginal <- distributionMatrixdataFramesToReturn = list()for(p in 1:kfolds){firstRow = sample(nrow(dataFrame),1)assign(paste("newDataFrame",p,sep=""),dataFrame[firstRow,])distributionMatrix[p,dataFrame[firstRow,columnOfInterest]] = distributionMatrix[p,dataFrame[firstRow,columnOfInterest]] - 1dataFrame <- dataFrame[-c(firstRow),]while(nrow(eval(parse(text=noquote(paste("newDataFrame",p,sep=""))))) < sum(distributionMatrixOriginal[p,])){testSample = sample(nrow(dataFrame),1)if(distributionMatrix[p,dataFrame[testSample,columnOfInterest]] > 0){assign(paste("newDataFrame",p,sep=""),rbind(eval(parse(text=noquote(paste("newDataFrame",p,sep="")))),dataFrame[testSample,]))distributionMatrix[p,dataFrame[testSample,columnOfInterest]] = distributionMatrix[p,dataFrame[testSample,columnOfInterest]] - 1dataFrame <- dataFrame[-c(testSample),]}}}dataFramesToReturn = list(newDataFrame1,newDataFrame2,newDataFrame3,newDataFrame4,newDataFrame5,newDataFrame6,newDataFrame7,newDataFrame8,newDataFrame9,newDataFrame10)return(dataFramesToReturn)}foreach(n=1:100) %dopar%{tenData_Frames <- stratified_folds(All_Data,1,10)build_a_list = 1while(build_a_list < 11){testData <- as.data.frame(tenData_Frames[build_a_list])if(build_a_list<3){comboFrameOne <-tenData_Frames[9]comboFrameOne <- as.data.frame(comboFrameOne)comboFrameTwo <-tenData_Frames[10]comboFrameTwo <- as.data.frame(comboFrameTwo)trainData <- rbind(comboFrameOne,comboFrameTwo)frameCounter = 1while(frameCounter < 9){comboFrameOne <- tenData_Frames[frameCounter]comboFrameOne <- as.data.frame(comboFrameOne)if(build_a_list != frameCounter){trainData <- rbind(trainData,comboFrameOne)}frameCounter = frameCounter + 1}}if(build_a_list>2){comboFrameOne <-tenData_Frames[1]comboFrameOne <- as.data.frame(comboFrameOne)comboFrameTwo <-tenData_Frames[2]comboFrameTwo <- as.data.frame(comboFrameTwo)trainData <- rbind(comboFrameOne,comboFrameTwo)frameCounter = 3while(frameCounter < 11){comboFrameOne <- tenData_Frames[frameCounter]comboFrameOne <- as.data.frame(comboFrameOne)if(build_a_list != frameCounter){trainData <- rbind(trainData,comboFrameOne)}frameCounter = frameCounter + 1}}testData <- testData[,c("LLNA","KEC1.5","KEC3","IC50","CD86","DPRACys","DPRALys","logKow","Cfree","AUC120","TIMES","LLNA.1","LLNA.2","LLNA.3","LLNA.4","LLNA.Expected.Value")]testData[c("Bioavailability.Cluster 1","Bioavailability.Cluster 2","Bioavailability.Cluster 3","Bioavailability.Expected Value","Cysteine.Cluster 1","Cysteine.Cluster 2","Cysteine.Cluster 3","Cysteine.Expected Value")] <- 1write.table(testData,paste("1000_strat/testData",n,".",build_a_list,".txt",sep=""))write.table(trainData,paste("1000_strat/trainData",n,".",build_a_list,".txt",sep=""))### Block 3: run original R-code on all folds###Code from Pirone, et al.####### Block 4: Store results LLNA_predicted_vs_real <- testData[1]LLNA_predicted_vs_real$LLNA_predicted <- as.numeric(testCaimPredClass$pred$LLNA)LLNA_predicted_vs_real$LLNA_difference <- (LLNA_predicted_vs_real$LLNA - LLNA_predicted_vs_real$LLNA_predicted)LLNA_probability <- testData[1]LLNA_probability <- cbind(LLNA_probability,testCaimPredDist$pred$LLNA)write.table(testCaimTable,paste("1000_strat/testResult",n,".",build_a_list,".txt",sep=""))write.table(LLNA_predicted_vs_real,paste("1000_strat/testLLNA_r_vs_p_",n,".",build_a_list,".txt",sep=""))write.table(LLNA_probability,paste("1000_strat/LLNA_probability",n,".",build_a_list,".txt",sep=""))build_a_list = build_a_list + 1}}Figure 5: Modified R-script to run Stratified model.A brief explanation of what the code does: “The first step of the code allowed each individual subset of 10 runs to occur on multiple processors using the DoMC package for R. The second breaks up the dataset into the 10 separate folds for each run. The third uses the original R code from the Pirone, et al. paper to run through the 10 folds using once each as the test and combining the other 9 folds into the training set. ADDIN ZOTERO_ITEM CSL_CITATION {"citationID":"m79jf0j4","properties":{"formattedCitation":"(25)","plainCitation":"(25)"},"citationItems":[{"id":86,"uris":[""],"uri":[""],"itemData":{"id":86,"type":"article-journal","title":"Reproducing the ITS-2 model using R","source":"Google Scholar","URL":"","author":[{"family":"Pirone","given":"Jason R."},{"family":"Smith","given":"Marjolein"},{"family":"Kleinstreuer","given":"Nicole"},{"family":"Burns","given":"Thomas"},{"family":"Strickland","given":"Judy"},{"family":"Dancik","given":"Yuri"},{"family":"Morris","given":"Richard"},{"family":"Rinckel","given":"Lori"},{"family":"Casey","given":"Warren"},{"family":"Jaworska","given":"Joanna"}],"issued":{"date-parts":[["2014"]]},"accessed":{"date-parts":[["2015",10,13]]}}}],"schema":""} (25) This was of course modified dependent on which of the three networks were run. The results are then stored for each run and the test completed 10 times before moving on to complete another set.”To run the code open R and type the following to install the required packages and supplemental functions (note that R is case sensitive):install.packages("gRbase")install.packages("gRain")install.packages("poLCA")install.packages("discretization")install.packages("xtable")source("")biocLite(c("graph","RBGL","Rgraphviz"))install.packages("doMC")library(gRain)library(poLCA)library(discretization)library(xtable)library(graph)library(RBGL)library(Rgraphviz)library(gRbase)library(doMC)registerDoMC(n) # Where n is the number of processors that you would like to run on.source("ITS2_Supplemental_R_Functions.R")After all packages are properly installed you simply need to execute the script by typing:source(“ITS2_R_version.R”)After the script completes running you the 1000_strat folder will contain all of the results of all runs. See table S1 for an explanation of each output file.File NameFile ContentstrainData{n}.{k}.txtTraining set used for runtestData{n}.{k}.txtTest set used for runtestResult{n}.{k}.txtConfusion matrix of resultstestLLNA_r_vs_p_{n}.{k}.txtResults for individual compoundsLLNA_probability{n}.{k}.txtProbability of each compound being in a given classTable S1: Five tab separated text files given as output by the script. n is the number of the run and k is the number of fold used as the test set.Conditional Probability TablesConditional probability tables which are generated when all of the data available for the ITS2 network is used.$KEC1.5, , Cysteine = Cluster 1 IC50KEC1.5 [-Inf,159] (159,764] (764, Inf] [-Inf,10.1] 0.004545455 0.001201923 0.001381215 (10.1,239] 0.986363636 0.996394231 0.946132597 (239,1.1e+03] 0.004545455 0.001201923 0.051104972 (1.1e+03, Inf] 0.004545455 0.001201923 0.001381215, , Cysteine = Cluster 2 IC50KEC1.5 [-Inf,159] (159,764] (764, Inf] [-Inf,10.1] 0.830645161 0.983695652 0.25 (10.1,239] 0.167050691 0.005434783 0.25 (239,1.1e+03] 0.001152074 0.005434783 0.25 (1.1e+03, Inf] 0.001152074 0.005434783 0.25, , Cysteine = Cluster 3 IC50KEC1.5 [-Inf,159] (159,764] (764, Inf] [-Inf,10.1] 0.168181818 0.00390625 0.0005543237 (10.1,239] 0.004545455 0.14453125 0.0404656319 (239,1.1e+03] 0.004545455 0.00390625 0.1402439024 (1.1e+03, Inf] 0.822727273 0.84765625 0.8187361419$IC50IC50[-Inf,159] (159,764] (764, Inf] 0.2558685 0.2488263 0.4953052 $Cysteine LLNACysteine 1 2 3 4 Cluster 1 0.120315582 0.634085213 0.4727669 0.1799410 Cluster 2 0.001972387 0.002506266 0.3159041 0.6047198 Cluster 3 0.877712032 0.363408521 0.2113290 0.2153392$KEC3, , Cysteine = Cluster 1 IC50KEC3 [-Inf,159] (159,764] (764, Inf] [-Inf,34.1] 0.004545455 0.001201923 0.001381215 (34.1,476] 0.659090909 0.780048077 0.548342541 (476,945] 0.004545455 0.044471154 0.349447514 (945, Inf] 0.331818182 0.174278846 0.100828729, , Cysteine = Cluster 2 IC50KEC3 [-Inf,159] (159,764] (764, Inf] [-Inf,34.1] 0.913594470 0.592391304 0.25 (34.1,476] 0.042626728 0.396739130 0.25 (476,945] 0.001152074 0.005434783 0.25 (945, Inf] 0.042626728 0.005434783 0.25, , Cysteine = Cluster 3 IC50KEC3 [-Inf,159] (159,764] (764, Inf] [-Inf,34.1] 0.004545455 0.00390625 0.0005543237 (34.1,476] 0.004545455 0.00390625 0.0005543237 (476,945] 0.004545455 0.00390625 0.0005543237 (945, Inf] 0.986363636 0.98828125 0.9983370288$TIMES, , LLNA = 1 CysteineTIMES Cluster 1 Cluster 2 Cluster 3 1 0.5956284 0.3333333 0.86367041 2 0.2021858 0.3333333 0.05468165 3 0.2021858 0.3333333 0.08164794, , LLNA = 2 CysteineTIMES Cluster 1 Cluster 2 Cluster 3 1 0.04874835 0.3333333 0.1678161 2 0.80764163 0.3333333 0.6643678 3 0.14361001 0.3333333 0.1678161, , LLNA = 3 CysteineTIMES Cluster 1 Cluster 2 Cluster 3 1 0.1674347 0.002298851 0.003436426 2 0.1121352 0.002298851 0.127147766 3 0.7204301 0.995402299 0.869415808, , LLNA = 4 CysteineTIMES Cluster 1 Cluster 2 Cluster 3 1 0.005464481 0.001626016 0.16894977 2 0.005464481 0.001626016 0.00456621 3 0.989071038 0.996747967 0.82648402$LLNALLNA 1 2 3 4 0.2975352 0.2341549 0.2693662 0.1989437 $DPRACys CysteineDPRACys Cluster 1 Cluster 2 Cluster 3 [-Inf,15] 0.3260135 0.821022727 0.06447368 (15,70.5] 0.3462838 0.173295455 0.03289474 (70.5,90] 0.2043919 0.002840909 0.12763158 (90, Inf] 0.1233108 0.002840909 0.77500000$CD86, , LLNA = 1 CysteineCD86 Cluster 1 Cluster 2 Cluster 3 [-Inf,27.1] 0.004098361 0.25 0.02752809 (27.1,296] 0.004098361 0.25 0.05449438 (296,1.02e+03] 0.397540984 0.25 0.18932584 (1.02e+03, Inf] 0.594262295 0.25 0.72865169, , LLNA = 2 CysteineCD86 Cluster 1 Cluster 2 Cluster 3 [-Inf,27.1] 0.0009881423 0.25 0.001724138 (27.1,296] 0.7124505929 0.25 0.250000000 (296,1.02e+03] 0.0484189723 0.25 0.332758621 (1.02e+03, Inf] 0.2381422925 0.25 0.415517241, , LLNA = 3 CysteineCD86 Cluster 1 Cluster 2 Cluster 3 [-Inf,27.1] 0.2223502 0.663793103 0.1262887 (27.1,296] 0.4435484 0.250000000 0.2500000 (296,1.02e+03] 0.1117512 0.001724138 0.1262887 (1.02e+03, Inf] 0.2223502 0.084482759 0.4974227, , LLNA = 4 CysteineCD86 Cluster 1 Cluster 2 Cluster 3 [-Inf,27.1] 0.594262295 0.645121951 0.167808219 (27.1,296] 0.397540984 0.059756098 0.003424658 (296,1.02e+03] 0.004098361 0.001219512 0.003424658 (1.02e+03, Inf] 0.004098361 0.293902439 0.825342466$DPRALys LLNADPRALys 1 2 3 4 [-Inf,70] 0.04930966 0.1528822 0.2113290 0.3569322 (70,95.3] 0.14398422 0.4235589 0.4727669 0.4277286 (95.3, Inf] 0.80670611 0.4235589 0.3159041 0.2153392$Bioavailability LLNABioavailability 1 2 3 4 Cluster 1 0.4516765 0.39348371 0.4466231 0.1445428 Cluster 2 0.3570020 0.57393484 0.4204793 0.6755162 Cluster 3 0.1913215 0.03258145 0.1328976 0.1799410$logKow BioavailabilitylogKow Cluster 1 Cluster 2 Cluster 3 [-Inf,0.094] 0.2265625 0.1598558 0.004310345 (0.094,1.92] 0.3953125 0.3185096 0.469827586 (1.92,3.83] 0.3015625 0.3185096 0.521551724 (3.83, Inf] 0.0765625 0.2031250 0.004310345$AUC120 BioavailabilityAUC120 Cluster 1 Cluster 2 Cluster 3 [-Inf,1.57] 0.0015625 0.6358173 0.004310345 (1.57,9.1] 0.3765625 0.2175481 0.056034483 (9.1,25] 0.1703125 0.1310096 0.211206897 (25, Inf] 0.4515625 0.0156250 0.728448276$Cfree BioavailabilityCfree Cluster 1 Cluster 2 Cluster 3 [-Inf,0.021] 0.0015625 0.967548077 0.004310345 (0.021,0.068] 0.5265625 0.030048077 0.004310345 (0.068,0.199] 0.4703125 0.001201923 0.004310345 (0.199, Inf] 0.0015625 0.001201923 0.987068966Python Processing Scriptdirectory = "yourDirectory/"fileOut = open('yourTable.tsv','a')fileHeader = ''directoryOfResults = {}for n in range(1,101): fileHeader = fileHeader + '\t' + 'Run_' + str(n) for m in range(1,11): file_string = directory + "testLLNA_r_vs_p_" + str(n) + '.' + str(m) + '.' + 'txt' current_file = open(file_string, 'r', encoding='utf-8') next(current_file) for line in current_file: line = line.replace(' (free acid) ', '') key_place = line.find(' ') LLNAvalue_place = line.find(' ',key_place + 1) LLNAprediction_place = line.find(' ', LLNAvalue_place + 1) key = line[:key_place].replace('"','') LLNAvalue = line[key_place:LLNAvalue_place].replace(' ','') LLNAprediction = line[LLNAvalue_place:LLNAprediction_place].replace(' ','') if key in directoryOfResults: directoryOfResults[key] = str(directoryOfResults[key] + '\t' + LLNAprediction) else: directoryOfResults[key] = str(LLNAvalue + '\t' + LLNAprediction) current_file.close()fileHeader = 'CAS Number' + '\t' + 'Expected Result' + fileHeaderfileOut.write(fileHeader)for key, item in directoryOfResults.items(): lineOut = str('\n' + key + '\t' + item) print(lineOut) fileOut.write(lineOut)fileOut.close()This script will produce a table in the form of a TSV file that can be used for analysis. The directory and the name of the output file both need to be specified. CASRNExperimental LLNALLNA Prediction PercentageHazard Prediction PercentageAverage DWERxn Alert94-09-7193930.310.040.89No Domain Found923-26-211001000.060.030.18Michael Addition65-85-0198980.370.110.61No Domain Found124-12-911001000.250.050.52No Domain Found112-05-0193930.210.030.90No Domain Found99-76-311001000.060.020.19No Domain Found99-96-711001000.030.010.05No Domain Found56-81-511001000.030.010.05No Domain Found110-27-0199990.140.050.23No Domain Found63-74-111001000.090.040.17No Domain Found57-55-611001000.050.030.08No Domain Found94-13-3177770.450.101.22No Domain Found81-07-2159591.371.051.77Acylation124-07-2189890.410.131.33No Domain Found87-69-411001000.040.020.06No Domain Found874-23-7181810.930.431.67Schiff's Base109-65-911001000.130.050.20SN2151-21-311001000.070.010.25No Domain Found121-32-41002.021.782.18No Domain Found3055-86-5196960.570.151.10No Domain Found71-36-311001000.040.020.06No Domain Found4903-09-71221.540.762.35No Domain Found637-07-011001000.070.030.12No Domain Found91-64-5156561.050.331.94No Domain Found8001-54-5198980.210.050.28No Domain Found50-21-511001000.040.020.06No Domain Found92-48-8198980.390.210.57No Domain Found67-63-011001000.040.020.06No Domain Found112-07-21001.111.011.25No Domain Found84-66-211001000.050.020.09No Domain Found110-54-311001000.190.080.31No Domain Found100-06-111001000.040.020.06No Domain Found69-72-711001000.310.080.52No Domain Found94-02-01000.960.781.08Nucleophilic Addition3810-74-01001.041.001.10Schiff's Base100-52-711001000.060.020.10No Domain Found108-90-711001000.130.060.21No Domain Found119-36-811001000.030.010.05No Domain Found75-35-4199990.090.030.16No Domain Found121-33-5195951.060.701.37No Domain Found2345-34-81002.301.952.57Acylation121-57-311001000.160.070.29No Domain Found140-88-521001000.040.000.13Michael Addition514-10-32821000.430.131.03No Domain Found31906-04-42991000.190.020.40Schiff's Base431-03-821001000.060.000.15Schiff's Base122-40-72931000.270.010.54Michael Addition13706-86-021001000.010.000.03Schiff's Base103-11-72841000.270.030.96Michael Addition2277-19-224991.020.711.20Schiff's Base638-45-921001000.210.040.35SN2103-95-721001000.130.060.25Schiff's Base97-96-1294950.280.060.86Schiff's Base78-70-621001000.250.110.40No Domain Found144-62-72001.000.991.01No Domain Found101-86-021001000.200.030.37Michael Addition140-67-020111.090.971.22No Domain Found544-77-421001000.030.000.08SN297-53-02861000.340.020.65No Domain Found80-54-62981000.280.120.46Schiff's Base110-41-821001000.030.010.12Schiff's Base1118-71-4284840.400.220.62Schiff's Base96-33-32981000.100.000.32Michael Addition2426-08-6211000.930.631.58SN297-90-521001000.100.010.20Michael Addition107-75-52891000.320.030.61Schiff's Base104-54-12021.050.981.11No Domain Found87-86-5201001.481.221.74SNAr39236-46-92811000.360.050.64Acylation502-67-021001000.270.070.47Schiff's Base106-24-12891000.410.190.71No Domain Found62-53-3295990.390.200.57No Domain Found141-32-2220980.790.281.00Michael Addition120-51-423990.950.841.12SN297-54-13921000.280.130.54No Domain Found104-55-23121000.860.411.00Michael Addition116-26-73871000.350.140.66Michael Addition6728-26-33991000.280.130.46Michael Addition5392-40-5331000.900.651.00Schiff's Base2634-33-53111000.790.310.99SN293-51-63831000.670.510.81No Domain Found111-25-130961.050.971.15SN2122-78-13901000.310.070.61Schiff's Base107-22-23971000.210.060.53Schiff's Base2111-75-33751000.420.170.66Schiff's Base122-57-631001000.210.120.31Michael Addition141-05-93171000.700.400.96Michael Addition552-30-7351000.860.730.97Acylation591-27-530991.151.021.36No Domain Found17369-59-43161000.790.630.93Acylation104-27-83961000.270.130.49Michael Addition66-27-33991000.310.140.50SN22835-99-6381000.770.450.92No Domain Found93-53-83721000.450.160.69Schiff's Base109-55-73221.901.441.99No Domain Found3913-71-13991000.230.100.40Michael Addition2892-51-5333870.940.681.27Schiff's Base101-39-33891000.380.220.59Michael Addition137-26-83101000.760.320.97Acylation2682-20-43921000.320.130.61SN2107-15-3386930.400.161.21No Domain Found885-62-13711000.420.070.96No Domain Found1675-54-33141000.700.450.89SN2119-84-63191000.850.631.02Acylation149-30-43881000.390.170.63SN2100-43-631001000.210.100.34Michael Addition111-80-8321000.940.921.00Michael Addition90-15-3317251.400.641.97No Domain Found2835-95-23691000.490.230.83No Domain Found818-61-13511000.530.220.82Michael Addition108-46-339980.970.731.20No Domain Found579-07-7371000.690.480.98Schiff's Base94-36-04151001.270.431.74Acylation85-42-74931000.750.450.99Acylation55-55-04631000.490.101.00No Domain Found886-38-441001000.140.030.28Acylation106-51-44811000.230.000.86Michael Addition121-79-9441000.800.600.92No Domain Found97-00-741001000.090.000.19SNAr1166-52-54101001.230.781.58No Domain Found35691-65-74591000.560.091.09SN2615-50-9411000.840.661.00No Domain Found5307-14-2451000.830.610.99No Domain Found123-31-941001000.090.010.27No Domain Found111-30-84971000.160.010.57Schiff's Base20048-27-54701000.320.050.84Michael Addition57-97-6413281.721.362.07No Domain Found138-89-64981000.200.030.40Nucleophilic Addition50-00-0411000.900.741.07Schiff's Base106-50-3491000.730.460.98No Domain Found108-31-64032.802.482.95Acylation1154-59-24811000.430.111.00Acylation85-44-94761000.870.581.12Acylation95-55-641001000.170.010.37No Domain Found15646-46-54191000.730.370.98Acylation488-17-54551000.420.010.77No Domain Found5231-87-84191.991.692.29Schiff's Base100-11-84981000.300.060.49SN225646-71-34311000.580.190.85No Domain Found100-39-04341000.570.260.85SN2 ................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.