diff --git a/2019/2019-08-22_IT101-DM/slides/code_versioning.md b/2019/2019-08-22_IT101-DM/slides/code_versioning.md new file mode 100644 index 0000000000000000000000000000000000000000..2d97643cf882b1f6aba61fb205620b08622c9dcd --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/code_versioning.md @@ -0,0 +1,32 @@ +# Code versioning +<div style="position:absolute; width:40%"> + +**git** + + * Current standard for code versioning + * Maintain versions of your code as it develops + * Local system, which does not require an online repository + * Repositories allow distributed development + +<img align="middle" height="300px" src="slides/img/Git-logo.png"> +</div> + +<div class="fragment" style="position:absolute; left:50%; width:40%""> + +**git@lcsb** +* Recommended, supported repository +* Allows tracking of issues +* Ready for continous integration - code checked on commits to the repository. +* [https://git-r3lab.uni.lu](https://git-r3lab.uni.lu) + + + **Use at LCSB** + + * All analyses code should be in a repository + * Minimally at submission of a manuscript + * Better daily + * Even better "analyses chunkwise" +</div> +<aside class="notes"> +Policy! - code in central repository +</aside> diff --git a/2019/2019-08-22_IT101-DM/slides/data-housekeeping.md b/2019/2019-08-22_IT101-DM/slides/data-housekeeping.md new file mode 100644 index 0000000000000000000000000000000000000000..696cf91d6d45fb160aaf07647af34fffe2069d8d --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/data-housekeeping.md @@ -0,0 +1,130 @@ +# Data housekeeping +## File names +<div style="display:flex; position:static; width:100%"> +<div class="fragment" data-fragment-index="0" style="position:static; width:30%"> + +### General pricinples + * Machine readable + * Human readable + * Plays well with default ordering +</div> +<div class="fragment" data-fragment-index="1" style="position:absolute; left:33%; width:30%"> + +### Separators + * No spaces + * Underscore to separate + * Hyphen to combine + +</div> +<div class="fragment" data-fragment-index="2" style="position:absolute; left:66%; width:30%"> + +### Date format follows **ISO 8601**<br> + + 2018-12-03<br> + 2018-12-06_1700 + +</div> +</div> + + +<div class="fragment" data-fragment-index="3" style="width:100%; position:static"> +<div style="position:absolute;width:40%"> +<b>Bad</b> names + + ``` + PhD-project-Jan19 alldata_final.foo + Finacial detailes BIocore 19/11/12.xls + ATACseq1Londonmapped.bam + ``` +</div> +<div style="position:relative;width:40%; bottom:20%; left:50%"> +<b>Good</b> names + +``` +Iris-setosa_samples_1927-05-12.csv +PI102_Mouse12_EEG_2018-11-03_1245.tsv +Bioinfiniti_FullProposal_2018-11-15_1655.do +``` +</div> +</div> +<div class="fragment" data-fragment-index="3" style="width:100%; position:static"> +From Jenny Bryan by CC-BY +(https://speakerdeck.com/jennybc/how-to-name-files) +</div> + + + +# Data housekeeping +## File organization +* Have folder organization conventions for your **group** + * Per Paper + * Per Study/Project + * Per Collaborator +* Keep <b>readme files</b> for data + * Title + * Date of Creation/Receipt + * Instrument or software specific information + * People involved + * Relations between multiple files/folders + +* Orient newcomers to the group's conventions + + + +# Data housekeeping +<div style="position:absolute"> + +## When working + * Clarify and separate source and intermediate data + * keep data copies to a **minimum** + * Cleanup post-analysis + * Cleanup copies created for presentations or for sharing + * Handover data to a new responsible when leaving +</div> +<div style="position:relative;left:50%; width:40%"> +<img src="slides/img/cleaning-table.jpg" height="450px"> +</div> + + + +# Data housekeeping +## End of project + * data should be kept as a single copy on server-side storage + * non-proprietary formats + * minimal metadata: + * source + * context of generation + * data structure + * content + * sensitive data (e.g. whole genome) **must** be encrypted + * remove all other copies from desktops and external devices + + + * If not specified otherwise, data must be kept for **10 years** following project end for reproducibility purposes +<aside class="notes"> +Note: sometimes it is hard to find/understand dataset 10 days old +</aside> + +## In doubt on data archival? +Contact R<sup>3</sup> for support on archival of datasets using tickets: + * https://service.uni.lu/sp + * Home > Catalog > LCSB > Biocore: Application services > Request for: Support + + + +# Data housekeeping - Summary + +* Use institutional media for storage of **all** data +* Research data (particularly sensitive data) should be in a single source location +* Enable encryption for data stored on movable media +* Clarify and separate source and intermediate data +* Disable write access to relevant source data (read-only) +* Backup research data! +* Download Anti-virus software +* Generate checksums + +<div class="fragment"> + +## Server is your friend! + +</div> diff --git a/2019/2019-08-22_IT101-DM/slides/data-introduction.md b/2019/2019-08-22_IT101-DM/slides/data-introduction.md new file mode 100644 index 0000000000000000000000000000000000000000..bbbd8cb0ddd1a6c14db69c73868c2514b590ada4 --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/data-introduction.md @@ -0,0 +1,82 @@ +# Data and metadata +<div style="display:grid;grid-gap:100px;grid-template-columns: 40% 40%"> +<div > + +## Data + * "*information in digital form that can be transmitted or processed*" + <p align="right">-- Merriam-Webster dictionary</p> + * "*information in an electronic form that can be stored and processed by a computer*" + <p align="right">--Cambridge dictionary</p> + +</div> +<div> + +## Metadata + * data describing other data + * information that is given to describe or help you use other information + * metadata are data + * can be processed and analyzed +</div> +</div> + +<div class="fragment"> + +## Metadata examples: +<div style="position:absolute"> + <ul> + <li> LabBook </li> + <li> author/owner of the data</li> + <li> origin of the data + <li> data type + </ul> +</div> +<div style="position:absolute;left:25%"> + <ul> + <li> description of content </li> + <li> modification date </li> + <li> description of modification </li> + <li> location </li> + </ul> +</div> +<div style="position:relative;left:50%;top:0.7em"> + <ul> + <li> calibration readings</li> + <li> software/firmware version</li> + <li> data purpose</li> + <li> means of creation</li> + </ul> +</div> +</div> + +<div class="fragment"> +<br> +</center> +<center style="color:red">!Insufficient metadata make the data useless!</center> +</div> +<aside class="notes"> +Sometimes metadata collection takes more time than data collection +</aside> + + + +# LCSB research data +three categories: + * **Primary data** + * scientific data + * measurements, images, observations, notes, surveys, ... + * models, software codes, libraries, ... + * metadata directly describing the data + * data dictionaries + * format, version, coverage descriptions, ... + + * **Research record** + * description of the research process, including experiment + * experiment set-up + * followed protocols + * ... + + * **Project accompanying documentation** + * ethical approvals, information on the consent) + * collaboration agreements + * intellectual property ownership + * other relevant documentation diff --git a/2019/2019-08-22_IT101-DM/slides/data_flow.md b/2019/2019-08-22_IT101-DM/slides/data_flow.md new file mode 100644 index 0000000000000000000000000000000000000000..396c1ec70825f3695e46344ac94dc20617c71c2f --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/data_flow.md @@ -0,0 +1,106 @@ +# Typical flow of data + +<div style="display:grid;grid-gap:10px;grid-template-columns: 30% 20% 30%; + grid-auto-flow:column;grid-template-rows: repeat(4,auto);position:relative;left:8%"> + +<div class="content-box fragment" data-fragment-index="1"> + <div class="box-title red">Source data</div> + <div class="content"> + + * Experimental results + * Large data sets + * Manually collected data + * External + + </div> +</div> + +<div class="content-box fragment" data-fragment-index="2"> + <div class="box-title yellow">Intermediate</div> + <div class="content"> + + * Derived data + * Tidy data + * Curated sets + + </div> +</div> + +<div class="content-box fragment" data-fragment-index="3"> + <div class="box-title blue">Analyses</div> + <div class="content"> + + * Exploratory + * Model building + * Hypothesis testing + + </div> +</div> + +<div class="content-box fragment" data-fragment-index="4"> + <div class="box-title green">Dissemination</div> + <div class="content"> + + * Manuscript, report, presentation, ... + + </div> +</div> +<center> +<img src="slides/img/data-flow_sources.png" height=60%> +</center> +<center> +<img src="slides/img/data-flow_transformation.png" height=60%> +</center> +<center> +<img src="slides/img/data-flow_chart.png" height=60%> +</center> +<center> +<img src="slides/img/data-flow_paper.png" height=60%> +</center> + +<div class="content-box fragment" data-fragment-index="5"> +<div class="box-title red">Preserve</div> + <div class="content"> + + * Version data sets + * Backup + * Protect + + </div> +</div> + +<div class="content-box fragment" data-fragment-index="6"> + <div class="box-title yellow">Reproduce</div> + <div class="content"> + + * Automate your builds + * Use workflow tools (e.g. Snakemake) + + </div> +</div> + + +<div class="content-box fragment" data-fragment-index="7"> +<div class="box-title blue">Trace</div> + <div class="content"> + + * Multiple iterations. + * Code versioning (Git) + + </div> +</div> + +<div class="content-box fragment" data-fragment-index="8"> +<div class="box-title green">Track</div> + <div class="content"> + + * Through multiple versions + + </div> +</div> + +</div> +<aside class="notes"> +flow of the data is downstream (mostly), but you are going back and forth +applies to all data (financial report, lab safety assessment) +</aside> diff --git a/2019/2019-08-22_IT101-DM/slides/fair-principles.md b/2019/2019-08-22_IT101-DM/slides/fair-principles.md new file mode 100644 index 0000000000000000000000000000000000000000..be70f11a6f0b941a0e7f7b86b990a1c098096282 --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/fair-principles.md @@ -0,0 +1,12 @@ +# FAIR (meta)data principles + * dates back to 2014 + * well accepted by scientific community + * necessity in data driven science + * officially embraced by EU and G20 + * required by funding agencies and journal publishers + +<center> +<img src="slides/img/fair-principles.png" height="400px"> +</center> +<br> +<br> diff --git a/2019/2019-08-22_IT101-DM/slides/howtos.md b/2019/2019-08-22_IT101-DM/slides/howtos.md new file mode 100644 index 0000000000000000000000000000000000000000..8982a58c916a9f6cbbf45235b6fdc5526f8ef4db --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/howtos.md @@ -0,0 +1,6 @@ +# LCSB How-Tos +<br> +https://howto.lcsb.uni.lu/ +<center> + <iframe data-src="https://howto.lcsb.uni.lu/" height="600px" width="1200px"></iframe> +</center> diff --git a/2019/2019-08-22_IT101-DM/slides/img/3pillars-full.png b/2019/2019-08-22_IT101-DM/slides/img/3pillars-full.png new file mode 100644 index 0000000000000000000000000000000000000000..20484db55a5c781fdaa1d8600fa99bf10fe2410f Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/3pillars-full.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/DinoSequentialSmaller.gif b/2019/2019-08-22_IT101-DM/slides/img/DinoSequentialSmaller.gif new file mode 100644 index 0000000000000000000000000000000000000000..559430e748d2840cd11400b21463a07c52cf5bfd Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/DinoSequentialSmaller.gif differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/Git-logo.png b/2019/2019-08-22_IT101-DM/slides/img/Git-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..910f9936950b6e6cc5697c2e6bc761b7f80b9d76 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/Git-logo.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/LCSB_storages_backed-up.png b/2019/2019-08-22_IT101-DM/slides/img/LCSB_storages_backed-up.png new file mode 100644 index 0000000000000000000000000000000000000000..ce69cc954fd7099faab1e95b5b40ce53bbb76120 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/LCSB_storages_backed-up.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/LCSB_storages_backup.png b/2019/2019-08-22_IT101-DM/slides/img/LCSB_storages_backup.png new file mode 100644 index 0000000000000000000000000000000000000000..67a223fd8ddb6630439a2a38f2651075958fd45b Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/LCSB_storages_backup.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/LCSB_storages_full.png b/2019/2019-08-22_IT101-DM/slides/img/LCSB_storages_full.png new file mode 100644 index 0000000000000000000000000000000000000000..4e3896e4761dad633fcad3d0a55ddccdc3c1e3d3 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/LCSB_storages_full.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/LCSB_storages_personal-crossed.png b/2019/2019-08-22_IT101-DM/slides/img/LCSB_storages_personal-crossed.png new file mode 100644 index 0000000000000000000000000000000000000000..788244bf24758707c0ed5f7a2250e59bb6db2600 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/LCSB_storages_personal-crossed.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/alexey_kolodkin.png b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/alexey_kolodkin.png new file mode 100644 index 0000000000000000000000000000000000000000..363195d7f48a5659e3a0fc31b2c5b61c067e227e Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/alexey_kolodkin.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/christophe_trefois.png b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/christophe_trefois.png new file mode 100644 index 0000000000000000000000000000000000000000..6e3858c853c7d47ee5b18fe51bc61419c84e2733 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/christophe_trefois.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/laurent_heirendt.png b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/laurent_heirendt.png new file mode 100644 index 0000000000000000000000000000000000000000..44f2aa2845bd1a3a83ddc81e37dc0964fc99dcde Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/laurent_heirendt.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/maharshi_vyas.png b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/maharshi_vyas.png new file mode 100644 index 0000000000000000000000000000000000000000..58f697b2eac70685c902b1d5b3ac9419e02fbc9f Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/maharshi_vyas.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/noua_toukourou.png b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/noua_toukourou.png new file mode 100644 index 0000000000000000000000000000000000000000..51fdb2dc3eb10f2efb497bc175a95984bd99dcb4 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/noua_toukourou.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/pinar_alper.png b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/pinar_alper.png new file mode 100644 index 0000000000000000000000000000000000000000..0019dd0447eef11d5250e1bd05f46e93a7b7460f Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/pinar_alper.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/reinhard_schneider.png b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/reinhard_schneider.png new file mode 100644 index 0000000000000000000000000000000000000000..47a3054ff071063a9ec9823d812c3813cbc053a9 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/reinhard_schneider.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/sarah_peter.png b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/sarah_peter.png new file mode 100644 index 0000000000000000000000000000000000000000..80bf92a2d1dc7b717524c19d0dbb1337d26b4dcd Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/sarah_peter.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/venkata_satagopam.png b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/venkata_satagopam.png new file mode 100644 index 0000000000000000000000000000000000000000..2ae8d3f3bcbe6ca314286e2f27a1423656393caf Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/venkata_satagopam.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/vilem_ded.png b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/vilem_ded.png new file mode 100644 index 0000000000000000000000000000000000000000..89c15519f05adfd9542370f5f68f242bc49c29b0 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/vilem_ded.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/wei_gu.png b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/wei_gu.png new file mode 100644 index 0000000000000000000000000000000000000000..1bec4289793b7643c67c2c25fac8840725b78e2e Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/wei_gu.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/yohan_yarosz.png b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/yohan_yarosz.png new file mode 100644 index 0000000000000000000000000000000000000000..ca2058780f7aca6f002ccaf9ac6d39f3e236c495 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/R3_profile_pictures/yohan_yarosz.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/banned_exchange_channels.png b/2019/2019-08-22_IT101-DM/slides/img/banned_exchange_channels.png new file mode 100644 index 0000000000000000000000000000000000000000..a8976b490406fe27b2c24ac4793e8b9149dd49f9 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/banned_exchange_channels.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/checksum.png b/2019/2019-08-22_IT101-DM/slides/img/checksum.png new file mode 100644 index 0000000000000000000000000000000000000000..a5903f814f641dec345f4e9205cb7e259ed78f99 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/checksum.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/cleaning-table.jpg b/2019/2019-08-22_IT101-DM/slides/img/cleaning-table.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4ebc145fdba2f3b8539a94c03ff3b848306558ff Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/cleaning-table.jpg differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/code-example.png b/2019/2019-08-22_IT101-DM/slides/img/code-example.png new file mode 100644 index 0000000000000000000000000000000000000000..8289330ce736782b6724a5bd388d5051877ad2f5 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/code-example.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/code_versioning.png b/2019/2019-08-22_IT101-DM/slides/img/code_versioning.png new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/2019/2019-08-22_IT101-DM/slides/img/data-flow_chart.png b/2019/2019-08-22_IT101-DM/slides/img/data-flow_chart.png new file mode 100644 index 0000000000000000000000000000000000000000..d1db1c4eccfa2dcf9b1fd0a3716c1377d0a39eae Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/data-flow_chart.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/data-flow_paper.png b/2019/2019-08-22_IT101-DM/slides/img/data-flow_paper.png new file mode 100644 index 0000000000000000000000000000000000000000..12ac6103774c4a7f37bb72693894e46e26da4c78 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/data-flow_paper.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/data-flow_sources.png b/2019/2019-08-22_IT101-DM/slides/img/data-flow_sources.png new file mode 100644 index 0000000000000000000000000000000000000000..28c18b1a694bfe66692ab071e968dc7ffdfb058e Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/data-flow_sources.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/data-flow_transformation.png b/2019/2019-08-22_IT101-DM/slides/img/data-flow_transformation.png new file mode 100644 index 0000000000000000000000000000000000000000..a105bad4a3ab0610d79502b51a2da889f605ac3a Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/data-flow_transformation.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/excel_analyses-sheet.jpeg b/2019/2019-08-22_IT101-DM/slides/img/excel_analyses-sheet.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..808345a24ca8cb103724fa8f7ed9ff9b47a240ff Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/excel_analyses-sheet.jpeg differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/excel_data-sheet.png b/2019/2019-08-22_IT101-DM/slides/img/excel_data-sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..43e4dbf9e38b9f7e0677165a4bcba4c4b679506d Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/excel_data-sheet.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/fair-principles.png b/2019/2019-08-22_IT101-DM/slides/img/fair-principles.png new file mode 100644 index 0000000000000000000000000000000000000000..6113901a2c4dafabaf2f5e7063203054f54c768c Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/fair-principles.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/favicon.ico b/2019/2019-08-22_IT101-DM/slides/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9b935c03f6f841601835db006ed02b582166cdc8 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/favicon.ico differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/plot-data.png b/2019/2019-08-22_IT101-DM/slides/img/plot-data.png new file mode 100644 index 0000000000000000000000000000000000000000..3bd78bc54b8d4652167613f0d306f449508cfec7 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/plot-data.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/r3-training-logo.png b/2019/2019-08-22_IT101-DM/slides/img/r3-training-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..48a3aeaa54640a2bde1d4534dd9922d2ea90840c Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/r3-training-logo.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/red-cross.png b/2019/2019-08-22_IT101-DM/slides/img/red-cross.png new file mode 100644 index 0000000000000000000000000000000000000000..ee8170e443f67c0cf33801805552fcabfc5746ae Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/red-cross.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/reproducibility_nature.png b/2019/2019-08-22_IT101-DM/slides/img/reproducibility_nature.png new file mode 100644 index 0000000000000000000000000000000000000000..ddb8ed53e163a876bc128b0843024ae5dfcaffc2 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/reproducibility_nature.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/rubberducking.png b/2019/2019-08-22_IT101-DM/slides/img/rubberducking.png new file mode 100644 index 0000000000000000000000000000000000000000..b9491b259fa6229c1da732368fe1eb879127d2f1 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/rubberducking.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/rudi_balling.jpg b/2019/2019-08-22_IT101-DM/slides/img/rudi_balling.jpg new file mode 100644 index 0000000000000000000000000000000000000000..869d607a0d105e37354d017dd927052f59f229ca Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/rudi_balling.jpg differ diff --git a/2019/2019-08-22_IT101-DM/slides/img/scripts/ggplot_visualization.R b/2019/2019-08-22_IT101-DM/slides/img/scripts/ggplot_visualization.R new file mode 100644 index 0000000000000000000000000000000000000000..aedbb7067eea83600fedf31b0f56aec558696d33 --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/img/scripts/ggplot_visualization.R @@ -0,0 +1,22 @@ + +library(ggplot2) +library(data.table) +library(ggpubr) +data(iris) +iris <- data.table(iris) +iris <- iris[c(1:103)] + +g1 <- ggplot(iris, aes(x = Species, y = Sepal.Length))+ + geom_bar(aes(fill = Species),stat="summary", fun.y="mean" ) +guides(fill = F)+ + ylim(c(0,8)) + +g2 <- ggplot(iris, aes(x = Species, y = Sepal.Length))+ + geom_boxplot(aes(fill = Species))+ + ylim(c(0,8))+guides(fill = F) + +g3 <- ggplot(iris, aes(x = Species, y = Sepal.Length))+ + geom_boxplot(aes(fill = Species))+ + ylim(c(0,8))+ geom_point( position="jitter")+ + guides(fill = F) + +ggarrange(g1, g2, g3, nrow = 1)+ggsave(filename = "../plot-data.png", device = "png", width =12, height = 6) diff --git a/2019/2019-08-22_IT101-DM/slides/img/wordcloud.png b/2019/2019-08-22_IT101-DM/slides/img/wordcloud.png new file mode 100644 index 0000000000000000000000000000000000000000..7fb00a8005204df151fc4ebb151c9e86214bfc80 Binary files /dev/null and b/2019/2019-08-22_IT101-DM/slides/img/wordcloud.png differ diff --git a/2019/2019-08-22_IT101-DM/slides/index.md b/2019/2019-08-22_IT101-DM/slides/index.md new file mode 100644 index 0000000000000000000000000000000000000000..27f78049a7c6b04c51174c45b44e99dbaba866ae --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/index.md @@ -0,0 +1,20 @@ +# IT101 - Working with computers +<br>IT101 - Working with computers<br> +## November 7th, 2019 + +<div style="top: 6em; left: 0%; position: absolute;"> + <img src="theme/img/lcsb_bg.png"> +</div> + +<div style="top: 5em; left: 60%; position: absolute;"> + <img src="slides/img/r3-training-logo.png" height="200px"> + <br><br><br><br> + <h3></h3> + <br><br><br> + <h4> + Vilem Ded<br> + Data Steward<br> + vilem.ded@uni.lu<br> + <i>Luxembourg Centre for Systems Biomedicine</i> + </h4> +</div> diff --git a/2019/2019-08-22_IT101-DM/slides/ingestion.md b/2019/2019-08-22_IT101-DM/slides/ingestion.md new file mode 100644 index 0000000000000000000000000000000000000000..1f26bc725eeb959ee923da1d5f0a4d0686283879 --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/ingestion.md @@ -0,0 +1,68 @@ +# Data housekeeping +## Available data storage +<div class='fragment' style="position:absolute"> +<img src="slides/img/LCSB_storages_full.png" height="750px"> +</div> + +<div class='fragment' style="position:absolute"> +<img src="slides/img/LCSB_storages_personal-crossed.png" height="750px"> +</div> + + + +# Data ingestion/transfer +## Receiving and sending data + +<img height="450px" style="position:relative;left:10%" src="slides/img/banned_exchange_channels.png"><br> +<div style="position:absolute; left:10%;width:30%"> + +## E-mail is not for data transfer + +* Avoid transfer of any data by e-mail +* E-mail is a poor repository +* Data can be read on passage + +</div> +<div class="fragment" style="left:50%; width:30%; position:absolute"> + +## Exchanging data +* Share on Atlas server +* OwnCloud share (LCSB - BioCore) +* DropIt service (SIU) +* DUMA (Aspera) share for sensitive data +</div> +</div> + + + + +# Data ingestion/transfer +Data can be corrupted: + * (non-)malicious modification + * faulty file transfer + * disk corruption + +<div class="fragment"> + +### Solution + + * disable write access to the source data + * Generate checksums! + +<div style="position:absolute;left:40%"> +<img src="slides/img/checksum.png" width="500px"> +</div> +</div> + +<div class="fragment" style="position:relative; left:0%"> + + +## When to generate checksums? +* before data transfer + - new dataset from collaborator + - upload to remote repository + +* long term storage + - master version of dataset + - snapshot of data for publication +</div> diff --git a/2019/2019-08-22_IT101-DM/slides/introduction.md b/2019/2019-08-22_IT101-DM/slides/introduction.md new file mode 100644 index 0000000000000000000000000000000000000000..95e30815a03c5be0f1dd409701ec0edc15d2aa73 --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/introduction.md @@ -0,0 +1,26 @@ +# Introduction +<div class="fragment" style="position:absolute"> +<img height="450px" src="slides/img/wordcloud.png"><br> + +## Learning objectives + + * How to manage your data + * How to look and analyze your data + * Solving issues with computers + * Reproduciblity in the research data life cycle + +</div> +<div class="fragment" style="position:relative;left:50%; width:40%"> +<div > +<center> +<img height="405px" src="slides/img/rudi_balling.jpg"><br> +Prof. Dr. Rudi Balling, director +</center> +</div> + +## Pertains to practically all people at LCSB + * Scientists + * PhD candidates + * Technicians + * Administrators +</div> diff --git a/2019/2019-08-22_IT101-DM/slides/list.json b/2019/2019-08-22_IT101-DM/slides/list.json new file mode 100644 index 0000000000000000000000000000000000000000..5fb59556a24028c74cb6a46ec65a0603e05c050a --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/list.json @@ -0,0 +1,17 @@ +[ + {"filename": "index.md"}, + {"filename": "introduction.md"}, + {"filename": "data-introduction.md"}, + {"filename": "data_flow.md"}, + {"filename": "ingestion.md"}, + {"filename": "storage_setup.md"}, + {"filename": "data-housekeeping.md"}, + {"filename": "reproducibility.md"}, + {"filename": "code_versioning.md"}, + {"filename": "visualization.md"}, + {"filename": "problem_solving.md"}, + {"filename": "fair-principles.md"}, + {"filename": "r3_group.md"}, + {"filename": "howtos.md"}, + {"filename": "thanks.md"} +] diff --git a/2019/2019-08-22_IT101-DM/slides/overview.md b/2019/2019-08-22_IT101-DM/slides/overview.md new file mode 100644 index 0000000000000000000000000000000000000000..6f9143c7c64fa539eb44c3ea5ff9eec076701879 --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/overview.md @@ -0,0 +1,25 @@ +## Overview + +0. Introduction - learning objectives + targeted audience +1. Data workflow +1. Ingestion: + * receiving/sending/sharing data + * file naming + * checksums + * backup + 1. making data tidy + * what is table + * + 1. Learning to code workflows and analyses - excel files, coding + 1. Code versioning and reproducibility + 1. Visualization + * see the data + 1. problem solving + * guide + * rubberducking + * google for help + * oracle + 1. R3 team + 1. Acknowledgment + + 1. data minimization diff --git a/2019/2019-08-22_IT101-DM/slides/problem_solving.md b/2019/2019-08-22_IT101-DM/slides/problem_solving.md new file mode 100644 index 0000000000000000000000000000000000000000..6f0770d7434823839ea2081e2f2439f58c73535e --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/problem_solving.md @@ -0,0 +1,24 @@ +# Problem solving +A guide for solving computing issues + +1. Express the problem + * Write down what you want to achieve +2. Search for help + * Read **FAQs**, **help pages** and the **official documentation** well before turning to Google + * Use stack exchange, forums and related resources carefully +3. Ask an expert + + + +# Problem solving +## Write to the Oracle + + * The Oracle gives the precise answer to your problems + * You have to submit the problem in writing + * The Oracle answers a questions only once or if it finds the problem interesting + * If you supply a trivial problem, it will stop answering + + * Available Oracles + * Service Now @ [service.uni.lu] (Uni and LCSB helpdesk) + * [Stack Overflow](https://stackoverflow.com/) and other online sites + * Local experts diff --git a/2019/2019-08-22_IT101-DM/slides/r3_group.md b/2019/2019-08-22_IT101-DM/slides/r3_group.md new file mode 100644 index 0000000000000000000000000000000000000000..63cf7cdfe3e62e3e33ebbafc79f7805dcb1e21ee --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/r3_group.md @@ -0,0 +1,132 @@ +# Responsible and Reproducible Research (R<sup>3</sup>) +## What is R<sup>3</sup>? + + +A multi-facetted change management +process built on 3 pillars: + +- R3 pathfinder + +- R3 school + +- R3 accelerator + +Common link module: R3 clinic + +<div style="top: -1em; left: 50%; position: absolute;"> + <img src="slides/img/3pillars-full.png"> +</div> + +<br> +<br> +<br> +<br> + +<aside class="notes"> +Pathfinder - policies, data management changes, +School - courses, howtos, +Accelerator - advanced teams and their boost/support +Clinic - hands-on, meetings in groups, code review + suggestions +</aside> + +## R<sup>3</sup> Training + * LCSB's Monthly Data Management and Data Protection training + * ELIXIR Luxembourg's Research data management and stewardship training - 27th Jan 2020 + * R<sup>3</sup> school Git basics - every 4 months + <aside class="notes"> + Direct newcommers to this monthly training + </aside> + + + +# Responsible and Reproducible Research (R<sup>3</sup>) +<center><img src="slides/img/r3-training-logo.png" height="200px"></center> + +Your R<sup>3</sup> contacts: +<div style="display:block;text-align:center;position:relative"> +<div class="profile-container"> + + * Christophe Trefois + * <img src="slides/img/R3_profile_pictures/christophe_trefois.png"> + * R<sup>3</sup> coordination + +</div> +<div class="profile-container"> + + * Venkata Satagopam + * <img src="slides/img/R3_profile_pictures/venkata_satagopam.png"> + * R<sup>3</sup> Core + +</div> +<div class="profile-container"> + + * Reinhard Schneider + * <img src="slides/img/R3_profile_pictures/reinhard_schneider.png"> + * Head of Bioinformatics Core + +</div> +<div class="profile-container"> + + * Pinar Alper + * <img src="slides/img/R3_profile_pictures/pinar_alper.png"> + * Data steward + +</div> +<div class="profile-container"> + + * Yohan Yarosz</li> + * <img src="slides/img/R3_profile_pictures/yohan_yarosz.png"> + * R<sup>3</sup> Core + +</div> +<div class="profile-container"> + + * Laurent Heirendt</li> + * <img src="slides/img/R3_profile_pictures/laurent_heirendt.png"> + * Git, CI + +</div> +<div class="profile-container"> + + * Wei Gu</li> + * <img src="slides/img/R3_profile_pictures/wei_gu.png"> + * R<sup>3</sup> Core + +</div> +<div class="profile-container"> + + * Sarah Peter</li> + * <img src="slides/img/R3_profile_pictures/sarah_peter.png"> + * HPC + +</div> +<div class="profile-container"> + + * Vilem Ded</li> + * <img src="slides/img/R3_profile_pictures/vilem_ded.png"> + * Data steward + +</div> +<div class="profile-container"> + + * Noua Toukourou</li> + * <img src="slides/img/R3_profile_pictures/noua_toukourou.png"> + * R<sup>3</sup> Core + +</div> +<div class="profile-container"> + + * Alexey Kolodkin</li> + * <img src="slides/img/R3_profile_pictures/alexey_kolodkin.png"> + * Data steward + +</div> +<div class="profile-container"> + + * Maharshi Vyas</li> + * <img src="slides/img/R3_profile_pictures/maharshi_vyas.png"> + * R<sup>3</sup> Core + +</div> + +</div> diff --git a/2019/2019-08-22_IT101-DM/slides/reproducibility.md b/2019/2019-08-22_IT101-DM/slides/reproducibility.md new file mode 100644 index 0000000000000000000000000000000000000000..746ff14558c0470166ee3655e900da8993396c45 --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/reproducibility.md @@ -0,0 +1,94 @@ +# Reproducibility +* ensures credibility +* key requirement for follow-up and collaborative studies + +<div style="position:absolute"> +<img src="slides/img/reproducibility_nature.png" height="650px"> +</div> + +<div class="fragment" style="position:relative;left:50%"> + +## Why is our workflow not reproducible? + + Lack of provenance: + * Input data downloaded from “some website†+ * Copy & paste operations + * Manual text entry + * Analysis not coded + * Intermediate and final data not generated by deterministic processes +</div> + + + +# Reproducibility +## Learning to code workflows and analyses +<div style="display:inline-grid;grid-gap: 40px;grid-template-columns: auto auto;position:relative;left:12%"> +<div class="fragment"> +<div class="content-box"> +<div class="box-title red">Excel alone</div> +<div class="content"> + + * Is great for looking at data. + * Data entry is fast. + * Analysis flow is hidden and not in focus. + +</div> +</div> +<img src="slides/img/excel_data-sheet.png" height="350px"> +</div> + +<div class="fragment"> +<div class="content-box"> +<div class="box-title">Coding</div> +<div class="content"> + + * Is great for controlling analysis + * Data is hidden. + * Flow is visible. +</div> +</div> +<img src="slides/img/code-example.png" height="350px"> +</div> +</div> + +<div class="content-box fragment" style="width:70%;margin:0 auto;"> +<div class="box-title green">Develop data science skills</div> +<div class="content"> + + * Develop good data management and analysis habits. + * Start coding your analysis within Excel. + * Make yourself familiar with a statistics environment such as R, Python or Matlab + * No need to learn a high level programming language such as C++ or Java. + +</div> +</div> + +</div> + + + +# Table +<div style="position:absolute"> +"Tabular format of data" + +### Header + + * one line! + * **good** names of columns + +### Rows + * represent observations/entities + +### Columns + * represent property of the observations + * one data type +</div> +<div style="left:50%; position:relative; top:-2em"> +<img src="slides/img/excel_data-sheet.png" width="600px"> +<div class="fragment" data-fragment-index="3" style="position:absolute"> +<img src="slides/img/excel_analyses-sheet.jpeg" width="600px"><br> +</div> +<div class="fragment" data-fragment-index="4" style="position:relative"> +<img src="slides/img/red-cross.png" width="600px"><br> +</div> +</div> diff --git a/2019/2019-08-22_IT101-DM/slides/storage_setup.md b/2019/2019-08-22_IT101-DM/slides/storage_setup.md new file mode 100644 index 0000000000000000000000000000000000000000..d05cd48bf85660315a878b7159dcdc269ca26570 --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/storage_setup.md @@ -0,0 +1,73 @@ +# Storage set-up + +* Download Anti-virus software +* Encrypt movable media + +### Backup + * take care of your own backups! + * don't work on your backup copy! + * minimum is <b>3-2-1 backup rule</b> + +<div class="fragment" style="display:inline-grid;grid-template-columns: repeat(3, 1fr);"> +<div class="content-box"> + <div class="box-title green">Personal research data</div> + <div class="content"> + + * Working documents on your laptop + * Online share (DropIt, OwnCloud) + * Copy on an external hard drive + + </div> +</div> + +<div class="content-box"> + <div class="box-title blue">Group research data</div> + <div class="content"> + + * Research data generated in group + * Back-up by central IT + * Geo-resilient copy + + </div> +</div> +</div> + + + +# Storage set-up +## Backup - Central IT/LCSB +<div style="position:relative"> +<img src="slides/img/LCSB_storages_backed-up.png" height="750px"> +</div> +<div style="position:absolute;left:65%;top:60%"> + +Server administrators take care of: +* server backups +* LCSB OwnCloud backups +* group/application server backups (not always) + +</div> + + + +# Storage set-up +## Backup - personal research data +<div style="position:relative"> +<img src="slides/img/LCSB_storages_backup.png" height="750px"> +</div> +<div style="position:absolute;left:55%;top:70%"> + +<font color="red">One version should reside on Atlas!</font> + +</div> + + + +# The Server is your friend! + * Allows a consistent backup policy for your datasets + * Keeps number of copies to minimum + * Specification of clear access rights + * High accessibility + * Data are discoverable + * Server can't be stolen + * ... diff --git a/2019/2019-08-22_IT101-DM/slides/thanks.md b/2019/2019-08-22_IT101-DM/slides/thanks.md new file mode 100644 index 0000000000000000000000000000000000000000..12e1b47e2f9440873ae0a7dd2f35f285f0307877 --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/thanks.md @@ -0,0 +1,11 @@ +# Thank you.<sup> </sup> +<center><img src="slides/img/r3-training-logo.png" height="200px"></center> +<br> +<br> +<br> +<br> +<center> +Contact us if you need help: + +<a href="mailto:r3lab.core@uni.lu">r3lab.core@uni.lu</a> +</center> diff --git a/2019/2019-08-22_IT101-DM/slides/visualization.md b/2019/2019-08-22_IT101-DM/slides/visualization.md new file mode 100644 index 0000000000000000000000000000000000000000..78847e73a297f77e3753623d7e546dcf499d4e2f --- /dev/null +++ b/2019/2019-08-22_IT101-DM/slides/visualization.md @@ -0,0 +1,21 @@ +# Visualization +<center> + +**Plot your data!** +<figure> + <img src="slides/img/DinoSequentialSmaller.gif" height="500px"> + <blockquote>"never trust summary statistics alone; always visualize your data"</blockquote> + <figcaption>--Alberto Cairo</figcaption> +</figure> +</center> + + + +# Visualization +<center> + +**Plot your data!** +<figure> + <img src="slides/img/plot-data.png" height="800px"> +</figure> +</center> diff --git a/README.md b/README.md index a64436f75fdcd9991cba69e793914ca389c038eb..504603b2a4ce3a90fe48358862f2404f4636ddbc 100644 --- a/README.md +++ b/README.md @@ -2,68 +2,4 @@ This repository contains all presentations related to R3. -## Prerequisites - -In order to use the slide deck, you must have: - -- **git**: For convenience, have your SSH key configured on git-r3lab. [Here](https://docs.gitlab.com/ee/gitlab-basics/create-your-ssh-keys.html) is how to do it. -- **git-lfs**: Installation instructions are [here](https://help.github.com/en/articles/installing-git-large-file-storage) -- **Python 3**: It is recommend to use a virtual environment. Information on how to create a virtual environment is [here](https://virtualenvwrapper.readthedocs.io/en/latest/). -- **yarn**: Instructions are [here](https://yarnpkg.com/lang/en/docs/install) - -## How to get started - -- Fork this repository -- Clone your fork - ```bash - $ git clone --recurse-submodules ssh://git@git-r3lab-server.uni.lu:8022/<yourUsername>/presentations-internal.git - ``` -- If the `--recurse-submodules` flag has been omitted, run this command to check for the missing modules and update them: - ```bash - $ git submodule update --init --recursive - ``` -- Open a terminal and work on your presentation: - ```bash - $ cd presentations-internal - $ pip install . - $ contribute --date="YYYY-MM-DD" --name="yourAwesomeTitle" - ``` - -## <img src="https://webdav-r3lab.uni.lu/public/R3lab/logos/warning.png" height="20px" width="20px"> Tips - -- Please create a branch from `develop` before starting to work on your presentation. You could name it `YYYY-MM-DD_yourAwesomeTitle`. -- If you are done with making changes to your presentation, push them to your fork and open a merge request against the `develop` branch. - -## <img src="https://webdav-r3lab.uni.lu/public/R3lab/logos/warning.png" height="20px" width="20px">Solving the error: `Fatal error: Unable to find local grunt.` - -If you get a fatal error complaining about your local grunt installation, please make sure that you have add the `--recurse-submodules` flag when cloning, or that you ran the `git submodule update --init --recursive` command from within -the `presentations-internal` directory. - -Please also make sure that you run the `contribute` command from the root of the `presentations-internal` directory. - - -## How to continue working on a presentation - - For resuming your work on a presentation, you can either run the same contribute command:</br> - ``` - $ contribute --date="YYYY-MM-DD" --name="yourAwesomeTitle" - ``` - - or you can navigate to your presentation directory and start `grunt` server: - ``` - $ cd YYYY/yourAwesomeTitle/ - $ grunt server - ``` - -## Adding a new slide/slides - - Create a Markdown file with your slide(s) in `YYYY-MM-DD_yourAwesomeTitle/slides` and place it into `list.md` file at desired position: - -``` -[ - { "filename": "index.md" }, - { "filename": "structure.md" }, - { "filename": "myNewAwesomeSlide.md" }, - { "filename": "thanks.md" } -] -``` +Detailed instructions are here: https://git-r3lab.uni.lu/R3/outreach/templates/presentation \ No newline at end of file diff --git a/contribute.py b/contribute.py index a8c76e102786d7e3bc83865a7fc45b52a963b6a4..ea625ac904b127a1f0fc68bfb19110657e34a89e 100644 --- a/contribute.py +++ b/contribute.py @@ -20,6 +20,10 @@ def main(date, name): # get the root directory rootDir = os.getcwd() + # create a root directory if not existing + if not os.path.exists(mainDir): + os.mkdir(mainDir) + # generate the full name of the presentation fullName = date + "_" + name diff --git a/contribute.sh b/contribute.sh new file mode 100755 index 0000000000000000000000000000000000000000..76ceb98890c5e78b1098cce8f372235af6300b30 --- /dev/null +++ b/contribute.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# set the variables +dockerImg="git-r3lab.uni.lu:4567/r3/docker/nodejs-yarn-grunt" +dockerPort="9000" + +helpFunction() +{ + echo "" + echo "Usage: $0 -d parameterDate -n parameterName" + echo -e "\t-d Data of presentation" + echo -e "\t-n Name of presentation" + exit 1 # Exit script after printing help +} + +while getopts "d:n:" opt +do + case "$opt" in + d ) parameterDate="$OPTARG" ;; + n ) parameterName="$OPTARG" ;; + ? ) helpFunction ;; # Print helpFunction in case parameter is non-existent + esac +done + +# Print helpFunction in case parameters are empty +if [ -z "$parameterDate" ] || [ -z "$parameterName" ] +then + echo "Some or all of the parameters are empty"; + helpFunction +fi + +# launch the docker file +cmd="python contribute.py --date=\"$parameterDate\" --name=\"$parameterName\"" + +docker run -p $dockerPort:$dockerPort -it -v $(pwd)/:/presentation $dockerImg /bin/bash -c "$cmd" diff --git a/template/Gruntfile.coffee b/template/Gruntfile.coffee index 4aee8a284d585fe7a2863c7c896007966ef05b5b..686dd9be931ab71b7ae4e04acd8fba52863aad40 100644 --- a/template/Gruntfile.coffee +++ b/template/Gruntfile.coffee @@ -36,9 +36,9 @@ module.exports = (grunt) -> port: 9000 # Change hostname to '0.0.0.0' to access # the server from outside. - hostname: 'localhost' + #hostname: '0.0.0.0' base: '.' - open: true + #open: true livereload: true jshint: diff --git a/theme b/theme index 3f950f06b72824f97b486a47d54754eeed0f0faf..8b3401b863d08b5a676bfa327dba915a14d41e70 160000 --- a/theme +++ b/theme @@ -1 +1 @@ -Subproject commit 3f950f06b72824f97b486a47d54754eeed0f0faf +Subproject commit 8b3401b863d08b5a676bfa327dba915a14d41e70