Python Vibe Coding Course — Part 5 (Final)

Publishing with Your Paper

Upload to Zenodo and GitHub

This is the final part of the series. In Part 4 you created requirements.txt and ensured environmental reproducibility. As a finishing touch, this part explains how to upload your complete analysis package to Zenodo, GitHub, or similar services and publish it alongside your paper. Once published, anyone can access your analysis code and environment through the link in your paper and reproduce your figures on the spot. Journals requiring data and code availability — including PLOS ONE, Nature-family journals, and eLife — are growing rapidly, and this trend is increasingly reaching agronomy journals such as Field Crops Research.

! Critical: when to make your data public

Before diving into the technical steps, you must carefully consider when to open your data and code to the public. Making them publicly accessible too early risks losing priority or allowing others to publish a similar analysis first.

Rule of thumb: the safest time to publicly release data and code is after the paper has been formally published as a peer-reviewed article. Posting a preprint first does establish a timestamp, but risks remain even at the preprint stage (e.g., others may publish a similar analysis during peer review, or managing secondary use of data becomes harder). Switching from Private to Public only after acceptance or publication strikes a practical balance between the researcher's interests and open-science principles.

The recommended workflow during submission and peer review is as follows:

  1. Upload the analysis package to GitHub, Zenodo, OSF, or similar services in Private (non-public) mode
  2. In the paper's Data / Code Availability Statement, state that the repository is currently private for data-security reasons and will be made public with a DOI upon publication. Editors and reviewers typically accept this if explained clearly
  3. If reviewers need to inspect the code, use a reviewer link (Anonymous Link / Reviewer Link) available in services such as OSF, Figshare, or Zenodo's Closed Access feature
  4. Once the paper is published, switch from Private to Public and formally issue a DOI on Zenodo

If the journal's policy requires data to be public at submission, follow the journal's instructions. Most journals allow a reviewer link during peer review and require Public access only at publication. When in doubt, confirm with the editor in advance.

01 Finalize the folder structure for publication

Before publishing, tidy up the folder structure. Here is an example of an ideal layout:

Recommended folder structure for the published package

my_first_analysis/
├── data/
│   └── sample_data.xlsx  # Raw data
├── notebooks/
│   └── analysis.ipynb    # Analysis script
├── results/
│   ├── scatter.png        # Output figure
│   └── statistics.csv    # Output data
├── requirements.txt       # Environment file
├── README.md             # Usage instructions
└── .gitignore             # Files to exclude

Note: .venv/ is excluded via .gitignore (not published)

Separating raw data, analysis scripts, and results into distinct folders makes the structure immediately clear to anyone who opens it. You can also ask an LLM to help you reorganize the folder.

If your raw data contains personally identifiable information (e.g., human subject data), anonymize or process it into a shareable form before publishing. Do not publish data outside the scope of your ethics approval.

02 Choosing where to publish

Several platforms exist for publishing research data and code. This course recommends the Zenodo + GitHub combination. It is also worth knowing the other options so you can respond flexibly to requirements from your institution or journal.

Zenodo

Research data archive operated by CERN (Europe). Every upload receives a DOI. zenodo.org

  • Persistent link guaranteed by DOI
  • Easy to cite in a paper's reference list
  • Size limit: 50 GB per file, 100 GB total
  • Suitable for any research field

GitHub

World's largest code sharing and version-control platform. Excellent for collaboration and ongoing updates. github.com

  • Full change history is preserved
  • Supports collaborative editing
  • No DOI by default (can be issued via Zenodo integration)
  • Best for collaborative or ongoing projects

Figshare

Research data repository closely integrated with Springer Nature journals. figshare.com

  • DOI issued
  • Supports large files (20 GB free)
  • Private reviewer links available
  • Often recommended by Nature-family journals

OSF (Open Science Framework)

Operated by the Center for Open Science (US). Well-suited for managing entire projects. osf.io

  • DOI issued
  • Supports pre-registration
  • Size limit: 5 GB per file, no total cap
  • Widely used in psychology and social sciences

