16 using namespace shogun;
19 m_pwm_rows(0), m_pwm_cols(0), m_pwm(NULL),
20 m_sigma(0), m_mean(0),
21 m_w_rows(0), m_w_cols(0), m_w(NULL), m_poim(NULL)
51 return m_pwm[num_param];
77 uint8_t* str = strs->get_feature_vector(num_example, len, do_free);
82 for (int32_t i=0; i<len; i++)
85 strs->free_feature_vector(str, num_example, do_free);
121 int32_t window_ptr=last_idx;
122 while (window[window_ptr]==
m_pwm_rows && window_ptr>0)
124 window[window_ptr]=0;
126 window[window_ptr]++;
132 void CPositionalPWM::register_params()
155 for (int32_t i=0; i<order; i++)
161 memset(
m_poim,0,
size_t(num_feat)*
size_t(num_sym));
163 uint32_t kmer_mask=0;
164 uint32_t words=
CMath::pow((int32_t) num_words,(int32_t) order);
167 for (int32_t o=0; o<max_degree; o++)
170 offset+=
CMath::pow((int32_t) num_words,(int32_t) o+1);
174 for (int32_t p=-o; p<order; p++)
176 int32_t o_sym=0, m_sym=0, il=0,ir=0, jl=0;
177 uint32_t imer_mask=kmer_mask;
178 uint32_t jmer_mask=kmer_mask;
197 imer_mask=(kmer_mask>>(num_bits*o_sym));
198 jmer_mask=(kmer_mask>>(num_bits*jl));
202 1.0/
CMath::pow((int32_t) num_words,(int32_t) m_sym);
204 for (uint32_t i=0; i<words; i++)
206 uint16_t x= ((i << (num_bits*il)) >> (num_bits*ir)) & imer_mask;
208 if (p>=0 && p<order-o)
214 for (uint32_t j=0; j< (uint32_t)
CMath::pow((int32_t) num_words, (int32_t) o_sym); j++)
216 uint32_t c=x | ((j & jmer_mask) << (num_bits*jl));
228 for (int32_t i=0; i<d-1; i++)
230 int32_t rows=
CMath::pow((int32_t) m_w_rows,d);
virtual EFeatureType get_feature_type()=0
virtual float64_t get_log_derivative(int32_t num_param, int32_t num_example)
#define SG_NOTIMPLEMENTED
The class Alphabet implements an alphabet and alphabet utility functions.
ST get_masked_symbols(ST symbol, uint8_t mask)
void compute_symbol_mask_table(int64_t max_val)
Base class Distribution from which all methods implementing a distribution are derived.
virtual float64_t get_log_model_parameter(int32_t num_param)
void add(bool *param, const char *name, const char *description="")
virtual int32_t get_num_model_parameters()
virtual EFeatureClass get_feature_class()=0
static int32_t pow(int32_t x, int32_t n)
int32_t get_num_bits() const
virtual float64_t get_log_likelihood_example(int32_t num_example)
void add_vector(bool **param, index_t *length, const char *name, const char *description="")
virtual SGMatrix< float64_t > get_scoring(int32_t d)
The class Features is the base class of all feature objects.
static void fill_vector(T *vec, int32_t len, T value)
void compute_w(int32_t num_pos)
static float64_t log(float64_t v)
float64_t get_log_likelihood_window(uint8_t *window, int32_t len, float64_t pos)
virtual ~CPositionalPWM()
static float32_t sqrt(float32_t x)
x^0.5
void add_matrix(bool **param, index_t *length_y, index_t *length_x, const char *name, const char *description="")
#define SG_MALLOC(type, len)
void compute_scoring(int32_t max_degree)
virtual bool train(CFeatures *data=NULL)