GuiVisPy_tube.py 2.94 KB
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Jan 31 15:29:40 2019

@author: pavel
`"""

from vispy import app


import network_dep as nwt

from pyqtgraph.Qt import QtCore, QtGui, QtWidgets
import pyqtgraph as pg
import numpy as np
import math

from mpl_toolkits.mplot3d import Axes3D
import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('Qt5Agg')

from GraphWidget import GraphWidget
from TubeWidget import TubeWidget


DEBUG = False


#set the backend. for different versions of PyQt
app.use_app(backend_name='PyQt5')

#Define a top level application
appMain = QtGui.QApplication([])

##Define a toplevel Widget
top = QtGui.QWidget()
top.resize(900, 900)


hist = pg.PlotWidget()
#fibers = FiberView()
fibers = TubeWidget()
fibers.canvas.create_native()
#fibers = gl.GLViewWidget()

#plt = hist.addPlot()

layout = QtGui.QGridLayout()
graph = GraphWidget()
graph.canvas.create_native()

graph.connect(fibers)
fibers.connect(graph)

#initialize the layout
layout.addWidget(graph, 0, 0, 2, 3)
layout.addWidget(fibers, 0, 2, 2, 3)
layout.setColumnStretch(0, 2)
layout.setRowStretch(0, 2)
layout.setColumnStretch(2, 1)
layout.setRowStretch(0, 1)

top.setLayout(layout)
top.show()


def draw_histogram(G, value):
    vals = G.edge_properties[value].get_array()
    y, x = np.histogram(vals,40)
    hist.plot(x,y, stepMode=True, fillLevel=0, brush=(0,0,255,150))

def load_nwt(filepath):
    net = nwt.Network(filepath)
    G = net.createFullGraph_gt()
    G = net.filterDisconnected(G)
    #G = net.filterFullGraph_gt(G, erode=True)
    #G = net.filterFullGraph_gt(G, erode=True)
    #G = net.gen_new_fd_layout(G)
    #G = net.filterBorder(G)
    #nwt.Network.saveGraph_gt(nwt, G, "FilteredNetwork_JACK_3.nwt")
    color = np.zeros(4, dtype = np.double)
    color = [0.0, 1.0, 0.0, 1.0]
    G.edge_properties["RGBA"] = G.new_edge_property("vector<double>", val=color)
    color = [1.0, 0.0, 0.0, 0.9]
    G.vertex_properties["RGBA"] = G.new_vertex_property("vector<double>", val=color)
    bbl, bbu = net.aabb()


    return G, bbl, bbu

G, bbl, bbu = load_nwt("/home/pavel/Documents/Python/GraphGuiQt/network_4.nwt")
#nwt.Network.write_vtk(G)

#G, bbl, bbu = load_nwt("/home/pavel/Documents/Python/GraphGuiQt/net`````````work_test_251_1kx3_short_NEW.nwt")
#ret = nwt.Network.get_affinity_matrix(G, "length")
node_image = QtGui.QImage("/home/pavel/Documents/Python/GraphGuiQt/node_tex.jpg")
node_tex = QtGui.QBitmap.fromImage(node_image)

if DEBUG:
    print(node_tex.depth())
center = (bbu-bbl)/2.0
#fibers.opts['distance'] = 5
#    item = NodeItem(G)
#    graph.addItem(item)
draw_histogram(G, "length")
graph.canvas.set_data(G, bbl, bbu)
fibers.canvas.set_data(G, bbl, bbu, 16)
#fibers.draw_all(G, center, fibers, graph, node_tex)
graph.set_g_view(fibers)
## Start Qt event loop unless running in interactive mode.
if __name__ == '__main__':
    import sys
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()