vl.markCircle()
.data(chainData.results)
.transform(
vl.calculate(`datum.percent[1]`).as('noChain'),
vl.calculate(`1 - datum.noChain`).as('withChain'),
vl.calculate(`datum.carb.volume*1E18`).as('volMicro'),
vl.filter(`datum.withChain > 0`)
)
.encode(
vl.x({
axis:{
grid: false,
labelFontSize: 15,
titleFontSize: 15,
tickCount: 5,
}
}).fieldQ('carb.innerConcentration')
.title(['Inner rubisco concentration (µM)']),
vl.y({
axis:{
grid: false,
labelFontSize: 15,
titleFontSize: 15
}
}).fieldQ('s.occ').title(['Ratio of occupied vs.', 'free binding sites']).scale({type: 'log'}),
vl.color().fieldQ('withChain').title(['Ratio of RuBisCOs','participating in chains']).scale({scheme: 'viridis', domain: [0, 1]}).sort('descending').legend({orient: 'bottom', titleLimit: 200, width: 200, titleFontSize: 15, labelFontSize: 15, tickCount: 5, padding: 10}),
vl.size().fieldQ('volMicro').title(['Carboxysome','Volume (µm³)']).legend({orient: 'bottom', titleLimit: 200, width: 200, titleFontSize: 15, labelFontSize: 15, tickCount: 5, padding: 10}),
vl.tooltip([
{ field: 'carb.carbIndex', title: 'reg' },
{ field: 'volMicro', title: 'Carboxysome Volume (µm³)', format: ".6f"},
{ field: 'carb.numRub', title: '# of total RuBisCOs'},
{ field: 'carb.numRubOuter', title: '# of outer RuBisCOs'},
{ field: 'innerConcentration', title: 'Inner RuBisCO concentration (µM)', format: ".0f"},
{ field: 'withChain', title: '# of RuBisCOs in chains'},
{ field: 's.longestChain', title: '# of RuBisCos in Longest chain'},
{ field: 's.occ', title: 'Occupancy ratio'},
])
)
.width(800)
.height(500)
.config({view: {stroke: "transparent"}})
.render({renderer: 'svg'})