ʻOhana
Population structure, admixture history, and selection using learning methods.
Data Structures | Public Types | Public Member Functions
jade::basic_likelihood_genotype_matrix< TValue > Class Template Reference

A template class implementing operations for a likelihood genotype matrix type. More...

#include <jade.likelihood_genotype_matrix.hpp>

+ Collaboration diagram for jade::basic_likelihood_genotype_matrix< TValue >:

Public Types

typedef TValue value_type
 The value type. More...
 
typedef basic_matrix< value_typematrix_type
 The matrix type. More...
 

Public Member Functions

 basic_likelihood_genotype_matrix ()
 Initializes a new instance of the class. More...
 
 basic_likelihood_genotype_matrix (std::istream &in)
 Initializes a new instance of the class based on values from the specified input stream. More...
 
 basic_likelihood_genotype_matrix (const std::string &path)
 Initializes a new instance of the class based on values from the specified file. More...
 
 basic_likelihood_genotype_matrix (char const *const path)
 Initializes a new instance of the class based on values from the specified file. More...
 
 basic_likelihood_genotype_matrix (const matrix_type &g_aa, const matrix_type &g_Aa, const matrix_type &g_AA)
 Initializes a new instance of the class based on values from the specified matrices. More...
 
const basic_likelihood_genotype_matrixas_lgm () const override
 
basic_likelihood_genotype_matrixas_lgm () override
 
virtual void compute_derivatives_f (const matrix_type &q, const matrix_type &, const matrix_type &, const matrix_type &qfa, const matrix_type &qfb, const size_t j, matrix_type &d_vec, matrix_type &h_mat) const override
 Computes the derivative vector and hessian matrix for a specified marker of the F matrix. More...
 
virtual void compute_derivatives_q (const matrix_type &, const matrix_type &fa, const matrix_type &fb, const matrix_type &qfa, const matrix_type &qfb, const size_t i, matrix_type &d_vec, matrix_type &h_mat) const override
 Computes the derivative vector and hessian matrix for a specified individual of the Q matrix. More...
 
virtual value_type compute_lle (const matrix_type &, const matrix_type &, const matrix_type &, const matrix_type &qfa, const matrix_type &qfb) const override
 
virtual matrix_type create_mu (const value_type f_epsilon) const override
 
virtual size_t get_height () const override
 
const matrix_typeget_major_major_matrix () const
 
const matrix_typeget_major_minor_matrix () const
 
const matrix_typeget_minor_minor_matrix () const
 
virtual std::string get_size_str () const override
 
virtual size_t get_width () const override
 
virtual std::string str () const override
 

Detailed Description

template<typename TValue>
class jade::basic_likelihood_genotype_matrix< TValue >

A template class implementing operations for a likelihood genotype matrix type.

Definition at line 19 of file jade.likelihood_genotype_matrix.hpp.

Member Typedef Documentation

◆ matrix_type

template<typename TValue >
typedef basic_matrix<value_type> jade::basic_likelihood_genotype_matrix< TValue >::matrix_type

The matrix type.

Definition at line 27 of file jade.likelihood_genotype_matrix.hpp.

◆ value_type

template<typename TValue >
typedef TValue jade::basic_likelihood_genotype_matrix< TValue >::value_type

The value type.

Definition at line 24 of file jade.likelihood_genotype_matrix.hpp.

Constructor & Destructor Documentation

◆ basic_likelihood_genotype_matrix() [1/5]

template<typename TValue >
jade::basic_likelihood_genotype_matrix< TValue >::basic_likelihood_genotype_matrix ( )
inline

Initializes a new instance of the class.

Definition at line 32 of file jade.likelihood_genotype_matrix.hpp.

33  : _g_aa ()
34  , _g_Aa ()
35  , _g_AA ()
36  {
37  }

◆ basic_likelihood_genotype_matrix() [2/5]

template<typename TValue >
jade::basic_likelihood_genotype_matrix< TValue >::basic_likelihood_genotype_matrix ( std::istream &  in)
inlineexplicit

Initializes a new instance of the class based on values from the specified input stream.

Parameters
inThe input stream.

Definition at line 43 of file jade.likelihood_genotype_matrix.hpp.

45  : _g_aa (in)
46  , _g_Aa (in)
47  , _g_AA (in)
48  {
49  _validate_sizes();
50  }

