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
1b5c5d98
Commit
1b5c5d98
authored
Feb 09, 2010
by
Thomas White
Browse files
Add compare_hkl utility for working out Lorentz factors
parent
203bba5b
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/Makefile.am
View file @
1b5c5d98
bin_PROGRAMS
=
pattern_sim process_hkl get_hkl indexamajig
bin_PROGRAMS
=
pattern_sim process_hkl get_hkl indexamajig
compare_hkl
if
HAVE_GTK
bin_PROGRAMS
+=
hdfsee
...
...
@@ -33,3 +33,6 @@ endif
get_hkl_SOURCES
=
get_hkl.c sfac.c cell.c utils.c reflections.c
get_hkl_LDADD
=
@LIBS@
compare_hkl_SOURCES
=
compare_hkl.c sfac.c cell.c utils.c reflections.c
compare_hkl_LDADD
=
@LIBS@
src/compare_hkl.c
0 → 100644
View file @
1b5c5d98
/*
* compare_hkl.c
*
* Compare reflection lists
*
* (c) 2006-2010 Thomas White <taw@physics.org>
*
* Part of CrystFEL - crystallography with a FEL
*
*/
#ifdef HAVE_CONFIG_H
#include
<config.h>
#endif
#include
<stdarg.h>
#include
<stdlib.h>
#include
<stdio.h>
#include
<string.h>
#include
<unistd.h>
#include
<getopt.h>
#include
"utils.h"
#include
"sfac.h"
#include
"reflections.h"
static
void
show_help
(
const
char
*
s
)
{
printf
(
"Syntax: %s [options] <file1.hkl> <file2.hkl>
\n\n
"
,
s
);
printf
(
"Compare intensity lists.
\n
"
"
\n
"
" -h, --help Display this help message.
\n
"
" -o, --output=<filename> Specify output filename for correction factor.
\n
"
"
\n
"
);
}
int
main
(
int
argc
,
char
*
argv
[])
{
int
c
;
double
*
ref1
;
double
*
ref2
;
double
*
out
;
struct
molecule
*
mol
;
char
*
outfile
=
NULL
;
char
*
afile
=
NULL
;
char
*
bfile
=
NULL
;
signed
int
h
,
k
,
l
;
/* Long options */
const
struct
option
longopts
[]
=
{
{
"help"
,
0
,
NULL
,
'h'
},
{
"output"
,
1
,
NULL
,
'o'
},
{
0
,
0
,
NULL
,
0
}
};
/* Short options */
while
((
c
=
getopt_long
(
argc
,
argv
,
"ho:a:b:"
,
longopts
,
NULL
))
!=
-
1
)
{
switch
(
c
)
{
case
'h'
:
{
show_help
(
argv
[
0
]);
return
0
;
}
case
'o'
:
{
outfile
=
strdup
(
optarg
);
break
;
}
case
'a'
:
{
afile
=
strdup
(
optarg
);
break
;
}
case
'b'
:
{
bfile
=
strdup
(
optarg
);
break
;
}
case
0
:
{
break
;
}
default
:
{
return
1
;
}
}
}
if
(
outfile
==
NULL
)
{
ERROR
(
"You must specify the output filename with -o
\n
"
);
return
1
;
}
mol
=
load_molecule
();
ref1
=
read_reflections
(
afile
);
if
(
ref1
==
NULL
)
{
ERROR
(
"Couldn't open file '%s'
\n
"
,
afile
);
return
1
;
}
ref2
=
read_reflections
(
bfile
);
if
(
ref2
==
NULL
)
{
ERROR
(
"Couldn't open file '%s'
\n
"
,
bfile
);
return
1
;
}
out
=
new_list_intensity
();
for
(
h
=-
INDMAX
;
h
<
INDMAX
;
h
++
)
{
for
(
k
=-
INDMAX
;
k
<
INDMAX
;
k
++
)
{
for
(
l
=-
INDMAX
;
l
<
INDMAX
;
l
++
)
{
double
i1
,
i2
;
i1
=
lookup_intensity
(
ref1
,
h
,
k
,
l
);
i2
=
lookup_intensity
(
ref2
,
h
,
k
,
l
);
if
(
(
i1
!=
0
.
0
)
&&
(
i2
!=
0
.
0
)
)
{
set_intensity
(
out
,
h
,
k
,
l
,
i1
/
i2
);
}
}
}
}
write_reflections
(
outfile
,
NULL
,
out
,
1
,
mol
->
cell
);
return
0
;
}
src/reflections.c
View file @
1b5c5d98
...
...
@@ -77,6 +77,40 @@ void write_reflections(const char *filename, unsigned int *counts,
}
double
*
read_reflections
(
const
char
*
filename
)
{
double
*
ref
;
FILE
*
fh
;
char
*
rval
;
fh
=
fopen
(
filename
,
"r"
);
if
(
fh
==
NULL
)
{
ERROR
(
"Failed to open input file
\n
"
);
return
NULL
;
}
ref
=
new_list_intensity
();
do
{
char
line
[
1024
];
signed
int
h
,
k
,
l
,
intensity
;
int
r
;
rval
=
fgets
(
line
,
1023
,
fh
);
r
=
sscanf
(
line
,
"%i %i %i %i"
,
&
h
,
&
k
,
&
l
,
&
intensity
);
if
(
r
!=
4
)
continue
;
set_intensity
(
ref
,
h
,
k
,
l
,
intensity
);
}
while
(
rval
!=
NULL
);
fclose
(
fh
);
return
ref
;
}
double
*
ideal_intensities
(
double
complex
*
sfac
)
{
double
*
ref
;
...
...
src/reflections.h
View file @
1b5c5d98
...
...
@@ -23,6 +23,8 @@
extern
void
write_reflections
(
const
char
*
filename
,
unsigned
int
*
counts
,
double
*
ref
,
int
zone_axis
,
UnitCell
*
cell
);
extern
double
*
read_reflections
(
const
char
*
filename
);
extern
double
*
ideal_intensities
(
double
complex
*
sfac
);
...
...
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