4 using System.Collections.Generic;
     6 public class RNAView : MonoBehaviour {
    14         public Hbparam(
float dreference, 
float alphaa, 
float alphab, 
int sv)
    25     private static Dictionary<string, int> 
bases = 
new Dictionary<string, int>()
    36         hb_params[0] = 
new Hbparam[4][];
    37         hb_params[0][0] = 
new Hbparam[2];
    38         hb_params[0][0][0] = 
new Hbparam(6.24f, 2.77f, 1.20f, 2);
    39         hb_params[0][0][1] = 
new Hbparam(7.33f, 2.93f, 1.27f, 1);
    41         hb_params[0][1] = 
new Hbparam[4];
    42         hb_params[0][1][0] = 
new Hbparam(5.07f, 2.67f, 2.95f, 2);
    43         hb_params[0][1][1] = 
new Hbparam(6.26f, 1.48f, 1.20f, 2);
    44         hb_params[0][1][2] = 
new Hbparam(7.02f, 1.93f, 2.06f, 1);
    45         hb_params[0][1][3] = 
new Hbparam(7.54f, 2.14f, 0.80f, 1);
    47         hb_params[0][2] = 
new Hbparam[2];
    48         hb_params[0][2][0] = 
new Hbparam(4.80f, 2.76f, 2.17f, 3);
    49         hb_params[0][2][1] = 
new Hbparam(7.40f, 1.28f, 2.89f, 1);
    51         hb_params[0][3] = 
new Hbparam[2];
    52         hb_params[0][3][0] = 
new Hbparam(5.67f, 2.15f, 1.72f, 2);
    53         hb_params[0][3][1] = 
new Hbparam(7.05f, 2.85f, 1.43f, 1);
    55         hb_params[1] = 
new Hbparam[4][];
    57         hb_params[1][0] = 
new Hbparam[4];
    58         hb_params[1][0] = hb_params[0][1];
    60         hb_params[1][1] = 
new Hbparam[4];
    61         hb_params[1][1][0] = 
new Hbparam(5.43f, 2.55f, 2.55f, 2);
    62         hb_params[1][1][1] = 
new Hbparam(7.33f, 1.01f, 1.73f, 1);
    63         hb_params[1][1][2] = 
new Hbparam(6.86f, 0.98f, 0.98f, 2);
    64         hb_params[1][1][3] = 
new Hbparam(7.33f, 1.73f, 1.01f, 1);
    66         hb_params[1][2] = 
new Hbparam[2];
    67         hb_params[1][2][0] = 
new Hbparam(5.60f, 2.40f, 1.82f, 1);
    68         hb_params[1][2][1] = 
new Hbparam(6.94f, 2.07f, 1.48f, 1);
    70         hb_params[1][3] = 
new Hbparam[2];
    71         hb_params[1][3][0] = 
new Hbparam(4.96f, 2.92f, 2.23f, 2);
    72         hb_params[1][3][1] = 
new Hbparam(6.43f, 0.84f, 1.95f, 2);
    74         hb_params[2] = 
new Hbparam[4][];
    76         hb_params[2][0] = 
new Hbparam[2];
    77         hb_params[2][0] = hb_params[0][2];
    79         hb_params[2][1] = 
new Hbparam[2];
    80         hb_params[2][1] = hb_params[1][2];
    82         hb_params[2][2] = 
new Hbparam[1];
    83         hb_params[2][2][0] = 
new Hbparam(4.91f, 2.22f, 2.24f, 2);
    85         hb_params[2][3] = 
new Hbparam[2];
    86         hb_params[2][3][0] = 
new Hbparam(5.62f, 1.75f, 2.64f, 1);
    87         hb_params[2][3][1] = 
new Hbparam(7.48f, 2.88f, 2.71f, 1);
    89         hb_params[3] = 
new Hbparam[4][];
    91         hb_params[3][0] = 
new Hbparam[2];
    92         hb_params[3][0] = hb_params[0][3];
    94         hb_params[3][1] = 
new Hbparam[2];
    95         hb_params[3][1] = hb_params[1][3];
    97         hb_params[3][2] = 
new Hbparam[2];
    98         hb_params[3][2] = hb_params[2][3];
   100         hb_params[3][3] = 
new Hbparam[2];
   101         hb_params[3][3][0] = 
new Hbparam(5.39f, 1.71f, 2.61f, 1);
   102         hb_params[3][3][1] = 
new Hbparam(7.33f, 2.61f, 2.39f, 1);
   109         alpa = Mathf.Cos (alpa - hbp.
alpa);
   110         alpb = Mathf.Cos (alpb - hbp.
alpb);
   117         float Vr = -hbp.
s * Mathf.Exp(-r * r);
   128     private static float angle(Vector3 a, Vector3 b, Vector3 c) {
   132         float w = Vector3.Dot(u, v);
   133         w /= (u.magnitude * v.magnitude);
   134         return Mathf.Acos(w);
   138         Vector3 n = Vector3.Cross (p2-p1, p3-p1);
   140         return Vector3.Dot(n, x-p2);
   143     private static float NewPlane(Vector3 a, Vector3 b, Vector3 c, Vector3 d) {
   148     private static float ENewPlane(
int atomId1, 
int atomId2) {
   152         for (
int i = 0; i < 3; i++)
   180         float dij = Vector3.Distance(posi, posj);
   207         int resAVal = bases[resA];
   208         int resBVal = bases[resB];
   214         Hbparam[] parameterList = hb_params[resAVal][resBVal];
   216         for(
int k = 0; k < parameterList.Length; k++)
   218             param = parameterList[k];
   219             Ehb += 
Ehbond(dij, ca, cb, param);
   230         List<int[]> bonds = 
new List<int[]>();
   231         float threshold = 0.1f;
   238                 atom1 = (int)entry1.Value[entry1.Value.Count - 1];
   239                 atom2 = (
int)entry2.Value[entry2.Value.Count - 1];
   247                 if (bases[base1] > bases[base2])
   257                 if (energy < -threshold)
   259                     bonds.Add(
new int[]{entry1.Key, entry2.Key});
 static float ENewPlane(int atomId1, int atomId2)
 
static List< int[]> findHbonds()
 
static float angle(Vector3 a, Vector3 b, Vector3 c)
 
static float computeEnergyForBasePair(int residueId1, int residueId2)
 
static List< string > atomsNamelist
The name of each atom. 
 
static List< Vector3 > atomsIMDSimulationLocationlist
The coordinates of each atom, simulated through an IMD simulation. 
 
static List< float > scale_RNA
RNA Scale parameters 
 
static float Ehbond(float dij, float alpa, float alpb, Hbparam hbp)
 
static Dictionary< int, ArrayList > residues
The residues. 
 
static float NewPlane(Vector3 a, Vector3 b, Vector3 c, Vector3 d)
 
static Hbparam[][][] hb_params
 
Hbparam(float dreference, float alphaa, float alphab, int sv)
 
static void RNAView_init()
 
static float PointToPlaneDistance(Vector3 p1, Vector3 p2, Vector3 p3, Vector3 x)
 
static Dictionary< string, int > bases
 
static List< int > baseIdx
The index (in tables) of the base extremity.