def RunBICTest(chr, beginSeqName, fileName, globalOrLocalTest, organism):
    """
    Runs all BIC test calculations.
    chr: Current chromosome number.
    beginSeqName: Beginning of the sequence name of the queried chromosome. (e.g. "Gene")
    fileName: Output file name.
    globalOrLocalTest: String identifying whether to use global or local Mt values.
    organism: Organism's name.
    """
    print ("BIC")
    if (globalOrLocalTest == "Global"):
        PalphaGammaHatAsym = printAndParseFiles.parsePalphaGamma("Calculations_" + organism + "\PalphaGammaHat%s\PalphaGammaHatAsymmetric%d.txt" % (globalOrLocalTest,chr), beginSeqName)
        PalphaGammaHatSym = printAndParseFiles.parsePalphaGamma("Calculations_" + organism + "\PalphaGammaHat%s\PalphaGammaHatSymmetric%d.txt" % (globalOrLocalTest,chr), beginSeqName)
        LgammaAsym = printAndParseFiles.parseValueFile("Calculations_" + organism + "\Lgamma%s\LgammaAsymmetric%d.txt" % (globalOrLocalTest,chr))
        LgammaSym = printAndParseFiles.parseValueFile("Calculations_" + organism + "\Lgamma%s\LgammaSymmetric%d.txt" % (globalOrLocalTest,chr))
        BICAsym = BIC.findBIC(PalphaGammaHatAsym, LgammaAsym, "A")
        BICSym = BIC.findBIC(PalphaGammaHatSym, LgammaSym, "S")
        printAndParseFiles.compareAndPrintBICs(BICAsym, BICSym, fileName)
    elif (globalOrLocalTest == "Local"):
        PalphaGammaHatAsym = printAndParseFiles.parsePalphaGamma("Calculations_" + organism + "\PalphaGammaHat%s\PalphaGammaHatAsymmetric%d.txt" % (globalOrLocalTest,chr), beginSeqName)
        PalphaGammaHatSym = printAndParseFiles.parsePalphaGamma("Calculations_" + organism + "\PalphaGammaHat%s\PalphaGammaHatSymmetric%d.txt" % (globalOrLocalTest,chr), beginSeqName)
        LgammaAsym = printAndParseFiles.parseValueFile("Calculations_" + organism + "\Lgamma%s\LgammaAsymmetric%d.txt" % (globalOrLocalTest,chr))
        LgammaSym = printAndParseFiles.parseValueFile("Calculations_" + organism + "\Lgamma%s\LgammaSymmetric%d.txt" % (globalOrLocalTest,chr))
        BICAsym = BIC.findBIC(PalphaGammaHatAsym, LgammaAsym, "A")
        BICSym = BIC.findBIC(PalphaGammaHatSym, LgammaSym, "S")
        printAndParseFiles.compareAndPrintBICs(BICAsym, BICSym, fileName)
    else:
        print "Error with Global or Local choice. Please type 'Global' or 'Local'"
        
    print ("DONE WITH CHR %d" % chr)