◆ basic_likelihood_genotype_matrix() [3/5]

template<typename TValue >
jade::basic_likelihood_genotype_matrix< TValue >::basic_likelihood_genotype_matrix ( const std::string &  path)
inlineexplicit

Initializes a new instance of the class based on values from the specified file.

Parameters
pathThe path to the file.

Definition at line 56 of file jade.likelihood_genotype_matrix.hpp.

58  : basic_likelihood_genotype_matrix(path.c_str())
59  {
60  }

◆ basic_likelihood_genotype_matrix() [4/5]

template<typename TValue >
jade::basic_likelihood_genotype_matrix< TValue >::basic_likelihood_genotype_matrix ( char const *const  path)
inlineexplicit

Initializes a new instance of the class based on values from the specified file.

Parameters
pathThe path to the file.

Definition at line 66 of file jade.likelihood_genotype_matrix.hpp.

69  {
70  assert(path != nullptr);
71 
72  try
73  {
74  std::ifstream in (path);
75  if (!in.good())
76  throw error("error reading file");
77 
79  _g_aa.swap(tmp._g_aa);
80  _g_Aa.swap(tmp._g_Aa);
81  _g_AA.swap(tmp._g_AA);
82  }
83  catch (const std::exception & e)
84  {
85  throw error()
86  << "error reading likelihood genotype matrix '"
87  << path << "': " << e.what();
88  }
89  }
+ Here is the call graph for this function:

◆ basic_likelihood_genotype_matrix() [5/5]

template<typename TValue >
jade::basic_likelihood_genotype_matrix< TValue >::basic_likelihood_genotype_matrix ( const matrix_type g_aa,
const matrix_type g_Aa,
const matrix_type g_AA 
)
inlineexplicit

Initializes a new instance of the class based on values from the specified matrices.

Parameters
g_aaThe minor-minor matrix.
g_AaThe major-minor matrix.
g_AAThe major-major matrix.

Definition at line 95 of file jade.likelihood_genotype_matrix.hpp.

99  : _g_aa (g_aa)
100  , _g_Aa (g_Aa)
101  , _g_AA (g_AA)
102  {
103  _validate_sizes();
104  }

Member Function Documentation

◆ as_lgm() [1/2]

template<typename TValue >
const basic_likelihood_genotype_matrix* jade::basic_likelihood_genotype_matrix< TValue >::as_lgm ( ) const
inlineoverride
Returns
This instance.

Definition at line 109 of file jade.likelihood_genotype_matrix.hpp.

110  {
111  return this;
112  }

◆ as_lgm() [2/2]

template<typename TValue >
basic_likelihood_genotype_matrix* jade::basic_likelihood_genotype_matrix< TValue >::as_lgm ( )
inlineoverride
Returns
This instance.

Definition at line 117 of file jade.likelihood_genotype_matrix.hpp.

118  {
119  return this;
120  }

◆ compute_derivatives_f()

template<typename TValue >
virtual void jade::basic_likelihood_genotype_matrix< TValue >::compute_derivatives_f ( const matrix_type q,
const matrix_type ,
const matrix_type ,
const matrix_type qfa,
const matrix_type qfb,
const size_t  j,
matrix_type d_vec,
matrix_type h_mat 
) const
inlineoverridevirtual

Computes the derivative vector and hessian matrix for a specified marker of the F matrix.

Parameters
qThe Q matrix.
qfaThe Q*F product.
qfbThe Q*(1-F) product.
jThe marker.
d_vecThe derivative vector.
h_matThe hessian matrix.

Definition at line 126 of file jade.likelihood_genotype_matrix.hpp.

136  {
137  const auto J = get_width();
138  const auto K = d_vec.get_height();
139 
140  #ifndef NDEBUG
141  const auto I = get_height();
142  assert(q.is_size(I, K));
143  assert(qfa.is_size(I, J));
144  assert(qfb.is_size(I, J));
145  assert(j < J);
146  assert(d_vec.is_size(K, 1));
147  assert(h_mat.is_size(K, K));
148  #endif // NDEBUG
149 
150  d_vec.set_values(0);
151  h_mat.set_values(0);
152 
153  //
154  // for (size_t i = 0; i < I; i++)
155  // g_ij --> g(i, j)
156  // q_i0 --> q(i, 0)
157  // qfa_ij --> qfa(i, j)
158  // qfb_ij --> qfb(i, j)
159  //
160  auto g_aa_ij_ptr = _g_aa.get_data() + j;
161  auto g_Aa_ij_ptr = _g_Aa.get_data() + j;
162  auto g_AA_ij_ptr = _g_AA.get_data() + j;
163  auto q_i0_ptr = q.get_data();
164  auto qfa_ij_ptr = qfa.get_data() + j;
165  auto qfb_ij_ptr = qfb.get_data() + j;
166  const auto g_aa_ij_end = g_aa_ij_ptr + _g_aa.get_length();
167  const auto g_step = J;
168  const auto q_step = K;
169  const auto qf_step = J;
170  while (g_aa_ij_ptr != g_aa_ij_end)
171  {
172  const auto g_AA_ij = *g_AA_ij_ptr;
173  const auto g_Aa_ij = *g_Aa_ij_ptr;
174  const auto g_aa_ij = *g_aa_ij_ptr;
175  const auto qfa_ij = *qfa_ij_ptr;
176  const auto qfb_ij = *qfb_ij_ptr;
177 
178  const auto alpha = value_type(1) / (
179  g_AA_ij * qfa_ij * qfa_ij +
180  g_aa_ij * qfb_ij * qfb_ij +
181  g_Aa_ij * qfa_ij * qfb_ij * 2);
182 
183  const auto theta = 2 * (
184  g_AA_ij * qfa_ij -
185  g_aa_ij * qfb_ij +
186  g_Aa_ij * qfb_ij -
187  g_Aa_ij * qfa_ij);
188 
189  //
190  // for (size_t k1 = 0; k1 < K; k1++)
191  // d --> d_vec[k1]
192  // h --> h_mat(k1, ...)
193  // q_ik1 --> q(i, k1)
194  //
195  auto d_ptr = d_vec.get_data();
196  auto h_ptr = h_mat.get_data();
197  auto q_ik1_ptr = q_i0_ptr;
198  const auto q_ik1_end = q_i0_ptr + K;
199  const auto q_ik2_end = q_i0_ptr + K;
200  while (q_ik1_ptr != q_ik1_end)
201  {
202  const auto q_ik1 = *q_ik1_ptr;
203 
204  *d_ptr += theta * alpha * q_ik1;
205 
206  //
207  // for (size_t k2 = 0; k2 < K; k2++)
208  // q_ik2 --> q(i, k2)
209  //
210  auto q_ik2_ptr = q_i0_ptr;
211  while (q_ik2_ptr != q_ik2_end)
212  {
213  const auto q_ik2 = *q_ik2_ptr;
214  const auto term = 2 * (g_AA_ij + g_aa_ij
215  - (2 * g_Aa_ij));
216 
217  *h_ptr += alpha * q_ik1 * q_ik2 * (
218  term - (theta * theta * alpha));
219 
220  h_ptr++;
221  q_ik2_ptr++;
222  }
223 
224  d_ptr++;
225  q_ik1_ptr++;
226  }
227 
228  g_AA_ij_ptr += g_step;
229  g_Aa_ij_ptr += g_step;
230  g_aa_ij_ptr += g_step;
231  qfa_ij_ptr += qf_step;
232  qfb_ij_ptr += qf_step;
233  q_i0_ptr += q_step;
234  }
235  }
+ Here is the call graph for this function:

◆ compute_derivatives_q()

template<typename TValue >
virtual void jade::basic_likelihood_genotype_matrix< TValue >::compute_derivatives_q ( const matrix_type ,
const matrix_type fa,
const matrix_type fb,
const matrix_type qfa,
const matrix_type qfb,
const size_t  i,
matrix_type d_vec,
matrix_type h_mat 
) const
inlineoverridevirtual

Computes the derivative vector and hessian matrix for a specified individual of the Q matrix.

Parameters
faThe F matrix.
fbThe 1-F matrix.
qfaThe Q*F product.
qfbThe Q*(1-F) product.
iThe individual.
d_vecThe derivative vector.
h_matThe hessian matrix.

Definition at line 241 of file jade.likelihood_genotype_matrix.hpp.

