Skip to content

N10_Final Week of FOSS

Tahsin Afroz Hoque Nishat edited this page Nov 16, 2022 · 1 revision

Overview

This week I have finished with my capstone project. I have a private github repository for my project. I have also created a website template for my project. Both of them could be improved throughput the project and upon completion and release of the project, I can get a DOI. A detailed description of my project is given in the following sections:

Objective of the capstone project:

The main objective of this capstone project is to have an organized infrastructure for data and documentation. Hence, upon completion of my research project our team will be able to-

a. have a public github repository with complete documentation and python package

b. upon release of the repo, can have a unique DOI

c. have a website for the research project

Tools used throughout:

1. Creating project

I have used a cookiecutter template to automate the project creation process. [1] , [2] ,[3] The following is an example of such project structure.

.
├── AUTHORS.md
├── LICENSE
├── README.md
├── bin                <- Your compiled model code can be stored here (not tracked by git)
├── config             <- Configuration files, e.g., for doxygen or for your model if needed
├── data
│   ├── external       <- Data from third party sources.
│   ├── interim        <- Intermediate data that has been transformed.
│   ├── processed      <- The final, canonical data sets for modeling.
│   └── raw            <- The original, immutable data dump.
├── docs               <- Documentation, e.g., doxygen or scientific papers (not tracked by git)
├── notebooks          <- Ipython or R notebooks
├── reports            <- For a manuscript source, e.g., LaTeX, Markdown, etc., or any project reports
│   └── figures        <- Figures for the manuscript or reports
└── src                <- Source code for this project
    ├── data           <- scripts and programs to process data
    ├── external       <- Any external source code, e.g., pull other git projects, or external libraries
    ├── models         <- Source code for your own model
    ├── tools          <- Any helper scripts go here
    └── visualization  <- Scripts for visualisation of your results, e.g., matplotlib, ggplot2 related

2. Version control:

I have used git and github for version control of my code and documentation. A snippet of my github repository is as following:

image

3. Documentation:

The documentation part was the most challenging part for me. Because at the beginning I did not know a. what to document? b. how much to document? and c. is the documentation even comprehensible?

So I started with documenting everything keeping in mind that someone with a basic understanding of structural dynamic analysis needs to understand how to use the code. I have documented:

  • the project summary (i.e. background, goal, impact and what part of the project CAEM department is handling)
  • the work which already done (i.e. summary and some results)
  • ongoing study (i.e. background, objective, why and how to use the code, an example showing how to use the code)
  • In code explanation (of all the variables, if any constraints)
  • authors
  • credits and citations
  • funding agency
  • the installation proces

The documentation will be updated as we go further with the research and feedback will be taken to ensure the comprehensibility of it.

4. License:

Understanding and choosing the proper license is also very important. Currently the repository has two licenses:

a. GNU General Public License - this is for the whole project with no restriction to use any data

b. ISC license - this is for the python package because the original author of the repo (which I am modifying) mentioned this license should appear in all the copies

5. Website:

I have experimented with website creation. I have used a template of cplmakerlab .This will also be updated throughout the project duration. The published template of website can be found here