def RunGammaTest(chr, beginSeqName, globalOrLocalMts, organism):
    """
    Runs all Gamma test calculations.
    chr: Current chromosome number.
    beginSeqName: Beginning of sequence names for query.
    globalOrLocalMts: String identifying whether to use global or local Mt values.
    organism: Organism's name.
    """
    print ("GAMMA")
    # to find P gamma
    familyListAsym = printAndParseFiles.parsePalphaGamma("Calculations_" + organism + "\RSeqFamilyMats\RSeqFamilyMatsAsymmetric%d.txt" % (chr), beginSeqName)#change this to Rag, should be the final area of filtering
    familyListSym = printAndParseFiles.parsePalphaGamma("Calculations_" + organism + "\RSeqFamilyMats\RSeqFamilyMatsSymmetric%d.txt" % (chr), beginSeqName)
    QgammaAsym = printAndParseFiles.parseQgammaFile("Calculations_" + organism + "\Qgamma\QgammaAsymmetric%d.txt" % (chr))
    QgammaSym = printAndParseFiles.parseQgammaFile("Calculations_" + organism + "\Qgamma\QgammaSymmetric%d.txt" % (chr))
    mtDict = {}
    if (globalOrLocalMts == "Global"):
        mtDict = printAndParseFiles.parseValueFile("Calculations_" + organism + "\MTFamilyVals.txt")
        PalphaGammaHatAsym = FindCandP.calculatePalphaGammaHatGlobal(QgammaAsym, familyListAsym, mtDict)
        PalphaGammaHatSym = FindCandP.calculatePalphaGammaHatGlobal(QgammaSym, familyListSym, mtDict)
        printAndParseFiles.printDictionaryMatrixToFile(PalphaGammaHatAsym, "Calculations_" + organism + "\PalphaGammaHat%s\PalphaGammaHatAsymmetric%d.txt" % (globalOrLocalMts,chr))
        printAndParseFiles.printDictionaryMatrixToFile(PalphaGammaHatSym, "Calculations_" + organism + "\PalphaGammaHat%s\PalphaGammaHatSymmetric%d.txt" % (globalOrLocalMts,chr))

        CalphaGamma = printAndParseFiles.parseCalphaGammaFile("Calculations_" + organism + "\CSeqFamilyMats\CSeqFamilyMats%d.txt" % (chr), beginSeqName)
        
        # calculate this section's L gamma value
        LgammaAsym = FindLg.findLgamma(CalphaGamma, PalphaGammaHatAsym)
        LgammaSym = FindLg.findLgamma(CalphaGamma, PalphaGammaHatSym)
        printAndParseFiles.printValuesToFile(LgammaAsym, "Calculations_" + organism + "\Lgamma%s\LgammaAsymmetric%d.txt" % (globalOrLocalMts,chr))
        printAndParseFiles.printValuesToFile(LgammaSym, "Calculations_" + organism + "\Lgamma%s\LgammaSymmetric%d.txt" % (globalOrLocalMts,chr))
        
    elif (globalOrLocalMts == "Local"):
        mtDictAsym = printAndParseFiles.parseMtalphaGammaFile("Calculations_" + organism + "\MtSeqFamilyMats\MtSeqFamilyMatsAsymmetric%d.txt" % chr, beginSeqName) # create dictionary values for asymmetric and symmetric, perform gamma calculations using them
        PalphaGammaHatAsym = FindCandP.calculatePalphaGammaHatLocal(QgammaAsym, familyListAsym, mtDictAsym)
        mtDictSym = printAndParseFiles.parseMtalphaGammaFile("Calculations_" + organism + "\MtSeqFamilyMats\MtSeqFamilyMatsSymmetric%d.txt" % chr, beginSeqName)
        PalphaGammaHatSym = FindCandP.calculatePalphaGammaHatLocal(QgammaSym, familyListSym, mtDictSym)
        printAndParseFiles.printDictionaryMatrixToFile(PalphaGammaHatAsym, "Calculations_" + organism + "\PalphaGammaHat%s\PalphaGammaHatAsymmetric%d.txt" % (globalOrLocalMts,chr))
        printAndParseFiles.printDictionaryMatrixToFile(PalphaGammaHatSym, "Calculations_" + organism + "\PalphaGammaHat%s\PalphaGammaHatSymmetric%d.txt" % (globalOrLocalMts,chr))

        CalphaGamma = printAndParseFiles.parseCalphaGammaFile("Calculations_" + organism + "\CSeqFamilyMats\CSeqFamilyMats%d.txt" % (chr), beginSeqName)
        
        # calculate this section's L gamma value
        LgammaAsym = FindLg.findLgamma(CalphaGamma, PalphaGammaHatAsym)
        LgammaSym = FindLg.findLgamma(CalphaGamma, PalphaGammaHatSym)
        printAndParseFiles.printValuesToFile(LgammaAsym, "Calculations_" + organism + "\Lgamma%s\LgammaAsymmetric%d.txt" % (globalOrLocalMts,chr))
        printAndParseFiles.printValuesToFile(LgammaSym, "Calculations_" + organism + "\Lgamma%s\LgammaSymmetric%d.txt" % (globalOrLocalMts,chr))

    else:
        print "Error with Global or Local choice. Please type 'Global' or 'Local'"

    print ("DONE WITH CHR %d" % chr)