Robbyant/lingbot-map
[ECCV 2026 Best Paper Award Candidate] LingBot-Map: Geometric Context Transformer for Streaming 3D Reconstruction
Python★ 17,789+110 that day#6 on trending
D52.4/100
Duplication50
8.9% in python, bash, javascript, perl, cppDead code63
5.1%Complexity46
58% The score is jscpd's own --health model: markup, data and text left out, tests kept. The numbers below are the trending scan's.
8.89%duplicated code · 2,671 of 30,056 lines
99clones in code
94code files of 118 scanned
8.42%duplicated over all files · 111 clones
Most complex files
- benchmark/viewer.py326 cx
- benchmark/benchmark/report/templates/app.js267 cx
- lingbot_map/vis/point_cloud_viewer.py215 cx
- lingbot_map/models/gct_stream_window_v2.py195 cx
- lingbot_map/models/gct_stream_window.py178 cx
- benchmark/benchmark/core/loader.py112 cx
- benchmark/benchmark/core/saver.py102 cx
- lingbot_map/layers/attention.py100 cx
- lingbot_map/vis/sky_segmentation.py94 cx
- preprocess/oxford.py91 cx
Dead code 5.13% unused · 43 findings
- lingbot_map/models/gct_stream_window_v2.pyunused-file
- lingbot_map/utils/load_fn.py:load_and_preprocess_images_squareunused-export
- lingbot_map/utils/geometry.py:_sqrt_positive_partunused-symbol
- lingbot_map/aggregator/stream.py:Blockunused-import
- lingbot_map/heads/camera_head.py:mathunused-import
- lingbot_map/heads/camera_head.py:npunused-import
- lingbot_map/heads/camera_head.py:Funused-import
- lingbot_map/heads/dpt_head.py:osunused-import
- lingbot_map/heads/dpt_head.py:Dictunused-import
- lingbot_map/heads/utils.py:nnunused-import
The code number leaves out tests, fixtures, docs, examples, data files, styles, translations and vendored code.
Largest clones in the code
- 287 lines in 2 placespython1,708 tokens
527# Phase 1: Process scale frames together 528# These frames get bidirectional attention among themselves via scale token 529logger.info(f'Processing {scale_frames} scale frames...') 530scale_images = images[:, :scale_frames].to(_model_device, non_blocking=True) 531scale_output = self.forward( 532 scale_images, 533 num_frame_for_scale=scale_frames, 534 num_frame_per_block=scale_frames, # Process all scale frames as one block 535 causal_inference=True, 536)First 10 of 287 lines.
- 180 lines in 2 placespython1,411 tokens
820# Scale from depth — aggregate across all paired keyframes in overlap. 821s_ab = unit_s.clone() 822da = prev_pred.get("depth") 823db = curr_pred.get("depth") 824if (da is not None and db is not None 825 and int(prev_depth_idx.max().item()) < da.shape[1] 826 and int(curr_depth_idx.max().item()) < db.shape[1]): 827 s_ab = GCTStream._depth_ratio_scale( 828 da[:, prev_depth_idx, ..., 0], 829 db[:, curr_depth_idx, ..., 0],First 10 of 180 lines.
- 163 lines in 2 placespython1,293 tokens
346non-keyframe processing in keyframe-based streaming inference. 347 348Args: 349 skip: If True, subsequent forward passes will not append KV to cache. 350""" 351if hasattr(self.aggregator, 'kv_cache') and self.aggregator.kv_cache is not None: 352 self.aggregator.kv_cache["_skip_append"] = skip 353# FlashInfer manager 354if hasattr(self.aggregator, 'kv_cache_manager') and self.aggregator.kv_cache_manager is not None: 355 self.aggregator.kv_cache_manager._skip_append = skipFirst 10 of 163 lines.
7 more
- 241 lines in 2 placespython1,218 tokens
- 211 lines in 2 placespython1,190 tokens
- 216 lines in 2 placespython1,110 tokens
- 113 lines in 2 placespython845 tokens
- 36 lines in 2 placespython286 tokens
- 24 lines in 2 placespython284 tokens
- 50 lines in 2 placespython273 tokens
Largest clones over all files, tests and data included
- 287 lines in 2 placespython1,708 tokens
527# Phase 1: Process scale frames together 528# These frames get bidirectional attention among themselves via scale token 529logger.info(f'Processing {scale_frames} scale frames...') 530scale_images = images[:, :scale_frames].to(_model_device, non_blocking=True) 531scale_output = self.forward( 532 scale_images, 533 num_frame_for_scale=scale_frames, 534 num_frame_per_block=scale_frames, # Process all scale frames as one block 535 causal_inference=True, 536)First 10 of 287 lines.
- 180 lines in 2 placespython1,411 tokens
820# Scale from depth — aggregate across all paired keyframes in overlap. 821s_ab = unit_s.clone() 822da = prev_pred.get("depth") 823db = curr_pred.get("depth") 824if (da is not None and db is not None 825 and int(prev_depth_idx.max().item()) < da.shape[1] 826 and int(curr_depth_idx.max().item()) < db.shape[1]): 827 s_ab = GCTStream._depth_ratio_scale( 828 da[:, prev_depth_idx, ..., 0], 829 db[:, curr_depth_idx, ..., 0],First 10 of 180 lines.
- 163 lines in 2 placespython1,293 tokens
346non-keyframe processing in keyframe-based streaming inference. 347 348Args: 349 skip: If True, subsequent forward passes will not append KV to cache. 350""" 351if hasattr(self.aggregator, 'kv_cache') and self.aggregator.kv_cache is not None: 352 self.aggregator.kv_cache["_skip_append"] = skip 353# FlashInfer manager 354if hasattr(self.aggregator, 'kv_cache_manager') and self.aggregator.kv_cache_manager is not None: 355 self.aggregator.kv_cache_manager._skip_append = skipFirst 10 of 163 lines.
- 241 lines in 2 placespython1,218 tokens
- 211 lines in 2 placespython1,190 tokens
By format, code only
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| python | 79 | 28,102 | 99 | 2,671 | 9.5% |
| bash | 12 | 868 | 0 | 0 | 0% |
| javascript | 1 | 829 | 0 | 0 | 0% |
| perl | 1 | 168 | 0 | 0 | 0% |
| cpp | 1 | 89 | 0 | 0 | 0% |
By format, all files
| Format | Files | Lines | Clones | Duplicated lines | Duplication |
|---|---|---|---|---|---|
| python | 81 | 28,225 | 101 | 2,686 | 9.52% |
| markdown | 3 | 1,950 | 5 | 55 | 2.82% |
| bash | 15 | 1,048 | 3 | 22 | 2.1% |
| yaml | 9 | 242 | 2 | 52 | 21.49% |
| javascript | 1 | 829 | 0 | 0 | 0% |
| css | 1 | 477 | 0 | 0 | 0% |
| txt | 1 | 201 | 0 | 0 | 0% |
| perl | 1 | 168 | 0 | 0 | 0% |
| text | 3 | 110 | 0 | 0 | 0% |
| cpp | 1 | 89 | 0 | 0 | 0% |
Trending appearances
| Day | Rank | Stars | Files | Lines | Clones | All files | Code | Health | Commit |
|---|---|---|---|---|---|---|---|---|---|
| Oct 10, 2026 | #6 | 17,789 (+110) | 118 | 33,442 | 111 | 8.42% | 8.89% | D 52.4 | 8fdf984 |
Want this for your own project? Install jscpd and run jscpd ., or measure it the way the baselines were measured.