JAL-3407 add and document ComputePeptideVariants.groovy
[jalview.git] / examples / groovy / ComputePeptideVariants.groovy
1 import jalview.datamodel.SequenceFeature
2 import jalview.gui.Desktop
3 def af = jalview.bin.Jalview.currentAlignFrame
4 def av = af.viewport
5 def fr = Desktop.getAlignFrameFor(av.codingComplement).getFeatureRenderer()
6 def counts = 0
7 def countm = 0
8 for (seq in av.alignment.sequences) 
9 {
10    ds = seq.datasetSequence
11    for (res = ds.start ; res <= ds.end; res++) 
12    {
13      mf = fr.findComplementFeaturesAtResidue(seq, res)
14      if (mf != null)
15      {
16          for (feature in mf.features)
17          {
18            variant = mf.findProteinVariants(feature)
19            if (!"".equals(variant))
20            {
21                type = variant.contains("=") ? "synonymous_variant" : "missense_variant"
22                if (type.equals("synonymous_variant")) counts++ else countm++;
23                sf = new SequenceFeature(type, variant, res, res, null)
24                seq.addSequenceFeature(sf)
25            }
26          }
27      }
28    }
29 }
30 af.getFeatureRenderer().featuresAdded()
31 af.alignPanel.paintAlignment(true, true)
32 println "Added " + countm + " missense and " + counts + " synonymous variants"