Loading pixi.lock +431 −469 File changed.Preview size limit exceeded, changes collapsed. Show changes pyproject.toml +1 −1 Original line number Diff line number Diff line [project] name = "ips-fastran-gui" version = "0.3.2" version = "0.4.0" description = "IPS Fastran GUI Project" authors = [] readme = "README.md" Loading src/ips_fastran_gui/app/models/ips_fastran.py +14 −4 Original line number Diff line number Diff line Loading @@ -3,9 +3,9 @@ import logging import os import zipfile from typing import List, Tuple from typing import Callable, List, Tuple from nova.galaxy import Dataset, Parameters, Tool from nova.galaxy import Connection, Dataset, Parameters, Tool from nova.galaxy.interfaces import BasicTool from ips_fastran_gui.app.models.main_model import MainModel Loading @@ -17,26 +17,36 @@ logger.setLevel(logging.INFO) class IPSFastranTool(BasicTool): """Class that prepares IPS Fastran tool.""" def __init__(self, model: MainModel) -> None: def __init__(self, model: MainModel, store_factory: Callable, galaxy_url: str, galaxy_api_key: str) -> None: super().__init__() self.model = model connection = Connection(galaxy_url, galaxy_api_key).connect() self.store = connection.get_data_store("ips_fastran") def prepare_tool(self) -> Tuple[Tool, Parameters]: # Prepare file ingestion into Galaxy self.inputs_dataset = Dataset(name="inputs.zip") with zipfile.ZipFile("input.zip", "w") as zip_obj: for file in self.model.config.input_files: zip_obj.writestr(file["name"], file["content"].encode("latin1")) self.inputs_dataset.path = "input.zip" self.config_dataset = Dataset(name="config.txt") self.config_dataset.set_content(self.model.config.file_contents) # Create the tool instance tool_params = Parameters() tool_params.add_input(name="inputs", value=self.inputs_dataset) tool_params.add_input(name="config", value=self.config_dataset) tool_params.add_input(name="shot_number", value=self.model.config.shot_number) tool_params.add_input(name="time_id", value=self.model.config.time_id) tool_params.add_input(name="__job_resource|__job_resource__select", value="yes") tool_params.add_input(name="__job_resource|nodes", value=self.model.resource_params.number_of_nodes) tool_params.add_input(name="__job_resource|ntasks_per_node", value=self.model.resource_params.tasks_per_node) tool_params.add_input(name="__job_resource|qos", value=self.model.resource_params.partition) tool_params.add_input(name="__job_resource|time", value=self.model.resource_params.time_limit) tool_params.add_input(name="__job_resource|remote_resource_cloud_nersc", value="nersc") self.tool = Tool(id="fusion_ips_fastran") self.tool = Tool(id="fusion-ips-fastran") return self.tool, tool_params Loading src/ips_fastran_gui/app/models/main_model.py +11 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ class Config(BaseModel): other interfaces for improved clarity and usability. """ input_files: List[Dict[str, Any]] = Field(default=[], title="Input Files") shot_number: str = Field(default="000001", title="Shot Number") time_id: str = Field(default="00001", title="Time ID") file_contents: str = Field(default="") Loading @@ -33,6 +34,7 @@ class ResourceParameters(BaseModel): partition: str = Field(default="debug", title="Partition") number_of_nodes: int = Field(default=1, ge=1, le=2, title="Number of Nodes") time_limit: int = Field(default=10, ge=1, le=10080, title="Time Limit (minutes)") tasks_per_node: int = Field(default=1, ge=0, le=128, title="Number of Tasks Per Node (0 to disable)") class PlotJSON(BaseModel): Loading @@ -55,6 +57,15 @@ class MainModel: def set_config(self, json_data: str) -> None: self.config.file_contents = json_data def set_files(self, files: List[Dict[str, Any]]) -> None: if not files: self.config.input_files = [] for file in files: decoded_file = file.copy() decoded_file["content"] = decoded_file["content"].decode("latin1") self.config.input_files.append(decoded_file) def set_plot(self, json_data: str) -> None: self.plot_json = PlotJSON.model_validate_json(json_data) Loading src/ips_fastran_gui/app/view_models/execution.py +1 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ class ExecutionViewModel: def __init__(self, model: MainModel, _binding: BindingInterface): self.model = model galaxy_url, galaxy_api_key = parse_args() self.tool = IPSFastranTool(model) self.tool = IPSFastranTool(model, self.store_factory, galaxy_url, galaxy_api_key) self.tool_runner = ToolRunner("ips_fastran", self.tool, self.store_factory, galaxy_url, galaxy_api_key) self.tool_runner.progress_signal.connect(self.on_progress) self.completion_signal = signal("ips_fastran_complete") Loading Loading
pyproject.toml +1 −1 Original line number Diff line number Diff line [project] name = "ips-fastran-gui" version = "0.3.2" version = "0.4.0" description = "IPS Fastran GUI Project" authors = [] readme = "README.md" Loading
src/ips_fastran_gui/app/models/ips_fastran.py +14 −4 Original line number Diff line number Diff line Loading @@ -3,9 +3,9 @@ import logging import os import zipfile from typing import List, Tuple from typing import Callable, List, Tuple from nova.galaxy import Dataset, Parameters, Tool from nova.galaxy import Connection, Dataset, Parameters, Tool from nova.galaxy.interfaces import BasicTool from ips_fastran_gui.app.models.main_model import MainModel Loading @@ -17,26 +17,36 @@ logger.setLevel(logging.INFO) class IPSFastranTool(BasicTool): """Class that prepares IPS Fastran tool.""" def __init__(self, model: MainModel) -> None: def __init__(self, model: MainModel, store_factory: Callable, galaxy_url: str, galaxy_api_key: str) -> None: super().__init__() self.model = model connection = Connection(galaxy_url, galaxy_api_key).connect() self.store = connection.get_data_store("ips_fastran") def prepare_tool(self) -> Tuple[Tool, Parameters]: # Prepare file ingestion into Galaxy self.inputs_dataset = Dataset(name="inputs.zip") with zipfile.ZipFile("input.zip", "w") as zip_obj: for file in self.model.config.input_files: zip_obj.writestr(file["name"], file["content"].encode("latin1")) self.inputs_dataset.path = "input.zip" self.config_dataset = Dataset(name="config.txt") self.config_dataset.set_content(self.model.config.file_contents) # Create the tool instance tool_params = Parameters() tool_params.add_input(name="inputs", value=self.inputs_dataset) tool_params.add_input(name="config", value=self.config_dataset) tool_params.add_input(name="shot_number", value=self.model.config.shot_number) tool_params.add_input(name="time_id", value=self.model.config.time_id) tool_params.add_input(name="__job_resource|__job_resource__select", value="yes") tool_params.add_input(name="__job_resource|nodes", value=self.model.resource_params.number_of_nodes) tool_params.add_input(name="__job_resource|ntasks_per_node", value=self.model.resource_params.tasks_per_node) tool_params.add_input(name="__job_resource|qos", value=self.model.resource_params.partition) tool_params.add_input(name="__job_resource|time", value=self.model.resource_params.time_limit) tool_params.add_input(name="__job_resource|remote_resource_cloud_nersc", value="nersc") self.tool = Tool(id="fusion_ips_fastran") self.tool = Tool(id="fusion-ips-fastran") return self.tool, tool_params Loading
src/ips_fastran_gui/app/models/main_model.py +11 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ class Config(BaseModel): other interfaces for improved clarity and usability. """ input_files: List[Dict[str, Any]] = Field(default=[], title="Input Files") shot_number: str = Field(default="000001", title="Shot Number") time_id: str = Field(default="00001", title="Time ID") file_contents: str = Field(default="") Loading @@ -33,6 +34,7 @@ class ResourceParameters(BaseModel): partition: str = Field(default="debug", title="Partition") number_of_nodes: int = Field(default=1, ge=1, le=2, title="Number of Nodes") time_limit: int = Field(default=10, ge=1, le=10080, title="Time Limit (minutes)") tasks_per_node: int = Field(default=1, ge=0, le=128, title="Number of Tasks Per Node (0 to disable)") class PlotJSON(BaseModel): Loading @@ -55,6 +57,15 @@ class MainModel: def set_config(self, json_data: str) -> None: self.config.file_contents = json_data def set_files(self, files: List[Dict[str, Any]]) -> None: if not files: self.config.input_files = [] for file in files: decoded_file = file.copy() decoded_file["content"] = decoded_file["content"].decode("latin1") self.config.input_files.append(decoded_file) def set_plot(self, json_data: str) -> None: self.plot_json = PlotJSON.model_validate_json(json_data) Loading
src/ips_fastran_gui/app/view_models/execution.py +1 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ class ExecutionViewModel: def __init__(self, model: MainModel, _binding: BindingInterface): self.model = model galaxy_url, galaxy_api_key = parse_args() self.tool = IPSFastranTool(model) self.tool = IPSFastranTool(model, self.store_factory, galaxy_url, galaxy_api_key) self.tool_runner = ToolRunner("ips_fastran", self.tool, self.store_factory, galaxy_url, galaxy_api_key) self.tool_runner.progress_signal.connect(self.on_progress) self.completion_signal = signal("ips_fastran_complete") Loading