Feedback from participants and mentors#

This page shows the result of the mid and post-cohort feedback forms sent to participants and mentors

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
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:
            other_answers.append(a)
            answer_counts['Other'] += v
    return answer_counts, other_answers
colors = {
    "participants": "#3182bd",
    "participant_colormap": "winter",
    "mentors": "#fd8d3c",
    "mentor_colormap": "winter",
}

Mid-cohort#

Participants#

url = "https://docs.google.com/spreadsheets/d/1-p1e2bXW7edR2o0vZ60pP2Su18wvRK9n4atoi-7wVYo/export?format=csv"
cohort_gid = {
    "OLS-1": "814222007",
    "OLS-2": "1061421385",
    "OLS-3": "564694769",
    "OLS-4": "797034637",
    "OLS-5": "414286605",
    "OLS-6": "0",
    "OLS-7": "1676679295",
    "OLS-8": "1949391298",
}
participant_mid_df = {}
answers = {}
for c in cohort_gid:
    participant_mid_df[c] = (pd.read_csv(f"{url}&gid={cohort_gid[c]}")
        .dropna(axis=1,how='all')
        .fillna("")
        .replace(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]
answer_s = pd.Series(answers)
fig, ax = plt.subplots()
fig.set_dpi(300)
answer_s.plot.bar(ax=ax, color=colors['participants'])
plt.ylabel('Number of answers to the survey')
Text(0, 0.5, 'Number of answers to the survey')
../_images/7b8e0be413d8be47460bc433772113c484dcee036ac27458213f38b44455a693.png

“OLS is helping me work openly”#

Range from 1 (Completely disagree) to 5 (Completely agree) - Percentage of answers

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)
sns.heatmap(participant_mid_q1_df[::-1], cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/58843895437a75f6cda5532a0cdfcb1ed55ec8af29f6bbe2807542ee053178ec.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q1_df.plot.bar(ax=ax, colormap=colors['participant_colormap'])
plt.ylabel('Percentage of answers')
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/20d963cea198292028e31bb4b8846a718ee53fb11b54a270d574395f2567a744.png
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/c3b03d92957aa2671c6d2c7c008649fc4bc3c20818ebfa12f2cd355a23169d6f.png

“OLS is helping me encourage others to work openly”#

Range from 1 (Completely disagree) to 5 (Completely agree) - Percentage of answers

participant_mid_q2 = {}
other_answer = []
col = "OLS is helping me encourage others to work openly"
answers = list(range(1, 6))
for c in participant_mid_df:
    participant_mid_q2[c], oa = get_question_possible_answers_counts(col, participant_mid_df[c], answers)
    other_answer += oa
participant_mid_q2_df = pd.DataFrame.from_dict(participant_mid_q2)
participant_mid_q2_df = 100 * participant_mid_q2_df / participant_mid_q2_df.sum()
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(participant_mid_q2_df[::-1], cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/73de972becc2ff89388ad5586a3536ff184c3f947cc8b14c95b2ccfd1a6da94d.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q2_df.plot.bar(ax=ax, colormap=colors['participant_colormap'])
plt.ylabel('Percentage of answers')
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/2457cfe9e1e21a8cf0072f2e85b266134b280134b5515f0f9f00dffeda545cf4.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q2_df.mean(axis=1).plot.bar(ax=ax, color=colors['participants'])
plt.ylabel('Mean percentage of answers')
t = plt.title(col)
../_images/85e10019f7b7ab40d1cdd047924183c7b59aad4f551ee45487202c22b32e6683.png

“Which of the following aspects of the cohort call work well?”#

participant_mid_q3 = {}
other_answer = []
col = "Which of the following aspects of the cohort call work well?"
answers = [
    "Information on before during and after the call", 
    "Introduction and icebreaker led by the hosts", 
    "Talks by the guest speakers", 
    "Breakout room activities",
    "Shared note-taking",
    "Opportunity to get to know others",
    "All of the above",
    "Other"]
for c in participant_mid_df:
    participant_mid_q3[c], oa = get_mcq_possible_answers_counts(col, participant_mid_df[c], answers)
    other_answer += oa
participant_mid_q3_df = pd.DataFrame.from_dict(participant_mid_q3)
participant_mid_q3_df = 100 * participant_mid_q3_df / participant_mid_q3_df.sum()

Other answers:

other_answer
['Side chats on twitter by members.',
 "I like the engagement feeling. It's not a webinar where one can fall asleep",
 'Shared insights by the mentor on the answers shared by the mentee',
 "Wasn't the shared note taking on HackMD? It's also on gDocs?",
 'Written breakout room activities',
 'Having spoken and written spaces',
 'Recording the call and making it available on YouTube',
 'Mentorship by mentors',
 'Love the trainings!',
 'calls are recorded so i can watch later (I am in an odd timezone)',
 'practice how to work with other people',
 'Learning from others ',
 'Providing recordings/notes of calls in a timely manner afterwards. ']
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(participant_mid_q3_df, cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/5c8bdaa6dd9601cff41c8ebab57752e6915c58fe9fa44954cdd39dcd969b9e2f.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q3_df.plot.barh(ax=ax, colormap=colors['participant_colormap'])
plt.xlabel('Percentage of answers')
plt.gca().invert_yaxis()
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/5b470412d40a734b83db9ae4b8fc900ff0c8e2508e49797f6d8145ea642d4225.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q3_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/390f22d5f03dbfc608fb3ccb1a37d5f4f6d4325186d7841b605fed15a6caa3d0.png

“What should we improve in cohort calls?”#

participant_mid_q4 = {}
other_answer = []
col = "What should we improve in cohort calls?"
answers = [
    "Information on before during and after the call", 
    "Introduction and icebreaker led by the hosts", 
    "Talks by the guest speakers", 
    "Breakout room activities",
    "Shared note-taking",
    "Opportunity to get to know others",
    "All of the above",
    "Other"]
for c in participant_mid_df:
    participant_mid_q4[c], oa = get_mcq_possible_answers_counts(col, participant_mid_df[c], answers)
    other_answer += oa
participant_mid_q4_df = pd.DataFrame.from_dict(participant_mid_q4)
participant_mid_q4_df = 100 * participant_mid_q4_df / participant_mid_q4_df.sum()

Other answers:

other_answer
['',
 'breakout room instruction',
 'I have no suggestions',
 'Cohort calls were rather long and it was difficult to find time to participate in',
 'so I usually saw the Youtube videos. I guess I would participate more often if calls were shorter.',
 'shared note taking has been difficult on hack md',
 'sometimes at the beginning it was hard to find all of the links to assignments',
 'so it would be nice to have those all in the schedule too',
 'No suggestions in this regard.',
 '',
 'nothing ',
 'The talks are very interesting',
 'More time for questions for the speakers',
 'Everything is fine',
 'Nothing',
 'Everything works fine:)',
 '',
 'na',
 'Ocasionally I lioked for the recording and it was not up after a few days but it is completely understandable ',
 'Maybe include brief',
 'regular project updates',
 'to add extra accountability and make it easier to see ways to collaborate/assist?',
 'Maybe more discussions/talks by the experts',
 'I have not been getting much out of the breakout room activities yet. I think that meeting with experts there will be more opportunity to get to know other folks in the cohort',
 'Is there a way to set automated email for checking in individually with different projects (personal email asking how they are doing?)',
 'Timming. Es mucho para hacer en poco tiempo.',
 'The timing',
 'narrative and speed of the calls has been good for me! I o',
 'None ',
 '',
 'Timing',
 'Maybe read the ice breaker responses for more acknowledgment of responses. ',
 'none',
 'nothing',
 'it works',
 'Nonr',
 "It's really great! I've loved the speakers and have learnt so much. ",
 '-',
 'nothing as of now',
 "Haven't attended much. Was seeing mainly in Youtube",
 'Adding more time for breakout rooms',
 'One hour or 30mins reminders before cohort calls',
 'short videos to be shared with students instead of online face to face talks (e-meetings)',
 'Translation in french ',
 'Nothing in particular comes to mind',
 'Break out rooms are often too short to get to know other people',
 'Which of the following aspects of the cohort call work well',
 'None of the above ',
 'more in depth',
 'maybe let some presentations be longer',
 'Time the calls are scheduled to start ',
 'scheduling',
 'Add more time for break out room activities ',
 'so would like to skip the question.',
 'Sharing recording transcripts also would be helpful. ',
 '',
 'I think is more my difficulty to adapt. You are making and excellent job!']
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(participant_mid_q4_df, cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/51eb4729e35c31f288ef10148f6c4e4d9a79166cfc9a3f21d01f41b78b32ad9e.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q4_df.plot.barh(ax=ax, colormap=colors['participant_colormap'])
plt.xlabel('Percentage of answers')
plt.gca().invert_yaxis()
plt.title(col)
#plt.savefig('../', bbox_inches='tight')
Text(0.5, 1.0, 'What should we improve in cohort calls?')
../_images/19946a7abb30ea51b713a8b11f4a2f8388f43375ad0150653c36f21d678c10cc.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q4_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/4d0db648303cf32177a653a863968652983c96edb0f94efabbe553d497fbb03c.png

“Which of the following statements is true regarding the usefulness of the topics introduced at the OLS?”#

participant_mid_q5 = {}
other_answer = []
col = "Which of the following statements is true regarding the usefulness of the topics introduced at the OLS?"
answers = [
    "I have been able to use ALL concepts introduced at OLS so far",
    "I have been able to use MOST concepts introduced at OLS so far",
    "I have been able to use SOME concepts introduced at OLS so far",
    "I have been able to use VERY FEW concepts introduced at OLS so far",
    "I have NOT been able to use any concepts introduced at OLS so far"]
for c in participant_mid_df:
    participant_mid_q5[c], oa = get_question_possible_answers_counts(col, participant_mid_df[c], answers)
    other_answer += oa
participant_mid_q5_df = pd.DataFrame.from_dict(participant_mid_q5)
participant_mid_q5_df = 100 * participant_mid_q5_df / participant_mid_q5_df.sum()
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(participant_mid_q5_df, cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/9b1b89081937fd151217d1f027bb15dbfef641a9a50aea5be3a70424488895f9.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q5_df.plot.barh(ax=ax, colormap=colors['participant_colormap'])
plt.xlabel('Percentage of answers')
plt.gca().invert_yaxis()
plt.title(col)
#plt.savefig('../', bbox_inches='tight')
Text(0.5, 1.0, 'Which of the following statements is true regarding the usefulness of the topics introduced at the OLS?')
../_images/675853d0e38c9f199f58916181573920fb052c5f09559344b006eca2aa27c084.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q5_df.mean(axis=1).plot.barh(ax=ax, color=colors['participants'])
plt.xlabel('Mean percentage of answers')
plt.gca().invert_yaxis()
plt.title(col)
Text(0.5, 1.0, 'Which of the following statements is true regarding the usefulness of the topics introduced at the OLS?')
../_images/71fd8924ccedddab9877c713d1e5257a50937d9e3ba377d2a51f0d3912db47c1.png

“How much time do you spend on assignments on average? (not meetings)”#

participant_mid_q6 = {}
other_answer = []
col = "How much time do you spend on assignments on average? (not meetings)"
answers = [
    "<1 hour / week",
    "1-2 hours / week",
    "2-3 hours / week",
    "3+ hours / week",
    "Other"]
for c in participant_mid_df:
    participant_mid_q6[c], oa = get_question_possible_answers_counts(col, participant_mid_df[c], answers)
    other_answer += oa
participant_mid_q6_df = pd.DataFrame.from_dict(participant_mid_q6)
participant_mid_q6_df = 100 * participant_mid_q6_df / participant_mid_q6_df.sum()

Other answers:

other_answer
['I usually read more on the assignments and materials during my free hours. I am not sure how many hours I spend on them though.',
 "As I'm severely behind schedule with my project work at the moment (extensive work travelling followed by the current chaotic situation), I can't answer this and the previous question reliably. I'm sure I'll use (almost) ALL the concepts introduced as soon as I'll manage catching up. I've been spending 0-2 hours / week with the assignments, but I would have needed / will need much more time to keep up.",
 '1-2 hours / week the weeks before situation got crazy in Spain (first week of March)',
 "Hard to say as some weeks were a lot and then some weeks I didn't do the homeworks",
 '1 hr / week sometimes + <1 hr / week some time depending upon the commitments or assignments',
 '',
 '"some" hours when I can, unfortunately not on a regular basis']
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(participant_mid_q6_df[::-1], cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/80ffe193dc2767a941688641c7cbd9d2621e2e77fe2d4ad0a0ba3c16f0f11374.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q6_df.plot.barh(ax=ax, colormap=colors['participant_colormap'])
plt.xlabel('Percentage of answers')
plt.gca().invert_yaxis()
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/5e9e76a9ea8df7bf79681a0e30ab8fba84f94df6251017db2c72cabd80e78399.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q6_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/5067ecbf01bc272e3dd838ce695117590725751ab1ff7ac2fa16dcad585020d0.png

“Which of the following mode of communication you find most effective?”#

participant_mid_q7 = {}
other_answer = []
col = "Which of the following mode of communication you find most effective?"
answers = [
    "Weekly emails from the organisers",
    "Slack channels to connect with others",
    "Google groups for tracking weekly information",
    "Website with links to various resources",
    "All of the above",
    "Other"]
for c in participant_mid_df:
    participant_mid_q7[c], oa = get_mcq_possible_answers_counts(col, participant_mid_df[c], answers)
    other_answer += oa
participant_mid_q7_df = pd.DataFrame.from_dict(participant_mid_q7)
participant_mid_q7_df = 100 * participant_mid_q7_df / participant_mid_q7_df.sum()

Other answers:

other_answer
['Gitter channel to connect with others',
 'I think there might be too many methods of communication about OLS? Sometimes I have a hard time finding information about something specific',
 "especially if it's in a Google Doc from a cohort call. ",
 'Slack channel',
 'Slack',
 'Slack instead of Gitter',
 'youtube recorded cohort-calls',
 "I didn't use Gitter nor the Google Groups. Slack is pretty useful and the weekly emails too. The website & GitHub are helpful as well.",
 'I miss some live/online meetings to get to know people',
 'not via tools.',
 'Review notes from mentor mentors',
 '',
 'Whatsapp ',
 'OLS Calendar',
 'Slack is useful',
 'but is a shame that is a free version so lose access to some posts after 90 days. Perhaps could migrate info to open source version',
 'Mattermost instead? ']
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(participant_mid_q7_df, cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/2d6bed579285cf347878d3c57aee49ca5a51f3d38c5f2f651d164dc1c94c211c.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q7_df.plot.barh(ax=ax, colormap=colors['participant_colormap'])
plt.xlabel('Percentage of answers')
plt.gca().invert_yaxis()
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/8da01a4e7a19511b20e30e10b164ca17b0cf6d307d3e969a3b7ec59a84302e0e.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q7_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/d4dd94373cea10ab2a79325c5c71d7905e15b0c42f84ca0ed0bd09d7eb984995.png

“How many cohort calls have been able to attend or watch in this round?”#

participant_mid_q8 = {}
other_answer = []
col = "How many cohort calls have been able to attend or watch in this round?"
answers = [
    "I have attended all the cohort calls so far",
    "I have attended 1-2 cohort calls and watched the missed call on YouTube",
    "I watched all the cohort calls on YouTube but have not attended any call so far",
    "I have yet to watch all the cohort call videos",
    "Other"]
for c in participant_mid_df:
    if col in participant_mid_df[c]:
        participant_mid_q8[c], oa = get_mcq_possible_answers_counts(col, participant_mid_df[c], answers)
        other_answer += oa
participant_mid_q8_df = pd.DataFrame.from_dict(participant_mid_q8)
participant_mid_q8_df = 100 * participant_mid_q8_df / participant_mid_q8_df.sum()

Other answers:

other_answer
['I have attended all the cohort calls except one',
 'which I watched on YouTube',
 'I have attended 4 cohort calls',
 'and watched the missed call on YouTube',
 'I have attended all except one',
 'I have missed two cohort calls and watched the missed one on YouTube',
 "I've been able to join most cohort calls",
 'but have caught up on some missed sessions on YouTube.',
 'I have attended all calls except one',
 '3-4 cohort calls and the rest on Youtube',
 'Attended 3 calls and watched the missed call on youtube. ',
 'I have missed 2 cohort calls and watched the call on YouTube',
 'i have attended most of the cohort calls ',
 "I was not able to attend the first call or last week's call. ",
 'I have attended 3 cohort calls',
 'and watched the missed call on YouTube',
 'I have attended more than 2 cohort calls',
 'and watched some missed calls on YouTube but there are some of them that I have yet to watch',
 'i have attended in most cohort calls and watched  2 on youtube ',
 'Some']
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(participant_mid_q8_df, cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/78d23ddf1fd2d5326fbe57e118204a540d9de2ce47819169168aa8c92a206103.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q8_df.plot.barh(ax=ax, colormap=colors['participant_colormap'])
plt.xlabel('Percentage of answers')
plt.gca().invert_yaxis()
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/c3faa8ac4dd1a94bdc7588fa14fcbb3c8505e52272e27af258a06557a5eac06f.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q8_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/be3e7503183d108eed83ac4dd8829ec788a61e3672a37032c2b7439204566b86.png

“To what extent did your mentor meet your expectations?”#

Range from 1 (Not at all) to 5 (Completely)

participant_mid_q9 = {}
other_answer = []
col = "To what extent did your mentor meet your expectations?"
answers = list(range(1, 6))
for c in participant_mid_df:
    participant_mid_q9[c], oa = get_question_possible_answers_counts(col, participant_mid_df[c], answers)
    other_answer += oa
participant_mid_q9_df = pd.DataFrame.from_dict(participant_mid_q9)
participant_mid_q9_df = 100 * participant_mid_q9_df / participant_mid_q9_df.sum()
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(participant_mid_q9_df[::-1], cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/403429706b875ba123eecfb3f1a518fa4c3134165d5bf2a67435ffb066391387.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q9_df.plot.bar(ax=ax, colormap=colors['participant_colormap'])
plt.ylabel('Percentage of answers')
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/1c554f19934334e2d9b85e688b95c8018b665e09d3dbe9a196584fa16d4e5e16.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q9_df.mean(axis=1).plot.bar(ax=ax, color=colors['participants'])
plt.ylabel('Mean percentage of answers')
t = plt.title(col)
../_images/5524951fbc39ee3393a25fd576dc9bb7b1be083c84013740941fe0b2cdb1b88c.png

“Would you like to work with your mentor in future?”#

participant_mid_q10 = {}
other_answer = []
col = "Would you like to work with your mentor in future?"
answers = ["Yes", "No", "Maybe"]
for c in participant_mid_df:
    participant_mid_q10[c], oa = get_question_possible_answers_counts(col, participant_mid_df[c], answers)
    other_answer += oa
participant_mid_q10_df = pd.DataFrame.from_dict(participant_mid_q10)
participant_mid_q10_df = 100 * participant_mid_q10_df / participant_mid_q10_df.sum()
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(participant_mid_q10_df, cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/89e730089afe5db27d9d6b2faf0d2f69f3cc26e321ce0c58d6825570b9d11003.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q10_df.plot.bar(ax=ax, colormap=colors['participant_colormap'])
plt.ylabel('Percentage of answers')
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/c6cd58cbab8f52bea2283c8afb3ff2352223c5889259ce0e4b7f75136fb40e0a.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q10_df.mean(axis=1).plot.bar(ax=ax, color=colors['participants'])
plt.ylabel('Mean percentage of answers')
t = plt.title(col)
../_images/a3ecf6331b1b0a4c4e7fca8419f8e64035251e758679e961c0219ab86e90c5b8.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_mid_q10_df.mean(axis=1).plot.pie()
t = plt.title(col)
../_images/b08d05b1e55ee4dc006583ff4fdf0a2133406a07f469383963307e6e19874b20.png

Post-cohort#

Participants#

url = "https://docs.google.com/spreadsheets/d/1TlJ8_m1G4vLz0FH_IEgTGqjeQNvH8IYk0RM3wzaYanQ/export?format=csv"
cohort_gid = {
    'OLS-1': '1016086495',
    'OLS-2': '1605575560',
    'OLS-3': '1197781372',
    'OLS-4': '992604217',
    'OLS-5': '0',
    'OLS-6': '1071501789',
    'OLS-7': '792445015'
}
participant_df = {}
answers = {}
for c in cohort_gid:
    participant_df[c] = (
        pd.read_csv(f"{url}&gid={cohort_gid[c]}")
        .dropna(axis=1,how='all')
        .fillna("")
        .replace(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]
answer_s = pd.Series(answers)
answer_s
fig, ax = plt.subplots()
fig.set_dpi(300)
answer_s.plot.bar(ax=ax, color=colors['participants'])
plt.ylabel('Number of answers to the survey')
Text(0, 0.5, 'Number of answers to the survey')
../_images/57ee85b63154bab3b48f61fec1dfcf2e32ce117ffdca227a1cd4258dee446c67.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()

Other answers:

other_answer
['Goals evolved as we learned but we were very productive ',
 "I had some personal goals which were not completed - but that's fine :)"]
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(participant_q1_df, cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/7648f4ccdf771b044674eb545051e43f96e008f9bf9e05f42f9610bba9d6e554.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_q1_df.plot.barh(ax=ax, colormap=colors['participant_colormap'])
plt.xlabel('Percentage of answers')
plt.gca().invert_yaxis()
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/94c1868c4f262bc5118ceb02d002b92059a38cb4746bc68406e85a5ad75d6d3f.png
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/178a42e5cd94daae8b275d2c149fe1c36995d5be506d45abe3b92f59913acb6f.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()
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(participant_q2_df, cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/a71987c0d49814d0a90e1b57b24edeab0679ec876bdae2bb331d25dad4633a15.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_q2_df.plot.barh(ax=ax, colormap=colors['participant_colormap'])
plt.xlabel('Percentage of answers')
plt.gca().invert_yaxis()
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/af8cd8948093f5bc2216d2589186e8a5a7897e82133b10d126d105c56fd952f3.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_q2_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/a4e14433a407eeea4893decb9c098d9e389c6ff41cd5b8b98c207803372c8048.png

“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()
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(participant_q3_df, cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/243630de73068bb1d9545d67a04b6909957467060564e0a6c66c707a4fbf648d.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_q3_df.plot.barh(ax=ax, colormap=colors['participant_colormap'])
plt.xlabel('Percentage of answers')
plt.gca().invert_yaxis()
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/13b3f768f015874d1286e093dd520f2fc1fc658484f1d3dd410a5915a6bd6919.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_q3_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/0a0268a528b6d6dd6173e4e723754e2b49a10494114412ffd9f90dbb72a16465.png

“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()

Other answers:

other_answer
['Breakout rooms were really nice exploit to get to know other participants and share experience. ',
 "The ones I haven't ticked are mainly because I haven't caught up with them yet. Generally - all useful (in varying amounts). The less useful ones were only less useful because I knew a moderate amount about them already. Several",
 'that I thought I knew a fair amount about',
 "turns out I didn't / there was still a lot for me to learn!",
 'Breakout rooms was so useful too.',
 'As I read this list I am reminded on all I learnt and all I hope to read further into!',
 "They were all useful! The ones I've ticked were just the particularly relevant ones at this stage.",
 'Actually all were useful',
 'those ones were just my favourite ones :)',
 'I still need to watch some of the recordings',
 "Can't accurately answer as haven't worked through all of the sessions",
 'Social entreprise',
 'hardware ',
 'I have not been able to take advantage of the co-working due to a lack of time',
 'but I would have liked to do it.']
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(participant_q4_df[::-1], cmap='Greens', linewidths=0.5, yticklabels=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal', fontsize=6)
plt.show()
../_images/aa401dc8ad2366a83069e9bc2d556cade135c555ab4de640d19cd2e456b71204.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_q4_df.plot.barh(ax=ax, colormap=colors['participant_colormap'])
plt.xlabel('Percentage of answers')
plt.gca().invert_yaxis()
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/597b13dcde654cf80ce72cc4acaa852880272068e22ff7b836607fc0073c5ab0.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_q4_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/778981b1f2e5ba4c575338076e80365036503bde34b3fe5fa6db260048d82834.png

Group by topics

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())
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(participant_q4_by_topic_df[::-1], cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/387c218f12687e75711d4197c6f901f23bef01dab9034e7ad82e861c0ec8eb4b.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_q4_by_topic_df.plot.barh(ax=ax, colormap=colors['participant_colormap'])
plt.xlabel('Percentage of answers')
plt.gca().invert_yaxis()
plt.ylabel('')
t = plt.title(col)
../_images/06f2ad21a8eae56bf45d41082a35a2f5478692cc9bef7beff81190652c775718.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_q4_by_topic_df.mean(axis=1).plot.barh(ax=ax, color=colors['participants'])
plt.xlabel('Mean percentage of answers')
plt.ylabel('')
plt.gca().invert_yaxis()
t = plt.title(col)
../_images/7d73734f7e219cbff1f87f0b7fff61808a178fdd7775098cccae22f3a3108cbd.png

“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()

Other answers:

other_answer
['',
 'I would like to receive mentoring training and I will be good to help a mentor in some of the mentoring work in either OLS-2 or subsequent cohorts.',
 "I don't feel qualified yet",
 'and I feel I would do a disservice to the mentee',
 'definitely',
 "tho depending on the role. I'd love to be a mentor but not sure my experience will be as useful to academics ",
 "I'm not sure I have the skills as a mentor/expert?",
 'Well',
 'as a mentor or expert',
 "but right now I'm crazy busy and need to focus on some work projects. I'm happy to do coordinate a coworking call for OLS-3 (or something similar which is low threshold) and I can be in the loop for OLS-4 or later for a mentor/expert role (I'm happily assuming it continues forever) ",
 'I would like to return to OLS',
 'as I need to prioritize some other aspects of my life/work this year. ',
 'but probably not until next year at least',
 'as I indicated)',
 "I'd love to be involved in the future (e.g.",
 'I am open to discussing further engagement but do not want to take on more than I am equipped to deliver.',
 'I would love to but I dont think I have suffiecent expertise yet. ',
 'I can find opportunity for improvements. Then I love to join as a mentor.',
 'Not yet actually. I attended this project as a helper. My contribution was not much. I surely need to improve myself. Maybe after an individual attendence to a project for OLS-3',
 'I would like to return as a mentor or expert but not in the next year since I promised myself to not commit to more projects. Please keep in touch though!',
 'I am not sure yet but ask me later when you have launched OLS-4',
 'I may join as a mentee cause ı need to learn more',
 'still ! :)',
 'Please contact me for OLS-5 :)',
 'Maybe OLS-5. I will need to re-assimilate all I was taught in cohort',
 'for OLS-4 or later (whatever can fit your )',
 "Not sure whether I'm totally prepared for it",
 "but I'd like to :)",
 'No',
 'I would not be able to return to OLS-5',
 "I don't have much experience as an active OS community member or developer. I would feel comfortable with mentoring someone taking their first steps on programming or web dev.",
 "I'd like to return as a mentor not now",
 'but in the near future (e. g.',
 'OLS-6)',
 'I have applied for OLS-5 as a mentee to build my project further.',
 'No',
 'I would not be able to return to OLS-6',
 '',
 'I will return as a mentee',
 'I would take a break but please keep me informed about the next cohort?',
 '',
 'I will return as a mentee',
 'I would take a break but please keep me informed about the next cohort?',
 'No',
 'I would not be able to return to OLS-8',
 "I don't know how but I'd like to stay involved!",
 "I'd like to help but would need to know expected time allocations"]
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(participant_q5_df[::-1], cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/ff9018b205190e16a11e6c45390e010a80381d7d9f6a0ef1a552c3923bafa6a3.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_q5_df.plot.barh(ax=ax, colormap=colors['participant_colormap'])
plt.xlabel('Percentage of answers')
plt.gca().invert_yaxis()
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/51583a0fc2fb234caaaf5f3e6a2ba0eab626cca18ef78a7cfe9ed9d668a3171a.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_q5_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/8891732c2e6f53cfde1b8b6fe2ab1a9555d6a5f87ce1ccacfc429ad3ab2ae8a7.png

“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()
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(participant_q6_df[::-1], cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/7612e807e3f0a9f5bdd904617db5576b615ffa4cbefd5f5378cbade393c116eb.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_q6_df.plot.bar(ax=ax, colormap=colors['participant_colormap'])
plt.ylabel('Percentage of answers')
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/df007211ff453a994dc5ac06aae06a22c97df20ff2d01e275e384bd9b0f44f57.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_q6_df.mean(axis=1).plot.bar(ax=ax, color=colors['participants'])
plt.ylabel('Mean percentage of answers')
t = plt.title(col)
../_images/2108eb28face401176344a53cd0b9e8b1b4b17d17e6612380d8672e95da3be91.png
fig, ax = plt.subplots()
fig.set_dpi(300)
participant_q6_df.mean(axis=1).plot.pie()
t = plt.title(col)
../_images/3ebd9073666ae0f249543bd3e66f26894d3f77ada053b46fe86ca785f937e509.png

Mentors#

url = "https://docs.google.com/spreadsheets/d/1JOnjaojSYz8J0Yg27IS73MtraIL36BgtavJWlvBuGtI/export?format=csv"
cohort_gid = {
    'OLS-1': '922543579',
    'OLS-2': '293719636',
    'OLS-3': '901891477',
    'OLS-4': '186857041',
    'OLS-5': '0',
    'OLS-6': '227796069',
    'OLS-7': '1608148546'
}
mentor_df = {}
answers = {}
for c in cohort_gid:
    mentor_df[c] = (
        pd.read_csv(f"{url}&gid={cohort_gid[c]}")
        .dropna(axis=1,how='all')
        .fillna("")
        .replace(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]
answer_s = pd.Series(answers)
answer_s
fig, ax = plt.subplots()
fig.set_dpi(300)
answer_s.plot.bar(ax=ax, color=colors['mentors'])
plt.ylabel('Number of answers to the survey')
Text(0, 0.5, 'Number of answers to the survey')
../_images/777af6459f7ae10bc0719b3b97447925d9d1252500e91a329bebcd3443735ae6.png

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

Possible 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

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()

Other answers:

other_answer
['I missed out on some mentor trainings (due to scheduling conflicts',
 'and my feeling comfortable from previous experience mentoring for MozOL)',
 'but the ones I attended were great! ',
 'It would have been good to maybe have a reflection / consolidation session for mentors at the end of the programme but I really appreciated the training organised and the support from other mentors ',
 'I found the experience frustrating. I think that the mentees and I failed to clarify and describe what we expected from the relationship. My feeling through the whole program was that they were looking for a mentor who gave them specific knolwedge',
 'ideas for solutions to their problems - while I wanted to be more of a coach',
 'someone to listen and provide structure to their discussions. I was left feeling that i had done a poor job as a mentor.',
 'I found mentoring this project really inspiring. Sometimes Annalee had queries I did not know the answer to but the community allowed me to suggest others for her to engage with (thanks all!) and we talked through the challenges together.',
 'I could not invest as much time as I wanted. I understimated the issue of getting to meeting in the evenings due to time differences',
 'Due to circumstances',
 'the mentees were not able to fully engage with the project and OLS in general.',
 'enriching and overall great. ',
 'I expressed some doubts and insecurity about the future relationship with my mentee becasue of age and gender difference and it was great to have Paz and Mayya checking in about how it was going :)',
 'Some more (structured) communication between mentors would be great.',
 'For this round of mentoring I found it tougher to engage because of other commitments. ',
 'I felt supported as a mentor and the training offered in the OLS-6 was adequate',
 'Maybe it could be useful for future mentors to plan their training before they meet their mentees for the first time so they feel more confident.  ']
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(mentor_q1_df[::-1], cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/8c6735451af1e8327cf2cf69073f3ea25d2930412d76dc15c1594348f1fff9e2.png
fig, ax = plt.subplots()
fig.set_dpi(300)
mentor_q1_df.plot.barh(ax=ax, colormap=colors['mentor_colormap'])
plt.xlabel('Percentage of answers')
plt.gca().invert_yaxis()
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/453ac4796da5826bd650f3379bb8edac3f63c045cf77f334a04c5eb42bbb9d88.png
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/40a559653cc5cafac1ea4b5f757ecd91dd4f70b9b08b03bd6c35511a36a98e44.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()
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(mentor_q2_df[::-1], cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/197af34005083df43b313d5777eb5a877d63d729150f5961ed51efb3b06d77b3.png
fig, ax = plt.subplots()
fig.set_dpi(300)
mentor_q2_df.plot.barh(ax=ax, colormap=colors['mentor_colormap'])
plt.xlabel('Percentage of answers')
plt.gca().invert_yaxis()
plt.title(col)
#plt.savefig('../', bbox_inches='tight')
Text(0.5, 1.0, 'How was your overall experience with the mentoring calls with your mentee?')
../_images/f5d22c38ce3d5eb798dfe325f5603a0ad66990cd60f1ab4bfdac01036bb9373b.png
fig, ax = plt.subplots()
fig.set_dpi(300)
mentor_q2_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/bc47687a20d1133a477cc60c70f22861f8e04f202afacd6f670b3f5c6d933f27.png

“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()

Other answers:

other_answer
['Yes',
 "but I don't know how yet! Could be any of the three ways...",
 '',
 'but maybe relevant only if there is applicants from ecology / biodiversity fields like it was in OLS2',
 'I have signed up as both an expert and mentor for OLS-3',
 'I would like to not use platform that collects data (more details in email)',
 "I've signed up as both expert and mentor but I'm happy to relay the baton and give this excellent opportunity to others.",
 'I am not sure yet but ask me later when you have launched OLS-4',
 'I am keen to open this up and invite more building energy researchers - this network is developing informally so I would like to plan further developing a community',
 'either as a mentee',
 'mentor or expert. I just need to think it through/discuss.',
 'I should have more time in September to be able to put in more time into this during working hours: especially if I can get the credits for the PhDs sorted out and have some of them apply. ',
 "I'd like to take a break for OLS-4",
 'but please contact me for OLS-5 :)',
 'I checked yes to the collaborator option',
 'but actually',
 'I want to know what this means exactly.',
 'No',
 'I would not be able to return',
 'I love this community',
 'I would like to continue being involved in OLS',
 'but need to assess my possible time commitments over the next few months first',
 'Participant',
 'Also happy to be a reviewer this round (have registered already)',
 'Not sure about the time/duties of the steering committee',
 'but would be happy to know more about it',
 '',
 'Yes',
 "I'd like to return as a mentor",
 "I'd like to return as an expert",
 'I am interesting in joining the OLS steering committee',
 "I'd like to return as a collaborator to run this program in my network",
 'No',
 'I would not be able to return to OLS-8',
 'I would be happy to help out in anyway. There is wonderful overlap with the eLife Ambassadors community. Looking forward to discussing',
 'but can be a mentor in OLS-8 if needed',
 'Happy to leave mentoring to other people',
 "I've been thinking on a way to get the students on my community to participate on OLS regularly. Let's chat!",
 'I may join back as a mentor after my defence (probably after september.))',
 'I am on the last leg of my PhD so I dont have abandwidth to take up other commitments. While I woould like to remain a pat of the network ',
 'I won’t have time :/ ']
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(mentor_q3_df[::-1], cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/ed2df2ccaf6653eda96ab8fb51871b556e0035b6d385927f38abc66bfe6ddecc.png
fig, ax = plt.subplots()
fig.set_dpi(300)
mentor_q3_df.plot.barh(ax=ax, colormap=colors['mentor_colormap'])
plt.xlabel('Percentage of answers')
plt.gca().invert_yaxis()
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/f06dd32f70ccc85762d2e3d2f194aa53cfac00fa91a617101b2c22904eae2842.png
fig, ax = plt.subplots()
fig.set_dpi(300)
mentor_q3_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/05b89958472286f787076d1c658b10517d24037281938fa71cdf238f669b3bac.png

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

Possible answers:

  • Yes they were able to engage

  • No they had difficulty engaging or attending calls

  • Other

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()

Other answers:

other_answer
['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.',
 "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. ",
 '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.',
 "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.",
 'Perhaps not all members of the team but most of them',
 '',
 "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.",
 'Did not manage to engage with Mahmood Usman, so not sure. ',
 "she couldn't engage as much as she wanted",
 'I think they were able to engage enough with the materials, a little less with th community per se becasue of language barriers',
 'no, he had personal difficulty engaging or attending calls related to his VISA ',
 'They had difficulty engaging with the mentorship side of the program but they were very active attending the community calls.']
fig, ax = plt.subplots()
fig.set_dpi(300)
sns.heatmap(mentor_q4_df[::-1], cmap='Greens', linewidths=0.5, annot=True)
plt.xticks(rotation=45)
plt.yticks(rotation='horizontal')
plt.show()
../_images/58259ae3b9ed61222b1e7efa0d725d9b1ea262da4308ed557af2b7329fcefb16.png
fig, ax = plt.subplots()
fig.set_dpi(300)
mentor_q4_df.plot.barh(ax=ax, colormap=colors['mentor_colormap'])
plt.xlabel('Percentage of answers')
plt.gca().invert_yaxis()
t = plt.title(col)
#plt.savefig('../', bbox_inches='tight')
../_images/b92763c590a2df301df1291e37c54874b5b9fdf4836e7f879b7a15b56ef0b580.png
fig, ax = plt.subplots()
fig.set_dpi(300)
mentor_q4_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/21435fa7fa4a034fb0966bc2786b9c7402d71b6222caf769e3e241f87a9c28e9.png
fig, ax = plt.subplots()
fig.set_dpi(300)
mentor_q4_df.mean(axis=1).plot.pie()
t = plt.title(col)
../_images/a6ab8a550346dabb2f9d9f59d8d8f51e6e0ebdf00e0a47ed0a5d865e549bb698.png