---
title: nf-core/bytesize 29 coproID
tags: bytesize, nf-core, open-source, talk
---
<!-- .slide: data-background="https://raw.githubusercontent.com/maxulysse/maxulysse.github.io/main/assets/img/svg/green_white_bg.svg" -->
<a href="https://www.nf-co.re"><img src="https://raw.githubusercontent.com/nf-core/logos/master/byte-size-logos/bytesize-darkbg.svg" width="65%"><img></a>
# \#29: coproID
Maxime Borry / <img src="https://openmoji.org/data/color/svg/E040.svg" width=50> @notmaxib / <img src="https://openmoji.org/data/color/svg/E045.svg" width=50> @maxibor
Max Planck Institute for Evolutionary Anthropology
---
# Overview
- What is a coprolite ? :poop:
- The challenge of identifying their source :dog: :man_and_woman_holding_hands:
- The coproID solution :computer:
- nf-core then and now
---
# What is a coprolite ?
<img src="https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Lloydsbankcoprolite_001.jpg/1920px-Lloydsbankcoprolite_001.jpg" width=50%>
[The Lloyds bank coprolite - 9th century AD](https://hackmd.io/@aIp0E0_QTJmf9nJ0B87tfg/B1z4GjCOK)
**Coprolite ~= Paleofeces**
----
## Why do we study coprolites ?
*A window into the past on the gut microbiome and diet of historical and archaic individuals.*
For example: [blue cheese and beer consumption identified from ~ 2500 years old coprolites](https://doi.org/10.1016/j.cub.2021.09.031)
<img src="https://i.imgur.com/y1qgRPQ.png" width=20%></img>
---
# The challenge of identifying a coprolite's origin
Example: A gut microbiome study of *Elmo mupettus*
<img src="https://c.tenor.com/q1Yd0ehs3DEAAAAC/pooping-elmo.gif" width=40%></img> <img src="https://i.imgur.com/XQ8aZGy.png" width=40%></img>
----
# Archeological sample reality check
Coprolites are often found in a archeological context that can not easily help to attribute them a maker.
- No nearby human remains
- Shape/consistancy degraded
- Mixed human and animal occupation
<img src="https://i.imgur.com/L6G72ft.png" width=40%></img>
---
# The coproID solution
<img src="https://dfzljdn9uc3pi.cloudfront.net/2020/9001/1/fig-2-2x.jpg" width=50%></img>
----
## Host DNA competitive mapping
**Align DNA sequencing reads simultaneously against most likely host genomes**
<a href="https://doi.org/10.1038/nmicrobiol.2016.161"><img src="https://i.imgur.com/D6j26Cu.png" width=50%></img></a>
----
## Gut microbiome profiling
Kraken2 taxonomic profiler -> Sample pairwise distance metrics -> Dimensionality reduction
<img src="https://i.imgur.com/K0CPuBd.png" width=50%></img>
----
## Predicting unknown sources from reference samples
<img src="https://i.imgur.com/eMeLOXA.png" width=50%></img>
----
## Predicting unknown sources from reference samples
<img src="https://i.imgur.com/2HJWJQo.png" width=45%></img> <a href="https://github.com/maxibor/sourcepredict"><img src="https://i.imgur.com/VZr5xuu.png" width=45%></img></a>
----
## Predicting unknown sources from reference samples
<img src="https://i.imgur.com/qU6863J.png" width=75%></img>
---
## Putting it together
Interactive report
[maximeborry.com/coproID_report.html](https://maximeborry.com/coproID_report.html)
---
# nf-core then and now
Last release of coproID in April 2020 :older_adult:
<img src="https://i.imgur.com/5nM0qcz.jpg" width=50%></img>
----
- nf-core tools v1.8
- No nf-core schema
- No DSL2/modules
Exciting to see nf-core develop so rapidly, but challenging to keep pipelines up to date.
---
# The End
<!-- .slide: data-background="https://raw.githubusercontent.com/maxulysse/maxulysse.github.io/main/assets/img/svg/green_white_bg.svg" -->
Repository: [`nf-core/coproid`](https://github.com/nf-core/coproID)
Article: [`CoproID predicts the source of coprolites and paleofeces using microbiome composition and host DNA content`](https://doi.org/10.7717/peerj.9001)
Slack channel: [`https://nf-co.re/join`](https://nf-co.re/join) <img src="https://cdn.brandfolder.io/5H442O3W/at/pl546j-7le8zk-6gwiyo/Slack_Mark.svg" width=7.5%></img>`#coproid`
<div style="margin-top:0.1em"> </div>
<p align="center">
Follow nf-core on
<a href="https://www.twitter.com/nf_core"><img src="https://openmoji.org/data/color/svg/E040.svg" width=6%></a>
<a href="https://github.com/nf-core"><img src="https://openmoji.org/data/color/svg/E045.svg" width=6%></a>
<a href="https://www.youtube.com/c/nf-core"><img src="https://openmoji.org/data/color/svg/E044.svg" width=6%></a>
</a>
</p>
<a href="https://nf-co.re" style="color: #000000; font-family:Monaco, monospace; font-weight:bold;">https://nf-co.re</a>
<div style="display: flex; justify-content: space-evenly; align-items:center;">
<img src="https://chanzuckerberg.com/wp-content/themes/czi/img/logo.svg" width=15%>
<div style="font-style:italic; font-size: 0.5em; color: #666;">Icons:<br><a href="https://openmoji.org">openmoji.org</a></div></div>
<style>
.reveal section img { background:none; border:none; box-shadow:none; }
body {
background-image: url(https://raw.githubusercontent.com/nf-core/logos/master/nf-core-logos/nf-core-logo-square.svg);
background-size: 7.5%;
background-repeat: no-repeat;
background-position: 3% 96%;
background-color: #181a1b;
}
.reveal body {
font-family: 'Roboto', sans-serif;
font-weight: 300;
color: white;
}
.reveal p {
font-family: 'Roboto', sans-serif;
font-weight: 300;
color: white;
}
.reveal h1 {
font-family: 'Roboto', sans-serif;
font-style: bold;
font-weight: 400;
color: white;
font-size: 62px;
}
.reveal h2 {
font-family: 'Roboto', sans-serif;
font-weight: 300;
color: white;
}
.reveal h3 {
font-family: 'Roboto', sans-serif;
font-style: italic;
font-weight: 300;
color: white;
}
.reveal p {
font-family: 'Roboto', sans-serif;
font-weight: 300;
color: white;
}
.reveal li {
font-family: 'Roboto', sans-serif;
font-weight: 300;
color: white;
}
.reveal pre {
background-color: #272822 !important;
display: inline-block;
border-radius: 7px;
color: #aaaba9;
}
.reveal pre code {
color: #eeeeee;
background-color: #272822;
font-size: 100%;
}
.reveal code {
background-color: #272822;
font-size: 75%;
}
.reveal .progress {
color: #24B064;
}
.reveal .controls button {
color: #24B064;
}
.reveal blockquote {
display: block;
position: relative;
width: 90%;
margin: 20px auto;
padding: 5px;
background: rgba(255, 255, 255, 0.05);
box-shadow: 0px 0px 2px rgb(0 0 0 / 20%);
}
</style>