Skip to content
Snippets Groups Projects
Select Git revision
  • 7724e8e5b949fde41e24b30940883f4444654340
  • main default protected
2 results

calculate_cleaved_peptides.py

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    approx_kfn.cpp 5.94 KiB
    #include <sicstus/sicstus.h>
    /* ex_glue.h is generated by splfr from the foreign/[2,3] facts.
       Always include the glue header in your foreign resource code.
    */
    #include "approx_kfn_glue.h"
    #include <mlpack/methods/approx_kfn/drusilla_select.hpp>
    #include <mlpack/methods/approx_kfn/qdafn.hpp>
    #include <mlpack/core.hpp>
    
    // including helper functions for converting between arma structures and arrays
    #include "../../helper_files/helper.hpp"
    
    // some of the most used namespaces
    using namespace arma;
    using namespace mlpack;
    using namespace std;
    using namespace mlpack::neighbor;
    
    // Global Variable of the DrusillaSelect object so it can be accessed from all functions
    DrusillaSelect<mat> drusillaSelect = DrusillaSelect(1,1);
    
    // Global Variable of the QDAFN object so it can be accessed from all functions
    QDAFN<mat> qdafn = QDAFN(1,1);
    
    // TODO: 
    // input:   const size_t 	l,
    //          const size_t 	m
    // output: 
    // description: 
    void initDrusillaModelNoTrain(SP_integer l, SP_integer m)
    {
        drusillaSelect = DrusillaSelect(l, m);
    }
    
    // TODO: 
    // input:   const MatType & 	referenceSet,
    //          const size_t 	    l,
    //          const size_t 	    m
    // output: 
    // description: 
    void initDrusillaModelWithTrain(float *referenceSetMatArr, SP_integer referenceSetMatSize, SP_integer referenceSetMatRowNum, SP_integer l, SP_integer m)
    {
        // convert the Prolog arrays to arma::mat
        mat referenceSet = convertArrayToMat(referenceSetMatArr, referenceSetMatSize, referenceSetMatRowNum);
        
        drusillaSelect = DrusillaSelect(referenceSet, l, m);
    }
    
    // TODO: 
    // input:   const MatType & 	    querySet,
    //          const size_t 	        k,
    //          arma::Mat< size_t > & 	neighbors,
    //          arma::mat & 	        distances
    // output: 
    // description: 
    void searchDrusilla(float *querySetMatArr, SP_integer querySetMatSize, SP_integer querySetMatRowNum, 
                        SP_integer k,
                        float **neighborsMatArr, SP_integer *neighborsMatColNum, SP_integer *neighborsMatRowNum, 
                        float **distancesMatArr, SP_integer *distancesMatColNum, SP_integer *distancesMatRowNum)
    {
        // convert the Prolog arrays to arma::mat
        mat querySet = convertArrayToMat(querySetMatArr, querySetMatSize, querySetMatRowNum);
    
        // create the ReturnMat
        Mat< size_t > neighborsReturnMat;
    
        // create the ReturnMat
        mat distancesReturnMat;
        
        drusillaSelect.Search(querySet, k, neighborsReturnMat, distancesReturnMat);
        
        // return the Matrix dimensions
        *neighborsMatColNum = neighborsReturnMat.n_cols;
        *neighborsMatRowNum = neighborsReturnMat.n_rows;
        
        // return the Matrix as one long Array
        *neighborsMatArr = convertToArray(neighborsReturnMat);
        
        // return the Matrix dimensions
        *distancesMatColNum = distancesReturnMat.n_cols;
        *distancesMatRowNum = distancesReturnMat.n_rows;
        
        // return the Matrix as one long Array
        *distancesMatArr = convertToArray(distancesReturnMat);
        
    }
    
    // TODO: 
    // input:   const MatType & 	referenceSet,
    //          const size_t 	    l = 0,
    //          const size_t 	    m = 0 
    // output: 
    // description: 
    void trainDrusilla(float *referenceSetMatArr, SP_integer referenceSetMatSize, SP_integer referenceSetMatRowNum, SP_integer l, SP_integer m)
    {
        // convert the Prolog arrays to arma::mat
        mat referenceSet = convertArrayToMat(referenceSetMatArr, referenceSetMatSize, referenceSetMatRowNum);
        
        drusillaSelect.Train(referenceSet, l, m);
    }
    
    // TODO: 
    // input:   const size_t 	l,
    //          const size_t 	m
    // output: 
    // description: 
    void initQDAFNModelNoTrain(SP_integer l, SP_integer m)
    {
        qdafn = QDAFN(l, m);
    }
    
    // TODO: 
    // input:   const MatType & 	referenceSet,
    //          const size_t 	    l,
    //          const size_t 	    m
    // output: 
    // description: 
    void initQDAFNModelWithTrain(float *referenceSetMatArr, SP_integer referenceSetMatSize, SP_integer referenceSetMatRowNum, SP_integer l, SP_integer m)
    {
        // convert the Prolog arrays to arma::mat
        mat referenceSet = convertArrayToMat(referenceSetMatArr, referenceSetMatSize, referenceSetMatRowNum);
        
        qdafn = QDAFN(referenceSet, l, m);
    }
    
    // TODO: 
    // input:   const MatType & 	    querySet,
    //          const size_t 	        k,
    //          arma::Mat< size_t > & 	neighbors,
    //          arma::mat & 	        distances
    // output: 
    // description: 
    void searchQDAFN(float *querySetMatArr, SP_integer querySetMatSize, SP_integer querySetMatRowNum, 
                        SP_integer k,
                        float **neighborsMatArr, SP_integer *neighborsMatColNum, SP_integer *neighborsMatRowNum, 
                        float **distancesMatArr, SP_integer *distancesMatColNum, SP_integer *distancesMatRowNum)
    {
        // convert the Prolog arrays to arma::mat
        mat querySet = convertArrayToMat(querySetMatArr, querySetMatSize, querySetMatRowNum);
    
        // create the ReturnMat
        Mat< size_t > neighborsReturnMat;
    
        // create the ReturnMat
        mat distancesReturnMat;
        
        qdafn.Search(querySet, k, neighborsReturnMat, distancesReturnMat);
        
        // return the Matrix dimensions
        *neighborsMatColNum = neighborsReturnMat.n_cols;
        *neighborsMatRowNum = neighborsReturnMat.n_rows;
        
        // return the Matrix as one long Array
        *neighborsMatArr = convertToArray(neighborsReturnMat);
        
        // return the Matrix dimensions
        *distancesMatColNum = distancesReturnMat.n_cols;
        *distancesMatRowNum = distancesReturnMat.n_rows;
        
        // return the Matrix as one long Array
        *distancesMatArr = convertToArray(distancesReturnMat);
        
    }
    
    // TODO: 
    // input:   const MatType & 	referenceSet,
    //          const size_t 	    l = 0,
    //          const size_t 	    m = 0 
    // output: 
    // description: 
    void trainQDAFN(float *referenceSetMatArr, SP_integer referenceSetMatSize, SP_integer referenceSetMatRowNum, SP_integer l, SP_integer m)
    {
        // convert the Prolog arrays to arma::mat
        mat referenceSet = convertArrayToMat(referenceSetMatArr, referenceSetMatSize, referenceSetMatRowNum);
        
        qdafn.Train(referenceSet, l, m);
    }