package org.seqcode.deepseq.experiments; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /** * ExperimentTarget is a collection of ControlledExperiments representing a set of experiments that all share the same experimental target. * * @author Shaun Mahony * @version %I%, %G% */ public class ExperimentTarget { protected String name; protected ExptConfig econfig; protected int index; protected List<ExperimentCondition> conditions = new ArrayList<ExperimentCondition>(); protected List<ControlledExperiment> replicates = new ArrayList<ControlledExperiment>(); protected List<Sample> signalSamples = new ArrayList<Sample>(); protected List<Sample> controlSamples = new ArrayList<Sample>(); protected HashMap<ControlledExperiment, Integer> replicateIndex = new HashMap<ControlledExperiment, Integer>(); protected HashMap<ControlledExperiment, Integer> replicateCondIndex = new HashMap<ControlledExperiment, Integer>(); protected HashMap<Integer, ControlledExperiment> indexedReplicate = new HashMap<Integer, ControlledExperiment>(); protected int numReplicates = 0; public ExperimentTarget(ExptConfig c, int idx, String n, List<ControlledExperiment> reps){ econfig = c; index=idx; name = n; replicates = reps; numReplicates = replicates.size(); int x=0; for(ControlledExperiment rep : replicates){ if(!signalSamples.contains(rep.getSignal())) signalSamples.add(rep.getSignal()); if(!controlSamples.contains(rep.getControl())) controlSamples.add(rep.getControl()); replicateIndex.put(rep, rep.getIndex()); indexedReplicate.put(rep.getIndex(), rep); replicateCondIndex.put(rep, x); rep.setTarget(this); if(rep.getCondition()==null){ System.err.println("Null condition for replicate: "+rep.getName()+"\nExperimentManager should initialize conditions before targets!"); System.exit(1); }else{ if(!conditions.contains(rep.getCondition())) conditions.add(rep.getCondition()); } } } //Accessors public int getIndex(){return index;} public String getName(){return name;} public List<ExperimentCondition> getTargetConditions(){return conditions;} public List<ControlledExperiment> getTargetExperiments(){return replicates;} public int getReplicateIndex(ControlledExperiment r){return replicateIndex.get(r);} public ControlledExperiment getIndexedReplicate(int id){return indexedReplicate.get(id);} }