Dataverse

Open-source platform originating from Harvard; often deployed by individual institutions. dataverse.org

  • DOI issued
  • Ideal when your institution runs its own Dataverse
  • Rich metadata management
  • Suited for large-scale, long-term storage

Field-specific repositories

Some fields have dedicated repositories that are strongly recommended.

Choose based on your target journal's requirements and your institution's policies. This course recommends the "Zenodo + GitHub" combination: maintain ongoing updates on GitHub, then at the time of publication link your GitHub repository to Zenodo to issue a DOI (described below).

03 Upload to GitHub

Uploading to GitHub follows essentially the same steps as described in the separate article "Portfolio Website Build & Publish Guide for Researchers" using GitHub Desktop. Here is a brief overview:

  1. Create a free account at github.com
  2. Click "+" (top right) → "New repository" and create a repository (e.g., my-first-analysis, set to Public)
  3. Install GitHub Desktop from desktop.github.com
  4. In GitHub Desktop: File → Add Local Repository → select your analysis folder
  5. Click "Publish repository" to push it to GitHub

This creates a public URL at https://github.com/your-username/my-first-analysis. Anyone can visit this URL and download the folder via "Code → Download ZIP".

04 Issue a DOI on Zenodo

For the URL you include in your paper's Appendix, a Zenodo DOI is recommended for its permanence and citability. Linking Zenodo to GitHub lets you issue a DOI in a semi-automated way.

  1. Visit zenodo.org and sign in with your GitHub account
  2. Open the user menu (top right) → select "GitHub" to view your repository list
  3. Toggle the switch next to the target repository (my-first-analysis) to ON
  4. Return to GitHub, go to your repository page, and click "Releases" (right sidebar) → "Create a new release"
  5. Enter a tag (e.g., v1.0) and a title, then click "Publish release"
  6. Within a few minutes, Zenodo automatically creates a snapshot and issues a DOI

The issued DOI takes the form 10.5281/zenodo.XXXXXXXX and is permanently linked to this snapshot of your code and environment. As long as the paper is not retracted, it is globally accessible.

05 Include the link in your paper's Appendix or Methods

In the Methods section, or in a Data Availability Statement or Code Availability Statement, include the link using wording like the following:

Example wording for your paper

The Python code and processed data used to generate all figures and tables in this study are openly available at Zenodo (DOI: 10.5281/zenodo.XXXXXXXX) and GitHub (https://github.com/yourname/my-first-analysis). The analysis was performed using Python 3.12 with the libraries listed in requirements.txt.

Check your journal's author guidelines, as the exact format may vary. Most journals provide a dedicated section titled "Data Availability" or "Code Availability."

06 Ongoing updates after publication

It is common to refine the analysis or add data after a paper is published. The workflow for continuing to use GitHub and Zenodo together looks like this:

  1. Edit code locally (with LLM assistance in VSCode → verify it runs)
  2. Commit and push via GitHub Desktop (the latest version on GitHub is updated)
  3. When needed, publish a new release (e.g., v1.1) → Zenodo issues a new DOI for the new version

If an older DOI is already cited in your paper, that's fine. Zenodo issues both a "Concept DOI" (always pointing to the latest version) and a "Version DOI" (pointing to a specific release), so you can use whichever is appropriate.


Series Completed

Throughout all five parts, you have learned everything from setting up a Python environment to vibe coding with an LLM, ensuring reproducibility, and publishing your analysis alongside your paper.

From here, the only thing left is practice — running through the process with your own research data alongside ChatGPT. Whenever you hit an error, the LLM will always help you find a solution. Welcome to the community of researchers who share code and build reproducible science.

Next steps

Questions, feedback, and suggestions for improvement are welcome at Contact (tomoakiyamaguchirice@gmail.com).

Prev — Part 4 ← Ensuring Reproducibility Index Series End Back to Methods →