<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans default-lazy-init="true">

   <bean id="scExperimentProcessor" class="com.apldbio.sds.experiment.gex.sc.SCExperimentProcessor">
   </bean>

   <bean id="ddctExperimentProcessor"
         class="com.apldbio.sds.experiment.gex.ddct.DDCtExperimentProcessor">
   </bean>

   <bean id="rscExperimentProcessor"
         class="com.apldbio.sds.experiment.gex.rsc.RSCExperimentProcessor">
   </bean>

   <bean id="scAnalysisPipeline"
         class="com.apldbio.sds.platform.pipeline.AnalysisPipeline"
       	 singleton="false">
      <property name="commands">
         <list>
            <ref bean="PreprocessingTask"></ref>
            <ref bean="MultiComponentTask"></ref>
            <ref bean="rnBasedMetricsAnalysisTask"></ref>
            <ref bean="CTAnalysisTask"></ref>
            <ref local="stdCurveAnalysisTask"></ref>
            <ref local="GExStatisticalAnalysisTask"></ref>
         </list>
      </property>
   </bean>

   <bean id="geAnalysisPipeline" class="com.apldbio.sds.platform.pipeline.AnalysisPipeline"
       	singleton="false">
      <property name="commands">
         <list>
            <ref bean="PreprocessingTask"></ref>
            <ref bean="CTAnalysisTask"></ref>
         </list>
      </property>
   </bean>

   <bean id="ddctAnalysisPipeline"
         class="com.apldbio.sds.platform.pipeline.AnalysisPipeline"
         singleton="false">
      <property name="commands">
         <list>
            <ref bean="PreprocessingTask"></ref>
            <ref bean="MultiComponentTask"></ref>
            <ref bean="rnBasedMetricsAnalysisTask"></ref>
            <ref bean="CTAnalysisTask"></ref>
            <ref local="ddctAnalysisTask"></ref>
            <ref local="bioReplicateAnalysisTask"></ref>
            <ref local="GExStatisticalAnalysisTask"></ref>
         </list>
      </property>
   </bean>

   <bean id="rscAnalysisPipeline"
         class="com.apldbio.sds.platform.pipeline.AnalysisPipeline"
         singleton="false">
      <property name="commands">
         <list>
            <ref bean="PreprocessingTask"></ref>
            <ref bean="MultiComponentTask"></ref>
            <ref bean="rnBasedMetricsAnalysisTask"></ref>
            <ref bean="CTAnalysisTask"></ref>
            <ref local="stdCurveAnalysisTask"></ref>
            <ref local="rscAnalysisTask"></ref>
            <ref local="GExStatisticalAnalysisTask"></ref>
         </list>
      </property>
   </bean>

   <bean id="ddctAnalysisTask" class="com.apldbio.sds.experiment.gex.ddct.DDCtAnalysisTask">
      <property name="DDCtAnalysis">
         <bean class="com.apldbio.sds.experiment.gex.ddct.DDCtAnalysis"/>
      </property>
   </bean>
   
   <bean id="bioReplicateAnalysisTask" class="com.apldbio.sds.experiment.gex.ddct.BioReplicateAnalysisTask">
      <property name="DDCtAnalysis">
         <bean class="com.apldbio.sds.experiment.gex.ddct.BioReplicateAnalysis"/>
      </property>
   </bean>


   <bean id="stdCurveAnalysisTask" class="com.apldbio.sds.experiment.gex.sc.SCAnalysisTask">
      <property name="stdCurveAnalysis">
         <bean class="com.apldbio.sds.experiment.gex.sc.SCAnalysis"/>
      </property>
   </bean>

   <bean id="GExStatisticalAnalysisTask"
         class="com.apldbio.sds.experiment.gex.pipeline.GExStatisticalAnalysisTask">
      <property name="GExStatisticalAnalysis">
         <bean class="com.apldbio.sds.experiment.gex.analysis.impl.GExStatisticalAnalysis"/>
      </property>
   </bean>

   <bean id="rscAnalysisTask" class="com.apldbio.sds.experiment.gex.rsc.RSCAnalysisTask">
      <property name="RSCAnalysis">
         <bean class="com.apldbio.sds.experiment.gex.rsc.RSCAnalysis"/>
      </property>
   </bean>

   <bean id="ddctAnalysisResultPersister"
         class="com.apldbio.sds.experiment.gex.ddct.DDCtAnalysisResultPersister">
   </bean>

   <bean id="scAnalysisResultPersister"
         class="com.apldbio.sds.experiment.gex.sc.SCAnalysisResultPersister">
   </bean>

   <bean id="rscAnalysisResultPersister"
         class="com.apldbio.sds.experiment.gex.rsc.RSCAnalysisResultPersister">
   </bean>

   <bean id="scPlateExportFactory"
         class="com.apldbio.sds.experiment.gex.export.SCPlateFactory">
   </bean>

   <bean id="scResultExportFactory"
         class="com.apldbio.sds.experiment.gex.export.sc.SCResultExportFactory">
   </bean>

   <bean id="ddCtResultExportFactory"
         class="com.apldbio.sds.experiment.gex.export.ddct.DDCtResultExportFactory">
   </bean>
   
   <bean id="bioReplicateResultExportFactory"
         class="com.apldbio.sds.experiment.gex.export.ddct.BioReplicateDDCtResultExportFactory">
   </bean>
   
   <bean id="techReplicateResultExportFactory"
         class="com.apldbio.sds.experiment.gex.export.ddct.TechReplicateDDCtResultExportFactory">
   </bean>
   
   <bean id="rscResultExportFactory"
         class="com.apldbio.sds.experiment.gex.export.rsc.RSCResultExportFactory">
   </bean>
   
   <bean id="ampDataExportFactory"
       class="com.apldbio.sds.experiment.gex.export.GEXAmplificationDataExportFactory">
   </bean>

   <!-- Omit Well Filter Processing Task -->
   <bean id="omitWellProcessingTask" class="com.apldbio.sds.platform.pipeline.FilterProcessingTask">
      <property name="filterProcessing">
         <bean class="com.apldbio.sds.platform.preproc.OmitFilterProcessor"/>
      </property>
   </bean>

   <!-- Omit well Filter -->
   <!-- Temporarily a post multicomponent processor is needed as some of the PreProcessing Tasks -->
   <!-- Don't really use the RawData passed to the Pipeline 									  -->
   <bean id="omitWellPostProcessingTask"
         class="com.apldbio.sds.platform.pipeline.PostMulticomponentTask">
   </bean>

   <bean id="NHC" class="com.apldbio.sds.experiment.gex.analysis.NTCHasCtFlag" singleton="false">
   </bean>

   <bean id="HSD" class="com.apldbio.sds.experiment.gex.analysis.HighStdFlag" singleton="false">
   </bean>
   
   <bean id="ORG" class="com.apldbio.sds.experiment.gex.analysis.OutlierInReplicateGroupFlag" singleton="false">
   </bean>

   <bean id="BAF" class="com.apldbio.sds.experiment.gex.analysis.BaselineAlgoFailedFlag" singleton="false">
   </bean>

   <bean id="EAF" class="com.apldbio.sds.experiment.gex.analysis.ExponentialAlgoFailedFlag" singleton="false">
   </bean>

   <bean id="TAF" class="com.apldbio.sds.experiment.gex.analysis.ThresholdingAlgoFailedFlag" singleton="false">
   </bean>

   <bean id="CAF" class="com.apldbio.sds.experiment.gex.analysis.CtAlgoFailedFlag" singleton="false">
   </bean>

   <bean id="AnalysisWorkspacePanelFactory" class="com.apldbio.sds.experiment.gex.workflow.sc.AnalysisWorkspacePanelFactory" singleton="false">
   </bean>

	<bean id="rnasepCalibFileManager" class="com.apldbio.sds.platform.calibration.CalibrationFileManager">
    	<property name="map">
    		<map>
	    		<entry key="stepone_48well">
		        	<list>
						<value>ab-calib-rnasep-48.eds</value>
					</list>
				</entry>
				<entry key="steponeplus_96well">
		        	<list>
						<value>steponeplus-rnasep-96.eds</value>
					</list>
				</entry>
				<entry key="sds7500_96alum">
		        	<list>
						<value>sds7500-rnasep-96.eds</value>
					</list>
				</entry>
				<entry key="sds7500fast_96fast">
		        	<list>
						<value>sds7500fast-rnasep-96.eds</value>
					</list>
				</entry>
				<entry key="sds7300_96alum">
		        	<list>
						<value>sds7300-rnasep-96.eds</value>
					</list>
				</entry>
			</map>    	
		</property>
	</bean>

	<!-- =================================================================== -->
	<!--  RNaseP calibration section                                       -->
	<!-- =================================================================== -->

	<!-- processor -->
	<bean id="rnasepCalibrationExperimentProcessor" class="com.apldbio.sds.experiment.calibration.rnasep.RNasePExperimentProcessor" 
		singleton="true">
	</bean>

	<!-- pipeline -->
	<bean id="RNasePCalibAnalysisPipeline" class="com.apldbio.sds.platform.pipeline.AnalysisPipeline">
    	<property name="commands">
        	<list>
 	        	<ref bean="PreprocessingTask"></ref>
    	        <ref bean="MultiComponentTask"></ref>
        	    <ref bean="rnBasedMetricsAnalysisTask"></ref>
            	<ref bean="CTAnalysisTask"></ref>
	            <ref bean="stdCurveAnalysisTask"></ref>
    	        <ref bean="GExStatisticalAnalysisTask"></ref>
				<ref local="RNasePCalibAnalysisTask"></ref>
			</list>
		</property>
    </bean>

	<!-- task 	-->
	<bean id="RNasePCalibAnalysisTask" class="com.apldbio.sds.experiment.calibration.rnasep.pipeline.RNasePRunAnalysisTask" >
		<property name="calibrationAnalysis">
			<bean class="com.apldbio.sds.experiment.calibration.rnasep.pipeline.RNasePRunAnalysis" />
		</property>
	</bean>

	<bean id="rnasepCalibrationWizard" class="com.apldbio.sds.experiment.calibration.wizard.rnasep.RNasePCalibrationWizard" singleton="false">
    	<property name="controller">
	       	<ref bean="RNasePCalibrationController" />
		</property>
    	<property name="wizardSteps">
        	<list>
        		<bean class="com.apldbio.sds.experiment.calibration.wizard.rnasep.IntroductionPage" singleton="false">
					<property name="controller">
						<ref local="RNasePCalibrationController" />
					</property>
        		</bean>
        		<bean class="com.apldbio.sds.experiment.calibration.wizard.rnasep.CalibrationPage" singleton="false">
					<property name="controller">
						<ref local="RNasePCalibrationController" />
					</property>
        		</bean>
        		<bean class="com.apldbio.sds.experiment.calibration.wizard.rnasep.AnalysisPage" singleton="false">
					<property name="controller">
						<ref local="RNasePCalibrationController" />
					</property>
        		</bean>
			</list>
		</property>
	</bean>
	
	<bean id="RNasePCalibrationController" factory-method="getInstance"
		class="com.apldbio.sds.experiment.calibration.rnasep.RNasePCalibrationController" />

</beans>