Commit 7d097392 authored by Thomas White's avatar Thomas White
Browse files

Configure PDB filename for get_hkl and pattern_sim

parent 056de872
......@@ -41,7 +41,9 @@ static void show_help(const char *s)
" --zone-axis Generate hk0 intensities only (and add\n"
" Synth2D-style header.\n"
" -i, --intensities=<file> Read intensities from file instead of\n"
" calculating them from scratch.\n"
" calculating them from scratch. You might use\n"
" this if you need to apply noise or twinning.\n"
" -p, --pdb=<file> PDB file from which to get the structure.\n"
);
}
......@@ -114,6 +116,7 @@ int main(int argc, char *argv[])
unsigned int *cts;
char *input = NULL;
signed int h, k, l;
char *filename = NULL;
/* Long options */
const struct option longopts[] = {
......@@ -124,11 +127,12 @@ int main(int argc, char *argv[])
{"twin", 0, &config_twin, 1},
{"zone-axis", 0, &config_za, 1},
{"intensities", 1, NULL, 'i'},
{"pdb", 1, NULL, 'p'},
{0, 0, NULL, 0}
};
/* Short options */
while ((c = getopt_long(argc, argv, "ht:o:i:", longopts, NULL)) != -1) {
while ((c = getopt_long(argc, argv, "ht:o:i:p:", longopts, NULL)) != -1) {
switch (c) {
case 'h' : {
......@@ -151,6 +155,11 @@ int main(int argc, char *argv[])
break;
}
case 'p' : {
filename = strdup(optarg);
break;
}
case 0 : {
break;
}
......@@ -162,10 +171,14 @@ int main(int argc, char *argv[])
}
mol = load_molecule();
if ( filename == NULL ) {
filename = strdup("molecule.pdb");
}
mol = load_molecule(filename);
cts = new_list_count();
if ( input == NULL ) {
ideal_ref = get_reflections(mol, eV_to_J(1790.0), 1/(0.6e-9), cts);
ideal_ref = get_reflections(mol, eV_to_J(1790.0), 1/(0.05e-9), cts);
} else {
ideal_ref = read_reflections(input, cts);
free(input);
......
......@@ -41,6 +41,9 @@ static void show_help(const char *s)
"pulses of X-rays from a free electron laser.\n"
"\n"
" -h, --help Display this help message.\n"
" -p, --pdb=<file> PDB file from which to get the unit cell.\n"
" (The actual Bragg intensities come from the\n"
" intensities file)\n"
" --simulation-details Show technical details of the simulation.\n"
" --gpu Use the GPU to speed up the calculation.\n"
"\n"
......@@ -166,6 +169,7 @@ int main(int argc, char *argv[])
int config_nosfac = 0;
int config_gpu = 0;
int config_powder = 0;
char *filename = NULL;
char *grad_str = NULL;
GradientMethod grad;
int ndone = 0; /* Number of simulations done (images or not) */
......@@ -189,11 +193,12 @@ int main(int argc, char *argv[])
{"intensities", 1, NULL, 'i'},
{"powder", 0, &config_powder, 1},
{"gradients", 1, NULL, 'g'},
{"pdb", 1, NULL, 'p'},
{0, 0, NULL, 0}
};
/* Short options */
while ((c = getopt_long(argc, argv, "hrn:i:g:", longopts, NULL)) != -1) {
while ((c = getopt_long(argc, argv, "hrn:i:g:p:", longopts, NULL)) != -1) {
switch (c) {
case 'h' : {
......@@ -221,6 +226,11 @@ int main(int argc, char *argv[])
break;
}
case 'p' : {
filename = strdup(optarg);
break;
}
case 0 : {
break;
}
......@@ -232,6 +242,10 @@ int main(int argc, char *argv[])
}
if ( filename == NULL ) {
filename = strdup("molecule.pdb");
}
if ( config_simdetails ) {
show_details();
return 0;
......@@ -282,7 +296,7 @@ int main(int argc, char *argv[])
image.width = 1024;
image.height = 1024;
image.lambda = ph_en_to_lambda(eV_to_J(1790.0)); /* Wavelength */
cell = load_cell_from_pdb("molecule.pdb");
cell = load_cell_from_pdb(filename);
image.filename = NULL;
#include "geometry-lcls.tmp"
......
......@@ -311,7 +311,7 @@ static void centre_molecule(struct molecule *mol)
/* Load PDB file into a memory format suitable for efficient(ish) structure
* factor calculation */
struct molecule *load_molecule()
struct molecule *load_molecule(const char *filename)
{
struct molecule *mol;
FILE *fh;
......@@ -327,7 +327,7 @@ struct molecule *load_molecule()
mol->reflections = NULL;
mol->cell = NULL;
fh = fopen("molecule.pdb", "r");
fh = fopen(filename, "r");
if ( fh == NULL ) {
ERROR("Couldn't open PDB file\n");
return NULL;
......
......@@ -58,7 +58,7 @@ struct molecule
/* This is so that the water background calculation can use it */
extern double complex get_sfac(const char *n, double s, double en);
extern struct molecule *load_molecule(void);
extern struct molecule *load_molecule(const char *filename);
extern void free_molecule(struct molecule *mol);
extern double *get_reflections(struct molecule *mol, double en, double res,
unsigned int *counts);
......
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