• Stars
    star
    106
  • Rank 323,997 (Top 7 %)
  • Language
    Jupyter Notebook
  • License
    MIT License
  • Created over 3 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Writing good research code

Writing good research code

This repo contains the slides and code for a presentation on writing research software I first gave in January 2021 to the PhD students in neuro at Harvard. It's a compendium of 5 lessons I learned the hard way about writing research code that won't bite back.

  • The slides are here
  • The rest of the repo contains supporting code in the format advocated in the first lesson.
  • You can see the full presentation recorded at NMA 2021 and a short version focused on testing recorded at Brainhack MTL 2021.

For the book version of these slides, see goodresearch.dev.

Organization

This repo follows the organization of shablona. All the code and tests are under research_code. research_code is itself a Python package.

For the package, we use the same setup as this tutorial on setuptools, and is compatible with it - this repo is publishable to PyPI directly!

To install the package locally in development mode

cd into this directory, then run:

pip install -e .

In Python:

import research_code

To test

cd into the research_code/tests directory, then run each file individually, or run nose2.

CI

While shablona recommended the use of Jenkins for continuous integration (CI), we showcase instead Github actions, which don't require additional accounts/software. The workflow, which runs tests, is located in .github/workflows/ci.yml.

More Repositories

1

codebook

The Good Research Code Handbook
Python
460
star
2

xcorr-notebooks

An ongoing collection of ipython notebooks on neuroscience from xcorr: computational neuroscience.
Jupyter Notebook
73
star
3

big-neuro-ideas

An ongoing journal club for the study of big ideas in neuro
30
star
4

ml-theory-reading-list

An annotated reference list of ML theory
29
star
5

true-neutral-cookiecutter

A minimalist cookiecutter for research and data science projects
Python
23
star
6

your-head-is-there-to-move-you-around

Task-driven models of the dorsal visual stream
Jupyter Notebook
12
star
7

zipf

Jupyter Notebook
11
star
8

industry

8
star
9

vid2slides

Extract slides from video
Python
7
star
10

programming-course

Materials for programming course
Jupyter Notebook
7
star
11

boopology

Do android pigs dream of electric boops?
Jupyter Notebook
4
star
12

spikefinder_submission

Spikefinder submission
Jupyter Notebook
4
star
13

vr-neurons

Visualizing neurons in VR
Jupyter Notebook
3
star
14

learn-you

Haskell
3
star
15

deep-generative-models

Deep generative model reading group repo
Jupyter Notebook
3
star
16

neuromatch-nlp

Jupyter Notebook
3
star
17

awesome-neuro-notebooks

A list of awesome notebooks on neuro
3
star
18

welford

Welford's algorithm, in C++
C++
3
star
19

neuron-jungle

Analysis of neuron jungle
Jupyter Notebook
3
star
20

triplets

Jupyter Notebook
3
star
21

bench_embeddings

Jupyter Notebook
2
star
22

shablona-dup

My Shablona-based project
Jupyter Notebook
2
star
23

rock-steady-airsim

Jupyter Notebook
2
star
24

starter-hugo-academic

Jupyter Notebook
2
star
25

neuroai-tree

Jupyter Notebook
2
star
26

sendit

Send email batches with confidence
Python
2
star
27

blank-theme

Python
1
star
28

scrollytelling

Scrollytelling about excitatory-inhibitory networks
JavaScript
1
star
29

subtitle-scrubber

An applet to scrub through subtitles and thumbnails in a video
JavaScript
1
star
30

neurodynex

Jupyter Notebook
1
star
31

rock-steady

Airsim heading simulations
1
star
32

shablona-example

Jupyter Notebook
1
star
33

nm-matchexplanations

Python
1
star
34

nmc-videos

Pipeline to create videos with Neuromatch conference
Python
1
star
35

shablona-derivative-examplar

Jupyter Notebook
1
star
36

shablona-use-example

Example for NMA 2021 II
Jupyter Notebook
1
star
37

speaker-tf

Estimate transfer function of a speaker
1
star
38

psycho-haptics

A psychophysics experiment in haptics
Arduino
1
star
39

xcorr-drafts

1
star
40

drawcircle

Python
1
star
41

bayesian-doubling-times

Jupyter Notebook
1
star
42

codebook_examples

Examples for the book on good research code
Python
1
star
43

matlab-tools

Miscellaneous toolboxes for Matlab
1
star
44

widgets

Widget hsoting
HTML
1
star
45

dask-worker

Dockerfile for dask worker matched to notebook
Dockerfile
1
star
46

exam2

It's a secret to everybody
Python
1
star
47

puffinette-hunt

Those mysteries.
Python
1
star
48

dbserver

Python
1
star
49

scaling-octo-winter

1
star
50

repl-test

Jupyter Notebook
1
star
51

autre-main

HTML
1
star
52

react-map

A react map of NMA participant
JavaScript
1
star
53

test-driven-migration

Jupyter Notebook
1
star
54

precourse

Pre-course repo
HTML
1
star
55

ds

Data science portfolio
1
star
56

minimal-package

Python
1
star
57

dask-notebook

Dockerfile for dask-enabled jupyter notebook
Dockerfile
1
star
58

shablona-derivative

Jupyter Notebook
1
star
59

science-project

Let's do some science
1
star
60

causal-course

Notes from course on causal inference
1
star
61

hello-world

Hello world example
HTML
1
star
62

neuromatch-algo

The modern neuromatch algo
Jupyter Notebook
1
star
63

use-shablona-template

Just an example
Jupyter Notebook
1
star
64

haptic-duino

A haptics project in Arduino
C++
1
star
65

topog

Python
1
star
66

unet-spikes

UNets... for spikes!
Python
1
star
67

phaco-meta

Meta-analysis of Phacoemulsification effect on glaucoma
HTML
1
star
68

climate-change

Climate change notebooks
Jupyter Notebook
1
star
69

xcorr-snippets

Snippets for xcorr: computational neuroscience
Jupyter Notebook
1
star
70

mastodon-lotd-bot

Python
1
star
71

gradient-notebook

An environment for notebooks hosted on gradient
Dockerfile
1
star
72

complex-systems

Complex systems
Jupyter Notebook
1
star