Example #1
0
Chain *newChain(Config *cfg){ /* host */
  int n, g, N, G, *grp;
  count_t *y;
  num_t tmp;
  Chain *a;

  chdir(cfg->cwd); 
  y = readData(cfg);
  
  N = cfg->N;
  G = cfg->G;
  
  if(y == NULL)
    return NULL;

  grp = readGrp(cfg);
  
  if(grp == NULL){
    free(y);
    
    return NULL;
  }
  
  chdir(cfg->outDir); 
  
  if(cfg->verbose)
    printf("Allocating chain object.\n");
  
  a = allocChain(cfg);

  /* data and configuration info */
  
  a->M = cfg->M;
  a->N = cfg->N;
  a->G = cfg->G;
  a->burnin = cfg->burnin;
  
  for(n = 0; n < cfg->N; ++n){
    
    a->grp[n] = grp[n];
    tmp = 0;
    
    for(g = 0; g < cfg->G; ++g){
      a->y[iG(n, g)] = y[iG(n, g)];
      tmp += y[iG(n, g)];
    }
           
    a->yMeanG[n] = tmp / cfg->G;
  }
    
  /* choices of priors */
  
  a->phiPrior = cfg->phiPrior;
  a->alpPrior = cfg->alpPrior;  
  a->delPrior = cfg->delPrior;  
    
  /* initialization constants */
  
  a->sigC0   = cfg->sigC0;
  a->d0      = cfg->d0;
  a->aTau    = cfg->aTau;
  a->aAlp    = cfg->aAlp;
  a->aDel    = cfg->aDel; 
  a->bTau    = cfg->bTau;
  a->bAlp    = cfg->bAlp;
  a->bDel    = cfg->bDel;  
  a->gamPhi  = cfg->gamPhi;
  a->gamAlp  = cfg->gamAlp;
  a->gamDel  = cfg->gamDel;
  a->sigPhi0 = cfg->sigPhi0;
  a->sigAlp0 = cfg->sigAlp0;
  a->sigDel0 = cfg->sigDel0;
  
  /* hyperparameters */
  
  a->sigC   = cfg->sigC;
  a->d      = cfg->d;
  a->tau    = cfg->tau;
  a->thePhi = cfg->thePhi;
  a->theAlp = cfg->theAlp;
  a->theDel = cfg->theDel;
  a->sigPhi = cfg->sigPhi;
  a->sigAlp = cfg->sigAlp;
  a->sigDel = cfg->sigDel;
  a->piAlp  = cfg->piAlp;
  a->piDel  = cfg->piDel;
  
  /* choices to hold hyperparameters constant */
  
  a->constSigC   = cfg->constSigC;
  a->constD      = cfg->constD;
  a->constTau    = cfg->constTau;
  a->constThePhi = cfg->constThePhi;
  a->constTheAlp = cfg->constTheAlp;
  a->constTheDel = cfg->constTheDel;
  a->constSigPhi = cfg->constSigPhi;
  a->constSigAlp = cfg->constSigAlp;
  a->constSigDel = cfg->constSigDel;
  a->constPiAlp  = cfg->constPiAlp;
  a->constPiDel  = cfg->constPiDel;
  
  newChain_kernel1(a);
  newChain_kernel2(a);
  
  free(grp);
  free(y);

  return a;
}
Example #2
0
inline Chain *newChain(void) {
  Chain *n = allocChain();
  n->value = NULL;
  n->next = NULL;
  return n;
}