argus-uq 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. argus_uq-0.1.0/CITATION.cff +38 -0
  2. argus_uq-0.1.0/DATA_CARD.md +152 -0
  3. argus_uq-0.1.0/LICENSE +21 -0
  4. argus_uq-0.1.0/LICENSE-DATA +19 -0
  5. argus_uq-0.1.0/MANIFEST.in +5 -0
  6. argus_uq-0.1.0/NOTICES.md +71 -0
  7. argus_uq-0.1.0/PKG-INFO +233 -0
  8. argus_uq-0.1.0/README.md +149 -0
  9. argus_uq-0.1.0/data_release/README.md +106 -0
  10. argus_uq-0.1.0/data_release/derived/ause_winners.csv +17 -0
  11. argus_uq-0.1.0/data_release/derived/ause_winners_closed.csv +13 -0
  12. argus_uq-0.1.0/data_release/derived/bootstrap_ci.csv +2593 -0
  13. argus_uq-0.1.0/data_release/derived/bootstrap_ci_closed.csv +577 -0
  14. argus_uq-0.1.0/data_release/derived/cell_winners.csv +17 -0
  15. argus_uq-0.1.0/data_release/derived/cell_winners_closed.csv +13 -0
  16. argus_uq-0.1.0/data_release/derived/conformal_disks.csv +7201 -0
  17. argus_uq-0.1.0/data_release/derived/conformal_disks_closed.csv +5401 -0
  18. argus_uq-0.1.0/data_release/derived/conformal_disks_summary.csv +145 -0
  19. argus_uq-0.1.0/data_release/derived/conformal_disks_summary_closed.csv +109 -0
  20. argus_uq-0.1.0/data_release/derived/cross_cell_rho.csv +17 -0
  21. argus_uq-0.1.0/data_release/derived/cross_cell_rho_closed.csv +13 -0
  22. argus_uq-0.1.0/data_release/derived/cross_cell_rho_pairs.csv +121 -0
  23. argus_uq-0.1.0/data_release/derived/cross_cell_rho_pairs_closed.csv +67 -0
  24. argus_uq-0.1.0/data_release/derived/cross_cell_rho_stats.csv +2 -0
  25. argus_uq-0.1.0/data_release/derived/cross_cell_rho_stats_closed.csv +2 -0
  26. argus_uq-0.1.0/data_release/derived/cross_open_closed_rho.csv +13 -0
  27. argus_uq-0.1.0/data_release/derived/family_best_per_cell.csv +113 -0
  28. argus_uq-0.1.0/data_release/derived/family_best_per_cell_closed.csv +49 -0
  29. argus_uq-0.1.0/data_release/derived/family_means.csv +113 -0
  30. argus_uq-0.1.0/data_release/derived/family_means_closed.csv +49 -0
  31. argus_uq-0.1.0/data_release/derived/method_leaderboard.csv +28 -0
  32. argus_uq-0.1.0/data_release/derived/method_leaderboard_closed.csv +9 -0
  33. argus_uq-0.1.0/data_release/derived/nan_audit.csv +31 -0
  34. argus_uq-0.1.0/data_release/derived/nan_audit_closed.csv +1 -0
  35. argus_uq-0.1.0/data_release/derived/significance_pairs.csv +49 -0
  36. argus_uq-0.1.0/data_release/derived/significance_pairs_closed.csv +37 -0
  37. argus_uq-0.1.0/data_release/derived/tuning_deltas.csv +28 -0
  38. argus_uq-0.1.0/data_release/derived/tuning_deltas_closed.csv +1 -0
  39. argus_uq-0.1.0/data_release/manifest.json +66 -0
  40. argus_uq-0.1.0/data_release/panel_drops.json +32 -0
  41. argus_uq-0.1.0/data_release/per_item_full/GemxOSG.parquet +0 -0
  42. argus_uq-0.1.0/data_release/per_item_full/GemxSP.parquet +0 -0
  43. argus_uq-0.1.0/data_release/per_item_full/GemxUIV.parquet +0 -0
  44. argus_uq-0.1.0/data_release/per_item_full/GemxV2.parquet +0 -0
  45. argus_uq-0.1.0/data_release/per_item_full/OAIxOSG.parquet +0 -0
  46. argus_uq-0.1.0/data_release/per_item_full/OAIxSP.parquet +0 -0
  47. argus_uq-0.1.0/data_release/per_item_full/OAIxUIV.parquet +0 -0
  48. argus_uq-0.1.0/data_release/per_item_full/OAIxV2.parquet +0 -0
  49. argus_uq-0.1.0/data_release/per_item_full/PTxOSG.parquet +0 -0
  50. argus_uq-0.1.0/data_release/per_item_full/PTxSP.parquet +0 -0
  51. argus_uq-0.1.0/data_release/per_item_full/PTxV2.parquet +0 -0
  52. argus_uq-0.1.0/data_release/per_item_full/PxUIV.parquet +0 -0
  53. argus_uq-0.1.0/data_release/per_item_full/Q72xOSG.parquet +0 -0
  54. argus_uq-0.1.0/data_release/per_item_full/Q72xSP.parquet +0 -0
  55. argus_uq-0.1.0/data_release/per_item_full/Q72xUIV.parquet +0 -0
  56. argus_uq-0.1.0/data_release/per_item_full/Q72xV2.parquet +0 -0
  57. argus_uq-0.1.0/data_release/per_item_full/Q7xOSG.parquet +0 -0
  58. argus_uq-0.1.0/data_release/per_item_full/Q7xSP.parquet +0 -0
  59. argus_uq-0.1.0/data_release/per_item_full/Q7xUIV.parquet +0 -0
  60. argus_uq-0.1.0/data_release/per_item_full/Q7xV2.parquet +0 -0
  61. argus_uq-0.1.0/data_release/per_item_full/SonxOSG.parquet +0 -0
  62. argus_uq-0.1.0/data_release/per_item_full/SonxSP.parquet +0 -0
  63. argus_uq-0.1.0/data_release/per_item_full/SonxUIV.parquet +0 -0
  64. argus_uq-0.1.0/data_release/per_item_full/SonxV2.parquet +0 -0
  65. argus_uq-0.1.0/data_release/per_item_full/UIxOSG.parquet +0 -0
  66. argus_uq-0.1.0/data_release/per_item_full/UIxSP.parquet +0 -0
  67. argus_uq-0.1.0/data_release/per_item_full/UIxUIV.parquet +0 -0
  68. argus_uq-0.1.0/data_release/per_item_full/UIxV2.parquet +0 -0
  69. argus_uq-0.1.0/data_release/subsets/osg_564.json +576 -0
  70. argus_uq-0.1.0/data_release/subsets/ssp_300.json +368 -0
  71. argus_uq-0.1.0/data_release/subsets/ssv2_300.json +360 -0
  72. argus_uq-0.1.0/data_release/subsets/uiv_501.json +511 -0
  73. argus_uq-0.1.0/pyproject.toml +153 -0
  74. argus_uq-0.1.0/setup.cfg +4 -0
  75. argus_uq-0.1.0/setup.py +29 -0
  76. argus_uq-0.1.0/src/argus_uq/__init__.py +24 -0
  77. argus_uq-0.1.0/src/argus_uq/_version.py +3 -0
  78. argus_uq-0.1.0/src/argus_uq/analysis/__init__.py +3 -0
  79. argus_uq-0.1.0/src/argus_uq/api.py +338 -0
  80. argus_uq-0.1.0/src/argus_uq/cell.py +89 -0
  81. argus_uq-0.1.0/src/argus_uq/cli/__init__.py +9 -0
  82. argus_uq-0.1.0/src/argus_uq/cli/capture.py +87 -0
  83. argus_uq-0.1.0/src/argus_uq/cli/normalize.py +67 -0
  84. argus_uq-0.1.0/src/argus_uq/cli/prepare_data.py +307 -0
  85. argus_uq-0.1.0/src/argus_uq/cli/reproduce.py +147 -0
  86. argus_uq-0.1.0/src/argus_uq/cli/score.py +71 -0
  87. argus_uq-0.1.0/src/argus_uq/configs/__init__.py +1 -0
  88. argus_uq-0.1.0/src/argus_uq/conformal/__init__.py +86 -0
  89. argus_uq-0.1.0/src/argus_uq/conformal/base.py +82 -0
  90. argus_uq-0.1.0/src/argus_uq/conformal/crc.py +130 -0
  91. argus_uq-0.1.0/src/argus_uq/conformal/disk_cqr.py +114 -0
  92. argus_uq-0.1.0/src/argus_uq/conformal/disk_fixed.py +79 -0
  93. argus_uq-0.1.0/src/argus_uq/conformal/disk_normalized.py +92 -0
  94. argus_uq-0.1.0/src/argus_uq/data/__init__.py +98 -0
  95. argus_uq-0.1.0/src/argus_uq/data/cells.py +137 -0
  96. argus_uq-0.1.0/src/argus_uq/data/derived.py +75 -0
  97. argus_uq-0.1.0/src/argus_uq/data/per_item.py +53 -0
  98. argus_uq-0.1.0/src/argus_uq/envs/__init__.py +28 -0
  99. argus_uq-0.1.0/src/argus_uq/envs/base.py +138 -0
  100. argus_uq-0.1.0/src/argus_uq/envs/osworld_g.py +84 -0
  101. argus_uq-0.1.0/src/argus_uq/envs/screenspot_pro.py +74 -0
  102. argus_uq-0.1.0/src/argus_uq/envs/screenspot_v2.py +98 -0
  103. argus_uq-0.1.0/src/argus_uq/envs/ui_vision.py +77 -0
  104. argus_uq-0.1.0/src/argus_uq/estimators/__init__.py +62 -0
  105. argus_uq-0.1.0/src/argus_uq/estimators/attention.py +243 -0
  106. argus_uq-0.1.0/src/argus_uq/estimators/base.py +119 -0
  107. argus_uq-0.1.0/src/argus_uq/estimators/consistency.py +164 -0
  108. argus_uq-0.1.0/src/argus_uq/estimators/density.py +385 -0
  109. argus_uq-0.1.0/src/argus_uq/estimators/logit.py +124 -0
  110. argus_uq-0.1.0/src/argus_uq/estimators/prompt.py +96 -0
  111. argus_uq-0.1.0/src/argus_uq/estimators/sampling.py +226 -0
  112. argus_uq-0.1.0/src/argus_uq/estimators/vlm_native.py +154 -0
  113. argus_uq-0.1.0/src/argus_uq/factory.py +65 -0
  114. argus_uq-0.1.0/src/argus_uq/manager.py +184 -0
  115. argus_uq-0.1.0/src/argus_uq/models/__init__.py +51 -0
  116. argus_uq-0.1.0/src/argus_uq/models/base.py +125 -0
  117. argus_uq-0.1.0/src/argus_uq/models/closed_source/__init__.py +7 -0
  118. argus_uq-0.1.0/src/argus_uq/models/closed_source/anthropic.py +84 -0
  119. argus_uq-0.1.0/src/argus_uq/models/closed_source/base.py +156 -0
  120. argus_uq-0.1.0/src/argus_uq/models/closed_source/google.py +84 -0
  121. argus_uq-0.1.0/src/argus_uq/models/closed_source/openai.py +100 -0
  122. argus_uq-0.1.0/src/argus_uq/models/os_atlas.py +20 -0
  123. argus_uq-0.1.0/src/argus_uq/models/points_gui.py +20 -0
  124. argus_uq-0.1.0/src/argus_uq/models/qwen25_vl.py +35 -0
  125. argus_uq-0.1.0/src/argus_uq/models/ui_tars.py +18 -0
  126. argus_uq-0.1.0/src/argus_uq/models/whitebox.py +154 -0
  127. argus_uq-0.1.0/src/argus_uq/records.py +127 -0
  128. argus_uq-0.1.0/src/argus_uq/scoring/__init__.py +24 -0
  129. argus_uq-0.1.0/src/argus_uq/scoring/cached.py +115 -0
  130. argus_uq-0.1.0/src/argus_uq/scoring/multi_seed.py +84 -0
  131. argus_uq-0.1.0/src/argus_uq/stat_calculators/__init__.py +14 -0
  132. argus_uq-0.1.0/src/argus_uq/stat_calculators/base.py +84 -0
  133. argus_uq-0.1.0/src/argus_uq/ue_metrics/__init__.py +96 -0
  134. argus_uq-0.1.0/src/argus_uq/ue_metrics/_helpers.py +62 -0
  135. argus_uq-0.1.0/src/argus_uq/ue_metrics/aurc.py +37 -0
  136. argus_uq-0.1.0/src/argus_uq/ue_metrics/auroc.py +50 -0
  137. argus_uq-0.1.0/src/argus_uq/ue_metrics/ause.py +67 -0
  138. argus_uq-0.1.0/src/argus_uq/ue_metrics/bootstrap.py +35 -0
  139. argus_uq-0.1.0/src/argus_uq/ue_metrics/brier.py +24 -0
  140. argus_uq-0.1.0/src/argus_uq/ue_metrics/ece.py +37 -0
  141. argus_uq-0.1.0/src/argus_uq/ue_metrics/isotonic.py +156 -0
  142. argus_uq-0.1.0/src/argus_uq/ue_metrics/prr.py +77 -0
  143. argus_uq-0.1.0/src/argus_uq/ue_metrics/selective.py +29 -0
  144. argus_uq-0.1.0/src/argus_uq/ue_metrics/spearman.py +24 -0
  145. argus_uq-0.1.0/src/argus_uq/utils/__init__.py +21 -0
  146. argus_uq-0.1.0/src/argus_uq/utils/paths.py +63 -0
  147. argus_uq-0.1.0/src/argus_uq.egg-info/PKG-INFO +233 -0
  148. argus_uq-0.1.0/src/argus_uq.egg-info/SOURCES.txt +169 -0
  149. argus_uq-0.1.0/src/argus_uq.egg-info/dependency_links.txt +1 -0
  150. argus_uq-0.1.0/src/argus_uq.egg-info/entry_points.txt +5 -0
  151. argus_uq-0.1.0/src/argus_uq.egg-info/requires.txt +46 -0
  152. argus_uq-0.1.0/src/argus_uq.egg-info/top_level.txt +1 -0
  153. argus_uq-0.1.0/tests/test_api_real_data.py +157 -0
  154. argus_uq-0.1.0/tests/test_cli.py +94 -0
  155. argus_uq-0.1.0/tests/test_conformal.py +169 -0
  156. argus_uq-0.1.0/tests/test_envs.py +154 -0
  157. argus_uq-0.1.0/tests/test_estimators_attention.py +63 -0
  158. argus_uq-0.1.0/tests/test_estimators_consistency.py +81 -0
  159. argus_uq-0.1.0/tests/test_estimators_density.py +120 -0
  160. argus_uq-0.1.0/tests/test_estimators_logit.py +86 -0
  161. argus_uq-0.1.0/tests/test_estimators_prompt.py +38 -0
  162. argus_uq-0.1.0/tests/test_estimators_sampling.py +115 -0
  163. argus_uq-0.1.0/tests/test_estimators_vlm_native.py +72 -0
  164. argus_uq-0.1.0/tests/test_factory_registry.py +118 -0
  165. argus_uq-0.1.0/tests/test_imports.py +61 -0
  166. argus_uq-0.1.0/tests/test_listing1.py +78 -0
  167. argus_uq-0.1.0/tests/test_manager.py +81 -0
  168. argus_uq-0.1.0/tests/test_metrics.py +261 -0
  169. argus_uq-0.1.0/tests/test_models.py +129 -0
  170. argus_uq-0.1.0/tests/test_scoring.py +70 -0
  171. argus_uq-0.1.0/tests/test_vendor_isolation.py +62 -0
@@ -0,0 +1,38 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use this software or data, please cite the paper below."
3
+ title: "argus-uq"
4
+ type: software
5
+ version: 0.1.0
6
+ license: MIT
7
+ repository-code: "https://github.com/divake/argus-uq"
8
+ authors: &authors
9
+ - family-names: Kumar
10
+ given-names: Divake
11
+ affiliation: University of Illinois Chicago
12
+ - family-names: Tayebati
13
+ given-names: Sina
14
+ affiliation: University of Illinois Chicago
15
+ - family-names: Naik
16
+ given-names: Devashri
17
+ affiliation: University of Illinois Chicago
18
+ - family-names: Rios
19
+ given-names: Amanda Sofie
20
+ affiliation: Intel Labs
21
+ - family-names: Ahuja
22
+ given-names: Nilesh
23
+ affiliation: Intel Labs
24
+ - family-names: Tickoo
25
+ given-names: Omesh
26
+ affiliation: Intel Labs
27
+ - family-names: Krishnan
28
+ given-names: Ranganath
29
+ affiliation: Capital One AI Labs
30
+ - family-names: Trivedi
31
+ given-names: Amit Ranjan
32
+ affiliation: University of Illinois Chicago
33
+ preferred-citation:
34
+ type: conference-paper
35
+ title: "Argus: A Cross-Regime Study of Uncertainty Quantification Transferability in Single-Step GUI Grounding"
36
+ authors: *authors
37
+ collection-title: "NeurIPS 2026 Evaluations and Datasets Track"
38
+ year: 2026
@@ -0,0 +1,152 @@
1
+ # Data Card - argus-uq
2
+
3
+ Argus-UQ ships per-item uncertainty quantification scores for 28 cells
4
+ (16 open-weight + 12 closed-API) from the paper "Argus: A Cross-Regime
5
+ Study of Uncertainty Quantification Transferability in Single-Step GUI
6
+ Grounding" (NeurIPS 2026 Evaluations and Datasets Track).
7
+
8
+ ## 1. Motivation
9
+
10
+ ### 1.1 Purpose
11
+
12
+ Argus-UQ exists to make UQ methods comparable across vision-language
13
+ models, datasets, and access tiers under one protocol. Users can
14
+ load any cell, score any of the 27 (open-source) or 8 (closed-source)
15
+ UQ methods, and reproduce every paper number from
16
+ ``data_release/derived/`` without re-running inference.
17
+
18
+ ### 1.2 Funding / acknowledgement
19
+
20
+ Created by Divake Kumar, Sina Tayebati, Devashri Naik (University of
21
+ Illinois Chicago); Amanda Sofie Rios, Nilesh Ahuja, Omesh Tickoo (Intel
22
+ Labs); Ranganath Krishnan (Capital One AI Labs); Amit Ranjan Trivedi
23
+ (University of Illinois Chicago). Funding and competing interests are
24
+ stated in the paper.
25
+
26
+ ## 2. Composition
27
+
28
+ ### 2.1 Instances
29
+
30
+ Each instance is one (model, dataset, item) triple with:
31
+
32
+ - a stable item id
33
+ - a binary correctness label (whether the agent's greedy click landed
34
+ in the gold bbox)
35
+ - the normalised distance from the predicted click to the bbox
36
+ - 27 (open-source) or 8 (closed-source) per-method UQ scores
37
+
38
+ There are 28 cells (model x dataset combinations) and 19,538 instances
39
+ across all cells (14,749 open-weight, 4,789 closed-API).
40
+
41
+ ### 2.2 Cell catalog
42
+
43
+ **Open-source (16 cells)**: 4 models x 4 datasets
44
+
45
+ | Models | Datasets |
46
+ |---|---|
47
+ | Q7 = Qwen2.5-VL-7B-Instruct | V2 = ScreenSpot-v2 (1,272 items) |
48
+ | Q72 = Qwen2.5-VL-72B-Instruct-AWQ | SP = ScreenSpot-Pro (1,581 items) |
49
+ | UI = UI-TARS-1.5-7B | OSG = OSWorld-G non-refusal subset (564 items) |
50
+ | PT = POINTS-GUI-G-8B | UIV = UI-Vision Element Grounding 501-item subset |
51
+
52
+ **Closed-source (12 cells)**: 3 vendors x 4 datasets (V2 / SP / OSG /
53
+ UIV; V2 and SP use the 300-item subsets)
54
+
55
+ | Vendors |
56
+ |---|
57
+ | OAI = OpenAI GPT-5.4 |
58
+ | Son = Anthropic Claude Sonnet 4.6 |
59
+ | Gem = Google Gemini 3.1 Pro |
60
+
61
+ ### 2.3 Method panels
62
+
63
+ Open-source cells carry **27 method scores per item** spanning seven
64
+ families: logit (5), sampling (6), consistency (3), density (5),
65
+ attention (3), prompt (3), VLM-native (2).
66
+
67
+ Closed-source cells carry **8 OS-identical method scores per item**:
68
+ self_consistency, semantic_entropy, lexical_similarity, ccp,
69
+ verbalized_1s, verbalized_2s, hedge, imghedge. The other 19 methods
70
+ are open-source-only because the closed APIs do not expose token
71
+ logprobs, hidden states, or attention tensors.
72
+
73
+ ## 3. Collection process
74
+
75
+ ### 3.1 Open-source
76
+
77
+ - Models: HuggingFace transformers; loaded onto NVIDIA RTX A6000 Ada
78
+ (48 GB) with bfloat16 precision (or int4-AWQ for the 72B Qwen).
79
+ - Inference: per item, run greedy decode + N=5 stochastic samples
80
+ (temperature=1.0, top_p=0.95) + 3 prompt probes (P(True),
81
+ Verbalized-1S, Verbalized-2S) + 3 paraphrased-instruction HEDGE
82
+ variants + 3 image-perturbed IMG-HEDGE variants. Capture per-token
83
+ logprobs, per-token last-layer hidden states, and per-step
84
+ per-layer per-head attention tensors during greedy decoding.
85
+ - Scoring: Phase B reads cached records, fits trainable methods
86
+ (SAPLMA, SEP, Mahalanobis, Mahalanobis-RMD, Mahalanobis-RDE) on a
87
+ calibration split, and scores the 27 methods on the test split.
88
+
89
+ ### 3.2 Closed-source
90
+
91
+ - API surface: vendor-isolated agents under
92
+ ``argus_uq.models.closed_source.{openai, anthropic, google}``. The
93
+ released classes hold configuration only; generation methods raise
94
+ ``NotImplementedError``.
95
+ - Per-item calls: 16 (greedy + 5 samples + 3 hedge_text + 3
96
+ hedge_image + p_true + verbalized_1s + 2 stages of verbalized_2s).
97
+ - Per-cell budget: ~300-564 items x 16 calls = ~5k-9k API calls per
98
+ cell. ~$50-200 per cell at 2026 prices.
99
+
100
+ ## 4. Preprocessing / cleaning / labelling
101
+
102
+ - Click parsing: Qwen2.5-VL tool-call output has its coordinates in
103
+ the model-resized image space; each agent's parser rescales to
104
+ original-image space using the smart_resize ratio.
105
+ - Closed-source vendor renames (to match the open-source method names):
106
+ - ``coord_agreement`` -> ``ccp``
107
+ - ``hedge_text`` -> ``hedge``
108
+ - ``hedge_image`` -> ``imghedge``
109
+ - Closed-source ``records.jsonl`` files contain no API keys. Local
110
+ image paths are replaced with dataset-relative paths or ``<cache>/``.
111
+ Model responses are verbatim and can quote text visible in the public
112
+ dataset screenshots, such as email addresses and file paths.
113
+
114
+ ## 5. Uses
115
+
116
+ ### 5.1 Recommended
117
+
118
+ - Reproducing the paper's headline AUROC / PRR / AUSE / ECE numbers.
119
+ - Comparing two UQ methods on a fixed cell (and confidence interval).
120
+ - Constructing deployable conformal click-disks for selective
121
+ abstention in production grounding agents.
122
+ - Ablating UQ methods on a custom set of records (via
123
+ ``argus_uq.manager.ScoringManager``).
124
+
125
+ ### 5.2 Out of scope
126
+
127
+ - **Multi-step trajectory UQ.** Argus-UQ benchmarks per-step
128
+ grounding only.
129
+ - **Inference-from-scratch closed-source experiments.** Vendor agents
130
+ in this library do not implement full inference; the bundled
131
+ closed-source records are the canonical artefact.
132
+ - **Fine-tuning models.** Argus-UQ scores frozen VLMs.
133
+
134
+ ## 6. Distribution
135
+
136
+ ### 6.1 License
137
+
138
+ - Library code: MIT (``LICENSE``).
139
+ - Released per-item records, derived CSVs, and subset definitions:
140
+ CC-BY-4.0 (``LICENSE-DATA``).
141
+ - Underlying datasets carry their own upstream licenses
142
+ (Apache 2.0 / research / MIT); see ``NOTICES.md``.
143
+
144
+ ### 6.2 Where it lives
145
+
146
+ The code repository listed in ``pyproject.toml`` and ``CITATION.cff``
147
+ holds the code and all of ``data_release/``.
148
+
149
+ ## 7. Maintenance
150
+
151
+ The repository is the system of record. Issues, fixes, and method
152
+ additions land via PRs.
argus_uq-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 The Argus-UQ Authors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,19 @@
1
+ Argus-UQ released datasets and per-item records are licensed under the
2
+ Creative Commons Attribution 4.0 International License (CC-BY-4.0).
3
+
4
+ You are free to:
5
+ - Share -- copy and redistribute the material in any medium or format.
6
+ - Adapt -- remix, transform, and build upon the material for any purpose,
7
+ even commercially.
8
+
9
+ Under the following terms:
10
+ - Attribution -- You must give appropriate credit, provide a link to the
11
+ license, and indicate if changes were made.
12
+
13
+ Full license text: https://creativecommons.org/licenses/by/4.0/legalcode
14
+
15
+ Note: this license covers the authors' own contributions (UQ scores, derived
16
+ tables, subset definitions). The underlying datasets carry their own upstream
17
+ licenses, and text or annotations taken from them (instructions, target boxes,
18
+ item metadata) stay under those licenses. Vendor API responses stay subject to
19
+ the vendors' terms. See NOTICES.md for the per-source attribution.
@@ -0,0 +1,5 @@
1
+ include CITATION.cff DATA_CARD.md setup.py
2
+ recursive-include data_release/per_item_full *.parquet
3
+ recursive-include data_release/derived *.csv
4
+ recursive-include data_release/subsets *.json
5
+ include data_release/manifest.json data_release/panel_drops.json data_release/README.md
@@ -0,0 +1,71 @@
1
+ # NOTICES
2
+
3
+ `argus-uq` builds on prior open-source work and cites the canonical
4
+ references for every UQ method and metric implemented in the package.
5
+
6
+ ## Library architecture inspiration
7
+
8
+ - **lm-polygraph** (Fadeeva et al. 2024). https://github.com/IINemo/lm-polygraph.
9
+ MIT. We adopt the StatCalculator + Estimator + UEManager design pattern.
10
+ - **torch-uncertainty** (Lafage & Laurent 2025). https://github.com/ENSTA-U2IS-AI/torch-uncertainty.
11
+ Apache 2.0. Packaging convention (`pyproject.toml` extras) inspired this repo.
12
+
13
+ ## UQ method canonical references (also cited in each estimator's docstring)
14
+
15
+ - MSP, perplexity, mean token entropy, sequence probability: standard
16
+ logit baselines (Hendrycks & Gimpel 2017; Malinin & Gales 2018).
17
+ - Self-consistency: Wang et al. 2023 (arXiv 2203.11171).
18
+ - Semantic entropy: Kuhn et al. 2023; Farquhar et al. *Nature* 2024.
19
+ - MCSE / MCNSE: Malinin & Gales 2021.
20
+ - Lexical similarity: Fomicheva et al. 2020.
21
+ - CCP / CoCoA / CoCoA-1MCA: Vashurin et al. 2025 (AAAI).
22
+ - Mahalanobis: Lee et al. 2018.
23
+ - Mahalanobis-RMD: Ren et al. 2023 (arXiv 2209.15558).
24
+ - Mahalanobis-RDE: KernelPCA + MinCovDet (Rousseeuw 1984) on the
25
+ positive class.
26
+ - SAPLMA: Azaria & Mitchell 2023 (EMNLP).
27
+ - SEP (Semantic Entropy Probes): Kossen et al. 2024 (arXiv 2406.15927).
28
+ - FOCUS: Zhang et al. 2023.
29
+ - RAUQ: Vazhentsev et al. 2023.
30
+ - UQAC: attention-aggregation method (2025).
31
+ - P(True): Kadavath et al. 2022 (arXiv 2207.05221).
32
+ - Verbalized 1S: Tian et al. 2023 (arXiv 2305.14975).
33
+ - Verbalized 2S: Xiong et al. 2024 (arXiv 2306.13063).
34
+ - HEDGE / IMG-HEDGE: Gautam et al. 2025.
35
+ - Inductive split CP: Vovk et al. 2005; Angelopoulos & Bates 2023.
36
+ - Conformalized quantile regression (CQR): Romano et al. 2019.
37
+ - Conformal Risk Control: Bates et al. 2024.
38
+
39
+ ## Metric references
40
+
41
+ - AUROC: Hendrycks & Gimpel 2017 (incorrectness-prediction usage).
42
+ - PRR (Prediction-Rejection Ratio): Malinin & Gales 2018.
43
+ - AUSE: Ilg et al. 2018 (ECCV; per-item-error sparsification).
44
+ - ECE / MCE: Guo et al. 2017 (ICML).
45
+ - Brier score: Brier 1950.
46
+ - Selective accuracy at coverage: Geifman & El-Yaniv 2017.
47
+ - Risk-Coverage AUC: standard selective-prediction usage.
48
+
49
+ ## Datasets
50
+
51
+ Licenses below are as declared by the upstream hosts.
52
+
53
+ - **ScreenSpot-v2** (Apache 2.0). https://huggingface.co/datasets/OS-Copilot/ScreenSpot-v2
54
+ - **ScreenSpot-Pro** (MIT). https://huggingface.co/datasets/likaixin/ScreenSpot-Pro
55
+ - **OSWorld-G** non-refusal subset. https://github.com/xlang-ai/OSWorld-G
56
+ (repository: Apache 2.0; the Hugging Face copy `MMInstruction/OSWorld-G`
57
+ declares no license).
58
+ - **UI-Vision Element Grounding** 501-item subset (MIT). https://huggingface.co/datasets/ServiceNow/ui-vision
59
+
60
+ This repository does not redistribute any screenshots. It does redistribute
61
+ item identifiers, and `data_release/closed_source_records/` also contains the
62
+ instruction text, target boxes and item metadata from ScreenSpot-v2,
63
+ ScreenSpot-Pro, OSWorld-G and UI-Vision, under the upstream terms above. To run anything
64
+ that needs images, obtain the datasets from their upstream sources.
65
+
66
+ ## Closed-source APIs
67
+
68
+ The closed-source matrix uses commercial APIs from OpenAI, Anthropic,
69
+ and Google. Vendor SDK usage is governed by their respective Terms of
70
+ Service. We release request / response records; we do not redistribute
71
+ model weights.
@@ -0,0 +1,233 @@
1
+ Metadata-Version: 2.4
2
+ Name: argus-uq
3
+ Version: 0.1.0
4
+ Summary: Uncertainty quantification benchmark for VLM GUI grounding agents.
5
+ Author: Divake Kumar, Sina Tayebati, Devashri Naik, Amanda Sofie Rios, Nilesh Ahuja, Omesh Tickoo, Ranganath Krishnan, Amit Ranjan Trivedi
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 The Argus-UQ Authors
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: Homepage, https://github.com/divake/argus-uq
29
+ Keywords: uncertainty quantification,vision-language models,GUI grounding,computer-use agents,conformal prediction,benchmark
30
+ Classifier: Development Status :: 4 - Beta
31
+ Classifier: Intended Audience :: Science/Research
32
+ Classifier: License :: OSI Approved :: MIT License
33
+ Classifier: Operating System :: OS Independent
34
+ Classifier: Programming Language :: Python :: 3
35
+ Classifier: Programming Language :: Python :: 3.10
36
+ Classifier: Programming Language :: Python :: 3.11
37
+ Classifier: Programming Language :: Python :: 3.12
38
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
39
+ Requires-Python: <3.13,>=3.10
40
+ Description-Content-Type: text/markdown
41
+ License-File: LICENSE
42
+ License-File: LICENSE-DATA
43
+ License-File: NOTICES.md
44
+ Requires-Dist: numpy<2.0,>=1.26
45
+ Requires-Dist: pandas<3.0,>=2.2
46
+ Requires-Dist: scipy<2.0,>=1.13
47
+ Requires-Dist: scikit-learn<2.0,>=1.5
48
+ Requires-Dist: pyarrow<26,>=16.0
49
+ Requires-Dist: pyyaml>=6.0
50
+ Requires-Dist: omegaconf>=2.3
51
+ Requires-Dist: click<9.0,>=8.1
52
+ Requires-Dist: tqdm>=4.66
53
+ Requires-Dist: pillow>=10.0
54
+ Provides-Extra: whitebox
55
+ Requires-Dist: torch<3.0,>=2.2; extra == "whitebox"
56
+ Requires-Dist: torchvision<1.0,>=0.17; extra == "whitebox"
57
+ Requires-Dist: transformers>=4.45; extra == "whitebox"
58
+ Requires-Dist: accelerate>=1.0; extra == "whitebox"
59
+ Requires-Dist: huggingface-hub>=0.25; extra == "whitebox"
60
+ Requires-Dist: opencv-python-headless>=4.9; extra == "whitebox"
61
+ Provides-Extra: closed
62
+ Requires-Dist: openai>=1.50; extra == "closed"
63
+ Requires-Dist: anthropic>=0.40; extra == "closed"
64
+ Requires-Dist: google-genai>=0.3; extra == "closed"
65
+ Provides-Extra: paper
66
+ Requires-Dist: matplotlib<4.0,>=3.9; extra == "paper"
67
+ Requires-Dist: seaborn>=0.13; extra == "paper"
68
+ Requires-Dist: jinja2>=3.1; extra == "paper"
69
+ Provides-Extra: hydra
70
+ Requires-Dist: hydra-core>=1.3; extra == "hydra"
71
+ Provides-Extra: dev
72
+ Requires-Dist: pytest>=8.0; extra == "dev"
73
+ Requires-Dist: pytest-cov>=5.0; extra == "dev"
74
+ Requires-Dist: ruff>=0.6; extra == "dev"
75
+ Requires-Dist: mypy>=1.10; extra == "dev"
76
+ Requires-Dist: pre-commit>=3.5; extra == "dev"
77
+ Provides-Extra: docs
78
+ Requires-Dist: mkdocs>=1.6; extra == "docs"
79
+ Requires-Dist: mkdocs-material>=9.5; extra == "docs"
80
+ Requires-Dist: mkdocstrings[python]>=0.26; extra == "docs"
81
+ Provides-Extra: all
82
+ Requires-Dist: argus-uq[closed,dev,docs,hydra,paper,whitebox]; extra == "all"
83
+ Dynamic: license-file
84
+
85
+ # argus-uq
86
+
87
+ A Python library for uncertainty quantification on vision-language-model
88
+ GUI grounding agents.
89
+
90
+ `argus-uq` is the first reproducible benchmark library that unifies
91
+ **twenty-seven UQ methods across seven families** (logit, sampling,
92
+ consistency, density, attention-trace, verbalised, VLM-native) on the
93
+ four canonical single-step grounding datasets (ScreenSpot-v2,
94
+ ScreenSpot-Pro, OSWorld-G, UI-Vision) for both **open-weight VLMs**
95
+ (Qwen2.5-VL family, UI-TARS-1.5-7B, POINTS-GUI-G-8B) and
96
+ **closed-API frontier vendors** (OpenAI GPT, Anthropic Claude, Google
97
+ Gemini, paneled across the eight vendor-API-feasible methods that share
98
+ formula identity with the open-weight panel).
99
+
100
+ It loads per-item records and 50-seed metric matrices for **16
101
+ open-weight cells and 12 closed-API cells**, re-scores any of the 27 UQ
102
+ methods on user-supplied grounding records, and emits **deployable
103
+ inductive-conformal click-disks** with formal marginal-coverage
104
+ guarantees in three variants (Disk-Fixed, Disk-Normalized, Disk-CQR).
105
+
106
+ The package accompanies the paper *Argus: A Cross-Regime Study of
107
+ Uncertainty Quantification Transferability in Single-Step GUI Grounding*
108
+ (**NeurIPS 2026 Evaluations and Datasets Track**).
109
+
110
+ ## Install
111
+
112
+ Python 3.10 to 3.12.
113
+
114
+ ```bash
115
+ pip install argus-uq
116
+ ```
117
+
118
+ The wheel bundles the per-item scores, derived tables and subset
119
+ definitions, so `load`, `score`, `conformal_disk` and the CLIs work
120
+ without this repository. The raw closed-source API records
121
+ (`data_release/closed_source_records/`) and the master long CSVs are in
122
+ this repository only; no public call needs them.
123
+
124
+ To work from source:
125
+
126
+ ```bash
127
+ git clone https://github.com/divake/argus-uq
128
+ cd argus-uq
129
+ python -m venv .venv && source .venv/bin/activate
130
+ pip install -e . # core library
131
+ pip install -e .[whitebox] # + HF transformers VLM stack
132
+ pip install -e .[closed] # + closed-source vendor SDKs
133
+ pip install -e .[paper] # + paper-reproducing scripts
134
+ pip install -e .[dev] # + linting and testing
135
+ pip install -e .[all] # everything
136
+ ```
137
+
138
+ To use your own copy of the data, set
139
+ `export ARGUS_DATA_DIR=/path/to/data_release`.
140
+
141
+ ## Quickstart
142
+
143
+ ```python
144
+ import argus_uq
145
+
146
+ # Load a cell - per-item records and per-seed scores from the released
147
+ # artifacts.
148
+ cell = argus_uq.load("PTxOSG") # POINTS-GUI-G x OSWorld-G
149
+
150
+ # Score any of the 27 UQ methods. Returns AUROC, PRR_normalized@0.5, AUSE,
151
+ # AURC, ECE_iso, Brier_iso with bootstrap CIs (multi-seed if seeds=50).
152
+ result = argus_uq.score(cell, method="saplma", seeds=50)
153
+ print(result.auroc, result.auroc_std) # ~0.802, ~0.011
154
+
155
+ # Build a deployable conformal click-disk at marginal coverage 1 - alpha.
156
+ disk = argus_uq.conformal_disk(
157
+ cell,
158
+ plug_in="saplma", # any of the 27 UQ methods or "none"
159
+ alpha=0.10,
160
+ variant="normalized", # "fixed" | "normalized" | "cqr"
161
+ )
162
+ print(disk.radius_pixels, disk.coverage)
163
+ ```
164
+
165
+ ## Reproducing the paper
166
+
167
+ ```bash
168
+ argus_reproduce --list # every table name
169
+ argus_reproduce --table cells # the 16+12 cell catalog
170
+ argus_reproduce --table leaderboard # open-weight mean AUROC across cells
171
+ argus_reproduce --table leaderboard_closed # closed-API mean AUROC across cells
172
+ argus_reproduce --table rho # 16x16 cross-cell Spearman matrix
173
+ argus_reproduce --all # every table
174
+ ```
175
+
176
+ These commands print the released CSVs in `data_release/derived/`, which
177
+ hold the numbers reported in the paper. `argus_uq.score` and
178
+ `argus_uq.conformal_disk` recompute from the per-item scores with the
179
+ package's own random splits. Their AUROC means differ from the CSVs by
180
+ up to about 0.006, the top method of every closed-API cell is unchanged,
181
+ and their AUSE and conformal radii use different conventions
182
+ from the CSVs, so use the CSVs to compare against the paper.
183
+
184
+ `argus_capture` scores raw per-item signals (logprobs, hidden states,
185
+ sample clicks; see `argus_uq.records.Record`). The released parquets hold
186
+ finished scores, not raw signals, so it returns NaN or chance-level
187
+ metrics on them. Use `argus_score` for released cells.
188
+
189
+ ## Layout
190
+
191
+ ```
192
+ src/argus_uq/ importable library
193
+ ├── api.py the 3-entry-point Listing 1 surface
194
+ ├── cell.py Cell dataclass + per-item record loader
195
+ ├── factory.py name -> class registry
196
+ ├── manager.py ScoringManager (topo-orders stat calculators + estimators)
197
+ ├── estimators/ 27 UQ methods (one file per family)
198
+ ├── stat_calculators/ inputs to estimators (greedy, samples, hidden, attention)
199
+ ├── models/ agent abstractions (whitebox HF + closed-source APIs)
200
+ ├── envs/ ScreenSpot-v2, ScreenSpot-Pro, OSWorld-G, UI-Vision
201
+ ├── ue_metrics/ AUROC, PRR, AUSE, AURC, ECE, Brier, isotonic
202
+ ├── conformal/ Disk-Fixed, Disk-Normalized, Disk-CQR, CRC
203
+ ├── analysis/ leaderboard, cross-cell rho, family aggregates
204
+ ├── data/ released-artifact loaders (parquets + CSVs)
205
+ └── utils/ paths, seeds, logging
206
+
207
+ examples/ quickstart.py and two cross-cell examples
208
+ tests/ 225 unit + integration tests + 7 live smoke tests
209
+ data_release/ 16+12 per-item parquets, 29 derived CSVs, 4 subsets
210
+ ```
211
+
212
+ ## License
213
+
214
+ - Code: MIT (`LICENSE`).
215
+ - Released datasets and per-item records: CC-BY-4.0 (`LICENSE-DATA`).
216
+ - Third-party attributions: `NOTICES.md`.
217
+
218
+ ## Citation
219
+
220
+ If you use `argus-uq`, please cite the paper (`CITATION.cff` has the same
221
+ information):
222
+
223
+ ```bibtex
224
+ @inproceedings{kumar2026argus,
225
+ title = {Argus: A Cross-Regime Study of Uncertainty Quantification
226
+ Transferability in Single-Step GUI Grounding},
227
+ author = {Kumar, Divake and Tayebati, Sina and Naik, Devashri and
228
+ Rios, Amanda Sofie and Ahuja, Nilesh and Tickoo, Omesh and
229
+ Krishnan, Ranganath and Trivedi, Amit Ranjan},
230
+ booktitle = {NeurIPS 2026 Evaluations and Datasets Track},
231
+ year = {2026}
232
+ }
233
+ ```