Skip to content

Commit

Permalink
enh: proceedings
Browse files Browse the repository at this point in the history
  • Loading branch information
anibalsolon committed Jan 12, 2024
1 parent e9e8ef5 commit ce3a813
Show file tree
Hide file tree
Showing 3 changed files with 183 additions and 0 deletions.
70 changes: 70 additions & 0 deletions manuscript/main.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
\documentclass{article}
\usepackage{markdown}
\usepackage{graphicx}

\title{Proceedings of the OHBM Hackathon 2023}
\author{Yu-Fang Yang, Anibal Sólon Heinsfeld}
\date{December 2023}

\begin{document}

\maketitle

\section{Introduction}

Following the previous editions, the Organization for Human Brain Mapping (OHBM) 2023 embraced a hybrid format, underscoring our commitment to diversity, inclusion, and equitable access.
This approach is also aimed at reducing the carbon footprint and addressing barriers such as visa issues, enabling broader participation from the global neuroscience community.
The OHBM Brainhack is a hackathon to the main OHBM meeting, where neuroscientists of various expertise levels and academic interests convene to collaborate in a dynamic, hackathon-style environment.
These collaborations focus on shared interests from any participant and foster a culture of open science.
The OHBM Brainhack 2023 was rooted in three core principles.
First, it aimed to provide an inclusive collaborative space for interdisciplinary interaction among scientists at all career stages.
This aspect was embodied in the “Hack-Track,” where participants worked together to advance significant projects needing community support.
Second, the event emphasised empowering scientists to enhance their research quality through hands-on training in open-science practices, a goal realised in the “Train-Track.” Lastly, introducing a buddy system was a novel feature for this edition of the OHBM Brainhack.
This system paired newcomers with experienced mentors, offering guidance and support to first-time participants, ensuring a welcoming and enriching experience for all.
In the following sections, we delve into the specifics of the Hack-Track and Train-Track of OHBM 2023 Brainhack, detailing the proceedings and highlighting the key outcomes and advancements made during the event.

\subsection{Train-Track}

The 2023 edition of the OHBM Brainhack continues its educational mission with the Train-Track, offering a diverse range of fundamental courses such as “Introduction to Jupyter Notebook” and “Basics of Writing Good Code”, along with cutting-edge topics like “Container for Science” and “Data Management with Datalad.”
This initiative enriches participants' learning experiences by fostering a study group-like environment, augmented by our buddy system that promotes peer-to-peer learning and collaboration.
Additionally, we introduced onsite sign-ups for mentor-mentee pairings in specific topics, further encouraging group formation among attendees with shared learning goals and facilitating networking opportunities.

The collaborative setting of Train-Track allowed participants to engage with like-minded peers, creating a supportive space for knowledge exchange and skill development.
Course topics were carefully selected based on submitted projects, primarily utilising Python, Git, and GitHub.
We also expanded topics to include “Reproducible Workflows of The Turing Way”, “Transparent MRI”, and “Machine Learning for Neuroimaging and Reproducibility Checklist”.
Notably, these courses were pre recorded and made available on YouTube by the OHBM Open Science Interest Group (OSSIG), ensuring accessible learning resources.
Participants were encouraged to use various communication platforms, including in-person interactions and digital channels like Discord, to foster this collaborative learning process.
The Train-Track segment at OHBM Brainhack 2023 truly embodied the spirit of community and collective growth.


\subsection{Buddy System}

To involve newcomers in the Hackathon, we created the Buddy System.
It pairs the participants in a mentor-mentee fashion, allowing mentors to help mentees throughout the Hackathon, giving guidance regarding interests, projects to join, and networking.
This system was set up in such a way that the pairs were assigned at random, avoiding creating any biases in the matching.

\subsection{Hack-Track}

Before the OHBM Hackathon 2023 commenced, project leaders submitted their proposals to our repository, based on Github, setting the stage for a dynamic and inclusive event.
At the start of the Brainhack, these leaders had the opportunity to pitch their projects to the audience.
During these presentations, each leader was allotted a few minutes to outline their project's goals, current status, and aspirations for the hackathon and its future trajectory.
A comprehensive list of these diverse and innovative projects can be found at our main website \footnote{https://ohbm.github.io/hackathon2023/hacktrack/}.
The range of topics and scopes of these projects was impressively varied, encompassing areas such as coding, writing, documentation, community guideline development, and visualisation techniques.
This extensive range allowed participants to tailor their involvement to their interests and goals.
Some dedicated their efforts to a single project, immersing themselves deeply in a specific area or task.
Others divided their time among multiple projects, seeking a broader experience.
Participants selected projects based on various factors.
For some, it was an opportunity to contribute to a field in which they already had expertise.
Others saw it as a chance to acquire new skills or knowledge in an unfamiliar area.

Additionally, the Hackathon projects often introduced novel methods or programming languages, offering participants practical skills that could be applied to future endeavours.
Beyond the technical and educational aspects, the event also fostered community building; many were drawn to projects simply for the opportunity to collaborate with and learn from a new group of peers.
Over three intensive days, the 2023 edition of the OHBM Hackathon successfully propelled forward [XX – number of projects] projects, thanks to the collaborative efforts of [xx – number of scientists] scientists hailing from countries across Africa, Asia-Pacific, Europe, the Middle East, North America, and South America.
Despite the inherent challenges of a hybrid event, especially in synchronising video streams, we effectively utilised various technologies within a single platform, Discord, to facilitate seamless participant exchanges.
This approach ensured that irrespective of geographical location, every participant could engage fully in the hackathon's collaborative spirit.

\subsection{Projects}

\markdownInput{projects.md}

\end{document}
Empty file added manuscript/projects.md
Empty file.
113 changes: 113 additions & 0 deletions scripts/fetch_gh_proceedings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
#!/bin/env python
import os
import re
import requests
import yaml
import json

def fetch_gh_issues():

GH_AUTH = os.environ['GH_AUTH']
REPO = 'ohbm/hackathon2023'
ISSUE_LABEL = 'Proceedings'
# ISSUE_READY_LABEL = 'Good to go'
ISSUE_FILTER = f'labels={ISSUE_LABEL}&per_page=100'
URL = f'https://{GH_AUTH}@api.github.com/repos/{REPO}/issues?{ISSUE_FILTER}'

with open('.github/ISSUE_TEMPLATE/hackathon-proceedings.yml') as f:
issue_form = yaml.safe_load(f)

fields = issue_form['body']
fields = [f for f in fields if f['type'] != 'markdown']

res = requests.get(URL)
issues = res.json()
issues_list = []
for issue in issues:

print("looking for issue", issue['url'])
# if ISSUE_READY_LABEL not in [i['name'] for i in issue["labels"]]:
# continue

if issue["state"] != "open":
continue

print('passed')

try:

body = issue["body"]
lines = [l.strip() for l in body.replace('\r\n', '\n').split('\n')]

field_ordering = []
for field in fields:
field_start = None
field_label = field['attributes']['label']

for li, line in enumerate(lines):
is_line_title = line.startswith(f'### {field_label}')
if field_start is None and is_line_title:
field_start = li

field_ordering += [(field, field_start)]

field_ordering = list(sorted(field_ordering, key=lambda f: f[1]))

issue_info = {}

field_bounds = zip(field_ordering, field_ordering[1:] + [(None, None)])
for (field, i), (_, ni) in field_bounds:
field_id = field['id']
field_label = field['attributes']['label']

if i is None:
issue_info[field_id] = None
continue

field_value = '\n'.join(filter(None, lines[i+1:ni]))
field_value = re.sub(
r'<!--.*?-->', '', field_value,
flags=re.DOTALL
)
field_value = field_value.strip()

if field_value == '_No response_':
field_value = None

if field['type'] == 'checkboxes':
field_options_labels = [
o['label'].strip()
for o in field['attributes']['options']
]
field_selected_options = []
field_options_value = field_value.split('\n')
for l in field_options_value:
if l[6:] not in field_options_labels:
continue
if l.startswith('- [X] '):
field_selected_options.append(l[6:])
if l.startswith('- [x] '):
field_selected_options.append(l[6:])

field_value = field_selected_options

issue_info[field_id] = field_value

issue_info['issue_link'] = issue["html_url"]
issue_info['issue_number'] = issue["number"]
issues_list.append(issue_info)
except Exception as e:

print("error in issue", issue['url'])
print(e)
raise e

with open('./public/proceedings.json', 'w') as f:
json.dump(issues_list, f, indent=2)


if __name__ == '__main__':
from dotenv import load_dotenv
load_dotenv()

fetch_gh_issues()

0 comments on commit ce3a813

Please sign in to comment.