+ - 0:00:00
Notes for current slide
Notes for next slide

The Birder’s Guide to rOpenSci

MaΓ«lle Salmon
ma_salmon maelle masalmon.eu

2018/09/12

1 / 52

My goals today

2 / 52

My goals today

  • Inspiring you to try out rOpenSci packages.
2 / 52

My goals today

  • Inspiring you to try out rOpenSci packages.

  • Motivating you to get involved with rOpenSci.

2 / 52

My goals today

  • Inspiring you to try out rOpenSci packages.

  • Motivating you to get involved with rOpenSci.

  • Sharing a few tips from my experience.

2 / 52

My goals today

  • Inspiring you to try out rOpenSci packages.

  • Motivating you to get involved with rOpenSci.

  • Sharing a few tips from my experience.

Slidedeck up at https://tiny.cc/animove

2 / 52

Short intro to me πŸ˜‰

3 / 52

My science credentials

  • BSc in Biology, MSc in (Theoretical) Ecology

  • Master of Public Health

  • PhD in Statistics

Nowadays, more of a research software engineer.

Part-time software engineer at rOpenSci & at Locke Data.

4 / 52

My science credentials

  • BSc in Biology, MSc in (Theoretical) Ecology

  • Master of Public Health

  • PhD in Statistics

Nowadays, more of a research software engineer.

Part-time software engineer at rOpenSci & at Locke Data.

Not an actual birder. πŸ™€

4 / 52

My science credentials

  • BSc in Biology, MSc in (Theoretical) Ecology

  • Master of Public Health

  • PhD in Statistics

Nowadays, more of a research software engineer.

Part-time software engineer at rOpenSci & at Locke Data.

Not an actual birder. πŸ™€

All pics by my dad. πŸ“·

4 / 52

My place in the R community

  • R-Ladies Global social master

  • R Weekly team member (and blogger myself!)

  • Volunteer editor for rOpenSci onboarding

5 / 52

What is rOpenSci?

6 / 52

What's rOpenSci?

  • Community of researchers and software developers

  • R packages for open and reproducible science

  • Community and staff contributions

7 / 52

rOpenSci onboarding!

How to ensure quality in the whole suite?

9 / 52

rOpenSci onboarding!

How to ensure quality in the whole suite?

Open software reviews.

9 / 52

rOpenSci onboarding!

How to ensure quality in the whole suite?

Open software reviews.

  • drive adoption of best practices and standards
9 / 52

rOpenSci onboarding!

How to ensure quality in the whole suite?

Open software reviews.

  • drive adoption of best practices and standards

  • build a community of practice

9 / 52

rOpenSci onboarding!

How to ensure quality in the whole suite?

Open software reviews.

  • drive adoption of best practices and standards

  • build a community of practice

  • partnerships with the Journal of Open Source Software and Methods in Ecology and Evolution

9 / 52

What to review for?

10 / 52

What to review for?

magick::image_read("https://raw.github.com/jtleek/rpackages/master/documentation.png")

10 / 52

Review criteria

  • Open-source initiative (OSI) compatible license

  • Complete docs

  • High test coverage

  • Readable code

  • Usability

11 / 52

Review criteria

  • Open-source initiative (OSI) compatible license

  • Complete docs

  • High test coverage

  • Readable code

  • Usability

ropensci.github.io/dev_guide/

11 / 52

Side-note: your R πŸ“¦

12 / 52

Side-note: your R πŸ“¦

Bye bye source("myfunctions.R"), hello library("mypkg")!

12 / 52

Side-note: your R πŸ“¦

Bye bye source("myfunctions.R"), hello library("mypkg")!

  • At least for future you!

  • Automatic tools make it easier

List of resources: https://masalmon.eu/2017/12/11/goodrpackages/

12 / 52

How to review?

13 / 52

How to review?

  • Open & non-adversarial
13 / 52

How to review?

  • Open & non-adversarial

  • No rejections

13 / 52

How to review?

  • Open & non-adversarial

  • No rejections

  • Makes the process constructive for everyone involved

13 / 52

How to review?

  • Open & non-adversarial

  • No rejections

  • Makes the process constructive for everyone involved

  • Technically, using GitHub infrastructure

13 / 52

rOpenSci onboarding

14 / 52

The issues tracker

15 / 52

Submitting a package

16 / 52

Submitting a package

17 / 52

Submitting a package

18 / 52

Rejection

No rejections... but out-of-scope packages not onboarded.

https://ropensci.github.io/dev_guide/policies.html#aims-and-scope

19 / 52

Rejection

No rejections... but out-of-scope packages not onboarded.

https://ropensci.github.io/dev_guide/policies.html#aims-and-scope

  • fit in our categories: data retrieval, data extraction, database access, data munging, data deposition, reproducibility, geospatial data, text analysis.
19 / 52

Rejection

No rejections... but out-of-scope packages not onboarded.

https://ropensci.github.io/dev_guide/policies.html#aims-and-scope

  • fit in our categories: data retrieval, data extraction, database access, data munging, data deposition, reproducibility, geospatial data, text analysis.

  • application in science

19 / 52

Rejection

No rejections... but out-of-scope packages not onboarded.

https://ropensci.github.io/dev_guide/policies.html#aims-and-scope

  • fit in our categories: data retrieval, data extraction, database access, data munging, data deposition, reproducibility, geospatial data, text analysis.

  • application in science

  • better than similar packages

