Star File Utilities
- class pipeliner.starfile_handler.BodyFile(fn_in: str)
Bases:
StarFile
A star file that lists the bodies in a multibody refinement
- class pipeliner.starfile_handler.DataStarFile(fn_in: str | os.PathLike[str])
Bases:
StarFile
A general class for starfiles that contain data, such as particles files
- data
A gemmi cif object containing the data from the star file
- Type:
- column_as_list(blockname: str | None, colname: str) List[str]
Return a single column from a block as a list
- class pipeliner.starfile_handler.JobStar(fn_in: str)
Bases:
StarFile
A class for star files that define a pipeliner job parameters
- joboptions
The joboptions {name: value} all values are strings regardless of joboption type
- Type:
- all_options_as_dict() Dict[str, str]
Returns a dict of all the parameters of a jobstar file
The dict contains both the job options and the running options. All values in the dict are strings.
- make_substitutions(conversions: Dict[str, str])
Substitute one job name or file name for another wherever it appears
- modify(params_to_change: dict, allow_add=False)
Change multiple values in a jobstar from a dict
- Parameters:
- Raises:
ValueError – If an attempt is made to add new fields with allow_add=False
- write(outname: str | os.PathLike[str] = '')
Write a star file from the JobStar
- Parameters:
outname (str or
Path
) – name of the output file; will overwrite the original file if none provided
- class pipeliner.starfile_handler.StarFile(fn_in: str | os.PathLike[str])
Bases:
object
A superclass for all types of starfiles used by the pipeliner
- loop_as_list(block: str = '', columns: List[str] | None = None, headers: bool = False) List[List[str]]
Returns a set of columns from a starfile loop as a list
- Parameters:
- Returns:
- The column data one row per sublist. If headers=True
the first sublist contains the headers
- Return type:
List[List[str]]
- Raises:
ValueError – If the specified block is not found
ValueError – If the specified block does not contain a loop
ValueError – If any of the specified columns are not found
- pairs_as_dict(block: str = '') Dict[str, str]
Returns paired values from a starfile as a dict
- Parameters:
block (str) – The name of the block to get the data from
- Returns:
{parameter: value}
- Return type:
- Raises:
ValueError – If the specified block is not found
ValueError – If the specified block is a loop and not a pair-value
- pipeliner.starfile_handler.compare_starfiles(starfile1: str, starfile2: str) Tuple[bool, bool]
See if two starfiles contain the same information
Direct comparison can be difficult because the starfile columns or blocks can be in different orders
- pipeliner.starfile_handler.convert_old_relion_pipeline(fn_in: str)
Convert a pipeline STAR file from RELION 3 or 4 to ccpem-pipeliner format.
The file is also checked and corrected if it contains any reserved words which would cause Gemmi’s CIF parser to fail when the file is read.
Note that this function reads the whole file several times, but pipeline STAR files are never expected to be so large that this would take a significant amount of time.
- Returns:
True
if the file was converted, orFalse
otherwise.- Raises:
ValueError – if the pipeline file is invalid or its version cannot be determined
- pipeliner.starfile_handler.fix_reserved_words(fn_in)
Make sure the starfile doesn’t contain any illegally used reserved words
Overwrites the original file if it is corrected. The old file is saved as
filename.orig
.- Returns:
True
if the file was corrected, orFalse
if it contained no reserved words and did not need correcting.
- pipeliner.starfile_handler.interconvert_box_star_coords(fn_in: str, out_name: str | None = None) str
Interconvert .box and .star coordinate files
- Parameters:
- Returns:
Name of the file written
- Return type:
- Raises:
ValueError – If the file is not .box or .star
Starfile writing utilities
Writes star files in the same style as RELION
- pipeliner.star_writer.write(doc: Document, filename: str | os.PathLike[str])
Write a Gemmi CIF document to a RELION-style STAR file.
The file is written as an atomic operation. This ensures that any processes reading it will always see a valid version (old or new) and not a half-written new file.
The document is written to a temporary file first, then after the writing is complete and the file has been flushed to disk, the target file is replaced with the temporary one. The temporary file will always be removed even if the replacement is unsuccessful.
Note: it is still possible for data to be lost using this function, if two processes try to write to the file at the same time. In that case, one of the new versions of the file will be kept and the other will not.
- Parameters:
doc (
gemmi.cif.Document
) – The data to write outfilename (str or pathlib.Path) – The name of the file to write the data to
- pipeliner.star_writer.write_jobstar(in_dict: dict, out_fn: str | os.PathLike[str])
Write a job.star file from a dictionary of options