Пример #1
0
def patternSearch(fname="networks/6D_Malaria.txt",smallestparam=0,largestparam=46656,getMorseSet=fmg.all_FC,paramsstored=1,resultsfile='malariaresults.txt'):
    if paramsstored == 1:
        params = parseParams()
    else:
        params = getAllParams(fname,smallestparam,largestparam,getMorseSet)
    N=len(params)
    f=open(resultsfile,'w')
    for k,(p,m) in enumerate(params):
        print "Parameter {} of {}".format(k+1,N)
        if type(m) is tuple:
            for n in m:
                call(["dsgrn network {} analyze morseset {} {} >dsgrn_output.json".format(fname,n,p)],shell=True)
                patterns,matches=pm.callPatternMatch(writetofile=0,returnmatches=1)
                for q,c in zip(patterns,matches):
                    f.write("Parameter: {}, Morseset: {}".format(p,n)+'\n')
                    f.write("Pattern: {}".format(q)+'\n')
                    f.write("Results: {}".format(c)+'\n')
        else:
            call(["dsgrn network {} analyze morseset {} {} >dsgrn_output.json".format(fname,m,p)],shell=True)
            patterns,matches=pm.callPatternMatch(writetofile=0,returnmatches=1)
            for q,c in zip(patterns,matches):
                f.write("Parameter: {}, Morseset: {}".format(p,m)+'\n')
                f.write("Pattern: {}".format(q)+'\n')
                f.write("Results: {}".format(c)+'\n')
    f.close()
Пример #2
0
def search(forcing=1):
    if forcing==1:
        onewayforcing()
    elif forcing==2:
        twowayforcing()
    else:
        print "Unrecognized input argument to search(). Aborting."
        return None
    pm.callPatternMatch()
Пример #3
0
def search(forcing=1):
    if forcing == 1:
        onewayforcing()
    elif forcing == 2:
        twowayforcing()
    else:
        print "Unrecognized input argument to search(). Aborting."
        return None
    pm.callPatternMatch()
Пример #4
0
def patternSearch(morseset=0,specfile="networks/5D_Model_B.txt",paramfile="5D_Model_B_FCParams.txt",resultsfile='results_5D_B.txt',printtoscreen=0,printparam=0,findallmatches=1,unique_identifier=0):
    subprocess.call(["dsgrn network {} domaingraph > dsgrn_domaincells_{:04d}.json".format(specfile,unique_identifier)],shell=True)
    R=open(resultsfile,'w',0)
    P=open(paramfile,'r')
    paramcount=1
    for param in P.readlines():
        param=param.split()[0]
        if printparam and paramcount%1000==0:
            print str(paramcount)+' parameters checked'
        paramcount+=1
        # shell call to dsgrn to produce dsgrn_output.json, which is the input for the pattern matcher
        subprocess.call(["dsgrn network {} domaingraph json {} > dsgrn_domaingraph_{:04d}.json".format(specfile,int(param),unique_identifier)],shell=True)
        subprocess.call(["dsgrn network {} analyze morseset {} {} >dsgrn_output_{:04d}.json".format(specfile,morseset,int(param),unique_identifier)],shell=True)
        try:
            patterns,matches=patternmatch.callPatternMatch(fname_morseset='dsgrn_output_{:04d}.json'.format(unique_identifier),fname_domgraph='dsgrn_domaingraph_{:04d}.json'.format(unique_identifier),fname_domcells='dsgrn_domaincells_{:04d}.json'.format(unique_identifier),fname_patterns='patterns.txt',fname_results=resultsfile,writetofile=0,returnmatches=1,printtoscreen=printtoscreen,findallmatches=findallmatches)
        except ValueError:
            print 'Problem parameter is {}'.format(param)
            raise
        for pat,match in zip(patterns,matches):
            if findallmatches:
                R.write("Parameter: {}, Morseset: {}".format(param,morseset)+'\n')
                R.write("Pattern: {}".format(pat)+'\n')
                R.write("Results: {}".format(match)+'\n')
            else:
                R.write("Parameter: {}, Morseset: {}".format(param,morseset)+'\n')
                R.write("Pattern: {}".format(pat)+'\n')
    R.close()
    P.close()
