Пример #1
0
def saveGraphs():
	g = snap.LoadEdgeList(snap.PUNGraph, sys.argv[1],0,1)
	Graphs = []
	a = snap.TIntV()
	for file in sys.argv[2:]:
		Graphs.append(snap.LoadEdgeList(snap.PUNGraph, file, 0, 1))
		folder = str(file).split("/")[0]
		if folder != "data":
			sys.exit("comparison should be made with file in 'data' folder")
	    
	data = sys.argv[2].split("/")[1]
	path = "/"
	if "DCS_LP" in sys.argv[1]:
		path = "results/snap/"+data+"DCS_LP/"
	else :# DCS_GREEDY
		path = "results/snap/"+data+"DCS_GREEDY/"
	
	if not os.path.exists(path) :
		os.makedirs(path)


	for i in g.Nodes() : 
	  a.Add(i.GetId())
	for i in range(0,len(Graphs)):
		Graphs[i] = snap.GetSubGraph(Graphs[i],a)

	filename = raw_input('Enter a snapgraph name: ')
	print "saving graphs in: " + path +" under names "+filename+"i.txt"
	for i in range(0,len(Graphs)):
		snap.SaveEdgeList(Graphs[i],path+filename+str(i+1)+".txt","Minimal graph from" + sys.argv[1])		
Пример #2
0
def main(argv):
    asUnDir = False
    oneGraph = False

    if (len(argv) < 2):
        sys.exit("usage: python lp.py [-d] <file1> ... <fileN>")

    if (len(argv) == 2):
        if argv[1] == "-d":
            sys.exit("no input.")
        oneGraph = True

    if (len(argv) == 3 and argv[1] == "-d"):
        asUnDir = True
        oneGraph = True

    if (len(argv) > 3 and argv[1] == "-d"):
        asUnDir = True
    if (oneGraph):
        if (asUnDir):
            Graph = snap.LoadEdgeList(snap.PNGraph, argv[2], 0, 1)
            snap.MakeUnDir(Graph)
        else:
            Graph = snap.LoadEdgeList(snap.PUNGraph, argv[1], 0, 1)
        printSingleGraph(Graph)
    else:
        Graphs = []
        if (asUnDir):
            for file in argv[2:]:
                g = snap.LoadEdgeList(snap.PNGraph, file, 0, 1)
                snap.MakeUnDir(g)
                Graphs.append(g)
        else:
            for file in argv[1:]:
                Graphs.append(snap.LoadEdgeList(snap.PUNGraph, file, 0, 1))
        printMoreGraphs(Graphs)

    dense = cplex.Cplex("dense.lp")
    os.remove("dense.lp")
    alg = dense.parameters.lpmethod.values
    dense.parameters.lpmethod.set(alg.barrier)
    # include the below line to not do the crossover and get a close
    # but not exact solution that can be extracted with filterLpSolution
    dense.parameters.barrier.crossover.set(-1)
    startTime = time.clock()
    #dense.parameters.lpmethod.set(5) # sifting algorithm
    dense.solve()
    printResults.save(dense)
    print("time taken: " + str(time.clock() - startTime))
    print "The solution is", dense.solution.get_status_string()
    print "Density:", dense.solution.get_objective_value()
Пример #3
0
def loadGraph():
    print("using graph " + sys.argv[1])
    graph = snap.LoadEdgeList(snap.PUNGraph, sys.argv[1], 0, 1)
    print(
        str(graph.GetNodes()) + " nodes and " + str(graph.GetEdges()) +
        " edges.")
    return graph
Пример #4
0
def printStats():
	g = snap.LoadEdgeList(snap.PUNGraph, sys.argv[1],0,1)
	
	for i in range(2,len(sys.argv)):
		cName,cExt = os.path.splitext(sys.argv[i])
		
		a = snap.TIntV()

		gi = snap.LoadEdgeList(snap.PUNGraph, sys.argv[i], 0, 1)
		print "Printing stats..."
		for n in g.Nodes():
			a.Add(n.GetId())
		g0 = snap.GetSubGraph(gi,a)
		n = g0.GetNodes()
		e = g0.GetEdges()
		print "---"
		print "Stats from : " + str(cName)
		print "Nodes : "+str(n)
		print "Edges : "+str(e)
		print "Density : "+ str( e / float(n))