251  {
252  const auto J = get_width();
253 
254  #ifndef NDEBUG
255  const auto I = get_height();
256  const auto K = d_vec.get_height();
257  assert(fa.is_size(K, J));
258  assert(fb.is_size(K, J));
259  assert(qfa.is_size(I, J));
260  assert(qfb.is_size(I, J));
261  assert(i < I);
262  assert(d_vec.is_size(K, 1));
263  assert(h_mat.is_size(K, K));
264  #endif // NDEBUG
265 
266  d_vec.set_values(0);
267  h_mat.set_values(0);
268 
269  //
270  // for (size_t j = 0; j < J; j++)
271  // g_ij --> g(i, j)
272  // q_fa_ij --> q_fa(i, j)
273  // q_fb_ij --> q_fb(i, j)
274  // fa_0j --> q_fa(0, j)
275  // fb_0j --> q_fb(0, j)
276  //
277  auto g_AA_ij_ptr = _g_AA.get_data(i, 0);
278  auto g_Aa_ij_ptr = _g_Aa.get_data(i, 0);
279  auto g_aa_ij_ptr = _g_aa.get_data(i, 0);
280  const auto g_aa_ij_end = g_aa_ij_ptr + J;
281  auto qfa_ij_ptr = qfa.get_data(i, 0);
282  auto qfb_ij_ptr = qfb.get_data(i, 0);
283  auto fa_0j_ptr = fa.get_data();
284  auto fb_0j_ptr = fb.get_data();
285  auto f_step = J;
286  while (g_aa_ij_ptr != g_aa_ij_end)
287  {
288  const auto g_AA_ij = *g_AA_ij_ptr;
289  const auto g_Aa_ij = *g_Aa_ij_ptr;
290  const auto g_aa_ij = *g_aa_ij_ptr;
291  const auto qfa_ij = *qfa_ij_ptr;
292  const auto qfb_ij = *qfb_ij_ptr;
293 
294  const auto alpha = value_type(1) / (
295  g_AA_ij * qfa_ij * qfa_ij +
296  g_aa_ij * qfb_ij * qfb_ij +
297  g_Aa_ij * qfa_ij * qfb_ij * 2);
298 
299  const auto theta = 2 * (
300  (g_AA_ij * qfa_ij) +
301  (g_Aa_ij * qfb_ij));
302 
303  const auto gamma = 2 * (
304  (g_aa_ij * qfb_ij) +
305  (g_Aa_ij * qfa_ij));
306 
307  //
308  // for (size_t k1 = 0; k1 < K; k1++)
309  // fa_k1j --> fa(k1, j)
310  // fb_k1j --> fb(k1, j)
311  // d --> d_vec[k1]
312  // h --> h_mat(k1, ...)
313  //
314  auto fa_k1j_ptr = fa_0j_ptr;
315  auto fb_k1j_ptr = fb_0j_ptr;
316  auto d_ptr = d_vec.get_data();
317  auto h_ptr = h_mat.get_data();
318  const auto h_end = h_ptr + h_mat.get_length();
319  while (h_ptr != h_end)
320  {
321  const auto fa_k1j = *fa_k1j_ptr;
322  const auto fb_k1j = *fb_k1j_ptr;
323 
324  *d_ptr += alpha * ((theta * fa_k1j) + (gamma * fb_k1j));
325 
326  //
327  // for (size_t k2 = 0; k2 < K; k2++)
328  // fa_k2j --> fa(k2, j)
329  // fb_k2j --> fb(k2, j)
330  //
331  auto fa_k2j_ptr = fa_0j_ptr;
332  auto fb_k2j_ptr = fb_0j_ptr;
333  const auto fa_k2j_end = fa_k2j_ptr + fa.get_length();
334  while (fa_k2j_ptr != fa_k2j_end)
335  {
336  const auto fa_k2j = *fa_k2j_ptr;
337  const auto fb_k2j = *fb_k2j_ptr;
338 
339  const auto term1 = 2 * (
340  (g_AA_ij * fa_k1j * fa_k2j) +
341  (g_aa_ij * fb_k1j * fb_k2j));
342 
343  const auto term2 = 2 * g_Aa_ij * (
344  (fa_k1j * fb_k2j) +
345  (fb_k1j * fa_k2j));
346 
347  const auto term3 =
348  (theta * theta * fa_k1j * fa_k2j) +
349  (gamma * gamma * fb_k1j * fb_k2j);
350 
351  const auto term4 = theta * gamma * (
352  (fa_k1j * fb_k2j) +
353  (fb_k1j * fa_k2j));
354 
355  *h_ptr += alpha * (term1 + term2
356  - alpha * (term3 + term4));
357 
358  fa_k2j_ptr += f_step;
359  fb_k2j_ptr += f_step;
360  h_ptr++;
361  }
362 
363  fa_k1j_ptr += f_step;
364  fb_k1j_ptr += f_step;
365  d_ptr++;
366  }
367 
368  g_AA_ij_ptr++;
369  g_Aa_ij_ptr++;
370  g_aa_ij_ptr++;
371  qfa_ij_ptr++;
372  qfb_ij_ptr++;
373  fa_0j_ptr++;
374  fb_0j_ptr++;
375  }
376  }
+ Here is the call graph for this function:

