From 386da517c3134098d4a8541d68a68a5f0f25759a Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Sat, 7 Jul 2018 16:00:18 +0200 Subject: [PATCH 01/42] updated title --- _config.yml | 96 ++++++++++++++++++++++++++--------------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/_config.yml b/_config.yml index d79930b54..1a4734eef 100644 --- a/_config.yml +++ b/_config.yml @@ -1,48 +1,48 @@ -#Setup ~~~ -#Follow these 2 steps to set up your site. - -#Step 1: give your study group a name and a short description, -#and choose a language from the options in the _data directory: -title: Our Study Group -description: "A study group." -language: en - -#Step 2: press the green 'Commit Changes' button at the bottom of this page. - -# That's it, your website is all set up! -# You can see it at https://YourUserName.github.io/studyGroup/ -# No need to change anything below this line. -# To make your first event, check out the instructions at https://github.com/mozillascience/studyGroup#how-to-launch-a-new-event -# Having trouble? Open a new issue at https://github.com/mozillascience/studyGroup/issues and we'll help you out ASAP! - -# Optional Configuration -# None of these things need to be changed - but feel free! - -titleBackground: "https://s3-us-west-2.amazonaws.com/webmaker-kits/learning%402x.jpg" -headlineSmall: "Welcome To Our Study Group!" -headlineMain: "Let's Work Together" - -# Setup Google Calendar -# Usage: -# 1. create a new google account; set the calendar to 'public' (see https://support.google.com/calendar/answer/37083?hl=en on how to do this) -# 2. change 'USER' in the example urls below to the username of the google account you made for your calendar -# 3. set calendar_on: True. - -calendar_on: False -calendar_embed_url: "https://www.google.com/calendar/embed?src=USER@gmail.com" -calendar_ical_url: "https://www.google.com/calendar/ical/USER@gmail.com/public/basic.ics" - - -#======================================== -# No touching anything below this line :) -#======================================== -# Color settings (hex-codes without the leading hash-tag) -color: - primary: fed136 - secondary: fec503 - secondary-dark: 333 - -# Build settings -markdown: kramdown -permalink: pretty -future: true +#Setup ~~~ +#Follow these 2 steps to set up your site. + +#Step 1: give your study group a name and a short description, +#and choose a language from the options in the _data directory: +title: UiO Carpentry study Group +description: "Study group for the Carpentries community at University of Oslo." +language: en + +#Step 2: press the green 'Commit Changes' button at the bottom of this page. + +# That's it, your website is all set up! +# You can see it at https://YourUserName.github.io/studyGroup/ +# No need to change anything below this line. +# To make your first event, check out the instructions at https://github.com/mozillascience/studyGroup#how-to-launch-a-new-event +# Having trouble? Open a new issue at https://github.com/mozillascience/studyGroup/issues and we'll help you out ASAP! + +# Optional Configuration +# None of these things need to be changed - but feel free! + +titleBackground: "https://s3-us-west-2.amazonaws.com/webmaker-kits/learning%402x.jpg" +headlineSmall: "Welcome To Our Study Group!" +headlineMain: "Let's Work Together" + +# Setup Google Calendar +# Usage: +# 1. create a new google account; set the calendar to 'public' (see https://support.google.com/calendar/answer/37083?hl=en on how to do this) +# 2. change 'USER' in the example urls below to the username of the google account you made for your calendar +# 3. set calendar_on: True. + +calendar_on: False +calendar_embed_url: "https://www.google.com/calendar/embed?src=USER@gmail.com" +calendar_ical_url: "https://www.google.com/calendar/ical/USER@gmail.com/public/basic.ics" + + +#======================================== +# No touching anything below this line :) +#======================================== +# Color settings (hex-codes without the leading hash-tag) +color: + primary: fed136 + secondary: fec503 + secondary-dark: 333 + +# Build settings +markdown: kramdown +permalink: pretty +future: true From 423d009b6f0e40995035cd9981369af84546c68c Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Sat, 7 Jul 2018 17:08:09 +0200 Subject: [PATCH 02/42] added logo and list of members --- _config.yml | 11 ++++--- _data/members.yml | 42 ++++++++++++++++++++++--- _includes/css/custom.css | 17 ++++++++++ _includes/header.html | 1 + img/logos/uio-carpentry-logo-small.png | Bin 0 -> 15447 bytes 5 files changed, 62 insertions(+), 9 deletions(-) create mode 100644 img/logos/uio-carpentry-logo-small.png diff --git a/_config.yml b/_config.yml index 1a4734eef..565087a6b 100644 --- a/_config.yml +++ b/_config.yml @@ -3,7 +3,7 @@ #Step 1: give your study group a name and a short description, #and choose a language from the options in the _data directory: -title: UiO Carpentry study Group +title: Carpentry@UiO Study Group description: "Study group for the Carpentries community at University of Oslo." language: en @@ -19,8 +19,9 @@ language: en # None of these things need to be changed - but feel free! titleBackground: "https://s3-us-west-2.amazonaws.com/webmaker-kits/learning%402x.jpg" -headlineSmall: "Welcome To Our Study Group!" -headlineMain: "Let's Work Together" +headlineSmall: "Welcome to UiO Carpentry Study Group!" +headlineMain: "Let's Meet and Work Together" +avatar: "img/logos/uio-carpentry-logo-small.png" # Setup Google Calendar # Usage: @@ -38,8 +39,8 @@ calendar_ical_url: "https://www.google.com/calendar/ical/USER@gmail.com/public/b #======================================== # Color settings (hex-codes without the leading hash-tag) color: - primary: fed136 - secondary: fec503 + primary: f42e3a + secondary: e30613 secondary-dark: 333 # Build settings diff --git a/_data/members.yml b/_data/members.yml index 1d1e9f237..c6edfc649 100644 --- a/_data/members.yml +++ b/_data/members.yml @@ -1,6 +1,40 @@ -- name: Bill Mills - affiliation: TRIUMF - github: BillMills +- name: Gladys Nalvarte + affiliation: Simula + github: GladysNalvarte interests: - - Programming + - Python - Open Science + - jupyterhub + - repo2docker + +- name: Ana Costa Conrado + affiliation: + github: anacost + interests: + - Python + - R + - Open Science + - Machine & Deep Learning + +- name: Michel Heeremans + affiliation: University of Oslo + github: heereman + interests: + - Carpentry@UiO + +- name: Anne Bergsaker + affiliation: University of Oslo + github: + interests: + - Carpentry@UiO + +- name: Anne Fouilloux + affiliation: University of Oslo + github: annefou + interests: + - Python + - R + - Fortran + - HPC & Cloud computing + - The Carpentries + diff --git a/_includes/css/custom.css b/_includes/css/custom.css index 164b93f05..098efc76c 100644 --- a/_includes/css/custom.css +++ b/_includes/css/custom.css @@ -4,6 +4,22 @@ .team-member i.fa { font-size: 110px; } +.site-avatar { + float: left; + width: 60px; + height: auto; + margin-right: 15px; + + @include mobile { + float: none; + display: block; + margin: 0 auto; + } + + img { + border-radius: 5px; + } +} @media(max-width: 991px) { ul.events { @@ -16,3 +32,4 @@ white-space: initial; } } + diff --git a/_includes/header.html b/_includes/header.html index 07d5131a3..b4ee07440 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -3,6 +3,7 @@
diff --git a/_includes/footer.html b/_includes/footer.html index d0e911375..ec4cda823 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -3,7 +3,7 @@ diff --git a/_includes/header_lessons.html b/_includes/header_lessons.html new file mode 100644 index 000000000..e22864a51 --- /dev/null +++ b/_includes/header_lessons.html @@ -0,0 +1,53 @@ + + + +
+
+
+
{{ site.lessons }}
+
+
+
diff --git a/_layouts/page.html b/_layouts/page.html new file mode 100644 index 000000000..f9a8be4e4 --- /dev/null +++ b/_layouts/page.html @@ -0,0 +1,21 @@ + + + + {% include head.html %} + + + {% include header_lessons.html %} + +
+
+

{{ page.title }}

+
+ {{ content }} +
+
+ {% include footer.html %} + {% include js.html %} + + + + diff --git a/book_club/index.html b/book_club/index.html new file mode 100644 index 000000000..acf3813e2 --- /dev/null +++ b/book_club/index.html @@ -0,0 +1,21 @@ +--- +layout: page +title: 'Book Club' +--- + + + +

Our Book Club meets quaterly to discuss on a book we have previously chosen. We also gather a list of books on pedagody, teaching practices, personal development. Feel free to suggest books either for personal reading or for group discussions.

+ +
+
+
+
+ +
+ +
+
+
diff --git a/initiatives/index.html b/initiatives/index.html new file mode 100644 index 000000000..95dc0e3b2 --- /dev/null +++ b/initiatives/index.html @@ -0,0 +1,48 @@ +--- +layout: page +title: 'Initiatives we like' +--- + + + +

We list here other initiatives, ideas and programs that aims at improving programing skills of students, PhDs, postdocs and researchers.

+
+
+
+

The Carpentries

+

+ Teach foundational coding and data science skills to researchers worldwide. +

+ + +
+

NeIC CodeRefinery

+

+ Teach students and researchers how to write better code and provide research groups with software development e-infrastructure tools to collaboratively develop, review, discuss, test, and share their codes. +

+ + +
+

Nordic Research Software Engineer Group

+

+ Bring together the community of people writing and contributing to research software from Nordic universities, research institutes, companies and other organizations to share knowledge, to organize meetings, and raise awareness for the scientific recognition of research software. +

+
+ +
+ +
+ +
+
+
diff --git a/lessons/index.html b/lessons/index.html new file mode 100644 index 000000000..fe961e06a --- /dev/null +++ b/lessons/index.html @@ -0,0 +1,65 @@ +--- +layout: page +title: 'Lesson Material' +--- + + + +
+
+
+

By Topic

+{% for lang in site.languages %} +

{{ lang | capitalize }}

+ +
    + {% assign pages_list = site.pages | sort: 'title' %} + {% for node in pages_list %} + {% if node.title != null %} + {% if node.visible == true %} + {% if node.tags contains lang %} +
  • {{ node.title }}
  • + {% endif %} + {% endif %} + {% endif %} + {% endfor %} +
+{% endfor %} +
+ +
+

By Level

+{% for level in site.levels %} +

{{ level | capitalize }}

+ +
    + {% assign pages_list = site.pages | sort: 'title' %} + {% for node in pages_list %} + {% if node.title != null %} + {% if node.visible == true %} + {% if node.tags contains level %} +
  • {{ node.title }}
  • + {% endif %} + {% endif %} + {% endif %} + {% endfor %} +
+{% endfor %} +
+
+
+ +
+ +

Available Lessons from our partners

+ From 22995c0b9aa166854387796b492ebfdbef0d9982 Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Fri, 13 Jul 2018 20:55:30 +0200 Subject: [PATCH 07/42] added link to UiO@Carpentry workshop and initiative --- _data/en.yml | 1 - _includes/portfolio_grid.html | 11 +++++++++++ initiatives/index.html | 21 ++++++++++++++++++++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/_data/en.yml b/_data/en.yml index 1ae788af4..409ec734b 100644 --- a/_data/en.yml +++ b/_data/en.yml @@ -1,6 +1,5 @@ --- whatWeDo: What We Do -events: Events contact: Contact tellMeMore: Tell Me More diff --git a/_includes/portfolio_grid.html b/_includes/portfolio_grid.html index d9c03b1f8..21578200d 100644 --- a/_includes/portfolio_grid.html +++ b/_includes/portfolio_grid.html @@ -1,5 +1,16 @@
+ +
+
+
diff --git a/initiatives/index.html b/initiatives/index.html index 95dc0e3b2..584ea111c 100644 --- a/initiatives/index.html +++ b/initiatives/index.html @@ -9,6 +9,17 @@

We list here other initiatives, ideas and programs t
+

Carpentry@UiO

+

+ To facilitate sharing and reusing of data among researchers Software Carpentry and Data Carpentry, workshops are offered to PhDs and researchers at UiO and OUS. +

+ + +

The Carpentries

Teach foundational coding and data science skills to researchers worldwide. @@ -42,7 +53,15 @@

Nordic Research Sof


- +

R-Ladies Oslo

+

+ Non-profit, civil society community designed to develop our members' R skills & knowledge through social, collaborative learning & sharing. +

+

From 41943ee74c66c202e61a144372ab00a1b0faed8f Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Mon, 16 Jul 2018 12:01:40 +0200 Subject: [PATCH 08/42] Added pytest lesson as a submodule --- .gitmodules | 3 +++ lessons/pytest-lesson | 1 + 2 files changed, 4 insertions(+) create mode 100644 .gitmodules create mode 160000 lessons/pytest-lesson diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..e998b7e03 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "lessons/pytest-lesson"] + path = lessons/pytest-lesson + url = https://github.com/annefou/pytest-lesson diff --git a/lessons/pytest-lesson b/lessons/pytest-lesson new file mode 160000 index 000000000..0fc9c25dc --- /dev/null +++ b/lessons/pytest-lesson @@ -0,0 +1 @@ +Subproject commit 0fc9c25dc9338f5b568599b257094be00418a7de From 83ac4ef69ba31ae7b7e893e2e687b7bb12d9758d Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Fri, 20 Jul 2018 11:22:07 +0200 Subject: [PATCH 09/42] added new book from Greg --- book_club/index.html | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/book_club/index.html b/book_club/index.html index acf3813e2..79b9eb92b 100644 --- a/book_club/index.html +++ b/book_club/index.html @@ -5,7 +5,21 @@ -

Our Book Club meets quaterly to discuss on a book we have previously chosen. We also gather a list of books on pedagody, teaching practices, personal development. Feel free to suggest books either for personal reading or for group discussions.

+Our Book Club meets quaterly to discuss on a book we have previously chosen. We also gather a list of books on pedagody, teaching practices, personal development. Feel free to suggest books either for personal reading or for group discussions. + +
+
+ +
    +
  1. Teaching Tech Together, Greg Wilson

    +
  2. + +
+ +
+
+
+
From 5e0fdfaf52b82b7ce72f64ebaa7f158af52c5fd2 Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Mon, 20 Aug 2018 10:08:25 +0200 Subject: [PATCH 10/42] add new event for organizer meeting --- _posts/2018-08-31-admin.markdown | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 _posts/2018-08-31-admin.markdown diff --git a/_posts/2018-08-31-admin.markdown b/_posts/2018-08-31-admin.markdown new file mode 100644 index 000000000..74013d2a4 --- /dev/null +++ b/_posts/2018-08-31-admin.markdown @@ -0,0 +1,13 @@ +--- +title: Planning of events for fall 2018 +text: Discuss on possible subjects to plan future events +location: Science Library +link: https://github.com/uio-carpentry/studyGroup/issues/3 +date: 2018-08-31 +startTime: '14:00' +endTime: '15:00' + +--- + +Meeting to plan events and activities for fall 2018. + From bc316c09345694ef0431563898a01e8cdbed906b Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Wed, 29 Aug 2018 21:48:09 +0200 Subject: [PATCH 11/42] added location and time meeting in the main webpage --- _posts/2018-08-31-admin.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/_posts/2018-08-31-admin.markdown b/_posts/2018-08-31-admin.markdown index 74013d2a4..dc2c45301 100644 --- a/_posts/2018-08-31-admin.markdown +++ b/_posts/2018-08-31-admin.markdown @@ -11,3 +11,7 @@ endTime: '15:00' Meeting to plan events and activities for fall 2018. +- **When**: Friday 31 August, 14-15h: +- **Where**: Niels Henrik Abels hus, room 209 +- **Who**: _Everybody willing to be involved in the organization of the UiO@Carpentry StudyGroup is welcome._ + From 44ec5f298ba61bc92e1ec9e404cd3aa72aaf41bd Mon Sep 17 00:00:00 2001 From: Michel Heeremans Date: Fri, 31 Aug 2018 14:40:01 +0200 Subject: [PATCH 12/42] Update members.yml Added interests for heereman --- _data/members.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/_data/members.yml b/_data/members.yml index 5310ebb6c..a7f5101d6 100644 --- a/_data/members.yml +++ b/_data/members.yml @@ -21,6 +21,8 @@ github: heereman interests: - Carpentry@UiO + - Research Data Management + - Open Science - name: Anne Bergsaker affiliation: University of Oslo From d19b0eb5778b3100f3f0d8e85c8cba72577fa58c Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Sun, 2 Sep 2018 14:42:09 +0200 Subject: [PATCH 13/42] Added a set of events for our studyGroup@UiO --- _posts/2018-09-07-workalong.markdown | 21 +++++++++++++++++++++ _posts/2018-09-14-bookclub.markdown | 22 ++++++++++++++++++++++ _posts/2018-09-21-demo.markdown | 25 +++++++++++++++++++++++++ _posts/2018-10-12-coworking.markdown | 19 +++++++++++++++++++ _posts/2018-10-19-workalong.markdown | 21 +++++++++++++++++++++ _posts/2018-10-26-coworking.markdown | 20 ++++++++++++++++++++ _posts/2018-11-02-demo.markdown | 21 +++++++++++++++++++++ 7 files changed, 149 insertions(+) create mode 100644 _posts/2018-09-07-workalong.markdown create mode 100644 _posts/2018-09-14-bookclub.markdown create mode 100644 _posts/2018-09-21-demo.markdown create mode 100644 _posts/2018-10-12-coworking.markdown create mode 100644 _posts/2018-10-19-workalong.markdown create mode 100644 _posts/2018-10-26-coworking.markdown create mode 100644 _posts/2018-11-02-demo.markdown diff --git a/_posts/2018-09-07-workalong.markdown b/_posts/2018-09-07-workalong.markdown new file mode 100644 index 000000000..d1c92caa8 --- /dev/null +++ b/_posts/2018-09-07-workalong.markdown @@ -0,0 +1,21 @@ +--- +title: Work along session on National data archives +text: how and where to preserve your data on long-term archive +location: Science Library +link: https://github.com/uio-carpentry/studyGroup/issues/4 +date: 2018-09-07 +startTime: '14:00' +endTime: '16:00' + +--- + +**Session leader**: Michael Heeremans + +More and more researchers need to make available their data before being able to publish an article in a scientific journal. During this work-along StudyGroup@ session you will get an overview of the possibilities you have to archive (long-term preservation) your data. This short demo will help you to understand how you can use the available tools. + +**Registration is not necessary but we ask you to come on time.** + +- **When**: 7th September 2018, 14-16h +- **Where**: Niels Henrik Abels hus, room 209 +- **Who**: _everybody willing to learn about National archives_ + diff --git a/_posts/2018-09-14-bookclub.markdown b/_posts/2018-09-14-bookclub.markdown new file mode 100644 index 000000000..97d43ac38 --- /dev/null +++ b/_posts/2018-09-14-bookclub.markdown @@ -0,0 +1,22 @@ +--- +title: Book Club on Teaching Tech together +text: We start reading the first 5 chapters of "Teaching Tech together (Greg Wilson) +location: Science Library +link: https://github.com/uio-carpentry/studyGroup/issues/5 +date: 2018-09-14 +startTime: '' +endTime: '' + +--- + +**Session leader**: Anne Fouilloux + +We do not meet this week but we encourage you start reading and commenting Greg Wilson's book "Teaching Tech together". + +We are using [https://web.hypothes.is/](https://web.hypothes.is/), an online tool to annotate the web, with anyone, anywhere. + +Start reading "Teaching Tech together" using hypothes.is at [https://hypothes.is/groups/mReaNk2e/studygroup-uio](https://hypothes.is/groups/mReaNk2e/studygroup-uio). + +**online material to learn how to use hypothes.is**: +- https://web.hypothes.is/quick-start-guide-for-students/ + diff --git a/_posts/2018-09-21-demo.markdown b/_posts/2018-09-21-demo.markdown new file mode 100644 index 000000000..5781092e0 --- /dev/null +++ b/_posts/2018-09-21-demo.markdown @@ -0,0 +1,25 @@ +--- +title: Demo session on NetworkX python package +text: Learn about NetworkX python package. +location: Science Library +link: https://github.com/uio-carpentry/studyGroup/issues/6 +date: 2018-09-21 +startTime: '14:00' +endTime: '16:00' + +--- + +**Session leader**: Annika Rockenberger + +NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks. + +During this Coding lightning demo session: + +- Learn about networkX python package +- Get concrete examples on how to use it +- Discuss your use cases + +- **When**: 21st September 2018, 14-16h +- **Location**: Niels Henrik Abels hus, room 209 +- **Who**: _everybody willing to learn about networkX python package_ + diff --git a/_posts/2018-10-12-coworking.markdown b/_posts/2018-10-12-coworking.markdown new file mode 100644 index 000000000..8ecd52715 --- /dev/null +++ b/_posts/2018-10-12-coworking.markdown @@ -0,0 +1,19 @@ +--- +title: Co-working session on "The programming for Historians" +text: Learn how programming can be taught to Historians and what tools they are using +location: Science Library +link: https://github.com/uio-carpentry/studyGroup/issues/7 +date: 2018-10-12 +startTime: '14:00' +endTime: '16:00' + +--- + +**Session leader**: Annika Rockenberger + +Come and meet us for two hours to learn and work on "Programming for Historians" . + +- **When**: 12th October 2018, 14-16h +- **Where**: Niels Henrik Abels hus, room 209 +- **Who**: _everybody willing to learn about "The programming for Historians"._ + diff --git a/_posts/2018-10-19-workalong.markdown b/_posts/2018-10-19-workalong.markdown new file mode 100644 index 000000000..b8753bbb6 --- /dev/null +++ b/_posts/2018-10-19-workalong.markdown @@ -0,0 +1,21 @@ +--- +title: Work along session on deep learning +text: +location: Science Library +link: https://github.com/uio-carpentry/studyGroup/issues/8 +date: 2018-09-07 +startTime: '14:00' +endTime: '16:00' + +--- + +**Session leader**: Ana Costa + +In this session you will learn what is meant by deep-learning. Examples will be given in python and R. + +_Bring your laptop if you want to try it out!_ + +- **When**: 19th October 2018, 14h-16h +- **Location**: Niels Henrik Abels hus, room 209 +- **Who**: _everybody willing to learn about deep learning_ + diff --git a/_posts/2018-10-26-coworking.markdown b/_posts/2018-10-26-coworking.markdown new file mode 100644 index 000000000..4379aba4e --- /dev/null +++ b/_posts/2018-10-26-coworking.markdown @@ -0,0 +1,20 @@ +--- +title: Co-working session on "Internet of Things (IoT) with Arduino" +text: Learn about Internet of Things (IoT) with an arduino +location: Science Library +link: https://github.com/uio-carpentry/studyGroup/issues/9 +date: 2018-10-26 +startTime: '14:00' +endTime: '16:00' + +--- + +**Session leader**: Annika Rockenberger + +Come and meet us for two hours to learn about Internet of Things and work +with an Arduino (demos). + +- **When**: 26th October 2018, 14-16h +- **Where**: Niels Henrik Abels hus, room 209 +- **Who**: _everybody willing to learn about "Internet of Things and Arduino"._ + diff --git a/_posts/2018-11-02-demo.markdown b/_posts/2018-11-02-demo.markdown new file mode 100644 index 000000000..4d11f092b --- /dev/null +++ b/_posts/2018-11-02-demo.markdown @@ -0,0 +1,21 @@ +--- +title: Demo session on openscience framework +text: Learn about openscience and share/discuss your openscience framework with us +location: Science Library +link: https://github.com/uio-carpentry/studyGroup/issues/10 +date: 2018-11-02 +startTime: '14:00' +endTime: '16:00' + +--- + +**Session leader**: Michael Heeremans + +Openscience: come and show your openscience framework. + +Short coding ligthning demo on openscience. If you wish to show your openscience framework, please contact the organizer (comment this issue). + +- **When**: 2nd November 2018, 14-16h +- **Location**: Niels Henrik Abels hus, room 209 +- **Who**: _anyone interested in openscience_ + From f2390a7579c308c257793573674d0f0d6131ce58 Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Sun, 2 Sep 2018 23:33:17 +0200 Subject: [PATCH 14/42] update events --- _posts/2018-10-19-workalong.markdown | 2 +- _posts/2018-11-09-workalong.markdown | 19 +++++++++++++++++++ _posts/2018-11-23-workalong.markdown | 20 ++++++++++++++++++++ _posts/2018-11-30-workalong.markdown | 21 +++++++++++++++++++++ _posts/2018-12-07-bookclub.markdown | 26 ++++++++++++++++++++++++++ _posts/2018-12-14-demo.markdown | 19 +++++++++++++++++++ 6 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 _posts/2018-11-09-workalong.markdown create mode 100644 _posts/2018-11-23-workalong.markdown create mode 100644 _posts/2018-11-30-workalong.markdown create mode 100644 _posts/2018-12-07-bookclub.markdown create mode 100644 _posts/2018-12-14-demo.markdown diff --git a/_posts/2018-10-19-workalong.markdown b/_posts/2018-10-19-workalong.markdown index b8753bbb6..70868b633 100644 --- a/_posts/2018-10-19-workalong.markdown +++ b/_posts/2018-10-19-workalong.markdown @@ -3,7 +3,7 @@ title: Work along session on deep learning text: location: Science Library link: https://github.com/uio-carpentry/studyGroup/issues/8 -date: 2018-09-07 +date: 2018-10-19 startTime: '14:00' endTime: '16:00' diff --git a/_posts/2018-11-09-workalong.markdown b/_posts/2018-11-09-workalong.markdown new file mode 100644 index 000000000..aeb048fb8 --- /dev/null +++ b/_posts/2018-11-09-workalong.markdown @@ -0,0 +1,19 @@ +--- +title: Work along session on "How to use pytest?" +text: Learn about pytest and how to use this python package for testing your codes +location: Science Library +link: https://github.com/uio-carpentry/studyGroup/issues/11 +date: 2018-11-09 +startTime: '14:00' +endTime: '16:00' + +--- + +**Session leader**: Gladys Nalvarte + + + +- **When**: 9th November 2018, 14-16h +- **Where**: Niels Henrik Abels hus, room 209 +- **Who**: _everybody willing to learn about "pytest"._ + diff --git a/_posts/2018-11-23-workalong.markdown b/_posts/2018-11-23-workalong.markdown new file mode 100644 index 000000000..96a68c7f8 --- /dev/null +++ b/_posts/2018-11-23-workalong.markdown @@ -0,0 +1,20 @@ +--- +title: Work along session on "Ally Skills Workshop" +text: Discuss Valerie Aurora's "Ally Skills Workshop" training material. +location: Science Library +link: https://github.com/uio-carpentry/studyGroup/issues/12 +date: 2018-11-23 +startTime: '14:00' +endTime: '16:00' + +--- + +**Session leader**: Gladys Nalvarte + +The goal of this work along session is to go through Valerie Aurora's training material on "Ally skills workshop". The goal of these workshops is to provide training and advice to increase diversity and inclusion in technology-oriented organizations. + + +- **When**: 23nd November 2018, 14-16h +- **Location**: Niels Henrik Abels hus, room 209 +- **Who**: _everybody interested in learning about "Ally Skills workshops"_ + diff --git a/_posts/2018-11-30-workalong.markdown b/_posts/2018-11-30-workalong.markdown new file mode 100644 index 000000000..95395403b --- /dev/null +++ b/_posts/2018-11-30-workalong.markdown @@ -0,0 +1,21 @@ +--- +title: Work along session on Data Management Plan +text: Review of the existing tools to create Data Management Plans +location: Science Library +link: https://github.com/uio-carpentry/studyGroup/issues/13 +date: 2018-11-30 +startTime: '14:00' +endTime: '16:00' + +--- + +**Session leader**: Michael Heeremans + +Everything you need to know to start writing your own Data Management Plan. + +You will learn what tools you can use to help you writing your DMP (Data Management Plan) and what is important to address to manage efficiently your data. + +- **When**: 30th November 2018, 14-16h +- **Location**: Niels Henrik Abels hus, room 209 +- **Who**: _everybody interested in learning about "Data Management Plan"_ + diff --git a/_posts/2018-12-07-bookclub.markdown b/_posts/2018-12-07-bookclub.markdown new file mode 100644 index 000000000..b0cfe61f9 --- /dev/null +++ b/_posts/2018-12-07-bookclub.markdown @@ -0,0 +1,26 @@ +--- +title: Book Club on Teaching Tech together +text: Discuss the first 5 chapters of "Teaching Tech together (Greg Wilson) +location: Science Library +link: https://github.com/uio-carpentry/studyGroup/issues/14 +date: 2018-12-07 +startTime: '14:00' +endTime: '16:00' + +--- + +**Session leader**: Anne Fouilloux + +You read at least 5 chapters of "Teaching Tech together" (Greg Wilson) and would like to discuss and share your thoughts about teaching techniques. + +We are using [https://web.hypothes.is/](https://web.hypothes.is/), an online tool to annotate the web, with anyone, anywhere. + +The StudyGroup@UiO share comments at [https://hypothes.is/groups/mReaNk2e/studygroup-uio.](https://hypothes.is/groups/mReaNk2e/studygroup-uio) + + +**online material to learn how to use hypothes.is**: +- https://web.hypothes.is/quick-start-guide-for-students/ + +**When**: 7th December 2018, 14-16h +**Location**: Niels Henrik Abels hus, room 209 + diff --git a/_posts/2018-12-14-demo.markdown b/_posts/2018-12-14-demo.markdown new file mode 100644 index 000000000..90f1a6d9e --- /dev/null +++ b/_posts/2018-12-14-demo.markdown @@ -0,0 +1,19 @@ +--- +title: Demo session on Github & gitlab best practices +text: Learn about the different software development best practices for researchers +location: Science Library +link: https://github.com/uio-carpentry/studyGroup/issues/15 +date: 2018-12-14 +startTime: '14:00' +endTime: '16:00' + +--- + +**Session leader**: Anne Fouilloux + +During this session, we will present you the main stages of Software Development and what are the main Software development best practices for developing Research programs. + +**When**: 14th December 2018, 14-16h +**Location**: Niels Henrik Abels hus, room 209 + + From dcac1a90af546313e3c2f9449621c7878ef8e25f Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Thu, 6 Sep 2018 11:57:47 +0200 Subject: [PATCH 15/42] added UseR group event; for now manually... --- _posts/2018-09-19-useR.markdown | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 _posts/2018-09-19-useR.markdown diff --git a/_posts/2018-09-19-useR.markdown b/_posts/2018-09-19-useR.markdown new file mode 100644 index 000000000..4a17219d2 --- /dev/null +++ b/_posts/2018-09-19-useR.markdown @@ -0,0 +1,24 @@ +--- +title: useR! group Functions, loops and list-columns: taking control of lists with purrr +text: +location: Microsoft Norge +link: https://github.com/uio-carpentry/studyGroup/issues/17 +date: 2018-10-19 +startTime: '14:00' +endTime: '16:00' + +--- + +**Session leader**: Dmytro Perepolkin + +Are you still writing `for` loops? What are some of the advantages of functional programming in R? What makes a good function? How to take control of nested lists and turn chaos into order? Come and explore a fun world of {purrr} and discover hidden gems in this awesome tidyverse package. Filled with practical examples from author's recently published packages, this talk may help you discover some of the new (and old) functions you may not have used before and encourage you on your journey to becoming a better R programmer. + + +_Bring your laptop if you want to try it out!_ + +- **Level**: beginner to intermediate +- **When**: 19th September 2018 +- **Time**: 17:30-19:30 +- **Location**: Microsoft Norge, Lysaker Torg 45 · Lysaker +- **More information**: https://www.meetup.com/Oslo-useR-Group/events/254422876/ + From 739c97d68550354176ea6c2fa0b9915ae6fe6fa8 Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Fri, 7 Sep 2018 09:09:25 +0200 Subject: [PATCH 16/42] bug fix: do not use : in the title of an event --- _posts/2018-09-19-useR.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_posts/2018-09-19-useR.markdown b/_posts/2018-09-19-useR.markdown index 4a17219d2..9509a7ff1 100644 --- a/_posts/2018-09-19-useR.markdown +++ b/_posts/2018-09-19-useR.markdown @@ -1,11 +1,11 @@ --- -title: useR! group Functions, loops and list-columns: taking control of lists with purrr +title: use R! group Functions, loops and list-columns - taking control of lists with purrr text: location: Microsoft Norge link: https://github.com/uio-carpentry/studyGroup/issues/17 -date: 2018-10-19 -startTime: '14:00' -endTime: '16:00' +date: 2018-09-19 +startTime: '17:30' +endTime: '19:30' --- From 6b909c15f59ebfad60bad113c59f93c350ef644e Mon Sep 17 00:00:00 2001 From: Annika Rockenberger Date: Fri, 7 Sep 2018 13:06:42 +0200 Subject: [PATCH 17/42] Update 2018-10-26-coworking.markdown --- _posts/2018-10-26-coworking.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/_posts/2018-10-26-coworking.markdown b/_posts/2018-10-26-coworking.markdown index 4379aba4e..03d51f9ed 100644 --- a/_posts/2018-10-26-coworking.markdown +++ b/_posts/2018-10-26-coworking.markdown @@ -13,6 +13,7 @@ endTime: '16:00' Come and meet us for two hours to learn about Internet of Things and work with an Arduino (demos). +Annika will bring a couple of Arduino Unos, breadboards, jumper cables, LEDs, resistors, buttons and a selection of sensors (light, distance, temperature, CO2 sensors). We have a take on physical programming with Arduino and micro electronics. It will be fun! - **When**: 26th October 2018, 14-16h - **Where**: Niels Henrik Abels hus, room 209 From 0e63f20593bd8cc211b57cde63fb0758db06bc84 Mon Sep 17 00:00:00 2001 From: Annika Rockenberger Date: Fri, 7 Sep 2018 13:09:34 +0200 Subject: [PATCH 18/42] Update 2018-10-12-coworking.markdown --- _posts/2018-10-12-coworking.markdown | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/_posts/2018-10-12-coworking.markdown b/_posts/2018-10-12-coworking.markdown index 8ecd52715..cf8217e8f 100644 --- a/_posts/2018-10-12-coworking.markdown +++ b/_posts/2018-10-12-coworking.markdown @@ -1,6 +1,6 @@ --- -title: Co-working session on "The programming for Historians" -text: Learn how programming can be taught to Historians and what tools they are using +title: Co-working session on "The Programming Historian" +text: Learn how programming can be taught to Humanities Researchers and what tools they are using location: Science Library link: https://github.com/uio-carpentry/studyGroup/issues/7 date: 2018-10-12 @@ -11,9 +11,11 @@ endTime: '16:00' **Session leader**: Annika Rockenberger -Come and meet us for two hours to learn and work on "Programming for Historians" . +Annika will pick a lesson from [The programming Historian](https://programminghistorian.org/) and give us a little intro on how programming is taught to humanities researchers. + +The Programming Historian publishes novice-friendly, peer-reviewed tutorials that help humanists learn a wide range of digital tools, techniques, and workflows to facilitate research and teaching. - **When**: 12th October 2018, 14-16h - **Where**: Niels Henrik Abels hus, room 209 -- **Who**: _everybody willing to learn about "The programming for Historians"._ +- **Who**: _everybody willing to learn about "Programming for Humanities Researchers"._ From 5a69db8f53f60b1460cb39258802bfabd70d0679 Mon Sep 17 00:00:00 2001 From: Annika Rockenberger Date: Fri, 7 Sep 2018 13:10:53 +0200 Subject: [PATCH 19/42] Update 2018-09-21-demo.markdown --- _posts/2018-09-21-demo.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/_posts/2018-09-21-demo.markdown b/_posts/2018-09-21-demo.markdown index 5781092e0..fa1a7fa56 100644 --- a/_posts/2018-09-21-demo.markdown +++ b/_posts/2018-09-21-demo.markdown @@ -15,10 +15,12 @@ NetworkX is a Python package for the creation, manipulation, and study of the st During this Coding lightning demo session: -- Learn about networkX python package +- Learn about networkX python package - Get concrete examples on how to use it - Discuss your use cases +For preparation you can read Complex Network Analysis in Python and the networkX documentation (https://networkx.github.io/) + - **When**: 21st September 2018, 14-16h - **Location**: Niels Henrik Abels hus, room 209 - **Who**: _everybody willing to learn about networkX python package_ From 57a2b87911ad3d1ebaef99d18967d98845a85772 Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Fri, 14 Sep 2018 20:29:50 +0200 Subject: [PATCH 20/42] added Arduino workshop at open zone --- _posts/2018-09-18-hive.markdown | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 _posts/2018-09-18-hive.markdown diff --git a/_posts/2018-09-18-hive.markdown b/_posts/2018-09-18-hive.markdown new file mode 100644 index 000000000..f17d0d083 --- /dev/null +++ b/_posts/2018-09-18-hive.markdown @@ -0,0 +1,23 @@ +--- +title: Arduino Workshop +text: Learn about the UiO Hive initiative and how you can contribute +location: Åpen Sone at IFI (room Ada 3407, Ole-Johan Dahls hus, Gaustadalléen 23b) +link: https://github.com/UiOHive/Hive/issues/1 +register: https://docs.google.com/forms/d/e/1FAIpQLScT9qn-J43uDKjzckw4-Q9Jj5nlpeRwSo5rhriHa-EuSO9ttA/viewform?embedded=true +date: 2018-09-18 +startTime: '14:00' +endTime: '18:00' + +--- + + +At the kick-off event, we'll get to know each other, exchange our interests into either using some new technology like IoT, micro-electornics, or looking for interesting application and challenging settings for these technology. The goal is to come together and establish few key projects on which we can learn and collaborate across our own disciplines. + +- When: Tuesday 18 September, 14-18h: + - 14-16h flash presentations (8 min) + - 16-18h hands-on workshop to learn about microcontroller and sensors + - past 18h Pizza and socializing +- Where: Åpen Sone at IFI ([room Ada 3407, Ole-Johan Dahls hus, Gaustadalléen 23b](https://www.uio.no/om/finn-fram/omrader/gaustad/ga06/)) +- Who: students, PhDs, postdocs, researchers, technicians + +Suscribe for a flash presentation or join us for the workshop! From 462bf0870e2e3dfb48597cebe0cac03308759afb Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Fri, 14 Sep 2018 20:51:36 +0200 Subject: [PATCH 21/42] added link to register to arduino workshop --- _posts/2018-09-18-hive.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2018-09-18-hive.markdown b/_posts/2018-09-18-hive.markdown index f17d0d083..28cc86c6d 100644 --- a/_posts/2018-09-18-hive.markdown +++ b/_posts/2018-09-18-hive.markdown @@ -20,4 +20,4 @@ At the kick-off event, we'll get to know each other, exchange our interests into - Where: Åpen Sone at IFI ([room Ada 3407, Ole-Johan Dahls hus, Gaustadalléen 23b](https://www.uio.no/om/finn-fram/omrader/gaustad/ga06/)) - Who: students, PhDs, postdocs, researchers, technicians -Suscribe for a flash presentation or join us for the workshop! +Register [here](https://docs.google.com/forms/d/e/1FAIpQLScT9qn-J43uDKjzckw4-Q9Jj5nlpeRwSo5rhriHa-EuSO9ttA/viewform?embedded=true) to join us for the workshop! From 0fc0779fa2347b88faa5c7d415abba8ff15fb5ac Mon Sep 17 00:00:00 2001 From: Annika Rockenberger Date: Tue, 18 Sep 2018 13:32:26 +0200 Subject: [PATCH 22/42] Update members.yml --- _data/members.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/_data/members.yml b/_data/members.yml index a7f5101d6..4fa3f3c54 100644 --- a/_data/members.yml +++ b/_data/members.yml @@ -31,12 +31,13 @@ - Carpentry@UiO - name: Annika Rockenberger - affiliation: + affiliation: The National Library of Norway github: arockenberger interests: - - Humanities - - Digital Textology - - Software Carpentries + - Digital Humanities + - Python + - The Carpentries + - Physical Programming - name: Anne Fouilloux affiliation: University of Oslo From bcd57e03a5098889e57dab52e021396fc3d16c0a Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Thu, 20 Sep 2018 12:55:00 +0200 Subject: [PATCH 23/42] added NDA minutes (template only) --- lessons/NDA-minutes/README.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 lessons/NDA-minutes/README.md diff --git a/lessons/NDA-minutes/README.md b/lessons/NDA-minutes/README.md new file mode 100644 index 000000000..e88bca882 --- /dev/null +++ b/lessons/NDA-minutes/README.md @@ -0,0 +1,33 @@ +--- +layout: page +title: National data archives +text: +link: https://github.com/uio-carpentry/studyGroup/issues/4 +visible: true +tags: + # languages + - misc + # levels + - beginner +--- + + + + + - **Authors**: Michael Heeremans and Annika Rockenberger + - **Lesson Topic**: National Data Archives + - [![License: CC BY 4.0](https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by/4.0/) + + +## How and where to preserve your data on long-term archive? + +More and more researchers need to make available their data before being able to publish an article in a scientific journal. During this work-along StudyGroup@ session you will get an overview of the possibilities you have to archive (long-term preservation) your data. This short demo will help you to understand how you can use the available tools. + + +## Minutes of the studyGroup@UiO work-along session + +**When**: 7th September 2018, 14:00-16:00 + + + + From 80956091f725618871933ecabdbe857712881eca Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Fri, 21 Sep 2018 21:54:57 +0200 Subject: [PATCH 24/42] added draft minutes studyGroup 21st September 2018 --- lessons/NetworkX-minutes/README.md | 101 +++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 lessons/NetworkX-minutes/README.md diff --git a/lessons/NetworkX-minutes/README.md b/lessons/NetworkX-minutes/README.md new file mode 100644 index 000000000..7669f8ebb --- /dev/null +++ b/lessons/NetworkX-minutes/README.md @@ -0,0 +1,101 @@ +--- +layout: page +title: Demo session on NetworkX python package +text: +link: https://github.com/uio-carpentry/studyGroup/issues/6 +visible: true +tags: + # languages + - python + # levels + - intermediate +--- + + + + + - **Authors**: Annika Rockenberger and Anne Fouilloux + - **Lesson Topic**: NetworkX python package + - [![License: CC BY 4.0](https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by/4.0/) + + +# Minutes of the studyGroup@UiO demo session + +**When**: 21st September 2018, 14:00-16:00 + +### Dataset used for this lesson + +We will be using example datasets from [Easy Linavis](https://ezlinavis.dracor.org/) (Easy Literary Network Analysis and Visualization). +On this website, examples can be found in the tab "examples". + +Easy Linavis (ezlinavis) generates CSV files with network data from simple segmentations of dramatic texts. +In the left column, you can list segments (chapters, acts, scenes, etc.) and characters appearing or speaking in a given segment. +Segments are indicated with a hashtag and they can be hierarchical, e.g.: +~~~ +# First Act +## First Scene +Character 1 +Character 2 +~~~ +{: .language-python} + +This will automatically generate a CSV file with node-node relations (source, type, target, weight) in the column in the centre. Data changes as you type: +as soon as you change something in the first column, the mid-column changes accordingly. The "type" column in the CSV file is always "undirected" here, +but we inserted it so you can directly work with the CSV files in Gephi. The network graph in the right column is also generated live, using a +spring-embedded layout, just to give you a first impression of what your network data looks like. To make it easier to understand how ezlinavis works, we provide some example files which can be accessed via the corresponding drop-down menu in the right upper corner. +ezlinavis was developed in 2017 by Carsten Milling and Frank Fischer, using the React and Sigma JS libraries. It is mainly meant for didactic purposes +(we are mainly resorting to it in our workshops on the network analysis of literary texts), although in principle it is also suited to handle bigger network +data. If you want to contact us, please drop a line to ffischer(at)hse.ru. + +### Other datasets and information + +- [https://textology.hypotheses.org/37](https://textology.hypotheses.org/37) +- [https://github.com/arockenberger/InnsbruckEasterplay](https://github.com/arockenberger/InnsbruckEasterplay) +- [Complex Netowkr Analysis in Python](https://pragprog.com/book/dzcnapy/complex-network-analysis-in-python): based on NetworkX but version 1.X +and not the new version 2.X. Information on how to migrate from 1.X to 2.X can be found at + [https://networkx.github.io/documentation/stable/release/migration_guide_from_1.x_to_2.0.html](https://networkx.github.io/documentation/stable/release/migration_guide_from_1.x_to_2.0.html). + +### Other tools + +Another tool that is freely available [https://gephi.org/](https://gephi.org/). It is a very handy tools for creating nice network plots. To use it, +download one file from Easy Linavis (as a csv file) and use it in Gephi. + + +### Codes used for the demo + +Annika has prepared several jupyter notebooks: + +- [https://github.com/arockenberger/InnsbruckEasterplay/blob/master/CNA_tests.ipynb](https://github.com/arockenberger/InnsbruckEasterplay/blob/master/CNA_tests.ipynb) + +**Facts**: + +- no weight by default (need to ask NetworkX to compute them) +- not directional by default; use DiGraph() and/or MultiGraph() for directional networks. + +In all the examples, csv python package is used. + +- csv.reader() --> add information on how to skip header + +- if you remove a node, it does not removes all the connections; you end up having selfloop node. So you need to clean it. +--> have a look on how to remove connection. + +#### Examples + + +- Add an example with several columns. Choose 2 columns. +- https://github.com/arockenberger/NB_API_Python For visualization +- nbtext library --> will be released so we can use it for plotting. +- Make an example to plot with WordCloud. + +### AOB + +We also discuss on how to write a blog: [https://hypotheses.org/](https://hypotheses.org/) + + + +- Add info on where to buy domain (not take the cheapest one). + + + + + From 106c0bbbf89ad396e0405c5eeecc98864e597742 Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Sat, 22 Sep 2018 17:47:36 +0200 Subject: [PATCH 25/42] added info and example for NetworkX --- lessons/NetworkX-minutes/README.md | 144 ++++++++++++++++-- .../NetworkX-minutes/data/Elizabeth1798.csv | 58 +++++++ .../NetworkX-minutes/fig/Elizabeth_plot.png | Bin 0 -> 52389 bytes .../NetworkX-minutes/fig/networkx_plot.png | Bin 0 -> 5024 bytes 4 files changed, 186 insertions(+), 16 deletions(-) create mode 100644 lessons/NetworkX-minutes/data/Elizabeth1798.csv create mode 100644 lessons/NetworkX-minutes/fig/Elizabeth_plot.png create mode 100644 lessons/NetworkX-minutes/fig/networkx_plot.png diff --git a/lessons/NetworkX-minutes/README.md b/lessons/NetworkX-minutes/README.md index 7669f8ebb..033776177 100644 --- a/lessons/NetworkX-minutes/README.md +++ b/lessons/NetworkX-minutes/README.md @@ -39,7 +39,7 @@ Character 2 ~~~ {: .language-python} -This will automatically generate a CSV file with node-node relations (source, type, target, weight) in the column in the centre. Data changes as you type: +Easy Linavis will automatically generate a CSV file with node-node relations (source, type, target, weight) in the column in the centre. Data changes as you type: as soon as you change something in the first column, the mid-column changes accordingly. The "type" column in the CSV file is always "undirected" here, but we inserted it so you can directly work with the CSV files in Gephi. The network graph in the right column is also generated live, using a spring-embedded layout, just to give you a first impression of what your network data looks like. To make it easier to understand how ezlinavis works, we provide some example files which can be accessed via the corresponding drop-down menu in the right upper corner. @@ -57,7 +57,7 @@ and not the new version 2.X. Information on how to migrate from 1.X to 2.X can b ### Other tools -Another tool that is freely available [https://gephi.org/](https://gephi.org/). It is a very handy tools for creating nice network plots. To use it, +Another tool that is freely available [https://gephi.org/](https://gephi.org/). To be fully ffunctional, you need an up to date version of java. Gephi is a very handy tools for creating nice network plots. To use it, download one file from Easy Linavis (as a csv file) and use it in Gephi. @@ -67,33 +67,145 @@ Annika has prepared several jupyter notebooks: - [https://github.com/arockenberger/InnsbruckEasterplay/blob/master/CNA_tests.ipynb](https://github.com/arockenberger/InnsbruckEasterplay/blob/master/CNA_tests.ipynb) -**Facts**: -- no weight by default (need to ask NetworkX to compute them) -- not directional by default; use DiGraph() and/or MultiGraph() for directional networks. +To make use of NetworkX python package, you need to import it: -In all the examples, csv python package is used. +~~~ +import networkx as nx +~~~ +{: .language-python} + +We use `nx` as a shortcut to avoid writing networkx everytime we call a function from NetworkX python package. + + +- To define a new graph, use Graph method: + +~~~ +G = nx.Graph([("A", "eggs"),]) +~~~ +{: .language-python} + +It defines a new graph with two nodes "A" and "eggs" connected to each other. You need to give a list of connections (one connection is represented by two "nodes"). + +To print all the nodes: +~~~ +print(G.nodes) +~~~ +{: .language-python} + +To print all the connections: +~~~ +print(G.edges) +~~~ +{: .language-python} + +To add new nodes: + +~~~ +G.add_node("spinach") # add a single node +G.add_node("Hg") # add a single node by mistake +G.add_nodes_from(["folates", "asparagus", "liver"]) # add a list of nodes +~~~ +{: .language-python} -- csv.reader() --> add information on how to skip header +To add a new connection between nodes: + +~~~ +G.add_edge("spinach", "folates") # add one edge, both ends exist +G.add_edge("spinach", "heating oil") # add one edge +G.add_edge("liver", "Se") # add one edge, one end does not exist +G.add_edges_from([("folates", "liver"), ("folates", "asparagus")]) # add list of edges +~~~ +{: .language-python} -- if you remove a node, it does not removes all the connections; you end up having selfloop node. So you need to clean it. ---> have a look on how to remove connection. + +> ## **Tips**: +> +> - no weight by default (need to ask NetworkX to compute them) +> - not directional by default; use DiGraph() and/or MultiGraph() for directional networks. +> - when defining new connections( add_edge or add_edges_from), a new node is created +> if it does not exist yet. SO BE CAREFUL WITH THE NAMES OF THE NODES (typos, letter cases, etc.) +> +{: .callout} + +To plot a graph with networkx: +~~~ +nx.draw(G) +~~~ +{: .language-python} + +![networkx_plot](../fig/networkx_plot.png) + +It plots nodes and associated connections. + + +- To delete nodes and connections: + +~~~ +G.remove_node("Hg") # removes this node +G.remove_nodes_from(["Hg",]) # removes a missing node from a list +G.remove_edge("spinach", "heating oil") # removes edge between these nodes +G.remove_edges_from([("spinach", "heating oil"),]) # removes edges from a list +G.remove_node("heating oil") +~~~ +{: .language-python} + +> ## Tips +> +> You get an error if you try to remove a node that does not exist (same with a connection) +> +{: .callout} #### Examples +We will now work with "real" examples i.e. read a network from a csv file. +We are using "Elizabeth Inchbald: Lover's Vows (1798)" from [Easy Linavis](https://ezlinavis.dracor.org/). -- Add an example with several columns. Choose 2 columns. -- https://github.com/arockenberger/NB_API_Python For visualization -- nbtext library --> will be released so we can use it for plotting. -- Make an example to plot with WordCloud. +To read a csv file, the easiest is to use pandas python package: -### AOB +~~~ +import pandas as pd +df = pd.read_csv("data/Elizabeth1798.csv") +df.head() +~~~ +{: .language-python} -We also discuss on how to write a blog: [https://hypotheses.org/](https://hypotheses.org/) +~~~ + Source Type Target Weight +0 Agatha Undirected Amelia 1 +1 Agatha Undirected Anhalt 2 +2 Agatha Undirected Baron 1 +3 Agatha Undirected Cottager 3 +4 Agatha Undirected Countryman 1 +~~~ +{: .output} + + +The file contains quite a large number of rows so we printed only the first rows (5 first rows) using head(). + +- To create a Graph from a pandas dataframe: + +~~~ +# create a graph using Source and Target for connections. +G = nx.from_pandas_edgelist(df, 'Source', 'Target') +nx.draw(G) +~~~ +{: .language-python} +![Elizabeth_plot](../fig/elizabeth_plot.png) +`from_pandas_edgelist` takes a pandas dataframe and the two column names used as "Source" and "Target". + +See documentation online for more information on [from_pandas_edgelist](https://networkx.github.io/documentation/stable/reference/generated/networkx.convert_matrix.from_pandas_edgelist.html). + + +- Have a look at Annicka's jupyter notebook at [https://github.com/arockenberger/NB_API_Python](https://github.com/arockenberger/NB_API_Python) for visualization. + +### AOB + +We also discuss on how to write a blog: [https://hypotheses.org/](https://hypotheses.org/) -- Add info on where to buy domain (not take the cheapest one). +- Add info on where to buy domain (do not take the cheapest one). diff --git a/lessons/NetworkX-minutes/data/Elizabeth1798.csv b/lessons/NetworkX-minutes/data/Elizabeth1798.csv new file mode 100644 index 000000000..ccb366e45 --- /dev/null +++ b/lessons/NetworkX-minutes/data/Elizabeth1798.csv @@ -0,0 +1,58 @@ +Source,Type,Target,Weight +Agatha,Undirected,Amelia,1 +Agatha,Undirected,Anhalt,2 +Agatha,Undirected,Baron,1 +Agatha,Undirected,Cottager,3 +Agatha,Undirected,Countryman,1 +Agatha,Undirected,Farmer,1 +Agatha,Undirected,Frederick,3 +Agatha,Undirected,Girl,1 +Agatha,Undirected,Landlord,1 +Agatha,Undirected,Wife,3 +Amelia,Undirected,Anhalt,5 +Amelia,Undirected,Baron,4 +Amelia,Undirected,Butler,2 +Amelia,Undirected,Count,2 +Amelia,Undirected,Frederick,3 +Amelia,Undirected,Gentleman,1 +Amelia,Undirected,Servant,1 +Anhalt,Undirected,Baron,4 +Anhalt,Undirected,Butler,2 +Anhalt,Undirected,Cottager,1 +Anhalt,Undirected,Count,2 +Anhalt,Undirected,Frederick,3 +Anhalt,Undirected,Gentleman,1 +Anhalt,Undirected,Servant,1 +Anhalt,Undirected,Wife,1 +Baron,Undirected,Butler,2 +Baron,Undirected,Count,3 +Baron,Undirected,Frederick,3 +Baron,Undirected,Gentleman,1 +Baron,Undirected,Servant,1 +Butler,Undirected,Count,1 +Butler,Undirected,Frederick,1 +Cottager,Undirected,Countryman,1 +Cottager,Undirected,Farmer,1 +Cottager,Undirected,Frederick,2 +Cottager,Undirected,Girl,1 +Cottager,Undirected,Landlord,1 +Cottager,Undirected,Wife,3 +Countryman,Undirected,Farmer,1 +Countryman,Undirected,Frederick,1 +Countryman,Undirected,Girl,1 +Countryman,Undirected,Landlord,1 +Countryman,Undirected,Wife,1 +Count,Undirected,Frederick,2 +Count,Undirected,Gentleman,1 +Count,Undirected,Servant,1 +Farmer,Undirected,Frederick,1 +Farmer,Undirected,Girl,1 +Farmer,Undirected,Landlord,1 +Farmer,Undirected,Wife,1 +Frederick,Undirected,Girl,1 +Frederick,Undirected,Landlord,1 +Frederick,Undirected,Wife,2 +Gentleman,Undirected,Servant,1 +Girl,Undirected,Landlord,1 +Girl,Undirected,Wife,1 +Landlord,Undirected,Wife,1 diff --git a/lessons/NetworkX-minutes/fig/Elizabeth_plot.png b/lessons/NetworkX-minutes/fig/Elizabeth_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..bdf78617bf24cdda45491e9966c1b27a86816f7b GIT binary patch literal 52389 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 literal 0 HcmV?d00001 diff --git a/lessons/NetworkX-minutes/fig/networkx_plot.png b/lessons/NetworkX-minutes/fig/networkx_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..43b9060ed55d63241c5c35514d63d12dc7298084 GIT binary patch literal 5024 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 aCXcgT+t6`CiNm`%;PS<5@M^ Date: Wed, 26 Sep 2018 09:54:13 +0200 Subject: [PATCH 26/42] Update README.md --- lessons/NetworkX-minutes/README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/lessons/NetworkX-minutes/README.md b/lessons/NetworkX-minutes/README.md index 033776177..398be968b 100644 --- a/lessons/NetworkX-minutes/README.md +++ b/lessons/NetworkX-minutes/README.md @@ -51,21 +51,22 @@ data. If you want to contact us, please drop a line to ffischer(at)hse.ru. - [https://textology.hypotheses.org/37](https://textology.hypotheses.org/37) - [https://github.com/arockenberger/InnsbruckEasterplay](https://github.com/arockenberger/InnsbruckEasterplay) -- [Complex Netowkr Analysis in Python](https://pragprog.com/book/dzcnapy/complex-network-analysis-in-python): based on NetworkX but version 1.X +- [Complex Network Analysis in Python](https://pragprog.com/book/dzcnapy/complex-network-analysis-in-python): based on NetworkX version 1.X and not the new version 2.X. Information on how to migrate from 1.X to 2.X can be found at [https://networkx.github.io/documentation/stable/release/migration_guide_from_1.x_to_2.0.html](https://networkx.github.io/documentation/stable/release/migration_guide_from_1.x_to_2.0.html). ### Other tools -Another tool that is freely available [https://gephi.org/](https://gephi.org/). To be fully ffunctional, you need an up to date version of java. Gephi is a very handy tools for creating nice network plots. To use it, -download one file from Easy Linavis (as a csv file) and use it in Gephi. +Another tool that is freely available is Gephi [https://gephi.org/](https://gephi.org/). To be fully functional, you need an up to date version of java. Gephi is a very handy tool for creating nice network plots, especially if you want to publish them. To use it, +download a file from Easy Linavis (as a csv file) and use it in Gephi or create your own csv. ### Codes used for the demo Annika has prepared several jupyter notebooks: -- [https://github.com/arockenberger/InnsbruckEasterplay/blob/master/CNA_tests.ipynb](https://github.com/arockenberger/InnsbruckEasterplay/blob/master/CNA_tests.ipynb) +- A follow-along notebook for the textbook on complex network analysis (up tp chapter 5, will be continued) [https://github.com/arockenberger/InnsbruckEasterplay/blob/master/CNA_tests.ipynb](https://github.com/arockenberger/InnsbruckEasterplay/blob/master/CNA_tests.ipynb) +– A notebook for doing cna with material from the Innsbruck Easterplay [https://github.com/arockenberger/InnsbruckEasterplay/blob/master/InnsOS_charnet.ipynb](https://github.com/arockenberger/InnsbruckEasterplay/blob/master/InnsOS_charnet.ipynb) To make use of NetworkX python package, you need to import it: @@ -93,7 +94,7 @@ print(G.nodes) ~~~ {: .language-python} -To print all the connections: +To print all the connections, or edges: ~~~ print(G.edges) ~~~ @@ -103,12 +104,11 @@ To add new nodes: ~~~ G.add_node("spinach") # add a single node -G.add_node("Hg") # add a single node by mistake G.add_nodes_from(["folates", "asparagus", "liver"]) # add a list of nodes ~~~ {: .language-python} -To add a new connection between nodes: +To add a new connection – edge – between nodes: ~~~ G.add_edge("spinach", "folates") # add one edge, both ends exist @@ -121,7 +121,7 @@ G.add_edges_from([("folates", "liver"), ("folates", "asparagus")]) # add list of > ## **Tips**: > -> - no weight by default (need to ask NetworkX to compute them) +> - no weight by default (need to ask NetworkX to compute them, but can be assigned as attributes manually) > - not directional by default; use DiGraph() and/or MultiGraph() for directional networks. > - when defining new connections( add_edge or add_edges_from), a new node is created > if it does not exist yet. SO BE CAREFUL WITH THE NAMES OF THE NODES (typos, letter cases, etc.) @@ -199,13 +199,13 @@ nx.draw(G) See documentation online for more information on [from_pandas_edgelist](https://networkx.github.io/documentation/stable/reference/generated/networkx.convert_matrix.from_pandas_edgelist.html). -- Have a look at Annicka's jupyter notebook at [https://github.com/arockenberger/NB_API_Python](https://github.com/arockenberger/NB_API_Python) for visualization. +- Have a look at Lars Johnson's (National Library of Norway) jupyter notebook at [https://github.com/arockenberger/NB_API_Python](https://github.com/arockenberger/NB_API_Python) for visualization. ### AOB -We also discuss on how to write a blog: [https://hypotheses.org/](https://hypotheses.org/) +We also discussed how to host, write and publish an academic blog on the free to use, open access blog platform Hypotheses.org [https://hypotheses.org/](https://hypotheses.org/). The blogs are indexed by major libraries and journal indexing services and you can apply for an official ISSN. Hypotheses is open for all languages, the four main languages with several thousands of academic blogs are Spanish, French, German and English. -- Add info on where to buy domain (do not take the cheapest one). +- You can host and publish your own blog by using, for example, Wordpress or Drupal (Content Mangement Systems, CMS). The offer a great variety in layouts and templates for a website that has not just static content. If you decide to buy hosting services, there's plenty to choose from. It doesn't have to be costly, but be aware that the cheapest option isn't necessarily the best. You must put a GDPR statement on your site if you use a CMS! From 933b067cb5966df893b504ee7297a4fd7c31dbb6 Mon Sep 17 00:00:00 2001 From: Annika Rockenberger Date: Wed, 26 Sep 2018 10:05:14 +0200 Subject: [PATCH 27/42] Added notes from session --- lessons/NDA-minutes/README.md | 68 +++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/lessons/NDA-minutes/README.md b/lessons/NDA-minutes/README.md index e88bca882..2aa768736 100644 --- a/lessons/NDA-minutes/README.md +++ b/lessons/NDA-minutes/README.md @@ -28,6 +28,74 @@ More and more researchers need to make available their data before being able to **When**: 7th September 2018, 14:00-16:00 +5 National Infrastructures for storing and archiving data (atm) in Norway + +### NSD +– [http://www.nsd.uib.no/nsd/english/index.html](http://www.nsd.uib.no/nsd/english/index.html) +– Humanities, Social Sciences, Environmental Sciences +– Research Data Archive +– Located at UiB, Norway + +### NIRD / Nordstore +- [https://archive.norstore.no/](https://archive.norstore.no/) +– Research data archive +– National Archive +– Statistics +– Everyone can archive their data, no peer review or quality checking +– Generic, for entire Norway +– Assigns a DOI automatically +– maintained by Uninett / Sigma2 [https://www.uninett.no/sigma](https://www.uninett.no/sigma) + + +### TSD +– [https://www.uio.no/tjenester/it/forskning/sensitiv/](https://www.uio.no/tjenester/it/forskning/sensitiv/) +– Tjenester for siker datalagring +– Hosted by UiO +– Secure data storage for research projects (medicine etc.; personal data), can be shared; more widespread, also beyond Norway + +### Dataverse.no +– [https://dataverse.no/](https://dataverse.no/) +– UiT; now also UiA +– Hosts institutional repositories +– Archiving data for local researchers +– Have developed by institutional review, domain specific +– Must comply to FAIR principles +– UiO researchers can store up to 1 GB data, not more; no formal agreement +– Climate and geo data format https://www.unidata.ucar.edu/software/netcdf/ +– Metadata standard [http://schema.datacite.org/](http://schema.datacite.org/) +– [https://uit.no/forskning/art?p_document_id=521580&dim=236443](https://uit.no/forskning/art?p_document_id=521580&dim=236443) + + +### BIRD +- [https://bird.bibsys.no/jspui/](https://bird.bibsys.no/jspui/) +– BI Oslo +– Research Data Repo +– BibSys + +### General info on research data storage and access in Norway +– [https://www.regjeringen.no/no/dokumenter/nasjonal-strategi-for-tilgjengeliggjoring-og-deling-av-forskningsdata/id2582412/](https://www.regjeringen.no/no/dokumenter/nasjonal-strategi-for-tilgjengeliggjoring-og-deling-av-forskningsdata/id2582412/) + +### Domain specific data archives, incl. Metadata on re-use etc. +– [https://www.re3data.org/](https://www.re3data.org/) +– Look for keyword “Norway” - all Norwegian repos and archives listed +– Incl. European repos + +### Data Norge.no +– [https://data.norge.no/](https://data.norge.no/) +– Open for use + +### Kartverket.no +– topographical data + +### National Library of Norway nb.no +– data in machine readable form from Norwegian publications since 1740, incl. books, newspapers, journals; but also an increasing amount of manuscripts (medieval and modern), photographs, paintings, prints, sheet music; digital sound and music files, digital video files +– [nb.no](https://nb.no) + +### Dataverse Project +– [https://dataverse.org/](https://dataverse.org/) + + + From 0ddb0126670cb946e1b7bd136879390b0e1626d3 Mon Sep 17 00:00:00 2001 From: Annika Rockenberger Date: Wed, 26 Sep 2018 10:09:33 +0200 Subject: [PATCH 28/42] Fixed lists --- lessons/NDA-minutes/README.md | 86 ++++++++++++++++------------------- 1 file changed, 40 insertions(+), 46 deletions(-) diff --git a/lessons/NDA-minutes/README.md b/lessons/NDA-minutes/README.md index 2aa768736..2ce5b2d49 100644 --- a/lessons/NDA-minutes/README.md +++ b/lessons/NDA-minutes/README.md @@ -31,71 +31,65 @@ More and more researchers need to make available their data before being able to 5 National Infrastructures for storing and archiving data (atm) in Norway ### NSD -– [http://www.nsd.uib.no/nsd/english/index.html](http://www.nsd.uib.no/nsd/english/index.html) -– Humanities, Social Sciences, Environmental Sciences -– Research Data Archive -– Located at UiB, Norway +* [http://www.nsd.uib.no/nsd/english/index.html](http://www.nsd.uib.no/nsd/english/index.html) +* Humanities, Social Sciences, Environmental Sciences +* Research Data Archive +* Located at UiB, Norway ### NIRD / Nordstore -- [https://archive.norstore.no/](https://archive.norstore.no/) -– Research data archive -– National Archive -– Statistics -– Everyone can archive their data, no peer review or quality checking -– Generic, for entire Norway -– Assigns a DOI automatically -– maintained by Uninett / Sigma2 [https://www.uninett.no/sigma](https://www.uninett.no/sigma) +* [https://archive.norstore.no/](https://archive.norstore.no/) +* Research data archive +* National Archive +* Statistics +* Everyone can archive their data, no peer review or quality checking +* Generic, for entire Norway +* Assigns a DOI automatically +* maintained by Uninett / Sigma2 [https://www.uninett.no/sigma](https://www.uninett.no/sigma) ### TSD -– [https://www.uio.no/tjenester/it/forskning/sensitiv/](https://www.uio.no/tjenester/it/forskning/sensitiv/) -– Tjenester for siker datalagring -– Hosted by UiO -– Secure data storage for research projects (medicine etc.; personal data), can be shared; more widespread, also beyond Norway +* [https://www.uio.no/tjenester/it/forskning/sensitiv/](https://www.uio.no/tjenester/it/forskning/sensitiv/) +* Tjenester for siker datalagring +* Hosted by UiO +* Secure data storage for research projects (medicine etc.; personal data), can be shared; more widespread, also beyond Norway ### Dataverse.no -– [https://dataverse.no/](https://dataverse.no/) -– UiT; now also UiA -– Hosts institutional repositories -– Archiving data for local researchers -– Have developed by institutional review, domain specific -– Must comply to FAIR principles -– UiO researchers can store up to 1 GB data, not more; no formal agreement -– Climate and geo data format https://www.unidata.ucar.edu/software/netcdf/ -– Metadata standard [http://schema.datacite.org/](http://schema.datacite.org/) -– [https://uit.no/forskning/art?p_document_id=521580&dim=236443](https://uit.no/forskning/art?p_document_id=521580&dim=236443) +* [https://dataverse.no/](https://dataverse.no/) +* UiT; now also UiA +* Hosts institutional repositories +* Archiving data for local researchers +* Have developed by institutional review, domain specific +* Must comply to FAIR principles +* UiO researchers can store up to 1 GB data, not more; no formal agreement +* Climate and geo data format https://www.unidata.ucar.edu/software/netcdf/ +* Metadata standard [http://schema.datacite.org/](http://schema.datacite.org/) +* [https://uit.no/forskning/art?p_document_id=521580&dim=236443](https://uit.no/forskning/art?p_document_id=521580&dim=236443) ### BIRD -- [https://bird.bibsys.no/jspui/](https://bird.bibsys.no/jspui/) -– BI Oslo -– Research Data Repo -– BibSys +* [https://bird.bibsys.no/jspui/](https://bird.bibsys.no/jspui/) +* BI Oslo +* Research Data Repo +* BibSys ### General info on research data storage and access in Norway -– [https://www.regjeringen.no/no/dokumenter/nasjonal-strategi-for-tilgjengeliggjoring-og-deling-av-forskningsdata/id2582412/](https://www.regjeringen.no/no/dokumenter/nasjonal-strategi-for-tilgjengeliggjoring-og-deling-av-forskningsdata/id2582412/) +* [https://www.regjeringen.no/no/dokumenter/nasjonal-strategi-for-tilgjengeliggjoring-og-deling-av-forskningsdata/id2582412/](https://www.regjeringen.no/no/dokumenter/nasjonal-strategi-for-tilgjengeliggjoring-og-deling-av-forskningsdata/id2582412/) ### Domain specific data archives, incl. Metadata on re-use etc. -– [https://www.re3data.org/](https://www.re3data.org/) -– Look for keyword “Norway” - all Norwegian repos and archives listed -– Incl. European repos +* [https://www.re3data.org/](https://www.re3data.org/) +* Look for keyword “Norway” - all Norwegian repos and archives listed +* Incl. European repos ### Data Norge.no -– [https://data.norge.no/](https://data.norge.no/) -– Open for use +* [https://data.norge.no/](https://data.norge.no/) +* Open for use ### Kartverket.no -– topographical data +* topographical data ### National Library of Norway nb.no -– data in machine readable form from Norwegian publications since 1740, incl. books, newspapers, journals; but also an increasing amount of manuscripts (medieval and modern), photographs, paintings, prints, sheet music; digital sound and music files, digital video files -– [nb.no](https://nb.no) +* data in machine readable form from Norwegian publications since 1740, incl. books, newspapers, journals; but also an increasing amount of manuscripts (medieval and modern), photographs, paintings, prints, sheet music; digital sound and music files, digital video files +* [nb.no](https://nb.no) ### Dataverse Project -– [https://dataverse.org/](https://dataverse.org/) - - - - - - +* [https://dataverse.org/](https://dataverse.org/) From 7624c2742bf5c18a59b73c715eb6046d576de288 Mon Sep 17 00:00:00 2001 From: Michel Heeremans Date: Wed, 26 Sep 2018 10:41:33 +0200 Subject: [PATCH 29/42] Update README.md Added NMBU as also being part of Dataverse.no --- lessons/NDA-minutes/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lessons/NDA-minutes/README.md b/lessons/NDA-minutes/README.md index 2ce5b2d49..e7dfcd8f4 100644 --- a/lessons/NDA-minutes/README.md +++ b/lessons/NDA-minutes/README.md @@ -55,7 +55,7 @@ More and more researchers need to make available their data before being able to ### Dataverse.no * [https://dataverse.no/](https://dataverse.no/) -* UiT; now also UiA +* UiT; now also UiA and NMBU * Hosts institutional repositories * Archiving data for local researchers * Have developed by institutional review, domain specific From abc33c8296c901f663f5082b7ecc95d97e90092f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Michael=20O=2E=20Hegg=C3=B8?= Date: Thu, 18 Oct 2018 17:12:51 +0200 Subject: [PATCH 30/42] Fix link to Github repo --- _data/en.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_data/en.yml b/_data/en.yml index 409ec734b..3acf1bf8f 100644 --- a/_data/en.yml +++ b/_data/en.yml @@ -23,7 +23,7 @@ leadership: How to lead a Study Group session pastEvents: See Our Past Events notification: Want to be notified of our upcoming events? -watching: 'Head over to GitHub and watch our repository, like this:' +watching: 'Head over to GitHub and watch our repository, like this:' watchingCaption: 'Look in the top right-hand corner of our repo, and click "Watching."
You can undo this at any time in the same place.' calendar: Subscribe to our events calendar! From b1a30fadd88acbfcd28aa21ed1cfa920243a78cf Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Fri, 19 Oct 2018 12:33:48 +0200 Subject: [PATCH 31/42] setup for work along session on deep-learning --- lessons/deep-learning-minutes/README.md | 75 +++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 lessons/deep-learning-minutes/README.md diff --git a/lessons/deep-learning-minutes/README.md b/lessons/deep-learning-minutes/README.md new file mode 100644 index 000000000..dda8473f0 --- /dev/null +++ b/lessons/deep-learning-minutes/README.md @@ -0,0 +1,75 @@ +--- +layout: page +title: work along session on deep learning +text: +link: https://github.com/uio-carpentry/studyGroup/issues/8 +visible: true +tags: + # languages + - python + - r + # levels + - intermediate +--- + + + + + - **Leader**: Ana Costa + - **Lesson Topic**: Deep learning with R and python + - [![License: CC BY 4.0](https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by/4.0/) + + +# Minutes of the studyGroup@UiO work along session + +**When**: 19th October 2018, 14:00-16:00 + +### Setup + +#### Setup for R + +The following packages need to be install for this work along session: + +~~~ +install.packages("devtools") +install.packages("neuralnet") +install.packages("GGally") +install.packages("tidyverse") +install.packages("car") +install.packages("curl") +install.packages("tensorflow") +~~~ +{: .language-r} + + +For using `tensorflow`, you also need an additional step to initialize it: + +~~~ +library(tensorflow) +install_tensorflow(method = "auto") # if not installed before +~~~ +{: .language-r} + +- To test tensorflow installation + +~~~ +sess = tf$Session() +hello <- tf$constant("Hello, Tensorflow!") +sess$run(hello) +~~~ +{: .language-r} + +#### Setup for python 3 + +The following python packages will be used for this work along session: + +~~~ +numpy +pandas +matplotlib +scikit-learn +tensorflow +~~~ +{: .language-python} + + From ab3173ec427502314256c4316bc22cb6c9e40cfb Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Fri, 19 Oct 2018 12:37:24 +0200 Subject: [PATCH 32/42] added submodule for deep-learning lesson --- .gitmodules | 4 ++++ lessons/deep-learning-minutes/neuralRPy | 1 + 2 files changed, 5 insertions(+) create mode 160000 lessons/deep-learning-minutes/neuralRPy diff --git a/.gitmodules b/.gitmodules index e998b7e03..37309ed5c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,7 @@ [submodule "lessons/pytest-lesson"] path = lessons/pytest-lesson url = https://github.com/annefou/pytest-lesson +[submodule "lessons/deep-learning-minutes/neuralRPy"] + path = lessons/deep-learning-minutes/neuralRPy + url = https://github.com/anacost/neuralRPy + branch = master diff --git a/lessons/deep-learning-minutes/neuralRPy b/lessons/deep-learning-minutes/neuralRPy new file mode 160000 index 000000000..73d291e96 --- /dev/null +++ b/lessons/deep-learning-minutes/neuralRPy @@ -0,0 +1 @@ +Subproject commit 73d291e96385941e0468c533f4b2b0567b0c49b0 From b3da081dfdbd1e06f44b41d6379e93a2b7fef5a8 Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Fri, 19 Oct 2018 15:23:52 +0200 Subject: [PATCH 33/42] added links to jupyter notebooks --- lessons/deep-learning-minutes/README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lessons/deep-learning-minutes/README.md b/lessons/deep-learning-minutes/README.md index dda8473f0..af1c40e7a 100644 --- a/lessons/deep-learning-minutes/README.md +++ b/lessons/deep-learning-minutes/README.md @@ -73,3 +73,14 @@ tensorflow {: .language-python} +### neuralnet with R + +See jupyter notebook with [neuralnet example](https://github.com/anacost/neuralRPy/blob/master/neuralnet_sensitivity_met_data.ipynb). + +### Tensorflow with python + +See jupyter notebook with [tensorflow in python](https://github.com/anacost/neuralRPy/blob/master/tensorflowPy.ipynb). + +### Other materials + +- [A Beginner's Guide to Neural Networks and Deep Learning](https://skymind.ai/wiki/neural-network) From 8dbc252e90cc5c36496366835bafae39d4ecb75d Mon Sep 17 00:00:00 2001 From: Ana Costa <29195893+anacost@users.noreply.github.com> Date: Fri, 26 Oct 2018 09:40:33 +0000 Subject: [PATCH 34/42] create Oslo useR! group meetup Football on 10 December --- _posts/2018-12-10-useR.markdown | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 _posts/2018-12-10-useR.markdown diff --git a/_posts/2018-12-10-useR.markdown b/_posts/2018-12-10-useR.markdown new file mode 100644 index 000000000..8fc299d65 --- /dev/null +++ b/_posts/2018-12-10-useR.markdown @@ -0,0 +1,25 @@ +--- +title: use R! group How analysing football data made me fall in love with football again +text: +location: Teknologihuset +link: https://www.meetup.com/Oslo-useR-Group/events/255853637/ +date: 2018-09-19 +startTime: '17:30' +endTime: '19:30' + +--- + +**Session leader**: Toju Idowu and Dmytro Perepolkin + +In this talk, I will show you how I’ve used `R` to delve deep into how football works. I’ll work through a simple GLM using some of the new tidymodels packages. + +About the speaker: +Toju is an actuary originally from the UK, living in Oslo. He has been using `R` for about four years ever since he accidentally discovered it while searching for how to do linear regression in Excel. Now he use `R` for almost everything data related both at work and at home on side projects. + + +- **Level**: beginner to intermediate +- **When**: 10th December 2018 +- **Time**: 17:30-19:30 +- **Location**: Teknologihuset, Pilestredet 56 · Oslo +- **More information**: https://www.meetup.com/Oslo-useR-Group/events/255853637/ + From 94d042a95336ea216f9b81669f339a82656a0abc Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Fri, 26 Oct 2018 12:11:44 +0200 Subject: [PATCH 35/42] bug fix: date was not right in file --- _posts/2018-12-10-useR.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2018-12-10-useR.markdown b/_posts/2018-12-10-useR.markdown index 8fc299d65..58307f702 100644 --- a/_posts/2018-12-10-useR.markdown +++ b/_posts/2018-12-10-useR.markdown @@ -3,7 +3,7 @@ title: use R! group How analysing football data made me fall in love with footba text: location: Teknologihuset link: https://www.meetup.com/Oslo-useR-Group/events/255853637/ -date: 2018-09-19 +date: 2018-12-10 startTime: '17:30' endTime: '19:30' From e656c071e4d2e825609456c8ae4a624fa49d8790 Mon Sep 17 00:00:00 2001 From: Ana Costa <29195893+anacost@users.noreply.github.com> Date: Mon, 29 Oct 2018 11:31:59 +0000 Subject: [PATCH 36/42] created 2018-11-07-userR.markdown --- _posts/2018-11-07-useR.markdown | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 _posts/2018-11-07-useR.markdown diff --git a/_posts/2018-11-07-useR.markdown b/_posts/2018-11-07-useR.markdown new file mode 100644 index 000000000..64fa522a8 --- /dev/null +++ b/_posts/2018-11-07-useR.markdown @@ -0,0 +1,21 @@ +--- +title: Oslo useR! Group, Making tidyverse-friendly packages +text: +location: Teknologihuset +link: https://www.meetup.com/Oslo-useR-Group/events/255931499/ +date: 2018-11-07 +startTime: '17:30' +endTime: '19:30' + +--- + +**Session leader**: Raoul Wolf + +Raoul will share his experience from simplifying a workflow by writing an R package; under the restriction of minimal dependencies, while maintaining full compatibility for tidyverse. In his own words: «I was working on a new project and I noticed I was sourcing dozens of functions from multiple scripts. I thought to myself: “I might as well do what everyone is doing and write a package!» Come and join us in learning how to identify the need for a package, strategically plan the process of writing the package, and to keep track on applicability and usability. + +- **Level**: beginner to intermediate +- **When**: 07th November 2018 +- **Time**: 17:30-19:30 +- **Location**: Teknologihuset, Pilestredet 56 · Oslo +- **More information**: https://www.meetup.com/Oslo-useR-Group/events/255931499/ + From c43871959e59a714478828fd8ee29b71a289694a Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Fri, 2 Nov 2018 12:51:46 +0100 Subject: [PATCH 37/42] event cancelled --- _posts/2018-11-23-workalong.markdown | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 _posts/2018-11-23-workalong.markdown diff --git a/_posts/2018-11-23-workalong.markdown b/_posts/2018-11-23-workalong.markdown deleted file mode 100644 index 96a68c7f8..000000000 --- a/_posts/2018-11-23-workalong.markdown +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Work along session on "Ally Skills Workshop" -text: Discuss Valerie Aurora's "Ally Skills Workshop" training material. -location: Science Library -link: https://github.com/uio-carpentry/studyGroup/issues/12 -date: 2018-11-23 -startTime: '14:00' -endTime: '16:00' - ---- - -**Session leader**: Gladys Nalvarte - -The goal of this work along session is to go through Valerie Aurora's training material on "Ally skills workshop". The goal of these workshops is to provide training and advice to increase diversity and inclusion in technology-oriented organizations. - - -- **When**: 23nd November 2018, 14-16h -- **Location**: Niels Henrik Abels hus, room 209 -- **Who**: _everybody interested in learning about "Ally Skills workshops"_ - From 9379ab8f8475aed0800961fcef6e19213ca96749 Mon Sep 17 00:00:00 2001 From: Michel Heeremans Date: Fri, 2 Nov 2018 17:04:15 +0100 Subject: [PATCH 38/42] Create minutes.md Minutes for the uioCarpentry Study Group session on the OSF --- lessons/OSF_minutes/minutes.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 lessons/OSF_minutes/minutes.md diff --git a/lessons/OSF_minutes/minutes.md b/lessons/OSF_minutes/minutes.md new file mode 100644 index 000000000..098a52b97 --- /dev/null +++ b/lessons/OSF_minutes/minutes.md @@ -0,0 +1,7 @@ +We went through the OSF interface and came up with some points that would be important to go through when organizing an OSF workshop, e.g. at the Research Bazaar: + +- Is it possble to add different accounts for Add-ons e.g. different github accounts for one user? +- Discuss the use of DOI's and Registration. When should you create a DOI? When and why should you register your project +- Show how to generate different ways of citation, e.g. BibTex +- How to create a preprint and connect it to your OSF project? How to find pre-prints and make comments to them? What is the advantage of preprints? +- Discuss advantage of using OSF and/or other public collaboration platforms that can generate DOI in respect to publishing on your own web page. From 4bbef117b968e423b2bd7e05709cab48fbeaa334 Mon Sep 17 00:00:00 2001 From: Michel Heeremans Date: Fri, 2 Nov 2018 17:09:23 +0100 Subject: [PATCH 39/42] Update minutes.md --- lessons/OSF_minutes/minutes.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lessons/OSF_minutes/minutes.md b/lessons/OSF_minutes/minutes.md index 098a52b97..d27d281fc 100644 --- a/lessons/OSF_minutes/minutes.md +++ b/lessons/OSF_minutes/minutes.md @@ -1,3 +1,23 @@ +--- +layout: page +title: Open Science Framework +text: +link: https://github.com/uio-carpentry/studyGroup/issues/10 +visible: true +tags: + # languages + - misc + # levels + - beginner +--- + + + + + - **Authors**: Michael Heeremans and Ana Costa Conrado + - **Lesson Topic**: Open Science Framework + - [![License: CC BY 4.0](https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by/4.0/) + We went through the OSF interface and came up with some points that would be important to go through when organizing an OSF workshop, e.g. at the Research Bazaar: - Is it possble to add different accounts for Add-ons e.g. different github accounts for one user? From a6bdab92623973b60a126aa79c550f92907ea7c1 Mon Sep 17 00:00:00 2001 From: Michel Heeremans Date: Fri, 2 Nov 2018 17:15:21 +0100 Subject: [PATCH 40/42] Update minutes.md --- lessons/OSF_minutes/minutes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lessons/OSF_minutes/minutes.md b/lessons/OSF_minutes/minutes.md index d27d281fc..e84abe322 100644 --- a/lessons/OSF_minutes/minutes.md +++ b/lessons/OSF_minutes/minutes.md @@ -20,7 +20,7 @@ tags: We went through the OSF interface and came up with some points that would be important to go through when organizing an OSF workshop, e.g. at the Research Bazaar: -- Is it possble to add different accounts for Add-ons e.g. different github accounts for one user? +- Is it possble to add different accounts for one specific Add-on e.g. different github accounts for one user? - Discuss the use of DOI's and Registration. When should you create a DOI? When and why should you register your project - Show how to generate different ways of citation, e.g. BibTex - How to create a preprint and connect it to your OSF project? How to find pre-prints and make comments to them? What is the advantage of preprints? From 990cdeca89e25cfc4213401fee879b1bf099b82a Mon Sep 17 00:00:00 2001 From: Anne Fouilloux Date: Fri, 9 Nov 2018 08:57:27 +0100 Subject: [PATCH 41/42] more generic title with coderefinery lesson on automated testing --- _posts/2018-11-09-workalong.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2018-11-09-workalong.markdown b/_posts/2018-11-09-workalong.markdown index aeb048fb8..52fa7e299 100644 --- a/_posts/2018-11-09-workalong.markdown +++ b/_posts/2018-11-09-workalong.markdown @@ -1,5 +1,5 @@ --- -title: Work along session on "How to use pytest?" +title: Work along session on "Automated testing" text: Learn about pytest and how to use this python package for testing your codes location: Science Library link: https://github.com/uio-carpentry/studyGroup/issues/11 From 7344b8d6b791d2a88b474dccd6a72226f48fe665 Mon Sep 17 00:00:00 2001 From: Michel Heeremans Date: Mon, 12 Nov 2018 10:45:06 +0100 Subject: [PATCH 42/42] Few typos --- _posts/2018-11-30-workalong.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_posts/2018-11-30-workalong.markdown b/_posts/2018-11-30-workalong.markdown index 95395403b..9ee5710b2 100644 --- a/_posts/2018-11-30-workalong.markdown +++ b/_posts/2018-11-30-workalong.markdown @@ -13,9 +13,9 @@ endTime: '16:00' Everything you need to know to start writing your own Data Management Plan. -You will learn what tools you can use to help you writing your DMP (Data Management Plan) and what is important to address to manage efficiently your data. +You will learn what tools you can use to help you writing your DMP (Data Management Plan) and what is important to address to manage your data efficiently. - **When**: 30th November 2018, 14-16h - **Location**: Niels Henrik Abels hus, room 209 -- **Who**: _everybody interested in learning about "Data Management Plan"_ +- **Who**: _everybody interested in learning about "Data Management Plans"_