Source code for bdschism.generate_visit_filelist

import click
import os

[docs] def visit_list( output_dir, var, start, end, filename, ): """Generate a file containing a list of SCHISM output files to be visualized on VisIt. Parameters ---------- output_dir : str Outputs directory containing SCHISM output files. var: str variable name for SCHISM output files (e.g., horizontalVelX). start : int Starting index for the file list. end : int Ending index for the file list. filename : str Filename for the list of SCHISM output files. """ # Make sure output_dir exists try: assert os.path.exists(output_dir) except AssertionError: print(f"Path does not exist: {output_dir}") # Make sure var is a SCHISM output variable try: assert var in ["horizontalVelX", "horizontalVelY", "zCoordinates", "out2d", "salinity", "sedConcentration_1", "sedConcentration_2", "sedConcentration_3", "GEN_1", "GEN_2", "GEN_3", "temperature", "verticalVel"] except AssertionError: print(f"Invalid SCHISM output variable: {var}") # start should be less than end try: assert start <= end except AssertionError: print(f"Invalid start and end indices: start ({start}) should be less than or equal to end ({end})") # filename should have .visit extension try: assert filename.endswith(".visit") except AssertionError: print(f"File being generated should have .visit extension: {filename}") # Generate file list file_list = [] for i in range(start, end + 1): file_name = f"{var}_{i}.nc" file_path = os.path.join(output_dir, file_name) if os.path.exists(file_path): file_list.append(file_path) else: print(f"Warning: File does not exist and will be skipped: {file_path}") # Write to file with open(filename, "w") as f: for file_path in file_list: f.write(f"{file_path}\n") print(f"File list generated: `{filename}` with {len(file_list)} files.")
@click.command(help="Generates a file list for visualizaing multiple, consecutive files in VisIt. \n Example: visit_list --output_dir . --var horizontalVelX --start 1 --end 10 --filename list_winter.visit") @click.option( "--output_dir", default=None, required=True, type=click.Path(exists=True), help="Path to the `outputs` directory containing SCHISM output files.", ) @click.option( "--var", default=None, required=True, type=str, help="variable name for SCHISM output files (e.g., horizontalVelX).", ) @click.option( "--start", default=None, required=True, type=int, help=( "Starting index for the file list." ), ) @click.option( "--end", default=None, required=True, type=int, help="Ending index for the file list.", ) @click.option( "--filename", default=None, required=True, type=str, help=("Filename for the list of SCHISM output files." ), ) @click.help_option("-h", "--help") def visit_list_cli( output_dir, var, start, end, filename, ): """ Command-line interface to create a file containing a list of SCHISM output files to be visualized on VisIt. """ visit_list( output_dir, var, start, end, filename, ) if __name__ == "__main__": visit_list_cli()