Legofit
infers population history from nucleotide site patterns.
Loading...
Searching...
No Matches
parstore.c File Reference

Manage a vector of parameters. More...

#include "parstore.h"
#include "ptrqueue.h"
#include "ptrptrmap.h"
#include "strint.h"
#include "param.h"
#include "tinyexpr.h"
#include "misc.h"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/errno.h>
#include <stdbool.h>
#include <assert.h>
#include <float.h>
#include <gsl/gsl_rng.h>

Data Structures

struct  ParStore

Macros

#define DUPLICATE_PAR(x)
 Abort with an error message about duplicate parameter definition.

Functions

static int ParStore_constrain (ParStore *self)
 First check to see that free parameters obey boundary constraints.
static void ParStore_chkDependencies (ParStore *self)
ParStoreParStore_new (PtrQueue *fixedQ, PtrQueue *freeQ, PtrQueue *constrQ)
ParStoreParStore_dup (const ParStore *old)
 Duplicate a ParStore.
int ParStore_nPar (ParStore *self)
 Return the number of parameters.
double ParStore_getVal (ParStore *self, int i)
ParamParStore_getParam (ParStore *self, int i)
int ParStore_nFree (ParStore *self)
 Return the number of free parameters.
int ParStore_nFixed (ParStore *self)
 Return the number of fixed parameters.
int ParStore_nConstrained (ParStore *self)
 Return the number of constrained parameters.
int ParStore_setFreeParams (ParStore *self, int n, double x[n])
 Set vector of free parameters, then update constrained parameters.
void ParStore_getFreeParams (ParStore *self, int n, double x[n])
 Get vector of free parameters.
void ParStore_print (ParStore *self, FILE *fp)
 Print a ParStore.
void ParStore_printFree (ParStore *self, FILE *fp)
 Print free parameter values.
void ParStore_printConstrained (ParStore *self, FILE *fp)
 Print constrained parameter values.
void ParStore_free (ParStore *self)
 Destructor.
const char * ParStore_getNameFree (ParStore *self, int i)
 Get name of i'th free parameter.
int ParStore_getIndex (ParStore *self, const char *name)
 Return index of parameter name, or -1 if the name isn't there.
void ParStore_sanityCheck (ParStore *self, const char *file, int line)
int ParStore_equals (ParStore *lhs, ParStore *rhs)
 Return 1 if two ParStore objects are equal; 0 otherwise.
void Bounds_sanityCheck (Bounds *self, const char *file, int line)
 Make sure Bounds object is sane.
int Bounds_equals (const Bounds *lhs, const Bounds *rhs)
 Return 1 if two Bounds objects are equal; 0 otherwise.

Detailed Description

Manage a vector of parameters.

This class solves the following problem. One algorithm requires that parameters be distributed throughout a network of nodes. Another requires that they all be collected into a vector. To accomplish both goals, ParStore maintains a vector of parameter values, together with high and low bounds on those values. When a new parameter is added to the ParStore, a pointer to that value is returned, so that it can be stored in the distributed data structure.

Macro Definition Documentation

◆ DUPLICATE_PAR

#define DUPLICATE_PAR ( x)
Value:
do{ \
fprintf(stderr,"%s:%d: Duplicate parameter def: \"%s\"\n", \
__FILE__,__LINE__, (x)); \
exit(EXIT_FAILURE); \
}while(0)

Abort with an error message about duplicate parameter definition.

Referenced by ParStore_dup().

Function Documentation

◆ ParStore_constrain()

int ParStore_constrain ( ParStore * self)
static

First check to see that free parameters obey boundary constraints.

If not, then return 1. Otherwise, set values of all constrained parameters and return 0.

Referenced by ParStore_setFreeParams().

◆ ParStore_setFreeParams()

int ParStore_setFreeParams ( ParStore * self,
int n,
double x[n] )

Set vector of free parameters, then update constrained parameters.

Return the value returned by ParStore_constrain.

References ParStore_constrain().

Referenced by GPTree_setParams().