diff --git a/uk/ac/sanger/artemis/components/variant/HeaderLine.java b/uk/ac/sanger/artemis/components/variant/HeaderLine.java index 078015679c534bedc325b3cd4635578996b8b9ea..9fd02a5ee89fa02896cfb4ce9f3988491fd6d354 100644 --- a/uk/ac/sanger/artemis/components/variant/HeaderLine.java +++ b/uk/ac/sanger/artemis/components/variant/HeaderLine.java @@ -41,7 +41,7 @@ public class HeaderLine "INFO", "FORMAT", "FILTER", "FILTER_QUAL", "FILTER_NV_FLAG", "FILTER_OVERLAP_FLAG", "FILTER_MULTALL_FLAG", "FILTER_INS", "FILTER_DEL", - "FILTER_NONSYN", "FILTER_SYN", "FILTER_MANUAL"}; + "FILTER_NONSYN", "FILTER_SYN", "FILTER_MANUAL", "FILTER_HOMOZYG"}; protected static final int INFO_LINE = 0; protected static final int FORMAT_LINE = 1; protected static final int FILTER_LINE = 2; @@ -54,6 +54,7 @@ public class HeaderLine protected static final int FILTER_NONSYN = 9; protected static final int FILTER_SYN = 10; protected static final int FILTER_MANUAL = 11; + protected static final int FILTER_HOMOZYG = 12; public HeaderLine(final String origLine, String headerTypeStr, Hashtable<String, String> lineHash) { diff --git a/uk/ac/sanger/artemis/components/variant/VCFFilter.java b/uk/ac/sanger/artemis/components/variant/VCFFilter.java index bf7a6b00f7480b3237f125c5ded407d667a887ac..e455abe9523e4665f2e27139f2822bdd63abc9c6 100644 --- a/uk/ac/sanger/artemis/components/variant/VCFFilter.java +++ b/uk/ac/sanger/artemis/components/variant/VCFFilter.java @@ -66,6 +66,8 @@ public class VCFFilter extends JFrame private static float MAX_CI95 = 10; private static Pattern COMMA_PATTERN = Pattern.compile(",");*/ private static Pattern SEMICOLON_PATTERN = Pattern.compile(";"); + + private static Pattern HOMOZYGOUS_PATTERN = Pattern.compile("^0(/0)*+|(\\|0)*+$"); private FilteredPanel filterPanel; protected static boolean manualFilter = false; // show manual filtering @@ -299,7 +301,7 @@ public class VCFFilter extends JFrame else { // - createPanel(propPanel, c, info, "INFO FIELDS:"); + createPanel(vcfView, propPanel, c, info, "INFO FIELDS:"); } //// @@ -311,8 +313,8 @@ public class VCFFilter extends JFrame formatPanel.setBorder(BorderFactory.createLineBorder(Color.gray)); tabPane.addTab("Genotype", formatPanel); - createPanel(formatPanel, c, format, "GENOTYPE FIELDS:"); - + createPanel(vcfView, formatPanel, c, format, "GENOTYPE FIELDS:"); + // c.gridy = c.gridy+1; c.gridx = 0; @@ -375,7 +377,8 @@ public class VCFFilter extends JFrame filterPanel.updateFilters(); } - private void createPanel(final JPanel panel, + private void createPanel(final VCFview vcfView, + final JPanel panel, final GridBagConstraints c, final List<HeaderLine> headerLineList, final String name) @@ -479,7 +482,22 @@ public class VCFFilter extends JFrame } } } - + + // Filter out homozygous reference samples, GT - 0/0 + final JCheckBox showHomozygousMenu = new JCheckBox("Homozygous sample (GT)", vcfView.showHomozygous); + c.gridx = 0; + c.gridy += 1; + c.gridwidth = 2; + panel.add(showHomozygousMenu, c); + showHomozygousMenu.addActionListener(new ActionListener(){ + public void actionPerformed(ActionEvent e) + { + setFlagFilter(HeaderLine.FILTER_HOMOZYG, "FILTER_HOMOZYG", "Homozygous", showHomozygousMenu.isSelected()); + vcfView.showHomozygous = showHomozygousMenu.isSelected(); + vcfView.repaint(); + } + }); + c.gridwidth = 1; c.gridx = 100; c.weightx = 200.d; @@ -647,10 +665,18 @@ public class VCFFilter extends JFrame return false; break; - case HeaderLine.FILTER_MULTALL_FLAG: // FILTER by quality score + case HeaderLine.FILTER_MULTALL_FLAG: if( record.getAlt().isMultiAllele(sampleIndex) ) return false; break; + case HeaderLine.FILTER_HOMOZYG: + final String smpls[] = record.getFormatValues("GT"); + // look at a specific sample + if(smpls != null && + sampleIndex > -1 && smpls[sampleIndex] != null && + HOMOZYGOUS_PATTERN.matcher(smpls[sampleIndex]).matches()) + return false; + break; case HeaderLine.FILTER_NONSYN: if( !record.getAlt().isDeletion(vcfReader.isVcf_v4()) && !record.getAlt().isInsertion(vcfReader.isVcf_v4()) && diff --git a/uk/ac/sanger/artemis/components/variant/VCFview.java b/uk/ac/sanger/artemis/components/variant/VCFview.java index 551bc1916ba20c609869878c25cfa2eccdcdb253..7a7d172df16e091f9986dc9580d5a0f20b9a7a31 100644 --- a/uk/ac/sanger/artemis/components/variant/VCFview.java +++ b/uk/ac/sanger/artemis/components/variant/VCFview.java @@ -165,6 +165,7 @@ public class VCFview extends JPanel protected boolean showDeletions = true; protected boolean showInsertions = true; protected boolean showMultiAlleles = true; + protected boolean showHomozygous = true; // show variants that do not overlap CDS protected boolean showNonOverlappings = true; protected boolean showNonVariants = false;