Participants’ and mentors’ feedback to Cohort Survey#

from pathlib import Path

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

from textwrap import wrap
def get_mcq_answer_counts(col, df):
    '''
    Get value counts for answers in multiple choice questions
    
    :param col: column name
    :param df: dataframe
    '''
    # split transform elements as lists
    q = df[col].apply(lambda x: x.split(', '))
    # get unique items & counts
    return q.explode().value_counts()

def get_mcq_possible_answers_counts(col, df, answers):
    '''
    Get value counts for answers in multiple choice questions
    
    :param col: column name
    :param df: dataframe
    :param answers: list of possible answers
    '''
    # split transform elements as lists
    q = df[col].apply(lambda x: x.split(', '))
    # get unique items & counts
    value_counts = q.explode().value_counts()
    # prepare possible answer counts
    answer_counts = {c:0 for c in answers}
    # parse answers to match to possible answers
    other_answers = []
    for a,v in value_counts.items():
        if a in answer_counts:
            answer_counts[a] = v
        else:
            other_answers.append(a)
            answer_counts['Other'] += v
    return answer_counts, other_answers

def get_question_possible_answers_counts(col, df, answers):
    '''
    Get value counts for answers in multiple choice questions
    
    :param col: column name
    :param df: dataframe
    :param answers: list of possible answers
    '''
    # get unique items & counts
    value_counts = df[col].explode().value_counts()
    # prepare possible answer counts
    answer_counts = {c:0 for c in answers}
    # parse answers to match to possible answers
    other_answers = []
    for a,v in value_counts.items():
        if a in answer_counts:
            answer_counts[a] = v
        else:
            print(value_counts)
            other_answers.append(a)
            if 'Other' in answer_counts:
                answer_counts['Other'] += v
    return answer_counts, other_answers
colors = {
    "participants": "#3182bd",
    "participant_colormap": "winter",
    "mentors": "#fd8d3c",
    "mentor_colormap": "winter",
}

Participants’ Feedback to Cohort Survey#

96.8% of participants (mean over the 8 cohorts; min = 91.9, max = 100) who responded to the feedback survey (number of answers over the 8 cohorts; mid-cohort: mean=20.5, min=11, max=33; post-cohort: mean=28.6, min=19, max=37) would recommend Open Seeds to others. 77.3% of respondents found that the mentoring calls were always useful (mean over the 8 cohorts; min = 63.6, max=87.1). Regarding the cohort calls, 46.4% of respondents found them always useful (min = 38.4, max=61.1) and 42.1% mostly useful (min = 30.6, max=50). Topics under open science, project management, community interactions, mental health, tooling for collaboration and project design approaches were considered important to the participants’ open science journey. The program helped mentees work openly and to meet most of their project goals they intended to meet during their participation in the cohort. 22% of respondents indicated they would like to return as mentors (min=11.9, max=28.3), 12.2% as experts (min=3, max=21.9), and 9.1% as facilitators (min=0, max=18.9). Around 30% of graduates re-joined the subsequent cohort in different roles. Even when not actively engaging with the ongoing program, participants from previous cohorts remain engaged via the community Slack workspace, sharing opportunities, responding to questions or accessing information shared by others.

Statistic of the number of answer for the mid-cohort survey

participant_mid_df = {}
answers = {}
for c in range(1, 9):
    participant_mid_df[c] = (pd.read_csv(Path(f"../data/participant_feedback/mid_cohort/OLS-{c}.csv"))
        .dropna(axis=1,how='all')
        .fillna("")
        .replace(f"OLS-{c}", "cohort", regex=True)
        .replace("Information on before, during and after the call", "Information on before during and after the call", regex=True)
        .replace(" on the google doc", "", regex=True)
        .replace("I have attended 1-2 cohort calls, and watched the missed call on YouTube", "I have attended 1-2 cohort calls and watched the missed call on YouTube", regex=True)
        .replace("I watched all the cohort calls on YouTube, but have not attended any call so far", "I watched all the cohort calls on YouTube but have not attended any call so far", regex=True)
    )
    answers[c] = participant_mid_df[c].shape[0]
pd.DataFrame([answers]).transpose().describe()
0
count 8.000000
mean 20.500000
std 8.618916
min 11.000000
25% 13.750000
50% 19.000000
75% 25.250000
max 33.000000

Statistic of the number of answer for the post-cohort survey

participant_df = {}
answers = {}
for c in range(1, 9):
    participant_df[c] = (
        pd.read_csv(Path(f"../data/participant_feedback/post_cohort/OLS-{c}.csv"))
        .dropna(axis=1,how='all')
        .fillna("")
        .replace(f"OLS-{c}", "cohort", regex=True)
        # q1                 
        .replace("I was able to meet ALL my project goals", "I was able to meet ALL my goals", regex=True)
        .replace("I worked consistently on my project, and met part of my goals", "I was able to meet MOST of my goals", regex=True)
        .replace("I was able to meet MOST of my goals.", "I was able to meet MOST of my goals", regex=True)
        # q4
        ## renaming (see below)
        .replace("Tooling and Roadmapping \(open canvas, project vision etc\.\)", "Project Roadmapping, Open Canvas", regex=True)
        .replace("Licensing and Code of Conduct", "Open Licensing, Code of Conduct", regex=True)
        .replace("GitHub and README files", "README, GitHub Introduction", regex=True)
        .replace("Project development: Agile and iterative project management methods & Open Aspects", "Agile & Iteractive Project Management", regex=True)
        .replace("Knowledge Dissemination: Preprints, Training and Code Publishing", "Open Access Publication, Open Educational Resources, Open Source Software", regex=True)
        .replace("Data management plans, software citation", "Open Data", regex=True)
        .replace("Citizen Science", "Open Engagement of Social Actors", regex=True)
        .replace("citizen science", "Open Engagement of Social Actors", regex=True)
        .replace("Diversity & Inclusion", "Equity Diversity & Inclusion (EDI)", regex=True)
        .replace("Mountain of engagement and Community interactions", "Mountain of Engagement, Community Interactions", regex=True)
        .replace("Persona and pathways and inviting contributions", "Personas & Pathways", regex=True)
        .replace("Mental health, self care, personal ecology", "Personal Ecology", regex=True)
        .replace("Ally skills", "Ally Skills for Open Leaders", regex=True)
        .replace("Open Leadership: Career Guidance call", "Open Leadership in Practice", regex=True)
        .replace("Open office/co-working hours and social calls", "Open office/co-working hours and social calls", regex=True)
        .replace("Final presentation rehearsals", "Graduation rehearsals", regex=True)
        .replace("Final presentation call \(open and live streamed\)", "Graduations", regex=True)
        ## cleaning
        .replace("Tooling and Roadmapping \(\)", "Project Roadmapping, Open Canvas", regex=True)
        #.replace("Tooling and Roadmapping(open canvas, project vision etc.)", "Project Roadmapping, Open Canvas", regex=True)
        .replace("Designing for inclusion: Implicit bias", "Community Design for Inclusivity", regex=True)
        .replace("Diversity and Inclusion", "Equity Diversity & Inclusion (EDI)", regex=True)
        .replace("Preprints", "Open Access Publication", regex=True)
        .replace("open protocols", "Open Evaluation", regex=True)
        .replace("Knowledge Dissemination: Citizen science", "Open Engagement of Social Actors", regex=True)
        .replace("Knowledge Dissemination: open education", "Open Educational Resources", regex=True)
        .replace("Knowledge Dissemination: Open Access Publication", "Open Access Publication", regex=True)
        .replace("open education", "Open Educational Resources", regex=True)
        .replace("Open agenda and social calls", "Open office/co-working hours and social calls", regex=True)
        .replace("Career Guidance calls", "Open Leadership in Practice", regex=True)
        .replace("Applying FAIR principles on research components", "Open Data", regex=True)
        # q5
        .replace("I am not sure yet, but ask me later when you have launched OLS-2", "I am not sure yet but ask me later", regex=True)
        .replace("I am not sure yet, but ask me later when you have launched cohort", "I am not sure yet but ask me later", regex=True)
        .replace("I am not sure yet, but ask me later", "I am not sure yet but ask me later", regex=True)
        .replace("Yes I'd like to return as a collaborator to run an OLS cohort for my network", "Yes I'd like to return as a collaborator to run this program in my network", regex=True)
        .replace("No, I would not be able to return to OLS-2", "No I would not be able to return", regex=True)
        .replace("No, I would not be able to return to cohort", "No I would not be able to return", regex=True)
        .replace("No, I would not be able to return to OLS-4", "No I would not be able to return", regex=True)
        .replace("I would not be able to return to OLS-3 but I am hopeful to return to OLS-4 with an active role.", "I would take a break but please keep me informed about the next cohort", regex=True)
        .replace("No, but only because I really would not have the time", "No I would not be able to return", regex=True)
        .replace("Maybe in OLS-7?", "I would take a break but please keep me informed about the next cohort", regex=True)   
    )
    answers[c] = participant_df[c].shape[0]
pd.DataFrame([answers]).transpose().describe()
<>:15: SyntaxWarning: invalid escape sequence '\('
<>:31: SyntaxWarning: invalid escape sequence '\('
<>:33: SyntaxWarning: invalid escape sequence '\('
<>:15: SyntaxWarning: invalid escape sequence '\('
<>:31: SyntaxWarning: invalid escape sequence '\('
<>:33: SyntaxWarning: invalid escape sequence '\('
/tmp/ipykernel_2080/1106160560.py:15: SyntaxWarning: invalid escape sequence '\('
  .replace("Tooling and Roadmapping \(open canvas, project vision etc\.\)", "Project Roadmapping, Open Canvas", regex=True)
/tmp/ipykernel_2080/1106160560.py:31: SyntaxWarning: invalid escape sequence '\('
  .replace("Final presentation call \(open and live streamed\)", "Graduations", regex=True)
/tmp/ipykernel_2080/1106160560.py:33: SyntaxWarning: invalid escape sequence '\('
  .replace("Tooling and Roadmapping \(\)", "Project Roadmapping, Open Canvas", regex=True)
0
count 8.00000
mean 28.62500
std 6.52331
min 19.00000
25% 22.75000
50% 30.50000
75% 32.75000
max 37.00000

“OLS is helping me work openly”#

participant_mid_q1 = {}
other_answer = []
col = "OLS is helping me work openly"
answers = list(range(1, 6))
for c in participant_mid_df:
    participant_mid_q1[c], oa = get_question_possible_answers_counts(col, participant_mid_df[c], answers)
    other_answer += oa
participant_mid_q1_df = pd.DataFrame.from_dict(participant_mid_q1)
participant_mid_q1_df = 100 * participant_mid_q1_df / participant_mid_q1_df.sum()

fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q1_df.mean(axis=1).plot.bar(ax=ax, color=colors['participants'])
plt.ylabel('Mean percentage of answers')
t = plt.title(col)
../_images/378acae88c678a2111a28f18210d69e9bfc5d04983b938ed81b20a8c36ae4173.png

“How was your overall project leadership experience in OLS?”#

participant_q1 = {}
other_answer = []
col = "How was your overall project leadership experience in OLS?"
answers = [
    "I was able to meet ALL my goals",
    "I was able to meet MOST of my goals",
    "I was able work on my project but only PARTIALLY",
    "I was NOT able to work on my project idea",
    "Other"]
for c in participant_df:
    participant_q1[c], oa = get_mcq_possible_answers_counts(col, participant_df[c], answers)
    other_answer += oa
participant_q1_df = pd.DataFrame.from_dict(participant_q1)
participant_q1_df = 100 * participant_q1_df / participant_q1_df.sum()

fig, ax = plt.subplots()
fig.set_dpi(300)
participant_q1_df.mean(axis=1).plot.barh(ax=ax, color=colors['participants'])
plt.xlabel('Mean percentage of answers')
plt.gca().invert_yaxis()
t = plt.title(col)
../_images/1b6b4672c84223968432770f90c7b279ef5e00e18a23b0c6c830befcd7cd85f2.png

“How was your overall experience with the mentor-mentee calls?”#

participant_q2 = {}
other_answer = []
col = "How was your overall experience with the mentor-mentee calls?"
answers = [
    "Mentoring calls were always useful",
    "Mentoring calls were mostly useful",
    "Mentoring calls were somewhat useful",
    "Mentoring calls were not useful"]
for c in participant_df:
    participant_q2[c], oa = get_mcq_possible_answers_counts(col, participant_df[c], answers)
    other_answer += oa
participant_q2_df = pd.DataFrame.from_dict(participant_q2)
participant_q2_df = 100 * participant_q2_df / participant_q2_df.sum()

participant_q2_df.transpose().describe()
Mentoring calls were always useful Mentoring calls were mostly useful Mentoring calls were somewhat useful Mentoring calls were not useful
count 8.000000 8.000000 8.000000 8.0
mean 77.293648 18.142060 4.564292 0.0
std 8.090147 6.981617 2.123993 0.0
min 63.636364 9.677419 2.702703 0.0
25% 72.901786 12.766714 3.200605 0.0
50% 78.293011 18.010753 3.696237 0.0
75% 83.890469 21.818182 5.375940 0.0
max 87.096774 28.125000 9.090909 0.0

“How was your overall experience with the cohort calls?”#

participant_q3 = {}
other_answer = []
col = "How was your overall experience with the cohort calls?"
answers = [
    "They were always useful",
    "They were mostly useful",
    "They were somewhat useful",
    "They were not useful for me",
    "I could not attend"]
for c in participant_df:
    participant_q3[c], oa = get_mcq_possible_answers_counts(col, participant_df[c], answers)
    other_answer += oa
participant_q3_df = pd.DataFrame.from_dict(participant_q3)
participant_q3_df = 100 * participant_q3_df / participant_q3_df.sum()

participant_q3_df.transpose().describe()
They were always useful They were mostly useful They were somewhat useful They were not useful for me I could not attend
count 8.000000 8.000000 8.000000 8.000000 8.000000
mean 46.422351 42.133035 8.951377 0.347222 2.146014
std 8.696822 6.363809 5.434823 0.982093 3.202608
min 38.461538 30.555556 0.000000 0.000000 0.000000
25% 39.222874 38.221154 5.303030 0.000000 0.000000
50% 44.466403 43.633277 9.035326 0.000000 0.000000
75% 49.629934 46.047431 13.465298 0.000000 3.981855
max 61.111111 50.000000 15.384615 2.777778 7.692308

“Which of the following topics introduced in these cohort calls were useful for your open science journey?”#

