/***************** void MCMC_wrapper Wrapper for a call from R. and don't forget that tail -> head *****************/ void MCMC_wrapper(int *dnumnets, int *nedges, int *tails, int *heads, int *dn, int *dflag, int *bipartite, int *nterms, char **funnames, char **sonames, char **MHproposaltype, char **MHproposalpackage, double *inputs, double *theta0, int *samplesize, double *sample, int *burnin, int *interval, int *newnetworktails, int *newnetworkheads, int *fVerbose, int *attribs, int *maxout, int *maxin, int *minout, int *minin, int *condAllDegExact, int *attriblength, int *maxedges, int *status){ int directed_flag; Vertex n_nodes, nmax, bip; /* Edge n_networks; */ Network nw[1]; Model *m; MHproposal MH; n_nodes = (Vertex)*dn; /* n_networks = (Edge)*dnumnets; */ nmax = (Edge)abs(*maxedges); bip = (Vertex)*bipartite; GetRNGstate(); /* R function enabling uniform RNG */ directed_flag = *dflag; m=ModelInitialize(*funnames, *sonames, &inputs, *nterms); /* Form the network */ nw[0]=NetworkInitialize(tails, heads, nedges[0], n_nodes, directed_flag, bip, 0, 0, NULL); MH_init(&MH, *MHproposaltype, *MHproposalpackage, inputs, *fVerbose, nw, attribs, maxout, maxin, minout, minin, *condAllDegExact, *attriblength); *status = MCMCSample(&MH, theta0, sample, *samplesize, *burnin, *interval, *fVerbose, nmax, nw, m); MH_free(&MH); /* Rprintf("Back! %d %d\n",nw[0].nedges, nmax); */ /* record new generated network to pass back to R */ if(*status == MCMC_OK && *maxedges>0 && newnetworktails && newnetworkheads) newnetworktails[0]=newnetworkheads[0]=EdgeTree2EdgeList(newnetworktails+1,newnetworkheads+1,nw,nmax-1); ModelDestroy(m); NetworkDestroy(nw); PutRNGstate(); /* Disable RNG before returning */ }
void MCMCPhase12 (int *tails, int *heads, int *dnedges, int *dn, int *dflag, int *bipartite, int *nterms, char **funnames, char **sonames, char **MHproposaltype, char **MHproposalpackage, double *inputs, double *theta0, int *samplesize, double *gain, double *meanstats, int *phase1, int *nsub, double *sample, int *burnin, int *interval, int *newnetworktails, int *newnetworkheads, int *fVerbose, int *attribs, int *maxout, int *maxin, int *minout, int *minin, int *condAllDegExact, int *attriblength, int *maxedges, int *mtails, int *mheads, int *mdnedges) { int directed_flag; int nphase1, nsubphases; Vertex n_nodes, bip; Edge n_edges, nmax; Network nw[2]; Model *m; MHproposal MH; nphase1 = *phase1; nsubphases = *nsub; n_nodes = (Vertex)*dn; n_edges = (Edge)*dnedges; nmax = (Edge)*maxedges; bip = (Vertex)*bipartite; GetRNGstate(); /* R function enabling uniform RNG */ directed_flag = *dflag; m=ModelInitialize(*funnames, *sonames, &inputs, *nterms); /* Form the missing network */ nw[0]=NetworkInitialize(tails, heads, n_edges, n_nodes, directed_flag, bip, 0, 0, NULL); MH_init(&MH, *MHproposaltype, *MHproposalpackage, inputs, *fVerbose, nw, attribs, maxout, maxin, minout, minin, *condAllDegExact, *attriblength); MCMCSamplePhase12 (&MH, theta0, *gain, meanstats, nphase1, nsubphases, sample, *samplesize, *burnin, *interval, (int)*fVerbose, nw, m); MH_free(&MH); /* record new generated network to pass back to R */ if(nmax>0 && newnetworktails && newnetworkheads) newnetworktails[0]=newnetworkheads[0]=EdgeTree2EdgeList(newnetworktails+1,newnetworkheads+1,nw,nmax-1); ModelDestroy(m); NetworkDestroy(nw); PutRNGstate(); /* Disable RNG before returning */ }
void SAN_wrapper ( int *dnumnets, int *nedges, int *tails, int *heads, int *dn, int *y0tails, int *y0heads,int *y0dn,int *y0nedges,double *y0nodalstatus, int *dflag, int *bipartite, int *nterms, char **funnames, char **sonames, char **MHproposaltype, char **MHproposalpackage, double *inputs, double *nodalstatus, double *theta0, double *tau, int *samplesize, double *sample, int *burnin, int *interval, int *newnetworktails, int *newnetworkheads, int *newnodalstatus, double *invcov, int *fVerbose, int *attribs, int *maxout, int *maxin, int *minout, int *minin, int *condAllDegExact, int *attriblength, int *maxedges, int *status){ int directed_flag; Vertex n_nodes, nmax, bip; Network nw[1],y0[1]; Model *m; MHproposal MH; /* please don't forget: tail -> head */ n_nodes = (Vertex)*dn; Vertex y0n_nodes = (Vertex)*y0dn; nmax = (Edge)abs(*maxedges); bip = (Vertex)*bipartite; GetRNGstate(); /* R function enabling uniform RNG */ directed_flag = *dflag; m=ModelInitialize(*funnames, *sonames, &inputs, *nterms, n_nodes, nodalstatus); /* Form the network */ nw[0]=NetworkInitialize(tails, heads, nedges[0], n_nodes, directed_flag, bip, 0, 0, NULL, nodalstatus); y0[0]=NetworkInitialize(y0tails, y0heads, y0nedges[0], y0n_nodes, directed_flag, bip, 0, 0, NULL, y0nodalstatus); MH_init(&MH, *MHproposaltype, *MHproposalpackage, inputs, *fVerbose, nw, attribs, maxout, maxin, minout, minin, *condAllDegExact, *attriblength); *status = SANSample (&MH, theta0, invcov, tau, sample, *samplesize, *burnin, *interval, *fVerbose, nmax, nw, m,y0); MH_free(&MH); /* Rprintf("Back! %d %d\n",nw[0].nedges, nmax); */ /* record new generated network to pass back to R */ if(*status == MCMC_OK && *maxedges>0 && newnetworktails && newnetworkheads) newnetworktails[0]=newnetworkheads[0]=EdgeTree2EdgeList(newnetworktails+1,newnetworkheads+1,nw,nmax-1); if(*status == MCMC_OK && *maxedges>0 && newnodalstatus){ for (int i=0;i<n_nodes;i++) newnodalstatus[i] = nw->nodalstatus[i]; } ModelDestroy(m); NetworkDestroy(nw); NetworkDestroy(y0); PutRNGstate(); /* Disable RNG before returning */ }