/*
* See the NOTICE file distributed with this work for additional
* information regarding copyright ownership.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see http://www.gnu.org/licenses/
*/
package org.phenotips.variantStoreIntegration;
import org.phenotips.data.similarity.internal.AbstractVariant;
import org.phenotips.variantstore.shared.GACallInfoFields;
import org.phenotips.variantstore.shared.GAVariantInfoFields;
import org.phenotips.variantstore.shared.VariantUtils;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.ga4gh.GACall;
import org.ga4gh.GAVariant;
/**
* A variant from the variant store. Annotated by Exomiser.
*
* @version $Id: e14166ff9883a99455784b1d005e8e4b653d2b01 $
*/
public class VariantStoreVariant extends AbstractVariant
{
/**
* Create a {@link Variant} from a {@link GAVariant} returned by a {@link
* org.phenotips.variantstore.VariantStoreInterface}.
*
* @param gaVariant a {@link GAVariant}
* @param totIndividuals number of individuals stored in the variant store
*/
public VariantStoreVariant(GAVariant gaVariant, Integer totIndividuals) {
setChrom(gaVariant.getReferenceName());
setPosition((int) (gaVariant.getStart() + 1));
GACall call = gaVariant.getCalls().get(0);
List<Integer> genotype = call.getGenotype();
setGenotype(gaVariant.getReferenceBases(),
StringUtils.join(gaVariant.getAlternateBases(), ','),
StringUtils.join(genotype, '/'));
setEffect(VariantUtils.getInfo(gaVariant, GAVariantInfoFields.GENE_EFFECT));
String value = VariantUtils.getInfo(call, GACallInfoFields.EXOMISER_VARIANT_SCORE);
if (value == null || "null".equals(value)) {
setScore(null);
} else {
setScore(Double.valueOf(value));
}
setAnnotation("geneScore", VariantUtils.getInfo(call, GACallInfoFields.EXOMISER_GENE_COMBINED_SCORE));
setAnnotation("geneSymbol", VariantUtils.getInfo(gaVariant, GAVariantInfoFields.GENE));
setAnnotation("hgvs", VariantUtils.getInfo(gaVariant, GAVariantInfoFields.GENE_HGVS));
setAnnotation("exacAF", VariantUtils.getInfo(gaVariant, GAVariantInfoFields.EXAC_AF));
setAnnotation("gtHet", VariantUtils.getInfo(gaVariant, GAVariantInfoFields.GT_HET));
setAnnotation("gtHom", VariantUtils.getInfo(gaVariant, GAVariantInfoFields.GT_HOM));
if (totIndividuals != null) {
value = VariantUtils.getInfo(gaVariant, GAVariantInfoFields.AC_TOT);
Double pcAF = Double.valueOf(value) / (totIndividuals * 2);
setAnnotation("pcAF", pcAF.toString());
}
}
}