From b5253af1e11db983996d6f21b198e7c084fb9ed0 Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Fri, 20 Aug 2021 16:42:13 +0100 Subject: [PATCH] JAL-3851 quick hack of highlighting position in an Ensembl ID --- src/jalview/gbtest/TestListener.java | 63 +++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/src/jalview/gbtest/TestListener.java b/src/jalview/gbtest/TestListener.java index 8321fb9..a1f47b0 100644 --- a/src/jalview/gbtest/TestListener.java +++ b/src/jalview/gbtest/TestListener.java @@ -9,7 +9,9 @@ import java.util.HashMap; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import jalview.analysis.SeqsetUtils; import jalview.bin.Cache; +import jalview.datamodel.AlignmentI; import jalview.datamodel.SearchResults; import jalview.datamodel.SequenceI; import jalview.gui.AlignFrame; @@ -18,10 +20,11 @@ import jalview.gui.SeqPanel; import jalview.gui.SequenceFetcher; import jalview.httpserver.AbstractRequestHandler; import jalview.structure.SelectionSource; +import jalview.structure.VamsasSource; import jalview.util.DBRefUtils; public class TestListener extends AbstractRequestHandler - implements SelectionSource + implements SelectionSource, VamsasSource { private String MY_PATH = "TEST"; @@ -159,6 +162,64 @@ public class TestListener extends AbstractRequestHandler sr.addResult(seq, start, end); seqPanel.highlightSequence(sr); } + else if (pathInfo.startsWith("/ensembl/")) + { + String temp = pathInfo.substring("/ensembl/".length()); + String id = temp.indexOf("/") > -1 + ? temp.substring(0, temp.indexOf("/")) + : temp; + // id is an ensembl gene ID - we look through our alignFrames to find a sequence + SequenceI ensDatasetSeq = null; + AlignFrame af=null; + // ideally Desktop.getDataSets() to find all datasets with this one.. + for (AlignFrame _af: alignFrames.values()) + { + AlignmentI ds = _af.getCurrentView().getAlignment().getDataset(); + if ((ensDatasetSeq = ds.findName(id)) !=null) { + af = _af; + break; + } + } + if (ensDatasetSeq!=null) + { + Cache.warn("*** temp=" + temp); + Cache.warn("*** id=" + id); + PrintWriter pw = response.getWriter(); + pw.println("id=" + id); + pw.println("alignframe=" + (af == null ? null : af.getTitle())); + if (af == null) + { + pw.println("error=alignframe not ready"); + return; + } + String startS = request.getParameter("start"); + String endS = request.getParameter("end"); + int start = 0; + int end = -1; + if (startS != null || endS != null) + { + try + { + if (startS!=null) { + start = Integer.parseInt(startS); + } + if (endS!=null) + { + end = Integer.parseInt(endS); + } + } catch (NumberFormatException e) + { + Cache.warn(Cache.getStackTraceString(e)); + pw.println("error=couldn't parse start and end"); + return; + } + } + pw.println("start=" + start); + pw.println("end=" + end); + // highlight start for now + af.getCurrentView().getStructureSelectionManager().mouseOverVamsasSequence(ensDatasetSeq, start, this); + } + } } catch (Exception e) { Cache.warn(Cache.getStackTraceString(e)); -- 1.7.10.2