/*
* Copyright 2015-2016 OpenCB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.opencb.opencga.storage.hadoop.variant.index;
import org.junit.Test;
import org.opencb.biodata.models.variant.StudyEntry;
import org.opencb.biodata.models.variant.Variant;
import org.opencb.biodata.tools.variant.merge.VariantMerger;
import org.opencb.opencga.storage.hadoop.variant.models.protobuf.SampleList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import static org.junit.Assert.*;
/**
* Created on 07/03/16
*
* @author Jacobo Coll <jacobo167@gmail.com>
*/
public class VariantTableStudyRowTest {
@Test
public void testCreateFromVariant() throws Exception {
Variant variant = new Variant("1:1000:A:T");
Integer studyId = 1;
StudyEntry studyEntry = new StudyEntry(studyId.toString(), Collections.emptyList(), Arrays.asList("GT", VariantMerger.VCF_FILTER));
studyEntry.addSampleData("s1", Arrays.asList("0/1", "PASS"));
studyEntry.addSampleData("s2", Arrays.asList("0/0", ""));
studyEntry.addSampleData("s3", Arrays.asList("1/1", "-"));
studyEntry.addSampleData("s4", Arrays.asList("0/0", "High"));
studyEntry.addSampleData("s5", Arrays.asList("0/0", "Low"));
studyEntry.addSampleData("s6", Arrays.asList(".", "."));
variant.addStudyEntry(studyEntry);
VariantTableStudyRow row = new VariantTableStudyRow(variant, studyId, studyEntry.getSamplesPosition());
assertEquals("1:1000:A:T", row.toString());
// Check GT
assertEquals(3, row.getHomRefCount().intValue());
assertEquals(5, row.getCallCount().intValue());
assertEquals(Collections.singleton(0), row.getSampleIds(VariantTableStudyRow.HET_REF));
assertEquals(Collections.singleton(2), row.getSampleIds(VariantTableStudyRow.HOM_VAR));
assertEquals(Collections.singleton(5), row.getSampleIds(VariantTableStudyRow.NOCALL));
// Check FILTER
assertEquals(1, row.getPassCount().intValue());
assertEquals(3, row.getComplexFilter().getFilterNonPass().size());
int otherFilters = row.getComplexFilter().getFilterNonPass().values()
.stream()
.map(SampleList::getSampleIdsCount)
.reduce((i1, i2) -> i1 + i2).orElse(0);
assertEquals(5, otherFilters);
assertEquals(6, otherFilters + row.getPassCount());
System.out.println("row = " + row.toSummaryString());
System.out.println("row = " + row);
}
}