Skip to content

Commit 2cca0fc

Browse files
authored
Merge pull request #61 from jamesrhester/better-adsc-convert
Add --reverse option, add recognition of old AustSync detector.
2 parents 1c77a36 + 3e04134 commit 2cca0fc

File tree

2 files changed

+35
-15
lines changed

2 files changed

+35
-15
lines changed

examples/adscimg2cbf.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ static void usage( void )
9191
fprintf(stderr,"\t--beam_center_mosflm Beam center in ADSC header: MOSFLM coordinates.\n");
9292
fprintf(stderr,"\t--beam_center_ulhc Beam center in ADSC header: origin: upper left hand corner of image.(HKL mm)\n");
9393
fprintf(stderr,"\t--beam_center_llhc Beam center in ADSC header: origin: lower left hand corner of image.(adxv mm)\n");
94+
fprintf(stderr,"\t--reverse Rotation axis points in opposite direction to fast pixel direction on detector");
9495
fprintf(stderr,"\t--region-of-interest=fastlow,fasthigh,slowlow,slowhigh\n");
9596
fprintf(stderr,"\t Region of interest to map to CBF\n");
9697
fprintf(stderr,"\t--sensor-thickness=0.00000000\n");
@@ -143,7 +144,8 @@ int adscimg2cbf_sub2(char *header,
143144
const char *cliphighstr,
144145
const char *rad_smoothstr,
145146
int transpose,
146-
int interleave);
147+
int interleave,
148+
int reverse);
147149

148150

149151
int main(int argc, char *argv[])
@@ -171,6 +173,7 @@ int main(int argc, char *argv[])
171173
int bin=0;
172174
int transpose=0;
173175
int interleave=0;
176+
int reverse=1;
174177
int *new_int_data, *old_int_data;
175178
size_t new_int_data_size, old_int_data_size;
176179
double thickness=0.;
@@ -193,7 +196,7 @@ int main(int argc, char *argv[])
193196
".img.Z",
194197
NULL
195198
};
196-
static char *flags[32] = {
199+
static char *flags[33] = {
197200
"--cbf_byte_offset", /* 0 */
198201
"--cbf_packed_v2", /* 1 */
199202
"--cbf_packed", /* 2 */
@@ -225,6 +228,7 @@ int main(int argc, char *argv[])
225228
"--output", /*28 */
226229
"--transpose", /*29 */
227230
"--interleave", /*30 */
231+
"--reverse", /*31 */
228232
NULL
229233
};
230234

@@ -379,6 +383,9 @@ int main(int argc, char *argv[])
379383
interleave = atoi(argval[1]);
380384
}
381385
break;
386+
case 31:
387+
reverse = -1;
388+
break;
382389

383390
}
384391
if(j < 3 || j==12)
@@ -632,7 +639,8 @@ int main(int argc, char *argv[])
632639
cliphighstr,
633640
rad_smoothstr,
634641
transpose,
635-
interleave);
642+
interleave,
643+
reverse);
636644
free(hptr);
637645
if (old_int_data && old_int_data_size) free(old_int_data);
638646
old_int_data = new_int_data;

