/*
* Eoulsan development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public License version 2.1 or
* later and CeCILL-C. This should be distributed with the code.
* If you do not have a copy, see:
*
* http://www.gnu.org/licenses/lgpl-2.1.txt
* http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.txt
*
* Copyright for this code is held jointly by the Genomic platform
* of the Institut de Biologie de l'École normale supérieure and
* the individual authors. These should be listed in @author doc
* comments.
*
* For more information on the Eoulsan project and its aims,
* or to join the Eoulsan Google group, visit the home page
* at:
*
* http://outils.genomique.biologie.ens.fr/eoulsan
*
*/
package fr.ens.biologie.genomique.eoulsan.design.io;
import static org.junit.Assert.assertEquals;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Collections;
import org.junit.Test;
import fr.ens.biologie.genomique.eoulsan.design.Design;
import fr.ens.biologie.genomique.eoulsan.design.DesignFactory;
import fr.ens.biologie.genomique.eoulsan.design.DesignMetadata;
import fr.ens.biologie.genomique.eoulsan.design.Experiment;
import fr.ens.biologie.genomique.eoulsan.design.ExperimentMetadata;
import fr.ens.biologie.genomique.eoulsan.design.ExperimentSampleMetadata;
import fr.ens.biologie.genomique.eoulsan.design.Sample;
import fr.ens.biologie.genomique.eoulsan.design.SampleMetadata;
import fr.ens.biologie.genomique.eoulsan.design.io.Eoulsan2DesignReader;
import fr.ens.biologie.genomique.eoulsan.design.io.Eoulsan2DesignWriter;
public class Eoulsan2ReaderWriterTest {
@Test
public void test() throws IOException {
// create a design test
Design design = DesignFactory.createEmptyDesign();
DesignMetadata designMetadata = design.getMetadata();
// design metadata
designMetadata.setGenomeFile("mm10.fasta");
designMetadata.setGffFile("mm10.gff");
designMetadata.setAdditionalAnnotationFile("additional_mm10.txt");
// create experiments
design.addExperiment("1");
design.addExperiment("2");
Experiment exp1 = design.getExperiment("1");
Experiment exp2 = design.getExperiment("2");
// experiment metadata
exp1.setName("exp1");
exp2.setName("exp2");
// experimentMetadata
ExperimentMetadata exp1MD = exp1.getMetadata();
ExperimentMetadata exp2MD = exp2.getMetadata();
exp1MD.setSkip(false);
exp1MD.setReference("sample1");
exp1MD.setModel("~type+day+type:day");
exp2MD.setSkip(false);
exp2MD.setReference("false");
exp1MD.setModel("~Condition");
// add samples
design.addSample("1");
design.addSample("2");
Sample sample1 = design.getSample("1");
Sample sample2 = design.getSample("2");
sample1.setName("sample1");
sample2.setName("sample2");
// sample metadata
SampleMetadata sample1MD = sample1.getMetadata();
SampleMetadata sample2MD = sample2.getMetadata();
sample1MD.setReads(Collections.singletonList("read_sample1.fasta"));
sample2MD.setReads(Collections.singletonList("read_sample2.fasta"));
sample1MD.setDate("06.10.2015");
sample2MD.setDate("06.10.2015");
// experiment sample metadata
exp1.addSample(sample1);
exp1.addSample(sample2);
exp2.addSample(sample1);
exp2.addSample(sample2);
ExperimentSampleMetadata exp1Sample1MD =
exp1.getExperimentSample(sample1).getMetadata();
ExperimentSampleMetadata exp1Sample2MD =
exp1.getExperimentSample(sample2).getMetadata();
ExperimentSampleMetadata exp2Sample1MD =
exp2.getExperimentSample(sample1).getMetadata();
ExperimentSampleMetadata exp2Sample2MD =
exp2.getExperimentSample(sample2).getMetadata();
exp1Sample1MD.set("type", "WT");
exp1Sample2MD.set("type", "KO");
exp1Sample1MD.set("day", "1");
exp1Sample2MD.set("day", "2");
exp2Sample1MD.setCondition("non-treated");
exp2Sample2MD.setCondition("treated");
// Write design
File outFile = File.createTempFile("design-", ".txt");
new Eoulsan2DesignWriter(outFile).write(design);
// Read the design generated
Design design2 = new Eoulsan2DesignReader(outFile).read();
design2.setName(design.getName());
// Test if equal
assertEquals(design, design2);
outFile.delete();
}
@Test
public void test2() throws IOException {
// Read a design file
final InputStream is =
this.getClass().getResourceAsStream("/design-v2.txt");
Design design = new Eoulsan2DesignReader(is).read();
// Rewrite the the read design
File outFile = File.createTempFile("design-", ".txt");
new Eoulsan2DesignWriter(outFile).write(design);
// Read the design generated
Design design2 = new Eoulsan2DesignReader(outFile).read();
design2.setName(design.getName());
// Test if equal
assertEquals(design, design2);
outFile.delete();
}
}