16 using namespace shogun;
49 return m_pwm[num_param];
75 uint8_t* str = strs->get_feature_vector(num_example, len, do_free);
80 for (int32_t i=0; i<len; i++)
83 strs->free_feature_vector(str, num_example, do_free);
104 int32_t m_w_cols = num_pos;
112 for (int32_t i=0; i<m_w_rows; i++)
114 for (int32_t j=0; j<m_w_cols; j++)
118 int32_t window_ptr=last_idx;
121 window[window_ptr]=0;
123 window[window_ptr]++;
129 void CPositionalPWM::register_params()
150 for (int32_t i=0; i<order; i++)
154 memset(
m_poim.
vector,0,
size_t(num_feat)*
size_t(num_sym));
156 uint32_t kmer_mask=0;
157 uint32_t words=
CMath::pow((int32_t) num_words,(int32_t) order);
160 for (int32_t o=0; o<max_degree; o++)
163 offset+=
CMath::pow((int32_t) num_words,(int32_t) o+1);
167 for (int32_t p=-o; p<order; p++)
169 int32_t o_sym=0, m_sym=0, il=0,ir=0, jl=0;
170 uint32_t imer_mask=kmer_mask;
171 uint32_t jmer_mask=kmer_mask;
190 imer_mask=(kmer_mask>>(num_bits*o_sym));
191 jmer_mask=(kmer_mask>>(num_bits*jl));
195 1.0/
CMath::pow((int32_t) num_words,(int32_t) m_sym);
197 for (uint32_t i=0; i<words; i++)
199 uint16_t x= ((i << (num_bits*il)) >> (num_bits*ir)) & imer_mask;
201 if (p>=0 && p<order-o)
207 for (uint32_t j=0; j< (uint32_t)
CMath::pow((int32_t) num_words, (int32_t) o_sym); j++)
209 uint32_t c=x | ((j & jmer_mask) << (num_bits*jl));
221 for (int32_t i=0; i<d-1; i++)