Пример #5
0
def findSmallestGraph():
	g = snap.LoadEdgeList(snap.PUNGraph, sys.argv[1],0,1)
	Graphs = []
	names = []
	for file in sys.argv[2:]:
		Graphs.append(snap.LoadEdgeList(snap.PUNGraph, file, 0, 1))
		lpName,lpExt  = os.path.splitext(file)
		names.append(lpName)
	a = snap.TIntV()
	for i in g.Nodes() : 
	  a.Add(i.GetId())
	density = 500
	
	for i in range(0,len(Graphs)):
		Graphs[i] = snap.GetSubGraph(Graphs[i],a)
		newD = Graphs[i].GetEdges() / float(Graphs[i].GetNodes())
		if newD < density :
			density = newD
			g = i
	

	print "Smallest graph was: "+ str(names[i])
	print "Density: "+str(density)
	return (names[i],Graphs[g])
Пример #6
0
def fsg(nodes):
    g = -1
    Graphs = []
    names = []
    for file in sys.argv[1:]:
        Graphs.append(snap.LoadEdgeList(snap.PUNGraph, file, 0, 1))
        lpName, lpExt = os.path.splitext(file)
        names.append(lpName)
    a = snap.TIntV()
    for i in nodes:
        a.Add(i)
    density = sys.maxint

    for i in range(0, len(Graphs)):
        Graphs[i] = snap.GetSubGraph(Graphs[i], a)
        newD = Graphs[i].GetEdges() / float(Graphs[i].GetNodes())
        if newD < density:
            density = newD
            g = i

    print "Smallest graph was: " + str(names[g])
    print "Density: " + str(density)
    return (names[g], Graphs[g], density)
Пример #7
0
    return a


# returns the induced subgraph of the nodes from graph over the graph target_graph
def getSubgraph(target_graph, graph):

    a = snap.TIntV()
    for i in graph.Nodes():
        a.Add(i.GetId())
    return snap.GetSubGraph(target_graph, a)


# Start of main program
if (len(sys.argv) < 3):
    usage()
pG = snap.LoadEdgeList(snap.PUNGraph, sys.argv[1], 0, 1)
gG = snap.LoadEdgeList(snap.PUNGraph, sys.argv[2], 0, 1)
if "minLP" not in sys.argv[1]:
    usage()
if "minGREEDY" not in sys.argv[2]:
    usage()
print "What would you like to do?"
print "1) print common nodes"
print "2) print structural properties"
i = ""
while i not in ["1", "2"]:
    i = raw_input(">")
if i == "1":
    # calc similarities between node sets...

    lpN = getNodes(lpG)
Пример #8
0
def loadGraphs(locations):
      graphs = []
      for arg in locations:
          graphs.append(snap.LoadEdgeList(snap.PUNGraph, arg, 0, 1))
      return graphs
Пример #9
0
def main(argv):

    if len(argv) < 1:
        usage()
    gs = []
    for file in argv[1:]:
        gs.append(snap.LoadEdgeList(snap.PUNGraph, file, 0, 1))
    # Load and solve LP
    usr_in = ""
    print "Program: minimize..."
    print "use the following input"
    print "data/oregonFAULT-2/oregon2_010421.txt data/oregonFAULT-2/oregon2_010428.txt data/oregonFAULT-2/oregon2_010407.txt"
    print "1) minimize nodes wrt sys.argv[1:]"
    print "2) Does this input fail (sys.argv[1:]) yes/no"
    print "3) Run this: Example nodes"
    while usr_in not in ["1", "2", "3"]:
        usr_in = raw_input(">")

    print "You have Choosen " + usr_in + "!"

    if usr_in == "1":
        lp.printMoreGraphs(gs)
        dense = cplex.Cplex("dense.lp")
        os.remove("dense.lp")
        alg = dense.parameters.lpmethod.values
        dense.parameters.lpmethod.set(alg.barrier)
        dense.solve()

        # get the nodes for the LP
        nodes = getNodes(getNonZero(dense))
        print "size nodes:" + str(nodes)
        # minimize the nodes and respective graphs
        n, gs = ddmin(2, nodes, gs)
        gs0 = []
        for g in gs:
            gs0.append(getSubgraph(g, n))

        lp.printMoreGraphs(gs)
        dense = cplex.Cplex("dense.lp")
        os.remove("dense.lp")
        alg = dense.parameters.lpmethod.values
        dense.parameters.lpmethod.set(alg.barrier)
        dense.solve()

        t = getSolution(getNonZero(dense))

        (name, graph, density) = findSmallestGraph(n, gs)

        print "t* = " + str(t)
        print "density = " + str(density)
        print "t* =? density : " + str(abs(t - density) < 0.000005)
        print "Local minimal nodes: " + str(n)
        print "---"
        print "Would you like to save the fault inducing minimized graphs? y/n"
        while usr_in not in ["y", "n"]:
            usr_in = raw_input(">")

        if usr_in == "y":

            data = sys.argv[1].split("/")[1]
            path = "results/snap/minimal/"
            if not os.path.exists(path):
                os.makedirs(path)
            filename = raw_input('Enter a snapgraph name: ')
            print "saving graphs in: " + path + " under names " + filename + "i.txt"
            for i in range(0, len(gs)):
                snap.SaveEdgeList(gs[i], path + filename + str(i + 1) + ".txt",
                                  "Minimal graph from" + data)

        else:
            print "exiting..."

    if usr_in == "2":
        if testGraphs(gs, True):
            print "No, input does not fail, e.g t* = density"
        else:
            print "Yes, input does fail, e.g t* != density"
    if usr_in == "3":
        nodes = [5388, 6659, 13237, 5466, 9019, 9013, 5611]
        for g in gs:
            g = getSubgraph(g, nodes)

        lp.printMoreGraphs(gs)
        dense = cplex.Cplex("dense.lp")
        os.remove("dense.lp")
        alg = dense.parameters.lpmethod.values
        dense.parameters.lpmethod.set(alg.barrier)
        dense.solve()

        t = getSolution(getNonZero(dense))

        (name, graph, density) = fsg(nodes)

        print "t* = " + str(t)
        print "density = " + str(density)
        print "t* =? density : " + str(abs(t - density) < 0.000005)
        print "Local minimal nodes: " + str(nodes)
Пример #10
0
    # remove duplicates
    nodes = list(set(nodes))

    print "maximize t"
    print "\nsubject to"
    print(" +\n".join(nodes)) + " <= 1"  # sum yi <= 1
    for e in allEdges:
        print(" +\n".join(e)) + " - t >= 0"  # sum xij >= t
    for c in allEdgeCons:
        print " \n".join(c)  # xij <= yi and xij <= yj
    print "\nend"


if (oneGraph):
    if (asUnDir):
        Graph = snap.LoadEdgeList(snap.PNGraph, sys.argv[2], 0, 1)
        snap.MakeUnDir(Graph)
    else:
        Graph = snap.LoadEdgeList(snap.PUNGraph, sys.argv[1], 0, 1)
    printSingleGraph(Graph)
else:
    Graphs = []
    if (asUnDir):
        for file in sys.argv[2:]:
            g = snap.LoadEdgeList(snap.PNGraph, file, 0, 1)
            snap.MakeUnDir(g)
            Graphs.append(g)
    else:
        for file in sys.argv[1:]:
            Graphs.append(snap.LoadEdgeList(snap.PUNGraph, file, 0, 1))
    printMoreGraphs(Graphs)
Пример #11
0
  xijm = [e for es in allEdges for e in es]

  with open("dense.lp", "w") as f:
    print >> f, "maximize "+tobj+" +"
    print >> f, " +\n".join(xijm)
    print >> f, "\nsubject to"
    print >> f, (" +\n".join(nodes))+" <= 1" # sum yi <= 1
    for c in allEdgeCons:
      print >> f, " \n".join(c) # xij <= yi and xij <= yj
    print >> f, "\nend"


Graphs = []

for file in sys.argv[1:]:
  Graphs.append(snap.LoadEdgeList(snap.PUNGraph, file, 0, 1))
printGraphs(Graphs)

# index for all x's are 1-len(xijm), in cplex.
print "Warning: This file assumes already preprocessed files,"
print "         meaning the input should be undirected and"
print "         all node-sets should be equal, see preprocess.py.\n"
print "Warning: Only does " + str(5) + " iterations.\n"
print "Info: total number of edges:" + str(len(xijm))


dense0 = cplex.Cplex("dense.lp")
#dense0.set_results_stream(None)
alg = dense0.parameters.lpmethod.values
dense0.parameters.lpmethod.set(alg.barrier)
dense0.parameters.barrier.crossover.set(-1)
Пример #12
0
from lib import snap
import os
import sys


def usage():
    sys.exit("usage: python pic.py <inputGraph.txt>")


if len(sys.argv) < 2:
    usage()
g = snap.LoadEdgeList(snap.PUNGraph, sys.argv[1], 0, 1)
labels = snap.TIntStrH()
for NI in g.Nodes():
    labels[NI.GetId()] = str(NI.GetId())
name = ""
while name == "":
    name = raw_input("save file as: ")
    print ">"
snap.DrawGViz(g, snap.gvlDot, name + ".png", " ", labels)