BEAGLE  2.1.2
An Application Programming Interface and High-Performance Computing Library for Statistical Phylogenetics
 All Classes Files Functions Variables Enumerations Enumerator
beagle.h
Go to the documentation of this file.
1 
108 #ifndef __beagle__
109 #define __beagle__
110 
111 #include "libhmsbeagle/platform.h"
112 
132 };
133 
180 };
181 
192 };
193 
197 typedef struct {
199  char* resourceName;
201  char* implName;
204  long flags;
207 
211 typedef struct {
212  char* name;
213  char* description;
217 
221 typedef struct {
223  int length;
225 
226 /* using C calling conventions so that C programs can successfully link the beagle library
227  * (brace is closed at the end of this file)
228  */
229 #ifdef __cplusplus
230 extern "C" {
231 #endif
232 
240 BEAGLE_DLLEXPORT const char* beagleGetVersion(void);
241 
250 BEAGLE_DLLEXPORT const char* beagleGetCitation(void);
251 
260 BEAGLE_DLLEXPORT BeagleResourceList* beagleGetResourceList(void);
261 
291 // TODO: if setting your own matrices, might not need eigen buffers allocated, but still need
292 // category weight and state frequency buffers
293 BEAGLE_DLLEXPORT int beagleCreateInstance(int tipCount,
294  int partialsBufferCount,
295  int compactBufferCount,
296  int stateCount,
297  int patternCount,
298  int eigenBufferCount,
299  int matrixBufferCount,
300  int categoryCount,
301  int scaleBufferCount,
302  int* resourceList,
303  int resourceCount,
304  long preferenceFlags,
305  long requirementFlags,
306  BeagleInstanceDetails* returnInfo);
307 
317 BEAGLE_DLLEXPORT int beagleFinalizeInstance(int instance);
318 
327 BEAGLE_DLLEXPORT int beagleFinalize(void);
328 
343 BEAGLE_DLLEXPORT int beagleSetTipStates(int instance,
344  int tipIndex,
345  const int* inStates);
346 
361 BEAGLE_DLLEXPORT int beagleSetTipPartials(int instance,
362  int tipIndex,
363  const double* inPartials);
364 
377 BEAGLE_DLLEXPORT int beagleSetPartials(int instance,
378  int bufferIndex,
379  const double* inPartials);
380 
394 BEAGLE_DLLEXPORT int beagleGetPartials(int instance,
395  int bufferIndex,
396  int scaleIndex,
397  double* outPartials);
398 
413 BEAGLE_DLLEXPORT int beagleSetEigenDecomposition(int instance,
414  int eigenIndex,
415  const double* inEigenVectors,
416  const double* inInverseEigenVectors,
417  const double* inEigenValues);
418 
430 BEAGLE_DLLEXPORT int beagleSetStateFrequencies(int instance,
431  int stateFrequenciesIndex,
432  const double* inStateFrequencies);
433 
445 BEAGLE_DLLEXPORT int beagleSetCategoryWeights(int instance,
446  int categoryWeightsIndex,
447  const double* inCategoryWeights);
448 
459 BEAGLE_DLLEXPORT int beagleSetCategoryRates(int instance,
460  const double* inCategoryRates);
471 BEAGLE_DLLEXPORT int beagleSetPatternWeights(int instance,
472  const double* inPatternWeights);
473 
474 
476 //---TODO: Epoch model---//
478 
493 BEAGLE_DLLEXPORT int beagleConvolveTransitionMatrices(int instance,
494  const int* firstIndices,
495  const int* secondIndices,
496  const int* resultIndices,
497  int matrixCount);
498 
518 BEAGLE_DLLEXPORT int beagleUpdateTransitionMatrices(int instance,
519  int eigenIndex,
520  const int* probabilityIndices,
521  const int* firstDerivativeIndices,
522  const int* secondDerivativeIndices,
523  const double* edgeLengths,
524  int count);
525 
541 BEAGLE_DLLEXPORT int beagleSetTransitionMatrix(int instance,
542  int matrixIndex,
543  const double* inMatrix,
544  double paddedValue);
545 
559 BEAGLE_DLLEXPORT int beagleGetTransitionMatrix(int instance,
560  int matrixIndex,
561  double* outMatrix);
562 
579 BEAGLE_DLLEXPORT int beagleSetTransitionMatrices(int instance,
580  const int* matrixIndices,
581  const double* inMatrices,
582  const double* paddedValues,
583  int count);
584 
585 
589 typedef struct {
598 
613 BEAGLE_DLLEXPORT int beagleUpdatePartials(const int instance,
614  const BeagleOperation* operations,
615  int operationCount,
616  int cumulativeScaleIndex);
617 
634 BEAGLE_DLLEXPORT int beagleWaitForPartials(const int instance,
635  const int* destinationPartials,
636  int destinationPartialsCount);
637 
649 BEAGLE_DLLEXPORT int beagleAccumulateScaleFactors(int instance,
650  const int* scaleIndices,
651  int count,
652  int cumulativeScaleIndex);
653 
665 BEAGLE_DLLEXPORT int beagleRemoveScaleFactors(int instance,
666  const int* scaleIndices,
667  int count,
668  int cumulativeScaleIndex);
669 
678 BEAGLE_DLLEXPORT int beagleResetScaleFactors(int instance,
679  int cumulativeScaleIndex);
680 
690 BEAGLE_DLLEXPORT int beagleCopyScaleFactors(int instance,
691  int destScalingIndex,
692  int srcScalingIndex);
693 
715 // TODO: only need one state frequency index
716 BEAGLE_DLLEXPORT int beagleCalculateRootLogLikelihoods(int instance,
717  const int* bufferIndices,
718  const int* categoryWeightsIndices,
719  const int* stateFrequenciesIndices,
720  const int* cumulativeScaleIndices,
721  int count,
722  double* outSumLogLikelihood);
723 
751 BEAGLE_DLLEXPORT int beagleCalculateEdgeLogLikelihoods(int instance,
752  const int* parentBufferIndices,
753  const int* childBufferIndices,
754  const int* probabilityIndices,
755  const int* firstDerivativeIndices,
756  const int* secondDerivativeIndices,
757  const int* categoryWeightsIndices,
758  const int* stateFrequenciesIndices,
759  const int* cumulativeScaleIndices,
760  int count,
761  double* outSumLogLikelihood,
762  double* outSumFirstDerivative,
763  double* outSumSecondDerivative);
764 
776 BEAGLE_DLLEXPORT int beagleGetSiteLogLikelihoods(int instance,
777  double* outLogLikelihoods);
778 
790 BEAGLE_DLLEXPORT int beagleGetSiteDerivatives(int instance,
791  double* outFirstDerivatives,
792  double* outSecondDerivatives);
793 
794 /* using C calling conventions so that C programs can successfully link the beagle library
795  * (closing brace)
796  */
797 #ifdef __cplusplus
798 }
799 #endif
800 
801 #endif // __beagle__
BEAGLE_DLLEXPORT const char * beagleGetVersion(void)
Get version.
BEAGLE_DLLEXPORT int beagleSetCategoryRates(int instance, const double *inCategoryRates)
Set category rates.
Definition: beagle.h:147
Definition: beagle.h:190
Definition: beagle.h:167
char * implName
Definition: beagle.h:201
List of hardware resources.
Definition: beagle.h:221
int child1Partials
Definition: beagle.h:593
long requiredFlags
Definition: beagle.h:215
BEAGLE_DLLEXPORT int beagleSetEigenDecomposition(int instance, int eigenIndex, const double *inEigenVectors, const double *inInverseEigenVectors, const double *inEigenValues)
Set an eigen-decomposition buffer.
Definition: beagle.h:130
Definition: beagle.h:191
Definition: beagle.h:129
Information about a specific instance.
Definition: beagle.h:197
int destinationScaleRead
Definition: beagle.h:592
char * description
Definition: beagle.h:213
BeagleOpCodes
Operation codes.
Definition: beagle.h:189
Definition: beagle.h:163
Definition: beagle.h:123
long supportFlags
Definition: beagle.h:214
int length
Definition: beagle.h:223
BEAGLE_DLLEXPORT int beagleSetPartials(int instance, int bufferIndex, const double *inPartials)
Set an instance partials buffer.
Definition: beagle.h:174
Definition: beagle.h:175
BEAGLE_DLLEXPORT int beagleCalculateEdgeLogLikelihoods(int instance, const int *parentBufferIndices, const int *childBufferIndices, const int *probabilityIndices, const int *firstDerivativeIndices, const int *secondDerivativeIndices, const int *categoryWeightsIndices, const int *stateFrequenciesIndices, const int *cumulativeScaleIndices, int count, double *outSumLogLikelihood, double *outSumFirstDerivative, double *outSumSecondDerivative)
Calculate site log likelihoods and derivatives along an edge.
BEAGLE_DLLEXPORT int beagleGetTransitionMatrix(int instance, int matrixIndex, double *outMatrix)
Get a finite-time transition probability matrix.
Definition: beagle.h:168
Definition: beagle.h:155
Definition: beagle.h:165
Definition: beagle.h:179
BEAGLE_DLLEXPORT int beagleGetPartials(int instance, int bufferIndex, int scaleIndex, double *outPartials)
Get partials from an instance buffer.
BEAGLE_DLLEXPORT int beagleSetTransitionMatrix(int instance, int matrixIndex, const double *inMatrix, double paddedValue)
Set a finite-time transition probability matrix.
Definition: beagle.h:170
char * implDescription
Definition: beagle.h:203
Definition: beagle.h:149
BEAGLE_DLLEXPORT int beagleFinalize(void)
Finalize the library.
int child2TransitionMatrix
Definition: beagle.h:596
int child2Partials
Definition: beagle.h:595
BEAGLE_DLLEXPORT int beagleAccumulateScaleFactors(int instance, const int *scaleIndices, int count, int cumulativeScaleIndex)
Accumulate scale factors.
char * resourceName
Definition: beagle.h:199
long flags
Definition: beagle.h:204
Definition: beagle.h:152
Definition: beagle.h:154
int child1TransitionMatrix
Definition: beagle.h:594
Definition: beagle.h:173
Definition: beagle.h:164
BeagleResource * list
Definition: beagle.h:222
Definition: beagle.h:146
BEAGLE_DLLEXPORT int beagleWaitForPartials(const int instance, const int *destinationPartials, int destinationPartialsCount)
Block until all calculations that write to the specified partials have completed. ...
BEAGLE_DLLEXPORT const char * beagleGetCitation(void)
Get citation.
BEAGLE_DLLEXPORT int beagleSetCategoryWeights(int instance, int categoryWeightsIndex, const double *inCategoryWeights)
Set a category weights buffer.
BEAGLE_DLLEXPORT int beagleCopyScaleFactors(int instance, int destScalingIndex, int srcScalingIndex)
Copy scale factors.
int resourceNumber
Definition: beagle.h:198
Definition: beagle.h:143
Definition: beagle.h:127
BEAGLE_DLLEXPORT int beagleCalculateRootLogLikelihoods(int instance, const int *bufferIndices, const int *categoryWeightsIndices, const int *stateFrequenciesIndices, const int *cumulativeScaleIndices, int count, double *outSumLogLikelihood)
Calculate site log likelihoods at a root node.
Definition: beagle.h:157
Definition: beagle.h:121
Definition: beagle.h:178
BEAGLE_DLLEXPORT int beagleUpdateTransitionMatrices(int instance, int eigenIndex, const int *probabilityIndices, const int *firstDerivativeIndices, const int *secondDerivativeIndices, const double *edgeLengths, int count)
Calculate a list of transition probability matrices.
Definition: beagle.h:131
BEAGLE_DLLEXPORT int beagleGetSiteLogLikelihoods(int instance, double *outLogLikelihoods)
Get site log likelihoods for last beagleCalculateRootLogLikelihoods or beagleCalculateEdgeLogLikeliho...
Definition: beagle.h:160
BEAGLE_DLLEXPORT int beagleUpdatePartials(const int instance, const BeagleOperation *operations, int operationCount, int cumulativeScaleIndex)
Calculate or queue for calculation partials using a list of operations.
BEAGLE_DLLEXPORT int beagleConvolveTransitionMatrices(int instance, const int *firstIndices, const int *secondIndices, const int *resultIndices, int matrixCount)
Convolve lists of transition probability matrices.
Definition: beagle.h:153
BEAGLE_DLLEXPORT int beagleSetTipPartials(int instance, int tipIndex, const double *inPartials)
Set an instance partials buffer for tip node.
int destinationPartials
Definition: beagle.h:590
BEAGLE_DLLEXPORT int beagleFinalizeInstance(int instance)
Finalize this instance.
Definition: beagle.h:124
BEAGLE_DLLEXPORT int beagleSetPatternWeights(int instance, const double *inPatternWeights)
Set pattern weights.
BEAGLE_DLLEXPORT int beagleSetStateFrequencies(int instance, int stateFrequenciesIndex, const double *inStateFrequencies)
Set a state frequency buffer.
Definition: beagle.h:171
BEAGLE_DLLEXPORT int beagleCreateInstance(int tipCount, int partialsBufferCount, int compactBufferCount, int stateCount, int patternCount, int eigenBufferCount, int matrixBufferCount, int categoryCount, int scaleBufferCount, int *resourceList, int resourceCount, long preferenceFlags, long requirementFlags, BeagleInstanceDetails *returnInfo)
Create a single instance.
Description of a hardware resource.
Definition: beagle.h:211
Definition: beagle.h:122
Definition: beagle.h:172
BEAGLE_DLLEXPORT BeagleResourceList * beagleGetResourceList(void)
Get list of hardware resources.
Definition: beagle.h:144
BeagleFlags
Hardware and implementation capability flags.
Definition: beagle.h:142
BEAGLE_DLLEXPORT int beagleSetTipStates(int instance, int tipIndex, const int *inStates)
Set the compact state representation for tip node.
BEAGLE_DLLEXPORT int beagleGetSiteDerivatives(int instance, double *outFirstDerivatives, double *outSecondDerivatives)
Get site derivatives for last beagleCalculateEdgeLogLikelihoods call.
BEAGLE_DLLEXPORT int beagleRemoveScaleFactors(int instance, const int *scaleIndices, int count, int cumulativeScaleIndex)
Remove scale factors.
int destinationScaleWrite
Definition: beagle.h:591
Definition: beagle.h:158
char * name
Definition: beagle.h:212
Definition: beagle.h:125
Definition: beagle.h:177
A list of integer indices which specify a partial likelihoods operation.
Definition: beagle.h:589
Definition: beagle.h:161
BEAGLE_DLLEXPORT int beagleResetScaleFactors(int instance, int cumulativeScaleIndex)
Reset scalefactors.
BeagleReturnCodes
Error return codes.
Definition: beagle.h:120
Definition: beagle.h:150
BEAGLE_DLLEXPORT int beagleSetTransitionMatrices(int instance, const int *matrixIndices, const double *inMatrices, const double *paddedValues, int count)
Set multiple transition matrices.