1 package fr.orsay.lri.varna.applications.fragseq;
4 import java.awt.datatransfer.DataFlavor;
5 import java.util.Hashtable;
6 import java.util.Random;
8 import fr.orsay.lri.varna.models.annotations.ChemProbAnnotation;
9 import fr.orsay.lri.varna.models.annotations.ChemProbAnnotation.ChemProbAnnotationType;
10 import fr.orsay.lri.varna.models.rna.ModeleBase;
11 import fr.orsay.lri.varna.models.rna.RNA;
13 public class FragSeqAnnotationDataModel extends FragSeqModel {
16 private Hashtable<Integer, ChemProbModel> _values = new Hashtable<Integer, ChemProbModel>();
19 public FragSeqAnnotationDataModel(String id, String name)
25 public FragSeqAnnotationDataModel()
27 this(Long.toHexString(Double.doubleToLongBits(Math.random())),Long.toHexString(Double.doubleToLongBits(Math.random())));
30 public void addValue(ChemProbModel cpm)
32 _values.put(cpm._baseNumber1,cpm);
35 static Random _rnd = new Random();
37 public static void addRandomAnnotations(RNA r,FragSeqAnnotationDataModel data){
38 int nb = r.getSize()/5+_rnd.nextInt(r.getSize()/3);
39 Color[] colors = {Color.orange,Color.black,Color.blue.darker(),Color.green.darker(), Color.gray};
40 ChemProbAnnotationType[] types = ChemProbAnnotationType.values();
43 int index = _rnd.nextInt(r.getSize()-1);
44 int number1 = r.getBaseNumber(index);
45 int number2 = r.getBaseNumber(index+1);
46 ChemProbModel cpm = data.new ChemProbModel(number1,number2,colors[_rnd.nextInt(colors.length)],2*_rnd.nextDouble(),types[_rnd.nextInt(types.length)],true);
52 public String toString()
62 public void applyTo(RNA r)
64 r.clearChemProbAnnotations();
65 for (ChemProbModel c : _values.values())
72 public class ChemProbModel
75 private double _intensity;
76 private ChemProbAnnotationType _type;
78 private int _baseNumber1;
79 private int _baseNumber2;
81 public ChemProbModel (int baseNumber1,int baseNumber2, Color color, double intensity, ChemProbAnnotationType type, boolean out)
84 _intensity = intensity;
87 _baseNumber1 = baseNumber1;
88 _baseNumber2 = baseNumber2;
91 public void applyTo(RNA r)
93 System.out.println(this);
94 int i = r.getIndexFromBaseNumber(_baseNumber1);
95 int j = r.getIndexFromBaseNumber(_baseNumber2);
98 ModeleBase mb1 = r.getBaseAt(i);
99 ModeleBase mb2 = r.getBaseAt(j);
100 r.addChemProbAnnotation(new ChemProbAnnotation(mb1, mb2, _type, _intensity,_color, _out));
104 public String toString()
106 return ""+_baseNumber1+": col="+_color+" int="+_intensity+" type="+_type+" out="+_out;
110 public static DataFlavor Flavor = new DataFlavor(FragSeqAnnotationDataModel.class, "RNA Chem Prob Data");