participant_q4 = {}
other_answer = []
col = "Which of the following topics introduced in these cohort calls were useful for your open science journey?"
answers = [
    "OLS Introduction",
    "Open Science Introduction",
    "Open Source Software",
    "Open Data",
    "Open Access Publication",
    "Open Science Infrastructures",
    "Open Educational Resources",
    "Open Engagement of Social Actors",
    "Open Hardware",
    "Open Evaluation",
    "Openness to Diversity of Knowledge",
    "Project Roadmapping",
    "Open Canvas",
    "Code of Conduct",
    "GitHub Introduction",
    "Open Licensing",
    "README",
    "Package Management",
    "Setting up a project",
    "Project Design for Collaboration",
    "Good Coding Practices",
    "Code Review",
    "Agile & Iteractive Project Management",
    "Community Design for Inclusivity",
    "Community Interactions",
    "Mountain of Engagement",
    "Equity Diversity & Inclusion (EDI)",
    "Ally Skills for Open Leaders",
    "Personal Ecology",
    "Personas & Pathways",
    "Open Leadership in Practice",
    "Open office/co-working hours and social calls",
    "Graduation rehearsals",
    "Graduations",
    "Other"]
for c in participant_df:
    participant_q4[c], oa = get_mcq_possible_answers_counts(col, participant_df[c], answers)
    other_answer += oa
participant_q4_df = pd.DataFrame.from_dict(participant_q4)
participant_q4_df = 100 * participant_q4_df / participant_q4_df.sum()
tag_topic_mapping = (pd.read_csv("https://docs.google.com/spreadsheets/d/1sDJLG8RuoShWUQN78lvx_mghBbGfusdzlb1WwYrCbjk/export?format=csv&gid=0")
    .replace("Equity, Diversity and ", "Equity Diversity & ", regex=True)
    .set_index("Tag")
    .drop(columns=["Description", "Comments from Malvika", "Call in OLS-8", "Type", "Week", "Comments"]))
extra_mapping = (pd.DataFrame({
    'Tag':['Graduation rehearsals', 'Graduations', 'Open office/co-working hours and social calls', 'Other'],
    'Topic':['Graduations','Graduations','Open office/co-working hours and social calls', 'Other']})
    .set_index("Tag"))
tag_topic_mapping = pd.concat([tag_topic_mapping, extra_mapping])
participant_q4_by_topic_df = (participant_q4_df.join(tag_topic_mapping)
    .groupby(by="Topic")
    .sum())

participant_q4_by_topic_df.transpose().describe()
Topic Graduations Open Leadership Open Life Science Open Science Open office/co-working hours and social calls Other Project, Community & Personal Management Tooling for Collaboration Tooling for Project Design
count 8.000000 8.000000 8.0 8.000000 8.000000 8.000000 8.000000 8.000000 8.000000
mean 7.526115 3.179774 0.0 17.600075 2.419981 0.489046 32.077831 22.554101 14.153076
std 0.931217 0.772661 0.0 2.206159 0.645965 0.602194 3.554287 1.998936 1.682511
min 6.274510 2.153846 0.0 15.025907 1.639344 0.000000 27.924528 18.461538 12.072435
25% 6.863281 2.574516 0.0 16.352941 2.007120 0.000000 30.343137 21.508463 13.003394
50% 7.722561 3.266507 0.0 17.288559 2.357566 0.167785 30.608035 23.356144 13.787271
75% 8.007772 3.553795 0.0 18.162370 2.699697 1.060221 33.328077 23.955959 15.619351
max 9.056604 4.528302 0.0 22.303922 3.692308 1.408451 39.384615 24.313725 16.470588

“Would you be interested in joining as a mentor, call facilitator, or expert in the next cohort?”#

participant_q5 = {}
other_answer = []
col = "Would you be interested in joining as a mentor, call facilitator, or expert in the next cohort?"
answers = [
    "Yes I'd like to return as a mentor",
    "Yes I'd like to return as an expert",
    "Yes I'd like to return as a call facilitator",
    "Yes I'd like to return as a collaborator to run this program in my network",
    "I am not sure yet but ask me later",
    "I would take a break but please keep me informed about the next cohort",
    "No I would not be able to return",
    "Other"]
for c in participant_df:
    participant_q5[c], oa = get_mcq_possible_answers_counts(col, participant_df[c], answers)
    other_answer += oa
participant_q5_df = pd.DataFrame.from_dict(participant_q5)
participant_q5_df = 100 * participant_q5_df / participant_q5_df.sum()
participant_q5_df.transpose().describe()
Yes I'd like to return as a mentor Yes I'd like to return as an expert Yes I'd like to return as a call facilitator Yes I'd like to return as a collaborator to run this program in my network I am not sure yet but ask me later I would take a break but please keep me informed about the next cohort No I would not be able to return Other
count 8.000000 8.000000 8.000000 8.000000 8.000000 8.000000 8.000000 8.000000
mean 22.034092 12.228083 9.101523 11.489957 19.462531 0.240385 4.800587 20.642844
std 5.242456 5.476509 8.392517 5.053336 9.625526 0.679910 5.856813 14.822622
min 11.904762 3.030303 0.000000 3.125000 0.000000 0.000000 0.000000 1.639344
25% 20.596591 9.698026 0.000000 7.656023 17.759146 0.000000 0.000000 10.573899
50% 22.451020 12.019231 10.442073 12.509758 20.794025 0.000000 3.044872 20.362158
75% 24.338942 14.004021 16.461749 14.763489 24.424653 0.000000 7.190760 25.781250
max 28.301887 21.875000 18.867925 18.750000 30.303030 1.923077 16.666667 50.000000

