package org.molgenis.gavin.job.input.model;
import com.google.api.client.repackaged.com.google.common.base.Joiner;
import com.google.auto.value.AutoValue;
import com.google.common.collect.ImmutableMap;
import org.molgenis.data.annotation.core.entity.impl.CaddAnnotator;
import javax.annotation.Nullable;
import static org.molgenis.gavin.job.input.model.LineType.CADD;
@AutoValue
public abstract class CaddVariant implements Variant
{
public abstract String getChrom();
public abstract long getPos();
public abstract String getRef();
public abstract String getAlt();
@Nullable
public abstract Double getRawScore();
@Nullable
public abstract Double getPhred();
public String getInfo()
{
ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
if (getRawScore() != null)
{
builder.put(CaddAnnotator.CADD_ABS, getRawScore().toString());
}
if (getPhred() != null)
{
builder.put(CaddAnnotator.CADD_SCALED, getPhred().toString());
}
return Joiner.on(";").withKeyValueSeparator("=").join(builder.build());
// return "CADD=" + getRawScore() + ";CADD_SCALED=" + getPhred();
}
@Override
public LineType getLineType()
{
return CADD;
}
public static CaddVariant create(String chrom, long pos, String ref, String alt, Double rawScore, Double phred)
{
return new AutoValue_CaddVariant(chrom, pos, ref, alt, rawScore, phred);
}
@Override
public String toString()
{
return Joiner.on('\t').join(getChrom(), getPos(), '.', getRef(), getAlt(), '.', '.', getInfo());
}
}