58 XX(aint) =
XX(eprm_aint);
59 YY(aint) =
YY(eprm_aint);
60 XX(bint) =
XX(eprm_bint);
61 YY(bint) =
YY(eprm_bint);
63 case sym_P2: std::cerr <<
"\n Group P2 not implemented\n";
66 case sym_P2_1: std::cerr <<
"\n Group P2_1 not implemented\n";
69 case sym_C2: std::cerr <<
"\n Group C2 not implemented\n";
72 case sym_P222: std::cerr <<
"\n Group P222 not implemented\n";
79 XX(aint) =
XX(eprm_aint);
80 YY(aint) =
YY(eprm_aint);
81 XX(bint) =
XX(eprm_bint);
82 YY(bint) =
YY(eprm_bint);
85 XX(aint) = -
XX(eprm_aint);
86 YY(aint) = -
YY(eprm_aint);
87 XX(bint) = -
XX(eprm_bint);
88 YY(bint) = -
YY(eprm_bint);
91 XX(aint) = -
XX(eprm_aint);
92 YY(aint) = +
YY(eprm_aint);
93 XX(bint) = -
XX(eprm_bint);
94 YY(bint) = +
YY(eprm_bint);
98 XX(aint) = +
XX(eprm_aint);
99 YY(aint) = -
YY(eprm_aint);
100 XX(bint) = +
XX(eprm_bint);
101 YY(bint) = -
YY(eprm_bint);
110 XX(aint) =
XX(eprm_aint);
111 YY(aint) =
YY(eprm_aint);
112 XX(bint) =
XX(eprm_bint);
113 YY(bint) =
YY(eprm_bint);
116 XX(aint) = -
XX(eprm_aint);
117 YY(aint) = -
YY(eprm_aint);
118 XX(bint) = -
XX(eprm_bint);
119 YY(bint) = -
YY(eprm_bint);
122 XX(aint) =
XX(eprm_aint);
123 YY(aint) = -
YY(eprm_aint);
124 XX(bint) =
XX(eprm_bint);
125 YY(bint) = -
YY(eprm_bint);
129 XX(aint) = -
XX(eprm_aint);
130 YY(aint) =
YY(eprm_aint);
131 XX(bint) = -
XX(eprm_bint);
132 YY(bint) =
YY(eprm_bint);
138 case sym_P22_12_1: std::cerr <<
"\n Group P22_12_1 not implemented\n";
145 XX(aint) =
XX(eprm_aint);
146 YY(aint) =
YY(eprm_aint);
147 XX(bint) =
XX(eprm_bint);
148 YY(bint) =
YY(eprm_bint);
151 XX(aint) = -
YY(eprm_aint);
152 YY(aint) =
XX(eprm_aint);
153 XX(bint) = -
YY(eprm_bint);
154 YY(bint) =
XX(eprm_bint);
157 XX(aint) = -
XX(eprm_aint);
158 YY(aint) = -
YY(eprm_aint);
159 XX(bint) = -
XX(eprm_bint);
160 YY(bint) = -
YY(eprm_bint);
163 XX(aint) =
YY(eprm_aint);
164 YY(aint) = -
XX(eprm_aint);
165 XX(bint) =
YY(eprm_bint);
166 YY(bint) = -
XX(eprm_bint);
176 XX(aint) =
XX(eprm_aint);
177 YY(aint) =
YY(eprm_aint);
178 XX(bint) =
XX(eprm_bint);
179 YY(bint) =
YY(eprm_bint);
182 XX(aint) = -
XX(eprm_aint);
183 YY(aint) = -
YY(eprm_aint);
184 XX(bint) = -
XX(eprm_bint);
185 YY(bint) = -
YY(eprm_bint);
188 XX(aint) = +
YY(eprm_aint);
189 YY(aint) = +
XX(eprm_aint);
190 XX(bint) = +
YY(eprm_bint);
191 YY(bint) = +
XX(eprm_bint);
194 XX(aint) = -
YY(eprm_aint);
195 YY(aint) = -
XX(eprm_aint);
196 XX(bint) = -
YY(eprm_bint);
197 YY(bint) = -
XX(eprm_bint);
200 XX(aint) = +
YY(eprm_aint);
201 YY(aint) = -
XX(eprm_aint);
202 XX(bint) = +
YY(eprm_bint);
203 YY(bint) = -
XX(eprm_bint);
207 XX(aint) = -
YY(eprm_aint);
208 YY(aint) = +
XX(eprm_aint);
209 XX(bint) = -
YY(eprm_bint);
210 YY(bint) = +
XX(eprm_bint);
214 XX(aint) = -
XX(eprm_aint);
215 YY(aint) = +
YY(eprm_aint);
216 XX(bint) = -
XX(eprm_bint);
217 YY(bint) = +
YY(eprm_bint);
221 XX(aint) = +
XX(eprm_aint);
222 YY(aint) = -
YY(eprm_aint);
223 XX(bint) = +
XX(eprm_bint);
224 YY(bint) = -
YY(eprm_bint);
228 std::cout <<
"\n Wrong symmetry number " 229 "in symmetrize_crystal_vectors, bye" 237 case sym_P3: std::cerr <<
"\n Group P3 not implemented\n";
240 case sym_P312: std::cerr <<
"\n Group P312 not implemented\n";
247 XX(aint) =
XX(eprm_aint);
248 YY(aint) =
YY(eprm_aint);
249 XX(bint) =
XX(eprm_bint);
250 YY(bint) =
YY(eprm_bint);
253 XX(aint) =
XX(eprm_aint) -
YY(eprm_aint);
254 YY(aint) =
XX(eprm_aint);
255 XX(bint) =
XX(eprm_bint) -
YY(eprm_bint);
256 YY(bint) =
XX(eprm_bint);
259 XX(aint) = -
YY(eprm_aint);
260 YY(aint) =
XX(eprm_aint) -
YY(eprm_aint);
261 XX(bint) = -
YY(eprm_bint);
262 YY(bint) =
XX(eprm_bint) -
YY(eprm_bint);
265 XX(aint) = -
XX(eprm_aint);
266 YY(aint) = -
YY(eprm_aint);
267 XX(bint) = -
XX(eprm_bint);
268 YY(bint) = -
YY(eprm_bint);
271 XX(aint) = -
XX(eprm_aint) +
YY(eprm_aint);
272 YY(aint) = -
XX(eprm_aint);
273 XX(bint) = -
XX(eprm_bint) +
YY(eprm_bint);
274 YY(bint) = -
XX(eprm_bint);
277 XX(aint) = +
YY(eprm_aint);
278 YY(aint) = -
XX(eprm_aint) +
YY(eprm_aint);
279 XX(bint) = +
YY(eprm_bint);
280 YY(bint) = -
XX(eprm_bint) +
YY(eprm_bint);
285 case sym_P622: std::cerr <<
"\n Group P622 not implemented\n";
292 #define Symmetrize_Vol(X) {\ 293 for (size_t i=0; i<vol_in.VolumesNo(); i++)\ 294 X(vol_in(i),vol_in.grid(i),eprm_aint,eprm_bint,mask,i, \ 304 int eprm_space_group,
309 switch (eprm_space_group)
314 case sym_P2: std::cerr <<
"\n Group P2 not implemented\n";
317 case sym_P2_1: std::cerr <<
"\n Group P2_1 not implemented\n";
320 case sym_C2: std::cerr <<
"\n Group C2 not implemented\n";
323 case sym_P222: std::cerr <<
"\n Group P222 not implemented\n";
332 case sym_P22_12_1: std::cerr <<
"\n Group P22_12_1 not implemented\n";
338 case sym_P422: std::cerr <<
"\n Group P422 not implemented\n";
344 case sym_P3: std::cerr <<
"\n Group P3 not implemented\n";
347 case sym_P312: std::cerr <<
"\n Group P312 not implemented\n";
353 case sym_P622: std::cerr <<
"\n Group P622 not implemented\n";
360 #define put_inside(j,j_min,j_max,jint) \ 361 if( (j) < (j_min) ) { (j) = (j) + (jint);}\ 362 else if( (j) > (j_max) ) { (j) = (j) - (jint);}; 373 auto ZZ_lowest = (int)
ZZ(grid.
lowest);
376 auto ZZ_highest = (int)
ZZ(grid.
highest);
382 if (
ABS(ZZ_lowest) >
ABS(ZZ_highest))
383 ZZ_lowest = -ZZ_highest;
385 ZZ_highest =
ABS(ZZ_lowest);
389 if (mask(0, XX_lowest) == 0)
393 if (XX_lowest == XX_highest)
395 std::cerr <<
"Error in symmetry_P2_122, while(1)" << std::endl;
401 if (mask(0, XX_highest) == 0)
405 if (XX_lowest == XX_highest)
407 std::cerr <<
"Error in symmetry_P2_122, while(1)" << std::endl;
413 if (mask(YY_lowest, 0) == 0)
417 if (YY_lowest == YY_highest)
419 std::cerr <<
"Error in symmetry_P2_122, while(1)" << std::endl;
425 if (mask(YY_highest, 0) == 0)
429 if (YY_lowest == YY_highest)
431 std::cerr <<
"Error in symmetry_P2_122, while(1)" << std::endl;
438 int maxZ, maxY, maxX, minZ, minY, minX;
446 XXaint = (int)
XX(eprm_aint);
447 YYbint = (int)
YY(eprm_bint);
450 XXaint_2 = XXaint / 2;
453 if (
ABS(XX_lowest) >
ABS(XX_highest))
463 if (
ABS(YY_lowest) >
ABS(YY_highest))
473 if (
ABS(ZZ_lowest) >
ABS(ZZ_highest))
485 if (volume_no == 1 && grid_type ==
FCC)
487 std::cerr <<
"\nSimetries using FCC not implemented\n";
491 for (z = minZ;z <= maxZ;z++)
492 for (y = minY;y <= maxY;y++)
493 for (x = minX;x <= maxX;x++)
496 if (!
A2D_ELEM(mask, y, x) || z < ZZ_lowest || z > ZZ_highest)
514 std::cerr <<
"ERROR in symmetry_P function" 515 <<
"after correction spot is still" 516 <<
"outside mask\a" << std::endl;
537 std::cerr <<
"ERROR in symmetry_P function" 538 <<
"after correction spot is still" 539 <<
"outside mask\a" << std::endl;
560 std::cerr <<
"ERROR in symmetry_P function" 561 <<
"after correction spot is still" 562 <<
"outside mask\a" << std::endl;
598 auto ZZ_lowest = (int)
ZZ(grid.
lowest);
601 auto ZZ_highest = (int)
ZZ(grid.
highest);
607 if (
ABS(ZZ_lowest) >
ABS(ZZ_highest))
608 ZZ_lowest = -ZZ_highest;
610 ZZ_highest =
ABS(ZZ_lowest);
614 if (mask(0, XX_lowest) == 0)
618 if (XX_lowest == XX_highest)
620 std::cerr <<
"Error in symmetry_P2_122, while(1)" << std::endl;
626 if (mask(0, XX_highest) == 0)
630 if (XX_lowest == XX_highest)
632 std::cerr <<
"Error in symmetry_P2_122, while(1)" << std::endl;
638 if (mask(YY_lowest, 0) == 0)
642 if (YY_lowest == YY_highest)
644 std::cerr <<
"Error in symmetry_P2_122, while(1)" << std::endl;
650 if (mask(YY_highest, 0) == 0)
654 if (YY_lowest == YY_highest)
656 std::cerr <<
"Error in symmetry_P2_122, while(1)" << std::endl;
663 int maxZ, maxY, maxX, minZ, minY, minX;
671 XXaint = (int)
XX(eprm_aint);
672 YYbint = (int)
YY(eprm_bint);
675 YYbint_2 = YYbint / 2;
678 if (
ABS(XX_lowest) >
ABS(XX_highest))
688 if (
ABS(YY_lowest) >
ABS(YY_highest))
698 if (
ABS(ZZ_lowest) >
ABS(ZZ_highest))
710 if (volume_no == 1 && grid_type ==
FCC)
712 std::cerr <<
"\nSimetries using FCC not implemented\n";
716 for (z = minZ;z <= maxZ;z++)
717 for (y = minY;y <= maxY;y++)
718 for (x = minX;x <= maxX;x++)
721 if (!
A2D_ELEM(mask, y, x) || z < ZZ_lowest || z > ZZ_highest)
739 std::cerr <<
"ERROR in symmetry_P function" 740 <<
"after correction spot is still" 741 <<
"outside mask\a" << std::endl;
762 std::cerr <<
"ERROR in symmetry_P function" 763 <<
"after correction spot is still" 764 <<
"outside mask\a" << std::endl;
785 std::cerr <<
"ERROR in symmetry_P function" 786 <<
"after correction spot is still" 787 <<
"outside mask\a" << std::endl;
820 auto ZZ_lowest = (int)
ZZ(grid.
lowest);
823 auto ZZ_highest = (int)
ZZ(grid.
highest);
829 if (mask(0, XX_lowest) == 0)
833 if (XX_lowest == XX_highest)
835 std::cerr <<
"Error in symmetry_P4, while(1)" << std::endl;
841 if (mask(0, XX_highest) == 0)
845 if (XX_lowest == XX_highest)
847 std::cerr <<
"Error in symmetry_P4, while(1)" << std::endl;
853 if (mask(YY_lowest, 0) == 0)
857 if (YY_lowest == YY_highest)
859 std::cerr <<
"Error in symmetry_P4, while(1)" << std::endl;
865 if (mask(YY_highest, 0) == 0)
869 if (YY_lowest == YY_highest)
871 std::cerr <<
"Error in symmetry_P4, while(1)" << std::endl;
884 int maxZ, maxY, maxX, minZ, minY, minX;
892 XXaint = (int)
XX(eprm_aint);
893 YYbint = (int)
YY(eprm_bint);
897 if (
ABS(XX_lowest) >
ABS(XX_highest))
907 if (
ABS(YY_lowest) >
ABS(YY_highest))
921 if (volume_no == 1 && grid_type ==
FCC)
923 std::cerr <<
"\nSimetries using FCC not implemented\n";
926 for (z = minZ;z <= maxZ;z++)
927 for (y = minY;y <= maxY;y++)
928 for (x = minX;x <= maxX;x++)
931 if (!
A2D_ELEM(mask, y, x) || z < ZZ_lowest || z > ZZ_highest)
949 std::cerr <<
"ERROR in symmetry_P function" 950 <<
"after correction spot is still" 951 <<
"outside mask\a" << std::endl;
971 std::cerr <<
"ERROR in symmetry_P function" 972 <<
"after correction spot is still" 973 <<
"outside mask\a" << std::endl;
992 std::cerr <<
"ERROR in symmetry_P function" 993 <<
"after correction spot is still" 994 <<
"outside mask\a" << std::endl;
1016 auto ZZ_lowest = (int)
ZZ(grid.
lowest);
1019 auto ZZ_highest = (int)
ZZ(grid.
highest);
1025 if (
ABS(ZZ_lowest) >
ABS(ZZ_highest))
1026 ZZ_lowest = -ZZ_highest;
1028 ZZ_highest =
ABS(ZZ_lowest);
1032 if (mask(0, XX_lowest) == 0)
1036 if (XX_lowest == XX_highest)
1038 std::cerr <<
"Error in symmetry_P42_12, while(1)" << std::endl;
1044 if (mask(0, XX_highest) == 0)
1048 if (XX_lowest == XX_highest)
1050 std::cerr <<
"Error in symmetry_P42_12, while(1)" << std::endl;
1056 if (mask(YY_lowest, 0) == 0)
1060 if (YY_lowest == YY_highest)
1062 std::cerr <<
"Error in symmetry_P42_12, while(1)" << std::endl;
1068 if (mask(YY_highest, 0) == 0)
1072 if (YY_lowest == YY_highest)
1074 std::cerr <<
"Error in symmetry_P42_12, while(1)" << std::endl;
1087 int maxZ, maxY, maxX, minZ, minY, minX;
1099 XXaint = (int)
XX(eprm_aint);
1100 YYbint = (int)
YY(eprm_bint);
1102 int XXaint_2, YYbint_2;
1103 XXaint_2 = XXaint / 2;
1104 YYbint_2 = YYbint / 2;
1107 if (
ABS(XX_lowest) >
ABS(XX_highest))
1117 if (
ABS(YY_lowest) >
ABS(YY_highest))
1127 if (
ABS(ZZ_lowest) >
ABS(ZZ_highest))
1139 if (volume_no == 1 && grid_type ==
FCC)
1141 std::cerr <<
"\nSimetries using FCC not implemented\n";
1145 for (z = minZ;z <= maxZ;z++)
1146 for (y = minY;y <= maxY;y++)
1147 for (x = minX;x <= maxX;x++)
1150 if (!
A2D_ELEM(mask, y, x) || z < ZZ_lowest || z > ZZ_highest)
1164 put_inside(xx, XX_lowest, XX_highest, XXaint)
1165 put_inside(yy, YY_lowest, YY_highest, YYbint)
1167 std::cerr <<
"ERROR in symmetry_P function" 1168 <<
"after correction spot is still" 1169 <<
"outside mask\a" << std::endl;
1186 put_inside(xx, XX_lowest, XX_highest, XXaint)
1187 put_inside(yy, YY_lowest, YY_highest, YYbint)
1189 std::cerr <<
"ERROR in symmetry_P function" 1190 <<
"after correction spot is still" 1191 <<
"outside mask\a" << std::endl;
1209 put_inside(xx, XX_lowest, XX_highest, XXaint)
1210 put_inside(yy, YY_lowest, YY_highest, YYbint)
1212 std::cerr <<
"ERROR in symmetry_P function" 1213 <<
"after correction spot is still" 1214 <<
"outside mask\a" << std::endl;
1230 put_inside(xx, XX_lowest, XX_highest, XXaint)
1231 put_inside(yy, YY_lowest, YY_highest, YYbint)
1233 std::cerr <<
"ERROR in symmetry_P function" 1234 <<
"after correction spot is still" 1235 <<
"outside mask\a" << std::endl;
1243 yy = + x + YYbint_2;
1251 put_inside(xx, XX_lowest, XX_highest, XXaint)
1252 put_inside(yy, YY_lowest, YY_highest, YYbint)
1254 std::cerr <<
"ERROR in symmetry_P function" 1255 <<
"after correction spot is still" 1256 <<
"outside mask\a" << std::endl;
1263 yy = + y + YYbint_2;
1272 put_inside(xx, XX_lowest, XX_highest, XXaint)
1273 put_inside(yy, YY_lowest, YY_highest, YYbint)
1275 std::cerr <<
"ERROR in symmetry_P function" 1276 <<
"after correction spot is still" 1277 <<
"outside mask\a" << std::endl;
1284 xx = + x + XXaint_2;
1294 put_inside(xx, XX_lowest, XX_highest, XXaint)
1295 put_inside(yy, YY_lowest, YY_highest, YYbint)
1297 std::cerr <<
"ERROR in symmetry_P function" 1298 <<
"after correction spot is still" 1299 <<
"outside mask\a" << std::endl;
1338 auto ZZ_lowest = (int)
ZZ(grid.
lowest);
1341 auto ZZ_highest = (int)
ZZ(grid.
highest);
1348 if (mask(0, XX_lowest) == 0)
1352 if (XX_lowest == XX_highest)
1354 std::cerr <<
"Error in symmetry_P42_12, while(1)" << std::endl;
1360 if (mask(0, XX_highest) == 0)
1364 if (XX_lowest == XX_highest)
1366 std::cerr <<
"Error in symmetry_P42_12, while(1)" << std::endl;
1372 if (mask(YY_lowest, 0) == 0)
1376 if (YY_lowest == YY_highest)
1378 std::cerr <<
"Error in symmetry_P42_12, while(1)" << std::endl;
1384 if (mask(YY_highest, 0) == 0)
1388 if (YY_lowest == YY_highest)
1390 std::cerr <<
"Error in symmetry_P42_12, while(1)" << std::endl;
1403 int maxZ, maxY, maxX, minZ, minY, minX;
1413 XXaint = (int)
XX(eprm_aint);
1414 YYbint = (int)
YY(eprm_bint);
1418 if (
ABS(XX_lowest) >
ABS(XX_highest))
1439 if (volume_no == 1 && grid_type ==
FCC)
1441 std::cerr <<
"\nSimetries using FCC not implemented\n";
1445 for (z = minZ;z <= maxZ;z++)
1446 for (y = minY;y <= maxY;y++)
1447 for (x = minX;x <= maxX;x++)
1450 if (!
A2D_ELEM(mask, y, x) || z < ZZ_lowest || z > ZZ_highest)
1459 put_inside(xx, XX_lowest, XX_highest, XXaint)
1460 put_inside(yy, YY_lowest, YY_highest, YYbint)
1462 std::cerr <<
"ERROR in symmetry_P function" 1463 <<
"after correction spot is still" 1464 <<
"outside mask\a" << std::endl;
1476 put_inside(xx, XX_lowest, XX_highest, XXaint)
1477 put_inside(yy, YY_lowest, YY_highest, YYbint)
1479 std::cerr <<
"ERROR in symmetry_P function" 1480 <<
"after correction spot is still" 1481 <<
"outside mask\a" << std::endl;
1493 put_inside(xx, XX_lowest, XX_highest, XXaint)
1494 put_inside(yy, YY_lowest, YY_highest, YYbint)
1496 std::cerr <<
"ERROR in symmetry_P function" 1497 <<
"after correction spot is still" 1498 <<
"outside mask\a" << std::endl;
1510 put_inside(xx, XX_lowest, XX_highest, XXaint)
1511 put_inside(yy, YY_lowest, YY_highest, YYbint)
1513 std::cerr <<
"ERROR in symmetry_P function" 1514 <<
"after correction spot is still" 1515 <<
"outside mask\a" << std::endl;
1527 put_inside(xx, XX_lowest, XX_highest, XXaint)
1528 put_inside(yy, YY_lowest, YY_highest, YYbint)
1530 std::cerr <<
"ERROR in symmetry_P function" 1531 <<
"after correction spot is still" 1532 <<
"outside mask\a" << std::endl;
1543 std::cerr <<
"\nSimetries using FCC not implemented\n";
1550 x2 = x3 = x4 = -x - 1;
1551 y2 = y3 = y4 = -y - 1;
1569 #undef wrap_as_Crystal 1575 double sinRotHelical,
double cosRotHelical);
1578 double sinRotHelical,
double cosRotHelical)
1586 double newx=cosRotHelical*x-sinRotHelical*
y;
1587 double newy=sinRotHelical*x+cosRotHelical*
y;
1592 double newx=cosRotHelical*x+sinRotHelical*
y;
1593 double newy=-sinRotHelical*x+cosRotHelical*
y;
1599 double sinRotHelical,
double cosRotHelical)
1639 double izHelical=1.0/zHelical;
1641 double sinRotHelical = sin(rotHelical);
1642 double cosRotHelical = cos(rotHelical);
1644 int Llength=ceil(
ZSIZE(Vin)*izHelical);
1649 for (
int n=0;
n<Cn; ++
n)
1659 double rot=atan2((
double)
i,(
double)
j)+rot0;
1660 double rho=
sqrt((
double)i*i+(
double)j*j);
1661 int l0=(int)ceil((
STARTINGZ(Vin)-
k)*izHelical);
1663 double finalValue=0;
1665 for (
int il=l0; il<=lF; ++il)
1668 double kp=
k+l*zHelical;
1669 if (kp>=zFirst && kp<=zLast)
1671 double rotp=rot+l*rotHelical;
1672 double ip = rho*sin(rotp);
1673 double jp = rho*cos(rotp);
1674 double weight = 1.0;
1675 if (kp-zFirst<=zHelical2)
1676 weight=(kp-zFirst+1)/(zHelical2+1);
1677 else if (zLast-kp<=zHelical2)
1678 weight=(zLast+1-kp)/(zHelical2+1);
1682 for (
int n=1;
n<Cn; ++
n)
1693 for (
int n=1;
n<Cn; ++
n)
1712 double helicalStep=rotHelical/zHelical;
1715 for (
int k=0;
k<(int)
ZSIZE(Vin); ++
k)
1717 double angle=
RAD2DEG(helicalStep*
k)+rot0;
1743 double bestCorr, bestRot, bestZ;
#define Symmetrize_Vol(X)
void min(Image< double > &op1, const Image< double > &op2)
#define A2D_ELEM(v, i, j)
#define VOLVOXEL(V, k, i, j)
Matrix1D< double > highest
Case or algorithm not implemented yet.
__host__ __device__ float2 floor(const float2 v)
double interpolatedElement3DHelical(const MultidimArray< double > &Vin, double x, double y, double z, double zHelical, double sinRotHelical, double cosRotHelical)
#define REPORT_ERROR(nerr, ErrormMsg)
void sqrt(Image< double > &op)
double correlationIndex(const MultidimArray< T > &x, const MultidimArray< T > &y, const MultidimArray< int > *mask=NULL, MultidimArray< double > *Contributions=NULL)
void symmetry_Dihedral(MultidimArray< double > &Vout, const MultidimArray< double > &Vin, double rotStep, double zmin, double zmax, double zStep, MultidimArray< int > *mask)
void symmetry_HelicalLowRes(MultidimArray< double > &Vout, const MultidimArray< double > &Vin, double zHelical, double rotHelical, double rot0, MultidimArray< int > *mask, double heightFraction)
void symmetry_P2_122(Image< double > &vol, const SimpleGrid &grid, const Matrix1D< double > &eprm_aint, const Matrix1D< double > &eprm_bint, const MultidimArray< int > &mask, int volume_no, int grid_type)
Matrix1D< double > lowest
ql0001_ & k(htemp+1),(cvec+1),(atemp+1),(bj+1),(bl+1),(bu+1),(x+1),(clamda+1), &iout, infoqp, &zero,(w+1), &lenw,(iw+1), &leniw, &glob_grd.epsmac
void symmetry_P42_12(Image< double > &vol, const SimpleGrid &grid, const Matrix1D< double > &eprm_aint, const Matrix1D< double > &eprm_bint, const MultidimArray< int > &mask, int volume_no, int grid_type)
#define BCC
BCC identifier.
#define MAT_ELEM(m, i, j)
#define A3D_ELEM(V, k, i, j)
#define FOR_ALL_ELEMENTS_IN_ARRAY3D(V)
void symmetry_P4(Image< double > &vol, const SimpleGrid &grid, const Matrix1D< double > &eprm_aint, const Matrix1D< double > &eprm_bint, const MultidimArray< int > &mask, int volume_no, int grid_type)
void symmetry_P6(Image< double > &vol, const SimpleGrid &grid, const Matrix1D< double > &eprm_aint, const Matrix1D< double > &eprm_bint, const MultidimArray< int > &mask, int volume_no, int grid_type)
#define FCC
FCC identifier.
void symmetry_Helical(MultidimArray< double > &Vout, const MultidimArray< double > &Vin, double zHelical, double rotHelical, double rot0, MultidimArray< int > *mask, bool dihedral, double heightFraction, int Cn)
#define FOR_ALL_DIRECT_ELEMENTS_IN_MULTIDIMARRAY(v)
#define DIRECT_MULTIDIM_ELEM(v, n)
double interpolatedElement3DHelicalInt(const MultidimArray< double > &Vin, int x, int y, int z, double zHelical, double sinRotHelical, double cosRotHelical)
void symmetry_P22_12(Image< double > &vol, const SimpleGrid &grid, const Matrix1D< double > &eprm_aint, const Matrix1D< double > &eprm_bint, const MultidimArray< int > &mask, int volume_no, int grid_type)
void symmetrizeCrystalVectors(Matrix1D< double > &aint, Matrix1D< double > &bint, Matrix1D< double > &shift, int space_group, int sym_no, const Matrix1D< double > &eprm_aint, const Matrix1D< double > &eprm_bint)
#define put_inside(j, j_min, j_max, jint)
bool outside(int k, int i, int j) const
#define FIRST_XMIPP_INDEX(size)
#define VECTOR_R3(v, x, y, z)
void initZeros(const MultidimArray< T1 > &op)
#define LAST_XMIPP_INDEX(size)
#define LIN_INTERP(a, l, h)
void symmetrizeCrystalVolume(GridVolume &vol_in, const Matrix1D< double > &eprm_aint, const Matrix1D< double > &eprm_bint, int eprm_space_group, const MultidimArray< int > &mask, int grid_type)