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.