R/struc_match_in_df.R

Defines functions base_pattern_chem struc_match_in_df

struc_match_in_df <- 
  function(
           df,
           pattern,
           id_col = "id",
           smiles_col = "SMILES"
           ){
    cat("\n## match:", pattern, "\n")
    list <- pbapply::pblapply(df[[smiles_col]], base_pattern_chem,
                              pattern = pattern)
    df <- data.table::data.table(.id = df[[id_col]],
                                 evaluate = c(unlist(list)))
    return(df)
  }
base_pattern_chem <- 
  function(
           smiles,
           pattern
           ){
    mol <- rcdk::parse.smiles(smiles)
    check <- try(match <- rcdk::matches(pattern, mol, return.matches = F), silent = T)
    if(class(check) == "try-error")
      return(c(X = "is.na"))
    return(match)
  }
chi-med-pro/extra documentation built on July 1, 2022, 6:21 a.m.