examples/adscimg2cbf_sub.c

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -390,8 +390,9 @@ static char *which_facility(int serial_number)
390390
case 927:
391391
return("soleil");
392392
break;
393+
case 457:
393394
case 928:
394-
return("as");
395+
return("as_mx1");
395396
break;
396397
case 929:
397398
return("pohang");
@@ -496,7 +497,8 @@ int adscimg2cbf_sub2(char *header,
496497
const char * cliphighstr,
497498
const char * rad_smoothstr,
498499
int transpose,
499-
int interleave)
500+
int interleave,
501+
int reverse)
500502
{
501503
FILE *out;
502504

@@ -1310,6 +1312,15 @@ int adscimg2cbf_sub2(char *header,
13101312
cbf_failnez (cbf_set_doublevalue (cbf, "%.2f", 0.0));
13111313

13121314
/* Make the _axis category */
1315+
1316+
/* The default detector axis definitions assume that
1317+
the rotation axis points in the same direction as
1318+
ELEMENT_X. If reverse is set, the rotation axis points
1319+
in the opposite direction to ELEMENT_X which is
1320+
equivalent to a 180 degree rotation about the Z axis
1321+
and thus X-> -X and Y -> -Y compared to the default
1322+
axes.
1323+
*/
13131324

13141325
cbf_failnez (cbf_require_category (cbf, "axis"));
13151326

@@ -1408,11 +1419,11 @@ int adscimg2cbf_sub2(char *header,
14081419
cbf_failnez (cbf_next_row (cbf));
14091420
cbf_failnez (cbf_set_value (cbf, "0"));
14101421
cbf_failnez (cbf_next_row (cbf));
1411-
cbf_failnez (cbf_set_value (cbf, "1"));
1422+
cbf_failnez (cbf_set_integervalue (cbf, reverse));
14121423
cbf_failnez (cbf_next_row (cbf));
14131424
cbf_failnez (cbf_set_value (cbf, "0"));
14141425
cbf_failnez (cbf_next_row (cbf));
1415-
cbf_failnez (cbf_set_value (cbf, "1"));
1426+
cbf_failnez (cbf_set_integervalue (cbf, reverse));
14161427
cbf_failnez (cbf_next_row (cbf));
14171428
cbf_failnez (cbf_set_value (cbf, "0"));
14181429

@@ -1422,19 +1433,19 @@ int adscimg2cbf_sub2(char *header,
14221433
cbf_failnez (cbf_next_row (cbf));
14231434
cbf_failnez (cbf_set_value (cbf, "0"));
14241435
cbf_failnez (cbf_next_row (cbf));
1425-
cbf_failnez (cbf_set_value (cbf, "-1"));
1436+
cbf_failnez (cbf_set_integervalue (cbf, -1*reverse));
14261437
cbf_failnez (cbf_next_row (cbf));
14271438
cbf_failnez (cbf_set_value (cbf, "0"));
14281439
cbf_failnez (cbf_next_row (cbf));
1429-
cbf_failnez (cbf_set_value (cbf, "1"));
1440+
cbf_failnez (cbf_set_integervalue (cbf, reverse));
14301441
cbf_failnez (cbf_next_row (cbf));
14311442
cbf_failnez (cbf_set_value (cbf, "0"));
14321443
cbf_failnez (cbf_next_row (cbf));
1433-
cbf_failnez (cbf_set_value (cbf, "1"));
1444+
cbf_failnez (cbf_set_integervalue (cbf, reverse));
14341445
cbf_failnez (cbf_next_row (cbf));
14351446
cbf_failnez (cbf_set_value (cbf, "0"));
14361447
cbf_failnez (cbf_next_row (cbf));
1437-
cbf_failnez (cbf_set_value (cbf, "1"));
1448+
cbf_failnez (cbf_set_integervalue (cbf, -1*reverse));
14381449

14391450
cbf_failnez (cbf_require_column (cbf, "vector[3]"));
14401451
cbf_failnez (cbf_rewind_row (cbf));
@@ -1475,7 +1486,7 @@ int adscimg2cbf_sub2(char *header,
14751486
cbf_failnez (cbf_next_row (cbf));
14761487
cbf_failnez (cbf_set_value (cbf, "0"));
14771488
cbf_failnez (cbf_next_row (cbf));
1478-
cbf_failnez (cbf_set_doublevalue (cbf, "%.3f", det_beam_center_to_origin_dist_x));
1489+
cbf_failnez (cbf_set_doublevalue (cbf, "%.3f", det_beam_center_to_origin_dist_x * reverse));
14791490
cbf_failnez (cbf_next_row (cbf));
14801491
cbf_failnez (cbf_set_value (cbf, "0"));
14811492

@@ -1498,7 +1509,7 @@ int adscimg2cbf_sub2(char *header,
14981509
cbf_failnez (cbf_next_row (cbf));
14991510
cbf_failnez (cbf_set_value (cbf, "0"));
15001511
cbf_failnez (cbf_next_row (cbf));
1501-
cbf_failnez (cbf_set_doublevalue (cbf, "%.3f", det_beam_center_to_origin_dist_y));
1512+
cbf_failnez (cbf_set_doublevalue (cbf, "%.3f", det_beam_center_to_origin_dist_y * reverse));
15021513
cbf_failnez (cbf_next_row (cbf));
15031514
cbf_failnez (cbf_set_value (cbf, "0"));
15041515

@@ -1670,7 +1681,7 @@ int adscimg2cbf_sub2(char *header,
16701681
cbf_failnez (cbf_rewind_row (cbf));
16711682
cbf_failnez (cbf_set_doublevalue (cbf, "%.6f", pixel_size));
16721683
cbf_failnez (cbf_next_row (cbf));
1673-
cbf_failnez (cbf_set_doublevalue (cbf, "%.6f", -pixel_size));
1684+
cbf_failnez (cbf_set_doublevalue (cbf, "%.6f", pixel_size));
16741685

16751686

16761687
/* Make the _array_intensities category */
@@ -2094,6 +2105,7 @@ int adscimg2cbf_sub(char *header,
20942105
NULL,
20952106
NULL,
20962107
0,
2097-
0);
2108+
0,
2109+
1);
20982110
}
20992111

0 commit comments

Comments
 (0)