Spaces:
Runtime error
Runtime error
import json | |
class Physics(object): | |
engine_chosen = False | |
def __getitem__(self, item): | |
return self.__dict__[item] | |
def __repr__(self): | |
return str(self.__dict__) | |
class barnesHut(object): | |
""" | |
BarnesHut is a quadtree based gravity model. | |
This is the fastest, default and recommended. | |
""" | |
def __init__(self, params): | |
self.gravitationalConstant = params["gravity"] | |
self.centralGravity = params["central_gravity"] | |
self.springLength = params["spring_length"] | |
self.springConstant = params["spring_strength"] | |
self.damping = params["damping"] | |
self.avoidOverlap = params["overlap"] | |
class forceAtlas2Based(object): | |
""" | |
Force Atlas 2 has been develoved by Jacomi et all (2014) | |
for use with Gephi. The force Atlas based solver makes use | |
of some of the equations provided by them and makes use of | |
some of the barnesHut implementation in vis. The Main differences | |
are the central gravity model, which is here distance independent, | |
and repulsion being linear instead of quadratic. Finally, all node | |
masses have a multiplier based on the amount of connected edges | |
plus one. | |
""" | |
def __init__(self, params): | |
self.gravitationalConstant = params["gravity"] | |
self.centralGravity = params["central_gravity"] | |
self.springLength = params["spring_length"] | |
self.springConstant = params["spring_strength"] | |
self.damping = params["damping"] | |
self.avoidOverlap = params["overlap"] | |
class Repulsion(object): | |
""" | |
The repulsion model assumes nodes have a simplified field | |
around them. Its force lineraly decreases from 1 | |
(at 0.5*nodeDistace and smaller) to 0 (at 2*nodeDistance) | |
""" | |
def __init__(self, params): | |
self.nodeDistance = params["node_distance"] | |
self.centralGravity = params["central_gravity"] | |
self.springLength = params["spring_length"] | |
self.springConstant = params["spring_strength"] | |
self.damping = params["damping"] | |
class hierarchicalRepulsion(object): | |
""" | |
This model is based on the repulsion solver but the levels | |
are taken into accound and the forces | |
are normalized. | |
""" | |
def __init__(self, params): | |
self.nodeDistance = params["node_distance"] | |
self.centralGravity = params["central_gravity"] | |
self.springLength = params["spring_length"] | |
self.springConstant = params["spring_strength"] | |
self.damping = params["damping"] | |
class Stabilization(object): | |
""" | |
This makes the network stabilized on load using default settings. | |
""" | |
def __getitem__(self, item): | |
return self.__dict__[item] | |
def __init__(self): | |
self.enabled = True | |
self.iterations = 1000 | |
self.updateInterval = 50 | |
self.onlyDynamicEdges = False | |
self.fit = True | |
def toggle_stabilization(self, status): | |
self.enabled = status | |
def __init__(self): | |
self.enabled = True | |
self.stabilization = self.Stabilization() | |
def use_barnes_hut(self, params): | |
self.barnesHut = self.barnesHut(params) | |
def use_force_atlas_2based(self, params): | |
self.forceAtlas2Based = self.forceAtlas2Based(params) | |
self.solver = "forceAtlas2Based" | |
def use_repulsion(self, params): | |
self.repulsion = self.Repulsion(params) | |
self.solver = "repulsion" | |
def use_hrepulsion(self, params): | |
self.hierarchicalRepulsion = self.hierarchicalRepulsion(params) | |
self.solver = "hierarchicalRepulsion" | |
def toggle_stabilization(self, status): | |
self.stabilization.toggle_stabilization(status) | |
def to_json(self): | |
return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True, indent=4) | |