package statalign.base;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import statalign.io.DataType;
import statalign.io.RawSequences;
import statalign.model.subst.SubstitutionModel;
public class InputData {
/**
* The input sequences, optionally aligned
*/
public RawSequences seqs = new RawSequences();
/**
* The initial tree, if given, which is optionally fixed for the whole analysis
*/
public Tree tree = null;
/**
* Non-sequence type auxiliary data that has been loaded, can be used by model extension plugins
*/
public List<DataType> auxData = new ArrayList<DataType>();
/**
* MCMC parameters such as the number of burn-in cycles, number of
* steps and sampling rate
*/
public MCMCPars pars = new MCMCPars(20000, 50000, 100, 1, 1, 100, 0);
/**
* Specifies how the alignment of the input sequences in {@link #seqs} is used.<br><br>
* 0: it's ignored and sequences are re-aligned from scratch<br>
* 1: used as the initial alignment and sampled during MCMC<br>
* 2: fixed throughout the MCMC analysis (currently unsupported)
*/
public int useAlign = 0;
/**
* Specifies how the given {@link #tree} is used.<br><br>
* 0: unused, the tree is constructed from scratch using NJ<br>
* 1: it is used as the initial tree and sampled during MCMC<br>
* 2: the topology is fixed throughout the MCMC analysis, edges are sampled<br>
* 3: both topology and edge lengths are fixed during the MCMC
*/
public int useTree = 0;
/**
* Are we using the parallel version?
*/
public boolean isParallel;
/** If <code>true</true> then logging information is also printed during the burnin. */
public boolean doReportDuringBurnin = false;
/**
* The current substitution model that is used to analyse the sequences.
*/
public SubstitutionModel model;
/**
* The file name (without path) that is chosen to be the base name for all output files,
* plugins will define their own output file names by adding extensions to this base name.
* By default, this is the name of the first sequence input file but can be configured
* by the user.
* @see #baseFilePath
*/
public String title;
/**
* The path where output files will be created. By default this is the path of
* the first sequence input file but can be configured by the user.
* @see #title
*/
public String outputPath;
/**
* This integer stores the index of the current alignment type, as it is in
* <tt>alignmentTypes</tt>
*/
public int currentAlignmentType = 0;
/**
* Fills both {@link #outputPath} and {@link #title}.
* @param file the name and path of the base file
*/
public void setBaseFile(File file) {
outputPath = file.getParent();
title = file.getName();
}
}