public void build() { JMenu fileMenu = new JMenu("File"); fileMenu.setMnemonic('F'); saveEdgelistAction.setParent(this); JMenuItem saveEdgelist = new JMenuItem(saveEdgelistAction); fileMenu.add(saveEdgelist); saveAdjAction.setParent(this); fileMenu.add(new JMenuItem(saveAdjAction)); saveAlterAttributesCSVAction.setParent(this); fileMenu.add(new JMenuItem(saveAlterAttributesCSVAction)); saveConsensusAction.setParent(this); fileMenu.add(new JMenuItem(saveConsensusAction)); JMenuBar mb = new JMenuBar(); mb.add(fileMenu); setJMenuBar(mb); SparseGraph<WholeNetworkAlter, WholeNetworkTie> graph = new SparseGraph<WholeNetworkAlter, WholeNetworkTie>(); for (WholeNetworkAlter alter : net.getWholeNetworkAlters().values()) { graph.addVertex(alter); logger.info("Adding vertex " + alter); } for (WholeNetworkTie tie : net.getWholeNetworkTies()) { graph.addEdge(tie, tie.getA(), tie.getB()); logger.info("Adding edge " + tie); } Layout<WholeNetworkAlter, WholeNetworkTie> layout = new ELSFRLayout2<WholeNetworkAlter, WholeNetworkTie>(graph); VisualizationViewer<WholeNetworkAlter, WholeNetworkTie> vv = new VisualizationViewer<WholeNetworkAlter, WholeNetworkTie>(layout); vv.setGraphMouse(new DefaultModalGraphMouse()); vv.setPickSupport(new ShapePickSupport<WholeNetworkAlter, WholeNetworkTie>(vv)); vv.getRenderContext().setVertexLabelTransformer(new ToStringLabeller<WholeNetworkAlter>()); vv.getRenderContext() .setEdgeShapeTransformer(new EdgeShape.Line<WholeNetworkAlter, WholeNetworkTie>()); JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(new BorderLayout()); panel.add(vv, BorderLayout.CENTER); setContentPane(panel); pack(); }
public void doCombineInterviews() throws Exception { /* Read new study */ EgoStore store = new EgoStore(null); File studyFile = store.selectStudy(new File(".")); StudyReader sr = new StudyReader(studyFile); Study study = sr.getStudy(); // Find the interview files associated with this study File parentFile = studyFile.getParentFile(); File interviewFile = new File(parentFile, "/Interviews/"); File guessLocation = new File("."); if (parentFile.exists() && parentFile.isDirectory() && parentFile.canRead()) guessLocation = parentFile; if (interviewFile.exists() && interviewFile.isDirectory() && interviewFile.canRead()) guessLocation = interviewFile; final File currentDirectory = guessLocation; String[] fileList = currentDirectory.list(); InterviewFileFilter filter = new InterviewFileFilter(study, "Interview Files", "int"); ArrayList<String> alterList = new ArrayList<String>(); int[][] adj = null; Set<Edge> allPairs = new HashSet<Edge>(); Set<Vertex> pairedAlters = new HashSet<Vertex>(); for (String s : fileList) { File f = new File(currentDirectory.toString() + "/" + s); if (!filter.accept(f) || !f.canRead()) throw new IOException("Couldn't read file or file not associated with selected study."); InterviewReader interviewReader = new InterviewReader(study, f); Interview interview = interviewReader.getInterview(); if (!interview.isComplete()) { logger.info("*** SKIPPED because interview isn't complete: " + f.getName()); continue; } logger.info("** Reading next file " + f.getName()); String[] thisInterviewAlterlist = interview.getAlterList(); alterList.addAll(Arrays.asList(interview.getAlterList())); Iterator<Long> questions = study.getQuestionOrder(AlterPairQuestion.class).iterator(); while (questions.hasNext()) { Question q = study.getQuestion((Long) questions.next()); adj = interview.generateAdjacencyMatrix(q, false); // loop through adj // if adj[i][j] == 1, thisInterviewAlters[i] && thisInterviewAlters[j] are adjacent in final // matrix for (int i = 0; i < adj.length; i++) { for (int j = 0; j < adj[i].length; j++) { if (adj[i][j] == 1 && i != j) { String alter1 = thisInterviewAlterlist[i]; String alter2 = thisInterviewAlterlist[j]; allPairs.add(new Edge(alter1, alter2)); pairedAlters.add(new Vertex(alter1)); pairedAlters.add(new Vertex(alter2)); // mark those as adjacent in the new big matrix // logger.info(p + " are adjacent"); } } } } } Set<Vertex> vertices = new HashSet<Vertex>(); for (Edge pair : allPairs) { Vertex v1 = new Vertex(pair.pair.getFirst()); Vertex v2 = new Vertex(pair.pair.getSecond()); vertices.add(v1); vertices.add(v2); } for (String isolate : alterList) { Vertex v = new Vertex(isolate); vertices.add(v); } SparseGraph<Vertex, Edge> graph = new SparseGraph<Vertex, Edge>(); for (Edge pair : allPairs) { Vertex v1 = new Vertex(pair.pair.getFirst()); Vertex v2 = new Vertex(pair.pair.getSecond()); if (!graph.getVertices().contains(v1)) graph.addVertex(v1); if (!graph.getVertices().contains(v2)) graph.addVertex(v2); graph.addEdge(pair, Arrays.asList(v1, v2)); } for (String isolate : alterList) { Vertex v = new Vertex(isolate); if (!graph.getVertices().contains(v)) graph.addVertex(v); } Layout<Vertex, Edge> layout = new ELSFRLayout2<Vertex, Edge>(graph); VisualizationViewer<Vertex, Edge> vv = new VisualizationViewer<Vertex, Edge>(layout); JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(new BorderLayout()); panel.add(vv, BorderLayout.CENTER); frame.setContentPane(panel); frame.pack(); frame.setVisible(true); // TODO: how do isolates exist from combining personal networks into a whole network? logger.info("Pairs: " + allPairs); alterList.removeAll(pairedAlters); logger.info("Single alters: " + alterList); // TODO: write to file using save dialog }