/** * Creates an integer identifier of the network interpretation, where 1 means directed network and * 0 - undirected. * * @param aInterp Network Interpretation. * @return A String of the integer identifier of the network interpretation. */ private static String createID(NetworkInterpretation aInterp) { String newName = ""; final boolean flag1 = aInterp.isDirected(); final boolean flag2 = aInterp.isIgnoreUSL(); final boolean flag3 = aInterp.isPaired(); if (flag1) { newName += "-d"; if (flag2) { newName += "-isl"; } } else { newName += "-u"; if (flag3) { newName += "-cpe"; } } return newName; }
/* * (non-Javadoc) * * @see cytoscape.util.SwingWorker#construct() */ @Override public Object construct() { progress = 0; for (final File inputFile : inputFiles) { // Make a new network in cytoscape from a filename in // the network-directory CyNetwork network = null; try { write(Messages.SM_LOADING + inputFile.getName() + " ... "); if (!inputFile.isFile()) { throw new RuntimeException(); } CyNetworkReader reader = cyNetworkViewReaderMgr.getReader(inputFile.toURI(), inputFile.getName()); try { // TODO Use the Task's task monitor reader.run(new SampleTaskMonitor()); } catch (Exception ex) { return null; } network = reader.getNetworks()[0]; network.getRow(network).set(CyNetwork.NAME, inputFile.getName()); } catch (RuntimeException e) { writeLine(Messages.SM_READERROR); reports.add(new NetworkAnalysisReport(inputFile, null, AnalysisError.NETWORK_NOT_OPENED)); progress += PROGRESS_PER_NET; continue; } // Get all possible interpretations for the network NetworkInspection inspection = null; try { inspection = CyNetworkUtils.inspectNetwork(network); } catch (IllegalArgumentException e) { writeLine(Messages.SM_DONE); reports.add(new NetworkAnalysisReport(inputFile, null, AnalysisError.NETWORK_EMPTY)); unloadNetwork(inputFile, network); continue; } catch (NullPointerException e) { reports.add(new NetworkAnalysisReport(inputFile, null, AnalysisError.NETWORK_FILE_INVALID)); progress += PROGRESS_PER_NET; continue; } final NetworkInterpretation[] interprs = filterInterpretations(getInterpretations(inspection)); final int intCount = interprs.length; final int advance = PROGRESS_PER_NET / intCount; // Run NetworkAnalyzer on all accepted interpretations writeLine(Messages.SM_DONE); for (int j = 0; j < intCount; progress += advance, ++j) { if (cancelled) { writeLine(Messages.SM_ANALYSISC); return null; } // Run the analysis for an interpretation final NetworkInterpretation interpretation = interprs[j]; try { if (interpretation.isDirected()) { analyzer = new DirNetworkAnalyzer(network, null, interpretation); } else { analyzer = new UndirNetworkAnalyzer(network, null, interpretation); } writeLine( Messages.DI_ANALYZINGINTERP1 + (j + 1) + Messages.DI_ANALYZINGINTERP2 + intCount); final int maxProgress = analyzer.getMaxProgress(); scale = (double) advance / (double) maxProgress; analyzing = true; subProgress = 0; analyzer.computeAll(); analyzing = false; if (cancelled) { writeLine(Messages.SM_ANALYSISC); return null; } final NetworkStats stats = analyzer.getStats(); synchronized (this) { analyzer = null; } final String networkName = network.getRow(network).get("name", String.class); stats.setTitle(networkName + interpretation.getInterpretSuffix()); final String extendedName = networkName + createID(interpretation); try { if (SettingsSerializer.getPluginSettings().getUseNodeAttributes()) { if (!saveNodeAttributes( network, interpretation.isDirected(), outputDir, extendedName)) { writeLine(Messages.SM_ATTRIBUTESNOTSAVED); } } File netstatFile = new File(outputDir, extendedName + ".netstats"); StatsSerializer.save(stats, netstatFile); writeLine(Messages.SM_RESULTSSAVED); reports.add(new NetworkAnalysisReport(inputFile, interpretation, netstatFile)); } catch (SecurityException ex) { writeError(Messages.SM_SAVEERROR); reports.add( new NetworkAnalysisReport( inputFile, interpretation, AnalysisError.OUTPUT_NOT_CREATED)); } catch (FileNotFoundException ex) { writeError(Messages.SM_SAVEERROR); reports.add( new NetworkAnalysisReport( inputFile, interpretation, AnalysisError.OUTPUT_NOT_CREATED)); } catch (IOException e) { writeError(Messages.SM_SAVEERROR); reports.add( new NetworkAnalysisReport( inputFile, interpretation, AnalysisError.OUTPUT_IO_ERROR)); } if (cancelled) { writeLine(Messages.SM_ANALYSISC); return null; } } catch (Exception e) { reports.add( new NetworkAnalysisReport(inputFile, interpretation, AnalysisError.INTERNAL_ERROR)); } } unloadNetwork(inputFile, network); } return null; }