From a60611ba87555ed0e135eb4a3b858d5768ff0506 Mon Sep 17 00:00:00 2001 From: "j.procter@dundee.ac.uk" Date: Fri, 12 Sep 2014 10:52:46 +0100 Subject: [PATCH] JAL-1516 Annotation row score output script for jalview-discuss request from David M Garcia --- .../groovy/annotationForSelectedSequence.groovy | 49 ++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 examples/groovy/annotationForSelectedSequence.groovy diff --git a/examples/groovy/annotationForSelectedSequence.groovy b/examples/groovy/annotationForSelectedSequence.groovy new file mode 100644 index 0000000..851e035 --- /dev/null +++ b/examples/groovy/annotationForSelectedSequence.groovy @@ -0,0 +1,49 @@ +// Requested by David M Garcia (v3) +// very messy script to output the scores in annotation rows +// for the first sequence in a selection on the topmost alignment + +// thanks to this thread for cut'n'paste code +// http://comments.gmane.org/gmane.comp.lang.groovy.user/53010 + +// Jalview issue at http://issues.jalview.org/browse/JAL-1516 + +import java.awt.datatransfer.StringSelection +import static java.awt.Toolkit.* + + +def curviewport = Jalview.getAlignframes()[Jalview.getAlignframes().length-1].getViewport(); + +// TSV output by default. +// change "\t" to "," to output CSV file +def sep = "\t"; + +if (curviewport.getSelectionGroup()) { + // gets selection for topmost alignment + def selreg = curviewport.getSelectionGroup(); + // get aligned positions of first sequence selected + def gaps = selreg.getSequenceAt(0).gapMap(); + String csvfile=""; + String sseq="" + + curviewport.getAlignment().getAlignmentAnnotation().eachWithIndex{ aa, apos -> + def count=1 + String csv="" + gaps.eachWithIndex{col,spos -> if (col>=selreg.getStartRes() && col<=selreg.getEndRes()) { + // add sequence for debugging + if (count>sseq.length()) { sseq+=sep+selreg.getSequenceAt(0).getCharAt(col); count=sseq.length()+1;}; + // output height of histogram + csv+=sep+aa.annotations[col].value; + // Uncomment to output string shown in tooltip + // csv+=sep+aa.annotations[col].description; + }} + if (csv.length()>0) { + csvfile+=aa.label+csv+"\n" + } + } + defaultToolkit.systemClipboard.setContents(new StringSelection(selreg.getSequenceAt(0).getName()+sseq+"\n"+csvfile), null) + print "Sequence"+sseq+"\n"; + print csvfile; + print "\nAlignment Annotation for first selected sequence copied to the clipboard.\n" +} else { + "Select a region in the alignment window."; +} -- 1.7.10.2