Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Oleksii Turkot
CrystFEL
Commits
9686edbc
Commit
9686edbc
authored
Oct 31, 2010
by
Thomas White
Committed by
Thomas White
Feb 22, 2012
Browse files
indexamajig: Add other cell reduction possibilities, and remove --no-match
parent
6c823bf1
Changes
5
Hide whitespace changes
Inline
Side-by-side
src/cell.c
View file @
9686edbc
...
...
@@ -759,6 +759,28 @@ UnitCell *match_cell(UnitCell *cell, UnitCell *template, int verbose)
}
int
cells_similar
(
UnitCell
*
cell1
,
UnitCell
*
cell2
)
{
double
a1
,
b1
,
c1
,
al1
,
be1
,
ga1
;
double
a2
,
b2
,
c2
,
al2
,
be2
,
ga2
;
double
ltl
=
5
.
0
;
/* percent */
double
angtol
=
deg2rad
(
1
.
5
);
cell_get_parameters
(
cell1
,
&
a1
,
&
b1
,
&
c1
,
&
al1
,
&
be1
,
&
ga1
);
cell_get_parameters
(
cell2
,
&
a2
,
&
b2
,
&
c2
,
&
al2
,
&
be2
,
&
ga2
);
if
(
!
within_tolerance
(
a1
,
a2
,
ltl
)
)
return
0
;
if
(
!
within_tolerance
(
b1
,
b2
,
ltl
)
)
return
0
;
if
(
!
within_tolerance
(
c1
,
c2
,
ltl
)
)
return
0
;
if
(
fabs
(
al1
-
al2
)
>
angtol
)
return
0
;
if
(
fabs
(
be1
-
be2
)
>
angtol
)
return
0
;
if
(
fabs
(
ga1
-
ga2
)
>
angtol
)
return
0
;
return
1
;
}
/* Return sin(theta)/lambda = 1/2d. Multiply by two if you want 1/d */
double
resolution
(
UnitCell
*
cell
,
signed
int
h
,
signed
int
k
,
signed
int
l
)
{
...
...
src/cell.h
View file @
9686edbc
...
...
@@ -76,6 +76,7 @@ extern double resolution(UnitCell *cell,
extern
void
cell_print
(
UnitCell
*
cell
);
extern
UnitCell
*
match_cell
(
UnitCell
*
cell
,
UnitCell
*
template
,
int
verbose
);
extern
int
cells_similar
(
UnitCell
*
c1
,
UnitCell
*
c2
);
extern
UnitCell
*
load_cell_from_pdb
(
const
char
*
filename
);
...
...
src/index.c
View file @
9686edbc
...
...
@@ -124,7 +124,7 @@ void map_all_peaks(struct image *image)
void
index_pattern
(
struct
image
*
image
,
UnitCell
*
cell
,
IndexingMethod
indm
,
int
no_match
,
int
verbose
,
IndexingPrivate
*
ipriv
)
int
cellr
,
int
verbose
,
IndexingPrivate
*
ipriv
)
{
int
i
;
...
...
@@ -150,7 +150,7 @@ void index_pattern(struct image *image, UnitCell *cell, IndexingMethod indm,
return
;
}
if
(
no_match
||
(
indm
==
INDEXING_TEMPLATE
)
)
{
if
(
(
cellr
==
CELLR_NONE
)
||
(
indm
==
INDEXING_TEMPLATE
)
)
{
image
->
indexed_cell
=
image
->
candidate_cells
[
0
];
if
(
verbose
)
{
STATUS
(
"--------------------
\n
"
);
...
...
@@ -172,7 +172,22 @@ void index_pattern(struct image *image, UnitCell *cell, IndexingMethod indm,
STATUS
(
"--------------------
\n
"
);
}
new_cell
=
match_cell
(
image
->
candidate_cells
[
i
],
cell
,
verbose
);
/* Match or reduce the cell as appropriate */
switch
(
cellr
)
{
case
CELLR_NONE
:
/* Never happens */
break
;
case
CELLR_REDUCE
:
new_cell
=
match_cell
(
image
->
candidate_cells
[
i
],
cell
,
verbose
);
break
;
case
CELLR_COMPARE
:
if
(
cells_similar
(
image
->
candidate_cells
[
i
],
cell
)
)
{
new_cell
=
image
->
candidate_cells
[
i
];
}
break
;
}
image
->
indexed_cell
=
new_cell
;
if
(
new_cell
!=
NULL
)
{
STATUS
(
"Matched on attempt %i.
\n
"
,
i
);
...
...
src/index.h
View file @
9686edbc
...
...
@@ -22,6 +22,8 @@
#include
"image.h"
#include
"detector.h"
/* Indexing methods */
typedef
enum
{
INDEXING_NONE
,
INDEXING_DIRAX
,
...
...
@@ -29,6 +31,14 @@ typedef enum {
}
IndexingMethod
;
/* Cell reduction methods */
enum
{
CELLR_NONE
,
CELLR_REDUCE
,
CELLR_COMPARE
};
typedef
struct
_indexingprivate
IndexingPrivate
;
extern
IndexingPrivate
*
prepare_indexing
(
IndexingMethod
indm
,
UnitCell
*
cell
,
...
...
@@ -39,7 +49,7 @@ extern IndexingPrivate *prepare_indexing(IndexingMethod indm, UnitCell *cell,
extern
void
map_all_peaks
(
struct
image
*
image
);
extern
void
index_pattern
(
struct
image
*
image
,
UnitCell
*
cell
,
IndexingMethod
indm
,
int
no_match
,
int
verbose
,
IndexingMethod
indm
,
int
cellr
,
int
verbose
,
IndexingPrivate
*
priv
);
extern
void
cleanup_indexing
(
IndexingPrivate
*
priv
);
...
...
src/indexamajig.c
View file @
9686edbc
...
...
@@ -59,7 +59,6 @@ struct static_index_args
int
config_nearbragg
;
int
config_gpu
;
int
config_simulate
;
int
config_nomatch
;
int
config_polar
;
int
config_sanity
;
int
config_satcorr
;
...
...
@@ -72,6 +71,7 @@ struct static_index_args
const
double
*
intensities
;
struct
gpu_context
*
gctx
;
int
peaks
;
int
cellr
;
double
nominal_photon_energy
;
/* Output stream */
...
...
@@ -313,7 +313,6 @@ static void process_image(void *pp, int cookie)
int
config_nearbragg
=
pargs
->
static_args
.
config_nearbragg
;
int
config_gpu
=
pargs
->
static_args
.
config_gpu
;
int
config_simulate
=
pargs
->
static_args
.
config_simulate
;
int
config_nomatch
=
pargs
->
static_args
.
config_nomatch
;
int
config_polar
=
pargs
->
static_args
.
config_polar
;
IndexingMethod
indm
=
pargs
->
static_args
.
indm
;
const
double
*
intensities
=
pargs
->
static_args
.
intensities
;
...
...
@@ -397,7 +396,7 @@ static void process_image(void *pp, int cookie)
/* Calculate orientation matrix (by magic) */
if
(
config_writedrx
||
(
indm
!=
INDEXING_NONE
)
)
{
index_pattern
(
&
image
,
cell
,
indm
,
config_nomatch
,
index_pattern
(
&
image
,
cell
,
indm
,
pargs
->
static_args
.
cellr
,
config_verbose
,
pargs
->
static_args
.
ipriv
);
}
...
...
@@ -522,7 +521,6 @@ int main(int argc, char *argv[])
int
config_simulate
=
0
;
int
config_cmfilter
=
0
;
int
config_noisefilter
=
0
;
int
config_nomatch
=
0
;
int
config_gpu
=
0
;
int
config_verbose
=
0
;
int
config_alternate
=
0
;
...
...
@@ -543,6 +541,8 @@ int main(int argc, char *argv[])
char
*
pdb
=
NULL
;
char
*
prefix
=
NULL
;
char
*
speaks
=
NULL
;
char
*
scellr
=
NULL
;
int
cellr
;
int
peaks
;
int
nthreads
=
1
;
int
i
;
...
...
@@ -564,6 +564,7 @@ int main(int argc, char *argv[])
{
"no-index"
,
0
,
&
config_noindex
,
1
},
{
"dump-peaks"
,
0
,
&
config_dumpfound
,
1
},
{
"peaks"
,
1
,
NULL
,
2
},
{
"cell-reduction"
,
1
,
NULL
,
3
},
{
"near-bragg"
,
0
,
&
config_nearbragg
,
1
},
{
"write-drx"
,
0
,
&
config_writedrx
,
1
},
{
"indexing"
,
1
,
NULL
,
'z'
},
...
...
@@ -572,7 +573,6 @@ int main(int argc, char *argv[])
{
"simulate"
,
0
,
&
config_simulate
,
1
},
{
"filter-cm"
,
0
,
&
config_cmfilter
,
1
},
{
"filter-noise"
,
0
,
&
config_noisefilter
,
1
},
{
"no-match"
,
0
,
&
config_nomatch
,
1
},
{
"verbose"
,
0
,
&
config_verbose
,
1
},
{
"alternate"
,
0
,
&
config_alternate
,
1
},
{
"intensities"
,
1
,
NULL
,
'q'
},
...
...
@@ -647,6 +647,10 @@ int main(int argc, char *argv[])
speaks
=
strdup
(
optarg
);
break
;
case
3
:
scellr
=
strdup
(
optarg
);
break
;
case
0
:
break
;
...
...
@@ -743,6 +747,22 @@ int main(int argc, char *argv[])
}
free
(
indm_str
);
if
(
scellr
==
NULL
)
{
STATUS
(
"You didn't specify a cell reduction method, so I'm"
" going to use 'reduce'.
\n
"
);
cellr
=
CELLR_REDUCE
;
}
else
if
(
strcmp
(
scellr
,
"none"
)
==
0
)
{
cellr
=
CELLR_NONE
;
}
else
if
(
strcmp
(
scellr
,
"reduce"
)
==
0
)
{
cellr
=
CELLR_REDUCE
;
}
else
if
(
strcmp
(
scellr
,
"compare"
)
==
0
)
{
cellr
=
CELLR_COMPARE
;
}
else
{
ERROR
(
"Unrecognised cell reduction method '%s'
\n
"
,
scellr
);
return
1
;
}
free
(
scellr
);
/* free(NULL) is OK. */
if
(
geometry
==
NULL
)
{
ERROR
(
"You need to specify a geometry file with --geometry
\n
"
);
return
1
;
...
...
@@ -755,7 +775,7 @@ int main(int argc, char *argv[])
}
free
(
geometry
);
if
(
(
!
config_nomatch
)
||
(
indm
==
INDEXING_TEMPLATE
)
)
{
if
(
(
cellr
!=
CELLR_NONE
)
||
(
indm
==
INDEXING_TEMPLATE
)
)
{
cell
=
load_cell_from_pdb
(
pdb
);
if
(
cell
==
NULL
)
{
ERROR
(
"Couldn't read unit cell (from %s)
\n
"
,
pdb
);
...
...
@@ -814,12 +834,12 @@ int main(int argc, char *argv[])
qargs
.
static_args
.
config_nearbragg
=
config_nearbragg
;
qargs
.
static_args
.
config_gpu
=
config_gpu
;
qargs
.
static_args
.
config_simulate
=
config_simulate
;
qargs
.
static_args
.
config_nomatch
=
config_nomatch
;
qargs
.
static_args
.
config_polar
=
config_polar
;
qargs
.
static_args
.
config_sanity
=
config_sanity
;
qargs
.
static_args
.
config_satcorr
=
config_satcorr
;
qargs
.
static_args
.
config_sa
=
config_sa
;
qargs
.
static_args
.
config_closer
=
config_closer
;
qargs
.
static_args
.
cellr
=
cellr
;
qargs
.
static_args
.
threshold
=
threshold
;
qargs
.
static_args
.
det
=
det
;
qargs
.
static_args
.
indm
=
indm
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment