Skip to content

Instantly share code, notes, and snippets.

@echus
Created September 12, 2023 08:18
Show Gist options
  • Select an option

  • Save echus/35dac51206b658f67b7e3b2eba284e20 to your computer and use it in GitHub Desktop.

Select an option

Save echus/35dac51206b658f67b7e3b2eba284e20 to your computer and use it in GitHub Desktop.
Bindfit Vega spec
{
"$schema": "https://vega.github.io/schema/vega/v5.json",
"width": 800,
"height": 400,
"padding": 5,
"data": [
{
"name": "inputData",
"transform": [
{
"type": "fold",
"fields": ["Proton 1", "Proton 2", "Proton 3", "Proton 4"]
},
{
"type": "formula",
"as": "guestOverHost",
"expr": "datum.Guest/datum.Host"
}
],
"values": [
{
"Host": 0.000776,
"Guest": 0,
"Proton 1": 0,
"Proton 2": 0,
"Proton 3": 0,
"Proton 4": 0
},
{
"Host": 0.000776,
"Guest": 0.0000970537,
"Proton 1": -0.0039,
"Proton 2": -0.0005,
"Proton 3": 0.0007,
"Proton 4": 0.0002
},
{
"Host": 0.000776,
"Guest": 0.000193437,
"Proton 1": -0.0074,
"Proton 2": -0.001,
"Proton 3": 0.0024,
"Proton 4": 0.0012
},
{
"Host": 0.000776,
"Guest": 0.000289157,
"Proton 1": -0.0113,
"Proton 2": -0.0015,
"Proton 3": 0.00365,
"Proton 4": 0.0017
},
{
"Host": 0.000776,
"Guest": 0.00038422,
"Proton 1": -0.0147,
"Proton 2": -0.002,
"Proton 3": 0.0044,
"Proton 4": 0.00195
},
{
"Host": 0.000776,
"Guest": 0.000478632,
"Proton 1": -0.0176,
"Proton 2": -0.0025,
"Proton 3": 0.00535,
"Proton 4": 0.0022
},
{
"Host": 0.000776,
"Guest": 0.000572402,
"Proton 1": -0.021,
"Proton 2": -0.0029,
"Proton 3": 0.00605,
"Proton 4": 0.0027
},
{
"Host": 0.000776,
"Guest": 0.000665535,
"Proton 1": -0.0245,
"Proton 2": -0.0034,
"Proton 3": 0.00655,
"Proton 4": 0.00295
},
{
"Host": 0.000776,
"Guest": 0.000758037,
"Proton 1": -0.0274,
"Proton 2": -0.0039,
"Proton 3": 0.00755,
"Proton 4": 0.0032
},
{
"Host": 0.000776,
"Guest": 0.000849916,
"Proton 1": -0.0299,
"Proton 2": -0.0034,
"Proton 3": 0.00855,
"Proton 4": 0.0039
},
{
"Host": 0.000776,
"Guest": 0.000941176,
"Proton 1": -0.0328,
"Proton 2": -0.0044,
"Proton 3": 0.00925,
"Proton 4": 0.0041
},
{
"Host": 0.000776,
"Guest": 0.001076923,
"Proton 1": -0.0362,
"Proton 2": -0.0049,
"Proton 3": 0.0102,
"Proton 4": 0.00435
},
{
"Host": 0.000776,
"Guest": 0.001255814,
"Proton 1": -0.0411,
"Proton 2": -0.0059,
"Proton 3": 0.0117,
"Proton 4": 0.00485
},
{
"Host": 0.000776,
"Guest": 0.001476112,
"Proton 1": -0.0465,
"Proton 2": -0.0064,
"Proton 3": 0.01315,
"Proton 4": 0.0056
},
{
"Host": 0.000776,
"Guest": 0.001778502,
"Proton 1": -0.0528,
"Proton 2": -0.0074,
"Proton 3": 0.0151,
"Proton 4": 0.00635
},
{
"Host": 0.000776,
"Guest": 0.002198718,
"Proton 1": -0.0611,
"Proton 2": -0.0093,
"Proton 3": 0.0171,
"Proton 4": 0.00685
},
{
"Host": 0.000776,
"Guest": 0.002804382,
"Proton 1": -0.0699,
"Proton 2": -0.0103,
"Proton 3": 0.0205,
"Proton 4": 0.0083
},
{
"Host": 0.000776,
"Guest": 0.003569044,
"Proton 1": -0.0797,
"Proton 2": -0.0118,
"Proton 3": 0.0234,
"Proton 4": 0.0095
},
{
"Host": 0.000776,
"Guest": 0.004632801,
"Proton 1": -0.09,
"Proton 2": -0.0132,
"Proton 3": 0.0273,
"Proton 4": 0.01125
},
{
"Host": 0.000776,
"Guest": 0.006213802,
"Proton 1": -0.1012,
"Proton 2": -0.0147,
"Proton 3": 0.0317,
"Proton 4": 0.01315
},
{
"Host": 0.000776,
"Guest": 0.008810489,
"Proton 1": -0.1139,
"Proton 2": -0.0171,
"Proton 3": 0.03565,
"Proton 4": 0.0144
},
{
"Host": 0.000776,
"Guest": 0.012504331,
"Proton 1": -0.1237,
"Proton 2": -0.0181,
"Proton 3": 0.04055,
"Proton 4": 0.0169
}
]
},
{
"name": "outputFit",
"transform": [
{
"type": "fold",
"fields": ["Proton 1", "Proton 2", "Proton 3", "Proton 4"]
},
{
"type": "formula",
"as": "guestOverHost",
"expr": "datum.Guest/datum.Host"
}
],
"values": [
{
"Host": 0.000776,
"Guest": 0,
"Proton 1": 0,
"Proton 2": 0,
"Proton 3": 0,
"Proton 4": 0
},
{
"Host": 0.000776,
"Guest": 0.0000970537,
"Proton 1": -0.0039220206102700324,
"Proton 2": -0.0005720699271234041,
"Proton 3": 0.0011986886971990798,
"Proton 4": 0.0004953162852189336
},
{
"Host": 0.000776,
"Guest": 0.000193437,
"Proton 1": -0.007662048517649115,
"Proton 2": -0.0011175942129497706,
"Proton 3": 0.0023417548932422893,
"Proton 4": 0.0009676485123488171
},
{
"Host": 0.000776,
"Guest": 0.000289157,
"Proton 1": -0.011230422436039486,
"Proton 2": -0.0016380808728355502,
"Proton 3": 0.00343235841331406,
"Proton 4": 0.001418302368909647
},
{
"Host": 0.000776,
"Guest": 0.00038422,
"Proton 1": -0.014636862337995375,
"Proton 2": -0.002134947671892986,
"Proton 3": 0.00447346997643798,
"Proton 4": 0.001848505400897837
},
{
"Host": 0.000776,
"Guest": 0.000478632,
"Proton 1": -0.017890514026482812,
"Proton 2": -0.0026095286262724673,
"Proton 3": 0.005467884817961229,
"Proton 4": 0.0022594126418026598
},
{
"Host": 0.000776,
"Guest": 0.000572402,
"Proton 1": -0.021000082049082852,
"Proton 2": -0.0030630933901638012,
"Proton 3": 0.006418263312174631,
"Proton 4": 0.002652123398486774
},
{
"Host": 0.000776,
"Guest": 0.000665535,
"Proton 1": -0.023973617049840818,
"Proton 2": -0.003496816238720016,
"Proton 3": 0.007327065980574945,
"Proton 4": 0.003027654395617998
},
{
"Host": 0.000776,
"Guest": 0.000758037,
"Proton 1": -0.026818716752156427,
"Proton 2": -0.00391180538362674,
"Proton 3": 0.008196614918344391,
"Proton 4": 0.003386965158018972
},
{
"Host": 0.000776,
"Guest": 0.000849916,
"Proton 1": -0.02954257456974092,
"Proton 2": -0.004309110063546,
"Proton 3": 0.009029108651336552,
"Proton 4": 0.0037309641497982665
},
{
"Host": 0.000776,
"Guest": 0.000941176,
"Proton 1": -0.0321518262172029,
"Proton 2": -0.004689698170579794,
"Proton 3": 0.00982657525560955,
"Proton 4": 0.004060489402632995
},
{
"Host": 0.000776,
"Guest": 0.001076923,
"Proton 1": -0.035864581162176556,
"Proton 2": -0.005231244394288165,
"Proton 3": 0.010961306005457265,
"Proton 4": 0.0045293772974230135
},
{
"Host": 0.000776,
"Guest": 0.001255814,
"Proton 1": -0.04046939976951806,
"Proton 2": -0.005902907933796432,
"Proton 3": 0.012368678522271302,
"Proton 4": 0.005110924890702585
},
{
"Host": 0.000776,
"Guest": 0.001476112,
"Proton 1": -0.0457276506385228,
"Proton 2": -0.006669881769566514,
"Proton 3": 0.013975759797471246,
"Proton 4": 0.005774995161104693
},
{
"Host": 0.000776,
"Guest": 0.001778502,
"Proton 1": -0.05228324407673574,
"Proton 2": -0.007626087315919045,
"Proton 3": 0.015979348390871645,
"Proton 4": 0.006602908247720953
},
{
"Host": 0.000776,
"Guest": 0.002198718,
"Proton 1": -0.06029735720219858,
"Proton 2": -0.008795034031710676,
"Proton 3": 0.018428704928267734,
"Proton 4": 0.0076150193855956845
},
{
"Host": 0.000776,
"Guest": 0.002804382,
"Proton 1": -0.07001915104106689,
"Proton 2": -0.010213064798389192,
"Proton 3": 0.021399980591795865,
"Proton 4": 0.008842795394044816
},
{
"Host": 0.000776,
"Guest": 0.003569044,
"Proton 1": -0.07992187458837122,
"Proton 2": -0.011657486156909173,
"Proton 3": 0.024426553873067736,
"Proton 4": 0.010093421213847209
},
{
"Host": 0.000776,
"Guest": 0.004632801,
"Proton 1": -0.09054757519255985,
"Proton 2": -0.013207361686465552,
"Proton 3": 0.02767409091576201,
"Proton 4": 0.011435352599249318
},
{
"Host": 0.000776,
"Guest": 0.006213802,
"Proton 1": -0.10190070020115485,
"Proton 2": -0.014863340081704701,
"Proton 3": 0.03114395096444596,
"Proton 4": 0.012869151210648324
},
{
"Host": 0.000776,
"Guest": 0.008810489,
"Proton 1": -0.11396182599066756,
"Proton 2": -0.01662258819309025,
"Proton 3": 0.03483019756945547,
"Proton 4": 0.014392364017326664
},
{
"Host": 0.000776,
"Guest": 0.012504331,
"Proton 1": -0.12408841291050586,
"Proton 2": -0.018099662491494268,
"Proton 3": 0.03792519030106645,
"Proton 4": 0.01567126178801829
}
]
},
{
"name": "outputResiduals",
"transform": [
{
"type": "fold",
"fields": ["Proton 1", "Proton 2", "Proton 3", "Proton 4"]
},
{
"type": "formula",
"as": "guestOverHost",
"expr": "datum.Guest/datum.Host"
}
],
"values": [
{
"Host": 0.000776,
"Guest": 0,
"Proton 1": 0,
"Proton 2": 0,
"Proton 3": 0,
"Proton 4": 0
},
{
"Host": 0.000776,
"Guest": 0.0000970537,
"Proton 1": -0.000022020610270032624,
"Proton 2": -0.00007206992712340411,
"Proton 3": 0.0004986886971990798,
"Proton 4": 0.00029531628521893365
},
{
"Host": 0.000776,
"Guest": 0.000193437,
"Proton 1": -0.0002620485176491145,
"Proton 2": -0.00011759421294977061,
"Proton 3": -0.00005824510675771048,
"Proton 4": -0.00023235148765118278
},
{
"Host": 0.000776,
"Guest": 0.000289157,
"Proton 1": 0.00006957756396051319,
"Proton 2": -0.0001380808728355502,
"Proton 3": -0.00021764158668594004,
"Proton 4": -0.00028169763109035296
},
{
"Host": 0.000776,
"Guest": 0.00038422,
"Proton 1": 0.0000631376620046243,
"Proton 2": -0.00013494767189298597,
"Proton 3": 0.00007346997643797957,
"Proton 4": -0.000101494599102163
},
{
"Host": 0.000776,
"Guest": 0.000478632,
"Proton 1": -0.00029051402648281113,
"Proton 2": -0.00010952862627246727,
"Proton 3": 0.00011788481796122952,
"Proton 4": 0.000059412641802659635
},
{
"Host": 0.000776,
"Guest": 0.000572402,
"Proton 1": -8.2049082850838e-8,
"Proton 2": -0.00016309339016380145,
"Proton 3": 0.0003682633121746314,
"Proton 4": -0.00004787660151322603
},
{
"Host": 0.000776,
"Guest": 0.000665535,
"Proton 1": 0.0005263829501591828,
"Proton 2": -0.00009681623872001598,
"Proton 3": 0.0007770659805749446,
"Proton 4": 0.00007765439561799791
},
{
"Host": 0.000776,
"Guest": 0.000758037,
"Proton 1": 0.0005812832478435739,
"Proton 2": -0.000011805383626739899,
"Proton 3": 0.0006466149183443912,
"Proton 4": 0.00018696515801897191
},
{
"Host": 0.000776,
"Guest": 0.000849916,
"Proton 1": 0.00035742543025907986,
"Proton 2": -0.0009091100635459999,
"Proton 3": 0.0004791086513365513,
"Proton 4": -0.00016903585020173334
},
{
"Host": 0.000776,
"Guest": 0.000941176,
"Proton 1": 0.0006481737827970999,
"Proton 2": -0.0002896981705797939,
"Proton 3": 0.0005765752556095502,
"Proton 4": -0.00003951059736700523
},
{
"Host": 0.000776,
"Guest": 0.001076923,
"Proton 1": 0.00033541883782344656,
"Proton 2": -0.0003312443942881651,
"Proton 3": 0.0007613060054572646,
"Proton 4": 0.00017937729742301383
},
{
"Host": 0.000776,
"Guest": 0.001255814,
"Proton 1": 0.0006306002304819411,
"Proton 2": -0.000002907933796432449,
"Proton 3": 0.0006686785222713015,
"Proton 4": 0.00026092489070258466
},
{
"Host": 0.000776,
"Guest": 0.001476112,
"Proton 1": 0.0007723493614772009,
"Proton 2": -0.0002698817695665134,
"Proton 3": 0.0008257597974712459,
"Proton 4": 0.0001749951611046928
},
{
"Host": 0.000776,
"Guest": 0.001778502,
"Proton 1": 0.0005167559232642574,
"Proton 2": -0.00022608731591904508,
"Proton 3": 0.0008793483908716444,
"Proton 4": 0.0002529082477209536
},
{
"Host": 0.000776,
"Guest": 0.002198718,
"Proton 1": 0.0008026427978014214,
"Proton 2": 0.0005049659682893233,
"Proton 3": 0.0013287049282677335,
"Proton 4": 0.0007650193855956843
},
{
"Host": 0.000776,
"Guest": 0.002804382,
"Proton 1": -0.0001191510410668839,
"Proton 2": 0.0000869352016108077,
"Proton 3": 0.0008999805917958639,
"Proton 4": 0.0005427953940448163
},
{
"Host": 0.000776,
"Guest": 0.003569044,
"Proton 1": -0.00022187458837122365,
"Proton 2": 0.00014251384309082668,
"Proton 3": 0.0010265538730677357,
"Proton 4": 0.0005934212138472093
},
{
"Host": 0.000776,
"Guest": 0.004632801,
"Proton 1": -0.0005475751925598515,
"Proton 2": -0.0000073616864655519365,
"Proton 3": 0.0003740909157620084,
"Proton 4": 0.0001853525992493183
},
{
"Host": 0.000776,
"Guest": 0.006213802,
"Proton 1": -0.0007007002011548552,
"Proton 2": -0.0001633400817047017,
"Proton 3": -0.0005560490355540383,
"Proton 4": -0.00028084878935167625
},
{
"Host": 0.000776,
"Guest": 0.008810489,
"Proton 1": -0.00006182599066756334,
"Proton 2": 0.0004774118069097513,
"Proton 3": -0.000819802430544532,
"Proton 4": -0.000007635982673335692
},
{
"Host": 0.000776,
"Guest": 0.012504331,
"Proton 1": -0.0003884129105058559,
"Proton 2": 3.37508505733608e-7,
"Proton 3": -0.0026248096989335556,
"Proton 4": -0.00122873821198171
}
]
}
],
"signals": [
{
"name": "width",
"init": "isFinite(containerSize()[0]) ? containerSize()[0] : 500",
"on": [
{
"events": "window:resize",
"update": "isFinite(containerSize()[0]) ? containerSize()[0] : 500"
}
]
},
{
"name": "height",
"init": "isFinite(containerSize()[1]) ? containerSize()[1] : 500",
"on": [
{
"events": "window:resize",
"update": "isFinite(containerSize()[1]) ? containerSize()[1] : 500"
}
]
},
{
"name": "mainHeight",
"value": "null",
"init": "height/1.8",
"on": [{"events": "window:resize", "update": "height/1.8"}]
},
{
"name": "subHeight",
"init": "clamp(height - mainHeight, 0, MAX_VALUE)",
"value": "null",
"on": [
{
"events": "window:resize",
"update": "clamp(height - mainHeight, 0, MAX_VALUE)"
}
]
},
{"name": "layoutPadding", "value": 20}
],
"scales": [
{
"name": "mainX",
"type": "linear",
"range": [0, {"signal": "width"}],
"nice": false,
"zero": true,
"domain": {
"fields": [
{"data": "inputData", "field": "guestOverHost"},
{"data": "outputFit", "field": "guestOverHost"},
{"data": "outputResiduals", "field": "guestOverHost"}
]
}
},
{
"name": "mainY",
"type": "linear",
"range": [{"signal": "mainHeight"}, 0],
"nice": true,
"zero": true,
"domain": {
"fields": [
{"data": "inputData", "field": "value"},
{"data": "outputFit", "field": "value"}
]
}
},
{
"name": "subX",
"type": "linear",
"range": [0, {"signal": "width"}],
"nice": false,
"zero": true,
"domain": {
"fields": [
{"data": "inputData", "field": "guestOverHost"},
{"data": "outputFit", "field": "guestOverHost"},
{"data": "outputResiduals", "field": "guestOverHost"}
]
}
},
{
"name": "subY",
"type": "linear",
"range": [{"signal": "subHeight"}, 0],
"nice": true,
"zero": true,
"round": true,
"domain": {"fields": [{"data": "outputResiduals", "field": "value"}]}
},
{
"name": "colour",
"type": "ordinal",
"range": "category",
"domain": {"data": "inputData", "field": "key"}
}
],
"layout": {
"align": "each",
"bounds": "full",
"columns": 1,
"padding": {"signal": "layoutPadding"}
},
"marks": [
{
"name": "mainGroup",
"type": "group",
"style": "cell",
"encode": {
"update": {
"width": {"signal": "width"},
"height": {"signal": "mainHeight"}
}
},
"axes": [
{
"title": "Equivalent total [G]₀/[H]₀",
"orient": "bottom",
"scale": "mainX",
"grid": true,
"gridScale": "mainY",
"ticks": true,
"domain": false,
"labels": true,
"zindex": 0,
"maxExtent": 0,
"minExtent": 0,
"titlePadding": 30
},
{
"title": "δ (ppm)",
"orient": "left",
"scale": "mainY",
"grid": true,
"gridScale": "mainX",
"ticks": true,
"domain": false,
"labels": true,
"zindex": 0,
"maxExtent": 0,
"minExtent": 0,
"titlePadding": 70
}
],
"marks": [
{
"name": "fit",
"type": "group",
"from": {
"facet": {"name": "fit", "data": "outputFit", "groupby": "key"}
},
"marks": [
{
"type": "line",
"from": {"data": "fit"},
"encode": {
"enter": {
"x": {"scale": "mainX", "field": "guestOverHost"},
"y": {"scale": "mainY", "field": "value"},
"stroke": {"scale": "colour", "field": "key"},
"strokeWidth": {"value": 2},
"interpolate": {"value": "natural"}
}
}
}
]
},
{
"name": "data",
"type": "group",
"from": {
"facet": {"name": "data", "data": "inputData", "groupby": "key"}
},
"marks": [
{
"type": "symbol",
"from": {"data": "data"},
"encode": {
"enter": {
"x": {"scale": "mainX", "field": "guestOverHost"},
"y": {"scale": "mainY", "field": "value"},
"fill": {"scale": "colour", "field": "key"},
"shape": {"value": "diamond"},
"size": {"value": 50},
"fillOpacity": {"value": 0.8},
"zindex": {"value": 0}
}
}
}
]
},
{
"name": "vPoints",
"type": "symbol",
"from": {"data": "outputFit"},
"encode": {
"update": {
"xValue": {"field": "guestOverHost", "scale": "mainX"},
"yValue": {"value": 0},
"fill": {"value": "transparent"},
"size": {"value": 10},
"stroke": {"value": "transparent"},
"strokeWidth": {"value": 0.5}
}
}
},
{
"name": "vCell",
"type": "path",
"from": {"data": "vPoints"},
"encode": {
"enter": {
"fill": {"value": "transparent"},
"stroke": {"value": "transparent"},
"isVoronoi": {"value": true},
"strokeWidth": {"value": 0.35}
},
"update": {"tooltip": {"signal": "datum.datum"}}
},
"transform": [
{
"type": "voronoi",
"x": "datum.xValue",
"y": "datum.yValue",
"size": [{"signal": "width"}, {"signal": "height"}]
}
]
}
]
},
{
"name": "subGroup",
"type": "group",
"style": "cell",
"encode": {
"update": {
"width": {"signal": "width"},
"height": {"signal": "subHeight"}
}
},
"axes": [
{
"title": "Residuals",
"orient": "bottom",
"scale": "subX",
"grid": true,
"gridScale": "subY",
"ticks": true,
"domain": false,
"labels": true,
"zindex": 0,
"maxExtent": 0,
"minExtent": 0,
"titlePadding": 30
},
{
"title": "δ (ppm)",
"orient": "left",
"scale": "subY",
"grid": true,
"gridScale": "subX",
"ticks": true,
"domain": false,
"labels": true,
"zindex": 0,
"maxExtent": 0,
"minExtent": 0,
"titlePadding": 70
}
],
"marks": [
{
"name": "residuals",
"type": "group",
"from": {
"facet": {
"name": "residuals",
"data": "outputResiduals",
"groupby": "key"
}
},
"marks": [
{
"type": "line",
"from": {"data": "residuals"},
"encode": {
"enter": {
"x": {"scale": "subX", "field": "guestOverHost"},
"y": {"scale": "subY", "field": "value"},
"stroke": {"scale": "colour", "field": "key"},
"strokeWidth": {"value": 2},
"interpolate": {"value": "linear"}
}
}
}
]
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment