java.lang.Object
ubic.gemma.model.common.AbstractIdentifiable
ubic.gemma.model.expression.experiment.Geeq
All Implemented Interfaces:
Identifiable

public class Geeq extends AbstractIdentifiable
Represents quality information about a data set. The class name comes from the research project name, GEEQ. The score has two components: Quality and Suitability. See the variables getters javadoc for further description. The scoring rules are implemented in the GeeqServiceImpl, which also exposes public methods for experiment scoring.
Author:
paul, tesarst
  • Constructor Details

    • Geeq

      public Geeq()
  • Method Details

    • getSuitabilityScoreArray

      public double[] getSuitabilityScoreArray()
    • getQualityScoreArray

      public double[] getQualityScoreArray()
    • getSuitabilityScoreWeightsArray

      public double[] getSuitabilityScoreWeightsArray()
    • getQualityScoreWeightsArray

      public double[] getQualityScoreWeightsArray()
    • getDetectedQualityScore

      public double getDetectedQualityScore()
      Returns:
      Quality refers to data quality, wherein the same study could have been done twice with the same technical parameters and in one case yield bad quality data, and in another high quality data. The quality score can be overridden. The manual value is stored in manualQualityScore, while manualQualityOverride boolean value denotes whether the manual value should be used.
    • setDetectedQualityScore

      public void setDetectedQualityScore(double detectedQualityScore)
    • getManualQualityScore

      public double getManualQualityScore()
    • setManualQualityScore

      public void setManualQualityScore(double manualQualityScore)
    • isManualQualityOverride

      public boolean isManualQualityOverride()
    • setManualQualityOverride

      public void setManualQualityOverride(boolean manualQualityOverride)
    • getDetectedSuitabilityScore

      public double getDetectedSuitabilityScore()
      Returns:
      Suitability mostly refers to technical aspects which, if we were doing the study ourselves, we would have altered to make it optimal for analyses of the sort used in Gemma. The suitability score can be overridden. The manual value is stored in manualSuitabilityScore, while manualSuitabilityOverride boolean value denotes whether the manual value should be used.
    • setDetectedSuitabilityScore

      public void setDetectedSuitabilityScore(double detectedSuitabilityScore)
    • getManualSuitabilityScore

      public double getManualSuitabilityScore()
    • setManualSuitabilityScore

      public void setManualSuitabilityScore(double manualSuitabilityScore)
    • isManualSuitabilityOverride

      public boolean isManualSuitabilityOverride()
    • setManualSuitabilityOverride

      public void setManualSuitabilityOverride(boolean manualSuitabilityOverride)
    • getsScorePublication

      public double getsScorePublication()
      Returns:
      -1.0 - if experiment has no publication +1.0 otherwise
    • setsScorePublication

      public void setsScorePublication(double sScorePublicationDate)
    • getsScorePlatformAmount

      public double getsScorePlatformAmount()
      Returns:
      The amount of platforms the experiment uses: -1.0 if amount > 2 -0.5 if amount > 1 +1.0 otherwise
    • setsScorePlatformAmount

      public void setsScorePlatformAmount(double sScorePlatformAmount)
    • getsScorePlatformsTechMulti

      public double getsScorePlatformsTechMulti()
      Returns:
      Extra punishment for platform technology inconsistency -1.0 if platforms amount > 1 and platforms do not have the same technology type +1.0 otherwise
    • setsScorePlatformsTechMulti

      public void setsScorePlatformsTechMulti(double sScorePlatformsTechMulti)
    • getsScoreAvgPlatformPopularity

      public double getsScoreAvgPlatformPopularity()
      Returns:
      Score for each platforms popularity: (final score is average of scores for all used platforms) -1.0 if used in < 10 EEs -0.5 if used in < 20 EEs +0.0 if used in < 50 EEs +0.5 if used in < 100 EEs +1.0 otherwise
    • setsScoreAvgPlatformPopularity

      public void setsScoreAvgPlatformPopularity(double sScoreAvgPlatformPopularity)
    • getsScoreAvgPlatformSize

      public double getsScoreAvgPlatformSize()
      Returns:
      Score for each platforms size: (final score is average of scores for all used platforms) -1.0 if gene count < 5k -0.5 if gene count < 10k +0.0 if gene count < 15k +0.5 if gene count < 18k +1.0 otherwise
    • setsScoreAvgPlatformSize

      public void setsScoreAvgPlatformSize(double sScoreAvgPlatformSize)
    • getsScoreSampleSize

      public double getsScoreSampleSize()
      Returns:
      The amount of samples in the experiment -1.0 if sample size < 10 -0.3 if sample size < 20 +0.3 if sample size < 50 +1.0 otherwise
    • setsScoreSampleSize

      public void setsScoreSampleSize(double sScoreSampleSize)
    • getsScoreRawData

      public double getsScoreRawData()
      Returns:
      Raw data availability (shows also as the 'external' badge in Gemma web UI) -1.0 if no raw data available +1.0 otherwise
    • setsScoreRawData

      public void setsScoreRawData(double sScoreRawData)
    • getsScoreMissingValues

      public double getsScoreMissingValues()
      Returns:
      Missing values -1.0 if experiment has any missing values or there are no computed vectors +1.0 otherwise (assumed if experiment has raw data available) extra: noVectors = true, if experiment has no computed vectors
    • setsScoreMissingValues

      public void setsScoreMissingValues(double sScoreMissingValues)
    • getqScoreOutliers

      public double getqScoreOutliers()
      Returns:
      Presence of non-removed outliers: -1.0 if there are any outliers +1.0 if there are no outliers extra (in corrMatIssues): 1 if the correlation matrix is empty 2 if the correlation matrix has NaN values
    • setqScoreOutliers

      public void setqScoreOutliers(double qScoreOutliers)
    • getqScorePlatformsTech

      public double getqScorePlatformsTech()
      Returns:
      Platform technologies -1.0 if any platform is two-color +1.0 otherwise
    • setqScorePlatformsTech

      public void setqScorePlatformsTech(double qScorePlatformsTech)
    • getqScoreReplicates

      public double getqScoreReplicates()
      Returns:
      Number of replicates - ee has to have design and more than one condition -1.0 if lowest replicate amount < GEEQ_WORST_REPLICATION_THRESHOLD & !=1 or if there are problems +0.0 if lowest replicate amount < GEEQ_MEDIUM_REPLICATION_THRESHOLD & !=1 +1.0 otherwise extra (in replicatesIssues): 1 if the experiment has no design 2 if there were no factor values found 3 if all replicate amounts were 1 4 if lowest replicate was 0 (that really should not happen though) See GeeqServiceImpl for thresholds
    • setqScoreReplicates

      public void setqScoreReplicates(double qScoreReplicates)
    • getqScoreBatchInfo

      public double getqScoreBatchInfo()
      Returns:
      State of batch info -1.0 if no batch info available +1.0 otherwise
    • setqScoreBatchInfo

      public void setqScoreBatchInfo(double qScoreBatchInfo)
    • getqScoreBatchEffect

      public double getqScoreBatchEffect()
      Returns:
      Batch effect without batch correction. Can be overridden. -1.0 if batch pVal < 0.0001 or (manualHasStrongBatchEffect & manualBatchEffectActive) +1.0 if batch pVal > 0.1 or (!manualHasNoBatchEffect & manualBatchEffectActive) +0.0 otherwise extra: batchCorrected = true, if data was batch-corrected
    • setqScoreBatchEffect

      public void setqScoreBatchEffect(double qScoreBatchEffect)
    • isManualHasStrongBatchEffect

      public boolean isManualHasStrongBatchEffect()
    • setManualHasStrongBatchEffect

      public void setManualHasStrongBatchEffect(boolean manualHasStrongBatchEffect)
    • isManualHasNoBatchEffect

      public boolean isManualHasNoBatchEffect()
    • setManualHasNoBatchEffect

      public void setManualHasNoBatchEffect(boolean manualHasNoBatchEffect)
    • isManualBatchEffectActive

      public boolean isManualBatchEffectActive()
    • setManualBatchEffectActive

      public void setManualBatchEffectActive(boolean manualBatchEffectOverride)
    • getqScoreBatchConfound

      public double getqScoreBatchConfound()
      Returns:
      Batch confound -1.0 if data confound detected or (manualHasBatchConfound & manualBatchConfoundActive) +1.0 otherwise
    • setqScoreBatchConfound

      public void setqScoreBatchConfound(double qScoreBatchConfound)
    • isManualHasBatchConfound

      public boolean isManualHasBatchConfound()
    • setManualHasBatchConfound

      public void setManualHasBatchConfound(boolean manualHasBatchConfound)
    • isManualBatchConfoundActive

      public boolean isManualBatchConfoundActive()
    • setManualBatchConfoundActive

      public void setManualBatchConfoundActive(boolean manualBatchConfoundActive)
    • getqScoreSampleMeanCorrelation

      public double getqScoreSampleMeanCorrelation()
      Returns:
      Using the mean sample correlation r: +r use the computed value +0.0 if correlation matrix is empty
    • setqScoreSampleMeanCorrelation

      public void setqScoreSampleMeanCorrelation(double qScoreSampleMeanCorrelation)
    • getqScoreSampleMedianCorrelation

      public double getqScoreSampleMedianCorrelation()
      Returns:
      Using the median sample correlation m: +m use the computed value +0.0 if correlation matrix is empty
    • setqScoreSampleMedianCorrelation

      public void setqScoreSampleMedianCorrelation(double qScoreSampleMedianCorrelation)
    • getqScoreSampleCorrelationVariance

      public double getqScoreSampleCorrelationVariance()
      Returns:
      Using the sample correlation variance v: +v use the computed value +0.0 if correlation matrix is empty
    • setqScoreSampleCorrelationVariance

      public void setqScoreSampleCorrelationVariance(double qScoreSampleCorrelationVariance)
    • isNoVectors

      public boolean isNoVectors()
    • setNoVectors

      public void setNoVectors(boolean noVectors)
    • getCorrMatIssues

      public byte getCorrMatIssues()
    • setCorrMatIssues

      public void setCorrMatIssues(byte corrMatIssues)
    • getReplicatesIssues

      public byte getReplicatesIssues()
    • setReplicatesIssues

      public void setReplicatesIssues(byte replicatesIssues)
    • isBatchCorrected

      public boolean isBatchCorrected()
    • setBatchCorrected

      public void setBatchCorrected(boolean batchCorrected)
    • getOtherIssues

      public String getOtherIssues()
    • setOtherIssues

      public void setOtherIssues(String otherIssues)
    • addOtherIssues

      public void addOtherIssues(String issue)
    • equals

      public boolean equals(Object o)
      Description copied from class: AbstractIdentifiable
      Important note: Two objects with the same class and non-null ID must be considered equal. If one or both IDs are nulls, the rest of the state can be used to determine equality.
      Specified by:
      equals in class AbstractIdentifiable
    • hashCode

      public int hashCode()
      Description copied from class: AbstractIdentifiable
      Important note: Never use the ID in the hashCode() implementation since it can be assigned when the object is persisted.
      Specified by:
      hashCode in class AbstractIdentifiable