Commit f249b77f authored by Thomas White's avatar Thomas White
Browse files

Remove anything which deletes a reflection or optimises a RefList

parent 0ec021f6
......@@ -265,9 +265,9 @@ int main(int argc, char *argv[])
int ncom;
RefList *list1;
RefList *list2;
RefList *list1_transformed;
RefList *list2_transformed;
RefList *ratio;
RefList *deleteme;
int config_shells = 0;
char *pdb = NULL;
int rej1 = 0;
......@@ -384,9 +384,9 @@ int main(int argc, char *argv[])
}
/* Find common reflections (taking symmetry into account) */
list1_transformed = reflist_new();
list2_transformed = reflist_new();
ratio = reflist_new();
deleteme = reflist_new();
for ( refl1 = first_refl(list1, &iter);
refl1 != NULL;
refl1 = next_refl(refl1, iter) )
......@@ -403,11 +403,11 @@ int main(int argc, char *argv[])
get_indices(refl1, &h, &k, &l);
if ( !find_equiv_in_list(list2, h, k, l, sym, &he, &ke, &le) ) {
/* No common reflection */
add_refl(deleteme, h, k, l);
continue;
}
copy_data(add_refl(list1_transformed, h, k, l), refl1);
refl2 = find_refl(list2, he, ke, le);
assert(refl2 != NULL);
......@@ -457,22 +457,7 @@ int main(int argc, char *argv[])
STATUS("%i,%i reflections: %i in common\n",
num_reflections(list1), num_reflections(list2), ncom);
/* Trim reflections from 'list1' which had no equivalents in 'list2' */
for ( refl1 = first_refl(deleteme, &iter);
refl1 != NULL;
refl1 = next_refl(refl1, iter) ) {
signed int h, k, l;
Reflection *del;
get_indices(refl1, &h, &k, &l);
del = find_refl(list1, h, k, l);
assert(del != NULL);
delete_refl(del);
}
reflist_free(deleteme);
reflist_free(list1);
reflist_free(list2);
/* Trimming the other way round is not necessary,
......@@ -480,49 +465,51 @@ int main(int argc, char *argv[])
arr2 = intensities_from_list(list2_transformed);
reflist_free(list2_transformed);
R1 = stat_r1_ignore(list1, arr2, &scale_r1fi, config_unity);
R1 = stat_r1_ignore(list1_transformed, arr2, &scale_r1fi, config_unity);
STATUS("R1(F) = %5.4f %% (scale=%5.2e)"
" (ignoring negative intensities)\n",
R1*100.0, scale_r1fi);
R1 = stat_r1_zero(list1, arr2, &scale_r1, config_unity);
R1 = stat_r1_zero(list1_transformed, arr2, &scale_r1, config_unity);
STATUS("R1(F) = %5.4f %% (scale=%5.2e)"
" (zeroing negative intensities)\n",
R1*100.0, scale_r1);
R2 = stat_r2(list1, arr2, &scale_r2, config_unity);
R2 = stat_r2(list1_transformed, arr2, &scale_r2, config_unity);
STATUS("R2(I) = %5.4f %% (scale=%5.2e)\n", R2*100.0, scale_r2);
R1i = stat_r1_i(list1, arr2, &scale_r1i, config_unity);
R1i = stat_r1_i(list1_transformed, arr2, &scale_r1i, config_unity);
STATUS("R1(I) = %5.4f %% (scale=%5.2e)\n", R1i*100.0, scale_r1i);
Rdiff = stat_rdiff_ignore(list1, arr2, &scale_rdig, config_unity);
Rdiff = stat_rdiff_ignore(list1_transformed, arr2, &scale_rdig,
config_unity);
STATUS("Rint(F) = %5.4f %% (scale=%5.2e)"
" (ignoring negative intensities)\n",
Rdiff*100.0, scale_rdig);
Rdiff = stat_rdiff_zero(list1, arr2, &scale, config_unity);
Rdiff = stat_rdiff_zero(list1_transformed, arr2, &scale, config_unity);
STATUS("Rint(F) = %5.4f %% (scale=%5.2e)"
" (zeroing negative intensities)\n",
Rdiff*100.0, scale);
Rdiff = stat_rdiff_intensity(list1, arr2, &scale_rintint, config_unity);
Rdiff = stat_rdiff_intensity(list1_transformed, arr2, &scale_rintint,
config_unity);
STATUS("Rint(I) = %5.4f %% (scale=%5.2e)\n",
Rdiff*100.0, scale_rintint);
pearson = stat_pearson_i(list1, arr2);
pearson = stat_pearson_i(list1_transformed, arr2);
STATUS("Pearson r(I) = %5.4f\n", pearson);
pearson = stat_pearson_f_ignore(list1, arr2);
pearson = stat_pearson_f_ignore(list1_transformed, arr2);
STATUS("Pearson r(F) = %5.4f (ignoring negative intensities)\n",
pearson);
pearson = stat_pearson_f_zero(list1, arr2);
pearson = stat_pearson_f_zero(list1_transformed, arr2);
STATUS("Pearson r(F) = %5.4f (zeroing negative intensities)\n",
pearson);
if ( config_shells ) {
plot_shells(list1, arr2, scale_r1i,
plot_shells(list1_transformed, arr2, scale_r1i,
cell, sym, rmin_fix, rmax_fix);
}
......
......@@ -350,7 +350,6 @@ int main(int argc, char *argv[])
/* This is the raw list of reflections */
as = asymmetric_indices(images[n_usable_patterns].reflections,
sym);
optimise_reflist(as);
reflist_free(images[n_usable_patterns].reflections);
images[n_usable_patterns].reflections = as;
......
......@@ -302,10 +302,7 @@ RefList *read_reflections_from_file(FILE *fh)
if ( rval == NULL ) continue;
chomp(line);
if ( strcmp(line, REFLECTION_END_MARKER) == 0 ) {
optimise_reflist(out);
return out;
}
if ( strcmp(line, REFLECTION_END_MARKER) == 0 ) return out;
r = sscanf(line, "%i %i %i %f %s %f %s %i %f %f",
&h, &k, &l, &intensity, phs, &sigma, ress, &cts,
......@@ -321,7 +318,7 @@ RefList *read_reflections_from_file(FILE *fh)
double ph;
char *v;
refl = add_serialised_refl(out, h, k, l);
refl = add_refl(out, h, k, l);
set_int(refl, intensity);
set_detector_pos(refl, 0.0, fs, ss);
set_esd_intensity(refl, sigma);
......
......@@ -87,8 +87,6 @@ static int test_lists(int num_items)
}
optimise_reflist(list);
/* Iterate over the list and check we find everything */
int count = 0;
for ( refl = first_refl(list, &iter);
......@@ -154,93 +152,6 @@ static int test_lists(int num_items)
}
/* Delete some reflections */
for ( i=0; i<num_items/2; i++ ) {
int j;
signed int h, k, l;
Reflection *refl;
h = check[i].h;
k = check[i].k;
l = check[i].l;
refl = find_refl(list, h, k, l);
delete_refl(refl);
/* Update all counts */
for ( j=0; j<num_items; j++ ) {
if ( (check[j].h == h) && (check[j].k == k)
&& (check[j].l == l) ) check[j].num--;
}
}
/* Check that the deleted reflections can no longer be found */
for ( i=0; i<num_items; i++ ) {
signed int h, k, l;
Reflection *refl;
h = check[i].h;
k = check[i].k;
l = check[i].l;
if ( check[i].num > 0 ) continue;
refl = find_refl(list, h, k, l);
if ( refl != NULL ) {
fprintf(stderr, "Found %3i %i %3i after deletion.\n",
h, k, l);
return 1;
}
}
/* Delete remaining duplicates */
for ( i=0; i<num_items; i++ ) {
signed int h, k, l;
Reflection *refl;
if ( check[i].num == 0 ) continue;
h = check[i].h;
k = check[i].k;
l = check[i].l;
refl = find_refl(list, h, k, l);
do {
int j;
signed int ha, ka, la;
Reflection *next;
get_indices(refl, &ha, &ka, &la);
next = next_found_refl(refl);
delete_refl(refl);
refl = next;
for ( j=0; j<num_items; j++ ) {
if ( (check[j].h == h) && (check[j].k == k)
&& (check[j].l == l) ) check[j].num--;
}
} while ( refl != NULL );
if ( check[i].num != 0 ) {
fprintf(stderr, "Found too few duplicates (%i) for "
"%3i %3i %3i\n", check[i].num, h, k, l);
return 1;
}
refl = find_refl(list, h, k, l);
if ( refl != NULL ) {
fprintf(stderr, "Found too many duplicates for "
"%3i %3i %3i\n", h, k, l);
return 1;
}
}
reflist_free(list);
free(check);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment