R/472-extractDrugExtended.R

Defines functions extrDrugExtended extrDrugExtendedComplete

Documented in extrDrugExtended extrDrugExtendedComplete

#' Calculate the Extended Molecular Fingerprints (in Compact Format)
#'
#' Calculate the Extended Molecular Fingerprints (in Compact Format)
#' 
#' Calculate the extended molecular fingerprints. 
#' Considers paths of a given length, similar to the standard type, 
#' but takes rings and atomic properties into account into account.
#' This is hashed fingerprints, with a default length of 1024.
#' 
#' @param molecules Parsed molucule object.
#' @param depth The search depth. Default is \code{6}.
#' @param size The length of the fingerprint bit string. Default is \code{1024}.
#' @param silent Logical. Whether the calculating process 
#' should be shown or not, default is \code{TRUE}.
#'
#' @return A list, each component represents one of the molecules, each element 
#' in the component represents the index of which element 
#' in the fingerprint is 1.
#' Each component's name is the length of the fingerprints.
#' 
#' @keywords extrDrugExtended
#'
#' @aliases extrDrugExtended
#' 
#' @author Min-feng Zhu <\email{wind2zhu@@163.com}>, 
#'         Nan Xiao <\url{http://r2s.name}>
#' 
#' @export extrDrugExtended
#' 
#' @importFrom rcdk get.fingerprint
#' 
#' @seealso \link{extrDrugExtendedComplete}
#' 
#' @examples
#' smi = system.file('vignettedata/test.smi', package = 'BioMedR')
#' mol = readMolFromSmi(smi, type = 'mol')
#' fp  = extrDrugExtended(mol)
#' head(fp)
#' 

extrDrugExtended = function (molecules, depth = 6, 
                                size = 1024, silent = TRUE) {

    if (length(molecules) == 1) {
        
        x = get.fingerprint(molecules, type = 'extended', 
                            depth = depth, size = size, verbose = !silent)

        fp = vector('list', 1)
        fp[[1]] = x@bits
        names(fp) = x@nbit

        } else {

            x = lapply(molecules, get.fingerprint, type = 'extended', 
                       depth = depth, size = size, verbose = !silent)

            fp = vector('list', length(molecules))

            for (i in 1:length(molecules)) {

                fp[[i]] = x[[i]]@bits
                names(fp)[i] = x[[i]]@nbit

            }

        }

    return(fp)

}

#' Calculate the Extended Molecular Fingerprints (in Complete Format)
#'
#' Calculate the Extended Molecular Fingerprints (in Complete Format)
#' 
#' Calculate the extended molecular fingerprints. 
#' Considers paths of a given length, similar to the standard type, 
#' but takes rings and atomic properties into account into account.
#' This is hashed fingerprints, with a default length of 1024.
#' 
#' @param molecules Parsed molucule object.
#' @param depth The search depth. Default is \code{6}.
#' @param size The length of the fingerprint bit string. Default is \code{1024}.
#' @param silent Logical. Whether the calculating process 
#' should be shown or not, default is \code{TRUE}.
#'
#' @return An integer vector or a matrix. Each row represents one molecule, 
#' the columns represent the fingerprints.
#' 
#' @keywords extrDrugExtendedComplete
#'
#' @aliases extrDrugExtendedComplete
#' 
#' @author Min-feng Zhu <\email{wind2zhu@@163.com}>, 
#'         Nan Xiao <\url{http://r2s.name}>
#' 
#' @export extrDrugExtendedComplete
#' 
#' @importFrom rcdk get.fingerprint
#' 
#' @seealso \link{extrDrugExtended}
#' 
#' @examples
#' smi = system.file('vignettedata/test.smi', package = 'BioMedR')
#' mol = readMolFromSmi(smi, type = 'mol')
#' fp  = extrDrugExtendedComplete(mol)
#' dim(fp)
#' 

extrDrugExtendedComplete = function (molecules, depth = 6, 
                                        size = 1024, silent = TRUE) {

    if (length(molecules) == 1) {
        
        x = get.fingerprint(molecules, type = 'extended', 
                            depth = depth, size = size, verbose = !silent)
        
        fp = integer(x@nbit)
        fp[x@bits] = 1L

        } else {

            x = lapply(molecules, get.fingerprint, type = 'extended', 
                       depth = depth, size = size, verbose = !silent)

            fp = matrix(0L, nrow = length(molecules), ncol = size)

            for (i in 1:length(molecules)) fp[ i, x[[i]]@bits ] = 1L

        }

    return(fp)

}

Try the BioMedR package in your browser

Any scripts or data that you put into this service are public.

BioMedR documentation built on Nov. 17, 2017, 10:08 a.m.