Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
3c74fa5
Search from every page and show where the reader is
Paururo Oct 24, 2026
d415a6e
Rebuild the docs template for reading at every width
Paururo Oct 24, 2026
84c3f81
Open the example report, and every final_report.html, with no network
Paururo Oct 24, 2026
a46dd22
Check that drawing scripts load only where they draw, and that option…
Paururo Oct 24, 2026
28213c3
Load the search index only when the reader searches
Paururo Oct 24, 2026
cbe1bcc
Say what the pipeline does today, in the same words on every page
Paururo Oct 24, 2026
c17fcde
Cite the tools AMAP runs, and break up the longest paragraphs
Paururo Oct 24, 2026
2b6a8f0
Make every drawing readable by keyboard, touch and screen reader
Paururo Oct 24, 2026
30cca46
Keep the step-by-step controls still and show each rule on time
Paururo Oct 24, 2026
027b416
Fade a cut gene's piece on the side it lacks
Paururo Oct 24, 2026
daa6e0e
Score Bakta alone in the benchmark and draw it behind AMAP
Paururo Oct 24, 2026
c380ff3
Float tips beside a mouse, and ring the focused protein
Paururo Oct 24, 2026
a305b47
Show a picture of the example report until it is opened
Paururo Oct 24, 2026
0d2bae5
Make Start here a true path from install to results
Paururo Oct 24, 2026
b2105a9
Tell the case against Bakta alone in the hero, and tidy the front page
Paururo Oct 24, 2026
5375b04
Let the case counts command break after a folder on a phone
Paururo Oct 24, 2026
95caf57
Give the two duplication stations room for their names
Paururo Oct 24, 2026
bf55c4f
Keep the header on one row and the phone page list folded
Paururo Oct 24, 2026
47a6da4
Keep the Link copied note inside the window
Paururo Oct 24, 2026
dcad80c
Give the test's work folder in the same unit as the tutorial's
Paururo Oct 24, 2026
5a9b320
Keep code blocks and long file names inside their boxes
Paururo Oct 24, 2026
c508ef9
Keep the footer's room on pages without its bottom row
Paururo Oct 24, 2026
8d6e432
Keep the stepper buttons the same size whatever they say
Paururo Oct 24, 2026
8ce4a29
Line up the sample sheet's tabs and correct four front-page sentences
Paururo Oct 24, 2026
83fca8e
Keep the hero's Play button as wide as Pause
Paururo Oct 24, 2026
be4ee26
Hold the hero's phase line at the height of its longest phase
Paururo Oct 24, 2026
efd9dec
Leave room for a focused story chip's ring on narrow screens
Paururo Oct 24, 2026
79e7184
Merge the chrome and search work into the website
Paururo Oct 24, 2026
84b62fe
Merge the drawings work into the website
Paururo Oct 24, 2026
7d36135
Merge the docs template work into the website
Paururo Oct 24, 2026
de0fb76
Merge the content work into the website
Paururo Oct 24, 2026
270edb9
Merge the front page work into the website
Paururo Oct 24, 2026
c3bc0f7
Close the loose ends of the merged website
Paururo Oct 24, 2026
f7c80e6
Redraw the site's and README's pictures from the merged site
Paururo Oct 24, 2026
7793b26
Answer the questions a first run raises, on every page
Paururo Oct 24, 2026
ee10b10
Rebuild the stylesheet on one scale of type, space and surfaces
Paururo Oct 24, 2026
aec8e2a
Compose the front page and the docs around their figures
Paururo Oct 24, 2026
3916555
Lead each row's name to its track and keep Figure 1 named on tablets
Paururo Oct 24, 2026
83d9e83
Redraw the README and social pictures in the new look
Paururo Oct 24, 2026
34f17e8
Keep the questions close to their title
Paururo Oct 24, 2026
2f793e9
Deepen the light theme's agree green for its tags
Paururo Oct 24, 2026
ed050d0
Fit the new look to small screens and settle its loose ends
Paururo Oct 24, 2026
fcd8065
Lay the pages on a graticule
Paururo Oct 24, 2026
ab7d5fd
List each page's contents at its side, and the front page's chapters …
Paururo Oct 24, 2026
81ed0ac
Keep the side contents in view and draw the grid with the page
Paururo Oct 24, 2026
9b7ddd0
Set type, columns and spacing on the system's scales
Paururo Oct 25, 2026
dc3b0b3
Give the controls one set of states and a finger's targets
Paururo Oct 25, 2026
ec10a65
Finish the missing page, the favicon and the header icons
Paururo Oct 25, 2026
1d0a726
Settle the figures' last labels, print and pages without script
Paururo Oct 25, 2026
befd40a
Hold the page still under the search and never leave it empty
Paururo Oct 25, 2026
7b56bc1
Keep copy, tabs, the builder and the footer switch in step
Paururo Oct 25, 2026
387c3e7
Paint a new theme at once and name the missing page's search
Paururo Oct 25, 2026
caccaed
Keep numbers, species and names together on a line
Paururo Oct 25, 2026
9ac1d96
Say each thing one way across the site
Paururo Oct 25, 2026
95bd289
Name pages and search results the way they read
Paururo Oct 25, 2026
c49c586
Polish the last details on every page
Paururo Oct 25, 2026
4dfeadb
Open the phone's contents on the section being read
Paururo Oct 25, 2026
b83016a
Let the phone's contents box take the whole column
Paururo Oct 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 36 additions & 33 deletions CHANGELOG.md

Large diffs are not rendered by default.

33 changes: 19 additions & 14 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
__Paula Ruiz-Rodriguez<sup>1</sup>__
__and Mireia Coscolla<sup>1</sup>__
<br>
<sub> 1. I<sup>2</sup>SysBio, University of Valencia-CSIC, FISABIO Joint Research Unit Infection and Public Health, Valencia, Spain </sub>
<sub> 1. I<sup>2</sup>SysBio, University of Valencia-CSIC, FISABIO Joint Research Unit Infection and Public Health, Paterna, Spain </sub>

<picture>
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/hero-dark.gif">
Expand Down Expand Up @@ -87,14 +87,14 @@ lines are what travels between them. On the website the map is

1. **Database setup** ([eggNOG](https://github.com/eggnogdb/)): builds the eggNOG database if it is not already there.
2. **MTBC lineage typing** ([pathotypr](https://github.com/PathoGenOmics-Lab/pathotypr)): assigns lineages from phylogenetic markers and renames the genomes accordingly. Turned off with `--skip_typing`.
3. **Genome annotation** ([Bakta](https://github.com/oschwengers/bakta)): CDS, tRNAs and other features, the baseline that AMAP corrects.
3. **Genome annotation** ([Bakta](https://github.com/oschwengers/bakta)): CDS, rRNAs and other features (tRNAs are skipped), the baseline that AMAP corrects.
4. **Protein alignment** ([miniprot](https://github.com/lh3/miniprot)): the reference proteome aligned onto each genome.
5. **CDS case classification**: every CDS sorted by how it relates to the reference (novel, perfect match, imperfect match, conflicting coordinates, or a reference gene the annotator missed).
6. **Annotation correction**: conflicts resolved, coordinates adjusted and every gene translated into a corrected gene set.
7. **Functional annotation** ([eggNOG-mapper](https://github.com/eggnogdb/eggnog-mapper)): COG, KEGG, GO, EC, PFAM and CAZy assignments, and the corrected GFF3 and GenBank.
8. **Gene duplication analysis**: duplication families per genome, plus homologous communities across genomes with network metrics.
9. **Pangenome analysis** ([pangene](https://github.com/lh3/pangene)): gene content compared across the whole set.
10. **Report**: a single self-contained HTML file covering all of the above.
10. **Reports**: `amap_report.html` in every run, and `final_report.html` after eggNOG, each one self-contained HTML file.

Mycobrowser's functional categories describe tuberculosis genes, so they are
skipped on their own when a custom reference is not a *Mycobacterium*; lineage
Expand All @@ -106,17 +106,20 @@ You need [Nextflow](https://www.nextflow.io/) 24.04 or newer and a container
engine. Nothing else: every tool lives in the AMAP image, and there is no need
to clone this repository.

Nextflow needs Java 17 or newer, and Conda brings both:

```bash
conda create -n nextflow-env
conda create -n nextflow-env -c conda-forge -c bioconda nextflow
conda activate nextflow-env
conda install -c bioconda nextflow
```

Check the installation. This annotates the reference genome bundled in the
container, so you need no data of your own:
Check the installation. The test profile annotates the H37Rv genome bundled in
the image, so you need no data of your own, and `--skip_functional_annotation`
leaves out eggNOG, so you need no database either:

```bash
nextflow run PathoGenOmics-Lab/AMAP -profile docker,test
nextflow run PathoGenOmics-Lab/AMAP -profile docker,test \
--skip_functional_annotation --outdir amap-test
```

Write a tab-separated sample sheet:
Expand Down Expand Up @@ -152,14 +155,16 @@ for the full set of profiles and options.

## Results

Everything lands under `--outdir`, `results/` by default. The three to open
first:
Everything lands under `--outdir`, `results/` by default. Lineage typing puts
the lineage in front of each sample's name, so `CDC1551` becomes `L4_CDC1551`,
and `--skip_typing` leaves the sample ID alone. The ones to open first:

| What | Where |
| :--- | :--- |
| The full interactive report | `results/final_report.html` |
| Corrected annotation, per sample | `results/AMAP/{sampleId}/*-AMAP.gff3` |
| Proteins for downstream tools | `results/AMAP/{sampleId}/*-AMAP.clean.faa` |
| Each genome and gene, question by question, in every run | `results/amap_report.html` |
| The full report, after a run with eggNOG | `results/final_report.html` |
| Corrected annotation, per sample, after eggNOG | `results/AMAP/{lineage}_{sampleId}/*-AMAP.gff3` |
| Proteins for downstream tools, after eggNOG | `results/AMAP/{lineage}_{sampleId}/*-AMAP.clean.faa` |

Alongside them, `results/pipeline_info/` holds `software_versions.yml` and
`params.yml`, which are what belongs in a methods section. Every directory is
Expand Down Expand Up @@ -194,7 +199,7 @@ See
author = {Ruiz-Rodriguez, Paula and Coscolla, Mireia},
doi = {10.5281/zenodo.8024446},
license = {GPL-3.0},
month = apr,
month = jul,
title = {{AMAP}},
url = {https://github.com/PathoGenOmics-Lab/AMAP},
version = {1.0.1},
Expand Down
7 changes: 7 additions & 0 deletions bin/report/header.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,10 @@
<img id="logo-right-fixed"
src="PGO.png"
alt="PathoGenOmics Lab">

<!-- The tab's icon, the website's, inlined like the logos: without one the
browser asks the server for /favicon.ico, which is not there. This
file goes in the body, and browsers read icons only from the head, so
the script moves it there. -->
<link id="amap-icon" rel="icon" type="image/png" href="data:image/png;base64,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">
<script>document.head.appendChild(document.getElementById("amap-icon"));</script>
Loading
Loading