Class DifferentialExpressionAnalyzerServiceRedoTest

java.lang.Object
ubic.gemma.core.analysis.expression.diff.DifferentialExpressionAnalyzerServiceRedoTest

@ExtendWith(org.mockito.junit.jupiter.MockitoExtension.class) public class DifferentialExpressionAnalyzerServiceRedoTest extends Object
A redo keeps the old replacement rule: only an analysis on the identical factor set is replaced.

A redo re-persists each existing analysis in turn. If redoing genotype + treatment also replaced the analysis on genotype alone, it would delete an analysis the same loop has yet to redo. The wider rule (Paul's ruling, 2026-09-13) applies to a fresh run; DifferentialExpressionAnalysisReplacementTest covers that against the database.

Author:
gembro
  • Constructor Details

    • DifferentialExpressionAnalyzerServiceRedoTest

      public DifferentialExpressionAnalyzerServiceRedoTest()
  • Method Details

    • testRedoingAWiderAnalysisDoesNotDeleteANarrowerOne

      @Test public void testRedoingAWiderAnalysisDoesNotDeleteANarrowerOne()
    • testRedoRestoresBlockingFactorIntoTheModel

      @Test public void testRedoRestoresBlockingFactorIntoTheModel()
      A paired analysis reports no result set for its blocking factor, so a redo has to recover it from the protocol description AND put it back in the factors to include; a blocking factor outside factorsToInclude is dropped by the analyzer and the redo refits unpaired.
    • redoOfAnUnblockedAnalysisStaysUnblocked

      @Test public void redoOfAnUnblockedAnalysisStaysUnblocked()
      An analysis with no blocking line redoes unblocked, and a mixed-model flag cannot appear from nowhere.
    • redoOfAnAnalysisWithoutAProtocolStillWorks

      @Test public void redoOfAnAnalysisWithoutAProtocolStillWorks()
      An analysis with no protocol at all (older rows) redoes as before.
    • redoSkipsABlockingFactorTheDesignNoLongerHas

      @Test public void redoSkipsABlockingFactorTheDesignNoLongerHas()
      A blocking factor named in the protocol that the design no longer has is left out, not guessed at and not fatal: the redo still runs, on the factors that remain.
    • redoRecoversSeveralBlockingFactorsIncludingACommaInAName

      @Test public void redoRecoversSeveralBlockingFactorsIncludingACommaInAName()
      Two blocking factors and a name containing the list separator: each is recovered, and neither is confused with a factor whose name is a fragment of it.
    • redoOfASubsetAnalysisResolvesBlockingFactorsOnTheSourceExperiment

      @Test public void redoOfASubsetAnalysisResolvesBlockingFactorsOnTheSourceExperiment()
      A subset analysis has no design of its own; the blocking factor is resolved on the source experiment.
    • protocolWrittenForAConfigRoundTripsThroughRedo

      @Test public void protocolWrittenForAConfigRoundTripsThroughRedo()
      What createProtocolForConfig writes is what the redo parses: the two are kept in step by a shared constant, and this holds the pair together end to end.