/* Program to draw word relatedness networks saved from NetworkX in python. robert@roberttwomey.com Adapted from: Graphtoy by Sean McCullough http://www.cricketschirping.com 26. Feb 2007 */ import traer.physics.*; import traer.animation.*; Graph g; ParticleSystem physics; Smoother3D centroid; boolean paused; XMLElement xml; PFont font; float t_step; float edgeThresh; float startThresh; float minThresh = 0.0; ArrayList deleted_edges; int xsize=1400; int ysize=800; float xConstraint =xsize/2*0.9; float yConstraint = ysize/2*0.9; void setup() { size(xsize, ysize ); smooth(); fill( 0 ); frameRate( 24 ); ellipseMode( CENTER ); font = loadFont("CourierNew36.vlw"); t_step=0.01; edgeThresh=1.0; startThresh=1.0; physics = new ParticleSystem( 0, 0.07 ); centroid = new Smoother3D( 0.8 ); centroid.setValue( 0, 0, 1.0 ); deleted_edges = new ArrayList(); g = new Graph(physics); Node anchor = g.newNode(" "); anchor.setLabel(" "); anchor.getParticle().makeFixed(); g.setSelectedNode(anchor); //loadXMLFile(anchor, "script V res.xml"); //loadEdgelist(anchor, "C:\\Users\\Robert\\code\\language\\nltk2.0\\script N res 7.0 edgelist.txt"); //loadEdgelist(anchor, "C:\\Users\\Robert\\code\\language\\nltk2.0\\script N res 7.0 edgelist.txt"); loadEdgelist(anchor, "/Users/rtwomey/code/language/nltk2.0/script N res 5.0 edgelist.txt"); // loadXMLFile(anchor, "visual memory reference.xml"); } void loadXMLFile(Node root, String filename) { Node n = null; Edge e = null; xml = new XMLElement(this, filename); int numNodes = xml.getChildCount(); for (int i=0; ixConstraint)newVX *= -1; if(abs(p.position().y()-centroid.y())>yConstraint)newVY *= -1; p.velocity().set(newVX, newVY, 0.0); xMax = max( xMax, p.position().x() ); xMin = min( xMin, p.position().x() ); yMin = min( yMin, p.position().y() ); yMax = max( yMax, p.position().y() ); } if (physics.numberOfParticles() == 0) return; float deltaX = xMax-xMin; float deltaY = yMax-yMin; if ( deltaY > deltaX ) centroid.setTarget( xMin + 0.5*deltaX, yMin +0.5*deltaY, height/(deltaY+50) ); else centroid.setTarget( xMin + 0.5*deltaX, yMin +0.5*deltaY, width/(deltaX+50) ); }