Skip to content
Snippets Groups Projects
Commit 6e75a6a2 authored by tjc's avatar tjc
Browse files

use genotype phred likelihood to determine if heterozygous

git-svn-id: svn+ssh://svn.internal.sanger.ac.uk/repos/svn/pathsoft/artemis/trunk@15535 ee4ac58c-ac51-4696-9907-e4b3aa274f04
parent d5778f28
No related branches found
No related tags found
No related merge requests found
......@@ -117,11 +117,26 @@ class VCFRecord
return null;
}
protected String getFormatValue(String key)
{
String fmts[] = getFormat().split(":");
for(int i=0; i<fmts.length; i++)
{
if(fmts[i].equals(key))
{
String vals[] = getSampleDataString().split(":");
if(vals.length == fmts.length)
return vals[i];
}
}
return null;
}
/**
* Return the sample data as a tab-delimited string
* @return
*/
private String getSampleDataString()
protected String getSampleDataString()
{
if(data == null)
return "";
......@@ -470,6 +485,14 @@ class VCFRecord
{
if(VCFRecord.MULTI_ALLELE_PATTERN.matcher(alt).matches())
return true;
// look at probability of each genotype (PL) information as well
String pl;
if((pl = getFormatValue("PL")) != null &&
pl.split(",").length == 3 &&
pl.split(",")[1].equals("0")) // middle value is zero, e.g.
return true;
return false;
}
......
......@@ -128,7 +128,7 @@ public class VCFview extends JPanel
private int seqLength;
private EntryGroup entryGroup;
private String chr;
private String mouseOverVCFline;
private VCFRecord mouseVCF;
private int mouseOverIndex = -1;
private boolean vcf_v4 = false;
......@@ -695,17 +695,18 @@ public class VCFview extends JPanel
public String getToolTipText()
{
if(mouseOverVCFline == null)
if(mouseVCF == null)
return null;
String parts[] = tabPattern.split(mouseOverVCFline, 0);
String msg =
"Seq: "+parts[0]+"\n";
msg += "Pos: "+parts[1]+"\n";
msg += "ID: "+parts[2]+"\n";
msg += "Variant: "+parts[3]+" -> "+parts[4]+"\n";
msg += "Qual: "+parts[5]+"\n";
"Seq: "+mouseVCF.getChrom()+"\n";
msg += "Pos: "+mouseVCF.getPos()+"\n";
msg += "ID: "+mouseVCF.getID()+"\n";
msg += "Variant: "+mouseVCF.getRef()+" -> "+mouseVCF.getAlt().toString()+"\n";
msg += "Qual: "+mouseVCF.getQuality()+"\n";
String pl;
if((pl = mouseVCF.getFormatValue("PL")) != null && pl.split(",").length > 1)
msg += "PL: "+pl+"\n";
return msg;
}
......@@ -755,7 +756,7 @@ public class VCFview extends JPanel
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
mouseOverVCFline = null;
mouseVCF = null;
float pixPerBase = getPixPerBaseByWidth();
int start = getBaseAtStartOfView();
......@@ -1013,19 +1014,16 @@ public class VCFview extends JPanel
g.setColor(Color.gray);
else if(record.getAlt().isInsertion(vcf_v4))
g.setColor(Color.yellow);
else if(record.getAlt().length() == 1 && record.getRef().length() == 1)
g.setColor(getColourForSNP(record, features, basePosition));
else
{
if(record.getAlt().isMultiAllele())
else if(record.getAlt().isMultiAllele())
{
g.setColor(Color.orange);
g.fillArc(pos[0]-3, pos[1]-LINE_HEIGHT-3, 6, 6, 0, 360);
}
else if(record.getAlt().length() == 1 && record.getRef().length() == 1)
g.setColor(getColourForSNP(record, features, basePosition));
else
g.setColor(Color.pink);
}
}
if(markAsNewStop)
g.fillArc(pos[0]-3, pos[1]-(LINE_HEIGHT/2)-3, 6, 6, 0, 360);
......@@ -1081,7 +1079,7 @@ public class VCFview extends JPanel
else if(variant.equals("T"))
return Color.black;
else
return Color.magenta;
return Color.magenta; // non-variant
}
/**
......@@ -1229,7 +1227,7 @@ public class VCFview extends JPanel
mousePoint.getX() > pos[0]-3 &&
mousePoint.getX() < pos[0]+3)
{
mouseOverVCFline = record.toString();
mouseVCF = record;
mouseOverIndex = i;
}
}
......@@ -1477,34 +1475,33 @@ public class VCFview extends JPanel
if(showDetails != null)
popup.remove(showDetails);
if( mouseOverVCFline != null )
if( mouseVCF != null )
{
final String parts[] = tabPattern.split(mouseOverVCFline, 0);
showDetails = new JMenuItem("Show details of : "+parts[0]+":"+parts[1]+" "+parts[2]);
showDetails = new JMenuItem("Show details of : "+
mouseVCF.getChrom()+":"+mouseVCF.getPos()+" "+mouseVCF.getID());
showDetails.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
FileViewer viewDetail = new FileViewer(parts[0]+":"+parts[1]+" "+parts[2], true, false);
FileViewer viewDetail = new FileViewer(
mouseVCF.getChrom()+":"+mouseVCF.getPos()+" "+mouseVCF.getID(), true, false);
viewDetail.appendString(header[mouseOverIndex]+"\n", Level.INFO);
viewDetail.appendString("Seq : "+parts[0]+"\n", Level.DEBUG);
viewDetail.appendString("Pos : "+parts[1]+"\n", Level.DEBUG);
viewDetail.appendString("ID : "+parts[2]+"\n", Level.DEBUG);
viewDetail.appendString("Ref : "+parts[3]+"\n", Level.DEBUG);
viewDetail.appendString("Alt : "+parts[4]+"\n", Level.DEBUG);
viewDetail.appendString("Qual : "+parts[5]+"\n", Level.DEBUG);
viewDetail.appendString("Filter: "+parts[6]+"\n", Level.DEBUG);
viewDetail.appendString("Info : "+parts[7]+"\n", Level.DEBUG);
viewDetail.appendString("Seq : "+mouseVCF.getChrom()+"\n", Level.DEBUG);
viewDetail.appendString("Pos : "+mouseVCF.getPos()+"\n", Level.DEBUG);
viewDetail.appendString("ID : "+mouseVCF.getID()+"\n", Level.DEBUG);
viewDetail.appendString("Ref : "+mouseVCF.getRef()+"\n", Level.DEBUG);
viewDetail.appendString("Alt : "+mouseVCF.getAlt().toString()+"\n", Level.DEBUG);
viewDetail.appendString("Qual : "+mouseVCF.getQuality()+"\n", Level.DEBUG);
viewDetail.appendString("Filter: "+mouseVCF.getFilter()+"\n", Level.DEBUG);
viewDetail.appendString("Info : "+mouseVCF.getInfo()+"\n", Level.DEBUG);
if(parts.length > 8)
if(mouseVCF.getFormat() != null)
{
viewDetail.appendString("\nGenotype information:\n", Level.INFO);
viewDetail.appendString("Format: "+parts[8]+"\n", Level.DEBUG);
for(int i=9; i<parts.length; i++)
viewDetail.appendString(parts[i]+"\n", Level.DEBUG);
viewDetail.appendString("Format: "+mouseVCF.getFormat()+"\n", Level.DEBUG);
viewDetail.appendString(mouseVCF.getSampleDataString()+"\n", Level.DEBUG);
}
viewDetail.getTextPane().setCaretPosition(0);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment