- some stylistic changes
- changed quotes
{
// считывание индекса
index.resize(0);
{
// считывание индекса
index.resize(0);
- for (ArrayRef< const int >::iterator ai {selec.atomIndices().begin()}; (ai < selec.atomIndices().end()); ai++) {
+ for (ArrayRef< const int >::iterator ai {selec.atomIndices().begin()}; (ai < selec.atomIndices().end()); ++ai) {
index.push_back(static_cast< size_t >(*ai));
}
index.push_back(static_cast< size_t >(*ai));
}
// создание пар для фитирования структур
fitPairs.resize(0);
fitPairs.resize(bone);
// создание пар для фитирования структур
fitPairs.resize(0);
fitPairs.resize(bone);
- for (size_t i {0}; i < bone; i++) {
+ for (size_t i {0}; i < bone; ++i) {
- for (size_t j {0}; j < domain_min_size; j++) {
+ for (size_t j {0}; j < domain_min_size; ++j) {
fitPairs[i].push_back(std::make_pair(j + i, j + i));
}
}
fitPairs[i].push_back(std::make_pair(j + i, j + i));
}
}
Domains::analyzeFrame(int frnr, const t_trxframe &fr, t_pbc *pbc, TrajectoryAnalysisModuleData *pdata)
{
// считывания текущего фрейма траектории
Domains::analyzeFrame(int frnr, const t_trxframe &fr, t_pbc *pbc, TrajectoryAnalysisModuleData *pdata)
{
// считывания текущего фрейма траектории
- for (size_t i {0}; i < index.size(); i++) {
+ for (size_t i {0}; i < index.size(); ++i) {
trajectory[i] = fr.x[index[i]];
}
trajectory[i] = fr.x[index[i]];
}
// фитирование каждой копии
#pragma omp parallel for ordered schedule(dynamic) firstprivate(reference)
// фитирование каждой копии
#pragma omp parallel for ordered schedule(dynamic) firstprivate(reference)
- for (size_t i = 0; i < bone; i++) {
+ for (size_t i = 0; i < bone; ++i) {
MyFitNew(reference, tsTemp[i], fitPairs[i], 0.000'001);
}
#pragma omp barrier
MyFitNew(reference, tsTemp[i], fitPairs[i], 0.000'001);
}
#pragma omp barrier
std::vector< std::pair< size_t, size_t > > testPairs;
testPairs.resize(0);
std::vector< std::pair< size_t, size_t > > testPairs;
testPairs.resize(0);
- for (size_t i {0}; i < 27; i++) {
+ for (size_t i {0}; i < 27; ++i) {
testFrame1.push_back(x1 * static_cast< float >(i % 3) + y1 * static_cast< float >((i % 9) / 3) + z1 * static_cast< float >(i / 9));
testFrame2.push_back(x2 * static_cast< float >(i % 3) + y2 * static_cast< float >((i % 9) / 3) + z2 * static_cast< float >(i / 9));
testPairs.push_back(std::make_pair(i, i));
testFrame1.push_back(x1 * static_cast< float >(i % 3) + y1 * static_cast< float >((i % 9) / 3) + z1 * static_cast< float >(i / 9));
testFrame2.push_back(x2 * static_cast< float >(i % 3) + y2 * static_cast< float >((i % 9) / 3) + z2 * static_cast< float >(i / 9));
testPairs.push_back(std::make_pair(i, i));
CalcMid(testFrame1, testFrame3, mid1, mid2, testPairs);
ASSERT_NEAR((mid1 - mid2).norm(), 0., 0.000001);
double testF {0};
CalcMid(testFrame1, testFrame3, mid1, mid2, testPairs);
ASSERT_NEAR((mid1 - mid2).norm(), 0., 0.000001);
double testF {0};
- for (size_t i {0}; i < testFrame1.size(); i++) {
+ for (size_t i {0}; i < testFrame1.size(); ++i) {
testF += F(testFrame1[i].toDVec(), testFrame3[i].toDVec(), angl);
}
ASSERT_NEAR(testF, 0., 0.000001);
testF += F(testFrame1[i].toDVec(), testFrame3[i].toDVec(), angl);
}
ASSERT_NEAR(testF, 0., 0.000001);
std::vector< std::pair< size_t, size_t > > testPairs;
testPairs.resize(0);
std::vector< std::pair< size_t, size_t > > testPairs;
testPairs.resize(0);
- for (size_t i {0}; i < 27; i++) {
+ for (size_t i {0}; i < 27; ++i) {
testFrame1.push_back(x1 * static_cast< float >(i % 3) + y1 * static_cast< float >((i % 9) / 3) + z1 * static_cast< float >(i / 9));
testFrame2.push_back(x2 * static_cast< float >(i % 3) + y2 * static_cast< float >((i % 9) / 3) + z2 * static_cast< float >(i / 9));
testPairs.push_back(std::make_pair(i, i));
testFrame1.push_back(x1 * static_cast< float >(i % 3) + y1 * static_cast< float >((i % 9) / 3) + z1 * static_cast< float >(i / 9));
testFrame2.push_back(x2 * static_cast< float >(i % 3) + y2 * static_cast< float >((i % 9) / 3) + z2 * static_cast< float >(i / 9));
testPairs.push_back(std::make_pair(i, i));
MyFitNew(fr1, fr2, testPairs, prc);
tF = 0;
DVec angl(0., 0., 0.);
MyFitNew(fr1, fr2, testPairs, prc);
tF = 0;
DVec angl(0., 0., 0.);
- for (size_t i {0}; i < fr1.size(); i++) {
+ for (size_t i {0}; i < fr1.size(); ++i) {
tF += F(fr1[i].toDVec(), fr2[i].toDVec(), angl);
}
}
tF += F(fr1[i].toDVec(), fr2[i].toDVec(), angl);
}
}
* optimal 3x3x3 cubes fitting
*/
* optimal 3x3x3 cubes fitting
*/
- for (size_t i {0}; i < 27; i++) {
+ for (size_t i {0}; i < 27; ++i) {
testFrame1.push_back(x1 * static_cast< float >(i % 3) + y1 * static_cast< float >((i % 9) / 3) + z1 * static_cast< float >(i / 9));
testFrame2.push_back(testFrame1.back() + a);
testPairs.push_back(std::make_pair(i, i));
testFrame1.push_back(x1 * static_cast< float >(i % 3) + y1 * static_cast< float >((i % 9) / 3) + z1 * static_cast< float >(i / 9));
testFrame2.push_back(testFrame1.back() + a);
testPairs.push_back(std::make_pair(i, i));
testFrame1.resize(0);
testFrame2.resize(0);
testFrame1.resize(0);
testFrame2.resize(0);
- for (size_t i {0}; i < 27; i++) {
+ for (size_t i {0}; i < 27; ++i) {
testFrame1.push_back(x2 * static_cast< float >(i % 3) + y2 * static_cast< float >((i % 9) / 3) + z2 * static_cast< float >(i / 9));
testFrame2.push_back(x3 * static_cast< float >(i % 3) + y3 * static_cast< float >((i % 9) / 3) + z3 * static_cast< float >(i / 9));
}
testFrame1.push_back(x2 * static_cast< float >(i % 3) + y2 * static_cast< float >((i % 9) / 3) + z2 * static_cast< float >(i / 9));
testFrame2.push_back(x3 * static_cast< float >(i % 3) + y3 * static_cast< float >((i % 9) / 3) + z3 * static_cast< float >(i / 9));
}
testRef.resize(0);
RVec testA(0., 0., 0.), testB(1., 1., 1.);
testRef.resize(0);
RVec testA(0., 0., 0.), testB(1., 1., 1.);
- for (size_t i {0}; i < 100; i++) {
+ for (size_t i {0}; i < 100; ++i) {
testIndex.push_back(i);
testRef.push_back(testA + testB * static_cast< float >(i));
}
testIndex.push_back(i);
testRef.push_back(testA + testB * static_cast< float >(i));
}
ASSERT_EQ(testDomain.structIndex, testIndex);
ASSERT_EQ(testDomain.refTable.size(), testRef.size());
ASSERT_EQ(testDomain.structIndex, testIndex);
ASSERT_EQ(testDomain.refTable.size(), testRef.size());
- for (size_t j {0}; j < testRef.size(); j++) {
- for (size_t i {0}; i < testRef.size(); i++) {
+ for (size_t j {0}; j < testRef.size(); ++j) {
+ for (size_t i {0}; i < testRef.size(); ++i) {
ASSERT_NEAR(testDomain.refTable[j][i].norm(), (testRef[i] - testRef[j]).norm(), 0.000'01);
}
}
ASSERT_NEAR(testDomain.refTable[j][i].norm(), (testRef[i] - testRef[j]).norm(), 0.000'01);
}
}
testTraj2.resize(0);
testTraj3.resize(0);
RVec testA(1, 2, 3), testB(1, 0, 0), testC(0, 1, 0);
testTraj2.resize(0);
testTraj3.resize(0);
RVec testA(1, 2, 3), testB(1, 0, 0), testC(0, 1, 0);
- for (size_t i0 {0}; i0 < 1000; i0++) {
+ for (size_t i0 {0}; i0 < 1000; ++i0) {
testTraj1.resize(testTraj1.size() + 1);
testTraj2.resize(testTraj2.size() + 1);
testTraj3.resize(testTraj3.size() + 1);
testTraj1.resize(testTraj1.size() + 1);
testTraj2.resize(testTraj2.size() + 1);
testTraj3.resize(testTraj3.size() + 1);
- for (size_t i1 {0}; i1 < 10; i1++) {
+ for (size_t i1 {0}; i1 < 10; ++i1) {
testTraj1.back().push_back(static_cast< float >(i1) * testA + static_cast< float >(i0) * testB);
testTraj2.back().push_back(static_cast< float >(i1) * testA + static_cast< float >(i0) * testB);
testTraj3.back().push_back(static_cast< float >(i1) * testA + static_cast< float >(i0) * testB + static_cast< float >(i0) * testC);
}
testTraj1.back().push_back(static_cast< float >(i1) * testA + static_cast< float >(i0) * testB);
testTraj2.back().push_back(static_cast< float >(i1) * testA + static_cast< float >(i0) * testB);
testTraj3.back().push_back(static_cast< float >(i1) * testA + static_cast< float >(i0) * testB + static_cast< float >(i0) * testC);
}
- for (size_t i1 {0}; i1 < 10; i1++) {
+ for (size_t i1 {0}; i1 < 10; ++i1) {
testTraj1.back().push_back(static_cast< float >(i1) * testA - static_cast< float >(i0) * testB);
testTraj2.back().push_back(static_cast< float >(i1) * testA + static_cast< float >(i0) * testC);
testTraj3.back().push_back(static_cast< float >(i1) * testA + static_cast< float >(i0) * testB - static_cast< float >(i0) * testC);
testTraj1.back().push_back(static_cast< float >(i1) * testA - static_cast< float >(i0) * testB);
testTraj2.back().push_back(static_cast< float >(i1) * testA + static_cast< float >(i0) * testC);
testTraj3.back().push_back(static_cast< float >(i1) * testA + static_cast< float >(i0) * testB - static_cast< float >(i0) * testC);
testIndex.resize(0);
std::vector< RVec > testRef;
testRef.resize(0);
testIndex.resize(0);
std::vector< RVec > testRef;
testRef.resize(0);
- for (size_t i {0}; i < 20; i++) {
+ for (size_t i {0}; i < 20; ++i) {
testIndex.push_back(i);
testRef.push_back(static_cast< float >(i % 10) * testA);
}
testIndex.push_back(i);
testRef.push_back(static_cast< float >(i % 10) * testA);
}
testDomain3.setDefaults(testIndex, testRef, testWindowSize, testDomainMinimumSize, testDomainSearchAlgorythm, testTimeStepBetweenWindows, testSliceNum, testEpsilon, testDelta, testOutPutFileName3);
std::vector< std::vector< RVec > > testTemp1, testTemp2, testTemp3;
testDomain3.setDefaults(testIndex, testRef, testWindowSize, testDomainMinimumSize, testDomainSearchAlgorythm, testTimeStepBetweenWindows, testSliceNum, testEpsilon, testDelta, testOutPutFileName3);
std::vector< std::vector< RVec > > testTemp1, testTemp2, testTemp3;
- for (size_t i {0}; i < 1000; i++) {
+ for (size_t i {0}; i < 1000; ++i) {
testTemp1.resize(0);
testTemp2.resize(0);
testTemp3.resize(0);
testTemp1.resize(0);
testTemp2.resize(0);
testTemp3.resize(0);
testRef.resize(0);
RVec testA(0, 0, 0), testB(1, 1, 1);
testRef.resize(0);
RVec testA(0, 0, 0), testB(1, 1, 1);
- for (size_t i {0}; i < 100; i++) {
+ for (size_t i {0}; i < 100; ++i) {
testIndex.push_back(i);
testRef.push_back(testA + testB * static_cast< float >(i));
}
testIndex.push_back(i);
testRef.push_back(testA + testB * static_cast< float >(i));
}
testDomain.graph.resize(1);
testDomain.graph.front().resize(testSliceNum);
testDomain.graph.resize(1);
testDomain.graph.front().resize(testSliceNum);
- for (size_t i1 {0}; i1 < testSliceNum; i1++) {
+ for (size_t i1 {0}; i1 < testSliceNum; ++i1) {
testDomain.setGraph(testDomain.graph.front()[i1]);
testDomain.setGraph(testDomain.graph.front()[i1]);
- for (size_t i2 {0}; i2 < testIndex.size(); i2++) {
- for (size_t i3 {0}; i3 < testIndex.size(); i3++) {
+ for (size_t i2 {0}; i2 < testIndex.size(); ++i2) {
+ for (size_t i3 {0}; i3 < testIndex.size(); ++i3) {
testDomain.graph.front()[i1][i2][i3].num = 4;
}
}
testDomain.graph.front()[i1][i2][i3].num = 4;
}
}
testDomain.getDomains();
ASSERT_EQ(testDomain.domains.size(), 0);
testDomain.getDomains();
ASSERT_EQ(testDomain.domains.size(), 0);
- for (int i0 {0}; i0 < 3; i0++) {
+ for (int i0 {0}; i0 < 3; ++i0) {
testDomain.graph.resize(1);
testDomain.graph.front().resize(testSliceNum);
testDomain.graph.resize(1);
testDomain.graph.front().resize(testSliceNum);
- for (size_t i1 {0}; i1 < testSliceNum; i1++) {
+ for (size_t i1 {0}; i1 < testSliceNum; ++i1) {
testDomain.setGraph(testDomain.graph.front()[i1]);
testDomain.setGraph(testDomain.graph.front()[i1]);
- for (size_t i2 {0}; i2 < testIndex.size(); i2++) {
- for (size_t i3 {0}; i3 < testIndex.size(); i3++) {
+ for (size_t i2 {0}; i2 < testIndex.size(); ++i2) {
+ for (size_t i3 {0}; i3 < testIndex.size(); ++i3) {
testDomain.graph.front()[i1][i2][i3].num = 100;
}
}
testDomain.graph.front()[i1][i2][i3].num = 100;
}
}
// деструктор класса
domainType::~domainType() {}
// деструктор класса
domainType::~domainType() {}
-// конструктор класса для инициализации
-domainType::domainType() {}
-
// конструктор класса для полноценной инициализации данных
domainType::domainType(const std::vector< size_t > &index, const std::vector< RVec > &reference,
const int windowSize, const int domainMinimumSize,
const int domainSearchAlgorythm, const int timeStepBetweenWindowStarts,
const unsigned int sliceNum, const double epsilon, const double delta,
// конструктор класса для полноценной инициализации данных
domainType::domainType(const std::vector< size_t > &index, const std::vector< RVec > &reference,
const int windowSize, const int domainMinimumSize,
const int domainSearchAlgorythm, const int timeStepBetweenWindowStarts,
const unsigned int sliceNum, const double epsilon, const double delta,
- const std::string outPutFileName) {
+ const std::string &outPutFileName) {
setDefaults(index, reference, windowSize, domainMinimumSize, domainSearchAlgorythm, timeStepBetweenWindowStarts, sliceNum, epsilon, delta, outPutFileName);
}
setDefaults(index, reference, windowSize, domainMinimumSize, domainSearchAlgorythm, timeStepBetweenWindowStarts, sliceNum, epsilon, delta, outPutFileName);
}
-// set numeric values to "-1" / string value to "" - if you want default settings
-// функция заполнения необходимыми данными для вычисления структурных доменов
+// функция заполнения необходимых данных для вычисления структурных доменов
void domainType::setDefaults(const std::vector< size_t > &index, const std::vector< RVec > &reference,
const int windowSize, const int domainMinimumSize,
const int domainSearchAlgorythm, const int timeStepBetweenWindows,
const unsigned int sliceNum, const double epsilon, const double delta,
void domainType::setDefaults(const std::vector< size_t > &index, const std::vector< RVec > &reference,
const int windowSize, const int domainMinimumSize,
const int domainSearchAlgorythm, const int timeStepBetweenWindows,
const unsigned int sliceNum, const double epsilon, const double delta,
- const std::string outPutFileName) {
+ const std::string &outPutFileName) {
graph.resize(0);
structIndex = index;
refTable.resize(reference.size());
graph.resize(0);
structIndex = index;
refTable.resize(reference.size());
- for (size_t i {0}; i < reference.size(); i++) {
+ for (size_t i {0}; i < reference.size(); ++i) {
- for (size_t j {0}; j < reference.size(); j++) {
+ for (size_t j {0}; j < reference.size(); ++j) {
refTable[i].push_back(reference[i] - reference[j]);
}
}
refTable[i].push_back(reference[i] - reference[j]);
}
}
- // слава шиве, слава индусам... зачем столько ифов?
- if (epsilon != -1) { eps = epsilon; }
- if (delta != -1) { dlt = delta; }
- if (windowSize != -1) { window = windowSize; }
- if (domainMinimumSize != -1) { dms = domainMinimumSize; }
- if (domainSearchAlgorythm != -1) { dsa = domainSearchAlgorythm; }
- if (timeStepBetweenWindows != -1) { ts = timeStepBetweenWindows; }
- if (outPutFileName != "") { outPut = outPutFileName; }
+ epsilon > 0 ? eps = epsilon : eps = 0.2;
+ delta > 0 && delta <= 1 ? dlt = delta : dlt = 0.95;
+ windowSize > 0 ? window = windowSize : window = 1000;
+ domainMinimumSize > 3 ? dms = domainMinimumSize : dms = 4;
+ domainSearchAlgorythm > -1 && domainSearchAlgorythm < 3 ? dsa = domainSearchAlgorythm : dsa = 0;
+ timeStepBetweenWindows > 0 ? ts = timeStepBetweenWindows : ts = window / 10;
+ outPutFileName.size() > 0 ? outPut = outPutFileName : outPut = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
domsizes.resize(0);
domsizes.resize(sliceNum);
updateCount = 0;
domsizes.resize(0);
domsizes.resize(sliceNum);
updateCount = 0;
// фукнция обновления данных для выделения структурных доменов
void domainType::update(const std::vector< std::vector< RVec > > &frame, const int frameNumber) {
// фукнция обновления данных для выделения структурных доменов
void domainType::update(const std::vector< std::vector< RVec > > &frame, const int frameNumber) {
- // ��ромакс считает с нуля, проверял; инициализируем новое "окно"
+ // ��нициализируем новое "окно", громакс считает кадры с нуля
if (frameNumber % ts == 0) {
graph.resize(graph.size() + 1);
graph.back().resize(structIndex.size() - static_cast< size_t >(dms) + 1);
if (frameNumber % ts == 0) {
graph.resize(graph.size() + 1);
graph.back().resize(structIndex.size() - static_cast< size_t >(dms) + 1);
- // заполняем структуру данных для структурных доменов
+ // заполняем матрицы данных для структурных доменов для всех текущих "окон"
for (auto &i : graph) {
#pragma omp parallel for
for (auto &i : graph) {
#pragma omp parallel for
- for (size_t j = 0; j < i.size(); j++) {
- for (size_t k1 {0}; k1 < i[j].size(); k1++) {
- for (size_t k2 {k1}; k2 < i[j].size(); k2++) {
+ for (size_t j = 0; j < i.size(); ++j) {
+ for (size_t k1 {0}; k1 < i[j].size(); ++k1) {
+ for (size_t k2 {k1}; k2 < i[j].size(); ++k2) {
if ((frame[j][k1] - frame[j][k2] - refTable[k1][k2]).norm() <= static_cast< float >(eps)) {
if (k1 != k2) {
if ((frame[j][k1] - frame[j][k2] - refTable[k1][k2]).norm() <= static_cast< float >(eps)) {
if (k1 != k2) {
- i[j][k1][k2].num++;
- i[j][k2][k1].num++;
+ ++i[j][k1][k2].num;
+ ++i[j][k2][k1].num;
- // считаем число эффективных обновлений
+ // обновляем число эффективных обновлений
}
// в случае, если число обновлений равно размеру окна, выделяем на нём домены
if (updateCount == window) {
}
// в случае, если число обновлений равно размеру окна, выделяем на нём домены
if (updateCount == window) {
void domainType::setGraph(std::vector< std::vector< node > > &smallGraph) {
smallGraph.resize(0);
smallGraph.resize(refTable.size());
void domainType::setGraph(std::vector< std::vector< node > > &smallGraph) {
smallGraph.resize(0);
smallGraph.resize(refTable.size());
- for (size_t i {0}; i < refTable.size(); i++) {
+ for (size_t i {0}; i < refTable.size(); ++i) {
smallGraph[i].resize(0);
smallGraph[i].resize(refTable.size());
smallGraph[i].resize(0);
smallGraph[i].resize(refTable.size());
- for (size_t j {0}; j < refTable.size(); j++) {
+ for (size_t j {0}; j < refTable.size(); ++j) {
smallGraph[i][j].num = 0;
smallGraph[i][j].check = false;
}
smallGraph[i][j].num = 0;
smallGraph[i][j].check = false;
}
void domainType::deleteDomainFromGraph(const std::vector< size_t > &domain) {
for (auto &i : graph.front()) {
for (const auto &j : domain) {
void domainType::deleteDomainFromGraph(const std::vector< size_t > &domain) {
for (auto &i : graph.front()) {
for (const auto &j : domain) {
- for (size_t k {0}; k < i.size(); k++) {
+ for (size_t k {0}; k < i.size(); ++k) {
i[j][k].check = false;
i[k][j].check = false;
}
i[j][k].check = false;
i[k][j].check = false;
}
// подсчёт размеров всех потенциально возможных доменов и проверка на наличие домена для выделения
bool domainType::searchDomainSizes() {
bool flag {false};
// подсчёт размеров всех потенциально возможных доменов и проверка на наличие домена для выделения
bool domainType::searchDomainSizes() {
bool flag {false};
- for (size_t i {0}; i < graph.front().size(); i++) {
+ for (size_t i {0}; i < graph.front().size(); ++i) {
domsizes[i].resize(0); // необходимо переопределять память
domsizes[i].resize(graph.front()[i].size(), 0);
domsizes[i].resize(0); // необходимо переопределять память
domsizes[i].resize(graph.front()[i].size(), 0);
- for (size_t j {0}; j < graph.front()[i].size(); j++) {
+ for (size_t j {0}; j < graph.front()[i].size(); ++j) {
for (const auto &k : graph.front()[i][j]) {
if (k.check) {
for (const auto &k : graph.front()[i][j]) {
if (k.check) {
}
}
if ((!flag) && (domsizes[i][j] >= dms)) {
}
}
if ((!flag) && (domsizes[i][j] >= dms)) {
- // итеративное выделение доменов одним из двух(пока что) способов
- // в случае если цикл запустился, то гарантированно имеется домен для выделения
+ // итеративное выделение доменов одним из трёх способов
while (searchDomainSizes()) {
size_t t1 {0}, t2 {0};
while (searchDomainSizes()) {
size_t t1 {0}, t2 {0};
- for (size_t i {0}; i < domsizes.size(); i++) {
- for (size_t j {0}; j < domsizes[i].size(); j++) {
+ for (size_t i {0}; i < domsizes.size(); ++i) {
+ for (size_t j {0}; j < domsizes[i].size(); ++j) {
+ // вынуждены выделять первый домен из равных по кол-ву элементов
if ((dsa == 0) && (domsizes[i][j] > domsizes[t1][t2])) {
if ((dsa == 0) && (domsizes[i][j] > domsizes[t1][t2])) {
- // из-за физических ограничений по памяти в общем случае нельзя хранить всю подноготную данных на
- // основе которых было полученно "вхождение" атомов в домен, потому мы только знаем, что размер
- // совпадает, а сказать который из двух стабильнее нельзя, либо нужно придумать что-то новое
- if ((dsa == 2) && ((domsizes[i][j] < domsizes[t1][t2]) || ((domsizes[i][j] >= dms) && (domsizes[t1][t2] < dms)))) {
+ if ((dsa == 2) && (domsizes[i][j] >= dms) && ((domsizes[i][j] < domsizes[t1][t2]) || (domsizes[t1][t2] < dms))) {
}
// выделяем найдённый домен
domains.resize(domains.size() + 1);
}
// выделяем найдённый домен
domains.resize(domains.size() + 1);
- for (size_t i {0}; i < graph.front()[t1][t2].size(); i++) {
+ for (size_t i {0}; i < graph.front()[t1][t2].size(); ++i) {
if (graph.front()[t1][t2][i].check) {
domains.back().push_back(i);
}
if (graph.front()[t1][t2][i].check) {
domains.back().push_back(i);
}
- // удаляем ��го из матриц
+ // удаляем ��ыделенный домен из матриц
deleteDomainFromGraph(domains.back());
}
deleteDomainFromGraph(domains.back());
}
- // удаляем рассматриваемое окно из вектора
+ // удаляем рассматриваемое окно
graph.erase(graph.begin());
graph.erase(graph.begin());
- // смещаем счётчик обновлений для следующего окна, std::max для случая если окна не пересекаются
+ // смещаем счётчик обновлений для следующего окна
updateCount = std::max(0, window - ts);
}
updateCount = std::max(0, window - ts);
}
}
FILE *ndxFile {std::fopen(outPut.c_str(), "a+")}, *slFile {std::fopen(("selectionList-" + outPut.substr(0, outPut.size() - 4)).c_str(), "a+")};
short int writeCount {0};
}
FILE *ndxFile {std::fopen(outPut.c_str(), "a+")}, *slFile {std::fopen(("selectionList-" + outPut.substr(0, outPut.size() - 4)).c_str(), "a+")};
short int writeCount {0};
- for (size_t i {0}; i < domains.size(); i++) {
+ for (size_t i {0}; i < domains.size(); ++i) {
// domain - стартовая позиция в фреймах - номер домена - минимальный размер домена -
// константа тепловых колебаний (отклонения) - константа входимости (отклонения)
std::fprintf(ndxFile, "[domain-stPos-%06d-num-%03lu-dms-%03d-epsi-%04.3f-delta-%04.3f]\n", currentFrame - window + 1, i + 1, dms, eps, dlt);
std::fprintf(slFile, "group %cdomain-stPos-%06d-num-%03lu-dms-%03d-epsi-%04.3f-delta-%04.3f%c;\n", '"', currentFrame - window + 1, i + 1, dms, eps, dlt, '"');
writeCount = 0;
std::printf("\n");
// domain - стартовая позиция в фреймах - номер домена - минимальный размер домена -
// константа тепловых колебаний (отклонения) - константа входимости (отклонения)
std::fprintf(ndxFile, "[domain-stPos-%06d-num-%03lu-dms-%03d-epsi-%04.3f-delta-%04.3f]\n", currentFrame - window + 1, i + 1, dms, eps, dlt);
std::fprintf(slFile, "group %cdomain-stPos-%06d-num-%03lu-dms-%03d-epsi-%04.3f-delta-%04.3f%c;\n", '"', currentFrame - window + 1, i + 1, dms, eps, dlt, '"');
writeCount = 0;
std::printf("\n");
- for (size_t j {0}; j < domains[i].size(); j++) {
- writeCount++;
+ for (size_t j {0}; j < domains[i].size(); ++j) {
+ ++writeCount;
if (writeCount > 20) {
writeCount -= 20;
std::fprintf(ndxFile, "\n");
if (writeCount > 20) {
writeCount -= 20;
std::fprintf(ndxFile, "\n");
#include <omp.h>
#include <vector>
#include <cstdio>
#include <omp.h>
#include <vector>
#include <cstdio>
~domainType();
// конструктор класса для инициализации
~domainType();
// конструктор класса для инициализации
+ domainType() = default;
// конструктор класса для полноценной инициализации данных
domainType(const std::vector< size_t > &index, const std::vector< RVec > &reference,
const int windowSize, const int domainMinimumSize,
const int domainSearchAlgorythm, const int timeStepBetweenWindowStarts,
const unsigned int sliceNum, const double epsilon, const double delta,
// конструктор класса для полноценной инициализации данных
domainType(const std::vector< size_t > &index, const std::vector< RVec > &reference,
const int windowSize, const int domainMinimumSize,
const int domainSearchAlgorythm, const int timeStepBetweenWindowStarts,
const unsigned int sliceNum, const double epsilon, const double delta,
- const std::string outPutFileName);
+ const std::string &outPutFileName);
// set numeric values to "-1" / string value to "" - if you want default settings
// функция заполнения необходимыми данными для вычисления структурных доменов
// set numeric values to "-1" / string value to "" - if you want default settings
// функция заполнения необходимыми данными для вычисления структурных доменов
const int windowSize, const int domainMinimumSize,
const int domainSearchAlgorythm, const int timeStepBetweenWindows,
const unsigned int sliceNum, const double epsilon, const double delta,
const int windowSize, const int domainMinimumSize,
const int domainSearchAlgorythm, const int timeStepBetweenWindows,
const unsigned int sliceNum, const double epsilon, const double delta,
- const std::string outPutFileName);
+ const std::string &outPutFileName);
// фукнция обновления данных для выделения структурных доменов
void update(const std::vector< std::vector< RVec > > &frame, const int frameNumber);
// фукнция обновления данных для выделения структурных доменов
void update(const std::vector< std::vector< RVec > > &frame, const int frameNumber);