◆ compute_lle()

template<typename TValue >
virtual value_type jade::basic_likelihood_genotype_matrix< TValue >::compute_lle ( const matrix_type ,
const matrix_type ,
const matrix_type ,
const matrix_type qfa,
const matrix_type qfb 
) const
inlineoverridevirtual
Returns
The log of the likelihood function.
Parameters
qfaThe Q*Fa product.
qfbThe Q*Fb product.

Definition at line 381 of file jade.likelihood_genotype_matrix.hpp.

388  {
389  assert(qfa.is_size(qfb));
390  assert(qfa.is_size(get_height(), get_width()));
391 
392  auto g_aa_ij_ptr = _g_aa.get_data();
393  auto g_Aa_ij_ptr = _g_Aa.get_data();
394  auto g_AA_ij_ptr = _g_AA.get_data();
395  auto qfa_ij_ptr = qfa.get_data();
396  auto qfb_ij_ptr = qfb.get_data();
397  const auto qfb_ij_end = qfb_ij_ptr + qfb.get_length();
398 
399  auto sum = value_type(0);
400 
401  while (qfb_ij_ptr != qfb_ij_end) // loop over all of Q x F (G)
402  {
403  const auto qfa_ij = *qfa_ij_ptr;
404  const auto qfb_ij = *qfb_ij_ptr;
405 
406  sum += std::log(
407  (*g_AA_ij_ptr * qfa_ij * qfa_ij) +
408  (*g_aa_ij_ptr * qfb_ij * qfb_ij) +
409  (*g_Aa_ij_ptr * qfa_ij * qfb_ij * value_type(2)));
410 
411  g_AA_ij_ptr++;
412  g_Aa_ij_ptr++;
413  g_aa_ij_ptr++;
414  qfa_ij_ptr++;
415  qfb_ij_ptr++;
416  }
417 
418  return sum;
419  }
+ Here is the call graph for this function:

◆ create_mu()

template<typename TValue >
virtual matrix_type jade::basic_likelihood_genotype_matrix< TValue >::create_mu ( const value_type  f_epsilon) const
inlineoverridevirtual
Returns
A new mu matrix.
Parameters
f_epsilonThe F matrix boundary epsilon.

Definition at line 424 of file jade.likelihood_genotype_matrix.hpp.

427  {
428  static const auto em_iterations = size_t(100);
429  static const auto em_epsilon = value_type(1.0e-6);
430 
431  const auto f_min = value_type(0.0) + f_epsilon;
432  const auto f_max = value_type(1.0) - f_epsilon;
433 
434  const auto I = get_height();
435  const auto J = get_width();
436 
437  matrix_type mu (J, 1);
438 
439  for (size_t j = 0; j < J; j++)
440  {
441  auto & mu_j = mu[j] = value_type(0.5);
442 
443  for (auto iter = em_iterations; iter > 0; iter--)
444  {
445  const auto wu_j = value_type(1.0) - mu_j;
446  auto sum = value_type(0.0);
447 
448  for (size_t i = 0; i < I; i++)
449  {
450  const auto AA = _g_AA(i, j) * mu_j * mu_j;
451  const auto aa = _g_aa(i, j) * wu_j * wu_j;
452  const auto Aa = _g_Aa(i, j) * mu_j * wu_j
453  * value_type(2.0);
454 
455  sum += (value_type(2.0) * AA + Aa)
456  / (value_type(2.0) * (AA + Aa + aa));
457  }
458 
459  const auto previous_mu_j = mu_j;
460  mu_j = std::min(std::max(
461  f_min,
462  sum / value_type(I)),
463  f_max);
464 
465  if (std::fabs(previous_mu_j - mu_j) <= em_epsilon)
466  break;
467  }
468  }
469 
470  return mu;
471  }
+ Here is the call graph for this function:

