コード例 #1
0
ファイル: rcpp_rdkit_ws.cpp プロジェクト: leelasd/RRDKit
//' map a molecule to a maccs fingerprints
//'
//' @param xp a molecule
//' @return a vector
// [[Rcpp::export]]
IntegerVector mol2maccs(  SEXP xp){
    int i;
    RWMol *mol = p_getMol(xp);  
    
    if( mol ){
     ExplicitBitVect *bv = MACCSFingerprints::getFingerprintAsBitVect ( *mol  ); 
      
     if(bv){
      IntegerVector v = IntegerVector( bv->getNumBits ());
      for( i = 0;  i< bv->getNumBits ();i++ ){
        v(i) = bv->getBit(i)?1:0;
      }      
      return v;
      }
    }
    return IntegerVector(0); 
}
コード例 #2
0
ファイル: rcpp_rdkit_ws.cpp プロジェクト: leelasd/RRDKit
//' map a molecule to a morgan fingerprints (atom environement)
//'
//' @param xp a molecule
//' @param radius radius of scaffold
//' @param nBits final length
//' @param useFeatures useFeatures
//' @return a vector
// [[Rcpp::export]]
IntegerVector mol2morgan(  SEXP xp , unsigned int radius=2,unsigned int nBits=2048, 
    bool useFeatures=false){
  // radius = 2 => ecfp4 2^2
  // radius = 2 & useFeatures=True => fcfp4
    int i;
    RWMol *mol = p_getMol(xp);  
    
    if( mol ){
     ExplicitBitVect *bv = MorganFingerprints::getFingerprintAsBitVect ( *mol  , radius,nBits,
        0,0,false,useFeatures,false,0); 

     if(bv){
      IntegerVector v = IntegerVector( bv->getNumBits ());
      for( i = 0;  i< bv->getNumBits ();i++ ){
        v(i) = bv->getBit(i)?1:0;
      }   
      delete bv;
      return v;
      }
    }
    return IntegerVector(0); 
}