135
154
void Group::deleteIndividualById(const std::string& individual_id) throw (IndividualNotFoundException)
138
158
removeIndividualById(individual_id);
140
catch (IndividualNotFoundException & infe) {
160
catch (IndividualNotFoundException& infe)
141
162
throw IndividualNotFoundException("Group::deleteIndividualById: individual_id not found.", individual_id);
145
void Group::deleteIndividualAtPosition(unsigned int individual_position) throw (IndexOutOfBoundsException)
166
void Group::deleteIndividualAtPosition(size_t individual_position) throw (IndexOutOfBoundsException)
148
170
removeIndividualAtPosition(individual_position);
150
catch (IndexOutOfBoundsException & ioobe) {
172
catch (IndexOutOfBoundsException& ioobe)
151
174
throw IndexOutOfBoundsException("Group::deleteIndividualAtPosition.", individual_position, 0, getNumberOfIndividuals());
155
178
void Group::clear()
157
for (unsigned int i = 0 ; i < individuals_.size() ; i++)
158
delete(individuals_[i]);
180
for (size_t i = 0; i < individuals_.size(); i++)
182
delete (individuals_[i]);
159
184
individuals_.clear();
162
187
const Individual& Group::getIndividualById(const std::string& individual_id) const throw (IndividualNotFoundException)
164
for (unsigned int i = 0 ; i < individuals_.size() ; i++) {
189
for (size_t i = 0; i < individuals_.size(); i++)
165
191
if (individuals_[i]->getId() == individual_id)
166
192
return getIndividualAtPosition(i);
168
194
throw IndividualNotFoundException("Group::getIndividualById: individual_id not found.", individual_id);
171
const Individual& Group::getIndividualAtPosition(unsigned int individual_position) const
197
const Individual& Group::getIndividualAtPosition(size_t individual_position) const
172
198
throw (IndexOutOfBoundsException)
174
200
if (individual_position >= individuals_.size())
175
201
throw IndexOutOfBoundsException("Group::getIndividualAtPosition: individual_position out of bounds.", individual_position, 0, individuals_.size());
176
return * individuals_[individual_position];
202
return *individuals_[individual_position];
179
unsigned int Group::getNumberOfIndividuals() const
205
size_t Group::getNumberOfIndividuals() const
181
207
return individuals_.size();
184
unsigned int Group::getMaxNumberOfSequences() const
210
size_t Group::getMaxNumberOfSequences() const
186
unsigned int maxnum = 0;
187
for (unsigned int i = 0 ; i < getNumberOfIndividuals() ; i++) {
188
vector<unsigned int> seqpos = individuals_[i]->getSequencesPositions();
189
for (unsigned int j = 0 ; j < seqpos.size() ; j++)
190
if (maxnum < seqpos[j]) maxnum = seqpos[j];
213
for (size_t i = 0; i < getNumberOfIndividuals(); i++)
215
vector<size_t> seqpos = individuals_[i]->getSequencesPositions();
216
for (size_t j = 0; j < seqpos.size(); j++)
218
if (maxnum < seqpos[j])
192
222
return maxnum + 1;
195
//-- Dealing with individual's properties -----------------
225
// -- Dealing with individual's properties -----------------
197
void Group::setIndividualSexAtPosition(unsigned int individual_position, const unsigned short sex) throw (IndexOutOfBoundsException)
227
void Group::setIndividualSexAtPosition(size_t individual_position, const unsigned short sex) throw (IndexOutOfBoundsException)
199
229
if (individual_position >= getNumberOfIndividuals())
200
230
throw IndexOutOfBoundsException("Group::setIndividualSexAtPosition: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
201
231
individuals_[individual_position]->setSex(sex);
204
unsigned short Group::getIndividualSexAtPosition(unsigned int individual_position) const throw (IndexOutOfBoundsException)
234
unsigned short Group::getIndividualSexAtPosition(size_t individual_position) const throw (IndexOutOfBoundsException)
206
236
if (individual_position >= getNumberOfIndividuals())
207
237
throw IndexOutOfBoundsException("Group::getIndividualSexAtPosition: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
208
238
return individuals_[individual_position]->getSex();
211
void Group::setIndividualDateAtPosition(unsigned int individual_position, const Date & date) throw (IndexOutOfBoundsException)
241
void Group::setIndividualDateAtPosition(size_t individual_position, const Date& date) throw (IndexOutOfBoundsException)
213
243
if (individual_position >= getNumberOfIndividuals())
214
244
throw IndexOutOfBoundsException("Group::setIndividualDateAtPosition: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
215
245
individuals_[individual_position]->setDate(date);
218
const Date& Group::getIndividualDateAtPosition(unsigned int individual_position) const throw (Exception)
248
const Date& Group::getIndividualDateAtPosition(size_t individual_position) const throw (Exception)
220
250
if (individual_position >= getNumberOfIndividuals())
221
251
throw IndexOutOfBoundsException("Group::getIndividualDateAtPosition: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
223
254
return individuals_[individual_position]->getDate();
225
catch (NullPointerException & npe) {
256
catch (NullPointerException& npe)
226
258
throw NullPointerException("Group::getIndividualDateAtPosition: individual has no date.");
230
void Group::setIndividualCoordAtPosition(unsigned int individual_position, const Point2D<double> & coord) throw (IndexOutOfBoundsException)
262
void Group::setIndividualCoordAtPosition(size_t individual_position, const Point2D<double>& coord) throw (IndexOutOfBoundsException)
232
264
if (individual_position >= getNumberOfIndividuals())
233
265
throw IndexOutOfBoundsException("Group::setIndividualCoordAtPosition: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
234
266
individuals_[individual_position]->setCoord(coord);
237
const Point2D<double>& Group::getIndividualCoordAtPosition(unsigned int individual_position) const throw (Exception)
269
const Point2D<double>& Group::getIndividualCoordAtPosition(size_t individual_position) const throw (Exception)
239
271
if (individual_position >= getNumberOfIndividuals())
240
272
throw IndexOutOfBoundsException("Group::getIndividualCoordAtPosition: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
242
275
return individuals_[individual_position]->getCoord();
244
catch (NullPointerException & npe) {
277
catch (NullPointerException& npe)
245
279
throw NullPointerException("Group::getIndividualCoordAtPosition: individual has no coordinates.");
249
void Group::setIndividualLocalityAtPosition(unsigned int individual_position, const Locality<double> * locality) throw (IndexOutOfBoundsException)
283
void Group::setIndividualLocalityAtPosition(size_t individual_position, const Locality<double>* locality) throw (IndexOutOfBoundsException)
251
285
if (individual_position >= getNumberOfIndividuals())
252
286
throw IndexOutOfBoundsException("Group::setIndividualLocalityAtPosition: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
253
287
individuals_[individual_position]->setLocality(locality);
256
const Locality<double>& Group::getIndividualLocalityAtPosition(unsigned int individual_position) const throw (Exception)
290
const Locality<double>& Group::getIndividualLocalityAtPosition(size_t individual_position) const throw (Exception)
258
292
if (individual_position >= getNumberOfIndividuals())
259
293
throw IndexOutOfBoundsException("Group::getIndividualLocalityAtPosition: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
261
return * individuals_[individual_position]->getLocality();
296
return *individuals_[individual_position]->getLocality();
263
catch (NullPointerException & npe) {
298
catch (NullPointerException& npe)
264
300
throw NullPointerException("Group::getIndividualLocalityAtPosition: individuals has no locality.");
268
void Group::addIndividualSequenceAtPosition(unsigned int individual_position, unsigned int sequence_position, const Sequence & sequence) throw (Exception)
304
void Group::addIndividualSequenceAtPosition(size_t individual_position, size_t sequence_position, const Sequence& sequence) throw (Exception)
270
306
if (individual_position >= getNumberOfIndividuals())
271
307
throw IndexOutOfBoundsException("Group::addIndividualSequenceAtPosition: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
273
310
individuals_[individual_position]->addSequence(sequence_position, sequence);
275
catch (AlphabetMismatchException & ame) {
312
catch (AlphabetMismatchException& ame)
276
314
throw AlphabetMismatchException("Group::addIndividualSequenceAtPosition: sequence's alphabet doesn't match.", ame.getAlphabets()[0], ame.getAlphabets()[1]);
278
catch (BadIdentifierException & bie) {
316
catch (BadIdentifierException& bie)
279
318
throw BadIdentifierException("Group::addIndividualSequenceAtPosition: sequence's name already in use.", bie.getIdentifier());
281
catch (BadIntegerException & bie) {
320
catch (BadIntegerException& bie)
282
322
throw BadIntegerException("Group::addIndividualSequenceAtPosition: sequence_position already in use.", bie.getBadInteger());
286
const Sequence& Group::getIndividualSequenceByName(unsigned int individual_position, const string & sequence_name) const throw (Exception)
326
const Sequence& Group::getIndividualSequenceByName(size_t individual_position, const string& sequence_name) const throw (Exception)
288
328
if (individual_position >= getNumberOfIndividuals())
289
329
throw IndexOutOfBoundsException("Group::getIndividualSequenceByName: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
291
332
return individuals_[individual_position]->getSequenceByName(sequence_name);
293
catch (NullPointerException & npe) {
334
catch (NullPointerException& npe)
294
336
throw NullPointerException("Group::getIndividualSequenceByName: no sequence data in individual.");
296
catch (SequenceNotFoundException & snfe) {
338
catch (SequenceNotFoundException& snfe)
297
340
throw SequenceNotFoundException("Group::getIndividualSequenceByName: sequence_name not found.", snfe.getSequenceId());
301
const Sequence& Group::getIndividualSequenceAtPosition(unsigned int individual_position, unsigned int sequence_position) const throw (Exception)
344
const Sequence& Group::getIndividualSequenceAtPosition(size_t individual_position, size_t sequence_position) const throw (Exception)
303
346
if (individual_position >= getNumberOfIndividuals())
304
347
throw IndexOutOfBoundsException("Group::getIndividualAtPosition: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
306
350
return individuals_[individual_position]->getSequenceAtPosition(sequence_position);
308
catch (NullPointerException & npe) {
352
catch (NullPointerException& npe)
309
354
throw NullPointerException("Group::getIndividualSequenceAtPosition: no sequence data in individual.");
311
catch (SequenceNotFoundException & snfe) {
356
catch (SequenceNotFoundException& snfe)
312
358
throw SequenceNotFoundException("Group::getIndividualSequenceAtPosition: sequence_position not found.", snfe.getSequenceId());
316
void Group::deleteIndividualSequenceByName(unsigned int individual_position, const string & sequence_name) throw (Exception)
362
void Group::deleteIndividualSequenceByName(size_t individual_position, const string& sequence_name) throw (Exception)
318
364
if (individual_position >= getNumberOfIndividuals())
319
365
throw IndexOutOfBoundsException("Group::deleteIndividualSequenceByName: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
321
368
individuals_[individual_position]->deleteSequenceByName(sequence_name);
323
catch (NullPointerException & npe) {
370
catch (NullPointerException& npe)
324
372
throw NullPointerException("Group::deleteSequenceByName: no sequence data in individual.");
326
catch (SequenceNotFoundException & snfe) {
374
catch (SequenceNotFoundException& snfe)
327
376
throw SequenceNotFoundException("Group::deleteSequenceByName: sequence_name not found.", snfe.getSequenceId());
331
void Group::deleteIndividualSequenceAtPosition(unsigned int individual_position, unsigned int sequence_position) throw (Exception)
380
void Group::deleteIndividualSequenceAtPosition(size_t individual_position, size_t sequence_position) throw (Exception)
333
382
if (individual_position >= getNumberOfIndividuals())
334
383
throw IndexOutOfBoundsException("Group::deleteIndividualSequenceAtPosition: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
336
386
individuals_[individual_position]->deleteSequenceAtPosition(sequence_position);
338
catch (NullPointerException & npe) {
388
catch (NullPointerException& npe)
339
390
throw NullPointerException("Group::deleteSequenceAtPosition: no sequence data in individual.");
341
catch (SequenceNotFoundException & snfe) {
392
catch (SequenceNotFoundException& snfe)
342
394
throw SequenceNotFoundException("Group::deleteSequenceAtPosition: sequence_position not found.", snfe.getSequenceId());
346
bool Group::hasIndividualSequences(unsigned int individual_position) const throw (IndexOutOfBoundsException)
398
bool Group::hasIndividualSequences(size_t individual_position) const throw (IndexOutOfBoundsException)
348
400
if (individual_position >= getNumberOfIndividuals())
349
401
throw IndexOutOfBoundsException("Group::hasIndividualSequences: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
350
402
return individuals_[individual_position]->hasSequences();
353
vector<string> Group::getIndividualSequencesNames(unsigned int individual_position) const throw (Exception)
405
vector<string> Group::getIndividualSequencesNames(size_t individual_position) const throw (Exception)
355
407
if (individual_position >= getNumberOfIndividuals())
356
408
throw IndexOutOfBoundsException("Group::getIndividualSequencesNames: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
358
411
return individuals_[individual_position]->getSequencesNames();
360
catch (NullPointerException & npe) {
413
catch (NullPointerException& npe)
361
415
throw NullPointerException("Group::getSequencesNames: no sequence data in individual.");
365
unsigned int Group::getIndividualSequencePosition(unsigned int individual_position, const string & sequence_name) const throw (Exception)
419
size_t Group::getIndividualSequencePosition(size_t individual_position, const string& sequence_name) const throw (Exception)
367
421
if (individual_position >= getNumberOfIndividuals())
368
422
throw IndexOutOfBoundsException("Group::getIndividualSequencePosition: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
370
425
return individuals_[individual_position]->getSequencePosition(sequence_name);
372
catch (NullPointerException & npe) {
427
catch (NullPointerException& npe)
373
429
throw NullPointerException("Group::getSequencePosition: no sequence data in individual.");
375
catch (SequenceNotFoundException & snfe) {
431
catch (SequenceNotFoundException& snfe)
376
433
throw SequenceNotFoundException("Group::getSequencePosition: sequence_name not found.", snfe.getSequenceId());
380
unsigned int Group::getIndividualNumberOfSequences(unsigned int individual_position) const throw (Exception)
437
size_t Group::getIndividualNumberOfSequences(size_t individual_position) const throw (Exception)
382
439
if (individual_position >= getNumberOfIndividuals())
383
440
throw IndexOutOfBoundsException("Group::getIndividualNumberOfSequences: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
385
443
return individuals_[individual_position]->getNumberOfSequences();
387
catch (NullPointerException & npe) {
445
catch (NullPointerException& npe)
388
447
throw NullPointerException("Group::getIndividualNumberOfSequences: no sequence data in individual.");
392
void Group::setIndividualSequences(unsigned int individual_position, const MapSequenceContainer & msc) throw (IndexOutOfBoundsException)
451
void Group::setIndividualSequences(size_t individual_position, const MapSequenceContainer& msc) throw (IndexOutOfBoundsException)
394
453
if (individual_position >= getNumberOfIndividuals())
395
454
throw IndexOutOfBoundsException("Group::setIndividualSequences: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
396
455
individuals_[individual_position]->setSequences(msc);
399
void Group::setIndividualGenotype(unsigned int individual_position, const MultilocusGenotype & genotype) throw (IndexOutOfBoundsException)
458
void Group::setIndividualGenotype(size_t individual_position, const MultilocusGenotype& genotype) throw (IndexOutOfBoundsException)
401
460
if (individual_position >= getNumberOfIndividuals())
402
461
throw IndexOutOfBoundsException("Group::setIndividualGenotype: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
403
462
individuals_[individual_position]->setGenotype(genotype);
406
void Group::initIndividualGenotype(unsigned int individual_position, unsigned int loci_number) throw (Exception)
465
void Group::initIndividualGenotype(size_t individual_position, size_t loci_number) throw (Exception)
408
467
if (individual_position >= getNumberOfIndividuals())
409
468
throw IndexOutOfBoundsException("Group::initIndividualGenotype: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
411
471
individuals_[individual_position]->initGenotype(loci_number);
413
catch (BadIntegerException & bie) {
473
catch (BadIntegerException& bie)
414
475
throw BadIntegerException("Group::initIndividualGenotype: loci_number must be > 0.", bie.getBadInteger());
417
479
throw Exception("Group::initIndividualGenotype: individual already has a genotype.");
421
void Group::deleteIndividualGenotype(unsigned int individual_position) throw (IndexOutOfBoundsException)
483
void Group::deleteIndividualGenotype(size_t individual_position) throw (IndexOutOfBoundsException)
423
485
if (individual_position >= getNumberOfIndividuals())
424
486
throw IndexOutOfBoundsException("Group::deleteIndividualGenotype: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
425
487
individuals_[individual_position]->deleteGenotype();
428
bool Group::hasIndividualGenotype(unsigned int individual_position) const throw (IndexOutOfBoundsException)
490
bool Group::hasIndividualGenotype(size_t individual_position) const throw (IndexOutOfBoundsException)
430
492
if (individual_position >= getNumberOfIndividuals())
431
493
throw IndexOutOfBoundsException("Group::hasIndividualGenotype: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
432
494
return individuals_[individual_position]->hasGenotype();
435
void Group::setIndividualMonolocusGenotype(unsigned int individual_position, unsigned int locus_position, const MonolocusGenotype & monogen) throw (Exception)
497
void Group::setIndividualMonolocusGenotype(size_t individual_position, size_t locus_position, const MonolocusGenotype& monogen) throw (Exception)
437
499
if (individual_position >= getNumberOfIndividuals())
438
500
throw IndexOutOfBoundsException("Group::setIndividualMonolocusGenotype: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
440
503
individuals_[individual_position]->setMonolocusGenotype(locus_position, monogen);
442
catch (NullPointerException & npe) {
505
catch (NullPointerException& npe)
443
507
throw NullPointerException("Group::setIndividualMonolocusGenotype: individual has no genotype.");
445
catch (IndexOutOfBoundsException & ioobe) {
446
throw IndexOutOfBoundsException("Group::setIndividualMonolocusGenotype: locus_position excedes the number of locus.", ioobe.getBadInteger(), ioobe.getBounds()[0], ioobe.getBounds()[1]);
509
catch (IndexOutOfBoundsException& ioobe)
511
throw IndexOutOfBoundsException("Group::setIndividualMonolocusGenotype: locus_position excedes the number of locus.", ioobe.getBadIndex(), ioobe.getBounds()[0], ioobe.getBounds()[1]);
450
void Group::setIndividualMonolocusGenotypeByAlleleKey(unsigned int individual_position, unsigned int locus_position, const std::vector<unsigned int>& allele_keys) throw (Exception)
515
void Group::setIndividualMonolocusGenotypeByAlleleKey(size_t individual_position, size_t locus_position, const std::vector<size_t>& allele_keys) throw (Exception)
452
517
if (individual_position >= getNumberOfIndividuals())
453
518
throw IndexOutOfBoundsException("Group::setIndividualMonolocusGenotypeByAlleleKey: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
455
521
individuals_[individual_position]->setMonolocusGenotypeByAlleleKey(locus_position, allele_keys);
457
catch (NullPointerException & npe) {
523
catch (NullPointerException& npe)
458
525
throw NullPointerException("Group::setIndividualMonolocusGenotypeByAlleleKey: individual has no genotype.");
460
catch (IndexOutOfBoundsException & ioobe) {
461
throw IndexOutOfBoundsException("Group::setIndividualMonolocusGenotypeByAlleleKey: locus_position excedes the number of locus.", ioobe.getBadInteger(), ioobe.getBounds()[0], ioobe.getBounds()[1]);
527
catch (IndexOutOfBoundsException& ioobe)
529
throw IndexOutOfBoundsException("Group::setIndividualMonolocusGenotypeByAlleleKey: locus_position excedes the number of locus.", ioobe.getBadIndex(), ioobe.getBounds()[0], ioobe.getBounds()[1]);
464
533
throw Exception("Group::setIndividualMonolocusGenotypeByAlleleKey: no key in allele_keys.");
468
void Group::setIndividualMonolocusGenotypeByAlleleId(unsigned int individual_position, unsigned int locus_position, const std::vector<std::string>& allele_id, const LocusInfo & locus_info) throw (Exception)
537
void Group::setIndividualMonolocusGenotypeByAlleleId(size_t individual_position, size_t locus_position, const std::vector<std::string>& allele_id, const LocusInfo& locus_info) throw (Exception)
470
539
if (individual_position >= getNumberOfIndividuals())
471
540
throw IndexOutOfBoundsException("Group::setIndividualMonolocusGenotypeByAlleleId: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
473
543
individuals_[individual_position]->setMonolocusGenotypeByAlleleId(locus_position, allele_id, locus_info);
475
catch (NullPointerException & npe) {
545
catch (NullPointerException& npe)
476
547
throw NullPointerException("Group::setIndividualMonolocusGenotypeByAlleleId: individual has no genotype.");
478
catch (IndexOutOfBoundsException & ioobe) {
479
throw IndexOutOfBoundsException("Group::setIndividualMonolocusGenotypeByAlleleId: locus_position excedes the number of locus.", ioobe.getBadInteger(), ioobe.getBounds()[0], ioobe.getBounds()[1]);
549
catch (IndexOutOfBoundsException& ioobe)
551
throw IndexOutOfBoundsException("Group::setIndividualMonolocusGenotypeByAlleleId: locus_position excedes the number of locus.", ioobe.getBadIndex(), ioobe.getBounds()[0], ioobe.getBounds()[1]);
481
catch (AlleleNotFoundException & anfe) {
553
catch (AlleleNotFoundException& anfe)
482
555
throw AlleleNotFoundException("Group::setIndividualMonolocusGenotypeByAlleleId: id not found.", anfe.getIdentifier());
486
const MonolocusGenotype& Group::getIndividualMonolocusGenotype(unsigned int individual_position, unsigned int locus_position) const throw (Exception)
559
const MonolocusGenotype& Group::getIndividualMonolocusGenotype(size_t individual_position, size_t locus_position) const throw (Exception)
488
561
if (individual_position >= getNumberOfIndividuals())
489
562
throw IndexOutOfBoundsException("Group::getIndividualMonolocusGenotype: individual_position out of bounds.", individual_position, 0, getNumberOfIndividuals());
491
565
return individuals_[individual_position]->getMonolocusGenotype(locus_position);
493
catch (NullPointerException & npe) {
567
catch (NullPointerException& npe)
494
569
throw NullPointerException("Group::getIndividualMonolocusGenotype: individual has no genotype.");
496
catch (IndexOutOfBoundsException & ioobe) {
497
throw IndexOutOfBoundsException("Group::getIndividualMonolocusGenotype: locus_position excedes the number of locus.", ioobe.getBadInteger(), ioobe.getBounds()[0], ioobe.getBounds()[1]);
571
catch (IndexOutOfBoundsException& ioobe)
573
throw IndexOutOfBoundsException("Group::getIndividualMonolocusGenotype: locus_position excedes the number of locus.", ioobe.getBadIndex(), ioobe.getBounds()[0], ioobe.getBounds()[1]);
501
577
bool Group::hasSequenceData() const
503
for (unsigned int i = 0 ; i < getNumberOfIndividuals() ; i++)
504
if (hasIndividualSequences(i)) return true;
579
for (size_t i = 0; i < getNumberOfIndividuals(); i++)
581
if (hasIndividualSequences(i))
508
const Alphabet * Group::getAlphabet() const throw (NullPointerException)
587
const Alphabet* Group::getAlphabet() const throw (NullPointerException)
510
for (unsigned int i = 0 ; i < getNumberOfIndividuals() ; i++)
589
for (size_t i = 0; i < getNumberOfIndividuals(); i++)
511
591
if (hasIndividualSequences(i))
512
592
return individuals_[i]->getSequenceAlphabet();
513
594
throw NullPointerException("Group::getAlphabet: individual has no sequence data.");
516
unsigned int Group::getGroupSizeForLocus(unsigned int locus_position) const
597
size_t Group::getGroupSizeForLocus(size_t locus_position) const
518
unsigned int count = 0;
519
for (unsigned int i = 0 ; i < individuals_.size() ; i++)
600
for (size_t i = 0; i < individuals_.size(); i++)
520
602
if (individuals_[i]->hasGenotype() && !individuals_[i]->getGenotype().isMonolocusGenotypeMissing(locus_position))
525
unsigned int Group::getGroupSizeForSequence(unsigned int sequence_position) const
608
size_t Group::getGroupSizeForSequence(size_t sequence_position) const
527
unsigned int count = 0;
528
for (unsigned int i = 0 ; i < individuals_.size() ; i++)
529
if (individuals_[i]->hasSequences()) {
611
for (size_t i = 0; i < individuals_.size(); i++)
613
if (individuals_[i]->hasSequences())
531
617
individuals_[i]->getSequenceAtPosition(sequence_position);