std::vector< kernel_maxima > kernel;
std::vector< std::vector< std::vector< int > > > circles;
std::vector< std::vector< std::vector< int > > > groups;
+
+ std::vector< std::vector< kernel_maxima > > window_kernel;
+ std::vector< std::vector< std::vector< std::vector< int > > > > window_circles;
+
};
Spirals::Spirals()
circles.resize(0);
monomers.resize(0);
groups.resize(0);
+
+
+ window_kernel.resize(0);
+ window_circles.resize(0);
}
void
{
const SelectionList &sel = pdata->parallelSelections(sel_);
std::vector< RVec > temp;
+ std::vector< std::vector< RVec > > window_temp;
+ int window_temp2 = sel_.size() - window + 1;
+
temp.resize(sel_.size());
for (int i = 0; i < sel.size(); i++) {
copy_rvec(sel[i].position(0).x(), temp[i]);
}
+ if (window_kernel.size() == 0) {
+ window_circles.resize(window_temp2);
+ window_kernel.resize(window_temp2);
+ for (int i = 0; i < window_temp2; i++) {
+ window_circles[i].resize(0);
+ window_kernel[i].resize(0);
+ }
+ window_temp.resize(window_temp2);
+ for (int i = 0; i < window_temp.size(); i++) {
+ window_temp[i].resize(window);
+ for (int j = 0; j < window; j++) {
+ window_temp[i].push_back(temp[i + j]);
+ }
+ }
+ }
+
monomers.resize(monomers.size() + 1);
for (int i = 0; i < sel.size(); i++) {
monomers.back().push_back(temp[i]);
circles.resize(circles.size() + 1);
make_circles(circles, temp, kernel);
+ for (int i = 0; i < window_temp2; i++) {
+ make_kernel(window_temp[i], epsi, window_kernel[i]);
+ make_circles(window_circles[i], window_temp[i], window_kernel[i]);
+ }
/*groups.resize(groups.size() + 1);
int itemp = circles.back().size() / 2;
std::fprintf(file, "\n\n");
}
std::fclose(file);
+
+ file = std::fopen("LocalSteps_Rspiral_Nmonomers.txt", "w+");
+ for (int m = 0; m < window_circles.front().size(); m++) {
+ for (int i = 0; i < window_circles[m].size(); i++) {
+ std::fprintf(file, "Frame # %6.2d | window # %3.2d\n", i, m);
+ std::fprintf(file, "Spiral steps:\n");
+ for (int j = 0; j < window_circles[m][i].size(); j++) {
+ std::fprintf(file, "%3.2f ", std::sqrt(distance2(window_kernel[m][i].krnl[window_circles[m][i][j].front() - 1], window_kernel[m][i].krnl[window_circles[m][i][j].back() - 1])));
+ }
+ std::fprintf(file, "\n");
+ std::fprintf(file, "Spiral radii\n");
+ for (int j = 0; j < window_circles[m][i].size(); j++) {
+ float temp = 0;
+ for (int k = 0; k < window_circles[m][i][j].size(); k++) {
+ temp += std::sqrt(distance2(window_kernel[m][i].krnl[window_circles[m][i][j][k] - 1], monomers[i][window_circles[m][i][j][k] - 1 + m]));
+ std::fprintf(file, "%3.2f ", std::sqrt(distance2(window_kernel[m][i].krnl[window_circles[m][i][j][k] - 1], monomers[i][window_circles[m][i][j][k] - 1 + m])));
+ }
+ std::fprintf(file, "average: %3.2f\n", temp / window_circles[m][i][j].size());
+ }
+ std::fprintf(file, "# of monomers per coil:\n");
+ for (int j = 0; j < window_circles[m][i].size(); j++) {
+ std::fprintf(file, "%3.2d ", window_circles[m][i][j].size());
+ }
+ std::fprintf(file, "\n\n");
+ }
+ }
+ std::fclose(file);
}
void