From ed710c16e12e539e00e37fd290f8c2db26cbecfb Mon Sep 17 00:00:00 2001 From: Adam David Scott Date: Mon, 11 Sep 2017 18:55:01 -0500 Subject: [PATCH] added PSC1 and PPC2. adjusted PMC1 category. adjusted PS1 and BSC1 scores. fixed VEP defaults. fixed frequency options. --- bin/charger | 79 +++++++++++++++++++------------ charger/charger.py | 97 ++++++++++++++++++++++----------------- charger/chargervariant.py | 30 ++++++------ setup.py | 6 +-- 4 files changed, 120 insertions(+), 92 deletions(-) diff --git a/bin/charger b/bin/charger index 0b0bfff..d34d50f 100755 --- a/bin/charger +++ b/bin/charger @@ -1,15 +1,16 @@ #!/bin/python # CharGer - Characterization of Germline variants # author: Adam D Scott (adamscott@wustl.edu) & Kuan-lin Huang (khuang@genome.wustl.edu) -# version: v0.2.1 - 2017*05 +# version: v0.3.0 - 2017*09 import sys import getopt from charger import charger import time +import argparse def parseArgs( argv ): - helpText = "\nCharGer - v0.2.1\n\n" + helpText = "\nCharGer - v0.3.0\n\n" helpText += "Usage: " helpText += "charger [options]\n\n" helpText += "Accepted input data files:\n" @@ -38,7 +39,10 @@ def parseArgs( argv ): helpText += " -a assumed de novo file, standard .maf\n" helpText += " -c co-segregation file, standard .maf\n" helpText += " -H HotSpot3D clusters file, .clusters\n" - helpText += " -r recurrence threshold (default = 2)\n" + helpText += "Thresholds:\n" + helpText += " --recurrence-threshold HotSpot3D recurrence threshold (default = 2)\n" + helpText += " --rare-threshold Allele frequency threshold for rare (default = 0.0005 (0.05%)):\n" + helpText += " --common-threshold Allele frequency threshold for common (default = 0.005 (0.5%)):\n" helpText += "Local VEP (works with .vcf input only; suppresses ReST too):\n" helpText += " --vep-script Path to VEP\n" helpText += " --vep-config config-file for VEP\n" @@ -57,9 +61,9 @@ def parseArgs( argv ): helpText += " --mac-clinvar-tsv ClinVar from MacArthur lab (clinvar_alleles.tsv.gz)\n" #helpText += " --mac-clinvar-vcf ClinVar from MacArthur lab (clinvar_alleles.vcf.gz)\n" helpText += "Filters:\n" - helpText += " --rare Allele frequency threshold for rare/common (default = 1, process variant with any frequency):\n" - helpText += " --vcf-any-filter Allow variants that do not pass all filters in .vcf input (flag)\n" - helpText += " --mutation-types Comma delimited list (no spaces) of types to allow\n" + helpText += " --frequency-filter Keep if allele frequency lower (default = 1, process variant with any frequency):\n" + helpText += " --vcf-any-filter Keep variants that do not pass all filters in .vcf input (flag)\n" + helpText += " --mutation-types Keep types, as a comma delimited list (no spaces)\n" helpText += "ReST batch sizes:\n" helpText += " -v VEP (#variants, default/max allowed = 150)\n" helpText += " -b ClinVar summary (#variants, default/max allowed = 500)\n" @@ -76,7 +80,6 @@ def parseArgs( argv ): helpText += " -C codon\n" helpText += " -p peptide change\n" helpText += " -L variant classification\n" - helpText += " -F allele frequency\n" helpText += "\n" helpText += " -h this message\n" helpText += "\n" @@ -117,27 +120,28 @@ def parseArgs( argv ): clustersFile = None pathogenicVariantsFile = None annotateInput = "" - vepScript = "" - vepConfig = "" - #vepDir = None + vepScript = None + vepConfig = None vepCache = None vepOutput = None - ensemblRelease = "" - vepVersion = "" - grch = "" - fork = "" + ensemblRelease = str( 75 ) + vepVersion = str( 87 ) + grch = str( 37 ) + fork = str( 1 ) referenceFasta = None exacVCF = None macClinVarVCF = None macClinVarTSV = None doURLTest = True - thresholdAF = 1 + rareAF = 0.0005 #from germline studies + commonAF = 0.05 #from ACMG suggestion + keepAF = 1 anyFilter = False mutationTypes = [] try: #haven't used ijquy - charCommands = "DEtlxhwOkX:s:A:R:S:P:M:G:m:f:T:o:v:b:B:p:C:F:g:d:e:n:a:c:r:H:z:L:" + charCommands = "DEtlxhwOkX:s:A:R:S:P:M:G:m:f:T:o:v:b:B:p:C:g:d:e:n:a:c:H:z:L:" opts, args = getopt.getopt( argv , charCommands , \ ["maf=" , "vcf=" , "tsv=" , "output=" , "use-tcga" , \ "run-vep" , "run-clinvar" , "run-exac" , \ @@ -145,7 +149,9 @@ def parseArgs( argv ): "peptideChange=" , "codon=" , "alleleFrequency=" , \ "geneList=" , "diseases=" , "expression=" , \ "deNovo=" , "assumedDeNovo=" , "coSegregation=" , \ - "recurrence=" , "rare=" , "vcf-any-filter" , "mutation-types=" , \ + "rare-threshold=" , "common-threshold=" , \ + "recurrence-threshold=" , "frequency-filter=" , \ + "vcf-any-filter" , "mutation-types=" , \ "hotspot3d=" , "pathogenicVariants=" , \ "vep-script=" , "vep-config=", "vep-dir=" , "vep-cache=" , "vep-output=" , \ "ensembl-release=" , "vep-version=" , \ @@ -233,10 +239,14 @@ def parseArgs( argv ): asHTML = True elif opt in ( "-O" , "--override" ): override = True - elif opt in ( "-r" , "--recurrence" ): + elif opt in ( "-r" , "--recurrence-threshold" ): recurrenceThreshold = float( arg ) - elif opt in ( "--rare" ): - thresholdAF = float( arg ) + elif opt in ( "--rare-threshold" ): + rareAF = float( arg ) + elif opt in ( "--common-threshold" ): + commonAF = float( arg ) + elif opt in ( "--frequency-filter" ): + keepAF = float( arg ) elif opt in ( "--mutation-types" ): mutationTypes = arg.split( "," ) elif opt in ( "--vcf-any-filter" ): @@ -315,7 +325,9 @@ def parseArgs( argv ): "variantClassificationColumn" : variantClassificationColumn, \ "alleleFrequencyColumn" : alleleFrequencyColumn, \ "recurrenceThreshold" : recurrenceThreshold , \ - "thresholdAF" : thresholdAF , \ + "rareAF" : rareAF , \ + "commonAF" : commonAF , \ + "keepAF" : keepAF , \ "anyFilter" : anyFilter , \ "mutationTypes" : mutationTypes , \ "clustersFile" : clustersFile , \ @@ -378,7 +390,9 @@ def main( argv ): asHTML = values["html"] override = values["override"] recurrenceThreshold = values["recurrenceThreshold"] - thresholdAF = values["thresholdAF"] + rareAF = values["rareAF"] + commonAF = values["commonAF"] + keepAF = values["keepAF"] anyFilter = values["anyFilter"] mutationTypes = values["mutationTypes"] clustersFile = values["clustersFile"] @@ -452,7 +466,9 @@ def main( argv ): peptideChange=peptideChangeColumn , \ variantClassification=variantClassificationColumn , \ alleleFrequency=alleleFrequencyColumn , \ - thresholdAF = thresholdAF , \ + rareAF = rareAF , \ + commonAF = commonAF , \ + keepAF = keepAF , \ anyFilter = anyFilter , \ mutationTypes = mutationTypes , \ ) @@ -495,7 +511,9 @@ def main( argv ): exacVCF=exacVCF , \ macClinVarTSV=macClinVarTSV , \ macClinVarVCF=macClinVarVCF , \ - thresholdAF = thresholdAF , \ + rareAF = rareAF , \ + commonAF = commonAF , \ + keepAF = keepAF , \ anyFilter = anyFilter , \ mutationTypes = mutationTypes , \ #timeout=(20,20) , \ @@ -503,8 +521,6 @@ def main( argv ): t3 = time.time() - rareThreshold = 0.0005 #from germline studies - commonThreshold = 0.05 #from ACMG suggestion minimumEvidence = 2 CharGer.PVS1( ) @@ -513,7 +529,7 @@ def main( argv ): CharGer.PS3( ) CharGer.PS4( ) CharGer.PM1( recurrenceThreshold , hotspot3d=clustersFile ) - CharGer.PM2( rareThreshold ) + CharGer.PM2( rareAF ) CharGer.PM3( ) CharGer.PM4( ) CharGer.PM5( ) @@ -524,7 +540,7 @@ def main( argv ): CharGer.PP4( ) CharGer.PP5( ) - CharGer.BA1( commonThreshold ) + CharGer.BA1( commonAF ) CharGer.BS1( ) CharGer.BS2( ) CharGer.BS3( ) @@ -537,10 +553,15 @@ def main( argv ): CharGer.BP6( ) CharGer.BP7( ) + CharGer.PSC1( ) + CharGer.PMC1( ) + CharGer.PPC1( ) + CharGer.PPC2( ) + CharGer.BSC1( ) CharGer.BMC1( ) - print( str( rareThreshold ) + " < " + str( commonThreshold ) ) + print( str( rareAF ) + " < " + str( commonAF ) ) t4 = time.time() CharGer.classify( system="ACMG" ) diff --git a/charger/charger.py b/charger/charger.py index d2e9c70..652c188 100644 --- a/charger/charger.py +++ b/charger/charger.py @@ -38,6 +38,7 @@ class charger(object): CharGer.characterize( ) ''' allDiseases = "all" + DOMINANT = "dominant" def __init__( self , **kwargs ): self.userVariants = kwargs.get( 'variants' , [] ) self.pathogenicVariants = kwargs.get( 'pathogenic' , AV({}) ) @@ -52,7 +53,8 @@ def __init__( self , **kwargs ): self.vcfHeaderInfo = kwargs.get( 'vcfHeaderInfo' , [] ) self.vcfKeyIndex = kwargs.get( 'vcfKeyIndex' , {} ) self.mutationTypesFilter = kwargs.get( 'mutationTypes' , [] ) - self.thresholdAF = kwargs.get( 'thresholdAF' , 1 ) + self.thresholdAF = kwargs.get( 'thresholdAF' , 0.0005 ) + self.keepAF = kwargs.get( 'keepAF' , 1 ) #self.filtered = [] #### ADD key index here to access vcf info for individual variant @@ -187,7 +189,6 @@ def readVCF( self , inputFile , **kwargs ): inFile = vcf.Reader( open( inputFile , 'r' ) ) variantDict = {} appendTo = kwargs.get( "appendTo" , "" ) - self.thresholdAF = kwargs.get( "thresholdAF" , 1 ) anyFilter = kwargs.get( "anyFilter" , False ) self.mutationTypes = kwargs.get( "mutationTypes" , [] ) preVEP = [] @@ -283,7 +284,7 @@ def getAF( self , info , var , alti ): def skipIfHighAF( self , var ): if var.alleleFrequency != None: - if var.isFrequentAllele( self.thresholdAF ): + if var.isFrequentAllele( self.keepAF ): return True return False @@ -765,6 +766,8 @@ def readOtherMAF( self , inputFile, varDict ): ### Retrieve external reference data ### def getExternalData( self , **kwargs ): + self.thresholdAF = kwargs.get( "thresholdAF" , 0.0005 ) + self.keepAF = kwargs.get( "keepAF" , 1 ) t = time.time() self.getVEP( **kwargs ) self.printRunTime( "VEP" , self.runTime( t ) ) @@ -898,7 +901,7 @@ def getExAC( self , **kwargs ): exacVCF = kwargs.get( 'exacVCF' , None ) doExAC = kwargs.get( 'exac' , False ) useHarvard = kwargs.get( 'harvard' , True ) - threshold = kwargs.get( 'threshold' , 0.0005 ) + threshold = kwargs.get( 'thresholdAF' , 0.0005 ) alleleFrequencyColumn = kwargs.get( 'alleleFrequency' , None ) if doExAC: # and not alleleFrequencyColumn: sys.stdout.write( "charger::getExAC " ) @@ -909,8 +912,6 @@ def getExAC( self , **kwargs ): entries = exac.searchVCF( vcf = exacVCF , queries = exacQueries ) else: print( "through BioMine ReST" ) - common = 0 - rare = 0 totalVars = len( self.userVariants ) exac = exacapi(harvard=useHarvard) #entries by genomivVar @@ -982,14 +983,17 @@ def getVEPviaCMD( self , **kwargs ): #TODO add config file handling, would make this much more flexible and simple #TODO check ensemblRelease & grch for compatibility, GRCh37 -> [55,75] & GRCh38 -> [76,87] #print( kwargs ) + vepScript = kwargs.get( 'vepScript', "" ) #, defaultVEPScript ) + vepConfig = kwargs.get( 'vepConfig', "" ) + vcfFile = kwargs.get( 'vcf' , "" ) #defaultVEPDir = "./" #vepDir = kwargs.get( 'vepDir' , defaultVEPDir ) #vepCacheDir = kwargs.get( 'vepCache' , defaultVEPDir ) - #ensemblRelease = kwargs.get( 'ensemblRelease' , 75 ) - #vepVersion = kwargs.get( 'vepVersion' , 87 ) - #grch = kwargs.get( 'grch' , 37 ) + defaultEnsemblRelease = str( 75 ) + defaultVEPVersion = str( 87 ) + defaultGRCh = str( 37 ) + defaultForks = str( 1 ) ##defaultVEPScript = vepDir + "/variant_effect_predictor.pl" - #assembly = "GRCh" + str( grch ) ##hdir = vepVersion + "_" + assembly #hdir = ensemblRelease + "_" + assembly #fa = "Homo_sapiens." + assembly + "." + ensemblRelease + \ @@ -997,10 +1001,7 @@ def getVEPviaCMD( self , **kwargs ): #defaultFastaArray = [ vepCacheDir , "homo_sapiens" , hdir , fa ] #defaultFasta = '/'.join( defaultFastaArray ) #fasta = kwargs.get( 'referenceFasta' , defaultFasta ) - vepScript = kwargs.get( 'vepScript', "" ) #, defaultVEPScript ) - vcfFile = kwargs.get( 'vcf' , "" ) #forks = kwargs.get( 'fork' , 0 ) - vepConfig = kwargs.get( 'vepConfig', "" ) #print( defaultFasta ) #print( fasta ) defaultVEPOutput = "./" @@ -1029,9 +1030,9 @@ def getVEPviaCMD( self , **kwargs ): #defaultVEPDir = "./" #vepDir = kwargs.get( 'vepDir' , defaultVEPDir ) vepCacheDir = kwargs.get( 'vepCache', "./" ) #, defaultVEPDir ) - ensemblRelease = kwargs.get( 'ensemblRelease' , 75 ) - vepVersion = kwargs.get( 'vepVersion' , 87 ) - grch = kwargs.get( 'grch' , 37 ) + ensemblRelease = kwargs.get( 'ensemblRelease' , defaultEnsemblRelease ) + vepVersion = kwargs.get( 'vepVersion' , defaultVEPVersion ) + grch = kwargs.get( 'grch' , defaultGRCh ) #defaultVEPOutput = "./charger.vep.vcf" #defaultVEPScript = vepDir + "/variant_effect_predictor.pl" assembly = "GRCh" + str( grch ) @@ -1045,7 +1046,7 @@ def getVEPviaCMD( self , **kwargs ): #outputFile = kwargs.get( 'vepOutput' , defaultVEPOutput ) #vepScript = kwargs.get( 'vepScript', "" ) #, defaultVEPScript ) #vcfFile = kwargs.get( 'vcf' , "" ) - forks = kwargs.get( 'fork' , 0 ) + forks = kwargs.get( 'fork' , defaultForks ) #vepConfig = kwargs.get( 'vepConfig', "" ) print( defaultFasta ) print( fasta ) @@ -1160,7 +1161,7 @@ def PVS1( self , expressionThreshold = 0.2 ): print "CharGer module PVS1" print "- truncations in genes where LOF is a known mechanism of the disease" print "- require the mode of inheritance to be dominant (assuming heterzygosity) and co-occurence with reduced gene expression" - print "- run concurrently with PMC1, PM4, and PPC1 - " + print "- run concurrently with PSC1, PMC1, PM4, PPC1, and PPC2 - " self.runIndelModules() @@ -1197,11 +1198,15 @@ def PS4( self ): # not relevant in rare variants, such big effect size common va var.PS4 = True var.addSummary( "PS4(Prevalence significantly greater than controls)" ) + def PSC1( self ): + print "CharGer module PSC1" + print "Recessive truncations of susceptible genes" + +##### Moderate ##### def PMC1( self ): print "CharGer module PMC1" - print "Truncations of other, not-specificied genes" + print "Truncations of genes when no gene list provided" -##### Moderate ##### def PM1( self , recurrenceThreshold , **kwargs ): print "CharGer module PM1: Located in a mutational hot spot and/or critical and well-established \ functional domain (e.g., active site of an enzyme) without benign variation" @@ -1272,7 +1277,7 @@ def PP2( self ): if self.userGeneList: #gene, disease, mode of inheritance for var in self.userVariants: varGene = var.gene - varDisease = var.disease # no disease field in MAF; may require user input + #varDisease = var.disease # no disease field in MAF; may require user input varSample = var.sample varClass = "asdfasdf" if var.variantClass: @@ -1375,6 +1380,9 @@ def PP5( self ): def PPC1( self ): print "CharGer module PPC1" print "- protein length changes due to inframe indels or nonstop variant of other, not-specificied genes - " + def PPC2( self ): + print "CharGer module PPC2" + print "- protein length changes due to inframe indels or nonstop variant when no susceptibility genes given - " ### helper functions of evidence levels ### def runIndelModules( self ): @@ -1401,18 +1409,17 @@ def runIndelModules( self ): if self.userGeneList: if varGene in self.userGeneList: # check if in gene list varDisease = var.disease # no disease field in MAF; may require user input - if varDisease in self.userGeneList[varGene]: - if "dominant" in self.userGeneList[varGene][varDisease].lower(): - var.PVS1 = True # if call is true then check expression effect - if charger.allDiseases in self.userGeneList[varGene]: - if "dominant" in self.userGeneList[varGene][charger.allDiseases].lower(): + if varDisease in self.userGeneList[varGene] \ + or charger.allDiseases in self.userGeneList[varGene]: + if charger.DOMINANT in self.userGeneList[varGene][varDisease].lower() \ + or charger.DOMINANT in self.userGeneList[varGene][charger.allDiseases].lower(): var.PVS1 = True # if call is true then check expression effect - if self.userExpression: # consider expression data only if the user has supplied an expression matrix - varSample = var.sample - if self.userExpression[varSample][varGene] >= expressionThreshold: - var.PVS1 = False - else: - var.PMC1 = True + if self.userExpression: # consider expression data only if the user has supplied an expression matrix + varSample = var.sample + if self.userExpression[varSample][varGene] >= expressionThreshold: + var.PVS1 = False + else: + var.PSC1 = True else: # in case of no gene list, make all truncations PMC1 var.PMC1 = True @@ -1421,26 +1428,29 @@ def runIndelModules( self ): if self.userGeneList: if varGene in self.userGeneList: # check if in gene list varDisease = var.disease # no disease field in MAF; may require user input - if varDisease in self.userGeneList[varGene]: - if "dominant" in self.userGeneList[varGene][varDisease].lower(): - var.PM4 = True - if charger.allDiseases in self.userGeneList[varGene]: - if "dominant" in self.userGeneList[varGene][charger.allDiseases].lower(): + if varDisease in self.userGeneList[varGene] \ + or charger.allDiseases in self.userGeneList[varGene]: + if charger.DOMINANT in self.userGeneList[varGene][varDisease].lower() \ + or charger.DOMINANT in self.userGeneList[varGene][charger.allDiseases].lower(): var.PM4 = True - else: - var.PPC1 = True + else: + var.PPC1 = True else: - # in case of no gene list, make all inframes PMC1 - var.PPC1 = True + # in case of no gene list, make all inframes PPC1 + var.PPC2 = True if var.PVS1: var.addSummary( "PVS1(" + str( varClass ) + " in susceptible gene " + str( varGene ) + ")" ) + if var.PSC1: + var.addSummary( "PSC1(" + str( varClass ) + " recessive in gene " + str( varGene ) + ")" ) if var.PMC1: - var.addSummary( "PMC1(" + str( varClass ) + " in gene " + str( varGene ) + ")" ) + var.addSummary( "PMC1(" + str( varClass ) + " no gene list but in gene " + str( varGene ) + ")" ) if var.PM4: var.addSummary( "PM4(" + str( varClass ) + " in susceptible gene " + str( varGene ) + ")" ) if var.PPC1: - var.addSummary( "PPC1(" + str( varClass ) + " in gene " + str( varGene ) + ")" ) + var.addSummary( "PPC1(" + str( varClass ) + " recessive in gene " + str( varGene ) + ")" ) + if var.PPC1: + var.addSummary( "PPC1(" + str( varClass ) + " no gene list but in gene " + str( varGene ) + ")" ) def peptideChange( self , mod , **kwargs ): called = 0 @@ -1623,6 +1633,7 @@ def BSC1( self ): print "- same peptide change as a previously established benign variant" self.peptideChange( "BSC1" ) +#### Moderate #### def BMC1( self ): print "CharGer module BMC1" print "- different peptide change of a benign variant at the same reference peptide" diff --git a/charger/chargervariant.py b/charger/chargervariant.py index aa136bb..2455932 100644 --- a/charger/chargervariant.py +++ b/charger/chargervariant.py @@ -55,10 +55,14 @@ def __init__( self , **kwargs ): self.BP6 = kwargs.get( 'BP6' , False ) self.BP7 = kwargs.get( 'BP7' , False ) + self.PSC1 = kwargs.get( 'PSC1' , False ) self.PMC1 = kwargs.get( 'PMC1' , False ) self.PPC1 = kwargs.get( 'PPC1' , False ) + self.PPC2 = kwargs.get( 'PPC2' , False ) + self.BSC1 = kwargs.get( 'BSC1' , False ) self.BMC1 = kwargs.get( 'BMC1' , False ) + self.otherTranscripts = kwargs.get( 'otherTranscripts' , {} ) self.alleleFrequency = kwargs.get( 'alleleFrequency' , None ) self.vepAnnotations = kwargs.get( 'VEP' , None ) @@ -269,8 +273,10 @@ def checks( self , **kwargs ): checks[mods[14]] = self.PP4 checks[mods[15]] = self.PP5 + checks[mods[28]] = self.PMS1 checks[mods[28]] = self.PMC1 checks[mods[29]] = self.PPC1 + checks[mods[29]] = self.PPC2 if doNegative: checks[mods[16]] = self.BA1 checks[mods[17]] = self.BS1 @@ -296,7 +302,7 @@ def modules( self ): 'BA1' , \ 'BS1' , 'BS2' , 'BS3' , 'BS4' , \ 'BP1' , 'BP2' , 'BP3' , 'BP4' , 'BP5' , 'BP6' , 'BP7', \ - 'PMC1' , 'PPC1' , \ + 'PSC1' , 'PMC1' , 'PPC1' , 'PPC2' , \ 'BSC1' , 'BMC1' ] def readVCFInfo( self , **kwargs ): for info in self.vcfInfo: @@ -330,8 +336,8 @@ def countPathogenicStrong( self ): count += 1 if self.PS4: count += 1 -# if self.PSC1: -# count += 1 + if self.PSC1: + count += 1 return count def countPathogenicModerate( self ): count = 0 @@ -364,6 +370,8 @@ def countPathogenicSupport( self ): count += 1 if self.PPC1: count += 1 + if self.PPC2: + count += 1 return count def isPathogenic( self , **kwargs ): numPathogenicStrong = self.countPathogenicStrong() @@ -517,11 +525,13 @@ def tallyScore( self , **kwargs ): self.pathogenicScore += chargervariant.supportScore*self.countPathogenicSupport() self.pathogenicScore += chargervariant.moderateScore*self.countPathogenicModerate() self.pathogenicScore += chargervariant.strongScore*self.countPathogenicStrong() + self.pathogenicScore += 3 if self.PS1 else 0 self.pathogenicScore += chargervariant.strongScore*self.countPathogenicVeryStrong() self.benignScore = 0 self.benignScore += chargervariant.supportScore*self.countBenignSupport() self.benignScore += chargervariant.moderateScore*self.countBenignModerate() self.benignScore += chargervariant.strongScore*self.countBenignStrong() + self.benignScore += 2 if self.BSC1 else 0 self.benignScore += chargervariant.standAloneScore*self.countBenignStandAlone() self.chargerScore = self.pathogenicScore - self.benignScore scoreSystem = kwargs.get( "system" , "CharGer" ) @@ -529,20 +539,6 @@ def tallyScore( self , **kwargs ): def compositeScore( self , **kwargs ): scoreSystem = kwargs.get( "system" , "CharGer" ) override = kwargs.get( 'override' , False ) - # if self.pathogenicScore > 8: - # self.setAsPathogenic( **kwargs ) - # elif self.pathogenicScore > 5: - # self.setAsLikelyPathogenic( **kwargs ) - # elif self.benignScore >= 4: - # if self.pathogenicity[scoreSystem] == chargervariant.pathogenic \ - # or self.pathogenicity[scoreSystem] == chargervariant.likelyPathogenic: - # self.setAsUncertainSignificance( **kwargs ) - # else: - # if self.benignScore >= 8: - # self.setAsBenign( **kwargs ) - # elif self.benignScore >= 4: - # self.setAsLikelyBenign( **kwargs ) - if self.chargerScore > 8: self.setAsPathogenic( **kwargs ) elif self.chargerScore >= 5: diff --git a/setup.py b/setup.py index 380450e..e4d2124 100644 --- a/setup.py +++ b/setup.py @@ -1,11 +1,11 @@ #https://docs.python.org/2/distutils/examples.html from distutils.core import setup -version = "0.2.1" +version = "0.3.0" setup( \ name = 'CharGer' , version = version , - author = 'Adam D Scott, Kuan-lin Huang' , - author_email = 'adamscott@wustl.edu, kuan-lin.huang@wustl.edu' , + author = 'Adam D Scott, Kuan-lin Huang, Amila Weerasinghe' , + author_email = 'adamscott@wustl.edu, kuan-lin.huang@wustl.edu, amila@wustl.edu' , maintainer = 'Adam D Scott' , maintainer_email = 'adamscott@wustl.edu' , url = 'https://github.com/ding-lab/CharGer' ,