diff --git a/gemma-cli/src/main/java/ubic/gemma/apps/DifferentialExpressionAnalysisCli.java b/gemma-cli/src/main/java/ubic/gemma/apps/DifferentialExpressionAnalysisCli.java index 7395f47839..df74253a97 100644 --- a/gemma-cli/src/main/java/ubic/gemma/apps/DifferentialExpressionAnalysisCli.java +++ b/gemma-cli/src/main/java/ubic/gemma/apps/DifferentialExpressionAnalysisCli.java @@ -386,7 +386,7 @@ protected void processExpressionExperiment( ExpressionExperiment ee ) { return; } - if ( ee.getExperimentalDesign() == null || ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { + if ( ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { throw new IllegalStateException( ee + " does not have an experimental design populated." ); } diff --git a/gemma-cli/src/main/java/ubic/gemma/apps/SplitExperimentCli.java b/gemma-cli/src/main/java/ubic/gemma/apps/SplitExperimentCli.java index 5173af0503..5ae7d32453 100644 --- a/gemma-cli/src/main/java/ubic/gemma/apps/SplitExperimentCli.java +++ b/gemma-cli/src/main/java/ubic/gemma/apps/SplitExperimentCli.java @@ -101,10 +101,6 @@ protected void processExpressionExperiment( ExpressionExperiment ee ) { * Adapted from code in DifferentialExpressionAnalysisCli */ private ExperimentalFactor guessFactor( ExpressionExperiment ee ) { - if ( ee.getExperimentalDesign() == null ) { - throw new IllegalStateException( ee + " does not have an experimental design, it cannot be split on a factor." ); - } - if ( this.factorName != null ) { Collection experimentalFactors = ee.getExperimentalDesign().getExperimentalFactors(); diff --git a/gemma-cli/src/main/java/ubic/gemma/cli/util/EntityLocatorImpl.java b/gemma-cli/src/main/java/ubic/gemma/cli/util/EntityLocatorImpl.java index 8a1a3fd793..f0f2b478dd 100644 --- a/gemma-cli/src/main/java/ubic/gemma/cli/util/EntityLocatorImpl.java +++ b/gemma-cli/src/main/java/ubic/gemma/cli/util/EntityLocatorImpl.java @@ -261,7 +261,7 @@ public ExperimentalFactor locateExperimentalFactor( ExpressionExperiment express expressionExperiment = eeService.thawLiter( expressionExperiment ); - if ( expressionExperiment.getExperimentalDesign() == null || expressionExperiment.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { + if ( expressionExperiment.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { throw new IllegalStateException( "Experimental design is not populated for " + expressionExperiment + "." ); } @@ -307,9 +307,6 @@ public ExperimentalFactor locateExperimentalFactor( ExpressionExperiment express @Nullable private ExperimentalFactor matchOneFactor( ExpressionExperiment ee, Predicate predicate ) { - if ( ee.getExperimentalDesign() == null ) { - return null; - } Set matches = ee.getExperimentalDesign().getExperimentalFactors().stream() .filter( predicate ) .collect( Collectors.toSet() ); diff --git a/gemma-core/src/main/java/ubic/gemma/core/analysis/expression/diff/DiffExAnalyzerUtils.java b/gemma-core/src/main/java/ubic/gemma/core/analysis/expression/diff/DiffExAnalyzerUtils.java index 440e43790a..aeff2f9061 100644 --- a/gemma-core/src/main/java/ubic/gemma/core/analysis/expression/diff/DiffExAnalyzerUtils.java +++ b/gemma-core/src/main/java/ubic/gemma/core/analysis/expression/diff/DiffExAnalyzerUtils.java @@ -293,11 +293,8 @@ public static AnalysisType determineAnalysisType( BioAssaySet bioAssaySet, Colle } private static Collection getFactorsToUse( BioAssaySet bioAssaySet, - Collection experimentalFactors ) { - Collection efsToUse; - + @Nullable Collection experimentalFactors ) { ExperimentalDesign design; - if ( bioAssaySet instanceof ExpressionExperiment ) { design = ( ( ExpressionExperiment ) bioAssaySet ).getExperimentalDesign(); } else if ( bioAssaySet instanceof ExpressionExperimentSubSet ) { @@ -306,10 +303,7 @@ private static Collection getFactorsToUse( BioAssaySet bioAs throw new UnsupportedOperationException( "Cannot deal with a " + bioAssaySet.getClass() ); } - if ( design == null ) { - throw new IllegalStateException( bioAssaySet + " does not have an experimental design." ); - } - + Collection efsToUse; if ( experimentalFactors == null || experimentalFactors.isEmpty() ) { efsToUse = new HashSet<>( design.getExperimentalFactors() ); if ( efsToUse.isEmpty() ) { @@ -318,11 +312,6 @@ private static Collection getFactorsToUse( BioAssaySet bioAs } } else { efsToUse = experimentalFactors; - if ( efsToUse.isEmpty() ) { - throw new IllegalArgumentException( - "No experimental factors. Cannot execute differential expression analysis." ); - } - // sanity check... for ( ExperimentalFactor experimentalFactor : efsToUse ) { if ( !experimentalFactor.getExperimentalDesign().getId().equals( design.getId() ) ) { @@ -330,6 +319,7 @@ private static Collection getFactorsToUse( BioAssaySet bioAs } } } + return efsToUse; } diff --git a/gemma-core/src/main/java/ubic/gemma/core/analysis/preprocess/batcheffects/BatchInfoPopulationServiceImpl.java b/gemma-core/src/main/java/ubic/gemma/core/analysis/preprocess/batcheffects/BatchInfoPopulationServiceImpl.java index 7201510ea9..89303b3abb 100644 --- a/gemma-core/src/main/java/ubic/gemma/core/analysis/preprocess/batcheffects/BatchInfoPopulationServiceImpl.java +++ b/gemma-core/src/main/java/ubic/gemma/core/analysis/preprocess/batcheffects/BatchInfoPopulationServiceImpl.java @@ -376,11 +376,6 @@ static Map readFastqHeaders( Path headerFile ) throws IOExceptio private void removeExistingBatchFactor( ExpressionExperiment ee ) { ExperimentalDesign ed = ee.getExperimentalDesign(); - if ( ed == null ) { - log.warn( ee + " does not have an experimental design, cannot remove batch factor." ); - return; - } - ExperimentalFactor toRemove = null; for ( ExperimentalFactor ef : ed.getExperimentalFactors() ) { diff --git a/gemma-core/src/main/java/ubic/gemma/core/analysis/preprocess/batcheffects/ExpressionExperimentBatchCorrectionServiceImpl.java b/gemma-core/src/main/java/ubic/gemma/core/analysis/preprocess/batcheffects/ExpressionExperimentBatchCorrectionServiceImpl.java index a7db7f1135..47cbe13ad3 100644 --- a/gemma-core/src/main/java/ubic/gemma/core/analysis/preprocess/batcheffects/ExpressionExperimentBatchCorrectionServiceImpl.java +++ b/gemma-core/src/main/java/ubic/gemma/core/analysis/preprocess/batcheffects/ExpressionExperimentBatchCorrectionServiceImpl.java @@ -270,10 +270,6 @@ private ExpressionDataDoubleMatrix removeOutliers( ExpressionDataDoubleMatrix or */ @Nullable private ExperimentalFactor getBatchFactor( ExpressionExperiment ee ) { - if ( ee.getExperimentalDesign() == null ) { - log.warn( ee + " does not have an experimental design, cannot get the batch factor." ); - return null; - } return ee.getExperimentalDesign().getExperimentalFactors().stream() .filter( ExperimentFactorUtils::isBatchFactor ) .findFirst() @@ -382,8 +378,6 @@ private ExpressionDataDoubleMatrix doComBat( ExpressionExperiment ee, Expression */ private ObjectMatrix getDesign( ExpressionExperiment ee, ExpressionDataDoubleMatrix mat ) { - Assert.notNull( ee.getExperimentalDesign(), ee + " does not have an experimental design." ); - Collection experimentalFactors = ee.getExperimentalDesign().getExperimentalFactors(); /* remove experimental factors that are for DE_Exclude */ diff --git a/gemma-core/src/main/java/ubic/gemma/core/analysis/preprocess/batcheffects/ExpressionExperimentBatchInformationServiceImpl.java b/gemma-core/src/main/java/ubic/gemma/core/analysis/preprocess/batcheffects/ExpressionExperimentBatchInformationServiceImpl.java index 23ae10727b..bf658131eb 100644 --- a/gemma-core/src/main/java/ubic/gemma/core/analysis/preprocess/batcheffects/ExpressionExperimentBatchInformationServiceImpl.java +++ b/gemma-core/src/main/java/ubic/gemma/core/analysis/preprocess/batcheffects/ExpressionExperimentBatchInformationServiceImpl.java @@ -214,11 +214,6 @@ public BatchEffectDetails getBatchEffectDetails( ExpressionExperiment ee ) { return details; } - if ( ee.getExperimentalDesign() == null ) { - log.warn( ee + " have batch information, but it does not have an experimental design to determine the batch effect." ); - return details; - } - ExperimentalFactor ef = ee.getExperimentalDesign().getExperimentalFactors() .stream() .filter( ExperimentFactorUtils::isBatchFactor ) @@ -307,15 +302,11 @@ private BatchInformationEvent checkBatchFetchStatus( ExpressionExperiment ee ) { } private boolean hasBatchFactor( ExpressionExperiment ee ) { - ee = expressionExperimentService.thawLiter( ee ); - if ( ee.getExperimentalDesign() != null ) { - for ( ExperimentalFactor ef : ee.getExperimentalDesign().getExperimentalFactors() ) { - if ( ExperimentFactorUtils.isBatchFactor( ef ) ) { - return true; - } - } - } - return false; + return expressionExperimentService.thawLiter( ee ) + .getExperimentalDesign() + .getExperimentalFactors() + .stream() + .anyMatch( ExperimentFactorUtils::isBatchFactor ); } private boolean hasBeenBatchCorrected( ExpressionExperiment ee ) { diff --git a/gemma-core/src/main/java/ubic/gemma/core/analysis/service/ExpressionDataFileServiceImpl.java b/gemma-core/src/main/java/ubic/gemma/core/analysis/service/ExpressionDataFileServiceImpl.java index 9ddf2716e0..d49795f1af 100644 --- a/gemma-core/src/main/java/ubic/gemma/core/analysis/service/ExpressionDataFileServiceImpl.java +++ b/gemma-core/src/main/java/ubic/gemma/core/analysis/service/ExpressionDataFileServiceImpl.java @@ -714,8 +714,8 @@ private int writeRawExpressionDataInternal( ExpressionExperiment ee, @Nullable L @Override public void writeDesignMatrix( ExpressionExperiment ee, boolean useProcessedData, Writer writer, boolean autoFlush ) throws IOException { ee = expressionExperimentService.thawLite( ee ); - if ( ee.getExperimentalDesign() == null || ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { - throw new IllegalStateException( "No experimental design for " + ee ); + if ( ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { + throw new IllegalStateException( "Empty experimental design for " + ee ); } ExperimentalDesignWriter edWriter = new ExperimentalDesignWriter( entityUrlBuilder, buildInfo, autoFlush ); if ( useProcessedData ) { @@ -742,8 +742,8 @@ public void writeDesignMatrix( ExpressionExperiment ee, boolean useProcessedData @Override public void writeDesignMatrix( ExpressionExperiment ee, QuantitationType qt, Class vectorType, Writer writer, boolean autoFlush ) throws IOException { ee = expressionExperimentService.thawLite( ee ); - if ( ee.getExperimentalDesign() == null || ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { - throw new IllegalStateException( "No experimental design for " + ee ); + if ( ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { + throw new IllegalStateException( "Empty experimental design for " + ee ); } ExperimentalDesignWriter edWriter = new ExperimentalDesignWriter( entityUrlBuilder, buildInfo, autoFlush ); Collection processedDimension = expressionExperimentService.getBioAssayDimensionsWithAssays( ee, qt ); @@ -907,7 +907,7 @@ public LockedPath writeOrLocateRawExpressionDataFile( ExpressionExperiment ee, Q @Override public Optional writeOrLocateDesignFile( ExpressionExperiment ee, boolean useProcessedData, boolean forceWrite ) throws IOException { ee = expressionExperimentService.thawLite( ee ); - if ( ee.getExperimentalDesign() == null || ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { + if ( ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { return Optional.empty(); } try ( LockedPath f = this.getOutputFile( getDesignFileName( ee, useProcessedData ), false ) ) { @@ -929,7 +929,7 @@ public Optional writeOrLocateDesignFile( ExpressionExperiment ee, bo @Override public Optional writeOrLocateDesignFile( ExpressionExperiment ee, boolean useProcessedData, boolean forceWrite, long timeout, TimeUnit timeUnit ) throws TimeoutException, IOException, InterruptedException { ee = expressionExperimentService.thawLite( ee ); - if ( ee.getExperimentalDesign() == null || ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { + if ( ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { return Optional.empty(); } try ( LockedPath f = this.getOutputFile( getDesignFileName( ee, useProcessedData ), false, timeout, timeUnit ) ) { diff --git a/gemma-core/src/main/java/ubic/gemma/core/datastructure/matrix/io/ExperimentalDesignWriter.java b/gemma-core/src/main/java/ubic/gemma/core/datastructure/matrix/io/ExperimentalDesignWriter.java index ce46c4ab0d..fc5f2d3c56 100644 --- a/gemma-core/src/main/java/ubic/gemma/core/datastructure/matrix/io/ExperimentalDesignWriter.java +++ b/gemma-core/src/main/java/ubic/gemma/core/datastructure/matrix/io/ExperimentalDesignWriter.java @@ -117,8 +117,8 @@ public void write( ExpressionExperiment ee, Writer writer ) throws IOException { * for details */ public void write( ExpressionExperiment ee, @Nullable QuantitationType quantitationType, @Nullable Class vectorType, Collection bioAssays, boolean writeBaseHeader, Writer writer ) throws IOException { - Assert.isTrue( ee.getExperimentalDesign() != null && !ee.getExperimentalDesign().getExperimentalFactors().isEmpty(), - ee + " does not have an experimental design." ); + Assert.isTrue( !ee.getExperimentalDesign().getExperimentalFactors().isEmpty(), + ee + " has an empty experimental design." ); ExperimentalDesign ed = ee.getExperimentalDesign(); diff --git a/gemma-core/src/main/java/ubic/gemma/core/visualization/ExperimentalDesignVisualizationServiceImpl.java b/gemma-core/src/main/java/ubic/gemma/core/visualization/ExperimentalDesignVisualizationServiceImpl.java index df2c56ffb5..4325df0854 100644 --- a/gemma-core/src/main/java/ubic/gemma/core/visualization/ExperimentalDesignVisualizationServiceImpl.java +++ b/gemma-core/src/main/java/ubic/gemma/core/visualization/ExperimentalDesignVisualizationServiceImpl.java @@ -356,7 +356,7 @@ private LinkedHashMap fvV = new HashMap<>(); - if ( ee.getExperimentalDesign() == null || ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { + if ( ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { // Case of no experimental design; just put in a dummy factor. ExperimentalFactor dummyFactor = ExperimentalFactor.Factory.newInstance( "No factors", FactorType.CATEGORICAL ); for ( BioMaterial bm : bms ) { diff --git a/gemma-core/src/main/java/ubic/gemma/core/visualization/cellbrowser/CellBrowserMetadataWriter.java b/gemma-core/src/main/java/ubic/gemma/core/visualization/cellbrowser/CellBrowserMetadataWriter.java index b0fbd3bedd..f50d0d7a7a 100644 --- a/gemma-core/src/main/java/ubic/gemma/core/visualization/cellbrowser/CellBrowserMetadataWriter.java +++ b/gemma-core/src/main/java/ubic/gemma/core/visualization/cellbrowser/CellBrowserMetadataWriter.java @@ -66,16 +66,10 @@ public void write( ExpressionExperiment ee, SingleCellDimension singleCellDimens .flatMap( Collection::stream ) .map( FactorValue::getExperimentalFactor ) .collect( Collectors.toSet() ); - List factors; - if ( ee.getExperimentalDesign() != null ) { - factors = ee.getExperimentalDesign().getExperimentalFactors().stream() - .filter( usedFactors::contains ) - .sorted( ExperimentalFactor.COMPARATOR ) - .collect( Collectors.toList() ); - } else { - log.warn( ee + " does not have an experimental design, no factors will be written." ); - factors = Collections.emptyList(); - } + List factors = ee.getExperimentalDesign().getExperimentalFactors().stream() + .filter( usedFactors::contains ) + .sorted( ExperimentalFactor.COMPARATOR ) + .collect( Collectors.toList() ); Map> factorValueMap = ExperimentalDesignUtils.getFactorValueMap( factors, samples ); SortedMap> bioAssayCharacteristics = selectCharacteristics( BioAssayUtils.createCharacteristicMap( assays ), assays.size() ); SortedMap> sampleCharacteristics = selectCharacteristics( createCharacteristicMap( samples ), samples.size() ); diff --git a/gemma-core/src/main/java/ubic/gemma/model/expression/experiment/ExpressionExperiment.java b/gemma-core/src/main/java/ubic/gemma/model/expression/experiment/ExpressionExperiment.java index f89f47ce94..d15694df12 100644 --- a/gemma-core/src/main/java/ubic/gemma/model/expression/experiment/ExpressionExperiment.java +++ b/gemma-core/src/main/java/ubic/gemma/model/expression/experiment/ExpressionExperiment.java @@ -72,7 +72,6 @@ public static ExpressionExperiment newInstance() { @Nullable private String batchConfound; private CurationDetails curationDetails = new CurationDetails(); - @Nullable private ExperimentalDesign experimentalDesign; @Nullable private Geeq geeq; @@ -190,7 +189,6 @@ public CurationDetails getCurationDetails() { return this.curationDetails; } - @Nullable @IndexedEmbedded public ExperimentalDesign getExperimentalDesign() { return this.experimentalDesign; @@ -291,7 +289,7 @@ public void setCurationDetails( CurationDetails curationDetails ) { this.curationDetails = curationDetails; } - public void setExperimentalDesign( @Nullable ExperimentalDesign experimentalDesign ) { + public void setExperimentalDesign( ExperimentalDesign experimentalDesign ) { this.experimentalDesign = experimentalDesign; } diff --git a/gemma-core/src/main/java/ubic/gemma/model/expression/experiment/ExpressionExperimentValueObject.java b/gemma-core/src/main/java/ubic/gemma/model/expression/experiment/ExpressionExperimentValueObject.java index 0f1a32207f..e78ca7e638 100644 --- a/gemma-core/src/main/java/ubic/gemma/model/expression/experiment/ExpressionExperimentValueObject.java +++ b/gemma-core/src/main/java/ubic/gemma/model/expression/experiment/ExpressionExperimentValueObject.java @@ -168,7 +168,7 @@ public ExpressionExperimentValueObject( ExpressionExperiment ee, boolean ignoreD } // ED - if ( !ignoreDesign && ee.getExperimentalDesign() != null && ModelUtils.isInitialized( ee.getExperimentalDesign() ) ) { + if ( !ignoreDesign && ModelUtils.isInitialized( ee.getExperimentalDesign() ) ) { this.experimentalDesign = ee.getExperimentalDesign().getId(); } diff --git a/gemma-core/src/main/java/ubic/gemma/persistence/persister/ExpressionPersister.java b/gemma-core/src/main/java/ubic/gemma/persistence/persister/ExpressionPersister.java index 38d80cb18d..52fd41a5e5 100644 --- a/gemma-core/src/main/java/ubic/gemma/persistence/persister/ExpressionPersister.java +++ b/gemma-core/src/main/java/ubic/gemma/persistence/persister/ExpressionPersister.java @@ -110,12 +110,10 @@ protected ExpressionExperiment persistExpressionExperiment( ExpressionExperiment // This has to come first and be persisted, so our FactorValues get persisted before we process the // BioAssays. - if ( ee.getExperimentalDesign() != null ) { - ExperimentalDesign experimentalDesign = ee.getExperimentalDesign(); - this.processExperimentalDesign( experimentalDesign, caches ); - assert experimentalDesign.getId() != null; - ee.setExperimentalDesign( experimentalDesign ); - } + ExperimentalDesign experimentalDesign = ee.getExperimentalDesign(); + this.processExperimentalDesign( experimentalDesign, caches ); + assert experimentalDesign.getId() != null; + ee.setExperimentalDesign( experimentalDesign ); this.checkExperimentalDesign( ee ); @@ -161,11 +159,6 @@ protected T doPersist( T entity, Caches caches ) { * If there are factorValues, check if they are setup right and if they are used by biomaterials. */ private void checkExperimentalDesign( ExpressionExperiment expExp ) { - if ( expExp.getExperimentalDesign() == null ) { - AbstractPersister.log.warn( "No experimental design!" ); - return; - } - Collection efs = expExp.getExperimentalDesign().getExperimentalFactors(); if ( efs.isEmpty() ) diff --git a/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/bioAssayData/ProcessedExpressionDataVectorHelperServiceImpl.java b/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/bioAssayData/ProcessedExpressionDataVectorHelperServiceImpl.java index 0dae3fa5ca..d5ef108313 100644 --- a/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/bioAssayData/ProcessedExpressionDataVectorHelperServiceImpl.java +++ b/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/bioAssayData/ProcessedExpressionDataVectorHelperServiceImpl.java @@ -78,7 +78,7 @@ class ProcessedExpressionDataVectorHelperServiceImpl @Override @Transactional public void reorderByDesign( ExpressionExperiment ee ) { - if ( ee.getExperimentalDesign() == null || ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { + if ( ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { log.info( ee + " does not have a populated experimental design, skipping" ); return; } diff --git a/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/experiment/ExpressionExperimentDaoImpl.java b/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/experiment/ExpressionExperimentDaoImpl.java index 5a72437049..45d056b415 100644 --- a/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/experiment/ExpressionExperimentDaoImpl.java +++ b/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/experiment/ExpressionExperimentDaoImpl.java @@ -2361,13 +2361,11 @@ public void thawLiter( final ExpressionExperiment expressionExperiment ) { Hibernate.initialize( expressionExperiment.getOtherParts() ); - if ( expressionExperiment.getExperimentalDesign() != null ) { - for ( ExperimentalFactor ef : expressionExperiment.getExperimentalDesign().getExperimentalFactors() ) { - Hibernate.initialize( ef ); - ef.getFactorValues().forEach( Hibernate::initialize ); - } - Hibernate.initialize( expressionExperiment.getExperimentalDesign().getTypes() ); + for ( ExperimentalFactor ef : expressionExperiment.getExperimentalDesign().getExperimentalFactors() ) { + Hibernate.initialize( ef ); + ef.getFactorValues().forEach( Hibernate::initialize ); } + Hibernate.initialize( expressionExperiment.getExperimentalDesign().getTypes() ); if ( expressionExperiment.getPrimaryPublication() != null ) { thawBibliographicReference( expressionExperiment.getPrimaryPublication() ); diff --git a/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/experiment/ExpressionExperimentServiceImpl.java b/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/experiment/ExpressionExperimentServiceImpl.java index 70a421f5da..3d7a311ee0 100755 --- a/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/experiment/ExpressionExperimentServiceImpl.java +++ b/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/experiment/ExpressionExperimentServiceImpl.java @@ -230,10 +230,6 @@ public ExperimentalFactor addFactor( ExpressionExperiment ee, ExperimentalFactor factor.setExperimentalDesign( experiment.getExperimentalDesign() ); factor.setSecurityOwner( experiment ); factor = experimentalFactorService.create( factor ); // to make sure we get acls. - if ( experiment.getExperimentalDesign() == null ) { - log.info( "Creating missing experimental design for " + experiment ); - experiment.setExperimentalDesign( new ExperimentalDesign() ); - } experiment.getExperimentalDesign().getExperimentalFactors().add( factor ); expressionExperimentDao.update( experiment ); return factor; @@ -245,10 +241,6 @@ public FactorValue addFactorValue( ExpressionExperiment ee, FactorValue fv ) { assert fv.getExperimentalFactor() != null; ExpressionExperiment experiment = requireNonNull( expressionExperimentDao.load( ee.getId() ) ); fv.setSecurityOwner( experiment ); - if ( experiment.getExperimentalDesign() == null ) { - log.info( "Creating missing experimental design for " + experiment ); - experiment.setExperimentalDesign( new ExperimentalDesign() ); - } Collection efs = experiment.getExperimentalDesign().getExperimentalFactors(); fv = this.factorValueService.create( fv ); for ( ExperimentalFactor ef : efs ) { @@ -266,10 +258,6 @@ public FactorValue addFactorValue( ExpressionExperiment ee, FactorValue fv ) { @Transactional public void addFactorValues( ExpressionExperiment ee, Map fvs ) { ExpressionExperiment experiment = requireNonNull( expressionExperimentDao.load( ee.getId() ) ); - if ( experiment.getExperimentalDesign() == null ) { - log.info( "Creating missing experimental design for " + experiment ); - experiment.setExperimentalDesign( new ExperimentalDesign() ); - } Collection efs = experiment.getExperimentalDesign().getExperimentalFactors(); int count = 0; for ( BioMaterial bm : fvs.keySet() ) { diff --git a/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/experiment/GeeqServiceImpl.java b/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/experiment/GeeqServiceImpl.java index 65208a3e71..f8bde705f9 100644 --- a/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/experiment/GeeqServiceImpl.java +++ b/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/experiment/GeeqServiceImpl.java @@ -471,7 +471,7 @@ private void scorePlatformsTech( Collection ads, Geeq gq ) { private void scoreReplicates( ExpressionExperiment ee, Geeq gq ) { double score; int replicates = -1; - if ( ee.getExperimentalDesign() != null && !ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { + if ( !ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { replicates = this.leastReplicates( ee ); if ( replicates < GEEQ_WORST_REPLICATION_THRESHOLD ) { diff --git a/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/experiment/SingleCellExpressionExperimentServiceImpl.java b/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/experiment/SingleCellExpressionExperimentServiceImpl.java index 3ef0817834..cb03fb8637 100644 --- a/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/experiment/SingleCellExpressionExperimentServiceImpl.java +++ b/gemma-core/src/main/java/ubic/gemma/persistence/service/expression/experiment/SingleCellExpressionExperimentServiceImpl.java @@ -1369,10 +1369,6 @@ public List getCellTypes( ExpressionExperiment ee ) { @Override public Optional getCellTypeFactor( ExpressionExperiment ee ) { - if ( ee.getExperimentalDesign() == null ) { - log.warn( ee + " does not have an experimental design, returning null for the cell type factor." ); - return Optional.empty(); - } Set candidates = ee.getExperimentalDesign().getExperimentalFactors().stream() .filter( ef -> ef.getCategory() != null ) .filter( ef -> CharacteristicUtils.hasCategory( ef.getCategory(), Categories.CELL_TYPE ) ) @@ -1401,7 +1397,6 @@ public ExperimentalFactor createCellTypeFactor( ExpressionExperiment ee, boolean @Nullable private ExperimentalFactor createCellTypeFactor( ExpressionExperiment ee, CellTypeAssignment ctl, boolean removeExistingIfNecessary, boolean ignoreCompatibleFactor ) { - Assert.notNull( ee.getExperimentalDesign(), ee + " does not have an experimental design, cannot re-create the cell type factor." ); // FIXME: this does not include a preferred CTA from non-preferred single-cell vectors Assert.isTrue( ctl.isPreferred(), "Can only create a cell type factor from a preferred CTA." ); ExperimentalFactor currentCellTypeFactor = getCellTypeFactor( ee ).orElse( null ); diff --git a/gemma-core/src/main/java/ubic/gemma/persistence/util/EntityUrlBuilder.java b/gemma-core/src/main/java/ubic/gemma/persistence/util/EntityUrlBuilder.java index ae7815e89c..c2e0e94d99 100644 --- a/gemma-core/src/main/java/ubic/gemma/persistence/util/EntityUrlBuilder.java +++ b/gemma-core/src/main/java/ubic/gemma/persistence/util/EntityUrlBuilder.java @@ -270,7 +270,6 @@ public ExpressionExperimentWebUrl byShortName() { } public ExperimentalDesignWebUrl design() { - Assert.notNull( entity.getExperimentalDesign(), entity + " does not have an experimental design." ); return new ExperimentalDesignWebUrl( baseUrl, entity, entity.getExperimentalDesign() ); } diff --git a/gemma-core/src/main/resources/ubic/gemma/model/analysis/Investigation.hbm.xml b/gemma-core/src/main/resources/ubic/gemma/model/analysis/Investigation.hbm.xml index ecd1202240..c77022613c 100644 --- a/gemma-core/src/main/resources/ubic/gemma/model/analysis/Investigation.hbm.xml +++ b/gemma-core/src/main/resources/ubic/gemma/model/analysis/Investigation.hbm.xml @@ -105,7 +105,8 @@ + cascade="all" lazy="proxy" fetch="select" not-null="true"> + diff --git a/gemma-core/src/test/java/ubic/gemma/core/analysis/expression/diff/DiffExMetaAnalyzerServiceTest.java b/gemma-core/src/test/java/ubic/gemma/core/analysis/expression/diff/DiffExMetaAnalyzerServiceTest.java index 05242fefe7..e58fedaf9e 100644 --- a/gemma-core/src/test/java/ubic/gemma/core/analysis/expression/diff/DiffExMetaAnalyzerServiceTest.java +++ b/gemma-core/src/test/java/ubic/gemma/core/analysis/expression/diff/DiffExMetaAnalyzerServiceTest.java @@ -179,15 +179,15 @@ public void testAnalyze() throws Exception { * modified to have just one factor with two levels. (The data sets have nothing to do with each other, it's * just a test) */ - for ( ExperimentalFactor ef : requireNonNull( ds1.getExperimentalDesign() ).getExperimentalFactors() ) { + for ( ExperimentalFactor ef : ds1.getExperimentalDesign().getExperimentalFactors() ) { experimentalFactorService.remove( ef ); } - for ( ExperimentalFactor ef : requireNonNull( ds2.getExperimentalDesign() ).getExperimentalFactors() ) { + for ( ExperimentalFactor ef : ds2.getExperimentalDesign().getExperimentalFactors() ) { experimentalFactorService.remove( ef ); } - for ( ExperimentalFactor ef : requireNonNull( ds3.getExperimentalDesign() ).getExperimentalFactors() ) { + for ( ExperimentalFactor ef : ds3.getExperimentalDesign().getExperimentalFactors() ) { experimentalFactorService.remove( ef ); } ds1.getExperimentalDesign().getExperimentalFactors().clear(); diff --git a/gemma-core/src/test/java/ubic/gemma/core/search/SearchServiceVoConversionTest.java b/gemma-core/src/test/java/ubic/gemma/core/search/SearchServiceVoConversionTest.java index a74187c77a..3f1efeba26 100644 --- a/gemma-core/src/test/java/ubic/gemma/core/search/SearchServiceVoConversionTest.java +++ b/gemma-core/src/test/java/ubic/gemma/core/search/SearchServiceVoConversionTest.java @@ -25,6 +25,7 @@ import ubic.gemma.model.expression.arrayDesign.ArrayDesignValueObject; import ubic.gemma.model.expression.designElement.CompositeSequence; import ubic.gemma.model.expression.designElement.CompositeSequenceValueObject; +import ubic.gemma.model.expression.experiment.ExperimentalDesign; import ubic.gemma.model.expression.experiment.ExpressionExperiment; import ubic.gemma.model.expression.experiment.ExpressionExperimentValueObject; import ubic.gemma.model.genome.Taxon; @@ -100,6 +101,7 @@ public void setUp() { cs.setArrayDesign( ad ); ee = new ExpressionExperiment(); ee.setId( 12L ); + ee.setExperimentalDesign( new ExperimentalDesign() ); eevo = new ExpressionExperimentValueObject(); eevo.setId( 12L ); gs = new GeneSet(); @@ -222,6 +224,7 @@ public void testBlacklistedConversion() { be.setShortName( "GSE102930" ); ExpressionExperiment ee = new ExpressionExperiment(); ee.setId( 1L ); + ee.setExperimentalDesign( new ExperimentalDesign() ); when( expressionExperimentService.loadValueObjects( any() ) ).thenReturn( Collections.singletonList( new ExpressionExperimentValueObject( ee ) ) ); when( blacklistedEntityService.loadValueObjects( any() ) ).thenReturn( Arrays.asList( BlacklistedValueObject.fromEntity( bp ), BlacklistedValueObject.fromEntity( be ) ) ); List>> vos = searchService.loadValueObjects( Arrays.asList( diff --git a/gemma-core/src/test/java/ubic/gemma/core/visualization/ExperimentalDesignVisualizationServiceTest.java b/gemma-core/src/test/java/ubic/gemma/core/visualization/ExperimentalDesignVisualizationServiceTest.java index 087e409084..ad79bf15ba 100644 --- a/gemma-core/src/test/java/ubic/gemma/core/visualization/ExperimentalDesignVisualizationServiceTest.java +++ b/gemma-core/src/test/java/ubic/gemma/core/visualization/ExperimentalDesignVisualizationServiceTest.java @@ -174,6 +174,7 @@ public void testOrderSingleCellData() { List vectors = RandomSingleCellDataUtils.randomSingleCellVectors(); ExpressionExperiment ee = vectors.iterator().next().getExpressionExperiment(); ee.setId( 1L ); + ee.setExperimentalDesign( new ExperimentalDesign() ); SingleCellDimension dimension = vectors.iterator().next().getSingleCellDimension(); List cts = new ArrayList<>( 4 ); for ( int i = 0; i < 4; i++ ) { diff --git a/gemma-core/src/test/java/ubic/gemma/persistence/service/expression/bioAssayData/CachedProcessedExpressionDataVectorServiceTest.java b/gemma-core/src/test/java/ubic/gemma/persistence/service/expression/bioAssayData/CachedProcessedExpressionDataVectorServiceTest.java index 92b39f6a74..ab82ede1ec 100644 --- a/gemma-core/src/test/java/ubic/gemma/persistence/service/expression/bioAssayData/CachedProcessedExpressionDataVectorServiceTest.java +++ b/gemma-core/src/test/java/ubic/gemma/persistence/service/expression/bioAssayData/CachedProcessedExpressionDataVectorServiceTest.java @@ -21,6 +21,7 @@ import ubic.gemma.model.expression.bioAssayData.SlicedDoubleVectorValueObject; import ubic.gemma.model.expression.biomaterial.BioMaterial; import ubic.gemma.model.expression.designElement.CompositeSequence; +import ubic.gemma.model.expression.experiment.ExperimentalDesign; import ubic.gemma.model.expression.experiment.ExpressionExperiment; import ubic.gemma.model.expression.experiment.ExpressionExperimentSubSet; import ubic.gemma.model.genome.Taxon; @@ -188,6 +189,7 @@ private ExpressionExperiment createExperiment() { } expressionExperiment.getBioAssays().addAll( Arrays.asList( bas ) ); expressionExperiment.getBioAssays().forEach( ba -> sessionFactory.getCurrentSession().persist( ba.getSampleUsed() ) ); + expressionExperiment.setExperimentalDesign( new ExperimentalDesign() ); sessionFactory.getCurrentSession().persist( expressionExperiment ); // create vectors for the subsets @@ -224,6 +226,7 @@ private ExpressionExperiment createExperimentWithSubSets( Collection sessionFactory.getCurrentSession().persist( ba.getSampleUsed() ) ); + expressionExperiment.setExperimentalDesign( new ExperimentalDesign() ); sessionFactory.getCurrentSession().persist( expressionExperiment ); // we're going to create two subsets of BAs with 2 sub-assay per assay @@ -277,6 +280,7 @@ private ExpressionExperiment createExperimentWithSubAssaysSubSets( Collection sessionFactory.getCurrentSession().persist( ba.getSampleUsed() ) ); + expressionExperiment.setExperimentalDesign( new ExperimentalDesign() ); sessionFactory.getCurrentSession().persist( expressionExperiment ); // we're going to create two subsets of BAs with 2 sub-assay per assay diff --git a/gemma-core/src/test/java/ubic/gemma/persistence/service/expression/experiment/ExpressionExperimentBatchInformationServiceTest.java b/gemma-core/src/test/java/ubic/gemma/persistence/service/expression/experiment/ExpressionExperimentBatchInformationServiceTest.java index 6c9aaadd4d..4d9c7cee7e 100644 --- a/gemma-core/src/test/java/ubic/gemma/persistence/service/expression/experiment/ExpressionExperimentBatchInformationServiceTest.java +++ b/gemma-core/src/test/java/ubic/gemma/persistence/service/expression/experiment/ExpressionExperimentBatchInformationServiceTest.java @@ -129,6 +129,7 @@ public void testMissingBatchInformation() { // no batch factor, no batch info attempt ee = new ExpressionExperiment(); + ee.setExperimentalDesign( new ExperimentalDesign() ); assertFalse( eeBatchService.checkHasBatchInfo( ee ) ); assertFalse( eeBatchService.checkHasUsableBatchInfo( ee ) ); assertFalse( eeBatchService.getBatchEffectDetails( ee ).hasBatchInformation() ); @@ -136,6 +137,7 @@ public void testMissingBatchInformation() { assertEquals( BatchEffectType.NO_BATCH_INFO, getBatchEffectType( eeBatchService.getBatchEffectDetails( ee ) ) ); ee = new ExpressionExperiment(); + ee.setExperimentalDesign( new ExperimentalDesign() ); aet = new BatchInformationFetchingEvent(); ae = AuditEvent.Factory.newInstance( new Date(), AuditAction.UPDATE, null, null, null, aet ); when( auditEventService.getLastEvent( ee, BatchInformationEvent.class ) ).thenReturn( ae ); @@ -145,6 +147,7 @@ public void testMissingBatchInformation() { assertEquals( BatchEffectType.BATCH_EFFECT_UNDETERMINED_FAILURE, getBatchEffectType( eeBatchService.getBatchEffectDetails( ee ) ) ); ee = new ExpressionExperiment(); + ee.setExperimentalDesign( new ExperimentalDesign() ); aet = new SingleBatchDeterminationEvent(); ae = AuditEvent.Factory.newInstance( new Date(), AuditAction.UPDATE, null, null, null, aet ); when( auditEventService.getLastEvent( ee, BatchInformationEvent.class ) ).thenReturn( ae ); @@ -154,6 +157,7 @@ public void testMissingBatchInformation() { assertEquals( BatchEffectType.BATCH_EFFECT_UNDETERMINED_FAILURE, getBatchEffectType( eeBatchService.getBatchEffectDetails( ee ) ) ); ee = new ExpressionExperiment(); + ee.setExperimentalDesign( new ExperimentalDesign() ); aet = new BatchInformationMissingEvent(); ae = AuditEvent.Factory.newInstance( new Date(), AuditAction.UPDATE, null, null, null, aet ); when( auditEventService.getLastEvent( ee, BatchInformationEvent.class ) ).thenReturn( ae ); @@ -165,6 +169,7 @@ public void testMissingBatchInformation() { // batch info missing (after 23f7dcdbcbbf7b137c74abf2b6df96134bddc88b) ee = new ExpressionExperiment(); + ee.setExperimentalDesign( new ExperimentalDesign() ); aet = new BatchInformationMissingEvent(); ae = AuditEvent.Factory.newInstance( new Date(), AuditAction.UPDATE, "Error while processing FASTQ headers for ExpressionExperiment Id=35322 Name=Medial prefrontal cortex transcriptome of mice susceptible or resilient to chronic stress Short Name=GSE226576: No header file for ExpressionExperiment Id=35322 Name=Medial prefrontal cortex transcriptome of mice susceptible or resilient to chronic stress Short Name=GSE226576", null, null, aet ); when( auditEventService.getLastEvent( ee, BatchInformationEvent.class ) ).thenReturn( ae ); @@ -176,6 +181,7 @@ public void testMissingBatchInformation() { // batch info failed (prior to 23f7dcdbcbbf7b137c74abf2b6df96134bddc88b) ee = new ExpressionExperiment(); + ee.setExperimentalDesign( new ExperimentalDesign() ); aet = new FailedBatchInformationFetchingEvent(); ae = AuditEvent.Factory.newInstance( new Date(), AuditAction.UPDATE, "Error while processing FASTQ headers for ExpressionExperiment Id=35322 Name=Medial prefrontal cortex transcriptome of mice susceptible or resilient to chronic stress Short Name=GSE226576: No header file for ExpressionExperiment Id=35322 Name=Medial prefrontal cortex transcriptome of mice susceptible or resilient to chronic stress Short Name=GSE226576", null, null, aet ); when( auditEventService.getLastEvent( ee, BatchInformationEvent.class ) ).thenReturn( ae ); @@ -187,6 +193,7 @@ public void testMissingBatchInformation() { // has batch information, but it's got some issues ee = new ExpressionExperiment(); + ee.setExperimentalDesign( new ExperimentalDesign() ); aet = new FailedBatchInformationFetchingEvent(); ae = AuditEvent.Factory.newInstance( new Date(), AuditAction.UPDATE, "Invalid lane for sample GSM...", null, null, aet ); when( auditEventService.getLastEvent( ee, BatchInformationEvent.class ) ).thenReturn( ae ); diff --git a/gemma-core/src/test/java/ubic/gemma/persistence/service/expression/experiment/ExpressionExperimentDaoTest.java b/gemma-core/src/test/java/ubic/gemma/persistence/service/expression/experiment/ExpressionExperimentDaoTest.java index cb2e61a32f..b8a85e8386 100644 --- a/gemma-core/src/test/java/ubic/gemma/persistence/service/expression/experiment/ExpressionExperimentDaoTest.java +++ b/gemma-core/src/test/java/ubic/gemma/persistence/service/expression/experiment/ExpressionExperimentDaoTest.java @@ -583,6 +583,7 @@ public void testLoadValueObjectWithSingleCellData() { bm.setSourceTaxon( taxon ); sessionFactory.getCurrentSession().persist( bm ); ExpressionExperiment ee = new ExpressionExperiment(); + ee.setExperimentalDesign( new ExperimentalDesign() ); BioAssay ba = new BioAssay(); ba.setArrayDesignUsed( ad ); ba.setSampleUsed( bm ); diff --git a/gemma-core/src/test/java/ubic/gemma/persistence/service/expression/experiment/RandomExperimentalDesignUtils.java b/gemma-core/src/test/java/ubic/gemma/persistence/service/expression/experiment/RandomExperimentalDesignUtils.java index d37d713552..65757c919e 100644 --- a/gemma-core/src/test/java/ubic/gemma/persistence/service/expression/experiment/RandomExperimentalDesignUtils.java +++ b/gemma-core/src/test/java/ubic/gemma/persistence/service/expression/experiment/RandomExperimentalDesignUtils.java @@ -38,7 +38,6 @@ public static void setSeed( long seed ) { * Create and assign a random experimental design to the given experiment. */ public ExperimentalDesign randomExperimentalDesign( ExpressionExperiment ee, int numCategoricalFactors, int numContinuousFactors ) { - Assert.notNull( ee.getExperimentalDesign(), "Experimental design must be initialized" ); ExperimentalDesign design = randomExperimentalDesign( getSampleUsed( ee ), numCategoricalFactors, numContinuousFactors ); ee.setExperimentalDesign( design ); return design; @@ -63,7 +62,6 @@ public ExperimentalDesign randomExperimentalDesign( Collection samp * @see #randomCategoricalFactor(ExperimentalDesign, Collection, String, int) */ public static ExperimentalFactor randomCategoricalFactor( ExpressionExperiment ee, String name, int numValues ) { - Assert.notNull( ee.getExperimentalDesign() ); return randomCategoricalFactor( ee.getExperimentalDesign(), getSampleUsed( ee ), name, numValues ); } @@ -94,7 +92,6 @@ public static ExperimentalFactor randomCategoricalFactor( ExperimentalDesign des * Create and assign a continuous factor to all the samples of an experiment. */ public static ExperimentalFactor randomContinuousFactor( ExpressionExperiment ee, String name ) { - Assert.notNull( ee.getExperimentalDesign() ); return randomContinuousFactor( ee.getExperimentalDesign(), getSampleUsed( ee ), name ); } diff --git a/gemma-core/src/test/java/ubic/gemma/persistence/util/ServiceBasedValueObjectConverterTest.java b/gemma-core/src/test/java/ubic/gemma/persistence/util/ServiceBasedValueObjectConverterTest.java index 34b1c89cdc..34a8728708 100644 --- a/gemma-core/src/test/java/ubic/gemma/persistence/util/ServiceBasedValueObjectConverterTest.java +++ b/gemma-core/src/test/java/ubic/gemma/persistence/util/ServiceBasedValueObjectConverterTest.java @@ -19,6 +19,7 @@ import ubic.gemma.model.common.IdentifiableValueObject; import ubic.gemma.model.expression.arrayDesign.ArrayDesign; import ubic.gemma.model.expression.arrayDesign.ArrayDesignValueObject; +import ubic.gemma.model.expression.experiment.ExperimentalDesign; import ubic.gemma.model.expression.experiment.ExpressionExperiment; import ubic.gemma.model.expression.experiment.ExpressionExperimentValueObject; import ubic.gemma.persistence.service.expression.experiment.ExpressionExperimentService; @@ -58,6 +59,7 @@ public ExpressionExperimentService expressionExperimentService() { public void setUp() { ee = new ExpressionExperiment(); ee.setId( 1L ); + ee.setExperimentalDesign( new ExperimentalDesign() ); conversionService = new GenericConversionService(); conversionService.addConverter( new ServiceBasedValueObjectConverter<>( expressionExperimentService, ExpressionExperiment.class, ExpressionExperimentValueObject.class ) ); when( expressionExperimentService.load( 1L ) ).thenReturn( ee ); @@ -131,6 +133,7 @@ public void testConvertSingleEntityToSuperType() { @WithMockUser public void testConvertSingleEntityFromSubType() { SpecificExpressionExperiment see = new SpecificExpressionExperiment(); + see.setExperimentalDesign( new ExperimentalDesign() ); Object converted = conversionService.convert( see, IdentifiableValueObject.class ); assertThat( converted ) .isNotNull() diff --git a/gemma-web/src/main/java/ubic/gemma/web/controller/analysis/expression/diff/DifferentialExpressionAnalysisController.java b/gemma-web/src/main/java/ubic/gemma/web/controller/analysis/expression/diff/DifferentialExpressionAnalysisController.java index bee699c013..6ebbe90aec 100644 --- a/gemma-web/src/main/java/ubic/gemma/web/controller/analysis/expression/diff/DifferentialExpressionAnalysisController.java +++ b/gemma-web/src/main/java/ubic/gemma/web/controller/analysis/expression/diff/DifferentialExpressionAnalysisController.java @@ -66,10 +66,6 @@ public DifferentialExpressionAnalyzerInfo determineAnalysisType( Long id ) { ExpressionExperiment ee = expressionExperimentService.loadAndThawLiteOrFail( id, EntityNotFoundException::new, "Cannot access experiment with id=" + id ); - if ( ee.getExperimentalDesign() == null ) { - throw new IllegalArgumentException( ee.getShortName() + " does not have an experimental design." ); - } - Collection factorsWithoutBatch = ee.getExperimentalDesign().getExperimentalFactors().stream() .filter( f -> !ExperimentFactorUtils.isBatchFactor( f ) ) .collect( Collectors.toSet() ); @@ -151,10 +147,6 @@ public String run( Long id ) { ExpressionExperiment ee = expressionExperimentService.loadAndThawLiteOrFail( id, EntityNotFoundException::new, "Cannot access experiment with id=" + id ); - if ( ee.getExperimentalDesign() == null ) { - throw new IllegalArgumentException( ee.getShortName() + " does not have an experimental design." ); - } - this.experimentReportService.evictFromCache( ee.getId() ); DifferentialExpressionAnalysisTaskCommand cmd = new DifferentialExpressionAnalysisTaskCommand( ee ); @@ -187,10 +179,6 @@ public String runCustom( Long id, Collection factorids, boolean includeInt ExpressionExperiment ee = expressionExperimentService.loadAndThawLiteOrFail( id, EntityNotFoundException::new, "Cannot access experiment with id=" + id ); - if ( ee.getExperimentalDesign() == null ) { - throw new IllegalArgumentException( ee.getShortName() + " does not have an experimental design." ); - } - /* * Get the factors matching the factorids */ diff --git a/gemma-web/src/main/java/ubic/gemma/web/controller/expression/experiment/ExperimentalDesignController.java b/gemma-web/src/main/java/ubic/gemma/web/controller/expression/experiment/ExperimentalDesignController.java index 45137b6cff..0d90199fe0 100644 --- a/gemma-web/src/main/java/ubic/gemma/web/controller/expression/experiment/ExperimentalDesignController.java +++ b/gemma-web/src/main/java/ubic/gemma/web/controller/expression/experiment/ExperimentalDesignController.java @@ -117,7 +117,7 @@ public class ExperimentalDesignController { public void createDesignFromFile( Long eeid, String filename ) { ExpressionExperiment ee = expressionExperimentService.loadAndThawOrFail( eeid, EntityNotFoundException::new ); - if ( ee.getExperimentalDesign() != null && !ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { + if ( !ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) { throw new IllegalArgumentException( "Cannot import an experimental design for an experiment that already has design data populated." ); } @@ -606,10 +606,6 @@ public Collection getExperimentalFactors( EntityD throw new RuntimeException( "Don't know how to process a " + e.getClassDelegatingFor() ); } - if ( ee.getExperimentalDesign() == null ) { - throw new EntityNotFoundException( "Experiment " + ee.getShortName() + " does not have an experimental design." ); - } - return ee.getExperimentalDesign().getExperimentalFactors().stream() .map( ExperimentalFactorValueObject::new ) .collect( Collectors.toSet() ); @@ -673,9 +669,6 @@ public ModelAndView showByExperimentShortName( @RequestParam("shortName") String private ModelAndView show( ExpressionExperiment ee ) { ee = expressionExperimentService.thawLite( ee ); - if ( ee.getExperimentalDesign() == null ) { - throw new EntityNotFoundException( "Experiment " + ee.getShortName() + " does not have an experimental design." ); - } return new ModelAndView( "experimentalDesign.detail" ) .addObject( "taxon", expressionExperimentService.getTaxon( ee ) ) .addObject( "hasPopulatedDesign", !ee.getExperimentalDesign().getExperimentalFactors().isEmpty() ) @@ -732,9 +725,6 @@ public void updateBioMaterials( BioMaterialValueObject[] bmvos ) { private void updateBioMaterials( ExpressionExperiment ee, Collection bms ) { ee = expressionExperimentService.thawLite( ee ); - if ( ee.getExperimentalDesign() == null ) { - throw new EntityNotFoundException( "Experiment " + ee.getShortName() + " does not have an experimental design." ); - } /* * Check for unused factorValues diff --git a/gemma-web/src/main/java/ubic/gemma/web/controller/expression/experiment/ExpressionExperimentController.java b/gemma-web/src/main/java/ubic/gemma/web/controller/expression/experiment/ExpressionExperimentController.java index 96d834c36f..06c398f62e 100644 --- a/gemma-web/src/main/java/ubic/gemma/web/controller/expression/experiment/ExpressionExperimentController.java +++ b/gemma-web/src/main/java/ubic/gemma/web/controller/expression/experiment/ExpressionExperimentController.java @@ -374,10 +374,6 @@ public String getDescription( Long id ) { ExpressionExperimentController.TRIM_SIZE ) ); } - if ( ee.getExperimentalDesign() == null ) { - return descriptive.append( "
(No Experimental Design)" ).toString(); - } - // Is there any factor info to add? Collection efs = ee.getExperimentalDesign().getExperimentalFactors(); if ( efs.isEmpty() ) return descriptive.append( "
(No Factors)" ).toString(); @@ -421,10 +417,6 @@ public Collection getDesignMatrixRows( EntityDelegat } ExpressionExperiment ee = getExperimentById( e.getId(), true ); - if ( ee.getExperimentalDesign() == null ) { - return Collections.emptyList(); - } - // filter which factors we want to display // ignore "batch", continuous and cell type factors Collection factors = ee @@ -470,8 +462,6 @@ public Collection getExperimentalFactors( EntityD Collection result = new HashSet<>(); - if ( ee.getExperimentalDesign() == null ) return null; - Collection factors = ee.getExperimentalDesign().getExperimentalFactors(); for ( ExperimentalFactor factor : factors ) diff --git a/gemma-web/src/main/java/ubic/gemma/web/controller/expression/experiment/ExpressionExperimentQCController.java b/gemma-web/src/main/java/ubic/gemma/web/controller/expression/experiment/ExpressionExperimentQCController.java index 57f29ce31f..ca089b2889 100644 --- a/gemma-web/src/main/java/ubic/gemma/web/controller/expression/experiment/ExpressionExperimentQCController.java +++ b/gemma-web/src/main/java/ubic/gemma/web/controller/expression/experiment/ExpressionExperimentQCController.java @@ -879,9 +879,6 @@ private double[] getEigenGene( SVDResult svdo, Integer component ) { } private Map getFactorNames( ExpressionExperiment ee, int maxWidth ) { - if ( ee.getExperimentalDesign() == null ) { - throw new IllegalArgumentException( "ExpressionExperiment does not have an experimental design." ); - } Collection factors = ee.getExperimentalDesign().getExperimentalFactors(); Map efs = new HashMap<>(); for ( ExperimentalFactor ef : factors ) { @@ -985,12 +982,8 @@ private void writeDetailedFactorAnalysis( ExpressionExperiment ee, int perChartS int maxWidth = 30; Map efs = this.getFactorNames( ee, maxWidth ); Collection continuousFactors = new HashSet<>(); - if ( ee.getExperimentalDesign() == null ) { - throw new IllegalArgumentException( "ExpressionExperiment does not have an experimental design." ); - } for ( ExperimentalFactor ef : ee.getExperimentalDesign().getExperimentalFactors() ) { - boolean isContinous = ef.getType().equals( FactorType.CONTINUOUS ); - if ( isContinous ) { + if ( ef.getType().equals( FactorType.CONTINUOUS ) ) { continuousFactors.add( ef ); } }