From bae559771b373dd13cffee3771e0fb9d2b12d6c8 Mon Sep 17 00:00:00 2001 From: grufoony Date: Thu, 18 Sep 2025 18:56:37 +0200 Subject: [PATCH 1/2] Try to verify with google --- .github/DISCUSSION_TEMPLATE/general.yaml | 35 ++ .github/DISCUSSION_TEMPLATE/q-a.yaml | 35 ++ .github/ISSUE_TEMPLATE/config.yml | 8 + .github/ISSUE_TEMPLATE/issue.yaml | 38 ++ .github/user_pull_request_template.md | 4 + .github/workflows/build-preview.yaml | 35 +- .github/workflows/build-site.yaml | 1 + .github/workflows/first-time-setup.yaml | 13 +- .github/workflows/update-citations.yaml | 3 +- .github/workflows/update-url.yaml | 1 + .github/workflows/versioning.yaml | 145 ++++++++ CHANGELOG.md | 231 ++++++++++++ CITATION.cff | 4 +- _cite/cite.py | 8 +- _cite/plugins/orcid.py | 73 ++-- _cite/util.py | 13 +- _data/orcid.yaml | 2 +- blog/index.md | 21 ++ google1467f56321cc96e7.html | 1 + robots.txt | 12 + testbed.md | 444 +++++++++++++++++++++++ 21 files changed, 1082 insertions(+), 45 deletions(-) create mode 100644 .github/DISCUSSION_TEMPLATE/general.yaml create mode 100644 .github/DISCUSSION_TEMPLATE/q-a.yaml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/issue.yaml create mode 100644 .github/user_pull_request_template.md create mode 100644 .github/workflows/versioning.yaml create mode 100644 CHANGELOG.md create mode 100644 google1467f56321cc96e7.html create mode 100644 robots.txt create mode 100644 testbed.md diff --git a/.github/DISCUSSION_TEMPLATE/general.yaml b/.github/DISCUSSION_TEMPLATE/general.yaml new file mode 100644 index 00000000..66b2c499 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/general.yaml @@ -0,0 +1,35 @@ +body: + - type: checkboxes + attributes: + label: Checks + options: + - label: I have searched **[the docs](https://greene-lab.gitbook.io/lab-website-template-docs)**, [existing issues](https://github.com/greenelab/lab-website-template/issues), and [existing discussions](https://github.com/greenelab/lab-website-template/discussions) for answers first. + required: true + + - type: input + id: repo + attributes: + label: Link to your website repo + description: "In almost all cases, **we cannot help you if you don't provide this**." + placeholder: ex. https://github.com/greenelab/greenelab.com + validations: + required: true + + - type: input + id: version + attributes: + label: Version of Lab Website Template you are using + description: See your `CITATION.cff` file. + placeholder: ex. 1.0.0 + validations: + required: true + + - type: textarea + id: description + attributes: + label: Description + description: | + Describe your issue in as much detail as possible. For example: What happened? What did you expect to happen? How can we reproduce the problem? What browser are you seeing the problem in? + placeholder: Description + validations: + required: true diff --git a/.github/DISCUSSION_TEMPLATE/q-a.yaml b/.github/DISCUSSION_TEMPLATE/q-a.yaml new file mode 100644 index 00000000..66b2c499 --- /dev/null +++ b/.github/DISCUSSION_TEMPLATE/q-a.yaml @@ -0,0 +1,35 @@ +body: + - type: checkboxes + attributes: + label: Checks + options: + - label: I have searched **[the docs](https://greene-lab.gitbook.io/lab-website-template-docs)**, [existing issues](https://github.com/greenelab/lab-website-template/issues), and [existing discussions](https://github.com/greenelab/lab-website-template/discussions) for answers first. + required: true + + - type: input + id: repo + attributes: + label: Link to your website repo + description: "In almost all cases, **we cannot help you if you don't provide this**." + placeholder: ex. https://github.com/greenelab/greenelab.com + validations: + required: true + + - type: input + id: version + attributes: + label: Version of Lab Website Template you are using + description: See your `CITATION.cff` file. + placeholder: ex. 1.0.0 + validations: + required: true + + - type: textarea + id: description + attributes: + label: Description + description: | + Describe your issue in as much detail as possible. For example: What happened? What did you expect to happen? How can we reproduce the problem? What browser are you seeing the problem in? + placeholder: Description + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..7d0b7de5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: true +contact_links: + - name: 💬 Start a discussion + url: https://github.com/greenelab/lab-website-template/discussions + about: I need help, I have a question, or other discussion. + - name: 📚 Docs issue + url: https://github.com/greenelab/lab-website-template-docs/issues + about: I have a question or issue related to the template documentation. diff --git a/.github/ISSUE_TEMPLATE/issue.yaml b/.github/ISSUE_TEMPLATE/issue.yaml new file mode 100644 index 00000000..d8125550 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/issue.yaml @@ -0,0 +1,38 @@ +name: 🐞 Create an issue +description: I think I've discovered a bug, I want to request a feature/change, or other issue. + +body: + - type: checkboxes + attributes: + label: Checks + options: + - label: I have searched **[the docs](https://greene-lab.gitbook.io/lab-website-template-docs)**, [existing issues](https://github.com/greenelab/lab-website-template/issues), and [existing discussions](https://github.com/greenelab/lab-website-template/discussions) for answers first. + required: true + + - type: input + id: repo + attributes: + label: Link to your website repo + description: "In almost all cases, **we cannot help you if you don't provide this**." + placeholder: ex. https://github.com/greenelab/greenelab.com + validations: + required: true + + - type: input + id: version + attributes: + label: Version of Lab Website Template you are using + description: See your `CITATION.cff` file. + placeholder: ex. 1.0.0 + validations: + required: true + + - type: textarea + id: description + attributes: + label: Description + description: | + Describe your issue in as much detail as possible. For example: What happened? What did you expect to happen? How can we reproduce the problem? What browser are you seeing the problem in? + placeholder: Description + validations: + required: true diff --git a/.github/user_pull_request_template.md b/.github/user_pull_request_template.md new file mode 100644 index 00000000..00a0e711 --- /dev/null +++ b/.github/user_pull_request_template.md @@ -0,0 +1,4 @@ +This website is based on the Lab Website Template. +See its documentation for working with this site: + +https://greene-lab.gitbook.io/lab-website-template-docs diff --git a/.github/workflows/build-preview.yaml b/.github/workflows/build-preview.yaml index 7b4634f8..bef9dea8 100644 --- a/.github/workflows/build-preview.yaml +++ b/.github/workflows/build-preview.yaml @@ -22,9 +22,11 @@ jobs: steps: - name: Debug dump + if: runner.debug == '1' uses: crazy-max/ghaction-dump-context@v2 - name: Checkout branch contents + if: github.event.action != 'closed' uses: actions/checkout@v4 with: repository: ${{ github.event.pull_request.head.repo.full_name }} @@ -42,12 +44,6 @@ jobs: id: pages uses: actions/configure-pages@v4 - - uses: jwalton/gh-find-current-pr@master - if: github.event.action != 'closed' - id: pr - with: - state: all - - name: SSH debug if: runner.debug == '1' uses: mxschmitt/action-tmate@v3 @@ -55,12 +51,33 @@ jobs: - name: Build preview version of site if: github.event.action != 'closed' run: | - JEKYLL_ENV=production bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path || '' }}/${{ env.PREVIEWS_FOLDER }}/pr-${{ env.pr }}" - env: - pr: ${{ steps.pr.outputs.pr }} + JEKYLL_ENV=production bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path || '' }}/${{ env.PREVIEWS_FOLDER }}/pr-${{ github.event.number }}" - name: Commit preview to Pages branch + if: github.event.action != 'closed' uses: rossjrw/pr-preview-action@v1.4.7 with: source-dir: _site umbrella-dir: ${{ env.PREVIEWS_FOLDER }} + + - name: Checkout Pages branch + uses: actions/checkout@v4 + with: + ref: gh-pages + + - name: Clean up preview folders + uses: actions/github-script@v7 + with: + script: | + const { rm } = require("fs").promises; + const { PREVIEWS_FOLDER } = process.env; + const { owner, repo } = context.repo; + const prs = (await github.rest.pulls.list({ owner, repo, state: "closed" })).data; + for (const { number } of prs) + await rm(`${PREVIEWS_FOLDER}/pr-${number}`, { recursive: true, force: true }); + + - name: Commit changed files + uses: stefanzweifel/git-auto-commit-action@v5 + with: + branch: gh-pages + commit_message: "Clean up previews" diff --git a/.github/workflows/build-site.yaml b/.github/workflows/build-site.yaml index a2a292a0..ed2623fe 100644 --- a/.github/workflows/build-site.yaml +++ b/.github/workflows/build-site.yaml @@ -21,6 +21,7 @@ jobs: steps: - name: Debug dump + if: runner.debug == '1' uses: crazy-max/ghaction-dump-context@v2 - name: Checkout branch contents diff --git a/.github/workflows/first-time-setup.yaml b/.github/workflows/first-time-setup.yaml index 14beae84..a21d563e 100644 --- a/.github/workflows/first-time-setup.yaml +++ b/.github/workflows/first-time-setup.yaml @@ -14,6 +14,7 @@ jobs: steps: - name: Debug dump + if: runner.debug == '1' uses: crazy-max/ghaction-dump-context@v2 - name: Create Pages branch @@ -34,7 +35,7 @@ jobs: # clean slate, as if starting from orphan branch - name: Clear Pages branch - run: rm -rf * .github .docker .gitignore + run: rm -rf ./* .github .docker .gitignore # prevent GitHub from running Jekyll a second time after build - name: Make .nojekyll file @@ -70,8 +71,8 @@ jobs: run: | user="${{ github.repository_owner }}" description="An engaging 1-3 sentence description of your lab." - printf "\nUSER=${user}" >> $GITHUB_ENV - printf "\nDESCRIPTION=${description}" >> $GITHUB_ENV + printf "\nUSER=%s" "$user" >> "$GITHUB_ENV" + printf "\nDESCRIPTION=%s" "$description" >> "$GITHUB_ENV" - name: Personalize readme for user run: | @@ -80,12 +81,12 @@ jobs: ![on-pull-request](../../actions/workflows/on-pull-request.yaml/badge.svg) ![on-schedule](../../actions/workflows/on-schedule.yaml/badge.svg) - # ${{ env.USER }}'s Website + # %s's Website Visit **[website url](#)** 🚀 _Built with [Lab Website Template](https://greene-lab.gitbook.io/lab-website-template-docs)_ - " > README.md + " "${{ env.USER }}" > README.md - name: Personalize Jekyll config for user uses: actions/github-script@v7 @@ -119,4 +120,4 @@ jobs: - name: Commit changed files uses: stefanzweifel/git-auto-commit-action@v5 with: - commit_message: "Setup repo" + commit_message: "Set up repo" diff --git a/.github/workflows/update-citations.yaml b/.github/workflows/update-citations.yaml index b52d0dc1..dce46efd 100644 --- a/.github/workflows/update-citations.yaml +++ b/.github/workflows/update-citations.yaml @@ -29,6 +29,7 @@ jobs: steps: - name: Debug dump + if: runner.debug == '1' uses: crazy-max/ghaction-dump-context@v2 - name: Checkout branch contents @@ -38,7 +39,7 @@ jobs: repository: ${{ github.event.pull_request.head.repo.full_name }} ref: ${{ github.head_ref }} - - name: Setup Python + - name: Set up Python if: github.event.action != 'closed' uses: actions/setup-python@v5 with: diff --git a/.github/workflows/update-url.yaml b/.github/workflows/update-url.yaml index f42296d7..4ef1b542 100644 --- a/.github/workflows/update-url.yaml +++ b/.github/workflows/update-url.yaml @@ -20,6 +20,7 @@ jobs: steps: - name: Debug dump + if: runner.debug == '1' uses: crazy-max/ghaction-dump-context@v2 - name: Get Pages url diff --git a/.github/workflows/versioning.yaml b/.github/workflows/versioning.yaml new file mode 100644 index 00000000..3afab303 --- /dev/null +++ b/.github/workflows/versioning.yaml @@ -0,0 +1,145 @@ +name: versioning +run-name: versioning tasks + +on: + pull_request: + branches: + - main + push: + branches: + - main + +permissions: + contents: write + +jobs: + pull-request: + # only run on template itself, not user instance of template + if: | + github.repository == 'greenelab/lab-website-template' && + github.event_name == 'pull_request' + runs-on: ubuntu-latest + steps: + - name: Debug dump + if: runner.debug == '1' + uses: crazy-max/ghaction-dump-context@v2 + + - if: runner.debug == '1' + uses: mxschmitt/action-tmate@v3 + + - name: Checkout base branch contents + uses: actions/checkout@v4 + with: + ref: main + path: base + + - name: Checkout pr branch contents + uses: actions/checkout@v4 + with: + path: pr + + - name: Lint actions + run: | + bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash) + ./actionlint -color + shell: bash + working-directory: pr + + - name: Install packages + run: npm install yaml semver + + - name: Check version, date, changelog + uses: actions/github-script@v7 + with: + script: | + const { readFileSync } = require("fs"); + const { lte, valid } = require("semver"); + const { parse } = require("yaml"); + + // load and parse file contents + const { version: oldVersion, "date-released": oldDate } = parse( + readFileSync("base/CITATION.cff").toString() + ); + const { version: newVersion, "date-released": newDate } = parse( + readFileSync("pr/CITATION.cff").toString() + ); + const changelog = readFileSync("pr/CHANGELOG.md") + .toString() + .split(/^## /m) + .map((section) => { + const [heading, ...body] = section.split("\n"); + return [heading.trim(), body.join("\n").trim()]; + }); + + // check version + if (!valid(newVersion)) throw Error("Version not valid"); + if (lte(newVersion, oldVersion)) throw Error("Version not updated"); + + // check date + if (new Date(newDate).toISOString().split("T")[0] !== newDate) + throw Error("Date not valid"); + if (new Date(newDate) <= new Date(oldDate)) throw Error("Date not updated"); + + // check changelog + const newSection = changelog.find( + ([heading, body]) => + heading.includes(newVersion) && heading.includes(newDate) && body + ); + if (!newSection) throw Error("Changelog not updated or not valid"); + + push: + # only run on template itself, not user instance of template + if: | + github.repository == 'greenelab/lab-website-template' && + github.event_name == 'push' + runs-on: ubuntu-latest + steps: + - name: Debug dump + if: runner.debug == '1' + uses: crazy-max/ghaction-dump-context@v2 + + - name: Checkout branch contents + uses: actions/checkout@v4 + + - name: Install packages + run: npm install yaml semver + + - name: SSH debug + if: runner.debug == '1' + uses: mxschmitt/action-tmate@v3 + + - name: Get version and body + id: version + uses: actions/github-script@v7 + with: + script: | + const { readFileSync } = require("fs"); + const { parse } = require("yaml"); + + // load and parse file contents + const { version, "date-released": date } = parse( + readFileSync("CITATION.cff").toString() + ); + const changelog = readFileSync("CHANGELOG.md") + .toString() + .split(/^## /m) + .map((section) => { + const [heading, ...body] = section.split("\n"); + return [heading.trim(), body.join("\n").trim()]; + }); + + // find changelog body for version + const [, body = ""] = + changelog.find( + ([heading]) => heading.includes(version) && heading.includes(date) + ) || []; + + return { version, body }; + + - name: Create GitHub release + uses: ncipollo/release-action@v1.14.0 + with: + commit: ${{ github.ref }} + tag: v${{ fromJson(steps.version.outputs.result).version }} + name: v${{ fromJson(steps.version.outputs.result).version }} + body: ${{ fromJson(steps.version.outputs.result).body }} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..d6f1cba2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,231 @@ +# Changelog + +Reference: common-changelog.org + +## 1.3.7 - 2025-07-31 + +### Changed + +- Improve cleanup of PR preview folders in gh-pages branch. +- Only run debug dump in debug mode to speed up workflow runs. + +## 1.3.6 - 2025-07-30 + +### Changed + +- Improve behavior and flexibility of ORCID cite plugin. + +## 1.3.5 - 2025-05-12 + +### Changed + +- Fix workflow bug where PR previews on GitHub Actions have broken styles/links/etc. +- Fix tags component relative link bug. +- Make Actions workflows a bit more robust. + +## 1.3.4 - 2025-02-03 + +### Changed + +- Fix section component parsing bug. + +## 1.3.3 - 2025-01-25 + +### Changed + +- Citation process logging enhancements. + +### Added + +- Add support for multiple authors in blog posts. +- Add GitHub Actions workflow status badges to readme. + +## 1.3.2 - 2025-01-06 + +### Changed + +- Misc enhancements and bug fixes. + +## 1.3.1 - 2024-11-11 + +### Changed + +- Update and improve workflows for building site and citations. +- Escape user inputs better in rare edge cases. + +## 1.3.0 - 2024-08-16 + +### Changed + +- List component `filters` parameter changed to `filter` and now takes any Ruby expression instead of the existing custom syntax. + Example: `filters="publisher: bioRxiv, date: ^2020"` becomes `filter="publisher == 'bioRxiv' and date =~ /^2020/"`. + See docs for more info. +- Fix rare bug where data (e.g. a paper title) containing certain characters (e.g. a double quote) can mess up HTML rendering. +- Fix "first time setup" workflow bug. +- Tweak GitHub Actions debugging/logging. + +### Added + +- Styling for `
` HTML element. + +## 1.2.2 - 2024-06-05 + +### Added + +- Add `affiliation` member portrait field. + +### Changed + +- Change order and type of preferred ids from ORCID API. +- Expand list of supported Manubot identifiers and thus keep ORCID API details less often. +- Simplify portrait component under-the-hood. +- Make tag component de-duplication consistent with search plugin de-duplication. + +## 1.2.1 - 2024-04-01 + +### Changed + +- Minor bug fixes in cite process and sitemap generation. + +## 1.2.0 - 2024-03-08 + +### Changed + +- Update all GitHub Actions to fix "Node v16 deprecated" warnings. +- Sources that Manubot doesn't know how to cite (e.g. wosuid:12345) are now ignored by default if they're from metasources. +- Fix bug where passing tags to tags component manually doesn't work. +- Fix bug in citation (and other) components when `lookup` is blank. +- Fix nested tables bug. +- Dark mode tweaks. +- Various CSS tweaks and fixes. + +### Added + +- Add `image` param to support blog post thumbnails. +- Add `html-proofer` plugin that checks for broken images/links/etc. +- Add `remove` flag to remove a source from a metasource. + +## 1.1.6 - 2023-10-06 + +### Changed + +- Use latest minor versions of Python packages in auto-cite script. + +## 1.1.5 - 2023-05-19 + +### Changed + +- Fix ORCID plugin bug and other cite process tweaks. + +## 1.1.4 - 2023-04-28 + +### Changed + +- Fix ORCID plugin and other cite process bugs. + +## 1.1.3 - 2023-04-20 + +### Changed + +- Fix first-time-setup mv bug. +- Fix citation, float, and portrait component CSS. +- Filter and trim citation info fields. + +## 1.1.2 - 2023-04-11 + +### Changed + +- Fix first-time-setup rm bug. + +## 1.1.1 - 2023-04-06 + +### Changed + +- Change member profile page from col layout to float. +- Fix first time setup. Preserve config formatting and comments. +- Improve Docker cite process behavior. +- Fix post excerpt component start/end markers and special search attr chars. +- Fix misc CSS. + +### Added + +- Add show-title and show-subtitle site config options. +- Include site subtitle in description meta tag. +- Add user pull request template. +- Add title and link fallbacks to citation component. + +## 1.1.0 - 2023-03-17 + +Add alert component, Docker support, accessibility fixes. + +### Changed + +- Fix Lighthouse accessibility issues. +- De-href components when link isn't provided (no hand cursor icon on hover or nav on click). +- In search script, limit highlights by total count instead of char length. +- Grid and link style tweaks. +- Take ORCID icon from Font Awesome. +- Misc bug fixes in tags script, float component. + +### Added + +- Add Docker configuration and scripts for local previewing. +- Add alert component and types. +- Role icon in portrait component hoisted to top left. + +## 1.0.0 - 2023-02-28 + +First official release. + +High-level comparison with pre-releases: + +- Simpler configuration. +- More automation, less setup. +- More customization and flexibility. +- Redesigned components. +- New docs. +- Complete rewrite. +- Culmination of years of feedback. + +### Changed + +- Template is no longer limited to GitHub Pages white-listed Jekyll plugins. Any plugins possible. +- Pull request previews happen right within GitHub instead of needing Netlify. +- Better versioning. `CITATION.cff` file now source of truth for version, and tags/releases enforced. +- Citation-related files in `/_data` must now be named prefixed with the cite plugin they are to be run with, e.g. `sources-2020.yaml` or `orcid-students.yaml`. +- Folder renames for clarity and for better separation of template and user content: `/auto-cite` → `/_cite`, `/css` → `/_styles`, `/js` → `/_scripts`. +- Rename "Tools" page to "Projects" to be more clear and general purpose. +- Rename `extra-links` to `buttons` in `sources.yaml` files. +- Rename `theme.scss` to `-theme.scss`. +- Rename/repurpose components: link → button, two-col → cols, gallery → grid. +- Combine "link" and "role" data lists into single `types.yaml` map. +- Redesign components, change parameters and behavior. +- Update Font Awesome icon names from v5 to v6. +- Change placeholder text, images, and other images. +- Use CSS variables instead of Sass variables. +- Simplify caching method in cite process. +- Simplify Liquid code by including custom Ruby plugins. +- Simplify styles and scripts. + +### Added + +- New docs at greene-lab.gitbook.io/lab-website-template-docs. +- Add automations for first time setup and URL change. +- Write PubMed and Google Scholar automatic citation plugins. +- Automatic citations through GitHub Actions should now work from (most) forks. +- Add optional description and type params for citations. +- Add periodic cite process run that opens a pull request. +- List component filters can now accept arbitrary regex. +- Add light/dark mode toggle. +- Pre-install selection of useful Jekyll plugins, namely Jekyll Spaceship. +- Add author portrait and updated date for blog posts. +- Add richer metadata for SEO. +- Google Fonts link determined automatically from theme file. + +### Removed + +- Remove options from `_config.yaml` to simplify configuration: `baseurl`, `auto-cite`, `logo`. +- Remove `/favicons` folder, hardcode files for logo, icon, and share in `/images`. +- Remove `palettes.scss` and `mixins.scss`. +- Remove banner component (same thing can be achieved with full width section and figure components). +- Remove role component. Combine with portrait component. diff --git a/CITATION.cff b/CITATION.cff index a63171ea..096861fb 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -1,8 +1,8 @@ # citation metadata for the template itself title: "Lab Website Template" -version: 1.3.4 -date-released: 2025-02-03 +version: 1.3.7 +date-released: 2025-07-31 url: "https://github.com/greenelab/lab-website-template" authors: - family-names: "Rubinetti" diff --git a/_cite/cite.py b/_cite/cite.py index e277722d..4f11f957 100644 --- a/_cite/cite.py +++ b/_cite/cite.py @@ -135,15 +135,15 @@ # source id _id = get_safe(source, "id", "").strip() - # Manubot doesn't work without an id + # manubot doesn't work without an id if _id: log("Using Manubot to generate citation", indent=1) try: - # run Manubot and set citation + # run manubot and set citation citation = cite_with_manubot(_id) - # if Manubot cannot cite source + # if manubot cannot cite source except Exception as e: plugin = get_safe(source, "plugin", "") file = get_safe(source, "file", "") @@ -151,7 +151,7 @@ if plugin == "sources.py": log(e, indent=3, level="ERROR") errors.append(f"Manubot could not generate citation for source {_id}") - # otherwise, if from metasource (id retrieved from some third-party API), just warn + # otherwise, if from metasource (id retrieved from some third-party api), just warn else: log(e, indent=3, level="WARNING") warnings.append( diff --git a/_cite/plugins/orcid.py b/_cite/plugins/orcid.py index 2f7d04de..dc5e9260 100644 --- a/_cite/plugins/orcid.py +++ b/_cite/plugins/orcid.py @@ -1,7 +1,7 @@ import json from urllib.request import Request, urlopen from util import * -from manubot.cite.handlers import prefix_to_handler as manubot_prefixes +from manubot.cite.handlers import prefix_to_handler as manubot_citable def main(entry): @@ -33,36 +33,67 @@ def query(_id): # list of sources to return sources = [] - # go through response structure and pull out ids e.g. doi:1234/56789 + # filter id by some criteria. return true to accept, false to reject. + def filter_id(_id): + # is id of certain "relationship" type + relationships = ["self", "version-of", "part-of"] + if not get_safe(_id, "external-id-relationship", "") in relationships: + return False + + id_type = get_safe(_id, "external-id-type", "") + + # is id of certain type + # types = ["doi"] + # if id_type not in types: + # return False + + # is id citable by manubot + if id_type not in manubot_citable: + return False + + return True + + # prefer some ids over others by some criteria. return lower number to prefer more. + def sort_id(_id): + id_type = get_safe(_id, "external-id-type", "") + types = [ + "doi", + # "arxiv", + # "url", + ] + return index_of(types, id_type) + + # go through each source for work in response: - # get list of ids + # list of ids in source ids = [] + + # use "work-summary" field instead of top-level "external-ids" to reflect author-selected preferred sources for summary in get_safe(work, "work-summary", []): ids = ids + get_safe(summary, "external-ids.external-id", []) - # find first id of particular "relationship" type - _id = next( - ( - id - for id in ids - if get_safe(id, "external-id-relationship", "") - in ["self", "version-of", "part-of"] - ), - ids[0] if len(ids) > 0 else None, - ) - - if _id == None: - continue - - # get id and id-type from response + # filter ids by criteria + ids = list(filter(filter_id, ids)) + # sort ids by criteria + ids.sort(key=sort_id) + + # pick first available id + _id = ids[0] if len(ids) > 0 else None + + # id parts id_type = get_safe(_id, "external-id-type", "") id_value = get_safe(_id, "external-id-value", "") # create source - source = {"id": f"{id_type}:{id_value}"} + source = {} + + # if id citable by manubot + if id_type and id_value and id_type in manubot_citable: + # id to cite with manubot + source = {"id": f"{id_type}:{id_value}"} - # if not an id type that Manubot can cite, keep citation details - if id_type not in manubot_prefixes: + # if not citable by manubot, keep citation details from orcid + else: # get summaries summaries = get_safe(work, "work-summary", []) diff --git a/_cite/util.py b/_cite/util.py index 5ccc8de7..b0f1f467 100644 --- a/_cite/util.py +++ b/_cite/util.py @@ -85,6 +85,17 @@ def get_safe(item, path, default=None): return item +def index_of(_list, value, fallback=float("inf")): + """ + index of, with fallback + """ + + try: + return _list.index(value) + except ValueError: + return fallback + + def list_of_dicts(data): """ check if data is list of dicts @@ -179,7 +190,7 @@ def cite_with_manubot(_id): generate citation data for source id with Manubot """ - # run Manubot + # run manubot try: commands = ["manubot", "cite", _id, "--log-level=WARNING"] output = subprocess.Popen(commands, stdout=subprocess.PIPE).communicate() diff --git a/_data/orcid.yaml b/_data/orcid.yaml index 3faef8d2..b5616c24 100644 --- a/_data/orcid.yaml +++ b/_data/orcid.yaml @@ -1,2 +1,2 @@ - orcid: 0000-0002-9633-0017 -- orcid: 0000-0003-0316-3449 \ No newline at end of file +- orcid: 0000-0003-0316-3449 diff --git a/blog/index.md b/blog/index.md index e69de29b..b86f3598 100644 --- a/blog/index.md +++ b/blog/index.md @@ -0,0 +1,21 @@ +--- +title: Blog +nav: + order: 4 + tooltip: Musings and miscellany +--- + +# {% include icon.html icon="fa-solid fa-feather-pointed" %}Blog + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + +{% include section.html %} + +{% include search-box.html %} + +{% include tags.html tags=site.tags %} + +{% include search-info.html %} + +{% include list.html data="posts" component="post-excerpt" %} diff --git a/google1467f56321cc96e7.html b/google1467f56321cc96e7.html new file mode 100644 index 00000000..1e4b629c --- /dev/null +++ b/google1467f56321cc96e7.html @@ -0,0 +1 @@ +google-site-verification: google1467f56321cc96e7.html \ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 00000000..9ed458bd --- /dev/null +++ b/robots.txt @@ -0,0 +1,12 @@ +User-agent: * +Allow: / + +# Sitemap location +Sitemap: https://physycom.github.io/sitemap.xml + +# Disallow access to admin/private areas (add if you have any) +# Disallow: /admin/ +# Disallow: /private/ + +# Allow all search engines to crawl the site +# This is a public academic/research website \ No newline at end of file diff --git a/testbed.md b/testbed.md new file mode 100644 index 00000000..1877abfe --- /dev/null +++ b/testbed.md @@ -0,0 +1,444 @@ +--- +title: Testbed +header: https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg/1024px-Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg +footer: https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg/1024px-Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg +header-dark: false +footer-dark: false +--- + +# Testbed + +{% include section.html %} + +# Basic formatting + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. +Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. + +[External link](https://some-website.org/) + +[Internal link](team) + +_italic text_ + +**bold text** + +~~strike-through text~~ + +
+
+Text with extra blank lines above and below +
+
+ +- list item a +- list item b +- list item c + +1. ordered list item 1 +1. ordered list item 2 +1. ordered list item 3 + + + +1. top level list item + - nested list item + 1. even deeper nested list item + +Plain image: + +![plain image](/images/photo.jpg) + +# Heading 1 + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + +## Heading 2 + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + +### Heading 3 + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + +#### Heading 4 + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + +##### Heading 5 + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + +###### Heading 6 + +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + +--- + +| TABLE | Game 1 | Game 2 | Game 3 | Total | +| :---- | :----: | :----: | :----: | ----: | +| Anna | 144 | 123 | 218 | 485 | +| Bill | 90 | 175 | 120 | 385 | +| Cara | 102 | 214 | 233 | 549 | + +> It was the best of times it was the worst of times. +> It was the age of wisdom, it was the age of foolishness. +> It was the spring of hope, it was the winter of despair. + +```javascript +// some code with syntax highlighting +const popup = document.querySelector("#popup"); +popup.style.width = "100%"; +popup.innerText = + "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."; +``` + +This sentence has `inline code`, useful for making references to variables, packages, versions, etc. within a sentence. + +Lorem ipsum dolor sit amet. +{:.left} +Consectetur adipiscing elit. +{:.center} +Sed do eiusmod tempor incididunt. +{:.right} + +
+Hidden content + +**Lorem** _ipsum_ [dolor sit amet](), consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + +
+ +{% include section.html %} + +# Jekyll Spaceship + +| Stage | Direct Products | ATP Yields | +| -----------------: | --------------: | ---------: | +| Glycolysis | 2 ATP | | +| ^^ | 2 NADH | 3--5 ATP | +| Pyruvaye oxidation | 2 NADH | 5 ATP | +| Citric acid cycle | 2 ATP | | +| ^^ | 6 NADH | 15 ATP | +| ^^ | 2 FADH | 3 ATP | +| 30--32 ATP | | | + +$ a \* b = c ^ b $ + +$ 2^{\frac{n-1}{3}} $ + +$ \int_a^b f(x)\,dx. $ + +```mermaid! +pie title Pets adopted by volunteers + "Dogs" : 386 + "Cats" : 85 + "Rats" : 35 +``` + +{% include section.html %} + +# Components + +## Section + +{% include section.html background="images/background.jpg" %} + +Section, `background` + +{% include section.html dark=true %} + +Section, `dark=true` + +{% include section.html background="images/background.jpg" dark=true %} + +Section, `background` `dark=true` + +{% include section.html size="wide" %} + +Section, `size=wide` + +{% include section.html size="full" %} + +Section, `size=full` w/ figure + +{% include figure.html image="https://images.rawpixel.com/image_1000/cHJpdmF0ZS9sci9pbWFnZXMvd2Vic2l0ZS8yMDIyLTA1L2ZsMjYyODgwODcyMjYtaW1hZ2VfMS1rb3k1Zzkxay5qcGc.jpg" link="team" width="100%" %} + +{% include section.html %} + +## Figure + +{% include figure.html image="images/icon.png" %} +{% include figure.html image="images/icon.png" caption="_Lorem_ **ipsum**." %} +{% include figure.html image="images/icon.png" caption="_Lorem_ **ipsum**. `px` width" width="400px" %} +{% include figure.html image="images/icon.png" caption="_Lorem_ **ipsum**. `%` width" link="team" width="50%" %} +{% include figure.html image="images/icon.png" caption="_Lorem_ **ipsum**. `px` height" link="team" height="200px" %} +{% include figure.html image="images/fallback.svg" caption="_Lorem_ **ipsum**. `px` width, svg" link="team" width="400px" %} +{% include figure.html image="images/fallback.svg" caption="_Lorem_ **ipsum**. `%` width, svg" link="team" width="50%" %} +{% include figure.html image="images/fallback.svg" caption="_Lorem_ **ipsum**. `px` height, svg" link="team" height="200px" %} + +{% include section.html %} + +## Button + +{% include button.html type="github" %} +{% include button.html type="github" style="bare" %} +{% include button.html type="github" icon="fa-brands fa-youtube" text="Override Text" tooltip="Override tooltip" %} +{% include button.html type="github" text="" style="bare" %} +{% include button.html type="github" text="" link="github-handle" %} + +{% include section.html %} + +## Icon + +{% include icon.html icon="fa-solid fa-bacteria" %} +{% include icon.html icon="fa-solid fa-virus" %} +{% include icon.html icon="fa-solid fa-flask" %} +{% include icon.html icon="manubot.svg" %} + +{% include icon.html icon="fa-brands fa-github" %} Lorem +{% include icon.html icon="fa-solid fa-microscope" %} Ipsum +{% include icon.html icon="manubot.svg" %} Dolor + +{% include section.html %} + +## Feature + +{% capture text %} +_Lorem_ **ipsum** dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +{% endcapture%} +{% include feature.html image="images/icon.png" link="team" title="Title" text=text %} +{% include feature.html image="images/icon.png" title="Title" text=text flip=true %} +{% include feature.html link="team" %} + +{% include section.html %} + +## List + +### List citations + +{% include list.html data="citations" component="citation" %} + +--- + +### List projects + +{% include list.html data="projects" component="card" %} + +--- + +### List team members + +{% include list.html data="members" component="portrait" %} + +--- + +### List blog posts + +{% include list.html data="posts" component="post-excerpt" %} + +{% include section.html %} + +## Citation + +{% include citation.html lookup="doi:10.1016/j.csbj.2020.05.017" %} +{% include citation.html lookup="Open collaborative writing" style="rich" %} +{% include citation.html title="Manual title" authors="Manual authors" %} + +{% include section.html %} + +## Card + +{% include card.html image="images/icon.png" link="https://nasa.gov/" title="A Large Card" subtitle="A cool card" description="A cool description" tooltip="A cool tooltip" tags="manual tag" repo="greenelab/lab-website-template" %} +{% include card.html image="images/icon.png" title="A Small Card" subtitle="A cool card" description="_Lorem_ **ipsum**" tooltip="A cool tooltip" tags="manual tag" repo="greenelab/lab-website-template" style="small" %} + +{% include section.html %} + +## Portrait + +{% include portrait.html lookup="jane-smith" %} +{% include portrait.html lookup="john-doe" style="small" %} +{% include portrait.html name="Manual name" style="small" %} +{% include portrait.html style="small" %} + +{% include section.html %} + +## Post Excerpt + +{% include post-excerpt.html lookup="example-post-1" %} +{% include post-excerpt.html title="Manual title" author="Manual author" date="2020-02-20" last_modified_at="" %} + +{% include section.html %} + +## Alert + +{% capture lorem %} +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +{% endcapture %} +{% capture content %}**Tip** {{ lorem }}{% endcapture %} +{% include alert.html type="tip" content=content %} +{% capture content %}**Help** {{ lorem }}{% endcapture %} +{% include alert.html type="help" content=content %} +{% capture content %}**Info** {{ lorem }}{% endcapture %} +{% include alert.html type="info" content=content %} +{% capture content %}**Success** {{ lorem }}{% endcapture %} +{% include alert.html type="success" content=content %} +{% capture content %}**Warning** {{ lorem }}{% endcapture %} +{% include alert.html type="warning" content=content %} +{% capture content %}**Error** {{ lorem }}{% endcapture %} +{% include alert.html type="error" content=content %} + +{% include section.html %} + +## Tags + +{% include tags.html tags="ovarian cancer, dataset, gene expression" repo="greenelab/lab-website-template" link="blog" %} + +{% include section.html %} + +## Float + +### Figures + +{% capture content %} +{% include figure.html image="images/icon.png" caption="Caption" width="200px" %} +{% endcapture %} +{% include float.html content=content %} +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +{% include float.html clear=true %} + +### Code + +{% capture content %} + +```javascript +const test = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."; +``` + +{% endcapture %} +{% include float.html content=content flip=true %} +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Nulla facilisi etiam dignissim diam quis. Id aliquet lectus proin nibh nisl condimentum id venenatis a. Tristique magna sit amet purus gravida quis blandit turpis cursus. Ultrices eros in cursus turpis massa tincidunt dui ut ornare. A cras semper auctor neque vitae tempus quam pellentesque nec. At tellus at urna condimentum mattis pellentesque. Ipsum consequat nisl vel pretium. Ultrices mi tempus imperdiet nulla malesuada pellentesque elit eget gravida. Integer vitae justo eget magna fermentum iaculis eu non diam. Mus mauris vitae ultricies leo integer malesuada nunc vel. Leo integer malesuada nunc vel risus. Ornare arcu odio ut sem nulla pharetra. Purus semper eget duis at tellus at urna condimentum. Enim neque volutpat ac tincidunt vitae semper quis lectus. + +{% include section.html %} + +## Grid + +### Regular + +With Markdown images + +{% capture content %} +![image](https://journals.plos.org/ploscompbiol/article/figure/image?size=inline&id=info:doi/10.1371/journal.pcbi.1007128.g001&rev=2) + +![image](https://ars.els-cdn.com/content/image/1-s2.0-S2001037020302804-gr1.jpg) + +![image](https://iiif.elifesciences.org/lax:32822%2Felife-32822-fig8-v3.tif/full/863,/0/default.webp) + +![image]({{ "/images/icon.png" | relative_url }}) + +![image]({{ "/images/icon.png" | relative_url }}) + +![image]({{ "/images/icon.png" | relative_url }}) +{% endcapture %} +{% include grid.html content=content %} + +### Square + +With figure components + +{% capture content %} +{% include figure.html image="https://journals.plos.org/ploscompbiol/article/figure/image?size=inline&id=info:doi/10.1371/journal.pcbi.1007128.g001&rev=2" %} +{% include figure.html image="https://ars.els-cdn.com/content/image/1-s2.0-S2001037020302804-gr1.jpg" %} +{% include figure.html image="https://iiif.elifesciences.org/lax:32822%2Felife-32822-fig8-v3.tif/full/863,/0/default.webp" %} +{% include figure.html image="images/icon.png" %} +{% include figure.html image="images/icon.png" %} +{% include figure.html image="images/icon.png" %} +{% endcapture %} +{% include grid.html style="square" content=content %} + +### Grid of citations + +{% capture content %} +{% include list.html data="citations" component="citation" style="rich" %} +{% endcapture %} +{% include grid.html content=content %} + +### Grid of blog posts + +{% capture content %} +{% include list.html data="posts" component="post-excerpt" %} +{% endcapture %} +{% include grid.html content=content %} + +{% include section.html %} + +## Cols + +### Text + +{% capture col1 %} +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +{% endcapture %} +{% capture col2 %} +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Nulla facilisi etiam dignissim diam quis. Id aliquet lectus proin nibh nisl condimentum id venenatis a. +{% endcapture %} +{% capture col3 %} +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Nulla facilisi etiam dignissim diam quis. Id aliquet lectus proin nibh nisl condimentum id venenatis a. Tristique magna sit amet purus gravida quis blandit turpis cursus. Ultrices eros in cursus turpis massa tincidunt dui ut ornare. A cras semper auctor neque vitae tempus quam pellentesque nec. At tellus at urna condimentum mattis pellentesque. Ipsum consequat nisl vel pretium. Ultrices mi tempus imperdiet nulla malesuada pellentesque elit eget gravida. Integer vitae justo eget magna fermentum iaculis eu non diam. Mus mauris vitae ultricies leo integer malesuada nunc vel. Leo integer malesuada nunc vel risus. Ornare arcu odio ut sem nulla pharetra. Purus semper eget duis at tellus at urna condimentum. Enim neque volutpat ac tincidunt vitae semper quis lectus. +{% endcapture %} +{% include cols.html col1=col1 col2=col2 col3=col3 %} + +### Images + +{% capture col1 %} +{% include figure.html image="images/icon.png" caption="Fig. 1a" %} +Lorem _ipsum_ dolor **sit** amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +{% endcapture %} +{% capture col2 %} +{% include figure.html image="images/icon.png" caption="Fig. 1b" %} +Lorem _ipsum_ dolor **sit** amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +{% endcapture %} +{% capture col3 %} +{% include figure.html image="images/icon.png" caption="Fig. 1c" %} +Lorem _ipsum_ dolor **sit** amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +{% endcapture %} +{% include cols.html col1=col1 col2=col2 col3=col3 %} + +### Code + +{% capture col1 %} + +```javascript +const test = "Lorem ipsum dolor sit amet"; +``` + +{% endcapture %} +{% capture col2 %} + +```javascript +const test = "Lorem ipsum dolor sit amet"; +``` + +{% endcapture %} +{% capture col3 %} + +```javascript +const test = "Lorem ipsum dolor sit amet"; +``` + +{% endcapture %} +{% include cols.html col1=col1 col2=col2 col3=col3 %} + +{% include section.html %} + +## Search + +{% include search-box.html %} +{% include search-info.html %} + +{% include section.html %} + +## Site Search + +{% include site-search.html %} From 0bbab4b1ec179f7c9933b9ebe74732d2ce57d36d Mon Sep 17 00:00:00 2001 From: Grufoony <64806874+Grufoony@users.noreply.github.com> Date: Fri, 19 Sep 2025 13:59:18 +0000 Subject: [PATCH 2/2] Update citations --- .../6e/5fb0542529ea5afb14f2a1ac0a93.val} | Bin _cite/.cache/cache.db | Bin 86016 -> 90112 bytes _data/citations.yaml | 74 ++++++++++++++++++ 3 files changed, 74 insertions(+) rename _cite/.cache/{28/eb/5225479c68793ecebd45b0fa0130.val => 32/6e/5fb0542529ea5afb14f2a1ac0a93.val} (100%) diff --git a/_cite/.cache/28/eb/5225479c68793ecebd45b0fa0130.val b/_cite/.cache/32/6e/5fb0542529ea5afb14f2a1ac0a93.val similarity index 100% rename from _cite/.cache/28/eb/5225479c68793ecebd45b0fa0130.val rename to _cite/.cache/32/6e/5fb0542529ea5afb14f2a1ac0a93.val diff --git a/_cite/.cache/cache.db b/_cite/.cache/cache.db index 5990c6e1c96a5e2507dafe06eb59ff249669704b..d89042fe6b89b4419b0f5078c669efe1cfe67c48 100644 GIT binary patch delta 3906 zcmb`Ke{36P8OQIe`}&M?gYUr^d4)KP3s{Sw+@lUY2ZY zi&MHk(7Wz59_mmZmqbk%S7$PON|7^iPVFg*Iu}?6Qu>*Iw|5c`v^Dnd9G`+aVPFi_ zT}Ng9{Lw5ZuP75UmP18y3`^*`?14ib9bE>E7P@xC@IFp^t`N7|MO zjFfutQ2m{>m>ExsFlh8~duLm>C29bjxRW#aLA6hPBXwhBw0fa-b&4VSpdKd@g?^eFe_Zn(wl_4u_`iB565_Z; zM7Aj+97|gw!ZFDb0S!w;IJVak5svj+BA{W32*);ABB0SCB6go8qJRDd6mf|C7f9g6Tw9!migYykhpsU!N&U%cQ68@G&JtMh?Z!>(ms z`Vm2N&pmKh|M>j*-Ea}!&e&AH8a6zWM3@b17Xp!FJQx{ZBkZuiMYv=~Mu5XT3( z;jn+2lNR>w0k2b@&W@jAHgFcB?rxWe_wg=p7X4OBDNs9GIz$l|)*h&qwzfaV5SNKd zS@-?e%fLC3wzVFx{>=pEa(5-|$Q+Mf3| zI26b*ny#7co_P} zD!=xEUBFw4_N@A`!C*MDJs1f>w_}xn7i_H**8?|LUy81+6g|K@QV%W|9*PXIEW;Wv zB7<=IiPaQ^h6mX}cz3w>c;&4wa8HHV2ORpuH|-Q$vb$UuQ;M!%J;LEgC=9hhpOcl1 z-N4&h4~ZR!3`B;uGoj(&z`!7j6pSGSTP|(@YrqSoQaQ9*ge*J6vXS91bUn3$n5Mw< zm%xTf{}$lVCtm2NI5&d7w^QdahNLPa19sy7BB^TWN_+c^ZBC(pzHeTreAo|M;pB==NH0WyE?W2anLj3P;r!YF{9-?mcrSW3_dL5JO}T&7Jx_a8Kp z?{nq;LYtTIuLtXv=xoFG|m2(O&1kkMm=0hvz{O7iuTtsMO1wuh9 zjSvx30TCfo&P^K;`dO1uei0(m-9q%3Ar!6qP>Z5fZD)23-|1ifq0*`eX4z@hUWCTg#7**!Qyr6ym5+gKL;M}I=6mGQ> z@X;IqBm6uJ6BUe}V~eOUD^P3cj0Pk){ut1VYkeF-(7wAgG}F5QEe~tz&U(Rs4cCV{ zZVR=8;xzmoz%dE2QBlQ@n$2>>v>7I3voW@aO>hM^EyD(4gQh{m2936+jo4gmvRPbA zO?NA!M(P;_XBZzEVwnE@8CVDe)Nc;RDg(a_@q&;LGm|Q+sVXlTh16(9x7Bd+x6^T! zDKgDyAtTq(MT}f4Flrg-qSx~EDcOJor)2{Yydp@iHz6%*IHtSBC}J=|>pnCnwlaz; XF>xC8%H@vKvH!6NFN35RT+aU=Q0Kqh delta 1043 zcmZuvTWB0r7@mL6%+BoWX3k`BbFJH5Y)!H?nN2pECQ-W4AjN=2u=h)5CbL^JX7AJl@gn}!zb%Q@%! z&iDQQcP?jFnX^mGyX{PfqNtD+NkOQp+{6rWAy2~MQ)FE9^Nfoak2_FKTD*Y$?m`r< zvBEdPx)X>H!FmCsM)Lrv_QYS@<8B7beP}CJQeTzzTsm`t7f=Wl^*1u`&h`d#FN$)- zl3LP>C0#4Fm!v#RmI5?!DZ)Mc0*mvXoOEKYn2(MXE}Ip3Bq<~37s zy2qWXTEnb&l&N?*AcfDuE&t{j5h@v+~N#7MhUUN>-_J&d3LO74YJPI!VT^}f=Nu! diff --git a/_data/citations.yaml b/_data/citations.yaml index 42f04954..f03bc27e 100644 --- a/_data/citations.yaml +++ b/_data/citations.yaml @@ -24,6 +24,15 @@ - urban mobility - statistics - multimodal +- id: issn:23318422 + title: ISSN 2331-8422 (Online) | ArXiv.org | The ISSN Portal + authors: [] + publisher: '' + date: '' + link: https://portal.issn.org/resource/ISSN/23318422 + orcid: 0000-0002-9633-0017 + plugin: orcid.py + file: orcid.yaml - id: doi:10.1103/PhysRevAccelBeams.24.094002 title: Adiabaticity of emittance exchange due to crossing of the coupling resonance authors: @@ -182,6 +191,15 @@ orcid: 0000-0002-9633-0017 plugin: orcid.py file: orcid.yaml +- id: issn:18248039 + title: ISSN 1824-8039 (Online) | Pos proceedings of science | The ISSN Portal + authors: [] + publisher: '' + date: '' + link: https://portal.issn.org/resource/ISSN/18248039 + orcid: 0000-0002-9633-0017 + plugin: orcid.py + file: orcid.yaml - id: doi:10.1016/j.laa.2018.01.009 title: On the multiplicity of Laplacian eigenvalues and Fiedler partitions authors: @@ -308,6 +326,15 @@ orcid: 0000-0002-9633-0017 plugin: orcid.py file: orcid.yaml +- id: issn:00356050 + title: ISSN 0035-6050 (Print) | Rivista di biologia | The ISSN Portal + authors: [] + publisher: '' + date: '' + link: https://portal.issn.org/resource/ISSN/00356050 + orcid: 0000-0002-9633-0017 + plugin: orcid.py + file: orcid.yaml - id: doi:10.1016/j.physa.2013.08.049 title: Modeling mutant distribution in a stressed Escherichia coli bacteria population using experimental data @@ -446,6 +473,25 @@ orcid: 0000-0002-9633-0017 plugin: orcid.py file: orcid.yaml +- id: issn:19727356 + title: "ISSN 1972-7356 (Print) | La Matematica nella societ\xE0 e nella cultura\ + \ | The ISSN Portal" + authors: [] + publisher: '' + date: '' + link: https://portal.issn.org/resource/ISSN/19727356 + orcid: 0000-0002-9633-0017 + plugin: orcid.py + file: orcid.yaml +- id: issn:20385722 20385757 + title: '' + authors: [] + publisher: '' + date: '' + link: https://portal.issn.org/resource/ISSN/20385722 20385757 + orcid: 0000-0002-9633-0017 + plugin: orcid.py + file: orcid.yaml - id: doi:10.1016/j.plrev.2011.01.008 title: "Preliminaries for a future mathematical formulation of Evolution TheoryComment\ \ on \u201CToward a mathematical theory of living systems focusing on developmental\ @@ -487,6 +533,15 @@ orcid: 0000-0002-9633-0017 plugin: orcid.py file: orcid.yaml +- id: issn:22454586 19044720 + title: '' + authors: [] + publisher: '' + date: '' + link: https://portal.issn.org/resource/ISSN/22454586 19044720 + orcid: 0000-0002-9633-0017 + plugin: orcid.py + file: orcid.yaml - id: doi:10.1088/1742-5468/2010/05/P05001 title: Statistical laws in urban mobility from microscopic GPS data in the area of Florence @@ -598,6 +653,16 @@ orcid: 0000-0002-9633-0017 plugin: orcid.py file: orcid.yaml +- id: issn:09513248 + title: ISSN 0951-3248 (Print) | Institute of physics conference series | The ISSN + Portal + authors: [] + publisher: '' + date: '' + link: https://portal.issn.org/resource/ISSN/09513248 + orcid: 0000-0002-9633-0017 + plugin: orcid.py + file: orcid.yaml - id: doi:10.1063/1.1949518 title: Adiabatic Halo Formation authors: @@ -662,6 +727,15 @@ orcid: 0000-0002-9633-0017 plugin: orcid.py file: orcid.yaml +- id: issn:22822593 + title: ISSN 2282-2593 (Print) | Theoretical biology forum | The ISSN Portal + authors: [] + publisher: '' + date: '' + link: https://portal.issn.org/resource/ISSN/22822593 + orcid: 0000-0002-9633-0017 + plugin: orcid.py + file: orcid.yaml - id: doi:10.1162/089976603321891837 title: The Effect of Noise on a Class of Energy-Based Learning Rules authors: