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
5d4fac96
Commit
5d4fac96
authored
May 11, 2011
by
Thomas White
Browse files
partial_sim: -n option for number of patterns
parent
921b5dee
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/partial_sim.c
View file @
5d4fac96
...
...
@@ -93,6 +93,7 @@ static void show_help(const char *s)
" -p, --pdb=<file> PDB file from which to get the unit cell.
\n
"
"
\n
"
" -y, --symmetry=<sym> Symmetry of the input reflection list.
\n
"
" -n <n> Simulate <n> patterns. Default: 2
\n
"
);
}
...
...
@@ -113,7 +114,8 @@ int main(int argc, char *argv[])
struct
quaternion
orientation
;
struct
image
image
;
FILE
*
ofh
;
UnitCell
*
new
;
int
n
=
2
;
int
i
;
/* Long options */
const
struct
option
longopts
[]
=
{
...
...
@@ -128,7 +130,7 @@ int main(int argc, char *argv[])
};
/* Short options */
while
((
c
=
getopt_long
(
argc
,
argv
,
"hi:o:b:p:g:y:"
,
while
((
c
=
getopt_long
(
argc
,
argv
,
"hi:o:b:p:g:y:
n:
"
,
longopts
,
NULL
))
!=
-
1
)
{
switch
(
c
)
{
...
...
@@ -160,6 +162,10 @@ int main(int argc, char *argv[])
sym
=
strdup
(
optarg
);
break
;
case
'n'
:
n
=
atoi
(
optarg
);
break
;
case
0
:
break
;
...
...
@@ -222,6 +228,11 @@ int main(int argc, char *argv[])
return
1
;
}
if
(
n
<
1
)
{
ERROR
(
"Number of patterns must be at least 1.
\n
"
);
return
1
;
}
if
(
output_file
==
NULL
)
{
ERROR
(
"You must pgive a filename for the output.
\n
"
);
return
1
;
...
...
@@ -234,10 +245,6 @@ int main(int argc, char *argv[])
free
(
output_file
);
write_stream_header
(
ofh
,
argc
,
argv
);
/* Set up a random orientation */
orientation
=
random_quaternion
();
image
.
indexed_cell
=
cell_rotate
(
cell
,
orientation
);
image
.
det
=
det
;
image
.
width
=
det
->
max_fs
;
image
.
height
=
det
->
max_ss
;
...
...
@@ -247,26 +254,30 @@ int main(int argc, char *argv[])
image
.
bw
=
beam
->
bandwidth
;
image
.
profile_radius
=
0.005e9
;
image
.
i0_available
=
0
;
image
.
filename
=
"(simulated 1)"
;
image
.
reflections
=
find_intersections
(
&
image
,
image
.
indexed_cell
,
0
);
calculate_partials
(
image
.
reflections
,
1
.
0
,
full
,
sym
);
write_chunk
(
ofh
,
&
image
,
STREAM_INTEGRATED
);
reflist_free
(
image
.
reflections
);
/* Alter the cell by a tiny amount */
image
.
filename
=
"(simulated 2)"
;
new
=
rotate_cell
(
image
.
indexed_cell
,
deg2rad
(
1
.
0
),
deg2rad
(
0
.
0
),
0
.
0
);
cell_free
(
image
.
indexed_cell
);
image
.
indexed_cell
=
new
;
/* Calculate new partials */
image
.
reflections
=
find_intersections
(
&
image
,
image
.
indexed_cell
,
0
);
calculate_partials
(
image
.
reflections
,
0
.
5
,
full
,
sym
);
/* Give a slightly incorrect cell in the stream */
mess_up_cell
(
image
.
indexed_cell
);
write_chunk
(
ofh
,
&
image
,
STREAM_INTEGRATED
);
reflist_free
(
image
.
reflections
);
image
.
filename
=
malloc
(
256
);
for
(
i
=
0
;
i
<
n
;
i
++
)
{
/* Set up a random orientation */
orientation
=
random_quaternion
();
image
.
indexed_cell
=
cell_rotate
(
cell
,
orientation
);
snprintf
(
image
.
filename
,
255
,
"(simulated %i)"
,
i
);
image
.
reflections
=
find_intersections
(
&
image
,
image
.
indexed_cell
,
0
);
calculate_partials
(
image
.
reflections
,
1
.
0
,
full
,
sym
);
/* Give a slightly incorrect cell in the stream */
mess_up_cell
(
image
.
indexed_cell
);
write_chunk
(
ofh
,
&
image
,
STREAM_INTEGRATED
);
reflist_free
(
image
.
reflections
);
cell_free
(
image
.
indexed_cell
);
progress_bar
(
i
+
1
,
n
,
"Simulating"
);
}
fclose
(
ofh
);
cell_free
(
cell
);
...
...
@@ -274,6 +285,7 @@ int main(int argc, char *argv[])
free
(
beam
);
free
(
sym
);
reflist_free
(
full
);
free
(
image
.
filename
);
return
0
;
}
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