19 / 52

Rejection

No rejections... but out-of-scope packages not onboarded.

https://ropensci.github.io/dev_guide/policies.html#aims-and-scope

  • fit in our categories: data retrieval, data extraction, database access, data munging, data deposition, reproducibility, geospatial data, text analysis.

  • application in science

  • better than similar packages

When in doubt, pre-submission enquiry!

19 / 52

Pre-submission enquiry?

20 / 52

Pre-submission enquiry?

21 / 52

The review process

22 / 52

The review process: editor checks

23 / 52

The review process: reviews

24 / 52

The review process: reviews

25 / 52

The review process

Ongoing discussion until acceptance and transfer

26 / 52

The review process

Ongoing discussion until acceptance and transfer

Often a blog post https://ropensci.org/tags/review/

26 / 52

An exploration from Radolfzell

27 / 52

An exploration from Radolfzell

5 use cases. Not all detailed in the talk! 😌

28 / 52

An exploration from Radolfzell

5 use cases. Not all detailed in the talk! 😌

All details in blog posts https://ropensci.org/tags/birder/

28 / 52

An exploration from Radolfzell


Leveraging rOpenSci packages and also:

  • the magrittr pipe %>% to pass output from one function to the following function

  • tidyverse (ggplot2, dplyr, purrr)

  • sf

  • R Markdown

29 / 52

Case study 1

Where to go birding near Radolfzell?

Code&output

30 / 52

Case study 1

  • Open geographical data (πŸ’š OpenStreetMap)

    • opencage

    • osmdata

    • osmplotr

https://ropensci.org/blog/2018/08/14/where-to-bird/ (co-written with Mark Padgham)

31 / 52

Case study 2

What birds are observed in the county?

eBird occurrence data

  • rebird, API, latest 30 days

  • auk, access request needed, whole dataset

Code&output

32 / 52

Case study 2

Occurrence data

  • rebird and auk

  • more data sources via spocc

  • mapr, scrubr, CoordinateCleaner

https://ropensci.org/blog/2018/08/21/birds-radolfzell/

33 / 52

Case study 3

Taxonomy and traits data of these birds

34 / 52

Case study 3

Taxonomy and traits data of these birds

ids <- taxize::get_uid(unique(ebd$scientific_name))
classif <- taxize::classification(ids)
tree <- taxize::class2tree(classif)
34 / 52

Case study 3

library("ggplot2")
ggtree::ggtree(tree$phylo) +
ggtree::geom_tiplab(aes(), size = 2, vjust=0.25) +
xlim(0, 150)
35 / 52

Case study 3

Messy tree

36 / 52

Case study 3

rphylopic + phylobase + ugly code

animated tree

37 / 52

Case study 3

Taxonomy: taxize

Traits: traits

https://ropensci.org/blog/2018/09/04/birds-taxo-traits/

38 / 52

Case study 4

What were these species studied for?

Code&output

39 / 52

Case study 4

https://ropensci.org/blog/2018/09/11/birds-science/

Literature: fulltext & more!

40 / 52

Case study 4

https://ropensci.org/blog/2018/09/11/birds-science/

Literature: fulltext & more!

Open scientific data: dataone (not rOpenSci), rfigshare

40 / 52

Bonus: Old drawings

41 / 52

Natural history drawings

Code&output

42 / 52

Natural history drawings

https://ropensci.org/blog/2018/08/28/birds-ocr/

43 / 52

Natural history drawings

https://ropensci.org/blog/2018/08/28/birds-ocr/

  • magick for image manipulation
43 / 52

Natural history drawings

https://ropensci.org/blog/2018/08/28/birds-ocr/

  • magick for image manipulation

  • tesseract for optical character recognition (OCR)

43 / 52

Natural history drawings

https://ropensci.org/blog/2018/08/28/birds-ocr/

  • magick for image manipulation

  • tesseract for optical character recognition (OCR)

  • cld2 and cld3 for language recognition

43 / 52

Natural history drawings

https://ropensci.org/blog/2018/08/28/birds-ocr/

  • magick for image manipulation

  • tesseract for optical character recognition (OCR)

  • cld2 and cld3 for language recognition

  • taxize::gnr_resolve for taxonomic name resolution

43 / 52

Conclusion

44 / 52

An impressive package suite

Missing from this overview: workflow packages such as drake, gistr, git2r.

https://ropensci.org/packages/

https://ropensci.org/tags/birder/

45 / 52

A few tips

46 / 52

How to keep up-to-date with R &rOpenSci

47 / 52

How to not be overwhelmed

48 / 52

How to learn new R skills?

By doing!

49 / 52

Get involved with rOpenSci

50 / 52

Get involved

  • Use our packages and tell us!

https://discuss.ropensci.org/

  • Get involved with onboarding (submit, review)

https://github.com/ropensci/onboarding

  • More ways to get involved

https://ropensci.org/community/

51 / 52

Thank you! https://tiny.cc/animove

ma_salmon, maelle , masalmon.eu

rOpenSci, ropensci , ropensci.org

52 / 52

My goals today

2 / 52
Paused

Help

Keyboard shortcuts

↑, ←, Pg Up, k Go to previous slide
↓, β†’, Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow