From: j.procter@dundee.ac.uk Date: Fri, 12 Sep 2014 09:52:46 +0000 (+0100) Subject: JAL-1516 Annotation row score output script for jalview-discuss request from David... X-Git-Tag: Release_2_8_2b1^2~57 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=a60611ba87555ed0e135eb4a3b858d5768ff0506;p=jalview.git JAL-1516 Annotation row score output script for jalview-discuss request from David M Garcia --- 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."; +}