diff --git a/.github/workflows/check_links.yml b/.github/workflows/check_links.yml new file mode 100644 index 00000000..ac55ef2a --- /dev/null +++ b/.github/workflows/check_links.yml @@ -0,0 +1,106 @@ +name: Check Links + +# Checks external links in content/ with lychee (settings in lychee.toml). +# - Pull requests: only links on lines the PR adds or modifies, so +# existing breakage doesn't block unrelated PRs. +# - Weekly / manual: all of content/, opening or updating a single +# "Broken links report" issue when anything fails. + +on: + pull_request: + paths: + - 'content/**/*.md' + - 'lychee.toml' + - '.github/workflows/check_links.yml' + schedule: + - cron: '0 6 * * 1' + workflow_dispatch: + +permissions: + contents: read + +env: + LYCHEE_VERSION: '0.24.2' + LYCHEE_SHA256: '1f4e0ef7f6554a6ed33dd7ac144fb2e1bbed98598e7af973042fc5cd43951c9a' + +jobs: + check_links: + runs-on: ubuntu-latest + permissions: + contents: read + issues: write + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install lychee + run: | + set -euo pipefail + tarball="lychee-x86_64-unknown-linux-gnu.tar.gz" + curl -sSfLO "https://github.com/lycheeverse/lychee/releases/download/lychee-v${LYCHEE_VERSION}/${tarball}" + echo "${LYCHEE_SHA256} ${tarball}" | sha256sum -c - + tar xzf "${tarball}" + sudo install lychee-x86_64-unknown-linux-gnu/lychee /usr/local/bin/lychee + lychee --version + + - name: Check links on added or modified lines + if: github.event_name == 'pull_request' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BASE_SHA: ${{ github.event.pull_request.base.sha }} + run: | + set -euo pipefail + # Copy just the added/modified lines of each changed file into + # added-lines/, so the report names the original file. + while IFS= read -r -d '' f; do + mkdir -p "added-lines/$(dirname "$f")" + git diff -U0 "$BASE_SHA"...HEAD -- "$f" \ + | { grep -E '^\+' || true; } | { grep -vE '^\+\+\+ ' || true; } | sed 's/^+//' \ + > "added-lines/$f" + done < <(git diff -z --name-only --diff-filter=d "$BASE_SHA"...HEAD -- 'content/**/*.md') + if [ ! -d added-lines ] || [ -z "$(find added-lines -type f -size +0)" ]; then + echo "No added or modified lines in content/ Markdown files." + exit 0 + fi + cd added-lines + lychee --config ../lychee.toml --root-dir "$PWD/content/en" --format markdown -o ../lychee-report.md . \ + || { cat ../lychee-report.md >> "$GITHUB_STEP_SUMMARY"; exit 1; } + cat ../lychee-report.md >> "$GITHUB_STEP_SUMMARY" + + - name: Check all links + if: github.event_name != 'pull_request' + id: full + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + set -uo pipefail + lychee --config lychee.toml --format markdown -o lychee-report.md 'content/**/*.md' + status=$? + cat lychee-report.md >> "$GITHUB_STEP_SUMMARY" + # 2 = broken links found; anything else non-zero is a lychee failure. + if [ $status -eq 2 ]; then + echo "broken=true" >> "$GITHUB_OUTPUT" + elif [ $status -ne 0 ]; then + exit $status + fi + + - name: Open or update broken links issue + if: steps.full.outputs.broken == 'true' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + set -euo pipefail + title="Broken links report" + { + echo "Found by the weekly [link check](${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}/actions/runs/${GITHUB_RUN_ID}). Settings and exclusions are in \`lychee.toml\`." + echo + cat lychee-report.md + } > issue-body.md + number=$(gh issue list --state open --search "in:title \"$title\"" --json number,title \ + --jq "map(select(.title == \"$title\"))[0].number // empty") + if [ -n "$number" ]; then + gh issue edit "$number" --body-file issue-body.md + else + gh issue create --title "$title" --body-file issue-body.md + fi diff --git a/content/en/about/collaborators.md b/content/en/about/collaborators.md index 804520fe..2ed126c0 100644 --- a/content/en/about/collaborators.md +++ b/content/en/about/collaborators.md @@ -5,7 +5,7 @@ weight: 500 ## Collaborators - mrchguLogo.png + mrchguLogo.png **The IIP3D server, Woolz software and client-side tools* are developed by** MRC Human Genetics Unit (MRC HGU): Richard Baldock, Nick Burton, Bill Hill, Zsolt Husz @@ -14,7 +14,7 @@ weight: 500 Visit the [EMAGE gene expression database](https://www.emouseatlas.org/emage/) to see other tools the MRC HGU have developed. - [![flybase.gif](https://v2.virtualflybrain.org/images/vfb/project/logos/flybase.gif)](https://www.flybase.org/) + [![flybase.gif](/images/logos/flybase.gif)](https://www.flybase.org/) **Expression data** is collaboratively curated by VFB and [FlyBase](https://www.flybase.org/) and stored and maintained at FlyBase. diff --git a/content/en/about/geppetto.md b/content/en/about/geppetto.md index 814bd6ba..fe2bd10b 100644 --- a/content/en/about/geppetto.md +++ b/content/en/about/geppetto.md @@ -24,7 +24,7 @@ For full details on the project see [Geppetto.org](https://geppetto.org) Build robust neuroscience applications. -| [Live demo](http://live.geppetto.org) | [Paper](https://paper.geppetto.org) | [Docs](https://docs.geppetto.org/en/latest/) | +| [Paper](https://doi.org/10.1098/rstb.2017.0380) | [Docs](https://docs.geppetto.org/en/latest/) | -------------------------------- @@ -117,7 +117,7 @@ Show me the code! Right! Geppetto is hosted on GitHub, every module has its own repository to provide flexible ways of branching individual components. For every module we have at least two branches, development and master. The development branch gets merged into master each monthly release. If you want to contribute you can either go straight to the code or reach out to us dropping an [email](mailto:info@geppetto.org), we will show you around and help you contribute in your favorite way! -| [Source code](https://git.geppetto.org) | [Docs](https://docs.geppetto.org) | [Development board](https://board.geppetto.org/) +| [Source code](https://github.com/openworm/org.geppetto) | [Docs](https://docs.geppetto.org) | [Issues](https://github.com/openworm/org.geppetto/issues) | -------------------------------- F.A.Q. @@ -147,7 +147,7 @@ For the full list of contributors see [here](https://github.com/orgs/openworm/te Besides the functional requirements, Geppetto's goal is to move away from the monolithic approach to software that is usually found in academic programming projects. -Computational neuroscience has produced software systems, including NEURON and Genesis, that are extremely useful for simulating systems of neurons that include biophysical details ([Brette et al, 2007](https://arxiv.org/abs/q-bio.NC/0611089)). A range of other algorithms have been devised in other areas of computational biology ([Barnes & Chu, 2010](https://doi.org/10.1007/978-1-84996-326-8)) for which simulators have been produced ([Takahashi, 2004](https://web.sfc.keio.ac.jp/%7Eshafi/takahashi-thesis.pdf)). Several investigations have pointed to the challenges in building a single system that integrates multiple simulation algorithms together into a single biological model ([Takahashi et al., 2002](https://doi.org/10.1109/MIS.2002.1039834), [Dada and Mendes, 2007](https://dx.doi.org/10.1007/978-3-642-02879-3), [Cornelis et al., 2012](https://doi.org/10.1371/journal.pone.0029018)). +Computational neuroscience has produced software systems, including NEURON and Genesis, that are extremely useful for simulating systems of neurons that include biophysical details ([Brette et al, 2007](https://arxiv.org/abs/q-bio.NC/0611089)). A range of other algorithms have been devised in other areas of computational biology ([Barnes & Chu, 2010](https://doi.org/10.1007/978-1-84996-326-8)) for which simulators have been produced ([Takahashi, 2004](https://web.archive.org/web/20220121101228/https://web.sfc.keio.ac.jp/~shafi/takahashi-thesis.pdf)). Several investigations have pointed to the challenges in building a single system that integrates multiple simulation algorithms together into a single biological model ([Takahashi et al., 2002](https://doi.org/10.1109/MIS.2002.1039834), [Dada and Mendes, 2007](https://dx.doi.org/10.1007/978-3-642-02879-3), [Cornelis et al., 2012](https://doi.org/10.1371/journal.pone.0029018)). Geppetto aims to address these scientific and engineering challenges. Geppetto's design leverages cutting edge software technologies. Its architecture and development follows industry standards. diff --git a/content/en/about/members.md b/content/en/about/members.md index b631dcbd..0354af5b 100644 --- a/content/en/about/members.md +++ b/content/en/about/members.md @@ -8,29 +8,29 @@ weight: 400 ## Current Team Members -- [Robert Court](https://www.inf.ed.ac.uk/people/staff/Robert_Court.html) (Lead DevOps) [1] +- [Robert Court](https://www.research.ed.ac.uk/en/persons/robert-court) (Lead DevOps) [1] - [Clare Pilgrim](https://orcid.org/0000-0002-1373-1705) (Ontology Editor/Curator) [2] - [Alex McLachlan](https://orcid.org/0000-0002-5214-8125) (Curator/UX Tester) [2] - [Gillian Millburn](https://orcid.org/0000-0002-1139-1145) (Senior Curator) [2] -- [Douglas Armstrong](https://www.inf.ed.ac.uk/people/staff/James_Armstrong.html) (Current Project PI) [1] +- [Douglas Armstrong](https://www.research.ed.ac.uk/en/persons/douglas-armstrong) (Current Project PI) [1] - [Nick Brown](https://www.pdn.cam.ac.uk/research/groups/flybase/flybase-group-members) (Current Project PI) [2] - [Greg Jefferis](http://www2.mrc-lmb.cam.ac.uk/group-leaders/h-to-m/gregory-jefferis/) (Current Project PI) [4,5] - [David Osumi-Sutherland](https://orcid.org/0000-0002-7073-9172) (Current Project Co-I) [3] -- [Marta Costa](https://www.neuroscience.cam.ac.uk/directory/profile.php?mcosta) (Current Project Co-I) [4] +- [Marta Costa](https://www.zoo.cam.ac.uk/people/marta-costa) (Current Project Co-I) [4] ## Past Team Members - Nestor Milyaev (2009-2012) [1] - Alex Holmes (2017-2019) [2] - [Aoife Larkin](https://orcid.org/0000-0003-4970-5901) (2017-2019) [2] -- [Huseyin Kir](https://www.ebi.ac.uk/people/person/huseyin-kir/) (2021-2024) [6] +- [Huseyin Kir](https://github.com/hkir-dev) (2021-2024) [6] - [Nico Matentzoglu](https://orcid.org/0000-0002-7356-1779) (2018-2022) [6] - Simon Reeve (2009-2011) [7] - Nicole Staudt (2015-2016) [7] - [Helen Parkinson](https://www.ebi.ac.uk/about/people/helen-parkinson) (Former PI) [6] -- [Cahir O'Kane](https://www.neuroscience.cam.ac.uk/directory/profile.php?cokane) (Former PI) [7] +- [Cahir O'Kane](https://www.gen.cam.ac.uk/people/cahir-okane) (Former PI) [7] - [Michael Ashburner](https://orcid.org/0000-0002-6962-2807) (Original PI and Grant Holder) [7] ### Affiliations @@ -49,11 +49,11 @@ MetaCell collaborates with Virtual Fly Brain on the development and enhancement --- - + - + @@ -61,11 +61,11 @@ MetaCell collaborates with Virtual Fly Brain on the development and enhancement - + - + diff --git a/content/en/docs/Resources/_index.md b/content/en/docs/Resources/_index.md index 56db11d0..291b17ea 100644 --- a/content/en/docs/Resources/_index.md +++ b/content/en/docs/Resources/_index.md @@ -55,3 +55,10 @@ Site for finding larval CNS driver lines via multiple query modes, including ana ### [EBI Single Cell Expression Atlas](https://www.ebi.ac.uk/gxa/sc/home) The Single Cell Expression Atlas at the European Bioinformatics Institute (EBI) provides access to single cell RNA-seq data from multiple species, including Drosophila. + +--- + +## Other Useful Links + +### [From Sight to Action](https://sight-to-action.netlify.app/) +Interactive explorer tracing a route through the Drosophila connectome from the R1–R6 photoreceptors to DNg13, a steering descending neuron. Shows EM-traced neuron shapes, statistical context (tested against chance) and a male/female comparison. diff --git a/content/en/docs/Tools/vfb-connect.md b/content/en/docs/Tools/vfb-connect.md index e99851ea..87e53e1a 100644 --- a/content/en/docs/Tools/vfb-connect.md +++ b/content/en/docs/Tools/vfb-connect.md @@ -46,5 +46,5 @@ The [VFB connect API overview](/docs/tutorials/apis/vfb_api_overview/) tutorial query surface in depth — term info, mapping between VFB and external IDs, connectivity and similarity queries. For the endpoints underneath it, see [VFB APIs](/docs/apis/). -Full documentation: [vfb_connect.readthedocs.io](https://vfb_connect.readthedocs.io/en/stable/). +Full documentation: [vfb-connect.readthedocs.io](https://vfb-connect.readthedocs.io/en/stable/). Source: [VirtualFlyBrain/VFB_connect](https://github.com/VirtualFlyBrain/VFB_connect). diff --git a/content/en/hosted/flybrainNDB.md b/content/en/hosted/flybrainNDB.md index 88269d81..c6ea3858 100644 --- a/content/en/hosted/flybrainNDB.md +++ b/content/en/hosted/flybrainNDB.md @@ -76,8 +76,6 @@ Important Notes: This resource is currently archived and maintained by Virtual Fly Brain (VFB). -Source code repository: https://github.com/VirtualFlyBrain/flybrain-ndb - ## Original Development © 2010 FLYBRAIN Neuron Database diff --git a/lychee.toml b/lychee.toml new file mode 100644 index 00000000..725eedff --- /dev/null +++ b/lychee.toml @@ -0,0 +1,26 @@ +# Configuration for lychee link checker (https://lychee.cli.rs) +# Used by .github/workflows/check_links.yml. Run locally with: +# lychee --config lychee.toml 'content/**/*.md' + +no_progress = true +max_concurrency = 32 +timeout = 30 +max_retries = 2 + +# Only check external web links. Hugo-style root-relative links such as +# /docs/apis/catmaid/ don't map onto files under content/, so they resolve to +# file:// URIs (via root_dir) and are skipped by this scheme filter. +scheme = ["http", "https"] +root_dir = "content/en" + +# 403: many publishers and news sites (and doi.org redirects to them) block +# automated requests; a missing page or invalid DOI still returns 404. +# 429: rate limited, not broken. +accept = ["100..=103", "200..=299", "403", "429"] + +exclude = [ + # LinkedIn returns 999 to all bots + '^https?://([a-z]+\.)?linkedin\.com', + # MCP endpoint only accepts POST, so GET/HEAD return 405 + '^https://vfb3-mcp\.virtualflybrain\.org', +] diff --git a/static/images/logos/CUnibig.png b/static/images/logos/CUnibig.png new file mode 100644 index 00000000..f9c33f30 Binary files /dev/null and b/static/images/logos/CUnibig.png differ diff --git a/static/images/logos/EMBL_EBI_logo_180pixels_RGB.png b/static/images/logos/EMBL_EBI_logo_180pixels_RGB.png new file mode 100644 index 00000000..2da721d1 Binary files /dev/null and b/static/images/logos/EMBL_EBI_logo_180pixels_RGB.png differ diff --git a/static/images/logos/InformaticsLogo.gif b/static/images/logos/InformaticsLogo.gif new file mode 100644 index 00000000..5df71b3f Binary files /dev/null and b/static/images/logos/InformaticsLogo.gif differ diff --git a/static/images/logos/MRC-LMB_logo.png b/static/images/logos/MRC-LMB_logo.png new file mode 100644 index 00000000..a91e48af Binary files /dev/null and b/static/images/logos/MRC-LMB_logo.png differ diff --git a/static/images/logos/flybase.gif b/static/images/logos/flybase.gif new file mode 100644 index 00000000..431fbe30 Binary files /dev/null and b/static/images/logos/flybase.gif differ diff --git a/static/images/logos/mrchguLogo.png b/static/images/logos/mrchguLogo.png new file mode 100644 index 00000000..52cf7c04 Binary files /dev/null and b/static/images/logos/mrchguLogo.png differ