Пример #5
0
def patternSearch(fname="networks/6D_Malaria.txt",
                  smallestparam=0,
                  largestparam=46656,
                  getMorseSet=fmg.all_FC,
                  paramsstored=1,
                  resultsfile='malariaresults.txt'):
    if paramsstored == 1:
        params = parseParams()
    else:
        params = getAllParams(fname, smallestparam, largestparam, getMorseSet)
    N = len(params)
    f = open(resultsfile, 'w')
    for k, (p, m) in enumerate(params):
        print "Parameter {} of {}".format(k + 1, N)
        if type(m) is tuple:
            for n in m:
                call([
                    "dsgrn network {} analyze morseset {} {} >dsgrn_output.json"
                    .format(fname, n, p)
                ],
                     shell=True)
                patterns, matches = pm.callPatternMatch(writetofile=0,
                                                        returnmatches=1)
                for q, c in zip(patterns, matches):
                    f.write("Parameter: {}, Morseset: {}".format(p, n) + '\n')
                    f.write("Pattern: {}".format(q) + '\n')
                    f.write("Results: {}".format(c) + '\n')
        else:
            call([
                "dsgrn network {} analyze morseset {} {} >dsgrn_output.json".
                format(fname, m, p)
            ],
                 shell=True)
            patterns, matches = pm.callPatternMatch(writetofile=0,
                                                    returnmatches=1)
            for q, c in zip(patterns, matches):
                f.write("Parameter: {}, Morseset: {}".format(p, m) + '\n')
                f.write("Pattern: {}".format(q) + '\n')
                f.write("Results: {}".format(c) + '\n')
    f.close()
Пример #6
0
def patternSearchSingle(parameter,morseset=0,specfile="networks/5D_Model_B.txt",resultsfile='results.txt',printtoscreen=0):
    R=open(resultsfile,'w',0)
    # shell call to dsgrn to produce dsgrn_output.json, which is the input for the pattern matcher
    subprocess.call(["dsgrn network {} domaingraph > dsgrn_domaincells.json".format(specfile)],shell=True)
    subprocess.call(["dsgrn network {} domaingraph json {} > dsgrn_domaingraph.json".format(specfile,int(parameter))],shell=True)
    subprocess.call(["dsgrn network {} analyze morseset {} {} >dsgrn_output.json".format(specfile,morseset,parameter)],shell=True)
    try:
        patterns,matches=patternmatch.callPatternMatch(writetofile=0,returnmatches=1,printtoscreen=printtoscreen)
    except ValueError:
        print 'Problem parameter is {}'.format(parameter)
        raise
    for pat,match in zip(patterns,matches):
        R.write("Parameter: {}, Morseset: {}".format(parameter,morseset)+'\n')
        R.write("Pattern: {}".format(pat)+'\n')
        R.write("Results: {}".format(match)+'\n')
    R.close()
Пример #7
0
def patternSearch_paramlist(networkfile,paramlist,resultsfile,patternstr,printtoscreen,findallmatches):
    domaincells_jsonstr=getJSONstring(networkfile,['domaingraph'])
    results_list=[]
    for info in paramlist:
        morsegraph,morseset,param = info.replace('|',' ').split()
        domaingraph_jsonstr=getJSONstring(networkfile,['domaingraph', 'json',param])
        morseset_jsonstr=getJSONstring(networkfile,['analyze', 'morseset', morseset, param])
        try:
            patterns,matches=patternmatch.callPatternMatch(morseset_jsonstr,domaingraph_jsonstr,domaincells_jsonstr,patternstr,resultsfile,writetofile=0,returnmatches=1,printtoscreen=printtoscreen,findallmatches=findallmatches)
            for pat,match in zip(patterns,matches):
                if findallmatches:
                    results_list.append("Parameter: {}, Morse Graph: {}, Morse Set: {}, Pattern: {}, Results: {}".format(param,morsegraph,morseset,pat,match)+'\n')
                else:
                    results_list.append("Parameter: {}, Morse Graph: {}, Morse Set: {}, Pattern: {}".format(param,morsegraph,morseset,pat)+'\n')
        except Exception as e:
            print 'Problem parameter is {}'.format(param)
            print traceback.format_exception_only(type(e),e)
            sys.stdout.flush()
    with open(resultsfile,'w',0) as R:
        for line in results_list:
            R.write(line)