@Override public void actionPerformed(ActionEvent arg0) { List<Xref> xrefs = standaloneEngine.getSwingEngine().getEngine().getActivePathway().getDataNodeXrefs(); Set<Xref> setRefs = new HashSet<Xref>(xrefs); DataInterface gex = standaloneEngine.getGexManager().getCurrentGex(); CachedData cache = standaloneEngine.getGexManager().getCachedData(); Collection<? extends ISample> names = null; Map<String, List<TissueResult>> data = new TreeMap<String, List<TissueResult>>(); try { names = gex.getOrderedSamples(); for (ISample is : names) { if (!is.getName().equals(" Gene Name")) { data.put(is.getName().trim(), new ArrayList<TissueResult>()); } } for (Xref ref : setRefs) { List<? extends IRow> pwData = cache.syncGet(ref); if (!pwData.isEmpty()) { for (ISample is : names) { for (IRow ir : pwData) { if (!is.getName().equals(" Gene Name")) { Double value = (Double) ir.getSampleData(is); String dd = ir.getXref().getId(); TissueResult tr = new TissueResult(dd, value); data.get(is.getName().trim()).add(tr); } } } } } } catch (DataException e) { e.printStackTrace(); } catch (IDMapperException e) { e.printStackTrace(); } Vector<Double> vP = new Vector<Double>(); Vector<Double> vM = new Vector<Double>(); for (Entry<String, List<TissueResult>> entry : data.entrySet()) { int length = entry.getValue().size(); double i = 0; double tmp = 0; for (TissueResult tr : entry.getValue()) { if (tr.getExpression() >= (2 / Math.log10(2))) { i++; } tmp += tr.getExpression(); } vP.add(i / length * 100); vM.add(tmp / length); } dtm.addCollum(vP, 2); dtm.addCollum(vM, 3); }