1
/*****************************************************************
2
* Unipro UGENE - Integrated Bioinformatics Suite
3
* Copyright (C) 2008 Unipro, Russia (http://ugene.unipro.ru)
6
* This source code is distributed under the terms of the
7
* GNU General Public License. See the files COPYING and LICENSE
9
*****************************************************************/
11
#include "DIProperties.h"
13
#include <QtCore/QStringList>
19
static QStringList getStrProperties();
20
DinucleotitePropertyRegistry::DinucleotitePropertyRegistry() {
21
//init all 38+ properties
22
foreach(QString prop, getStrProperties()) {
23
registerProperty(prop);
27
DinucleotitePropertyRegistry::~DinucleotitePropertyRegistry() {
28
foreach(DiProperty* d, props) {
34
static void normalize(DiProperty* p);
36
void DinucleotitePropertyRegistry::registerProperty(const QString& str) {
37
QMap<QString, QString> keys;
39
float defVal = -100000;
40
qFill((float*)data, data + 16, defVal);
42
QStringList lines = str.split('\n', QString::SkipEmptyParts);
44
foreach(QString line, lines) {
45
//printf("line=%s\n",line.toAscii().constData());
47
line = line.trimmed();
48
assert(line.length() >= 4);
49
char c1 = line[0].toAscii();
50
char c2 = line[1].toAscii();
51
int index = DiProperty::index(c1, c2);
53
float val = line.mid(3).toFloat(&ok);
55
assert(data[index] == defVal);
58
if (line.length() < 3) {
61
char c = line[2].toAscii();
63
keys[line.left(2)] = line.mid(3);
66
assert(c == 'N' && line == "DINUCLEOTIDE");
71
assert(std::count((float*)data, data + 16, defVal) == 0);
73
DiProperty* p = new DiProperty();
75
qCopy((float*)data, data + 16, (float*)p->original);
81
static void normalize(DiProperty* p) {
83
for(int i=0; i < 16; i++) {
84
average += p->original[i];
90
for (int i=0;i<16;i++) {
91
float v = p->original[i];
92
dispersion+=(average - v)*(average - v);
95
float sdeviation = sqrt(dispersion);
96
p->sdeviation = sdeviation;
98
for(int i=0; i< 16; i++) {
99
p->normalized[i] = (p->original[i] - average) / sdeviation;
103
static QStringList getStrProperties() {
104
//todo: move props to file
105
static const QString _properties= QString("") + "\
109
ML dinucleotide step\n\
117
PM Calculated by Sklenar, and averaged by Ponomarenko\n\
121
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/TWIST.html\n\
123
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Tw00_bDNA.html\n\
146
ML dinucleotide step\n\
154
PM Calculated by Sklenar, and averaged by Ponomarenko\n\
158
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/RISE.html\n\
160
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Rs01_bDNA.html\n\
183
ML dinucleotide step\n\
191
PM Calculated by Sklenar, and averaged by Ponomarenko\n\
195
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Bn02_bDNA.html\n\
204
// 6.74 -> 3.07 for TA dinucleotide by Dmitri Oschepkov
222
ML dinucleotide step\n\
230
PM Calculated by Sklenar, and averaged by Ponomarenko\n\
234
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/TIP.html\n\
236
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Tp03_bDNA.html\n\
259
ML dinucleotide step\n\
267
PM Calculated by Sklenar, and averaged by Ponomarenko\n\
271
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/INCLIN.html\n\
273
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/In04_bDNA.html\n\
296
ML dinucleotide step\n\
303
PN Major groove width\n\
304
PM Calculated by Sklenar, and averaged by Ponomarenko\n\
308
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/MW05_bDNA.html\n\
331
ML dinucleotide step\n\
338
PN Major groove depth\n\
339
PM Calculated by Sklenar, and averaged by Ponomarenko\n\
343
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/MD06_bDNA.html\n\
366
ML dinucleotide step\n\
373
PN Minor groove width\n\
374
PM Calculated by Sklenar, and averaged by Ponomarenko\n\
378
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/mw07_bDNA.html\n\
401
ML dinucleotide step\n\
408
PN Minor groove depth\n\
409
PM Calculated by Sklenar, and averaged by Ponomarenko\n\
413
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/md08_bDNA.html\n\
436
ML dinucleotide step\n\
443
PM Averaged for X-rays\n\
447
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/ROLL.html\n\
449
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Rl09_bDNA.html\n\
472
ML dinucleotide step\n\
479
PM Averaged for X-rays\n\
483
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/TWIST.html\n\
485
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Tw10_bDNA.html\n\
508
ML dinucleotide step\n\
515
PM Averaged for X-rays\n\
519
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/TILT.html\n\
521
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Tl11_bDNA.html\n\
544
ML dinucleotide step\n\
551
PM Averaged for X-rays\n\
555
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/SLIDE.html\n\
557
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Sl12_bDNA.html\n\
579
MD DNA/protein-complex\n\
580
ML dinucleotide step\n\
587
PM Averaged for X-rays\n\
591
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/ROLL.html\n\
593
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Rl13_bDNA.html\n\
615
MD DNA/protein-complex\n\
616
ML dinucleotide step\n\
623
PM Averaged for X-rays\n\
627
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/TWIST.html\n\
629
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Tw14_bDNA.html\n\
651
MD DNA/protein-complex\n\
652
ML dinucleotide step\n\
659
PM Averaged for X-rays\n\
663
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/TILT.html\n\
665
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Tl15_bDNA.html\n\
687
MD DNA/protein-complex\n\
688
ML dinucleotide step\n\
695
PM Averaged for X-rays\n\
699
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/SLIDE.html\n\
701
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Sl16_bDNA.html\n\
724
ML dinucleotide step\n\
731
PM Regressed for X-rays\n\
735
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/TWIST.html\n\
737
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Tw17_bDNA.html\n\
760
ML dinucleotide step\n\
767
PM Regressed for X-rays\n\
771
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/WEDGE.html\n\
773
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Wd18_bDNA.html\n\
796
ML dinucleotide step\n\
803
PM Regressed for X-rays\n\
807
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/WEDGE.html\n\
809
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Dr19_bDNA.html\n\
830
MN Physico-chemical\n\
832
ML dinucleotide step\n\
838
PN Persistence length\n\
843
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/PL20_bDNA.html\n\
864
MN Physico-chemical\n\
866
ML dinucleotide step\n\
872
PN Melting temperature\n\
877
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/MT21_bDNA.html\n\
898
MN Physico-chemical\n\
900
ML dinucleotide step\n\
906
PN Probability to be contacting with a nucleosome core\n\
911
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Nb22_bDNA.html\n\
932
MN Physico-chemical\n\
934
ML dinucleotide step\n\
940
PN Mobility to bend towards major groove\n\
945
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/MB23_bDNA.html\n\
966
MN Physico-chemical\n\
968
ML dinucleotide step\n\
974
PN Mobility to bend towords minor groove\n\
979
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/mb24_bDNA.html\n\
1000
MN Conformational\n\
1002
ML dinucleotide step\n\
1009
PM Averaged for the X-ray centers\n\
1013
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/TWIST.html\n\
1015
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Tw25_bDNA.html\n\
1036
MN Conformational\n\
1038
ML dinucleotide step\n\
1045
PM Averaged for the X-ray centers\n\
1049
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/TILT.html\n\
1051
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Tl26_bDNA.html\n\
1072
MN Conformational\n\
1074
ML dinucleotide step\n\
1081
PM Averaged for the X-ray centers\n\
1085
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/ROLL.html\n\
1087
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Rl27_bDNA.html\n\
1108
MN Conformational\n\
1110
ML dinucleotide step\n\
1117
PM Averaged for the X-ray centers\n\
1121
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/SLIDE.html\n\
1123
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Sl28_bDNA.html\n\
1144
MN Conformational\n\
1146
ML dinucleotide step\n\
1153
PM Averaged for the X-ray centers\n\
1154
PV PropellerCentr\n\
1157
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/images/PROPEL.html\n\
1159
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Pr29_bDNA.html\n\
1180
MN Conformational\n\
1182
ML dinucleotide step\n\
1188
PN Minor groove size\n\
1189
PM Averaged for the X-ray centers\n\
1193
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/ms30_bDNA.html\n\
1214
MN Conformational\n\
1216
ML dinucleotide step\n\
1222
PN Minor groove dist\n\
1223
PM Averaged for the X-ray centers\n\
1227
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/md31_bDNA.html\n\
1248
MN Conformational\n\
1250
ML dinucleotide step\n\
1256
PN Major groove size\n\
1257
PM Averaged for the X-ray centers\n\
1261
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/MS32_bDNA.html\n\
1282
MN Conformational\n\
1284
ML dinucleotide step\n\
1290
PN Major groove dist\n\
1291
PM Averaged for the X-ray centers\n\
1295
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/MD33_bDNA.html\n\
1316
MN Physoco-chemical\n\
1318
ML dinucleotide step\n\
1324
PN Clash strength\n\
1325
PM Averaged for the X-ray centers\n\
1329
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/Cl34_bDNA.html\n\
1350
MN Physoco-chemical\n\
1352
ML dinucleotide step\n\
1358
PN Enthalpy change\n\
1363
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/dH35_bDNA.html\n\
1384
MN Physoco-chemical\n\
1386
ML dinucleotide step\n\
1392
PN Entropy change\n\
1397
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/dS36_bDNA.html\n\
1418
MN Physoco-chemical\n\
1420
ML dinucleotide step\n\
1426
PN Free energy change\n\
1431
WW http://wwwmgs.bionet.nsc.ru/Programs/acts2/gallery/dF37_bDNA.html\n\
1452
QStringList l = _properties.split("//\n", QString::SkipEmptyParts);
1453
assert(l.size() == 38);