◆ get_height()

template<typename TValue >
virtual size_t jade::basic_likelihood_genotype_matrix< TValue >::get_height ( ) const
inlineoverridevirtual
Returns
The height of the matrix.

Definition at line 476 of file jade.likelihood_genotype_matrix.hpp.

477  {
478  return _g_aa.get_height();
479  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ get_major_major_matrix()

template<typename TValue >
const matrix_type& jade::basic_likelihood_genotype_matrix< TValue >::get_major_major_matrix ( ) const
inline
Returns
The major-major base matrix.

Definition at line 484 of file jade.likelihood_genotype_matrix.hpp.

485  {
486  return _g_AA;
487  }

◆ get_major_minor_matrix()

template<typename TValue >
const matrix_type& jade::basic_likelihood_genotype_matrix< TValue >::get_major_minor_matrix ( ) const
inline
Returns
The major-minor base matrix.

Definition at line 492 of file jade.likelihood_genotype_matrix.hpp.

493  {
494  return _g_Aa;
495  }

◆ get_minor_minor_matrix()

template<typename TValue >
const matrix_type& jade::basic_likelihood_genotype_matrix< TValue >::get_minor_minor_matrix ( ) const
inline
Returns
The minor-minor base matrix.

Definition at line 500 of file jade.likelihood_genotype_matrix.hpp.

501  {
502  return _g_aa;
503  }

◆ get_size_str()

template<typename TValue >
virtual std::string jade::basic_likelihood_genotype_matrix< TValue >::get_size_str ( ) const
inlineoverridevirtual
Returns
The string representation of the size of the matrix.

Definition at line 508 of file jade.likelihood_genotype_matrix.hpp.

509  {
510  return _g_aa.get_size_str();
511  }
+ Here is the call graph for this function:

◆ get_width()

template<typename TValue >
virtual size_t jade::basic_likelihood_genotype_matrix< TValue >::get_width ( ) const
inlineoverridevirtual
Returns
The width of the matrix.

Definition at line 516 of file jade.likelihood_genotype_matrix.hpp.

517  {
518  return _g_aa.get_width();
519  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ str()

template<typename TValue >
virtual std::string jade::basic_likelihood_genotype_matrix< TValue >::str ( ) const
inlineoverridevirtual
Returns
The string representation of the matrix.

Definition at line 524 of file jade.likelihood_genotype_matrix.hpp.

525  {
526  std::ostringstream out;
527  out << _g_aa << '\n' << _g_Aa << '\n' << _g_AA;
528  return out.str();
529  }
+ Here is the call graph for this function:

The documentation for this class was generated from the following files:
jade::basic_matrix::get_data
const value_type * get_data() const
Definition: jade.matrix.hpp:542
jade::basic_matrix::get_length
size_t get_length() const
Definition: jade.matrix.hpp:624
jade::basic_matrix::get_width
size_t get_width() const
Definition: jade.matrix.hpp:757
jade::basic_likelihood_genotype_matrix::matrix_type
basic_matrix< value_type > matrix_type
The matrix type.
Definition: jade.likelihood_genotype_matrix.hpp:27
jade::basic_likelihood_genotype_matrix::value_type
TValue value_type
The value type.
Definition: jade.likelihood_genotype_matrix.hpp:24
jade::basic_likelihood_genotype_matrix::get_width
virtual size_t get_width() const override
Definition: jade.likelihood_genotype_matrix.hpp:516
jade::basic_matrix::swap
void swap(basic_matrix &other)
Swaps this matrix and another matrix.
Definition: jade.matrix.hpp:1209
jade::basic_matrix::str
std::string str() const
Definition: jade.matrix.hpp:1199
jade::basic_matrix::get_size_str
std::string get_size_str() const
Definition: jade.matrix.hpp:735
jade::basic_likelihood_genotype_matrix::basic_likelihood_genotype_matrix
basic_likelihood_genotype_matrix()
Initializes a new instance of the class.
Definition: jade.likelihood_genotype_matrix.hpp:32
jade::basic_matrix::get_height
size_t get_height() const
Definition: jade.matrix.hpp:603
jade::basic_likelihood_genotype_matrix::get_height
virtual size_t get_height() const override
Definition: jade.likelihood_genotype_matrix.hpp:476