GeoAI: Artificial Intelligence for Geospatial Data
This report presents the forensic synthetic code analysis of opengeos/geoai, a Python project with 3,178 GitHub stars. SynthScan v2.0 examined 126,135 lines of code across 308 source files, recording 3319 pattern matches distributed across 19 syntactic categories. The overall adjusted score of 41.7 places this repository in the Strong AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 3319 distinct pattern matches across 19 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | agent-harness/cli_anything/geoai/geoai_cli.py | 640 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/geoai_cli.py | 642 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/geoai_cli.py | 1120 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/geoai_cli.py | 1122 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 34 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 36 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 55 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 57 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 116 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 118 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 160 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 162 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 203 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 205 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 319 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 321 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 374 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 376 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 412 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 414 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 475 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 477 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 767 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 769 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 850 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 852 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 901 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 903 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 969 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 971 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 1025 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 1027 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 1040 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/geoai_cli.py | 1042 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/tests/test_core.py | 87 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/tests/test_core.py | 89 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/tests/test_core.py | 407 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/tests/test_core.py | 409 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/tests/test_core.py | 441 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/tests/test_core.py | 443 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/tests/test_core.py | 470 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/tests/test_core.py | 472 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/tests/test_core.py | 503 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/tests/test_core.py | 505 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/tests/test_core.py | 28 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/tests/test_core.py | 30 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/tests/test_core.py | 185 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/tests/test_core.py | 187 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/tests/test_core.py | 299 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/tests/test_core.py | 301 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/tests/test_core.py | 368 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/tests/test_core.py | 370 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 89 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 91 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 174 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 176 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 341 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 343 | # ═══════════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 23 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 25 | # --------------------------------------------------------------------------- | COMMENT |
| 442 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | agent-harness/cli_anything/geoai/geoai_cli.py | 634 | def segment_list_architectures(): | CODE |
| LOW | agent-harness/cli_anything/geoai/core/vector.py | 88 | def _get_vector_info_geopandas(path: str) -> Dict[str, Any]: | CODE |
| LOW | agent-harness/cli_anything/geoai/core/segment.py | 148 | def run_semantic_segmentation( | CODE |
| LOW | agent-harness/cli_anything/geoai/core/raster.py | 183 | def _get_raster_info_rasterio(path: str) -> Dict[str, Any]: | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_core.py | 95 | def test_create_project_defaults(self): | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_core.py | 104 | def test_create_project_custom(self): | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_core.py | 397 | def test_rasterize_vector_missing_file(self, sample_raster, tmp_dir): | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_core.py | 434 | def test_list_sources_contains_naip(self): | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_core.py | 464 | def test_run_sam_missing_file(self): | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_core.py | 493 | def test_run_detection_missing_file(self): | CODE |
| LOW | agent-harness/cli_anything/geoai/tests/test_core.py | 119 | def test_open_project_missing_file(self): | CODE |
| LOW | agent-harness/cli_anything/geoai/tests/test_core.py | 124 | def test_open_project_invalid_json(self, tmp_dir): | CODE |
| LOW | agent-harness/cli_anything/geoai/tests/test_core.py | 165 | def test_add_file_auto_detect(self, sample_raster): | CODE |
| LOW | agent-harness/cli_anything/geoai/tests/test_core.py | 206 | def test_session_get_project_no_project(self): | CODE |
| LOW | agent-harness/cli_anything/geoai/tests/test_core.py | 212 | def test_session_snapshot_and_undo(self): | CODE |
| LOW | agent-harness/cli_anything/geoai/tests/test_core.py | 272 | def test_session_max_undo_limit(self): | CODE |
| LOW | agent-harness/cli_anything/geoai/tests/test_core.py | 285 | def test_session_save_and_load(self, tmp_dir): | CODE |
| LOW | agent-harness/cli_anything/geoai/tests/test_core.py | 314 | def test_get_raster_info_missing_file(self): | CODE |
| LOW | agent-harness/cli_anything/geoai/tests/test_core.py | 329 | def test_get_raster_stats_bad_band(self, sample_raster): | CODE |
| LOW | agent-harness/cli_anything/geoai/tests/test_core.py | 382 | def test_get_vector_info_missing_file(self): | CODE |
| LOW | agent-harness/cli_anything/geoai/tests/test_core.py | 519 | def test_detect_changes_missing_file(self): | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 101 | def test_raster_info_real_file(self): | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 182 | def test_project_create_add_save_reload(self, sample_raster, tmp_dir): | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 290 | def test_cli_raster_info_json(self, sample_raster): | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 297 | def test_cli_raster_stats_json(self, sample_raster): | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 305 | def test_cli_project_new_json(self, tmp_dir): | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 316 | def test_cli_system_info_json(self): | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 324 | def test_cli_session_status_json(self): | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 331 | def test_cli_segment_list_models(self): | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 368 | def test_raster_analysis_pipeline(self, sample_raster, tmp_dir): | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 399 | def test_project_management_workflow(self, tmp_dir): | CODE |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 423 | def test_data_discovery_workflow(self): | CODE |
| LOW | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 112 | def test_raster_stats_all_bands(self): | CODE |
| LOW | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 129 | def test_raster_tile_and_count(self, sample_raster, tmp_dir): | CODE |
| LOW | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 142 | def test_raster_vectorize_real(self, tmp_dir): | CODE |
| LOW | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 203 | def test_project_session_undo_redo(self, sample_raster): | CODE |
| LOW | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 222 | def test_project_info_after_multiple_files(self, sample_raster, tmp_dir): | CODE |
| LOW | geoai/foundation_models.py | 592 | def get_foundation_model_info(name: str) -> Dict[str, Any]: | CODE |
| LOW | geoai/foundation_models.py | 620 | def check_terratorch_available() -> bool: | CODE |
| LOW⚡ | geoai/change_detection.py | 1020 | def create_comprehensive_report( | CODE |
| LOW | geoai/change_detection.py | 26 | def _normalize_change_confidence( | CODE |
| LOW | geoai/change_detection.py | 112 | def _get_change_confidence_threshold(self) -> float: | CODE |
| LOW | geoai/change_detection.py | 184 | def set_mask_generator_params( | CODE |
| LOW | geoai/change_detection.py | 1261 | def _save_instance_segmentation_masks( | CODE |
| LOW | geoai/change_detection.py | 1356 | def _save_instance_scores_mask( | CODE |
| LOW | geoai/change_detection.py | 1496 | def _extract_detailed_results( | CODE |
| LOW | geoai/download.py | 244 | def get_overture_latest_release(patch=True) -> str: | CODE |
| LOW | geoai/download.py | 300 | def download_overture_buildings( | CODE |
| LOW | geoai/rfdetr.py | 117 | def _is_rfdetr_segmentation_variant(model_variant: str) -> bool: | CODE |
| LOW | geoai/rfdetr.py | 122 | def _normalize_detection_masks( | CODE |
| LOW | geoai/rfdetr.py | 144 | def _mask_to_georeferenced_geometry( | CODE |
| LOW⚡ | geoai/onnx.py | 1072 | def onnx_semantic_segmentation( | CODE |
| LOW | geoai/onnx.py | 1131 | def onnx_image_classification( | CODE |
| LOW | geoai/timm_regress.py | 81 | def _prepare_normalization_stats( | CODE |
| LOW | geoai/timm_regress.py | 110 | def _infer_preprocessing_params( | CODE |
| LOW | geoai/timm_regress.py | 1101 | def plot_regression_comparison( | CODE |
| LOW | geoai/timm_regress.py | 1664 | def predict_with_timm_regressor(*args, **kwargs): | CODE |
| LOW | geoai/timm_regress.py | 1672 | def get_timm_regression_model(*args, **kwargs): | CODE |
| LOW | geoai/timm_segment.py | 629 | def train_timm_segmentation_model( | CODE |
| LOW | geoai/timm_segment.py | 835 | def timm_semantic_segmentation( | CODE |
| 1050 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | agent-harness/cli_anything/geoai/core/vector.py | 12 | Get metadata for a vector file. Args: path: Path to the vector file. Returns: Dict with featur | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/vector.py | 43 | Convert a vector file to a raster using a template for resolution/extent. Args: path: Input vector file pat | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/classify.py | 22 | Train an image classification model. Args: train_dir: Training data directory (subdirectories are class nam | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/classify.py | 94 | Classify an image with a trained model. Args: image_path: Path to the input image. model_path: Path | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/session.py | 171 | Persist the current project to disk. Args: path: Output path. Defaults to project_path. Re | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/segment.py | 50 | Run SAM (Segment Anything Model) on a raster. Args: raster: Input raster file path. output: Output | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/segment.py | 101 | Run GroundedSAM text-prompted segmentation. Args: raster: Input raster file path. output: Output ma | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/segment.py | 157 | Run semantic segmentation with a trained model. Args: raster: Input raster file path. model_path: P | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/segment.py | 230 | Train a semantic segmentation model. Args: image_root: Directory with training images. label_root: | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/raster.py | 12 | Get metadata for a raster file. Args: path: Path to the raster file. Returns: Dict with CRS, s | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/raster.py | 38 | Compute statistics for a raster band. Args: path: Path to the raster file. band: Band number (1-ind | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/raster.py | 89 | Split a raster into tiles. Args: path: Input raster path. output_dir: Output directory for tiles. | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/raster.py | 146 | Convert a raster to vector polygons. Args: path: Input raster path. output: Output vector file path | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/detect.py | 34 | Run object detection on a raster image. Args: raster: Input raster file path. model_path: Path to t | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/detect.py | 119 | Train an object detection model. Args: images_dir: Directory with training images. labels_dir: Dire | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/change.py | 21 | Run change detection between two temporal images. Args: image1: Path to the earlier image. image2: | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/data.py | 151 | Parse a comma-separated bounding box string. Args: bbox_str: Bounding box as "minx,miny,maxx,maxy". Re | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/project.py | 43 | Load a project from a JSON file. Args: path: Path to the project JSON file. Returns: Project d | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/project.py | 144 | Add a file reference to the project. Args: project: Project dict. path: Path to the file. f | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/project.py | 187 | Remove a file entry by index. Args: project: Project dict. index: Index in the files list. Ret | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/project.py | 225 | Add a processing result to the project. Args: project: Project dict. result_type: Type of result (s | STRING |
| HIGH | agent-harness/cli_anything/geoai/core/project.py | 268 | Detect file type from extension. Args: path: File path. Returns: File type string. Raises | STRING |
| HIGH | geoai/dinov3_finetune.py | 67 | Return the intermediate layer indices for a given ViT depth. Args: num_blocks: Total number of transformer | STRING |
| HIGH | geoai/ftw.py | 62 | Download the Fields of The World (FTW) dataset for specified countries. Downloads Sentinel-2 imagery and instance s | STRING |
| HIGH | geoai/ftw.py | 164 | Prepare FTW data for training with geoai's instance segmentation pipeline. Rescales Sentinel-2 reflectance images f | STRING |
| HIGH | geoai/foundation_models.py | 500 | List available remote sensing foundation models. Args: category: Filter by model category. One of ``"vision | STRING |
| HIGH | geoai/foundation_models.py | 593 | Get detailed metadata for a specific foundation model. Args: name: Registry key for the model (e.g. ``"prit | STRING |
| HIGH | geoai/foundation_models.py | 642 | Load a foundation model backbone via TerraTorch. Downloads pre-trained weights from HuggingFace and returns a ` | STRING |
| HIGH | geoai/water.py | 161 | Segment water bodies from satellite or aerial imagery using OmniWaterMask. Uses a sensor-agnostic deep learning mod | STRING |
| HIGH | geoai/change_detection.py | 1883 | Read and align two GeoTIFF images by their spatial overlap. Args: image1_path (str): Path to the fi | STRING |
| HIGH | geoai/classify.py | 359 | Classify a geospatial image using a trained semantic segmentation model. The version has tile edge artifact | STRING |
| HIGH | geoai/classify.py | 600 | Classify a geospatial image using a trained semantic segmentation model. This function handles the full image | STRING |
| HIGH | geoai/classify.py | 845 | Classify multiple geospatial images using a trained semantic segmentation model. This function accepts either | STRING |
| HIGH | geoai/download.py | 36 | Download NAIP imagery from Planetary Computer based on a bounding box. This function searches for NAIP (National Ag | STRING |
| HIGH | geoai/download.py | 245 | Retrieves the value of the 'latest' key from the Overture Maps release JSON file. Args: patch (bool): | STRING |
| HIGH | geoai/download.py | 329 | Fetches overture data and returns it as a GeoDataFrame. Args: overture_type (str): The type of overture dat | STRING |
| HIGH | geoai/download.py | 486 | Downloads a STAC item from Microsoft Planetary Computer with specified bands. This function fetches a STAC ite | STRING |
| HIGH | geoai/download.py | 735 | Retrieves and displays the list of available collections from Planetary Computer. This function connects to th | STRING |
| HIGH | geoai/download.py | 866 | Search for STAC items in the Planetary Computer catalog. This function queries the Planetary Computer STAC API | STRING |
| HIGH | geoai/download.py | 955 | Download assets from STAC items retrieved from the Planetary Computer. This function downloads specified asset | STRING |
| HIGH | geoai/download.py | 1195 | Visualize a STAC item from the Planetary Computer on an interactive map. This function allows users to display | STRING |
| HIGH | geoai/download.py | 1290 | Visualize multiple STAC items from the Planetary Computer on an interactive map. This function allows users to | STRING |
| HIGH | geoai/rfdetr.py | 208 | Get the RF-DETR model class for a given variant name. Args: model_variant: Name of the model variant (e.g., | STRING |
| HIGH | geoai/onnx.py | 117 | Export a PyTorch / Hugging Face model to ONNX format. Args: model_name_or_path: Hugging Face model name or | STRING |
| HIGH | geoai/canopy.py | 1075 | Predict canopy height from a GeoTIFF image. Processes the input image in tiles of the specified size, runs | STRING |
| HIGH | geoai/caption.py | 87 | Load the nested aerial_features.json and flatten to a list of feature keys. Results are cached after the first succ | STRING |
| HIGH | geoai/caption.py | 173 | Load a PIL image from various sources. Supports loading from local file paths, HTTP(S) URLs, or returns the ima | STRING |
| HIGH | geoai/clip_classify.py | 141 | Classify each polygon feature using zero-shot CLIP inference. For every polygon in *vector_data*, extracts the | STRING |
| HIGH | geoai/clip_classify.py | 430 | Classify vector polygon features using zero-shot CLIP inference. Convenience function that creates a :class:`CLIPVe | STRING |
| HIGH | geoai/networks.py | 40 | Simplify a road or street network with ``neatnet``. This function wraps :func:`neatnet.neatify` to convert transpor | STRING |
| HIGH | geoai/moondream.py | 92 | Load the Moondream model. Args: revision: Model revision/checkpoint. compile_model: Whe | STRING |
| HIGH | geoai/moondream.py | 236 | Load a GeoTIFF file and return a PIL Image with metadata. Args: source: Path to GeoTIFF file. | STRING |
| HIGH | geoai/embeddings.py | 278 | Import and return the torchgeo dataset class by registry name. Args: name: Registry name (key from EMBEDDIN | STRING |
| HIGH | geoai/embeddings.py | 320 | Load an embedding dataset by name. This is a unified factory function that instantiates the correct torchgeo em | STRING |
| HIGH | geoai/embeddings.py | 388 | Get detailed information about an embedding dataset. Args: name: Registry name of the dataset. Returns | STRING |
| HIGH | geoai/embeddings.py | 564 | Visualize high-dimensional embeddings in 2D using dimensionality reduction. Supports PCA, t-SNE, and UMAP for proje | STRING |
| HIGH | geoai/embeddings.py | 786 | Cluster embedding vectors using unsupervised methods. Args: embeddings: Array of shape ``(N, D)``. | STRING |
| HIGH | geoai/embeddings.py | 1213 | Download Google/AlphaEarth satellite embeddings for a region. Downloads pre-computed 64-D satellite embedding vecto | STRING |
| HIGH | geoai/pipeline.py | 262 | Expand a single item into multiple items by globbing. Args: item: Dict with ``input_dir`` or ``inpu | STRING |
| HIGH | geoai/pipeline.py | 687 | Deserialize a step from a config dict. Args: d: Dict with ``type`` key and step parameters. Returns: | STRING |
| 81 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | agent-harness/cli_anything/geoai/geoai_cli.py | 1110 | except Exception as e: | CODE |
| LOW | agent-harness/cli_anything/geoai/core/change.py | 165 | except Exception: | CODE |
| LOW | geoai/foundation_models.py | 703 | except Exception as exc: | CODE |
| LOW | geoai/map_widgets.py | 191 | except Exception as e: | CODE |
| LOW | geoai/map_widgets.py | 258 | except Exception: | CODE |
| LOW | geoai/map_widgets.py | 618 | except Exception as e: | CODE |
| LOW | geoai/map_widgets.py | 657 | except Exception as e: | CODE |
| MEDIUM | geoai/map_widgets.py | 148 | def handle_map_interaction(**kwargs): | CODE |
| LOW | geoai/download.py | 135 | except Exception as e: | CODE |
| LOW | geoai/download.py | 428 | except Exception as e: | CODE |
| LOW | geoai/download.py | 471 | except Exception as e: | CODE |
| LOW | geoai/download.py | 720 | except Exception as e: | CODE |
| LOW | geoai/download.py | 760 | except Exception as e: | CODE |
| LOW | geoai/download.py | 766 | except Exception as e: | CODE |
| LOW | geoai/download.py | 900 | except Exception as e: | CODE |
| LOW | geoai/download.py | 939 | except Exception as e: | CODE |
| LOW | geoai/download.py | 1046 | except Exception as e: | CODE |
| LOW | geoai/download.py | 1096 | except Exception as e: | CODE |
| LOW | geoai/rfdetr.py | 958 | except Exception as e: | CODE |
| LOW | geoai/rfdetr.py | 1024 | except Exception: | CODE |
| LOW | geoai/onnx.py | 206 | except Exception as exc: | CODE |
| LOW | geoai/timm_regress.py | 121 | except Exception: | CODE |
| LOW | geoai/timm_regress.py | 182 | except Exception as e: | CODE |
| LOW | geoai/timm_segment.py | 105 | except Exception as e: | CODE |
| LOW | geoai/timm_segment.py | 129 | except Exception as e: | CODE |
| LOW | geoai/timm_segment.py | 940 | except Exception as e: | CODE |
| LOW | geoai/timm_segment.py | 1237 | except Exception as e: | CODE |
| LOW | geoai/dinov3.py | 118 | except Exception as e: | CODE |
| LOW | geoai/dinov3.py | 157 | except Exception as e: | CODE |
| LOW | geoai/dinov3.py | 202 | except Exception as e: | CODE |
| LOW⚡ | geoai/caption.py | 71 | except Exception as e: | CODE |
| LOW | geoai/clip_classify.py | 333 | except Exception: | CODE |
| LOW | geoai/moondream.py | 182 | except Exception as e: | CODE |
| LOW | geoai/moondream.py | 297 | except Exception as e: | CODE |
| LOW | geoai/embeddings.py | 1422 | except Exception as e: | CODE |
| LOW | geoai/cli.py | 66 | except Exception: | CODE |
| LOW | geoai/cli.py | 78 | except Exception as e: | CODE |
| LOW | geoai/cli.py | 119 | except Exception as e: | CODE |
| LOW | geoai/cli.py | 170 | except Exception as e: | CODE |
| LOW | geoai/cli.py | 182 | except Exception as e: | CODE |
| LOW | geoai/cli.py | 215 | except Exception as e: | CODE |
| LOW | geoai/pipeline.py | 846 | except Exception as e: | CODE |
| LOW | geoai/pipeline.py | 950 | except Exception as e: | CODE |
| LOW | geoai/pipeline.py | 1029 | except Exception as e: | CODE |
| LOW | geoai/tessera.py | 639 | except Exception: | CODE |
| LOW | geoai/train.py | 1833 | except Exception as e: | CODE |
| LOW | geoai/train.py | 3014 | except Exception as e: | CODE |
| LOW | geoai/train.py | 3102 | except Exception as e: | CODE |
| LOW | geoai/train.py | 3651 | except Exception as e: | CODE |
| LOW | geoai/train.py | 3671 | except Exception: | CODE |
| LOW | geoai/train.py | 4333 | except Exception as e: | CODE |
| LOW | geoai/train.py | 4435 | except Exception as e: | CODE |
| LOW | geoai/train.py | 4515 | except Exception as e: | CODE |
| LOW | geoai/train.py | 4560 | except Exception: | CODE |
| LOW | geoai/train.py | 4762 | except Exception as e: | CODE |
| LOW | geoai/train.py | 5506 | except Exception as e: | CODE |
| LOW | geoai/train.py | 5659 | except Exception as e: | CODE |
| LOW | geoai/train.py | 5738 | except Exception as e: | CODE |
| LOW | geoai/train.py | 6088 | except Exception as e: | CODE |
| LOW | geoai/object_detect.py | 1498 | except Exception as e: | CODE |
| 410 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent-harness/cli_anything/geoai/core/vector.py | 8 | CODE | |
| LOW | agent-harness/cli_anything/geoai/core/segment.py | 8 | CODE | |
| LOW | agent-harness/cli_anything/geoai/core/raster.py | 8 | CODE | |
| LOW | agent-harness/cli_anything/geoai/core/change.py | 8 | CODE | |
| LOW | agent-harness/cli_anything/geoai/core/project.py | 7 | CODE | |
| LOW | agent-harness/cli_anything/geoai/tests/test_core.py | 16 | CODE | |
| LOW | agent-harness/cli_anything/geoai/utils/geoai_backend.py | 10 | CODE | |
| LOW | geoai/dinov3_finetune.py | 21 | CODE | |
| LOW | geoai/foundation_models.py | 11 | CODE | |
| LOW | geoai/foundation_models.py | 632 | CODE | |
| LOW | geoai/foundation_models.py | 697 | CODE | |
| LOW | geoai/change_detection.py | 1769 | CODE | |
| LOW | geoai/map_widgets.py | 14 | CODE | |
| LOW | geoai/classify.py | 5 | CODE | |
| LOW | geoai/classify.py | 130 | CODE | |
| LOW | geoai/download.py | 7 | CODE | |
| LOW | geoai/rfdetr.py | 25 | CODE | |
| LOW | geoai/onnx.py | 66 | CODE | |
| LOW | geoai/onnx.py | 90 | CODE | |
| LOW | geoai/geoai.py | 13 | CODE | |
| LOW | geoai/geoai.py | 13 | CODE | |
| LOW | geoai/geoai.py | 13 | CODE | |
| LOW | geoai/geoai.py | 14 | CODE | |
| LOW | geoai/geoai.py | 14 | CODE | |
| LOW | geoai/geoai.py | 14 | CODE | |
| LOW | geoai/geoai.py | 14 | CODE | |
| LOW | geoai/geoai.py | 14 | CODE | |
| LOW | geoai/geoai.py | 14 | CODE | |
| LOW | geoai/geoai.py | 14 | CODE | |
| LOW | geoai/geoai.py | 14 | CODE | |
| LOW | geoai/geoai.py | 14 | CODE | |
| LOW | geoai/geoai.py | 14 | CODE | |
| LOW | geoai/geoai.py | 14 | CODE | |
| LOW | geoai/geoai.py | 14 | CODE | |
| LOW | geoai/geoai.py | 28 | CODE | |
| LOW | geoai/geoai.py | 29 | CODE | |
| LOW | geoai/geoai.py | 31 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 32 | CODE | |
| LOW | geoai/geoai.py | 51 | CODE | |
| LOW | geoai/geoai.py | 52 | CODE | |
| LOW | geoai/geoai.py | 53 | CODE | |
| LOW | geoai/timm_regress.py | 18 | CODE | |
| LOW | geoai/timm_segment.py | 5 | CODE | |
| LOW | geoai/dinov3.py | 28 | CODE | |
| 258 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | agent-harness/cli_anything/geoai/tests/test_core.py | 345 | # Create a simple classified raster | COMMENT |
| MEDIUM | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 226 | # Create a second raster | COMMENT |
| MEDIUM | geoai/map_widgets.py | 248 | # Create the map | COMMENT |
| MEDIUM | geoai/classify.py | 137 | # Create a wrapper class for albumentations to work with TorchGeo format | COMMENT |
| MEDIUM | geoai/classify.py | 472 | # Create a window that matches the original bounds | COMMENT |
| MEDIUM | geoai/classify.py | 773 | # Create a mask that gives higher weight to central regions | COMMENT |
| MEDIUM | geoai/classify.py | 870 | # Import required libraries | COMMENT |
| MEDIUM | geoai/download.py | 59 | # Create a geometry from the bounding box | COMMENT |
| MEDIUM | geoai/download.py | 703 | # Create a dictionary mapping band indices to band names | COMMENT |
| MEDIUM | geoai/download.py | 922 | # Create the search object | COMMENT |
| MEDIUM | geoai/download.py | 1 | """This module provides functions to download data, including NAIP imagery and building data from Overture Maps.""" | STRING |
| MEDIUM | geoai/dinov3.py | 106 | # Define the repository ID and model filename | COMMENT |
| MEDIUM | geoai/train.py | 695 | # Create a dummy target with minimal required fields | COMMENT |
| MEDIUM | geoai/train.py | 1580 | # Create a full dataset to determine image IDs, then split | COMMENT |
| MEDIUM | geoai/train.py | 1786 | # Initialize training variables | COMMENT |
| MEDIUM | geoai/train.py | 4485 | # Initialize tracking variables | COMMENT |
| MEDIUM | geoai/train.py | 5362 | # Create a simple affine transform (identity transform for pixel coordinates) | COMMENT |
| MEDIUM | geoai/segment.py | 1 | """This module provides functionality for segmenting high-resolution satellite imagery using vision-language models.""" | STRING |
| MEDIUM | geoai/segment.py | 273 | # Create an empty mask | COMMENT |
| MEDIUM | geoai/sam.py | 340 | # Create an output image with the same size as the input image | COMMENT |
| MEDIUM | geoai/sam.py | 820 | # Create an empty image to store the mask overlays | COMMENT |
| MEDIUM | geoai/extract.py | 129 | # Define the bounds of the dataset | COMMENT |
| MEDIUM | geoai/extract.py | 353 | # Define the repository ID and model filename | COMMENT |
| MEDIUM | geoai/extract.py | 597 | # Create a slightly smaller bounding box to exclude edge regions | COMMENT |
| MEDIUM | geoai/extract.py | 741 | # Create a mask for this object | COMMENT |
| MEDIUM | geoai/extract.py | 1418 | # Create a rotated rectangle using OpenCV method (more robust than Shapely methods) | COMMENT |
| MEDIUM | geoai/extract.py | 1482 | # Create a copy to avoid modifying the original | COMMENT |
| MEDIUM | geoai/extract.py | 1626 | # Create a scaled transform for the resampled image | COMMENT |
| MEDIUM | geoai/extract.py | 1634 | # Create a scaled transform | COMMENT |
| MEDIUM | geoai/extract.py | 1802 | # Create a simpler visualization focused just on a subset of objects | COMMENT |
| MEDIUM | geoai/extract.py | 1816 | # Define a window around this object | COMMENT |
| MEDIUM | geoai/extract.py | 2708 | # Create a ResNet50 backbone with modified input channels | COMMENT |
| MEDIUM | geoai/extract.py | 2923 | # Create a custom Sentinel-2 dataset class | COMMENT |
| MEDIUM | geoai/extract.py | 1 | """This module provides a dataset class for object extraction from raster data""" | STRING |
| MEDIUM | geoai/landcover_train.py | 1110 | # Create the loss function with proper ignore_index support | COMMENT |
| MEDIUM | geoai/hf.py | 137 | # Create an empty mask to hold all the labels | COMMENT |
| MEDIUM | geoai/hf.py | 141 | # Create a dictionary to map labels to values and store scores | COMMENT |
| MEDIUM | geoai/hf.py | 190 | # Create a CSV colormap file with scores included | COMMENT |
| MEDIUM | geoai/hf.py | 300 | # Create a PIL Image from the numpy array | COMMENT |
| MEDIUM | geoai/hf.py | 329 | # Create a mask raster with unique IDs for each mask | COMMENT |
| MEDIUM | geoai/hf.py | 374 | # Create a record for the CSV - without geometry calculation | COMMENT |
| MEDIUM | geoai/hf.py | 437 | # Create a record for the CSV - without geometry calculation | COMMENT |
| MEDIUM | geoai/agents/geo_agents.py | 605 | # Create a callback handler that updates the status widget | COMMENT |
| MEDIUM | geoai/agents/geo_agents.py | 1225 | # Create a callback handler that updates the status widget | COMMENT |
| MEDIUM | geoai/utils/vector.py | 313 | # Create the plot | COMMENT |
| MEDIUM | geoai/utils/vector.py | 391 | # Create a polygon from the bounds | COMMENT |
| MEDIUM | geoai/utils/vector.py | 394 | # Create a GeoJSON feature | COMMENT |
| MEDIUM | geoai/utils/vector.py | 418 | # Create the GeoJSON collection | COMMENT |
| MEDIUM | geoai/utils/vector.py | 936 | # Create a list of Shapely Polygon objects based on the provided coordinates | COMMENT |
| MEDIUM | geoai/utils/vector.py | 939 | # Create a GeoDataFrame with the Shapely Polygon objects | COMMENT |
| MEDIUM | geoai/utils/download.py | 126 | # Define the repository ID and model filename | COMMENT |
| MEDIUM | geoai/utils/conversion.py | 65 | # Create the transform matrix | COMMENT |
| MEDIUM | geoai/utils/conversion.py | 74 | # Create a single time value or range if needed | COMMENT |
| MEDIUM | geoai/utils/visualization.py | 1256 | # Create a polygon from the bounds (already in geo-coordinates) | COMMENT |
| MEDIUM | geoai/utils/visualization.py | 1265 | # Create a GeoJSON feature | COMMENT |
| MEDIUM | geoai/utils/geometry.py | 259 | # Create a rectangular hull in rotated space | COMMENT |
| MEDIUM | geoai/utils/geometry.py | 445 | # Define a custom function to calculate median intensity | COMMENT |
| MEDIUM | geoai/utils/geometry.py | 1527 | # Create a simplified version to check number of vertices | COMMENT |
| MEDIUM | geoai/utils/geometry.py | 1604 | # Create a new geometry with orthogonalized rings | COMMENT |
| MEDIUM | geoai/utils/geometry.py | 1637 | # Create the final GeoJSON structure | COMMENT |
| 23 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent-harness/cli_anything/geoai/geoai_cli.py | 78 | CODE | |
| LOW | agent-harness/cli_anything/geoai/core/vector.py | 118 | CODE | |
| LOW | agent-harness/cli_anything/geoai/core/raster.py | 83 | CODE | |
| LOW | agent-harness/cli_anything/geoai/core/raster.py | 215 | CODE | |
| LOW | agent-harness/cli_anything/geoai/core/project.py | 267 | CODE | |
| LOW | geoai/dinov3_finetune.py | 129 | CODE | |
| LOW | geoai/dinov3_finetune.py | 851 | CODE | |
| LOW | geoai/change_detection.py | 400 | CODE | |
| LOW | geoai/change_detection.py | 485 | CODE | |
| LOW | geoai/change_detection.py | 1261 | CODE | |
| LOW | geoai/change_detection.py | 1356 | CODE | |
| LOW | geoai/change_detection.py | 1880 | CODE | |
| LOW | geoai/change_detection.py | 2167 | CODE | |
| LOW | geoai/map_widgets.py | 199 | CODE | |
| LOW | geoai/map_widgets.py | 33 | CODE | |
| LOW | geoai/map_widgets.py | 398 | CODE | |
| LOW | geoai/map_widgets.py | 526 | CODE | |
| LOW | geoai/map_widgets.py | 625 | CODE | |
| LOW | geoai/classify.py | 590 | CODE | |
| LOW | geoai/download.py | 373 | CODE | |
| LOW | geoai/download.py | 476 | CODE | |
| LOW | geoai/download.py | 729 | CODE | |
| LOW | geoai/download.py | 856 | CODE | |
| LOW | geoai/download.py | 948 | CODE | |
| LOW | geoai/download.py | 1273 | CODE | |
| LOW | geoai/download.py | 994 | CODE | |
| LOW | geoai/rfdetr.py | 271 | CODE | |
| LOW | geoai/onnx.py | 104 | CODE | |
| LOW | geoai/onnx.py | 486 | CODE | |
| LOW | geoai/onnx.py | 730 | CODE | |
| LOW | geoai/onnx.py | 809 | CODE | |
| LOW | geoai/onnx.py | 901 | CODE | |
| LOW | geoai/__init__.py | 22 | CODE | |
| LOW | geoai/timm_regress.py | 81 | CODE | |
| LOW | geoai/timm_regress.py | 427 | CODE | |
| LOW | geoai/timm_regress.py | 804 | CODE | |
| LOW | geoai/timm_regress.py | 1315 | CODE | |
| LOW | geoai/timm_regress.py | 1492 | CODE | |
| LOW | geoai/timm_regress.py | 59 | CODE | |
| LOW | geoai/timm_regress.py | 133 | CODE | |
| LOW | geoai/timm_segment.py | 835 | CODE | |
| LOW | geoai/timm_segment.py | 1139 | CODE | |
| LOW | geoai/dinov3.py | 265 | CODE | |
| LOW | geoai/canopy.py | 866 | CODE | |
| LOW | geoai/canopy.py | 379 | CODE | |
| LOW | geoai/canopy.py | 1065 | CODE | |
| LOW | geoai/canopy.py | 1256 | CODE | |
| LOW | geoai/caption.py | 86 | CODE | |
| LOW | geoai/caption.py | 301 | CODE | |
| LOW | geoai/moondream.py | 231 | CODE | |
| LOW | geoai/moondream.py | 300 | CODE | |
| LOW | geoai/moondream.py | 970 | CODE | |
| LOW | geoai/moondream.py | 1100 | CODE | |
| LOW | geoai/embeddings.py | 1203 | CODE | |
| LOW | geoai/cli.py | 22 | CODE | |
| LOW | geoai/pipeline.py | 791 | CODE | |
| LOW | geoai/pipeline.py | 972 | CODE | |
| LOW | geoai/pipeline.py | 1008 | CODE | |
| LOW | geoai/tessera.py | 44 | CODE | |
| LOW | geoai/tessera.py | 334 | CODE | |
| 176 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent-harness/cli_anything/geoai/core/classify.py | 11 | CODE | |
| LOW | agent-harness/cli_anything/geoai/core/segment.py | 217 | CODE | |
| LOW | geoai/dinov3_finetune.py | 639 | CODE | |
| LOW | geoai/dinov3_finetune.py | 851 | CODE | |
| LOW | geoai/dinov3_finetune.py | 270 | CODE | |
| LOW | geoai/ftw.py | 340 | CODE | |
| LOW | geoai/water.py | 138 | CODE | |
| LOW | geoai/change_detection.py | 2533 | CODE | |
| LOW | geoai/change_detection.py | 184 | CODE | |
| LOW | geoai/change_detection.py | 304 | CODE | |
| LOW | geoai/classify.py | 12 | CODE | |
| LOW | geoai/download.py | 1177 | CODE | |
| LOW | geoai/download.py | 1273 | CODE | |
| LOW | geoai/rfdetr.py | 271 | CODE | |
| LOW | geoai/rfdetr.py | 616 | CODE | |
| LOW | geoai/rfdetr.py | 690 | CODE | |
| LOW | geoai/rfdetr.py | 963 | CODE | |
| LOW | geoai/onnx.py | 104 | CODE | |
| LOW | geoai/onnx.py | 599 | CODE | |
| LOW | geoai/geoai.py | 82 | CODE | |
| LOW | geoai/geoai.py | 164 | CODE | |
| LOW | geoai/timm_regress.py | 597 | CODE | |
| LOW | geoai/timm_regress.py | 804 | CODE | |
| LOW | geoai/timm_regress.py | 133 | CODE | |
| LOW | geoai/timm_segment.py | 342 | CODE | |
| LOW | geoai/timm_segment.py | 629 | CODE | |
| LOW | geoai/timm_segment.py | 835 | CODE | |
| LOW | geoai/timm_segment.py | 1139 | CODE | |
| LOW | geoai/timm_segment.py | 1282 | CODE | |
| LOW | geoai/timm_segment.py | 45 | CODE | |
| LOW | geoai/dinov3.py | 1008 | CODE | |
| LOW | geoai/dinov3.py | 1078 | CODE | |
| LOW | geoai/dinov3.py | 483 | CODE | |
| LOW | geoai/dinov3.py | 668 | CODE | |
| LOW | geoai/canopy.py | 1361 | CODE | |
| LOW | geoai/canopy.py | 139 | CODE | |
| LOW | geoai/canopy.py | 246 | CODE | |
| LOW | geoai/clip_classify.py | 417 | CODE | |
| LOW | geoai/moondream.py | 1568 | CODE | |
| LOW | geoai/moondream.py | 1619 | CODE | |
| LOW | geoai/moondream.py | 1666 | CODE | |
| LOW | geoai/moondream.py | 1716 | CODE | |
| LOW | geoai/embeddings.py | 550 | CODE | |
| LOW | geoai/detectron2.py | 112 | CODE | |
| LOW | geoai/pipeline.py | 324 | CODE | |
| LOW | geoai/tessera.py | 44 | CODE | |
| LOW | geoai/tessera.py | 265 | CODE | |
| LOW | geoai/tessera.py | 653 | CODE | |
| LOW | geoai/train.py | 1454 | CODE | |
| LOW | geoai/train.py | 2481 | CODE | |
| LOW | geoai/train.py | 2967 | CODE | |
| LOW | geoai/train.py | 3044 | CODE | |
| LOW | geoai/train.py | 4099 | CODE | |
| LOW | geoai/train.py | 4766 | CODE | |
| LOW | geoai/train.py | 5064 | CODE | |
| LOW | geoai/train.py | 5422 | CODE | |
| LOW | geoai/train.py | 5572 | CODE | |
| LOW | geoai/train.py | 5745 | CODE | |
| LOW | geoai/train.py | 5840 | CODE | |
| LOW | geoai/train.py | 5985 | CODE | |
| 71 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | geoai/ftw.py | 138 | # Check if the zip contained a single top-level directory | COMMENT |
| LOW | geoai/classify.py | 884 | # Check if any images were found | COMMENT |
| LOW | geoai/download.py | 586 | # Check if file exists and skip if overwrite is False | COMMENT |
| LOW | geoai/download.py | 624 | # Check if merged file exists and skip if overwrite is False | COMMENT |
| LOW | geoai/timm_segment.py | 91 | # Check if using a pure timm model from HF Hub | COMMENT |
| LOW | geoai/dinov3.py | 282 | # Check if it's a GeoTIFF file | COMMENT |
| LOW | geoai/moondream.py | 171 | # Set model to evaluation mode | COMMENT |
| LOW | geoai/moondream.py | 341 | # Check if it's a GeoTIFF | COMMENT |
| LOW | geoai/train.py | 1808 | # Check if it's a full checkpoint or just model weights | COMMENT |
| LOW | geoai/train.py | 2039 | # Check if window is valid | COMMENT |
| LOW | geoai/train.py | 2287 | # Check if window is valid | COMMENT |
| LOW | geoai/train.py | 4337 | # Check if all images have the same size | COMMENT |
| LOW | geoai/train.py | 5624 | # Check if input directory exists | COMMENT |
| LOW | geoai/train.py | 6163 | # Check if data directory contains images | COMMENT |
| LOW | geoai/recognize.py | 313 | # Check if any subdirectory of *root* contains matching images | COMMENT |
| LOW | geoai/object_detect.py | 307 | # Check if COCO JSON already exists | COMMENT |
| LOW | geoai/prithvi.py | 878 | # Check if we need to pad to num_frames | COMMENT |
| LOW | geoai/prithvi.py | 930 | # Check if input dimensions match model expectations | COMMENT |
| LOW | geoai/landcover_utils.py | 301 | # Check if tile has features | COMMENT |
| LOW | geoai/timm_train.py | 62 | # Check if model exists | COMMENT |
| LOW | geoai/extract.py | 333 | # Set model to evaluation mode | COMMENT |
| LOW | geoai/extract.py | 1575 | # Check if raster file exists | COMMENT |
| LOW | geoai/extract.py | 1588 | # Check if confidence column exists in the GeoDataFrame | COMMENT |
| LOW | geoai/extract.py | 2818 | # Check if this is likely a Sentinel-2 product | COMMENT |
| LOW | geoai/auto.py | 155 | # Check if this is a model that needs the full processor (text + image) | COMMENT |
| LOW | geoai/auto.py | 269 | # Check if GeoTIFF | COMMENT |
| LOW | geoai/auto.py | 752 | # Check if URL | COMMENT |
| LOW | geoai/auto.py | 793 | # Check if we need tiled processing (not for classification tasks) | COMMENT |
| LOW | geoai/agents/catalog_tools.py | 163 | # Check if boxes do NOT intersect, then negate | COMMENT |
| LOW | geoai/agents/geo_agents.py | 892 | # Check if this is a search_items result | COMMENT |
| LOW | geoai/utils/vector.py | 224 | # Check if attribute exists | COMMENT |
| LOW | geoai/utils/vector.py | 308 | # Check if attribute exists | COMMENT |
| LOW | geoai/utils/models.py | 29 | # Check if file exists | COMMENT |
| LOW | geoai/utils/models.py | 40 | # Check if it's a state_dict or a complete model | COMMENT |
| LOW | geoai/utils/models.py | 121 | # Check if it might be a UNet | COMMENT |
| LOW | geoai/utils/device.py | 40 | # Print output in real-time | COMMENT |
| LOW | geoai/utils/conversion.py | 202 | input_is_3d = coords.ndim == 3 # Check if the input is a 3D array | CODE |
| LOW | geoai/utils/visualization.py | 469 | # Check if input is a GeoDataFrame | COMMENT |
| LOW | geoai/utils/visualization.py | 686 | # Check if input is a GeoDataFrame | COMMENT |
| LOW⚡ | geoai/utils/geometry.py | 121 | # Check if we need to add a right-angle vertex | COMMENT |
| LOW | geoai/utils/geometry.py | 59 | # Check if we're dealing with a GeoDataFrame | COMMENT |
| LOW | geoai/utils/geometry.py | 224 | # Check if building is close to orthogonal | COMMENT |
| LOW | geoai/utils/geometry.py | 1047 | # Check if merging would result in 3 or 4 segments (potentially triangular) | COMMENT |
| LOW | geoai/utils/geometry.py | 1143 | # Check if lines are parallel or collinear (denominator close to zero) | COMMENT |
| LOW | geoai/utils/geometry.py | 1154 | # Check if the intersection point is within a reasonable distance | COMMENT |
| LOW | geoai/utils/geometry.py | 1157 | # Check if point (x,y) is near the line segment from (x1,y1) to (x2,y2) | COMMENT |
| LOW | geoai/utils/geometry.py | 1170 | # Check if the projection is near the segment, not just the infinite line | COMMENT |
| LOW | geoai/utils/geometry.py | 1179 | # Check if intersection is reasonably close to both line segments | COMMENT |
| LOW | geoai/utils/geometry.py | 1214 | # Check if the intersection point is too far from either line segment | COMMENT |
| LOW | geoai/utils/geometry.py | 1284 | # Check if the intersection point is too far from either line segment | COMMENT |
| LOW | geoai/utils/geometry.py | 1525 | # Check if shape is triangular and if we want to avoid triangular shapes | COMMENT |
| LOW | geoai/utils/geometry.py | 1619 | # Add the feature to the list | COMMENT |
| LOW | geoai/utils/geometry.py | 1728 | # Check if the input data is empty | COMMENT |
| LOW | geoai/utils/raster.py | 491 | # Check if the window is valid | COMMENT |
| LOW | geoai/utils/raster.py | 585 | # Check if CRS is geographic (area in sq degrees, not sq meters) | COMMENT |
| LOW | geoai/utils/raster.py | 804 | # Set CRS to the CRS of the first GeoDataFrame | COMMENT |
| LOW | geoai/utils/raster.py | 876 | # Check if vector data is empty | COMMENT |
| LOW | geoai/utils/raster.py | 893 | # Check if we have all required parameters | COMMENT |
| LOW | geoai/utils/training.py | 230 | # Check if image is large enough for tiling | COMMENT |
| LOW | geoai/utils/training.py | 2445 | # Check if class_value_field exists | COMMENT |
| 19 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | agent-harness/cli_anything/geoai/core/session.py | 40 | def set_project(self, project: Dict[str, Any], path: Optional[str] = None) -> None: | CODE |
| LOW | geoai/dinov3_finetune.py | 29 | __all__ = [ | CODE |
| LOW⚡ | geoai/dinov3_finetune.py | 50 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/ftw.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | geoai/foundation_models.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | geoai/foundation_models.py | 17 | __all__ = [ | CODE |
| LOW | geoai/water.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/change_detection.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/map_widgets.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/download.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/rfdetr.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/rfdetr.py | 38 | __all__ = [ | CODE |
| LOW | geoai/onnx.py | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/__init__.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/__init__.py | 542 | __all__ = [ | CODE |
| LOW | geoai/timm_regress.py | 44 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/timm_segment.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/dinov3.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/canopy.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | geoai/canopy.py | 44 | __all__ = [ | CODE |
| LOW⚡ | geoai/caption.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/clip_classify.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/clip_classify.py | 33 | __all__ = [ | CODE |
| LOW | geoai/moondream.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/embeddings.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/embeddings.py | 42 | __all__ = [ | CODE |
| LOW | geoai/detectron2.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | geoai/pipeline.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | geoai/pipeline.py | 1169 | __all__ = [ | CODE |
| LOW | geoai/tessera.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/train.py | 35 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/recognize.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/object_detect.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/inference.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/inference.py | 30 | __all__ = [ | CODE |
| LOW | geoai/segment.py | 25 | __all__ = [ | CODE |
| LOW | geoai/segment.py | 32 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/sam.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/sam.py | 510 | def set_image(self, image: Union[str, np.ndarray], **kwargs: Any) -> None: | CODE |
| LOW | geoai/prithvi.py | 23 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/prithvi.py | 25 | __all__ = [ | CODE |
| LOW | geoai/landcover_utils.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/landcover_utils.py | 35 | __all__ = [ | CODE |
| LOW | geoai/timm_train.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/extract.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/extract.py | 37 | __all__ = [ | CODE |
| LOW | geoai/landcover_train.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/landcover_train.py | 2083 | __all__ = [ | CODE |
| LOW | geoai/hf.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/hf.py | 17 | __all__ = [ | CODE |
| LOW | geoai/auto.py | 59 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/auto.py | 61 | __all__ = [ | CODE |
| LOW | geoai/segmentation.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/tools/cloudmask.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/tools/__init__.py | 9 | __all__ = [] | CODE |
| LOW | geoai/tools/sr.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/tools/multiclean.py | 28 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/tools/timeseries.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/agents/geo_agents.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | geoai/agents/map_tools.py | 216 | def set_pitch(self, pitch: float) -> None: | CODE |
| 34 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | geoai/extract.py | 925 | torch.utils.data._utils.collate.default_collate( | CODE |
| CRITICAL | geoai/extract.py | 935 | return torch.utils.data._utils.collate.default_collate(batch) | CODE |
| CRITICAL | geoai/extract.py | 1182 | torch.utils.data._utils.collate.default_collate( | CODE |
| CRITICAL | geoai/extract.py | 1192 | return torch.utils.data._utils.collate.default_collate(batch) | CODE |
| CRITICAL | geoai/extract.py | 2057 | torch.utils.data._utils.collate.default_collate( | CODE |
| CRITICAL | geoai/extract.py | 2067 | return torch.utils.data._utils.collate.default_collate(batch) | CODE |
| CRITICAL | geoai/extract.py | 3072 | torch.utils.data._utils.collate.default_collate( | CODE |
| CRITICAL | geoai/extract.py | 3082 | return torch.utils.data._utils.collate.default_collate(batch) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | geoai/dinov3.py | 0 | download the object detection model from hugging face. args: model_path: path to the model file. repo_id: hugging face r | STRING |
| HIGH | geoai/extract.py | 0 | download the object detection model from hugging face. args: model_path: path to the model file. repo_id: hugging face r | STRING |
| HIGH | geoai/utils/download.py | 0 | download the object detection model from hugging face. args: model_path: path to the model file. repo_id: hugging face r | STRING |
| HIGH | qgis_plugin/geoai/core/python_manager.py | 0 | log a message to the qgis message log. args: message: the message to log. level: the log level (default: qgis.info). | STRING |
| HIGH | qgis_plugin/geoai/core/venv_manager.py | 0 | log a message to the qgis message log. args: message: the message to log. level: the log level (default: qgis.info). | STRING |
| HIGH | qgis_plugin/geoai/dialogs/water_segmentation.py | 0 | log a message to the qgis message log. args: message: the message to log. level: the log level (default: qgis.info). | STRING |
| HIGH | qgis_plugin/geoai/dialogs/instance_segmentation.py | 0 | capture stdout and emit lines to a callback in real-time. | STRING |
| HIGH | qgis_plugin/geoai/dialogs/water_segmentation.py | 0 | capture stdout and emit lines to a callback in real-time. | STRING |
| HIGH | qgis_plugin/geoai/dialogs/segmentation.py | 0 | capture stdout and emit lines to a callback in real-time. | STRING |
| HIGH | qgis_plugin/geoai/dialogs/instance_segmentation.py | 0 | initialize the segmentation dock widget. args: iface: qgis interface instance. parent: parent widget. | STRING |
| HIGH | qgis_plugin/geoai/dialogs/water_segmentation.py | 0 | initialize the segmentation dock widget. args: iface: qgis interface instance. parent: parent widget. | STRING |
| HIGH | qgis_plugin/geoai/dialogs/segmentation.py | 0 | initialize the segmentation dock widget. args: iface: qgis interface instance. parent: parent widget. | STRING |
| HIGH | tests/test_inference.py | 0 | test that __all__ contains the expected public api names. | STRING |
| HIGH | tests/test_rfdetr.py | 0 | test that __all__ contains the expected public api names. | STRING |
| HIGH | tests/test_prithvi.py | 0 | test that __all__ contains the expected public api names. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 374 | # Step 1: Get raster info | COMMENT |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 380 | # Step 2: Get band statistics | COMMENT |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 387 | # Step 3: Create project and add the file | COMMENT |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 407 | # Step 1: Create project | COMMENT |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 414 | # Step 2: Verify project file is valid JSON | COMMENT |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 429 | # Step 1: List data sources | COMMENT |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 435 | # Step 2: List segmentation models | COMMENT |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 441 | # Step 3: List detection models | COMMENT |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 447 | # Step 4: List change methods | COMMENT |
| LOW⚡ | geoai/utils/geometry.py | 110 | # Step 3: Rotate to align with axes, regularize, then rotate back | COMMENT |
| LOW⚡ | geoai/utils/geometry.py | 113 | # Step 4: Rectify coordinates to enforce right angles | COMMENT |
| LOW | geoai/utils/geometry.py | 80 | # Step 1: Simplify to remove noise and small vertices | COMMENT |
| LOW | geoai/utils/geometry.py | 92 | # Step 2: Get the dominant angle to rotate building | COMMENT |
| LOW⚡ | geoai/utils/raster.py | 1738 | # Step 1: Build VRT | COMMENT |
| LOW⚡ | geoai/utils/raster.py | 1742 | # Step 2: Translate VRT to output GeoTIFF | COMMENT |
| LOW | geoai/utils/raster.py | 1765 | # Step 3: Clean up VRT | COMMENT |
| LOW | qgis_plugin/geoai/core/venv_manager.py | 4067 | # Step 1: Download Python standalone (0-10%) | COMMENT |
| LOW | qgis_plugin/geoai/core/venv_manager.py | 4162 | # Step 2: Create venv (13-18%) | COMMENT |
| LOW | qgis_plugin/geoai/core/venv_manager.py | 4175 | # Step 3: Install dependencies (18-95%) | COMMENT |
| LOW | qgis_plugin/geoai/core/venv_manager.py | 4193 | # Step 4: Verify (95-100%) | COMMENT |
| LOW⚡ | scripts/train_s2_water.py | 504 | # Step 1: Download dataset if not present | STRING |
| LOW⚡ | scripts/train_s2_water.py | 509 | # Step 2: Push dataset to HuggingFace Hub | STRING |
| LOW⚡ | scripts/train_s2_water.py | 516 | # Step 3: Tile scenes into fixed-size tiles | STRING |
| LOW⚡ | scripts/train_s2_water.py | 525 | # Step 4: Train model | STRING |
| LOW⚡ | scripts/train_s2_water.py | 543 | # Step 5: Evaluate | STRING |
| LOW⚡ | scripts/train_s2_water.py | 553 | # Step 6: Push model to HuggingFace Hub | STRING |
| LOW⚡ | scripts/train_nwpu_detection.py | 242 | # Step 1: Download and prepare dataset | COMMENT |
| LOW⚡ | scripts/train_nwpu_detection.py | 245 | # Step 2: Train model | COMMENT |
| LOW⚡ | scripts/train_nwpu_detection.py | 255 | # Step 3: Evaluate (optional) | COMMENT |
| LOW⚡ | scripts/train_nwpu_detection.py | 259 | # Step 4: Push to Hub (optional) | COMMENT |
| LOW⚡ | scripts/train_whu_building.py | 395 | # Step 1: Prepare dataset | COMMENT |
| LOW⚡ | scripts/train_whu_building.py | 403 | # Step 2: Train model | COMMENT |
| LOW⚡ | scripts/train_whu_building.py | 421 | # Step 3: Evaluate | COMMENT |
| LOW⚡ | scripts/train_whu_building.py | 431 | # Step 4: Push to HuggingFace Hub | COMMENT |
| LOW⚡ | scripts/object_detection_nwpu.py | 30 | # Step 1: Download NWPU-VHR-10 dataset | COMMENT |
| LOW⚡ | scripts/object_detection_nwpu.py | 46 | # Step 2: Prepare dataset (train/val split) | COMMENT |
| LOW⚡ | scripts/object_detection_nwpu.py | 61 | # Step 3: Visualize sample annotations | COMMENT |
| LOW⚡ | scripts/object_detection_nwpu.py | 110 | # Step 4: Train multi-class detection model | COMMENT |
| LOW⚡ | scripts/object_detection_nwpu.py | 134 | # Step 5: Plot training metrics | COMMENT |
| LOW⚡ | scripts/object_detection_nwpu.py | 173 | # Step 6: Evaluate model with COCO metrics | COMMENT |
| LOW⚡ | scripts/object_detection_nwpu.py | 189 | # Step 7: Run inference on a validation image | COMMENT |
| LOW⚡ | scripts/object_detection_nwpu.py | 221 | # Step 8: Visualize detections | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 374 | # Step 1: Get raster info | COMMENT |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 380 | # Step 2: Get band statistics | COMMENT |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 387 | # Step 3: Create project and add the file | COMMENT |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 407 | # Step 1: Create project | COMMENT |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 414 | # Step 2: Verify project file is valid JSON | COMMENT |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 429 | # Step 1: List data sources | COMMENT |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 435 | # Step 2: List segmentation models | COMMENT |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 441 | # Step 3: List detection models | COMMENT |
| LOW⚡ | agent-harness/cli_anything/geoai/tests/test_full_e2e.py | 447 | # Step 4: List change methods | COMMENT |
| LOW⚡ | geoai/utils/geometry.py | 110 | # Step 3: Rotate to align with axes, regularize, then rotate back | COMMENT |
| LOW⚡ | geoai/utils/geometry.py | 113 | # Step 4: Rectify coordinates to enforce right angles | COMMENT |
| LOW | geoai/utils/geometry.py | 80 | # Step 1: Simplify to remove noise and small vertices | COMMENT |
| LOW | geoai/utils/geometry.py | 92 | # Step 2: Get the dominant angle to rotate building | COMMENT |
| LOW⚡ | geoai/utils/raster.py | 1738 | # Step 1: Build VRT | COMMENT |
| LOW⚡ | geoai/utils/raster.py | 1742 | # Step 2: Translate VRT to output GeoTIFF | COMMENT |
| LOW | geoai/utils/raster.py | 1765 | # Step 3: Clean up VRT | COMMENT |
| LOW | qgis_plugin/geoai/core/venv_manager.py | 4067 | # Step 1: Download Python standalone (0-10%) | COMMENT |
| LOW | qgis_plugin/geoai/core/venv_manager.py | 4162 | # Step 2: Create venv (13-18%) | COMMENT |
| LOW | qgis_plugin/geoai/core/venv_manager.py | 4175 | # Step 3: Install dependencies (18-95%) | COMMENT |
| LOW | qgis_plugin/geoai/core/venv_manager.py | 4193 | # Step 4: Verify (95-100%) | COMMENT |
| LOW⚡ | scripts/train_s2_water.py | 504 | # Step 1: Download dataset if not present | STRING |
| LOW⚡ | scripts/train_s2_water.py | 509 | # Step 2: Push dataset to HuggingFace Hub | STRING |
| LOW⚡ | scripts/train_s2_water.py | 516 | # Step 3: Tile scenes into fixed-size tiles | STRING |
| LOW⚡ | scripts/train_s2_water.py | 525 | # Step 4: Train model | STRING |
| LOW⚡ | scripts/train_s2_water.py | 543 | # Step 5: Evaluate | STRING |
| LOW⚡ | scripts/train_s2_water.py | 553 | # Step 6: Push model to HuggingFace Hub | STRING |
| LOW⚡ | scripts/train_nwpu_detection.py | 242 | # Step 1: Download and prepare dataset | COMMENT |
| LOW⚡ | scripts/train_nwpu_detection.py | 245 | # Step 2: Train model | COMMENT |
| LOW⚡ | scripts/train_nwpu_detection.py | 255 | # Step 3: Evaluate (optional) | COMMENT |
| LOW⚡ | scripts/train_nwpu_detection.py | 259 | # Step 4: Push to Hub (optional) | COMMENT |
| LOW⚡ | scripts/train_whu_building.py | 395 | # Step 1: Prepare dataset | COMMENT |
| LOW⚡ | scripts/train_whu_building.py | 403 | # Step 2: Train model | COMMENT |
| LOW⚡ | scripts/train_whu_building.py | 421 | # Step 3: Evaluate | COMMENT |
| LOW⚡ | scripts/train_whu_building.py | 431 | # Step 4: Push to HuggingFace Hub | COMMENT |
| LOW⚡ | scripts/object_detection_nwpu.py | 30 | # Step 1: Download NWPU-VHR-10 dataset | COMMENT |
| LOW⚡ | scripts/object_detection_nwpu.py | 46 | # Step 2: Prepare dataset (train/val split) | COMMENT |
| LOW⚡ | scripts/object_detection_nwpu.py | 61 | # Step 3: Visualize sample annotations | COMMENT |
| LOW⚡ | scripts/object_detection_nwpu.py | 110 | # Step 4: Train multi-class detection model | COMMENT |
| LOW⚡ | scripts/object_detection_nwpu.py | 134 | # Step 5: Plot training metrics | COMMENT |
| LOW⚡ | scripts/object_detection_nwpu.py | 173 | # Step 6: Evaluate model with COCO metrics | COMMENT |
| LOW⚡ | scripts/object_detection_nwpu.py | 189 | # Step 7: Run inference on a validation image | COMMENT |
| LOW⚡ | scripts/object_detection_nwpu.py | 221 | # Step 8: Visualize detections | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | geoai/sam.py | 741 | # point_coords, | COMMENT |
| LOW | tests/test_embeddings.py | 1 | # #!/usr/bin/env python | COMMENT |
| LOW | tests/test_embeddings.py | 21 | # self.assertIsInstance(df, pd.DataFrame) | COMMENT |
| LOW | tests/test_embeddings.py | 41 | # def test_list_embedding_datasets_filter_pixel(self): | COMMENT |
| LOW | tests/test_embeddings.py | 61 | # self.assertIn("class_name", info) | COMMENT |
| LOW | tests/test_embeddings.py | 81 | # "earth_embeddings", | COMMENT |
| LOW | tests/test_embeddings.py | 101 | # "temporal_extent", | COMMENT |
| LOW | tests/test_embeddings.py | 121 | COMMENT | |
| LOW | tests/test_embeddings.py | 141 | COMMENT | |
| LOW | tests/test_embeddings.py | 161 | # """Test that loading pixel dataset without paths raises ValueError.""" | COMMENT |
| LOW | tests/test_embeddings.py | 181 | # """Set up test data.""" | COMMENT |
| LOW | tests/test_embeddings.py | 201 | # import matplotlib | COMMENT |
| LOW | tests/test_embeddings.py | 221 | # matplotlib.use("Agg") | COMMENT |
| LOW | tests/test_embeddings.py | 241 | # matplotlib.use("Agg") | COMMENT |
| LOW | tests/test_embeddings.py | 261 | # import matplotlib.pyplot as plt | COMMENT |
| LOW | tests/test_embeddings.py | 281 | # def test_plot_embedding_raster(self): | COMMENT |
| LOW | tests/test_embeddings.py | 301 | # """Set up test data.""" | COMMENT |
| LOW | tests/test_embeddings.py | 321 | COMMENT | |
| LOW | tests/test_embeddings.py | 341 | # # Cosine similarity with itself should be ~1.0 | COMMENT |
| LOW | tests/test_embeddings.py | 361 | # from geoai.embeddings import embedding_similarity | COMMENT |
| LOW | tests/test_embeddings.py | 381 | COMMENT | |
| LOW | tests/test_embeddings.py | 401 | # from geoai.embeddings import compare_embeddings | COMMENT |
| LOW | tests/test_embeddings.py | 421 | COMMENT | |
| LOW | tests/test_embeddings.py | 441 | # """Set up test data.""" | COMMENT |
| LOW | tests/test_embeddings.py | 461 | # from geoai.embeddings import train_embedding_classifier | COMMENT |
| LOW | tests/test_embeddings.py | 481 | # """Test training a Random Forest classifier.""" | COMMENT |
| LOW | tests/test_embeddings.py | 501 | # self.train_labels, | COMMENT |
| LOW | tests/test_embeddings.py | 521 | # verbose=False, | COMMENT |
| LOW | tests/test_embeddings.py | 541 | # def test_save_geotiff(self): | COMMENT |
| LOW | tests/test_embeddings.py | 561 | # self.assertEqual(src.width, 64) | COMMENT |
| LOW | tests/test_embeddings.py | 581 | # with rasterio.open(output_path) as src: | COMMENT |
| LOW | tests/test_embeddings.py | 601 | # def test_extract_from_mock_dataset(self): | COMMENT |
| LOW | tests/test_embeddings.py | 621 | # data = extract_patch_embeddings(ds, max_samples=5) | COMMENT |
| LOW | tests/test_embeddings.py | 641 | # ds = MockDataset() | COMMENT |
| LOW | tests/test_embeddings.py | 661 | # data = extract_patch_embeddings(ds, max_samples=10) | COMMENT |
| LOW | tests/test_embeddings.py | 681 | # self.assertTrue(hasattr(geoai, "cluster_embeddings")) | COMMENT |
| LOW | .github/workflows/draft-pdf.yml | 21 | # This is the output path where Pandoc will write the compiled | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | geoai/change_detection.py | 1032 | # Create comprehensive visualization | COMMENT |
| MEDIUM | geoai/change_detection.py | 689 | # Create comprehensive visualization | COMMENT |
| MEDIUM⚡ | geoai/change_detection.py | 1023 | """Create a comprehensive visualization report from detailed results.""" | STRING |
| MEDIUM | geoai/extract.py | 1418 | # Create a rotated rectangle using OpenCV method (more robust than Shapely methods) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | geoai/auto.py | 738 | # Handle zero-shot object detection separately | COMMENT |
| MEDIUM⚡ | qgis_plugin/geoai/core/venv_manager.py | 4006 | # Full orchestration | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/train_ptv3_dales.py | 601 | " cd Pointcept/libs/pointops && python setup.py install && cd ../..\n" | CODE |
| HIGH | scripts/train_ptv3_dales.py | 12 | cd Pointcept/libs/pointops && python setup.py install && cd ../.. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | geoai/segmentation.py | 392 | # Example usage | COMMENT |
| LOW | docs/examples/pipelines/building_extraction.yaml | 7 | # Usage: | COMMENT |
| LOW | docs/examples/pipelines/semantic_segmentation.yaml | 7 | # Usage: | COMMENT |