-
Notifications
You must be signed in to change notification settings - Fork 1
Vmxm spotfinding #343
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Vmxm spotfinding #343
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -56,7 +56,11 @@ def construct_commandline( | |
| "unit_cell": "xia2.settings.unit_cell", | ||
| } | ||
| for param, value in params["ispyb_parameters"].items(): | ||
| command.append(translation.get(param, param) + "=" + value) | ||
| if param.startswith("spotfinder"): | ||
| if "find_spots.phil_file=spots.phil" not in command: | ||
| command.append("find_spots.phil_file=spots.phil") | ||
| else: | ||
| command.append(translation.get(param, param) + "=" + value) | ||
|
|
||
| return command | ||
|
|
||
|
|
@@ -195,11 +199,22 @@ def run_xia2(self, working_directory: Path, params: dict): | |
| f"Could not create run_xia2.sh script file in the working directory {working_directory}" | ||
| ) | ||
| return False | ||
| command = ["sh", f"{working_directory}/run_xia2.sh"] | ||
| run_command = ["sh", f"{working_directory}/run_xia2.sh"] | ||
| else: | ||
| run_command = command | ||
|
|
||
| subprocess_directory = working_directory / params["program_name"] | ||
| subprocess_directory.mkdir(parents=True, exist_ok=True) | ||
|
|
||
| # Write out spot finding parameters that are not directly accessible in xia2 to phil file | ||
|
|
||
| if "find_spots.phil_file=spots.phil" in command: | ||
| with open(subprocess_directory / "spots.phil", "w") as phil: | ||
| for param, value in params["ispyb_parameters"].items(): | ||
| if "spotfinder" in param: | ||
| phil.write(f"{param}={value}\n") | ||
| self.log.info(f"Created spots.phil in {subprocess_directory}") | ||
|
|
||
|
Comment on lines
+209
to
+217
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. To add to the comment I made on the earlier code block, if you created a list of spotfinder params, you could just do |
||
| if "dials.integrate.phil_file" in params["xia2"]: | ||
| dials_integrate_phil_file = subprocess_directory / params["xia2"].get( | ||
| "dials.integrate.phil_file" | ||
|
|
@@ -219,7 +234,7 @@ def run_xia2(self, working_directory: Path, params: dict): | |
| try: | ||
| start_time = time.perf_counter() | ||
| result = subprocess.run( | ||
| command, | ||
| run_command, | ||
| timeout=params.get("timeout"), | ||
| cwd=subprocess_directory, | ||
| ) | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A bit nit-picky but I think this would be more readable as an if and statement rather than nested if statements
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On second thoughts, if you keep the nested if statement, you could create a list of the spotfinder commands and use that later on to create the phil file, rhater than looping through all of the parameters again.