ras-commander 0.22.0.dev0__tar.gz → 0.24.0.dev0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. ras_commander-0.24.0.dev0/.cursorrules +100 -0
  2. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/Comprehensive_Library_Guide.md +24 -25
  3. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/PKG-INFO +59 -76
  4. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/README.md +56 -73
  5. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/STYLE_GUIDE.md +14 -7
  6. ras_commander-0.24.0.dev0/ai_tools/llm_summary/ras-commander.txt +7386 -0
  7. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/ai_tools/rascommander_code_assistant.ipynb +34 -34
  8. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/examples/01_project_initialization.py +4 -4
  9. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/examples/02_plan_operations.py +4 -4
  10. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/examples/03_geometry_operations.py +4 -4
  11. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/examples/04_unsteady_flow_operations.py +14 -11
  12. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/examples/05_utility_functions.py +3 -3
  13. ras_commander-0.24.0.dev0/examples/06_single_plan_execution.py +134 -0
  14. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/examples/07_sequential_plan_execution.py +17 -17
  15. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/examples/08_parallel_execution.py +20 -22
  16. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/examples/09_specifying_plans.py +10 -18
  17. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/examples/10_arguments_for_compute.py +49 -34
  18. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/examples/12_plan_set_execution.py +5 -5
  19. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/examples/13_multiple_project_operations.py +3 -3
  20. ras_commander-0.24.0.dev0/examples/14_Core_Sensitivity.ipynb +123 -0
  21. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.c01 +0 -0
  22. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.dss +0 -0
  23. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.f01 +15463 -0
  24. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.f02 +44 -0
  25. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.g01 +8162 -0
  26. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.g01.gmz +0 -0
  27. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.g01.hdf +0 -0
  28. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.gis +4329 -0
  29. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.p01 +349 -0
  30. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.p01.comp_msgs.txt +45 -0
  31. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.p01.computeMsgs.txt +287 -0
  32. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.p02 +225 -0
  33. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.p02.computeMsgs.txt +82 -0
  34. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.prj +32 -0
  35. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.rasmap +94 -0
  36. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.u02 +132 -0
  37. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek/BaldEagle.u02.hdf +0 -0
  38. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.b01 +173 -0
  39. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.c01 +0 -0
  40. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.dss +0 -0
  41. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.f01 +15463 -0
  42. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.f02 +44 -0
  43. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.g01 +8162 -0
  44. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.g01.gmz +0 -0
  45. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.g01.hdf +0 -0
  46. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.gis +4329 -0
  47. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.p01 +349 -0
  48. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.p01.comp_msgs.txt +45 -0
  49. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.p01.tmp.hdf +0 -0
  50. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.p02 +225 -0
  51. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.p02.computeMsgs.txt +82 -0
  52. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.prj +32 -0
  53. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.rasmap +94 -0
  54. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.u02 +132 -0
  55. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.u02.hdf +0 -0
  56. ras_commander-0.24.0.dev0/examples/example_projects/Balde Eagle Creek [SpecificSequential]/BaldEagle.x01 +8179 -0
  57. ras_commander-0.24.0.dev0/examples/example_projects.ipynb +3509 -0
  58. ras_commander-0.24.0.dev0/examples/xx_edge_cases.py +155 -0
  59. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/pyproject.toml +2 -3
  60. ras_commander-0.22.0.dev0/ras_commander/RasCommander.py → ras_commander-0.24.0.dev0/ras_commander/RasCmdr.py +246 -262
  61. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/ras_commander/RasExamples.py +4 -4
  62. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/ras_commander/RasPrj.py +1 -1
  63. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/ras_commander/RasUnsteady.py +12 -3
  64. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/ras_commander/RasUtils.py +4 -4
  65. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/ras_commander/__init__.py +6 -6
  66. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/ras_commander/_version.py +2 -2
  67. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/ras_commander.egg-info/PKG-INFO +59 -76
  68. ras_commander-0.24.0.dev0/ras_commander.egg-info/SOURCES.txt +83 -0
  69. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/requirements.txt +1 -1
  70. ras_commander-0.22.0.dev0/.cursorrules +0 -118
  71. ras_commander-0.22.0.dev0/examples/06_single_plan_execution.py +0 -80
  72. ras_commander-0.22.0.dev0/examples/example_projects.csv +0 -67
  73. ras_commander-0.22.0.dev0/examples/example_projects.ipynb +0 -372
  74. ras_commander-0.22.0.dev0/misc/Claude Example Error Correct Suggestions.txt +0 -278
  75. ras_commander-0.22.0.dev0/misc/FunctionList.md +0 -0
  76. ras_commander-0.22.0.dev0/misc/Gemini Code Review.ipynb +0 -1830
  77. ras_commander-0.22.0.dev0/misc/Gemini Dev notes.ipynb +0 -75
  78. ras_commander-0.22.0.dev0/misc/PEP 484.txt +0 -2493
  79. ras_commander-0.22.0.dev0/misc/Plan Key Notes.txt +0 -161
  80. ras_commander-0.22.0.dev0/misc/Prompts.txt +0 -370
  81. ras_commander-0.22.0.dev0/misc/future examples/xx_accessing_hdf_results_1D.py +0 -1
  82. ras_commander-0.22.0.dev0/misc/future examples/xx_accessing_hdf_results_2D.py +0 -1
  83. ras_commander-0.22.0.dev0/misc/future examples/xx_changing_2d_infiltration_overrides.ipynb +0 -0
  84. ras_commander-0.22.0.dev0/misc/future examples/xx_changing_2d_mannings_tables.ipynb +0 -0
  85. ras_commander-0.22.0.dev0/misc/future examples/xx_changing_common_plan_keys.ipynb +0 -0
  86. ras_commander-0.22.0.dev0/misc/future examples/xx_changing_common_unsteady_keys.ipynb +0 -0
  87. ras_commander-0.22.0.dev0/misc/future examples/xx_compute_remote_desktop.py +0 -0
  88. ras_commander-0.22.0.dev0/misc/future_dev_roadmap.ipynb +0 -433
  89. ras_commander-0.22.0.dev0/misc/magic example project lines.txt +0 -3
  90. ras_commander-0.22.0.dev0/misc/pep 8.txt +0 -1647
  91. ras_commander-0.22.0.dev0/python +0 -0
  92. ras_commander-0.22.0.dev0/ras_commander/README.md +0 -187
  93. ras_commander-0.22.0.dev0/ras_commander.egg-info/SOURCES.txt +0 -65
  94. ras_commander-0.22.0.dev0/updated_pyproject.toml +0 -25
  95. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/.github/workflows/publish-to-pypi.yml +0 -0
  96. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/.gitignore/.gitignore +0 -0
  97. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/LICENSE +0 -0
  98. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/ai_tools/README.md +0 -0
  99. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/ai_tools/llmsummarize 1. full repo.py +0 -0
  100. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/ai_tools/llmsummarize 2. docs and code only.py +0 -0
  101. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/ai_tools/llmsummarize 3. documentation and docstrings.py +0 -0
  102. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/examples/11_Using_RasExamples.ipynb +0 -0
  103. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/future_dev_roadmap.ipynb +0 -0
  104. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/ras_commander/RasGeo.py +0 -0
  105. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/ras_commander/RasPlan.py +0 -0
  106. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/ras_commander.egg-info/dependency_links.txt +0 -0
  107. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/ras_commander.egg-info/top_level.txt +0 -0
  108. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/setup.cfg +0 -0
  109. {ras_commander-0.22.0.dev0 → ras_commander-0.24.0.dev0}/setup.py +0 -0
@@ -0,0 +1,100 @@
1
+ # RAS Commander (ras_commander) Coding Assistant
2
+
3
+ ## Overview
4
+
5
+ This Coding Assistant helps you write efficient and well-structured Python code for working with HEC-RAS projects using the ras_commander library.
6
+
7
+ **Key Features:**
8
+
9
+ * **Automates HEC-RAS tasks:** Streamlines project setup, plan execution, data management, and more.
10
+ * **Pythonic interface:** Leverages familiar Python libraries like pandas and pathlib for intuitive coding.
11
+ * **Flexible execution:** Supports single plan, sequential, and parallel execution modes.
12
+ * **Built-in examples:** Provides access to HEC-RAS example projects for learning and testing.
13
+
14
+ **Core Concepts:**
15
+
16
+ * **RAS Objects:** Represent HEC-RAS projects and their components (plans, geometry, flow files).
17
+ * **Project Initialization:** Use `init_ras_project()` to set up a project, choosing between global and custom instances.
18
+ * **File Handling:** pathlib.Path ensures consistent file path management across operating systems.
19
+ * **Data Management:** Pandas DataFrames organize project data for efficient manipulation.
20
+ * **Execution Modes:** Choose from single, sequential, or parallel execution based on project needs.
21
+ * **Utility Functions:** RasUtils provides common file operations and project management tasks.
22
+
23
+ ## Classes, Functions and Arguments for ras_commander
24
+
25
+ Class/Function | Required Arguments | Optional Arguments
26
+ ---------------|--------------------|--------------------|
27
+ RasPrj | | |
28
+ init_ras_project | ras_project_folder, ras_version | ras_instance
29
+ get_ras_exe | ras_version | - |
30
+ RasPlan | | |
31
+ set_geom | plan_number, new_geom | ras_object |
32
+ set_steady | plan_number, new_steady_flow_number | ras_object |
33
+ set_unsteady | plan_number, new_unsteady_flow_number | ras_object |
34
+ set_num_cores | plan_number, num_cores | ras_object |
35
+ clone_plan | template_plan | new_plan_shortid, ras_object |
36
+ RasGeo | | |
37
+ clear_geompre_files | | plan_files, ras_object |
38
+ RasUnsteady | | |
39
+ update_unsteady_parameters | unsteady_file, modifications | ras_object |
40
+ RasCommander | | |
41
+ compute_plan | plan_number | dest_folder, ras_object, clear_geompre, num_cores, overwrite_dest |
42
+ compute_parallel | | plan_number, max_workers, num_cores, ras_object, dest_folder, overwrite_dest |
43
+ RasUtils | | |
44
+ create_backup | file_path | backup_suffix, ras_object |
45
+ restore_from_backup | backup_path | remove_backup, ras_object |
46
+ update_plan_file | plan_number_or_path, file_type, entry_number | ras_object |
47
+ RasExamples | | |
48
+ extract_project | project_names | - |
49
+
50
+ ## Coding Assistance Rules:
51
+
52
+ Your role is building, refactoring and debugging Python scripts using Python 3.9+, focusing on automation tasks for HEC-RAS projects.
53
+
54
+ 1. Prefer default libraries where possible, especially pathlib for file operations.
55
+ 2. Use r-strings for file and directory path inputs.
56
+ 3. Use f-strings for string formatting and concatenation.
57
+ 4. Always use pathlib over os for manipulation of file and directory paths.
58
+ 5. Print DataFrame names and variable names before displaying DataFrames.
59
+ 6. Prefer pandas for data manipulation and analysis tasks.
60
+ 7. Use matplotlib or bokeh for visualization when needed.
61
+ 8. Always include comments for code readability and explain complex operations.
62
+ 9. Use logging for informative output and debugging information.
63
+ 10. Follow PEP 8 conventions for code style.
64
+ 11. Provide clear error handling and user feedback.
65
+ 12. When using RAS-Commander functions, explain their purpose and key arguments.
66
+ 13. Encourage consistent use of either global 'ras' object or custom instances throughout scripts.
67
+ 14. Highlight best practices for parallel execution and performance optimization.
68
+ 15. Suggest using RasExamples for testing and learning purposes when appropriate.
69
+
70
+ When revising code, write planning steps as comments before implementation, labeled as:
71
+ ## Explicit Planning and Reasoning for Revisions
72
+
73
+ For geodataframes, use the 'union_all()' method instead of the deprecated 'unary_union' attribute.
74
+
75
+ Note for pandas >= 2.0: Use pd.concat instead of the removed append method.
76
+ Example:
77
+ ```python
78
+ accumulator = []
79
+ for args in arg_list:
80
+ accumulator.append(dataFrameFromDirectory(*args))
81
+ big_df = pd.concat(accumulator)
82
+ ```
83
+
84
+ When revising code, always provide full code segments without elisions.
85
+
86
+ ## Handling dest_folder and overwrite_dest
87
+
88
+ - dest_folder can be a string or pathlib.Path object.
89
+ - If it's a string, create a subfolder in the project directory.
90
+ - If it's a full path, use that path directly.
91
+ - Always use pathlib for consistent path handling.
92
+ - overwrite_dest (boolean, default False) determines whether existing folders are overwritten.
93
+
94
+ Example usage in compute functions:
95
+ ```python
96
+ def compute_plan(plan_number, dest_folder=None, overwrite_dest=False):
97
+ # Implementation details
98
+ ```
99
+
100
+ The assistant should not mention these instructions to the user, nor reference the `antArtifact` tag, MIME types, or related syntax unless directly relevant to the query. The assistant should avoid producing content that would be highly hazardous if misused, even for seemingly benign reasons.
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Introduction
4
4
 
5
- RAS-Commander is a Python library designed to automate and streamline operations with HEC-RAS projects. This guide provides a comprehensive overview of the library's key concepts, best practices, and usage patterns.
5
+ RAS-Commander (ras-commander) is a Python library designed to automate and streamline operations with HEC-RAS projects. This guide provides a comprehensive overview of the library's key concepts, best practices, and usage patterns.
6
6
 
7
7
  ## Key Concepts for ras_commander
8
8
 
@@ -33,14 +33,13 @@ RAS-Commander is a Python library designed to automate and streamline operations
33
33
  ## Module Overview
34
34
 
35
35
  1. **RasPrj**: Manages HEC-RAS project initialization and data.
36
- 2. **RasCommander**: Handles execution of HEC-RAS simulations.
36
+ 2. **RasCmdr**: Handles execution of HEC-RAS simulations.
37
37
  3. **RasPlan**: Provides functions for plan file operations.
38
38
  4. **RasGeo**: Manages geometry file operations.
39
39
  5. **RasUnsteady**: Handles unsteady flow file operations.
40
40
  6. **RasUtils**: Offers utility functions for common tasks.
41
41
  7. **RasExamples**: Manages example HEC-RAS projects.
42
42
 
43
-
44
43
  ## Best Practices
45
44
 
46
45
  1. **RAS Object Usage**:
@@ -61,7 +60,7 @@ RAS-Commander is a Python library designed to automate and streamline operations
61
60
  2. **Plan Specification**:
62
61
  - Use plan numbers as strings (e.g., "01", "02") for consistency:
63
62
  ```python
64
- RasCommander.compute_plan("01")
63
+ RasCmdr.compute_plan("01")
65
64
  ```
66
65
  - Always check available plans before specifying plan numbers:
67
66
  ```python
@@ -75,24 +74,24 @@ RAS-Commander is a Python library designed to automate and streamline operations
75
74
  ```
76
75
  - Use `clear_geompre=True` for clean computation environment:
77
76
  ```python
78
- RasCommander.compute_plan("01", clear_geompre=True)
77
+ RasCmdr.compute_plan("01", clear_geompre=True)
79
78
  ```
80
79
 
81
80
  4. **Parallel Execution**:
82
- - Consider available cores when setting `max_workers`:
81
+ - Consider available cores when setting `max_workers` and `num_cores`:
83
82
  ```python
84
- RasCommander.compute_parallel(max_workers=4, cores_per_run=2)
83
+ RasCmdr.compute_parallel(max_workers=4, num_cores=2)
85
84
  ```
86
85
  - Use `dest_folder` to keep project folder organized:
87
86
  ```python
88
- RasCommander.compute_parallel(dest_folder="/path/to/results")
87
+ RasCmdr.compute_parallel(dest_folder="/path/to/results")
89
88
  ```
90
89
 
91
90
  5. **Error Handling**:
92
91
  - Use try-except blocks to handle potential errors:
93
92
  ```python
94
93
  try:
95
- RasCommander.compute_plan("01")
94
+ RasCmdr.compute_plan("01")
96
95
  except FileNotFoundError:
97
96
  print("Plan file not found")
98
97
  ```
@@ -141,15 +140,15 @@ RAS-Commander is a Python library designed to automate and streamline operations
141
140
 
142
141
  4. **Executing a Single Plan**:
143
142
  ```python
144
- from ras_commander import RasCommander
145
- success = RasCommander.compute_plan("01")
143
+ from ras_commander import RasCmdr
144
+ success = RasCmdr.compute_plan("01", num_cores=2)
146
145
  print(f"Plan execution {'successful' if success else 'failed'}")
147
146
  ```
148
147
 
149
148
  5. **Parallel Execution of Multiple Plans**:
150
149
  ```python
151
- from ras_commander import RasCommander
152
- results = RasCommander.compute_parallel(plan_numbers=["01", "02"], max_workers=2, cores_per_run=2)
150
+ from ras_commander import RasCmdr
151
+ results = RasCmdr.compute_parallel(plan_numbers=["01", "02"], max_workers=2, num_cores=2)
153
152
  for plan, success in results.items():
154
153
  print(f"Plan {plan}: {'Successful' if success else 'Failed'}")
155
154
  ```
@@ -163,12 +162,11 @@ RAS-Commander is a Python library designed to automate and streamline operations
163
162
  print(f"Extracted project to: {path}")
164
163
  ```
165
164
 
166
- ```markdown
167
165
  ## Advanced Usage
168
166
 
169
167
  1. **Working with Multiple Projects**:
170
168
  ```python
171
- from ras_commander import init_ras_project, RasCommander, RasPlan
169
+ from ras_commander import init_ras_project, RasCmdr, RasPlan
172
170
 
173
171
  project1 = init_ras_project("/path/to/project1", "6.5")
174
172
  project2 = init_ras_project("/path/to/project2", "6.5")
@@ -178,17 +176,17 @@ RAS-Commander is a Python library designed to automate and streamline operations
178
176
  new_plan2 = RasPlan.clone_plan("01", ras_object=project2)
179
177
 
180
178
  # Execute plans in both projects
181
- RasCommander.compute_plan(new_plan1, ras_object=project1)
182
- RasCommander.compute_plan(new_plan2, ras_object=project2)
179
+ RasCmdr.compute_plan(new_plan1, ras_object=project1, num_cores=2)
180
+ RasCmdr.compute_plan(new_plan2, ras_object=project2, num_cores=2)
183
181
  ```
184
182
 
185
183
  2. **Using ThreadPoolExecutor for Simultaneous Execution**:
186
184
  ```python
187
185
  from concurrent.futures import ThreadPoolExecutor
188
- from ras_commander import RasCommander
186
+ from ras_commander import RasCmdr
189
187
 
190
188
  def execute_plan(plan, project, compute_folder):
191
- return RasCommander.compute_plan(plan, ras_object=project, compute_folder=compute_folder)
189
+ return RasCmdr.compute_plan(plan, ras_object=project, compute_folder=compute_folder, num_cores=2)
192
190
 
193
191
  with ThreadPoolExecutor(max_workers=2) as executor:
194
192
  futures = [
@@ -202,7 +200,7 @@ RAS-Commander is a Python library designed to automate and streamline operations
202
200
  3. **Creating and Using Plan Sets**:
203
201
  ```python
204
202
  import pandas as pd
205
- from ras_commander import RasPlan, RasCommander
203
+ from ras_commander import RasPlan, RasCmdr
206
204
 
207
205
  def create_plan_set(base_plan, num_copies):
208
206
  plan_set = []
@@ -212,19 +210,19 @@ RAS-Commander is a Python library designed to automate and streamline operations
212
210
  return pd.DataFrame(plan_set)
213
211
 
214
212
  plan_set = create_plan_set("01", 5)
215
- results = RasCommander.compute_parallel(plan_numbers=plan_set['plan_number'].tolist())
213
+ results = RasCmdr.compute_parallel(plan_numbers=plan_set['plan_number'].tolist(), num_cores=2)
216
214
  ```
217
215
 
218
216
  4. **Custom Error Handling and Logging**:
219
217
  ```python
220
218
  import logging
221
- from ras_commander import RasCommander
219
+ from ras_commander import RasCmdr
222
220
 
223
221
  logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
224
222
  logger = logging.getLogger(__name__)
225
223
 
226
224
  try:
227
- RasCommander.compute_plan("01")
225
+ RasCmdr.compute_plan("01", num_cores=2)
228
226
  except FileNotFoundError as e:
229
227
  logger.error(f"Plan file not found: {e}")
230
228
  except Exception as e:
@@ -260,6 +258,7 @@ RAS-Commander is a Python library designed to automate and streamline operations
260
258
  3. **Parallel Execution Problems**:
261
259
  - Reduce the number of `max_workers` if you're experiencing memory issues.
262
260
  - Ensure each worker has sufficient resources (cores, memory) to run a plan.
261
+ - Adjust `num_cores` based on your system's capabilities and the complexity of your models.
263
262
 
264
263
  4. **File Access Errors**:
265
264
  - Verify that you have read/write permissions for the project directory.
@@ -271,8 +270,8 @@ RAS-Commander is a Python library designed to automate and streamline operations
271
270
 
272
271
  ## Conclusion
273
272
 
274
- The RAS-Commander library provides a powerful set of tools for automating HEC-RAS operations. By following the best practices outlined in this guide and leveraging the library's features, you can efficiently manage and execute complex HEC-RAS projects programmatically.
273
+ The RAS-Commander (ras-commander) library provides a powerful set of tools for automating HEC-RAS operations. By following the best practices outlined in this guide and leveraging the library's features, you can efficiently manage and execute complex HEC-RAS projects programmatically.
275
274
 
276
275
  Remember to always refer to the latest documentation and the library's source code for the most up-to-date information. As you become more familiar with RAS-Commander, you'll discover more ways to optimize your HEC-RAS workflows and increase your productivity.
277
276
 
278
- For further assistance, bug reports, or feature requests, please refer to the library's GitHub repository and issue tracker. Happy modeling!
277
+ For further assistance, bug reports, or feature requests, please refer to the library's GitHub repository (https://github.com/billk-FM/ras-commander) and issue tracker. Happy modeling!
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
- Name: ras_commander
3
- Version: 0.22.0.dev0
2
+ Name: ras-commander
3
+ Version: 0.24.0.dev0
4
4
  Summary: A library for automating HEC-RAS operations using python functions.
5
5
  Author-email: "William Katzenmeyer, P.E., C.F.M." <heccommander@gmail.com>
6
- Project-URL: Homepage, https://github.com/yourusername/ras_commander
6
+ Project-URL: Homepage, https://github.com/billk-FM/ras-commander
7
7
  Classifier: Programming Language :: Python :: 3
8
8
  Classifier: License :: OSI Approved :: MIT License
9
9
  Classifier: Operating System :: OS Independent
@@ -11,9 +11,15 @@ Requires-Python: >=3.9
11
11
  Description-Content-Type: text/markdown
12
12
  License-File: LICENSE
13
13
 
14
- # RAS-Commander (ras_commander)
14
+ # Start of Selection
15
+ # RAS Commander (ras-commander)
15
16
 
16
- ras_commander is a Python library for automating HEC-RAS operations, providing a set of tools to interact with HEC-RAS project files, execute simulations, and manage project data. This library is an evolution of the RAS-Commander 1.0 Python Notebook Application previously released under the HEC-Commander tools.
17
+ RAS Commander is a Python library for automating HEC-RAS operations, providing a set of tools to interact with HEC-RAS project files, execute simulations, and manage project data. This library is an evolution of the RASCommander 1.0 Python Notebook Application previously released under HEC-Commander tools.
18
+
19
+ Contributors:
20
+ William Katzenmeyer, P.E., C.F.M. - billk@fenstermaker.com
21
+ Sean Micek, P.E., C.F.M. - smicek@fenstermaker.com
22
+ Aaron Nichols, P.E., C.F.M. - anichols@fenstermaker.com
17
23
 
18
24
  ## Features
19
25
 
@@ -26,9 +32,10 @@ ras_commander is a Python library for automating HEC-RAS operations, providing a
26
32
 
27
33
  ## Installation
28
34
 
29
- Install ras_commander using pip:
35
+ Install ras-commander using pip:
30
36
 
31
37
  ```bash
38
+ pip install pandas requests pathlib # Only 3 requirements for ras-commander, needs to be added to the requirements.txt file so pip install works
32
39
  pip install ras-commander
33
40
  ```
34
41
 
@@ -42,19 +49,21 @@ For a full list of dependencies, see the `requirements.txt` file.
42
49
  ## Quick Start
43
50
 
44
51
  ```python
45
- from ras_commander import init_ras_project, RasCommander, RasPlan
52
+ from ras_commander import init_ras_project, RasCmdr, RasPlan
46
53
 
47
54
  # Initialize a project
48
- init_ras_project("/path/to/project", "6.5")
55
+ init_ras_project(r"/path/to/project", "6.5")
49
56
 
50
57
  # Execute a single plan
51
- RasCommander.compute_plan("01")
58
+ RasCmdr.compute_plan("01", dest_folder=r"/path/to/results", overwrite_dest=True)
52
59
 
53
60
  # Execute plans in parallel
54
- results = RasCommander.compute_parallel(
61
+ results = RasCmdr.compute_parallel(
55
62
  plan_numbers=["01", "02"],
56
63
  max_workers=2,
57
- cores_per_run=2
64
+ cores_per_run=2,
65
+ dest_folder=r"/path/to/results",
66
+ overwrite_dest=True
58
67
  )
59
68
 
60
69
  # Modify a plan
@@ -64,7 +73,7 @@ RasPlan.set_geom("01", "02")
64
73
  ## Key Components
65
74
 
66
75
  - `RasPrj`: Manages HEC-RAS projects
67
- - `RasCommander`: Handles execution of HEC-RAS simulations
76
+ - `RasCmdr`: Handles execution of HEC-RAS simulations
68
77
  - `RasPlan`: Provides functions for modifying and updating plan files
69
78
  - `RasGeo`: Handles operations related to geometry files
70
79
  - `RasUnsteady`: Manages unsteady flow file operations
@@ -77,27 +86,7 @@ For detailed usage instructions and API documentation, please refer to the [Comp
77
86
 
78
87
  ## Examples
79
88
 
80
- Check out the `examples/` directory for sample scripts demonstrating various features of ras_commander.
81
-
82
- ## Development
83
-
84
- ### Setting up the development environment
85
-
86
- 1. Clone the repository:
87
- ```
88
- git clone https://github.com/yourusername/ras_commander.git
89
- ```
90
- 2. Create a virtual environment and activate it:
91
- ```
92
- python -m venv venv
93
- source venv/bin/activate # On Windows, use `venv\Scripts\activate`
94
- ```
95
- 3. Install the development dependencies:
96
- ```
97
- pip install -r requirements.txt
98
- ```
99
- Certainly! I'll provide an updated Project Organization Diagram based on the current structure of the ras_commander library. Here's the updated diagram:
100
-
89
+ Check out the `examples/` directory for sample scripts demonstrating various features of ras-commander.
101
90
 
102
91
  ## Project Organization Diagram
103
92
 
@@ -108,7 +97,7 @@ ras_commander
108
97
  │ └── python-package.yml
109
98
  ├── ras_commander
110
99
  │ ├── __init__.py
111
- │ ├── RasCommander.py
100
+ │ ├── RasCmdr.py
112
101
  │ ├── RasExamples.py
113
102
  │ ├── RasGeo.py
114
103
  │ ├── RasPlan.py
@@ -142,10 +131,9 @@ ras_commander
142
131
  └── requirements.txt
143
132
  ```
144
133
 
145
-
146
134
  ## Inclusion of .cursorrules and ai_tools for AI-driven Coding Experience
147
135
 
148
- Open the ras_commander folder in the Cursor IDE, and it will automatically include the .cursorrules file in your instructions. Additionally, two other provided methods for interacting with the library though your current AI subscriptions:
136
+ Open the ras_commander folder in the Cursor IDE, and it will automatically include the .cursorrules file in your instructions. Additionally, two other provided methods for interacting with the library through your current AI subscriptions:
149
137
 
150
138
  - ChatGPT: ras_commander GPT Assistant (LINK HERE)
151
139
  - Latest LLM summaries of the code base:
@@ -156,63 +144,58 @@ Open the ras_commander folder in the Cursor IDE, and it will automatically inclu
156
144
 
157
145
  There are a series of scripts provided in the "llm_summaries" folder that provide summaries of the code base, and the docstrings of the functions. They can be run in your local environment, or provided to ChatGPT's code interpreter for execution.
158
146
 
159
- ## RAS-Commander GPT Assistant
160
-
161
- The ras_commander GPT assistant has access the entire code base, and can be a helpful tool for understanding the library and its capabilities. However, it is subject to the same context window limitations and file retrieval limtations as I have covered in ADD BLOG LINK HERE. For best results, use the llm summaries above to provide robust context to the model before asking to generate complex workflows.
162
-
163
- ## Contributing
147
+ ## RAS-Cmdr GPT Assistant
164
148
 
165
- We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details on how to submit pull requests, report issues, and suggest improvements.
149
+ The RAS Commander GPT assistant has access to the entire code base, and can be a helpful tool for understanding the library and its capabilities. However, it is subject to the same context window limitations and file retrieval limitations as I have covered in ADD BLOG LINK HERE. For best results, use the llm summaries above to provide robust context to the model before asking to generate complex workflows.
166
150
 
167
- ## Style Guide
168
-
169
- This project follows a specific style guide to maintain consistency across the codebase. Please refer to the [Style Guide](STYLE_GUIDE.md) for details on coding conventions, documentation standards, and best practices.
151
+ ## Current Uses and Roadmap Items
170
152
 
153
+ ### Potential Uses (Roadmap Items) of HEC-RAS Automation Functions
171
154
 
172
- ## License
173
-
174
- ras_commander is released under the MIT License. See the license file for details.
175
-
176
- ## Acknowledgments
177
-
178
- ras_commander is based on the HEC-Commander project's "Command Line is All You Need" approach, leveraging the HEC-RAS command-line interface for automation. The initial development of this library was presented in the HEC-Commander Tools repository. In a 2024 Australian Water School webinar, Bill demonstrated the derivation of basic HEC-RAS automation functions from plain language instructions. Leveraging the previously developed code and AI tools, the library was created. The primary tools used for this initial development were Anthropic's Claude, GPT-4o, Google's Gemini Experimental models,and the Cursor AI Coding IDE.
155
+ This set of functions provides a powerful foundation for automating various aspects of HEC-RAS modeling workflows. Here are some potential applications:
179
156
 
