h$up      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno p q r s t u v w x y z { | } ~                 ByteString tools(c) Dominik Schrempf, 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportable Safe-Inferred:mcmcFor a given width, align string to the right; use given fill character; trim on the left if string is longer.mcmcFor a given width, align string to the right; trim on the left if string is longer.mcmcFor a given width, align string to the left; use given fill character; trim on the right if string is longer.mcmcFor a given width, align string to the left; trim on the right if string is longer.Shuffle a list(c) Dominik Schrempf 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNonemcmcShuffle a list.mcmcShuffle a list n times.mcmcgrabble xs m n is O(m*n'), where n' = min n (length xs) . Choose n' elements from xs , without replacement, and that m times.Links of Markov chains(c) Dominik Schrempf 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNone nmcmcAn , or link of the Markov chain. For reasons of computational efficiency, each state is associated with the corresponding prior and likelihood.mcmc%The current state in the state space a.mcmcThe current prior.mcmcThe current likelihood.Monitor logarithmic values(c) Dominik Schrempf, 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNone ' mcmcPrint a log value.  Monitor parameters(c) Dominik Schrempf, 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNone6 mcmc)Instruction about a parameter to monitor.?Convert a parameter monitor from one data type to another with .For example, monitor a ( value being the first entry of a tuple: mon = fst >$< monitorDouble mcmcName of parameter.mcmc>Instruction about how to extract the parameter from the state.mcmc:Convert a parameter monitor from one data type to another. DEPRECATED.For example, to monitor a ( value being the first entry of a tuple: mon = fst @. monitorDouble mcmcMonitor .mcmcMonitor , with eight decimal places (half precision).mcmcMonitor  with full precision computing the shortest string of digits that correctly represent the number.mcmcMonitor * in exponential format and half precision.mcmcName.mcmcName.mcmcName.mcmcName.  Monitor parameters(c) Dominik Schrempf, 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNone\mcmcInstruction about a parameter to monitor via batch means. Usually, the monitored parameter is average over the batch size. However, arbitrary functions performing more complicated analyses on the states in the batch can be provided.;Convert a batch monitor from one data type to another with .For example, batch monitor the mean of the first entry of a tuple: mon = fst >$< monitorBatchMean XXX: Batch monitors are slow at the moment because the monitored parameter has to be extracted from the state for each iteration.mcmc"Name of batch monitored parameter.mcmc?Instruction about how to extract the batch mean from the trace.mcmcConvert a batch parameter monitor from one data type to another.For example, to batch monitor the mean of the first entry of a tuple: mon = fst @# monitorBatchMean mcmcBatch monitor. Print the mean with eight decimal places (half precision).mcmcBatch monitor. Print the mean with full precision computing the shortest string of digits that correctly represent the number.mcmc,Batch monitor real float parameters such as 4 with scientific notation and eight decimal places.mcmc6Batch monitor parameters with custom lens and builder.mcmcName.mcmcName.mcmcName.mcmcName.mcmc%Function to calculate the batch mean.mcmcCustom builder.  Print time related values(c) Dominik Schrempf, 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportable Safe-Inferred !mcmc;Adapted from System.ProgressBar.renderDuration of package  ?https://hackage.haskell.org/package/terminal-progress-bar-0.4.1terminal-progressbar-0.4.1."mcmcRender duration in seconds.!"!"'Convenience functions to compute priors(c) Dominik Schrempf, 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNone #mcmc;Improper uniform prior; strictly larger than a given value.$mcmc2Improper uniform prior; strictly larger than zero.%mcmc:Improper uniform prior; strictly lower than a given value.&mcmc1Improper uniform prior; strictly lower than zero.'mcmcUniform prior on [a, b].(mcmcNormal distributed prior.)mcmcExponential distributed prior.*mcmcGamma distributed prior.+mcmc8Intelligent product that stops when encountering a zero.Use with care because the elements are checked for positiveness, and this can take some time if the list is long and does not contain any zeroes.'mcmcLower bound a.mcmcUpper bound b.(mcmcMean.mcmcStandard deviation.)mcmcRate.*mcmcShape.mcmcScale. #$%&'()*+ #$%&'()*+Proposals and cycles(c) Dominik Schrempf 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNone -K!,mcmc For each key k6, store the number of accepted and rejected proposals..mcmc In brief, a . is a list of proposals.s are executed sequentially, in the order they appear in the .. <s with weight w>1 are repeated immediately w2 times (and not appended to the end of the list).3mcmc Similar to 15. However, a reversed copy of the list of shuffled <s is appended such that the resulting Markov chain is reversible. Note: the total number of <.s executed per cycle is twice the number of 1.4mcmc Similar to 2. However, a reversed copy of the list of sequentially ordered <s is appended such that the resulting Markov chain is reversible.5mcmcTune the proposal?8mcmcTune the acceptance ratio of a <; see N, or S.;mcmc+Simple proposal without tuning information.Instruction about randomly moving from the current state to a new state, given some source of randomness.In order to calculate the Metropolis-Hastings ratio, we need to know the ratio of the backward to forward kernels (i.e., the probability masses or probability densities) and the absolute value of the determinant of the Jacobian matrix.6For unbiased proposals, these values are 1.0 such that 3proposalSimpleUnbiased x g = return (x', 1.0, 1.0) For biased proposals, the kernel ratio is qYX / qXY, where qXY is the probability density to move from X to Y, and the absolute value of the determinant of the Jacobian matrix differs from 1.0.<mcmcA < is an instruction about how the Markov chain will traverse the state space a. Essentially, it is a probability mass or probability density conditioned on the current state (i.e., a kernel).A < may be tuneable in that it contains information about how to enlarge or shrink the step size to tune the acceptance ratio.No proposals with the same name and description are allowed in a ..>mcmcName of the affected variable.?mcmc0Description of the proposal type and parameters.@mcmc"The weight determines how often a <0 is executed per iteration of the Markov chain.Amcmc=Simple proposal without name, weight, and tuning information.BmcmcTuning is disabled if set to .Cmcmc"The weight determines how often a <0 is executed per iteration of the Markov chain.FmcmcProposal description.ImcmcProposal name.Lmcmc>Convert a proposal from one data type to another using a lens. For example: %scaleFirstEntryOfTuple = _1 @~ scale Mmcmc$Create a possibly tuneable proposal.NmcmcTune a < . Return  if <& is not tuneable. If the parameter dt is larger than 1.0, the < is enlarged, if 0, it is shrunk. Negative tuning parameters are not allowed.Omcmc Create a . from a list of <s.PmcmcSet the order of <s in a ..Qmcmc Replicate <7s according to their weights and possibly shuffle them.RmcmcTune < s in the .. See N.Smcmc.Calculate acceptance ratios and auto tune the < s in the .. For now, a < is enlarged when the acceptance ratio is above 0.44, and shrunk otherwise. Do not change <s that are not tuneable.TmcmcSummarize the < s in the . . Also report acceptance ratios.Umcmc$In the beginning there was the Word.8Initialize an empty storage of accepted/rejected values.VmcmcFor key k:, prepend an accepted (True) or rejected (False) proposal.WmcmcReset acceptance storage.XmcmcTransform keys using the given lists. Keys not provided will not be present in the new , variable.Ymcmc$Acceptance ratios for all proposals.Mmcmc0Description of the proposal type and parameters.mcmcFunction creating a simple proposal for a given tuning parameter. The larger the tuning parameter, the larger the proposal (and the lower the expected acceptance ratio), and vice versa.mcmcName.mcmcPWeight.mcmcActivate tuning?.,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY.IJKFGHCDE<=>?@ABL;89:567MN01234./OPQRST,-UVWXYBactrian proposals(c) Dominik Schrempf, 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNone1mmcmcAdditive symmetric proposal with kernel similar to the silhouette of a Bactrian camel.The  https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3845170/figure/fig01Bactrian kernel is a mixture of two symmetrically arranged normal distributions. The spike parameter (0, 1) loosely determines the standard deviations (>0.0) of the individual humps while the second parameter refers to the standard deviation of the complete Bactrian kernel.See  5https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3845170/.nmcmcMultiplicative proposal with kernel similar to the silhouette of a Bactrian camel. See m.mmcmcSpike parameter.mcmcStandard deviation.mcmcName.mcmcPWeight.mcmcEnable tuning.nmcmcSpike parameter.mcmcStandard deviation.mcmcName.mcmcPWeight.mcmcEnable tuning.mnmn %Generic interface to create proposals(c) Dominik Schrempf 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNone7gomcmcGeneric function to create proposals for continuous parameters ().pmcmc>Generic function to create proposals for discrete parameters ().omcmcProbability distributionmcmcForward operator.For example, for a multiplicative proposal on one variable the forward operator is (*) , so that  x * u = y.mcmcInverse operator. For example, 7 for a multiplicative proposal on one variable, since %y * (recip u) = x * u * (recip u) = x.Required for biased proposals.mcmcFunction to compute the absolute value of the determinant of the Jacobian matrix. For example, for a multiplicative proposal on one variable, we have &detJacobian _ u = Exp $ log $ recip u That is, the determinant of the Jacobian matrix of multiplication is just the reciprocal value of u! (with conversion to log domain).Required for proposals for which absolute value of the determinant of the Jacobian differs from 1.0.Conversion to log domain is necessary, because some determinants of Jacobians are very small (or large).pmcmcProbability distribution.mcmc0Forward operator, e.g. (+), so that x + dx = x'.mcmcInverse operator, e.g., , so that x' + (negate dx) = x. Only required for biased proposals.opop (Scaling proposal with Gamma distribution(c) Dominik Schrempf 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNone:qmcmc6Multiplicative proposal with Gamma distributed kernel.rmcmc6Multiplicative proposal with Gamma distributed kernel.The scale of the Gamma distributions is set to (shape)^{-1}, so that the mean of the Gamma distribution is 1.0.smcmc6Multiplicative proposal with Gamma distributed kernel.The two values are scaled contrarily so that their product stays constant. Contrary proposals are useful when parameters are confounded.qmcmcShape.mcmcScale.mcmcName.mcmcPWeight.mcmcEnable tuning.rmcmcShape.mcmcName.mcmcPWeight.mcmcEnable tuning.smcmcShape.mcmcScale.mcmcName.mcmcPWeight.mcmcEnable tuning.qrsqrs Proposals on simplices(c) Dominik Schrempf, 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNoneCtmcmcAn element of a simplex./A vector of non-negative values summing to one.The nomenclature is not very consistent, because a K-dimensional simplex is usually considered to be the set containing all K-dimensional vectors with non-negative elements that sum to 1.0. However, I couldn't come up with a better name. Maybe SimplexElement, but that was too long.xmcmc8Ensure that the value vector is an element of a simplex.Return  if: - The value vector is empty. - The value vector contains negative elements. - The value vector is not normalized.ymcmc8Create the uniform element of the K-dimensional simplex.Set all values to 1/D.zmcmc Dirichlet proposal on a simplex.For a given element of a K-dimensional simplex, propose a new element of the K-dimensional simplex. The new element is sampled from the multivariate Dirichlet distribution with parameter vector being the old element of the simplex.The tuning parameter is used to determine the concentration of the Dirichlet distribution: the lower the tuning parameter, the higher the concentration.This proposal may have low acceptance ratios. In this case, please see the coordinate wise { proposal.{mcmc'Beta proposal on a specific coordinate i on a simplex.For a given element of a K-dimensional simplex, propose a new element of the K-dimensional simplex. The coordinate i of the new element is sampled from the beta distribution. The other coordinates are normalized such that the values sum to 1.0. The parameters of the beta distribution are chosen such that the expected value of the beta distribution is the value of the old coordinate.The tuning parameter is used to determine the concentration of the beta distribution: the lower the tuning parameter, the higher the concentration. See also the z proposal.No "out of bounds" checks are performed during compile time. Run time errors can occur if i is negative, or if i-1 is larger than the length of the element vector of the simplex.tuxyz{tuyxz{ Normally distributed proposal(c) Dominik Schrempf 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNoneH~mcmc3Additive proposal with normally distributed kernel.mcmcAdditive proposal with normally distributed kernel with mean zero. This proposal is very fast, because the Metropolis-Hastings ratio does not include calculation of the forwards and backwards kernels.mcmcAdditive proposal with uniformly distributed kernel with mean zero. This proposal is very fast, because the Metropolis-Hastings ratio does not include calculation of the forwards and backwards kernels.mcmc3Additive proposal with normally distributed kernel.The two values are slid contrarily so that their sum stays constant. Contrary proposals are useful when parameters are confounded.~mcmcMean.mcmcStandard deviation.mcmcName.mcmcPWeight.mcmcEnable tuning.mcmcStandard deviation.mcmcName.mcmcPWeight.mcmcEnable tuning.mcmcDelta.mcmcName.mcmcPWeight.mcmcEnable tuning.mcmcMean.mcmcStandard deviation.mcmcName.mcmcPWeight.mcmcEnable tuning.~~ Trace of a Markov chain(c) Dominik Schrempf 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNoneJmcmcA  passes through a list of states with associated likelihoods which are called s. New s are prepended, and the path of the Markov chain is stored in reversed order.mcmcThe empty trace.mcmc Prepend an  to a .mcmc&Get the most recent item of the trace.mcmc)Get the N most recent items of the trace.mcmc"Shorten the trace to given length.Be quiet! Or better not?(c) Dominik Schrempf, 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNoneLRmcmcNot much to say here.mcmcPerform action if  is  or higher.mcmcPerform action if  is  or higher.mcmcPerform action if  is .Monitor a Markov chain(c) Dominik Schrempf, 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNone SmcmcMonitor to a file, but calculate batch means for the given batch size; constructed with .Batch monitors are slow at the moment because the monitored parameter has to be extracted from the state for each iteration.mcmc$Monitor to a file; constructed with .mcmc-Monitor to standard output; constructed with .mcmcA  describes which part of the Markov chain should be logged and where. Further, they allow output of summary statistics per iteration in a flexible way.mcmc#Monitor writing to standard output.mcmcMonitors writing to files.mcmc7Monitors calculating batch means and writing to files.mcmcMonitor to standard output.mcmcMonitor parameters to a file.mcmc"Monitor parameters to a file, see .mcmc#Open the files associated with the .mcmc#Open the files associated with the  in append mode.mcmcExecute monitors; print status information to files and return text to be printed to standard output and log file.mcmc$Close the files associated with the .mcmc+Instructions about which parameters to log.mcmcLogging period.mcmc$Name; used as part of the file name.mcmc+Instructions about which parameters to log.mcmcLogging period.mcmc$Name; used as part of the file name.mcmcInstructions about which parameters to log and how to calculate the batch means.mcmc Batch size.mcmc Verbositymcmc Iteration.mcmcStarting state.mcmcStarting time.mcmcTrace of Markov chain.mcmc-Total number of iterations; to calculate ETA.mcmc The monitor.What is an MCMC?(c) Dominik Schrempf 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNonedmcmcThe  contains all information to run an MCMC chain. It is constructed using the function .The polymorphic type a stores the state of the chain. It can also be used to store auxiliary information.mcmc0The name of the MCMC chain; used as file prefix.mcmc The current  of the chain combines the current state and the current likelihood.mcmc0The iteration is the number of completed cycles.mcmcThe 8 of the Markov chain in reverse order, the most recent  is at the head of the list.mcmc For each <, store the list of accepted (True) and rejected (False) proposals; for reasons of efficiency, the list is also stored in reverse order.mcmc6Number of burn in iterations; deactivate burn in with .mcmcAuto tuning period (only during burn in); deactivate auto tuning with .mcmcNumber of normal iterations excluding burn in. Note that auto tuning only happens during burn in.mcmc#Overwrite output files? Default is , change with .mcmcSave the chain with trace of given length at the end of the run? Default is no save (). Change with .mcmc Verbosity.mcmcThe random number generator.mcmcStarting time and starting iteration of chain; used to calculate run time and ETA.mcmcHandle to log file.mcmcThe prior function. The un-normalized posterior is the product of the prior and the likelihood.mcmcThe likelihood function. The un-normalized posterior is the product of the prior and the likelihood.mcmcClean the state periodically.mcmc A set of < s form a ..mcmcA  observing the chain.mcmcClean the state periodically.The prior and the likelihood will be updated after the cleaning process.For long chains, successive numerical errors can accumulate such that the state diverges from honoring specific required constraints. In these cases, a  can be used to ensure that the required constraints of the state are honored. For example, the branches of an ultrametric phylogeny may diverge slightly after successful many proposals such that the phylogeny is not anymore ultrametric.Please be aware that the Markov chain will not converge to the true posterior distribution if the state is changed substantially! Only apply subtle changes that are absolutely necessary to preserve the required properties of the state such as specific numerical constraints.mcmc'Clean every given number of iterations.mcmc8Cleaning function. Executed before monitoring the state.mcmcInitialize the # of a Markov chain Monte Carlo run.mcmcClean the state every given number of generations using the given function. See .mcmc1Save the Markov chain with trace of given length.mcmc5Overwrite existing files; it is not necessary to use , when a chain is continued.mcmcDo not print anything to standard output. Do not create log file. File monitors and batch monitors are executed normally.mcmc Be verbose.mcmcSet the likelihood function to 1.0. Useful for debugging and testing. mcmc.Name of the Markov chain; used as file prefix.mcmcThe prior function.mcmcThe likelihood function.mcmc A list of <s executed in forward order. The chain will be logged after each cycle.mcmcA  observing the chain.mcmc%The initial state in the state space a.mcmc6Number of burn in iterations; deactivate burn in with .mcmcAuto tuning period (only during burn in); deactivate auto tuning with .mcmcNumber of normal iterations excluding burn in. Note that auto tuning only happens during burn in. mcmcA source of randomness. For reproducible runs, make sure to use generators with the same, fixed seed.   Save the state of a Markov chain(c) Dominik Schrempf, 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNone gZmcmcSave a  to file.Some important values have to be provided upon restoring the status. See .mcmcLoad a  from file.Important information that cannot be saved and has to be provided again when a chain is restored: - prior function - likelihood function - cleaning function - cycle - monitor(To avoid incomplete continued runs, the .mcmc file is removed after load.mcmcPrior function.mcmcLikelihood function.mcmcCleaner, if needed.mcmcPath of status to load. Mcmc helpers(c) Dominik Schrempf, 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNone kmcmcAn Mcmc state transformer; usually fiddling around with this type is not required, but it is used by the different inference algorithms.mcmc&Write to standard output and log file.mcmc&Write to standard output and log file.mcmcPrint warning message.mcmcPrint warning message.mcmcPrint info message.mcmcPrint info message.mcmcPrint debug message.mcmcPrint debug message.mcmcAuto tune the < s in the .- of the chain. Reset acceptance counts. See S.mcmcClean the state.mcmcReset acceptance counts.mcmcPrint short summary of <s in .. See T.mcmc Report what is going to be done.mcmc Execute the s of the chain. See .mcmcRun an MCMC algorithm.Metropolis-Hastings at its best(c) Dominik Schrempf 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNone nmcmcContinue a Markov chain for a given number of Metropolis-Hastings steps.6At the moment, when an MCMC run is continued, the old .mcmc: file is deleted. This behavior may change in the future.This means that an interrupted continuation also breaks previous runs. This step is necessary because, otherwise, incomplete monitor files are left on disk, if a continuation is canceled. Subsequent continuations would append to the incomplete monitor files and produce garbage.mcmcRun a Markov chain for a given number of Metropolis-Hastings steps.mcmc/Additional number of Metropolis-Hastings steps.mcmc"Loaded status of the Markov chain.mcmc-Initial (or last) status of the Markov chain.7Markov chain Monte Carlo algorithms, batteries included(c) Dominik Schrempf 2020GPL-3.0-or-laterdominik.schrempf@gmail.comunstableportableNoneo #$%&'()*+.01234567?@ABCDEFGHIJKLLMNOPQRRSTUVWXXYZZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                !mcmc-0.3.0-KkKiW9SsRclDXivCF9V4QuMcmc.Monitor.Parameter Mcmc.ItemMcmc.Monitor.LogMcmc.Monitor.ParameterBatchMcmc.Monitor.Time Mcmc.Prior Mcmc.ProposalMcmc.Proposal.BactrianMcmc.Proposal.GenericMcmc.Proposal.ScaleMcmc.Proposal.SimplexMcmc.Proposal.Slide Mcmc.TraceMcmc.Verbosity Mcmc.Monitor Mcmc.Status Mcmc.Save Mcmc.McmcMcmc.MetropolisMcmc.Internal.ByteStringMcmc.Internal.ShuffleMcmc Paths_mcmcbaseData.Functor.Contravariant>$<Itemstateprior likelihood$fFromJSONItem $fToJSONItem$fEqItem $fOrdItem $fShowItem $fReadItem renderLogMonitorParametermpNamempFunc@. monitorInt monitorDoublemonitorDoubleFmonitorDoubleE$fContravariantMonitorParameterMonitorParameterBatchmbpNamembpFunc@#monitorBatchMeanmonitorBatchMeanFmonitorBatchMeanEmonitorBatchCustom$$fContravariantMonitorParameterBatchrenderDurationrenderDurationS largerThanpositive lowerThannegativeuniformnormal exponentialgammaproduct' AcceptancefromAcceptanceCycle ccProposalsOrderRandomO SequentialORandomReversibleOSequentialReversibleOTuneNoTuneTunertParamtFuncProposalSimpleProposalpName pDescriptionpWeightpSimplepTunerPWeight fromPWeight PDescriptionfromPDescriptionPName fromPName@~createProposaltunefromListsetOrdergetNIterations tuneCycle autotuneCyclesummarizeCycleemptyApushAresetAtransformKeysAacceptanceRatios $fOrdProposal $fEqProposal$fShowProposal$fDefaultOrder$fFromJSONAcceptance$fToJSONAcceptance $fEqOrder $fShowOrder $fShowTune$fEqTune $fShowPWeight $fEqPWeight $fOrdPWeight$fShowPDescription$fEqPDescription$fOrdPDescription $fShowPName $fEqPName $fOrdPName slideBactrian scaleBactriangenericContinuousgenericDiscretescale scaleUnbiasedscaleContrarilySimplextoVector $fEqSimplex $fShowSimplexsimplexFromVectorsimplexUniform dirichletbeta$fFromJSONSimplex$fToJSONSimplexslideslideSymmetricslideUniformSymmetricslideContrarilyTrace singletonTpushTheadT takeItemstakeT$fFromJSONTrace $fToJSONTrace $fMonoidTrace$fSemigroupTrace $fShowTrace $fReadTrace $fEqTrace VerbosityQuietWarnInfoDebug$fShowVerbosity $fEqVerbosity$fOrdVerbositywarninfodebug$fFromJSONVerbosity$fToJSONVerbosity MonitorBatch MonitorFile MonitorStdOutMonitormStdOutmFilesmBatches monitorStdOut monitorFile monitorBatchmOpenmAppendmExecmCloseStatusnameitem iterationtrace acceptanceburnInIterationsautoTuningPeriod iterationsforceOverwritesave verbosity generatorstart logHandlepriorF likelihoodFcleanercyclemonitorCleanerclEvery clFunctionstatus cleanWithsaveWithforcequietnoData saveStatus loadStatus$fFromJSONSave $fToJSONSavemcmcOutBmcmcOutS mcmcWarnB mcmcWarnS mcmcInfoB mcmcInfoS mcmcDebugB mcmcDebugS mcmcAutotune mcmcClean mcmcResetAmcmcSummarizeCycle mcmcReportmcmcMonitorExecmcmcRun mhContinuemhalignRightWith alignRight alignLeftWith alignLeftshuffleshuffleNgrabbleghc-prim GHC.TypesDoubleInt GHC.MaybeNothingGHC.RealrecipGHC.Numnegate Data.EitherLeftFalseversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName