use of ubic.gemma.model.expression.experiment.ExperimentalFactor in project Gemma by PavlidisLab.
the class TwoWayAnovaWithInteractionsAnalyzerTest method checkResults.
/**
* @param resultSet the result set to check
*/
private void checkResults(ExpressionAnalysisResultSet resultSet) {
Collection<ExperimentalFactor> factors = resultSet.getExperimentalFactors();
for (DifferentialExpressionAnalysisResult r : resultSet.getResults()) {
CompositeSequence probe = r.getProbe();
Double pvalue = r.getPvalue();
pvalue = pvalue == null ? Double.NaN : pvalue;
Double qvalue = r.getCorrectedPvalue();
assertNotNull(probe);
if (factors.size() == 1) {
ExperimentalFactor f = factors.iterator().next();
if (f.equals(super.experimentalFactorA_Area)) {
assertEquals(factorValueA2, resultSet.getBaselineGroup());
switch(probe.getName()) {
case "probe_98":
assertEquals(0.8769, pvalue, 0.001);
assertNotNull(qvalue);
break;
case "probe_10":
assertEquals(5.158e-10, pvalue, 1e-12);
break;
case "probe_4":
assertEquals(0.0048, pvalue, 0.0001);
break;
}
} else {
assertEquals(factorValueB2, resultSet.getBaselineGroup());
if (probe.getName().equals("probe_98")) {
assertEquals(0.6888, pvalue, 0.001);
} else if (probe.getName().equals("probe_10")) {
assertEquals(0.07970, pvalue, 0.00001);
}
}
} else {
assertEquals(null, resultSet.getBaselineGroup());
switch(probe.getName()) {
case "probe_98":
assertEquals(0.7893, pvalue, 0.001);
break;
case "probe_10":
assertEquals(0.04514, pvalue, 0.00001);
break;
case "probe_4":
assertEquals(Double.NaN, pvalue, 0.00001);
break;
}
}
}
}
use of ubic.gemma.model.expression.experiment.ExperimentalFactor in project Gemma by PavlidisLab.
the class TwoWayAnovaWithInteractionsAnalyzerTest method testTwoWayAnova.
@Test
public void testTwoWayAnova() {
log.debug("Testing TwoWayAnova method in " + DiffExAnalyzer.class.getName());
if (!connected) {
log.warn("Could not establish R connection. Skipping test ...");
return;
}
this.configureMocks();
Collection<ExperimentalFactor> factors = new HashSet<>();
factors.add(experimentalFactorA_Area);
factors.add(experimentalFactorB);
DifferentialExpressionAnalysisConfig config = new DifferentialExpressionAnalysisConfig();
config.setFactorsToInclude(factors);
config.addInteractionToInclude(factors);
Collection<DifferentialExpressionAnalysis> expressionAnalyses = analyzer.run(expressionExperiment, config);
DifferentialExpressionAnalysis expressionAnalysis = expressionAnalyses.iterator().next();
Collection<ExpressionAnalysisResultSet> resultSets = expressionAnalysis.getResultSets();
assertEquals(BaseAnalyzerConfigurationTest.NUM_TWA_RESULT_SETS, resultSets.size());
for (ExpressionAnalysisResultSet resultSet : resultSets) {
this.checkResults(resultSet);
}
}
use of ubic.gemma.model.expression.experiment.ExperimentalFactor in project Gemma by PavlidisLab.
the class TwoWayAnovaWithoutInteractionsAnalyzerTest method testTwoWayAnova.
/**
* Tests the TwoWayAnova method.
*/
@Test
public void testTwoWayAnova() {
log.debug("Testing getPValues method in " + DiffExAnalyzer.class.getName());
if (!connected) {
log.warn("Could not establish R connection. Skipping test ...");
return;
}
this.configureMocks();
List<ExperimentalFactor> factors = Arrays.asList(experimentalFactorA_Area, experimentalFactorB);
DifferentialExpressionAnalysisConfig config = new DifferentialExpressionAnalysisConfig();
config.setFactorsToInclude(factors);
Collection<DifferentialExpressionAnalysis> expressionAnalyses = analyzer.run(expressionExperiment, config);
DifferentialExpressionAnalysis expressionAnalysis = expressionAnalyses.iterator().next();
Collection<ExpressionAnalysisResultSet> resultSets = expressionAnalysis.getResultSets();
assertEquals(2, resultSets.size());
for (ExpressionAnalysisResultSet resultSet : resultSets) {
this.checkResults(resultSet);
}
}
use of ubic.gemma.model.expression.experiment.ExperimentalFactor in project Gemma by PavlidisLab.
the class TwoWayAnovaWithoutInteractionsAnalyzerTest method checkResults.
/**
* @param resultSet the result set to check
*/
private void checkResults(ExpressionAnalysisResultSet resultSet) {
Collection<ExperimentalFactor> factors = resultSet.getExperimentalFactors();
assertEquals("Should not have an interaction term", 1, factors.size());
ExperimentalFactor f = factors.iterator().next();
boolean found = false;
for (DifferentialExpressionAnalysisResult r : resultSet.getResults()) {
CompositeSequence probe = r.getProbe();
Double pvalue = r.getPvalue();
if (f.equals(super.experimentalFactorB) && probe.getName().equals("probe_1")) {
assertEquals(0.501040, pvalue, 0.001);
found = true;
}
Collection<ContrastResult> contrasts = r.getContrasts();
Double stat;
if (contrasts.isEmpty()) {
continue;
}
stat = contrasts.iterator().next().getTstat();
assertNotNull(probe);
if (f.equals(super.experimentalFactorA_Area)) {
assertEquals(factorValueA2, resultSet.getBaselineGroup());
switch(probe.getName()) {
case // id=1001
"probe_1":
assertEquals(0.001814, pvalue, 0.00001);
assertNotNull(stat);
assertEquals(-287.061, stat, 0.001);
found = true;
break;
case // id 1097
"probe_97":
assertEquals(0.3546, pvalue, 0.001);
break;
case "probe_0":
assertEquals(1.36e-12, pvalue, 1e-10);
assertNotNull(stat);
assertEquals(-425.3, stat, 0.1);
break;
}
} else {
assertEquals(factorValueB2, resultSet.getBaselineGroup());
if (probe.getName().equals("probe_97")) {
assertEquals(0.4449, pvalue, 0.001);
}
}
}
assertTrue("Did not find expected results for probe_1", found);
}
use of ubic.gemma.model.expression.experiment.ExperimentalFactor in project Gemma by PavlidisLab.
the class DatabaseViewGeneratorImpl method generateDifferentialExpressionView.
private void generateDifferentialExpressionView(Integer limit, Collection<ExpressionExperiment> experiments) throws IOException {
DatabaseViewGeneratorImpl.log.info("Generating dataset diffex view");
/*
* Get handle to output file
*/
File file = this.getViewFile(DatabaseViewGeneratorImpl.DATASET_DIFFEX_VIEW_BASENAME);
DatabaseViewGeneratorImpl.log.info("Writing to " + file);
try (Writer writer = new OutputStreamWriter(new GZIPOutputStream(new FileOutputStream(file)))) {
/*
* For each gene that is differentially expressed, print out a line per contrast
*/
writer.write("GemmaDsId\tEEShortName\tGeneNCBIId\tGemmaGeneId\tFactor\tFactorURI\tBaseline\tContrasting\tDirection\n");
int i = 0;
for (ExpressionExperiment ee : experiments) {
ee = expressionExperimentService.thawLite(ee);
Collection<DifferentialExpressionAnalysis> results = differentialExpressionAnalysisService.getAnalyses(ee);
if (results == null || results.isEmpty()) {
DatabaseViewGeneratorImpl.log.warn("No differential expression results found for " + ee);
continue;
}
// noinspection StatementWithEmptyBody // FIXME. Should probably skip for this purpose.
if (results.size() > 1) {
}
DatabaseViewGeneratorImpl.log.info("Processing: " + ee.getShortName());
for (DifferentialExpressionAnalysis analysis : results) {
analysis = this.differentialExpressionAnalysisService.thawFully(analysis);
for (ExpressionAnalysisResultSet ears : analysis.getResultSets()) {
// ears = differentialExpressionResultService.thawRawAndProcessed( ears );
FactorValue baselineGroup = ears.getBaselineGroup();
if (baselineGroup == null) {
// log.warn( "No baseline defined for " + ee ); // interaction
continue;
}
if (ExperimentalDesignUtils.isBatch(baselineGroup.getExperimentalFactor())) {
continue;
}
String baselineDescription = ExperimentalDesignUtils.prettyString(baselineGroup);
// Get the factor category name
StringBuilder factorName = new StringBuilder();
StringBuilder factorURI = new StringBuilder();
for (ExperimentalFactor ef : ears.getExperimentalFactors()) {
factorName.append(ef.getName()).append(",");
if (ef.getCategory() instanceof VocabCharacteristic) {
factorURI.append(ef.getCategory().getCategoryUri()).append(",");
}
}
factorName = new StringBuilder(StringUtils.removeEnd(factorName.toString(), ","));
factorURI = new StringBuilder(StringUtils.removeEnd(factorURI.toString(), ","));
if (ears.getResults() == null || ears.getResults().isEmpty()) {
DatabaseViewGeneratorImpl.log.warn("No differential expression analysis results found for " + ee);
continue;
}
// Generate probe details
for (DifferentialExpressionAnalysisResult dear : ears.getResults()) {
if (dear == null) {
DatabaseViewGeneratorImpl.log.warn("Missing results for " + ee + " skipping to next. ");
continue;
}
if (dear.getCorrectedPvalue() == null || dear.getCorrectedPvalue() > DatabaseViewGeneratorImpl.THRESH_HOLD)
continue;
String formatted = this.formatDiffExResult(ee, dear, factorName.toString(), factorURI.toString(), baselineDescription);
if (StringUtils.isNotBlank(formatted))
writer.write(formatted);
}
// dear loop
}
// ears loop
}
if (limit != null && (limit > 0 && ++i > limit))
break;
}
// EE loop
}
}
Aggregations