beast-dev / beast-mcmc

Bayesian Evolutionary Analysis Sampling Trees
http://beast.community
GNU Lesser General Public License v2.1
185 stars 71 forks source link

MultiPartitionDataLikelihoodDelegate doesn't like -beagle_instances option #840

Closed GuyBaele closed 7 years ago

GuyBaele commented 7 years ago

Steps to reproduce:

  1. Take standard single partition BEAST XML and checkout latest git repo
  2. Change all treeLikelihood XML elements to treeDataLikelihood XML elements
  3. Run analysis, works fine
  4. Run analysis with -beagle_instances 2, no longer fine.

Output of step 3:

java -jar build/dist/beast.jar -overwrite carnivores-gtr-frc-results.xml BEAST v1.9.0 Prerelease r20160703, 2002-2016 Bayesian Evolutionary Analysis Sampling Trees Designed and developed by Alexei J. Drummond, Andrew Rambaut and Marc A. Suchard

Using BEAGLE library v2.1.2 for accelerated, parallel likelihood evaluation 2009-2013, BEAGLE Working Group - http://beagle-lib.googlecode.com/ Citation: Ayres et al (2012) Systematic Biology 61: 170-173 | doi:10.1093/sysbio/syr100

Random number seed: 1473696238406

Using discretized relaxed clock model. over sampling = 1 parametric model = logNormalDistributionModel rate categories = 1

Creating state frequencies model 'frequencies': Using empirical frequencies from data = {0.31172, 0.27887, 0.13081, 0.27859}

Creating site rate model: 4 category discrete gamma with initial shape = 0.5

Using Multi-Partition Data Likelihood Delegate Using BEAGLE resource 0: CPU with instance flags: PRECISION_DOUBLE COMPUTATION_SYNCH EIGEN_REAL SCALING_MANUAL SCALERS_RAW VECTOR_SSE THREADING_NONE PROCESSOR_CPU FRAMEWORK_CPU Ignoring ambiguities in tree likelihood. With 1 partitions comprising 5565 unique site patterns Using rescaling scheme : dynamic (rescaling every 100 evaluations, delay rescaling until first overflow)

Using TreeDataLikelihood Branch rate model used: discretizedBranchRates Creating swap operator for parameter branchRates.categories (weight=10.0)

Likelihood computation is using an auto sizing thread pool.

Creating the MCMC chain: chainLength=50000 autoOptimize=true autoOptimize delayed for 500 steps WARNING: Likelihood component, branchRates, created but not used in the MCMC

BEAST v1.9.0 Prerelease r20160703

Generated Mon Sep 12 18:03:59 CEST 2016 [seed=1473696238406]

-overwrite carnivores-gtr-frc-results.xml

state Posterior Prior Likelihood rootHeight ucld.mean
0 -231081.4608 13.5602 -231095.0210 0.12719 1.00000 -

Output of step 4:

java -jar build/dist/beast.jar -overwrite -beagle_instances 2 carnivores-gtr-frc-results.xml BEAST v1.9.0 Prerelease r20160703, 2002-2016 Bayesian Evolutionary Analysis Sampling Trees Designed and developed by Alexei J. Drummond, Andrew Rambaut and Marc A. Suchard

Using BEAGLE library v2.1.2 for accelerated, parallel likelihood evaluation 2009-2013, BEAGLE Working Group - http://beagle-lib.googlecode.com/ Citation: Ayres et al (2012) Systematic Biology 61: 170-173 | doi:10.1093/sysbio/syr100

Random number seed: 1473696255969

Using discretized relaxed clock model. over sampling = 1 parametric model = logNormalDistributionModel rate categories = 1

Creating state frequencies model 'frequencies': Using empirical frequencies from data = {0.31172, 0.27887, 0.13081, 0.27859}

Creating site rate model: 4 category discrete gamma with initial shape = 0.5

Using Multi-Partition Data Likelihood Delegate Using BEAGLE resource 0: CPU with instance flags: PRECISION_DOUBLE COMPUTATION_SYNCH EIGEN_REAL SCALING_MANUAL SCALERS_RAW VECTOR_SSE THREADING_NONE PROCESSOR_CPU FRAMEWORK_CPU Ignoring ambiguities in tree likelihood. With 2 partitions comprising 2783, 2782 unique site patterns Using rescaling scheme : dynamic (rescaling every 100 evaluations, delay rescaling until first overflow)

Using TreeDataLikelihood Branch rate model used: discretizedBranchRates Creating swap operator for parameter branchRates.categories (weight=10.0)

Likelihood computation is using an auto sizing thread pool.

Creating the MCMC chain: chainLength=50000 autoOptimize=true autoOptimize delayed for 500 steps WARNING: Likelihood component, branchRates, created but not used in the MCMC WARNING: Likelihood component, branchRates, created but not used in the MCMC Fatal exception: Index: 1, Size: 1 java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 at java.util.ArrayList.rangeCheck(ArrayList.java:653) at java.util.ArrayList.get(ArrayList.java:429) at dr.evomodel.treedatalikelihood.MultiPartitionDataLikelihoodDelegate.calculateLikelihood(MultiPartitionDataLikelihoodDelegate.java:680) at dr.evomodel.treedatalikelihood.TreeDataLikelihood.calculateLogLikelihood(TreeDataLikelihood.java:259) at dr.evomodel.treedatalikelihood.TreeDataLikelihood.getLogLikelihood(TreeDataLikelihood.java:109) at dr.inference.model.CompoundLikelihood.evaluateLikelihoods(CompoundLikelihood.java:239) at dr.inference.model.CompoundLikelihood.getLogLikelihood(CompoundLikelihood.java:202) at dr.inference.model.CompoundLikelihood.evaluateLikelihoods(CompoundLikelihood.java:239) at dr.inference.model.CompoundLikelihood.getLogLikelihood(CompoundLikelihood.java:202) at dr.inference.markovchain.MarkovChain.evaluate(MarkovChain.java:485) at dr.inference.markovchain.MarkovChain.(MarkovChain.java:101) at dr.inference.mcmc.MCMC.init(MCMC.java:147) at dr.inference.mcmc.MCMC.init(MCMC.java:101) at dr.inferencexml.MCMCParser.parseXMLObject(MCMCParser.java:138) at dr.xml.AbstractXMLObjectParser.parseXMLObject(AbstractXMLObjectParser.java:136) at dr.xml.XMLParser.convert(XMLParser.java:316) at dr.xml.XMLParser.convert(XMLParser.java:287) at dr.xml.XMLParser.parse(XMLParser.java:166) at dr.app.beast.BeastMain.(BeastMain.java:160) at dr.app.beast.BeastMain.main(BeastMain.java:777) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) java.lang.RuntimeException: Terminate at dr.app.beast.BeastMain.(BeastMain.java:266) at dr.app.beast.BeastMain.main(BeastMain.java:777) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

GuyBaele commented 7 years ago

Implemented fix so that I can run my benchmarks, but is probably not what @rambaut had in mind ...

GuyBaele commented 7 years ago

-beagle_instances should from now on only be used with multiple devices (1 beagle instance per device), hence this test on 1 device does not present a suitable use case. Closing for now.