{ "cells": [ { "cell_type": "markdown", "id": "c67837a6-d5e1-469d-8f5b-eaf1dcf013f3", "metadata": {}, "source": [ "# Training Materials and a Video Library" ] }, { "cell_type": "markdown", "id": "c3616889-4ccb-42ee-acaa-b1b1989d115f", "metadata": {}, "source": [ "By the end of the 8th cohort, a total of 81 cohort calls (80 hours of training delivery, not including group discussions) have taken place during which 124 speakers gave 233 talks on the different topics planned in the curriculum (Figure 1B). Call recordings on the OLS YouTube channel received over 7,300 views (August 2024). They are embedded in the cohort schedule page on the website together with call metadata, learning objectives following Bloom’s taxonomy, details about speakers, and links to slide decks.\n", "\n", "To make this Open Education Material easier to find and reuse, a video library of the talks has been created and made available online at [https://openlifesci.org/openseeds/library.html](https://openlifesci.org/openseeds/library.html). The 233 videos have been annotated and organized into 5 topics (\"Tooling for Project Design\", \"Tooling for Collaboration\", \"Open Science\", \"Project, Community & Personal Management\", \"Open Leadership\") and 32 subtopics. These talks and the calls are also listed on TeSS, the ELIXIR Training Registry and Catalog [(Beard et al. 2020)](https://www.zotero.org/google-docs/?YP7C60)." ] }, { "cell_type": "code", "execution_count": 1, "id": "61f52b10", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "from pathlib import Path\n", "import yt_dlp" ] }, { "cell_type": "code", "execution_count": 2, "id": "8a01525e", "metadata": {}, "outputs": [], "source": [ "library_df = pd.read_csv(Path(\"../data/library.csv\"), index_col=0, na_filter= False)" ] }, { "cell_type": "markdown", "id": "0b7e606a-ffaa-4dae-b9be-971fc2722ec9", "metadata": {}, "source": [ "Number of cohort calls with videos" ] }, { "cell_type": "code", "execution_count": 3, "id": "5ff2d4c0-bacf-4ffd-a1b1-02cdab2d6a5f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "81" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(library_df.groupby(\"date\").count())" ] }, { "cell_type": "markdown", "id": "60bcfa69-6f97-4b1f-aac0-61690769993d", "metadata": {}, "source": [ "Number of talks" ] }, { "cell_type": "code", "execution_count": 4, "id": "e4d7fb69-b1e9-44fe-91e9-dcdb872e252a", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "236" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(library_df)" ] }, { "cell_type": "markdown", "id": "26a06af9-7268-499c-81e9-5fedeaf43ff7", "metadata": {}, "source": [ "Number of speakers" ] }, { "cell_type": "code", "execution_count": 5, "id": "1ae27d96", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "124" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(library_df.groupby(by=\"speakers\").count())" ] }, { "cell_type": "markdown", "id": "aeff1132-a5b7-4e52-9563-3e6027ac5a24", "metadata": {}, "source": [ "The video library contains available videos from talks in Open Seeds cohort calls. " ] }, { "cell_type": "markdown", "id": "4360994c-9d82-4400-a720-335417ac866d", "metadata": {}, "source": [ "Tags and subtags" ] }, { "cell_type": "code", "execution_count": 6, "id": "edd5cbcf-9f29-4f6f-9814-4146fe71fa1e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Total
tagsubtag
Not sortedNot tagged8
Open LeadershipOpen Leadership in Practice30
Open Life ScienceOLS Introduction12
Open ScienceOpen Access Publication8
Open Data14
Open Educational Resources7
Open Engagement of Social Actors7
Open Evaluation5
Open Hardware6
Open Science Infrastructures3
Open Science Introduction3
Open Source Software15
Openness to Diversity of Knowledge3
Project, Community & Personal ManagementAgile & Iteractive Project Management6
Ally Skills for Open Leaders4
Community Design for Inclusivity1
Community Interactions6
Equity, Diversity and Inclusion (EDI)6
Mountain of Engagement8
Personal Ecology9
Personas & Pathways7
Tooling for CollaborationCode Review3
Code of Conduct8
GitHub Introduction6
Good Coding Practices3
Open Licensing8
Package Management1
README8
Setting up a project3
Tooling for Project DesignOpen Canvas13
Project Roadmapping13
Tooling for Project Design Introduction2
\n", "
" ], "text/plain": [ " Total\n", "tag subtag \n", "Not sorted Not tagged 8\n", "Open Leadership Open Leadership in Practice 30\n", "Open Life Science OLS Introduction 12\n", "Open Science Open Access Publication 8\n", " Open Data 14\n", " Open Educational Resources 7\n", " Open Engagement of Social Actors 7\n", " Open Evaluation 5\n", " Open Hardware 6\n", " Open Science Infrastructures 3\n", " Open Science Introduction 3\n", " Open Source Software 15\n", " Openness to Diversity of Knowledge 3\n", "Project, Community & Personal Management Agile & Iteractive Project Management 6\n", " Ally Skills for Open Leaders 4\n", " Community Design for Inclusivity 1\n", " Community Interactions 6\n", " Equity, Diversity and Inclusion (EDI) 6\n", " Mountain of Engagement 8\n", " Personal Ecology 9\n", " Personas & Pathways 7\n", "Tooling for Collaboration Code Review 3\n", " Code of Conduct 8\n", " GitHub Introduction 6\n", " Good Coding Practices 3\n", " Open Licensing 8\n", " Package Management 1\n", " README 8\n", " Setting up a project 3\n", "Tooling for Project Design Open Canvas 13\n", " Project Roadmapping 13\n", " Tooling for Project Design Introduction 2" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tag_df = (\n", " library_df\n", " .groupby([\"tag\", \"subtag\"])\n", " .count()\n", " .drop(columns=[\"title\", \"date\", \"cohort\", \"slides\", \"speakers\"])\n", " .rename(columns={\"recording\": \"total\"})\n", " .rename(columns=str.capitalize)\n", ")\n", "tag_df" ] }, { "attachments": {}, "cell_type": "markdown", "id": "1671c6b5", "metadata": {}, "source": [ "# YouTube stats" ] }, { "cell_type": "markdown", "id": "216f96ec-cdaf-4848-ba16-cbac973b6afb", "metadata": {}, "source": [ "All videos from Open Seeds calls are uploaded on the [OLS YouTube channel](https://www.youtube.com/c/OpenLifeSci) " ] }, { "cell_type": "code", "execution_count": 7, "id": "6e8d7b5b-a0f3-4f1b-98c0-8f164d37b77a", "metadata": { "scrolled": true }, "outputs": [], "source": [ "%%capture\n", "ydl_opts = {}\n", "URL = \"https://www.youtube.com/c/OpenLifeSci\"\n", "with yt_dlp.YoutubeDL(ydl_opts) as ydl:\n", " info = ydl.extract_info(URL, download=False)\n", " # ydl.sanitize_info makes the info json-serializable\n", " channel_content = ydl.sanitize_info(info)\n", "\n", "# extract video information\n", "videos = []\n", "for v in channel_content['entries'][0]['entries']:\n", " videos.append({key:v[key] for key in ['title', 'duration', 'view_count']})\n", "\n", "yt_stat_df = (\n", " pd.DataFrame(videos)\n", " .assign(Duration=lambda df: df.duration/60)\n", " .drop(columns=[\"duration\"])\n", " .rename(columns=str.capitalize)\n", ")\n", "\n", "openseeds_yt_df = yt_stat_df.query(\"Title.str.contains('OLS-')\",engine=\"python\")" ] }, { "cell_type": "markdown", "id": "7594fe48", "metadata": {}, "source": [ "Number of hours of Open Seeds videos on the YouTube channel" ] }, { "cell_type": "code", "execution_count": 8, "id": "30c7b7e8-9fa0-4416-b767-90154adc5ce4", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "80.73777777777778" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum(openseeds_yt_df.Duration)/60" ] }, { "cell_type": "markdown", "id": "e4e3449b-f3ca-4227-b166-f64fd6297459", "metadata": {}, "source": [ "Total number of view of the Open Seeds videos on the YouTube channel" ] }, { "cell_type": "code", "execution_count": 9, "id": "dd5fa317", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7298" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum(openseeds_yt_df.View_count)" ] }, { "cell_type": "markdown", "id": "9f756448", "metadata": {}, "source": [ "## Video library" ] }, { "cell_type": "code", "execution_count": 10, "id": "00851dde-09bc-45dd-a23f-d550a99589f5", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Total
tagsubtag
Not sortedNot tagged8
Open LeadershipOpen Leadership in Practice30
Open Life ScienceOLS Introduction12
Open ScienceOpen Access Publication8
Open Data14
Open Educational Resources7
Open Engagement of Social Actors7
Open Evaluation5
Open Hardware6
Open Science Infrastructures3
Open Science Introduction3
Open Source Software15
Openness to Diversity of Knowledge3
Project, Community & Personal ManagementAgile & Iteractive Project Management6
Ally Skills for Open Leaders4
Community Design for Inclusivity1
Community Interactions6
Equity, Diversity and Inclusion (EDI)6
Mountain of Engagement8
Personal Ecology9
Personas & Pathways7
Tooling for CollaborationCode Review3
Code of Conduct8
GitHub Introduction6
Good Coding Practices3
Open Licensing8
Package Management1
README8
Setting up a project3
Tooling for Project DesignOpen Canvas13
Project Roadmapping13
Tooling for Project Design Introduction2
\n", "
" ], "text/plain": [ " Total\n", "tag subtag \n", "Not sorted Not tagged 8\n", "Open Leadership Open Leadership in Practice 30\n", "Open Life Science OLS Introduction 12\n", "Open Science Open Access Publication 8\n", " Open Data 14\n", " Open Educational Resources 7\n", " Open Engagement of Social Actors 7\n", " Open Evaluation 5\n", " Open Hardware 6\n", " Open Science Infrastructures 3\n", " Open Science Introduction 3\n", " Open Source Software 15\n", " Openness to Diversity of Knowledge 3\n", "Project, Community & Personal Management Agile & Iteractive Project Management 6\n", " Ally Skills for Open Leaders 4\n", " Community Design for Inclusivity 1\n", " Community Interactions 6\n", " Equity, Diversity and Inclusion (EDI) 6\n", " Mountain of Engagement 8\n", " Personal Ecology 9\n", " Personas & Pathways 7\n", "Tooling for Collaboration Code Review 3\n", " Code of Conduct 8\n", " GitHub Introduction 6\n", " Good Coding Practices 3\n", " Open Licensing 8\n", " Package Management 1\n", " README 8\n", " Setting up a project 3\n", "Tooling for Project Design Open Canvas 13\n", " Project Roadmapping 13\n", " Tooling for Project Design Introduction 2" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tag_df = (\n", " library_df\n", " .groupby([\"tag\", \"subtag\"])\n", " .count()\n", " .drop(columns=[\"title\", \"date\", \"cohort\", \"slides\", \"speakers\"])\n", " .rename(columns={\"recording\": \"total\"})\n", " .rename(columns=str.capitalize)\n", ")\n", "tag_df" ] }, { "cell_type": "code", "execution_count": 11, "id": "8332b14b-8aae-4276-807f-ff44306b1f0f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "32" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(tag_df)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.4" }, "vscode": { "interpreter": { "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" } } }, "nbformat": 4, "nbformat_minor": 5 }