From e780723035990408e606f73108eede2f0a1d9f97 Mon Sep 17 00:00:00 2001 From: David Ragnar Nelson <35697532+drnelson6@users.noreply.github.com> Date: Thu, 8 Feb 2024 09:57:46 -0500 Subject: [PATCH] Add organizing your project --- content/lessons/repro_research.md | 49 +++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/content/lessons/repro_research.md b/content/lessons/repro_research.md index bce6fdd..0350fdc 100644 --- a/content/lessons/repro_research.md +++ b/content/lessons/repro_research.md @@ -2,11 +2,60 @@ title = 'Reproducible Research' date = 2024-01-17T16:03:06-05:00 ++++ +## Motivation and Rationale + +If you are going to take the time to build computational tools for humanistic research, you want others to be able to reproduce what you did. You want others to be able to verify your results, but also to use the tools you built to further their own projects. + +There are several factors that contribute to producing reproducible research. They include: + +- Well-organized projects that others can understand +- Using a version control system to facilitate collaboration on the project +- Recording your environment so others can run your code on their machine + +## Organizing your project + +Your project will involve a number of components. This may include raw data, processed data, documentation, source code, and code for dependencies. You may be working as part of a team, or you may be writing code that others will use in the future. In either case, your project should be organized so that someone unfamiliar with the project can quickly find the information they need, whether these are datasets or functions in your code. In order for your research to be reproducible and make sense to others, you should organize your project in a consistent, predictable way. + +[This lesson](https://coderefinery.github.io/reproducible-research/organizing-projects/) from Code Refinery has some recommendations about you might choose to organize your project. The important points for humanist researhcers are the following: + +- Each project should have its own folder +- The structure of your project should be consistent. Another researcher should be able to understand your file structure without you explaining it to them. +- Your project should have a README file that explains how to run the project on a different machine. +- Different parts of the project should be in different files and/or directories. + +Your project organization might look something like this: +``` +impressive-project/ +├── README.md +├── data/ +| ├── README.md +| ├── metadata.csv +| └── texts/ +| ├── book_a.txt +| ├── book_b.txt +| └── ... +├── data-processing/ +├── plots/ +├── tests/ +├── doc/ +│ ├── index.rst +│ └── ... +├── LICENSE +├── requirements.txt +├── package.json +└── package-lock.json +``` +By using a clear organizational structure like this one, someone unfamiliar with your project will quickly be able to understand what your project is doing and how they might go about reproducing your work or building upon it for their own purposes. +## Workflow +To get the results from your project, you will run multiple steps. +- include graphic or visualization +- discuss using python script to run workflow from project