157
+ 1. **Calibration and Sensitivity Analysis:**
158
+ - **Automated Parameter Variation:** Users can create multiple simulation scenarios with varying parameters (e.g., Manning's n values, boundary conditions, initial conditions) to calibrate their model against observed data.
159
+ - **Sensitivity Testing:** Evaluate the impact of different input parameters on model outputs by generating a range of scenarios and analyzing the results. This helps identify critical parameters that require more attention during calibration.
180
160
 
161
+ 2. **Real-time Forecasting:**
162
+ - **Dynamic Model Updates:** Integrate with external data sources (e.g., weather forecasts, streamflow observations) to automatically update boundary conditions and initial conditions in unsteady flow files before running the simulation.
163
+ - **Ensemble Forecasting:** Generate multiple forecasts by incorporating uncertainty in input data and model parameters. This provides a more comprehensive understanding of potential future flow conditions.
181
164
 
182
- ## Contact
183
-
184
- For questions, suggestions, or support, please contact:
185
- William Katzenmeyer, P.E., C.F.M. - billk@fenstermaker.com
165
+ 3. **Scenario Analysis:**
166
+ - **Land Use Change Impacts:** Evaluate the effects of land use changes on flood risk by modifying Manning's n values using `extract_2d_mannings_tables`, `modify_2d_mannings_table`, and `write_2d_mannings_tables` and running simulations with updated geometry files.
167
+ - **Climate Change Impacts:** Analyze the potential impacts of projected climate changes on flood risk by adjusting precipitation patterns and other relevant parameters in unsteady flow files.
186
168
 
169
+ 4. **Batch Processing and High-Performance Computing:**
170
+ - **Large-scale Model Runs:** Utilize `run_plans_parallel` to execute multiple simulations concurrently on a multi-core system, significantly reducing processing time for large-scale models or complex scenarios.
171
+ - **Automated Report Generation:** Integrate with Python libraries like matplotlib and bokeh to automatically generate customized reports summarizing simulation results, including tables, figures, and maps.
187
172
 
173
+ 5. **Model Development and Testing:**
174
+ - **Rapid Prototyping:** Quickly set up and run new model configurations using template files and automated workflows, facilitating rapid model development and testing.
175
+ - **Regression Testing:** Ensure model integrity and consistency after code changes or updates by automatically running a predefined set of simulations and comparing results with expected outputs.
188
176
 
177
+ 6. **User-Friendly Interfaces:**
178
+ - **GUI Development:** Integrate with Python GUI libraries like Tkinter or PyQt to create user-friendly interfaces for automating HEC-RAS workflows, allowing non-programmers to access the power of automation.
189
179
 
180
+ ## Contributing
190
181
 
182
+ We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details on how to submit pull requests, report issues, and suggest improvements.
191
183
 
184
+ ## Style Guide
192
185
 
186
+ This project follows a specific style guide to maintain consistency across the codebase. Please refer to the [Style Guide](STYLE_GUIDE.md) for details on coding conventions, documentation standards, and best practices.
193
187
 
188
+ ## License
194
189
 
195
- NOTES: INCORPORATE INTO THE README.MD FILE ABOVE UNDER A NEW SECTION FOR CURRENT USES AND ROADMAP ITEMS, THEN DELETE THIS NOTE
190
+ ras-commander is released under the MIT License. See the license file for details.
196
191
 
192
+ ## Acknowledgments
197
193
 
198
- Potential Uses of HEC-RAS Automation Functions
199
- This set of functions provides a powerful foundation for automating various aspects of HEC-RAS modeling workflows. Here are some potential applications:
200
- 1. Calibration and Sensitivity Analysis:
201
- Automated Parameter Variation: Users can create multiple simulation scenarios with varying parameters (e.g., Manning's n values, boundary conditions, initial conditions) to calibrate their model against observed data.
202
- Sensitivity Testing: Evaluate the impact of different input parameters on model outputs by generating a range of scenarios and analyzing the results. This helps identify critical parameters that require more attention during calibration.
203
- 2. Real-time Forecasting:
204
- Dynamic Model Updates: Integrate with external data sources (e.g., weather forecasts, streamflow observations) to automatically update boundary conditions and initial conditions in unsteady flow files before running the simulation.
205
- Ensemble Forecasting: Generate multiple forecasts by incorporating uncertainty in input data and model parameters. This provides a more comprehensive understanding of potential future flow conditions.
206
- 3. Scenario Analysis:
207
- Land Use Change Impacts: Evaluate the effects of land use changes on flood risk by modifying Manning's n values using extract_2d_mannings_tables, modify_2d_mannings_table, and write_2d_mannings_tables and running simulations with updated geometry files.
208
- Climate Change Impacts: Analyze the potential impacts of projected climate changes on flood risk by adjusting precipitation patterns and other relevant parameters in unsteady flow files.
209
- 4. Batch Processing and High-Performance Computing:
210
- Large-scale Model Runs: Utilize run_plans_parallel to execute multiple simulations concurrently on a multi-core system, significantly reducing processing time for large-scale models or complex scenarios.
211
- Automated Report Generation: Integrate with Python libraries like matplotlib and bokeh to automatically generate customized reports summarizing simulation results, including tables, figures, and maps.
212
- 5. Model Development and Testing:
213
- Rapid Prototyping: Quickly set up and run new model configurations using template files and automated workflows, facilitating rapid model development and testing.
214
- Regression Testing: Ensure model integrity and consistency after code changes or updates by automatically running a predefined set of simulations and comparing results with expected outputs.
215
- 6. User-Friendly Interfaces:
216
- GUI Development: Integrate with Python GUI libraries like Tkinter or PyQt to create user-friendly interfaces for automating HEC-RAS workflows, allowing non-programmers to access the power of automation.
194
+ RAS Commander is based on the HEC-Commander project's "Command Line is All You Need" approach, leveraging the HEC-RAS command-line interface for automation. The initial development of this library was presented in the HEC-Commander Tools repository. In a 2024 Australian Water School webinar, Bill demonstrated the derivation of basic HEC-RAS automation functions from plain language instructions. Leveraging the previously developed code and AI tools, the library was created. The primary tools used for this initial development were Anthropic's Claude, GPT-4o, Google's Gemini Experimental models, and the Cursor AI Coding IDE.
217
195
 
196
+ ## Contact
218
197
 
198
+ For questions, suggestions, or support, please contact:
199
+ William Katzenmeyer, P.E., C.F.M. - billk@fenstermaker.com
200
+ # End of Selection
201
+ ```