BEAGLE  1.0.0
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 
176 };
177 
188 };
189 
193 typedef struct {
195  char* resourceName;
197  char* implName;
200  long flags;
203 
207 typedef struct {
208  char* name;
209  char* description;
213 
217 typedef struct {
219  int length;
221 
222 /* using C calling conventions so that C programs can successfully link the beagle library
223  * (brace is closed at the end of this file)
224  */
225 #ifdef __cplusplus
226 extern "C" {
227 #endif
228 
237 BEAGLE_DLLEXPORT BeagleResourceList* beagleGetResourceList(void);
238 
268 // TODO: if setting your own matrices, might not need eigen buffers allocated, but still need
269 // category weight and state frequency buffers
270 BEAGLE_DLLEXPORT int beagleCreateInstance(int tipCount,
271  int partialsBufferCount,
272  int compactBufferCount,
273  int stateCount,
274  int patternCount,
275  int eigenBufferCount,
276  int matrixBufferCount,
277  int categoryCount,
278  int scaleBufferCount,
279  int* resourceList,
280  int resourceCount,
281  long preferenceFlags,
282  long requirementFlags,
283  BeagleInstanceDetails* returnInfo);
284 
294 BEAGLE_DLLEXPORT int beagleFinalizeInstance(int instance);
295 
304 BEAGLE_DLLEXPORT int beagleFinalize(void);
305 
320 BEAGLE_DLLEXPORT int beagleSetTipStates(int instance,
321  int tipIndex,
322  const int* inStates);
323 
338 BEAGLE_DLLEXPORT int beagleSetTipPartials(int instance,
339  int tipIndex,
340  const double* inPartials);
341 
354 BEAGLE_DLLEXPORT int beagleSetPartials(int instance,
355  int bufferIndex,
356  const double* inPartials);
357 
371 BEAGLE_DLLEXPORT int beagleGetPartials(int instance,
372  int bufferIndex,
373  int scaleIndex,
374  double* outPartials);
375 
390 BEAGLE_DLLEXPORT int beagleSetEigenDecomposition(int instance,
391  int eigenIndex,
392  const double* inEigenVectors,
393  const double* inInverseEigenVectors,
394  const double* inEigenValues);
395 
407 BEAGLE_DLLEXPORT int beagleSetStateFrequencies(int instance,
408  int stateFrequenciesIndex,
409  const double* inStateFrequencies);
410 
422 BEAGLE_DLLEXPORT int beagleSetCategoryWeights(int instance,
423  int categoryWeightsIndex,
424  const double* inCategoryWeights);
425 
436 BEAGLE_DLLEXPORT int beagleSetCategoryRates(int instance,
437  const double* inCategoryRates);
448 BEAGLE_DLLEXPORT int beagleSetPatternWeights(int instance,
449  const double* inPatternWeights);
450 
451 
453 //---TODO: Epoch model---//
455 
470 BEAGLE_DLLEXPORT int beagleConvolveTransitionMatrices(int instance,
471  const int* firstIndices,
472  const int* secondIndices,
473  const int* resultIndices,
474  int matrixCount);
475 
495 BEAGLE_DLLEXPORT int beagleUpdateTransitionMatrices(int instance,
496  int eigenIndex,
497  const int* probabilityIndices,
498  const int* firstDerivativeIndices,
499  const int* secondDerivativeIndices,
500  const double* edgeLengths,
501  int count);
502 
518 BEAGLE_DLLEXPORT int beagleSetTransitionMatrix(int instance,
519  int matrixIndex,
520  const double* inMatrix,
521  double paddedValue);
522 
536 BEAGLE_DLLEXPORT int beagleGetTransitionMatrix(int instance,
537  int matrixIndex,
538  double* outMatrix);
539 
556 BEAGLE_DLLEXPORT int beagleSetTransitionMatrices(int instance,
557  const int* matrixIndices,
558  const double* inMatrices,
559  const double* paddedValues,
560  int count);
561 
562 
566 typedef struct {
575 
590 BEAGLE_DLLEXPORT int beagleUpdatePartials(const int instance,
591  const BeagleOperation* operations,
592  int operationCount,
593  int cumulativeScaleIndex);
594 
611 BEAGLE_DLLEXPORT int beagleWaitForPartials(const int instance,
612  const int* destinationPartials,
613  int destinationPartialsCount);
614 
626 BEAGLE_DLLEXPORT int beagleAccumulateScaleFactors(int instance,
627  const int* scaleIndices,
628  int count,
629  int cumulativeScaleIndex);
630 
642 BEAGLE_DLLEXPORT int beagleRemoveScaleFactors(int instance,
643  const int* scaleIndices,
644  int count,
645  int cumulativeScaleIndex);
646 
655 BEAGLE_DLLEXPORT int beagleResetScaleFactors(int instance,
656  int cumulativeScaleIndex);
657 
667 BEAGLE_DLLEXPORT int beagleCopyScaleFactors(int instance,
668  int destScalingIndex,
669  int srcScalingIndex);
670 
692 // TODO: only need one state frequency index
693 BEAGLE_DLLEXPORT int beagleCalculateRootLogLikelihoods(int instance,
694  const int* bufferIndices,
695  const int* categoryWeightsIndices,
696  const int* stateFrequenciesIndices,
697  const int* cumulativeScaleIndices,
698  int count,
699  double* outSumLogLikelihood);
700 
728 BEAGLE_DLLEXPORT int beagleCalculateEdgeLogLikelihoods(int instance,
729  const int* parentBufferIndices,
730  const int* childBufferIndices,
731  const int* probabilityIndices,
732  const int* firstDerivativeIndices,
733  const int* secondDerivativeIndices,
734  const int* categoryWeightsIndices,
735  const int* stateFrequenciesIndices,
736  const int* cumulativeScaleIndices,
737  int count,
738  double* outSumLogLikelihood,
739  double* outSumFirstDerivative,
740  double* outSumSecondDerivative);
741 
753 BEAGLE_DLLEXPORT int beagleGetSiteLogLikelihoods(int instance,
754  double* outLogLikelihoods);
755 
767 BEAGLE_DLLEXPORT int beagleGetSiteDerivatives(int instance,
768  double* outFirstDerivatives,
769  double* outSecondDerivatives);
770 
771 /* using C calling conventions so that C programs can successfully link the beagle library
772  * (closing brace)
773  */
774 #ifdef __cplusplus
775 }
776 #endif
777 
778 #endif // __beagle__