Пример #1
0
def main(para):
    if 'RepeatNum' not in para:
        para['RepeatNum'] = '1'
    for i in xrange(2014, 2014 + int(para['RepeatNum'])):
        if 'FeatureType' in para:
            import cross_validation
            para1 = para.copy()
            para1['RandomSeed'] = str(i)
            cross_validation.main(para1)
        else:
            import cross_validation
            para1 = para.copy()
            para1['RandomSeed'] = str(i)
            para1['FeatureType'] = 'SaveZDOCK'
            cross_validation.main(para1)
            para1['FeatureType'] = 'SaveResidue'
            cross_validation.main(para1)
            #print 'Please add parameter "FeatureType" to run cross validation.'
    comparison(para)
    os.system(
        'Rscript %s/evaluate_perform.R . evaluate_raw.txt "ROC Curves for Predicting Interface Residues"'
        % para['SrcPath'])
    os.system('mv evaluate_raw.txt.pdf evaluate_residue_roc.pdf')
    os.system(
        'Rscript %s/evaluate_perform.R . evaluate_raw.txt "Precision Curves for Predicting Interface Residues"'
        % para['SrcPath'])
    os.system('mv evaluate_raw.txt.pdf evaluate_residue_pre.pdf')
    os.system(
        'Rscript %s/evaluate_perform.R . evaluate_raw.txt "ROC Curves for Predicting Interacting Domains"'
        % para['SrcPath'])
    os.system('mv evaluate_raw.txt.pdf evaluate_domain_roc.pdf')
    os.system(
        'Rscript %s/evaluate_perform.R . evaluate_raw.txt "Precision Curves for Predicting Interacting Domains"'
        % para['SrcPath'])
    os.system('mv evaluate_raw.txt.pdf evaluate_domain_pre.pdf')
Пример #2
0
def main(para):
    if 'RepeatNum' not in para:
        para['RepeatNum'] = '1'
    for i in xrange(2014, 2014 + int(para['RepeatNum'])):
        if 'FeatureType' in para:
            import cross_validation
            para1 = para.copy()
            para1['RandomSeed'] = str(i)
            cross_validation.main(para1)
        else:
            import cross_validation
            para1 = para.copy()
            para1['RandomSeed'] = str(i)
            para1['FeatureType'] = 'SaveZDOCK'
            cross_validation.main(para1)
            para1['FeatureType'] = 'SaveResidue'
            cross_validation.main(para1)
            #print 'Please add parameter "FeatureType" to run cross validation.'
    comparison(para)
    os.system('Rscript %s/evaluate_perform.R . evaluate_raw.txt "ROC Curves for Predicting Interface Residues"'%para['SrcPath'])
    os.system('mv evaluate_raw.txt.pdf evaluate_residue_roc.pdf')
    os.system('Rscript %s/evaluate_perform.R . evaluate_raw.txt "Precision Curves for Predicting Interface Residues"'%para['SrcPath'])
    os.system('mv evaluate_raw.txt.pdf evaluate_residue_pre.pdf')
    os.system('Rscript %s/evaluate_perform.R . evaluate_raw.txt "ROC Curves for Predicting Interacting Domains"'%para['SrcPath'])
    os.system('mv evaluate_raw.txt.pdf evaluate_domain_roc.pdf')
    os.system('Rscript %s/evaluate_perform.R . evaluate_raw.txt "Precision Curves for Predicting Interacting Domains"'%para['SrcPath'])
    os.system('mv evaluate_raw.txt.pdf evaluate_domain_pre.pdf')
Пример #3
0
def main(para):
    if 'ListSize' not in para:
        para['ListSize'] = '-1'
    if 'ThreadNum' not in para:
        para['ThreadNum'] = '1'
    if 'RandomSeed' not in para:
        para['RandomSeed'] = '2014'
    if 'ModelName' not in para:
        para['ModelName'] = 'RF-bin'
    if 'ModelFile' not in para:
        para['ModelFile'] = 'set1_all_new.txt.fea.max.RF-bin'
    if 'DockMethod' not in para:
        para['FeatureType'] = 'SaveResidue'
    if 'SolutionNum' not in para:
        para['SolutionNum'] = '10'
    if 'PredictCutoff' not in para:
        para['PredictCutoff'] = '0.5'

    ## Step 1: docking all pdb chain pairs and train
    if not os.path.exists(para['ModelFile']):
        import cross_validation
        para1 = para.copy()
        para1['SplitFold'] = '1'
        cross_validation.main(para1)

    ## Step 2: docking new pairs and predict
    ## prepare pdb pair list
    pdblistfile = 'list_from_user.txt'
    with open(pdblistfile, 'w') as tempfile:
        tempfile.write('Hhp1\tTas3\t4HOK\tA\t3D1D\tA\n')
        #tempfile.write('Hhp1\tMoc3\t4HOK\tA\tMOC3_modbase\t \n')
        tempfile.write('Hhp1\tPpc89\t4HOK\tA\tPPC89_Modbase\t \n')

    ## docking them and generate features
    feature_file = 'features_for_predicting.txt'
    #if not os.path.exists(feature_file):
    if True:
        import prepare_feature
        para2 = para.copy()
        para2['ListFile'] = pdblistfile
        para2['OutFile'] = feature_file
        para2['ListFormat'] = 'p1/p2/pdb1/ch1/pdb2/ch2'
        prepare_feature.main(para2)

    ## 2.c: predict their contact probabilities
    from cross_validation import add_residue_label, model_predict
    add_residue_label(feature_file)
    predfile = model_predict(feature_file, model=para['ModelName'], mfile=para['ModelFile'])
    
    ## Step 3: get predicted values for each residue
    from cross_validation import map_pdb_residue
    residue_value = map_pdb_residue(predfile)
    with open(para['ExeFile']+'data.txt', 'w') as outfile:
        for g1g2, res, val in residue_value:
            outfile.write('%s\t%s\t-1\t%s\n'%('\t'.join(g1g2.split('=')), res, val))
    from evaluate_perform import read_residue_data, group_residue
    idx, val1, val2 = read_residue_data(para['ExeFile']+'data.txt')
    pp_val = group_residue(idx, val2) ## using predicted value

    for p1, p2 in pp_val:
        res = pp_val[(p1,p2)]
        pp = list(set([r.split(':')[0] for r in res]))
        if True: ## reformat protein names
            if p1 == p2 and len(pp) == 1:
                p1 = pp
                p2 = pp
            elif len(pp) == 2:
                p1 = pp[0]
                p2 = pp[1]
            else:
                print 'Failed to map', p1, p2, pp
        show(p1)
        show(p2)
        int1 = [r for r in res if r.split(':')[0]==p1 and res[r] >= float(para['PredictCutoff'])]
        int2 = [r for r in res if r.split(':')[0]==p2 and res[r] >= float(para['PredictCutoff'])]
        ord1 = sorted([int(r.split(':')[-1]) for r in int1])
        ord2 = sorted([int(r.split(':')[-1]) for r in int2])
        show(','.join([str(i) for i in ord1]))
        show(','.join([str(i) for i in ord2]))
        show()