--- /dev/null
+// 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.";
+}