Class ExpressionExperimentValueObject
- All Implemented Interfaces:
Serializable, Securable, SecureValueObject, Describable, Identifiable, BioAssaySetValueObject
- Direct Known Subclasses:
DatasetsWebService.ExpressionExperimentWithSearchResultValueObject, ExpressionExperimentDetailsValueObject
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class AbstractCuratableValueObject
AbstractCuratableValueObject.LastEventTriple -
Field Summary
FieldsFields inherited from class IdentifiableValueObject
id -
Constructor Summary
ConstructorsModifierConstructorDescriptionRequired when using the class as a spring bean.ExpressionExperimentValueObject(ExpressionExperiment ee, boolean ignoreDesign, boolean ignoreAccession) Creates a new value object out of given Expression Experiment.ExpressionExperimentValueObject(ExpressionExperiment ee, boolean ignoreDesign, boolean ignoreAccession, boolean skipEvents) Variant that skips reading the threelast*Eventassociations offCurationDetailswhenskipEvents=true.Creates a newExpressionExperimentvalue object with additional information about ownership.protected -
Method Summary
Modifier and TypeMethodDescriptionObtain the accession of this set if one exists.Batch effect type.Summary statistics of a batch effect is present.intDeprecated.booleanbooleanWhen the dataset was created in Gemma — loaded, not published.Obtain a human-readable description of the objectgetDoi()DOI of the primary publication, when it is a preprint or otherwise identified by a DOI rather than a PubMed ID.getGeeq()booleanIndicate if the object is public.booleanIndicate if the object is shared.booleanLombok would name theseisSingleCell/setSingleCell; the wire name and the convention these flags follow in this class isgetIsX/setIsX(seegetIsPublic()).getName()Obtain the name of the object.Obtain the number of assays in this set.Number of cell IDs in the preferred single-cell dimension, ornullwhen there is none.Total number of cells, ornullwhen this is not a single-cell experiment or the count has not been computed.The platforms this dataset's assays were run on BEFORE a platform switch, when one happened.The other parts of the study this dataset was split off from, empty when it was not split.The platforms this dataset's assays were run on, as accession + full name.PubMed ID of the primary publication, when it is indexed by PubMed.getTaxon()Deprecated.usegetTaxonObject()insteadFIXME: this should be named simply "taxon", but that field is already taken for Gemma Web, seegetTaxon().booleanIndicate if the current user can modify this object.booleanIndicate if the current user owns the object.static voidApply ACL-derived flags (isPublic, userCanWrite, isShared, userOwned) onto an existing VO.voidsetAccession(String accession) voidsetArrayDesignCount(Long arrayDesignCount) voidsetBatchConfound(String batchConfound) voidsetBatchEffect(String batchEffect) Batch effect type.voidsetBatchEffectStatistics(String batchEffectStatistics) Summary statistics of a batch effect is present.voidsetBioMaterialCount(Integer bioMaterialCount) voidsetCharacteristics(Set<CharacteristicValueObject> characteristics) voidsetDateCreated(Date dateCreated) When the dataset was created in Gemma — loaded, not published.voidsetDescription(String description) voidDOI of the primary publication, when it is a preprint or otherwise identified by a DOI rather than a PubMed ID.voidsetExperimentalDesign(Long experimentalDesign) voidsetExternalDatabase(String externalDatabase) voidsetExternalDatabaseUri(String externalDatabaseUri) voidsetExternalLabel(String externalLabel) voidsetExternalUri(String externalUri) voidsetGeeq(GeeqValueObject geeq) voidsetIsPublic(boolean b) voidsetIsShared(boolean b) voidsetIsSingleCell(boolean isSingleCell) voidsetMetadata(String metadata) voidsetMinPvalue(Double minPvalue) voidvoidsetNumberOfBioAssays(Integer numberOfBioAssays) voidsetNumberOfCellIds(Integer numberOfCellIds) Number of cell IDs in the preferred single-cell dimension, ornullwhen there is none.voidsetNumberOfCells(Integer numberOfCells) Total number of cells, ornullwhen this is not a single-cell experiment or the count has not been computed.voidsetOriginalPlatforms(List<ArrayDesignReferenceValueObject> originalPlatforms) The platforms this dataset's assays were run on BEFORE a platform switch, when one happened.voidsetOtherParts(List<ExpressionExperimentReferenceValueObject> otherParts) The other parts of the study this dataset was split off from, empty when it was not split.voidsetPlatforms(List<ArrayDesignReferenceValueObject> platforms) The platforms this dataset's assays were run on, as accession + full name.voidsetProcessedExpressionVectorCount(Integer processedExpressionVectorCount) voidsetPubmedId(String pubmedId) PubMed ID of the primary publication, when it is indexed by PubMed.voidsetShortName(String shortName) voidvoidsetSuitableForDEA(Boolean suitableForDEA) voidsetTaxonObject(TaxonValueObject taxonObject) FIXME: this should be named simply "taxon", but that field is already taken for Gemma Web, seegetTaxon().voidsetTechnologyType(String technologyType) voidsetUserCanWrite(boolean userCanWrite) voidsetUserOwned(boolean isUserOwned) toString()Methods inherited from class AbstractCuratableValueObject
applyLastEventTriple, getCurationNote, getLastNeedsAttentionEvent, getLastNoteUpdateEvent, getLastTroubledEvent, getLastUpdated, getNeedsAttention, getTroubled, getTroubleDetails, getTroubleDetails, setCurationNote, setLastNeedsAttentionEvent, setLastNoteUpdateEvent, setLastTroubledEvent, setLastUpdated, setNeedsAttention, setTroubledMethods inherited from interface Identifiable
getId
-
Field Details
-
numberOfBioAssays
-
description
-
name
-
-
Constructor Details
-
ExpressionExperimentValueObject
public ExpressionExperimentValueObject()Required when using the class as a spring bean. -
ExpressionExperimentValueObject
-
ExpressionExperimentValueObject
public ExpressionExperimentValueObject(ExpressionExperiment ee, boolean ignoreDesign, boolean ignoreAccession) Creates a new value object out of given Expression Experiment.- Parameters:
ee- the experiment to convert into a value object.ignoreDesign- exclude the experimental design from serializationignoreAccession- exclude accession from serialization
-
ExpressionExperimentValueObject
public ExpressionExperimentValueObject(ExpressionExperiment ee, boolean ignoreDesign, boolean ignoreAccession, boolean skipEvents) Variant that skips reading the threelast*Eventassociations offCurationDetailswhenskipEvents=true. Use this from a transformer that batch-hydrates the events post-fetch and callsAbstractCuratableValueObject.applyLastEventTriple(ubic.gemma.model.common.auditAndSecurity.curation.AbstractCuratableValueObject.LastEventTriple)to fill them in once a per-page prefetch is available. -
ExpressionExperimentValueObject
-
ExpressionExperimentValueObject
Creates a newExpressionExperimentvalue object with additional information about ownership. -
ExpressionExperimentValueObject
-
ExpressionExperimentValueObject
-
-
Method Details
-
populateAclInfo
public static void populateAclInfo(ExpressionExperimentValueObject vo, @Nullable AclObjectIdentity aoi, @Nullable AclSid sid) Apply ACL-derived flags (isPublic, userCanWrite, isShared, userOwned) onto an existing VO.Extracted from the
(ExpressionExperiment, AclObjectIdentity, AclSid)constructor so that the EXISTS-rewritten filtering query path can post-fetch ACL info and inject it onto a VO that was constructed without theaoi/sidpair available at projection time. Public so DAOs in other packages (e.g.ExpressionExperimentDaoImpl) can reach it. -
getBioAssayCount
Deprecated.usegetNumberOfBioAssays()instead.Obtain the number ofBioAssayin this experiment. -
getIsSingleCell
public boolean getIsSingleCell()Lombok would name theseisSingleCell/setSingleCell; the wire name and the convention these flags follow in this class isgetIsX/setIsX(seegetIsPublic()). -
setIsSingleCell
public void setIsSingleCell(boolean isSingleCell) -
getIsPublic
public boolean getIsPublic()Description copied from interface:SecureValueObjectIndicate if the object is public.- Specified by:
getIsPublicin interfaceSecureValueObject
-
getTaxon
-
getTaxonId
Deprecated.usegetTaxonObject()instead -
getSecurableClass
- Specified by:
getSecurableClassin interfaceSecureValueObject- Returns:
- the securable Class of the represented entity.
-
getUserCanWrite
public boolean getUserCanWrite()Description copied from interface:SecureValueObjectIndicate if the current user can modify this object.- Specified by:
getUserCanWritein interfaceSecureValueObject
-
getUserOwned
public boolean getUserOwned()Description copied from interface:SecureValueObjectIndicate if the current user owns the object.- Specified by:
getUserOwnedin interfaceSecureValueObject
-
setIsPublic
public void setIsPublic(boolean b) - Specified by:
setIsPublicin interfaceSecureValueObject
-
setUserCanWrite
public void setUserCanWrite(boolean userCanWrite) - Specified by:
setUserCanWritein interfaceSecureValueObject
-
setUserOwned
public void setUserOwned(boolean isUserOwned) - Specified by:
setUserOwnedin interfaceSecureValueObject
-
getCurrentUserHasWritePermission
public boolean getCurrentUserHasWritePermission() -
getCurrentUserIsOwner
public boolean getCurrentUserIsOwner() -
toString
- Overrides:
toStringin classIdentifiableValueObject<ExpressionExperiment>
-
getNumberOfBioAssays
Description copied from interface:BioAssaySetValueObjectObtain the number of assays in this set.- Specified by:
getNumberOfBioAssaysin interfaceBioAssaySetValueObject
-
getDescription
Description copied from interface:DescribableObtain a human-readable description of the object- Specified by:
getDescriptionin interfaceDescribable
-
getName
Description copied from interface:DescribableObtain the name of the object.It may be human-readable.
It is case-insensitive and usually unique within a certain context (e.g. in a collection).
It is non-null by default, but implementation may override this with a
Nullableannotation. If null, it should not be treated as equal to otherDescribableobjects (i.e. there can be multiple null-named describable within a given set).- Specified by:
getNamein interfaceDescribable
-
getAccession
Description copied from interface:BioAssaySetValueObjectObtain the accession of this set if one exists.- Specified by:
getAccessionin interfaceBioAssaySetValueObject- See Also:
-
getExternalUri
- See Also:
-
getExternalLabel
- See Also:
-
getExternalDatabase
- See Also:
-
getExternalDatabaseUri
- See Also:
-
getPubmedId
PubMed ID of the primary publication, when it is indexed by PubMed. Mutually exclusive withdoi: the primary publication carries a single accession, so a PubMed-indexed paper populates this and a preprint (bioRxiv/arXiv/CrossRef DOI) populatesdoi. -
getDoi
DOI of the primary publication, when it is a preprint or otherwise identified by a DOI rather than a PubMed ID. SeepubmedId. -
getArrayDesignCount
-
getPlatforms
The platforms this dataset's assays were run on, as accession + full name.A list because a dataset may use more than one;
arrayDesignCountis the size of this list and is kept because clients read it. Populated on every filtered read out of the same query that produces the count — the join to the platform was already being paid for. -
getOriginalPlatforms
The platforms this dataset's assays were run on BEFORE a platform switch, when one happened.Empty for the great majority of datasets. A no-op switch — an original platform that is also a platform in use — is left out, so a non-empty list here means the dataset really was moved.
-
getDateCreated
When the dataset was created in Gemma — loaded, not published.Read from the
Caudit event, which is the only record of it: there is no creation column on the dataset (aCURATION_DETAILS.CREATEDbackfill was proposed and deferred, 2026-08-21). Measured universal — 200 of 200 sampled datasets carry the event — but null is still possible and means the event is missing, never "created just now".🛑 Not filterable or sortable.
AbstractCuratableDaounregistersauditTrail.*from the dataset filter surface, so this is a projection for display. Filtering on it is what the deferred migration was for. -
getBatchConfound
-
getBatchEffect
Batch effect type. SeeBatchEffectTypeenum for possible values. -
getBatchEffectStatistics
Summary statistics of a batch effect is present. -
getBioMaterialCount
-
getExperimentalDesign
-
getGeeq
-
getMetadata
-
getProcessedExpressionVectorCount
-
getShortName
-
getSource
-
getSuitableForDEA
-
getTaxonObject
FIXME: this should be named simply "taxon", but that field is already taken for Gemma Web, seegetTaxon(). -
getTechnologyType
-
getNumberOfCells
Total number of cells, ornullwhen this is not a single-cell experiment or the count has not been computed. Denormalized on the experiment itself, so it costs nothing to serve.🛑 Not a substitute for
isSingleCell: 63 of the 546 single-cell datasets on prod have no count. -
getNumberOfCellIds
Number of cell IDs in the preferred single-cell dimension, ornullwhen there is none. -
getOtherParts
The other parts of the study this dataset was split off from, empty when it was not split.Gemma splits an experiment by a factor — usually organism part for single-cell data — and names each part
Split part N of: … [organism part = …]. That title tells a reader siblings exist and gives them no way to reach one: 52 of 100 sampled single-cell datasets are split parts over 32 parent studies, and neither the curation UI nor the browser could follow the link, because the field lived on a VO only/experiment-sets/{id}/datasetsserves (uib, 2026-09-03).References rather than whole VOs: a sibling is rendered as a name and a link, and the previous full-VO form cost a
loadValueObjectsByIdsper split experiment. -
getCharacteristics
- Specified by:
getCharacteristicsin interfaceBioAssaySetValueObject
-
getMinPvalue
-
setNumberOfBioAssays
-
setDescription
-
setName
-
setAccession
- See Also:
-
setExternalUri
- See Also:
-
setExternalLabel
- See Also:
-
setExternalDatabase
- See Also:
-
setExternalDatabaseUri
- See Also:
-
setPubmedId
PubMed ID of the primary publication, when it is indexed by PubMed. Mutually exclusive withdoi: the primary publication carries a single accession, so a PubMed-indexed paper populates this and a preprint (bioRxiv/arXiv/CrossRef DOI) populatesdoi. -
setDoi
DOI of the primary publication, when it is a preprint or otherwise identified by a DOI rather than a PubMed ID. SeepubmedId. -
setArrayDesignCount
-
setPlatforms
The platforms this dataset's assays were run on, as accession + full name.A list because a dataset may use more than one;
arrayDesignCountis the size of this list and is kept because clients read it. Populated on every filtered read out of the same query that produces the count — the join to the platform was already being paid for. -
setOriginalPlatforms
The platforms this dataset's assays were run on BEFORE a platform switch, when one happened.Empty for the great majority of datasets. A no-op switch — an original platform that is also a platform in use — is left out, so a non-empty list here means the dataset really was moved.
-
setDateCreated
When the dataset was created in Gemma — loaded, not published.Read from the
Caudit event, which is the only record of it: there is no creation column on the dataset (aCURATION_DETAILS.CREATEDbackfill was proposed and deferred, 2026-08-21). Measured universal — 200 of 200 sampled datasets carry the event — but null is still possible and means the event is missing, never "created just now".🛑 Not filterable or sortable.
AbstractCuratableDaounregistersauditTrail.*from the dataset filter surface, so this is a projection for display. Filtering on it is what the deferred migration was for. -
setBatchConfound
-
setBatchEffect
Batch effect type. SeeBatchEffectTypeenum for possible values. -
setBatchEffectStatistics
Summary statistics of a batch effect is present. -
setBioMaterialCount
-
setExperimentalDesign
-
setGeeq
-
setMetadata
-
setProcessedExpressionVectorCount
-
setShortName
-
setSource
-
setSuitableForDEA
-
setTaxonObject
FIXME: this should be named simply "taxon", but that field is already taken for Gemma Web, seegetTaxon(). -
setTechnologyType
-
setNumberOfCells
Total number of cells, ornullwhen this is not a single-cell experiment or the count has not been computed. Denormalized on the experiment itself, so it costs nothing to serve.🛑 Not a substitute for
isSingleCell: 63 of the 546 single-cell datasets on prod have no count. -
setNumberOfCellIds
Number of cell IDs in the preferred single-cell dimension, ornullwhen there is none. -
setOtherParts
The other parts of the study this dataset was split off from, empty when it was not split.Gemma splits an experiment by a factor — usually organism part for single-cell data — and names each part
Split part N of: … [organism part = …]. That title tells a reader siblings exist and gives them no way to reach one: 52 of 100 sampled single-cell datasets are split parts over 32 parent studies, and neither the curation UI nor the browser could follow the link, because the field lived on a VO only/experiment-sets/{id}/datasetsserves (uib, 2026-09-03).References rather than whole VOs: a sibling is rendered as a name and a link, and the previous full-VO form cost a
loadValueObjectsByIdsper split experiment. -
setCharacteristics
-
setMinPvalue
-
getNumberOfBioAssays()instead.