import%20marimo%0A%0A__generated_with%20%3D%20%220.9.16%22%0Aapp%20%3D%20marimo.App(width%3D%22medium%22)%0A%0A%0A%40app.cell%0Adef%20__()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20import%20polars%20as%20pl%0A%20%20%20%20import%20altair%20as%20alt%0A%20%20%20%20import%20random%0A%20%20%20%20import%20datetime%0A%20%20%20%20return%20alt%2C%20datetime%2C%20mo%2C%20pl%2C%20random%0A%0A%0A%40app.cell%0Adef%20__(mo%2C%20pl)%3A%0A%20%20%20%20%23%20Various%20constants%0A%20%20%20%20TECHNICAL_COLUMNS%20%3D%20%5B%22StartDate%22%2C%20%22EndDate%22%2C%20%22Status%22%2C%20%22Progress%22%2C%20%22Duration%20(in%20seconds)%22%2C%20%22Finished%22%2C%20%22RecordedDate%22%2C%20%22ResponseId%22%2C%20%22DistributionChannel%22%2C%20%22UserLanguage%22%2C%20%22GDPR%22%5D%0A%0A%20%20%20%20%23%20Helpers%0A%20%20%20%20def%20list_to_md(list_of_things%2C%20title%3DNone)%3A%0A%20%20%20%20%20%20%20%20text%20%3D%20f%22%23%23%23%20%7Btitle%7D%20%5Cn%22%20if%20title%20is%20not%20None%20else%20%22%22%0A%20%20%20%20%20%20%20%20for%20thing%20in%20list_of_things%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20text%20%2B%3D%20f%22%20-%20%7Bthing%7D%20%5Cn%22%0A%20%20%20%20%20%20%20%20return%20mo.md(text)%0A%0A%20%20%20%20def%20mark(col_name%2C%20thing)%3A%0A%20%20%20%20%20%20%20%20return%20pl.when(%0A%20%20%20%20%20%20%20%20%20%20%20%20pl.col(col_name).str.contains(thing)%0A%20%20%20%20%20%20%20%20).then(1).otherwise(0).alias(thing)%0A%20%20%20%20return%20TECHNICAL_COLUMNS%2C%20list_to_md%2C%20mark%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%20Analysing%20Q2%20group%202024%20survey%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(datetime%2C%20pl%2C%20random)%3A%0A%20%20%20%20survey_start%20%3D%20datetime.datetime(2024%2C%2010%2C%2015)%0A%0A%20%20%20%20df%20%3D%20pl.read_csv(%22survey-results.csv%22).filter(%0A%20%20%20%20%20%20%20%20pl.col(%22Status%22)%20!%3D%20'%7B%22ImportId%22%3A%22status%22%7D').filter(%0A%20%20%20%20%20%20%20%20pl.col(%22StartDate%22).str.to_datetime(%22%25Y-%25m-%25d%20%25H%3A%25M%3A%25S%22%2C%20strict%3DFalse)%20%3E%3D%20survey_start%0A%20%20%20%20)%0A%20%20%20%20random.seed(1234)%20%23%20to%20get%20the%20same%20lines%20every%20run%0A%20%20%20%20%23df.sample(50)%0A%20%20%20%20return%20df%2C%20survey_start%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22To%20get%20a%20more%20advanced%20feeling%3A%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(TECHNICAL_COLUMNS%2C%20df%2C%20pl)%3A%0A%20%20%20%20df.select(pl.all().exclude(TECHNICAL_COLUMNS)).describe()%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(df%2C%20pl)%3A%0A%20%20%20%20answers%20%3D%20len(df)%0A%20%20%20%20finished%20%3D%20len(df.filter(pl.col(%22Finished%22)%20%3D%3D%20%22True%22))%0A%20%20%20%20return%20answers%2C%20finished%0A%0A%0A%40app.cell%0Adef%20__(answers%2C%20mo)%3A%0A%20%20%20%20mo.md(f%22%22%22%23%23%20Total%20answers%3A%20%7Banswers%7D%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20answers%2C%20finished%2C%20pl)%3A%0A%20%20%20%20ddd%20%3D%20pl.DataFrame(%7B%22Status%22%3A%20%5B%22Unfinished%22%2C%22Finished%22%5D%2C%22y%22%3A%20%5Banswers-finished%2C%20finished%5D%7D)%0A%20%20%20%20base%20%3D%20alt.Chart(ddd%2C%20title%3D%22Finished%20questionnaires%20ratio%22).mark_arc().encode(theta%3D%22y%22%2C%20color%3D%22Status%22)%0A%20%20%20%20pie%20%3D%20base.mark_arc(outerRadius%3D120)%0A%20%20%20%20text%20%3D%20base.mark_text(radius%3D140%2C%20size%3D20).encode(text%3D%22y%3AN%22)%0A%20%20%20%20pie%20%2B%20text%0A%20%20%20%20return%20base%2C%20ddd%2C%20pie%2C%20text%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%20Where%20do%20people%20comes%3F%0A%0A%20%20%20%20%20%20%20%20%3E%20Research%20Area%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df%2C%20pl)%3A%0A%20%20%20%20_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(df.filter(pl.col(%22b1.q2%22).is_not_null()))%0A%20%20%20%20%20%20%20%20.transform_aggregate(count%3D%22count()%22%2C%20groupby%3D%5B%22b1%5C.q2%22%5D)%0A%20%20%20%20%20%20%20%20.transform_window(%0A%20%20%20%20%20%20%20%20%20%20%20%20rank%3D%22rank()%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sort%3D%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alt.SortField(%22count%22%2C%20order%3D%22descending%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alt.SortField(%22b1%5C.q2%22%2C%20order%3D%22ascending%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.transform_filter(alt.datum.rank%20%3C%3D%2010)%0A%20%20%20%20%20%20%20%20.mark_bar()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22b1%5C.q2%22%2C%20type%3D%22nominal%22%2C%20sort%3D%22-x%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22count%22%2C%20type%3D%22quantitative%22)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(title%3D%22Research%20Area%22%2C%20width%3D%22container%22)%0A%20%20%20%20)%0A%20%20%20%20_chart%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df%2C%20pl)%3A%0A%20%20%20%20_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(df.filter(pl.col(%22b1.q2_8_TEXT%22).is_not_null()))%0A%20%20%20%20%20%20%20%20.transform_aggregate(count%3D%22count()%22%2C%20groupby%3D%5B%22b1%5C.q2_8_TEXT%22%5D)%0A%20%20%20%20%20%20%20%20.transform_window(%0A%20%20%20%20%20%20%20%20%20%20%20%20rank%3D%22rank()%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sort%3D%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alt.SortField(%22count%22%2C%20order%3D%22descending%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alt.SortField(%22b1%5C.q2_8_TEXT%22%2C%20order%3D%22ascending%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.transform_filter(alt.datum.rank%20%3C%3D%2010)%0A%20%20%20%20%20%20%20%20.mark_bar()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22b1%5C.q2_8_TEXT%22%2C%20type%3D%22nominal%22%2C%20sort%3D%22-x%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22count%22%2C%20type%3D%22quantitative%22)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(title%3D%22Other%20research%20areas%22%2C%20width%3D%22container%22)%0A%20%20%20%20)%0A%20%20%20%20_chart%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%3E%20Organisation%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(df%2C%20mo%2C%20pl)%3A%0A%20%20%20%20orgs%20%3D%20df.select(%0A%20%20%20%20%20%20%20%20pl.col(%22b1.q3%22).alias(%22Organisation%22)%0A%20%20%20%20).filter(%0A%20%20%20%20%20%20%20%20pl.col(%22Organisation%22).is_not_null()%0A%20%20%20%20).group_by(%0A%20%20%20%20%20%20%20%20pl.col(%22Organisation%22)%0A%20%20%20%20).agg().sort(by%3D%22Organisation%22)%0A%0A%20%20%20%20mo.ui.table(orgs)%0A%20%20%20%20return%20(orgs%2C)%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%3E%20Country%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(df%2C%20pl)%3A%0A%20%20%20%20df.select(%0A%20%20%20%20%20%20%20%20pl.col(%22b1.q4%22).str.to_lowercase().alias(%22Country%22)%0A%20%20%20%20).filter(%0A%20%20%20%20%20%20%20%20pl.col(%22Country%22).is_not_null()%0A%20%20%20%20).group_by(%22Country%22).agg(%0A%20%20%20%20%20%20%20%20pl.len().alias(%22count%22)%0A%20%20%20%20).sort(%22count%22%2C%20descending%3DTrue)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%23%23%20DDI%20use%20%26%20knowledge%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%23%23%23%20How%20would%20you%20rate%20your%20skill%2Fknowledge%20on%20the%20following%20DDI%20products%3F%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df%2C%20pl)%3A%0A%20%20%20%20df_ddi_kl%20%3D%20df.select(%0A%20%20%20%20%20%20%20%20pl.col(%22b2.q1_1%22).alias(%22Codebook%22)%2C%0A%20%20%20%20%20%20%20%20pl.col(%22b2.q1_2%22).alias(%22Lifecycle%22)%2C%0A%20%20%20%20%20%20%20%20pl.col(%22b2.q1_3%22).alias(%22CDI%22)%2C%0A%20%20%20%20).unpivot(%5B%22Codebook%22%2C%20%22Lifecycle%22%2C%20%22CDI%22%5D).group_by(%0A%20%20%20%20%20%20%20%20%22variable%22%2C%20%22value%22%0A%20%20%20%20).len().sort(%22variable%22)%0A%0A%20%20%20%20alt.Chart(df_ddi_kl%2C%20title%3D%22Skills%20and%20knowledge%20for%20DDI%20products%22).mark_bar().encode(%0A%20%20%20%20%20%20%20%20x%3D%22value%3AO%22%2C%0A%20%20%20%20%20%20%20%20y%3D%22len%3AQ%22%2C%0A%20%20%20%20%20%20%20%20color%3D%22value%22%2C%0A%20%20%20%20%20%20%20%20column%3D%22variable%22%0A%20%20%20%20)%0A%20%20%20%20return%20(df_ddi_kl%2C)%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%23%20What%20DDI%20products%20are%20you%20currently%20using%20in%20your%20activities%3F%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(df%2C%20mo%2C%20pl)%3A%0A%20%20%20%20mo.md(%22%23%23%20Products%20used%22)%0A%20%20%20%20df_pu%20%3D%20df.select(%0A%20%20%20%20%20%20%20%20pl.col(%22b2.q2%22).alias(%22Products%22)%0A%20%20%20%20).filter(%0A%20%20%20%20%20%20%20%20pl.col(%22Products%22).is_not_null()%0A%20%20%20%20).group_by(%0A%20%20%20%20%20%20%20%20%22Products%22%0A%20%20%20%20).len().sort(%22len%22%2C%20descending%3DTrue)%0A%20%20%20%20mo.ui.table(df_pu)%0A%20%20%20%20return%20(df_pu%2C)%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20r%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%23%20If%20you%20are%20using%20DDI%2C%20when%20are%20you%20using%20DDI%20regarding%20the%20data%20lifecycle%20schema%20below%3F%0A%0A%20%20%20%20%20%20%20%20!%5BData%20lifecycle%5D(https%3A%2F%2Fddialliance.org%2Fsites%2Fdefault%2Ffiles%2FDDILifecycle.jpg)%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(df%2C%20mark%2C%20pl)%3A%0A%20%20%20%20def%20markb2q3(thing)%3A%0A%20%20%20%20%20%20%20%20return%20mark(%22b2.q3%22%2C%20thing)%0A%0A%20%20%20%20df.select(%0A%20%20%20%20%20%20%20%20pl.col(%22b2.q3%22).alias(%22Lifecycle%22)%2C%0A%20%20%20%20%20%20%20%20markb2q3(%22Concept%22)%2C%0A%20%20%20%20%20%20%20%20markb2q3(%22Collection%22)%2C%0A%20%20%20%20%20%20%20%20markb2q3(%22Processing%22)%2C%0A%20%20%20%20%20%20%20%20markb2q3(%22Distribution%22)%2C%0A%20%20%20%20%20%20%20%20markb2q3(%22Discovery%22)%2C%0A%20%20%20%20%20%20%20%20markb2q3(%22Analysis%22)%2C%0A%20%20%20%20%20%20%20%20markb2q3(%22Repurposing%22)%2C%0A%20%20%20%20%20%20%20%20markb2q3(%22Archiving%22)%0A%20%20%20%20).unpivot(%0A%20%20%20%20%20%20%20%20%5B%22Concept%22%2C%20%22Collection%22%2C%20%22Processing%22%2C%20%22Distribution%22%2C%20%22Discovery%22%2C%20%22Analysis%22%2C%20%22Repurposing%22%2C%20%22Archiving%22%5D%0A%20%20%20%20).group_by(%0A%20%20%20%20%20%20%20%20%22variable%22%0A%20%20%20%20).agg(%0A%20%20%20%20%20%20%20%20pl.col(%22value%22).sum()%0A%20%20%20%20).select(%0A%20%20%20%20%20%20%20%20pl.col(%22variable%22).alias(%22Phase%22)%2C%0A%20%20%20%20%20%20%20%20pl.col(%22value%22).alias(%22Count%22)%0A%20%20%20%20).sort(%22Count%22%2C%20descending%3DTrue)%0A%20%20%20%20return%20(markb2q3%2C)%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%23%23%23%20Are%20you%20documenting...%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df%2C%20pl)%3A%0A%20%20%20%20_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(%0A%20%20%20%20%20%20%20%20%20%20%20%20df.filter(pl.col(%22b2.q4_1%22).is_not_null())%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20title%3D%22Datasets...%22%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.mark_bar()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22b2%5C.q4_1%22%2C%20type%3D%22nominal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22count()%22%2C%20type%3D%22quantitative%22)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(width%3D%22container%22)%0A%20%20%20%20)%0A%20%20%20%20_chart%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df%2C%20pl)%3A%0A%20%20%20%20_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(df.filter(pl.col(%22b2.q4_2%22).is_not_null())%2C%20title%3D%22Variables...%22)%0A%20%20%20%20%20%20%20%20.mark_bar()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22b2%5C.q4_2%22%2C%20type%3D%22nominal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22count()%22%2C%20type%3D%22quantitative%22)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(width%3D%22container%22)%0A%20%20%20%20)%0A%20%20%20%20_chart%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df%2C%20pl)%3A%0A%20%20%20%20_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(df.filter(pl.col(%22b2.q4_3%22).is_not_null())%2C%20title%3D%22Concepts...%22)%0A%20%20%20%20%20%20%20%20.mark_bar()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22b2%5C.q4_3%22%2C%20type%3D%22nominal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22count()%22%2C%20type%3D%22quantitative%22)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(width%3D%22container%22)%0A%20%20%20%20)%0A%20%20%20%20_chart%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df%2C%20pl)%3A%0A%20%20%20%20_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(df.filter(pl.col(%22b2.q4_4%22).is_not_null())%2C%20title%3D%22Questions%20wording...%22)%0A%20%20%20%20%20%20%20%20.mark_bar()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22b2%5C.q4_4%22%2C%20type%3D%22nominal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22count()%22%2C%20type%3D%22quantitative%22)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(width%3D%22container%22)%0A%20%20%20%20)%0A%20%20%20%20_chart%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df%2C%20pl)%3A%0A%20%20%20%20_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(df.filter(pl.col(%22b2.q4_5%22).is_not_null())%2C%20title%3D%22Responses%20%26%20code%20lists...%22)%0A%20%20%20%20%20%20%20%20.mark_bar()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22b2%5C.q4_5%22%2C%20type%3D%22nominal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22count()%22%2C%20type%3D%22quantitative%22)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(width%3D%22container%22)%0A%20%20%20%20)%0A%20%20%20%20_chart%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%23%23%23%20Which%20DDI%20elements%20are%20you%20using%20to%20describe%20the%20questionnaires%3F%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df%2C%20pl)%3A%0A%20%20%20%20_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(df.filter(pl.col(%22b2.q5%22).is_not_null()))%0A%20%20%20%20%20%20%20%20.transform_aggregate(count%3D%22count()%22%2C%20groupby%3D%5B%22b2%5C.q5%22%5D)%0A%20%20%20%20%20%20%20%20.transform_window(%0A%20%20%20%20%20%20%20%20%20%20%20%20rank%3D%22rank()%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sort%3D%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alt.SortField(%22count%22%2C%20order%3D%22descending%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alt.SortField(%22b2%5C.q5%22%2C%20order%3D%22ascending%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.transform_filter(alt.datum.rank%20%3C%3D%2010)%0A%20%20%20%20%20%20%20%20.mark_bar()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22b2%5C.q5%22%2C%20type%3D%22nominal%22%2C%20sort%3D%22-x%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22count%22%2C%20type%3D%22quantitative%22)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(title%3D%22Questionnaire%20documentation%20with...%22%2C%20width%3D%22container%22)%0A%20%20%20%20)%0A%20%20%20%20_chart%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%23%23%23%20What%20survey%20tools%20are%20you%20using%3F%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df%2C%20pl)%3A%0A%20%20%20%20_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(df.filter(pl.col(%22b2.q6%22).is_not_null()))%0A%20%20%20%20%20%20%20%20.transform_aggregate(count%3D%22count()%22%2C%20groupby%3D%5B%22b2%5C.q6%22%5D)%0A%20%20%20%20%20%20%20%20.transform_window(%0A%20%20%20%20%20%20%20%20%20%20%20%20rank%3D%22rank()%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sort%3D%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alt.SortField(%22count%22%2C%20order%3D%22descending%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alt.SortField(%22b2%5C.q6%22%2C%20order%3D%22ascending%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.transform_filter(alt.datum.rank%20%3C%3D%2010)%0A%20%20%20%20%20%20%20%20.mark_bar()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22b2%5C.q6%22%2C%20type%3D%22nominal%22%2C%20sort%3D%22-x%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22count%22%2C%20type%3D%22quantitative%22)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(title%3D%22Survey%20tools%22%2C%20width%3D%22container%22)%0A%20%20%20%20)%0A%20%20%20%20_chart%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df)%3A%0A%20%20%20%20_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(df)%0A%20%20%20%20%20%20%20%20.transform_aggregate(count%3D%22count()%22%2C%20groupby%3D%5B%22b2%5C.q6_7_TEXT%22%5D)%0A%20%20%20%20%20%20%20%20.transform_window(%0A%20%20%20%20%20%20%20%20%20%20%20%20rank%3D%22rank()%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sort%3D%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alt.SortField(%22count%22%2C%20order%3D%22descending%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alt.SortField(%22b2%5C.q6_7_TEXT%22%2C%20order%3D%22ascending%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.transform_filter(alt.datum.rank%20%3C%3D%2010)%0A%20%20%20%20%20%20%20%20.mark_bar()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22b2%5C.q6_7_TEXT%22%2C%20type%3D%22nominal%22%2C%20sort%3D%22-x%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22count%22%2C%20type%3D%22quantitative%22)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(title%3D%22Other%20survey%20tools%22%2C%20width%3D%22container%22)%0A%20%20%20%20)%0A%20%20%20%20_chart%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%23%23%23%20What%20tools%20are%20you%20using%20to%20document%20questions%20and%20questionnaires%20in%20DDI%3F%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df%2C%20pl)%3A%0A%20%20%20%20_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(df.filter(pl.col(%22b2.q7%22).is_not_null()))%0A%20%20%20%20%20%20%20%20.transform_aggregate(count%3D%22count()%22%2C%20groupby%3D%5B%22b2%5C.q7%22%5D)%0A%20%20%20%20%20%20%20%20.transform_window(%0A%20%20%20%20%20%20%20%20%20%20%20%20rank%3D%22rank()%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20sort%3D%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alt.SortField(%22count%22%2C%20order%3D%22descending%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20alt.SortField(%22b2%5C.q7%22%2C%20order%3D%22ascending%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.transform_filter(alt.datum.rank%20%3C%3D%2010)%0A%20%20%20%20%20%20%20%20.mark_bar()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22b2%5C.q7%22%2C%20type%3D%22nominal%22%2C%20sort%3D%22-x%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22count%22%2C%20type%3D%22quantitative%22)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(title%3D%22Documentation%20tools%22%2C%20width%3D%22container%22)%0A%20%20%20%20)%0A%20%20%20%20_chart%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df%2C%20pl)%3A%0A%20%20%20%20_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(df.filter(pl.col(%22b2.q7_4_TEXT%22).is_not_null()))%0A%20%20%20%20%20%20%20%20.mark_bar()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22b2%5C.q7_4_TEXT%22%2C%20type%3D%22nominal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22count()%22%2C%20type%3D%22quantitative%22)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(title%3D%22Internal%20documentation%20tools%22%2Cwidth%3D%22container%22)%0A%20%20%20%20)%0A%20%20%20%20_chart%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df%2C%20pl)%3A%0A%20%20%20%20_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(df.filter(pl.col(%22b2.q7_5_TEXT%22).is_not_null()))%0A%20%20%20%20%20%20%20%20.mark_bar()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22b2%5C.q7_5_TEXT%22%2C%20type%3D%22nominal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22count()%22%2C%20type%3D%22quantitative%22)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(title%3D%22Other%20documentation%20tools%20%22%2C%20width%3D%22container%22)%0A%20%20%20%20)%0A%20%20%20%20_chart%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%23%23%23%20Are%20you%20satisfied%20with%20your%20current%20usage%20of%20DDI%3F%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df%2C%20pl)%3A%0A%20%20%20%20_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(df.filter(pl.col(%22b2.q10%22).is_not_null()))%0A%20%20%20%20%20%20%20%20.mark_bar()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22b2%5C.q10%22%2C%20type%3D%22nominal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22count()%22%2C%20type%3D%22quantitative%22)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(title%3D%22DDI%20satisfaction%22%2C%20width%3D%22container%22)%0A%20%20%20%20)%0A%20%20%20%20_chart%0A%0A%0A%20%20%20%20sat%20%3D%20df.filter(%0A%20%20%20%20%20%20%20%20pl.col(%22b2.q10%22).is_not_null()%0A%20%20%20%20).select(%0A%20%20%20%20%20%20%20%20pl.col(%22b2.q10%22).alias(%22Satisfaction%22)%0A%20%20%20%20).group_by(%22Satisfaction%22).len()%0A%0A%20%20%20%20sat_base%20%3D%20alt.Chart(sat%2C%20title%3D%22Satisfaction%22).mark_arc().encode(theta%3D%22len%3AQ%22%2C%20color%3D%22Satisfaction%22)%0A%20%20%20%20sat_pie%20%3D%20sat_base.mark_arc(outerRadius%3D120)%0A%20%20%20%20sat_text%20%3D%20sat_base.mark_text(radius%3D140%2C%20size%3D20).encode(text%3D%22len%3AN%22)%0A%20%20%20%20sat_pie%20%2B%20sat_text%0A%20%20%20%20return%20sat%2C%20sat_base%2C%20sat_pie%2C%20sat_text%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%3E%20(If%20not)%20What%20enhancements%20would%20you%20like%20to%20make%3F%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(df%2C%20pl)%3A%0A%20%20%20%20df.filter(pl.col(%22b2.q11%22).is_not_null()).select(pl.col(%22b2.q11%22))%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%23%23%23%20Are%20you%20planning%20to%20document%20questionnaires%20using%20DDI%3F%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df%2C%20pl)%3A%0A%20%20%20%20_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(df.select(pl.col(%22b3.q1%22).alias(%22b3q1%22))%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.filter(pl.col(%22b3q1%22).is_not_null()))%0A%20%20%20%20%20%20%20%20.mark_bar()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22b3q1%22%2C%20type%3D%22nominal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22count()%22%2C%20type%3D%22quantitative%22)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(%0A%20%20%20%20%20%20%20%20%20%20%20%20title%3D%22Plans%22%2C%20%0A%20%20%20%20%20%20%20%20%20%20%20%20width%3D%22container%22%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20)%0A%20%20%20%20_chart%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(df%2C%20list_to_md%2C%20pl)%3A%0A%20%20%20%20qddiyes%20%3D%20df.filter(%0A%20%20%20%20%20%20%20%20pl.col(%22b3.q1%22)%20%3D%3D%20%22Yes%22%0A%20%20%20%20).select(%0A%20%20%20%20%20%20%20%20pl.col(%22b3.q2%22)%0A%20%20%20%20).filter(%0A%20%20%20%20%20%20%20%20pl.col(%22b3.q2%22).is_not_null()%0A%20%20%20%20).to_series()%0A%0A%20%20%20%20list_to_md(qddiyes%2C%20%22If%20_yes_%2C%20why%3F%22)%0A%20%20%20%20return%20(qddiyes%2C)%0A%0A%0A%40app.cell%0Adef%20__(df%2C%20list_to_md%2C%20pl)%3A%0A%20%20%20%20qddino%20%3D%20df.filter(%0A%20%20%20%20%20%20%20%20pl.col(%22b3.q1%22)%20%3D%3D%20%22No%22%0A%20%20%20%20).select(%0A%20%20%20%20%20%20%20%20pl.col(%22b3.q2%22)%0A%20%20%20%20).filter(%0A%20%20%20%20%20%20%20%20pl.col(%22b3.q2%22).is_not_null()%0A%20%20%20%20).to_series()%0A%0A%20%20%20%20list_to_md(qddino%2C%20%22If%20_no_%2C%20why%3F%22)%0A%20%20%20%20return%20(qddino%2C)%0A%0A%0A%40app.cell%0Adef%20__(df%2C%20list_to_md%2C%20pl)%3A%0A%20%20%20%20qddiimprov%20%3D%20df.select(%0A%20%20%20%20%20%20%20%20pl.col(%22b3.q3%22)%0A%20%20%20%20).filter(pl.col(%22b3.q3%22).is_not_null()).to_series()%0A%0A%20%20%20%20list_to_md(qddiimprov%2C%20%22What%20improvements%20to%20DDI%20for%20questionnaires%20that%20you%20would%20like%20to%20see%3F%22)%0A%20%20%20%20return%20(qddiimprov%2C)%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20%20%20%20%20%23%23%20DDI%20training%20and%20resources%0A%20%20%20%20%20%20%20%20%23%23%23%20Have%20you%20ever%20taken%20part%20in%20a%20DDI%20training%20course%2C%20workshop%20or%20seminar%3F%0A%20%20%20%20%20%20%20%20%22%22%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(df%2C%20mo%2C%20pl)%3A%0A%20%20%20%20training%20%3D%20df.select(%22b4.q1%22).filter(pl.col(%22b4.q1%22).is_not_null()).group_by(%22b4.q1%22).len()%0A%0A%20%20%20%20mo.ui.table(training)%0A%20%20%20%20return%20(training%2C)%0A%0A%0A%40app.cell%0Adef%20__(df%2C%20list_to_md%2C%20pl)%3A%0A%20%20%20%20list_to_md(%0A%20%20%20%20%20%20%20%20df.select(%22b4.q2%22).filter(pl.col(%22b4.q2%22).is_not_null()).to_series()%2C%0A%20%20%20%20%20%20%20%20%22Which%20one%3F%22%0A%20%20%20%20)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(alt%2C%20df%2C%20pl)%3A%0A%20%20%20%20_chart%20%3D%20(%0A%20%20%20%20%20%20%20%20alt.Chart(df.filter(pl.col(%22b4.q3%22).is_not_null()))%0A%20%20%20%20%20%20%20%20.mark_bar()%0A%20%20%20%20%20%20%20%20.encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y(%22b4%5C.q3%22%2C%20type%3D%22nominal%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X(%22count()%22%2C%20type%3D%22quantitative%22)%2C%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20.properties(width%3D%22container%22)%0A%20%20%20%20)%0A%20%20%20%20_chart%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(%22%22%22%23%23%23%20What%20resources%20do%20you%20usually%20use%20to%20help%20you%20in%20your%20questionnaire%20conception%20and%20documentation%20activities%3F%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(df%2C%20mark%2C%20pl)%3A%0A%20%20%20%20df.filter(%0A%20%20%20%20%20%20%20%20pl.col(%22b4.q4%22).is_not_null()%0A%20%20%20%20).select(%0A%20%20%20%20%20%20%20%20pl.col(%22b4.q4%22)%2C%0A%20%20%20%20%20%20%20%20mark(%22b4.q4%22%2C%20%22DDI%20website%22)%2C%0A%20%20%20%20%20%20%20%20mark(%22b4.q4%22%2C%20%22Specification%22)%2C%0A%20%20%20%20%20%20%20%20mark(%22b4.q4%22%2C%20%22Model%20documentation%22)%2C%0A%20%20%20%20%20%20%20%20mark(%22b4.q4%22%2C%20%22Codata%22)%2C%0A%20%20%20%20%20%20%20%20mark(%22b4.q4%22%2C%20%22Zenodo%22)%2C%0A%20%20%20%20%20%20%20%20mark(%22b4.q4%22%2C%20%22Youtube%22)%2C%0A%20%20%20%20%20%20%20%20mark(%22b4.q4%22%2C%20%22Other%22)%0A%20%20%20%20).unpivot(%0A%20%20%20%20%20%20%20%20%5B%22DDI%20website%22%2C%20%22Specification%22%2C%20%22Model%20documentation%22%2C%20%22Codata%22%2C%20%22Zenodo%22%2C%20%22Youtube%22%2C%20%22Other%22%5D%0A%20%20%20%20).group_by(%0A%20%20%20%20%20%20%20%20%22variable%22%0A%20%20%20%20).agg(%0A%20%20%20%20%20%20%20%20pl.col(%22value%22).sum()%0A%20%20%20%20).sort(%22value%22%2C%20descending%3DTrue)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%20%23%23%23%20For%20you%2C%20what%20materials%20would%20meet%20your%20needs%20in%20terms%20of%20documenting%20questions%20and%20questionnaires%3F%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20__(df%2C%20mark%2C%20pl)%3A%0A%20%20%20%20df.filter(%0A%20%20%20%20%20%20%20%20pl.col(%22b4.q5%22).is_not_null()%0A%20%20%20%20).select(%0A%20%20%20%20%20%20%20%20pl.col(%22b4.q5%22)%2C%0A%20%20%20%20%20%20%20%20mark(%22b4.q5%22%2C%20%22Best%20practices%22)%2C%0A%20%20%20%20%20%20%20%20mark(%22b4.q5%22%2C%20%22Mentoring%22)%2C%0A%20%20%20%20%20%20%20%20mark(%22b4.q5%22%2C%20%22Webinar%22)%2C%0A%20%20%20%20%20%20%20%20mark(%22b4.q5%22%2C%20%22In%20person%20training%22)%2C%0A%20%20%20%20%20%20%20%20mark(%22b4.q5%22%2C%20%22Other%22)%0A%20%20%20%20).unpivot(%0A%20%20%20%20%20%20%20%20%5B%22Best%20practices%22%2C%20%22Mentoring%22%2C%20%22Webinar%22%2C%20%22In%20person%20training%22%2C%20%22Other%22%5D%0A%20%20%20%20).group_by(%0A%20%20%20%20%20%20%20%20%22variable%22%0A%20%20%20%20).agg(%0A%20%20%20%20%20%20%20%20pl.col(%22value%22).sum()%0A%20%20%20%20).sort(%22value%22%2C%20descending%3DTrue)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
c7d7f4d568e0c976b381545fb94f3a7566fb3477b40023455b04a8a8fdbf9964