Skip to content

Commit

Permalink
Merge pull request #59 from AhmedBasem20/api-docs
Browse files Browse the repository at this point in the history
Generate API documentation using Sphinx.
  • Loading branch information
etpeterson authored Mar 29, 2024
2 parents f72525e + ab9354b commit 5fe5728
Show file tree
Hide file tree
Showing 6 changed files with 203 additions and 1 deletion.
80 changes: 80 additions & 0 deletions .github/workflows/documentation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Build & Deploy Documentation

on:
workflow_run:
workflows: [Algorithm Analysis]
types:
- completed
permissions:
contents: read
pages: write
id-token: write
jobs:
build:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Set up Python
id: setup_python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Cache pip
uses: actions/cache@v3
id: pip-cache
with:
key: ${{ runner.os }}-${{ env.pythonLocation }}-pip-${{ hashFiles('**/requirements.txt') }}
path: ${{ env.pythonLocation }}
if: steps.pip-cache.outputs.cache-hit != 'true'

- name: Install dependencies
run: |
pip install -r requirements.txt
# Action to download artifacts from a different workflow (analysis.yml)
- name: 'Download artifact'
if: ${{ github.event.workflow_run.conclusion == 'success' }}
uses: actions/github-script@v6
with:
script: |
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.payload.workflow_run.id,
});
let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
return artifact.name == "Figures"
})[0];
let download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
let fs = require('fs');
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/Figures.zip`, Buffer.from(download.data));
- name: 'Unzip artifact'
run: unzip Figures.zip

- name: Build html
run: |
mkdir docs/_static
mv *.pdf docs/_static/
sphinx-apidoc -o docs src
cd docs/
make html
- name: Upload docs artifact
uses: actions/upload-pages-artifact@v3
with:
path: 'docs/_build/html'

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
20 changes: 20 additions & 0 deletions docs/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Minimal makefile for Sphinx documentation
#

# You can set these variables from the command line, and also
# from the environment for the first two.
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = .
BUILDDIR = _build

# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

.PHONY: help Makefile

# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
36 changes: 36 additions & 0 deletions docs/conf.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Configuration file for the Sphinx documentation builder.
#
# For the full list of built-in configuration values, see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html

# -- Project information -----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information

import os
import sys

sys.path.insert(0, os.path.abspath(".."))

project = 'TF2.4 IVIM MRI Code Collection'
copyright = '2024, OSIPI'
author = 'OSIPI team'

# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration

extensions = ["sphinx.ext.todo", "sphinx.ext.viewcode", "sphinx.ext.autodoc"]

templates_path = ['_templates']
exclude_patterns = ['Thumbs.db', '.DS_Store']

# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
html_show_sphinx = False

# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
html_show_copyright = False

# -- Options for HTML output -------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output

html_theme = 'sphinx_rtd_theme'
html_static_path = ['_static']
45 changes: 45 additions & 0 deletions docs/figures.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
Algorithm Analysis Figures
===========

.. raw:: html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Algorithm Analysis Figures</title>
<style>
embed {
width: 90%;
margin-bottom: 4rem;
height: 100vh;
}
</style>
</head>
<body>
<h4>Diffusion grid for limited algorithms:</h4>
<embed src="_static/D_limited.pdf" type="application/pdf" frameborder="0" scrolling="auto">
<h4>Diffusion grid for all algorithms:</h4>
<embed src="_static/D.pdf" type="application/pdf" frameborder="0" scrolling="auto">

<h4>Perfusion grid for limited algorithms:</h4>
<embed src="_static/Dp_limited.pdf" type="application/pdf" frameborder="0" scrolling="auto">
<h4>Perfusion grid for all algorithms:</h4>
<embed src="_static/Dp.pdf" type="application/pdf" frameborder="0" scrolling="auto">

<h4>Perfusion fraction grid for limited algorithms:</h4>
<embed src="_static/f_limited.pdf" type="application/pdf" frameborder="0" scrolling="auto">
<h4>Perfusion fraction grid for all algorithms:</h4>
<embed src="_static/f.pdf" type="application/pdf" frameborder="0" scrolling="auto">

<h4>Fitted curves:</h4>
<embed src="_static/fitted_curves.pdf" type="application/pdf" frameborder="0" scrolling="auto">
<h4>Curve plot:</h4>
<embed src="_static/curve_plot.pdf" type="application/pdf" frameborder="0" scrolling="auto">
<h4>Algorithm Fitting duration:</h4>
<embed src="_static/durations.pdf" type="application/pdf" frameborder="0" scrolling="auto">

</body>
</html>
19 changes: 19 additions & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
.. TF2.4 IVIM MRI Code Collection documentation master file, created by
sphinx-quickstart on Wed Mar 6 00:06:13 2024.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to TF2.4 IVIM MRI Code Collection's documentation!
==========================================================

.. toctree::
:maxdepth: 4
:caption: Contents:

figures
modules

Indices and tables
==================

* :ref:`modindex`
4 changes: 3 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,6 @@ scienceplots
cvxpy
zenodo-get
pytest
tqdm
tqdm
sphinx
sphinx_rtd_theme

0 comments on commit 5fe5728

Please sign in to comment.