Skip to content

Commit

Permalink
Add subRVIS gene demain / exon filters - issue 2560
Browse files Browse the repository at this point in the history
  • Loading branch information
nickzren committed Aug 2, 2017
1 parent 198a06d commit 13835ef
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 9 deletions.
35 changes: 26 additions & 9 deletions src/main/java/function/annotation/base/AnnotatedVariant.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package function.annotation.base;

import function.external.bis.BisOutput;
import function.external.denovo.DenovoDB;
import function.external.denovo.DenovoDBCommand;
import function.external.evs.Evs;
Expand Down Expand Up @@ -63,6 +64,7 @@ public class AnnotatedVariant extends Variant {
private KnownVarOutput knownVarOutput;
private String rvisStr;
private SubRvisOutput subRvisOutput;
private BisOutput bisOutput;
private Genomes genomes;
private String mgiStr;
private DenovoDB denovoDB;
Expand Down Expand Up @@ -161,10 +163,6 @@ public void initExternalData() {
rvisStr = RvisManager.getLine(getGeneName());
}

if (SubRvisCommand.isIncludeSubRvis) {
subRvisOutput = new SubRvisOutput(getGeneName(), getChrStr(), getStartPosition());
}

if (MgiCommand.isIncludeMgi) {
mgiStr = MgiManager.getLine(getGeneName());
}
Expand All @@ -176,7 +174,8 @@ public void initExternalData() {

public boolean isValid() {
return isValid
& isTrapValid();
&& isTrapValid()
&& isSubRVISValid();
}

private boolean isTrapValid() {
Expand All @@ -187,17 +186,35 @@ private boolean isTrapValid() {
trapScore = TrapManager.getScore(chrStr, getStartPosition(), allele, geneName);
}

if (effect.equals("SYNONYMOUS_CODING")
|| effect.equals("INTRON_EXON_BOUNDARY")
|| effect.equals("INTRON")) {
// filter only apply to SYNONYMOUS_CODING, INTRON_EXON_BOUNDARY and INTRONIC variants
if (effect.equals("missense_variant")
|| effect.equals("intron_variant")) {
// filter only apply to missense_variant and intron_variant variants
return TrapCommand.isTrapScoreValid(trapScore);
}
}

return true;
}

// init sub rvis score base on most damaging gene and applied filter
private boolean isSubRVISValid() {
if (SubRvisCommand.isIncludeSubRvis) {
subRvisOutput = new SubRvisOutput(getGeneName(), getChrStr(), getStartPosition());

// sub rvis filters will only apply missense variants
if (effect.startsWith("missense_variant")) {
return SubRvisCommand.isSubRVISDomainScoreValid(subRvisOutput.getDomainScore())
&& SubRvisCommand.isSubRVISDomainOEratioValid(subRvisOutput.getDomainOEratio())
&& SubRvisCommand.isSubRVISExonScoreValid(subRvisOutput.getExonScore())
&& SubRvisCommand.isSubRVISExonOEratioValid(subRvisOutput.getExonOEratio());
} else {
return true;
}
}

return true;
}

public void getAnnotationData(StringBuilder sb) {
sb.append(getStableId()).append(",");
sb.append(hasCCDS).append(",");
Expand Down
44 changes: 44 additions & 0 deletions src/main/java/function/external/subrvis/SubRvisCommand.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,54 @@
package function.external.subrvis;

import global.Data;

/**
*
* @author nick
*/
public class SubRvisCommand {

public static boolean isListSubRvis = false;
public static boolean isIncludeSubRvis = false;

public static float subRVISDomainScorePercentile = Data.NO_FILTER;
public static float subRVISDomainOEratioPercentile = Data.NO_FILTER;
public static float subRVISExonScorePercentile = Data.NO_FILTER;
public static float subRVISExonOEratioPercentile = Data.NO_FILTER;

public static boolean isSubRVISDomainScoreValid(float value) {
if (subRVISDomainScorePercentile == Data.NO_FILTER) {
return true;
}

return value <= subRVISDomainScorePercentile
|| value == Data.FLOAT_NA;
}

public static boolean isSubRVISDomainOEratioValid(float value) {
if (subRVISDomainOEratioPercentile == Data.NO_FILTER) {
return true;
}

return value <= subRVISDomainOEratioPercentile
|| value == Data.FLOAT_NA;
}

public static boolean isSubRVISExonScoreValid(float value) {
if (subRVISExonScorePercentile == Data.NO_FILTER) {
return true;
}

return value <= subRVISExonScorePercentile
|| value == Data.FLOAT_NA;
}

public static boolean isSubRVISExonOEratioValid(float value) {
if (subRVISExonOEratioPercentile == Data.NO_FILTER) {
return true;
}

return value <= subRVISExonOEratioPercentile
|| value == Data.FLOAT_NA;
}
}
16 changes: 16 additions & 0 deletions src/main/java/function/external/subrvis/SubRvisOutput.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,22 @@ public SubRvisOutput(String geneName, String chr, int pos) {
}
}

public float getDomainScore() {
return domainScore;
}

public float getDomainOEratio() {
return domainOEratio;
}

public float getExonScore() {
return exonScore;
}

public float getExonOEratio() {
return exonOEratio;
}

@Override
public String toString() {
StringBuilder sb = new StringBuilder();
Expand Down
20 changes: 20 additions & 0 deletions src/main/java/function/variant/base/VariantLevelFilterCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,26 @@ public static void initOptions(Iterator<CommandOption> iterator)
GenomesCommand.maxGenomesAF = getValidFloat(option);
GenomesCommand.isInclude1000Genomes = true;
break;
case "--sub-rvis-domain-score-percentile":
checkValueValid(100, 0, option);
SubRvisCommand.subRVISDomainScorePercentile = getValidFloat(option);
SubRvisCommand.isIncludeSubRvis = true;
break;
case "--sub-rvis-domain-oeratio-percentile":
checkValueValid(100, 0, option);
SubRvisCommand.subRVISDomainOEratioPercentile = getValidFloat(option);
SubRvisCommand.isIncludeSubRvis = true;
break;
case "--sub-rvis-exon-score-percentile":
checkValueValid(100, 0, option);
SubRvisCommand.subRVISExonScorePercentile = getValidFloat(option);
SubRvisCommand.isIncludeSubRvis = true;
break;
case "--sub-rvis-exon-oeratio-percentile":
checkValueValid(100, 0, option);
SubRvisCommand.subRVISExonOEratioPercentile = getValidFloat(option);
SubRvisCommand.isIncludeSubRvis = true;
break;
case "--include-evs":
EvsCommand.isIncludeEvs = true;
break;
Expand Down

0 comments on commit 13835ef

Please sign in to comment.