gov.nih.nci.caintegrator.application.analysis.heatmap.HeatmapSampleAnnotationsFileWriterTest.java Source code

Java tutorial

Introduction

Here is the source code for gov.nih.nci.caintegrator.application.analysis.heatmap.HeatmapSampleAnnotationsFileWriterTest.java

Source

/**
 * Copyright 5AM Solutions Inc, ESAC, ScenPro & SAIC
 *
 * Distributed under the OSI-approved BSD 3-Clause License.
 * See http://ncip.github.com/caintegrator/LICENSE.txt for details.
 */
package gov.nih.nci.caintegrator.application.analysis.heatmap;

import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertTrue;
import gov.nih.nci.caintegrator.application.analysis.heatmap.HeatmapFileTypeEnum;
import gov.nih.nci.caintegrator.application.analysis.heatmap.HeatmapSampleAnnotationsFileWriter;
import gov.nih.nci.caintegrator.application.study.AnnotationFieldDescriptor;
import gov.nih.nci.caintegrator.common.QueryUtil;
import gov.nih.nci.caintegrator.domain.annotation.AnnotationDefinition;
import gov.nih.nci.caintegrator.domain.annotation.StringAnnotationValue;
import gov.nih.nci.caintegrator.domain.application.QueryResult;
import gov.nih.nci.caintegrator.domain.application.ResultColumn;
import gov.nih.nci.caintegrator.domain.application.ResultRow;
import gov.nih.nci.caintegrator.domain.application.ResultValue;
import gov.nih.nci.caintegrator.domain.genomic.Sample;
import gov.nih.nci.caintegrator.domain.genomic.SampleAcquisition;
import gov.nih.nci.caintegrator.domain.translational.StudySubjectAssignment;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;

import org.apache.commons.io.FileUtils;
import org.junit.Test;

import au.com.bytecode.opencsv.CSVReader;

/**
 *
 */
public class HeatmapSampleAnnotationsFileWriterTest {

    private Collection<ResultColumn> columns = new HashSet<ResultColumn>();

    @Test
    public void testWriteSampleInfoFile() throws IOException {
        File tempDirectory = new File(System.getProperty("java.io.tmpdir") + File.separator + "heatmapTmp");
        tempDirectory.mkdir();
        HeatmapSampleAnnotationsFileWriter fileWriter = new HeatmapSampleAnnotationsFileWriter();

        File sampleInfoFile = fileWriter.writeSampleInfoFile(QueryUtil.retrieveSampleValuesMap(setupQueryResult()),
                columns, new File(tempDirectory.getAbsolutePath() + File.separator
                        + HeatmapFileTypeEnum.ANNOTATIONS.getFilename()).getAbsolutePath(),
                null);
        checkFile(sampleInfoFile);
        FileUtils.deleteDirectory(tempDirectory);
    }

    private QueryResult setupQueryResult() {
        ResultValue resultValue1 = new ResultValue();
        StringAnnotationValue stringValue1 = new StringAnnotationValue();
        stringValue1.setStringValue("val1");
        StringAnnotationValue stringValue2 = new StringAnnotationValue();
        stringValue2.setStringValue("val2");
        ResultValue resultValue2 = new ResultValue();
        ResultColumn resultColumn1 = new ResultColumn();
        columns.add(resultColumn1);
        resultValue1.setColumn(resultColumn1);
        resultValue1.setValue(stringValue1);
        resultValue2.setColumn(resultColumn1);
        resultValue2.setValue(stringValue2);
        AnnotationFieldDescriptor afd = new AnnotationFieldDescriptor();
        AnnotationDefinition ad = new AnnotationDefinition();
        ad.setDisplayName("annotation");
        resultColumn1.setAnnotationFieldDescriptor(afd);
        afd.setDefinition(ad);

        QueryResult queryResult = new QueryResult();
        queryResult.setRowCollection(new HashSet<ResultRow>());
        ResultRow row1 = new ResultRow();
        StudySubjectAssignment assignment1 = new StudySubjectAssignment();
        assignment1.setIdentifier("assignment1");
        row1.setSubjectAssignment(assignment1);
        SampleAcquisition sampleAcquisition1 = new SampleAcquisition();
        Sample sample1 = new Sample();
        sample1.setName("sample1");
        sampleAcquisition1.setSample(sample1);
        sampleAcquisition1.setAssignment(assignment1);
        sample1.getSampleAcquisitions().add(sampleAcquisition1);
        assignment1.getSampleAcquisitionCollection().add(sampleAcquisition1);
        row1.setSampleAcquisition(sampleAcquisition1);
        row1.setValueCollection(new ArrayList<ResultValue>());
        row1.getValueCollection().add(resultValue1);

        ResultRow row2 = new ResultRow();
        StudySubjectAssignment assignment2 = new StudySubjectAssignment();
        assignment2.setIdentifier("assignment2");
        row2.setSubjectAssignment(assignment2);
        SampleAcquisition sampleAcquisition2 = new SampleAcquisition();
        Sample sample2 = new Sample();
        sample2.setName("sample2");
        sampleAcquisition2.setSample(sample2);
        sampleAcquisition2.setAssignment(assignment2);
        sample2.getSampleAcquisitions().add(sampleAcquisition2);
        assignment2.getSampleAcquisitionCollection().add(sampleAcquisition2);
        row2.setSampleAcquisition(sampleAcquisition2);
        row2.setValueCollection(new ArrayList<ResultValue>());
        row2.getValueCollection().add(resultValue2);

        queryResult.getRowCollection().add(row1);
        queryResult.getRowCollection().add(row2);
        return queryResult;
    }

    private void checkFile(File sampleInfoFile) throws IOException {
        assertTrue(sampleInfoFile.exists());
        CSVReader reader = new CSVReader(new FileReader(sampleInfoFile), '\t');
        checkLine(reader.readNext(), "SAMPLE_ID", "annotation");
        checkSampleInfoLine(reader.readNext());
        checkSampleInfoLine(reader.readNext());
        reader.close();
    }

    private void checkSampleInfoLine(String[] line) {
        if ("sample1".equals(line[0])) {
            checkLine(line, "sample1", "val1");
        } else {
            checkLine(line, "sample2", "val2");
        }
    }

    private void checkLine(String[] line, String... expecteds) {
        assertArrayEquals(expecteds, line);
    }
}