A feed-forward 3D foundation model for reconstructing scenes from streaming data
This report presents the forensic synthetic code analysis of Robbyant/lingbot-map, a Python project with 10,657 GitHub stars. SynthScan v2.0 examined 40,687 lines of code across 166 source files, recording 754 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 37.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).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
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 754 distinct pattern matches across 16 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 | gct_profile.py | 21 | # ============================================================================ | COMMENT |
| MEDIUM | gct_profile.py | 23 | # ============================================================================ | COMMENT |
| MEDIUM | gct_profile.py | 60 | # ============================================================================ | COMMENT |
| MEDIUM | gct_profile.py | 62 | # ============================================================================ | COMMENT |
| MEDIUM | gct_profile.py | 115 | # ── Phase 2: causal streaming, one frame at a time ───────────────────── | COMMENT |
| MEDIUM | gct_profile.py | 140 | # ============================================================================ | COMMENT |
| MEDIUM | gct_profile.py | 142 | # ============================================================================ | COMMENT |
| MEDIUM | gct_profile.py | 220 | # ============================================================================ | COMMENT |
| MEDIUM | gct_profile.py | 222 | # ============================================================================ | COMMENT |
| MEDIUM | demo.py | 52 | # ============================================================================= | COMMENT |
| MEDIUM | demo.py | 54 | # ============================================================================= | COMMENT |
| MEDIUM | demo.py | 127 | # ============================================================================= | COMMENT |
| MEDIUM | demo.py | 129 | # ============================================================================= | COMMENT |
| MEDIUM | demo.py | 166 | # ============================================================================= | COMMENT |
| MEDIUM | demo.py | 168 | # ============================================================================= | COMMENT |
| MEDIUM | demo.py | 250 | # ============================================================================= | COMMENT |
| MEDIUM | demo.py | 252 | # ============================================================================= | COMMENT |
| MEDIUM | demo.py | 338 | # ============================================================================= | COMMENT |
| MEDIUM | demo.py | 340 | # ============================================================================= | COMMENT |
| MEDIUM | demo.py | 423 | # ── Load images & model ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo.py | 501 | # ── Optional: torch.compile + CUDA-graph warmup (streaming only) ──────── | COMMENT |
| MEDIUM | demo.py | 539 | # ── Inference ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo.py | 572 | # ── Post-process ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | demo.py | 583 | # ── Visualize ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | lingbot_map/layers/flashinfer_cache.py | 130 | # ── Page pool sizing ───────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | lingbot_map/layers/flashinfer_cache.py | 140 | # ── Physical paged KV caches ───────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | lingbot_map/layers/flashinfer_cache.py | 150 | # ── Per-block state ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | lingbot_map/layers/flashinfer_cache.py | 177 | # ── FlashInfer wrapper ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | lingbot_map/layers/flashinfer_cache.py | 198 | # ========================================================================= | COMMENT |
| MEDIUM | lingbot_map/layers/flashinfer_cache.py | 200 | # ========================================================================= | COMMENT |
| MEDIUM | lingbot_map/layers/flashinfer_cache.py | 373 | # ── fp32 gather+SDPA path ───────────────────────────────────────── | COMMENT |
| MEDIUM | lingbot_map/layers/flashinfer_cache.py | 386 | # ── Plan once per frame step ────────────────────────────────────── | COMMENT |
| MEDIUM | lingbot_map/layers/flashinfer_cache.py | 416 | # ── Run attention for this layer ────────────────────────────────────── | COMMENT |
| MEDIUM | lingbot_map/layers/flashinfer_cache.py | 434 | # ========================================================================= | COMMENT |
| MEDIUM | lingbot_map/layers/flashinfer_cache.py | 436 | # ========================================================================= | COMMENT |
| MEDIUM | lingbot_map/layers/flashinfer_cache.py | 472 | # ── Internal write helpers ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | lingbot_map/layers/flashinfer_cache.py | 555 | # ── Legacy property (used by stream.py) ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | lingbot_map/layers/flashinfer_cache.py | 563 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | lingbot_map/layers/flashinfer_cache.py | 565 | # ============================================================================= | COMMENT |
| MEDIUM | lingbot_map/layers/flashinfer_cache.py | 610 | # ── Page count checks ─────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | lingbot_map/layers/flashinfer_cache.py | 627 | # ── last_page_len ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | lingbot_map/layers/flashinfer_cache.py | 633 | # ── visible page table order ───────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | lingbot_map/layers/flashinfer_cache.py | 641 | # ── forward pass: plan() once for block 0, run() for both blocks ───── | COMMENT |
| MEDIUM | lingbot_map/models/gct_stream_window.py | 360 | # ── Flow-based keyframe helpers ──────────────────────────────────────── | COMMENT |
| MEDIUM | lingbot_map/models/gct_stream_window.py | 667 | # ══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | lingbot_map/models/gct_stream_window.py | 669 | # ══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | lingbot_map/models/gct_stream_window.py | 1083 | # ================================================================ | COMMENT |
| MEDIUM | lingbot_map/models/gct_stream_window.py | 1085 | # ================================================================ | COMMENT |
| MEDIUM | lingbot_map/models/gct_stream_window.py | 1182 | # ================================================================ | COMMENT |
| MEDIUM | lingbot_map/models/gct_stream_window.py | 1184 | # ================================================================ | COMMENT |
| MEDIUM | lingbot_map/models/gct_stream_window_v2.py | 423 | # ── Flow-based keyframe helpers ──────────────────────────────────────── | COMMENT |
| MEDIUM | lingbot_map/models/gct_stream_window_v2.py | 730 | # ══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | lingbot_map/models/gct_stream_window_v2.py | 732 | # ══════════════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | lingbot_map/models/gct_stream_window_v2.py | 1145 | # ================================================================ | COMMENT |
| MEDIUM | lingbot_map/models/gct_stream_window_v2.py | 1147 | # ================================================================ | COMMENT |
| MEDIUM | lingbot_map/models/gct_stream_window_v2.py | 1244 | # ================================================================ | COMMENT |
| MEDIUM | lingbot_map/models/gct_stream_window_v2.py | 1246 | # ================================================================ | COMMENT |
| MEDIUM | benchmark/run.py | 27 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | benchmark/run.py | 29 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | benchmark/run.py | 87 | # --------------------------------------------------------------------------- | COMMENT |
| 200 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lingbot_map/layers/attention.py | 10 | CODE | |
| LOW | lingbot_map/layers/attention.py | 11 | CODE | |
| LOW | lingbot_map/layers/attention.py | 12 | CODE | |
| LOW | lingbot_map/layers/attention.py | 13 | CODE | |
| LOW | lingbot_map/layers/attention.py | 22 | CODE | |
| LOW | lingbot_map/layers/attention.py | 32 | CODE | |
| LOW | lingbot_map/layers/attention.py | 33 | CODE | |
| LOW | lingbot_map/layers/attention.py | 33 | CODE | |
| LOW | lingbot_map/layers/attention.py | 26 | CODE | |
| LOW | lingbot_map/layers/swiglu_ffn.py | 8 | CODE | |
| LOW | lingbot_map/layers/__init__.py | 1 | CODE | |
| LOW | lingbot_map/layers/__init__.py | 2 | CODE | |
| LOW | lingbot_map/layers/__init__.py | 3 | CODE | |
| LOW | lingbot_map/layers/__init__.py | 4 | CODE | |
| LOW | lingbot_map/layers/__init__.py | 5 | CODE | |
| LOW | lingbot_map/layers/rope.py | 23 | CODE | |
| LOW | lingbot_map/layers/block.py | 10 | CODE | |
| LOW | lingbot_map/layers/block.py | 11 | CODE | |
| LOW | lingbot_map/layers/block.py | 12 | CODE | |
| LOW | lingbot_map/layers/block.py | 12 | CODE | |
| LOW | lingbot_map/layers/block.py | 12 | CODE | |
| LOW | lingbot_map/layers/block.py | 12 | CODE | |
| LOW | lingbot_map/layers/block.py | 13 | CODE | |
| LOW | lingbot_map/layers/block.py | 20 | CODE | |
| LOW | lingbot_map/layers/block.py | 20 | CODE | |
| LOW | lingbot_map/aggregator/__init__.py | 1 | CODE | |
| LOW | lingbot_map/aggregator/__init__.py | 2 | CODE | |
| LOW | lingbot_map/aggregator/stream.py | 16 | CODE | |
| LOW | lingbot_map/utils/pose_enc.py | 9 | CODE | |
| LOW | lingbot_map/utils/pose_enc.py | 12 | CODE | |
| LOW | lingbot_map/utils/pose_enc.py | 13 | CODE | |
| LOW | lingbot_map/utils/pose_enc.py | 14 | CODE | |
| LOW | lingbot_map/utils/pose_enc.py | 15 | CODE | |
| LOW | lingbot_map/utils/pose_enc.py | 16 | CODE | |
| LOW | lingbot_map/utils/pose_enc.py | 18 | CODE | |
| LOW | lingbot_map/utils/geometry.py | 7 | CODE | |
| LOW | lingbot_map/utils/rotation.py | 10 | CODE | |
| LOW | lingbot_map/heads/utils.py | 8 | CODE | |
| LOW | lingbot_map/heads/camera_head.py | 7 | CODE | |
| LOW | lingbot_map/heads/camera_head.py | 8 | CODE | |
| LOW | lingbot_map/heads/camera_head.py | 12 | CODE | |
| LOW | lingbot_map/heads/dpt_head.py | 11 | CODE | |
| LOW | lingbot_map/heads/dpt_head.py | 12 | CODE | |
| LOW | lingbot_map/models/gct_base.py | 15 | CODE | |
| LOW | lingbot_map/models/gct_stream.py | 15 | CODE | |
| LOW | lingbot_map/vis/__init__.py | 31 | CODE | |
| LOW | lingbot_map/vis/__init__.py | 32 | CODE | |
| LOW | lingbot_map/vis/__init__.py | 33 | CODE | |
| LOW | lingbot_map/vis/__init__.py | 33 | CODE | |
| LOW | lingbot_map/vis/__init__.py | 33 | CODE | |
| LOW | lingbot_map/vis/__init__.py | 33 | CODE | |
| LOW | lingbot_map/vis/__init__.py | 34 | CODE | |
| LOW | lingbot_map/vis/__init__.py | 34 | CODE | |
| LOW | lingbot_map/vis/__init__.py | 34 | CODE | |
| LOW | lingbot_map/vis/__init__.py | 34 | CODE | |
| LOW | lingbot_map/vis/__init__.py | 40 | CODE | |
| LOW | benchmark/evaluate.py | 16 | CODE | |
| LOW | benchmark/benchmark/core/config.py | 16 | CODE | |
| LOW | benchmark/benchmark/core/registry.py | 7 | CODE | |
| LOW | benchmark/benchmark/core/registry.py | 8 | CODE | |
| 96 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | lingbot_map/models/gct_stream_window.py | 0 | gctstream - streaming gct with kv cache for online inference. provides streaming inference functionality: - temporal cau | STRING |
| HIGH | lingbot_map/models/gct_stream.py | 0 | gctstream - streaming gct with kv cache for online inference. provides streaming inference functionality: - temporal cau | STRING |
| HIGH | lingbot_map/models/gct_stream_window_v2.py | 0 | gctstream - streaming gct with kv cache for online inference. provides streaming inference functionality: - temporal cau | STRING |
| HIGH | lingbot_map/models/gct_stream_window.py | 0 | streaming gct model with kv cache for efficient online inference. features: - aggregatorstream with kv cache support (fl | STRING |
| HIGH | lingbot_map/models/gct_stream.py | 0 | streaming gct model with kv cache for efficient online inference. features: - aggregatorstream with kv cache support (fl | STRING |
| HIGH | lingbot_map/models/gct_stream_window_v2.py | 0 | streaming gct model with kv cache for efficient online inference. features: - aggregatorstream with kv cache support (fl | STRING |
| HIGH | lingbot_map/models/gct_stream_window.py | 0 | initialize gctstream. args: img_size: input image size patch_size: patch size for embedding embed_dim: embedding dimensi | STRING |
| HIGH | lingbot_map/models/gct_stream.py | 0 | initialize gctstream. args: img_size: input image size patch_size: patch size for embedding embed_dim: embedding dimensi | STRING |
| HIGH | lingbot_map/models/gct_stream_window_v2.py | 0 | initialize gctstream. args: img_size: input image size patch_size: patch size for embedding embed_dim: embedding dimensi | STRING |
| HIGH | lingbot_map/models/gct_stream_window.py | 0 | build streaming aggregator with kv cache support (flashinfer backend). returns: aggregatorstream module | STRING |
| HIGH | lingbot_map/models/gct_stream.py | 0 | build streaming aggregator with kv cache support (flashinfer backend). returns: aggregatorstream module | STRING |
| HIGH | lingbot_map/models/gct_stream_window_v2.py | 0 | build streaming aggregator with kv cache support (flashinfer backend). returns: aggregatorstream module | STRING |
| HIGH | lingbot_map/models/gct_stream_window.py | 0 | build causal camera head for streaming inference. returns: cameracausalhead module or none | STRING |
| HIGH | lingbot_map/models/gct_stream.py | 0 | build causal camera head for streaming inference. returns: cameracausalhead module or none | STRING |
| HIGH | lingbot_map/models/gct_stream_window_v2.py | 0 | build causal camera head for streaming inference. returns: cameracausalhead module or none | STRING |
| HIGH | lingbot_map/models/gct_stream_window.py | 0 | run aggregator to get multi-scale features. args: images: input images [b, s, 3, h, w] num_frame_for_scale: number of fr | STRING |
| HIGH | lingbot_map/models/gct_stream.py | 0 | run aggregator to get multi-scale features. args: images: input images [b, s, 3, h, w] num_frame_for_scale: number of fr | STRING |
| HIGH | lingbot_map/models/gct_stream_window_v2.py | 0 | run aggregator to get multi-scale features. args: images: input images [b, s, 3, h, w] num_frame_for_scale: number of fr | STRING |
| HIGH | lingbot_map/models/gct_stream_window.py | 0 | clean kv cache in aggregator. call this method when starting a new video sequence to clear cached key-value pairs from p | STRING |
| HIGH | lingbot_map/models/gct_stream.py | 0 | clean kv cache in aggregator. call this method when starting a new video sequence to clear cached key-value pairs from p | STRING |
| HIGH | lingbot_map/models/gct_stream_window_v2.py | 0 | clean kv cache in aggregator. call this method when starting a new video sequence to clear cached key-value pairs from p | STRING |
| HIGH | lingbot_map/models/gct_stream_window.py | 0 | set _skip_append flag on all kv caches (aggregator + camera head). when skip=true, attention layers will attend to [cach | STRING |
| HIGH | lingbot_map/models/gct_stream.py | 0 | set _skip_append flag on all kv caches (aggregator + camera head). when skip=true, attention layers will attend to [cach | STRING |
| HIGH | lingbot_map/models/gct_stream_window_v2.py | 0 | set _skip_append flag on all kv caches (aggregator + camera head). when skip=true, attention layers will attend to [cach | STRING |
| HIGH | lingbot_map/models/gct_stream_window.py | 0 | get information about current kv cache state. returns: dictionary with cache statistics: - num_cached_blocks: number of | STRING |
| HIGH | lingbot_map/models/gct_stream.py | 0 | get information about current kv cache state. returns: dictionary with cache statistics: - num_cached_blocks: number of | STRING |
| HIGH | lingbot_map/models/gct_stream_window_v2.py | 0 | get information about current kv cache state. returns: dictionary with cache statistics: - num_cached_blocks: number of | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lingbot_map/aggregator/base.py | 229 | except Exception as e: | CODE |
| LOW | lingbot_map/models/gct_stream.py | 70 | except Exception as e: # pragma: no cover — debug helper, never fatal | CODE |
| LOW | lingbot_map/models/gct_stream_window_v2.py | 87 | except Exception as e: # pragma: no cover — debug helper, never fatal | CODE |
| LOW | lingbot_map/vis/sky_segmentation.py | 248 | except Exception as e: | CODE |
| MEDIUM | lingbot_map/vis/glb_export.py | 509 | print(f"Error downloading file: {e}") | CODE |
| LOW | lingbot_map/vis/point_cloud_viewer.py | 1280 | except Exception as e: | CODE |
| LOW | lingbot_map/vis/point_cloud_viewer.py | 1333 | except Exception as e: | CODE |
| LOW | lingbot_map/vis/point_cloud_viewer.py | 1364 | except Exception as e: | CODE |
| MEDIUM | lingbot_map/vis/point_cloud_viewer.py | 1365 | print(f"Error saving video: {e}") | CODE |
| LOW | lingbot_map/vis/point_cloud_viewer.py | 1405 | except Exception as e: | CODE |
| MEDIUM | lingbot_map/vis/point_cloud_viewer.py | 1406 | print(f"Error saving original video: {e}") | CODE |
| LOW⚡ | benchmark/run.py | 82 | except Exception as e: | CODE |
| LOW | benchmark/run.py | 134 | except Exception as e: | CODE |
| MEDIUM | benchmark/run.py | 135 | print(f"Error loading config: {e}") | CODE |
| LOW | benchmark/run.py | 188 | except Exception as e: | CODE |
| LOW⚡ | benchmark/run.py | 209 | except Exception as e: | CODE |
| LOW | benchmark/run.py | 276 | except Exception as e: | CODE |
| MEDIUM | benchmark/viewer.py | 450 | def _run(): | CODE |
| LOW⚡ | benchmark/viewer.py | 243 | except Exception as e: | CODE |
| LOW⚡ | benchmark/viewer.py | 290 | except Exception as e: | CODE |
| LOW⚡ | benchmark/viewer.py | 322 | except Exception as e: | CODE |
| LOW⚡ | benchmark/viewer.py | 408 | except Exception: | CODE |
| LOW⚡ | benchmark/viewer.py | 1856 | except Exception as e: | CODE |
| LOW | benchmark/viewer.py | 149 | except Exception as e: | CODE |
| LOW | benchmark/viewer.py | 187 | except Exception as e: | CODE |
| LOW | benchmark/viewer.py | 260 | except Exception: | CODE |
| LOW | benchmark/viewer.py | 279 | except Exception as e: | CODE |
| LOW | benchmark/viewer.py | 311 | except Exception as e: | CODE |
| LOW | benchmark/viewer.py | 815 | except Exception as e: | CODE |
| LOW | benchmark/viewer.py | 884 | except Exception: | CODE |
| LOW | benchmark/viewer.py | 1087 | except Exception as e: | CODE |
| LOW | benchmark/viewer.py | 1122 | except Exception as e2: | CODE |
| LOW | benchmark/viewer.py | 1153 | except Exception as e: | CODE |
| LOW | benchmark/viewer.py | 1198 | except Exception as e: | CODE |
| LOW | benchmark/viewer.py | 1269 | except Exception as e: | CODE |
| LOW | benchmark/viewer.py | 1834 | except Exception as e: | CODE |
| LOW | benchmark/evaluate.py | 120 | except Exception as e: | CODE |
| MEDIUM | benchmark/evaluate.py | 121 | print(f"Error loading config: {e}") | CODE |
| LOW | benchmark/evaluate.py | 182 | except Exception as e: | CODE |
| LOW | benchmark/evaluate.py | 231 | except Exception as e: | CODE |
| LOW | benchmark/report.py | 51 | except Exception as exc: | CODE |
| LOW | benchmark/prepare.py | 86 | except Exception as e: | CODE |
| LOW | benchmark/prepare.py | 125 | except Exception as e: | CODE |
| LOW | benchmark/prepare.py | 145 | except Exception as e: | CODE |
| MEDIUM | benchmark/prepare.py | 146 | print(f"Error loading config: {e}") | CODE |
| LOW⚡ | benchmark/prepare.py | 185 | except Exception as e: | CODE |
| LOW⚡ | benchmark/prepare.py | 192 | except Exception as e: | CODE |
| LOW⚡ | benchmark/prepare.py | 202 | except Exception as e: | CODE |
| LOW | benchmark/run_worker.py | 79 | except Exception as e: | CODE |
| LOW | benchmark/run_worker.py | 103 | except Exception as e: | CODE |
| MEDIUM | benchmark/run_worker.py | 104 | print(f"Error loading config: {e}", file=sys.stderr) | CODE |
| LOW | benchmark/run_worker.py | 127 | except Exception as e: | CODE |
| LOW | benchmark/run_worker.py | 160 | except Exception as e: | CODE |
| LOW | benchmark/benchmark/core/saver.py | 271 | except Exception as e: | CODE |
| LOW⚡ | benchmark/benchmark/core/loader.py | 374 | except Exception: | CODE |
| LOW | benchmark/benchmark/core/evaluator.py | 133 | except Exception as e: | CODE |
| LOW | benchmark/benchmark/core/evaluator.py | 158 | except Exception as e: | CODE |
| LOW | benchmark/benchmark/core/evaluator.py | 177 | except Exception as e: | CODE |
| LOW | benchmark/benchmark/core/evaluator.py | 197 | except Exception as e: | CODE |
| LOW⚡ | benchmark/benchmark/evaluation/points.py | 527 | except Exception as e: | CODE |
| 23 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | lingbot_map/layers/rope.py | 160 | Applies 2D rotary position embeddings to input tokens. Args: tokens: Input tensor of shape (batch_s | STRING |
| HIGH | lingbot_map/utils/load_fn.py | 17 | Load and preprocess images by center padding to square and resizing to target size. Also returns the position i | STRING |
| HIGH | lingbot_map/utils/load_fn.py | 105 | A quick start function to load and preprocess images for model input. This assumes the images should have the s | STRING |
| HIGH | lingbot_map/vis/glb_export.py | 46 | Converts GCT predictions to a 3D scene represented as a GLB file. Args: predictions: Dictionary contai | STRING |
| HIGH | benchmark/benchmark/core/registry.py | 20 | Load a dataset class by name. Searches for the class in the datasets/ directory. Args: nam | STRING |
| HIGH | benchmark/benchmark/core/registry.py | 42 | Load a method class by name. Searches for the class in the methods/ directory. Args: name: | STRING |
| HIGH | benchmark/benchmark/core/registry.py | 64 | Load a class from a module path. Args: module_path: Python module path (e.g., 'datasets.seven_scene | STRING |
| HIGH | benchmark/benchmark/core/registry.py | 98 | Convert module name to expected class name. Converts snake_case to PascalCase and appends 'Dataset' or 'Method' | STRING |
| HIGH | benchmark/benchmark/io/sampling.py | 41 | Read sampling.json file. Args: sampling_file: Sampling metadata file path Returns: Dictionary | STRING |
| HIGH | benchmark/benchmark/io/image.py | 128 | Load image from EXR format with adaptive channel support. Args: input_file: Input EXR file path ret | STRING |
| HIGH | benchmark/benchmark/utils/sky_segmentation.py | 36 | Create onnxruntime.InferenceSession; raises ImportError if not installed. Args: model_path: Path to ONNX mo | STRING |
| HIGH | benchmark/benchmark/evaluation/trajectory.py | 114 | Evaluate trajectory using evo library (ATE and RPE). Args: gt_loader: BSSLoader for ground truth | STRING |
| HIGH | benchmark/benchmark/evaluation/auc.py | 32 | Compute pose AUC metrics for a scene. Args: gt_loader: BSSLoader for ground truth directory | STRING |
| HIGH | benchmark/benchmark/geometry/registration.py | 69 | Perform Umeyama registration to align source points to target points. This function implements the Umeyama algorith | STRING |
| HIGH | benchmark/benchmark/geometry/registration.py | 175 | Perform RANSAC-based similarity registration robust to outliers. Uses Open3D's RANSAC engine (`registration_ransac_ | STRING |
| HIGH | benchmark/benchmark/geometry/registration.py | 273 | Perform ICP registration to align source points to target points. This function implements Iterative Closest Point | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | demo.py | 307 | def prepare_for_visualization(predictions, images=None): | CODE |
| LOW | lingbot_map/layers/attention.py | 297 | def _apply_kv_cache_eviction_causal(self, kv_cache, global_idx, camera_token_idx, scale_token_idx): | CODE |
| LOW | lingbot_map/layers/vision_transformer.py | 228 | def prepare_tokens_with_masks(self, x, masks=None): | CODE |
| LOW | lingbot_map/layers/vision_transformer.py | 287 | def _get_intermediate_layers_not_chunked(self, x, n=1): | CODE |
| LOW | lingbot_map/layers/vision_transformer.py | 299 | def _get_intermediate_layers_chunked(self, x, n=1): | CODE |
| LOW | lingbot_map/layers/rope.py | 88 | def _compute_frequency_components( | CODE |
| LOW | lingbot_map/layers/flashinfer_cache.py | 256 | def execute_deferred_eviction( | CODE |
| LOW | lingbot_map/layers/block.py | 104 | def drop_add_residual_stochastic_depth( | CODE |
| LOW | lingbot_map/layers/block.py | 379 | def _prepare_blockwise_causal_attn_mask(self, | CODE |
| LOW | lingbot_map/aggregator/stream.py | 370 | def _process_global_attention( | CODE |
| LOW | lingbot_map/aggregator/base.py | 503 | def _process_global_attention( | CODE |
| LOW | lingbot_map/utils/load_fn.py | 16 | def load_and_preprocess_images_square(image_path_list, target_size=1024): | CODE |
| LOW | lingbot_map/utils/load_fn.py | 104 | def load_and_preprocess_images(image_path_list, fx=None, fy=None, cx=None, cy=None, mode="crop", image_size=512, patch_s | CODE |
| LOW | lingbot_map/utils/pose_enc.py | 21 | def extri_intri_to_pose_encoding( | CODE |
| LOW | lingbot_map/utils/pose_enc.py | 72 | def pose_encoding_to_extri_intri( | CODE |
| LOW | lingbot_map/utils/pose_enc.py | 231 | def compare_translation_by_angle(t_gt, t, eps=1e-15, default_err=1e6): | CODE |
| LOW | lingbot_map/utils/pose_enc.py | 310 | def colmap_to_opencv_intrinsics(K): | CODE |
| LOW | lingbot_map/utils/geometry.py | 25 | def unproject_depth_map_to_point_map( | CODE |
| LOW | lingbot_map/utils/geometry.py | 57 | def depth_to_world_coords_points( | CODE |
| LOW | lingbot_map/utils/geometry.py | 97 | def depth_to_cam_coords_points(depth_map: np.ndarray, intrinsic: np.ndarray) -> tuple[np.ndarray, np.ndarray]: | CODE |
| LOW | lingbot_map/utils/geometry.py | 204 | def project_world_points_to_camera_points_batch(world_points, cam_extrinsics): | CODE |
| LOW | lingbot_map/utils/geometry.py | 233 | def project_world_points_to_cam( | CODE |
| LOW⚡ | lingbot_map/utils/geometry.py | 413 | def all_pairs_distance_matrix(poses, beta=2.5): | CODE |
| LOW⚡ | lingbot_map/utils/geometry.py | 422 | def pose_matrix_to_quaternion(pose): | CODE |
| LOW⚡ | lingbot_map/utils/geometry.py | 427 | def compute_distance_matrix_flow(poses, disps, intrinsics): | CODE |
| LOW | lingbot_map/models/gct_base.py | 250 | def _unproject_depth_to_world( | CODE |
| LOW | lingbot_map/models/gct_stream_window.py | 409 | def _execute_deferred_eviction(self): | CODE |
| LOW | lingbot_map/models/gct_stream_window.py | 894 | def _align_and_stitch_windows( | CODE |
| LOW | lingbot_map/models/gct_stream_window_v2.py | 472 | def _execute_deferred_eviction(self): | CODE |
| LOW | lingbot_map/models/gct_stream_window_v2.py | 957 | def _align_and_stitch_windows( | CODE |
| LOW | lingbot_map/vis/sky_segmentation.py | 92 | def _result_map_to_non_sky_conf(result_map: np.ndarray) -> np.ndarray: | CODE |
| LOW | lingbot_map/vis/sky_segmentation.py | 183 | def _save_sky_mask_visualization( | CODE |
| LOW | lingbot_map/vis/glb_export.py | 247 | def integrate_camera_into_scene( | CODE |
| LOW | lingbot_map/vis/glb_export.py | 337 | def get_opengl_conversion_matrix() -> np.ndarray: | CODE |
| LOW | lingbot_map/vis/glb_export.py | 396 | def compute_camera_faces_multi(cone_shape: "trimesh.Trimesh", num_shells: int) -> np.ndarray: | CODE |
| LOW | lingbot_map/vis/point_cloud_viewer.py | 227 | def _compute_scene_center_and_scale(self) -> Tuple[np.ndarray, float]: | CODE |
| LOW | lingbot_map/vis/point_cloud_viewer.py | 902 | def _smooth_camera_transition( | CODE |
| LOW | lingbot_map/vis/point_cloud_viewer.py | 984 | def generate_pseudo_intrinsics(h: int, w: int) -> np.ndarray: | CODE |
| LOW | benchmark/viewer.py | 739 | def _get_methods_for_dataset_scene(self, dataset: str, scene: str) -> List[str]: | CODE |
| LOW | benchmark/viewer.py | 765 | def _update_clear_cache_button(self): | CODE |
| LOW | benchmark/viewer.py | 1562 | def _update_camera_clipping_planes(self): | CODE |
| LOW | benchmark/viewer.py | 1629 | def _update_trajectory_visibility(self): | CODE |
| LOW | benchmark/viewer.py | 1796 | def _update_cameras_visibility(self): | CODE |
| LOW⚡ | benchmark/benchmark/core/config.py | 104 | def get_selected_dataset_names(self) -> List[str]: | CODE |
| LOW | benchmark/benchmark/core/config.py | 121 | def get_selected_method_names(self) -> List[str]: | CODE |
| LOW | benchmark/benchmark/core/config.py | 230 | def get_merged_evaluation_config( | CODE |
| LOW | benchmark/benchmark/core/registry.py | 118 | def ensure_dataset_class_name(name: str) -> str: | CODE |
| LOW | benchmark/benchmark/core/loader.py | 111 | def get_processing_dimensions(self) -> Tuple[int, int]: | CODE |
| LOW | benchmark/benchmark/evaluation/points.py | 478 | def save_pointcloud_visualization( | CODE |
| LOW | benchmark/benchmark/report/templates/app.js | 71 | function initializeDatasetSelector() { | CODE |
| LOW | benchmark/benchmark/report/templates/app.js | 166 | function initializeArtifactMethodSelector() { | CODE |
| LOW | benchmark/benchmark/report/templates/app.js | 246 | function selectedDatasetMetricColumns(metricsByCategory) { | CODE |
| LOW | benchmark/benchmark/geometry/registration.py | 166 | def umeyama_registration_ransac( | CODE |
| LOW | benchmark/benchmark/geometry/quaternion.py | 6 | def rotation_matrix_to_quaternion(R: np.ndarray) -> np.ndarray: | CODE |
| LOW | benchmark/benchmark/geometry/resize.py | 45 | def _compute_resize_transform( | CODE |
| LOW | benchmark/methods/lingbot_map.py | 24 | def _resolve_keyframe_interval( | CODE |
| LOW | benchmark/datasets/vbr.py | 184 | def _parse_tum_trajectory_indexed(path: Path) -> Dict[int, np.ndarray]: | CODE |
| LOW | benchmark/datasets/general.py | 486 | def _colmap_camera_to_intrinsics( | CODE |
| LOW | demo_render/batch_demo.py | 172 | def extract_frames_from_video(video_path, output_folder, fps=None): | CODE |
| LOW | demo_render/batch_demo.py | 596 | def load_predictions_from_npz(input_path, num_workers=None): | CODE |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gct_profile.py | 224 | CODE | |
| LOW | lingbot_map/layers/attention.py | 139 | CODE | |
| LOW | lingbot_map/layers/attention.py | 297 | CODE | |
| LOW | lingbot_map/layers/attention.py | 428 | CODE | |
| LOW | lingbot_map/layers/attention.py | 687 | CODE | |
| LOW | lingbot_map/aggregator/base.py | 539 | CODE | |
| LOW | lingbot_map/heads/head_act.py | 38 | CODE | |
| LOW | lingbot_map/heads/head_act.py | 61 | CODE | |
| LOW | lingbot_map/heads/camera_head.py | 256 | CODE | |
| LOW | lingbot_map/models/gct_stream_window.py | 379 | CODE | |
| LOW | lingbot_map/models/gct_stream_window.py | 959 | CODE | |
| LOW | lingbot_map/models/gct_stream.py | 41 | CODE | |
| LOW | lingbot_map/models/gct_stream_window_v2.py | 50 | CODE | |
| LOW | lingbot_map/models/gct_stream_window_v2.py | 442 | CODE | |
| LOW | lingbot_map/models/gct_stream_window_v2.py | 1022 | CODE | |
| LOW | lingbot_map/vis/sky_segmentation.py | 210 | CODE | |
| LOW | lingbot_map/vis/point_cloud_viewer.py | 1284 | CODE | |
| LOW | benchmark/run.py | 31 | CODE | |
| LOW | benchmark/run.py | 119 | CODE | |
| LOW | benchmark/viewer.py | 331 | CODE | |
| LOW | benchmark/viewer.py | 515 | CODE | |
| LOW | benchmark/viewer.py | 1023 | CODE | |
| LOW | benchmark/viewer.py | 1129 | CODE | |
| LOW | benchmark/viewer.py | 1658 | CODE | |
| LOW | benchmark/viewer.py | 1796 | CODE | |
| LOW | benchmark/evaluate.py | 105 | CODE | |
| LOW | benchmark/prepare.py | 22 | CODE | |
| LOW | benchmark/run_worker.py | 28 | CODE | |
| LOW | benchmark/benchmark/core/saver.py | 136 | CODE | |
| LOW | benchmark/benchmark/core/loader.py | 401 | CODE | |
| LOW | benchmark/benchmark/core/evaluator.py | 98 | CODE | |
| LOW | benchmark/benchmark/io/image.py | 66 | CODE | |
| LOW | benchmark/benchmark/io/image.py | 127 | CODE | |
| LOW | benchmark/datasets/oxford_spires.py | 110 | CODE | |
| LOW | demo_render/batch_demo.py | 444 | CODE | |
| LOW | demo_render/batch_demo.py | 596 | CODE | |
| LOW | demo_render/batch_demo.py | 748 | CODE | |
| LOW | demo_render/rgbd_render/overlay.py | 350 | CODE | |
| LOW | demo_render/rgbd_render/renderer.py | 261 | CODE | |
| LOW | demo_render/rgbd_render/renderer.py | 359 | CODE | |
| LOW | demo_render/rgbd_render/camera.py | 532 | CODE | |
| LOW | demo_render/rgbd_render/pipeline/builder.py | 201 | CODE | |
| LOW | demo_render/rgbd_render/pipeline/parallel.py | 151 | CODE | |
| LOW | demo_render/rgbd_render/data/sky.py | 261 | CODE | |
| LOW | demo_render/interactive_viewer/server.py | 434 | CODE | |
| LOW | demo_render/interactive_viewer/server.py | 570 | CODE | |
| LOW | demo_render/interactive_viewer/server.py | 592 | CODE | |
| LOW | demo_render/interactive_viewer/npz_to_glb.py | 110 | CODE | |
| LOW | preprocess/oxford.py | 505 | CODE | |
| LOW | scripts/benchmark_gct_memory.py | 281 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | demo.py | 56 | CODE | |
| LOW | lingbot_map/layers/attention.py | 37 | CODE | |
| LOW | lingbot_map/layers/attention.py | 95 | CODE | |
| LOW | lingbot_map/layers/attention.py | 139 | CODE | |
| LOW | lingbot_map/layers/attention.py | 360 | CODE | |
| LOW | lingbot_map/layers/attention.py | 428 | CODE | |
| LOW | lingbot_map/layers/attention.py | 566 | CODE | |
| LOW | lingbot_map/layers/attention.py | 595 | CODE | |
| LOW | lingbot_map/layers/vision_transformer.py | 47 | CODE | |
| LOW | lingbot_map/layers/block.py | 28 | CODE | |
| LOW | lingbot_map/layers/block.py | 158 | CODE | |
| LOW | lingbot_map/layers/block.py | 229 | CODE | |
| LOW | lingbot_map/layers/block.py | 314 | CODE | |
| LOW | lingbot_map/layers/block.py | 417 | CODE | |
| LOW | lingbot_map/layers/block.py | 467 | CODE | |
| LOW | lingbot_map/layers/block.py | 510 | CODE | |
| LOW | lingbot_map/layers/drop_path.py | 23 | CODE | |
| LOW | lingbot_map/aggregator/stream.py | 34 | CODE | |
| LOW | lingbot_map/aggregator/base.py | 75 | CODE | |
| LOW | lingbot_map/utils/rotation.py | 103 | CODE | |
| LOW | lingbot_map/heads/camera_head.py | 30 | CODE | |
| LOW | lingbot_map/heads/camera_head.py | 164 | CODE | |
| LOW | lingbot_map/heads/camera_head.py | 439 | CODE | |
| LOW | lingbot_map/heads/dpt_head.py | 43 | CODE | |
| LOW | lingbot_map/heads/dpt_head.py | 294 | CODE | |
| LOW | lingbot_map/heads/dpt_head.py | 459 | CODE | |
| LOW | lingbot_map/heads/dpt_head.py | 679 | CODE | |
| LOW | lingbot_map/models/gct_base.py | 39 | CODE | |
| LOW | lingbot_map/models/gct_base.py | 287 | CODE | |
| LOW | lingbot_map/models/gct_stream_window.py | 126 | CODE | |
| LOW | lingbot_map/models/gct_stream_window.py | 959 | CODE | |
| LOW | lingbot_map/models/gct_stream.py | 85 | CODE | |
| LOW | lingbot_map/models/gct_stream_window_v2.py | 189 | CODE | |
| LOW | lingbot_map/models/gct_stream_window_v2.py | 1022 | CODE | |
| LOW | lingbot_map/vis/sky_segmentation.py | 210 | CODE | |
| LOW | lingbot_map/vis/utils.py | 206 | CODE | |
| LOW | lingbot_map/vis/glb_export.py | 35 | CODE | |
| LOW | lingbot_map/vis/point_cloud_viewer.py | 70 | CODE | |
| LOW | benchmark/methods/lingbot_map.py | 48 | CODE | |
| LOW | benchmark/datasets/general.py | 51 | CODE | |
| LOW | demo_render/demo.py | 40 | CODE | |
| LOW | demo_render/rgbd_render/data/sky.py | 261 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | lingbot_map/utils/geometry.py | 264 | # Step 1: Apply extrinsic parameters | COMMENT |
| LOW⚡ | lingbot_map/utils/geometry.py | 273 | # Step 2: Apply intrinsic parameters and (optional) distortion | COMMENT |
| LOW⚡ | benchmark/README.md | 496 | ### Step 1: Clone the method repository | COMMENT |
| LOW⚡ | benchmark/README.md | 504 | ### Step 2: Set up the conda environment | COMMENT |
| LOW⚡ | benchmark/README.md | 508 | ### Step 3: Create the method module | COMMENT |
| LOW | benchmark/README.md | 543 | ### Step 4: Create the YAML config | COMMENT |
| LOW⚡ | benchmark/benchmark/geometry/resize.py | 130 | # Step 1: Resize to intermediate size | COMMENT |
| LOW⚡ | benchmark/benchmark/geometry/resize.py | 133 | # Step 2: Crop content region | COMMENT |
| LOW⚡ | benchmark/benchmark/geometry/resize.py | 141 | # Step 3: Place into final canvas | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lingbot_map/layers/attention.py | 224 | # Check if we should skip appending to cache (non-keyframe in keyframe mode) | COMMENT |
| LOW | lingbot_map/layers/attention.py | 632 | # Check if we should skip appending to cache (non-keyframe in keyframe mode) | COMMENT |
| LOW | lingbot_map/aggregator/stream.py | 463 | # Check if this is the first block group | COMMENT |
| LOW | lingbot_map/utils/load_fn.py | 216 | # Check if we have different shapes | COMMENT |
| LOW | lingbot_map/utils/geometry.py | 150 | # Check if se3 is a numpy array or a torch tensor | COMMENT |
| LOW | lingbot_map/heads/camera_head.py | 312 | # Check if this is the first call (processing scale frames) | COMMENT |
| LOW | benchmark/viewer.py | 144 | # Check if alignment state matches | COMMENT |
| LOW | benchmark/viewer.py | 1211 | # Check if confidence data exists | COMMENT |
| LOW | benchmark/viewer.py | 1304 | # Check if this is GT data | COMMENT |
| LOW | benchmark/benchmark/io/trajectory.py | 50 | # Check if pose is NaN (legacy explicit-NaN rows) | COMMENT |
| LOW | benchmark/benchmark/io/intrinsics.py | 36 | # Check if intrinsics are NaN | COMMENT |
| LOW | benchmark/datasets/seven_scenes.py | 126 | # Check if files exist | COMMENT |
| LOW | demo_render/rgbd_render/camera.py | 642 | # Check if in transition zone with previous or next segment | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lingbot_map/aggregator/stream.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | lingbot_map/aggregator/base.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | lingbot_map/models/gct_base.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | lingbot_map/models/gct_stream_window.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | lingbot_map/models/gct_stream.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | lingbot_map/models/gct_stream_window_v2.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | lingbot_map/vis/viser_wrapper.py | 195 | def update_point_cloud() -> None: | CODE |
| LOW | lingbot_map/vis/__init__.py | 42 | __all__ = [ | CODE |
| LOW⚡ | benchmark/viewer.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | benchmark/report.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | benchmark/benchmark/report/__init__.py | 5 | __all__ = ["ReportGenerator"] | CODE |
| LOW | benchmark/benchmark/report/generator.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | demo_render/render_cuda_ext/render_cuda_ext/__init__.py | 3 | __all__ = ['frustum_cull', 'voxelize_frame'] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | lingbot_map/utils/geometry.py | 264 | # Step 1: Apply extrinsic parameters | COMMENT |
| LOW⚡ | lingbot_map/utils/geometry.py | 273 | # Step 2: Apply intrinsic parameters and (optional) distortion | COMMENT |
| LOW⚡ | benchmark/benchmark/geometry/resize.py | 130 | # Step 1: Resize to intermediate size | COMMENT |
| LOW⚡ | benchmark/benchmark/geometry/resize.py | 133 | # Step 2: Crop content region | COMMENT |
| LOW⚡ | benchmark/benchmark/geometry/resize.py | 141 | # Step 3: Place into final canvas | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | lingbot_map/layers/rope.py | 9 | # This module provides a clean implementation of 2D Rotary Position Embeddings, | COMMENT |
| MEDIUM | lingbot_map/utils/load_fn.py | 80 | # Create a new black square image and paste original | COMMENT |
| MEDIUM | lingbot_map/vis/viser_wrapper.py | 133 | # Create the main point cloud | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | benchmark/envs/install_lingbot_map.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | demo_render/process_videos.sh | 1 | #!/bin/bash | COMMENT |
| LOW | demo_render/requirements.txt | 1 | # Core | COMMENT |
| LOW | preprocess/points_visibility/visibility.cpp | 1 | // ------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | benchmark/envs/install_lingbot_map.sh | 11 | # Usage: | COMMENT |
| LOW⚡ | demo_render/process_videos.sh | 5 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | benchmark/benchmark/evaluation/points.py | 254 | """Compute comprehensive point cloud evaluation metrics. | STRING |
| MEDIUM | benchmark/benchmark/geometry/registration.py | 175 | """Perform RANSAC-based similarity registration robust to outliers. | STRING |