################################################### ### chunk number 1: ################################################### options(width=80) ################################################### ### chunk number 2: eval=FALSE ################################################### ## source("http://bioconductor.org/biocLite.R") # Sources the biocLite.R installation script. ## biocLite("ChemmineR") # Installs the package. ################################################### ### chunk number 3: ################################################### library("ChemmineR") # Loads the package ################################################### ### chunk number 4: eval=FALSE ################################################### ## library(help="ChemmineR") # Lists all functions and classes ## vignette("ChemmineR") # Opens this PDF manual from R ################################################### ### chunk number 5: ################################################### data(sdfsample) sdfset <- sdfsample sdfset # Returns summary of SDFset sdfset[1:4] # Subsetting of object sdfset[[1]] # Returns summarized content of one SDF ################################################### ### chunk number 6: eval=FALSE ################################################### ## view(sdfset[1:4]) # Returns summarized content of many SDFs, not printed here ## as(sdfset[1:4], "list") # Returns complete content of many SDFs, not printed here ################################################### ### chunk number 7: eval=FALSE ################################################### ## sdfset <- read.SDFset("http://faculty.ucr.edu/~tgirke/Documents/ ## R_BioCond/Samples/sdfsample.sdf") ################################################### ### chunk number 8: eval=FALSE ################################################### ## header(sdfset[1:4]) # Not printed here ################################################### ### chunk number 9: ################################################### header(sdfset[[1]]) ################################################### ### chunk number 10: eval=FALSE ################################################### ## atomblock(sdfset[1:4]) # Not printed here ################################################### ### chunk number 11: ################################################### atomblock(sdfset[[1]])[1:4,] ################################################### ### chunk number 12: eval=FALSE ################################################### ## bondblock(sdfset[1:4]) # Not printed here ################################################### ### chunk number 13: ################################################### bondblock(sdfset[[1]])[1:4,] ################################################### ### chunk number 14: eval=FALSE ################################################### ## datablock(sdfset[1:4]) # Not printed here ################################################### ### chunk number 15: ################################################### datablock(sdfset[[1]])[1:4] ################################################### ### chunk number 16: ################################################### cid(sdfset)[1:4] # Returns IDs from SDFset object sdfid(sdfset)[1:4] # Returns IDs from SD file header block unique_ids <- makeUnique(sdfid(sdfset)) cid(sdfset) <- unique_ids ################################################### ### chunk number 17: ################################################### blockmatrix <- datablock2ma(datablocklist=datablock(sdfset)) # Converts data block to matrix numchar <- splitNumChar(blockmatrix=blockmatrix) # Splits to numeric and character matrix numchar[[1]][1:2,1:2] # Slice of numeric matrix numchar[[2]][1:2,10:11] # Slice of character matrix ################################################### ### chunk number 18: ################################################### propma <- data.frame(MF=MF(sdfset), MW=MW(sdfset), atomcountMA(sdfset)) propma[1:4, ] ################################################### ### chunk number 19: ################################################### datablock(sdfset) <- propma datablock(sdfset[1]) ################################################### ### chunk number 20: eval=FALSE ################################################### ## grepSDFset("650001", sdfset, field="datablock", mode="subset") ## # Returns summary view of matches. Not printed here. ## . ################################################### ### chunk number 21: ################################################### grepSDFset("650001", sdfset, field="datablock", mode="index") ################################################### ### chunk number 22: eval=FALSE ################################################### ## write.SDF(sdfset[1:4], file="sub.sdf", sig=TRUE) ################################################### ### chunk number 23: plotstruct ################################################### plot(sdfset[1:4], print=FALSE) # Plots structures to R graphics device ################################################### ### chunk number 24: eval=FALSE ################################################### ## sdf.visualize(sdfset[1:4]) # Compound viewing in web browser ################################################### ### chunk number 25: eval=FALSE ################################################### ## apset <- sdf2ap(sdfset) ## # Generate atom pair descriptor database for searching ## . ################################################### ### chunk number 26: ################################################### data(apset) # Load sample apset data provided by library. cmp.search(apset, apset[1], type=3, cutoff = 0.3, quiet=TRUE) # Search apset database with single compound. cmp.cluster(db=apset, cutoff = c(0.65, 0.5), quiet=TRUE)[1:4,] # Binning clustering using variable similarity cutoffs. ################################################### ### chunk number 27: eval=FALSE ################################################### ## sdfset <- read.SDFset("http://faculty.ucr.edu/~tgirke/Documents/ ## R_BioCond/Samples/sdfsample.sdf") ################################################### ### chunk number 28: ################################################### data(sdfsample) # Loads the same SDFset provided by the library sdfset <- sdfsample valid <- validSDF(sdfset) # Identifies invalid SDFs in SDFset objects sdfset <- sdfset[valid] # Removes invalid SDFs, if there are any ################################################### ### chunk number 29: eval=FALSE ################################################### ## sdfstr <- read.SDFstr("http://faculty.ucr.edu/~tgirke/Documents/ ## R_BioCond/Samples/sdfsample.sdf") ################################################### ### chunk number 30: ################################################### sdfstr <- as(sdfset, "SDFstr") sdfstr as(sdfstr, "SDFset") ################################################### ### chunk number 31: eval=FALSE ################################################### ## write.SDF(sdfset[1:4], file="sub.sdf") ################################################### ### chunk number 32: eval=FALSE ################################################### ## write.SDF(sdfset[1:4], file="sub.sdf", sig=TRUE, cid=TRUE, db=NULL) ################################################### ### chunk number 33: eval=FALSE ################################################### ## props <- data.frame(MF=MF(sdfset), MW=MW(sdfset), atomcountMA(sdfset)) ## datablock(sdfset) <- props ## write.SDF(sdfset[1:4], file="sub.sdf", sig=TRUE, cid=TRUE) ################################################### ### chunk number 34: eval=FALSE ################################################### ## sdf2str(sdf=sdfset[[1]], sig=TRUE, cid=TRUE) ## # Uses default components ## sdf2str(sdf=sdfset[[1]], head=letters[1:4], db=NULL) ## # Uses custom components for header and data block ################################################### ### chunk number 35: eval=FALSE ################################################### ## write.SDF(sdfset[1:4], file="sub.sdf", sig=TRUE, cid=TRUE, db=NULL) ## write.SDF(sdfstr[1:4], file="sub.sdf") ## cat(unlist(as(sdfstr[1:4], "list")), file="sub.sdf", sep="\n") ################################################### ### chunk number 36: eval=FALSE ################################################### ## view(sdfset[1:4]) # Summary view of several molecules ## length(sdfset) # Returns number of molecules ## sdfset[[1]] # Returns single molecule from SDFset as SDF object ## sdfset[[1]][[2]] # Returns atom block from first compound as matrix ## sdfset[[1]][[2]][1:4,] ## c(sdfset[1:4], sdfset[5:8]) # Concatenation of several SDFsets ################################################### ### chunk number 37: eval=FALSE ################################################### ## grepSDFset("650001", sdfset, field="datablock", mode="subset") ## # To return index, set mode="index") ## . ################################################### ### chunk number 38: eval=FALSE ################################################### ## sdfid(sdfset[1:4]) ## # Retrieves CMP IDs from Molecule Name field in header block. ## cid(sdfset[1:4]) ## # Retrieves CMP IDs from ID slot in SDFset. ## unique_ids <- makeUnique(sdfid(sdfset)) ## # Creates unique IDs by appending a counter to duplicates. ## cid(sdfset) <- unique_ids # Assigns uniquified IDs to ID slot ################################################### ### chunk number 39: eval=FALSE ################################################### ## view(sdfset[c("650001", "650012")]) ## view(sdfset[4:1]) ## mylog <- cid(sdfset) %in% c("650001", "650012") ## view(sdfset[mylog]) ################################################### ### chunk number 40: eval=FALSE ################################################### ## atomblock(sdf); sdf[[2]]; sdf[["atomblock"]] ## # All three methods return the same component ## header(sdfset[1:4]) ## atomblock(sdfset[1:4]) ## bondblock(sdfset[1:4]) ## datablock(sdfset[1:4]) ## header(sdfset[[1]]) ## atomblock(sdfset[[1]]) ## bondblock(sdfset[[1]]) ## datablock(sdfset[[1]]) ################################################### ### chunk number 41: eval=FALSE ################################################### ## sdfset[[1]][[2]][1,1] <- 999 ## atomblock(sdfset)[1] <- atomblock(sdfset)[2] ## datablock(sdfset)[1] <- datablock(sdfset)[2] ################################################### ### chunk number 42: eval=FALSE ################################################### ## datablock(sdfset) <- as.matrix(iris[1:100,]) ## view(sdfset[1:4]) ################################################### ### chunk number 43: eval=FALSE ################################################### ## as(sdfstr[1:2], "list") ## as(sdfstr[[1]], "SDF") ## as(sdfstr[1:2], "SDFset") ################################################### ### chunk number 44: eval=FALSE ################################################### ## sdfcomplist <- as(sdf, "list") ## sdfcomplist <- as(sdfset[1:4], "list"); as(sdfcomplist[[1]], "SDF") ## sdflist <- as(sdfset[1:4], "SDF"); as(sdflist, "SDFset") ## as(sdfset[[1]], "SDFstr") ## as(sdfset[[1]], "SDFset") ################################################### ### chunk number 45: eval=FALSE ################################################### ## as(sdfset[1:4], "SDF") ## as(sdfset[1:4], "list") ## as(sdfset[1:4], "SDFstr") ################################################### ### chunk number 46: boxplot eval=FALSE ################################################### ## propma <- atomcountMA(sdfset) ## boxplot(propma, col="blue", main="Atom Frequency") ################################################### ### chunk number 47: eval=FALSE ################################################### ## boxplot(rowSums(propma), main="All Atom Frequency") ################################################### ### chunk number 48: eval=FALSE ################################################### ## MW(sdfset[1:4]); MF(sdfset[1:4]) ## propma <- data.frame(MF=MF(sdfset), MW=MW(sdfset), atomcountMA(sdfset)); propma[1:4,] ## datablock(sdfset) <- propma # Works with all SDF components ## test <- apply(propma[1:4,], 1, function(x) data.frame(col=colnames(propma), value=x)) ## sdf.visualize(sdfset[1:4], extra = test) ################################################### ### chunk number 49: ################################################### datablock(sdfset) <- propma datablock(sdfset)[1:4] ################################################### ### chunk number 50: eval=FALSE ################################################### ## datablocktag(sdfset, tag="PUBCHEM_NIST_INCHI") ## datablocktag(sdfset, tag="PUBCHEM_OPENEYE_CAN_SMILES") ################################################### ### chunk number 51: eval=FALSE ################################################### ## blockmatrix <- datablock2ma(datablocklist=datablock(sdfset)) ## # Converts data block to matrix ## numchar <- splitNumChar(blockmatrix=blockmatrix) ## # Splits matrix to numeric matrix and character matrix ## numchar[[1]][1:4,]; numchar[[2]][1:4,] ## # Splits matrix to numeric matrix and character matrix ## . ################################################### ### chunk number 52: plotstruct2 ################################################### data(sdfsample); sdfset <- sdfsample plot(sdfset[1:4], print=FALSE) # 'print=TRUE' returns SDF summaries ################################################### ### chunk number 53: eval=FALSE ################################################### ## plot(sdfset[1:4], griddim=c(2,2), print_cid=letters[1:4], print=FALSE, ## noHbonds=FALSE) ################################################### ### chunk number 54: plotstruct3 ################################################### plot(sdfset["CMP1"], atomnum = TRUE, noHbonds=F , no_print_atoms = "", atomcex=0.8, sub=paste("MW:", MW(sdfsample["CMP1"])), print=FALSE) ################################################### ### chunk number 55: eval=FALSE ################################################### ## sdf.visualize(sdfset[1:4]) ################################################### ### chunk number 56: eval=FALSE ################################################### ## sdf.visualize(sdfset[1:4], extra=month.name[1:4]) ################################################### ### chunk number 57: eval=FALSE ################################################### ## extra <- apply(propma[1:4,], 1, function(x) ## data.frame(Property=colnames(propma), Value=x)) ## sdf.visualize(sdfset[1:4], extra=extra) ################################################### ### chunk number 58: eval=FALSE ################################################### ## sdf.visualize(sdfset[1:4], extra=bondblock(sdfset[1:4])) ################################################### ### chunk number 59: ################################################### ap <- sdf2ap(sdfset[[1]]) # For single compound ap ################################################### ### chunk number 60: eval=FALSE ################################################### ## apset <- sdf2ap(sdfset) # For many compounds. ################################################### ### chunk number 61: ################################################### view(apset[1:4]) ################################################### ### chunk number 62: eval=FALSE ################################################### ## cid(apset[1:4]) # Compound IDs ## ap(apset[1:4]) # Atom pair descriptors ## db.explain(apset[1]) # Return atom pairs in human readable format ################################################### ### chunk number 63: eval=FALSE ################################################### ## apset2descdb(apset) # Returns old list-style AP database ## tmp <- as(apset, "list") # Returns list ## as(tmp, "APset") # Converts list back to APset ################################################### ### chunk number 64: eval=FALSE ################################################### ## save(sdfset, file = "sdfset.rda", compress = TRUE) ## load("sdfset.rda") ## save(apset, file = "apset.rda", compress = TRUE) ## load("apset.rda") ################################################### ### chunk number 65: ################################################### cmp.similarity(apset[1], apset[2]) cmp.similarity(apset[1], apset[1]) ################################################### ### chunk number 66: ################################################### cid(sdfset) <- sdfid(sdfset) fpset <- fp2bit(x=sdfset, type=1) fpset <- fp2bit(x=sdfset, type=2) ################################################### ### chunk number 67: ################################################### fpSim(x=fpset[1,], y=fpset[2,]) ################################################### ### chunk number 68: ################################################### cmp.search(apset, apset["650065"], type=3, cutoff = 0.3, quiet=TRUE) ################################################### ### chunk number 69: ################################################### cmp.search(apset, apset["650065"], type=1, cutoff = 0.3, quiet=TRUE) cmp.search(apset, apset["650065"], type=2, cutoff = 0.3, quiet=TRUE) ################################################### ### chunk number 70: ################################################### fpSim(x=fpset["650065",], y=fpset)[1:6] # x is query and y is fingerprint database ################################################### ### chunk number 71: search_result ################################################### cid(sdfset) <- cid(apset) # Assure compound name consistency among objects. plot(sdfset[names(cmp.search(apset, apset["650065"], type=2, cutoff=4, quiet=TRUE))], print=FALSE) ################################################### ### chunk number 72: eval=FALSE ################################################### ## similarities <- cmp.search(apset, apset[1], type=3, cutoff = 10) ## sdf.visualize(sdfset[similarities[,1]], extra=similarities[,3]) ################################################### ### chunk number 73: ################################################### cmp.duplicated(apset, type=1)[1:4] # Returns AP duplicates as logical vector cmp.duplicated(apset, type=2)[1:4,] # Returns AP duplicates as data frame ################################################### ### chunk number 74: duplicates ################################################### plot(sdfset[c("650059","650060", "650065", "650066")], print=FALSE) ################################################### ### chunk number 75: ################################################### apdups <- cmp.duplicated(apset, type=1) sdfset[which(!apdups)]; apset[which(!apdups)] ################################################### ### chunk number 76: ################################################### count <- table(datablocktag(sdfset, tag="PUBCHEM_NIST_INCHI")) count <- table(datablocktag(sdfset, tag="PUBCHEM_OPENEYE_CAN_SMILES")) count <- table(datablocktag(sdfset, tag="PUBCHEM_MOLECULAR_FORMULA")) count[1:4] ################################################### ### chunk number 77: ################################################### clusters <- cmp.cluster(db=apset, cutoff = c(0.65, 0.5, 0.4), quiet = TRUE) clusters[1:4,] ################################################### ### chunk number 78: ################################################### cluster.sizestat(clusters, cluster.result=1) cluster.sizestat(clusters, cluster.result=2) cluster.sizestat(clusters, cluster.result=3) ################################################### ### chunk number 79: eval=FALSE ################################################### ## clusters <- cmp.cluster(db=apset, cutoff = c(0.65, 0.5, 0.3), ## save.distances="distmat.rda") ## # Saves distance matrix to file "distmat.rda" in current working directory. ## load("distmat.rda") # Loads distance matrix. ################################################### ### chunk number 80: eval=FALSE ################################################### ## cluster.visualize(apset, clusters, size.cutoff=2, quiet = TRUE) ## # Color codes clusters with at least two members. ## cluster.visualize(apset, clusters, quiet = TRUE) # Plots all items. ################################################### ### chunk number 81: mds_scatter ################################################### library(scatterplot3d) coord <- cluster.visualize(apset, clusters, size.cutoff=1, dimensions=3, quiet=TRUE) scatterplot3d(coord) ################################################### ### chunk number 82: eval=FALSE ################################################### ## library(rgl) ## rgl.open(); offset <- 50; par3d(windowRect=c(offset, offset, 640+offset, 640+offset)) ## rm(offset); rgl.clear(); rgl.viewpoint(theta=45, phi=30, fov=60, zoom=1) ## spheres3d(coord[,1], coord[,2], coord[,3], radius=0.03, color=coord[,4], alpha=1, ## shininess=20); aspect3d(1, 1, 1) ## axes3d(col='black'); title3d("", "", "", "", "", col='black'); bg3d("white") ## # To save a snapshot of the graph, one can use the command rgl.snapshot("test.png"). ################################################### ### chunk number 83: mds_scatter ################################################### dummy <- cmp.cluster(db=apset, cutoff=0, save.distances="distmat.rda", quiet=TRUE) load("distmat.rda") ################################################### ### chunk number 84: hclust ################################################### hc <- hclust(as.dist(distmat), method="single") hc[["labels"]] <- cid(apset) # Assign correct item labels plot(as.dendrogram(hc), edgePar=list(col=4, lwd=2), horiz=T) ################################################### ### chunk number 85: fp_hclust eval=FALSE ################################################### ## simMA <- sapply(rownames(fpset), function(x) fpSim(x=fpset[x,], fpset)) ## hc <- hclust(as.dist(simMA), method="single") ## plot(as.dendrogram(hc), edgePar=list(col=4, lwd=2), horiz=TRUE) ################################################### ### chunk number 86: heatmap ################################################### library(gplots) heatmap.2(1-distmat, Rowv=as.dendrogram(hc), Colv=as.dendrogram(hc), col=colorpanel(40, "darkblue", "yellow", "white"), density.info="none", trace="none") ################################################### ### chunk number 87: getIds eval=FALSE ################################################### ## compounds <- getIds(c(111,123)) ## compounds ################################################### ### chunk number 88: getIds eval=FALSE ################################################### ## compounds <- searchString("CC(=O)OC1=CC=CC=C1C(=O)O") ## compounds ################################################### ### chunk number 89: getIds eval=FALSE ################################################### ## data(sdfsample); sdfset <- sdfsample[1] ## compounds <- searchSim(sdfset) ## compounds ################################################### ### chunk number 90: sdf2smiles eval=FALSE ################################################### ## data(sdfsample); sdfset <- sdfsample[1] ## smiles <- sdf2smiles(sdfset) ## smiles ################################################### ### chunk number 91: smiles2sdf eval=FALSE ################################################### ## sdf <- smiles2sdf("CC(=O)OC1=CC=CC=C1C(=O)O\tname") ## view(sdf) ################################################### ### chunk number 92: sessionInfo ################################################### sessionInfo()