“Would you recommend this program to others?”#

participant_q6 = {}
other_answer = []
col = "Would you recommend this program to others?"
answers = [
    "Yes", 
    "Maybe",
    "No"]
for c in participant_df:
    participant_q6[c], oa = get_question_possible_answers_counts(col, participant_df[c], answers)
    other_answer += oa
participant_q6_df = pd.DataFrame.from_dict(participant_q6)
participant_q6_df = 100 * participant_q6_df / participant_q6_df.sum()
participant_q6_df.transpose().describe()
Yes Maybe No
count 8.000000 8.000000 8.000000
mean 96.849306 2.793551 0.357143
std 3.122352 3.318000 1.010153
min 91.891892 0.000000 0.000000
25% 95.072464 0.000000 0.000000
50% 96.958525 1.612903 0.000000
75% 100.000000 4.927536 0.000000
max 100.000000 8.108108 2.857143

Mentors’ Feedback to Cohort Survey#

Mentors in Open Seeds are offered onboarding, training, templates for guiding their meetings and private Slack channels to interact with each other. 50.8% of mentors (mean over the 8 cohorts; min=30.8, max=70.4) who answered the feedback survey (over the 8 cohort, mean=20, min=8, max=26) reported that they found the mentor training and support offered in the cohort adequate and 32.8% reported that they enjoyed their experience and did not find their experience overwhelming (min=23.1, max=41.5). Only about 5% reported feeling overwhelmed by their responsibilities with many providing helpful recommendations to improve support and training to help better manage their responsibilities in Open Seeds. Around 80% of the mentors found the mentoring calls with their mentees mostly or always constructive and more than 50% thought their mentees were able to engage effectively with OLS throughout the program. 50% of mentors expressed their interest in returning as experts, speakers or mentors, with most of them effectively coming back in one of the roles in the subsequent cohort.

Statistic of the number of answer

mentor_df = {}
answers = {}
for c in range(1, 8):
    mentor_df[c] = (
        pd.read_csv(Path(f"../data/mentor_feedback/post_cohort/OLS-{c}.csv"))
        .dropna(axis=1,how='all')
        .fillna("")
        .replace(f"OLS-{c}", "cohort",regex=True)
        .replace("I am not sure yet, but ask me later when you have launched OLS-2", "I am not sure yet but ask me later", regex=True)
        .replace("I am not sure yet, but ask me later when you have launched cohort", "I am not sure yet but ask me later", regex=True)
        .replace("I am not sure yet, but ask me later", "I am not sure yet but ask me later", regex=True)
        .replace("Yes I'd like to return as a collaborator to run an OLS cohort for my network", "Yes I'd like to return as a collaborator to run this program in my network", regex=True)
        .replace("No, I would not be able to return to OLS-2", "No I would not be able to return", regex=True)
        .replace("No, I would not be able to return to cohort", "No I would not be able to return", regex=True)
        .replace("No, I would not be able to return to OLS-4", "No I would not be able to return", regex=True)
        .replace("I would not be able to return to OLS-3 but I am hopeful to return to OLS-4 with an active role.", "I would take a break but please keep me informed about the next cohort", regex=True)
        .replace("No, but only because I really would not have the time", "No I would not be able to return", regex=True)
        .replace("Maybe in OLS-7?", "I would take a break but please keep me informed about the next cohort", regex=True)
    )
    answers[c] = mentor_df[c].shape[0]
pd.DataFrame([answers]).transpose().describe()
0
count 7.000000
mean 20.142857
std 6.202918
min 8.000000
25% 18.500000
50% 21.000000
75% 24.500000
max 26.000000

“How were your overall mentorship training and support experience in OLS?”#

mentor_q1 = {}
other_answer = []
col = "How were your overall mentorship training and support experience in OLS?"
answers = [
    "I felt supported as a mentor and the training offered in the cohort was adequate",
    "I felt supported as a mentor but the training offered in the cohort can be improved",
    "I enjoyed my participation and did not find the experience overwhelming",
    "I found the mentorship responsibilities overwhelming",
    "I did not feel supported as a mentor",
    "Other"]
for c in mentor_df:
    mentor_q1[c], oa = get_mcq_possible_answers_counts(col, mentor_df[c], answers)
    other_answer += oa
mentor_q1_df = pd.DataFrame.from_dict(mentor_q1)
mentor_q1_df = 100 * mentor_q1_df / mentor_q1_df.sum()
mentor_q1_df.transpose().describe()
I felt supported as a mentor and the training offered in the cohort was adequate I felt supported as a mentor but the training offered in the cohort can be improved I enjoyed my participation and did not find the experience overwhelming I found the mentorship responsibilities overwhelming I did not feel supported as a mentor Other
count 7.000000 7.000000 7.000000 7.000000 7.0 7.000000
mean 50.804760 4.983076 32.805844 0.348432 0.0 11.057888
std 12.633986 8.108650 7.042051 0.921865 0.0 8.169870
min 30.769231 0.000000 23.076923 0.000000 0.0 0.000000
25% 45.731707 1.219512 27.436647 0.000000 0.0 5.795455
50% 51.515152 2.631579 33.333333 0.000000 0.0 12.121212
75% 55.757576 3.367003 38.446970 0.000000 0.0 15.308087
max 70.370370 23.076923 41.463415 2.439024 0.0 23.076923
fig, ax = plt.subplots()
fig.set_dpi(300)
mentor_q1_df.mean(axis=1).plot.barh(ax=ax, color=colors['mentors'])
plt.xlabel('Mean percentage of answers')
plt.gca().invert_yaxis()
t = plt.title(col)
../_images/c0a32848104bc2eeb09a3c0ae79add68c7e68feddb8a852444843a71e62a9a52.png

“How was your overall experience with the mentoring calls with your mentee?”#

mentor_q2 = {}
other_answer = []
col = "How was your overall experience with the mentoring calls with your mentee?"
answers = [
    "Mentoring calls were not structured or constructive",
    "Mentoring calls were somewhat constructive",
    "Mentoring calls were mostly constructive",
    "Mentoring calls were always constructive"]
for c in mentor_df:
    mentor_q2[c], oa = get_mcq_possible_answers_counts(col, mentor_df[c], answers)
    other_answer += oa
mentor_q2_df = pd.DataFrame.from_dict(mentor_q2)
mentor_q2_df = 100 * mentor_q2_df / mentor_q2_df.sum()
mentor_q2_df.transpose().describe()
Mentoring calls were not structured or constructive Mentoring calls were somewhat constructive Mentoring calls were mostly constructive Mentoring calls were always constructive
count 7.000000 7.000000 7.000000 7.000000
mean 2.929332 17.534526 41.428816 38.107326
std 3.036331 4.328734 13.983580 12.836553
min 0.000000 9.523810 15.384615 26.315789
25% 0.000000 15.740741 37.037037 27.350427
50% 3.703704 19.230769 47.368421 33.333333
75% 4.554656 20.141700 48.809524 47.354497
max 7.692308 22.222222 55.555556 57.692308

“Would you be interested in returning to the next cohort as a mentor or expert, and/or join our steering committee?”#

mentor_q3 = {}
other_answer = []
col = "Would you be interested in returning to the next cohort as a mentor or expert, and/or join our steering committee?"
answers = [
    "Yes I'd like to return as a mentor",
    "Yes I'd like to return as an expert",
    "Yes I'd like to return as a collaborator to run this program in my network",
    "Yes I am interesting in joining the OLS steering committee",
    "I am not sure yet but ask me later",
    "I would take a break but please keep me informed about the next cohort",
    "No I would not be able to return",
    "Other"]
for c in mentor_df:
    mentor_q3[c], oa = get_mcq_possible_answers_counts(col, mentor_df[c], answers)
    other_answer += oa
mentor_q3_df = pd.DataFrame.from_dict(mentor_q3)
mentor_q3_df = 100 * mentor_q3_df / mentor_q3_df.sum()
mentor_q3_df.transpose().describe()
Yes I'd like to return as a mentor Yes I'd like to return as an expert Yes I'd like to return as a collaborator to run this program in my network Yes I am interesting in joining the OLS steering committee I am not sure yet but ask me later I would take a break but please keep me informed about the next cohort No I would not be able to return Other
count 7.000000 7.000000 7.000000 7.000000 7.000000 7.000000 7.000000 7.000000
mean 28.667544 20.588996 3.971208 5.848005 7.448518 6.179595 0.396825 26.899308
std 14.156554 11.023938 4.457430 8.034182 7.333851 10.489760 1.049901 28.852860
min 1.234568 1.234568 0.000000 0.000000 0.000000 0.000000 0.000000 6.451613
25% 25.000000 15.972222 0.000000 0.000000 3.001792 0.000000 0.000000 10.790598
50% 29.032258 22.916667 3.225806 0.000000 6.250000 2.083333 0.000000 22.222222
75% 37.980769 27.884615 6.730769 10.790598 8.831909 6.003584 0.000000 23.958333
max 44.444444 32.258065 11.111111 19.354839 22.222222 29.166667 2.777778 90.123457

“Do you think your mentee was able to effectively engage with OLS throughout the program?”#

mentor_q4 = {}
other_answer = []
col = "Do you think your mentee was able to effectively engage with OLS throughout the program?"
answers = [
    "Yes, they were able to engage",
    "No, they had difficulty engaging or attending calls",
    "Other"]
for c in mentor_df:
    if col in mentor_df[c]:
        mentor_q4[c], oa = get_question_possible_answers_counts(col, mentor_df[c], answers)
        other_answer += oa
mentor_q4_df = pd.DataFrame.from_dict(mentor_q4)
mentor_q4_df = 100 * mentor_q4_df / mentor_q4_df.sum()
Do you think your mentee was able to effectively engage with OLS throughout the program?
Yes, they were able to engage                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 9
No, they had difficulty engaging or attending calls                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           6
I think they were able to engage most of the time. They often had to catch up between the calls and what they effectively used in their project.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              1
I think Arent was very much capable to effectively engage but I also received his feedback that he wished he had more time to really get the most out of it. I guess that's life :) Gill had a very busy time with teaching and the project changed focus in the middle of OLS so it was a bit more rough there. I think she managed to get at least something out of the programme but she has also been out of touch over christmas so I'm not sure if she's managing to graduate. I think in general people are just worn out over the pandemic: I myself was also not at my best in December and feel a bit more recharged right now.     1
I think she was able to engage but did not attend a number of cohort calls, My guess (but take this as my hypothesis) is that thai partly related to being busy, and partly to the nature of the project, which involved organizing an event and thus some of the topics of the cohort calls would not have been applicable.                                                                                                                                                                                                                                                                                                                  1
Name: count, dtype: int64
Do you think your mentee was able to effectively engage with OLS throughout the program?
Yes, they were able to engage                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 9
No, they had difficulty engaging or attending calls                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           6
I think they were able to engage most of the time. They often had to catch up between the calls and what they effectively used in their project.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              1
I think Arent was very much capable to effectively engage but I also received his feedback that he wished he had more time to really get the most out of it. I guess that's life :) Gill had a very busy time with teaching and the project changed focus in the middle of OLS so it was a bit more rough there. I think she managed to get at least something out of the programme but she has also been out of touch over christmas so I'm not sure if she's managing to graduate. I think in general people are just worn out over the pandemic: I myself was also not at my best in December and feel a bit more recharged right now.     1
I think she was able to engage but did not attend a number of cohort calls, My guess (but take this as my hypothesis) is that thai partly related to being busy, and partly to the nature of the project, which involved organizing an event and thus some of the topics of the cohort calls would not have been applicable.                                                                                                                                                                                                                                                                                                                  1
Name: count, dtype: int64
Do you think your mentee was able to effectively engage with OLS throughout the program?
Yes, they were able to engage                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 9
No, they had difficulty engaging or attending calls                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           6
I think they were able to engage most of the time. They often had to catch up between the calls and what they effectively used in their project.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              1
I think Arent was very much capable to effectively engage but I also received his feedback that he wished he had more time to really get the most out of it. I guess that's life :) Gill had a very busy time with teaching and the project changed focus in the middle of OLS so it was a bit more rough there. I think she managed to get at least something out of the programme but she has also been out of touch over christmas so I'm not sure if she's managing to graduate. I think in general people are just worn out over the pandemic: I myself was also not at my best in December and feel a bit more recharged right now.     1
I think she was able to engage but did not attend a number of cohort calls, My guess (but take this as my hypothesis) is that thai partly related to being busy, and partly to the nature of the project, which involved organizing an event and thus some of the topics of the cohort calls would not have been applicable.                                                                                                                                                                                                                                                                                                                  1
Name: count, dtype: int64
Do you think your mentee was able to effectively engage with OLS throughout the program?
Yes, they were able to engage                                                                                                                                                   14
No, they had difficulty engaging or attending calls                                                                                                                              4
They were engaged with mentor calls, didn't manage to attend as many cohort calls as they wanted I think and probably also struggled with time to dig into all the material.     1
Perhaps not all members of the team but most of them                                                                                                                             1
                                                                                                                                                                                 1
Name: count, dtype: int64
Do you think your mentee was able to effectively engage with OLS throughout the program?
Yes, they were able to engage                                                                                                                                                   14
No, they had difficulty engaging or attending calls                                                                                                                              4
They were engaged with mentor calls, didn't manage to attend as many cohort calls as they wanted I think and probably also struggled with time to dig into all the material.     1
Perhaps not all members of the team but most of them                                                                                                                             1
                                                                                                                                                                                 1
Name: count, dtype: int64
Do you think your mentee was able to effectively engage with OLS throughout the program?
Yes, they were able to engage                                                                                                                                                   14
No, they had difficulty engaging or attending calls                                                                                                                              4
They were engaged with mentor calls, didn't manage to attend as many cohort calls as they wanted I think and probably also struggled with time to dig into all the material.     1
Perhaps not all members of the team but most of them                                                                                                                             1
                                                                                                                                                                                 1
Name: count, dtype: int64
Do you think your mentee was able to effectively engage with OLS throughout the program?
Yes, they were able to engage                                                                                                                                                                                         7
No, they had difficulty engaging or attending calls                                                                                                                                                                   7
I think Alden struggled in the beginning to keep up with all the homework, especially since her project wasn't actually funded yet so she was limited in what she could actually implement during the OLS program.    1
Did not manage to engage with Mahmood Usman, so not sure.                                                                                                                                                             1
she couldn't engage as much as she wanted                                                                                                                                                                             1
I think they were able to engage enough with the materials, a little less with th community per se becasue of language barriers                                                                                       1
no, he had personal difficulty engaging or attending calls related to his VISA                                                                                                                                        1
Name: count, dtype: int64
Do you think your mentee was able to effectively engage with OLS throughout the program?
Yes, they were able to engage                                                                                                                                                                                         7
No, they had difficulty engaging or attending calls                                                                                                                                                                   7
I think Alden struggled in the beginning to keep up with all the homework, especially since her project wasn't actually funded yet so she was limited in what she could actually implement during the OLS program.    1
Did not manage to engage with Mahmood Usman, so not sure.                                                                                                                                                             1
she couldn't engage as much as she wanted                                                                                                                                                                             1
I think they were able to engage enough with the materials, a little less with th community per se becasue of language barriers                                                                                       1
no, he had personal difficulty engaging or attending calls related to his VISA                                                                                                                                        1
Name: count, dtype: int64
Do you think your mentee was able to effectively engage with OLS throughout the program?
Yes, they were able to engage                                                                                                                                                                                         7
No, they had difficulty engaging or attending calls                                                                                                                                                                   7
I think Alden struggled in the beginning to keep up with all the homework, especially since her project wasn't actually funded yet so she was limited in what she could actually implement during the OLS program.    1
Did not manage to engage with Mahmood Usman, so not sure.                                                                                                                                                             1
she couldn't engage as much as she wanted                                                                                                                                                                             1
I think they were able to engage enough with the materials, a little less with th community per se becasue of language barriers                                                                                       1
no, he had personal difficulty engaging or attending calls related to his VISA                                                                                                                                        1
Name: count, dtype: int64
Do you think your mentee was able to effectively engage with OLS throughout the program?
Yes, they were able to engage                                                                                                                                                                                         7
No, they had difficulty engaging or attending calls                                                                                                                                                                   7
I think Alden struggled in the beginning to keep up with all the homework, especially since her project wasn't actually funded yet so she was limited in what she could actually implement during the OLS program.    1
Did not manage to engage with Mahmood Usman, so not sure.                                                                                                                                                             1
she couldn't engage as much as she wanted                                                                                                                                                                             1
I think they were able to engage enough with the materials, a little less with th community per se becasue of language barriers                                                                                       1
no, he had personal difficulty engaging or attending calls related to his VISA                                                                                                                                        1
Name: count, dtype: int64
Do you think your mentee was able to effectively engage with OLS throughout the program?
Yes, they were able to engage                                                                                                                                                                                         7
No, they had difficulty engaging or attending calls                                                                                                                                                                   7
I think Alden struggled in the beginning to keep up with all the homework, especially since her project wasn't actually funded yet so she was limited in what she could actually implement during the OLS program.    1
Did not manage to engage with Mahmood Usman, so not sure.                                                                                                                                                             1
she couldn't engage as much as she wanted                                                                                                                                                                             1
I think they were able to engage enough with the materials, a little less with th community per se becasue of language barriers                                                                                       1
no, he had personal difficulty engaging or attending calls related to his VISA                                                                                                                                        1
Name: count, dtype: int64
Do you think your mentee was able to effectively engage with OLS throughout the program?
Yes, they were able to engage                                                                                                    19
No, they had difficulty engaging or attending calls                                                                               6
They had difficulty engaging with the mentorship side of the program but they were very active attending the community calls.     1
Name: count, dtype: int64

Overview figure#

fig = plt.figure(dpi=300)

gs = fig.add_gridspec(2,2)
ax1 = fig.add_subplot(gs[0, 0])
ax2 = fig.add_subplot(gs[0, 1])
ax3 = fig.add_subplot(gs[1, :])

# A
participant_q1_df.mean(axis=1).plot.barh(
    ax=ax1,
    color=colors['participants'],
    title="How was your overall project leadership experience in OLS?",
    figsize=(20, 10)
)
ax1.set_xlabel('Mean percentage of answers')
ax1.invert_yaxis()
ax1.text(-0.15, 1, "A", transform=ax1.transAxes, size=20, weight='bold')

# B
col = "OLS is helping me work openly"
participant_mid_q1_df.mean(axis=1).plot.barh(
    ax=ax2,
    color=colors['participants'],
    title="OLS is helping me work openly",
    figsize=(20, 10),
    rot=0
)
ax2.set_xlabel('Mean percentage of answers')
ax2.set_ylabel('Score')
ax2.text(-0.15, 1, "B", transform=ax2.transAxes, size=20, weight='bold')

# c
mentor_q1_df.index = ["\n".join(wrap(x, 50)) for x in mentor_q1_df.index]
mentor_q1_df.mean(axis=1).plot.barh(
    ax=ax3,
    color=colors['mentors'],
    title="How were your overall mentorship training and support experience in OLS?",
    figsize=(20, 10)
)
ax3.set_xlabel('Mean percentage of answers')
ax3.invert_yaxis()
ax3.text(-0.07, 1.1, "C", transform=ax3.transAxes, size=20, weight='bold')

#fig.tight_layout()
fig.subplots_adjust(hspace = 0.4)
fig.savefig(Path("../figures/figure-5-feedback.png"), bbox_inches='tight')
../_images/1bf96eed3989aae967f445d7b39b9c566e9d3b229673e128403f4fef9b16c05b.png