
org.snpeff.vcf.VcfConsequence Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of SnpEff Show documentation
Show all versions of SnpEff Show documentation
Variant annotation and effect prediction package.
The newest version!
package org.snpeff.vcf;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.snpeff.util.Gpr;
/**
* An 'CSQ' entry in a vcf line ('Consequence' from ENSEMBL's VEP)
*
* Format:
* ##INFO=
*
* @author pablocingolani
*/
public class VcfConsequence {
public static final String VCF_INFO_CSQ_NAME = "CSQ";
VcfConsequenceHeader vcfConsequenceHeader;
Map name2value;
public static List parse(VcfConsequenceHeader vcfConsequenceHeader, String csqString) {
List list = new ArrayList();
// Sanity check
if (csqString == null || csqString.isEmpty()) return list;
// Remove name, keep value
int idx = csqString.indexOf('=');
if (idx >= 0) {
if (csqString.startsWith("CSQ=")) throw new RuntimeException("String does not start with 'CSQ=', this is not a CSQ field: " + csqString);
csqString = csqString.substring(idx);
}
// Add all CSQ entries
for (String csq : csqString.split(","))
list.add(new VcfConsequence(vcfConsequenceHeader, csq));
return list;
}
public static List parse(VcfConsequenceHeader vcfConsequenceHeader, VcfEntry ve) {
return parse(vcfConsequenceHeader, ve.getInfo(VCF_INFO_CSQ_NAME));
}
public VcfConsequence(VcfConsequenceHeader vcfConsequenceHeader, String csqString) {
this.vcfConsequenceHeader = vcfConsequenceHeader;
parseSingle(csqString);
}
public String get(String fieldName) {
return name2value.get(fieldName);
}
public String getConsequence() {
return get("Consequence");
}
public String getFeature() {
return get("Feature");
}
public String getHgvsDna() {
return get("HGVSc");
}
public String getHgvsProt() {
return get("HGVSp");
}
/**
* Parse a single entry in a CSQ (usually CSQs have multiple entries)
*/
void parseSingle(String csqString) {
try {
String fieldNames[] = vcfConsequenceHeader.getFieldNames();
name2value = new HashMap<>();
String fieldValues[] = csqString.split("\\|", -1);
for (int i = 0; i < fieldValues.length; i++)
name2value.put(fieldNames[i], fieldValues[i]);
} catch (Exception e) {
Gpr.debug("Error parsing\n\tCSQ string: " + csqString);
throw new RuntimeException(e);
}
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
String fieldNames[] = vcfConsequenceHeader.getFieldNames();
for (int i = 0; i < fieldNames.length; i++) {
if (sb.length() > 0) sb.append(", ");
sb.append(fieldNames[i] + ": " + get(fieldNames[i]));
}
return sb.toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy