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);