Repository: Future-House/paper-qa Branch: main Commit: d2c3c698fdf0 Files: 177 Total size: 15.8 MB Directory structure: gitextract_rgxqts__/ ├── .gitattributes ├── .github/ │ ├── renovate.json5 │ └── workflows/ │ ├── build.yml │ └── tests.yml ├── .gitignore ├── .mailmap ├── .pre-commit-config.yaml ├── .python-version ├── CITATION.cff ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── docs/ │ ├── 2024-10-16_litqa2-splits.json5 │ └── tutorials/ │ ├── querying_with_clinical_trials.md │ ├── running_on_lfrqa.ipynb │ ├── running_on_lfrqa.md │ ├── settings_tutorial.ipynb │ ├── settings_tutorial.md │ └── where_do_I_get_papers.md ├── packages/ │ ├── paper-qa-docling/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── pyproject.toml │ │ ├── src/ │ │ │ └── paperqa_docling/ │ │ │ ├── __init__.py │ │ │ ├── py.typed │ │ │ └── reader.py │ │ └── tests/ │ │ └── test_paperqa_docling.py │ ├── paper-qa-nemotron/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── pyproject.toml │ │ ├── src/ │ │ │ └── paperqa_nemotron/ │ │ │ ├── __init__.py │ │ │ ├── api.py │ │ │ ├── py.typed │ │ │ └── reader.py │ │ └── tests/ │ │ ├── cassettes/ │ │ │ ├── TestNvidiaAPI.test_detection_only[0].yaml │ │ │ ├── TestNvidiaAPI.test_detection_only[1].yaml │ │ │ ├── TestNvidiaAPI.test_markdown_bbox[0].yaml │ │ │ ├── TestNvidiaAPI.test_markdown_bbox[1].yaml │ │ │ ├── TestNvidiaAPI.test_markdown_no_bbox[0].yaml │ │ │ └── TestNvidiaAPI.test_markdown_no_bbox[1].yaml │ │ ├── conftest.py │ │ ├── test_api.py │ │ └── test_paperqa_nemotron.py │ ├── paper-qa-pymupdf/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── pyproject.toml │ │ ├── src/ │ │ │ └── paperqa_pymupdf/ │ │ │ ├── __init__.py │ │ │ ├── py.typed │ │ │ └── reader.py │ │ └── tests/ │ │ └── test_paperqa_pymupdf.py │ └── paper-qa-pypdf/ │ ├── LICENSE │ ├── README.md │ ├── pyproject.toml │ ├── src/ │ │ └── paperqa_pypdf/ │ │ ├── __init__.py │ │ ├── py.typed │ │ ├── reader.py │ │ └── utils.py │ └── tests/ │ ├── test_paperqa_pypdf.py │ └── test_utils.py ├── pyproject.toml ├── src/ │ └── paperqa/ │ ├── __init__.py │ ├── _ldp_shims.py │ ├── agents/ │ │ ├── __init__.py │ │ ├── env.py │ │ ├── helpers.py │ │ ├── main.py │ │ ├── models.py │ │ ├── search.py │ │ └── tools.py │ ├── clients/ │ │ ├── __init__.py │ │ ├── client_data/ │ │ │ └── journal_quality.csv │ │ ├── client_models.py │ │ ├── crossref.py │ │ ├── exceptions.py │ │ ├── journal_quality.py │ │ ├── openalex.py │ │ ├── retractions.py │ │ ├── semantic_scholar.py │ │ └── unpaywall.py │ ├── configs/ │ │ ├── clinical_trials.json │ │ ├── contracrow.json │ │ ├── debug.json │ │ ├── fast.json │ │ ├── high_quality.json │ │ ├── openreview.json │ │ ├── search_only_clinical_trials.json │ │ ├── tier1_limits.json │ │ ├── tier2_limits.json │ │ ├── tier3_limits.json │ │ ├── tier4_limits.json │ │ ├── tier5_limits.json │ │ └── wikicrow.json │ ├── contrib/ │ │ ├── __init__.py │ │ ├── openreview_paper_helper.py │ │ └── zotero.py │ ├── core.py │ ├── docs.py │ ├── llms.py │ ├── paths.py │ ├── prompts.py │ ├── py.typed │ ├── readers.py │ ├── settings.py │ ├── sources/ │ │ ├── __init__.py │ │ └── clinical_trials.py │ ├── types.py │ └── utils.py └── tests/ ├── __init__.py ├── cassettes/ │ ├── test_arxiv_doi_is_used_when_available.yaml │ ├── test_author_matching.yaml │ ├── test_bad_dois.yaml │ ├── test_bad_titles.yaml │ ├── test_bulk_doi_search.yaml │ ├── test_bulk_title_search.yaml │ ├── test_crossref_journalquality_fields_filtering.yaml │ ├── test_crossref_retraction_status.yaml │ ├── test_docs_lifecycle.yaml │ ├── test_does_openalex_work[not-in-openalex].yaml │ ├── test_does_openalex_work[not-oa-in-openalex].yaml │ ├── test_does_openalex_work[oa-in-openalex1].yaml │ ├── test_does_openalex_work[oa-in-openalex2].yaml │ ├── test_doi_search[paper_attributes0].yaml │ ├── test_doi_search[paper_attributes1].yaml │ ├── test_doi_search[paper_attributes2].yaml │ ├── test_doi_search[paper_attributes3].yaml │ ├── test_doi_search[paper_attributes4].yaml │ ├── test_ensure_sequential_run.yaml │ ├── test_ensure_sequential_run_early_stop.yaml │ ├── test_equations[docling].yaml │ ├── test_equations[nemotron].yaml │ ├── test_equations[pymupdf].yaml │ ├── test_get_reasoning[deepseek-reasoner].yaml │ ├── test_get_reasoning[openrouter-deepseek].yaml │ ├── test_image_enrichment_invalid_image.yaml │ ├── test_image_enrichment_normal_use.yaml │ ├── test_maybe_is_text.yaml │ ├── test_minimal_fields_filtering.yaml │ ├── test_nonduplicate_contexts.yaml │ ├── test_odd_client_requests.yaml │ ├── test_partitioning_fn_docs[False].yaml │ ├── test_partitioning_fn_docs[True].yaml │ ├── test_partly_embedded_texts[False].yaml │ ├── test_partly_embedded_texts[True].yaml │ ├── test_pdf_reader_match_doc_details.yaml │ ├── test_s2_only_fields_filtering.yaml │ ├── test_s2_title_search_empty_data.yaml │ ├── test_title_search[paper_attributes0].yaml │ ├── test_title_search[paper_attributes1].yaml │ ├── test_title_search[paper_attributes2].yaml │ ├── test_tricky_journal_quality_results[10.1016-j.bbcan.2023.188947-1].yaml │ ├── test_tricky_journal_quality_results[10.1016-j.semcdb.2016.08.024-1].yaml │ ├── test_tricky_journal_quality_results[10.1038-s41598-018-27044-6-1].yaml │ ├── test_tricky_journal_quality_results[10.1073-pnas.1205508109-3].yaml │ ├── test_tricky_journal_quality_results[10.1146-annurev.pathol.4.110807.092311-2].yaml │ └── test_tricky_journal_quality_results[10.1186-1471-2148-11-4-2].yaml ├── conftest.py ├── duplicate_media_template.md ├── stub_data/ │ ├── .DS_Store │ ├── bates.txt │ ├── dummy.docx │ ├── dummy.pptx │ ├── dummy.xlsx │ ├── dummy_jap.docx │ ├── empty.txt │ ├── flag_day.html │ ├── gravity_hill.md │ ├── obama.txt │ ├── py.typed │ ├── stub_manifest.csv │ ├── stub_manifest_nocitation.csv │ └── stub_retractions.csv ├── test_agents.py ├── test_cli.py ├── test_clients.py ├── test_clinical_trials.py ├── test_configs.py ├── test_paperqa.py └── test_utils.py ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitattributes ================================================ tests/cassettes/* linguist-generated=true ================================================ FILE: .github/renovate.json5 ================================================ { $schema: "https://docs.renovatebot.com/renovate-schema.json", extends: [ "config:recommended", "group:allNonMajor", // Rely on config:recommended for major version updates ":automergeMinor", ], schedule: ["* 2 1-7 * 1"], prHourlyLimit: 4, timezone: "America/Los_Angeles", rangeStrategy: "widen", lockFileMaintenance: { enabled: true, schedule: ["* 2 1-7 * 1"], // Work around https://github.com/renovatebot/renovate/discussions/33152 }, minimumReleaseAge: "2 weeks", "pre-commit": { enabled: true }, packageRules: [ { // TODO: remove after fhaviary supports Python 3.14 matchPackageNames: ["python"], allowedVersions: "<=3.13", }, ], } ================================================ FILE: .github/workflows/build.yml ================================================ name: Publish on: release: types: [created] workflow_dispatch: jobs: publish: runs-on: ubuntu-latest env: UV_VENV_CLEAR: 1 # Work around https://github.com/hynek/build-and-inspect-python-package/issues/174 steps: - uses: actions/checkout@v6 - id: build-paper-qa-pymupdf uses: hynek/build-and-inspect-python-package@v2 with: path: packages/paper-qa-pymupdf upload-name-suffix: -paper-qa-pymupdf - name: Download built paper-qa-pymupdf artifact to dist/ uses: actions/download-artifact@v8 with: name: ${{ steps.build-paper-qa-pymupdf.outputs.artifact-name }} path: dist - name: Clean up paper-qa-pymupdf build # Work around https://github.com/hynek/build-and-inspect-python-package/issues/174 run: rm -r ${{ steps.build-paper-qa-pymupdf.outputs.dist }} - id: build-paper-qa-pypdf uses: hynek/build-and-inspect-python-package@v2 with: path: packages/paper-qa-pypdf upload-name-suffix: -paper-qa-pypdf - name: Download built paper-qa-pypdf artifact to dist/ uses: actions/download-artifact@v8 with: name: ${{ steps.build-paper-qa-pypdf.outputs.artifact-name }} path: dist - name: Clean up paper-qa-pypdf build # Work around https://github.com/hynek/build-and-inspect-python-package/issues/174 run: rm -r ${{ steps.build-paper-qa-pypdf.outputs.dist }} - id: build-paper-qa-docling uses: hynek/build-and-inspect-python-package@v2 with: path: packages/paper-qa-docling upload-name-suffix: -paper-qa-docling - name: Download built paper-qa-docling artifact to dist/ uses: actions/download-artifact@v8 with: name: ${{ steps.build-paper-qa-docling.outputs.artifact-name }} path: dist - name: Clean up paper-qa-docling build # Work around https://github.com/hynek/build-and-inspect-python-package/issues/174 run: rm -r ${{ steps.build-paper-qa-docling.outputs.dist }} - id: build-paper-qa-nemotron uses: hynek/build-and-inspect-python-package@v2 with: path: packages/paper-qa-nemotron upload-name-suffix: -paper-qa-nemotron - name: Download built paper-qa-nemotron artifact to dist/ uses: actions/download-artifact@v8 with: name: ${{ steps.build-paper-qa-nemotron.outputs.artifact-name }} path: dist - name: Clean up paper-qa-nemotron build # Work around https://github.com/hynek/build-and-inspect-python-package/issues/174 run: rm -r ${{ steps.build-paper-qa-nemotron.outputs.dist }} - id: build-paper-qa uses: hynek/build-and-inspect-python-package@v2 with: upload-name-suffix: -paper-qa - name: Download built paper-qa artifact to dist/ uses: actions/download-artifact@v8 with: name: ${{ steps.build-paper-qa.outputs.artifact-name }} path: dist - name: Clean up paper-qa build # Work around https://github.com/hynek/build-and-inspect-python-package/issues/174 run: rm -r ${{ steps.build-paper-qa.outputs.dist }} - uses: pypa/gh-action-pypi-publish@release/v1 with: password: ${{ secrets.PYPI_API_TOKEN }} ================================================ FILE: .github/workflows/tests.yml ================================================ name: Lint and Test on: push: branches: [main] pull_request: workflow_dispatch: jobs: pre-commit: runs-on: ubuntu-latest if: github.event_name == 'pull_request' # pre-commit-ci/lite-action only runs here strategy: matrix: python-version: [3.11, 3.13] # Our min and max supported Python versions steps: - uses: actions/checkout@v6 with: fetch-depth: 0 # For setuptools-scm, replace with fetch-tags after https://github.com/actions/checkout/issues/1471 - uses: astral-sh/setup-uv@v7 with: enable-cache: true python-version: ${{ matrix.python-version }} activate-environment: true # Activate for simple `uv sync` below - run: uv sync - uses: j178/prek-action@v1 with: prek-version: 0.2.14 # Downpin for https://github.com/j178/prek/issues/1104 - uses: pre-commit-ci/lite-action@v1.1.0 if: always() lint: runs-on: ubuntu-latest env: UV_VENV_CLEAR: 1 # Work around https://github.com/hynek/build-and-inspect-python-package/issues/174 strategy: matrix: python-version: [3.11] # Our min supported Python version steps: - uses: actions/checkout@v6 - uses: astral-sh/setup-uv@v7 with: enable-cache: true cache-local-path: /tmp/baipp-uv_cache_dir # Work around https://github.com/hynek/build-and-inspect-python-package/issues/181 python-version: ${{ matrix.python-version }} - name: Check paper-qa-pymupdf build id: build-paper-qa-pymupdf if: matrix.python-version == '3.11' uses: hynek/build-and-inspect-python-package@v2 with: path: packages/paper-qa-pymupdf upload-name-suffix: -paper-qa-pymupdf - name: Clean up paper-qa-pymupdf build # Work around https://github.com/hynek/build-and-inspect-python-package/issues/174 if: matrix.python-version == '3.11' run: rm -r ${{ steps.build-paper-qa-pymupdf.outputs.dist }} - name: Check paper-qa-pypdf build id: build-paper-qa-pypdf if: matrix.python-version == '3.11' uses: hynek/build-and-inspect-python-package@v2 with: path: packages/paper-qa-pypdf upload-name-suffix: -paper-qa-pypdf - name: Clean up paper-qa-pymupdf build # Work around https://github.com/hynek/build-and-inspect-python-package/issues/174 if: matrix.python-version == '3.11' run: rm -r ${{ steps.build-paper-qa-pypdf.outputs.dist }} - name: Check paper-qa-docling build id: build-paper-qa-docling if: matrix.python-version == '3.11' uses: hynek/build-and-inspect-python-package@v2 with: path: packages/paper-qa-docling upload-name-suffix: -paper-qa-docling - name: Clean up paper-qa-docling build # Work around https://github.com/hynek/build-and-inspect-python-package/issues/174 if: matrix.python-version == '3.11' run: rm -r ${{ steps.build-paper-qa-docling.outputs.dist }} - name: Check paper-qa-nemotron build id: build-paper-qa-nemotron if: matrix.python-version == '3.11' uses: hynek/build-and-inspect-python-package@v2 with: path: packages/paper-qa-nemotron upload-name-suffix: -paper-qa-nemotron - name: Clean up paper-qa-nemotron build # Work around https://github.com/hynek/build-and-inspect-python-package/issues/174 if: matrix.python-version == '3.11' run: rm -r ${{ steps.build-paper-qa-nemotron.outputs.dist }} - name: Check paper-qa build id: build-paper-qa if: matrix.python-version == '3.11' uses: hynek/build-and-inspect-python-package@v2 with: upload-name-suffix: -paper-qa - name: Clean up paper-qa build # Work around https://github.com/hynek/build-and-inspect-python-package/issues/174 if: matrix.python-version == '3.11' run: rm -r ${{ steps.build-paper-qa.outputs.dist }} - run: uv sync - run: uv run pylint src packages - run: uv run refurb . - uses: suzuki-shunsuke/github-action-renovate-config-validator@v2.1.0 test-src: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: [3.11, 3.13] # Our min and max supported Python versions steps: - uses: actions/checkout@v6 - uses: astral-sh/setup-uv@v7 with: enable-cache: true python-version: ${{ matrix.python-version }} - run: uv sync - name: Cache Docling models id: cache-models uses: actions/cache@v5 with: path: &docling-cache-dir ~/.cache/docling key: &docling-cache-key ${{ runner.os }}-docling-${{ hashFiles('uv.lock') }} restore-keys: &docling-cache-restore-keys ${{ runner.os }}-docling- - name: Pre-download Docling models # Avoid HuggingFace Hub requests during VCR cassette playback if: steps.cache-models.outputs.cache-hit != 'true' # RapidOCR is used for PDF pipeline's OCR, layout for layout analysis, # tableformer for table structure run: uv run docling-tools models download layout tableformer - run: uv run pytest -n auto tests env: DOCLING_ARTIFACTS_PATH: &docling-artifacts-path ~/.cache/docling/models OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }} SEMANTIC_SCHOLAR_API_KEY: ${{ secrets.SEMANTIC_SCHOLAR_API_KEY }} CROSSREF_API_KEY: ${{ secrets.CROSSREF_API_KEY }} NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }} test-packages: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: [3.12, 3.13] # Our min and max supported Python versions, skipping 3.11 to avoid https://github.com/BerriAI/litellm/issues/16518 steps: - uses: actions/checkout@v6 - uses: astral-sh/setup-uv@v7 with: enable-cache: true python-version: ${{ matrix.python-version }} - run: uv sync - name: Cache Docling models id: cache-models uses: actions/cache@v5 with: path: *docling-cache-dir key: *docling-cache-key restore-keys: *docling-cache-restore-keys - name: Pre-download Docling models # Avoid CI race conditions in filesystem on model download if: steps.cache-models.outputs.cache-hit != 'true' # RapidOCR is used for PDF pipeline's OCR, layout for layout analysis, # tableformer for table structure run: uv run docling-tools models download rapidocr layout tableformer - run: uv run pytest -n auto packages env: DOCLING_ARTIFACTS_PATH: *docling-artifacts-path # Work around https://github.com/docling-project/docling/issues/2500 OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }} SEMANTIC_SCHOLAR_API_KEY: ${{ secrets.SEMANTIC_SCHOLAR_API_KEY }} CROSSREF_API_KEY: ${{ secrets.CROSSREF_API_KEY }} NVIDIA_API_KEY: ${{ secrets.NVIDIA_API_KEY }} ================================================ FILE: .gitignore ================================================ # Swap [._]*.s[a-v][a-z] !*.svg # comment out if you don't need vector files [._]*.sw[a-p] [._]s[a-rt-v][a-z] [._]ss[a-gi-z] [._]sw[a-p] # Session Session.vim Sessionx.vim # Temporary .netrwhist *~ # Auto-generated tag files tags # Persistent undo [._]*.un~ # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 # User-specific stuff .idea/**/workspace.xml .idea/**/tasks.xml .idea/**/usage.statistics.xml .idea/**/dictionaries .idea/**/shelf # AWS User-specific .idea/**/aws.xml # Generated files .idea/**/contentModel.xml # Sensitive or high-churn files .idea/**/dataSources/ .idea/**/dataSources.ids .idea/**/dataSources.local.xml .idea/**/sqlDataSources.xml .idea/**/dynamic.xml .idea/**/uiDesigner.xml .idea/**/dbnavigator.xml # Gradle .idea/**/gradle.xml .idea/**/libraries # Gradle and Maven with auto-import # When using Gradle or Maven with auto-import, you should exclude module files, # since they will be recreated, and may cause churn. Uncomment if using # auto-import. # .idea/artifacts # .idea/compiler.xml # .idea/jarRepositories.xml # .idea/modules.xml # .idea/*.iml # .idea/modules # *.iml # *.ipr # CMake cmake-build-*/ # Mongo Explorer plugin .idea/**/mongoSettings.xml # File-based project format *.iws # IntelliJ out/ # mpeltonen/sbt-idea plugin .idea_modules/ # JIRA plugin atlassian-ide-plugin.xml # Cursive Clojure plugin .idea/replstate.xml # SonarLint plugin .idea/sonarlint/ # Crashlytics plugin (for Android Studio and IntelliJ) com_crashlytics_export_strings.xml crashlytics.properties crashlytics-build.properties fabric.properties # Editor-based Rest Client .idea/httpRequests # Android studio 3.1+ serialized cache file .idea/caches/build_file_checksums.ser .vscode/* !.vscode/settings.json !.vscode/tasks.json !.vscode/launch.json !.vscode/extensions.json !.vscode/*.code-snippets .vscode # Local History for Visual Studio Code .history/ # Built Visual Studio Code Extensions *.vsix # General .DS_Store .AppleDouble .LSOverride # Icon must end with two \r Icon[\r] # Thumbnails ._* # Files that might appear in the root of a volume .DocumentRevisions-V100 .fseventsd .Spotlight-V100 .TemporaryItems .Trashes .VolumeIcon.icns .com.apple.timemachine.donotpresent # Directories potentially created on remote AFP share .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .nox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.py,cover .hypothesis/ .pytest_cache/ cover/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 db.sqlite3-journal # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder .pybuilder/ target/ # Jupyter Notebook .ipynb_checkpoints # IPython profile_default/ ipython_config.py # pyenv # For a library or package, you might want to ignore these files since the code is # intended to run in multiple environments; otherwise, check them in: # .python-version # pipenv # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. # However, in case of collaboration, if having platform-specific dependencies or dependencies # having no cross-platform support, pipenv may install dependencies that don't work, or not # install all needed dependencies. #Pipfile.lock # poetry # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. # This is especially recommended for binary packages to ensure reproducibility, and is more # commonly ignored for libraries. # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control #poetry.lock # pdm # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. #pdm.lock # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it # in version control. # https://pdm.fming.dev/latest/usage/project/#working-with-version-control .pdm.toml .pdm-python .pdm-build/ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm __pypackages__/ # Celery stuff celerybeat-schedule celerybeat.pid # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Data directories data/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ .dmypy.json dmypy.json # Pyre type checker .pyre/ # pytype static type analyzer .pytype/ # Cython debug symbols cython_debug/ # PyCharm # JetBrains specific template is maintained in a separate JetBrains.gitignore that can # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. .idea/ # Version files made by setuptools_scm **/version.py # Tests tests/*txt tests/*html tests/test_index/* tests/example.* tests/example2.* !tests/stub_data/.DS_Store # Client data src/paperqa/clients/client_data/retractions.csv ================================================ FILE: .mailmap ================================================ Andrew White Ahmet Celebi <59479833+AmT42@users.noreply.github.com> At4 <59479833+AmT42@users.noreply.github.com> Anush008 Anush Dmitrii Magas eamag Geemi Wellawatte Geemi Wellawatte <49410838+geemi725@users.noreply.github.com> Harry Vu Harry Vu harryvu-futurehouse James Braza Mayk Caldas maykcaldas Mayk Caldas Michael Skarlinski mskarlin <12701035+mskarlin@users.noreply.github.com> Odhran O'Donoghue odhran-o-d Odhran O'Donoghue <39832722+odhran-o-d@users.noreply.github.com> Samantha Cox takeru fukushima <100330935+takeruhukushima@users.noreply.github.com> ================================================ FILE: .pre-commit-config.yaml ================================================ default_language_version: python: python3 repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v6.0.0 hooks: - id: check-added-large-files exclude: | (?x)^( packages/paper-qa-nemotron/tests/cassettes.*| src/paperqa/clients/client_data.*| tests/stub_data.*| tests/cassettes.*| uv\.lock )$ - id: check-case-conflict - id: check-merge-conflict - id: check-shebang-scripts-are-executable - id: check-symlinks - id: check-toml - id: check-yaml - id: debug-statements - id: detect-private-key - id: end-of-file-fixer - id: fix-byte-order-marker - id: mixed-line-ending - id: trailing-whitespace - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.14.4 hooks: - id: ruff-check args: [--fix, --exit-non-zero-on-fix] - repo: https://github.com/psf/black-pre-commit-mirror rev: 26.1.0 hooks: - id: black-jupyter - repo: https://github.com/rbubley/mirrors-prettier rev: v3.6.2 hooks: - id: prettier exclude: ^docs/.*\.md$ - repo: https://github.com/pappasam/toml-sort rev: v0.24.3 hooks: - id: toml-sort-fix - repo: https://github.com/codespell-project/codespell rev: v2.4.1 hooks: - id: codespell additional_dependencies: [".[toml]"] - repo: https://github.com/crate-ci/typos rev: v1.39.0 hooks: - id: typos - repo: https://github.com/jumanjihouse/pre-commit-hooks rev: 3.0.0 hooks: - id: check-mailmap - repo: https://github.com/henryiii/validate-pyproject-schema-store rev: 2025.11.04 hooks: - id: validate-pyproject - repo: https://github.com/astral-sh/uv-pre-commit rev: 0.9.8 hooks: - id: uv-lock - repo: https://github.com/adamchainz/blacken-docs rev: 1.20.0 hooks: - id: blacken-docs exclude: \.md$ # The generated markdown files are being blackened by jupytext - repo: https://github.com/srstevenson/nb-clean rev: 4.0.1 hooks: - id: nb-clean args: [--preserve-cell-outputs, --remove-empty-cells] - repo: https://github.com/jackdewinter/pymarkdown rev: v0.9.33 hooks: - id: pymarkdown exclude: docs/tutorials/ - repo: https://github.com/mwouts/jupytext rev: v1.18.1 hooks: - id: jupytext # SEE: https://github.com/mwouts/jupytext/issues/1467 args: [--to, md, --pipe-fmt, ipynb, --pipe, "black {}"] additional_dependencies: [black] files: ^docs/.*\.ipynb$ - repo: https://github.com/jsh9/markdown-toc-creator rev: 0.1.3 hooks: - id: markdown-toc-creator - repo: local # Use local so we can inspect paperqa.version hooks: - id: mypy name: mypy entry: uv run --frozen mypy # Use --frozen to avoid mutating local venv language: system types_or: [python, pyi] ================================================ FILE: .python-version ================================================ 3.13 ================================================ FILE: CITATION.cff ================================================ --- cff-version: 1.2.0 message: >- If you use this software, please cite it using the metadata from this file. authors: - family-names: Skarlinski given-names: Michael D. - family-names: Cox given-names: Sam - family-names: Laurent given-names: Jon M. - family-names: Braza given-names: James D. - family-names: Hinks given-names: Michaela - family-names: Hammerling given-names: Michael J. - family-names: Ponnapati given-names: Manvitha - family-names: Rodriques given-names: Samuel G. - family-names: White given-names: Andrew D. title: "Language agents achieve superhuman synthesis of scientific knowledge" identifiers: - type: doi value: 10.48550/arXiv.2409.13740 description: ArXiv DOI - type: url value: https://arxiv.org/abs/2409.13740 description: ArXiv abstract repository-code: https://github.com/Future-House/paper-qa keywords: - Artificial Intelligence - Computation and Language - Machine Learning license: Apache-2.0 preferred-citation: authors: - family-names: Skarlinski given-names: Michael D. - family-names: Cox given-names: Sam - family-names: Laurent given-names: Jon M. - family-names: Braza given-names: James D. - family-names: Hinks given-names: Michaela - family-names: Hammerling given-names: Michael J. - family-names: Ponnapati given-names: Manvitha - family-names: Rodriques given-names: Samuel G. - family-names: White given-names: Andrew D. date-published: 2024-09-10 doi: 10.48550/arXiv.2409.13740 journal: preprint title: "Language agents achieve superhuman synthesis of scientific knowledge" type: article url: https://arxiv.org/abs/2409.13740 ================================================ FILE: CONTRIBUTING.md ================================================ # Contributing to PaperQA Thank you for your interest in contributing to PaperQA! Here are some guidelines to help you get started. ## Setting up the development environment We use [`uv`](https://github.com/astral-sh/uv) for our local development. 1. Install `uv` by following the instructions on the [uv website](https://astral.sh/uv/). 2. Run the following command to install all dependencies and set up the development environment: ```bash uv sync ``` ## Installing the package for development If you prefer to use `pip` for installing the package in development mode, you can do so by running: ```bash pip install -e ".[dev]" ``` Where the `dev` extra includes development dependencies such as `pytest`. ## Running tests and other tooling Use the following commands: - Run tests (requires an OpenAI key in your environment) ```bash pytest # or for multiprocessing based parallelism pytest -n auto ``` - Run `pre-commit` for formatting and type checking ```bash pre-commit run --all-files ``` - Run `mypy`, `refurb`, or `pylint` directly: ```bash mypy paperqa # or refurb paperqa # or pylint paperqa ``` See our GitHub Actions [`tests.yml`](.github/workflows/tests.yml) for further reference. ## Using `pytest-recording` and VCR cassettes We use the [`pytest-recording`](https://github.com/kiwicom/pytest-recording) plugin to create VCR cassettes to cache HTTP requests, making our unit tests more deterministic. To record a new VCR cassette: ```bash uv run pytest --record-mode=once tests/desired_test_module.py ``` And the new cassette(s) should appear in [`tests/cassettes`](tests/cassettes). Our configuration for `pytest-recording` can be found in [`tests/conftest.py`](tests/conftest.py). This includes header removals (e.g. OpenAI `authorization` key) from responses to ensure sensitive information is excluded from the cassettes. Please ensure cassettes are less than 1 MB to keep tests loading quickly. Happy coding! ================================================ FILE: LICENSE ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2024 FutureHouse Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ================================================ FILE: README.md ================================================ # PaperQA2 [![GitHub](https://img.shields.io/badge/GitHub-black?logo=github&logoColor=white)](https://github.com/Future-House/paper-qa) [![PyPI version](https://badge.fury.io/py/paper-qa.svg)](https://badge.fury.io/py/paper-qa) [![tests](https://github.com/Future-House/paper-qa/actions/workflows/tests.yml/badge.svg)](https://github.com/Future-House/paper-qa) ![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg) ![PyPI Python Versions](https://img.shields.io/pypi/pyversions/paper-qa) PaperQA2 is a package for doing high-accuracy retrieval augmented generation (RAG) on PDFs, text files, Microsoft Office documents, and source code files, with a focus on the scientific literature. See our [recent 2024 paper](https://paper.wikicrow.ai) to see examples of PaperQA2's superhuman performance in scientific tasks like question answering, summarization, and contradiction detection. --- **Table of Contents** - [Quickstart](#quickstart) - [Example Output](#example-output) - [What is PaperQA2](#what-is-paperqa2) - [PaperQA2 vs PaperQA](#paperqa2-vs-paperqa) - [PaperQA2 Goes CalVer in December 2025](#paperqa2-goes-calver-in-december-2025) - [What's New in Version 5 (aka PaperQA2)?](#whats-new-in-version-5-aka-paperqa2) - [What's New in December 2025?](#whats-new-in-december-2025) - [PaperQA2 Algorithm](#paperqa2-algorithm) - [Installation](#installation) - [CLI Usage](#cli-usage) - [Bundled Settings](#bundled-settings) - [Rate Limits](#rate-limits) - [Library Usage](#library-usage) - [Agentic Adding/Querying Documents](#agentic-addingquerying-documents) - [Manual (No Agent) Adding/Querying Documents](#manual-no-agent-addingquerying-documents) - [Async](#async) - [Choosing Model](#choosing-model) - [Locally Hosted](#locally-hosted) - [Embedding Model](#embedding-model) - [Specifying the Embedding Model](#specifying-the-embedding-model) - [Local Embedding Models (Sentence Transformers)](#local-embedding-models-sentence-transformers) - [Adjusting number of sources](#adjusting-number-of-sources) - [Using Code or HTML](#using-code-or-html) - [Multimodal Support](#multimodal-support) - [Using External DB/Vector DB and Caching](#using-external-dbvector-db-and-caching) - [Creating Index](#creating-index) - [Manifest Files](#manifest-files) - [Reusing Index](#reusing-index) - [Using Clients Directly](#using-clients-directly) - [Settings Cheatsheet](#settings-cheatsheet) - [Where do I get papers?](#where-do-i-get-papers) - [Callbacks](#callbacks) - [Caching Embeddings](#caching-embeddings) - [Customizing Prompts](#customizing-prompts) - [Pre and Post Prompts](#pre-and-post-prompts) - [FAQ](#faq) - [How come I get different results than your papers?](#how-come-i-get-different-results-than-your-papers) - [How is this different from LlamaIndex or LangChain?](#how-is-this-different-from-llamaindex-or-langchain) - [Can I save or load?](#can-i-save-or-load) - [Reproduction](#reproduction) - [Citation](#citation) --- ## Quickstart In this example we take a folder of research paper PDFs, magically get their metadata - including citation counts with a retraction check, then parse and cache PDFs into a full-text search index, and finally answer the user question with an LLM agent. ```bash pip install paper-qa mkdir my_papers curl -o my_papers/PaperQA2.pdf https://arxiv.org/pdf/2409.13740 cd my_papers pqa ask 'What is PaperQA2?' ``` ### Example Output Question: Has anyone designed neural networks that compute with proteins or DNA? > The claim that neural networks have been designed to compute with DNA is supported by multiple sources. > The work by Qian, Winfree, and Bruck demonstrates the use of DNA strand displacement cascades > to construct neural network components, such as artificial neurons and associative memories, > using a DNA-based system (Qian2011Neural pages 1-2, Qian2011Neural pages 15-16, Qian2011Neural pages 54-56). > This research includes the implementation of a 3-bit XOR gate and a four-neuron Hopfield associative memory, > showcasing the potential of DNA for neural network computation. > Additionally, the application of deep learning techniques to genomics, > which involves computing with DNA sequences, is well-documented. > Studies have applied convolutional neural networks (CNNs) to predict genomic features such as > transcription factor binding and DNA accessibility (Eraslan2019Deep pages 4-5, Eraslan2019Deep pages 5-6). > These models leverage DNA sequences as input data, > effectively using neural networks to compute with DNA. > While the provided excerpts do not explicitly mention protein-based neural network computation, > they do highlight the use of neural networks in tasks related to protein sequences, > such as predicting DNA-protein binding (Zeng2016Convolutional pages 1-2). > However, the primary focus remains on DNA-based computation. ## What is PaperQA2 PaperQA2 is engineered to be the best agentic RAG model for working with scientific papers. Here are some features: - A simple interface to get good answers with grounded responses containing in-text citations. - State-of-the-art implementation including document metadata-awareness in embeddings and LLM-based re-ranking and contextual summarization (RCS). - Support for agentic RAG, where a language agent can iteratively refine queries and answers. - Automatic redundant fetching of paper metadata, including citation and journal quality data from multiple providers. - A usable full-text search engine for a local repository of PDF/text files. - A robust interface for customization, with default support for all [LiteLLM][LiteLLM providers] models. [LiteLLM providers]: https://docs.litellm.ai/docs/providers [LiteLLM general docs]: https://docs.litellm.ai/docs/ By default, it uses [OpenAI embeddings](https://platform.openai.com/docs/guides/embeddings) and [models](https://platform.openai.com/docs/models) with a Numpy vector DB to embed and search documents. However, you can easily use other closed-source, open-source models or embeddings (see details below). PaperQA2 depends on some awesome libraries/APIs that make our repo possible. Here are some in no particular order: 1. [Semantic Scholar](https://www.semanticscholar.org/) 2. [Crossref](https://www.crossref.org/) 3. [Unpaywall](https://unpaywall.org/) 4. [Pydantic](https://docs.pydantic.dev/latest/) 5. [tantivy](https://github.com/quickwit-oss/tantivy) 6. [LiteLLM][LiteLLM general docs] 7. [pybtex](https://pybtex.org/) ### PaperQA2 vs PaperQA We've been working hard on fundamental upgrades for a while and mostly followed [SemVer](https://semver.org/), until [December 2025](#paperqa2-goes-calver-in-december-2025). Meaning we've incremented the major version number on each breaking change. This brings us to the current major version number v5. So why call is the repo now called PaperQA2? We wanted to remark on the fact though that we've exceeded human performance on [many important metrics](https://paper.wikicrow.ai). So we arbitrarily call version 5 and onward PaperQA2, and versions before it as PaperQA1 to denote the significant change in performance. We recognize that we are challenged at naming and counting at FutureHouse, so we reserve the right at any time to arbitrarily change the name to PaperCrow. ### PaperQA2 Goes CalVer in December 2025 Prior to December 2025 we used [semantic versioning](https://semver.org/). This eventually led to confusion in two ways: 1. Developers: should we major version bump based on settings or fundamental system capabilities? What if a bug fix requires breaking changes to the agent's behaviors? 2. Speaking: should one use terminology from our publications (e.g. [PaperQA1](https://arxiv.org/abs/2312.07559), [PaperQA2](https://arxiv.org/abs/2409.13740)) or the Git tags (e.g. v5) from this repo/package? When someone says "PaperQA" -- what version do they mean? To resolve these confusions, in December 2025, we moved to [calendar versioning](https://calver.org/). The developer burden is diminished because we're basically removing guarantees of backwards compatibility across releases (as CalVer is [ZeroVer](https://0ver.org/) bound to dates). It solves the "speaking" issue because Git tags are now quite different from publication terminology (e.g. PaperQA2 vs `v2025.12.17`). When someone says "PaperQA" it will just refer to the system, not a particular snapshot of agentic behaviors. When someone says "PaperQA2" it will refer to `paper-qa>=5`, which applies to both SemVer tags `v5.0.0` and the new CalVer tags `v2025.12.17`. This switch is backwards compatible for version 5's SemVer, as the year 2025 is strictly greater than major version 5. ### What's New in Version 5 (aka PaperQA2)? Version 5 added: - A CLI `pqa` - Agentic workflows invoking tools for paper search, gathering evidence, and generating an answer - Removed much of the statefulness from the `Docs` object - A migration to LiteLLM for compatibility with many LLM providers as well as centralized rate limits and cost tracking - A bundled set of configurations (read [this section here](#bundled-settings))) containing known-good hyperparameters Note that `Docs` objects pickled from prior versions of `PaperQA` are incompatible with version 5, and will need to be rebuilt. Also, our minimum Python version was increased to Python 3.11. ### What's New in December 2025? The last four months since version `5.29.1` have seen many changes: - New modalities: tables, figures, non-English languages, math equations - More and better readers - Two new _model-based_ PDF readers: [Docling](packages/paper-qa-docling) and [Nvidia nemotron-parse](packages/paper-qa-nemotron) - All PDF readers now can parse images and tables, report page numbers, support DPI - A reader for Microsoft Office data types - Multimodal contextual summarization - Media objects are also passed to the `summary_llm` during creation - Media objects' embedding space is enhanced using an `enrichment_llm` prompt - Simpler and performant HTTP stack - Consolidation from `aiohttp` and `httpx` to just `httpx` - Integration with [`httpx-aiohttp`](https://github.com/karpetrosyan/httpx-aiohttp) for performance - `Context` relevance is simplified and some assumptions were removed - Many minor features such as retrying `Context` creation upon invalid JSON, compatibility with fall 2025's frontier LLMs, and improved prompt templates - Multiple fixes in metadata processing via Semantic Scholar and OpenAlex, and metadata processing (e.g. incorrectly inferring identical document IDs for main text and SI) - Completed the deprecations accrued over the past year ### PaperQA2 Algorithm To understand PaperQA2, let's start with the pieces of the underlying algorithm. The default workflow of PaperQA2 is as follows: | Phase | PaperQA2 Actions | | ---------------------- | ------------------------------------------------------------------------- | | **1. Paper Search** | - Get candidate papers from LLM-generated keyword query | | | - Chunk, embed, and add candidate papers to state | | **2. Gather Evidence** | - Embed query into vector | | | - Rank top _k_ document chunks in current state | | | - Create scored summary of each chunk in the context of the current query | | | - Use LLM to re-score and select most relevant summaries | | **3. Generate Answer** | - Put best summaries into prompt with context | | | - Generate answer with prompt | The tools can be invoked in any order by a language agent. For example, an LLM agent might do a narrow and broad search, or using different phrasing for the gather evidence step from the generate answer step. ## Installation For a non-development setup, install PaperQA2 (aka version 5) from [PyPI](https://pypi.org/project/paper-qa/). Note version 5 requires Python 3.11+. ```bash pip install paper-qa>=5 ``` For development setup, please refer to the [CONTRIBUTING.md](CONTRIBUTING.md) file. PaperQA2 uses an LLM to operate, so you'll need to either set an appropriate [API key environment variable][LiteLLM providers] (i.e. `export OPENAI_API_KEY=sk-...`) or set up an open source LLM server (i.e. using [llamafile](https://github.com/Mozilla-Ocho/llamafile). Any LiteLLM compatible model can be configured to use with PaperQA2. If you need to index a large set of papers (100+), you will likely want an API key for both [Crossref](https://www.crossref.org/documentation/metadata-plus/metadata-plus-keys/) and [Semantic Scholar](https://www.semanticscholar.org/product/api#api-key), which will allow you to avoid hitting public rate limits using these metadata services. Those can be exported as `CROSSREF_API_KEY` and `SEMANTIC_SCHOLAR_API_KEY` variables. ## CLI Usage The fastest way to test PaperQA2 is via the CLI. First navigate to a directory with some papers and use the `pqa` cli: ```bash pqa ask 'What is PaperQA2?' ``` You will see PaperQA2 index your local PDF files, gathering the necessary metadata for each of them (using [Crossref](https://www.crossref.org/) and [Semantic Scholar](https://www.semanticscholar.org/)), search over that index, then break the files into chunked evidence contexts, rank them, and ultimately generate an answer. The next time this directory is queried, your index will already be built (save for any differences detected, like new added papers), so it will skip the indexing and chunking steps. All prior answers will be indexed and stored, you can view them by querying via the `search` subcommand, or access them yourself in your `PQA_HOME` directory, which defaults to `~/.pqa/`. ```bash pqa -i 'answers' search 'ranking and contextual summarization' ``` PaperQA2 is highly configurable, when running from the command line, `pqa --help` shows all options and short descriptions. For example to run with a higher temperature: ```bash pqa --temperature 0.5 ask 'What is PaperQA2?' ``` You can view all settings with `pqa view`. Another useful thing is to change to other templated settings - for example `fast` is a setting that answers more quickly and you can see it with `pqa -s fast view` Maybe you have some new settings you want to save? You can do that with ```bash pqa -s my_new_settings --temperature 0.5 --llm foo-bar-5 save ``` and then you can use it with ```bash pqa -s my_new_settings ask 'What is PaperQA2?' ``` If you run `pqa` with a command which requires a new indexing, say if you change the default chunk_size, a new index will automatically be created for you. ```bash pqa --parsing.chunk_size 5000 ask 'What is PaperQA2?' ``` You can also use `pqa` to do full-text search with use of LLMs view the search command. For example, let's save the index from a directory and give it a name: ```bash pqa -i nanomaterials index ``` Now I can search for papers about thermoelectrics: ```bash pqa -i nanomaterials search thermoelectrics ``` or I can use the normal ask ```bash pqa -i nanomaterials ask 'Are there nm scale features in thermoelectric materials?' ``` Both the CLI and module have pre-configured settings based on prior performance and our publications, they can be invoked as follows: ```bash pqa --settings \ ask 'Are there nm scale features in thermoelectric materials?' ``` ### Bundled Settings Inside [`src/paperqa/configs`](src/paperqa/configs) we bundle known useful settings: | Setting Name | Description | | ------------ | ---------------------------------------------------------------------------------------------------------------------------- | | high_quality | Highly performant, relatively expensive (due to having `evidence_k` = 15) query using a `ToolSelector` agent. | | fast | Setting to get answers cheaply and quickly. | | wikicrow | Setting to emulate the Wikipedia article writing used in our WikiCrow publication. | | contracrow | Setting to find contradictions in papers, your query should be a claim that needs to be flagged as a contradiction (or not). | | debug | Setting useful solely for debugging, but not in any actual application beyond debugging. | | tier1_limits | Settings that match OpenAI rate limits for each tier, you can use `tier<1-5>_limits` to specify the tier. | ### Rate Limits If you are hitting rate limits, say with the OpenAI Tier 1 plan, you can add them into PaperQA2. For each OpenAI tier, a pre-built setting exists to limit usage. ```bash pqa --settings 'tier1_limits' ask 'What is PaperQA2?' ``` This will limit your system to use the [tier1_limits](src/paperqa/configs/tier1_limits.json), and slow down your queries to accommodate. You can also specify them manually with any rate limit string that matches the specification in the [limits](https://limits.readthedocs.io/en/stable/quickstart.html#rate-limit-string-notation) module: ```bash pqa --summary_llm_config '{"rate_limit": {"gpt-4o-2024-11-20": "30000 per 1 minute"}}' \ ask 'What is PaperQA2?' ``` Or by adding into a `Settings` object, if calling imperatively: ```python from paperqa import Settings, ask answer_response = ask( "What is PaperQA2?", settings=Settings( llm_config={"rate_limit": {"gpt-4o-2024-11-20": "30000 per 1 minute"}}, summary_llm_config={"rate_limit": {"gpt-4o-2024-11-20": "30000 per 1 minute"}}, ), ) ``` ## Library Usage PaperQA2's full workflow can be accessed via Python directly: ```python from paperqa import Settings, ask answer_response = ask( "What is PaperQA2?", settings=Settings(temperature=0.5, paper_directory="my_papers"), ) ``` Please see our [installation docs](#installation) for how to install the package from PyPI. ### Agentic Adding/Querying Documents The answer object has the following attributes: `formatted_answer`, `answer` (answer alone), `question` , and `context` (the summaries of passages found for answer). `ask` will use the `SearchPapers` tool, which will query a local index of files, you can specify this location via the `Settings` object: ```python from paperqa import Settings, ask answer_response = ask( "What is PaperQA2?", settings=Settings( temperature=0.5, agent={"index": {"paper_directory": "my_papers"}} ), ) ``` `ask` is just a convenience wrapper around the real entrypoint, which can be accessed if you'd like to run concurrent asynchronous workloads: ```python from paperqa import Settings, agent_query answer_response = await agent_query( query="What is PaperQA2?", settings=Settings( temperature=0.5, agent={"index": {"paper_directory": "my_papers"}} ), ) ``` The default agent will use an LLM based agent, but you can also specify a `"fake"` agent to use a hard coded call path of search -> gather evidence -> answer to reduce token usage. ### Manual (No Agent) Adding/Querying Documents Normally via agent execution, the agent invokes the search tool, which adds documents to the `Docs` object for you behind the scenes. However, if you prefer fine-grained control, you can directly interact with the `Docs` object. Note that manually adding and querying `Docs` does not impact performance. It just removes the automation associated with an agent picking the documents to add. ```python from paperqa import Docs, Settings # valid extensions include .pdf, .txt, .md, .html, .docx, .xlsx, .pptx, and code files (e.g., .py, .ts, .yaml) doc_paths = ("myfile.pdf", "myotherfile.pdf") # Prepare the Docs object by adding a bunch of documents docs = Docs() for doc_path in doc_paths: await docs.aadd(doc_path) # Set up how we want to query the Docs object settings = Settings() settings.llm = "claude-3-5-sonnet-20240620" settings.answer.answer_max_sources = 3 # Query the Docs object to get an answer session = await docs.aquery("What is PaperQA2?", settings=settings) print(session) ``` ### Async PaperQA2 is written to be used asynchronously. The synchronous API is just a wrapper around the async. Here are the methods and their `async` equivalents: | Sync | Async | | ------------------- | -------------------- | | `Docs.add` | `Docs.aadd` | | `Docs.add_file` | `Docs.aadd_file` | | `Docs.add_url` | `Docs.aadd_url` | | `Docs.get_evidence` | `Docs.aget_evidence` | | `Docs.query` | `Docs.aquery` | The synchronous version just calls the async version in a loop. Most modern python environments support `async` natively (including Jupyter notebooks!). So you can do this in a Jupyter Notebook: ```python import asyncio from paperqa import Docs async def main() -> None: docs = Docs() # valid extensions include .pdf, .txt, .md, .html, .docx, .xlsx, .pptx, and code files (e.g., .py, .ts, .yaml) for doc in ("myfile.pdf", "myotherfile.pdf"): await docs.aadd(doc) session = await docs.aquery("What is PaperQA2?") print(session) asyncio.run(main()) ``` ### Choosing Model By default, PaperQA2 uses OpenAI's `gpt-4o-2024-11-20` model for the `summary_llm`, `llm`, and `agent_llm`. Please see the [Settings Cheatsheet](#settings-cheatsheet) for more information on these settings. PaperQA2 also defaults to using OpenAI's `text-embedding-3-small` model for the `embedding` setting. If you don't have an OpenAI API key, you can use a different embedding model. More information about embedding models can be found [in the "Embedding Model" section](#embedding-model). We use the [`lmi`](https://github.com/Future-House/ldp/tree/main/packages/lmi) package for our LLM interface, which in turn uses `litellm` to support many LLM providers. You can adjust this easily to use any model supported by `litellm`: ```python from paperqa import Settings, ask answer_response = ask( "What is PaperQA2?", settings=Settings( llm="gpt-4o-mini", summary_llm="gpt-4o-mini", agent={"index": {"paper_directory": "my_papers"}} ), ) ``` To use Claude, make sure you set the `ANTHROPIC_API_KEY` environment variable. In this example, we also use a different embedding model. Please make sure to `pip install paper-qa[local]` to use a local embedding model. ```python from paperqa import Settings, ask from paperqa.settings import AgentSettings answer_response = ask( "What is PaperQA2?", settings=Settings( llm="claude-3-5-sonnet-20240620", summary_llm="claude-3-5-sonnet-20240620", agent=AgentSettings(agent_llm="claude-3-5-sonnet-20240620"), # SEE: https://huggingface.co/sentence-transformers/multi-qa-MiniLM-L6-cos-v1 embedding="st-multi-qa-MiniLM-L6-cos-v1", ), ) ``` Or Gemini, by setting the `GEMINI_API_KEY` from Google AI Studio ```python from paperqa import Settings, ask from paperqa.settings import AgentSettings answer_response = ask( "What is PaperQA2?", settings=Settings( llm="gemini/gemini-2.0-flash", summary_llm="gemini/gemini-2.0-flash", agent=AgentSettings(agent_llm="gemini/gemini-2.0-flash"), embedding="gemini/text-embedding-004", ), ) ``` #### Locally Hosted You can use llama.cpp to be the LLM. Note that you should be using relatively large models, because PaperQA2 requires following a lot of instructions. You won't get good performance with 7B models. The easiest way to get set-up is to download a [llama file](https://github.com/Mozilla-Ocho/llamafile) and execute it with `-cb -np 4 -a my-llm-model --embedding` which will enable continuous batching and embeddings. ```python from paperqa import Settings, ask local_llm_config = dict( model_list=[ dict( model_name="my_llm_model", litellm_params=dict( model="my-llm-model", api_base="http://localhost:8080/v1", api_key="sk-no-key-required", temperature=0.1, frequency_penalty=1.5, max_tokens=512, ), ) ] ) answer_response = ask( "What is PaperQA2?", settings=Settings( llm="my-llm-model", llm_config=local_llm_config, summary_llm="my-llm-model", summary_llm_config=local_llm_config, ), ) ``` Models hosted with `ollama` are also supported. To run the example below make sure you have downloaded llama3.2 and mxbai-embed-large via ollama. ```python from paperqa import Settings, ask local_llm_config = { "model_list": [ { "model_name": "ollama/llama3.2", "litellm_params": { "model": "ollama/llama3.2", "api_base": "http://localhost:11434", }, } ] } answer_response = ask( "What is PaperQA2?", settings=Settings( llm="ollama/llama3.2", llm_config=local_llm_config, summary_llm="ollama/llama3.2", summary_llm_config=local_llm_config, embedding="ollama/mxbai-embed-large", ), ) ``` ### Embedding Model Embeddings are used to retrieve k texts (where k is specified via `Settings.answer.evidence_k`) for re-ranking and contextual summarization. If you don't want to use embeddings, but instead just fetch all chunks, disable "evidence retrieval" via the `Settings.answer.evidence_retrieval` setting. PaperQA2 defaults to using OpenAI (`text-embedding-3-small`) embeddings, but has flexible options for both vector stores and embedding choices. #### Specifying the Embedding Model The simplest way to specify the embedding model is via `Settings.embedding`: ```python from paperqa import Settings, ask answer_response = ask( "What is PaperQA2?", settings=Settings(embedding="text-embedding-3-large"), ) ``` `embedding` accepts any embedding model name supported by litellm. PaperQA2 also supports an embedding input of `"hybrid-"` i.e. `"hybrid-text-embedding-3-small"` to use a hybrid sparse keyword (based on a token modulo embedding) and dense vector embedding, where any litellm model can be used in the dense model name. `"sparse"` can be used to use a sparse keyword embedding only. Embedding models are used to create PaperQA2's index of the full-text embedding vectors (`texts_index` argument). The embedding model can be specified as a setting when you are adding new papers to the `Docs` object: ```python from paperqa import Docs, Settings docs = Docs() for doc in ("myfile.pdf", "myotherfile.pdf"): await docs.aadd(doc, settings=Settings(embedding="text-embedding-large-3")) ``` Note that PaperQA2 uses Numpy as a dense vector store. Its design of using a keyword search initially reduces the number of chunks needed for each answer to a relatively small number < 1k. Therefore, `NumpyVectorStore` is a good place to start, it's a simple in-memory store, without an index. However, if a larger-than-memory vector store is needed, you can an external vector database like [Qdrant](https://qdrant.tech/) via the `QdrantVectorStore` class. The hybrid embeddings can be customized: ```python from paperqa import ( Docs, HybridEmbeddingModel, SparseEmbeddingModel, LiteLLMEmbeddingModel, ) model = HybridEmbeddingModel( models=[LiteLLMEmbeddingModel(), SparseEmbeddingModel(ndim=1024)] ) docs = Docs() for doc in ("myfile.pdf", "myotherfile.pdf"): await docs.aadd(doc, embedding_model=model) ``` The sparse embedding (keyword) models default to having 256 dimensions, but this can be specified via the `ndim` argument. #### Local Embedding Models (Sentence Transformers) You can use a `SentenceTransformerEmbeddingModel` model if you install `sentence-transformers`, which is [a local embedding library](https://sbert.net/) with support for HuggingFace models and more. You can install it by adding the `local` extras. ```sh pip install paper-qa[local] ``` and then prefix embedding model names with `st-`: ```python from paperqa import Settings, ask answer_response = ask( "What is PaperQA2?", settings=Settings(embedding="st-multi-qa-MiniLM-L6-cos-v1"), ) ``` or with a hybrid model ```python from paperqa import Settings, ask answer_response = ask( "What is PaperQA2?", settings=Settings(embedding="hybrid-st-multi-qa-MiniLM-L6-cos-v1"), ) ``` ### Adjusting number of sources You can adjust the numbers of sources (passages of text) to reduce token usage or add more context. `k` refers to the top k most relevant and diverse (may from different sources) passages. Each passage is sent to the LLM to summarize, or determine if it is irrelevant. After this step, a limit of `max_sources` is applied so that the final answer can fit into the LLM context window. Thus, `k` > `max_sources` and `max_sources` is the number of sources used in the final answer. ```python from paperqa import Settings settings = Settings() settings.answer.answer_max_sources = 3 settings.answer.evidence_k = 5 await docs.aquery( "What is PaperQA2?", settings=settings, ) ``` ### Using Code or HTML You do not need to use papers -- you can use code or raw HTML. Note that this tool is focused on answering questions, so it won't do well at writing code. One note is that the tool cannot infer citations from code, so you will need to provide them yourself. ```python import glob import os from paperqa import Docs source_files = glob.glob("**/*.js") docs = Docs() for f in source_files: # this assumes the file names are unique in code await docs.aadd( f, citation="File " + os.path.basename(f), docname=os.path.basename(f) ) session = await docs.aquery("Where is the search bar in the header defined?") print(session) ``` ### Multimodal Support Multimodal support centers on: - Standalone images - Images or tables in PDFs The `Docs` object stores media via a `ParsedMedia` object. When chunking a document, media are not split at chunk boundaries, so it's possible 2+ chunks can correspond with the same media. This means within PaperQA each chunk has a one-to-many relationship between `ParsedMedia` and chunks. Depending on the source document, the same image can appear multiple times (e.g. each page of a PDF has a logo in the margins). Thus, clients should consider media databases to have a many-to-many relationship with chunks. Since PaperQA's evidence gathering process centers on text-based retrieval, it's possible relevant image(s) or table(s) aren't retrieved because their associated text content is irrelevant. For a concrete example, imagine the figure in a paper has a terse caption and is placed one page after relevant main-text discussion. To solve this problem, PaperQA supports media enrichment at document read-time. Basically after reading in the PDF, the `parsing.enrichment_llm` is given the `parsing.enrichment_prompt` and co-located text to generate a synthetic caption for every image/table. The synthetic captions are used to shift the embeddings of each text chunk, but are kept separate from the actual source text. This way evidence gathering can fetch relevant images/tables without risk of polluting contextual summaries with LLM-generated captions. If you want multimodal PDF reading, but do not want enrichment (since adds one LLM prompt/media at read-time), enrichment can be disabled by setting `parsing.multimodal` to `ON_WITHOUT_ENRICHMENT`. When creating contextual summaries on a given chunk (a `Text`), the summary LLM is passed both the chunk's text and the chunk's associated media, but the output contextual summary itself remains text-only. If you would like, specifying the prompt `paperqa.prompts.summary_json_multimodal_system_prompt` to the setting `prompt.summary_json_system` will include a `used_images` flag attributing usage of images in any contextual summarizations. ### Using External DB/Vector DB and Caching You may want to cache parsed texts and embeddings in an external database or file. You can then build a Docs object from those directly: ```python from paperqa import Docs, Doc, Text docs = Docs() for ... in my_docs: doc = Doc(docname=..., citation=..., dockey=..., citation=...) texts = [Text(text=..., name=..., doc=doc) for ... in my_texts] docs.add_texts(texts, doc) ``` ### Creating Index Indexes will be placed in the [home directory][home dir] by default. This can be controlled via the `PQA_HOME` environment variable. Indexes are made by reading files in the `IndexSettings.paper_directory`. By default, we recursively read from subdirectories of the paper directory, unless disabled using `IndexSettings.recurse_subdirectories`. The paper directory is not modified in any way, it's just read from. [home dir]: https://docs.python.org/3/library/pathlib.html#pathlib.Path.home #### Manifest Files The indexing process attempts to infer paper metadata like title and DOI using LLM-powered text processing. You can avoid this point of uncertainty using a "manifest" file, which is a CSV containing `DocDetails` fields (order doesn't matter). For example: - `file_location`: relative path to the paper's PDF within the index directory - `doi`: DOI of the paper - `title`: title of the paper By providing this information, we ensure queries to metadata providers like Crossref are accurate. To ease creating a manifest, there is a helper class method `Doc.to_csv`, which also works when called on `DocDetails`. ### Reusing Index The local search indexes are built based on a hash of the current `Settings` object. So make sure you properly specify the `paper_directory` to your `IndexSettings` object. In general, it's advisable to: 1. Pre-build an index given a folder of papers (can take several minutes) 2. Reuse the index to perform many queries ```python import os from paperqa import Settings from paperqa.agents.main import agent_query from paperqa.agents.search import get_directory_index async def amain(folder_of_papers: str | os.PathLike) -> None: settings = Settings(agent={"index": {"paper_directory": folder_of_papers}}) # 1. Build the index. Note an index name is autogenerated when unspecified built_index = await get_directory_index(settings=settings) print(settings.get_index_name()) # Display the autogenerated index name print(await built_index.index_files) # Display the index contents # 2. Use the settings as many times as you want with ask answer_response_1 = await agent_query( query="What is a cool retrieval augmented generation technique?", settings=settings, ) answer_response_2 = await agent_query( query="What is PaperQA2?", settings=settings, ) ``` ### Using Clients Directly One of the most powerful features of PaperQA2 is its ability to combine data from multiple metadata sources. For example, [Unpaywall](https://unpaywall.org/) can provide open access status/direct links to PDFs, [Crossref](https://www.crossref.org/) can provide bibtex, and [Semantic Scholar](https://www.semanticscholar.org/) can provide citation licenses. Here's a short demo of how to do this: ```python from paperqa.clients import DocMetadataClient, ALL_CLIENTS client = DocMetadataClient(metadata_clients=ALL_CLIENTS) details = await client.query(title="Augmenting language models with chemistry tools") print(details.formatted_citation) # Andres M. Bran, Sam Cox, Oliver Schilter, Carlo Baldassari, # Andrew D. White, and Philippe Schwaller. # Augmenting large language models with chemistry tools. Nature Machine Intelligence, # 6:525-535, May 2024. URL: https://doi.org/10.1038/s42256-024-00832-8, # doi:10.1038/s42256-024-00832-8. # This article has 243 citations and is from a domain leading peer-reviewed journal. print(details.citation_count) # 243 print(details.license) # cc-by print(details.pdf_url) # https://www.nature.com/articles/s42256-024-00832-8.pdf ``` the `client.query` is meant to check for exact matches of title. It's a bit robust (like to casing, missing a word). There are duplicates for titles though - so you can also add authors to disambiguate. Or you can provide a doi directly `client.query(doi="10.1038/s42256-024-00832-8")`. If you're doing this at a large scale, you may not want to use `ALL_CLIENTS` (just omit the argument) and you can specify which specific fields you want to speed up queries. For example: ```python details = await client.query( title="Augmenting large language models with chemistry tools", authors=["Andres M. Bran", "Sam Cox"], fields=["title", "doi"], ) ``` will return much faster than the first query and we'll be certain the authors match. ## Settings Cheatsheet | Setting | Default | Description | | -------------------------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | | `llm` | `"gpt-4o-2024-11-20"` | LLM for general use including metadata inference (see Docs.aadd) and answer generation (see Docs.aquery and gen_answer tool). | | `llm_config` | `None` | Optional configuration for `llm`. | | `summary_llm` | `"gpt-4o-2024-11-20"` | LLM for creating contextual summaries (see Docs.aget_evidence and gather_evidence tool). | | `summary_llm_config` | `None` | Optional configuration for `summary_llm`. | | `embedding` | `"text-embedding-3-small"` | Embedding model for embedding text chunks when adding papers. | | `embedding_config` | `None` | Optional configuration for `embedding`. | | `temperature` | `0.0` | Temperature for LLMs. | | `batch_size` | `1` | Batch size for calling LLMs. | | `texts_index_mmr_lambda` | `1.0` | Lambda for MMR in text index. | | `verbosity` | `0` | Integer verbosity level for logging (0-3). 3 = all LLM/Embeddings calls logged. | | `custom_context_serializer` | `None` | Custom async function (see typing for signature) to override the default answer context serialization. | | `answer.evidence_k` | `10` | Number of evidence pieces to retrieve. | | `answer.evidence_retrieval` | `True` | Use retrieval vs processing all docs. | | `answer.evidence_summary_length` | `"about 100 words"` | Length of evidence summary. | | `answer.evidence_skip_summary` | `False` | Whether to skip summarization. | | `answer.evidence_text_only_fallback` | `False` | Whether to allow context creation to retry without media present. | | `answer.answer_max_sources` | `5` | Max number of sources for an answer. | | `answer.max_answer_attempts` | `None` | Max attempts to generate an answer. | | `answer.answer_length` | `"about 200 words, but can be longer"` | Length of final answer. | | `answer.max_concurrent_requests` | `4` | Max concurrent requests to LLMs. | | `answer.answer_filter_extra_background` | `False` | Whether to cite background info from model. | | `answer.get_evidence_if_no_contexts` | `True` | Allow lazy evidence gathering. | | `answer.group_contexts_by_question` | `False` | Groups the final contexts by the underlying `gather_evidence` question in the final context prompt. | | `answer.evidence_relevance_score_cutoff` | `1` | Cutoff evidence relevance score to include in the answer context (inclusive) | | `answer.skip_evidence_citation_strip` | `False` | Skip removal of citations from the `gather_evidence` contexts | | `parsing.page_size_limit` | `1,280,000` | Character limit per page. | | `parsing.use_doc_details` | `True` | Whether to get metadata details for docs. | | `parsing.reader_config` | `dict` | Optional keyword arguments for the document reader. | | `parsing.multimodal` | `True` | Control to parse both text and media from applicable documents, as well as potentially enriching them with text descriptions. | | `parsing.defer_embedding` | `False` | Whether to defer embedding until summarization. | | `parsing.parse_pdf` | `paperqa_pypdf.parse_pdf_to_pages` | Function to parse PDF files. | | `parsing.configure_pdf_parser` | No-op | Callable to configure the PDF parser within `parse_pdf`, useful for behaviors such as enabling logging. | | `parsing.doc_filters` | `None` | Optional filters for allowed documents. | | `parsing.use_human_readable_clinical_trials` | `False` | Parse clinical trial JSONs into readable text. | | `parsing.enrichment_llm` | `"gpt-4o-2024-11-20"` | LLM for media enrichment. | | `parsing.enrichment_llm_config` | `None` | Optional configuration for `enrichment_llm`. | | `parsing.enrichment_page_radius` | `1` | Page radius for context text in enrichment. | | `parsing.enrichment_prompt` | `image_enrichment_prompt_template` | Prompt template for enriching media. | | `parsing.citation_prompt` | `citation_prompt` | Prompt to create citation from peeking one chunk. | | `parsing.structured_citation_prompt` | `structured_citation_prompt` | Prompt to create a citation (in JSON) from peeking one chunk. | | `parsing.disable_doc_valid_check` | `False` | Flag to disable checking if a document looks like text (was parsed correctly). | | `prompts.summary` | `summary_prompt` | Template for summarizing text, must contain variables matching `summary_prompt`. | | `prompts.qa` | `qa_prompt` | Template for QA, must contain variables matching `qa_prompt`. | | `prompts.select` | `select_paper_prompt` | Template for selecting papers, must contain variables matching `select_paper_prompt`. | | `prompts.pre` | `None` | Optional pre-prompt templated with just the original question to append information before a qa prompt. | | `prompts.post` | `None` | Optional post-processing prompt that can access PQASession fields. | | `prompts.system` | `default_system_prompt` | System prompt for the model. | | `prompts.use_json` | `True` | Whether to use JSON formatting. | | `prompts.summary_json` | `summary_json_prompt` | JSON-specific summary prompt. | | `prompts.summary_json_system` | `summary_json_system_prompt` | System prompt for JSON summaries. | | `prompts.context_outer` | `CONTEXT_OUTER_PROMPT` | Prompt for how to format all contexts in generate answer. | | `prompts.context_inner` | `CONTEXT_INNER_PROMPT` | Prompt for how to format a single context in generate answer. Must contain 'name' and 'text' variables. | | `prompts.answer_iteration_prompt` | `answer_iteration_prompt_template` | Prompt to inject existing prior answers to allow iteration. Default injects no prior answers. | | `agent.agent_llm` | `"gpt-4o-2024-11-20"` | LLM inside the agent making tool selections. | | `agent.agent_llm_config` | `None` | Optional configuration for `agent_llm`. | | `agent.agent_type` | `"ToolSelector"` | Type of agent to use. | | `agent.agent_config` | `None` | Optional kwarg for AGENT constructor. | | `agent.agent_system_prompt` | `env_system_prompt` | Optional system prompt message. | | `agent.agent_prompt` | `env_reset_prompt` | Agent prompt. | | `agent.return_paper_metadata` | `False` | Whether to include paper title/year in search tool results. | | `agent.search_count` | `8` | Search count. | | `agent.timeout` | `500.0` | Timeout on agent execution (seconds). | | `agent.tool_names` | `None` | Optional override on tools to provide the agent. | | `agent.max_timesteps` | `None` | Optional upper limit on environment steps. | | `agent.agent_evidence_n` | `1` | Top n ranked evidences shown to the agent after gathering evidence. | | `agent.rebuild_index` | `True` | Flag to rebuild the index at the start of agent runners. | | `agent.callbacks` | `{}` | Named lists of callables to be invoked with environment state. | | `agent.index.name` | `None` | Optional name of the index. | | `agent.index.paper_directory` | `Current working directory` | Directory containing papers to be indexed. | | `agent.index.manifest_file` | `None` | Path to manifest CSV with document attributes. | | `agent.index.index_directory` | `pqa_directory("indexes")` | Directory to store PQA indexes. | | `agent.index.use_absolute_paper_directory` | `False` | Whether to use absolute paper directory path. | | `agent.index.recurse_subdirectories` | `True` | Whether to recurse into subdirectories when indexing. | | `agent.index.concurrency` | `5` | Number of concurrent filesystem reads. | | `agent.index.sync_with_paper_directory` | `True` | Whether to sync index with paper directory on load. | | `agent.index.batch_size` | `1` | Number of files to process before committing to the index. | | `agent.index.files_filter` | `lambda f: f.suffix in {...}` | Filter function to mark files in the paper directory to index. | ## Where do I get papers? Well that's a really good question! It's probably best to just download PDFs of papers you think will help answer your question and start from there. See detailed docs [about zotero, openreview and parsing](docs/tutorials/where_do_I_get_papers.md) ## Callbacks To execute a function on each chunk of LLM completions, you need to provide a function that can be executed on each chunk. For example, to get a typewriter view of the completions, you can do: ```python from paperqa import Docs def typewriter(chunk: str) -> None: print(chunk, end="") docs = Docs() # add some docs... await docs.aquery("What is PaperQA2?", callbacks=[typewriter]) ``` ### Caching Embeddings In general, embeddings are cached when you pickle a `Docs` regardless of what vector store you use. So as long as you save your underlying `Docs` object, you should be able to avoid re-embedding your documents. ## Customizing Prompts You can customize any of the prompts using settings. ```python from paperqa import Docs, Settings my_qa_prompt = ( "Answer the question '{question}'\n" "Use the context below if helpful. " "You can cite the context using the key like (pqac-abcd1234). " "If there is insufficient context, write a poem " "about how you cannot answer.\n\n" "Context: {context}" ) docs = Docs() settings = Settings() settings.prompts.qa = my_qa_prompt await docs.aquery("What is PaperQA2?", settings=settings) ``` ### Pre and Post Prompts Following the syntax above, you can also include prompts that are executed after the query and before the query. For example, you can use this to critique the answer. ## FAQ ### How come I get different results than your papers? Internally at FutureHouse, we have a slightly different set of tools. We're trying to get some of them, like citation traversal, into this repo. However, we have APIs and licenses to access research papers that we cannot share openly. Similarly, in our research papers' results we do not start with the known relevant PDFs. Our agent has to identify them using keyword search over all papers, rather than just a subset. We're gradually aligning these two versions of PaperQA, but until there is an open-source way to freely access papers (even just open source papers) you will need to provide PDFs yourself. ### How is this different from LlamaIndex or LangChain? [LangChain](https://github.com/langchain-ai/langchain) and [LlamaIndex](https://github.com/run-llama/llama_index) are both frameworks for working with LLM applications, with abstractions made for agentic workflows and retrieval augmented generation. Over time, the PaperQA team over time chose to become framework-agnostic, instead outsourcing LLM drivers to [LiteLLM][LiteLLM general docs] and no framework besides Pydantic for its tools. PaperQA focuses on scientific papers and their metadata. PaperQA can be reimplemented using either LlamaIndex or LangChain. For example, our `GatherEvidence` tool can be reimplemented as a retriever with an LLM-based re-ranking and contextual summary. There is similar work with the tree response method in LlamaIndex. ### Can I save or load? The `Docs` class can be pickled and unpickled. This is useful if you want to save the embeddings of the documents and then load them later. ```python import pickle # save with open("my_docs.pkl", "wb") as f: pickle.dump(docs, f) # load with open("my_docs.pkl", "rb") as f: docs = pickle.load(f) ``` ## Reproduction Contained in [docs/2024-10-16_litqa2-splits.json5](docs/2024-10-16_litqa2-splits.json5) are the question IDs used in train, evaluation, and test splits, as well as paper DOIs used to build the splits' indexes. - Train and eval splits: question IDs come from [LAB-Bench's LitQA2 question IDs](https://github.com/Future-House/LAB-Bench/blob/main/LitQA2/litqa-v2-public.jsonl). - Test split: questions IDs come from [aviary-paper-data's LitQA2 question IDs](https://huggingface.co/datasets/futurehouse/aviary-paper-data). There are multiple papers slowly building PaperQA, shown below in [Citation](#citation). To reproduce: - `skarlinski2024language`: train and eval splits are applicable. The test split remains held out. - `narayanan2024aviarytraininglanguageagents`: train, eval, and test splits are applicable. Example on how to use LitQA for evaluation can be found in [aviary.litqa](https://github.com/Future-House/aviary/tree/main/packages/litqa#running-litqa). ## Citation Please read and cite the following papers if you use this software: ```bibtex @article{narayanan2024aviarytraininglanguageagents, title = {Aviary: training language agents on challenging scientific tasks}, author = { Siddharth Narayanan and James D. Braza and Ryan-Rhys Griffiths and Manu Ponnapati and Albert Bou and Jon Laurent and Ori Kabeli and Geemi Wellawatte and Sam Cox and Samuel G. Rodriques and Andrew D. White}, journal = {arXiv preprent arXiv:2412.21154}, year = {2024}, url = {https://doi.org/10.48550/arXiv.2412.21154}, } ``` ```bibtex @article{skarlinski2024language, title = {Language agents achieve superhuman synthesis of scientific knowledge}, author = { Michael D. Skarlinski and Sam Cox and Jon M. Laurent and James D. Braza and Michaela Hinks and Michael J. Hammerling and Manvitha Ponnapati and Samuel G. Rodriques and Andrew D. White}, journal = {arXiv preprent arXiv:2409.13740}, year = {2024}, url = {https://doi.org/10.48550/arXiv.2409.13740} } ``` ```bibtex @article{lala2023paperqa, title = {PaperQA: Retrieval-Augmented Generative Agent for Scientific Research}, author = { Jakub Lála and Odhran O'Donoghue and Aleksandar Shtedritski and Sam Cox and Samuel G. Rodriques and Andrew D. White}, journal = {arXiv preprint arXiv:2312.07559}, year = {2023}, url = {https://doi.org/10.48550/arXiv.2312.07559} } ``` ================================================ FILE: docs/2024-10-16_litqa2-splits.json5 ================================================ // Train, evaluation, and test DOIs here were generated from historical data // aggregated across many runs made while writing DOI 10.48550/arXiv.2409.13740 { train: { question_ids: [ "04dbe07d-8b2c-4daf-b5b2-ef0e93f1fd2a", "0708b62f-9652-49eb-8ba6-28878afa7445", "0a9d6516-95ef-4d7b-a28d-d7cde27b7b55", "0bac8974-554c-439a-a9a2-22fa509c8d5d", "0d5cf8a7-a240-4a8f-be4e-c16712f90d79", "0eeb7ea9-fc80-4dee-9418-1c328c3ab653", "0eede7a8-fe1f-42d3-a2c6-478083648644", "10cece36-a507-4a93-9600-13f3e0e677f8", "12a20d8d-cd49-47eb-9a19-6a38519ee3dc", "14fd2b75-76fb-4c29-a21d-c557b2bcf2ff", "178a5e56-340f-4ba8-a3e5-f024ca016f40", "1e5f5199-84f4-4133-ab87-2372fa6ca722", "1f1b07d7-39ce-4665-9b70-4ab77e3c87aa", "1ff2b2e4-492e-4e35-bf33-f0fb53ab938c", "20980744-f9ff-4e39-a08d-106eada6900c", "22306bd7-7e84-415d-aebb-11c6312eb081", "224efcd7-3652-47f8-84dd-15b4c6fafae2", "230dec20-cd02-4613-a7b1-e28058ed46fe", "247eeb85-a552-4b87-b83e-327538fcb8a9", "24fae97b-03f3-48b8-b623-abf07faee02e", "255fd5fb-9623-4030-8bf2-253247df7c82", "25a9cf59-1c28-4ddf-b797-f43efb9349e6", "26691c84-514b-4712-a43e-09705d681e45", "27234279-f50c-4cfc-86e2-af68364a8f94", "2c05315d-6898-4667-b454-d99b7381bedb", "2c262f91-52b6-421d-8341-8748f923459e", "2c3ba95c-47d5-4798-9911-ffdb11c940e4", "2dc20a2f-de54-4bfe-a34f-1ba395f342cf", "322454df-45a8-41b3-9b0a-4e808144023c", "37a4d007-793e-4a89-922a-c1b05f4f82c1", "39129e1c-096f-4414-bf4f-37fadbbe364c", "398ebac1-fd2d-45b1-9415-d82db4b4d83c", "39c985ce-70e8-48e4-bd76-744cd07cb56a", "3c9f23e2-fdd0-431b-aca7-4f9556c78f1f", "3d3fea17-c8ee-4005-94cb-d8798be696c3", "3d40f373-59d3-4666-87bd-6db64fd7b4fb", "3f5bae15-bd5d-43e3-8e5e-944b1e533529", "400786c1-e6c6-4f46-a501-86fdd048ed88", "462a9f38-7cbe-4e12-a6e2-b1d7028c3a8b", "487539f9-2f17-4009-aa4a-c41322445f11", "4949fc05-5f78-4dd0-8d9c-3dbb6004740a", "4a6705b5-85e5-44c1-8444-65be30192802", "4bb69c9d-2485-42d2-b8aa-aa647b407ca4", "4d11258d-ee8c-4bc7-91a8-613c7a41f139", "4d4cb121-9525-499a-9475-9b212465c72d", "5049c648-b1bb-4624-8824-9d93dfb04e51", "517e7cf8-c5d2-4391-9e2a-235b79d93050", "55668039-396e-488a-b2c3-bbe840550433", "564e715f-8d30-410b-bdb5-0dc5206589a7", "58950824-2665-445d-939b-9512d5d01a2b", "58b39fab-337b-452d-b74f-84f9a188ce88", "5966d3db-5a23-4ea7-a719-2472019d94a6", "59745f75-52bf-4815-905c-3dfad1ef8923", "5a2128ad-3127-4595-b810-db128d1a2335", "5a9c6697-a65c-49c0-9e02-38b2a276fde7", "5b3b7d05-9e54-445c-b374-d4c6b60923b4", "5b6d6f82-a585-4aa8-9fe6-e7d35f7cb2ae", "5c4c602c-9624-4eae-ac44-efe4c0dd10e6", "5c808548-92c4-4ae7-990c-e2df81e3c2ae", "5e20e26d-6192-4563-abb3-a4857e3dbc7c", "623a831f-41ee-4e0e-936a-87f93d96369e", "634f6745-f3b3-4cb1-9859-96ffb954b98a", "653635b7-3bc6-4a7b-98c7-c02038c0e928", "658f7050-d137-477e-8693-26609080cecd", "6f8a51e2-f7ad-4033-b43d-370348e4809f", "6fff0994-6d02-470a-9d61-8e35420412b6", "720e20c2-9ad1-4d98-9f01-8b7fb3782a46", "745f5a0d-5f8f-405e-bb46-f37b3d1f0678", "76bcaeeb-93bd-4951-99b9-cf4613de1a37", "77a41274-cd9c-48bc-a347-e0746907840d", "78a2c1d2-f035-4c7d-a7ee-40dfd95ca88a", "7975ddb0-a784-4f85-a297-c80e1cb5dcf2", "7a42c784-7ae0-48fe-a71f-0a547b8fabb3", "7cf0fcde-fea8-420c-8531-2f2fe9e38980", "7d2c8d44-ecf3-40d2-ab69-b6195c46ffe9", "7d71dffb-b591-4b88-b0c6-e125a1b083b4", "7d805bb8-4c7c-431f-b068-acf5e5459985", "7e7150d6-bc73-4a29-a5b3-4ef8399ed947", "80e6571e-8f5d-496a-8ba3-9c9f5b783f5d", "8266ac61-92d6-423d-8e7a-fe47b3a7e885", "82de3e92-abe2-46ac-ad17-23417b9c4da7", "837b2489-723a-4099-9b68-c2a9ea688f4d", "850f86d3-0139-43df-89fd-e606c30aaa8b", "85c67ef3-322c-42b4-b745-c05e07e7b8ac", "8696273a-7fea-411a-b6c6-0e826e1e02b5", "86f111e5-402b-4ef5-b101-8be1bf5be7c6", "8ade3e3a-4792-4965-b9d9-05e528ebbfa0", "8b665114-7729-4dac-a64f-4862a5397b82", "8c833521-56c4-458d-8c65-2bbf66190cae", "8d61a14b-60ef-43b0-8003-b60cb6657428", "8d7fa642-ee46-4a13-8ea9-61cc2d4f4ddd", "9088251a-99fe-4b91-b6a9-375154ec4f58", "91387526-9268-4a3c-9abe-73819707d0b0", "925ffe20-b8a9-4ac4-943c-7a16966f4a4b", "941c04dc-c89d-4a90-87b0-930625268a38", "983f1ef5-fc7d-4f4a-8f48-e704641eae12", "99713efa-d1b1-4fc5-a4b1-cbae2b3a5798", "9a0b82cb-6a99-4e50-83fc-3ef2ebd277cc", "9f797d29-9f3a-481d-b2fe-326cbc686273", "a18883e9-218a-4719-8d2c-cf94d740de1a", "a1d01019-d2b1-4619-92ec-7ea38578819f", "a214f5f8-0de8-43cf-82e0-7930003e4a0c", "a43e5166-d0e8-48f8-a113-648acac7ed59", "a45c277e-55d9-4e7f-b1de-37fc2e19daf6", "a6622141-68d6-418f-8e30-7a5eff3d4fa8", "a8aa19cc-e4d1-4aa1-8c4e-2a518b4c99d6", "aa1835b2-2b1c-4986-b7af-e174da0124b0", "aaa85379-1e4b-4642-9ec4-e1a6d6c29c3b", "ab58e166-f0b5-49ae-ac56-c38b5d6e8aad", "ab5eb050-d134-4445-9307-6faa08be7474", "ade96656-7ed1-4e21-b009-b7a73e13bff5", "b1d5a5f5-6e89-4dfb-b60d-5a9824b015f3", "b2a0249b-2850-4576-8b78-8408c1e47324", "b331480e-dfc7-4e92-931a-c71f491c4795", "b8ec372b-ae29-473e-96bc-86ff1ead24ea", "bace5737-ba26-422a-8706-0fb1e92b689f", "bca1be77-208b-4d57-ac29-05aa6d58bdbf", "bcd2f213-c6c6-4660-af35-a7bd1c6a1170", "c246753c-27d2-4ae4-8630-b9b4077ba6f6", "c33446f6-fbff-4186-8a51-28a17f68bd40", "c3816cb5-8c87-4946-b133-43f415ab6b2a", "c624ed31-214f-4c80-9544-5514a096b1d3", "c758f685-ba4a-4bf0-bd85-567c60ff1508", "c7b36a1c-ea80-4ae5-b2f1-3932cb16c3cf", "c9baf8e0-c4c7-4ba3-b5c4-18e9af8b2df1", "c9bdb9b5-28c1-44da-93b6-b1fc9d8bf369", "ca4c9d21-b842-4875-9a6a-bcb9f6c55073", "cb710074-73a8-4407-b0c7-7dc868f1bc76", "cbe93a43-09cd-4cb4-9edd-f22fe8c28415", "cdc80639-dc21-4337-bccc-d61d9aec6560", "ce6dd5f7-0706-41dd-a383-9b0d22ef00a1", "cff68274-4bbe-4fa0-a181-36a9af3cc0f1", "d0f69626-66ee-4807-937d-c3a024441812", "d1307e50-3c03-4c76-81ee-2decb5de5f14", "d1eabedb-656f-4f89-a65f-4ed89478ba9f", "d2860d38-dfb9-4b80-905f-812c32573915", "d65103ae-c881-4116-a0a7-1b233eb6275a", "da5b2a8f-ba08-4692-851f-2e0bf142a02f", "dbb51a1c-f9a2-4960-a93c-118957659790", "dbfbae3d-62f6-4710-8d13-8ce4c8485567", "df061613-2591-4faa-be03-791c76375cb5", "e2fb56b7-08cd-4dc0-bc63-b45931a74fc9", "e3b5a4af-41d9-48db-becf-29a08d0ad28e", "e6b0f9e5-e976-47dc-b839-0b2fca967e9e", "e763edaa-b112-460a-a564-d58a6685e639", "e820cbcf-6df1-4c1c-b985-c02f39f52781", "e90ea0fc-4659-4b20-acae-75dc4b97a101", "e9f142f0-8ef6-47cd-b846-7283a93308d4", "ea4ce240-2864-4ee5-9ffc-2dbda0f8f550", "ebe57888-662f-488f-ade1-c0aaffe638b1", "eda34fde-798e-43a1-a9d3-a804d3d8ee4e", "f0b6cea0-e005-47bc-be0d-9a10b219cae6", "f5a4b449-e647-4ae0-8419-c221792482c9", "f5a84803-3917-43eb-801b-8dc0c5400da1", "f7346ea0-5f1b-45e9-a1d6-493c754159c1", "fca26d7c-05cf-40b0-9fd6-a63ed7950909", "fd54d745-447c-4fcd-80de-463fcd3de6a4", "fd60a0e7-ba64-49a9-843a-6f5cb17c5fa9", "fe074387-3765-4020-8f5d-e395d1094121", ], dois: [ "10.1001/archopht.117.5.670", "10.1001/archpediatrics.2011.153", "10.1001/jama.1989.03430170057028", "10.1001/jama.1994.03510360033032", "10.1001/jama.2009.1754", "10.1001/jama.299.20.2450-a", "10.1001/jamacardio.2020.1017", "10.1001/jamanetworkopen.2022.50965", "10.1001/jamaophthalmol.2018.6902", "10.1001/jamapsychiatry.2013.266", "10.1002/(sici)1096-9136(199807)15:7<539::aid-dia668>3.0.co;2-s", "10.1002/(sici)1096-9861(19960429)368:2<304::aid-cne10>3.0.co;2-h", "10.1002/(sici)1096-9861(19970407)380:2<230::aid-cne6>3.0.co;2-4", "10.1002/(sici)1096-9861(19970616)382:4<499::aid-cne6>3.0.co;2-y", "10.1002/(sici)1096-9861(19980222)391:4<444::aid-cne3>3.0.co;2-0", "10.1002/(sici)1096-9861(19980406)393:2<169::aid-cne3>3.0.co;2-0", "10.1002/(sici)1096-9861(19980928)399:3<306::aid-cne2>3.0.co;2-4", "10.1002/(sici)1096-9861(19990201)404:1<97::aid-cne8>3.0.co;2-1", "10.1002/(sici)1096-9861(19990913)412:1<95::aid-cne7>3.0.co;2-y", "10.1002/(sici)1097-0061(199911)15:15<1681::aid-yea486>3.0.co;2-a", "10.1002/(sici)1097-0061(20000115)16:1<11::aid-yea502>3.0.co;2-k", "10.1002/(sici)1097-0134(199705)28:1<72::aid-prot7>3.0.co;2-l", "10.1002/(sici)1097-0177(200006)218:2<235::aid-dvdy2>3.0.co;2-g", "10.1002/(sici)1097-4547(20000401)60:1<37::aid-jnr4>3.0.co;2-w", "10.1002/(sici)1097-4644(20000701)78:1<24::aid-jcb3>3.0.co;2-2", "10.1002/(sici)1097-4652(199908)180:2<271::aid-jcp15>3.0.co;2-d", "10.1002/(sici)1097-4652(200003)182:3<311::aid-jcp1>3.0.co;2-9", "10.1002/(sici)1097-4652(200007)184:1<1::aid-jcp1>3.0.co;2-7", "10.1002/(sici)1098-1128(200003)20:2<103::aid-med1>3.0.co;2-x", "10.1002/0471142727.mb0117s79", "10.1002/0471142727.mb2129s109", "10.1002/0471142735.im2001s108", "10.1002/0471142735.im22f05s104", "10.1002/0471250953.bi0410s25", "10.1002/0471250953.bi1110s43", "10.1002/1096-9861(20001002)425:4<479::aid-cne2>3.0.co;2-3", "10.1002/1096-9861(20001211)428:2<240::aid-cne4>3.0.co;2-q", "10.1002/1097-0142(19900815)66:4<740::aid-cncr2820660423>3.0.co;2-h", "10.1002/1097-4547(20010215)63:4<313::aid-jnr1025>3.0.co;2-4", "10.1002/1097-4644(20001201)79:3<407::aid-jcb60>3.0.co;2-8", "10.1002/1097-4687(200010)246:1<1::aid-jmor1>3.0.co;2-d", "10.1002/1098-1128(200103)21:2<105::aid-med1002>3.0.co;2-u", "10.1002/1521-4141(200211)32:11<3315::aid-immu3315>3.0.co;2-h", "10.1002/1873-3468.12826", "10.1002/1873-3468.13106", "10.1002/1873-3468.13205", "10.1002/1873-3468.13316", "10.1002/1873-3468.13502", "10.1002/1873-3468.13844", "10.1002/1873-3468.13961", "10.1002/1873-3468.14006", "10.1002/1878-0261.12407", "10.1002/1878-0261.12872", "10.1002/1878-0261.12917", "10.1002/1878-0261.13083", "10.1002/2050-7038.12014", "10.1002/2211-5463.12255", "10.1002/2211-5463.12266", "10.1002/2211-5463.12710", "10.1002/9780470057414", "10.1002/9780470758472", "10.1002/9780470960707", "10.1002/9780470976623.ch11", "10.1002/9780470999554", "10.1002/9781118675014.ch18", "10.1002/9781118924853.ch8", "10.1002/9781118971758.ch40", "10.1002/9781119023647.ch1", "10.1002/9781119043553.ch8", "10.1002/9781119143505.ch13", "10.1002/9781119179320.ch5", "10.1002/9781119380924.ch1", "10.1002/9781119409144.ch81", "10.1002/9781119593058.ch6", "10.1002/9781444316070.ch6", "10.1002/9781444316070.ch7", "10.1002/9783527611614.ch11", "10.1002/9783527699261.ch18", "10.1002/9783527818242.ch9", "10.1002/acg2.10", "10.1002/acn3.16", "10.1002/acn3.50822", "10.1002/acn3.50960", "10.1002/adbi.201800335", "10.1002/adbi.201900237", "10.1002/adem.202100696", "10.1002/adfm.200600441", "10.1002/adfm.201910250", "10.1002/adfm.202008400", "10.1002/adfm.202105749", "10.1002/adfm.202301017", "10.1002/adhm.201200195", "10.1002/adhm.201400842", "10.1002/adhm.201701067", "10.1002/adhm.201701175", "10.1002/adhm.201800490", "10.1002/adhm.201801471", "10.1002/adhm.201801578", "10.1002/adhm.202202147", "10.1002/adma.201502403", "10.1002/adma.201502454", "10.1002/adma.201702057", "10.1002/adma.201703002", "10.1002/adma.201703838", "10.1002/adma.201705322", "10.1002/adma.201803309", "10.1002/adma.201804041", "10.1002/adma.201806158", "10.1002/adma.202102580", "10.1002/adma.202103923", "10.1002/admi.202000112", "10.1002/admi.202000966", "10.1002/adsc.201100412", "10.1002/adsc.201300568", "10.1002/adsc.201701005", "10.1002/adtp.201900136", "10.1002/adtp.202000230", "10.1002/adtp.202100035", "10.1002/advs.201901222", "10.1002/advs.202003572", "10.1002/advs.202102778", "10.1002/aenm.201401401", "10.1002/ajb2.1136", "10.1002/ajhb.22243", "10.1002/ajmg.a.30621", "10.1002/ajmg.a.36751", "10.1002/ajmg.a.37107", "10.1002/ajmg.a.38718", "10.1002/ajmg.a.61063", "10.1002/ajmg.b.32755", "10.1002/ajoc.201900618", "10.1002/ajpa.10018", "10.1002/alz.038589", "10.1002/alz.12419", "10.1002/ame2.12032", "10.1002/ana.10262", "10.1002/ana.20315", "10.1002/ana.21788", "10.1002/ana.24357", "10.1002/ana.24362", "10.1002/ana.24494", "10.1002/ana.25488", "10.1002/ana.25832", "10.1002/anbr.202000068", "10.1002/anbr.202000077", "10.1002/ange.201501204", "10.1002/ange.202103696", "10.1002/anie.196204761", "10.1002/anie.200200565", "10.1002/anie.200390233", "10.1002/anie.200400618", "10.1002/anie.201410180", "10.1002/anie.201501204", "10.1002/anie.201510610", "10.1002/anie.201601233", "10.1002/anie.201703028", "10.1002/anie.201708233", "10.1002/anie.201709542", "10.1002/anie.201900585", "10.1002/anie.201903264", "10.1002/anie.202106147", "10.1002/anie.202110819", "10.1002/anie.202112232", "10.1002/ar.a.20253", "10.1002/arch.10053", "10.1002/arch.10061", "10.1002/art.23404", "10.1002/art.39481", "10.1002/art.39699", "10.1002/aur.188", "10.1002/bab.1137", "10.1002/bab.1617", "10.1002/bdr2.1416", "10.1002/bdrb.20090", "10.1002/bies.10068", "10.1002/bies.200900155", "10.1002/bies.201200043", "10.1002/bies.201300104", "10.1002/bies.201400122", "10.1002/bies.201400162", "10.1002/bies.201600203", "10.1002/bies.201670906", "10.1002/bies.201700001", "10.1002/bies.201700086", "10.1002/bies.201900171", "10.1002/bies.20198", "10.1002/bies.202000114", "10.1002/bies.202000288", "10.1002/bies.20353", "10.1002/bies.20447", "10.1002/bies.20692", "10.1002/biof.1114", "10.1002/biot.201200120", "10.1002/biot.201900228", "10.1002/biot.202000087", "10.1002/biot.202300353", "10.1002/bip.10221", "10.1002/bip.21345", "10.1002/bip.22314", "10.1002/bit.10771", "10.1002/bit.24513", "10.1002/bit.24942", "10.1002/bit.26069", "10.1002/brb3.1089", "10.1002/brb3.1591", "10.1002/btm2.10110", "10.1002/btpr.2522", "10.1002/btpr.3008", "10.1002/btpr.486", "10.1002/cam4.2397", "10.1002/cam4.2834", "10.1002/cbf.1467", "10.1002/cbf.3267", "10.1002/cbf.3497", "10.1002/cbic.201100784", "10.1002/cbic.201500084", "10.1002/cbic.201700648", "10.1002/cbic.201800665", "10.1002/cbic.201900101", "10.1002/cbic.202300480", "10.1002/cbin.11300", "10.1002/chem.200800478", "10.1002/chem.201700698", "10.1002/chem.201902113", "10.1002/chin.200745258", "10.1002/cm.970170204", "10.1002/cm.970220304", "10.1002/cmdc.201300422", "10.1002/cmdc.201500485", "10.1002/cmdc.201700118", "10.1002/cmdc.202000271", "10.1002/cmdc.202000466", "10.1002/cncr.22023", "10.1002/cncr.30659", "10.1002/cncr.31136", "10.1002/cne.10100", "10.1002/cne.10234", "10.1002/cne.10239", "10.1002/cne.1040", "10.1002/cne.10421", "10.1002/cne.10628", "10.1002/cne.10675", "10.1002/cne.10681", "10.1002/cne.10874", "10.1002/cne.1183", "10.1002/cne.20300", "10.1002/cne.20385", "10.1002/cne.20469", "10.1002/cne.20481", "10.1002/cne.20512", "10.1002/cne.20528", "10.1002/cne.20738", "10.1002/cne.20853", "10.1002/cne.21219", "10.1002/cne.21238", "10.1002/cne.21266", "10.1002/cne.21352", "10.1002/cne.21646", "10.1002/cne.21669", "10.1002/cne.21684", "10.1002/cne.21889", "10.1002/cne.22295", "10.1002/cne.22301", "10.1002/cne.22489", "10.1002/cne.22527", "10.1002/cne.22532", "10.1002/cne.22547", "10.1002/cne.22563", "10.1002/cne.22578", "10.1002/cne.23144", "10.1002/cne.23414", "10.1002/cne.23458", "10.1002/cne.23476", "10.1002/cne.23661", "10.1002/cne.23769", "10.1002/cne.23787", "10.1002/cne.23802", "10.1002/cne.23875", "10.1002/cne.23896", "10.1002/cne.24078", "10.1002/cne.24114", "10.1002/cne.24360", "10.1002/cne.24427", "10.1002/cne.24481", "10.1002/cne.24499", "10.1002/cne.24674", "10.1002/cne.24685", "10.1002/cne.24746", "10.1002/cne.24757", "10.1002/cne.24792", "10.1002/cne.24818", "10.1002/cne.25163", "10.1002/cne.25232", "10.1002/cne.901240303", "10.1002/cne.901370404", "10.1002/cne.901450305", "10.1002/cne.901520202", "10.1002/cne.901590202", "10.1002/cne.901810310", "10.1002/cne.902030412", "10.1002/cne.902340303", "10.1002/cne.902530303", "10.1002/cne.902580406", "10.1002/cne.902640107", "10.1002/cne.902730110", "10.1002/cne.902790202", "10.1002/cne.902860404", "10.1002/cne.902910105", "10.1002/cne.903200102", "10.1002/cne.903350410", "10.1002/cne.903390304", "10.1002/cne.903390402", "10.1002/cphc.201701175", "10.1002/cphy.c120035", "10.1002/cphy.c170048", "10.1002/cphy.c200027", "10.1002/cpt.698", "10.1002/cpz1.244", "10.1002/cti2.1129", "10.1002/cti2.1144", "10.1002/cti2.1336", "10.1002/cyto.990140205", "10.1002/cyto.a.20493", "10.1002/cyto.a.20920", "10.1002/cyto.a.23953", "10.1002/ddr.10366", "10.1002/dmr.5610020301", "10.1002/dneu.20399", "10.1002/dneu.20543", "10.1002/dneu.20622", "10.1002/dneu.20875", "10.1002/dneu.22014", "10.1002/dneu.22022", "10.1002/dneu.22028", "10.1002/dneu.22132", "10.1002/dneu.22143", "10.1002/dneu.22700", "10.1002/dneu.22777", "10.1002/dneu.22814", "10.1002/dneu.22849", "10.1002/dvdy.21773", "10.1002/dvdy.22259", "10.1002/dvdy.24110", "10.1002/dvdy.24167", "10.1002/dvdy.24414", "10.1002/dvdy.24612", "10.1002/dvdy.79", "10.1002/dvdy.94", "10.1002/dvg.23399", "10.1002/ece3.1720", "10.1002/ece3.3309", "10.1002/eji.1830190712", "10.1002/eji.1830230929", "10.1002/eji.1830260421", "10.1002/eji.1830270725", "10.1002/eji.200425139", "10.1002/eji.200425332", "10.1002/eji.200425463", "10.1002/eji.200425538", "10.1002/eji.200737157", "10.1002/eji.200738060", "10.1002/eji.200738078", "10.1002/eji.200838283", "10.1002/eji.201040440", "10.1002/eji.201041105", "10.1002/eji.201041117", "10.1002/eji.201141670", "10.1002/eji.201141717", "10.1002/eji.201142298", "10.1002/eji.201242433", "10.1002/eji.201343349", "10.1002/eji.201343381", "10.1002/eji.201343509", "10.1002/eji.201343579", "10.1002/eji.201343751", "10.1002/eji.201344203", "10.1002/eji.201344269", "10.1002/eji.201444467", "10.1002/eji.201444540", "10.1002/eji.201444806", "10.1002/eji.201444902", "10.1002/eji.201445284", "10.1002/eji.201445295", "10.1002/eji.201545749", "10.1002/eji.201546094", "10.1002/eji.201646399", "10.1002/eji.201747208", "10.1002/eji.201847659", "10.1002/eji.201847868", "10.1002/eji.201948405", "10.1002/eji.202048655", "10.1002/eji.202048769", "10.1002/eji.202048992", "10.1002/ejoc.201901108", "10.1002/elps.1150181505", "10.1002/elps.200305601", "10.1002/elps.200305844", "10.1002/elps.200410423", "10.1002/elps.201900030", "10.1002/em.21892", "10.1002/emmm.200900018", "10.1002/emmm.201100626", "10.1002/emmm.201201717", "10.1002/etc.3670", "10.1002/gcc.20636", "10.1002/gene.10024", "10.1002/gene.10204", "10.1002/glia.10337", "10.1002/glia.20407", "10.1002/glia.20565", "10.1002/glia.20622", "10.1002/glia.20863", "10.1002/glia.21089", "10.1002/glia.21247", "10.1002/glia.22661", "10.1002/glia.22727", "10.1002/glia.22836", "10.1002/glia.22898", "10.1002/glia.22899", "10.1002/glia.23176", "10.1002/glia.23311", "10.1002/glia.23458", "10.1002/glia.23592", "10.1002/glia.23695", "10.1002/glia.23740", "10.1002/glia.23753", "10.1002/glia.23780", "10.1002/glia.23815", "10.1002/glia.24053", "10.1002/glia.24105", "10.1002/glia.24144", "10.1002/glia.440070105", "10.1002/hbm.22896", "10.1002/hbm.25001", "10.1002/hep.22468", "10.1002/hep.24570", "10.1002/hep.29242", "10.1002/hep.29681", "10.1002/hep.29778", "10.1002/hep.31875", "10.1002/hep.32349", "10.1002/hep.510230113", "10.1002/hep.510310237", "10.1002/hep4.1045", "10.1002/hipo.20151", "10.1002/hipo.20529", "10.1002/hipo.20577", "10.1002/hipo.20594", "10.1002/hipo.20762", "10.1002/hipo.20845", "10.1002/hipo.23291", "10.1002/hipo.23568", "10.1002/hon.2251", "10.1002/hon.2437_68", "10.1002/humu.10277", "10.1002/humu.21110", "10.1002/humu.23191", "10.1002/humu.23706", "10.1002/humu.23760", "10.1002/humu.23995", "10.1002/ibd.20805", "10.1002/iid3.136", "10.1002/iid3.71", "10.1002/ijc.1196", "10.1002/ijc.1477", "10.1002/ijc.21731", "10.1002/ijc.24788", "10.1002/ijc.29301", "10.1002/ijc.31313", "10.1002/ijc.31985", "10.1002/ijc.32084", "10.1002/ijc.33131", "10.1002/ijc.33382", "10.1002/iub.1601", "10.1002/iub.1612", "10.1002/iub.217", "10.1002/iub.2278", "10.1002/iub.530", "10.1002/iub.608", "10.1002/j.1460-2075.1987.tb04817.x", "10.1002/j.1460-2075.1994.tb06274.x", "10.1002/j.1460-2075.1995.tb06994.x", "10.1002/jat.3451", "10.1002/jbm.a.31019", "10.1002/jbm.a.37093", "10.1002/jbmr.1857", "10.1002/jbmr.1989", "10.1002/jbt.22626", "10.1002/jcb.10205", "10.1002/jcb.22155", "10.1002/jcb.23287", "10.1002/jcb.240560903", "10.1002/jcb.25114", "10.1002/jcb.25895", "10.1002/jcb.25971", "10.1002/jcb.26005", "10.1002/jcc.20084", "10.1002/jcc.20290", "10.1002/jcc.20291", "10.1002/jcc.20895", "10.1002/jcc.21334", "10.1002/jcc.21367", "10.1002/jcc.25802", "10.1002/jcc.25837", "10.1002/jcc.26189", "10.1002/jcc.540130805", "10.1002/jcp.1040760202", "10.1002/jcp.1112", "10.1002/jcp.21732", "10.1002/jcp.22153", "10.1002/jcp.24157", "10.1002/jcp.24854", "10.1002/jcp.26031", "10.1002/jcp.26291", "10.1002/jcp.26461", "10.1002/jcp.26765", "10.1002/jcp.26931", "10.1002/jcp.26956", "10.1002/jcp.28859", "10.1002/jcp.29486", "10.1002/jcp.29638", "10.1002/jcp.30064", "10.1002/jemt.20338", "10.1002/jemt.20441", "10.1002/jemt.20500", "10.1002/jev2.12116", "10.1002/jex2.40", "10.1002/jez.1402520507", "10.1002/jez.2542", "10.1002/jgm.1415", "10.1002/jgm.1548", "10.1002/jgm.3107", "10.1002/jgm.3382", "10.1002/jhm.877", "10.1002/jib.104", "10.1002/jib.303", "10.1002/jimd.12249", "10.1002/jlb.1ma0520-016r", "10.1002/jlb.1ma1118-428r", "10.1002/jlb.2a0817-341rr", "10.1002/jlb.2ri0717-278r", "10.1002/jlb.3mir0817-346rrr", "10.1002/jlb.3mr0218-079r", "10.1002/jlb.3ta0517-192r", "10.1002/jlb.4a1221-678rr", "10.1002/jlb.53.3.309", "10.1002/jlb.5ma0717-282r", "10.1002/jlb.5mir0420-055r", "10.1002/jlb.5mr1020-057rr", "10.1002/jlb.64.1.33", "10.1002/jlb.66.4.575", "10.1002/jlb.mr0318-095rr", "10.1002/jmor.1051900303", "10.1002/jmor.1052140206", "10.1002/jmor.10707", "10.1002/jmor.20871", "10.1002/jmr.2219", "10.1002/jmr.747", "10.1002/jmri.21604", "10.1002/jmv.1890270210", "10.1002/jmv.27601", "10.1002/jmv.27927", "10.1002/jmv.28407", "10.1002/jnr.10646", "10.1002/jnr.20678", "10.1002/jnr.22199", "10.1002/jnr.22411", "10.1002/jnr.24214", "10.1002/jnr.24687", "10.1002/jnr.24735", "10.1002/jnr.24842", "10.1002/jnr.24922", "10.1002/jobm.201300434", "10.1002/jobm.201300622", "10.1002/jps.22276", "10.1002/jsfa.8261", "10.1002/jts.20231", "10.1002/lno.10203", "10.1002/lom3.10162", "10.1002/lom3.10426", "10.1002/mabi.201000206", "10.1002/mabi.201700018", "10.1002/mabi.201700095", "10.1002/mas.10017", "10.1002/mas.21649", "10.1002/mbo3.345", "10.1002/mbo3.629", "10.1002/mbo3.740", "10.1002/mc.23212", "10.1002/mco2.6", "10.1002/mds.23774", "10.1002/med.20106", "10.1002/med.20216", "10.1002/med.21284", "10.1002/med.21324", "10.1002/med.21409", "10.1002/med.21456", "10.1002/med.21517", "10.1002/med.21575", "10.1002/med.21765", "10.1002/med.21787", "10.1002/med.21851", "10.1002/minf.201400088", "10.1002/mnfr.201000221", "10.1002/mrd.20961", "10.1002/mrd.21057", "10.1002/mrd.22024", "10.1002/mrd.22223", "10.1002/mrd.23476", "10.1002/mrm.1155", "10.1002/mrm.26781", "10.1002/nbm.2987", "10.1002/path.1027", "10.1002/path.1662", "10.1002/path.2440", "10.1002/path.2638", "10.1002/path.4239", "10.1002/path.4878", "10.1002/path.5271", "10.1002/pmic.200601020", "10.1002/pmic.200900840", "10.1002/pmic.201000419", "10.1002/pmic.201100043", "10.1002/pmic.201100397", "10.1002/pmic.201100544", "10.1002/pmic.201200112", "10.1002/pmic.201400619", "10.1002/ppap.201700228", "10.1002/ppul.21424", "10.1002/prca.201800186", "10.1002/pro.109", "10.1002/pro.2230", "10.1002/pro.2330", "10.1002/pro.242", "10.1002/pro.246", "10.1002/pro.2610", "10.1002/pro.2803", "10.1002/pro.3", "10.1002/pro.3072", "10.1002/pro.324", "10.1002/pro.3313", "10.1002/pro.3642", "10.1002/pro.3715", "10.1002/pro.3943", "10.1002/pro.3974", "10.1002/pro.3978", "10.1002/pro.4653", "10.1002/pro.4713", "10.1002/pro.4851", "10.1002/pro.5034", "10.1002/pro.580", "10.1002/pro.666", "10.1002/pros.10126", "10.1002/pros.23213", "10.1002/pros.23909", "10.1002/prot.10064", "10.1002/prot.20792", "10.1002/prot.21060", "10.1002/prot.21499", "10.1002/prot.21683", "10.1002/prot.23082", "10.1002/prot.24283", "10.1002/prot.24703", "10.1002/prot.24741", "10.1002/prot.24761", "10.1002/prot.25033", "10.1002/prot.25415", "10.1002/prot.25823", "10.1002/prot.25855", "10.1002/prot.25870", "10.1002/prot.26042", "10.1002/prot.26078", "10.1002/prot.26172", "10.1002/prot.26194", "10.1002/prot.26197", "10.1002/prot.26235", "10.1002/prot.26237", "10.1002/prot.26474", "10.1002/prot.340220306", "10.1002/prot.340230412", "10.1002/ps.2050", "10.1002/ps.3506", "10.1002/ps.3585", "10.1002/ps.4527", "10.1002/ps.4837", "10.1002/ps.5652", "10.1002/ps.5697", "10.1002/psc.803", "10.1002/qua.26086", "10.1002/reg2.38", "10.1002/rmb2.12333", "10.1002/rmv.1845", "10.1002/rmv.1966", "10.1002/rmv.2231", "10.1002/rmv.2346", "10.1002/sctm.16-0158", "10.1002/sctm.19-0123", "10.1002/sctm.20-0351", "10.1002/smll.201400863", "10.1002/smll.201901459", "10.1002/smll.202003981", "10.1002/smll.202005222", "10.1002/smll.202304378", "10.1002/smtd.201900514", "10.1002/spe.4380211102", "10.1002/stem.1249", "10.1002/stem.1349", "10.1002/stem.1704", "10.1002/stem.1815", "10.1002/stem.2346", "10.1002/stem.2489", "10.1002/stem.3025", "10.1002/stem.3175", "10.1002/stem.684", "10.1002/syn.20711", "10.1002/syn.20768", "10.1002/syn.21909", "10.1002/syn.22072", "10.1002/term.1727", "10.1002/term.2958", "10.1002/wcms.1448", "10.1002/wdev.151", "10.1002/wdev.167", "10.1002/wdev.192", "10.1002/wdev.248", "10.1002/wdev.290", "10.1002/wdev.376", "10.1002/wdev.65", "10.1002/wrna.1158", "10.1002/wrna.1161", "10.1002/wrna.1165", "10.1002/wrna.117", "10.1002/wrna.1226", "10.1002/wrna.1269", "10.1002/wrna.1336", "10.1002/wrna.1474", "10.1002/wrna.1595", "10.1002/wrna.1597", "10.1002/wrna.1651", "10.1002/wrna.1665", "10.1002/wrna.57", "10.1002/wsbm.1352", "10.1002/wsbm.1413", "10.1002/yea.1502", "10.1002/yea.1644", "10.1002/yea.1803", "10.1002/yea.1843", "10.1002/yea.320080602", "10.1002/yea.991", "10.1002/zamm.201400045", "10.1006/bbrc.2000.2702", "10.1006/biol.2001.0305", "10.1006/cyto.1998.0426", "10.1006/dbio.2000.0146", "10.1006/dbio.2002.0602", "10.1006/dbio.2002.0613", "10.1006/dbio.2002.0780", "10.1006/excr.1999.4688", "10.1006/excr.2000.4875", "10.1006/excr.2001.5334", "10.1006/excr.2002.5485", "10.1006/exnr.2001.7768", "10.1006/exnr.2002.7876", "10.1006/exnr.2002.7882", "10.1006/jmbi.1996.0847", "10.1006/jmbi.1998.2530", "10.1006/jmbi.1999.2700", "10.1006/jmbi.1999.3088", "10.1006/jmbi.1999.3091", "10.1006/jmbi.1999.3392", "10.1006/jmbi.2000.4042", "10.1006/jmbi.2000.4158", "10.1006/jmbi.2000.4315", "10.1006/jmbi.2001.4780", "10.1006/jmbi.2001.5077", "10.1006/jsbi.1996.0013", "10.1006/mcne.2000.0869", "10.1006/meth.2001.1262", "10.1006/mpev.2001.1008", "10.1006/nbdi.2002.0536", "10.1006/nimg.2001.1031", "10.1006/pest.1999.2406", "10.1006/prep.2001.1564", "10.1006/taap.1999.8769", "10.1006/viro.1999.9659", "10.1006/viro.2000.0679", "10.1007/0-306-48173-1_2", "10.1007/0-387-25515-x_12", "10.1007/0-387-30746-x_27", "10.1007/1-4020-4303-1_14", "10.1007/10_2014_300", "10.1007/124_2020_38", "10.1007/128_2014_601", "10.1007/12_2018_45", "10.1007/164_2017_69", "10.1007/164_2017_75", "10.1007/164_2018_97", "10.1007/164_2019_333", "10.1007/3-540-45300-8_7", "10.1007/4735_104", "10.1007/4735_96", "10.1007/5584_2018_306", "10.1007/5584_2021_618", "10.1007/7355_2014_75", "10.1007/7355_2023_161", "10.1007/7651_2018_196", "10.1007/7653_2015_55", "10.1007/82_2011_169", "10.1007/82_2014_414", "10.1007/82_2015_479", "10.1007/82_2018_144", "10.1007/8415_2011_79", "10.1007/8904_2014_383", "10.1007/978-0-306-48568-8", "10.1007/978-0-387-68945-6_1", "10.1007/978-0-387-77863-1", "10.1007/978-0-387-77863-1_9", "10.1007/978-0-387-77944-7_2", "10.1007/978-0-387-89781-3_4", "10.1007/978-1-0716-0884-5_13", "10.1007/978-1-0716-1190-6_2", "10.1007/978-1-0716-1190-6_23", "10.1007/978-1-0716-1472-3_19", "10.1007/978-1-0716-1601-7_16", "10.1007/978-1-0716-2501-9_9", "10.1007/978-1-4020-3166-3_8", "10.1007/978-1-4020-3286-8_38", "10.1007/978-1-4020-6635-1_78", "10.1007/978-1-4020-6754-9_11454", "10.1007/978-1-4020-6776-1_8", "10.1007/978-1-4020-8247-4_7", "10.1007/978-1-4020-8837-7_1", "10.1007/978-1-4020-9741-6_13", "10.1007/978-1-4419-1170-4_8", "10.1007/978-1-4419-5774-0_19", "10.1007/978-1-4419-7002-2_10", "10.1007/978-1-4419-7692-5_16", "10.1007/978-1-4471-1300-3_1", "10.1007/978-1-4471-4372-7_10", "10.1007/978-1-4612-3292-6_9", "10.1007/978-1-4613-0135-6", "10.1007/978-1-4613-3421-7_10", "10.1007/978-1-4614-0323-4_1", "10.1007/978-1-4614-1247-2_4", "10.1007/978-1-4614-3997-4", "10.1007/978-1-4614-5203-4_20", "10.1007/978-1-4614-5966-8_3", "10.1007/978-1-4614-6438-9_101689-1", "10.1007/978-1-4614-7876-8_24", "10.1007/978-1-4614-9563-5_10", "10.1007/978-1-4615-9221-1_1", "10.1007/978-1-4757-2312-0", "10.1007/978-1-4899-3553-3_8", "10.1007/978-1-4939-1136-3_1", "10.1007/978-1-4939-1242-1_16", "10.1007/978-1-4939-1292-6_37", "10.1007/978-1-4939-1311-4", "10.1007/978-1-4939-1862-1_10", "10.1007/978-1-4939-1862-1_4", "10.1007/978-1-4939-2498-1_3", "10.1007/978-1-4939-2709-8_13", "10.1007/978-1-4939-2815-6_2", "10.1007/978-1-4939-2929-0_6", "10.1007/978-1-4939-7033-9_13", "10.1007/978-1-4939-7474-0_7", "10.1007/978-1-4939-7493-1_12", "10.1007/978-1-4939-7759-8_30", "10.1007/978-1-4939-7774-1_2", "10.1007/978-1-4939-7837-3_12", "10.1007/978-1-4939-8873-0_21", "10.1007/978-1-4939-9118-1_18", "10.1007/978-1-4939-9148-8_5", "10.1007/978-1-4939-9195-2_17", "10.1007/978-1-4939-9220-1_11", "10.1007/978-1-59745-396-7_15", "10.1007/978-1-61779-201-4", "10.1007/978-1-61779-433-9_17", "10.1007/978-1-62703-646-7_17", "10.1007/978-1-62703-694-8_7", "10.1007/978-1-62703-761-7_8", "10.1007/978-1-62703-791-4_1", "10.1007/978-2-287-72615-6_27", "10.1007/978-3-030-06115-9_4", "10.1007/978-3-030-15308-3_8", "10.1007/978-3-030-19103-0_5", "10.1007/978-3-030-19404-8", "10.1007/978-3-030-27378-1_12", "10.1007/978-3-030-28102-1_142", "10.1007/978-3-030-28102-1_143", "10.1007/978-3-030-28102-1_144", "10.1007/978-3-030-28102-1_151", "10.1007/978-3-030-28102-1_152", "10.1007/978-3-030-28102-1_159", "10.1007/978-3-030-28102-1_160", "10.1007/978-3-030-28102-1_177", "10.1007/978-3-030-28102-1_178", "10.1007/978-3-030-28102-1_19", "10.1007/978-3-030-28102-1_23", "10.1007/978-3-030-28102-1_26", "10.1007/978-3-030-28102-1_27", "10.1007/978-3-030-28102-1_28", "10.1007/978-3-030-28102-1_32", "10.1007/978-3-030-28102-1_58", "10.1007/978-3-030-29654-4_3", "10.1007/978-3-030-29654-4_4", "10.1007/978-3-030-31897-0_2", "10.1007/978-3-030-33308-9_1", "10.1007/978-3-030-33308-9_26", "10.1007/978-3-030-40870-1", "10.1007/978-3-030-41283-8_7", "10.1007/978-3-030-51849-3_19", "10.1007/978-3-030-51849-3_5", "10.1007/978-3-030-61149-1", "10.1007/978-3-030-61286-3_7", "10.1007/978-3-030-68321-4_3", "10.1007/978-3-030-68321-4_6", "10.1007/978-3-030-68321-4_7", "10.1007/978-3-030-68748-9_10", "10.1007/978-3-030-69507-1_8", "10.1007/978-3-030-72515-0", "10.1007/978-3-030-73147-2_57", "10.1007/978-3-030-76571-2_2", "10.1007/978-3-030-90383-1_13", "10.1007/978-3-031-11623-0_4", "10.1007/978-3-031-17157-4_4", "10.1007/978-3-031-23104-9_3", "10.1007/978-3-031-37196-7_9", "10.1007/978-3-319-07911-0_10", "10.1007/978-3-319-07911-0_9", "10.1007/978-3-319-08825-9_25", "10.1007/978-3-319-09287-4_9", "10.1007/978-3-319-09662-9_19", "10.1007/978-3-319-09988-0", "10.1007/978-3-319-10320-4_1", "10.1007/978-3-319-11280-0_1", "10.1007/978-3-319-13725-4_1", "10.1007/978-3-319-15630-9_13", "10.1007/978-3-319-18102-8", "10.1007/978-3-319-18102-8_6", "10.1007/978-3-319-22708-5", "10.1007/978-3-319-23371-0_10", "10.1007/978-3-319-25304-6_14", "10.1007/978-3-319-28495-8_9", "10.1007/978-3-319-31215-6_38-1", "10.1007/978-3-319-41559-8_8", "10.1007/978-3-319-42118-6_12", "10.1007/978-3-319-43624-1_9", "10.1007/978-3-319-44081-1_13", "10.1007/978-3-319-56970-3_21", "10.1007/978-3-319-59749-2_3", "10.1007/978-3-319-61343-7_12", "10.1007/978-3-319-65795-0_6", "10.1007/978-3-319-67577-0_4", "10.1007/978-3-319-72093-7_14", "10.1007/978-3-319-72093-7_8", "10.1007/978-3-319-74491-9", "10.1007/978-3-319-76162-6_5", "10.1007/978-3-319-90808-3", "10.1007/978-3-319-90808-3_6", "10.1007/978-3-319-91944-7_11", "10.1007/978-3-319-95228-4_32", "10.1007/978-3-319-96842-1_2", "10.1007/978-3-540-71329-6_13", "10.1007/978-3-540-89615-9_15", "10.1007/978-3-642-01144-3_15", "10.1007/978-3-642-04898-2_634", "10.1007/978-3-642-10589-0_14", "10.1007/978-3-642-11633-9_18", "10.1007/978-3-642-12340-5_2", "10.1007/978-3-642-13443-2_6", "10.1007/978-3-642-17214-4_15", "10.1007/978-3-642-20036-6_6", "10.1007/978-3-642-20447-0_3", "10.1007/978-3-642-29627-7_7", "10.1007/978-3-642-30406-4_8", "10.1007/978-3-642-30406-4_9", "10.1007/978-3-642-31878-8_3", "10.1007/978-3-642-59794-7_7", "10.1007/978-3-642-60861-2", "10.1007/978-3-7091-0215-2_9", "10.1007/978-3-7091-1065-2_1", "10.1007/978-3-7091-1065-2_16", "10.1007/978-3-7091-1160-4_18", "10.1007/978-3-7091-1806-1", "10.1007/978-3-7091-1806-1_1", "10.1007/978-3-7091-1806-1_2", "10.1007/978-4-431-53945-2", "10.1007/978-4-431-54276-6_10", "10.1007/978-4-431-55642-8_7", "10.1007/978-4-431-56582-6_18", "10.1007/978-81-322-2283-5_7", "10.1007/978-90-481-3144-0_6", "10.1007/978-90-481-9069-0_7", "10.1007/978-90-481-9485-8_18", "10.1007/978-90-481-9735-4_4", "10.1007/978-94-007-0782-5_2", "10.1007/978-94-007-1217-1_9", "10.1007/978-94-007-1333-8_5", "10.1007/978-94-007-1333-8_9", "10.1007/978-94-007-2004-6_3", "10.1007/978-94-007-4525-4_15", "10.1007/978-94-007-5561-1_13", "10.1007/978-94-007-5917-6_4", "10.1007/978-94-007-7832-0_5", "10.1007/978-94-009-1189-5_2", "10.1007/978-94-011-7680-4", "10.1007/978-94-011-7852-5_6", "10.1007/978-94-017-7417-8_4", "10.1007/978-94-017-7741-4", "10.1007/978-94-017-9294-3", "10.1007/978-94-017-9294-3_2", "10.1007/978-94-017-9424-4_2", "10.1007/978-94-017-9861-7_15", "10.1007/978-94-024-0921-5_3", "10.1007/978-981-10-3292-9_8", "10.1007/978-981-10-3707-8", "10.1007/978-981-10-3707-8_8", "10.1007/978-981-10-5203-3_10", "10.1007/978-981-10-5254-5_8", "10.1007/978-981-10-6955-0_14", "10.1007/978-981-10-7101-0_6", "10.1007/978-981-10-7230-7_22", "10.1007/978-981-13-1002-7_15", "10.1007/978-981-13-2242-6_1", "10.1007/978-981-13-7318-3_6", "10.1007/978-981-15-1671-9_24", "10.1007/978-981-15-2696-1_39", "10.1007/978-981-15-4423-1", "10.1007/978-981-15-4423-1_1", "10.1007/978-981-16-0691-5_17", "10.1007/978-981-16-6170-9_7", "10.1007/978-981-32-9449-3_2", "10.1007/b105433", "10.1007/b106370", "10.1007/bf00001659", "10.1007/bf00126376", "10.1007/bf00199769", "10.1007/bf00205197", "10.1007/bf00227942", "10.1007/bf00264448", "10.1007/bf00267823", "10.1007/bf00269438", "10.1007/bf00380118", "10.1007/bf00502969", "10.1007/bf00611101", "10.1007/bf00620055", "10.1007/bf01054970", "10.1007/bf02736761", "10.1007/bf02818801", "10.1007/bf02981319", "10.1007/bf02994009", "10.1007/bf03322542", "10.1007/pl00001690", "10.1007/pl00005684", "10.1007/pl00021694", "10.1007/s00005-006-0017-z", "10.1007/s00005-014-0322-x", "10.1007/s00011-008-8013-x", "10.1007/s00011-016-1000-8", "10.1007/s00011-017-1052-4", "10.1007/s00011-017-1092-9", "10.1007/s00011-020-01378-2", "10.1007/s00011-022-01624-9", "10.1007/s00018-003-3020-0", "10.1007/s00018-003-3168-7", "10.1007/s00018-004-4130-z", "10.1007/s00018-005-5589-y", "10.1007/s00018-007-7044-8", "10.1007/s00018-007-7067-1", "10.1007/s00018-008-8027-0", "10.1007/s00018-008-8067-5", "10.1007/s00018-008-8263-3", "10.1007/s00018-008-8322-9", "10.1007/s00018-009-0120-5", "10.1007/s00018-010-0538-9", "10.1007/s00018-010-0598-x", "10.1007/s00018-011-0702-x", "10.1007/s00018-012-0990-9", "10.1007/s00018-012-1019-0", "10.1007/s00018-012-1243-7", "10.1007/s00018-013-1359-4", "10.1007/s00018-013-1468-0", "10.1007/s00018-013-1513-z", "10.1007/s00018-014-1799-5", "10.1007/s00018-014-1812-z", "10.1007/s00018-015-1847-9", "10.1007/s00018-015-1886-2", "10.1007/s00018-016-2357-0", "10.1007/s00018-016-2450-4", "10.1007/s00018-017-2469-1", "10.1007/s00018-017-2598-6", "10.1007/s00018-018-2856-2", "10.1007/s00018-018-2940-7", "10.1007/s00018-018-2976-8", "10.1007/s00018-019-03104-6", "10.1007/s00018-019-03111-7", "10.1007/s00018-019-03288-x", "10.1007/s00018-019-03351-7", "10.1007/s00018-020-03460-8", "10.1007/s00018-020-03488-w", "10.1007/s00018-020-03581-0", "10.1007/s00018-020-03654-0", "10.1007/s00018-021-03903-w", "10.1007/s00018-021-04008-0", "10.1007/s00018-021-04010-6", "10.1007/s00018-021-04029-9", "10.1007/s00018-021-04112-1", "10.1007/s00018-022-04148-x", "10.1007/s00018-022-04377-0", "10.1007/s00018-022-04481-1", "10.1007/s00018-023-04919-0", "10.1007/s000180050042", "10.1007/s000180050147", "10.1007/s000180300022", "10.1007/s00044-011-9740-z", "10.1007/s00044-015-1491-9", "10.1007/s00109-007-0228-8", "10.1007/s00109-015-1252-8", "10.1007/s00109-017-1536-2", "10.1007/s00109-021-02100-3", "10.1007/s00114-004-0502-3", "10.1007/s00114-009-0604-z", "10.1007/s00114-012-1004-3", "10.1007/s00114-019-1601-5", "10.1007/s00120-014-3748-1", "10.1007/s00120-020-01127-7", "10.1007/s00122-003-1382-1", "10.1007/s00122-006-0255-9", "10.1007/s00122-009-1170-7", "10.1007/s00122-020-03548-6", "10.1007/s001220051263", "10.1007/s00125-006-0542-7", "10.1007/s00125-007-0646-8", "10.1007/s00125-008-0923-1", "10.1007/s00125-011-2428-6", "10.1007/s00125-012-2644-8", "10.1007/s00125-013-3075-x", "10.1007/s00125-016-3964-x", "10.1007/s00125-024-06103-w", "10.1007/s001250051289", "10.1007/s001250100530", "10.1007/s00129-017-4085-4", "10.1007/s00202-007-0062-6", "10.1007/s00203-017-1432-8", "10.1007/s00203-018-1482-6", "10.1007/s00204-005-0040-6", "10.1007/s00204-010-0606-9", "10.1007/s00204-018-2180-5", "10.1007/s00204-019-02549-9", "10.1007/s00204-021-03110-3", "10.1007/s00210-011-0709-8", "10.1007/s00213-016-4218-9", "10.1007/s00214-017-2190-z", "10.1007/s00216-007-1486-6", "10.1007/s00216-018-0861-9", "10.1007/s00221-005-0233-5", "10.1007/s00221-009-1948-5", "10.1007/s00227-009-1362-3", "10.1007/s00232-008-9112-x", "10.1007/s00232-010-9241-x", "10.1007/s00232-021-00184-z", "10.1007/s00234-002-0783-1", "10.1007/s00239-004-0046-3", "10.1007/s00239-004-2605-z", "10.1007/s00239-005-0046-y", "10.1007/s00239-006-0211-y", "10.1007/s00239-009-9306-6", "10.1007/s00239-010-9352-0", "10.1007/s00239-011-9462-3", "10.1007/s00239-012-9524-1", "10.1007/s00239-015-9672-1", "10.1007/s00239-017-9781-0", "10.1007/s002390010093", "10.1007/s00248-010-9717-3", "10.1007/s00248-013-0226-z", "10.1007/s00248-017-1036-5", "10.1007/s00248-024-02357-4", "10.1007/s00249-011-0730-3", "10.1007/s00249-012-0841-5", "10.1007/s00249-016-1168-4", "10.1007/s002490050213", "10.1007/s00251-005-0781-7", "10.1007/s002510000234", "10.1007/s00253-007-1209-0", "10.1007/s00253-010-2447-0", "10.1007/s00253-010-2486-6", "10.1007/s00253-010-2696-y", "10.1007/s00253-010-2843-5", "10.1007/s00253-012-4190-1", "10.1007/s00253-014-5546-5", "10.1007/s00253-014-5806-4", "10.1007/s00253-015-6439-y", "10.1007/s00253-015-7027-x", "10.1007/s00253-016-7344-8", "10.1007/s00253-016-7724-0", "10.1007/s00253-017-8209-5", "10.1007/s00253-017-8224-6", "10.1007/s00253-017-8433-z", "10.1007/s00253-017-8567-z", "10.1007/s00253-017-8727-1", "10.1007/s00253-018-9242-8", "10.1007/s00253-019-09885-x", "10.1007/s00253-019-10021-y", "10.1007/s00253-019-10317-z", "10.1007/s00253-020-10501-6", "10.1007/s00253-020-10531-0", "10.1007/s00253-021-11626-y", "10.1007/s00253-022-11920-3", "10.1007/s00253-024-13056-y", "10.1007/s00262-001-0235-5", "10.1007/s00262-007-0394-0", "10.1007/s00262-007-0425-x", "10.1007/s00262-009-0728-1", "10.1007/s00262-014-1563-6", "10.1007/s00262-020-02572-1", "10.1007/s00262-020-02583-y", "10.1007/s00262-020-02598-5", "10.1007/s00262-021-02949-w", "10.1007/s00262-021-03007-1", "10.1007/s00262-023-03495-3", "10.1007/s00262-024-03742-1", "10.1007/s00265-016-2071-9", "10.1007/s00267-014-0252-8", "10.1007/s00277-005-0021-0", "10.1007/s00277-017-3142-3", "10.1007/s00281-011-0295-3", "10.1007/s00281-012-0310-3", "10.1007/s00281-013-0388-2", "10.1007/s00281-013-0414-4", "10.1007/s00281-014-0452-6", "10.1007/s00281-015-0505-5", "10.1007/s00281-019-00742-7", "10.1007/s00281-022-00927-7", "10.1007/s00284-011-9890-8", "10.1007/s00284-015-0785-y", "10.1007/s00284-017-1418-4", "10.1007/s00284-021-02435-7", "10.1007/s00284-021-02724-1", "10.1007/s00285-003-0232-8", "10.1007/s00294-004-0487-7", "10.1007/s00294-004-0504-x", "10.1007/s00294-005-0022-5", "10.1007/s00294-016-0600-8", "10.1007/s00294-016-0670-7", "10.1007/s00294-017-0753-0", "10.1007/s00294-018-0855-3", "10.1007/s00294-018-0873-1", "10.1007/s00294-019-00999-3", "10.1007/s00294-020-01120-9", "10.1007/s00294-020-01127-2", "10.1007/s00299-007-0317-8", "10.1007/s00330-014-3492-3", "10.1007/s00330-019-06544-7", "10.1007/s00330-023-10483-9", "10.1007/s00335-001-1003-8", "10.1007/s00335-007-9036-2", "10.1007/s00335-015-9603-x", "10.1007/s00344-014-9464-7", "10.1007/s00348-020-03027-0", "10.1007/s00359-004-0540-5", "10.1007/s00359-004-0565-9", "10.1007/s00360-018-1199-5", "10.1007/s00360-022-01471-4", "10.1007/s00394-021-02677-y", "10.1007/s00395-011-0213-9", "10.1007/s00395-018-0686-x", "10.1007/s00395-019-0766-6", "10.1007/s00401-005-0991-y", "10.1007/s00401-005-1070-0", "10.1007/s00401-006-0038-z", "10.1007/s00401-009-0590-4", "10.1007/s00401-011-0843-x", "10.1007/s00401-011-0891-2", "10.1007/s00401-013-1155-0", "10.1007/s00401-013-1173-y", "10.1007/s00401-015-1413-4", "10.1007/s00401-018-1829-8", "10.1007/s00401-019-01980-7", "10.1007/s00401-019-01993-2", "10.1007/s00401-019-02000-4", "10.1007/s00401-021-02333-z", "10.1007/s00401-022-02488-3", "10.1007/s00401-023-02565-1", "10.1007/s00401-023-02601-0", "10.1007/s004010000275", "10.1007/s004010100392", "10.1007/s00404-012-2279-5", "10.1007/s00404-023-07225-z", "10.1007/s00412-003-0237-5", "10.1007/s00412-007-0124-6", "10.1007/s00412-009-0226-4", "10.1007/s00412-013-0436-7", "10.1007/s00412-014-0463-z", "10.1007/s00412-015-0516-y", "10.1007/s00412-015-0543-8", "10.1007/s00412-017-0631-z", "10.1007/s00412-019-00714-8", "10.1007/s00412-020-00734-9", "10.1007/s00412-021-00763-y", "10.1007/s00417-002-0429-3", "10.1007/s00417-015-3024-0", "10.1007/s00418-011-0897-9", "10.1007/s00418-016-1445-4", "10.1007/s00418-016-1520-x", "10.1007/s00418-017-1604-2", "10.1007/s00418-018-1677-6", "10.1007/s00418-018-1732-3", "10.1007/s00418-020-01930-5", "10.1007/s00418-023-02251-z", "10.1007/s00421-016-3413-z", "10.1007/s00424-005-0030-9", "10.1007/s00424-006-0112-3", "10.1007/s00424-011-1044-0", "10.1007/s00424-016-1865-y", "10.1007/s00424-021-02562-x", "10.1007/s00424-023-02853-5", "10.1007/s00425-010-1179-9", "10.1007/s00425-012-1782-z", "10.1007/s00425-017-2727-3", "10.1007/s00425-019-03173-8", "10.1007/s00425-019-03283-3", "10.1007/s00425-020-03415-0", "10.1007/s00428-005-0003-6", "10.1007/s00428-019-02579-9", "10.1007/s00429-003-0338-1", "10.1007/s00429-004-0384-3", "10.1007/s00429-010-0245-1", "10.1007/s00429-010-0254-0", "10.1007/s00429-010-0265-x", "10.1007/s00429-011-0322-0", "10.1007/s00429-012-0493-3", "10.1007/s00429-013-0531-9", "10.1007/s00429-013-0660-1", "10.1007/s00429-014-0796-7", "10.1007/s00429-014-0848-z", "10.1007/s00429-014-0853-2", "10.1007/s00429-016-1284-z", "10.1007/s00429-016-1354-2", "10.1007/s00429-017-1436-9", "10.1007/s00429-018-1692-3", "10.1007/s00429-018-1710-5", "10.1007/s00429-018-1744-8", "10.1007/s00429-018-1806-y", "10.1007/s00429-019-01860-6", "10.1007/s00429-019-02023-3", "10.1007/s00429-020-02025-6", "10.1007/s00429-022-02458-1", "10.1007/s00429-023-02644-9", "10.1007/s00432-014-1738-8", "10.1007/s00432-019-02909-z", "10.1007/s00432-020-03349-w", "10.1007/s00432-021-03787-0", "10.1007/s00432-024-05737-y", "10.1007/s00435-007-0034-4", "10.1007/s00435-019-00462-4", "10.1007/s00436-012-3004-9", "10.1007/s00436-015-4507-y", "10.1007/s00436-015-4803-6", "10.1007/s00436-019-06332-8", "10.1007/s00436-020-06822-0", "10.1007/s00438-002-0787-x", "10.1007/s00438-008-0389-3", "10.1007/s00438-011-0658-4", "10.1007/s00438-012-0695-7", "10.1007/s00438-016-1198-8", "10.1007/s00438-017-1350-0", "10.1007/s00438-017-1370-9", "10.1007/s00438-020-01662-0", "10.1007/s00438-021-01762-5", "10.1007/s004380051039", "10.1007/s00439-010-0914-4", "10.1007/s00439-012-1154-6", "10.1007/s00439-017-1837-0", "10.1007/s00439-019-02073-x", "10.1007/s00439-020-02138-2", "10.1007/s00439-021-02411-y", "10.1007/s004390050443", "10.1007/s00441-007-0432-4", "10.1007/s00441-007-0478-3", "10.1007/s00441-007-0536-x", "10.1007/s00441-011-1196-4", "10.1007/s00441-011-1200-z", "10.1007/s00441-011-1228-0", "10.1007/s00441-013-1612-z", "10.1007/s00441-014-1895-8", "10.1007/s00441-017-2704-y", "10.1007/s00441-017-2735-4", "10.1007/s00441-019-03076-w", "10.1007/s00441-021-03486-9", "10.1007/s004410000306", "10.1007/s00442-017-3866-8", "10.1007/s00497-022-00445-4", "10.1007/s00572-020-00987-3", "10.1007/s00592-017-1021-y", "10.1007/s00702-008-0032-9", "10.1007/s00702-017-1745-4", "10.1007/s00705-012-1391-y", "10.1007/s00709-016-1060-1", "10.1007/s00709-020-01590-1", "10.1007/s00726-010-0575-6", "10.1007/s00726-014-1775-2", "10.1007/s00726-015-2087-x", "10.1007/s00726-020-02937-x", "10.1007/s00775-007-0205-2", "10.1007/s00787-017-0959-1", "10.1007/s00795-015-0109-0", "10.1007/s00894-012-1489-x", "10.1007/s00894-015-2799-6", "10.1007/s00894-017-3258-3", "10.1007/s00894-020-4289-8", "10.1007/s00894-021-04779-0", "10.1007/s00894-023-05802-2", "10.1007/s10014-007-0225-1", "10.1007/s10038-008-0271-5", "10.1007/s10059-010-0009-z", "10.1007/s10067-016-3202-4", "10.1007/s10072-016-2802-8", "10.1007/s10096-005-1278-x", "10.1007/s10096-023-04548-2", "10.1007/s10096-023-04677-8", "10.1007/s100960000315", "10.1007/s10103-010-0761-5", "10.1007/s10103-017-2317-4", "10.1007/s10120-021-01180-x", "10.1007/s10123-023-00389-3", "10.1007/s10126-019-09942-6", "10.1007/s101260000026", "10.1007/s10142-002-0059-1", "10.1007/s10142-017-0572-x", "10.1007/s10142-021-00815-7", "10.1007/s10142-023-01037-9", "10.1007/s10147-008-0770-6", "10.1007/s10147-021-01892-1", "10.1007/s10162-021-00794-3", "10.1007/s10237-012-0381-z", "10.1007/s10237-020-01374-9", "10.1007/s10238-011-0153-6", "10.1007/s10238-023-01121-1", "10.1007/s10254-005-0041-0", "10.1007/s10265-011-0431-0", "10.1007/s10265-021-01294-4", "10.1007/s10334-013-0394-3", "10.1007/s10340-018-0966-0", "10.1007/s10388-023-01006-y", "10.1007/s10393-020-01504-w", "10.1007/s10409-017-0677-4", "10.1007/s10439-010-0192-2", "10.1007/s10439-017-1827-3", "10.1007/s10439-017-1967-5", "10.1007/s10456-013-9365-6", "10.1007/s10456-013-9404-3", "10.1007/s10456-013-9407-0", "10.1007/s10456-020-09722-0", "10.1007/s10456-021-09785-7", "10.1007/s10456-021-09792-8", "10.1007/s10456-024-09917-9", "10.1007/s10456-024-09929-5", "10.1007/s10495-014-1005-0", "10.1007/s10495-020-01629-x", "10.1007/s10522-008-9204-0", "10.1007/s10522-018-9753-9", "10.1007/s10529-015-1765-9", "10.1007/s10534-005-4452-9", "10.1007/s10534-008-9202-3", "10.1007/s10534-010-9373-6", "10.1007/s10539-014-9469-4", "10.1007/s10541-005-0076-5", "10.1007/s10549-017-4570-4", "10.1007/s10549-019-05252-6", "10.1007/s10549-020-05682-7", "10.1007/s10549-020-05991-x", "10.1007/s10552-016-0753-2", "10.1007/s10555-005-5865-1", "10.1007/s10555-008-9127-x", "10.1007/s10555-010-9222-7", "10.1007/s10555-016-9628-y", "10.1007/s10555-017-9725-6", "10.1007/s10555-020-09911-9", "10.1007/s10555-020-09920-8", "10.1007/s10555-021-09990-2", "10.1007/s10555-021-09997-9", "10.1007/s10557-020-07007-8", "10.1007/s10565-018-9428-y", "10.1007/s10571-011-9670-9", "10.1007/s10571-021-01058-7", "10.1007/s10577-015-9499-z", "10.1007/s10577-016-9544-6", "10.1007/s10577-017-9570-z", "10.1007/s10577-018-9571-6", "10.1007/s10577-018-9594-z", "10.1007/s10585-010-9312-5", "10.1007/s10585-011-9406-8", "10.1007/s10585-022-10185-4", "10.1007/s10616-007-9093-0", "10.1007/s10620-014-3297-x", "10.1007/s10620-014-3372-3", "10.1007/s10620-017-4603-1", "10.1007/s10646-019-02047-9", "10.1007/s10658-007-9162-4", "10.1007/s10658-007-9204-y", "10.1007/s10658-013-0199-2", "10.1007/s10658-018-1556-y", "10.1007/s10683-017-9528-1", "10.1007/s10695-018-0552-7", "10.1007/s10695-018-0567-0", "10.1007/s10711-012-9705-5", "10.1007/s10719-007-9042-3", "10.1007/s10719-008-9116-x", "10.1007/s10719-018-9842-7", "10.1007/s10719-021-10007-x", "10.1007/s10722-010-9533-0", "10.1007/s10725-010-9497-2", "10.1007/s10725-018-0472-7", "10.1007/s10735-014-9575-2", "10.1007/s10750-006-0440-5", "10.1007/s10750-015-2417-8", "10.1007/s10750-019-03973-9", "10.1007/s10750-020-04210-4", "10.1007/s10750-020-04251-9", "10.1007/s10753-013-9621-3", "10.1007/s10753-014-0068-y", "10.1007/s10753-016-0431-2", "10.1007/s10753-016-0470-8", "10.1007/s10787-019-00661-x", "10.1007/s10815-010-9473-9", "10.1007/s10815-014-0185-4", "10.1007/s10815-014-0230-3", "10.1007/s10815-016-0738-9", "10.1007/s10815-020-01925-0", "10.1007/s10822-014-9779-2", "10.1007/s10822-017-0029-2", "10.1007/s10822-017-0066-x", "10.1007/s10822-018-0111-4", "10.1007/s10822-019-00212-0", "10.1007/s10847-009-9593-y", "10.1007/s10863-013-9510-3", "10.1007/s10867-020-09548-3", "10.1007/s10875-007-9084-0", "10.1007/s10875-009-9357-x", "10.1007/s10875-016-0245-x", "10.1007/s10875-017-0433-3", "10.1007/s10875-018-0525-8", "10.1007/s10875-020-00745-2", "10.1007/s10875-020-00817-3", "10.1007/s10875-022-01289-3", "10.1007/s10886-006-9094-z", "10.1007/s10895-007-0225-x", "10.1007/s10930-019-09845-4", "10.1007/s10955-007-9470-2", "10.1007/s10969-009-9060-4", "10.1007/s10974-019-09559-1", "10.1007/s11010-005-3078-0", "10.1007/s11010-009-0289-9", "10.1007/s11010-010-0485-7", "10.1007/s11010-012-1390-z", "10.1007/s11010-014-2079-2", "10.1007/s11011-014-9512-9", "10.1007/s11030-022-10570-x", "10.1007/s11032-009-9367-7", "10.1007/s11032-011-9576-8", "10.1007/s11033-011-1338-5", "10.1007/s11033-018-4262-0", "10.1007/s11033-019-05150-6", "10.1007/s11033-019-05167-x", "10.1007/s11033-020-05930-5", "10.1007/s11033-021-06648-8", "10.1007/s11033-021-06819-7", "10.1007/s11055-016-0374-y", "10.1007/s11064-007-9366-1", "10.1007/s11064-008-9678-9", "10.1007/s11064-009-9963-2", "10.1007/s11064-015-1615-0", "10.1007/s11064-017-2307-8", "10.1007/s11064-019-02844-y", "10.1007/s11071-011-9993-6", "10.1007/s11095-006-9224-x", "10.1007/s11095-016-1939-8", "10.1007/s11095-018-2564-5", "10.1007/s11101-006-9035-z", "10.1007/s11101-020-09682-9", "10.1007/s11103-004-0274-3", "10.1007/s11103-005-4477-z", "10.1007/s11103-007-9145-z", "10.1007/s11103-020-01103-x", "10.1007/s11103-021-01125-z", "10.1007/s11103-021-01126-y", "10.1007/s11103-023-01398-6", "10.1007/s11105-013-0597-9", "10.1007/s11105-013-0642-8", "10.1007/s11105-018-1111-1", "10.1007/s11119-018-9573-6", "10.1007/s11120-016-0284-4", "10.1007/s11120-022-00925-8", "10.1007/s11136-024-03701-4", "10.1007/s11154-010-9147-z", "10.1007/s11154-012-9221-9", "10.1007/s11240-014-0551-z", "10.1007/s11259-021-09796-1", "10.1007/s11262-010-0505-4", "10.1007/s11262-012-0809-7", "10.1007/s11274-021-03195-z", "10.1007/s11295-012-0499-2", "10.1007/s11295-014-0780-7", "10.1007/s11295-014-0811-4", "10.1007/s11295-016-1034-7", "10.1007/s11295-018-1257-x", "10.1007/s11295-021-01528-5", "10.1007/s11302-009-9140-8", "10.1007/s11302-010-9187-6", "10.1007/s11302-012-9294-7", "10.1007/s11302-016-9529-0", "10.1007/s11302-022-09910-1", "10.1007/s11302-023-09925-2", "10.1007/s11332-020-00714-7", "10.1007/s11356-014-3887-3", "10.1007/s11356-016-7003-8", "10.1007/s11356-020-11620-3", "10.1007/s11356-021-14023-0", "10.1007/s11356-022-24663-5", "10.1007/s11357-005-4004-9", "10.1007/s11357-020-00183-3", "10.1007/s11357-020-00317-7", "10.1007/s11357-021-00335-z", "10.1007/s11357-021-00358-6", "10.1007/s11416-020-00374-8", "10.1007/s11427-009-0152-y", "10.1007/s11427-018-9402-9", "10.1007/s11427-020-1702-x", "10.1007/s11427-022-2147-2", "10.1007/s11427-022-2209-3", "10.1007/s11427-023-2481-3", "10.1007/s11434-012-5461-z", "10.1007/s11434-015-0905-x", "10.1007/s11481-009-9164-4", "10.1007/s11481-010-9205-z", "10.1007/s11481-011-9265-8", "10.1007/s11481-011-9299-y", "10.1007/s11481-018-9786-5", "10.1007/s11481-020-09959-y", "10.1007/s11523-021-00819-0", "10.1007/s11538-014-9986-y", "10.1007/s11596-019-2117-0", "10.1007/s11689-010-9055-2", "10.1007/s11693-011-9076-5", "10.1007/s11743-015-1686-6", "10.1007/s11831-022-09811-x", "10.1007/s11882-011-0179-6", "10.1007/s11892-005-0005-4", "10.1007/s11899-018-0463-9", "10.1007/s11899-019-00521-z", "10.1007/s11910-015-0588-3", "10.1007/s11914-019-00503-3", "10.1007/s11920-020-01148-1", "10.1007/s11926-020-00944-1", "10.1007/s12010-010-9037-6", "10.1007/s12010-014-1014-z", "10.1007/s12010-016-2114-8", "10.1007/s12010-019-02998-z", "10.1007/s12011-017-1020-4", "10.1007/s12015-014-9567-3", "10.1007/s12015-015-9598-4", "10.1007/s12015-016-9703-3", "10.1007/s12015-017-9767-8", "10.1007/s12015-018-9811-3", "10.1007/s12015-018-9847-4", "10.1007/s12015-019-09920-4", "10.1007/s12015-021-10135-9", "10.1007/s12015-023-10610-5", "10.1007/s12017-019-08532-y", "10.1007/s12021-016-9315-8", "10.1007/s12021-023-09644-4", "10.1007/s12026-009-8160-3", "10.1007/s12026-011-8205-2", "10.1007/s12029-009-9125-4", "10.1007/s12029-020-00386-z", "10.1007/s12031-008-9114-2", "10.1007/s12031-008-9118-y", "10.1007/s12031-010-9329-x", "10.1007/s12031-018-1214-z", "10.1007/s12031-018-1226-8", "10.1007/s12031-023-02123-0", "10.1007/s12032-015-0624-9", "10.1007/s12032-018-1084-9", "10.1007/s12033-009-9239-8", "10.1007/s12035-012-8339-9", "10.1007/s12035-013-8405-y", "10.1007/s12035-014-9034-9", "10.1007/s12035-016-9742-4", "10.1007/s12035-017-0405-x", "10.1007/s12035-017-0815-9", "10.1007/s12035-018-0951-x", "10.1007/s12035-018-1458-1", "10.1007/s12035-019-01701-x", "10.1007/s12035-019-01727-1", "10.1007/s12035-020-02144-5", "10.1007/s12035-023-03261-7", "10.1007/s12038-018-9768-z", "10.1007/s12038-021-00138-6", "10.1007/s12039-019-1646-1", "10.1007/s12079-020-00596-x", "10.1007/s12094-020-02420-9", "10.1007/s12104-018-9810-y", "10.1007/s12185-011-0872-1", "10.1007/s12185-016-1984-4", "10.1007/s12192-010-0179-9", "10.1007/s12192-016-0710-8", "10.1007/s12195-008-0004-z", "10.1007/s12195-015-0415-6", "10.1007/s12206-012-1002-6", "10.1007/s12223-012-0195-5", "10.1007/s12264-017-0166-6", "10.1007/s12264-020-00615-2", "10.1007/s12264-021-00796-4", "10.1007/s12268-017-0812-6", "10.1007/s12272-020-01247-w", "10.1007/s12272-023-01473-y", "10.1007/s12275-008-0308-7", "10.1007/s12275-012-2468-8", "10.1007/s12275-014-4112-2", "10.1007/s12275-015-5308-9", "10.1007/s12275-016-6175-8", "10.1007/s12281-009-0021-y", "10.1007/s12307-009-0030-y", "10.1007/s12307-010-0043-6", "10.1007/s12307-011-0069-4", "10.1007/s12307-012-0126-7", "10.1007/s12308-009-0021-4", "10.1007/s12311-010-0208-3", "10.1007/s12311-010-0226-1", "10.1007/s12311-014-0548-5", "10.1007/s12311-014-0618-8", "10.1007/s12311-015-0724-2", "10.1007/s12311-018-0952-3", "10.1007/s12325-020-01287-0", "10.1007/s12374-016-0463-z", "10.1007/s12539-016-0150-2", "10.1007/s12539-018-0298-z", "10.1007/s12551-020-00680-x", "10.1007/s12551-023-01054-9", "10.1007/s12560-021-09483-z", "10.1007/s12565-015-0317-7", "10.1007/s12565-017-0419-5", "10.1007/s12565-023-00743-5", "10.1007/s12600-023-01063-0", "10.1007/s12640-012-9355-2", "10.1007/s12640-016-9687-4", "10.1007/s12668-015-0189-2", "10.1007/s12672-022-00550-w", "10.1007/s12975-020-00857-2", "10.1007/s13105-024-01020-3", "10.1007/s13131-012-0182-3", "10.1007/s13197-013-1010-2", "10.1007/s13199-009-0020-3", "10.1007/s13199-022-00854-z", "10.1007/s13205-013-0144-2", "10.1007/s13205-023-03569-0", "10.1007/s13238-011-1079-1", "10.1007/s13238-017-0450-2", "10.1007/s13238-018-0518-7", "10.1007/s13238-018-0563-2", "10.1007/s13238-018-0576-x", "10.1007/s13238-019-0623-2", "10.1007/s13238-019-0638-8", "10.1007/s13238-020-00819-2", "10.1007/s13246-016-0475-5", "10.1007/s13258-020-01031-6", "10.1007/s13277-016-5112-0", "10.1007/s13353-011-0057-x", "10.1007/s13361-018-1911-4", "10.1007/s13365-017-0584-2", "10.1007/s13402-019-00453-z", "10.1007/s13402-020-00561-1", "10.1007/s13577-015-0110-x", "10.1007/s13577-016-0144-8", "10.1007/s13577-019-00242-8", "10.1007/s13592-015-0389-3", "10.1007/s13592-019-00647-2", "10.1007/s13593-012-0105-x", "10.1007/s13593-023-00915-7", "10.1007/s13744-020-00777-8", "10.1007/s13760-021-01612-6", "10.1007/s13770-022-00443-7", "10.1007/s15010-021-01644-3", "10.1007/s40121-022-00606-y", "10.1007/s40123-023-00729-6", "10.1007/s40200-022-01019-x", "10.1007/s40259-018-0303-4", "10.1007/s40259-020-00465-4", "10.1007/s40259-023-00635-0", "10.1007/s40263-019-00657-9", "10.1007/s40268-021-00357-0", "10.1007/s40273-018-0734-2", "10.1007/s40279-019-01070-4", "10.1007/s40291-018-0355-7", "10.1007/s40291-022-00634-x", "10.1007/s40484-019-0154-0", "10.1007/s40484-019-0172-y", "10.1007/s40544-022-0653-2", "10.1007/s40572-017-0142-3", "10.1007/s40588-015-0015-1", "10.1007/s40778-018-0128-6", "10.1007/s40778-020-00177-z", "10.1007/s40778-021-00193-7", "10.1007/s41365-019-0683-2", "10.1007/s42452-020-2498-5", "10.1007/s42764-020-00017-8", "10.1007/s42764-020-00022-x", "10.1007/s42770-022-00743-z", "10.1007/s42995-021-00118-7", "10.1007/s43440-021-00344-x", "10.1007/s43630-023-00437-x", "10.1016/0003-2697(83)90418-9", "10.1016/0006-291x(90)90827-a", "10.1016/0006-2952(89)90176-7", "10.1016/0006-2952(95)00052-2", "10.1016/0006-8993(79)90485-2", "10.1016/0006-8993(82)91250-1", "10.1016/0008-8749(84)90251-x", "10.1016/0008-8749(91)90347-e", "10.1016/0012-1606(77)90158-0", "10.1016/0012-1606(83)90201-4", "10.1016/0014-4827(65)90211-9", "10.1016/0014-4886(61)90055-3", "10.1016/0014-5793(90)81005-9", "10.1016/0014-5793(95)00728-r", "10.1016/0014-5793(96)00334-1", "10.1016/0020-0190(93)90155-3", "10.1016/0021-9991(77)90098-5", "10.1016/0021-9991(83)90014-1", "10.1016/0022-1910(72)90030-3", "10.1016/0022-1910(73)90049-8", "10.1016/0022-1910(80)90104-3", "10.1016/0022-1910(88)90127-8", "10.1016/0022-1910(89)90023-1", "10.1016/0022-1910(89)90131-5", "10.1016/0022-1910(90)90110-2", "10.1016/0022-1910(92)90113-r", "10.1016/0022-2836(75)90089-3", "10.1016/0022-2836(77)90038-9", "10.1016/0022-2836(80)90304-6", "10.1016/0022-2836(83)90049-9", "10.1016/0035-9203(71)90036-8", "10.1016/0035-9203(81)90019-5", "10.1016/0035-9203(84)90114-7", "10.1016/0038-0717(76)90003-1", "10.1016/0040-8166(88)90076-6", "10.1016/0092-8674(81)90502-x", "10.1016/0092-8674(83)90015-6", "10.1016/0092-8674(83)90056-9", "10.1016/0092-8674(86)90515-5", "10.1016/0092-8674(86)90762-2", "10.1016/0092-8674(90)90186-i", "10.1016/0092-8674(90)90385-r", "10.1016/0092-8674(90)90397-w", "10.1016/0092-8674(91)90036-x", "10.1016/0092-8674(91)90098-j", "10.1016/0092-8674(91)90369-a", "10.1016/0092-8674(91)90637-e", "10.1016/0092-8674(91)90639-g", "10.1016/0092-8674(92)90562-q", "10.1016/0092-8674(93)80067-o", "10.1016/0092-8674(93)90383-2", "10.1016/0092-8674(93)90626-2", "10.1016/0092-8674(94)90169-4", "10.1016/0092-8674(94)90197-x", "10.1016/0092-8674(94)90200-3", "10.1016/0092-8674(94)90334-4", "10.1016/0092-8674(94)90396-4", "10.1016/0092-8674(95)90298-8", "10.1016/0140-6736(92)91958-b", "10.1016/0140-6736(93)90416-e", "10.1016/0165-0270(91)90128-m", "10.1016/0165-3806(85)90021-5", "10.1016/0165-7992(93)90015-n", "10.1016/0166-2236(96)10049-7", "10.1016/0166-3542(91)90068-3", "10.1016/0167-0115(90)90001-d", "10.1016/0167-5699(93)90198-t", "10.1016/0167-8817(85)90018-5", "10.1016/0168-9525(93)90209-z", "10.1016/0197-0186(86)90021-5", "10.1016/0263-7855(96)00018-5", "10.1016/0272-7714(87)90059-x", "10.1016/0300-9084(96)82192-4", "10.1016/0304-3940(95)11637-c", "10.1016/0304-3959(96)03021-7", "10.1016/0304-4157(82)90009-0", "10.1016/0304-4165(78)90456-7", "10.1016/0305-0491(92)90427-s", "10.1016/0306-4522(86)90074-6", "10.1016/0306-4522(93)90335-d", "10.1016/0306-4522(94)90293-3", "10.1016/0378-1119(82)90083-x", "10.1016/0378-1119(89)90332-6", "10.1016/0378-1119(91)90434-d", "10.1016/0378-1119(92)90627-2", "10.1016/0896-6273(90)90136-4", "10.1016/0896-6273(91)90374-9", "10.1016/0921-8777(91)90065-w", "10.1016/0925-4773(96)00527-8", "10.1016/0960-0760(92)90108-u", "10.1016/0960-0760(93)90291-4", "10.1016/0962-8924(93)90066-a", "10.1016/0968-0004(94)90115-5", "10.1016/1044-0305(94)80016-2", "10.1016/b0-443-07287-6/50065-5", "10.1016/b978-0-12-374145-5.00091-7", "10.1016/b978-0-12-374546-0.00029-8", "10.1016/b978-0-12-384747-8.10011-x", "10.1016/b978-0-12-394389-7.00001-6", "10.1016/b978-0-12-394802-1.00009-1", "10.1016/b978-0-12-397265-1.00098-8", "10.1016/b978-0-12-398312-1.00013-5", "10.1016/b978-0-12-407190-2.00001-0", "10.1016/b978-0-12-411552-1.00002-8", "10.1016/b978-0-12-416008-8.00022-x", "10.1016/b978-0-12-417028-5.00010-7", "10.1016/b978-0-12-800101-1.00012-0", "10.1016/b978-0-12-800259-9.00001-9", "10.1016/b978-0-12-801393-9.00014-1", "10.1016/b978-0-12-802002-9.00010-8", "10.1016/b978-0-12-809633-8.20106-4", "10.1016/b978-0-12-811060-7.00013-9", "10.1016/b978-0-12-813187-9.00018-4", "10.1016/b978-0-12-814405-3.00006-0", "10.1016/b978-0-12-814405-3.00019-9", "10.1016/b978-0-12-814407-7.00016-x", "10.1016/b978-0-12-816137-1.00028-3", "10.1016/b978-0-12-816228-6.00011-8", "10.1016/b978-0-12-817558-3.00016-0", "10.1016/b978-0-12-818882-8.00004-8", "10.1016/b978-0-12-820018-6.00008-9", "10.1016/b978-0-12-820084-1.00012-0", "10.1016/b978-0-12-824048-9.00020-1", "10.1016/b978-0-12-849870-5.00018-5", "10.1016/b978-0-444-62604-2.00022-8", "10.1016/b978-0-444-63956-1.00003-5", "10.1016/b978-0-444-64239-4.00014-x", "10.1016/b978-0-7020-6896-6.00027-2", "10.1016/b978-008055232-3.60073-x", "10.1016/b978-012053641-2/50002-2", "10.1016/b978-012426260-7.50008-2", "10.1016/bs.aambs.2014.09.001", "10.1016/bs.abr.2016.01.004", "10.1016/bs.abr.2018.09.001", "10.1016/bs.acc.2019.07.001", "10.1016/bs.accb.2018.09.001", "10.1016/bs.acr.2018.02.004", "10.1016/bs.acr.2021.02.002", "10.1016/bs.ai.2018.04.002", "10.1016/bs.ai.2022.07.001", "10.1016/bs.ai.2023.03.002", "10.1016/bs.aiip.2015.06.002", "10.1016/bs.aiip.2017.03.001", "10.1016/bs.aiip.2019.01.006", "10.1016/bs.aiip.2020.03.001", "10.1016/bs.aivir.2020.01.002", "10.1016/bs.ant.2017.07.001", "10.1016/bs.ant.2018.10.007", "10.1016/bs.apcsb.2017.04.008", "10.1016/bs.apcsb.2018.10.001", "10.1016/bs.apcsb.2019.08.007", "10.1016/bs.apcsb.2020.09.004", "10.1016/bs.apha.2016.07.001", "10.1016/bs.ctdb.2016.01.005", "10.1016/bs.ctdb.2016.09.003", "10.1016/bs.ctdb.2017.10.009", "10.1016/bs.ctdb.2017.11.004", "10.1016/bs.ctdb.2019.01.006", "10.1016/bs.ctdb.2019.10.002", "10.1016/bs.ctdb.2019.11.002", "10.1016/bs.ctm.2016.07.003", "10.1016/bs.enz.2017.03.006", "10.1016/bs.enz.2017.03.007", "10.1016/bs.enz.2017.03.008", "10.1016/bs.enz.2019.07.001", "10.1016/bs.enz.2020.06.009", "10.1016/bs.ircmb.2018.05.007", "10.1016/bs.ircmb.2019.12.002", "10.1016/bs.mie.2014.11.046", "10.1016/bs.mie.2015.03.002", "10.1016/bs.mie.2018.07.005", "10.1016/bs.pbr.2016.04.012", "10.1016/bs.pbr.2019.08.001", "10.1016/bs.pmbts.2015.04.010", "10.1016/bs.pmbts.2016.05.009", "10.1016/bs.pmbts.2017.12.004", "10.1016/bs.pmch.2018.01.002", "10.1016/j.ab.2015.02.006", "10.1016/j.ab.2018.07.017", "10.1016/j.ab.2022.114546", "10.1016/j.abb.2005.01.018", "10.1016/j.abb.2009.01.001", "10.1016/j.abb.2012.04.018", "10.1016/j.abb.2014.07.026", "10.1016/j.abb.2015.12.012", "10.1016/j.abb.2016.04.004", "10.1016/j.abb.2016.10.016", "10.1016/j.abb.2019.01.011", "10.1016/j.abb.2019.04.002", "10.1016/j.acra.2021.02.009", "10.1016/j.actao.2014.06.004", "10.1016/j.actatropica.2005.04.014", "10.1016/j.actatropica.2008.10.010", "10.1016/j.actatropica.2021.106070", "10.1016/j.actbio.2007.04.002", "10.1016/j.actbio.2010.05.025", "10.1016/j.actbio.2013.06.016", "10.1016/j.actbio.2015.03.007", "10.1016/j.actbio.2016.11.054", "10.1016/j.actbio.2016.12.034", "10.1016/j.actbio.2017.04.018", "10.1016/j.actbio.2017.11.037", "10.1016/j.actbio.2018.08.005", "10.1016/j.actbio.2020.09.038", "10.1016/j.actbio.2020.11.044", "10.1016/j.actbio.2021.04.052", "10.1016/j.acthis.2008.05.002", "10.1016/j.acthis.2015.01.003", "10.1016/j.addr.2010.05.009", "10.1016/j.addr.2012.09.019", "10.1016/j.addr.2017.04.010", "10.1016/j.addr.2018.06.010", "10.1016/j.addr.2019.11.005", "10.1016/j.addr.2022.114416", "10.1016/j.advenzreg.2008.12.003", "10.1016/j.aiopen.2021.01.001", "10.1016/j.ajhg.2009.03.010", "10.1016/j.ajhg.2011.10.008", "10.1016/j.ajhg.2012.05.013", "10.1016/j.ajhg.2013.06.001", "10.1016/j.ajhg.2015.03.002", "10.1016/j.ajhg.2016.10.002", "10.1016/j.ajhg.2017.06.010", "10.1016/j.ajhg.2019.05.016", "10.1016/j.ajic.2015.12.012", "10.1016/j.ajme.2015.06.002", "10.1016/j.ajpath.2011.01.035", "10.1016/j.ajpath.2015.05.006", "10.1016/j.ajpath.2016.05.011", "10.1016/j.ajpath.2016.06.020", "10.1016/j.algal.2016.06.025", "10.1016/j.algal.2017.04.033", "10.1016/j.algal.2020.101943", "10.1016/j.alit.2017.08.004", "10.1016/j.amjmed.2006.05.030", "10.1016/j.amjms.2017.06.007", "10.1016/j.anai.2016.01.003", "10.1016/j.antiviral.2017.11.001", "10.1016/j.apjtm.2016.03.013", "10.1016/j.apsb.2017.05.001", "10.1016/j.apsb.2020.04.004", "10.1016/j.apsb.2020.07.006", "10.1016/j.apsusc.2017.08.150", "10.1016/j.apsusc.2019.144285", "10.1016/j.aquaculture.2020.735731", "10.1016/j.aquatox.2011.07.005", "10.1016/j.aquatox.2013.11.017", "10.1016/j.aquatox.2017.11.003", "10.1016/j.aquatox.2020.105449", "10.1016/j.arr.2009.10.003", "10.1016/j.arr.2014.11.005", "10.1016/j.arr.2019.05.002", "10.1016/j.arr.2020.101251", "10.1016/j.arr.2021.101343", "10.1016/j.asd.2013.04.005", "10.1016/j.asd.2018.05.004", "10.1016/j.aspen.2015.12.009", "10.1016/j.autrev.2017.05.024", "10.1016/j.autrev.2020.102468", "10.1016/j.autrev.2021.102761", "10.1016/j.bbabio.2009.09.005", "10.1016/j.bbabio.2010.08.010", "10.1016/j.bbabio.2013.10.014", "10.1016/j.bbabio.2013.11.005", "10.1016/j.bbabio.2014.11.011", "10.1016/j.bbabio.2020.148349", "10.1016/j.bbadis.2004.08.010", "10.1016/j.bbadis.2012.06.013", "10.1016/j.bbadis.2012.11.022", "10.1016/j.bbadis.2014.04.030", "10.1016/j.bbadis.2018.01.013", "10.1016/j.bbadis.2018.04.020", "10.1016/j.bbadis.2020.165959", "10.1016/j.bbadis.2021.166155", "10.1016/j.bbagen.2009.07.027", "10.1016/j.bbagen.2012.07.005", "10.1016/j.bbagen.2012.09.002", "10.1016/j.bbagen.2014.06.006", "10.1016/j.bbagen.2015.08.013", "10.1016/j.bbagen.2016.05.021", "10.1016/j.bbagen.2017.02.009", "10.1016/j.bbagen.2017.12.002", "10.1016/j.bbagen.2018.06.001", "10.1016/j.bbagen.2018.09.009", "10.1016/j.bbagen.2020.129631", "10.1016/j.bbagrm.2010.02.003", "10.1016/j.bbagrm.2012.11.001", "10.1016/j.bbagrm.2013.03.007", "10.1016/j.bbagrm.2014.02.015", "10.1016/j.bbagrm.2014.10.007", "10.1016/j.bbagrm.2015.04.003", "10.1016/j.bbagrm.2018.11.009", "10.1016/j.bbagrm.2019.07.006", "10.1016/j.bbagrm.2019.194407", "10.1016/j.bbagrm.2020.194515", "10.1016/j.bbalip.2014.06.007", "10.1016/j.bbamcr.2005.03.014", "10.1016/j.bbamcr.2006.11.010", "10.1016/j.bbamcr.2009.10.009", "10.1016/j.bbamcr.2010.09.010", "10.1016/j.bbamcr.2011.01.003", "10.1016/j.bbamcr.2012.02.011", "10.1016/j.bbamcr.2012.04.009", "10.1016/j.bbamcr.2013.02.026", "10.1016/j.bbamcr.2013.04.007", "10.1016/j.bbamcr.2013.07.007", "10.1016/j.bbamcr.2013.11.018", "10.1016/j.bbamcr.2015.01.015", "10.1016/j.bbamcr.2016.04.001", "10.1016/j.bbamcr.2017.03.008", "10.1016/j.bbamcr.2019.118570", "10.1016/j.bbamcr.2020.118727", "10.1016/j.bbamcr.2020.118786", "10.1016/j.bbamcr.2020.118889", "10.1016/j.bbamem.2008.03.017", "10.1016/j.bbamem.2010.02.004", "10.1016/j.bbamem.2010.07.010", "10.1016/j.bbamem.2010.12.017", "10.1016/j.bbamem.2013.04.011", "10.1016/j.bbamem.2014.01.031", "10.1016/j.bbamem.2015.03.021", "10.1016/j.bbamem.2017.10.033", "10.1016/j.bbamem.2020.183317", "10.1016/j.bbapap.2007.08.006", "10.1016/j.bbapap.2012.03.003", "10.1016/j.bbapap.2015.04.015", "10.1016/j.bbapap.2018.04.010", "10.1016/j.bbapap.2018.10.010", "10.1016/j.bbcan.2007.05.003", "10.1016/j.bbcan.2010.11.001", "10.1016/j.bbcan.2013.10.004", "10.1016/j.bbcan.2014.07.005", "10.1016/j.bbcan.2016.06.004", "10.1016/j.bbcan.2017.09.006", "10.1016/j.bbcan.2018.01.001", "10.1016/j.bbi.2010.10.015", "10.1016/j.bbi.2012.11.013", "10.1016/j.bbi.2013.10.029", "10.1016/j.bbi.2014.12.008", "10.1016/j.bbi.2015.06.008", "10.1016/j.bbi.2015.09.015", "10.1016/j.bbi.2015.09.017", "10.1016/j.bbi.2016.06.006", "10.1016/j.bbi.2017.05.015", "10.1016/j.bbi.2017.06.008", "10.1016/j.bbi.2018.03.005", "10.1016/j.bbi.2018.06.001", "10.1016/j.bbi.2018.09.005", "10.1016/j.bbi.2019.01.013", "10.1016/j.bbi.2019.05.028", "10.1016/j.bbi.2019.06.030", "10.1016/j.bbi.2020.07.015", "10.1016/j.bbi.2021.04.016", "10.1016/j.bbi.2021.07.022", "10.1016/j.bbi.2021.08.223", "10.1016/j.bbi.2024.01.114", "10.1016/j.bbih.2020.100077", "10.1016/j.bbih.2021.100227", "10.1016/j.bbih.2021.100301", "10.1016/j.bbmt.2015.04.010", "10.1016/j.bbmt.2019.08.008", "10.1016/j.bbr.2007.11.026", "10.1016/j.bbr.2010.10.030", "10.1016/j.bbr.2011.06.024", "10.1016/j.bbr.2013.04.010", "10.1016/j.bbr.2015.06.017", "10.1016/j.bbr.2016.12.020", "10.1016/j.bbr.2017.09.050", "10.1016/j.bbr.2018.06.025", "10.1016/j.bbr.2019.111932", "10.1016/j.bbr.2019.112036", "10.1016/j.bbrc.2004.01.151", "10.1016/j.bbrc.2004.09.017", "10.1016/j.bbrc.2006.08.186", "10.1016/j.bbrc.2006.09.098", "10.1016/j.bbrc.2007.11.071", "10.1016/j.bbrc.2008.05.180", "10.1016/j.bbrc.2009.03.113", "10.1016/j.bbrc.2010.07.092", "10.1016/j.bbrc.2011.06.024", "10.1016/j.bbrc.2011.06.070", "10.1016/j.bbrc.2012.06.019", "10.1016/j.bbrc.2013.05.023", "10.1016/j.bbrc.2014.05.043", "10.1016/j.bbrc.2014.05.111", "10.1016/j.bbrc.2015.02.169", "10.1016/j.bbrc.2016.05.112", "10.1016/j.bbrc.2016.09.149", "10.1016/j.bbrc.2017.03.002", "10.1016/j.bbrc.2017.04.074", "10.1016/j.bbrc.2018.10.058", "10.1016/j.bbrc.2018.12.167", "10.1016/j.bbrc.2019.03.199", "10.1016/j.bbrc.2019.06.057", "10.1016/j.bbrc.2019.11.045", "10.1016/j.bbrc.2020.03.008", "10.1016/j.bbrc.2020.08.066", "10.1016/j.bbrc.2020.11.026", "10.1016/j.bbrc.2021.01.025", "10.1016/j.bbrc.2021.04.027", "10.1016/j.bbrc.2021.09.005", "10.1016/j.bbrep.2018.11.011", "10.1016/j.bcmd.2007.05.003", "10.1016/j.bcmd.2007.10.064", "10.1016/j.bcmd.2013.07.010", "10.1016/j.bcp.2009.08.032", "10.1016/j.bcp.2010.04.027", "10.1016/j.bcp.2011.06.017", "10.1016/j.bcp.2013.03.005", "10.1016/j.bcp.2016.03.009", "10.1016/j.bcp.2018.01.008", "10.1016/j.bcp.2018.11.014", "10.1016/j.bcp.2018.12.010", "10.1016/j.bcp.2019.06.024", "10.1016/j.bcp.2020.113905", "10.1016/j.bcp.2020.114280", "10.1016/j.bcp.2022.115401", "10.1016/j.beem.2023.101761", "10.1016/j.bej.2009.11.007", "10.1016/j.bej.2021.108124", "10.1016/j.bioactmat.2021.02.022", "10.1016/j.biocel.2003.11.009", "10.1016/j.biocel.2008.06.017", "10.1016/j.biocel.2019.105589", "10.1016/j.biochi.2006.07.021", "10.1016/j.biochi.2011.06.006", "10.1016/j.biochi.2011.08.021", "10.1016/j.biochi.2012.02.001", "10.1016/j.biochi.2014.11.019", "10.1016/j.biochi.2015.05.020", "10.1016/j.biochi.2019.02.007", "10.1016/j.biochi.2021.02.014", "10.1016/j.bioelechem.2017.09.004", "10.1016/j.bioelechem.2019.05.010", "10.1016/j.bioeng.2007.02.009", "10.1016/j.biologicals.2009.04.004", "10.1016/j.biomaterials.2005.03.030", "10.1016/j.biomaterials.2011.01.062", "10.1016/j.biomaterials.2012.09.062", "10.1016/j.biomaterials.2012.09.078", "10.1016/j.biomaterials.2013.06.002", "10.1016/j.biomaterials.2014.01.056", "10.1016/j.biomaterials.2014.03.078", "10.1016/j.biomaterials.2014.04.022", "10.1016/j.biomaterials.2014.10.043", "10.1016/j.biomaterials.2014.11.046", "10.1016/j.biomaterials.2015.01.023", "10.1016/j.biomaterials.2017.05.007", "10.1016/j.biomaterials.2019.119464", "10.1016/j.biomaterials.2020.120057", "10.1016/j.biomaterials.2020.120595", "10.1016/j.biomaterials.2021.120903", "10.1016/j.biomaterials.2021.120919", "10.1016/j.bioorg.2011.11.001", "10.1016/j.bioorg.2021.105110", "10.1016/j.biopha.2015.07.025", "10.1016/j.biopha.2016.11.127", "10.1016/j.biopha.2017.09.036", "10.1016/j.biopha.2018.03.078", "10.1016/j.biopha.2019.108790", "10.1016/j.biopha.2020.110956", "10.1016/j.biopsych.2007.07.018", "10.1016/j.biopsych.2008.05.034", "10.1016/j.biopsych.2009.05.009", "10.1016/j.biopsych.2009.11.016", "10.1016/j.biopsych.2012.03.007", "10.1016/j.biopsych.2013.05.036", "10.1016/j.biopsych.2014.08.001", "10.1016/j.biopsych.2017.10.030", "10.1016/j.biopsych.2018.08.008", "10.1016/j.biopsych.2018.08.018", "10.1016/j.biopsych.2019.08.022", "10.1016/j.biopsych.2019.10.021", "10.1016/j.biopsych.2020.02.354", "10.1016/j.biortech.2017.05.060", "10.1016/j.bios.2004.07.021", "10.1016/j.bios.2013.05.024", "10.1016/j.bios.2015.12.058", "10.1016/j.bios.2018.12.040", "10.1016/j.bios.2019.01.015", "10.1016/j.bios.2020.112872", "10.1016/j.biosystems.2013.05.012", "10.1016/j.biosystems.2015.02.003", "10.1016/j.biotechadv.2011.09.011", "10.1016/j.biotechadv.2017.03.003", "10.1016/j.biotechadv.2020.107630", "10.1016/j.bj.2021.04.012", "10.1016/j.blre.2016.10.001", "10.1016/j.blre.2018.11.003", "10.1016/j.bmc.2016.12.014", "10.1016/j.bmc.2018.03.028", "10.1016/j.bmc.2020.115379", "10.1016/j.bmc.2021.116162", "10.1016/j.bmcl.2006.02.022", "10.1016/j.bmcl.2009.01.038", "10.1016/j.bone.2004.04.022", "10.1016/j.bone.2010.03.021", "10.1016/j.bone.2012.07.015", "10.1016/j.bone.2015.02.008", "10.1016/j.bone.2015.05.029", "10.1016/j.bone.2020.115665", "10.1016/j.bone.2021.116072", "10.1016/j.bone.2022.116525", "10.1016/j.bpc.2007.01.006", "10.1016/j.bpc.2011.03.010", "10.1016/j.bpc.2013.09.003", "10.1016/j.bpj.2008.12.3811", "10.1016/j.bpj.2009.11.002", "10.1016/j.bpj.2009.11.039", "10.1016/j.bpj.2009.12.4332", "10.1016/j.bpj.2010.05.020", "10.1016/j.bpj.2011.05.071", "10.1016/j.bpj.2012.12.003", "10.1016/j.bpj.2013.05.032", "10.1016/j.bpj.2013.11.3018", "10.1016/j.bpj.2013.11.4460", "10.1016/j.bpj.2014.03.002", "10.1016/j.bpj.2014.03.014", "10.1016/j.bpj.2015.06.043", "10.1016/j.bpj.2015.07.025", "10.1016/j.bpj.2015.11.369", "10.1016/j.bpj.2016.02.003", "10.1016/j.bpj.2016.02.017", "10.1016/j.bpj.2016.08.016", "10.1016/j.bpj.2016.11.1827", "10.1016/j.bpj.2016.11.1918", "10.1016/j.bpj.2016.11.894", "10.1016/j.bpj.2017.01.023", "10.1016/j.bpj.2017.11.2344", "10.1016/j.bpj.2018.04.038", "10.1016/j.bpj.2018.08.024", "10.1016/j.bpj.2018.11.186", "10.1016/j.bpj.2018.11.3144", "10.1016/j.bpj.2018.11.322", "10.1016/j.bpj.2019.12.036", "10.1016/j.bpj.2020.03.006", "10.1016/j.bpj.2020.06.014", "10.1016/j.bpj.2020.06.021", "10.1016/j.bpj.2020.11.393", "10.1016/j.bpj.2021.11.1119", "10.1016/j.bpj.2022.02.026", "10.1016/j.bpj.2024.03.034", "10.1016/j.bpsc.2019.12.004", "10.1016/j.braindev.2015.10.008", "10.1016/j.braindev.2017.12.002", "10.1016/j.brainres.2004.01.011", "10.1016/j.brainres.2004.05.039", "10.1016/j.brainres.2004.06.075", "10.1016/j.brainres.2004.09.056", "10.1016/j.brainres.2005.01.098", "10.1016/j.brainres.2006.01.125", "10.1016/j.brainres.2006.03.075", "10.1016/j.brainres.2006.05.068", "10.1016/j.brainres.2006.05.105", "10.1016/j.brainres.2006.07.106", "10.1016/j.brainres.2006.08.084", "10.1016/j.brainres.2007.06.037", "10.1016/j.brainres.2009.09.097", "10.1016/j.brainres.2009.11.009", "10.1016/j.brainres.2010.02.075", "10.1016/j.brainres.2010.05.061", "10.1016/j.brainres.2012.08.005", "10.1016/j.brainres.2013.04.049", "10.1016/j.brainres.2015.12.031", "10.1016/j.brainres.2016.04.042", "10.1016/j.brainres.2016.05.015", "10.1016/j.brainres.2016.12.022", "10.1016/j.brainres.2018.02.005", "10.1016/j.brainres.2018.09.034", "10.1016/j.brainres.2019.146358", "10.1016/j.brainresbull.2009.08.026", "10.1016/j.brainresbull.2014.10.008", "10.1016/j.brainresbull.2021.05.015", "10.1016/j.brainresrev.2009.12.006", "10.1016/j.brainresrev.2010.09.008", "10.1016/j.brainresrev.2010.10.001", "10.1016/j.breast.2015.12.001", "10.1016/j.breast.2017.03.010", "10.1016/j.breast.2017.07.005", "10.1016/j.brs.2014.11.010", "10.1016/j.brs.2015.01.415", "10.1016/j.bsheal.2021.08.003", "10.1016/j.bsheal.2021.09.001", "10.1016/j.cair.2004.08.002", "10.1016/j.canlet.2013.03.031", "10.1016/j.canlet.2015.01.010", "10.1016/j.canlet.2015.06.001", "10.1016/j.canlet.2015.07.040", "10.1016/j.canlet.2016.02.022", "10.1016/j.canlet.2017.03.001", "10.1016/j.canlet.2018.05.018", "10.1016/j.canlet.2018.05.024", "10.1016/j.canlet.2018.10.013", "10.1016/j.canlet.2019.05.030", "10.1016/j.canlet.2019.06.002", "10.1016/j.canlet.2019.10.016", "10.1016/j.canlet.2019.11.009", "10.1016/j.canlet.2020.08.020", "10.1016/j.canlet.2021.01.018", "10.1016/j.carbon.2013.11.067", "10.1016/j.carbpol.2015.03.008", "10.1016/j.cardiores.2003.12.005", "10.1016/j.cardiores.2006.09.003", "10.1016/j.cbi.2016.04.016", "10.1016/j.cbi.2019.108762", "10.1016/j.cbi.2021.109452", "10.1016/j.cbi.2021.109574", "10.1016/j.cbpa.2006.02.030", "10.1016/j.cbpa.2013.02.012", "10.1016/j.cbpa.2017.10.002", "10.1016/j.cbpa.2018.11.022", "10.1016/j.cbpa.2021.01.001", "10.1016/j.cbpb.2008.06.001", "10.1016/j.ccell.2015.04.006", "10.1016/j.ccell.2015.11.011", "10.1016/j.ccell.2016.03.006", "10.1016/j.ccell.2016.05.016", "10.1016/j.ccell.2016.06.005", "10.1016/j.ccell.2017.01.004", "10.1016/j.ccell.2017.06.003", "10.1016/j.ccell.2018.02.005", "10.1016/j.ccell.2018.08.018", "10.1016/j.ccell.2019.01.003", "10.1016/j.ccell.2019.01.019", "10.1016/j.ccell.2019.07.008", "10.1016/j.ccell.2019.12.001", "10.1016/j.ccell.2020.03.015", "10.1016/j.ccell.2020.06.001", "10.1016/j.ccell.2021.02.009", "10.1016/j.ccell.2021.05.002", "10.1016/j.ccell.2022.07.005", "10.1016/j.ccell.2024.03.013", "10.1016/j.cclet.2021.07.064", "10.1016/j.ccr.2005.03.003", "10.1016/j.ccr.2006.10.003", "10.1016/j.ccr.2006.11.020", "10.1016/j.ccr.2007.07.003", "10.1016/j.ccr.2007.07.004", "10.1016/j.ccr.2007.08.033", "10.1016/j.ccr.2008.03.004", "10.1016/j.ccr.2008.07.003", "10.1016/j.ccr.2008.07.005", "10.1016/j.ccr.2009.06.018", "10.1016/j.ccr.2009.09.024", "10.1016/j.ccr.2010.03.018", "10.1016/j.ccr.2012.04.025", "10.1016/j.ccr.2012.05.019", "10.1016/j.ccr.2013.11.007", "10.1016/j.ccr.2013.12.009", "10.1016/j.ccr.2020.213242", "10.1016/j.ceb.2005.04.014", "10.1016/j.ceb.2008.09.007", "10.1016/j.ceb.2010.02.001", "10.1016/j.ceb.2013.02.005", "10.1016/j.ceb.2017.02.010", "10.1016/j.ceb.2018.02.011", "10.1016/j.ceb.2019.04.002", "10.1016/j.ceb.2019.06.008", "10.1016/j.ceb.2020.08.004", "10.1016/j.ceb.2020.08.012", "10.1016/j.cell.2004.08.015", "10.1016/j.cell.2004.08.028", "10.1016/j.cell.2004.09.029", "10.1016/j.cell.2004.09.030", "10.1016/j.cell.2004.12.012", "10.1016/j.cell.2005.02.003", "10.1016/j.cell.2005.03.027", "10.1016/j.cell.2005.06.026", "10.1016/j.cell.2005.06.044", "10.1016/j.cell.2005.08.020", "10.1016/j.cell.2005.08.029", "10.1016/j.cell.2005.09.034", "10.1016/j.cell.2005.10.042", "10.1016/j.cell.2006.02.015", "10.1016/j.cell.2006.03.022", "10.1016/j.cell.2006.06.052", "10.1016/j.cell.2006.06.057", "10.1016/j.cell.2006.07.024", "10.1016/j.cell.2006.11.050", "10.1016/j.cell.2007.01.043", "10.1016/j.cell.2007.05.022", "10.1016/j.cell.2007.05.042", "10.1016/j.cell.2007.05.043", "10.1016/j.cell.2007.10.036", "10.1016/j.cell.2007.12.005", "10.1016/j.cell.2007.12.030", "10.1016/j.cell.2007.12.032", "10.1016/j.cell.2008.02.007", "10.1016/j.cell.2008.06.037", "10.1016/j.cell.2008.08.032", "10.1016/j.cell.2008.08.037", "10.1016/j.cell.2008.09.015", "10.1016/j.cell.2008.10.049", "10.1016/j.cell.2008.11.014", "10.1016/j.cell.2009.02.024", "10.1016/j.cell.2009.04.037", "10.1016/j.cell.2010.01.044", "10.1016/j.cell.2010.03.014", "10.1016/j.cell.2010.04.010", "10.1016/j.cell.2010.05.021", "10.1016/j.cell.2010.05.037", "10.1016/j.cell.2010.09.012", "10.1016/j.cell.2011.02.013", "10.1016/j.cell.2011.02.026", "10.1016/j.cell.2011.02.031", "10.1016/j.cell.2011.03.022", "10.1016/j.cell.2011.03.041", "10.1016/j.cell.2011.03.051", "10.1016/j.cell.2011.05.019", "10.1016/j.cell.2011.06.030", "10.1016/j.cell.2011.07.034", "10.1016/j.cell.2011.08.017", "10.1016/j.cell.2011.10.002", "10.1016/j.cell.2011.10.038", "10.1016/j.cell.2011.12.014", "10.1016/j.cell.2012.01.010", "10.1016/j.cell.2012.01.052", "10.1016/j.cell.2012.02.018", "10.1016/j.cell.2012.03.051", "10.1016/j.cell.2012.04.012", "10.1016/j.cell.2012.06.041", "10.1016/j.cell.2012.08.033", "10.1016/j.cell.2012.09.016", "10.1016/j.cell.2012.12.018", "10.1016/j.cell.2013.02.053", "10.1016/j.cell.2013.03.030", "10.1016/j.cell.2013.03.035", "10.1016/j.cell.2013.04.016", "10.1016/j.cell.2013.04.034", "10.1016/j.cell.2013.04.037", "10.1016/j.cell.2013.04.053", "10.1016/j.cell.2013.05.002", "10.1016/j.cell.2013.05.049", "10.1016/j.cell.2013.06.044", "10.1016/j.cell.2013.07.018", "10.1016/j.cell.2013.10.056", "10.1016/j.cell.2013.12.001", "10.1016/j.cell.2014.01.044", "10.1016/j.cell.2014.02.001", "10.1016/j.cell.2014.02.019", "10.1016/j.cell.2014.02.023", "10.1016/j.cell.2014.03.025", "10.1016/j.cell.2014.05.010", "10.1016/j.cell.2014.05.018", "10.1016/j.cell.2014.08.028", "10.1016/j.cell.2014.09.029", "10.1016/j.cell.2014.09.030", "10.1016/j.cell.2014.11.018", "10.1016/j.cell.2014.11.021", "10.1016/j.cell.2014.11.024", "10.1016/j.cell.2014.11.039", "10.1016/j.cell.2015.03.003", "10.1016/j.cell.2015.03.031", "10.1016/j.cell.2015.03.051", "10.1016/j.cell.2015.04.004", "10.1016/j.cell.2015.04.044", "10.1016/j.cell.2015.04.049", "10.1016/j.cell.2015.05.002", "10.1016/j.cell.2015.05.041", "10.1016/j.cell.2015.06.017", "10.1016/j.cell.2015.06.023", "10.1016/j.cell.2015.07.043", "10.1016/j.cell.2015.07.047", "10.1016/j.cell.2015.08.007", "10.1016/j.cell.2015.08.052", "10.1016/j.cell.2015.09.015", "10.1016/j.cell.2015.09.029", "10.1016/j.cell.2015.09.038", "10.1016/j.cell.2015.11.059", "10.1016/j.cell.2015.12.039", "10.1016/j.cell.2015.12.056", "10.1016/j.cell.2016.01.004", "10.1016/j.cell.2016.01.011", "10.1016/j.cell.2016.01.039", "10.1016/j.cell.2016.01.047", "10.1016/j.cell.2016.03.023", "10.1016/j.cell.2016.04.003", "10.1016/j.cell.2016.04.032", "10.1016/j.cell.2016.04.044", "10.1016/j.cell.2016.07.012", "10.1016/j.cell.2016.08.020", "10.1016/j.cell.2016.08.024", "10.1016/j.cell.2016.09.006", "10.1016/j.cell.2016.09.011", "10.1016/j.cell.2016.09.018", "10.1016/j.cell.2016.09.037", "10.1016/j.cell.2016.10.025", "10.1016/j.cell.2016.11.005", "10.1016/j.cell.2016.11.020", "10.1016/j.cell.2017.01.042", "10.1016/j.cell.2017.02.005", "10.1016/j.cell.2017.04.011", "10.1016/j.cell.2017.04.016", "10.1016/j.cell.2017.04.023", "10.1016/j.cell.2017.05.004", "10.1016/j.cell.2017.05.018", "10.1016/j.cell.2017.05.045", "10.1016/j.cell.2017.06.009", "10.1016/j.cell.2017.08.002", "10.1016/j.cell.2017.09.020", "10.1016/j.cell.2017.09.026", "10.1016/j.cell.2017.09.030", "10.1016/j.cell.2017.09.043", "10.1016/j.cell.2017.09.044", "10.1016/j.cell.2017.10.020", "10.1016/j.cell.2017.10.044", "10.1016/j.cell.2017.11.008", "10.1016/j.cell.2017.11.023", "10.1016/j.cell.2017.11.032", "10.1016/j.cell.2017.12.005", "10.1016/j.cell.2017.12.007", "10.1016/j.cell.2017.12.033", "10.1016/j.cell.2018.01.029", "10.1016/j.cell.2018.05.013", "10.1016/j.cell.2018.06.035", "10.1016/j.cell.2018.07.028", "10.1016/j.cell.2018.08.005", "10.1016/j.cell.2018.08.057", "10.1016/j.cell.2018.09.009", "10.1016/j.cell.2018.09.042", "10.1016/j.cell.2018.09.057", "10.1016/j.cell.2018.10.021", "10.1016/j.cell.2018.12.018", "10.1016/j.cell.2018.12.019", "10.1016/j.cell.2019.02.027", "10.1016/j.cell.2019.02.031", "10.1016/j.cell.2019.05.003", "10.1016/j.cell.2019.05.006", "10.1016/j.cell.2019.05.041", "10.1016/j.cell.2019.06.007", "10.1016/j.cell.2019.07.049", "10.1016/j.cell.2019.09.003", "10.1016/j.cell.2019.09.023", "10.1016/j.cell.2019.09.029", "10.1016/j.cell.2019.10.009", "10.1016/j.cell.2019.11.031", "10.1016/j.cell.2019.12.023", "10.1016/j.cell.2020.02.002", "10.1016/j.cell.2020.02.008", "10.1016/j.cell.2020.02.031", "10.1016/j.cell.2020.02.052", "10.1016/j.cell.2020.02.058", "10.1016/j.cell.2020.03.045", "10.1016/j.cell.2020.03.050", "10.1016/j.cell.2020.04.007", "10.1016/j.cell.2020.04.031", "10.1016/j.cell.2020.04.055", "10.1016/j.cell.2020.05.007", "10.1016/j.cell.2020.05.034", "10.1016/j.cell.2020.05.054", "10.1016/j.cell.2020.06.038", "10.1016/j.cell.2020.06.043", "10.1016/j.cell.2020.07.009", "10.1016/j.cell.2020.08.040", "10.1016/j.cell.2020.09.037", "10.1016/j.cell.2020.09.047", "10.1016/j.cell.2020.09.060", "10.1016/j.cell.2020.11.024", "10.1016/j.cell.2020.12.020", "10.1016/j.cell.2021.01.037", "10.1016/j.cell.2021.04.023", "10.1016/j.cell.2021.04.048", "10.1016/j.cell.2021.06.024", "10.1016/j.cell.2021.06.028", "10.1016/j.cell.2021.07.016", "10.1016/j.cell.2021.09.018", "10.1016/j.cell.2022.05.018", "10.1016/j.cell.2022.11.026", "10.1016/j.cell.2023.03.035", "10.1016/j.cell.2023.04.016", "10.1016/j.cell.2023.05.041", "10.1016/j.cell.2023.11.007", "10.1016/j.cell.2024.01.027", "10.1016/j.cell.2024.02.016", "10.1016/j.cell.2024.04.015", "10.1016/j.cell.2024.04.029", "10.1016/j.cellimm.2011.10.001", "10.1016/j.cellimm.2015.01.018", "10.1016/j.cellimm.2015.05.001", "10.1016/j.cellimm.2017.07.010", "10.1016/j.cellimm.2018.03.008", "10.1016/j.cellimm.2021.104379", "10.1016/j.cellsig.2006.09.008", "10.1016/j.cellsig.2009.02.024", "10.1016/j.cellsig.2010.03.017", "10.1016/j.cellsig.2012.11.001", "10.1016/j.cellsig.2013.04.003", "10.1016/j.cellsig.2013.08.014", "10.1016/j.cellsig.2014.11.036", "10.1016/j.cellsig.2016.02.002", "10.1016/j.cellsig.2018.03.004", "10.1016/j.cellsig.2020.109628", "10.1016/j.celrep.2012.03.011", "10.1016/j.celrep.2012.07.013", "10.1016/j.celrep.2013.02.028", "10.1016/j.celrep.2013.03.014", "10.1016/j.celrep.2013.08.049", "10.1016/j.celrep.2014.02.009", "10.1016/j.celrep.2014.04.018", "10.1016/j.celrep.2014.04.055", "10.1016/j.celrep.2014.07.037", "10.1016/j.celrep.2014.09.042", "10.1016/j.celrep.2014.11.023", "10.1016/j.celrep.2015.01.030", "10.1016/j.celrep.2015.03.059", "10.1016/j.celrep.2015.04.007", "10.1016/j.celrep.2015.06.026", "10.1016/j.celrep.2015.07.061", "10.1016/j.celrep.2015.08.066", "10.1016/j.celrep.2015.11.021", "10.1016/j.celrep.2015.11.036", "10.1016/j.celrep.2015.12.018", "10.1016/j.celrep.2015.12.095", "10.1016/j.celrep.2016.03.006", "10.1016/j.celrep.2016.04.085", "10.1016/j.celrep.2016.07.031", "10.1016/j.celrep.2016.08.027", "10.1016/j.celrep.2016.08.035", "10.1016/j.celrep.2016.09.079", "10.1016/j.celrep.2016.10.052", "10.1016/j.celrep.2016.11.068", "10.1016/j.celrep.2016.12.063", "10.1016/j.celrep.2017.01.001", "10.1016/j.celrep.2017.02.080", "10.1016/j.celrep.2017.07.009", "10.1016/j.celrep.2017.07.037", "10.1016/j.celrep.2017.07.049", "10.1016/j.celrep.2017.08.012", "10.1016/j.celrep.2017.09.047", "10.1016/j.celrep.2017.11.049", "10.1016/j.celrep.2017.12.101", "10.1016/j.celrep.2018.02.040", "10.1016/j.celrep.2018.02.067", "10.1016/j.celrep.2018.03.036", "10.1016/j.celrep.2018.03.066", "10.1016/j.celrep.2018.04.097", "10.1016/j.celrep.2018.05.012", "10.1016/j.celrep.2018.05.048", "10.1016/j.celrep.2018.05.050", "10.1016/j.celrep.2018.07.090", "10.1016/j.celrep.2018.08.094", "10.1016/j.celrep.2018.08.095", "10.1016/j.celrep.2018.09.003", "10.1016/j.celrep.2018.09.006", "10.1016/j.celrep.2018.09.059", "10.1016/j.celrep.2018.11.014", "10.1016/j.celrep.2018.12.035", "10.1016/j.celrep.2018.12.086", "10.1016/j.celrep.2019.01.023", "10.1016/j.celrep.2019.02.002", "10.1016/j.celrep.2019.02.040", "10.1016/j.celrep.2019.03.047", "10.1016/j.celrep.2019.03.099", "10.1016/j.celrep.2019.05.069", "10.1016/j.celrep.2019.05.078", "10.1016/j.celrep.2019.05.094", "10.1016/j.celrep.2019.07.013", "10.1016/j.celrep.2019.08.037", "10.1016/j.celrep.2019.08.048", "10.1016/j.celrep.2019.09.003", "10.1016/j.celrep.2019.10.008", "10.1016/j.celrep.2019.10.019", "10.1016/j.celrep.2019.10.031", "10.1016/j.celrep.2019.10.119", "10.1016/j.celrep.2019.10.126", "10.1016/j.celrep.2019.12.014", "10.1016/j.celrep.2019.12.050", "10.1016/j.celrep.2019.12.057", "10.1016/j.celrep.2019.12.090", "10.1016/j.celrep.2020.01.003", "10.1016/j.celrep.2020.01.091", "10.1016/j.celrep.2020.02.080", "10.1016/j.celrep.2020.02.089", "10.1016/j.celrep.2020.03.035", "10.1016/j.celrep.2020.107551", "10.1016/j.celrep.2020.107575", "10.1016/j.celrep.2020.107631", "10.1016/j.celrep.2020.107666", "10.1016/j.celrep.2020.107679", "10.1016/j.celrep.2020.107796", "10.1016/j.celrep.2020.107907", "10.1016/j.celrep.2020.107929", "10.1016/j.celrep.2020.108152", "10.1016/j.celrep.2020.108398", "10.1016/j.celrep.2020.108409", "10.1016/j.celrep.2020.108469", "10.1016/j.celrep.2020.108580", "10.1016/j.celrep.2020.108615", "10.1016/j.celrep.2021.109056", "10.1016/j.celrep.2021.109138", "10.1016/j.celrep.2021.109264", "10.1016/j.celrep.2021.109276", "10.1016/j.celrep.2021.109421", "10.1016/j.celrep.2021.109428", "10.1016/j.celrep.2021.109967", "10.1016/j.celrep.2022.111161", "10.1016/j.celrep.2023.112052", "10.1016/j.celrep.2023.112189", "10.1016/j.celrep.2024.113693", "10.1016/j.celrep.2024.114044", "10.1016/j.cels.2018.02.009", "10.1016/j.cels.2020.08.016", "10.1016/j.cels.2020.11.013", "10.1016/j.cels.2021.05.017", "10.1016/j.cels.2021.08.003", "10.1016/j.cels.2023.05.008", "10.1016/j.cels.2023.10.002", "10.1016/j.cels.2023.10.006", "10.1016/j.cels.2024.01.008", "10.1016/j.chaos.2020.110017", "10.1016/j.chaos.2020.110227", "10.1016/j.chembiol.2004.12.010", "10.1016/j.chembiol.2005.04.011", "10.1016/j.chembiol.2014.06.008", "10.1016/j.chembiol.2014.08.001", "10.1016/j.chembiol.2017.05.016", "10.1016/j.chembiol.2017.12.012", "10.1016/j.chembiol.2019.02.015", "10.1016/j.chembiol.2019.03.013", "10.1016/j.chembiol.2019.09.014", "10.1016/j.chembiol.2019.12.006", "10.1016/j.chembiol.2020.12.012", "10.1016/j.chembiol.2021.05.019", "10.1016/j.chemosphere.2013.03.021", "10.1016/j.chemosphere.2019.125430", "10.1016/j.chemosphere.2020.126658", "10.1016/j.chemphys.2010.02.014", "10.1016/j.chempr.2020.01.012", "10.1016/j.cherd.2019.11.038", "10.1016/j.chom.2009.05.011", "10.1016/j.chom.2009.12.007", "10.1016/j.chom.2010.06.008", "10.1016/j.chom.2011.03.011", "10.1016/j.chom.2012.03.007", "10.1016/j.chom.2013.03.002", "10.1016/j.chom.2015.10.006", "10.1016/j.chom.2016.11.004", "10.1016/j.chom.2017.02.005", "10.1016/j.chom.2017.03.001", "10.1016/j.chom.2017.06.006", "10.1016/j.chom.2017.10.006", "10.1016/j.chom.2018.08.001", "10.1016/j.chom.2019.04.003", "10.1016/j.chom.2019.08.017", "10.1016/j.chom.2019.10.007", "10.1016/j.chom.2020.06.010", "10.1016/j.chom.2020.06.017", "10.1016/j.chom.2021.01.014", "10.1016/j.chom.2021.03.006", "10.1016/j.chom.2021.04.007", "10.1016/j.chom.2021.07.011", "10.1016/j.chom.2022.02.006", "10.1016/j.chom.2022.07.016", "10.1016/j.chom.2024.03.010", "10.1016/j.chom.2024.03.013", "10.1016/j.chroma.2017.10.016", "10.1016/j.cimid.2012.02.002", "10.1016/j.cis.2017.01.002", "10.1016/j.cis.2017.07.030", "10.1016/j.cis.2017.08.005", "10.1016/j.cis.2017.12.007", "10.1016/j.cis.2019.03.002", "10.1016/j.cj.2019.08.006", "10.1016/j.cjca.2013.07.271", "10.1016/j.clay.2003.07.005", "10.1016/j.clim.2005.09.012", "10.1016/j.clim.2014.02.012", "10.1016/j.clim.2018.11.002", "10.1016/j.clim.2020.108411", "10.1016/j.clim.2020.108430", "10.1016/j.clim.2021.108784", "10.1016/j.clinbiochem.2011.05.020", "10.1016/j.clinbiochem.2011.08.436", "10.1016/j.clinthera.2020.07.014", "10.1016/j.clml.2015.04.101", "10.1016/j.clnu.2020.10.037", "10.1016/j.cma.2019.02.006", "10.1016/j.cmet.2005.03.002", "10.1016/j.cmet.2009.03.001", "10.1016/j.cmet.2011.04.002", "10.1016/j.cmet.2013.02.006", "10.1016/j.cmet.2015.05.011", "10.1016/j.cmet.2015.05.012", "10.1016/j.cmet.2017.10.006", "10.1016/j.cmet.2018.04.013", "10.1016/j.cmet.2021.03.002", "10.1016/j.cmet.2021.07.017", "10.1016/j.cmi.2015.04.007", "10.1016/j.cmi.2017.11.020", "10.1016/j.cmrp.2014.07.002", "10.1016/j.cobeha.2017.03.001", "10.1016/j.cobme.2017.03.002", "10.1016/j.coche.2017.12.009", "10.1016/j.cocis.2018.08.002", "10.1016/j.cogbrainres.2005.07.003", "10.1016/j.coi.2006.09.001", "10.1016/j.coi.2007.07.002", "10.1016/j.coi.2010.02.003", "10.1016/j.coi.2015.01.013", "10.1016/j.coi.2015.10.009", "10.1016/j.coi.2016.12.002", "10.1016/j.coi.2017.06.008", "10.1016/j.coi.2019.04.017", "10.1016/j.coi.2021.03.016", "10.1016/j.coi.2021.03.019", "10.1016/j.cois.2016.03.003", "10.1016/j.cois.2017.07.001", "10.1016/j.cois.2017.11.010", "10.1016/j.cois.2018.06.002", "10.1016/j.cois.2020.09.011", "10.1016/j.coisb.2019.10.012", "10.1016/j.colsurfa.2010.04.042", "10.1016/j.colsurfb.2003.12.004", "10.1016/j.colsurfb.2016.04.001", "10.1016/j.commatsci.2011.02.023", "10.1016/j.compag.2016.11.011", "10.1016/j.compbiolchem.2016.08.001", "10.1016/j.compbiolchem.2017.02.008", "10.1016/j.compbiolchem.2019.107111", "10.1016/j.compbiomed.2021.104597", "10.1016/j.compbiomed.2021.104639", "10.1016/j.compbiomed.2022.105735", "10.1016/j.compmedimag.2018.09.003", "10.1016/j.conb.2004.03.016", "10.1016/j.conb.2004.05.005", "10.1016/j.conb.2009.12.003", "10.1016/j.conb.2012.03.013", "10.1016/j.conb.2015.12.007", "10.1016/j.conb.2017.10.002", "10.1016/j.conb.2017.10.007", "10.1016/j.conb.2018.06.001", "10.1016/j.conb.2019.04.009", "10.1016/j.conb.2023.102700", "10.1016/j.copbio.2007.09.006", "10.1016/j.copbio.2017.10.011", "10.1016/j.copbio.2020.08.011", "10.1016/j.coph.2005.02.004", "10.1016/j.coph.2019.12.003", "10.1016/j.coph.2020.04.007", "10.1016/j.cortex.2014.04.002", "10.1016/j.cortex.2018.09.025", "10.1016/j.cortex.2019.10.012", "10.1016/j.cose.2021.102394", "10.1016/j.cotox.2017.12.005", "10.1016/j.coviro.2017.07.021", "10.1016/j.coviro.2021.02.002", "10.1016/j.cpb.2021.100210", "10.1016/j.cpc.2006.07.020", "10.1016/j.cpc.2016.07.007", "10.1016/j.cpc.2020.107810", "10.1016/j.critrevonc.2014.02.004", "10.1016/j.crmeth.2023.100464", "10.1016/j.cropro.2005.01.011", "10.1016/j.cropro.2010.07.016", "10.1016/j.cropro.2012.04.001", "10.1016/j.crphar.2021.100033", "10.1016/j.csbj.2014.12.003", "10.1016/j.csbj.2020.02.013", "10.1016/j.csbj.2021.04.016", "10.1016/j.csbj.2021.08.019", "10.1016/j.ctrv.2020.101974", "10.1016/j.ctrv.2020.102015", "10.1016/j.ctrv.2021.102227", "10.1016/j.cub.2005.03.005", "10.1016/j.cub.2008.01.060", "10.1016/j.cub.2009.02.047", "10.1016/j.cub.2009.02.061", "10.1016/j.cub.2009.07.050", "10.1016/j.cub.2010.06.068", "10.1016/j.cub.2012.02.041", "10.1016/j.cub.2012.03.046", "10.1016/j.cub.2012.10.054", "10.1016/j.cub.2013.05.044", "10.1016/j.cub.2016.03.020", "10.1016/j.cub.2016.06.054", "10.1016/j.cub.2016.07.024", "10.1016/j.cub.2016.09.007", "10.1016/j.cub.2017.05.056", "10.1016/j.cub.2017.12.030", "10.1016/j.cub.2018.02.004", "10.1016/j.cub.2018.07.062", "10.1016/j.cub.2018.08.026", "10.1016/j.cub.2018.09.026", "10.1016/j.cub.2019.03.054", "10.1016/j.cub.2019.04.024", "10.1016/j.cub.2019.07.061", "10.1016/j.cub.2019.09.040", "10.1016/j.cub.2020.03.055", "10.1016/j.cub.2020.05.029", "10.1016/j.cub.2020.05.083", "10.1016/j.cub.2020.06.103", "10.1016/j.cub.2020.07.089", "10.1016/j.cub.2020.08.064", "10.1016/j.cub.2020.10.009", "10.1016/j.cub.2020.11.018", "10.1016/j.cub.2021.03.056", "10.1016/j.cub.2021.03.062", "10.1016/j.cub.2023.11.057", "10.1016/j.cub.2024.02.062", "10.1016/j.cvsm.2019.10.006", "10.1016/j.cyto.2009.07.334", "10.1016/j.cyto.2012.04.005", "10.1016/j.cyto.2015.05.014", "10.1016/j.cyto.2015.05.023", "10.1016/j.cyto.2015.05.026", "10.1016/j.cyto.2016.09.001", "10.1016/j.cyto.2018.08.030", "10.1016/j.cyto.2019.01.007", "10.1016/j.cytogfr.2006.01.004", "10.1016/j.cytogfr.2012.01.001", "10.1016/j.cytogfr.2013.12.002", "10.1016/j.cytogfr.2017.02.001", "10.1016/j.cytogfr.2018.10.005", "10.1016/j.dci.2011.03.008", "10.1016/j.dci.2020.103955", "10.1016/j.dcm.2021.100482", "10.1016/j.ddmod.2012.12.002", "10.1016/j.ddtec.2018.09.004", "10.1016/j.ddtec.2019.04.001", "10.1016/j.det.2016.07.007", "10.1016/j.devcel.2005.12.014", "10.1016/j.devcel.2007.11.016", "10.1016/j.devcel.2008.05.007", "10.1016/j.devcel.2009.08.002", "10.1016/j.devcel.2009.10.012", "10.1016/j.devcel.2010.02.012", "10.1016/j.devcel.2011.01.001", "10.1016/j.devcel.2011.01.004", "10.1016/j.devcel.2011.09.001", "10.1016/j.devcel.2011.09.008", "10.1016/j.devcel.2013.12.011", "10.1016/j.devcel.2014.01.016", "10.1016/j.devcel.2014.03.021", "10.1016/j.devcel.2015.01.032", "10.1016/j.devcel.2015.03.003", "10.1016/j.devcel.2015.04.001", "10.1016/j.devcel.2016.02.024", "10.1016/j.devcel.2016.03.003", "10.1016/j.devcel.2016.08.003", "10.1016/j.devcel.2016.08.011", "10.1016/j.devcel.2016.09.004", "10.1016/j.devcel.2017.01.012", "10.1016/j.devcel.2017.02.017", "10.1016/j.devcel.2017.12.002", "10.1016/j.devcel.2018.04.022", "10.1016/j.devcel.2018.06.012", "10.1016/j.devcel.2018.12.017", "10.1016/j.devcel.2019.01.003", "10.1016/j.devcel.2019.10.025", "10.1016/j.devcel.2020.05.027", "10.1016/j.devcel.2020.09.020", "10.1016/j.devcel.2020.10.009", "10.1016/j.devcel.2021.02.016", "10.1016/j.devcel.2021.03.018", "10.1016/j.devcel.2023.09.005", "10.1016/j.dib.2017.06.001", "10.1016/j.dib.2019.103953", "10.1016/j.dnarep.2004.06.015", "10.1016/j.dnarep.2006.08.002", "10.1016/j.dnarep.2007.11.016", "10.1016/j.dnarep.2009.04.017", "10.1016/j.dnarep.2009.11.004", "10.1016/j.dnarep.2010.04.005", "10.1016/j.dnarep.2011.11.008", "10.1016/j.dnarep.2014.06.005", "10.1016/j.dnarep.2017.03.004", "10.1016/j.dnarep.2018.04.005", "10.1016/j.dnarep.2019.03.014", "10.1016/j.dnarep.2020.102927", "10.1016/j.dnarep.2021.103051", "10.1016/j.dnarep.2021.103137", "10.1016/j.dnarep.2021.103178", "10.1016/j.drudis.2009.05.013", "10.1016/j.drudis.2011.10.007", "10.1016/j.drudis.2016.10.017", "10.1016/j.drudis.2022.01.004", "10.1016/j.drup.2014.06.001", "10.1016/j.drup.2018.05.002", "10.1016/j.drup.2022.100882", "10.1016/j.dyepig.2019.02.051", "10.1016/j.ebiom.2017.08.030", "10.1016/j.ebiom.2017.10.009", "10.1016/j.ebiom.2017.12.004", "10.1016/j.ebiom.2018.12.055", "10.1016/j.ebiom.2019.09.001", "10.1016/j.ebiom.2020.102913", "10.1016/j.ebiom.2020.103055", "10.1016/j.ecoenv.2018.03.089", "10.1016/j.ecoenv.2018.10.090", "10.1016/j.ecoenv.2018.12.027", "10.1016/j.ecoenv.2018.12.045", "10.1016/j.ecolind.2009.04.009", "10.1016/j.ecolind.2017.08.051", "10.1016/j.ecolind.2020.106466", "10.1016/j.ecolmodel.2019.05.015", "10.1016/j.ecolmodel.2020.109282", "10.1016/j.ecss.2015.05.006", "10.1016/j.ejca.2007.11.023", "10.1016/j.ejca.2015.01.040", "10.1016/j.ejca.2021.03.053", "10.1016/j.ejcb.2009.10.006", "10.1016/j.ejcb.2018.09.002", "10.1016/j.ejcb.2021.151153", "10.1016/j.ejmech.2011.12.007", "10.1016/j.ejmech.2012.10.022", "10.1016/j.ejmech.2018.05.045", "10.1016/j.ejmech.2018.10.044", "10.1016/j.ejmech.2021.113216", "10.1016/j.ejop.2014.05.003", "10.1016/j.ejpb.2016.08.014", "10.1016/j.ejpb.2017.04.024", "10.1016/j.ejso.2017.01.011", "10.1016/j.energy.2019.116502", "10.1016/j.envint.2017.11.003", "10.1016/j.envint.2018.02.042", "10.1016/j.envint.2019.105149", "10.1016/j.envint.2020.105487", "10.1016/j.envint.2020.105510", "10.1016/j.envint.2021.106436", "10.1016/j.envpol.2013.06.014", "10.1016/j.envpol.2020.114718", "10.1016/j.envpol.2020.115894", "10.1016/j.envres.2015.12.031", "10.1016/j.envres.2020.109242", "10.1016/j.envres.2020.110489", "10.1016/j.eplepsyres.2005.12.003", "10.1016/j.eplepsyres.2017.10.017", "10.1016/j.eplepsyres.2018.09.006", "10.1016/j.eplepsyres.2020.106305", "10.1016/j.esmoop.2021.100064", "10.1016/j.eswa.2018.12.031", "10.1016/j.etap.2021.103584", "10.1016/j.euroneuro.2015.02.007", "10.1016/j.exer.2004.05.017", "10.1016/j.exer.2015.04.002", "10.1016/j.exer.2020.107988", "10.1016/j.exger.2006.03.006", "10.1016/j.exger.2013.02.016", "10.1016/j.exger.2017.01.009", "10.1016/j.exger.2017.06.016", "10.1016/j.exger.2018.01.022", "10.1016/j.exger.2019.110780", "10.1016/j.exphem.2004.05.024", "10.1016/j.exphem.2006.04.016", "10.1016/j.exphem.2007.05.002", "10.1016/j.exphem.2013.04.001", "10.1016/j.exphem.2015.04.002", "10.1016/j.exphem.2015.10.009", "10.1016/j.expneurol.2005.04.018", "10.1016/j.expneurol.2005.08.010", "10.1016/j.expneurol.2008.02.003", "10.1016/j.expneurol.2008.10.009", "10.1016/j.expneurol.2010.03.003", "10.1016/j.expneurol.2011.01.008", "10.1016/j.expneurol.2012.06.022", "10.1016/j.expneurol.2013.01.021", "10.1016/j.expneurol.2015.09.009", "10.1016/j.expneurol.2017.07.002", "10.1016/j.expneurol.2017.10.019", "10.1016/j.expneurol.2018.05.015", "10.1016/j.exppara.2012.02.003", "10.1016/j.exppara.2012.03.012", "10.1016/j.exppara.2020.107932", "10.1016/j.fct.2013.08.014", "10.1016/j.febslet.2005.07.060", "10.1016/j.febslet.2005.09.102", "10.1016/j.febslet.2006.04.046", "10.1016/j.febslet.2008.03.004", "10.1016/j.febslet.2008.06.013", "10.1016/j.febslet.2009.10.024", "10.1016/j.febslet.2010.03.017", "10.1016/j.febslet.2010.04.043", "10.1016/j.febslet.2011.03.026", "10.1016/j.febslet.2011.08.010", "10.1016/j.febslet.2012.07.021", "10.1016/j.febslet.2013.10.039", "10.1016/j.febslet.2014.03.049", "10.1016/j.febslet.2014.04.014", "10.1016/j.febslet.2014.06.042", "10.1016/j.febslet.2014.09.025", "10.1016/j.febslet.2014.11.036", "10.1016/j.femsle.2005.07.030", "10.1016/j.femsyr.2004.12.008", "10.1016/j.fertnstert.2004.12.018", "10.1016/j.fertnstert.2015.11.018", "10.1016/j.fertnstert.2016.04.041", "10.1016/j.fertnstert.2017.03.023", "10.1016/j.fgb.2004.06.008", "10.1016/j.fgb.2007.03.007", "10.1016/j.fgb.2014.04.002", "10.1016/j.fgb.2014.06.005", "10.1016/j.flora.2015.10.003", "10.1016/j.fm.2020.103616", "10.1016/j.foodchem.2021.130754", "10.1016/j.foodhyd.2012.10.025", "10.1016/j.foodhyd.2013.07.023", "10.1016/j.foodres.2018.11.015", "10.1016/j.freeradbiomed.2007.03.020", "10.1016/j.freeradbiomed.2008.03.020", "10.1016/j.freeradbiomed.2008.08.023", "10.1016/j.freeradbiomed.2012.10.553", "10.1016/j.freeradbiomed.2014.05.016", "10.1016/j.freeradbiomed.2017.06.014", "10.1016/j.freeradbiomed.2018.01.030", "10.1016/j.freeradbiomed.2019.12.032", "10.1016/j.fsi.2018.06.002", "10.1016/j.fsi.2019.12.093", "10.1016/j.fsi.2020.03.029", "10.1016/j.fsirep.2021.100008", "10.1016/j.gca.2016.06.019", "10.1016/j.gde.2007.08.002", "10.1016/j.gde.2009.03.001", "10.1016/j.gde.2011.01.015", "10.1016/j.gde.2011.04.001", "10.1016/j.gde.2011.11.001", "10.1016/j.gde.2012.01.006", "10.1016/j.gde.2013.03.002", "10.1016/j.gde.2013.11.016", "10.1016/j.gde.2014.03.013", "10.1016/j.gde.2015.12.003", "10.1016/j.gde.2017.01.012", "10.1016/j.gde.2017.02.010", "10.1016/j.gde.2017.06.008", "10.1016/j.gde.2018.02.013", "10.1016/j.gde.2019.04.013", "10.1016/j.gde.2021.07.004", "10.1016/j.gendis.2017.11.003", "10.1016/j.gendis.2020.06.005", "10.1016/j.gendis.2020.09.006", "10.1016/j.gene.2003.08.015", "10.1016/j.gene.2003.09.028", "10.1016/j.gene.2005.06.022", "10.1016/j.gene.2005.10.019", "10.1016/j.gene.2006.06.025", "10.1016/j.gene.2010.09.004", "10.1016/j.gene.2011.11.036", "10.1016/j.gene.2012.07.010", "10.1016/j.gene.2013.01.062", "10.1016/j.gene.2013.01.063", "10.1016/j.gene.2014.11.010", "10.1016/j.gene.2015.12.020", "10.1016/j.gene.2016.05.023", "10.1016/j.gene.2017.11.022", "10.1016/j.gene.2019.143952", "10.1016/j.gene.2019.144005", "10.1016/j.gene.2020.145356", "10.1016/j.genrep.2016.12.003", "10.1016/j.gpb.2016.12.005", "10.1016/j.hal.2005.03.001", "10.1016/j.hal.2020.101869", "10.1016/j.hcl.2011.08.006", "10.1016/j.healun.2016.12.007", "10.1016/j.heares.2020.107947", "10.1016/j.hpj.2020.10.003", "10.1016/j.hrtlng.2014.04.016", "10.1016/j.humimm.2013.01.008", "10.1016/j.humimm.2020.01.009", "10.1016/j.humimm.2021.07.009", "10.1016/j.humpath.2014.06.032", "10.1016/j.humpath.2016.10.019", "10.1016/j.ibmb.2004.12.009", "10.1016/j.ibmb.2016.06.010", "10.1016/j.ibmb.2019.103211", "10.1016/j.ibror.2020.03.003", "10.1016/j.ijantimicag.2005.11.010", "10.1016/j.ijantimicag.2007.08.010", "10.1016/j.ijantimicag.2008.02.013", "10.1016/j.ijantimicag.2009.12.005", "10.1016/j.ijantimicag.2014.04.011", "10.1016/j.ijantimicag.2016.03.019", "10.1016/j.ijbiomac.2016.05.036", "10.1016/j.ijbiomac.2018.11.263", "10.1016/j.ijbiomac.2019.12.020", "10.1016/j.ijbiomac.2021.03.173", "10.1016/j.ijbiomac.2021.05.186", "10.1016/j.ijbiomac.2022.01.059", "10.1016/j.ijbiomac.2022.04.096", "10.1016/j.ijbiomac.2022.12.284", "10.1016/j.ijcard.2015.08.109", "10.1016/j.ijdevneu.2011.02.013", "10.1016/j.ijdevneu.2015.04.119", "10.1016/j.ijdevneu.2018.03.002", "10.1016/j.ijfoodmicro.2004.01.022", "10.1016/j.ijfoodmicro.2009.06.013", "10.1016/j.ijfoodmicro.2011.07.031", "10.1016/j.ijfoodmicro.2013.03.020", "10.1016/j.ijfoodmicro.2016.12.004", "10.1016/j.ijhcs.2020.102551", "10.1016/j.ijid.2006.06.001", "10.1016/j.ijid.2010.04.005", "10.1016/j.ijid.2010.10.002", "10.1016/j.ijid.2017.01.015", "10.1016/j.ijmm.2014.11.008", "10.1016/j.ijnonlinmec.2010.12.003", "10.1016/j.ijpara.2004.10.007", "10.1016/j.ijpara.2007.04.005", "10.1016/j.ijpara.2008.02.001", "10.1016/j.ijpddr.2013.12.001", "10.1016/j.ijpddr.2017.04.004", "10.1016/j.ijpddr.2021.05.003", "10.1016/j.ijpharm.2011.12.039", "10.1016/j.ijpharm.2013.06.013", "10.1016/j.ijpharm.2019.01.027", "10.1016/j.ijpharm.2019.04.006", "10.1016/j.ijpharm.2019.05.074", "10.1016/j.ijrobp.2015.07.1861", "10.1016/j.ijrobp.2021.02.029", "10.1016/j.imbio.2010.05.028", "10.1016/j.imbio.2011.07.029", "10.1016/j.imbio.2012.08.270", "10.1016/j.imbio.2015.07.005", "10.1016/j.imbio.2016.01.008", "10.1016/j.imbio.2016.06.202", "10.1016/j.imbio.2019.11.008", "10.1016/j.imlet.2011.01.006", "10.1016/j.imlet.2014.05.012", "10.1016/j.imlet.2016.02.016", "10.1016/j.imlet.2017.12.004", "10.1016/j.imlet.2018.01.010", "10.1016/j.imlet.2018.06.009", "10.1016/j.imlet.2019.06.001", "10.1016/j.imlet.2020.07.003", "10.1016/j.immuni.2004.07.010", "10.1016/j.immuni.2004.08.004", "10.1016/j.immuni.2004.11.006", "10.1016/j.immuni.2006.05.013", "10.1016/j.immuni.2007.07.012", "10.1016/j.immuni.2008.01.009", "10.1016/j.immuni.2008.05.009", "10.1016/j.immuni.2009.07.002", "10.1016/j.immuni.2010.05.007", "10.1016/j.immuni.2010.08.014", "10.1016/j.immuni.2010.11.009", "10.1016/j.immuni.2010.12.012", "10.1016/j.immuni.2011.03.021", "10.1016/j.immuni.2011.03.023", "10.1016/j.immuni.2011.03.024", "10.1016/j.immuni.2011.03.025", "10.1016/j.immuni.2011.06.005", "10.1016/j.immuni.2011.09.013", "10.1016/j.immuni.2011.10.006", "10.1016/j.immuni.2011.12.017", "10.1016/j.immuni.2012.05.026", "10.1016/j.immuni.2012.08.001", "10.1016/j.immuni.2012.08.010", "10.1016/j.immuni.2012.08.014", "10.1016/j.immuni.2012.09.020", "10.1016/j.immuni.2012.10.020", "10.1016/j.immuni.2014.01.006", "10.1016/j.immuni.2014.02.002", "10.1016/j.immuni.2014.04.019", "10.1016/j.immuni.2014.06.008", "10.1016/j.immuni.2014.06.010", "10.1016/j.immuni.2014.10.009", "10.1016/j.immuni.2015.03.011", "10.1016/j.immuni.2015.07.014", "10.1016/j.immuni.2015.07.021", "10.1016/j.immuni.2015.10.016", "10.1016/j.immuni.2015.11.008", "10.1016/j.immuni.2016.01.014", "10.1016/j.immuni.2016.04.005", "10.1016/j.immuni.2016.06.001", "10.1016/j.immuni.2016.08.011", "10.1016/j.immuni.2016.09.014", "10.1016/j.immuni.2016.09.016", "10.1016/j.immuni.2016.09.017", "10.1016/j.immuni.2016.12.011", "10.1016/j.immuni.2017.07.008", "10.1016/j.immuni.2017.08.008", "10.1016/j.immuni.2017.10.009", "10.1016/j.immuni.2017.12.010", "10.1016/j.immuni.2018.03.027", "10.1016/j.immuni.2018.06.012", "10.1016/j.immuni.2018.08.011", "10.1016/j.immuni.2018.08.012", "10.1016/j.immuni.2018.09.018", "10.1016/j.immuni.2018.12.022", "10.1016/j.immuni.2019.02.023", "10.1016/j.immuni.2019.03.010", "10.1016/j.immuni.2019.03.021", "10.1016/j.immuni.2019.04.011", "10.1016/j.immuni.2019.04.017", "10.1016/j.immuni.2019.06.023", "10.1016/j.immuni.2019.08.017", "10.1016/j.immuni.2019.09.019", "10.1016/j.immuni.2019.10.006", "10.1016/j.immuni.2019.12.003", "10.1016/j.immuni.2020.02.015", "10.1016/j.immuni.2020.04.007", "10.1016/j.immuni.2020.04.011", "10.1016/j.immuni.2020.06.005", "10.1016/j.immuni.2020.06.010", "10.1016/j.immuni.2020.07.009", "10.1016/j.immuni.2020.09.015", "10.1016/j.immuni.2020.10.010", "10.1016/j.immuni.2020.10.022", "10.1016/j.immuni.2020.12.009", "10.1016/j.immuni.2021.05.019", "10.1016/j.immuni.2021.12.015", "10.1016/j.immuni.2022.03.018", "10.1016/j.immuni.2023.06.005", "10.1016/j.indcrop.2015.08.056", "10.1016/j.intimp.2011.01.021", "10.1016/j.intimp.2017.11.011", "10.1016/j.intimp.2019.105741", "10.1016/j.intimp.2019.105743", "10.1016/j.intimp.2020.106296", "10.1016/j.intimp.2020.107167", "10.1016/j.intimp.2020.107266", "10.1016/j.intimp.2021.107416", "10.1016/j.intimp.2021.107616", "10.1016/j.intimp.2021.107836", "10.1016/j.intimp.2021.107901", "10.1016/j.isci.2018.05.016", "10.1016/j.isci.2019.03.019", "10.1016/j.isci.2019.04.026", "10.1016/j.isci.2019.04.036", "10.1016/j.isci.2020.101027", "10.1016/j.isci.2020.101231", "10.1016/j.isci.2020.101346", "10.1016/j.isci.2020.101770", "10.1016/j.isci.2021.102215", "10.1016/j.isci.2021.103086", "10.1016/j.isci.2023.106308", "10.1016/j.it.2004.09.015", "10.1016/j.it.2012.02.009", "10.1016/j.it.2013.03.003", "10.1016/j.it.2014.01.003", "10.1016/j.it.2016.01.004", "10.1016/j.it.2016.03.002", "10.1016/j.it.2016.11.004", "10.1016/j.it.2017.01.006", "10.1016/j.it.2018.04.004", "10.1016/j.it.2019.01.004", "10.1016/j.it.2019.03.010", "10.1016/j.it.2019.08.007", "10.1016/j.it.2019.12.002", "10.1016/j.it.2020.02.001", "10.1016/j.it.2020.03.007", "10.1016/j.jaac.2020.02.017", "10.1016/j.jacbts.2017.09.001", "10.1016/j.jacc.2018.02.037", "10.1016/j.jaci.2006.06.004", "10.1016/j.jaci.2007.03.043", "10.1016/j.jaci.2013.06.036", "10.1016/j.jaci.2014.01.033", "10.1016/j.jaci.2015.01.020", "10.1016/j.jaci.2015.04.001", "10.1016/j.jaci.2016.04.021", "10.1016/j.jaci.2016.06.040", "10.1016/j.jaci.2017.11.040", "10.1016/j.jaci.2018.08.024", "10.1016/j.jaci.2018.11.049", "10.1016/j.jaci.2019.12.908", "10.1016/j.jaci.2020.01.042", "10.1016/j.jaci.2020.03.041", "10.1016/j.jaci.2020.07.035", "10.1016/j.jaci.2021.01.018", "10.1016/j.jad.2007.12.054", "10.1016/j.jad.2009.04.031", "10.1016/j.jad.2014.12.006", "10.1016/j.jalz.2015.06.1893", "10.1016/j.jalz.2018.02.017", "10.1016/j.jalz.2019.06.4616", "10.1016/j.jamcollsurg.2007.11.022", "10.1016/j.jasms.2005.02.017", "10.1016/j.jaut.2005.08.010", "10.1016/j.jaut.2013.12.014", "10.1016/j.jaut.2014.10.002", "10.1016/j.jaut.2019.102329", "10.1016/j.jbc.2021.100386", "10.1016/j.jbc.2021.100413", "10.1016/j.jbc.2021.100465", "10.1016/j.jbc.2021.100493", "10.1016/j.jbc.2021.100657", "10.1016/j.jbc.2021.101097", "10.1016/j.jbc.2021.101112", "10.1016/j.jbiomech.2006.09.023", "10.1016/j.jbiomech.2009.01.024", "10.1016/j.jbiomech.2009.07.037", "10.1016/j.jbior.2019.100667", "10.1016/j.jbiosc.2012.10.020", "10.1016/j.jbiosc.2012.12.021", "10.1016/j.jbiosc.2016.07.007", "10.1016/j.jbiotec.2007.03.004", "10.1016/j.jbiotec.2015.09.037", "10.1016/j.jbiotec.2015.12.020", "10.1016/j.jbiotec.2016.03.012", "10.1016/j.jbiotec.2016.07.012", "10.1016/j.jbiotec.2017.06.011", "10.1016/j.jchemneu.2006.07.002", "10.1016/j.jchemneu.2007.03.005", "10.1016/j.jchemneu.2012.10.006", "10.1016/j.jchemneu.2019.04.009", "10.1016/j.jchromb.2017.08.046", "10.1016/j.jclepro.2016.09.145", "10.1016/j.jcm.2017.11.004", "10.1016/j.jcma.2011.12.015", "10.1016/j.jcmgh.2015.06.006", "10.1016/j.jcmgh.2017.06.001", "10.1016/j.jcmgh.2020.07.013", "10.1016/j.jconrel.2008.11.010", "10.1016/j.jconrel.2012.09.020", "10.1016/j.jconrel.2014.06.046", "10.1016/j.jconrel.2014.07.040", "10.1016/j.jconrel.2016.01.009", "10.1016/j.jconrel.2016.06.020", "10.1016/j.jconrel.2016.11.014", "10.1016/j.jconrel.2018.02.023", "10.1016/j.jconrel.2018.07.001", "10.1016/j.jconrel.2019.04.015", "10.1016/j.jconrel.2021.12.027", "10.1016/j.jcp.2006.07.033", "10.1016/j.jcp.2011.11.005", "10.1016/j.jcp.2017.05.010", "10.1016/j.jcyt.2013.01.061", "10.1016/j.jcyt.2019.03.585", "10.1016/j.jcyt.2020.05.008", "10.1016/j.jcz.2015.07.002", "10.1016/j.jdermsci.2017.08.013", "10.1016/j.jdermsci.2019.11.012", "10.1016/j.jecr.2021.100084", "10.1016/j.jembe.2004.08.008", "10.1016/j.jfluidstructs.2014.12.002", "10.1016/j.jfoodeng.2015.07.010", "10.1016/j.jfoodeng.2017.04.034", "10.1016/j.jfoodeng.2019.04.022", "10.1016/j.jgar.2015.08.002", "10.1016/j.jgar.2020.08.014", "10.1016/j.jgg.2017.04.009", "10.1016/j.jgg.2020.06.008", "10.1016/j.jhazmat.2013.02.011", "10.1016/j.jhazmat.2020.123113", "10.1016/j.jhazmat.2021.125126", "10.1016/j.jhep.2009.04.022", "10.1016/j.jhep.2013.02.020", "10.1016/j.jhep.2019.05.030", "10.1016/j.jhep.2020.01.010", "10.1016/j.jhep.2020.03.033", "10.1016/j.jhep.2022.02.032", "10.1016/j.jhin.2011.08.013", "10.1016/j.jid.2017.02.980", "10.1016/j.jid.2017.04.038", "10.1016/j.jid.2017.07.842", "10.1016/j.jid.2018.03.839", "10.1016/j.jid.2019.09.014", "10.1016/j.jid.2019.11.017", "10.1016/j.jid.2020.04.012", "10.1016/j.jid.2021.01.005", "10.1016/j.jid.2021.02.642", "10.1016/j.jim.2012.09.007", "10.1016/j.jim.2015.02.007", "10.1016/j.jim.2019.112721", "10.1016/j.jinf.2018.06.010", "10.1016/j.jinf.2020.10.016", "10.1016/j.jinf.2021.08.033", "10.1016/j.jinorgbio.2018.03.002", "10.1016/j.jinsphys.2004.01.001", "10.1016/j.jinsphys.2005.10.007", "10.1016/j.jinsphys.2006.05.003", "10.1016/j.jinsphys.2010.11.005", "10.1016/j.jinsphys.2019.103938", "10.1016/j.jinsphys.2019.103995", "10.1016/j.jiph.2018.05.001", "10.1016/j.jiph.2020.06.032", "10.1016/j.jisa.2021.102924", "10.1016/j.jmarsys.2015.07.008", "10.1016/j.jmb.2003.07.013", "10.1016/j.jmb.2003.08.040", "10.1016/j.jmb.2003.10.005", "10.1016/j.jmb.2004.03.016", "10.1016/j.jmb.2004.03.076", "10.1016/j.jmb.2004.12.042", "10.1016/j.jmb.2005.02.057", "10.1016/j.jmb.2005.07.017", "10.1016/j.jmb.2005.09.016", "10.1016/j.jmb.2005.09.086", "10.1016/j.jmb.2005.10.008", "10.1016/j.jmb.2005.12.003", "10.1016/j.jmb.2006.04.007", "10.1016/j.jmb.2006.05.015", "10.1016/j.jmb.2006.06.065", "10.1016/j.jmb.2006.10.058", "10.1016/j.jmb.2007.03.047", "10.1016/j.jmb.2007.04.002", "10.1016/j.jmb.2007.04.015", "10.1016/j.jmb.2007.05.022", "10.1016/j.jmb.2007.06.050", "10.1016/j.jmb.2008.07.068", "10.1016/j.jmb.2008.12.081", "10.1016/j.jmb.2009.03.009", "10.1016/j.jmb.2009.08.011", "10.1016/j.jmb.2009.12.003", "10.1016/j.jmb.2010.02.045", "10.1016/j.jmb.2010.03.065", "10.1016/j.jmb.2010.05.062", "10.1016/j.jmb.2010.09.033", "10.1016/j.jmb.2010.10.038", "10.1016/j.jmb.2010.11.013", "10.1016/j.jmb.2011.01.016", "10.1016/j.jmb.2011.12.045", "10.1016/j.jmb.2012.04.011", "10.1016/j.jmb.2012.04.020", "10.1016/j.jmb.2012.05.010", "10.1016/j.jmb.2012.05.045", "10.1016/j.jmb.2012.08.005", "10.1016/j.jmb.2012.11.024", "10.1016/j.jmb.2012.11.041", "10.1016/j.jmb.2013.01.018", "10.1016/j.jmb.2013.01.033", "10.1016/j.jmb.2013.02.010", "10.1016/j.jmb.2013.07.015", "10.1016/j.jmb.2013.11.031", "10.1016/j.jmb.2014.07.020", "10.1016/j.jmb.2014.09.014", "10.1016/j.jmb.2015.09.014", "10.1016/j.jmb.2015.09.023", "10.1016/j.jmb.2015.11.019", "10.1016/j.jmb.2016.05.027", "10.1016/j.jmb.2016.10.017", "10.1016/j.jmb.2017.09.008", "10.1016/j.jmb.2017.11.005", "10.1016/j.jmb.2018.02.002", "10.1016/j.jmb.2018.04.012", "10.1016/j.jmb.2018.05.042", "10.1016/j.jmb.2018.06.004", "10.1016/j.jmb.2018.07.002", "10.1016/j.jmb.2018.07.007", "10.1016/j.jmb.2018.12.011", "10.1016/j.jmb.2019.01.037", "10.1016/j.jmb.2019.05.002", "10.1016/j.jmb.2019.05.036", "10.1016/j.jmb.2019.05.050", "10.1016/j.jmb.2019.08.013", "10.1016/j.jmb.2019.11.009", "10.1016/j.jmb.2019.12.006", "10.1016/j.jmb.2019.12.013", "10.1016/j.jmb.2019.12.044", "10.1016/j.jmb.2020.02.014", "10.1016/j.jmb.2020.03.011", "10.1016/j.jmb.2020.166788", "10.1016/j.jmb.2021.167002", "10.1016/j.jmb.2021.167182", "10.1016/j.jmb.2021.167245", "10.1016/j.jmb.2023.168298", "10.1016/j.jmbbm.2020.103783", "10.1016/j.jmgm.2013.01.007", "10.1016/j.jmgm.2013.07.008", "10.1016/j.jmii.2014.10.003", "10.1016/j.jmps.2016.02.009", "10.1016/j.jmps.2016.05.032", "10.1016/j.jmps.2018.09.025", "10.1016/j.jneumeth.2005.07.002", "10.1016/j.jneuroim.2010.03.011", "10.1016/j.jneuroim.2014.08.331", "10.1016/j.jneuroim.2017.08.006", "10.1016/j.jns.2010.02.002", "10.1016/j.jnucmat.2016.03.018", "10.1016/j.jnutbio.2010.05.003", "10.1016/j.jnutbio.2019.07.002", "10.1016/j.jnutbio.2021.108598", "10.1016/j.jnutbio.2021.108852", "10.1016/j.jpain.2014.01.207", "10.1016/j.jpba.2020.113251", "10.1016/j.jpba.2020.113665", "10.1016/j.jpeds.2007.12.037", "10.1016/j.jpha.2019.03.008", "10.1016/j.jphotobiol.2012.01.005", "10.1016/j.jphotobiol.2013.04.007", "10.1016/j.jphotobiol.2015.08.025", "10.1016/j.jphotobiol.2015.08.031", "10.1016/j.jphotobiol.2016.02.029", "10.1016/j.jphotobiol.2017.07.011", "10.1016/j.jphysparis.2014.04.006", "10.1016/j.jplph.2012.11.012", "10.1016/j.jplph.2019.153015", "10.1016/j.jplph.2021.153363", "10.1016/j.jprot.2014.09.019", "10.1016/j.jprot.2015.06.008", "10.1016/j.jprot.2017.11.019", "10.1016/j.jprot.2020.103645", "10.1016/j.jpsychires.2012.12.020", "10.1016/j.jpsychires.2021.02.007", "10.1016/j.jsb.2005.03.010", "10.1016/j.jsb.2009.01.004", "10.1016/j.jsb.2011.08.009", "10.1016/j.jsb.2015.05.009", "10.1016/j.jsb.2015.08.004", "10.1016/j.jsb.2015.08.008", "10.1016/j.jsb.2015.12.012", "10.1016/j.jsb.2019.07.009", "10.1016/j.jsbmb.2015.09.039", "10.1016/j.jshs.2019.10.001", "10.1016/j.jtauto.2021.100103", "10.1016/j.jtbi.2008.01.006", "10.1016/j.jtbi.2009.09.029", "10.1016/j.jtbi.2015.07.035", "10.1016/j.jtbi.2015.08.017", "10.1016/j.jtbi.2019.110134", "10.1016/j.jtbi.2020.110352", "10.1016/j.jtho.2016.06.015", "10.1016/j.jtumed.2015.02.009", "10.1016/j.jviromet.2019.113745", "10.1016/j.jviromet.2020.113927", "10.1016/j.jvsv.2018.05.013", "10.1016/j.kint.2017.11.013", "10.1016/j.kint.2020.09.036", "10.1016/j.kint.2024.02.007", "10.1016/j.leukres.2008.06.023", "10.1016/j.leukres.2009.03.028", "10.1016/j.lfs.2007.09.019", "10.1016/j.lfs.2015.01.038", "10.1016/j.lfs.2016.02.015", "10.1016/j.lfs.2019.117142", "10.1016/j.lfs.2019.117222", "10.1016/j.lfs.2020.117479", "10.1016/j.lfs.2020.118006", "10.1016/j.lfs.2020.118903", "10.1016/j.lfs.2021.119451", "10.1016/j.lwt.2005.11.001", "10.1016/j.lwt.2012.03.015", "10.1016/j.mad.2005.09.001", "10.1016/j.mad.2011.03.005", "10.1016/j.mad.2016.05.002", "10.1016/j.mad.2017.08.003", "10.1016/j.mad.2018.01.001", "10.1016/j.mad.2018.06.004", "10.1016/j.mad.2020.111229", "10.1016/j.mam.2016.05.001", "10.1016/j.mam.2020.100889", "10.1016/j.mam.2020.100890", "10.1016/j.margen.2016.10.003", "10.1016/j.matbio.2016.09.004", "10.1016/j.mattod.2018.02.001", "10.1016/j.mbs.2022.108926", "10.1016/j.mce.2019.02.016", "10.1016/j.mce.2019.110667", "10.1016/j.mcn.2005.03.013", "10.1016/j.mcn.2005.10.020", "10.1016/j.mcn.2008.04.010", "10.1016/j.mcn.2008.05.009", "10.1016/j.mcn.2008.07.017", "10.1016/j.mcn.2014.12.008", "10.1016/j.mcn.2015.03.006", "10.1016/j.mcn.2017.09.006", "10.1016/j.mcn.2017.11.005", "10.1016/j.mcn.2019.103397", "10.1016/j.mcn.2020.103503", "10.1016/j.mcn.2022.103727", "10.1016/j.meatsci.2010.04.040", "10.1016/j.meatsci.2014.03.020", "10.1016/j.meatsci.2017.07.001", "10.1016/j.mee.2013.04.010", "10.1016/j.meegid.2016.12.010", "10.1016/j.meegid.2020.104452", "10.1016/j.mehy.2003.11.011", "10.1016/j.mehy.2019.04.006", "10.1016/j.metabol.2013.06.007", "10.1016/j.metabol.2020.154338", "10.1016/j.mex.2020.100935", "10.1016/j.mgene.2018.12.013", "10.1016/j.mib.2015.06.018", "10.1016/j.mib.2017.05.008", "10.1016/j.mib.2018.02.005", "10.1016/j.mib.2020.09.004", "10.1016/j.mib.2021.03.003", "10.1016/j.micinf.2020.01.001", "10.1016/j.micinf.2021.104845", "10.1016/j.micpath.2009.09.003", "10.1016/j.micpath.2012.02.006", "10.1016/j.micpath.2015.09.006", "10.1016/j.micpath.2019.04.026", "10.1016/j.micpath.2022.105699", "10.1016/j.micres.2012.08.003", "10.1016/j.micres.2013.09.009", "10.1016/j.micres.2018.02.007", "10.1016/j.microc.2020.105089", "10.1016/j.microc.2021.106640", "10.1016/j.micron.2016.03.003", "10.1016/j.mimet.2009.02.011", "10.1016/j.mimet.2018.05.021", "10.1016/j.mito.2014.02.004", "10.1016/j.mmcr.2012.12.007", "10.1016/j.mod.2004.11.014", "10.1016/j.mod.2007.11.002", "10.1016/j.mod.2010.03.002", "10.1016/j.mod.2016.02.004", "10.1016/j.mod.2017.04.015", "10.1016/j.molbiopara.2005.05.007", "10.1016/j.molbiopara.2009.07.002", "10.1016/j.molbiopara.2011.01.002", "10.1016/j.molbiopara.2016.02.004", "10.1016/j.molbiopara.2021.111375", "10.1016/j.molbrainres.2005.09.019", "10.1016/j.molcatb.2006.01.024", "10.1016/j.molcel.2004.10.017", "10.1016/j.molcel.2004.10.022", "10.1016/j.molcel.2004.11.046", "10.1016/j.molcel.2005.04.003", "10.1016/j.molcel.2005.10.036", "10.1016/j.molcel.2006.05.038", "10.1016/j.molcel.2006.07.010", "10.1016/j.molcel.2006.08.008", "10.1016/j.molcel.2007.06.033", "10.1016/j.molcel.2007.09.009", "10.1016/j.molcel.2007.10.012", "10.1016/j.molcel.2008.01.010", "10.1016/j.molcel.2008.02.020", "10.1016/j.molcel.2008.09.003", "10.1016/j.molcel.2009.04.009", "10.1016/j.molcel.2009.05.028", "10.1016/j.molcel.2010.05.004", "10.1016/j.molcel.2010.06.022", "10.1016/j.molcel.2010.08.038", "10.1016/j.molcel.2010.09.016", "10.1016/j.molcel.2010.09.024", "10.1016/j.molcel.2010.11.024", "10.1016/j.molcel.2011.04.009", "10.1016/j.molcel.2011.05.025", "10.1016/j.molcel.2011.08.022", "10.1016/j.molcel.2011.08.027", "10.1016/j.molcel.2012.07.029", "10.1016/j.molcel.2012.11.002", "10.1016/j.molcel.2013.01.038", "10.1016/j.molcel.2013.04.001", "10.1016/j.molcel.2013.08.011", "10.1016/j.molcel.2013.09.015", "10.1016/j.molcel.2013.09.018", "10.1016/j.molcel.2014.01.011", "10.1016/j.molcel.2014.08.006", "10.1016/j.molcel.2014.08.017", "10.1016/j.molcel.2014.08.024", "10.1016/j.molcel.2015.02.023", "10.1016/j.molcel.2015.09.023", "10.1016/j.molcel.2015.10.042", "10.1016/j.molcel.2016.02.011", "10.1016/j.molcel.2016.03.001", "10.1016/j.molcel.2016.05.020", "10.1016/j.molcel.2016.08.026", "10.1016/j.molcel.2016.11.003", "10.1016/j.molcel.2016.11.014", "10.1016/j.molcel.2016.11.040", "10.1016/j.molcel.2017.02.007", "10.1016/j.molcel.2017.05.021", "10.1016/j.molcel.2017.07.001", "10.1016/j.molcel.2017.07.022", "10.1016/j.molcel.2017.08.026", "10.1016/j.molcel.2017.09.031", "10.1016/j.molcel.2017.12.020", "10.1016/j.molcel.2018.02.012", "10.1016/j.molcel.2018.04.019", "10.1016/j.molcel.2018.07.018", "10.1016/j.molcel.2018.09.016", "10.1016/j.molcel.2018.11.032", "10.1016/j.molcel.2019.03.036", "10.1016/j.molcel.2019.04.011", "10.1016/j.molcel.2019.05.032", "10.1016/j.molcel.2019.07.014", "10.1016/j.molcel.2019.07.038", "10.1016/j.molcel.2019.08.017", "10.1016/j.molcel.2019.09.004", "10.1016/j.molcel.2019.09.017", "10.1016/j.molcel.2019.10.004", "10.1016/j.molcel.2019.10.012", "10.1016/j.molcel.2019.12.021", "10.1016/j.molcel.2020.02.007", "10.1016/j.molcel.2020.06.001", "10.1016/j.molcel.2020.06.007", "10.1016/j.molcel.2020.06.032", "10.1016/j.molcel.2020.07.024", "10.1016/j.molcel.2020.08.012", "10.1016/j.molcel.2020.11.035", "10.1016/j.molcel.2020.11.045", "10.1016/j.molcel.2021.02.006", "10.1016/j.molcel.2021.03.032", "10.1016/j.molcel.2021.06.008", "10.1016/j.molcel.2021.08.008", "10.1016/j.molcel.2021.12.002", "10.1016/j.molcel.2022.04.009", "10.1016/j.molimm.2006.06.014", "10.1016/j.molimm.2009.05.178", "10.1016/j.molimm.2011.12.008", "10.1016/j.molimm.2012.08.020", "10.1016/j.molimm.2016.05.016", "10.1016/j.molimm.2017.08.021", "10.1016/j.molimm.2019.12.002", "10.1016/j.molimm.2020.09.001", "10.1016/j.molimm.2021.02.014", "10.1016/j.molliq.2016.06.075", "10.1016/j.molliq.2020.114873", "10.1016/j.molmed.2014.05.001", "10.1016/j.molmed.2016.03.002", "10.1016/j.molmed.2016.03.006", "10.1016/j.molmed.2019.08.013", "10.1016/j.molmed.2020.07.008", "10.1016/j.molmed.2020.11.009", "10.1016/j.molmed.2021.03.010", "10.1016/j.molmet.2018.06.013", "10.1016/j.molmet.2018.08.001", "10.1016/j.molmet.2019.02.009", "10.1016/j.molmet.2019.05.009", "10.1016/j.molmet.2022.101504", "10.1016/j.molonc.2007.10.003", "10.1016/j.molonc.2014.03.011", "10.1016/j.molonc.2015.04.002", "10.1016/j.molonc.2015.10.013", "10.1016/j.molp.2015.08.011", "10.1016/j.molp.2016.06.006", "10.1016/j.molp.2018.06.001", "10.1016/j.molp.2018.06.009", "10.1016/j.molp.2019.04.014", "10.1016/j.molp.2020.03.012", "10.1016/j.molp.2020.06.009", "10.1016/j.molp.2020.06.011", "10.1016/j.molstruc.2019.01.064", "10.1016/j.molstruc.2020.128061", "10.1016/j.molstruc.2021.129907", "10.1016/j.molstruc.2021.131469", "10.1016/j.mrfmmm.2007.03.014", "10.1016/j.mrfmmm.2007.06.008", "10.1016/j.msec.2020.111418", "10.1016/j.mser.2019.100522", "10.1016/j.mser.2020.100562", "10.1016/j.mtchem.2019.100216", "10.1016/j.nano.2016.12.007", "10.1016/j.nantod.2020.100923", "10.1016/j.nantod.2021.101350", "10.1016/j.nbd.2004.01.015", "10.1016/j.nbd.2006.04.017", "10.1016/j.nbd.2011.01.014", "10.1016/j.nbd.2013.11.016", "10.1016/j.nbd.2014.01.007", "10.1016/j.nbd.2015.01.001", "10.1016/j.nbd.2016.01.018", "10.1016/j.nbd.2017.07.017", "10.1016/j.nbd.2017.12.004", "10.1016/j.nbd.2018.08.011", "10.1016/j.nbd.2019.01.005", "10.1016/j.nbd.2019.104583", "10.1016/j.nec.2004.07.008", "10.1016/j.neo.2016.02.002", "10.1016/j.neo.2016.05.001", "10.1016/j.neubiorev.2008.08.007", "10.1016/j.neubiorev.2014.06.018", "10.1016/j.neubiorev.2014.09.003", "10.1016/j.neubiorev.2015.05.013", "10.1016/j.neubiorev.2018.05.030", "10.1016/j.neubiorev.2020.06.024", "10.1016/j.neubiorev.2021.04.032", "10.1016/j.neubiorev.2021.06.043", "10.1016/j.neucli.2016.06.015", "10.1016/j.neuint.2019.03.002", "10.1016/j.neuint.2020.104715", "10.1016/j.neuint.2020.104953", "10.1016/j.neuint.2021.104989", "10.1016/j.neuint.2021.105177", "10.1016/j.neulet.2007.10.019", "10.1016/j.neulet.2008.07.030", "10.1016/j.neulet.2011.08.025", "10.1016/j.neulet.2017.02.011", "10.1016/j.neulet.2018.04.049", "10.1016/j.neulet.2019.134369", "10.1016/j.neulet.2019.134374", "10.1016/j.neulet.2020.134853", "10.1016/j.neurad.2018.05.002", "10.1016/j.neures.2010.07.374", "10.1016/j.neures.2010.07.454", "10.1016/j.neures.2012.05.005", "10.1016/j.neuro.2015.11.008", "10.1016/j.neuro.2015.12.014", "10.1016/j.neuro.2016.08.006", "10.1016/j.neuro.2016.10.012", "10.1016/j.neuro.2018.08.009", "10.1016/j.neurobiolaging.2006.09.015", "10.1016/j.neurobiolaging.2011.10.030", "10.1016/j.neurobiolaging.2012.11.017", "10.1016/j.neurobiolaging.2013.10.089", "10.1016/j.neurobiolaging.2014.07.033", "10.1016/j.neurobiolaging.2021.12.006", "10.1016/j.neuroimage.2006.06.061", "10.1016/j.neuroimage.2007.05.019", "10.1016/j.neuroimage.2008.10.022", "10.1016/j.neuroimage.2009.10.003", "10.1016/j.neuroimage.2013.05.104", "10.1016/j.neuroimage.2014.01.014", "10.1016/j.neuroimage.2015.03.039", "10.1016/j.neuroimage.2015.05.029", "10.1016/j.neuroimage.2015.10.051", "10.1016/j.neuroimage.2017.06.045", "10.1016/j.neuroimage.2017.07.032", "10.1016/j.neuroimage.2018.02.055", "10.1016/j.neuroimage.2018.03.028", "10.1016/j.neuroimage.2018.11.005", "10.1016/j.neuroimage.2019.116358", "10.1016/j.neuron.2004.08.041", "10.1016/j.neuron.2005.02.014", "10.1016/j.neuron.2005.06.007", "10.1016/j.neuron.2005.08.024", "10.1016/j.neuron.2005.08.028", "10.1016/j.neuron.2005.11.031", "10.1016/j.neuron.2006.03.014", "10.1016/j.neuron.2006.07.029", "10.1016/j.neuron.2006.10.025", "10.1016/j.neuron.2007.05.002", "10.1016/j.neuron.2008.09.006", "10.1016/j.neuron.2009.03.006", "10.1016/j.neuron.2009.06.016", "10.1016/j.neuron.2009.09.002", "10.1016/j.neuron.2010.01.024", "10.1016/j.neuron.2010.02.021", "10.1016/j.neuron.2010.09.039", "10.1016/j.neuron.2011.05.001", "10.1016/j.neuron.2011.05.012", "10.1016/j.neuron.2011.05.013", "10.1016/j.neuron.2011.05.014", "10.1016/j.neuron.2011.06.039", "10.1016/j.neuron.2011.07.026", "10.1016/j.neuron.2012.03.026", "10.1016/j.neuron.2012.12.002", "10.1016/j.neuron.2013.03.020", "10.1016/j.neuron.2013.03.031", "10.1016/j.neuron.2013.04.017", "10.1016/j.neuron.2013.05.029", "10.1016/j.neuron.2013.06.043", "10.1016/j.neuron.2013.07.007", "10.1016/j.neuron.2013.08.014", "10.1016/j.neuron.2013.10.016", "10.1016/j.neuron.2013.10.020", "10.1016/j.neuron.2013.10.037", "10.1016/j.neuron.2013.12.034", "10.1016/j.neuron.2014.02.040", "10.1016/j.neuron.2014.07.016", "10.1016/j.neuron.2014.10.032", "10.1016/j.neuron.2015.03.052", "10.1016/j.neuron.2015.11.002", "10.1016/j.neuron.2015.11.020", "10.1016/j.neuron.2016.01.015", "10.1016/j.neuron.2016.02.011", "10.1016/j.neuron.2016.04.018", "10.1016/j.neuron.2016.06.022", "10.1016/j.neuron.2016.08.011", "10.1016/j.neuron.2016.10.001", "10.1016/j.neuron.2016.12.003", "10.1016/j.neuron.2016.12.036", "10.1016/j.neuron.2017.05.008", "10.1016/j.neuron.2017.08.036", "10.1016/j.neuron.2017.12.012", "10.1016/j.neuron.2017.12.037", "10.1016/j.neuron.2017.12.045", "10.1016/j.neuron.2018.03.004", "10.1016/j.neuron.2018.06.019", "10.1016/j.neuron.2018.07.002", "10.1016/j.neuron.2018.07.022", "10.1016/j.neuron.2018.08.034", "10.1016/j.neuron.2018.10.009", "10.1016/j.neuron.2018.11.021", "10.1016/j.neuron.2019.02.010", "10.1016/j.neuron.2019.07.013", "10.1016/j.neuron.2019.09.001", "10.1016/j.neuron.2019.09.003", "10.1016/j.neuron.2019.10.008", "10.1016/j.neuron.2019.10.011", "10.1016/j.neuron.2019.11.004", "10.1016/j.neuron.2020.01.042", "10.1016/j.neuron.2020.02.025", "10.1016/j.neuron.2020.04.018", "10.1016/j.neuron.2020.07.039", "10.1016/j.neuron.2020.08.002", "10.1016/j.neuron.2020.12.010", "10.1016/j.neuron.2021.03.006", "10.1016/j.neuron.2021.05.020", "10.1016/j.neuron.2021.06.005", "10.1016/j.neuron.2021.08.004", "10.1016/j.neuron.2021.08.014", "10.1016/j.neuron.2021.10.032", "10.1016/j.neuron.2021.10.036", "10.1016/j.neuron.2023.05.021", "10.1016/j.neuron.2024.03.007", "10.1016/j.neuropharm.2015.12.001", "10.1016/j.neuropharm.2016.10.004", "10.1016/j.neuropharm.2017.05.028", "10.1016/j.neuropharm.2017.05.029", "10.1016/j.neuropharm.2020.108180", "10.1016/j.neuropharm.2021.108745", "10.1016/j.neuropharm.2021.108749", "10.1016/j.neuroscience.2005.03.048", "10.1016/j.neuroscience.2005.03.059", "10.1016/j.neuroscience.2005.05.008", "10.1016/j.neuroscience.2006.09.003", "10.1016/j.neuroscience.2006.09.043", "10.1016/j.neuroscience.2006.12.040", "10.1016/j.neuroscience.2007.01.022", "10.1016/j.neuroscience.2007.10.071", "10.1016/j.neuroscience.2007.12.011", "10.1016/j.neuroscience.2008.02.036", "10.1016/j.neuroscience.2008.04.073", "10.1016/j.neuroscience.2008.05.055", "10.1016/j.neuroscience.2009.02.082", "10.1016/j.neuroscience.2011.12.033", "10.1016/j.neuroscience.2012.07.014", "10.1016/j.neuroscience.2012.09.010", "10.1016/j.neuroscience.2012.10.053", "10.1016/j.neuroscience.2014.03.029", "10.1016/j.neuroscience.2014.10.037", "10.1016/j.neuroscience.2014.11.001", "10.1016/j.neuroscience.2014.12.034", "10.1016/j.neuroscience.2015.04.024", "10.1016/j.neuroscience.2015.09.025", "10.1016/j.neuroscience.2015.09.039", "10.1016/j.neuroscience.2018.01.023", "10.1016/j.neuroscience.2020.03.008", "10.1016/j.neuroscience.2020.04.035", "10.1016/j.neuroscience.2020.06.010", "10.1016/j.neuroscience.2020.07.028", "10.1016/j.neuroscience.2021.01.022", "10.1016/j.nmd.2020.09.033", "10.1016/j.nmni.2021.100939", "10.1016/j.ntt.2015.04.007", "10.1016/j.nut.2019.03.015", "10.1016/j.obhdp.2018.12.005", "10.1016/j.omtm.2017.04.004", "10.1016/j.omtm.2019.02.008", "10.1016/j.omtm.2020.12.006", "10.1016/j.omtn.2017.06.004", "10.1016/j.omtn.2017.08.016", "10.1016/j.omtn.2017.09.009", "10.1016/j.omtn.2018.09.012", "10.1016/j.omtn.2019.09.003", "10.1016/j.omtn.2020.06.019", "10.1016/j.omtn.2021.02.016", "10.1016/j.omtn.2021.06.026", "10.1016/j.omto.2019.12.008", "10.1016/j.omto.2020.08.005", "10.1016/j.ophtha.2020.12.012", "10.1016/j.optcom.2014.10.035", "10.1016/j.parint.2009.08.007", "10.1016/j.pathol.2019.09.005", "10.1016/j.patter.2020.100142", "10.1016/j.pbb.2020.172953", "10.1016/j.pbi.2008.05.007", "10.1016/j.pbi.2021.102001", "10.1016/j.pbiomolbio.2008.05.007", "10.1016/j.pbiomolbio.2018.08.010", "10.1016/j.pcad.2017.06.003", "10.1016/j.pep.2004.10.018", "10.1016/j.pep.2005.05.007", "10.1016/j.pep.2005.06.007", "10.1016/j.pep.2006.08.006", "10.1016/j.pep.2008.02.006", "10.1016/j.pep.2009.09.002", "10.1016/j.pep.2011.04.003", "10.1016/j.pep.2014.05.011", "10.1016/j.pep.2014.08.014", "10.1016/j.pep.2019.02.015", "10.1016/j.peptides.2003.08.012", "10.1016/j.peptides.2010.04.015", "10.1016/j.peptides.2010.11.001", "10.1016/j.peptides.2014.02.009", "10.1016/j.peptides.2015.02.006", "10.1016/j.pestbp.2010.11.008", "10.1016/j.pestbp.2015.10.004", "10.1016/j.pestbp.2016.11.002", "10.1016/j.pestbp.2017.12.006", "10.1016/j.pestbp.2018.11.006", "10.1016/j.pharep.2015.05.008", "10.1016/j.pharmthera.2004.05.002", "10.1016/j.pharmthera.2015.06.001", "10.1016/j.pharmthera.2016.01.012", "10.1016/j.pharmthera.2019.01.003", "10.1016/j.pharmthera.2019.05.005", "10.1016/j.pharmthera.2020.107515", "10.1016/j.pharmthera.2020.107523", "10.1016/j.pharmthera.2020.107526", "10.1016/j.pharmthera.2020.107704", "10.1016/j.phrs.2012.04.005", "10.1016/j.phrs.2014.01.005", "10.1016/j.phrs.2016.09.029", "10.1016/j.phrs.2018.08.013", "10.1016/j.phrs.2018.08.023", "10.1016/j.phrs.2018.10.021", "10.1016/j.phrs.2019.01.039", "10.1016/j.phrs.2020.104876", "10.1016/j.phrs.2020.105410", "10.1016/j.phrs.2021.105748", "10.1016/j.phymed.2019.09.111", "10.1016/j.physa.2004.08.038", "10.1016/j.physa.2009.06.026", "10.1016/j.phytochem.2011.02.004", "10.1016/j.placenta.2008.09.013", "10.1016/j.plaphy.2014.01.022", "10.1016/j.plasmid.2013.03.003", "10.1016/j.plasmid.2020.102505", "10.1016/j.plrev.2013.06.004", "10.1016/j.pmatsci.2018.05.005", "10.1016/j.pneurobio.2005.02.004", "10.1016/j.pneurobio.2008.09.001", "10.1016/j.pneurobio.2012.05.002", "10.1016/j.pneurobio.2012.11.002", "10.1016/j.pneurobio.2015.02.002", "10.1016/j.pneurobio.2015.05.003", "10.1016/j.pneurobio.2016.05.005", "10.1016/j.pneurobio.2017.03.003", "10.1016/j.pneurobio.2018.04.003", "10.1016/j.pneurobio.2018.12.007", "10.1016/j.pneurobio.2019.01.003", "10.1016/j.pnmrs.2010.04.004", "10.1016/j.pnmrs.2013.02.001", "10.1016/j.pnmrs.2013.03.001", "10.1016/j.pnpbp.2015.09.003", "10.1016/j.poly.2019.06.011", "10.1016/j.poly.2022.115937", "10.1016/j.porgcoat.2019.03.042", "10.1016/j.postharvbio.2007.05.016", "10.1016/j.postharvbio.2009.11.013", "10.1016/j.postharvbio.2010.08.017", "10.1016/j.preghy.2012.04.008", "10.1016/j.preteyeres.2010.04.004", "10.1016/j.preteyeres.2016.09.001", "10.1016/j.preteyeres.2017.10.002", "10.1016/j.preteyeres.2020.100874", "10.1016/j.progpolymsci.2010.10.001", "10.1016/j.progpolymsci.2017.12.001", "10.1016/j.prp.2016.02.020", "10.1016/j.prp.2021.153477", "10.1016/j.psj.2020.03.029", "10.1016/j.psj.2021.101250", "10.1016/j.psychres.2023.115636", "10.1016/j.psyneuen.2009.12.011", "10.1016/j.psyneuen.2019.04.021", "10.1016/j.pt.2006.07.001", "10.1016/j.pt.2009.04.004", "10.1016/j.pt.2009.07.005", "10.1016/j.pt.2018.12.001", "10.1016/j.pt.2020.05.004", "10.1016/j.pt.2021.06.007", "10.1016/j.pupt.2012.04.004", "10.1016/j.pupt.2017.01.006", "10.1016/j.radonc.2024.110117", "10.1016/j.redox.2018.02.021", "10.1016/j.redox.2020.101534", "10.1016/j.redox.2020.101664", "10.1016/j.redox.2021.102106", "10.1016/j.redox.2021.102111", "10.1016/j.repbio.2015.10.004", "10.1016/j.reprotox.2011.05.002", "10.1016/j.resmic.2014.05.034", "10.1016/j.resmic.2019.07.002", "10.1016/j.resp.2019.103361", "10.1016/j.rmcr.2017.03.008", "10.1016/j.rmr.2014.06.007", "10.1016/j.rser.2018.10.018", "10.1016/j.rsma.2020.101522", "10.1016/j.rvsc.2020.07.023", "10.1016/j.saa.2019.117965", "10.1016/j.sajb.2020.08.002", "10.1016/j.sbi.2006.01.003", "10.1016/j.sbi.2010.02.001", "10.1016/j.sbi.2012.03.001", "10.1016/j.sbi.2012.10.010", "10.1016/j.sbi.2012.11.006", "10.1016/j.sbi.2014.02.002", "10.1016/j.sbi.2015.02.004", "10.1016/j.sbi.2015.05.009", "10.1016/j.sbi.2016.05.005", "10.1016/j.sbi.2017.10.016", "10.1016/j.sbi.2018.01.008", "10.1016/j.sbi.2018.07.009", "10.1016/j.sbi.2019.03.008", "10.1016/j.sbi.2019.06.010", "10.1016/j.sbi.2019.10.004", "10.1016/j.sbi.2020.03.006", "10.1016/j.sbi.2020.05.001", "10.1016/j.sbi.2020.09.004", "10.1016/j.sbi.2020.10.010", "10.1016/j.sbi.2021.01.007", "10.1016/j.sbi.2021.06.013", "10.1016/j.sbspro.2013.10.767", "10.1016/j.schres.2013.06.024", "10.1016/j.schres.2015.07.016", "10.1016/j.scib.2020.08.036", "10.1016/j.scib.2023.10.025", "10.1016/j.scienta.2009.12.013", "10.1016/j.scienta.2014.12.038", "10.1016/j.scitotenv.2006.12.031", "10.1016/j.scitotenv.2012.10.106", "10.1016/j.scitotenv.2018.05.301", "10.1016/j.scitotenv.2021.145538", "10.1016/j.scr.2011.12.002", "10.1016/j.scr.2018.03.009", "10.1016/j.sedgeo.2015.04.004", "10.1016/j.seizure.2010.09.004", "10.1016/j.semarthrit.2016.02.008", "10.1016/j.semcancer.2015.09.010", "10.1016/j.semcancer.2015.12.004", "10.1016/j.semcancer.2016.05.001", "10.1016/j.semcancer.2016.05.002", "10.1016/j.semcancer.2016.08.001", "10.1016/j.semcancer.2017.06.001", "10.1016/j.semcancer.2018.01.017", "10.1016/j.semcancer.2018.03.005", "10.1016/j.semcancer.2018.09.001", "10.1016/j.semcancer.2019.04.002", "10.1016/j.semcancer.2019.06.018", "10.1016/j.semcancer.2019.06.021", "10.1016/j.semcancer.2020.03.011", "10.1016/j.semcancer.2020.09.010", "10.1016/j.semcancer.2021.04.016", "10.1016/j.semcancer.2021.05.007", "10.1016/j.semcancer.2022.05.003", "10.1016/j.semcdb.2008.07.010", "10.1016/j.semcdb.2009.09.004", "10.1016/j.semcdb.2011.09.009", "10.1016/j.semcdb.2014.10.003", "10.1016/j.semcdb.2015.03.003", "10.1016/j.semcdb.2015.04.010", "10.1016/j.semcdb.2015.12.003", "10.1016/j.semcdb.2016.01.040", "10.1016/j.semcdb.2016.06.011", "10.1016/j.semcdb.2017.08.056", "10.1016/j.semcdb.2018.05.027", "10.1016/j.semcdb.2018.09.013", "10.1016/j.semcdb.2018.10.007", "10.1016/j.semcdb.2019.01.001", "10.1016/j.semcdb.2020.05.021", "10.1016/j.semcdb.2020.09.006", "10.1016/j.semcdb.2021.01.002", "10.1016/j.semcdb.2021.02.008", "10.1016/j.semcdb.2021.04.012", "10.1016/j.smim.2009.03.002", "10.1016/j.smim.2014.09.002", "10.1016/j.smim.2014.09.010", "10.1016/j.smim.2015.07.001", "10.1016/j.smim.2015.10.003", "10.1016/j.smim.2017.08.013", "10.1016/j.smim.2018.07.001", "10.1016/j.snb.2020.128631", "10.1016/j.snb.2021.130270", "10.1016/j.snb.2021.130339", "10.1016/j.socec.2019.03.005", "10.1016/j.soilbio.2015.07.018", "10.1016/j.soilbio.2021.108351", "10.1016/j.solener.2013.12.017", "10.1016/j.stem.2008.03.021", "10.1016/j.stem.2009.05.026", "10.1016/j.stem.2010.03.015", "10.1016/j.stem.2010.12.003", "10.1016/j.stem.2010.12.016", "10.1016/j.stem.2011.03.010", "10.1016/j.stem.2011.04.007", "10.1016/j.stem.2012.01.006", "10.1016/j.stem.2013.04.005", "10.1016/j.stem.2013.08.013", "10.1016/j.stem.2014.01.002", "10.1016/j.stem.2014.04.014", "10.1016/j.stem.2014.05.018", "10.1016/j.stem.2014.10.004", "10.1016/j.stem.2014.10.005", "10.1016/j.stem.2014.11.002", "10.1016/j.stem.2015.01.003", "10.1016/j.stem.2015.06.001", "10.1016/j.stem.2015.06.005", "10.1016/j.stem.2015.07.006", "10.1016/j.stem.2015.09.002", "10.1016/j.stem.2015.11.010", "10.1016/j.stem.2016.01.022", "10.1016/j.stem.2016.04.004", "10.1016/j.stem.2016.04.016", "10.1016/j.stem.2017.02.004", "10.1016/j.stem.2017.08.003", "10.1016/j.stem.2017.11.001", "10.1016/j.stem.2018.03.005", "10.1016/j.stem.2018.03.015", "10.1016/j.stem.2018.10.006", "10.1016/j.stem.2018.11.006", "10.1016/j.stem.2019.02.019", "10.1016/j.stem.2019.04.012", "10.1016/j.stem.2019.05.003", "10.1016/j.stem.2019.12.011", "10.1016/j.stem.2019.12.013", "10.1016/j.stem.2020.03.005", "10.1016/j.stem.2020.07.008", "10.1016/j.stem.2020.10.014", "10.1016/j.stem.2020.11.002", "10.1016/j.stem.2021.03.007", "10.1016/j.stem.2021.12.011", "10.1016/j.stemcr.2014.01.009", "10.1016/j.stemcr.2014.06.015", "10.1016/j.stemcr.2014.06.018", "10.1016/j.stemcr.2015.09.012", "10.1016/j.stemcr.2015.11.014", "10.1016/j.stemcr.2016.01.013", "10.1016/j.stemcr.2016.02.005", "10.1016/j.stemcr.2017.01.022", "10.1016/j.stemcr.2017.09.006", "10.1016/j.stemcr.2017.10.031", "10.1016/j.stemcr.2018.10.002", "10.1016/j.stemcr.2019.05.021", "10.1016/j.stemcr.2019.08.002", "10.1016/j.stemcr.2019.09.002", "10.1016/j.stemcr.2019.09.011", "10.1016/j.stemcr.2020.08.012", "10.1016/j.stemcr.2020.10.012", "10.1016/j.stemcr.2021.04.020", "10.1016/j.steroids.2008.05.003", "10.1016/j.steroids.2011.05.013", "10.1016/j.steroids.2020.108751", "10.1016/j.str.2004.02.002", "10.1016/j.str.2004.02.005", "10.1016/j.str.2004.06.018", "10.1016/j.str.2004.09.014", "10.1016/j.str.2005.09.017", "10.1016/j.str.2005.12.008", "10.1016/j.str.2007.09.017", "10.1016/j.str.2009.05.012", "10.1016/j.str.2009.12.014", "10.1016/j.str.2009.12.015", "10.1016/j.str.2010.07.003", "10.1016/j.str.2010.09.019", "10.1016/j.str.2011.08.001", "10.1016/j.str.2012.01.020", "10.1016/j.str.2013.04.019", "10.1016/j.str.2013.06.016", "10.1016/j.str.2013.09.013", "10.1016/j.str.2013.11.007", "10.1016/j.str.2014.01.008", "10.1016/j.str.2014.11.017", "10.1016/j.str.2016.10.008", "10.1016/j.str.2017.06.012", "10.1016/j.str.2017.08.006", "10.1016/j.str.2018.10.001", "10.1016/j.str.2019.03.014", "10.1016/j.str.2019.03.019", "10.1016/j.synbio.2018.11.002", "10.1016/j.synbio.2020.08.003", "10.1016/j.tca.2007.02.024", "10.1016/j.tcb.2003.09.001", "10.1016/j.tcb.2004.01.004", "10.1016/j.tcb.2011.10.006", "10.1016/j.tcb.2013.12.003", "10.1016/j.tcb.2014.07.004", "10.1016/j.tcb.2014.10.001", "10.1016/j.tcb.2015.07.007", "10.1016/j.tcb.2017.02.006", "10.1016/j.tcb.2021.05.009", "10.1016/j.tcb.2021.06.008", "10.1016/j.tem.2007.03.002", "10.1016/j.tem.2018.05.003", "10.1016/j.theriogenology.2005.09.022", "10.1016/j.theriogenology.2014.06.011", "10.1016/j.theriogenology.2021.08.024", "10.1016/j.thromres.2020.05.008", "10.1016/j.tibs.2006.03.009", "10.1016/j.tibs.2007.06.007", "10.1016/j.tibs.2009.01.011", "10.1016/j.tibs.2009.03.004", "10.1016/j.tibs.2009.09.005", "10.1016/j.tibs.2009.12.006", "10.1016/j.tibs.2010.01.001", "10.1016/j.tibs.2010.05.005", "10.1016/j.tibs.2010.07.008", "10.1016/j.tibs.2011.07.002", "10.1016/j.tibs.2012.07.004", "10.1016/j.tibs.2014.02.007", "10.1016/j.tibs.2014.04.004", "10.1016/j.tibs.2014.05.006", "10.1016/j.tibs.2014.08.006", "10.1016/j.tibs.2015.07.008", "10.1016/j.tibs.2016.03.007", "10.1016/j.tibs.2016.10.004", "10.1016/j.tibs.2016.11.003", "10.1016/j.tibs.2017.05.005", "10.1016/j.tibs.2018.12.005", "10.1016/j.tibs.2020.05.002", "10.1016/j.tibs.2020.06.003", "10.1016/j.tibs.2020.10.005", "10.1016/j.tibs.2021.08.002", "10.1016/j.tibtech.2018.10.009", "10.1016/j.tibtech.2020.01.003", "10.1016/j.tice.2019.05.007", "10.1016/j.tice.2021.101505", "10.1016/j.tics.2004.10.003", "10.1016/j.tics.2010.04.003", "10.1016/j.tics.2010.11.004", "10.1016/j.tics.2017.01.007", "10.1016/j.tics.2018.07.006", "10.1016/j.tics.2021.01.008", "10.1016/j.tifs.2023.03.019", "10.1016/j.tig.2004.12.009", "10.1016/j.tig.2005.04.008", "10.1016/j.tig.2009.07.006", "10.1016/j.tig.2010.08.007", "10.1016/j.tig.2011.03.002", "10.1016/j.tig.2015.02.002", "10.1016/j.tig.2015.03.012", "10.1016/j.tig.2015.10.004", "10.1016/j.tig.2015.12.005", "10.1016/j.tig.2016.01.003", "10.1016/j.tig.2016.05.004", "10.1016/j.tig.2016.10.003", "10.1016/j.tig.2017.04.001", "10.1016/j.tig.2017.08.006", "10.1016/j.tig.2018.01.002", "10.1016/j.tig.2018.10.002", "10.1016/j.tig.2018.12.004", "10.1016/j.tig.2019.03.004", "10.1016/j.tig.2020.01.011", "10.1016/j.tig.2021.05.005", "10.1016/j.tim.2008.02.001", "10.1016/j.tim.2011.08.003", "10.1016/j.tim.2014.04.007", "10.1016/j.tim.2015.05.005", "10.1016/j.tim.2015.10.005", "10.1016/j.tim.2020.01.003", "10.1016/j.tim.2020.05.007", "10.1016/j.tim.2021.02.003", "10.1016/j.tim.2021.04.003", "10.1016/j.tins.2004.05.013", "10.1016/j.tins.2009.05.009", "10.1016/j.tins.2010.01.004", "10.1016/j.tins.2010.10.002", "10.1016/j.tins.2013.05.002", "10.1016/j.tins.2018.06.003", "10.1016/j.tins.2019.03.006", "10.1016/j.tins.2020.03.002", "10.1016/j.tins.2020.03.007", "10.1016/j.tins.2021.04.001", "10.1016/j.tips.2009.02.005", "10.1016/j.tips.2009.11.004", "10.1016/j.tips.2011.09.007", "10.1016/j.tips.2013.05.007", "10.1016/j.tips.2016.02.006", "10.1016/j.tips.2018.02.001", "10.1016/j.tips.2020.12.004", "10.1016/j.tiv.2015.12.018", "10.1016/j.tmaid.2009.06.001", "10.1016/j.tox.2016.11.010", "10.1016/j.tox.2021.152748", "10.1016/j.toxicon.2006.09.014", "10.1016/j.toxicon.2015.11.005", "10.1016/j.toxlet.2020.01.008", "10.1016/j.tplants.2008.07.002", "10.1016/j.tplants.2012.06.001", "10.1016/j.tplants.2014.07.003", "10.1016/j.tplants.2019.04.008", "10.1016/j.tplants.2020.08.003", "10.1016/j.trac.2019.115757", "10.1016/j.tranon.2019.10.015", "10.1016/j.transci.2011.11.014", "10.1016/j.trecan.2019.07.002", "10.1016/j.trecan.2020.04.003", "10.1016/j.trecan.2020.08.003", "10.1016/j.trim.2016.01.001", "10.1016/j.trsl.2017.10.001", "10.1016/j.tube.2005.07.005", "10.1016/j.tube.2011.03.004", "10.1016/j.tube.2012.11.003", "10.1016/j.tube.2015.11.009", "10.1016/j.tube.2019.01.002", "10.1016/j.tube.2019.101891", "10.1016/j.tvjl.2012.11.013", "10.1016/j.tvjl.2020.105575", "10.1016/j.urology.2010.12.067", "10.1016/j.vaccine.2007.09.073", "10.1016/j.vaccine.2012.04.109", "10.1016/j.vaccine.2012.07.012", "10.1016/j.vaccine.2013.04.071", "10.1016/j.vaccine.2014.08.059", "10.1016/j.vaccine.2015.10.115", "10.1016/j.vaccine.2016.04.012", "10.1016/j.vaccine.2016.06.021", "10.1016/j.vaccine.2019.02.071", "10.1016/j.vetmic.2012.02.019", "10.1016/j.vetmic.2018.02.002", "10.1016/j.vetmic.2018.08.011", "10.1016/j.vetmic.2019.04.003", "10.1016/j.vetmic.2020.108791", "10.1016/j.vetpar.2006.10.003", "10.1016/j.virol.2008.11.016", "10.1016/j.virol.2011.10.033", "10.1016/j.virol.2014.08.033", "10.1016/j.virol.2015.02.010", "10.1016/j.virol.2019.07.026", "10.1016/j.virol.2020.05.008", "10.1016/j.virol.2020.12.018", "10.1016/j.virusres.2019.197771", "10.1016/j.virusres.2020.198079", "10.1016/j.vlsi.2016.12.010", "10.1016/j.vph.2016.05.003", "10.1016/j.watres.2008.06.026", "10.1016/j.watres.2010.04.027", "10.1016/j.watres.2011.08.021", "10.1016/j.watres.2011.11.024", "10.1016/j.watres.2016.08.016", "10.1016/j.watres.2017.01.062", "10.1016/j.watres.2017.07.065", "10.1016/j.watres.2020.116318", "10.1016/j.xcrm.2020.100127", "10.1016/j.xcrm.2020.100132", "10.1016/j.xcrm.2020.100159", "10.1016/j.xcrm.2021.100219", "10.1016/j.xhgg.2021.100034", "10.1016/j.xinn.2021.100141", "10.1016/j.xphs.2018.12.014", "10.1016/j.xplc.2020.100043", "10.1016/j.ydbio.2004.03.007", "10.1016/j.ydbio.2004.09.009", "10.1016/j.ydbio.2005.11.024", "10.1016/j.ydbio.2006.03.035", "10.1016/j.ydbio.2006.04.262", "10.1016/j.ydbio.2006.10.030", "10.1016/j.ydbio.2006.10.046", "10.1016/j.ydbio.2007.02.041", "10.1016/j.ydbio.2007.05.034", "10.1016/j.ydbio.2010.03.024", "10.1016/j.ydbio.2010.05.430", "10.1016/j.ydbio.2010.09.022", "10.1016/j.ydbio.2011.10.023", "10.1016/j.ydbio.2011.10.032", "10.1016/j.ydbio.2012.04.018", "10.1016/j.ydbio.2012.07.003", "10.1016/j.ydbio.2012.12.008", "10.1016/j.ydbio.2013.08.009", "10.1016/j.ydbio.2014.08.004", "10.1016/j.ydbio.2014.08.027", "10.1016/j.ydbio.2014.09.030", "10.1016/j.ydbio.2015.11.022", "10.1016/j.ydbio.2018.05.013", "10.1016/j.ydbio.2020.01.006", "10.1016/j.ydbio.2020.12.010", "10.1016/j.yebeh.2019.106595", "10.1016/j.yexcr.2004.04.012", "10.1016/j.yexcr.2004.07.005", "10.1016/j.yexcr.2005.09.005", "10.1016/j.yexcr.2008.07.028", "10.1016/j.yexcr.2008.10.042", "10.1016/j.yexcr.2013.10.016", "10.1016/j.yexcr.2015.02.008", "10.1016/j.yexcr.2015.03.017", "10.1016/j.yexcr.2015.05.015", "10.1016/j.yexcr.2017.05.010", "10.1016/j.yexcr.2019.01.012", "10.1016/j.yexcr.2019.111672", "10.1016/j.yexcr.2020.111846", "10.1016/j.yexcr.2020.111973", "10.1016/j.yexcr.2020.112119", "10.1016/j.yexcr.2020.112394", "10.1016/j.yexcr.2021.112648", "10.1016/j.yexmp.2015.11.028", "10.1016/j.yexmp.2016.05.015", "10.1016/j.yfrne.2010.12.003", "10.1016/j.yfrne.2012.08.006", "10.1016/j.ygcen.2009.01.025", "10.1016/j.ygeno.2010.01.002", "10.1016/j.ygeno.2019.05.018", "10.1016/j.yhbeh.2008.02.023", "10.1016/j.yhbeh.2012.04.011", "10.1016/j.yhbeh.2018.01.003", "10.1016/j.yjmcc.2004.11.018", "10.1016/j.yjmcc.2005.01.007", "10.1016/j.yjmcc.2015.05.010", "10.1016/j.yjmcc.2020.06.006", "10.1016/j.ymben.2011.07.005", "10.1016/j.ymben.2012.05.002", "10.1016/j.ymben.2020.11.006", "10.1016/j.ymeth.2005.07.015", "10.1016/j.ymeth.2012.07.018", "10.1016/j.ymeth.2014.11.009", "10.1016/j.ymeth.2015.09.009", "10.1016/j.ymeth.2016.05.007", "10.1016/j.ymeth.2016.09.016", "10.1016/j.ymeth.2016.10.004", "10.1016/j.ymeth.2016.12.003", "10.1016/j.ymeth.2016.12.009", "10.1016/j.ymeth.2017.05.009", "10.1016/j.ymeth.2017.05.028", "10.1016/j.ymeth.2018.06.005", "10.1016/j.ymeth.2019.07.002", "10.1016/j.ymeth.2019.10.003", "10.1016/j.ymgme.2011.08.026", "10.1016/j.ymgme.2015.11.008", "10.1016/j.ympev.2013.01.015", "10.1016/j.ymthe.2017.03.001", "10.1016/j.ymthe.2017.04.017", "10.1016/j.ymthe.2020.01.011", "10.1016/j.ymthe.2020.11.009", "10.1016/j.ymthe.2021.01.033", "10.1016/j.ymthe.2021.03.003", "10.1016/j.ymthe.2021.06.004", "10.1016/j.ymthe.2021.06.016", "10.1016/j.ynstr.2021.100312", "10.1016/s0003-9861(02)00639-2", "10.1016/s0006-291x(76)80264-1", "10.1016/s0006-3223(01)01243-4", "10.1016/s0006-3495(00)76726-9", "10.1016/s0006-3495(03)74820-6", "10.1016/s0006-3495(03)74847-4", "10.1016/s0006-8993(99)02352-5", "10.1016/s0009-2797(00)00167-8", "10.1016/s0009-3084(01)00157-8", "10.1016/s0014-5793(00)01449-6", "10.1016/s0014-5793(02)03260-x", "10.1016/s0014-5793(98)01010-2", "10.1016/s0015-0282(16)54418-5", "10.1016/s0021-9258(17)37600-7", "10.1016/s0021-9258(17)40588-6", "10.1016/s0021-9258(18)43782-9", "10.1016/s0021-9258(18)48898-9", "10.1016/s0021-9258(18)51520-9", "10.1016/s0021-9258(18)53139-2", "10.1016/s0021-9258(18)53140-9", "10.1016/s0021-9258(18)56368-7", "10.1016/s0021-9258(18)86949-6", "10.1016/s0021-9258(19)38722-8", "10.1016/s0021-9258(19)42644-6", "10.1016/s0021-9258(19)49660-9", "10.1016/s0021-9258(19)50047-3", "10.1016/s0021-9258(19)67858-0", "10.1016/s0021-9258(19)75864-5", "10.1016/s0022-0981(02)00036-9", "10.1016/s0022-1759(02)00505-7", "10.1016/s0022-1910(03)00019-2", "10.1016/s0022-2836(02)00167-5", "10.1016/s0022-2836(02)00429-1", "10.1016/s0022-2836(02)01281-0", "10.1016/s0022-2836(03)00660-0", "10.1016/s0022-2836(03)00726-5", "10.1016/s0022-2836(05)80134-2", "10.1016/s0022-2836(05)80360-2", "10.1016/s0022-2836(59)80029-2", "10.1016/s0022-5096(99)00054-x", "10.1016/s0022-5193(86)80075-3", "10.1016/s0031-9384(02)00929-0", "10.1016/s0035-9203(96)90408-3", "10.1016/s0040-4020(01)87306-3", "10.1016/s0041-0101(02)00208-8", "10.1016/s0044-328x(79)80011-2", "10.1016/s0047-6374(00)00167-6", "10.1016/s0047-6374(02)00095-7", "10.1016/s0065-230x(08)60702-2", "10.1016/s0065-2660(07)00009-0", "10.1016/s0065-2776(08)00003-5", "10.1016/s0065-2911(09)05501-5", "10.1016/s0065-308x(08)60462-5", "10.1016/s0065-3233(07)74001-9", "10.1016/s0065-3527(03)62003-8", "10.1016/s0065-3527(07)70004-0", "10.1016/s0070-2161(08)60120-3", "10.1016/s0074-7696(03)32006-6", "10.1016/s0074-7696(05)44001-2", "10.1016/s0074-7696(08)61951-8", "10.1016/s0074-7696(08)62232-9", "10.1016/s0074-7742(05)67003-1", "10.1016/s0076-6879(02)44708-8", "10.1016/s0076-6879(05)05009-3", "10.1016/s0076-6879(05)98028-2", "10.1016/s0079-6123(00)24008-9", "10.1016/s0079-6123(07)63028-3", "10.1016/s0079-6603(04)79001-7", "10.1016/s0079-6603(04)79002-9", "10.1016/s0091-679x(08)85011-x", "10.1016/s0092-8240(95)80013-1", "10.1016/s0092-8674(00)00049-0", "10.1016/s0092-8674(00)00084-2", "10.1016/s0092-8674(00)80063-x", "10.1016/s0092-8674(00)80137-3", "10.1016/s0092-8674(00)80263-9", "10.1016/s0092-8674(00)80538-3", "10.1016/s0092-8674(00)80595-4", "10.1016/s0092-8674(00)80898-3", "10.1016/s0092-8674(00)80899-5", "10.1016/s0092-8674(00)80961-7", "10.1016/s0092-8674(00)81308-2", "10.1016/s0092-8674(00)81481-6", "10.1016/s0092-8674(00)81572-x", "10.1016/s0092-8674(00)81575-5", "10.1016/s0092-8674(00)81603-7", "10.1016/s0092-8674(00)81708-0", "10.1016/s0092-8674(00)81769-9", "10.1016/s0092-8674(00)81779-1", "10.1016/s0092-8674(00)81795-x", "10.1016/s0092-8674(00)81848-6", "10.1016/s0092-8674(00)81902-9", "10.1016/s0092-8674(01)00297-5", "10.1016/s0092-8674(01)00611-0", "10.1016/s0092-8674(02)00817-6", "10.1016/s0092-8674(03)00401-x", "10.1016/s0092-8674(03)00755-4", "10.1016/s0092-8674(03)00926-7", "10.1016/s0092-8674(75)80001-8", "10.1016/s0140-6736(13)60024-0", "10.1016/s0140-6736(17)31868-8", "10.1016/s0140-6736(20)30185-9", "10.1016/s0140-6736(20)31208-3", "10.1016/s0140-6736(20)31604-4", "10.1016/s0140-6736(89)92145-4", "10.1016/s0140-6736(95)91150-2", "10.1016/s0142-9612(02)00156-4", "10.1016/s0145-2126(00)00118-1", "10.1016/s0165-3806(01)00243-7", "10.1016/s0166-2236(00)01932-9", "10.1016/s0166-2236(98)01313-7", "10.1016/s0166-2236(98)01318-6", "10.1016/s0166-2236(98)01325-3", "10.1016/s0166-6851(00)00314-5", "10.1016/s0166-6851(01)00328-0", "10.1016/s0167-7012(02)00155-0", "10.1016/s0168-0102(02)00009-3", "10.1016/s0168-1656(00)00355-2", "10.1016/s0168-1656(02)00161-x", "10.1016/s0168-6445(03)00050-0", "10.1016/s0168-9452(02)00405-3", "10.1016/s0168-9525(00)02024-2", "10.1016/s0168-9525(00)02139-9", "10.1016/s0168-9525(00)89009-5", "10.1016/s0168-9525(01)02273-9", "10.1016/s0169-328x(98)00040-0", "10.1016/s0169-328x(99)00054-6", "10.1016/s0195-6701(03)00152-x", "10.1016/s0213-9626(07)70077-x", "10.1016/s0255-0857(21)02169-1", "10.1016/s0255-0857(21)02888-7", "10.1016/s0264-410x(99)00082-1", "10.1016/s0300-9084(01)01241-x", "10.1016/s0300-9084(01)01244-5", "10.1016/s0300-9084(01)01250-0", "10.1016/s0300-9084(02)01415-3", "10.1016/s0300-9084(02)01427-x", "10.1016/s0304-4017(01)00472-1", "10.1016/s0304-4165(02)00316-1", "10.1016/s0306-4522(00)00065-8", "10.1016/s0306-4522(02)00348-2", "10.1016/s0361-9230(03)00061-3", "10.1016/s0378-1097(00)00467-5", "10.1016/s0378-1119(00)00353-x", "10.1016/s0378-1119(02)01156-3", "10.1016/s0378-1119(96)00824-4", "10.1016/s0378-8741(03)00014-x", "10.1016/s0531-5565(00)00108-x", "10.1016/s0531-5565(02)00133-x", "10.1016/s0531-5565(02)00136-5", "10.1016/s0580-9517(08)70097-7", "10.1016/s0618-8278(19)30297-x", "10.1016/s0735-1097(02)01738-2", "10.1016/s0736-5748(00)00065-4", "10.1016/s0736-5748(99)00090-8", "10.1016/s0889-1591(03)00078-3", "10.1016/s0896-6273(00)00084-2", "10.1016/s0896-6273(00)80172-5", "10.1016/s0896-6273(00)80682-0", "10.1016/s0896-6273(00)80708-4", "10.1016/s0896-6273(00)80777-1", "10.1016/s0896-6273(00)80778-3", "10.1016/s0896-6273(01)00305-1", "10.1016/s0896-6273(01)00374-9", "10.1016/s0896-6273(02)01021-8", "10.1016/s0896-6273(03)00645-7", "10.1016/s0896-6273(04)00802-5", "10.1016/s0924-8579(07)72035-6", "10.1016/s0924-977x(11)70673-3", "10.1016/s0927-7765(01)00249-1", "10.1016/s0929-1393(00)00061-5", "10.1016/s0945-053x(03)00052-0", "10.1016/s0952-7915(03)00104-3", "10.1016/s0955-0674(03)00005-x", "10.1016/s0958-6946(98)00043-0", "10.1016/s0959-437x(98)80061-0", "10.1016/s0959-4388(00)00177-x", "10.1016/s0959-4388(97)80118-3", "10.1016/s0959-440x(02)00365-2", "10.1016/s0959-440x(02)00375-5", "10.1016/s0959-440x(96)80058-3", "10.1016/s0959-8049(18)30636-1", "10.1016/s0960-0760(01)00180-7", "10.1016/s0960-0760(98)00124-1", "10.1016/s0960-9822(00)00220-7", "10.1016/s0960-9822(02)00771-6", "10.1016/s0960-9822(06)00057-1", "10.1016/s0960-9822(98)70105-8", "10.1016/s0960-9822(98)70137-x", "10.1016/s0960-9822(99)80195-x", "10.1016/s0968-0004(01)01827-8", "10.1016/s0968-0004(02)02109-6", "10.1016/s0968-0004(03)00004-5", "10.1016/s0968-0004(03)00169-5", "10.1016/s0968-0004(98)01298-5", "10.1016/s0969-2126(02)00748-7", "10.1016/s0969-2126(02)00784-0", "10.1016/s1001-9294(10)60013-2", "10.1016/s1044-7431(03)00060-5", "10.1016/s1044-7431(03)00082-4", "10.1016/s1044-7431(03)00207-0", "10.1016/s1046-5928(03)00140-2", "10.1016/s1053-8119(09)71915-9", "10.1016/s1074-7613(00)80014-x", "10.1016/s1074-7613(00)80270-8", "10.1016/s1074-7613(00)80378-7", "10.1016/s1074-7613(00)80497-5", "10.1016/s1074-7613(00)80511-7", "10.1016/s1074-7613(01)00258-8", "10.1016/s1074-7613(02)00362-x", "10.1016/s1074-7613(04)00107-4", "10.1016/s1081-1206(10)61657-2", "10.1016/s1097-2765(00)00035-6", "10.1016/s1097-2765(00)00128-3", "10.1016/s1097-2765(01)00244-1", "10.1016/s1097-2765(01)00407-5", "10.1016/s1097-2765(02)00742-6", "10.1016/s1097-2765(03)00036-4", "10.1016/s1132-8460(06)75261-8", "10.1016/s1155-1984(05)40430-6", "10.1016/s1286-4579(03)00099-6", "10.1016/s1286-4579(03)00162-x", "10.1016/s1353-8020(08)70012-9", "10.1016/s1357-2725(02)00390-4", "10.1016/s1364-6613(00)01483-2", "10.1016/s1369-5274(00)00143-0", "10.1016/s1369-7021(12)70197-9", "10.1016/s1470-2045(12)70582-x", "10.1016/s1470-2045(14)70263-3", "10.1016/s1470-2045(18)30351-6", "10.1016/s1471-4906(00)01830-5", "10.1016/s1471-4906(01)01930-5", "10.1016/s1471-4906(02)02232-9", "10.1016/s1471-4906(02)02302-5", "10.1016/s1471-4922(01)01983-3", "10.1016/s1471-4922(01)02122-5", "10.1016/s1472-6483(10)60629-3", "10.1016/s1472-6483(10)62018-4", "10.1016/s1473-3099(01)00095-0", "10.1016/s1473-3099(11)70165-7", "10.1016/s1473-3099(18)30044-6", "10.1016/s1473-3099(22)00311-5", "10.1016/s1534-5807(01)00113-7", "10.1016/s1534-5807(03)00232-6", "10.1016/s1535-6108(04)00024-8", "10.1016/s1568-9972(03)00031-4", "10.1016/s1574-3349(06)17005-2", "10.1016/s1773-035x(10)70607-9", "10.1016/s2095-3119(14)60979-5", "10.1016/s2095-3119(16)61573-3", "10.1016/s2222-1808(14)60510-7", "10.1016/s2665-9913(20)30275-7", "10.1016/s2665-9913(23)00190-x", "10.1016/s2666-5247(21)00068-9", "10.1017/cbo9780511575068.003", "10.1017/cjn.2020.175", "10.1017/erm.2016.17", "10.1017/erm.2021.2", "10.1017/erm.2021.27", "10.1017/ice.2015.143", "10.1017/jfm.2012.122", "10.1017/jfm.2016.175", "10.1017/jfm.2016.35", "10.1017/jpa.2016.12", "10.1017/psrm.2018.10", "10.1017/qrd.2022.14", "10.1017/qrd.2024.2", "10.1017/s0016672399003833", "10.1017/s0022112003006529", "10.1017/s002211200600379x", "10.1017/s0022112098004066", "10.1017/s0025727300001174", "10.1017/s0031182000047478", "10.1017/s0031182000061199", "10.1017/s0031182003003299", "10.1017/s0031182003004013", "10.1017/s0031182004006213", "10.1017/s0031182007000054", "10.1017/s0031182007000066", "10.1017/s003118200800543x", "10.1017/s0031182099006265", "10.1017/s0031182099006691", "10.1017/s0033291708004546", "10.1017/s0033291720000434", "10.1017/s0033583500003504", "10.1017/s0033583510000119", "10.1017/s0033583519000131", "10.1017/s0890037x00043906", "10.1017/s0953756205003370", "10.1017/s0954422414000018", "10.1017/s0954579403000464", "10.1017/s0954579418000500", "10.1017/s096702620200389x", "10.1017/s0967199400001015", "10.1017/s0967199418000084", "10.1017/s135583820101442x", "10.1017/s1740925x10000220", "10.1017/s1742758400018798", "10.1017/s1751731117002671", "10.1021/ac026117i", "10.1021/ac102126s", "10.1021/ac102655f", "10.1021/ac400228q", "10.1021/ac60139a005", "10.1021/acs.accounts.3c00390", "10.1021/acs.accounts.7b00617", "10.1021/acs.accounts.8b00036", "10.1021/acs.accounts.8b00674", "10.1021/acs.analchem.0c00807", "10.1021/acs.analchem.0c02677", "10.1021/acs.analchem.0c03675", "10.1021/acs.analchem.0c04339", "10.1021/acs.analchem.5b03709", "10.1021/acs.analchem.8b01968", "10.1021/acs.biochem.0c00714", "10.1021/acs.biochem.1c00139", "10.1021/acs.biochem.1c00356", "10.1021/acs.biochem.3c00291", "10.1021/acs.biochem.3c00306", "10.1021/acs.biochem.3c00327", "10.1021/acs.biochem.3c00707", "10.1021/acs.biochem.5b00199", "10.1021/acs.biochem.5b00298", "10.1021/acs.biochem.5b00495", "10.1021/acs.biochem.5b00514", "10.1021/acs.biochem.5b00633", "10.1021/acs.biochem.5b00965", "10.1021/acs.biochem.5b01121", "10.1021/acs.biochem.5b01282", "10.1021/acs.biochem.6b00349", "10.1021/acs.biochem.6b00444", "10.1021/acs.biochem.6b00460", "10.1021/acs.biochem.6b00723", "10.1021/acs.biochem.6b01251", "10.1021/acs.biochem.7b00591", "10.1021/acs.biochem.7b00614", "10.1021/acs.biochem.7b00957", "10.1021/acs.biochem.7b00974", "10.1021/acs.biochem.8b00015", "10.1021/acs.biochem.8b00022", "10.1021/acs.biochem.8b00333", "10.1021/acs.biochem.8b00763", "10.1021/acs.biochem.8b00995", "10.1021/acs.biochem.9b00341", "10.1021/acs.biochem.9b00746", "10.1021/acs.bioconjchem.5b00603", "10.1021/acs.bioconjchem.8b00320", "10.1021/acs.bioconjchem.9b00133", "10.1021/acs.biomac.0c00045", "10.1021/acs.biomac.5b00226", "10.1021/acs.biomac.7b00324", "10.1021/acs.cgd.0c00188", "10.1021/acs.cgd.7b00673", "10.1021/acs.chemmater.8b01799", "10.1021/acs.chemrestox.0c00243", "10.1021/acs.chemrev.0c00199", "10.1021/acs.chemrev.1c00021", "10.1021/acs.chemrev.1c00121", "10.1021/acs.chemrev.1c00308", "10.1021/acs.chemrev.1c00757", "10.1021/acs.chemrev.5b00562", "10.1021/acs.chemrev.6b00638", "10.1021/acs.chemrev.6b00690", "10.1021/acs.chemrev.7b00120", "10.1021/acs.chemrev.7b00122", "10.1021/acs.chemrev.8b00460", "10.1021/acs.chemrev.8b00623", "10.1021/acs.chemrev.8b00760", "10.1021/acs.chemrev.9b00153", "10.1021/acs.chemrev.9b00416", "10.1021/acs.chemrev.9b00437", "10.1021/acs.est.5b02902", "10.1021/acs.est.5b03522", "10.1021/acs.est.7b04483", "10.1021/acs.iecr.0c04957", "10.1021/acs.inorgchem.3c00926", "10.1021/acs.jafc.5b05119", "10.1021/acs.jafc.9b02132", "10.1021/acs.jcim.0c00589", "10.1021/acs.jcim.0c00762", "10.1021/acs.jcim.0c00765", "10.1021/acs.jcim.0c01175", "10.1021/acs.jcim.0c01470", "10.1021/acs.jcim.1c00355", "10.1021/acs.jcim.1c00695", "10.1021/acs.jcim.1c00766", "10.1021/acs.jcim.2c00124", "10.1021/acs.jcim.7b00125", "10.1021/acs.jcim.7b00455", "10.1021/acs.jctc.1c00372", "10.1021/acs.jctc.1c00552", "10.1021/acs.jctc.2c00401", "10.1021/acs.jctc.2c00928", "10.1021/acs.jctc.5b00255", "10.1021/acs.jctc.6b00001", "10.1021/acs.jctc.6b00367", "10.1021/acs.jctc.8b00225", "10.1021/acs.jctc.8b01022", "10.1021/acs.jctc.9b00251", "10.1021/acs.jctc.9b00499", "10.1021/acs.jctc.9b00721", "10.1021/acs.jctc.9b01167", "10.1021/acs.jctc.9b01208", "10.1021/acs.jmedchem.0c00403", "10.1021/acs.jmedchem.0c02188", "10.1021/acs.jmedchem.1c00095", "10.1021/acs.jmedchem.1c01334", "10.1021/acs.jmedchem.5b00215", "10.1021/acs.jmedchem.6b00399", "10.1021/acs.jmedchem.6b01453", "10.1021/acs.jmedchem.8b00170", "10.1021/acs.jmedchem.8b00875", "10.1021/acs.jmedchem.9b00101", "10.1021/acs.jmedchem.9b00795", "10.1021/acs.jmedchem.9b00860", "10.1021/acs.jmedchem.9b00993", "10.1021/acs.jmedchem.9b01617", "10.1021/acs.jmedchem.9b01856", "10.1021/acs.jmedchem.9b02123", "10.1021/acs.jpca.0c00846", "10.1021/acs.jpcb.0c00097", "10.1021/acs.jpcb.0c04553", "10.1021/acs.jpcb.0c10637", "10.1021/acs.jpcb.1c00395", "10.1021/acs.jpcb.2c01956", "10.1021/acs.jpcb.5b11110", "10.1021/acs.jpcb.6b09815", "10.1021/acs.jpcb.7b00325", "10.1021/acs.jpcb.7b07158", "10.1021/acs.jpcb.9b02102", "10.1021/acs.jpcb.9b04867", "10.1021/acs.jpcc.1c05024", "10.1021/acs.jpclett.1c00077", "10.1021/acs.jpclett.1c01415", "10.1021/acs.jpclett.8b01090", "10.1021/acs.jpclett.9b03486", "10.1021/acs.jproteome.0c00008", "10.1021/acs.jproteome.0c00043", "10.1021/acs.jproteome.5b00191", "10.1021/acs.jproteome.5b00480", "10.1021/acs.jproteome.5b01149", "10.1021/acs.jproteome.7b00625", "10.1021/acs.jproteome.8b00126", "10.1021/acs.jproteome.8b00796", "10.1021/acs.langmuir.0c02980", "10.1021/acs.langmuir.9b01199", "10.1021/acs.molpharmaceut.1c00681", "10.1021/acs.molpharmaceut.6b00102", "10.1021/acs.molpharmaceut.6b00995", "10.1021/acs.molpharmaceut.8b00407", "10.1021/acs.molpharmaceut.9b00430", "10.1021/acs.nanolett.0c04687", "10.1021/acs.nanolett.9b02182", "10.1021/acsabm.0c00857", "10.1021/acsabm.9b00425", "10.1021/acsami.0c03897", "10.1021/acsami.5b11949", "10.1021/acsami.7b03883", "10.1021/acsami.7b08368", "10.1021/acsami.8b02907", "10.1021/acsami.8b14441", "10.1021/acsami.8b22262", "10.1021/acsami.9b17322", "10.1021/acsapm.0c01281", "10.1021/acsbiomaterials.7b00374", "10.1021/acsbiomaterials.8b01390", "10.1021/acsbiomaterials.9b00126", "10.1021/acsbiomaterials.9b00729", "10.1021/acsbiomaterials.9b01716", "10.1021/acscatal.0c02189", "10.1021/acscatal.8b04846", "10.1021/acscatal.9b04746", "10.1021/acscentsci.0c00514", "10.1021/acscentsci.0c01056", "10.1021/acscentsci.1c00525", "10.1021/acscentsci.6b00205", "10.1021/acscentsci.7b00432", "10.1021/acscentsci.7b00572", "10.1021/acscentsci.7b00593", "10.1021/acschembio.0c00880", "10.1021/acschembio.2c00411", "10.1021/acschembio.3c00138", "10.1021/acschembio.5b00216", "10.1021/acschembio.5b00245", "10.1021/acschembio.5b00711", "10.1021/acschembio.5b00996", "10.1021/acschembio.6b00148", "10.1021/acschembio.6b01144", "10.1021/acschembio.7b00855", "10.1021/acschembio.8b00021", "10.1021/acschembio.8b00714", "10.1021/acschembio.9b00092", "10.1021/acschembio.9b00348", "10.1021/acschemneuro.0c00674", "10.1021/acschemneuro.5b00023", "10.1021/acschemneuro.7b00495", "10.1021/acsinfecdis.1c00433", "10.1021/acsinfecdis.9b00093", "10.1021/acsinfecdis.9b00302", "10.1021/acsmacrolett.0c00885", "10.1021/acsmaterialslett.1c00242", "10.1021/acsmedchemlett.1c00396", "10.1021/acsnano.5b02796", "10.1021/acsnano.7b02826", "10.1021/acsnano.8b05893", "10.1021/acsnano.8b06437", "10.1021/acsnano.9b08354", "10.1021/acsnano.9b10037", "10.1021/acsomega.0c05318", "10.1021/acsomega.8b00721", "10.1021/acsomega.8b03258", "10.1021/acsomega.9b00540", "10.1021/acsomega.9b02636", "10.1021/acsptsci.0c00002", "10.1021/acssensors.9b00678", "10.1021/acssuschemeng.0c06865", "10.1021/acssynbio.0c00298", "10.1021/acssynbio.0c00444", "10.1021/acssynbio.0c00576", "10.1021/acssynbio.8b00036", "10.1021/acssynbio.9b00392", "10.1021/am2017199", "10.1021/ar0401451", "10.1021/ar50146a001", "10.1021/bi00042a010", "10.1021/bi000854w", "10.1021/bi00088a030", "10.1021/bi00373a017", "10.1021/bi00494a013", "10.1021/bi00529a028", "10.1021/bi00588a033", "10.1021/bi00600a028", "10.1021/bi012131y", "10.1021/bi015986j", "10.1021/bi020351l", "10.1021/bi0345079", "10.1021/bi034806y", "10.1021/bi0353629", "10.1021/bi0356395", "10.1021/bi047326v", "10.1021/bi047352t", "10.1021/bi047644u", "10.1021/bi0476634", "10.1021/bi050529e", "10.1021/bi060253q", "10.1021/bi060512b", "10.1021/bi060797s", "10.1021/bi0610956", "10.1021/bi061356b", "10.1021/bi100199q", "10.1021/bi100252s", "10.1021/bi1008672", "10.1021/bi101005r", "10.1021/bi101098f", "10.1021/bi101512j", "10.1021/bi101788n", "10.1021/bi200483k", "10.1021/bi300212a", "10.1021/bi3002693", "10.1021/bi300703x", "10.1021/bi301151y", "10.1021/bi301572z", "10.1021/bi400068g", "10.1021/bi400197u", "10.1021/bi4005649", "10.1021/bi400750a", "10.1021/bi400838t", "10.1021/bi401300y", "10.1021/bi500037a", "10.1021/bi500676p", "10.1021/bi501140k", "10.1021/bi501509z", "10.1021/bi6024534", "10.1021/bi7008568", "10.1021/bi701096s", "10.1021/bi701630s", "10.1021/bi800677k", "10.1021/bi801027k", "10.1021/bi802142q", "10.1021/bi900020n", "10.1021/bi900071b", "10.1021/bi9007534", "10.1021/bi902153g", "10.1021/bm400410e", "10.1021/bm501285t", "10.1021/cb100321m", "10.1021/cb200107y", "10.1021/cb200198c", "10.1021/cb400952v", "10.1021/cg300374w", "10.1021/ci100214a", "10.1021/ci200227u", "10.1021/ci300064d", "10.1021/ci4003156", "10.1021/ci500639g", "10.1021/ci800023x", "10.1021/ci9003706", "10.1021/cn100067e", "10.1021/cn500235m", "10.1021/cr000033x", "10.1021/cr0100188", "10.1021/cr0104375", "10.1021/cr0502504", "10.1021/cr4003769", "10.1021/cr400525m", "10.1021/cr400585q", "10.1021/cr8004857", "10.1021/cr900077w", "10.1021/cr900095e", "10.1021/ct200465z", "10.1021/ct3001377", "10.1021/ct3002046", "10.1021/ct3007265", "10.1021/ct4007162", "10.1021/ct600329w", "10.1021/ct700200b", "10.1021/es304502y", "10.1021/ic100001x", "10.1021/ja00434a030", "10.1021/ja00799a053", "10.1021/ja0167710", "10.1021/ja055433m", "10.1021/ja065860f", "10.1021/ja102933y", "10.1021/ja1109634", "10.1021/ja111318m", "10.1021/ja2052599", "10.1021/ja307907p", "10.1021/ja309680b", "10.1021/ja4066078", "10.1021/ja411633w", "10.1021/ja412084b", "10.1021/ja904179f", "10.1021/ja908418r", "10.1021/ja909817d", "10.1021/ja909973n", "10.1021/ja910850y", "10.1021/jacs.0c00269", "10.1021/jacs.0c07866", "10.1021/jacs.0c09029", "10.1021/jacs.1c03409", "10.1021/jacs.1c07965", "10.1021/jacs.2c00922", "10.1021/jacs.4c00458", "10.1021/jacs.5b03688", "10.1021/jacs.6b05129", "10.1021/jacs.7b08896", "10.1021/jacs.7b10702", "10.1021/jacs.7b11488", "10.1021/jacs.7b12984", "10.1021/jacs.8b06656", "10.1021/jacs.8b13178", "10.1021/jf200689r", "10.1021/jm000342f", "10.1021/jm00123a022", "10.1021/jm0302039", "10.1021/jm050136d", "10.1021/jm0505361", "10.1021/jm050540c", "10.1021/jm060717i", "10.1021/jm101356p", "10.1021/jm200650j", "10.1021/jm201461q", "10.1021/jm201722y", "10.1021/jm300087j", "10.1021/jm300396n", "10.1021/jm400380m", "10.1021/jm400422s", "10.1021/jm4011669", "10.1021/jm4017625", "10.1021/jm5004842", "10.1021/jm901647p", "10.1021/jo00103a010", "10.1021/jo00883a044", "10.1021/jo020249u", "10.1021/jo200150b", "10.1021/jo201716c", "10.1021/jp0370730", "10.1021/jp064832g", "10.1021/jp106469x", "10.1021/jp2085457", "10.1021/jp4123002", "10.1021/jp5026575", "10.1021/jp505643w", "10.1021/jp508427c", "10.1021/jp806285s", "10.1021/jp8102047", "10.1021/la00078a011", "10.1021/la400789k", "10.1021/ml400061x", "10.1021/ml5002486", "10.1021/mp5000828", "10.1021/mp5005492", "10.1021/nn2021088", "10.1021/nn405839n", "10.1021/nn500553z", "10.1021/nn504684k", "10.1021/nn507480v", "10.1021/op5000418", "10.1021/pr060393m", "10.1021/pr1005873", "10.1021/pr100680a", "10.1021/pr101299j", "10.1021/pr300702c", "10.1021/pr400603f", "10.1021/pr401191w", "10.1021/pr500193k", "10.1021/pr800422e", "10.1021/pr901116r", "10.1021/sb500255k", "10.1021/tx060127n", "10.1023/a:1006826725056", "10.1023/a:1007055525789", "10.1023/a:1007165403771", "10.1023/a:1007245728751", "10.1023/a:1009546811429", "10.1023/a:1011062223612", "10.1023/a:1015017710332", "10.1023/a:1018432807165", "10.1023/a:1020577510469", "10.1023/a:1021828421792", "10.1023/a:1025171803637", "10.1023/a:1025339125098", "10.1023/a:1025479701246", "10.1023/b:apin.0000043558.52701.b1", "10.1023/b:biry.0000046879.54211.ab", "10.1023/b:plan.0000038271.96019.aa", "10.1023/b:pres.0000030657.88242.e1", "10.1037/a0028797", "10.1037/bul0000096", "10.1037/dec0000075", "10.1037/xge0000465", "10.1038/12703", "10.1038/13810", "10.1038/14819", "10.1038/16729", "10.1038/1841523a0", "10.1038/1921227a0", "10.1038/2141098a0", "10.1038/227680a0", "10.1038/22780", "10.1038/255028a0", "10.1038/25870", "10.1038/283026a0", "10.1038/28425", "10.1038/290457a0", "10.1038/3059", "10.1038/310249a0", "10.1038/31269", "10.1038/312716a0", "10.1038/3305", "10.1038/343757a0", "10.1038/34465", "10.1038/346847a0", "10.1038/35000501", "10.1038/35006062", "10.1038/35016083", "10.1038/35025220", "10.1038/35030006", "10.1038/35030019", "10.1038/35052548", "10.1038/35054069", "10.1038/35055582", "10.1038/35057149", "10.1038/35081558", "10.1038/35083016", "10.1038/35085597", "10.1038/35086553", "10.1038/35099076", "10.1038/36579", "10.1038/367425a0", "10.1038/372190a0", "10.1038/373081a0", "10.1038/378736a0", "10.1038/380627a0", "10.1038/384634a0", "10.1038/415092a", "10.1038/4151030a", "10.1038/42166", "10.1038/43206", "10.1038/44385", "10.1038/5007", "10.1038/550451a", "10.1038/561", "10.1038/6368", "10.1038/73119", "10.1038/74680", "10.1038/75556", "10.1038/77498", "10.1038/78078", "10.1038/80384", "10.1038/83751", "10.1038/84792", "10.1038/953", "10.1038/ajg.2011.24", "10.1038/am.2017.241", "10.1038/aps.2009.143", "10.1038/aps.2009.205", "10.1038/aps.2017.124", "10.1038/aps.2017.198", "10.1038/bjc.2014.336", "10.1038/bjc.2015.410", "10.1038/boneres.2017.19", "10.1038/cdd.2008.124", "10.1038/cdd.2009.11", "10.1038/cdd.2010.116", "10.1038/cdd.2013.68", "10.1038/cdd.2013.86", "10.1038/cdd.2014.138", "10.1038/cdd.2014.150", "10.1038/cdd.2014.212", "10.1038/cdd.2014.97", "10.1038/cdd.2015.48", "10.1038/cdd.2017.139", "10.1038/cdd.2017.174", "10.1038/cddis.2012.16", "10.1038/cddis.2016.451", "10.1038/cddiscovery.2017.18", "10.1038/celldisc.2016.10", "10.1038/celldisc.2017.3", "10.1038/cmi.2009.53", "10.1038/cmi.2013.26", "10.1038/cmi.2017.117", "10.1038/cmi.2017.129", "10.1038/cr.2007.102", "10.1038/cr.2007.115", "10.1038/cr.2008.291", "10.1038/cr.2009.56", "10.1038/cr.2010.52", "10.1038/cr.2011.146", "10.1038/cr.2012.15", "10.1038/cr.2014.63", "10.1038/cr.2015.113", "10.1038/cr.2015.139", "10.1038/cr.2015.140", "10.1038/cr.2015.146", "10.1038/cr.2016.38", "10.1038/cr.2016.86", "10.1038/cr.2016.88", "10.1038/cr.2017.82", "10.1038/d41573-021-00052-4", "10.1038/d41586-023-00596-y", "10.1038/ejhg.2011.220", "10.1038/emboj.2008.117", "10.1038/emboj.2008.126", "10.1038/emboj.2008.143", "10.1038/emboj.2008.236", "10.1038/emboj.2010.106", "10.1038/emboj.2010.23", "10.1038/emboj.2011.228", "10.1038/emboj.2011.308", "10.1038/emboj.2011.317", "10.1038/emboj.2011.442", "10.1038/emboj.2011.69", "10.1038/emboj.2012.220", "10.1038/emboj.2012.46", "10.1038/emboj.2013.121", "10.1038/embor.2008.3", "10.1038/embor.2011.9", "10.1038/embor.2012.52", "10.1038/embor.2012.61", "10.1038/embor.2012.82", "10.1038/emm.2006.17", "10.1038/emm.2007.49", "10.1038/emm.2015.93", "10.1038/gt.2008.84", "10.1038/gt.2011.104", "10.1038/gt.2015.2", "10.1038/icb.2008.46", "10.1038/icb.2008.84", "10.1038/icb.2009.101", "10.1038/icb.2010.13", "10.1038/icb.2016.65", "10.1038/ismej.2013.175", "10.1038/ismej.2015.203", "10.1038/ismej.2015.234", "10.1038/ismej.2015.247", "10.1038/ismej.2015.264", "10.1038/jcbfm.2015.116", "10.1038/jid.2009.247", "10.1038/jid.2009.383", "10.1038/jid.2011.256", "10.1038/jid.2012.230", "10.1038/jid.2012.331", "10.1038/jid.2013.25", "10.1038/jid.2013.291", "10.1038/jid.2013.334", "10.1038/jid.2013.339", "10.1038/jid.2014.261", "10.1038/jid.2014.290", "10.1038/jid.2014.309", "10.1038/jid.2015.248", "10.1038/ki.2008.354", "10.1038/ki.2011.80", "10.1038/labinvest.3700656", "10.1038/leu.2009.161", "10.1038/leu.2011.309", "10.1038/leu.2013.274", "10.1038/leu.2016.180", "10.1038/leu.2016.20", "10.1038/leu.2016.285", "10.1038/leu.2017.193", "10.1038/leu.2017.70", "10.1038/mi.2008.81", "10.1038/mi.2011.3", "10.1038/mi.2013.12", "10.1038/mi.2015.123", "10.1038/mi.2015.74", "10.1038/mi.2016.39", "10.1038/mi.2016.57", "10.1038/mi.2016.70", "10.1038/mp.2012.128", "10.1038/mp.2013.4", "10.1038/mp.2013.45", "10.1038/mp.2013.8", "10.1038/mp.2016.95", "10.1038/mp.2017.213", "10.1038/msb.2010.27", "10.1038/msb.2010.47", "10.1038/msb.2010.98", "10.1038/msb.2011.32", "10.1038/msb.2011.75", "10.1038/msb.2013.31", "10.1038/mt.2010.167", "10.1038/mt.2012.65", "10.1038/mt.2013.194", "10.1038/mt.2014.195", "10.1038/mt.2014.86", "10.1038/mt.2015.11", "10.1038/mt.2015.175", "10.1038/mt.2015.220", "10.1038/mt.2015.60", "10.1038/mt.2015.66", "10.1038/mtna.2015.24", "10.1038/mtna.2015.42", "10.1038/nature00838", "10.1038/nature00922", "10.1038/nature01071", "10.1038/nature01107", "10.1038/nature01111", "10.1038/nature01451", "10.1038/nature01707", "10.1038/nature01813", "10.1038/nature02026", "10.1038/nature02033", "10.1038/nature02046", "10.1038/nature02089", "10.1038/nature02263", "10.1038/nature02553", "10.1038/nature02915", "10.1038/nature02988", "10.1038/nature03238", "10.1038/nature03441", "10.1038/nature03890", "10.1038/nature03995", "10.1038/nature04001", "10.1038/nature04404", "10.1038/nature04478", "10.1038/nature04606", "10.1038/nature04766", "10.1038/nature04982", "10.1038/nature05096", "10.1038/nature05268", "10.1038/nature05295", "10.1038/nature05453", "10.1038/nature05458", "10.1038/nature05512", "10.1038/nature05573", "10.1038/nature05746", "10.1038/nature05766", "10.1038/nature05769", "10.1038/nature05816", "10.1038/nature05853", "10.1038/nature05894", "10.1038/nature05918", "10.1038/nature05972", "10.1038/nature05977", "10.1038/nature05981", "10.1038/nature06084", "10.1038/nature06161", "10.1038/nature06293", "10.1038/nature06337", "10.1038/nature06357", "10.1038/nature06403", "10.1038/nature06496", "10.1038/nature06562", "10.1038/nature06862", "10.1038/nature06954", "10.1038/nature07039", "10.1038/nature07200", "10.1038/nature07215", "10.1038/nature07312", "10.1038/nature07345", "10.1038/nature07526", "10.1038/nature07726", "10.1038/nature07730", "10.1038/nature07829", "10.1038/nature07924", "10.1038/nature07943", "10.1038/nature07968", "10.1038/nature07991", "10.1038/nature08002", "10.1038/nature08212", "10.1038/nature08368", "10.1038/nature08451", "10.1038/nature08479", "10.1038/nature08638", "10.1038/nature08674", "10.1038/nature08802", "10.1038/nature08858", "10.1038/nature09018", "10.1038/nature09032", "10.1038/nature09201", "10.1038/nature09269", "10.1038/nature09296", "10.1038/nature09303", "10.1038/nature09409", "10.1038/nature09486", "10.1038/nature09490", "10.1038/nature09671", "10.1038/nature09675", "10.1038/nature09692", "10.1038/nature09817", "10.1038/nature09820", "10.1038/nature09990", "10.1038/nature10006", "10.1038/nature10098", "10.1038/nature10136", "10.1038/nature10362", "10.1038/nature10413", "10.1038/nature10448", "10.1038/nature10492", "10.1038/nature10532", "10.1038/nature10547", "10.1038/nature10690", "10.1038/nature10744", "10.1038/nature10774", "10.1038/nature10835", "10.1038/nature10851", "10.1038/nature10870", "10.1038/nature10887", "10.1038/nature10954", "10.1038/nature10975", "10.1038/nature11049", "10.1038/nature11082", "10.1038/nature11184", "10.1038/nature11213", "10.1038/nature11243", "10.1038/nature11247", "10.1038/nature11279", "10.1038/nature11329", "10.1038/nature11502", "10.1038/nature11514", "10.1038/nature11600", "10.1038/nature11632", "10.1038/nature11647", "10.1038/nature11800", "10.1038/nature11989", "10.1038/nature12034", "10.1038/nature12111", "10.1038/nature12210", "10.1038/nature12298", "10.1038/nature12311", "10.1038/nature12389", "10.1038/nature12420", "10.1038/nature12521", "10.1038/nature12577", "10.1038/nature12593", "10.1038/nature12634", "10.1038/nature12644", "10.1038/nature12716", "10.1038/nature12726", "10.1038/nature12753", "10.1038/nature12783", "10.1038/nature12787", "10.1038/nature12920", "10.1038/nature12932", "10.1038/nature12967", "10.1038/nature12978", "10.1038/nature13007", "10.1038/nature13068", "10.1038/nature13186", "10.1038/nature13279", "10.1038/nature13395", "10.1038/nature13417", "10.1038/nature13419", "10.1038/nature13420", "10.1038/nature13448", "10.1038/nature13471", "10.1038/nature13490", "10.1038/nature13575", "10.1038/nature13683", "10.1038/nature13760", "10.1038/nature13772", "10.1038/nature13802", "10.1038/nature13895", "10.1038/nature13907", "10.1038/nature13923", "10.1038/nature13986", "10.1038/nature13994", "10.1038/nature14052", "10.1038/nature14136", "10.1038/nature14216", "10.1038/nature14299", "10.1038/nature14426", "10.1038/nature14473", "10.1038/nature14486", "10.1038/nature14592", "10.1038/nature14908", "10.1038/nature14971", "10.1038/nature15251", "10.1038/nature15371", "10.1038/nature15514", "10.1038/nature15518", "10.1038/nature15541", "10.1038/nature15544", "10.1038/nature16140", "10.1038/nature16469", "10.1038/nature16490", "10.1038/nature16496", "10.1038/nature17408", "10.1038/nature17433", "10.1038/nature17644", "10.1038/nature17676", "10.1038/nature17946", "10.1038/nature17948", "10.1038/nature18303", "10.1038/nature18325", "10.1038/nature18590", "10.1038/nature18629", "10.1038/nature18912", "10.1038/nature19096", "10.1038/nature19800", "10.1038/nature19946", "10.1038/nature20098", "10.1038/nature20149", "10.1038/nature20557", "10.1038/nature20592", "10.1038/nature21065", "10.1038/nature21380", "10.1038/nature21391", "10.1038/nature21683", "10.1038/nature21703", "10.1038/nature21726", "10.1038/nature21727", "10.1038/nature22312", "10.1038/nature22341", "10.1038/nature22369", "10.1038/nature22395", "10.1038/nature22396", "10.1038/nature22821", "10.1038/nature24041", "10.1038/nature24286", "10.1038/nature24482", "10.1038/nature24644", "10.1038/nature25022", "10.1038/nature25158", "10.1038/nature25177", "10.1038/nature25447", "10.1038/nature25500", "10.1038/nature25755", "10.1038/nature25975", "10.1038/nature26159", "10.1038/nbt.1503", "10.1038/nbt.1529", "10.1038/nbt.1616", "10.1038/nbt.1628", "10.1038/nbt.1754", "10.1038/nbt.1861", "10.1038/nbt.1948", "10.1038/nbt.2051", "10.1038/nbt.2137", "10.1038/nbt.2450", "10.1038/nbt.2486", "10.1038/nbt.2514", "10.1038/nbt.2675", "10.1038/nbt.2842", "10.1038/nbt.2859", "10.1038/nbt.2906", "10.1038/nbt.3026", "10.1038/nbt.3101", "10.1038/nbt.3128", "10.1038/nbt.3178", "10.1038/nbt.3198", "10.1038/nbt.3199", "10.1038/nbt.3269", "10.1038/nbt.3290", "10.1038/nbt.3404", "10.1038/nbt.3437", "10.1038/nbt.3481", "10.1038/nbt.3519", "10.1038/nbt.3637", "10.1038/nbt.3739", "10.1038/nbt.3754", "10.1038/nbt.3777", "10.1038/nbt.3803", "10.1038/nbt.3816", "10.1038/nbt.3853", "10.1038/nbt.3893", "10.1038/nbt.3947", "10.1038/nbt.4096", "10.1038/nbt.4102", "10.1038/nbt.4163", "10.1038/nbt.4238", "10.1038/nbt.4279", "10.1038/nbt.4283", "10.1038/nbt.4285", "10.1038/nbt.4314", "10.1038/nbt0518-378", "10.1038/nbt0918-899d", "10.1038/nbt1003-1131a", "10.1038/nbt1055", "10.1038/nbt1101-1042", "10.1038/nbt1201-1134", "10.1038/nbt1285", "10.1038/nbt1408", "10.1038/nbt827", "10.1038/ncb0502-e113", "10.1038/ncb1110", "10.1038/ncb1353", "10.1038/ncb1543", "10.1038/ncb1567", "10.1038/ncb1725", "10.1038/ncb1787", "10.1038/ncb1872", "10.1038/ncb1873", "10.1038/ncb2070", "10.1038/ncb2172", "10.1038/ncb2574", "10.1038/ncb2963", "10.1038/ncb2965", "10.1038/ncb3090", "10.1038/ncb3184", "10.1038/ncb3535", "10.1038/ncb3643", "10.1038/ncb852", "10.1038/ncb954", "10.1038/nchembio.130", "10.1038/nchembio.138", "10.1038/nchembio.1388", "10.1038/nchembio.1427", "10.1038/nchembio.1858", "10.1038/nchembio.1979", "10.1038/nchembio.232", "10.1038/nchembio.2337", "10.1038/nchembio.2397", "10.1038/nchembio.2568", "10.1038/nchembio.2569", "10.1038/nchembio.368", "10.1038/nchembio.521", "10.1038/nchembio.694", "10.1038/nchembio.999", "10.1038/nchembio844", "10.1038/ncomms10134", "10.1038/ncomms10239", "10.1038/ncomms11021", "10.1038/ncomms11165", "10.1038/ncomms11383", "10.1038/ncomms11390", "10.1038/ncomms1155", "10.1038/ncomms11605", "10.1038/ncomms11654", "10.1038/ncomms1189", "10.1038/ncomms11932", "10.1038/ncomms12150", "10.1038/ncomms12427", "10.1038/ncomms12463", "10.1038/ncomms12910", "10.1038/ncomms13905", "10.1038/ncomms14128", "10.1038/ncomms14432", "10.1038/ncomms14647", "10.1038/ncomms14742", "10.1038/ncomms14758", "10.1038/ncomms15067", "10.1038/ncomms15080", "10.1038/ncomms15269", "10.1038/ncomms15744", "10.1038/ncomms15983", "10.1038/ncomms1915", "10.1038/ncomms1948", "10.1038/ncomms2101", "10.1038/ncomms2249", "10.1038/ncomms3834", "10.1038/ncomms4195", "10.1038/ncomms4885", "10.1038/ncomms5486", "10.1038/ncomms5742", "10.1038/ncomms6352", "10.1038/ncomms6649", "10.1038/ncomms6846", "10.1038/ncomms7121", "10.1038/ncomms7156", "10.1038/ncomms7158", "10.1038/ncomms7292", "10.1038/ncomms7453", "10.1038/ncomms7613", "10.1038/ncomms7639", "10.1038/ncomms7800", "10.1038/ncomms7892", "10.1038/ncomms7905", "10.1038/ncomms7968", "10.1038/ncomms8305", "10.1038/ncomms8391", "10.1038/ncomms8690", "10.1038/ncomms8968", "10.1038/ncomms9575", "10.1038/newbio235006a0", "10.1038/ng.167", "10.1038/ng.2007.63", "10.1038/ng.2270", "10.1038/ng.2440", "10.1038/ng.2472", "10.1038/ng.264", "10.1038/ng.2871", "10.1038/ng.3009", "10.1038/ng.3142", "10.1038/ng.3178", "10.1038/ng.3258", "10.1038/ng.3358", "10.1038/ng.3371", "10.1038/ng.3393", "10.1038/ng.3415", "10.1038/ng.3539", "10.1038/ng.3548", "10.1038/ng.3646", "10.1038/ng.3671", "10.1038/ng.3769", "10.1038/ng.3793", "10.1038/ng.3839", "10.1038/ng.3858", "10.1038/ng.3884", "10.1038/ng.3935", "10.1038/ng.3963", "10.1038/ng.407", "10.1038/ng.520", "10.1038/ng.77", "10.1038/ng.806", "10.1038/ng.892", "10.1038/ng0598-32", "10.1038/ng0697-161", "10.1038/ng1096-146", "10.1038/ng1180", "10.1038/ng1447", "10.1038/ng1906", "10.1038/ng1966", "10.1038/ng724", "10.1038/ng929", "10.1038/ng959", "10.1038/ni.1621", "10.1038/ni.1671", "10.1038/ni.1674", "10.1038/ni.1678", "10.1038/ni.1819", "10.1038/ni.1866", "10.1038/ni.1877", "10.1038/ni.1920", "10.1038/ni.1990", "10.1038/ni.2047", "10.1038/ni.2080", "10.1038/ni.2081", "10.1038/ni.2131", "10.1038/ni.2137", "10.1038/ni.2230", "10.1038/ni.2419", "10.1038/ni.2477", "10.1038/ni.2744", "10.1038/ni.2745", "10.1038/ni.3054", "10.1038/ni.3096", "10.1038/ni.3123", "10.1038/ni.3201", "10.1038/ni.3202", "10.1038/ni.3299", "10.1038/ni.3320", "10.1038/ni.3460", "10.1038/ni.3540", "10.1038/ni.3589", "10.1038/ni.3710", "10.1038/ni.3766", "10.1038/ni.3771", "10.1038/ni.3775", "10.1038/ni.f.203", "10.1038/ni1002-903", "10.1038/ni1418", "10.1038/ni1439", "10.1038/ni1482", "10.1038/ni1513", "10.1038/ni1544", "10.1038/nm.1924", "10.1038/nm.1964", "10.1038/nm.2019", "10.1038/nm.2062", "10.1038/nm.2159", "10.1038/nm.2514", "10.1038/nm.2574", "10.1038/nm.2829", "10.1038/nm.3105", "10.1038/nm.3261", "10.1038/nm.3262", "10.1038/nm.3313", "10.1038/nm.3337", "10.1038/nm.3394", "10.1038/nm.3599", "10.1038/nm.3793", "10.1038/nm.3883", "10.1038/nm.3943", "10.1038/nm.4316", "10.1038/nm.4321", "10.1038/nm.4397", "10.1038/nm.4491", "10.1038/nm1451", "10.1038/nm747", "10.1038/nmat1668", "10.1038/nmat3517", "10.1038/nmat4444", "10.1038/nmat4868", "10.1038/nmat5020", "10.1038/nmat885", "10.1038/nmeth.1226", "10.1038/nmeth.1818", "10.1038/nmeth.1906", "10.1038/nmeth.1923", "10.1038/nmeth.2019", "10.1038/nmeth.2089", "10.1038/nmeth.2148", "10.1038/nmeth.2450", "10.1038/nmeth.2510", "10.1038/nmeth.2558", "10.1038/nmeth.2688", "10.1038/nmeth.3027", "10.1038/nmeth.3047", "10.1038/nmeth.3317", "10.1038/nmeth.3337", "10.1038/nmeth.3630", "10.1038/nmeth.3885", "10.1038/nmeth.4074", "10.1038/nmeth.4169", "10.1038/nmeth.4197", "10.1038/nmeth.4278", "10.1038/nmeth.4304", "10.1038/nmeth.4534", "10.1038/nmeth0109-3", "10.1038/nmeth865", "10.1038/nmeth947", "10.1038/nmicrobiol.2016.214", "10.1038/nmicrobiol.2017.7", "10.1038/nn.2123", "10.1038/nn.2148", "10.1038/nn.2359", "10.1038/nn.2473", "10.1038/nn.2538", "10.1038/nn.2574", "10.1038/nn.2580", "10.1038/nn.2623", "10.1038/nn.2764", "10.1038/nn.2856", "10.1038/nn.2882", "10.1038/nn.2956", "10.1038/nn.3032", "10.1038/nn.3041", "10.1038/nn.3088", "10.1038/nn.3218", "10.1038/nn.3287", "10.1038/nn.3318", "10.1038/nn.3320", "10.1038/nn.3414", "10.1038/nn.3641", "10.1038/nn.3917", "10.1038/nn.4043", "10.1038/nn.4126", "10.1038/nn.4131", "10.1038/nn.4185", "10.1038/nn.4195", "10.1038/nn.4216", "10.1038/nn.4218", "10.1038/nn.4222", "10.1038/nn.4337", "10.1038/nn.4382", "10.1038/nn.4417", "10.1038/nn.4531", "10.1038/nn.4587", "10.1038/nn.4621", "10.1038/nn1094", "10.1038/nn1106", "10.1038/nn1209", "10.1038/nn1473", "10.1038/nn1555", "10.1038/nn1656", "10.1038/nn1683", "10.1038/nn1724", "10.1038/npg.els.0005047", "10.1038/nphys1682", "10.1038/nphys3632", "10.1038/nplants.2016.139", "10.1038/nplants.2016.31", "10.1038/npp.2009.75", "10.1038/npp.2010.130", "10.1038/npp.2010.166", "10.1038/npp.2014.231", "10.1038/npp.2014.304", "10.1038/npp.2014.44", "10.1038/npp.2015.85", "10.1038/npp.2017.243", "10.1038/nprot.2007.13", "10.1038/nprot.2007.324", "10.1038/nprot.2008.16", "10.1038/nprot.2008.211", "10.1038/nprot.2009.9", "10.1038/nprot.2011.308", "10.1038/nprot.2012.016", "10.1038/nprot.2012.080", "10.1038/nprot.2012.086", "10.1038/nprot.2012.115", "10.1038/nprot.2013.068", "10.1038/nprot.2014.169", "10.1038/nprot.2015.105", "10.1038/nprot.2016.136", "10.1038/nrc.2017.104", "10.1038/nrc.2017.23", "10.1038/nrc.2017.53", "10.1038/nrc1015", "10.1038/nrc1072", "10.1038/nrc1256", "10.1038/nrc1951", "10.1038/nrc2560", "10.1038/nrc2602", "10.1038/nrc2607", "10.1038/nrc2763", "10.1038/nrc2960", "10.1038/nrc3245", "10.1038/nrc3409", "10.1038/nrc3410", "10.1038/nrc3496", "10.1038/nrc3793", "10.1038/nrc3860", "10.1038/nrc3876", "10.1038/nrc3982", "10.1038/nrclinonc.2015.209", "10.1038/nrd.2017.178", "10.1038/nrd.2017.22", "10.1038/nrd1087", "10.1038/nrd1251", "10.1038/nrd1983", "10.1038/nrd2115", "10.1038/nrd2850", "10.1038/nrd3794", "10.1038/nrd3802", "10.1038/nrd3955", "10.1038/nrd4337", "10.1038/nrd4608", "10.1038/nrd917", "10.1038/nrg.2016.112", "10.1038/nrg.2016.139", "10.1038/nrg.2016.4", "10.1038/nrg.2016.78", "10.1038/nrg.2016.83", "10.1038/nrg.2017.115", "10.1038/nrg.2017.57", "10.1038/nrg1181", "10.1038/nrg1268", "10.1038/nrg1315", "10.1038/nrg1347", "10.1038/nrg1379", "10.1038/nrg1503", "10.1038/nrg1606", "10.1038/nrg1615", "10.1038/nrg2111", "10.1038/nrg2126", "10.1038/nrg2165", "10.1038/nrg2165-c1", "10.1038/nrg2290", "10.1038/nrg2341", "10.1038/nrg2504", "10.1038/nrg2522", "10.1038/nrg2538", "10.1038/nrg2640", "10.1038/nrg2695", "10.1038/nrg2719", "10.1038/nrg2776", "10.1038/nrg2781", "10.1038/nrg2810", "10.1038/nrg2957", "10.1038/nrg3052", "10.1038/nrg3117", "10.1038/nrg3124", "10.1038/nrg3163", "10.1038/nrg3185", "10.1038/nrg3207", "10.1038/nrg3229", "10.1038/nrg3594", "10.1038/nrg3607", "10.1038/nrg3724", "10.1038/nrg3813", "10.1038/nrg3937", "10.1038/nrg3962", "10.1038/nrg793", "10.1038/nrg798", "10.1038/nri.2015.3", "10.1038/nri.2016.129", "10.1038/nri.2016.34", "10.1038/nri.2017.108", "10.1038/nri.2017.28", "10.1038/nri.2017.75", "10.1038/nri.2017.76", "10.1038/nri.2018.3", "10.1038/nri1148", "10.1038/nri1182", "10.1038/nri1412", "10.1038/nri1631", "10.1038/nri1670", "10.1038/nri1733", "10.1038/nri2056", "10.1038/nri2191", "10.1038/nri2448", "10.1038/nri2572", "10.1038/nri2586", "10.1038/nri2735", "10.1038/nri2998", "10.1038/nri3088", "10.1038/nri3095", "10.1038/nri3156", "10.1038/nri3175", "10.1038/nri3259", "10.1038/nri3737", "10.1038/nri3777", "10.1038/nri3823", "10.1038/nri3831", "10.1038/nri3901", "10.1038/nri854", "10.1038/nri855", "10.1038/nri978", "10.1038/nrm.2015.2", "10.1038/nrm.2015.4", "10.1038/nrm.2016.126", "10.1038/nrm.2016.132", "10.1038/nrm.2016.76", "10.1038/nrm.2016.87", "10.1038/nrm.2016.94", "10.1038/nrm.2017.10", "10.1038/nrm.2017.16", "10.1038/nrm.2017.87", "10.1038/nrm.2017.91", "10.1038/nrm1335", "10.1038/nrm1336", "10.1038/nrm1589", "10.1038/nrm1645", "10.1038/nrm1907", "10.1038/nrm1987", "10.1038/nrm2104", "10.1038/nrm2178", "10.1038/nrm2233", "10.1038/nrm2354", "10.1038/nrm2468", "10.1038/nrm2636", "10.1038/nrm2777", "10.1038/nrm2956", "10.1038/nrm3036", "10.1038/nrm3089", "10.1038/nrm3154", "10.1038/nrm3176", "10.1038/nrm3185", "10.1038/nrm3226", "10.1038/nrm3311", "10.1038/nrm3359", "10.1038/nrm3470", "10.1038/nrm3742", "10.1038/nrm3877", "10.1038/nrm3943", "10.1038/nrm3949", "10.1038/nrm4074", "10.1038/nrm908", "10.1038/nrmicro.2016.103", "10.1038/nrmicro.2016.131", "10.1038/nrmicro.2017.148", "10.1038/nrmicro.2017.157", "10.1038/nrmicro.2017.16", "10.1038/nrmicro1273", "10.1038/nrmicro1789", "10.1038/nrmicro1969", "10.1038/nrmicro2073", "10.1038/nrmicro2128", "10.1038/nrmicro2242", "10.1038/nrmicro3069", "10.1038/nrmicro3096", "10.1038/nrmicro3346", "10.1038/nrmicro3364", "10.1038/nrmicro3569", "10.1038/nrmicro954", "10.1038/nrn.2015.26", "10.1038/nrn.2016.68", "10.1038/nrn.2017.85", "10.1038/nrn1058", "10.1038/nrn2151", "10.1038/nrn2402", "10.1038/nrn2575", "10.1038/nrn2810", "10.1038/nrn2822", "10.1038/nrn2851", "10.1038/nrn2994", "10.1038/nrn3319", "10.1038/nrn3469", "10.1038/nrn3586", "10.1038/nrn3689", "10.1038/nrn3886", "10.1038/nrn4021", "10.1038/nrneurol.2014.187", "10.1038/nrneurol.2017.99", "10.1038/nrrheum.2010.102", "10.1038/nrrheum.2016.178", "10.1038/nrrheum.2016.91", "10.1038/nsb739", "10.1038/nsb808", "10.1038/nsmb.1408", "10.1038/nsmb.1414", "10.1038/nsmb.1502", "10.1038/nsmb.1547", "10.1038/nsmb.1615", "10.1038/nsmb.1720", "10.1038/nsmb.1847", "10.1038/nsmb.2185", "10.1038/nsmb.2331", "10.1038/nsmb.2379", "10.1038/nsmb.2414", "10.1038/nsmb.2419", "10.1038/nsmb.2616", "10.1038/nsmb.2660", "10.1038/nsmb.2669", "10.1038/nsmb.2771", "10.1038/nsmb.2784", "10.1038/nsmb.2813", "10.1038/nsmb.2939", "10.1038/nsmb.3075", "10.1038/nsmb.3140", "10.1038/nsmb.3195", "10.1038/nsmb.3402", "10.1038/nsmb.3464", "10.1038/nsmb814", "10.1038/onc.2008.33", "10.1038/onc.2009.441", "10.1038/onc.2010.189", "10.1038/onc.2010.371", "10.1038/onc.2010.421", "10.1038/onc.2010.492", "10.1038/onc.2011.350", "10.1038/onc.2011.425", "10.1038/onc.2011.494", "10.1038/onc.2011.91", "10.1038/onc.2012.8", "10.1038/onc.2013.107", "10.1038/onc.2013.360", "10.1038/onc.2013.477", "10.1038/onc.2013.565", "10.1038/onc.2014.162", "10.1038/onc.2014.201", "10.1038/onc.2015.147", "10.1038/onc.2016.309", "10.1038/onc.2016.55", "10.1038/onc.2017.1", "10.1038/onc.2017.189", "10.1038/onc.2017.404", "10.1038/onc.2017.90", "10.1038/s12276-018-0196-9", "10.1038/s12276-019-0237-z", "10.1038/s12276-019-0329-9", "10.1038/s12276-019-0371-7", "10.1038/s12276-020-0447-4", "10.1038/s12276-021-00692-x", "10.1038/s12276-022-00765-5", "10.1038/s12276-022-00821-0", "10.1038/s12276-022-00869-y", "10.1038/s12276-022-00912-y", "10.1038/s12276-023-01006-z", "10.1038/s12276-023-01094-x", "10.1038/s12276-024-01254-7", "10.1038/s41374-021-00642-1", "10.1038/s41375-020-01088-y", "10.1038/s41375-020-0755-7", "10.1038/s41375-021-01160-1", "10.1038/s41375-022-01708-9", "10.1038/s41375-024-02191-0", "10.1038/s41379-018-0130-7", "10.1038/s41379-019-0428-0", "10.1038/s41380-018-0260-9", "10.1038/s41380-019-0539-5", "10.1038/s41380-019-0604-0", "10.1038/s41380-022-01700-w", "10.1038/s41380-023-01962-y", "10.1038/s41380-023-02108-w", "10.1038/s41385-018-0072-x", "10.1038/s41385-018-0109-1", "10.1038/s41385-019-0227-4", "10.1038/s41385-020-00349-4", "10.1038/s41385-021-00385-8", "10.1038/s41386-018-0307-2", "10.1038/s41386-021-01101-7", "10.1038/s41386-021-01137-9", "10.1038/s41388-017-0121-z", "10.1038/s41388-018-0166-7", "10.1038/s41388-018-0261-9", "10.1038/s41388-018-0302-4", "10.1038/s41388-019-0782-x", "10.1038/s41388-019-0816-4", "10.1038/s41388-019-0888-1", "10.1038/s41388-019-0996-y", "10.1038/s41388-020-1183-x", "10.1038/s41388-020-1354-9", "10.1038/s41388-021-02026-7", "10.1038/s41388-021-02090-z", "10.1038/s41388-022-02423-6", "10.1038/s41388-022-02475-8", "10.1038/s41388-023-02866-5", "10.1038/s41389-022-00420-8", "10.1038/s41390-018-0214-6", "10.1038/s41390-019-0654-7", "10.1038/s41390-022-02239-w", "10.1038/s41392-019-0089-y", "10.1038/s41392-020-00222-7", "10.1038/s41392-020-00312-6", "10.1038/s41392-020-00315-3", "10.1038/s41392-020-00449-4", "10.1038/s41392-021-00484-9", "10.1038/s41392-021-00485-8", "10.1038/s41392-021-00623-2", "10.1038/s41392-021-00632-1", "10.1038/s41392-021-00653-w", "10.1038/s41392-021-00728-8", "10.1038/s41392-021-00738-6", "10.1038/s41392-021-00756-4", "10.1038/s41392-021-00780-4", "10.1038/s41392-021-00796-w", "10.1038/s41392-021-00810-1", "10.1038/s41392-021-00819-6", "10.1038/s41392-022-00912-4", "10.1038/s41392-022-00936-w", "10.1038/s41392-022-00962-8", "10.1038/s41392-022-01070-3", "10.1038/s41392-022-01114-8", "10.1038/s41392-022-01208-3", "10.1038/s41392-022-01234-1", "10.1038/s41392-023-01309-7", "10.1038/s41392-023-01439-y", "10.1038/s41392-023-01462-z", "10.1038/s41392-023-01463-y", "10.1038/s41392-023-01472-x", "10.1038/s41392-023-01501-9", "10.1038/s41392-023-01522-4", "10.1038/s41392-023-01553-x", "10.1038/s41392-024-01757-9", "10.1038/s41392-024-01771-x", "10.1038/s41392-024-01847-8", "10.1038/s41396-020-00756-2", "10.1038/s41396-020-00818-5", "10.1038/s41396-020-00885-8", "10.1038/s41396-020-0691-6", "10.1038/s41396-022-01235-6", "10.1038/s41396-023-01509-7", "10.1038/s41398-018-0317-1", "10.1038/s41398-019-0558-7", "10.1038/s41398-019-0660-x", "10.1038/s41398-020-00876-5", "10.1038/s41398-020-00907-1", "10.1038/s41398-020-00976-2", "10.1038/s41398-020-0845-3", "10.1038/s41398-021-01198-w", "10.1038/s41398-023-02335-3", "10.1038/s41398-023-02658-1", "10.1038/s41401-023-01194-4", "10.1038/s41408-021-00515-2", "10.1038/s41416-019-0620-5", "10.1038/s41416-020-01126-7", "10.1038/s41416-020-0955-y", "10.1038/s41416-021-01394-x", "10.1038/s41416-022-01875-7", "10.1038/s41416-022-02098-6", "10.1038/s41417-019-0152-4", "10.1038/s41417-021-00327-3", "10.1038/s41417-024-00778-4", "10.1038/s41418-017-0031-1", "10.1038/s41418-018-0058-y", "10.1038/s41418-018-0242-0", "10.1038/s41418-018-0270-9", "10.1038/s41418-019-0387-5", "10.1038/s41418-019-0411-9", "10.1038/s41418-020-00650-6", "10.1038/s41418-020-0553-9", "10.1038/s41418-021-00882-0", "10.1038/s41418-022-00942-z", "10.1038/s41418-023-01153-w", "10.1038/s41418-023-01167-4", "10.1038/s41418-023-01211-3", "10.1038/s41419-017-0223-0", "10.1038/s41419-018-0303-9", "10.1038/s41419-018-0548-3", "10.1038/s41419-018-0925-y", "10.1038/s41419-018-0927-9", "10.1038/s41419-018-1102-z", "10.1038/s41419-018-1264-8", "10.1038/s41419-019-2208-7", "10.1038/s41419-020-02795-1", "10.1038/s41419-020-02827-w", "10.1038/s41419-020-02911-1", "10.1038/s41419-020-2476-2", "10.1038/s41419-020-2584-z", "10.1038/s41419-021-03441-0", "10.1038/s41419-021-03664-1", "10.1038/s41419-021-04238-x", "10.1038/s41419-022-04509-1", "10.1038/s41419-022-04535-z", "10.1038/s41419-022-04830-9", "10.1038/s41419-022-04864-z", "10.1038/s41419-022-04983-7", "10.1038/s41419-022-05153-5", "10.1038/s41419-022-05155-3", "10.1038/s41419-022-05389-1", "10.1038/s41419-023-05753-9", "10.1038/s41419-023-06122-2", "10.1038/s41419-023-06191-3", "10.1038/s41419-023-06217-w", "10.1038/s41419-023-06225-w", "10.1038/s41420-020-00349-0", "10.1038/s41420-021-00550-9", "10.1038/s41420-022-00929-2", "10.1038/s41420-022-01101-6", "10.1038/s41420-023-01359-4", "10.1038/s41420-023-01575-y", "10.1038/s41421-020-00186-6", "10.1038/s41421-020-0157-z", "10.1038/s41421-020-0165-z", "10.1038/s41421-021-00297-8", "10.1038/s41421-021-00301-1", "10.1038/s41421-021-00302-0", "10.1038/s41421-022-00426-x", "10.1038/s41421-022-00494-z", "10.1038/s41421-022-00503-1", "10.1038/s41421-024-00699-4", "10.1038/s41422-018-0078-7", "10.1038/s41422-020-00402-8", "10.1038/s41422-020-00451-z", "10.1038/s41422-020-0349-y", "10.1038/s41422-020-0374-x", "10.1038/s41422-022-00638-6", "10.1038/s41422-023-00848-6", "10.1038/s41422-024-00973-w", "10.1038/s41422-024-00988-3", "10.1038/s41423-019-0298-x", "10.1038/s41423-019-0327-9", "10.1038/s41423-020-00549-9", "10.1038/s41423-020-00558-8", "10.1038/s41423-020-0502-z", "10.1038/s41423-021-00752-2", "10.1038/s41423-023-00984-4", "10.1038/s41426-018-0042-0", "10.1038/s41427-021-00304-0", "10.1038/s41431-018-0130-6", "10.1038/s41431-019-0457-7", "10.1038/s41435-019-0069-9", "10.1038/s41435-021-00133-9", "10.1038/s41437-021-00410-3", "10.1038/s41437-023-00639-0", "10.1038/s41438-020-0248-x/6445440", "10.1038/s41438-021-00665-1/6446757", "10.1038/s41467-017-00102-9", "10.1038/s41467-017-00128-z", "10.1038/s41467-017-00143-0", "10.1038/s41467-017-00324-x", "10.1038/s41467-017-00647-9", "10.1038/s41467-017-00700-7", "10.1038/s41467-017-00769-0", "10.1038/s41467-017-00843-7", "10.1038/s41467-017-00859-z", "10.1038/s41467-017-00993-8", "10.1038/s41467-017-01049-7", "10.1038/s41467-017-01055-9", "10.1038/s41467-017-01164-5", "10.1038/s41467-017-01427-1", "10.1038/s41467-017-02111-0", "10.1038/s41467-017-02622-w", "10.1038/s41467-018-03050-0", "10.1038/s41467-018-03131-0", "10.1038/s41467-018-03205-z", "10.1038/s41467-018-03245-5", "10.1038/s41467-018-03347-0", "10.1038/s41467-018-03369-8", "10.1038/s41467-018-03371-0", "10.1038/s41467-018-03411-9", "10.1038/s41467-018-03554-9", "10.1038/s41467-018-03803-x", "10.1038/s41467-018-04041-x", "10.1038/s41467-018-04155-2", "10.1038/s41467-018-04522-z", "10.1038/s41467-018-04929-8", "10.1038/s41467-018-05012-y", "10.1038/s41467-018-05050-6", "10.1038/s41467-018-05072-0", "10.1038/s41467-018-05196-3", "10.1038/s41467-018-05370-7", "10.1038/s41467-018-05487-9", "10.1038/s41467-018-05644-0", "10.1038/s41467-018-05780-7", "10.1038/s41467-018-05807-z", "10.1038/s41467-018-05929-4", "10.1038/s41467-018-06027-1", "10.1038/s41467-018-06318-7", "10.1038/s41467-018-06391-y", "10.1038/s41467-018-06407-7", "10.1038/s41467-018-06448-y", "10.1038/s41467-018-06451-3", "10.1038/s41467-018-07053-9", "10.1038/s41467-018-07063-7", "10.1038/s41467-018-07142-9", "10.1038/s41467-018-07358-9", "10.1038/s41467-018-07478-2", "10.1038/s41467-018-07582-3", "10.1038/s41467-018-07641-9", "10.1038/s41467-018-07702-z", "10.1038/s41467-018-08247-x", "10.1038/s41467-019-08630-2", "10.1038/s41467-019-08705-0", "10.1038/s41467-019-08801-1", "10.1038/s41467-019-08888-6", "10.1038/s41467-019-08892-w", "10.1038/s41467-019-09086-0", "10.1038/s41467-019-09153-6", "10.1038/s41467-019-09482-6", "10.1038/s41467-019-09518-x", "10.1038/s41467-019-09525-y", "10.1038/s41467-019-09551-w", "10.1038/s41467-019-09567-2", "10.1038/s41467-019-09651-7", "10.1038/s41467-019-09741-6", "10.1038/s41467-019-09970-9", "10.1038/s41467-019-09987-0", "10.1038/s41467-019-10172-6", "10.1038/s41467-019-10568-4", "10.1038/s41467-019-10677-0", "10.1038/s41467-019-10725-9", "10.1038/s41467-019-10765-1", "10.1038/s41467-019-10781-1", "10.1038/s41467-019-11242-5", "10.1038/s41467-019-11668-x", "10.1038/s41467-019-11782-w", "10.1038/s41467-019-11977-1", "10.1038/s41467-019-12166-w", "10.1038/s41467-019-12384-2", "10.1038/s41467-019-12812-3", "10.1038/s41467-019-12856-5", "10.1038/s41467-019-12901-3", "10.1038/s41467-019-12971-3", "10.1038/s41467-019-13368-y", "10.1038/s41467-019-13404-x", "10.1038/s41467-019-13499-2", "10.1038/s41467-019-13809-8", "10.1038/s41467-019-13869-w", "10.1038/s41467-019-13906-8", "10.1038/s41467-019-13913-9", "10.1038/s41467-019-14065-6", "10.1038/s41467-019-14149-3", "10.1038/s41467-019-14198-8", "10.1038/s41467-020-14421-x", "10.1038/s41467-020-14443-5", "10.1038/s41467-020-14471-1", "10.1038/s41467-020-14500-z", "10.1038/s41467-020-14621-5", "10.1038/s41467-020-14685-3", "10.1038/s41467-020-14987-6", "10.1038/s41467-020-15221-z", "10.1038/s41467-020-15303-y", "10.1038/s41467-020-15409-3", "10.1038/s41467-020-15607-z", "10.1038/s41467-020-15650-w", "10.1038/s41467-020-15702-1", "10.1038/s41467-020-15733-8", "10.1038/s41467-020-16138-3", "10.1038/s41467-020-16243-3", "10.1038/s41467-020-16366-7", "10.1038/s41467-020-16542-9", "10.1038/s41467-020-16564-3", "10.1038/s41467-020-16602-0", "10.1038/s41467-020-16750-3", "10.1038/s41467-020-16890-6", "10.1038/s41467-020-17009-7", "10.1038/s41467-020-17022-w", "10.1038/s41467-020-17047-1", "10.1038/s41467-020-17093-9", "10.1038/s41467-020-17181-w", "10.1038/s41467-020-17202-8", "10.1038/s41467-020-17405-z", "10.1038/s41467-020-17408-w", "10.1038/s41467-020-17414-y", "10.1038/s41467-020-17504-x", "10.1038/s41467-020-17644-0", "10.1038/s41467-020-17735-y", "10.1038/s41467-020-17954-3", "10.1038/s41467-020-18174-5", "10.1038/s41467-020-18387-8", "10.1038/s41467-020-18415-7", "10.1038/s41467-020-18524-3", "10.1038/s41467-020-18565-8", "10.1038/s41467-020-18619-x", "10.1038/s41467-020-18693-1", "10.1038/s41467-020-18861-3", "10.1038/s41467-020-19011-5", "10.1038/s41467-020-19136-7", "10.1038/s41467-020-19167-0", "10.1038/s41467-020-19227-5", "10.1038/s41467-020-19457-7", "10.1038/s41467-020-19737-2", "10.1038/s41467-020-19877-5", "10.1038/s41467-020-19969-2", "10.1038/s41467-020-19983-4", "10.1038/s41467-020-19988-z", "10.1038/s41467-020-20136-w", "10.1038/s41467-020-20149-5", "10.1038/s41467-020-20158-4", "10.1038/s41467-020-20171-7", "10.1038/s41467-020-20225-w", "10.1038/s41467-020-20241-w", "10.1038/s41467-020-20282-1", "10.1038/s41467-020-20314-w", "10.1038/s41467-020-20810-z", "10.1038/s41467-021-20981-3", "10.1038/s41467-021-21039-0", "10.1038/s41467-021-21095-6", "10.1038/s41467-021-21210-7", "10.1038/s41467-021-21246-9", "10.1038/s41467-021-21314-0", "10.1038/s41467-021-21337-7", "10.1038/s41467-021-21344-8", "10.1038/s41467-021-21368-0", "10.1038/s41467-021-21383-1", "10.1038/s41467-021-21407-w", "10.1038/s41467-021-21511-x", "10.1038/s41467-021-21583-9", "10.1038/s41467-021-21661-y", "10.1038/s41467-021-21765-5", "10.1038/s41467-021-22033-2", "10.1038/s41467-021-22266-1", "10.1038/s41467-021-22276-z", "10.1038/s41467-021-22295-w", "10.1038/s41467-021-22301-1", "10.1038/s41467-021-22308-8", "10.1038/s41467-021-22393-9", "10.1038/s41467-021-23015-0", "10.1038/s41467-021-23303-9", "10.1038/s41467-021-23395-3", "10.1038/s41467-021-23579-x", "10.1038/s41467-021-23708-6", "10.1038/s41467-021-24010-1", "10.1038/s41467-021-24037-4", "10.1038/s41467-021-24341-z", "10.1038/s41467-021-24429-6", "10.1038/s41467-021-24436-7", "10.1038/s41467-021-24641-4", "10.1038/s41467-021-24905-z", "10.1038/s41467-021-24951-7", "10.1038/s41467-021-24963-3", "10.1038/s41467-021-24987-9", "10.1038/s41467-021-24997-7", "10.1038/s41467-021-25035-2", "10.1038/s41467-021-25062-z", "10.1038/s41467-021-25274-3", "10.1038/s41467-021-25418-5", "10.1038/s41467-021-25604-5", "10.1038/s41467-021-25777-z", "10.1038/s41467-021-25827-6", "10.1038/s41467-021-25928-2", "10.1038/s41467-021-26095-0", "10.1038/s41467-021-26098-x", "10.1038/s41467-021-26427-0", "10.1038/s41467-021-26431-4", "10.1038/s41467-021-26469-4", "10.1038/s41467-021-26574-4", "10.1038/s41467-021-26880-x", "10.1038/s41467-021-26952-y", "10.1038/s41467-021-27034-9", "10.1038/s41467-021-27204-9", "10.1038/s41467-021-27530-y", "10.1038/s41467-021-27610-z", "10.1038/s41467-021-27669-8", "10.1038/s41467-021-27692-9", "10.1038/s41467-021-27899-w", "10.1038/s41467-021-27944-8", "10.1038/s41467-022-28018-z", "10.1038/s41467-022-28035-y", "10.1038/s41467-022-28065-6", "10.1038/s41467-022-28244-5", "10.1038/s41467-022-28372-y", "10.1038/s41467-022-28442-1", "10.1038/s41467-022-28507-1", "10.1038/s41467-022-28746-2", "10.1038/s41467-022-28839-y", "10.1038/s41467-022-28841-4", "10.1038/s41467-022-28884-7", "10.1038/s41467-022-28983-5", "10.1038/s41467-022-29012-1", "10.1038/s41467-022-29065-2", "10.1038/s41467-022-29273-w", "10.1038/s41467-022-29339-9", "10.1038/s41467-022-29490-3", "10.1038/s41467-022-29730-6", "10.1038/s41467-022-29746-y", "10.1038/s41467-022-30181-2", "10.1038/s41467-022-30269-9", "10.1038/s41467-022-30400-w", "10.1038/s41467-022-30467-5", "10.1038/s41467-022-30570-7", "10.1038/s41467-022-30580-5", "10.1038/s41467-022-30809-3", "10.1038/s41467-022-30977-2", "10.1038/s41467-022-31093-x", "10.1038/s41467-022-31155-0", "10.1038/s41467-022-31193-8", "10.1038/s41467-022-31237-z", "10.1038/s41467-022-31270-y", "10.1038/s41467-022-31322-3", "10.1038/s41467-022-31418-w", "10.1038/s41467-022-31479-x", "10.1038/s41467-022-31615-7", "10.1038/s41467-022-31678-6", "10.1038/s41467-022-31721-6", "10.1038/s41467-022-31898-w", "10.1038/s41467-022-32007-7", "10.1038/s41467-022-32061-1", "10.1038/s41467-022-32233-z", "10.1038/s41467-022-32262-8", "10.1038/s41467-022-32441-7", "10.1038/s41467-022-32535-2", "10.1038/s41467-022-33052-y", "10.1038/s41467-022-33200-4", "10.1038/s41467-022-33229-5", "10.1038/s41467-022-33249-1", "10.1038/s41467-022-33260-6", "10.1038/s41467-022-33593-2", "10.1038/s41467-022-33669-z", "10.1038/s41467-022-34045-7", "10.1038/s41467-022-34226-4", "10.1038/s41467-022-34294-6", "10.1038/s41467-022-34366-7", "10.1038/s41467-022-34441-z", "10.1038/s41467-022-34488-y", "10.1038/s41467-022-34493-1", "10.1038/s41467-022-34506-z", "10.1038/s41467-022-34612-y", "10.1038/s41467-022-34630-w", "10.1038/s41467-022-35086-8", "10.1038/s41467-022-35203-7", "10.1038/s41467-022-35237-x", "10.1038/s41467-022-35261-x", "10.1038/s41467-022-35373-4", "10.1038/s41467-022-35508-7", "10.1038/s41467-022-35593-8", "10.1038/s41467-023-35864-y", "10.1038/s41467-023-35886-6", "10.1038/s41467-023-35919-0", "10.1038/s41467-023-35949-8", "10.1038/s41467-023-35979-2", "10.1038/s41467-023-35993-4", "10.1038/s41467-023-36097-9", "10.1038/s41467-023-36106-x", "10.1038/s41467-023-36376-5", "10.1038/s41467-023-36600-2", "10.1038/s41467-023-36638-2", "10.1038/s41467-023-36766-9", "10.1038/s41467-023-36903-4", "10.1038/s41467-023-36921-2", "10.1038/s41467-023-36943-w", "10.1038/s41467-023-37304-3", "10.1038/s41467-023-37789-y", "10.1038/s41467-023-37825-x", "10.1038/s41467-023-37831-z", "10.1038/s41467-023-37958-z", "10.1038/s41467-023-38404-w", "10.1038/s41467-023-38942-3", "10.1038/s41467-023-39020-4", "10.1038/s41467-023-39091-3", "10.1038/s41467-023-39119-8", "10.1038/s41467-023-39129-6", "10.1038/s41467-023-39299-3", "10.1038/s41467-023-39307-6", "10.1038/s41467-023-39337-0", "10.1038/s41467-023-39770-1", "10.1038/s41467-023-39790-x", "10.1038/s41467-023-40041-2", "10.1038/s41467-023-40514-4", "10.1038/s41467-023-40727-7", "10.1038/s41467-023-40851-4", "10.1038/s41467-023-41066-3", "10.1038/s41467-023-41158-0", "10.1038/s41467-023-41318-2", "10.1038/s41467-023-41418-z", "10.1038/s41467-023-41442-z", "10.1038/s41467-023-41631-w", "10.1038/s41467-023-41749-x", "10.1038/s41467-023-41751-3", "10.1038/s41467-023-41880-9", "10.1038/s41467-023-42189-3", "10.1038/s41467-023-42823-0", "10.1038/s41467-023-42867-2", "10.1038/s41467-023-43065-w", "10.1038/s41467-023-43427-4", "10.1038/s41467-023-43654-9", "10.1038/s41467-023-43681-6", "10.1038/s41467-023-43718-w", "10.1038/s41467-023-44215-w", "10.1038/s41467-023-44260-5", "10.1038/s41467-023-44645-6", "10.1038/s41467-024-44806-1", "10.1038/s41467-024-45051-2", "10.1038/s41467-024-45166-6", "10.1038/s41467-024-45339-3", "10.1038/s41467-024-45415-8", "10.1038/s41467-024-46569-1", "10.1038/s41467-024-46822-7", "10.1038/s41467-024-47203-w", "10.1038/s41467-024-47207-6", "10.1038/s41467-024-47449-4", "10.1038/s41467-024-47586-w", "10.1038/s41467-024-47691-w", "10.1038/s41467-024-47800-9", "10.1038/s41467-024-48125-3", "10.1038/s41467-024-48221-4", "10.1038/s41467-024-48375-1", "10.1038/s41467-024-48549-x", "10.1038/s41467-024-48588-4", "10.1038/s41467-024-48632-3", "10.1038/s41467-024-49365-z", "10.1038/s41467-024-49477-6", "10.1038/s41467-024-49879-6", "10.1038/s41477-019-0490-0", "10.1038/s41477-020-00811-y", "10.1038/s41477-021-00941-x", "10.1038/s41477-021-01043-4", "10.1038/s41477-022-01099-w", "10.1038/s41477-023-01463-4", "10.1038/s41514-024-00152-6", "10.1038/s41522-023-00463-8", "10.1038/s41522-024-00520-w", "10.1038/s41524-019-0254-4", "10.1038/s41524-020-00466-5", "10.1038/s41524-022-00733-7", "10.1038/s41525-021-00238-0", "10.1038/s41525-024-00401-3", "10.1038/s41526-023-00273-4", "10.1038/s41531-022-00308-9", "10.1038/s41536-019-0076-5", "10.1038/s41538-019-0054-8", "10.1038/s41540-022-00244-7", "10.1038/s41541-022-00540-7", "10.1038/s41541-023-00639-5", "10.1038/s41541-024-00847-7", "10.1038/s41551-019-0501-5", "10.1038/s41551-020-00622-8", "10.1038/s41551-021-00749-2", "10.1038/s41551-021-00788-9", "10.1038/s41551-021-00797-8", "10.1038/s41551-021-00826-6", "10.1038/s41551-021-00834-6", "10.1038/s41551-023-01026-0", "10.1038/s41551-023-01129-8", "10.1038/s41556-018-0144-x", "10.1038/s41556-018-0169-1", "10.1038/s41556-019-0310-9", "10.1038/s41556-019-0392-4", "10.1038/s41556-020-00613-6", "10.1038/s41556-020-0477-0", "10.1038/s41556-021-00660-7", "10.1038/s41556-022-00870-7", "10.1038/s41556-022-00878-z", "10.1038/s41556-024-01397-9", "10.1038/s41557-021-00736-9", "10.1038/s41557-021-00840-w", "10.1038/s41557-022-01009-9", "10.1038/s41557-023-01280-4", "10.1038/s41559-018-0506-6", "10.1038/s41559-018-0639-7", "10.1038/s41559-019-0822-5", "10.1038/s41559-019-1040-x", "10.1038/s41559-020-01320-z", "10.1038/s41559-022-01833-9", "10.1038/s41559-023-02014-y", "10.1038/s41563-020-00857-5", "10.1038/s41564-018-0120-z", "10.1038/s41564-018-0151-5", "10.1038/s41564-018-0223-6", "10.1038/s41564-018-0291-7", "10.1038/s41564-018-0356-7", "10.1038/s41564-019-0539-x", "10.1038/s41564-019-0620-5", "10.1038/s41564-019-0627-y", "10.1038/s41564-019-0663-7", "10.1038/s41564-020-0703-3", "10.1038/s41564-020-0710-4", "10.1038/s41564-021-00972-2", "10.1038/s41564-021-00998-6", "10.1038/s41564-023-01349-3", "10.1038/s41565-021-00898-0", "10.1038/s41565-021-00928-x", "10.1038/s41565-021-00988-z", "10.1038/s41565-023-01419-x", "10.1038/s41565-023-01563-4", "10.1038/s41566-022-00969-1", "10.1038/s41567-019-0629-y", "10.1038/s41568-018-0061-0", "10.1038/s41568-018-0070-z", "10.1038/s41568-019-0196-7", "10.1038/s41568-019-0216-7", "10.1038/s41568-020-0253-2", "10.1038/s41568-020-0281-y", "10.1038/s41568-020-0285-7", "10.1038/s41568-021-00347-z", "10.1038/s41568-021-00378-6", "10.1038/s41568-021-00386-6", "10.1038/s41568-021-00388-4", "10.1038/s41568-023-00650-x", "10.1038/s41570-017-0076", "10.1038/s41570-021-00339-5", "10.1038/s41571-019-0218-0", "10.1038/s41571-020-0350-x", "10.1038/s41571-021-00546-5", "10.1038/s41571-022-00671-9", "10.1038/s41571-023-00754-1", "10.1038/s41571-023-00811-9", "10.1038/s41572-019-0063-6", "10.1038/s41572-021-00269-y", "10.1038/s41573-019-0012-9", "10.1038/s41573-019-0026-3", "10.1038/s41573-019-0039-y", "10.1038/s41573-019-0047-y", "10.1038/s41573-020-00093-1", "10.1038/s41573-020-00114-z", "10.1038/s41573-020-0070-z", "10.1038/s41573-021-00154-z", "10.1038/s41573-021-00283-5", "10.1038/s41573-022-00520-5", "10.1038/s41573-023-00762-x", "10.1038/s41574-020-0351-y", "10.1038/s41575-021-00438-0", "10.1038/s41576-018-0006-1", "10.1038/s41576-018-0016-z", "10.1038/s41576-018-0050-x", "10.1038/s41576-018-0059-1", "10.1038/s41576-018-0060-8", "10.1038/s41576-018-0073-3", "10.1038/s41576-018-0081-3", "10.1038/s41576-019-0128-0", "10.1038/s41576-019-0173-8", "10.1038/s41576-019-0184-5", "10.1038/s41576-019-0195-2", "10.1038/s41576-019-0205-4", "10.1038/s41576-020-00292-x", "10.1038/s41576-020-00295-8", "10.1038/s41576-020-00311-x", "10.1038/s41576-020-0210-7", "10.1038/s41576-020-0236-x", "10.1038/s41576-020-0258-4", "10.1038/s41576-021-00329-9", "10.1038/s41576-021-00342-y", "10.1038/s41576-021-00370-8", "10.1038/s41576-021-00385-1", "10.1038/s41576-021-00395-z", "10.1038/s41576-021-00439-4", "10.1038/s41576-022-00493-6", "10.1038/s41576-022-00534-0", "10.1038/s41576-022-00541-1", "10.1038/s41576-022-00562-w", "10.1038/s41576-023-00597-7", "10.1038/s41576-023-00618-5", "10.1038/s41577-018-0008-4", "10.1038/s41577-018-0025-3", "10.1038/s41577-019-0162-3", "10.1038/s41577-019-0167-y", "10.1038/s41577-019-0228-2", "10.1038/s41577-019-0261-1", "10.1038/s41577-020-00410-0", "10.1038/s41577-020-00487-7", "10.1038/s41577-021-00522-1", "10.1038/s41577-022-00707-2", "10.1038/s41577-023-00849-x", "10.1038/s41577-023-00951-0", "10.1038/s41578-018-0077-9", "10.1038/s41578-019-0101-8", "10.1038/s41578-021-00358-0", "10.1038/s41579-019-0278-2", "10.1038/s41579-019-0299-x", "10.1038/s41579-020-0366-3", "10.1038/s41579-020-0413-0", "10.1038/s41579-021-00569-w", "10.1038/s41579-021-00573-0", "10.1038/s41579-021-00630-8", "10.1038/s41579-023-00865-7", "10.1038/s41579-023-00878-2", "10.1038/s41579-023-00918-x", "10.1038/s41579-023-00934-x", "10.1038/s41580-018-0002-5", "10.1038/s41580-018-0028-8", "10.1038/s41580-019-0131-5", "10.1038/s41580-019-0132-4", "10.1038/s41580-019-0136-0", "10.1038/s41580-019-0152-0", "10.1038/s41580-019-0163-x", "10.1038/s41580-020-00294-x", "10.1038/s41580-020-00315-9", "10.1038/s41580-020-00322-w", "10.1038/s41580-020-0236-x", "10.1038/s41580-020-0250-z", "10.1038/s41580-020-0255-7", "10.1038/s41580-021-00349-7", "10.1038/s41580-021-00418-x", "10.1038/s41580-022-00457-y", "10.1038/s41580-022-00524-4", "10.1038/s41580-023-00583-1", "10.1038/s41580-023-00606-x", "10.1038/s41580-023-00628-5", "10.1038/s41580-023-00697-6", "10.1038/s41580-024-00700-8", "10.1038/s41580-024-00710-6", "10.1038/s41580-024-00729-9", "10.1038/s41581-018-0023-5", "10.1038/s41581-019-0110-2", "10.1038/s41581-019-0129-4", "10.1038/s41581-022-00601-z", "10.1038/s41582-020-00432-1", "10.1038/s41582-021-00530-8", "10.1038/s41583-018-0006-3", "10.1038/s41583-018-0013-4", "10.1038/s41583-019-0152-2", "10.1038/s41583-019-0222-5", "10.1038/s41583-020-00392-x", "10.1038/s41583-020-0264-8", "10.1038/s41583-020-0315-1", "10.1038/s41583-020-0322-2", "10.1038/s41583-021-00433-z", "10.1038/s41583-021-00503-2", "10.1038/s41583-022-00588-3", "10.1038/s41584-021-00707-x", "10.1038/s41585-018-0090-1", "10.1038/s41586-018-0058-6", "10.1038/s41586-018-0128-9", "10.1038/s41586-018-0257-1", "10.1038/s41586-018-0497-0", "10.1038/s41586-018-0511-6", "10.1038/s41586-018-0642-9", "10.1038/s41586-018-0654-5", "10.1038/s41586-018-0698-6", "10.1038/s41586-018-0736-4", "10.1038/s41586-018-0773-z", "10.1038/s41586-018-0812-9", "10.1038/s41586-018-0830-7", "10.1038/s41586-018-0836-1", "10.1038/s41586-019-0891-2", "10.1038/s41586-019-0904-1", "10.1038/s41586-019-1182-7", "10.1038/s41586-019-1210-7", "10.1038/s41586-019-1219-y", "10.1038/s41586-019-1309-x", "10.1038/s41586-019-1374-1", "10.1038/s41586-019-1407-9", "10.1038/s41586-019-1434-6", "10.1038/s41586-019-1456-0", "10.1038/s41586-019-1498-3", "10.1038/s41586-019-1502-y", "10.1038/s41586-019-1506-7", "10.1038/s41586-019-1605-5", "10.1038/s41586-019-1652-y", "10.1038/s41586-019-1670-9", "10.1038/s41586-019-1711-4", "10.1038/s41586-019-1716-z", "10.1038/s41586-019-1805-z", "10.1038/s41586-019-1842-7", "10.1038/s41586-019-1875-y", "10.1038/s41586-019-1884-x", "10.1038/s41586-019-1894-8", "10.1038/s41586-019-1923-7", "10.1038/s41586-019-1928-2", "10.1038/s41586-020-03085-8", "10.1038/s41586-020-03086-7", "10.1038/s41586-020-1957-x", "10.1038/s41586-020-1978-5", "10.1038/s41586-020-2008-3", "10.1038/s41586-020-2012-7", "10.1038/s41586-020-2093-3", "10.1038/s41586-020-2134-y", "10.1038/s41586-020-2151-x", "10.1038/s41586-020-2179-y", "10.1038/s41586-020-2180-5", "10.1038/s41586-020-2253-5", "10.1038/s41586-020-2308-7", "10.1038/s41586-020-2349-y", "10.1038/s41586-020-2380-z", "10.1038/s41586-020-2381-y", "10.1038/s41586-020-2477-4", "10.1038/s41586-020-2496-1", "10.1038/s41586-020-2502-7", "10.1038/s41586-020-2559-3", "10.1038/s41586-020-2571-7", "10.1038/s41586-020-2579-z", "10.1038/s41586-020-2599-8", "10.1038/s41586-020-2601-5", "10.1038/s41586-020-2607-z", "10.1038/s41586-020-2612-2", "10.1038/s41586-020-2624-y", "10.1038/s41586-020-2649-2", "10.1038/s41586-020-2681-2", "10.1038/s41586-020-2759-x", "10.1038/s41586-020-2760-4", "10.1038/s41586-020-2816-5", "10.1038/s41586-020-2852-1", "10.1038/s41586-020-2929-x", "10.1038/s41586-020-2938-9", "10.1038/s41586-020-3031-0", "10.1038/s41586-021-03187-x", "10.1038/s41586-021-03210-1", "10.1038/s41586-021-03220-z", "10.1038/s41586-021-03345-1", "10.1038/s41586-021-03398-2", "10.1038/s41586-021-03446-x", "10.1038/s41586-021-03460-z", "10.1038/s41586-021-03470-x", "10.1038/s41586-021-03478-3", "10.1038/s41586-021-03494-3", "10.1038/s41586-021-03500-8", "10.1038/s41586-021-03520-4", "10.1038/s41586-021-03534-y", "10.1038/s41586-021-03542-y", "10.1038/s41586-021-03548-6", "10.1038/s41586-021-03609-w", "10.1038/s41586-021-03620-1", "10.1038/s41586-021-03634-9", "10.1038/s41586-021-03720-y", "10.1038/s41586-021-03777-9", "10.1038/s41586-021-03786-8", "10.1038/s41586-021-03790-y", "10.1038/s41586-021-03807-6", "10.1038/s41586-021-03817-4", "10.1038/s41586-021-03819-2", "10.1038/s41586-021-03828-1", "10.1038/s41586-021-03897-2", "10.1038/s41586-021-03910-8", "10.1038/s41586-021-03941-1", "10.1038/s41586-021-03944-y", "10.1038/s41586-021-03950-0", "10.1038/s41586-021-03955-9", "10.1038/s41586-021-03970-w", "10.1038/s41586-021-04005-0", "10.1038/s41586-021-04058-1", "10.1038/s41586-021-04065-2", "10.1038/s41586-021-04184-w", "10.1038/s41586-021-04233-4", "10.1038/s41586-021-04384-4", "10.1038/s41586-021-04386-2", "10.1038/s41586-021-04389-z", "10.1038/s41586-022-04403-y", "10.1038/s41586-022-04411-y", "10.1038/s41586-022-04432-7", "10.1038/s41586-022-04532-4", "10.1038/s41586-022-04555-x", "10.1038/s41586-022-04570-y", "10.1038/s41586-022-04585-5", "10.1038/s41586-022-04594-4", "10.1038/s41586-022-04602-7", "10.1038/s41586-022-04627-y", "10.1038/s41586-022-04654-9", "10.1038/s41586-022-04711-3", "10.1038/s41586-022-04778-y", "10.1038/s41586-022-04877-w", "10.1038/s41586-022-04883-y", "10.1038/s41586-022-04906-8", "10.1038/s41586-022-04922-8", "10.1038/s41586-022-04980-y", "10.1038/s41586-022-05041-0", "10.1038/s41586-022-05257-0", "10.1038/s41586-022-05274-z", "10.1038/s41586-022-05277-w", "10.1038/s41586-022-05324-6", "10.1038/s41586-022-05366-w", "10.1038/s41586-022-05570-8", "10.1038/s41586-022-05575-3", "10.1038/s41586-022-05605-0", "10.1038/s41586-023-05870-7", "10.1038/s41586-023-05906-y", "10.1038/s41586-023-05933-9", "10.1038/s41586-023-05991-z", "10.1038/s41586-023-06002-x", "10.1038/s41586-023-06123-3", "10.1038/s41586-023-06146-w", "10.1038/s41586-023-06186-2", "10.1038/s41586-023-06373-1", "10.1038/s41586-023-06395-9", "10.1038/s41586-023-06415-8", "10.1038/s41586-023-06431-8", "10.1038/s41586-023-06496-5", "10.1038/s41586-023-06500-y", "10.1038/s41586-023-06622-3", "10.1038/s41586-023-06728-8", "10.1038/s41586-023-06750-w", "10.1038/s41586-023-06793-z", "10.1038/s41586-023-06832-9", "10.1038/s41586-023-06835-6", "10.1038/s41586-023-06850-7", "10.1038/s41586-023-06877-w", "10.1038/s41586-023-06905-9", "10.1038/s41586-023-06922-8", "10.1038/s41586-024-07259-6", "10.1038/s41586-024-07283-6", "10.1038/s41586-024-07292-5", "10.1038/s41586-024-07298-z", "10.1038/s41586-024-07317-z", "10.1038/s41586-024-07345-9", "10.1038/s41586-024-07348-6", "10.1038/s41586-024-07373-5", "10.1038/s41586-024-07379-z", "10.1038/s41586-024-07385-1", "10.1038/s41586-024-07598-4", "10.1038/s41587-019-0013-6", "10.1038/s41587-019-0032-3", "10.1038/s41587-019-0037-y", "10.1038/s41587-019-0114-2", "10.1038/s41587-019-0137-8", "10.1038/s41587-019-0201-4", "10.1038/s41587-019-0368-8", "10.1038/s41587-020-00793-4", "10.1038/s41587-020-0453-z", "10.1038/s41587-020-0455-x", "10.1038/s41587-020-0537-9", "10.1038/s41587-020-0561-9", "10.1038/s41587-020-0571-7", "10.1038/s41587-020-0591-3", "10.1038/s41587-020-0592-2", "10.1038/s41587-020-0603-3", "10.1038/s41587-020-0677-y", "10.1038/s41587-021-00830-w", "10.1038/s41587-021-00868-w", "10.1038/s41587-021-00891-x", "10.1038/s41587-021-00901-y", "10.1038/s41587-021-00910-x", "10.1038/s41587-021-00915-6", "10.1038/s41587-021-01009-z", "10.1038/s41587-021-01026-y", "10.1038/s41587-021-01039-7", "10.1038/s41587-021-01133-w", "10.1038/s41587-021-01139-4", "10.1038/s41587-021-01146-5", "10.1038/s41587-021-01180-3", "10.1038/s41587-021-01201-1", "10.1038/s41587-022-01254-w", "10.1038/s41587-022-01255-9", "10.1038/s41587-022-01284-4", "10.1038/s41587-022-01341-y", "10.1038/s41587-022-01410-2", "10.1038/s41587-022-01470-4", "10.1038/s41587-022-01494-w", "10.1038/s41587-022-01527-4", "10.1038/s41587-022-01581-y", "10.1038/s41587-022-01595-6", "10.1038/s41587-022-01613-7", "10.1038/s41587-022-01618-2", "10.1038/s41587-022-01624-4", "10.1038/s41587-022-01636-0", "10.1038/s41587-023-01678-y", "10.1038/s41587-023-01748-1", "10.1038/s41587-023-01756-1", "10.1038/s41587-023-01758-z", "10.1038/s41587-023-01759-y", "10.1038/s41587-023-01763-2", "10.1038/s41587-023-01801-z", "10.1038/s41587-023-01821-9", "10.1038/s41587-023-02072-4", "10.1038/s41587-023-02106-x", "10.1038/s41587-024-02133-2", "10.1038/s41587-024-02157-8", "10.1038/s41587-024-02174-7", "10.1038/s41587-024-02224-0", "10.1038/s41588-017-0007-6", "10.1038/s41588-017-0016-5", "10.1038/s41588-018-0091-2", "10.1038/s41588-018-0175-z", "10.1038/s41588-018-0218-5", "10.1038/s41588-018-0223-8", "10.1038/s41588-019-0370-6", "10.1038/s41588-019-0392-0", "10.1038/s41588-019-0462-3", "10.1038/s41588-019-0466-z", "10.1038/s41588-019-0479-7", "10.1038/s41588-019-0494-8", "10.1038/s41588-019-0499-3", "10.1038/s41588-019-0521-9", "10.1038/s41588-019-0531-7", "10.1038/s41588-019-0538-0", "10.1038/s41588-019-0561-1", "10.1038/s41588-020-00745-3", "10.1038/s41588-020-0652-z", "10.1038/s41588-020-0662-x", "10.1038/s41588-020-0664-8", "10.1038/s41588-020-0696-0", "10.1038/s41588-020-0709-z", "10.1038/s41588-021-00785-3", "10.1038/s41588-021-00852-9", "10.1038/s41588-021-00900-4", "10.1038/s41588-021-00911-1", "10.1038/s41588-021-01009-4", "10.1038/s41588-022-01052-9", "10.1038/s41588-022-01241-6", "10.1038/s41588-022-01295-6", "10.1038/s41588-023-01434-7", "10.1038/s41588-023-01442-7", "10.1038/s41588-023-01475-y", "10.1038/s41588-023-01529-1", "10.1038/s41588-023-01572-y", "10.1038/s41588-024-01678-x", "10.1038/s41588-024-01681-2", "10.1038/s41588-024-01688-9", "10.1038/s41588-024-01749-z", "10.1038/s41589-018-0008-5", "10.1038/s41589-018-0180-7", "10.1038/s41589-018-0184-3", "10.1038/s41589-019-0362-y", "10.1038/s41589-019-0412-5", "10.1038/s41589-019-0415-2", "10.1038/s41589-020-00679-1", "10.1038/s41589-020-00734-x", "10.1038/s41589-020-0473-5", "10.1038/s41589-020-0556-3", "10.1038/s41589-020-0584-z", "10.1038/s41589-020-0594-x", "10.1038/s41589-020-0622-x", "10.1038/s41589-021-00841-3", "10.1038/s41589-021-00868-6", "10.1038/s41589-021-00889-1", "10.1038/s41589-021-00925-0", "10.1038/s41589-022-00985-w", "10.1038/s41589-022-01065-9", "10.1038/s41589-022-01218-w", "10.1038/s41589-023-01427-x", "10.1038/s41590-018-0108-0", "10.1038/s41590-018-0114-2", "10.1038/s41590-018-0212-1", "10.1038/s41590-018-0291-z", "10.1038/s41590-019-0320-6", "10.1038/s41590-019-0342-0", "10.1038/s41590-019-0382-5", "10.1038/s41590-019-0417-y", "10.1038/s41590-019-0429-7", "10.1038/s41590-019-0514-y", "10.1038/s41590-019-0542-7", "10.1038/s41590-020-00858-1", "10.1038/s41590-020-0669-6", "10.1038/s41590-020-0676-7", "10.1038/s41590-020-0677-6", "10.1038/s41590-020-0707-4", "10.1038/s41590-020-0723-4", "10.1038/s41590-020-0728-z", "10.1038/s41590-020-0781-7", "10.1038/s41590-021-00910-8", "10.1038/s41590-021-00913-5", "10.1038/s41590-021-00927-z", "10.1038/s41590-021-00996-0", "10.1038/s41590-021-01004-1", "10.1038/s41590-021-01040-x", "10.1038/s41590-022-01222-1", "10.1038/s41590-022-01232-z", "10.1038/s41590-023-01477-2", "10.1038/s41590-023-01519-9", "10.1038/s41590-023-01526-w", "10.1038/s41590-023-01530-0", "10.1038/s41590-023-01627-6", "10.1038/s41590-024-01859-0", "10.1038/s41591-018-0014-x", "10.1038/s41591-018-0049-z", "10.1038/s41591-018-0050-6", "10.1038/s41591-018-0078-7", "10.1038/s41591-018-0327-9", "10.1038/s41591-019-0371-0", "10.1038/s41591-019-0374-x", "10.1038/s41591-019-0498-z", "10.1038/s41591-019-0668-z", "10.1038/s41591-019-0733-7", "10.1038/s41591-020-01168-7", "10.1038/s41591-020-0790-y", "10.1038/s41591-020-0818-3", "10.1038/s41591-020-0944-y", "10.1038/s41591-021-01351-4", "10.1038/s41591-021-01678-y", "10.1038/s41591-022-01792-5", "10.1038/s41591-022-01911-2", "10.1038/s41591-022-02092-8", "10.1038/s41591-022-02104-7", "10.1038/s41591-023-02760-3", "10.1038/s41592-018-0048-5", "10.1038/s41592-018-0051-x", "10.1038/s41592-018-0074-3", "10.1038/s41592-018-0138-4", "10.1038/s41592-018-0149-1", "10.1038/s41592-019-0437-4", "10.1038/s41592-019-0496-6", "10.1038/s41592-019-0511-y", "10.1038/s41592-019-0580-y", "10.1038/s41592-019-0610-9", "10.1038/s41592-019-0686-2", "10.1038/s41592-020-0914-9", "10.1038/s41592-020-0965-y", "10.1038/s41592-020-0966-x", "10.1038/s41592-021-01100-y", "10.1038/s41592-021-01101-x", "10.1038/s41592-021-01231-2", "10.1038/s41592-021-01264-7", "10.1038/s41592-021-01312-2", "10.1038/s41592-022-01409-2", "10.1038/s41592-022-01488-1", "10.1038/s41592-022-01507-1", "10.1038/s41592-022-01575-3", "10.1038/s41592-022-01639-4", "10.1038/s41592-023-01938-4", "10.1038/s41592-023-02036-1", "10.1038/s41593-017-0056-2", "10.1038/s41593-017-0057-1", "10.1038/s41593-018-0128-y", "10.1038/s41593-018-0145-x", "10.1038/s41593-018-0241-y", "10.1038/s41593-018-0287-x", "10.1038/s41593-018-0328-5", "10.1038/s41593-019-0354-y", "10.1038/s41593-019-0445-9", "10.1038/s41593-019-0538-5", "10.1038/s41593-020-00728-x", "10.1038/s41593-020-00783-4", "10.1038/s41593-020-00787-0", "10.1038/s41593-020-00789-y", "10.1038/s41593-020-00794-1", "10.1038/s41593-020-0586-x", "10.1038/s41593-020-0597-7", "10.1038/s41593-020-0603-0", "10.1038/s41593-020-0604-z", "10.1038/s41593-021-00872-y", "10.1038/s41593-021-00878-6", "10.1038/s41593-021-00905-6", "10.1038/s41593-021-00951-0", "10.1038/s41593-022-01041-5", "10.1038/s41593-022-01061-1", "10.1038/s41593-022-01094-6", "10.1038/s41593-022-01176-5", "10.1038/s41593-022-01180-9", "10.1038/s41593-022-01196-1", "10.1038/s41593-023-01339-y", "10.1038/s41593-024-01573-y", "10.1038/s41593-024-01679-3", "10.1038/s41594-019-0339-2", "10.1038/s41594-020-00539-5", "10.1038/s41594-020-0387-7", "10.1038/s41594-020-0469-6", "10.1038/s41594-020-0477-6", "10.1038/s41594-020-0480-y", "10.1038/s41594-020-0493-6", "10.1038/s41594-020-0494-5", "10.1038/s41594-021-00583-9", "10.1038/s41594-021-00652-z", "10.1038/s41594-021-00674-7", "10.1038/s41594-021-00690-7", "10.1038/s41594-021-00693-4", "10.1038/s41594-022-00798-4", "10.1038/s41594-022-00885-6", "10.1038/s41594-022-00890-9", "10.1038/s41594-022-00896-3", "10.1038/s41594-023-01034-3", "10.1038/s41594-023-01070-z", "10.1038/s41594-024-01268-9", "10.1038/s41594-024-01320-8", "10.1038/s41594-024-01334-2", "10.1038/s41596-019-0128-8", "10.1038/s41596-019-0267-y", "10.1038/s41596-020-0312-x", "10.1038/s41596-020-0336-2", "10.1038/s41596-021-00556-8", "10.1038/s41596-021-00628-9", "10.1038/s41596-022-00688-5", "10.1038/s41596-022-00724-4", "10.1038/s41596-023-00905-9", "10.1038/s41596-023-00910-y", "10.1038/s41596-023-00924-6", "10.1038/s41597-020-0476-9", "10.1038/s41597-020-0556-x", "10.1038/s41598-016-0028-x", "10.1038/s41598-017-01186-5", "10.1038/s41598-017-01240-2", "10.1038/s41598-017-01788-z", "10.1038/s41598-017-03067-3", "10.1038/s41598-017-03956-7", "10.1038/s41598-017-05025-5", "10.1038/s41598-017-05274-4", "10.1038/s41598-017-06352-3", "10.1038/s41598-017-06391-w", "10.1038/s41598-017-06999-y", "10.1038/s41598-017-07226-4", "10.1038/s41598-017-07394-3", "10.1038/s41598-017-08266-6", "10.1038/s41598-017-08722-3", "10.1038/s41598-017-09779-w", "10.1038/s41598-017-10094-7", "10.1038/s41598-017-10544-2", "10.1038/s41598-017-10794-0", "10.1038/s41598-017-10966-y", "10.1038/s41598-017-11268-z", "10.1038/s41598-017-14262-7", "10.1038/s41598-017-16932-y", "10.1038/s41598-017-17204-5", "10.1038/s41598-017-18144-w", "10.1038/s41598-018-19535-3", "10.1038/s41598-018-19714-2", "10.1038/s41598-018-20831-1", "10.1038/s41598-018-21053-1", "10.1038/s41598-018-21337-6", "10.1038/s41598-018-22134-x", "10.1038/s41598-018-22730-x", "10.1038/s41598-018-22905-6", "10.1038/s41598-018-23342-1", "10.1038/s41598-018-24509-6", "10.1038/s41598-018-25311-0", "10.1038/s41598-018-25336-5", "10.1038/s41598-018-26004-4", "10.1038/s41598-018-26317-4", "10.1038/s41598-018-26636-6", "10.1038/s41598-018-26832-4", "10.1038/s41598-018-28304-1", "10.1038/s41598-018-28413-x", "10.1038/s41598-018-29291-z", "10.1038/s41598-018-30383-z", "10.1038/s41598-018-31012-5", "10.1038/s41598-018-32340-2", "10.1038/s41598-018-32855-8", "10.1038/s41598-018-33592-8", "10.1038/s41598-018-33947-1", "10.1038/s41598-018-34533-1", "10.1038/s41598-018-35716-6", "10.1038/s41598-018-36350-y", "10.1038/s41598-018-36912-0", "10.1038/s41598-018-37850-7", "10.1038/s41598-019-38497-8", "10.1038/s41598-019-38554-2", "10.1038/s41598-019-40417-9", "10.1038/s41598-019-41060-0", "10.1038/s41598-019-41300-3", "10.1038/s41598-019-41528-z", "10.1038/s41598-019-41661-9", "10.1038/s41598-019-42484-4", "10.1038/s41598-019-45457-9", "10.1038/s41598-019-46082-2", "10.1038/s41598-019-46682-y", "10.1038/s41598-019-47248-8", "10.1038/s41598-019-47258-6", "10.1038/s41598-019-47488-8", "10.1038/s41598-019-49390-9", "10.1038/s41598-019-50389-5", "10.1038/s41598-019-51511-3", "10.1038/s41598-019-52758-6", "10.1038/s41598-019-53294-z", "10.1038/s41598-019-53647-8", "10.1038/s41598-019-53847-2", "10.1038/s41598-019-54684-z", "10.1038/s41598-019-55717-3", "10.1038/s41598-019-57089-0", "10.1038/s41598-020-59917-0", "10.1038/s41598-020-59938-9", "10.1038/s41598-020-62912-0", "10.1038/s41598-020-63682-5", "10.1038/s41598-020-63917-5", "10.1038/s41598-020-64665-2", "10.1038/s41598-020-64831-6", "10.1038/s41598-020-64887-4", "10.1038/s41598-020-65009-w", "10.1038/s41598-020-66862-5", "10.1038/s41598-020-67817-6", "10.1038/s41598-020-68811-8", "10.1038/s41598-020-69356-6", "10.1038/s41598-020-71550-5", "10.1038/s41598-020-71566-x", "10.1038/s41598-020-73443-z", "10.1038/s41598-020-73583-2", "10.1038/s41598-020-73613-z", "10.1038/s41598-020-73767-w", "10.1038/s41598-020-74080-2", "10.1038/s41598-020-74521-y", "10.1038/s41598-020-74536-5", "10.1038/s41598-020-74737-y", "10.1038/s41598-020-74793-4", "10.1038/s41598-020-75432-8", "10.1038/s41598-020-75734-x", "10.1038/s41598-020-77992-1", "10.1038/s41598-020-78294-2", "10.1038/s41598-020-79049-9", "10.1038/s41598-020-79344-5", "10.1038/s41598-020-79742-9", "10.1038/s41598-021-00834-1", "10.1038/s41598-021-00958-4", "10.1038/s41598-021-00988-y", "10.1038/s41598-021-01220-7", "10.1038/s41598-021-02251-w", "10.1038/s41598-021-02943-3", "10.1038/s41598-021-03184-0", "10.1038/s41598-021-84026-x", "10.1038/s41598-021-85509-7", "10.1038/s41598-021-85709-1", "10.1038/s41598-021-88516-w", "10.1038/s41598-021-88988-w", "10.1038/s41598-021-89673-8", "10.1038/s41598-021-90096-8", "10.1038/s41598-021-90455-5", "10.1038/s41598-021-91168-5", "10.1038/s41598-021-91563-y", "10.1038/s41598-021-91596-3", "10.1038/s41598-021-93816-2", "10.1038/s41598-021-94607-5", "10.1038/s41598-021-95009-3", "10.1038/s41598-021-95286-y", "10.1038/s41598-021-97522-x", "10.1038/s41598-021-97985-y", "10.1038/s41598-021-98792-1", "10.1038/s41598-021-99347-0", "10.1038/s41598-022-08398-4", "10.1038/s41598-022-09740-6", "10.1038/s41598-022-13714-z", "10.1038/s41598-022-14263-1", "10.1038/s41598-022-18116-9", "10.1038/s41598-022-20342-0", "10.1038/s41598-022-20623-8", "10.1038/s41598-022-20889-y", "10.1038/s41598-022-22072-9", "10.1038/s41598-022-22493-6", "10.1038/s41598-022-23485-2", "10.1038/s41598-022-23767-9", "10.1038/s41598-022-24723-3", "10.1038/s41598-022-26314-8", "10.1038/s41598-023-27926-4", "10.1038/s41598-023-31417-x", "10.1038/s41598-023-32154-x", "10.1038/s41598-023-32380-3", "10.1038/s41598-023-41410-z", "10.1038/s41598-023-41696-z", "10.1038/s41598-023-43089-8", "10.1038/s41598-023-44340-y", "10.1038/s41598-023-47204-7", "10.1038/s41598-023-49467-6", "10.1038/s41598-023-50822-w", "10.1038/s41598-024-51400-4", "10.1038/s41598-024-51489-7", "10.1038/s41598-024-51732-1", "10.1038/s41598-024-57516-x", "10.1038/s41598-024-57996-x", "10.1038/s41598-024-58215-3", "10.1038/s41598-024-62277-8", "10.1038/s41684-022-00998-x", "10.1038/s41698-023-00431-7", "10.1038/s41698-024-00554-5", "10.1038/s41893-018-0138-5", "10.1038/s42003-017-0004-4", "10.1038/s42003-018-0271-8", "10.1038/s42003-020-01226-3", "10.1038/s42003-020-01476-1", "10.1038/s42003-020-01623-8", "10.1038/s42003-020-01626-5", "10.1038/s42003-020-0864-x", "10.1038/s42003-020-0922-4", "10.1038/s42003-020-0989-y", "10.1038/s42003-021-01722-0", "10.1038/s42003-021-01723-z", "10.1038/s42003-021-01755-5", "10.1038/s42003-021-02030-3", "10.1038/s42003-021-02199-7", "10.1038/s42003-021-02238-3", "10.1038/s42003-022-03057-w", "10.1038/s42003-022-03630-3", "10.1038/s42003-022-03651-y", "10.1038/s42003-022-03866-z", "10.1038/s42003-023-04517-7", "10.1038/s42003-023-04740-2", "10.1038/s42003-023-05134-0", "10.1038/s42003-023-05188-0", "10.1038/s42003-023-05294-z", "10.1038/s42003-023-05526-2", "10.1038/s42003-024-06467-0", "10.1038/s42004-023-00894-6", "10.1038/s42255-020-00298-z", "10.1038/s42255-022-00575-z", "10.1038/s42255-022-00676-9", "10.1038/s42255-022-00693-8", "10.1038/s42255-022-00716-4", "10.1038/s42255-023-00891-y", "10.1038/s42256-022-00457-9", "10.1038/s42256-022-00499-z", "10.1038/s42256-023-00626-4", "10.1038/s42256-023-00787-2", "10.1038/s42256-024-00792-z", "10.1038/s43018-020-00133-0", "10.1038/s43018-020-00161-w", "10.1038/s43018-020-0064-0", "10.1038/s43018-021-00183-y", "10.1038/s43018-021-00200-0", "10.1038/s43018-021-00220-w", "10.1038/s43018-022-00470-2", "10.1038/s43018-023-00557-4", "10.1038/s43018-023-00636-6", "10.1038/s43586-022-00136-4", "10.1038/s43587-020-00013-3", "10.1038/s43588-023-00440-3", "10.1038/s43856-024-00485-z", "10.1038/s44222-023-00114-9", "10.1038/s44319-023-00030-4", "10.1038/s44320-024-00013-0", "10.1038/s44320-024-00015-y", "10.1038/scibx.2014.204", "10.1038/sdata.2018.141", "10.1038/sdata.2018.30", "10.1038/sj.bjc.6690153", "10.1038/sj.bjp.0703651", "10.1038/sj.bjp.0703962", "10.1038/sj.cdd.4401801", "10.1038/sj.cdd.4402102", "10.1038/sj.cr.7290257", "10.1038/sj.emboj.7600550", "10.1038/sj.emboj.7600648", "10.1038/sj.emboj.7600715", "10.1038/sj.emboj.7600877", "10.1038/sj.emboj.7600982", "10.1038/sj.emboj.7601081", "10.1038/sj.emboj.7601275", "10.1038/sj.emboj.7601335", "10.1038/sj.emboj.7601774", "10.1038/sj.embor.7400393", "10.1038/sj.embor.7400625", "10.1038/sj.gene.6364352", "10.1038/sj.jcbfm.9600509", "10.1038/sj.ki.5001694", "10.1038/sj.ki.5002426", "10.1038/sj.leu.2401493", "10.1038/sj.mp.4001802", "10.1038/sj.npp.1300032", "10.1038/sj.npp.1300954", "10.1038/sj.onc.1202122", "10.1038/sj.onc.1203989", "10.1038/sj.onc.1205400", "10.1038/sj.onc.1206366", "10.1038/sj.onc.1206967", "10.1038/sj.onc.1207410", "10.1038/sj.onc.1208074", "10.1038/sj.onc.1208081", "10.1038/sj.onc.1208622", "10.1038/sj.onc.1209239", "10.1038/sj.onc.1209777", "10.1038/sj.onc.1209927", "10.1038/sj.onc.1210467", "10.1038/srep01588", "10.1038/srep02435", "10.1038/srep02659", "10.1038/srep04166", "10.1038/srep04467", "10.1038/srep06531", "10.1038/srep06746", "10.1038/srep07094", "10.1038/srep10710", "10.1038/srep12371", "10.1038/srep13652", "10.1038/srep14003", "10.1038/srep14754", "10.1038/srep15583", "10.1038/srep16550", "10.1038/srep16881", "10.1038/srep16963", "10.1038/srep17454", "10.1038/srep17587", "10.1038/srep18794", "10.1038/srep21508", "10.1038/srep21949", "10.1038/srep22656", "10.1038/srep23049", "10.1038/srep23353", "10.1038/srep23496", "10.1038/srep23697", "10.1038/srep25706", "10.1038/srep25921", "10.1038/srep25996", "10.1038/srep26702", "10.1038/srep26717", "10.1038/srep27873", "10.1038/srep28137", "10.1038/srep28495", "10.1038/srep28637", "10.1038/srep29775", "10.1038/srep31291", "10.1038/srep31562", "10.1038/srep32189", "10.1038/srep32739", "10.1038/srep33285", "10.1038/srep33739", "10.1038/srep34985", "10.1038/srep35173", "10.1038/srep35349", "10.1038/srep35997", "10.1038/srep37290", "10.1038/srep37540", "10.1038/srep39112", "10.1038/srep41478", "10.1038/srep41693", "10.1038/srep42065", "10.1038/srep42225", "10.1038/srep42270", "10.1038/srep42529", "10.1038/srep42867", "10.1038/srep43578", "10.1038/srep43724", "10.1038/srep45089", "10.1038/tp.2013.7", "10.1038/tp.2014.4", "10.1038/tp.2015.115", "10.1038/tp.2015.203", "10.1038/tp.2017.196", "10.1038/tp.2017.80", "10.1039/9781782621959-00001", "10.1039/9781788010351-00199", "10.1039/9781788010450-00001", "10.1039/9781847558428-00003", "10.1039/9781847559890-00299", "10.1039/9781849732796-00254", "10.1039/9781849734769-00075", "10.1039/9781849734851-00386", "10.1039/b516237h", "10.1039/b711226b", "10.1039/b803355b", "10.1039/b811616d", "10.1039/b919670f", "10.1039/c0ee00074d", "10.1039/c0mt00013b", "10.1039/c2cp41217a", "10.1039/c2ob25159k", "10.1039/c2ra21260a", "10.1039/c2sm26655e", "10.1039/c3ay42243g", "10.1039/c3cp44332a", "10.1039/c3cp44520h", "10.1039/c3mt00070b", "10.1039/c3sm51786a", "10.1039/c4ay00495g", "10.1039/c4cs00388h", "10.1039/c4fd00217b", "10.1039/c4mt00064a", "10.1039/c4pp00212a", "10.1039/c4ra15743e", "10.1039/c5cc06876b", "10.1039/c5cs00911a", "10.1039/c5fo00050e", "10.1039/c5fo00932d", "10.1039/c5md00086f", "10.1039/c5tc01398d", "10.1039/c6bm00500d", "10.1039/c6ib00105j", "10.1039/c6lc00180g", "10.1039/c6sm00526h", "10.1039/c7cp06324e", "10.1039/c7cs00331e", "10.1039/c7fd00198c", "10.1039/c7mb00305f", "10.1039/c7md00247e", "10.1039/c7ra03716c", "10.1039/c8an00606g", "10.1039/c8bm01393d", "10.1039/c8cp02949k", "10.1039/c8cs00676h", "10.1039/c8dt03295e", "10.1039/c8em00106e", "10.1039/c8fd00067k", "10.1039/c8np00012c", "10.1039/c8np00021b", "10.1039/c8ob00066b", "10.1039/c8py01190g", "10.1039/c8ra04112a", "10.1039/c8ra09039d", "10.1039/c8ra09825e", "10.1039/c8sc03558j", "10.1039/c8sm01633j", "10.1039/c8sm02231c", "10.1039/c8ta09403a", "10.1039/c9cs00720b", "10.1039/c9en00981g", "10.1039/c9nr05788a", "10.1039/c9pp00067d", "10.1039/c9pp00261h", "10.1039/c9sc04831f", "10.1039/c9sc05319k", "10.1039/c9sm01782h", "10.1039/d0bm00845a", "10.1039/d0bm01349h", "10.1039/d0cb00191k", "10.1039/d0dt02135k", "10.1039/d0lc00725k", "10.1039/d0md00385a", "10.1039/d0mo00103a", "10.1039/d0mo00159g", "10.1039/d0na01086c", "10.1039/d0nj04610h", "10.1039/d0nj05485b", "10.1039/d0nr08936b", "10.1039/d0ob01116a", "10.1039/d0ra08878a", "10.1039/d0sc00209g", "10.1039/d0sc00502a", "10.1039/d1bm01060c", "10.1039/d1cb00101a", "10.1039/d1cc03080a", "10.1039/d1cp04361g", "10.1039/d1cs01170g", "10.1039/d1np00004g", "10.1039/d1sc05088e", "10.1039/d1sc05088e", "10.1039/d1sc05976a", "10.1039/d1sd00023c", "10.1039/d1sm01003d", "10.1039/d1sm01291f", "10.1039/d2bm01493a", "10.1039/d2bm01846b", "10.1039/d2cs00197g", "10.1039/d2cs00764a", "10.1039/d2na00384h", "10.1039/d2nj05306c", "10.1039/d2sc00534d", "10.1039/d2sc04984h", "10.1039/d2sc06576b", "10.1039/d2tb02200a", "10.1039/d3cc04630c", "10.1039/d3cp02628k", "10.1039/d3cs00344b", "10.1039/d3ma00853c", "10.1039/d3mh00249g", "10.1039/d3na00198a", "10.1039/d3sc00022b", "10.1039/d3sc03989g", "10.1039/d4bm00548a", "10.1039/d4dd00013g", "10.1039/d4ra01690d", "10.1042/bcj20160031", "10.1042/bcj20160041", "10.1042/bcj20160516", "10.1042/bcj20160537", "10.1042/bcj20170441", "10.1042/bcj20170692", "10.1042/bcj20180232", "10.1042/bcj20180365", "10.1042/bcj20190579", "10.1042/bcj20190839", "10.1042/bcj20220051", "10.1042/bj20020658", "10.1042/bj20020957", "10.1042/bj20021594", "10.1042/bj20031797", "10.1042/bj20041044", "10.1042/bj20041807", "10.1042/bj20050143", "10.1042/bj20050683", "10.1042/bj20051137", "10.1042/bj20051436", "10.1042/bj20051667", "10.1042/bj20060725", "10.1042/bj20071115", "10.1042/bj20071489", "10.1042/bj20080359", "10.1042/bj20080595", "10.1042/bj20100446", "10.1042/bj20101749", "10.1042/bj20101894", "10.1042/bj20110002", "10.1042/bj20110440", "10.1042/bj20121107", "10.1042/bj20121792", "10.1042/bj20130838", "10.1042/bj20140145", "10.1042/bj20140511", "10.1042/bj20150190", "10.1042/bj20150461", "10.1042/bj20150931", "10.1042/bj20151112", "10.1042/bj20151271", "10.1042/bj3090167", "10.1042/bj3170891", "10.1042/bj3280171", "10.1042/bj3301137", "10.1042/bj3350637", "10.1042/bj3420345", "10.1042/bj3510095", "10.1042/bj3550489", "10.1042/bj4300559v", "10.1042/bse0480245/78427", "10.1042/bsr20120105", "10.1042/bsr20140119", "10.1042/bsr20160183", "10.1042/bsr20160364", "10.1042/bsr20180323", "10.1042/bsr20221036", "10.1042/bsr20221269", "10.1042/bss0730203", "10.1042/bst0140410", "10.1042/bst0300001", "10.1042/bst0330306", "10.1042/bst0330371", "10.1042/bst0341183", "10.1042/bst0360046", "10.1042/bst0360306", "10.1042/bst0390679", "10.1042/bst20120013", "10.1042/bst20120066", "10.1042/bst20120183", "10.1042/bst20130132", "10.1042/bst20130214", "10.1042/bst20130227", "10.1042/bst20160277", "10.1042/bst20160303", "10.1042/bst20160367", "10.1042/bst20160426", "10.1042/bst20170052", "10.1042/bst20170435", "10.1042/bst20170442", "10.1042/bst20170501", "10.1042/bst20170568", "10.1042/bst20170576", "10.1042/bst20180025", "10.1042/bst20180079", "10.1042/bst20180507", "10.1042/bst20190023", "10.1042/bst20191094", "10.1042/bst20200109", "10.1042/bst20200382", "10.1042/bst20210863", "10.1042/bst20221147", "10.1042/cs20171157", "10.1042/cs20190893", "10.1042/ebc20190030", "10.1042/ebc20200108", "10.1042/ebc20220059", "10.1042/ebc20220167", "10.1042/etls20160019", "10.1042/etls20190176", "10.1042/etls20210245", "10.1042/etls20210267", "10.1042/ns20210020", "10.1046/j.0019-2805.2001.01241.x", "10.1046/j.0953-816x.2001.01683.x", "10.1046/j.1365-2249.2003.02298.x", "10.1046/j.1365-2443.2003.00620.x", "10.1046/j.1365-2443.2003.00662.x", "10.1046/j.1365-2613.2000.00142", "10.1046/j.1365-2672.1999.00905.x", "10.1046/j.1365-2893.1999.00151.x", "10.1046/j.1365-2958.1997.2521620.x", "10.1046/j.1365-2958.2002.02779.x", "10.1046/j.1365-2958.2003.03670.x", "10.1046/j.1365-3083.2001.00885.x", "10.1046/j.1365-3156.1999.00361.x", "10.1046/j.1365-3156.2003.01169.x", "10.1046/j.1460-9568.1999.00421.x", "10.1046/j.1460-9568.2002.02238.x", "10.1046/j.1460-9568.2002.02268", "10.1046/j.1461-0248.2003.00509.x", "10.1046/j.1462-5822.2003.00351.x", "10.1046/j.1469-8137.1998.00316.x", "10.1046/j.1469-8137.1999.00448.x", "10.1046/j.1471-4159.1994.63051880.x", "10.1046/j.1523-1747.2000.00009.x", "10.1046/j.1523-1755.2000.00188.x", "10.1046/j.1523-1755.61.s80.24.x", "10.1049/mnl.2017.0457", "10.1051/epjconf/20122200009", "10.1051/medsci/2023080", "10.1051/medsci/2023115", "10.1051/vetres/2009020", "10.1053/j.ctsap.2005.07.004", "10.1053/j.gastro.2008.03.023", "10.1053/j.gastro.2008.05.079", "10.1053/j.gastro.2013.12.002", "10.1053/j.gastro.2018.06.078", "10.1053/j.gastro.2018.08.022", "10.1053/j.semdp.2019.04.012", "10.1053/j.seminhematol.2010.06.004", "10.1053/j.seminhematol.2013.09.001", "10.1053/j.seminhematol.2016.05.007", "10.1054/drup.2001.0213", "10.1055/s-0030-1255354", "10.1055/s-0030-1260010", "10.1055/s-0035-1568139", "10.1055/s-0040-1715441", "10.1055/s-2000-9858", "10.1055/s-2001-11900", "10.1056/nejm198512053132327", "10.1056/nejm199609123351107", "10.1056/nejm199801223380404", "10.1056/nejm199910213411703", "10.1056/nejm200105243442104", "10.1056/nejmc0909845", "10.1056/nejmoa032922", "10.1056/nejmoa1011923", "10.1056/nejmoa1113205", "10.1056/nejmoa1200694", "10.1056/nejmoa1302369", "10.1056/nejmoa1304369", "10.1056/nejmoa1307362", "10.1056/nejmoa1406459", "10.1056/nejmoa1407222", "10.1056/nejmoa1509277", "10.1056/nejmoa1705971", "10.1056/nejmoa1915745", "10.1056/nejmoa2035002", "10.1056/nejmra052166", "10.1056/nejmra0708126", "10.1063/1.1564600", "10.1063/1.1931663", "10.1063/1.328693", "10.1063/1.3363609", "10.1063/1.3524533", "10.1063/1.448118", "10.1063/1.4756796", "10.1063/1.4802990", "10.1063/1.4932193", "10.1063/1.4940213", "10.1063/1.4994601", "10.1063/1.5006104", "10.1063/1.5129191", "10.1063/1.865584", "10.1063/1.881812", "10.1063/1674-0068/27/01/29-38", "10.1063/5.0007192", "10.1063/5.0011141", "10.1063/5.0014677", "10.1063/5.0018402", "10.1063/5.0039911", "10.1063/5.0040283", "10.1063/5.0043566", "10.1063/5.0070828", "10.1063/5.0100505", "10.1063/5.0124538", "10.1063/5.0139181", "10.1063/5.0161517", "10.1071/is13010", "10.1073/pnas.002024599", "10.1073/pnas.012601899", "10.1073/pnas.012602099", "10.1073/pnas.022575999", "10.1073/pnas.0400569101", "10.1073/pnas.0400611101", "10.1073/pnas.0403760101", "10.1073/pnas.0407499102", "10.1073/pnas.0407902101", "10.1073/pnas.0408031102", "10.1073/pnas.0409159102", "10.1073/pnas.041590298", "10.1073/pnas.0500187102", "10.1073/pnas.0501424102", "10.1073/pnas.0503272102", "10.1073/pnas.0506580102", "10.1073/pnas.0507693102", "10.1073/pnas.0508732102", "10.1073/pnas.0508945102", "10.1073/pnas.0509809103", "10.1073/pnas.0510182103", "10.1073/pnas.0510291103", "10.1073/pnas.0511238103", "10.1073/pnas.051634398", "10.1073/pnas.0600644103", "10.1073/pnas.0602039103", "10.1073/pnas.0602817103", "10.1073/pnas.0603620103", "10.1073/pnas.0605730104", "10.1073/pnas.0605738103", "10.1073/pnas.0607015103", "10.1073/pnas.0609174104", "10.1073/pnas.0610849104", "10.1073/pnas.0610879104", "10.1073/pnas.0611235104", "10.1073/pnas.0701291104", "10.1073/pnas.0702136104", "10.1073/pnas.0702394104", "10.1073/pnas.0702448104", "10.1073/pnas.0702576104", "10.1073/pnas.0703162104", "10.1073/pnas.0703218104", "10.1073/pnas.0704751104", "10.1073/pnas.0705464104", "10.1073/pnas.0707277105", "10.1073/pnas.0707522105", "10.1073/pnas.0707945104", "10.1073/pnas.0708100105", "10.1073/pnas.0708917105", "10.1073/pnas.0709969105", "10.1073/pnas.0710156104", "10.1073/pnas.0711128105", "10.1073/pnas.0711257105", "10.1073/pnas.0711446105", "10.1073/pnas.0712162105", "10.1073/pnas.0712231105", "10.1073/pnas.0731830100", "10.1073/pnas.0802465105", "10.1073/pnas.0803787105", "10.1073/pnas.0804918105", "10.1073/pnas.0805186105", "10.1073/pnas.0805857105", "10.1073/pnas.0809784106", "10.1073/pnas.081011098", "10.1073/pnas.0812687106", "10.1073/pnas.082243699", "10.1073/pnas.0900301106", "10.1073/pnas.090034797", "10.1073/pnas.0900641106", "10.1073/pnas.0901315106", "10.1073/pnas.0901851107", "10.1073/pnas.0902175106", "10.1073/pnas.0902454106", "10.1073/pnas.0903907107", "10.1073/pnas.0904223106", "10.1073/pnas.0906361106", "10.1073/pnas.0907240107", "10.1073/pnas.0907522106", "10.1073/pnas.0907739107", "10.1073/pnas.0908641106", "10.1073/pnas.0909122107", "10.1073/pnas.0911253107", "10.1073/pnas.0911517107", "10.1073/pnas.0911566106", "10.1073/pnas.0911640106", "10.1073/pnas.0912260107", "10.1073/pnas.091324398", "10.1073/pnas.0913535107", "10.1073/pnas.0914613107", "10.1073/pnas.0914803107", "10.1073/pnas.0915063107", "10.1073/pnas.0915137107", "10.1073/pnas.1000082107", "10.1073/pnas.1000154107", "10.1073/pnas.1000475107", "10.1073/pnas.1000601107", "10.1073/pnas.1001229107", "10.1073/pnas.1002569107", "10.1073/pnas.1003666107", "10.1073/pnas.1004290107", "10.1073/pnas.1005633107", "10.1073/pnas.1006036107", "10.1073/pnas.1006645107", "10.1073/pnas.1007336107", "10.1073/pnas.1008203109", "10.1073/pnas.1008209107", "10.1073/pnas.1008322108", "10.1073/pnas.1008437107", "10.1073/pnas.1009405107", "10.1073/pnas.1010662107", "10.1073/pnas.1013106107", "10.1073/pnas.1013493107", "10.1073/pnas.1014515107", "10.1073/pnas.1016071107", "10.1073/pnas.1016959108", "10.1073/pnas.1017099108", "10.1073/pnas.1017150108", "10.1073/pnas.1019002108", "10.1073/pnas.1019304108", "10.1073/pnas.1019383108", "10.1073/pnas.1100230108", "10.1073/pnas.1100262108", "10.1073/pnas.1100426108", "10.1073/pnas.1100584108", "10.1073/pnas.1100957108", "10.1073/pnas.1104821108", "10.1073/pnas.1104892108", "10.1073/pnas.1105108108", "10.1073/pnas.1105414108", "10.1073/pnas.1105469108", "10.1073/pnas.1107297108", "10.1073/pnas.1107553108", "10.1073/pnas.1108190108", "10.1073/pnas.1109873108", "10.1073/pnas.111145098", "10.1073/pnas.1111915108", "10.1073/pnas.1113260108", "10.1073/pnas.1113521108", "10.1073/pnas.1114802109", "10.1073/pnas.1119474109", "10.1073/pnas.1121231109", "10.1073/pnas.1200194109", "10.1073/pnas.1202392109", "10.1073/pnas.1204406109", "10.1073/pnas.1204773109", "10.1073/pnas.1204799109", "10.1073/pnas.1206052109", "10.1073/pnas.1206506109", "10.1073/pnas.1206923109", "10.1073/pnas.1207518110", "10.1073/pnas.1208424109", "10.1073/pnas.1208927109", "10.1073/pnas.1210309109", "10.1073/pnas.1210688109", "10.1073/pnas.1210770110", "10.1073/pnas.1210882109", "10.1073/pnas.1212904110", "10.1073/pnas.1213431110", "10.1073/pnas.1214107109", "10.1073/pnas.1216867110", "10.1073/pnas.1217306110", "10.1073/pnas.1218330110", "10.1073/pnas.1218613110", "10.1073/pnas.1219502110", "10.1073/pnas.1220145110", "10.1073/pnas.1220341110", "10.1073/pnas.1220645110", "10.1073/pnas.1222054110", "10.1073/pnas.1222375110", "10.1073/pnas.1233791100", "10.1073/pnas.1300130110", "10.1073/pnas.1300457110", "10.1073/pnas.1300595110", "10.1073/pnas.1300627110", "10.1073/pnas.1300853110", "10.1073/pnas.1301224110", "10.1073/pnas.1301301110", "10.1073/pnas.130193297", "10.1073/pnas.1303376110", "10.1073/pnas.1306179110", "10.1073/pnas.1308419110", "10.1073/pnas.1310755111", "10.1073/pnas.1312691110", "10.1073/pnas.1312789111", "10.1073/pnas.1313587110", "10.1073/pnas.1316064110", "10.1073/pnas.1316278111", "10.1073/pnas.1316316110", "10.1073/pnas.1317695111", "10.1073/pnas.1318807111", "10.1073/pnas.1318948111", "10.1073/pnas.1319164111", "10.1073/pnas.1319738111", "10.1073/pnas.1320308111", "10.1073/pnas.1321200111", "10.1073/pnas.1321745111", "10.1073/pnas.1322292111", "10.1073/pnas.1322494111", "10.1073/pnas.1323549111", "10.1073/pnas.1400711111", "10.1073/pnas.1401820111", "10.1073/pnas.1401891111", "10.1073/pnas.1402289111", "10.1073/pnas.1405700111", "10.1073/pnas.1406908111", "10.1073/pnas.1408124111", "10.1073/pnas.1408549111", "10.1073/pnas.1410767112", "10.1073/pnas.1411284111", "10.1073/pnas.141230798", "10.1073/pnas.1413089111", "10.1073/pnas.1413234112", "10.1073/pnas.1416485112", "10.1073/pnas.1416537112", "10.1073/pnas.1417508112", "10.1073/pnas.1418163112", "10.1073/pnas.1420294112", "10.1073/pnas.142291299", "10.1073/pnas.1500973112", "10.1073/pnas.1501764112", "10.1073/pnas.1504276112", "10.1073/pnas.1504971112", "10.1073/pnas.1505072112", "10.1073/pnas.1506357112", "10.1073/pnas.1506449112", "10.1073/pnas.1506664112", "10.1073/pnas.1506749112", "10.1073/pnas.1507592112", "10.1073/pnas.1507706113", "10.1073/pnas.1509022112", "10.1073/pnas.1510449112", "10.1073/pnas.1512915112", "10.1073/pnas.1514586113", "10.1073/pnas.1515170112", "10.1073/pnas.1518000113", "10.1073/pnas.1519273113", "10.1073/pnas.1520194113", "10.1073/pnas.1520335113", "10.1073/pnas.1522372113", "10.1073/pnas.1523341113", "10.1073/pnas.1525564113", "10.1073/pnas.1530509100", "10.1073/pnas.1600211113", "10.1073/pnas.1602728113", "10.1073/pnas.1604135113", "10.1073/pnas.1605085113", "10.1073/pnas.1605658113", "10.1073/pnas.1605856113", "10.1073/pnas.1606519113", "10.1073/pnas.1606791113", "10.1073/pnas.1607178113", "10.1073/pnas.1607512113", "10.1073/pnas.1607769113", "10.1073/pnas.1607872113", "10.1073/pnas.1608069113", "10.1073/pnas.1608644113", "10.1073/pnas.1610433113", "10.1073/pnas.1610622114", "10.1073/pnas.1611286114", "10.1073/pnas.1611594113", "10.1073/pnas.161284298", "10.1073/pnas.1613365113", "10.1073/pnas.1615771114", "10.1073/pnas.1616132114", "10.1073/pnas.1619525114", "10.1073/pnas.1621150114", "10.1073/pnas.1621161114", "10.1073/pnas.1700091115", "10.1073/pnas.1700600114", "10.1073/pnas.1700695114", "10.1073/pnas.1700939114", "10.1073/pnas.1702488114", "10.1073/pnas.1703088114", "10.1073/pnas.1703420114", "10.1073/pnas.1705301114", "10.1073/pnas.1705884114", "10.1073/pnas.1705887114", "10.1073/pnas.1706016114", "10.1073/pnas.1707335114", "10.1073/pnas.1708341114", "10.1073/pnas.1708731114", "10.1073/pnas.1710470114", "10.1073/pnas.1710702114", "10.1073/pnas.1711486114", "10.1073/pnas.1712127114", "10.1073/pnas.1713646115", "10.1073/pnas.1713901115", "10.1073/pnas.1715378115", "10.1073/pnas.1715996115", "10.1073/pnas.1717116115", "10.1073/pnas.1719029115", "10.1073/pnas.1719110115", "10.1073/pnas.1719355115", "10.1073/pnas.1720897115", "10.1073/pnas.1722056115", "10.1073/pnas.172403999", "10.1073/pnas.1800562115", "10.1073/pnas.1800650115", "10.1073/pnas.1800830115", "10.1073/pnas.1800974115", "10.1073/pnas.1801149115", "10.1073/pnas.1801889115", "10.1073/pnas.1802179115", "10.1073/pnas.1804198115", "10.1073/pnas.1804663115", "10.1073/pnas.1805950115", "10.1073/pnas.1807871115", "10.1073/pnas.1809232115", "10.1073/pnas.1809329116", "10.1073/pnas.1809548115", "10.1073/pnas.1811013115", "10.1073/pnas.1812575115", "10.1073/pnas.1812588116", "10.1073/pnas.1813887116", "10.1073/pnas.1814144116", "10.1073/pnas.1816539115", "10.1073/pnas.1817352116", "10.1073/pnas.1817752116", "10.1073/pnas.1818256116", "10.1073/pnas.1818707116", "10.1073/pnas.1819276116", "10.1073/pnas.1819992116", "10.1073/pnas.1821601116", "10.1073/pnas.1900055116", "10.1073/pnas.1900548116", "10.1073/pnas.1901318116", "10.1073/pnas.1901382116", "10.1073/pnas.1901572116", "10.1073/pnas.1902288116", "10.1073/pnas.1902298117", "10.1073/pnas.1902299116", "10.1073/pnas.1902731116", "10.1073/pnas.1902847116", "10.1073/pnas.1902902116", "10.1073/pnas.1903002116", "10.1073/pnas.1903049116", "10.1073/pnas.1903216116", "10.1073/pnas.1904587116", "10.1073/pnas.1905721116", "10.1073/pnas.1907199116", "10.1073/pnas.1908052116", "10.1073/pnas.1908165116", "10.1073/pnas.1908723117", "10.1073/pnas.1910364117", "10.1073/pnas.1910854117", "10.1073/pnas.1911362116", "10.1073/pnas.1911742117", "10.1073/pnas.1912432116", "10.1073/pnas.1913232116", "10.1073/pnas.1913904117", "10.1073/pnas.1913940117", "10.1073/pnas.1914076117", "10.1073/pnas.1914361117", "10.1073/pnas.1914505117", "10.1073/pnas.1914571116", "10.1073/pnas.1914677117", "10.1073/pnas.1915275117", "10.1073/pnas.1915888117", "10.1073/pnas.1916948117", "10.1073/pnas.1921046117", "10.1073/pnas.1921055117", "10.1073/pnas.1921786117", "10.1073/pnas.1922159117", "10.1073/pnas.1922216117", "10.1073/pnas.1936251100", "10.1073/pnas.2000372117", "10.1073/pnas.2000467117", "10.1073/pnas.2000942117", "10.1073/pnas.2001637117", "10.1073/pnas.2003138117", "10.1073/pnas.2003236117", "10.1073/pnas.2004170117", "10.1073/pnas.2005981117", "10.1073/pnas.2006908117", "10.1073/pnas.2008209117", "10.1073/pnas.2008509117", "10.1073/pnas.2008672117", "10.1073/pnas.2008940117", "10.1073/pnas.2010890117", "10.1073/pnas.2011301117", "10.1073/pnas.2012404117", "10.1073/pnas.2020653118", "10.1073/pnas.2131948100", "10.1073/pnas.2133080100", "10.1073/pnas.2220578120", "10.1073/pnas.2235593100", "10.1073/pnas.2235735100", "10.1073/pnas.2317878121", "10.1073/pnas.2319641121", "10.1073/pnas.2320421121", "10.1073/pnas.2322520121", "10.1073/pnas.2334605100", "10.1073/pnas.2634794100", "10.1073/pnas.41.6.344", "10.1073/pnas.46.7.972", "10.1073/pnas.54.6.1665", "10.1073/pnas.58.2.719", "10.1073/pnas.70.1.240", "10.1073/pnas.71.4.1286", "10.1073/pnas.71.4.1342", "10.1073/pnas.75.8.3593", "10.1073/pnas.76.1.170", "10.1073/pnas.76.10.5061", "10.1073/pnas.77.11.6715", "10.1073/pnas.84.23.8573", "10.1073/pnas.84.24.9238", "10.1073/pnas.87.11.4189", "10.1073/pnas.87.15.5837", "10.1073/pnas.88.11.4996", "10.1073/pnas.88.19.8495", "10.1073/pnas.88.9.3608", "10.1073/pnas.89.11.4898", "10.1073/pnas.89.11.5053", "10.1073/pnas.89.20.9489", "10.1073/pnas.89.21.10242", "10.1073/pnas.90.18.8319", "10.1073/pnas.90.18.8424", "10.1073/pnas.91.10.4509", "10.1073/pnas.91.10.4514", "10.1073/pnas.92.17.7681", "10.1073/pnas.92.20.9363", "10.1073/pnas.93.12.6059", "10.1073/pnas.93.16.8413", "10.1073/pnas.93.18.9374", "10.1073/pnas.93.24.13629", "10.1073/pnas.93.26.15299", "10.1073/pnas.93.8.3444", "10.1073/pnas.94.10.5201", "10.1073/pnas.94.11.5525", "10.1073/pnas.94.14.7156", "10.1073/pnas.94.7.2939", "10.1073/pnas.95.13.7469", "10.1073/pnas.95.16.9448", "10.1073/pnas.95.16.9608", "10.1073/pnas.95.21.12504", "10.1073/pnas.95.24.14006", "10.1073/pnas.95.25.14628", "10.1073/pnas.95.26.15481", "10.1073/pnas.95.6.3168", "10.1073/pnas.95.8.4504", "10.1073/pnas.96.10.5575", "10.1073/pnas.96.10.5768", "10.1073/pnas.96.17.9574", "10.1073/pnas.96.4.1597", "10.1073/pnas.96.9.5263", "10.1073/pnas.97.10.5551", "10.1073/pnas.98.4.1422", "10.1073/pnas.98.4.1871", "10.1074/jbc.270.46.27489", "10.1074/jbc.270.51.30701", "10.1074/jbc.271.25.14707", "10.1074/jbc.271.34.20608", "10.1074/jbc.271.39.23865", "10.1074/jbc.271.42.26057", "10.1074/jbc.272.40.25200", "10.1074/jbc.273.10.5858", "10.1074/jbc.273.15.9179", "10.1074/jbc.273.20.12296", "10.1074/jbc.273.23.14315", "10.1074/jbc.273.36.23019", "10.1074/jbc.273.40.25637", "10.1074/jbc.273.44.29202", "10.1074/jbc.274.1.305", "10.1074/jbc.274.21.15194", "10.1074/jbc.274.48.34089", "10.1074/jbc.274.6.3363", "10.1074/jbc.275.6.4391", "10.1074/jbc.a806395200", "10.1074/jbc.c000576200", "10.1074/jbc.c114.581868", "10.1074/jbc.c114.602698", "10.1074/jbc.m000008200", "10.1074/jbc.m000740200", "10.1074/jbc.m001854200", "10.1074/jbc.m002788200", "10.1074/jbc.m003362200", "10.1074/jbc.m005299200", "10.1074/jbc.m005699200", "10.1074/jbc.m006227200", "10.1074/jbc.m010208200", "10.1074/jbc.m101584200", "10.1074/jbc.m105148200", "10.1074/jbc.m108332200", "10.1074/jbc.m109.022061", "10.1074/jbc.m109.063032", "10.1074/jbc.m109.066191", "10.1074/jbc.m109.076091", "10.1074/jbc.m109.083527", "10.1074/jbc.m109.087098", "10.1074/jbc.m109.089821", "10.1074/jbc.m109.092403", "10.1074/jbc.m109.096958", "10.1074/jbc.m109.096974", "10.1074/jbc.m109.099382", "10.1074/jbc.m109287200", "10.1074/jbc.m110.108555", "10.1074/jbc.m110.121707", "10.1074/jbc.m110.141929", "10.1074/jbc.m110.178780", "10.1074/jbc.m110.194092", "10.1074/jbc.m110.206193", "10.1074/jbc.m110.212027", "10.1074/jbc.m110103200", "10.1074/jbc.m110146200", "10.1074/jbc.m111.223362", "10.1074/jbc.m111.225334", "10.1074/jbc.m111.233734", "10.1074/jbc.m111.243410", "10.1074/jbc.m111.243923", "10.1074/jbc.m111.247536", "10.1074/jbc.m111.247973", "10.1074/jbc.m111.274126", "10.1074/jbc.m111.277798", "10.1074/jbc.m111.284885", "10.1074/jbc.m111.304279", "10.1074/jbc.m111.312645", "10.1074/jbc.m111.315127", "10.1074/jbc.m111.318329", "10.1074/jbc.m111.322917", "10.1074/jbc.m111.326207", "10.1074/jbc.m111.333252", "10.1074/jbc.m111.336024", "10.1074/jbc.m112.342345", "10.1074/jbc.m112.350066", "10.1074/jbc.m112.351122", "10.1074/jbc.m112.358226", "10.1074/jbc.m112.363630", "10.1074/jbc.m112.364125", "10.1074/jbc.m112.376160", "10.1074/jbc.m112.393769", "10.1074/jbc.m112.394841", "10.1074/jbc.m112.396838", "10.1074/jbc.m112.428110", "10.1074/jbc.m112.435149", "10.1074/jbc.m112.435289", "10.1074/jbc.m112.443416", "10.1074/jbc.m112360200", "10.1074/jbc.m113.455105", "10.1074/jbc.m113.471045", "10.1074/jbc.m113.474924", "10.1074/jbc.m113.482596", "10.1074/jbc.m113.483719", "10.1074/jbc.m113.485789", "10.1074/jbc.m113.491134", "10.1074/jbc.m113.505917", "10.1074/jbc.m113.515692", "10.1074/jbc.m113.523456", "10.1074/jbc.m113.523753", "10.1074/jbc.m113.526269", "10.1074/jbc.m114.556704", "10.1074/jbc.m114.569657", "10.1074/jbc.m114.589382", "10.1074/jbc.m114.590638", "10.1074/jbc.m114.607481", "10.1074/jbc.m114.619619", "10.1074/jbc.m114.621110", "10.1074/jbc.m114.621730", "10.1074/jbc.m114.632109", "10.1074/jbc.m114.633800", "10.1074/jbc.m115.641340", "10.1074/jbc.m115.646737", "10.1074/jbc.m115.657486", "10.1074/jbc.m115.677328", "10.1074/jbc.m115.679852", "10.1074/jbc.m115.679902", "10.1074/jbc.m115.681338", "10.1074/jbc.m115.683797", "10.1074/jbc.m115.691584", "10.1074/jbc.m115.697615", "10.1074/jbc.m115.699801", "10.1074/jbc.m115.700625", "10.1074/jbc.m115.703868", "10.1074/jbc.m116.727578", "10.1074/jbc.m116.733766", "10.1074/jbc.m116.737312", "10.1074/jbc.m116.741660", "10.1074/jbc.m116.746164", "10.1074/jbc.m116.747956", "10.1074/jbc.m116.749366", "10.1074/jbc.m116.752659", "10.1074/jbc.m116.770321", "10.1074/jbc.m116.773945", "10.1074/jbc.m117.788000", "10.1074/jbc.m117.789917", "10.1074/jbc.m117.793117", "10.1074/jbc.m117.797928", "10.1074/jbc.m117.798207", "10.1074/jbc.m117.799346", "10.1074/jbc.m117.804237", "10.1074/jbc.m117.804971", "10.1074/jbc.m117.809293", "10.1074/jbc.m117.810325", "10.1074/jbc.m200088200", "10.1074/jbc.m200363200", "10.1074/jbc.m201196200", "10.1074/jbc.m202042200", "10.1074/jbc.m203185200", "10.1074/jbc.m203371200", "10.1074/jbc.m205873200", "10.1074/jbc.m206279200", "10.1074/jbc.m207265200", "10.1074/jbc.m208105200", "10.1074/jbc.m208641200", "10.1074/jbc.m211117200", "10.1074/jbc.m211765200", "10.1074/jbc.m212919200", "10.1074/jbc.m300365200", "10.1074/jbc.m300874200", "10.1074/jbc.m301639200", "10.1074/jbc.m304331200", "10.1074/jbc.m308287200", "10.1074/jbc.m308644200", "10.1074/jbc.m309457200", "10.1074/jbc.m400228200", "10.1074/jbc.m404559200", "10.1074/jbc.m405001200", "10.1074/jbc.m405853200", "10.1074/jbc.m410722200", "10.1074/jbc.m411069200", "10.1074/jbc.m411280200", "10.1074/jbc.m412939200", "10.1074/jbc.m413146200", "10.1074/jbc.m414092200", "10.1074/jbc.m414328200", "10.1074/jbc.m504942200", "10.1074/jbc.m506770200", "10.1074/jbc.m507719200", "10.1074/jbc.m511464200", "10.1074/jbc.m511951200", "10.1074/jbc.m600403200", "10.1074/jbc.m603275200", "10.1074/jbc.m604955200", "10.1074/jbc.m607987200", "10.1074/jbc.m609543200", "10.1074/jbc.m610094200", "10.1074/jbc.m610193200", "10.1074/jbc.m610207200", "10.1074/jbc.m611283200", "10.1074/jbc.m700517200", "10.1074/jbc.m701841200", "10.1074/jbc.m703229200", "10.1074/jbc.m705898200", "10.1074/jbc.m708919200", "10.1074/jbc.m709500200", "10.1074/jbc.m709581200", "10.1074/jbc.m710042200", "10.1074/jbc.m801703200", "10.1074/jbc.m803934200", "10.1074/jbc.m804274200", "10.1074/jbc.m908162199", "10.1074/jbc.r111.252569", "10.1074/jbc.r115.692665", "10.1074/jbc.r115.695056", "10.1074/jbc.r116.714980", "10.1074/jbc.ra117.000164", "10.1074/jbc.ra117.000959", "10.1074/jbc.ra118.001794", "10.1074/jbc.ra118.001969", "10.1074/jbc.ra118.002297", "10.1074/jbc.ra118.002462", "10.1074/jbc.ra118.002844", "10.1074/jbc.ra118.004021", "10.1074/jbc.ra118.004462", "10.1074/jbc.ra118.005914", "10.1074/jbc.ra118.006379", "10.1074/jbc.ra119.008742", "10.1074/jbc.ra119.008781", "10.1074/jbc.ra119.010123", "10.1074/jbc.ra119.011464", "10.1074/jbc.ra119.012423", "10.1074/jbc.ra120.012618", "10.1074/jbc.ra120.012892", "10.1074/jbc.ra120.013978", "10.1074/jbc.ra120.014062", "10.1074/jbc.rev118.002810", "10.1074/jbc.rev119.006545", "10.1074/jbc.tm118.004166", "10.1074/mcp.m110.006411", "10.1074/mcp.m111.008326", "10.1074/mcp.m111.009241", "10.1074/mcp.m112.025635", "10.1074/mcp.m112.026583", "10.1074/mcp.m113.033977", "10.1074/mcp.m114.040956", "10.1074/mcp.m115.051151", "10.1074/mcp.m116.061044", "10.1074/mcp.m116.061804", "10.1074/mcp.m116.063065", "10.1074/mcp.m300060-mcp200", "10.1074/mcp.m700264-mcp200", "10.1074/mcp.m900299-mcp200", "10.1074/mcp.m900479-mcp200", "10.1074/mcp.o113.032748", "10.1074/mcp.r110.003871", "10.1074/mcp.ra120.002212", "10.1074/mcp.tir118.000850", "10.1078/0044-5231-00025", "10.1078/0171-9335-00432", "10.1079/cabicompendium.45094", "10.1079/cabicompendium.88213", "10.1079/phn2001145", "10.1079/pwkb.species.18615", "10.1079/pwkb.species.32154", "10.1080/00028487.2017.1281169", "10.1080/00071310220133304", "10.1080/00207454.2018.1545771", "10.1080/00268970009483348", "10.1080/00268976.2010.508754", "10.1080/00268976.2012.681311", "10.1080/00335558008248231", "10.1080/00364827.1999.10420431", "10.1080/00365521.2020.1722738", "10.1080/00423114.2014.956126", "10.1080/01480545.2020.1726380", "10.1080/01932691.2021.1925559", "10.1080/02646830500381930", "10.1080/02648725.2017.1307673", "10.1080/0267257x.2020.1718740", "10.1080/03008207.2016.1271797", "10.1080/03066150.2013.801340", "10.1080/07060660309507001", "10.1080/07060660509507194", "10.1080/07352680701572966", "10.1080/07357907.2019.1630633", "10.1080/07388550500248563", "10.1080/07388551.2018.1554621", "10.1080/07388551.2019.1594153", "10.1080/07388551.2020.1768043", "10.1080/07391102.2012.698379", "10.1080/07391102.2014.913989", "10.1080/07391102.2015.1063455", "10.1080/07391102.2016.1160841", "10.1080/07391102.2017.1336487", "10.1080/07391102.2019.1652689", "10.1080/07391102.2019.1704880", "10.1080/07391102.2020.1717628", "10.1080/07391102.2020.1734484", "10.1080/07391102.2020.1772880", "10.1080/07391102.2020.1798283", "10.1080/07391102.2020.1844801", "10.1080/07391102.2020.1861983", "10.1080/07391102.2022.2029773", "10.1080/07391102.2022.2032354", "10.1080/07391102.2022.2046641", "10.1080/08820139.2020.1775643", "10.1080/08830180802645050", "10.1080/08830185.2017.1284212", "10.1080/08830185.2021.1955876", "10.1080/08916934.2019.1588889", "10.1080/08927020601013817", "10.1080/08927022.2012.700486", "10.1080/08958370490439597", "10.1080/08958378.2018.1533053", "10.1080/08989621.2014.956867", "10.1080/09168451.2016.1179092", "10.1080/09168451.2019.1631146", "10.1080/09524622.2007.9753582", "10.1080/09537104.2019.1572879", "10.1080/09537104.2021.1936479", "10.1080/09674845.2011.11730340", "10.1080/10253890.2021.1942828", "10.1080/10255842.2013.811234", "10.1080/10408398.2020.1809344", "10.1080/10408410490884757", "10.1080/1040841x.2017.1303661", "10.1080/1040841x.2020.1729695", "10.1080/1040841x.2020.1809346", "10.1080/1040841x.2021.1939266", "10.1080/10409230701260258", "10.1080/10409230701507773", "10.1080/10409238.2017.1325828", "10.1080/10409238.2018.1431605", "10.1080/10409238.2018.1431606", "10.1080/10409238.2019.1603199", "10.1080/1042819031000063444", "10.1080/1042819031000090273", "10.1080/10428194.2016.1193853", "10.1080/10428194.2016.1213828", "10.1080/10428194.2016.1260122", "10.1080/10428194.2017.1421756", "10.1080/10428194.2018.1538511", "10.1080/10428194.2019.1636983", "10.1080/10717544.2018.1474964", "10.1080/10826068.2012.762716", "10.1080/10942912.2018.1560312", "10.1080/1120009x.2019.1599175", "10.1080/13543776.2020.1749263", "10.1080/13683500.2021.1895729", "10.1080/13693780902718347", "10.1080/13697137.2017.1309382", "10.1080/14397595.2019.1651446", "10.1080/14620316.2008.11512469", "10.1080/14656566.2020.1763305", "10.1080/14712598.2019.1685489", "10.1080/14712598.2020.1788540", "10.1080/14712598.2021.1865303", "10.1080/14728222.2019.1565658", "10.1080/14728222.2019.1630380", "10.1080/14728222.2019.1667977", "10.1080/14728222.2020.1823967", "10.1080/147342202753671277", "10.1080/14734220410019066", "10.1080/14734220600791477", "10.1080/14737140.2020.1760093", "10.1080/14737159.2018.1439382", "10.1080/14737175.2018.1510321", "10.1080/14786435.2019.1671998", "10.1080/14787210.2020.1816824", "10.1080/152165400410182", "10.1080/1521654031000110208", "10.1080/15216540600686888", "10.1080/15216540701472113", "10.1080/15257770008032995", "10.1080/15287394.2017.1355863", "10.1080/15376516.2021.1894624", "10.1080/15384101.2015.1026492", "10.1080/15384101.2015.1090062", "10.1080/15384101.2015.1093705", "10.1080/15384101.2016.1261767", "10.1080/15384101.2017.1403685", "10.1080/15384101.2017.1414682", "10.1080/15384101.2020.1717025", "10.1080/15384101.2020.1758435", "10.1080/15402002.2013.845782", "10.1080/15412555.2018.1537365", "10.1080/15476286.2015.1008360", "10.1080/15476286.2016.1259781", "10.1080/15476286.2017.1282025", "10.1080/15476286.2017.1295204", "10.1080/15476286.2018.1511674", "10.1080/15476286.2019.1642712", "10.1080/15476286.2020.1712544", "10.1080/15476286.2020.1734372", "10.1080/15476286.2020.1867797", "10.1080/15476286.2021.1909321", "10.1080/15476286.2021.1931756", "10.1080/15476286.2021.1935572", "10.1080/15548627.2015.1121360", "10.1080/15548627.2016.1147669", "10.1080/15548627.2018.1503146", "10.1080/15548627.2019.1630222", "10.1080/15563650.2017.1319066", "10.1080/15583724.2015.1040552", "10.1080/15592294.2015.1107695", "10.1080/15592294.2020.1738026", "10.1080/15592324.2019.1674606", "10.1080/15592324.2021.1913309", "10.1080/1744666x.2018.1450141", "10.1080/17470919.2011.638799", "10.1080/17474124.2018.1517044", "10.1080/19336918.2016.1151607", "10.1080/19336950.2017.1380758", "10.1080/19336950.2019.1700082", "10.1080/19336950.2020.1860382", "10.1080/19336950.2020.1860399", "10.1080/19396368.2020.1753850", "10.1080/19420862.2015.1029215", "10.1080/19420862.2017.1323159", "10.1080/19420862.2019.1578611", "10.1080/19420862.2019.1702262", "10.1080/19420862.2020.1802135", "10.1080/19420862.2020.1840005", "10.1080/19420862.2021.1913791", "10.1080/19420862.2021.1953220", "10.1080/19420862.2021.1958663", "10.1080/19490976.2021.1882927", "10.1080/19490976.2021.1884515", "10.1080/19491034.2015.1096467", "10.1080/19491034.2017.1389365", "10.1080/19491034.2019.1578601", "10.1080/20002297.2020.1868152", "10.1080/20013078.2017.1332941", "10.1080/21541264.2017.1302901", "10.1080/21541264.2018.1486150", "10.1080/21541264.2020.1843958", "10.1080/21592799.2017.1378794", "10.1080/2162402x.2015.1056442", "10.1080/2162402x.2016.1198865", "10.1080/2162402x.2017.1317420", "10.1080/2162402x.2017.1395124", "10.1080/2162402x.2018.1445457", "10.1080/2162402x.2018.1450711", "10.1080/2162402x.2018.1494110", "10.1080/2162402x.2019.1657375", "10.1080/2162402x.2019.1681869", "10.1080/2162402x.2020.1724761", "10.1080/2162402x.2020.1737368", "10.1080/2162402x.2020.1807291", "10.1080/2162402x.2020.1814620", "10.1080/2162402x.2020.1830513", "10.1080/21645515.2020.1730658", "10.1080/21690707.2015.1011008", "10.1080/21691401.2018.1499663", "10.1080/23262133.2015.1058684", "10.1080/23273747.2016.1200344", "10.1080/23723556.2015.1117701", "10.1080/713610853", "10.1081/cbi-120002594", "10.1081/cbi-120002676", "10.1081/imm-100104017", "10.1083/jcb.119.3.493", "10.1083/jcb.127.6.1799", "10.1083/jcb.146.5.905", "10.1083/jcb.200102027", "10.1083/jcb.200505166", "10.1083/jcb.200602071", "10.1083/jcb.200701083", "10.1083/jcb.200805092", "10.1083/jcb.200806049", "10.1083/jcb.201005117", "10.1083/jcb.201009094", "10.1083/jcb.201103008", "10.1083/jcb.201204149", "10.1083/jcb.201403136", "10.1083/jcb.201408060", "10.1083/jcb.201508028", "10.1083/jcb.201603040", "10.1083/jcb.201605024", "10.1083/jcb.201610102", "10.1083/jcb.201807044", "10.1083/jcb.201812106", "10.1083/jcb.201905002", "10.1083/jcb.201910043", "10.1084/jem.176.1.169", "10.1084/jem.176.1.287", "10.1084/jem.180.1.83", "10.1084/jem.182.2.459", "10.1084/jem.182.6.1865", "10.1084/jem.189.1.63", "10.1084/jem.192.4.565", "10.1084/jem.193.5.551", "10.1084/jem.194.1.1", "10.1084/jem.20011692", "10.1084/jem.20030305", "10.1084/jem.20030846", "10.1084/jem.20031255", "10.1084/jem.20051954", "10.1084/jem.20080108", "10.1084/jem.20080124", "10.1084/jem.20080452", "10.1084/jem.20081399", "10.1084/jem.20090858", "10.1084/jem.2009187312910c", "10.1084/jem.20100064", "10.1084/jem.20101459", "10.1084/jem.20102555", "10.1084/jem.20120219", "10.1084/jem.20120340", "10.1084/jem.20121999", "10.1084/jem.20130875", "10.1084/jem.20131853", "10.1084/jem.20142101", "10.1084/jem.20160888", "10.1084/jem.20171079", "10.1084/jem.20172020", "10.1084/jem.20180136", "10.1084/jem.20180729", "10.1084/jem.20181757", "10.1084/jem.20182031", "10.1084/jem.20182304", "10.1084/jem.20190297", "10.1084/jem.20190545", "10.1084/jem.20191711", "10.1084/jem.20192291", "10.1085/jgp.116.3.391", "10.1085/jgp.118.4.341", "10.1085/jgp.118.4.391", "10.1085/jgp.201010475", "10.1085/jgp.201210803", "10.1085/jgp.201411222", "10.1085/jgp.201611653", "10.1085/jgp.201812017", "10.1086/279534", "10.1086/282244", "10.1086/302054", "10.1086/315871", "10.1086/317647", "10.1086/318834", "10.1086/319302", "10.1086/367962", "10.1086/401084", "10.1086/430035", "10.1086/500202", "10.1086/503214", "10.1086/503550", "10.1086/504922", "10.1086/518513", "10.1086/523813", "10.1086/593174", "10.1086/644781", "10.1086/648470", "10.1086/649902", "10.1086/653120", "10.1086/653125", "10.1086/669150", "10.1086/697237", "10.1086/712351", "10.1086/714530", "10.1086/physzool.53.4.30157882", "10.1086/physzool.62.6.30156211", "10.1088/0022-3727/46/11/114002", "10.1088/0034-4885/71/3/036601", "10.1088/0305-4470/37/48/008", "10.1088/0953-4075/33/22/316", "10.1088/0953-8984/22/19/194114", "10.1088/0953-8984/23/3/035401", "10.1088/0957-4484/24/5/055102", "10.1088/0957-4484/25/19/195101", "10.1088/0957-4484/26/29/291002", "10.1088/1361-6455/aa7ac9", "10.1088/1361-648x/aa680e", "10.1088/1361-648x/ab7adb", "10.1088/1361-648x/ac1d6c", "10.1088/1361-651x/aa8ff0", "10.1088/1367-2630/16/7/075002", "10.1088/1367-2630/17/4/043010", "10.1088/1402-4896/ab2b54", "10.1088/1478-3975/10/3/035006", "10.1088/1478-3975/10/6/065002", "10.1088/1741-2552/ab8113", "10.1088/1742-5468/2008/10/p10008", "10.1088/1742-5468/ac650c", "10.1088/1748-3182/1/1/p01", "10.1088/1748-3182/9/1/016001", "10.1088/1748-3182/9/2/025005", "10.1088/1748-3190/aa86ff", "10.1088/1748-605x/aba5f1", "10.1088/1758-5090/abf741", "10.1088/2057-1739/aa7ffb", "10.1088/2057-1976/aacbe1", "10.1088/2632-2153", "10.1088/978-1-6817-4257-1", "10.1089/acm.2009.0633", "10.1089/adt.2010.0326", "10.1089/aid.2008.0090", "10.1089/aid.2009.0155", "10.1089/ars.2006.8.1941", "10.1089/ars.2008.2104", "10.1089/ars.2008.2348", "10.1089/ars.2009.2536", "10.1089/ars.2009.3044", "10.1089/ars.2012.4749", "10.1089/ars.2013.5703", "10.1089/ars.2015.6307", "10.1089/ars.2015.6343", "10.1089/ars.2017.7342", "10.1089/ars.2019.7779", "10.1089/ars.2020.8107", "10.1089/bioe.2023.0014", "10.1089/biores.2014.0022", "10.1089/cmb.2012.0021", "10.1089/crispr.2018.0026", "10.1089/crispr.2021.0052", "10.1089/crispr.2021.0131", "10.1089/crispr.2022.0037", "10.1089/crispr.2022.0084", "10.1089/fpd.2015.1936", "10.1089/fpd.2015.2088", "10.1089/hum.2016.090", "10.1089/hum.2017.034", "10.1089/hum.2018.085", "10.1089/hum.2018.193", "10.1089/hum.2019.264", "10.1089/hum.2020.166", "10.1089/hum.2020.231", "10.1089/jir.2006.26.645", "10.1089/jmf.2016.3740", "10.1089/jop.2016.0090", "10.1089/mdr.2009.0111", "10.1089/mdr.2012.0031", "10.1089/mdr.2014.0234", "10.1089/mdr.2017.0392", "10.1089/mdr.2018.0182", "10.1089/nat.2015.0564", "10.1089/neu.2014.3618", "10.1089/neu.2014.3677", "10.1089/neu.2017.5619", "10.1089/omi.2010.0018", "10.1089/omi.2011.0118", "10.1089/omi.2015.0065", "10.1089/omi.2019.0183", "10.1089/phage.2022.0020", "10.1089/phage.2023.0028", "10.1089/scd.2007.0251", "10.1089/scd.2010.0513", "10.1089/scd.2011.0193", "10.1089/scd.2014.0115", "10.1089/scd.2014.0310", "10.1089/scd.2014.0323", "10.1089/scd.2014.0546", "10.1089/scd.2015.0131", "10.1089/scd.2015.0362", "10.1089/scd.2016.0032", "10.1089/scd.2017.0209", "10.1089/scd.2017.0238", "10.1089/scd.2018.0146", "10.1089/scd.2019.0173", "10.1089/scd.2021.0003", "10.1089/ten.tea.2010.0178", "10.1089/ten.teb.2018.0350", "10.1089/ten.teb.2019.0250", "10.1089/thy.2018.0314", "10.1089/vim.2020.0209", "10.1089/wound.2016.0709", "10.1089/wound.2021.0040", "10.1091/mbc.11.5.1887", "10.1091/mbc.12.8.2482", "10.1091/mbc.12.9.2730", "10.1091/mbc.12.9.2870", "10.1091/mbc.5.4.497", "10.1091/mbc.e02-09-0583", "10.1091/mbc.e02-11-0752", "10.1091/mbc.e03-06-0389", "10.1091/mbc.e05-09-0858", "10.1091/mbc.e06-10-0908", "10.1091/mbc.e07-01-0004", "10.1091/mbc.e07-12-1264", "10.1091/mbc.e08-10-0987", "10.1091/mbc.e10-10-0817", "10.1091/mbc.e12-08-0617", "10.1091/mbc.e12-12-0891", "10.1091/mbc.e13-02-0095", "10.1091/mbc.e14-05-1029", "10.1091/mbc.e14-08-1296", "10.1091/mbc.e14-08-1323", "10.1091/mbc.e15-02-0073", "10.1091/mbc.e15-07-0455", "10.1091/mbc.e15-10-0725", "10.1091/mbc.e16-03-0199", "10.1091/mbc.e16-09-0653", "10.1091/mbc.e16-09-0678", "10.1091/mbc.e16-11-0806", "10.1091/mbc.e17-01-0030", "10.1091/mbc.e17-03-0209", "10.1091/mbc.e17-06-0393", "10.1091/mbc.e18-05-0319", "10.1091/mbc.e22-02-0056", "10.1091/mbc.e22-09-0424", "10.1091/mbc.e23-03-0084", "10.1093/abbs/gmu048", "10.1093/abbs/gmv053", "10.1093/acprof:oso/9780195326598.003.0006", "10.1093/advances/nmz079", "10.1093/ae/tmx062", "10.1093/aesa/93.5.1195f", "10.1093/ajcp/aqz195", "10.1093/aje/kwy213", "10.1093/annonc/mdx428.001", "10.1093/annonc/mdz269.017", "10.1093/aob/mcq266", "10.1093/aob/mcs133", "10.1093/aob/mcu010", "10.1093/aob/mcz029", "10.1093/bfgp/els038", "10.1093/bfgp/elt056", "10.1093/bfgp/elu002", "10.1093/bfgp/elu046", "10.1093/bfgp/elv022", "10.1093/bfgp/elw023", "10.1093/bfgp/elx011", "10.1093/bfgp/elz022", "10.1093/bfgp/elz028", "10.1093/bib/bbaa210", "10.1093/bib/bbab375", "10.1093/bib/bbac102", "10.1093/bib/bbac112", "10.1093/bib/bbac394", "10.1093/bib/bbad358", "10.1093/bib/bbae270", "10.1093/bib/bbv097", "10.1093/bib/bbw066", "10.1093/bib/bbx092", "10.1093/bib/bbz082", "10.1093/bioadv/vbac094", "10.1093/bioadv/vbad191/7511844", "10.1093/bioinformatics/17.10.871", "10.1093/bioinformatics/btaa041", "10.1093/bioinformatics/btaa066/48985624/btaa066", "10.1093/bioinformatics/btab827", "10.1093/bioinformatics/btad030", "10.1093/bioinformatics/btad646", "10.1093/bioinformatics/btae061", "10.1093/bioinformatics/btg029", "10.1093/bioinformatics/bth005", "10.1093/bioinformatics/bth078", "10.1093/bioinformatics/bti1003", "10.1093/bioinformatics/bti1018", "10.1093/bioinformatics/bti107", "10.1093/bioinformatics/bti492", "10.1093/bioinformatics/btl498", "10.1093/bioinformatics/btm121", "10.1093/bioinformatics/btp105", "10.1093/bioinformatics/btp163", "10.1093/bioinformatics/btp352", "10.1093/bioinformatics/btp616", "10.1093/bioinformatics/btp698", "10.1093/bioinformatics/btr064", "10.1093/bioinformatics/btr167", "10.1093/bioinformatics/btr543", "10.1093/bioinformatics/bts199", "10.1093/bioinformatics/bts271", "10.1093/bioinformatics/bts565", "10.1093/bioinformatics/btt054", "10.1093/bioinformatics/btt440", "10.1093/bioinformatics/btt656", "10.1093/bioinformatics/btu048", "10.1093/bioinformatics/btu097", "10.1093/bioinformatics/btu170", "10.1093/bioinformatics/btu638", "10.1093/bioinformatics/btu684", "10.1093/bioinformatics/btu744", "10.1093/bioinformatics/btu781", "10.1093/bioinformatics/btu830", "10.1093/bioinformatics/btv288", "10.1093/bioinformatics/btv321", "10.1093/bioinformatics/btv422", "10.1093/bioinformatics/btv485", "10.1093/bioinformatics/btw108", "10.1093/bioinformatics/btw444", "10.1093/bioinformatics/btw711", "10.1093/bioinformatics/btx092", "10.1093/bioinformatics/btx257", "10.1093/bioinformatics/btx469", "10.1093/bioinformatics/bty191", "10.1093/bioinformatics/bty355", "10.1093/bioinformatics/bty560", "10.1093/bioinformatics/btz641", "10.1093/bioinformatics/btz834", "10.1093/bioinformatics/btz870", "10.1093/bioinformatics/btz904", "10.1093/bioinformatics/btz931", "10.1093/biolinnean/blab152", "10.1093/biolinnean/bly035", "10.1093/biolre/iox033", "10.1093/biolre/iox071", "10.1093/biolre/ioy100", "10.1093/biolre/ioy110", "10.1093/biomet/35.3-4.246", "10.1093/brain/awab136", "10.1093/brain/awac222", "10.1093/brain/awac365", "10.1093/brain/awad017", "10.1093/brain/awm264", "10.1093/brain/awp247", "10.1093/brain/awq042", "10.1093/brain/awq119", "10.1093/brain/awr357", "10.1093/brain/awv385", "10.1093/brain/aww129", "10.1093/brain/awy147", "10.1093/brain/awy209", "10.1093/brain/awz143", "10.1093/brain/awz199", "10.1093/brain/awz267", "10.1093/brain/awz350", "10.1093/braincomms/fcaa028", "10.1093/braincomms/fcz022", "10.1093/carcin/bgp280", "10.1093/carcin/bgr107", "10.1093/carcin/bgt335", "10.1093/carcin/bgu004", "10.1093/carcin/bgu220", "10.1093/cei/uxab028", "10.1093/cei/uxac105", "10.1093/cercor/1.1.1", "10.1093/cercor/12.12.1225", "10.1093/cercor/13.1.5", "10.1093/cercor/4.6.646", "10.1093/cercor/7.7.619", "10.1093/cercor/bhaa333", "10.1093/cercor/bhab020", "10.1093/cercor/bhab153", "10.1093/cercor/bhab315", "10.1093/cercor/bhab438", "10.1093/cercor/bhac052", "10.1093/cercor/bhac070", "10.1093/cercor/bhad227", "10.1093/cercor/bhg097", "10.1093/cercor/bhj046", "10.1093/cercor/bhm059", "10.1093/cercor/bhm095", "10.1093/cercor/bhm167", "10.1093/cercor/bhm185", "10.1093/cercor/bhm189", "10.1093/cercor/bhp050", "10.1093/cercor/bhp061", "10.1093/cercor/bhp100", "10.1093/cercor/bhp155", "10.1093/cercor/bhq217", "10.1093/cercor/bhr178", "10.1093/cercor/bhr191", "10.1093/cercor/bhr361", "10.1093/cercor/bhs141", "10.1093/cercor/bhs184", "10.1093/cercor/bhs254", "10.1093/cercor/bhs291", "10.1093/cercor/bht035", "10.1093/cercor/bht175", "10.1093/cercor/bht243", "10.1093/cercor/bht273", "10.1093/cercor/bht278", "10.1093/cercor/bhu006", "10.1093/cercor/bhu031", "10.1093/cercor/bhu334", "10.1093/cercor/bhv053", "10.1093/cercor/bhv099", "10.1093/cercor/bhv100", "10.1093/cercor/bhv121", "10.1093/cercor/bhv168", "10.1093/cercor/bhw076", "10.1093/cercor/bhw187", "10.1093/cercor/bhw339", "10.1093/cercor/bhx095", "10.1093/cercor/bhx187", "10.1093/cercor/bhx252", "10.1093/cercor/bhx318", "10.1093/cercor/bhy036", "10.1093/cercor/bhy038", "10.1093/cercor/bhy087", "10.1093/cercor/bhy224", "10.1093/cercor/bhz015", "10.1093/cercor/bhz106", "10.1093/cercor/bhz122", "10.1093/cercor/bhz262", "10.1093/cercor/bhz322", "10.1093/chemse/bjp096", "10.1093/chemse/bjy061", "10.1093/cid/ciac203", "10.1093/cid/civ614", "10.1093/cid/ciy357", "10.1093/conphys/cov057/10240413/cov057", "10.1093/conphys/coz088", "10.1093/cvr/cvn138", "10.1093/cz/zoac042", "10.1093/database/bav084/2433217", "10.1093/database/bav095/2433227", "10.1093/database/bax028/3737828", "10.1093/discim/kyad015/7282398", "10.1093/discim/kyad027", "10.1093/dnares/dsaa004", "10.1093/dnares/dsp003", "10.1093/dnares/dsr029", "10.1093/dnares/dss039", "10.1093/dnares/dsu042", "10.1093/ecco-jcc/jjz012", "10.1093/ecco-jcc/jjz175", "10.1093/embo-reports/kve184", "10.1093/embo-reports/kvf197", "10.1093/emboj/17.16.4744", "10.1093/emboj/17.16.4780", "10.1093/emboj/17.6.1819", "10.1093/emboj/18.10.2823", "10.1093/emboj/18.2.470", "10.1093/emboj/18.23.6845", "10.1093/emboj/19.13.3337", "10.1093/emboj/19.17.4439", "10.1093/emboj/19.23.6517", "10.1093/emboj/19.7.1476", "10.1093/emboj/20.10.2367", "10.1093/emboj/20.12.3132", "10.1093/emboj/20.13.3322", "10.1093/emboj/20.3.562", "10.1093/emboj/20.7.1765", "10.1093/emboj/21.5.1210", "10.1093/emboj/cdf527", "10.1093/emboj/cdg173", "10.1093/emboj/cdg241", "10.1093/emboj/cdg258", "10.1093/emboj/cdg417", "10.1093/emboj/cdg436", "10.1093/emboj/cdg507", "10.1093/emboj/cdg579", "10.1093/eurheartj/ehaa664", "10.1093/eurheartj/ehx610", "10.1093/evolinnean/kzad001", "10.1093/femsle/fnv244", "10.1093/femsle/fnw095", "10.1093/femsle/fnw256", "10.1093/femsle/fnz077", "10.1093/femsml/uqad030", "10.1093/femspd/fty044", "10.1093/femsre/fuab051", "10.1093/femsre/fuac005", "10.1093/femsre/fuv028", "10.1093/femsre/fux011", "10.1093/femsre/fuy009", "10.1093/femsre/fuy037", "10.1093/femsyr/foaa065", "10.1093/femsyr/foac044", "10.1093/femsyr/fox004", "10.1093/femsyr/foz087", "10.1093/g3journal/jkaa014", "10.1093/g3journal/jkac033", "10.1093/g3journal/jkac292", "10.1093/g3journal/jkad268", "10.1093/g3journal/jkad293", "10.1093/g3journal/jkae073", "10.1093/gbe/evaa006", "10.1093/gbe/evaa026", "10.1093/gbe/evaa178", "10.1093/gbe/evab070", "10.1093/gbe/evab111", "10.1093/gbe/evab111/40833298/evab111", "10.1093/gbe/evab224", "10.1093/gbe/evad163", "10.1093/gbe/evad201", "10.1093/gbe/evae122", "10.1093/gbe/evae132/7696673", "10.1093/gbe/evq060", "10.1093/gbe/evt028", "10.1093/gbe/evu030", "10.1093/gbe/evu264", "10.1093/gbe/evv039", "10.1093/gbe/evv140", "10.1093/gbe/evv152", "10.1093/gbe/evv192", "10.1093/gbe/evx064", "10.1093/gbe/evx162", "10.1093/gbe/evy012", "10.1093/gbe/evy171", "10.1093/gbe/evz025", "10.1093/gbe/evz131", "10.1093/gbe/evz177", "10.1093/gbe/evz228", "10.1093/gbe/evz246", "10.1093/genetics/120.2.329", "10.1093/genetics/139.2.781", "10.1093/genetics/147.3.1063", "10.1093/genetics/149.4.1633", "10.1093/genetics/153.3.1271", "10.1093/genetics/153.4.1591", "10.1093/genetics/156.2.617", "10.1093/genetics/159.1.119", "10.1093/genetics/159.2.499", "10.1093/genetics/159.4.1765", "10.1093/genetics/161.2.747", "10.1093/genetics/iyaa007", "10.1093/genetics/iyab010", "10.1093/genetics/iyab101", "10.1093/genetics/iyab154", "10.1093/genetics/iyab178", "10.1093/genetics/iyac093/45196247/iyac093", "10.1093/genetics/iyac098", "10.1093/genetics/iyad122", "10.1093/genetics/iyad125/7250256", "10.1093/genetics/iyae102/7694348", "10.1093/gerona/60.1.4", "10.1093/gerona/glq161", "10.1093/gigascience/giab008", "10.1093/gigascience/giad036", "10.1093/glycob/10.10.951", "10.1093/glycob/10.4.431", "10.1093/glycob/3.3.201", "10.1093/glycob/cwaa048", "10.1093/glycob/cwj008", "10.1093/glycob/cwj053", "10.1093/glycob/cwj088", "10.1093/glycob/cwj089", "10.1093/glycob/cwm049", "10.1093/glycob/cwn014", "10.1093/glycob/cws139", "10.1093/glycob/cwt097", "10.1093/glycob/cwu066", "10.1093/glycob/cwu111", "10.1093/glycob/cwu131", "10.1093/glycob/cww086", "10.1093/glycob/cwx108", "10.1093/glycob/cwy017", "10.1093/hmg/11.21.2673", "10.1093/hmg/5.9.1207", "10.1093/hmg/9.8.1161", "10.1093/hmg/ddaa096", "10.1093/hmg/ddaa106", "10.1093/hmg/ddg180", "10.1093/hmg/ddl046", "10.1093/hmg/ddl101", "10.1093/hmg/ddm144", "10.1093/hmg/ddn203", "10.1093/hmg/ddp266", "10.1093/hmg/ddr393", "10.1093/hmg/dds026", "10.1093/hmg/dds145", "10.1093/hmg/ddt327", "10.1093/hmg/ddu239", "10.1093/hmg/ddu360", "10.1093/hmg/ddv228", "10.1093/hmg/ddv246", "10.1093/hmg/ddw143", "10.1093/hmg/ddw328", "10.1093/hmg/ddw370", "10.1093/hmg/ddx217", "10.1093/hmg/ddy134", "10.1093/hr/uhac013/6526914", "10.1093/hr/uhac247", "10.1093/hr/uhae118/7658886", "10.1093/hr/uhae158/7689642", "10.1093/hr/uhae177/7700677", "10.1093/humrep/17.2.413", "10.1093/humrep/deac238", "10.1093/humrep/den190", "10.1093/humrep/dep262", "10.1093/humrep/der082", "10.1093/humrep/der382", "10.1093/humrep/des362", "10.1093/humrep/det245", "10.1093/humupd/dmab009", "10.1093/humupd/dmab016", "10.1093/humupd/dmac032", "10.1093/humupd/dmg027", "10.1093/humupd/dmr014", "10.1093/humupd/dmv051", "10.1093/humupd/dmw026", "10.1093/humupd/dmy030", "10.1093/icb/24.1.157", "10.1093/icb/42.5.1050", "10.1093/icb/icaa124", "10.1093/icb/icaa133", "10.1093/icb/icv013", "10.1093/icb/icv065", "10.1093/icesjms/fsaa145", "10.1093/immadv/ltab012/44157525/ltab012", "10.1093/infdis/jiae309/7692849", "10.1093/infdis/jiu347", "10.1093/infdis/jiv128", "10.1093/infdis/jix193", "10.1093/infdis/jix237", "10.1093/infdis/jiy250", "10.1093/infdis/jiz420", "10.1093/intimm/12.7.977", "10.1093/intimm/dxaa008", "10.1093/intimm/dxg084", "10.1093/intimm/dxh344", "10.1093/intimm/dxm053", "10.1093/intimm/dxr031", "10.1093/intimm/dxr089", "10.1093/intimm/dxu070", "10.1093/intimm/dxu090", "10.1093/intimm/dxx039", "10.1093/intqhc/mzx148", "10.1093/isle/12.1.260", "10.1093/ismejo/wrae099/7693286", "10.1093/jac/42.6.793", "10.1093/jac/dkm265", "10.1093/jac/dkq465", "10.1093/jac/dkr163", "10.1093/jac/dkr565", "10.1093/jac/dkt379", "10.1093/jac/dkt454", "10.1093/jac/dku443", "10.1093/jac/dku486", "10.1093/jac/dku552", "10.1093/jac/dkw411", "10.1093/jac/dkw542", "10.1093/jac/dkz098", "10.1093/jacamr/dlac048", "10.1093/jat/bkt023", "10.1093/jb/mvac096", "10.1093/jb/mvad025", "10.1093/jb/mvad060", "10.1093/jb/mvj089", "10.1093/jb/mvp180", "10.1093/jb/mvv035", "10.1093/jb/mvx053", "10.1093/jmcb/mjab035", "10.1093/jmcb/mjv010", "10.1093/jmcb/mjw051", "10.1093/jmcb/mjy056", "10.1093/jmcb/mjy089", "10.1093/jmcb/mjz020", "10.1093/jmcb/mjz075", "10.1093/jme/tjw061", "10.1093/jmedent/24.2.155", "10.1093/jnci/djh034", "10.1093/jnci/djq044", "10.1093/jnci/djw278", "10.1093/jnci/djx137", "10.1093/jnen/64.6.537", "10.1093/jnen/nlab049", "10.1093/jnen/nlab135", "10.1093/jxb/eraa303", "10.1093/jxb/erac122", "10.1093/jxb/erq125", "10.1093/jxb/erq446", "10.1093/jxb/err340", "10.1093/jxb/ers001", "10.1093/jxb/ers189", "10.1093/jxb/ert003", "10.1093/jxb/ert334", "10.1093/jxb/eru393", "10.1093/jxb/eru484", "10.1093/jxb/erv372", "10.1093/jxb/erw360", "10.1093/jxb/erx026", "10.1093/jxb/ery465", "10.1093/med/9780199746545.003.0087", "10.1093/micmic/ozad067.596", "10.1093/mmy/myy073", "10.1093/mmy/myz088", "10.1093/molbev/msaa015", "10.1093/molbev/msaa057", "10.1093/molbev/msaa270", "10.1093/molbev/msab303", "10.1093/molbev/msi026", "10.1093/molbev/msq157", "10.1093/molbev/mss075", "10.1093/molbev/mss178", "10.1093/molbev/mst010", "10.1093/molbev/msu261", "10.1093/molbev/msv042", "10.1093/molbev/msv082", "10.1093/molbev/msw007", "10.1093/molbev/msx279", "10.1093/molbev/msx311", "10.1093/molbev/msy096", "10.1093/molbev/msy193", "10.1093/molbev/msy245", "10.1093/molbev/msz093", "10.1093/molehr/gaab042", "10.1093/molehr/gaq048", "10.1093/molehr/gat073", "10.1093/molehr/gau027", "10.1093/molehr/gay021", "10.1093/molehr/gay043", "10.1093/molehr/gaz051", "10.1093/nar/11.5.1475", "10.1093/nar/12.12.4849", "10.1093/nar/17.15.6419", "10.1093/nar/18.20.6069", "10.1093/nar/20.22.6115", "10.1093/nar/20.6.1183", "10.1093/nar/21.16.3767", "10.1093/nar/22.22.4673", "10.1093/nar/23.7.1278", "10.1093/nar/24.24.4859", "10.1093/nar/25.17.3389", "10.1093/nar/26.1.112", "10.1093/nar/27.1.29", "10.1093/nar/28.1.235", "10.1093/nar/28.1.27", "10.1093/nar/29.1.22", "10.1093/nar/29.14.2994", "10.1093/nar/29.9.e45", "10.1093/nar/30.6.e23", "10.1093/nar/30.9.e36", "10.1093/nar/gkaa1057", "10.1093/nar/gkaa1074", "10.1093/nar/gkaa112", "10.1093/nar/gkaa1185", "10.1093/nar/gkaa1192", "10.1093/nar/gkaa1239", "10.1093/nar/gkaa1281", "10.1093/nar/gkaa266", "10.1093/nar/gkaa370", "10.1093/nar/gkaa416", "10.1093/nar/gkaa522", "10.1093/nar/gkaa532", "10.1093/nar/gkaa580", "10.1093/nar/gkaa635", "10.1093/nar/gkaa645", "10.1093/nar/gkaa747", "10.1093/nar/gkaa764", "10.1093/nar/gkaa913", "10.1093/nar/gkaa916", "10.1093/nar/gkaa931", "10.1093/nar/gkaa972", "10.1093/nar/gkab1053", "10.1093/nar/gkab1069", "10.1093/nar/gkab1124", "10.1093/nar/gkab116", "10.1093/nar/gkab1281", "10.1093/nar/gkab159", "10.1093/nar/gkab213", "10.1093/nar/gkab235", "10.1093/nar/gkab287", "10.1093/nar/gkab301", "10.1093/nar/gkab305", "10.1093/nar/gkab316", "10.1093/nar/gkab335", "10.1093/nar/gkab345", "10.1093/nar/gkab430", "10.1093/nar/gkab667", "10.1093/nar/gkab736", "10.1093/nar/gkab776", "10.1093/nar/gkab807", "10.1093/nar/gkab926", "10.1093/nar/gkab959", "10.1093/nar/gkac1111", "10.1093/nar/gkac123", "10.1093/nar/gkac150", "10.1093/nar/gkac194", "10.1093/nar/gkac319", "10.1093/nar/gkac408", "10.1093/nar/gkac506", "10.1093/nar/gkac633", "10.1093/nar/gkac787", "10.1093/nar/gkac817", "10.1093/nar/gkac963", "10.1093/nar/gkac975", "10.1093/nar/gkac992", "10.1093/nar/gkad1053", "10.1093/nar/gkad1079", "10.1093/nar/gkad1183", "10.1093/nar/gkad1235", "10.1093/nar/gkad297", "10.1093/nar/gkad341", "10.1093/nar/gkad457", "10.1093/nar/gkad506", "10.1093/nar/gkad852", "10.1093/nar/gkad940", "10.1093/nar/gkae069", "10.1093/nar/gkae069/7606263", "10.1093/nar/gkae088", "10.1093/nar/gkae105", "10.1093/nar/gkae130", "10.1093/nar/gkae130/7614864", "10.1093/nar/gkae193/7634146", "10.1093/nar/gkae212", "10.1093/nar/gkae212/7637900", "10.1093/nar/gkae222", "10.1093/nar/gkae222/7637895", "10.1093/nar/gkae223", "10.1093/nar/gkae227", "10.1093/nar/gkae252", "10.1093/nar/gkae310", "10.1093/nar/gkae316/7659593", "10.1093/nar/gkae387/7676837", "10.1093/nar/gkae534/7702507", "10.1093/nar/gkf669", "10.1093/nar/gkg210", "10.1093/nar/gkg556", "10.1093/nar/gkh121", "10.1093/nar/gkh340", "10.1093/nar/gkh906", "10.1093/nar/gki025", "10.1093/nar/gki408", "10.1093/nar/gki481", "10.1093/nar/gki524", "10.1093/nar/gki531", "10.1093/nar/gki702", "10.1093/nar/gki709", "10.1093/nar/gki987", "10.1093/nar/gkj084", "10.1093/nar/gkj102", "10.1093/nar/gkj143", "10.1093/nar/gkj439", "10.1093/nar/gkl336", "10.1093/nar/gkl468", "10.1093/nar/gkm034", "10.1093/nar/gkm286", "10.1093/nar/gkm314", "10.1093/nar/gkm485", "10.1093/nar/gkm819", "10.1093/nar/gkm855", "10.1093/nar/gkm945", "10.1093/nar/gkm994", "10.1093/nar/gkn201", "10.1093/nar/gkn454", "10.1093/nar/gkn466", "10.1093/nar/gkn710", "10.1093/nar/gkn781", "10.1093/nar/gkn814", "10.1093/nar/gkp015", "10.1093/nar/gkp024", "10.1093/nar/gkp1073", "10.1093/nar/gkp1142", "10.1093/nar/gkp335", "10.1093/nar/gkp875", "10.1093/nar/gkp946", "10.1093/nar/gkp985", "10.1093/nar/gkq1002", "10.1093/nar/gkq1069", "10.1093/nar/gkq1092", "10.1093/nar/gkq1266", "10.1093/nar/gkq1303", "10.1093/nar/gkq235", "10.1093/nar/gkq366", "10.1093/nar/gkq502", "10.1093/nar/gkq862", "10.1093/nar/gkq931", "10.1093/nar/gkq934", "10.1093/nar/gkq973", "10.1093/nar/gkr036", "10.1093/nar/gkr1029", "10.1093/nar/gkr1065", "10.1093/nar/gkr1287", "10.1093/nar/gkr154", "10.1093/nar/gkr367", "10.1093/nar/gkr545", "10.1093/nar/gkr602", "10.1093/nar/gkr691", "10.1093/nar/gkr737", "10.1093/nar/gks1007", "10.1093/nar/gks144", "10.1093/nar/gks219", "10.1093/nar/gks429", "10.1093/nar/gks584", "10.1093/nar/gks677", "10.1093/nar/gks726", "10.1093/nar/gks727", "10.1093/nar/gks918", "10.1093/nar/gks948", "10.1093/nar/gkt006", "10.1093/nar/gkt1000", "10.1093/nar/gkt1103", "10.1093/nar/gkt1281", "10.1093/nar/gkt1290", "10.1093/nar/gkt150", "10.1093/nar/gkt356", "10.1093/nar/gkt573", "10.1093/nar/gkt602", "10.1093/nar/gkt652", "10.1093/nar/gkt679", "10.1093/nar/gkt719", "10.1093/nar/gkt734", "10.1093/nar/gkt931", "10.1093/nar/gku117", "10.1093/nar/gku1313", "10.1093/nar/gku1373", "10.1093/nar/gku1385", "10.1093/nar/gku323", "10.1093/nar/gku340", "10.1093/nar/gku530", "10.1093/nar/gku936", "10.1093/nar/gkv007", "10.1093/nar/gkv011", "10.1093/nar/gkv021", "10.1093/nar/gkv075", "10.1093/nar/gkv1005", "10.1093/nar/gkv1070", "10.1093/nar/gkv1120", "10.1093/nar/gkv1182", "10.1093/nar/gkv1191", "10.1093/nar/gkv1194", "10.1093/nar/gkv1206", "10.1093/nar/gkv1267", "10.1093/nar/gkv1278", "10.1093/nar/gkv1475", "10.1093/nar/gkv1505", "10.1093/nar/gkv195", "10.1093/nar/gkv267", "10.1093/nar/gkv485", "10.1093/nar/gkv646", "10.1093/nar/gkv951", "10.1093/nar/gkw1017", "10.1093/nar/gkw1081", "10.1093/nar/gkw1114", "10.1093/nar/gkw1138", "10.1093/nar/gkw1259", "10.1093/nar/gkw1331", "10.1093/nar/gkw244", "10.1093/nar/gkw290", "10.1093/nar/gkw377", "10.1093/nar/gkw387", "10.1093/nar/gkw419", "10.1093/nar/gkw482", "10.1093/nar/gkw528", "10.1093/nar/gkw536", "10.1093/nar/gkw547", "10.1093/nar/gkw550", "10.1093/nar/gkw564", "10.1093/nar/gkw635", "10.1093/nar/gkw645", "10.1093/nar/gkw647", "10.1093/nar/gkw691", "10.1093/nar/gkw699", "10.1093/nar/gkw707", "10.1093/nar/gkw810", "10.1093/nar/gkw822", "10.1093/nar/gkw839", "10.1093/nar/gkw861", "10.1093/nar/gkx068", "10.1093/nar/gkx070", "10.1093/nar/gkx1074", "10.1093/nar/gkx1106", "10.1093/nar/gkx1304", "10.1093/nar/gkx197", "10.1093/nar/gkx441", "10.1093/nar/gkx464", "10.1093/nar/gkx488/19697344/gkx488", "10.1093/nar/gkx578", "10.1093/nar/gkx587", "10.1093/nar/gkx668", "10.1093/nar/gky1006", "10.1093/nar/gky1049", "10.1093/nar/gky1091", "10.1093/nar/gky1128", "10.1093/nar/gky1169", "10.1093/nar/gky1266", "10.1093/nar/gky157", "10.1093/nar/gky222", "10.1093/nar/gky240", "10.1093/nar/gky244", "10.1093/nar/gky412", "10.1093/nar/gky449", "10.1093/nar/gky504", "10.1093/nar/gky554", "10.1093/nar/gky763", "10.1093/nar/gky800", "10.1093/nar/gky861", "10.1093/nar/gky894", "10.1093/nar/gky901", "10.1093/nar/gky949", "10.1093/nar/gkz020", "10.1093/nar/gkz1106", "10.1093/nar/gkz111", "10.1093/nar/gkz1147", "10.1093/nar/gkz1156", "10.1093/nar/gkz118", "10.1093/nar/gkz120", "10.1093/nar/gkz236", "10.1093/nar/gkz300", "10.1093/nar/gkz369", "10.1093/nar/gkz397", "10.1093/nar/gkz490", "10.1093/nar/gkz502", "10.1093/nar/gkz506", "10.1093/nar/gkz529", "10.1093/nar/gkz619", "10.1093/nar/gkz631", "10.1093/nar/gkz705", "10.1093/nar/gkz735", "10.1093/nar/gkz754", "10.1093/nar/gkz841", "10.1093/nar/gkz889", "10.1093/nar/gkz935", "10.1093/nar/gni013", "10.1093/narcan/zcaa007", "10.1093/nargab/lqad029/49602400/lqad029", "10.1093/neuonc/noaa260", "10.1093/neuonc/noaa269", "10.1093/neuonc/noac286", "10.1093/neuonc/noad140", "10.1093/neuonc/nou223", "10.1093/neuonc/nov245", "10.1093/neuonc/nov272", "10.1093/neuonc/now258", "10.1093/neuonc/nox081", "10.1093/noajnl/vdab070.029", "10.1093/noajnl/vdac149", "10.1093/nsr/nwac114", "10.1093/ofid/ofx089", "10.1093/oso/9780198566960.003.0005", "10.1093/oso/9780198566960.003.0012", "10.1093/oxfordjournals.molbev.a004037", "10.1093/oxfordjournals.pcp.a029241", "10.1093/pcmedi/pbz017", "10.1093/pcp/pce177", "10.1093/pcp/pch005", "10.1093/pcp/pcn012", "10.1093/pcp/pcw001", "10.1093/pcp/pcw087", "10.1093/pcp/pcx003", "10.1093/plankt/fbab014", "10.1093/plankt/fbs017", "10.1093/plankt/fbs069", "10.1093/plcell/koab145", "10.1093/plcell/koab218", "10.1093/plcell/koac337", "10.1093/plphys/kiab261", "10.1093/plphys/kiab298", "10.1093/plphys/kiac378", "10.1093/plphys/kiad360", "10.1093/pnasnexus/pgac203", "10.1093/pnasnexus/pgac231", "10.1093/procel/pwac014", "10.1093/procel/pwad040", "10.1093/procel/pwad052", "10.1093/procel/pwae007", "10.1093/protein/gzg087", "10.1093/ps/78.5.778", "10.1093/qje/qjx028", "10.1093/rheumatology/kead082", "10.1093/rheumatology/kez109.064/28711533/kez109.064", "10.1093/scan/nsw038", "10.1093/schbul/sbaa090", "10.1093/sysbio/syaa073", "10.1093/toxsci/kfp029", "10.1093/toxsci/kfr317", "10.1093/toxsci/kft236", "10.1093/toxsci/kfu059", "10.1093/toxsci/kfw029", "10.1093/toxsci/kfx010", "10.1093/toxsci/kfx291", "10.1093/trstmh/trac026", "10.1093/ve/veaa043", "10.1094/mpmi-22-9-1143", "10.1094/pd-90-0765", "10.1094/pdis-03-18-0406-re", "10.1094/pdis-06-20-1191-re", "10.1094/pdis-09-15-0995-re", "10.1094/pdis-10-14-1077-re", "10.1094/pdis-11-14-1183-re", "10.1094/pdis-11-14-1231-re", "10.1094/pdis-12-13-1202-re", "10.1094/pdis-94-2-0207", "10.1094/phyto-01-19-0022-r", "10.1094/phyto-01-19-0032-r", "10.1094/phyto-02-16-0061-r", "10.1094/phyto-04-11-0096", "10.1094/phyto-04-16-0161-r", "10.1094/phyto-06-14-0161-r", "10.1094/phyto-06-20-0221-rvw", "10.1094/phyto-08-15-0186-r", "10.1094/phyto-09-15-0235-r", "10.1094/phyto-09-17-0295-r", "10.1094/phyto-09-19-0328-r", "10.1094/phyto-98-4-0397", "10.1094/phyto-99-12-1403", "10.1094/phyto.2000.90.1.17", "10.1095/biolreprod.105.044354", "10.1095/biolreprod.109.082982", "10.1095/biolreprod.110.084400", "10.1095/biolreprod.110.085209", "10.1095/biolreprod.111.090886", "10.1095/biolreprod.113.110874", "10.1095/biolreprod.115.134254", "10.1096/fasebj.10.10.8751724", "10.1096/fasebj.11.13.9367341", "10.1096/fasebj.20.4.a439", "10.1096/fasebj.2022.36.s1.r2512", "10.1096/fasebj.24.1_supplement.lb154", "10.1096/fasebj.26.1_supplement.931.2", "10.1096/fasebj.31.1_supplement.883.5", "10.1096/fj.01-0409fje", "10.1096/fj.01-0689com", "10.1096/fj.06-5754fje", "10.1096/fj.06-5800com", "10.1096/fj.07-8218com", "10.1096/fj.08-106997", "10.1096/fj.08-108894", "10.1096/fj.09-144014", "10.1096/fj.09-151464", "10.1096/fj.09-151639", "10.1096/fj.10-154435", "10.1096/fj.10-172155", "10.1096/fj.12-210989", "10.1096/fj.12-212621", "10.1096/fj.13-229211", "10.1096/fj.13-238071", "10.1096/fj.13-240986", "10.1096/fj.13-243535", "10.1096/fj.14-250985", "10.1096/fj.14-254680", "10.1096/fj.15-281675", "10.1096/fj.201500047", "10.1096/fj.201600890r", "10.1096/fj.201600987r", "10.1096/fj.201700219r", "10.1096/fj.201701307r", "10.1096/fj.201800223r", "10.1096/fj.201801154r", "10.1096/fj.201801690r", "10.1096/fj.201802237r", "10.1096/fj.201900047r", "10.1096/fj.201900105rr", "10.1096/fj.201901093rrr", "10.1096/fj.201902001rr", "10.1096/fj.202000418r", "10.1096/fj.202201418r", "10.1097/00001756-200006260-00037", "10.1097/00004647-200203000-00007", "10.1097/00006123-200004000-00035", "10.1097/00075197-200109000-00014", "10.1097/00129039-200303000-00014", "10.1097/00130478-200501000-00065", "10.1097/01.gme.0000232032.84788.8c", "10.1097/01.gox.0000769932.69148.04", "10.1097/01.gox.0000769936.79898.fc", "10.1097/01.hs9.0000972380.62376.53", "10.1097/01.jnen.0000178445.33972.a9", "10.1097/01.jnen.0000248549.14962.b2", "10.1097/01.pas.0000213334.40358.0e", "10.1097/01.wnr.0000183901.70030.82", "10.1097/aln.0000000000000942", "10.1097/aln.0b013e318221fbbd", "10.1097/cji.0000000000000145", "10.1097/cmr.0000000000000441", "10.1097/coh.0000000000000623", "10.1097/fm9.0000000000000058", "10.1097/hep.0000000000000804", "10.1097/im9.0000000000000044", "10.1097/mib.0000000000000446", "10.1097/moh.0000000000000245", "10.1097/ogx.0000000000000639", "10.1097/ogx.0000000000000954", "10.1097/pai.0000000000000581", "10.1097/pas.0000000000000365", "10.1097/prs.0000000000000972", "10.1097/qad.0000000000001645", "10.1097/qad.0000000000001787", "10.1097/qai.0000000000003080", "10.1097/tp.0000000000004000", "10.1098/rsbl.2018.0198", "10.1098/rsbl.2020.0440", "10.1098/rsif.2011.0841", "10.1098/rsif.2014.1116", "10.1098/rsif.2015.1062", "10.1098/rsif.2017.0083", "10.1098/rsif.2017.0715", "10.1098/rsif.2019.0243", "10.1098/rsob.120093", "10.1098/rsob.130104", "10.1098/rsob.140192", "10.1098/rsob.150185", "10.1098/rsob.170184", "10.1098/rsob.190306", "10.1098/rsos.181020", "10.1098/rsos.200747", "10.1098/rspa.2016.0138", "10.1098/rspa.2017.0350", "10.1098/rspb.2002.1999", "10.1098/rspb.2004.2972", "10.1098/rspb.2009.0962", "10.1098/rspb.2009.0983", "10.1098/rspb.2010.1654", "10.1098/rspb.2013.0531", "10.1098/rspb.2013.1331", "10.1098/rspb.2015.0249", "10.1098/rspb.2015.2292", "10.1098/rspb.2017.1039", "10.1098/rspb.2017.1433", "10.1098/rspb.2017.2167", "10.1098/rsta.2011.0502", "10.1098/rstb.2002.1193", "10.1098/rstb.2003.1326", "10.1098/rstb.2003.1329", "10.1098/rstb.2005.1630", "10.1098/rstb.2006.1883", "10.1098/rstb.2006.1887", "10.1098/rstb.2006.2012", "10.1098/rstb.2007.2251", "10.1098/rstb.2010.0050", "10.1098/rstb.2012.0353", "10.1098/rstb.2013.0146", "10.1098/rstb.2013.0538", "10.1098/rstb.2014.0332", "10.1098/rstb.2015.0426", "10.1098/rstb.2016.0247", "10.1098/rstb.2016.0276", "10.1098/rstb.2016.0536", "10.1098/rstb.2017.0192", "10.1098/rstb.2017.0193", "10.1098/rstb.2018.0225", "10.1099/00207713-51-2-401", "10.1099/00221287-143-6-2003", "10.1099/13500872-140-9-2383", "10.1099/acmi.0.000077", "10.1099/acmi.0.000583.v4", "10.1099/ijs.0.001230-0", "10.1099/ijs.0.055251-0", "10.1099/ijs.0.64284-0", "10.1099/ijsem.0.002963", "10.1099/ijsem.0.004224", "10.1099/jgv.0.000859", "10.1099/jmm.0.004911-0", "10.1099/mgen.0.000052", "10.1099/mgen.0.000165", "10.1099/mgen.0.000246", "10.1099/mgen.0.000306", "10.1099/mgen.0.000339", "10.1099/mgen.0.000579", "10.1099/mgen.0.000805", "10.1099/mgen.0.000878", "10.1099/mgen.0.000944", "10.1099/mgen.0.001156", "10.1099/mic.0.000092", "10.1099/mic.0.000367", "10.1099/mic.0.000488", "10.1099/mic.0.001017", "10.1099/mic.0.001175", "10.1099/mic.0.026054-0", "10.1099/mic.0.026666-0", "10.1099/mic.0.027086-0", "10.1099/mic.0.051003-0", "10.1099/mic.0.2008/017616-0", "10.1099/mic.0.26396-0", "10.1099/mic.0.27284-0", "10.1099/mic.0.28643-0", "10.1099/mic.0.28690-0", "10.1099/vir.0.043331-0", "10.1100/tsw.2011.24", "10.1101/003087", "10.1101/004168", "10.1101/008219", "10.1101/012880", "10.1101/013656", "10.1101/014068", "10.1101/015784", "10.1101/017459", "10.1101/020917", "10.1101/022913", "10.1101/054312", "10.1101/058164", "10.1101/059501", "10.1101/059899", "10.1101/061606", "10.1101/062521", "10.1101/073866", "10.1101/074484", "10.1101/079681", "10.1101/085571", "10.1101/086041", "10.1101/088484", "10.1101/092445", "10.1101/094649", "10.1101/095802", "10.1101/098830", "10.1101/101220", "10.1101/109009", "10.1101/114025", "10.1101/117341", "10.1101/118737", "10.1101/122648", "10.1101/128835", "10.1101/132456", "10.1101/138701", "10.1101/140962", "10.1101/142455", "10.1101/144592", "10.1101/149153", "10.1101/155481", "10.1101/163519", "10.1101/164590", "10.1101/166066", "10.1101/166827", "10.1101/168443", "10.1101/168948", "10.1101/181628", "10.1101/190892", "10.1101/194852", "10.1101/199034", "10.1101/2019.12.15.877092", "10.1101/2019.12.18.880849", "10.1101/2019.12.20.884429", "10.1101/2019.12.21.885830", "10.1101/2019.12.22.885152", "10.1101/2020.01.04.894907", "10.1101/2020.01.06.895938", "10.1101/2020.01.09.900233", "10.1101/2020.01.10.901967", "10.1101/2020.01.17.909937", "10.1101/2020.01.17.910679", "10.1101/2020.01.27.920686", "10.1101/2020.01.27.921874", "10.1101/2020.01.29.921999", "10.1101/2020.02.02.931501", "10.1101/2020.02.03.926949", "10.1101/2020.02.06.937219", "10.1101/2020.02.11.944157", "10.1101/2020.02.12.944066", "10.1101/2020.02.12.945709", "10.1101/2020.02.16.947804", "10.1101/2020.02.21.940650", "10.1101/2020.02.24.963579", "10.1101/2020.02.28.969931", "10.1101/2020.03.02.973396", "10.1101/2020.03.04.974964", "10.1101/2020.03.04.975573", "10.1101/2020.03.04.975888", "10.1101/2020.03.04.976407", "10.1101/2020.03.07.982272", "10.1101/2020.03.12.988097", "10.1101/2020.03.12.988840", "10.1101/2020.03.15.20033472", "10.1101/2020.03.16.994608", "10.1101/2020.03.17.994509", "10.1101/2020.03.18.992784", "10.1101/2020.03.21.001693", "10.1101/2020.03.22.20040642", "10.1101/2020.03.26.010710", "10.1101/2020.03.26.010728", "10.1101/2020.03.31.018820", "10.1101/2020.04.01.019612", "10.1101/2020.04.04.025536", "10.1101/2020.04.08.20057679", "10.1101/2020.04.09.033613", "10.1101/2020.04.10.036145", "10.1101/2020.04.21.051961", "10.1101/2020.04.21.052548", "10.1101/2020.04.22.054064", "10.1101/2020.04.22.054700", "10.1101/2020.04.28.065920", "10.1101/2020.04.30.068924", "10.1101/2020.04.30.070359", "10.1101/2020.05.01.071373", "10.1101/2020.05.04.077388", "10.1101/2020.05.11.089144", "10.1101/2020.05.13.093815", "10.1101/2020.05.14.095554", "10.1101/2020.05.17.100818", "10.1101/2020.05.21.107557", "10.1101/2020.05.21.109272", "10.1101/2020.05.22.111286", "10.1101/2020.05.26.117713", "10.1101/2020.05.29.124560", "10.1101/2020.06.01.128066", "10.1101/2020.06.04.105700", "10.1101/2020.06.08.130583", "10.1101/2020.06.10.144659", "10.1101/2020.06.12.148916", "10.1101/2020.06.17.158121", "10.1101/2020.06.20.161323", "10.1101/2020.06.26.174417", "10.1101/2020.06.30.174391", "10.1101/2020.07.01.181347", "10.1101/2020.07.02.182808", "10.1101/2020.07.02.184119", "10.1101/2020.07.05.186858", "10.1101/2020.07.06.188896", "10.1101/2020.07.07.191866", "10.1101/2020.07.10.196832", "10.1101/2020.07.13.188763", "10.1101/2020.07.15.204651", "10.1101/2020.07.17.207266", "10.1101/2020.07.20.213066", "10.1101/2020.07.21.213728", "10.1101/2020.07.22.211482", "10.1101/2020.07.28.223164", "10.1101/2020.07.29.226399", "10.1101/2020.07.29.226936", "10.1101/2020.07.31.230565", "10.1101/2020.07.31.231134", "10.1101/2020.08.03.230953", "10.1101/2020.08.06.239186", "10.1101/2020.08.06.239723", "10.1101/2020.08.07.242347", "10.1101/2020.08.08.238469", "10.1101/2020.08.10.20166652", "10.1101/2020.08.10.236562", "10.1101/2020.08.16.250183", "10.1101/2020.08.30.256743", "10.1101/2020.08.31.275750", "10.1101/2020.09.01.277178", "10.1101/2020.09.01.278523", "10.1101/2020.09.02.279794", "10.1101/2020.09.09.288324", "10.1101/2020.09.09.289272", "10.1101/2020.09.09.289587", "10.1101/2020.09.10.292078", "10.1101/2020.09.15.297994", "10.1101/2020.09.15.298828", "10.1101/2020.09.16.297606", "10.1101/2020.09.24.312595", "10.1101/2020.09.29.315879", "10.1101/2020.09.30.319376", "10.1101/2020.10.07.327643", "10.1101/2020.10.09.331710", "10.1101/2020.10.19.343129", "10.1101/2020.10.22.350447", "10.1101/2020.10.22.351395", "10.1101/2020.10.26.354522", "10.1101/2020.10.27.352716", "10.1101/2020.10.27.355388", "10.1101/2020.10.28.359026", "10.1101/2020.11.02.365080", "10.1101/2020.11.04.369066", "10.1101/2020.11.05.369363", "10.1101/2020.11.06.372037", "10.1101/2020.11.16.385294", "10.1101/2020.11.18.388249", "10.1101/2020.11.21.391136", "10.1101/2020.11.23.395244", "10.1101/2020.12.02.409011", "10.1101/2020.12.08.412643", "10.1101/2020.12.08.416164", "10.1101/2020.12.08.416503", "10.1101/2020.12.10.419440", "10.1101/2020.12.15.422761", "10.1101/2020.12.15.422970", "10.1101/2020.12.17.423181", "10.1101/2020.12.17.423207", "10.1101/2020.12.18.423402", "10.1101/2020.12.23.424142", "10.1101/2020.12.24.424262", "10.1101/2020.12.27.424467", "10.1101/2020.12.28.424570", "10.1101/2021.01.09.426034", "10.1101/2021.01.10.426132", "10.1101/2021.01.13.426553", "10.1101/2021.01.17.427004", "10.1101/2021.01.19.21249840", "10.1101/2021.01.20.427499", "10.1101/2021.01.21.427703", "10.1101/2021.01.27.428466", "10.1101/2021.02.01.429056", "10.1101/2021.02.12.430777", "10.1101/2021.02.16.431427", "10.1101/2021.02.16.431447", "10.1101/2021.02.17.431526", "10.1101/2021.02.17.431566", "10.1101/2021.02.17.431581", "10.1101/2021.02.17.431662", "10.1101/2021.02.19.432013", "10.1101/2021.02.22.432333", "10.1101/2021.02.25.432706", "10.1101/2021.02.25.432845", "10.1101/2021.02.26.432961", "10.1101/2021.03.02.431957", "10.1101/2021.03.05.434175", "10.1101/2021.03.08.434469", "10.1101/2021.03.09.434607", "10.1101/2021.03.10.434454", "10.1101/2021.03.12.435209", "10.1101/2021.03.13.21253527", "10.1101/2021.03.13.435263", "10.1101/2021.03.14.435322", "10.1101/2021.03.17.435886", "10.1101/2021.03.19.436151", "10.1101/2021.03.19.436169", "10.1101/2021.03.27.437311", "10.1101/2021.03.28.437402", "10.1101/2021.04.06.438709", "10.1101/2021.04.07.438649", "10.1101/2021.04.07.438818", "10.1101/2021.04.08.438911", "10.1101/2021.04.09.439191", "10.1101/2021.04.12.439409", "10.1101/2021.04.13.439572", "10.1101/2021.04.13.439743", "10.1101/2021.04.15.440007", "10.1101/2021.04.19.21255727", "10.1101/2021.04.22.440891", "10.1101/2021.04.23.441023", "10.1101/2021.04.25.441334", "10.1101/2021.04.27.441365", "10.1101/2021.04.28.441858", "10.1101/2021.04.30.442182", "10.1101/2021.05.03.442402", "10.1101/2021.05.07.443119", "10.1101/2021.05.09.442808", "10.1101/2021.05.12.443385", "10.1101/2021.05.12.443709", "10.1101/2021.05.14.444076", "10.1101/2021.05.18.444607", "10.1101/2021.05.19.444448", "10.1101/2021.05.26.445863", "10.1101/2021.06.06.447297", "10.1101/2021.06.08.447538", "10.1101/2021.06.08.447603", "10.1101/2021.06.14.448344", "10.1101/2021.06.15.447941", "10.1101/2021.06.16.448663", "10.1101/2021.06.21.449340", "10.1101/2021.06.23.449596", "10.1101/2021.06.24.449666", "10.1101/2021.06.27.450109", "10.1101/2021.06.29.450392", "10.1101/2021.07.01.450665", "10.1101/2021.07.01.450810", "10.1101/2021.07.06.451258", "10.1101/2021.07.06.451312", "10.1101/2021.07.07.451538", "10.1101/2021.07.08.451617", "10.1101/2021.07.09.450648", "10.1101/2021.07.10.451889", "10.1101/2021.07.14.452365", "10.1101/2021.07.18.452833", "10.1101/2021.07.21.453193", "10.1101/2021.07.21.453214", "10.1101/2021.07.24.453449", "10.1101/2021.07.26.453792", "10.1101/2021.07.26.453836", "10.1101/2021.07.28.454232", "10.1101/2021.07.29.454218", "10.1101/2021.07.30.454360", "10.1101/2021.07.31.454572", "10.1101/2021.08.02.454840", "10.1101/2021.08.04.455056", "10.1101/2021.08.13.456317", "10.1101/2021.08.15.456392", "10.1101/2021.08.19.456939", "10.1101/2021.08.19.456973", "10.1101/2021.08.19.457044", "10.1101/2021.08.21.457218", "10.1101/2021.08.23.457309", "10.1101/2021.08.23.457400", "10.1101/2021.08.24.457591", "10.1101/2021.08.26.457801", "10.1101/2021.08.26.457865", "10.1101/2021.08.27.457995", "10.1101/2021.08.27.457999", "10.1101/2021.09.08.459458", "10.1101/2021.09.10.459739", "10.1101/2021.09.11.459913", "10.1101/2021.09.14.460235", "10.1101/2021.09.17.460684", "10.1101/2021.09.21.21263881", "10.1101/2021.09.22.461415", "10.1101/2021.09.23.461564", "10.1101/2021.09.30.462529", "10.1101/2021.09.30.462548", "10.1101/2021.09.30.462573", "10.1101/2021.10.03.462422", "10.1101/2021.10.04.463034", "10.1101/2021.10.11.463937", "10.1101/2021.10.12.463833", "10.1101/2021.10.17.464725", "10.1101/2021.10.21.465269", "10.1101/2021.10.22.465375", "10.1101/2021.10.22.465476", "10.1101/2021.10.23.462170", "10.1101/2021.10.23.465364", "10.1101/2021.10.25.465661", "10.1101/2021.10.25.465714", "10.1101/2021.11.01.466525", "10.1101/2021.11.01.466786", "10.1101/2021.11.01.466790", "10.1101/2021.11.02.467003", "10.1101/2021.11.04.467271", "10.1101/2021.11.05.467528", "10.1101/2021.11.09.467890", "10.1101/2021.11.10.467885", "10.1101/2021.11.10.468147", "10.1101/2021.11.12.468408", "10.1101/2021.11.16.468438", "10.1101/2021.11.20.466133", "10.1101/2021.11.22.466872", "10.1101/2021.11.22.469536", "10.1101/2021.11.23.469762", "10.1101/2021.11.29.470469", "10.1101/2021.11.30.470681", "10.1101/2021.12.02.470933", "10.1101/2021.12.03.471189", "10.1101/2021.12.06.471377", "10.1101/2021.12.07.471422", "10.1101/2021.12.07.471597", "10.1101/2021.12.13.472457", "10.1101/2021.12.15.472838", "10.1101/2021.12.16.21267870", "10.1101/2021.12.16.473023", "10.1101/2021.12.17.473163", "10.1101/2021.12.17.473235", "10.1101/2021.12.20.473443", "10.1101/2021.12.20.473565", "10.1101/2021.12.22.473858", "10.1101/2021.12.22.473887", "10.1101/2021.12.24.474145", "10.1101/2021.12.25.474052", "10.1101/2021.12.26.474183", "10.1101/2021.12.27.473694", "10.1101/2021.12.28.474369", "10.1101/2021.12.30.474562", "10.1101/2022.01.03.474855", "10.1101/2022.01.04.474927", "10.1101/2022.01.04.474958", "10.1101/2022.01.09.475429", "10.1101/2022.01.11.475843", "10.1101/2022.01.19.476892", "10.1101/2022.01.21.477302", "10.1101/2022.01.24.477465", "10.1101/2022.01.27.478087", "10.1101/2022.01.28.478262", "10.1101/2022.01.29.478324", "10.1101/2022.02.07.479306", "10.1101/2022.02.07.479398", "10.1101/2022.02.09.479674", "10.1101/2022.02.11.480131", "10.1101/2022.02.14.480335", "10.1101/2022.02.14.480466", "10.1101/2022.02.15.480166", "10.1101/2022.02.16.480423", "10.1101/2022.02.16.480697", "10.1101/2022.02.18.481058", "10.1101/2022.02.19.479917", "10.1101/2022.02.21.481343", "10.1101/2022.02.23.481695", "10.1101/2022.02.24.481763", "10.1101/2022.02.25.481941", "10.1101/2022.02.25.481957", "10.1101/2022.02.27.482202", "10.1101/2022.03.02.482616", "10.1101/2022.03.05.483145", "10.1101/2022.03.12.484089", "10.1101/2022.03.13.484129", "10.1101/2022.03.15.484427", "10.1101/2022.03.19.484946", "10.1101/2022.03.26.485892", "10.1101/2022.03.31.486642", "10.1101/2022.04.03.486864", "10.1101/2022.04.04.487040", "10.1101/2022.04.05.487143", "10.1101/2022.04.07.487468", "10.1101/2022.04.07.487474", "10.1101/2022.04.07.487489", "10.1101/2022.04.08.487575", "10.1101/2022.04.10.487779", "10.1101/2022.04.11.487855", "10.1101/2022.04.12.488086", "10.1101/2022.04.15.488492", "10.1101/2022.04.18.488614", "10.1101/2022.04.19.488034", "10.1101/2022.04.28.489772", "10.1101/2022.04.28.489781", "10.1101/2022.05.03.490409", "10.1101/2022.05.04.490422", "10.1101/2022.05.04.490571", "10.1101/2022.05.04.490632", "10.1101/2022.05.04.490680", "10.1101/2022.05.07.491045", "10.1101/2022.05.16.492218", "10.1101/2022.05.17.492368", "10.1101/2022.05.19.492649", "10.1101/2022.05.19.492714", "10.1101/2022.05.20.492804", "10.1101/2022.05.22.492978", "10.1101/2022.05.26.493517", "10.1101/2022.05.27.493636", "10.1101/2022.05.27.493789", "10.1101/2022.06.01.494241", "10.1101/2022.06.01.494331", "10.1101/2022.06.06.495043", "10.1101/2022.06.07.494975", "10.1101/2022.06.08.495392", "10.1101/2022.06.15.496288", "10.1101/2022.06.17.496635", "10.1101/2022.06.21.496616", "10.1101/2022.06.21.496935", "10.1101/2022.06.23.497276", "10.1101/2022.06.26.497646", "10.1101/2022.07.01.498378", "10.1101/2022.07.02.498568", "10.1101/2022.07.07.499200", "10.1101/2022.07.09.499440", "10.1101/2022.07.10.499510", "10.1101/2022.07.13.499967", "10.1101/2022.07.14.500044", "10.1101/2022.07.18.500456", "10.1101/2022.07.20.500902v1", "10.1101/2022.07.22.501078", "10.1101/2022.07.27.501606", "10.1101/2022.07.29.501943", "10.1101/2022.08.01.502021", "10.1101/2022.08.02.502436", "10.1101/2022.08.04.502542", "10.1101/2022.08.04.502774", "10.1101/2022.08.04.502805", "10.1101/2022.08.05.502953", "10.1101/2022.08.08.503155", "10.1101/2022.08.11.503613", "10.1101/2022.08.12.502093", "10.1101/2022.08.19.504400", "10.1101/2022.08.22.504736", "10.1101/2022.08.29.505648", "10.1101/2022.08.29.505755", "10.1101/2022.08.30.505833", "10.1101/2022.08.31.505981", "10.1101/2022.08.31.505997", "10.1101/2022.08.31.506009", "10.1101/2022.08.31.506080", "10.1101/2022.09.04.506519", "10.1101/2022.09.09.507345", "10.1101/2022.09.09.507387", "10.1101/2022.09.12.507614", "10.1101/2022.09.18.508403", "10.1101/2022.09.19.22279829", "10.1101/2022.09.20.508745", "10.1101/2022.09.21.508770", "10.1101/2022.09.23.509223", "10.1101/2022.09.24.509315", "10.1101/2022.09.30.509847", "10.1101/2022.09.30.510294", "10.1101/2022.10.08.509614", "10.1101/2022.10.12.22281005", "10.1101/2022.10.12.511978", "10.1101/2022.10.18.512724", "10.1101/2022.10.18.512784", "10.1101/2022.10.24.513504", "10.1101/2022.10.25.513641", "10.1101/2022.10.25.513742", "10.1101/2022.10.25.513774", "10.1101/2022.10.26.513842", "10.1101/2022.10.28.514293", "10.1101/2022.10.31.514613", "10.1101/2022.11.04.515239", "10.1101/2022.11.06.515380", "10.1101/2022.11.09.515798", "10.1101/2022.11.12.515357", "10.1101/2022.11.12.516286", "10.1101/2022.11.14.516466", "10.1101/2022.11.14.516473", "10.1101/2022.11.17.516888", "10.1101/2022.11.18.516017", "10.1101/2022.11.18.517040", "10.1101/2022.11.22.517520", "10.1101/2022.11.25.517987", "10.1101/2022.11.29.518231", "10.1101/2022.11.29.518402", "10.1101/2022.11.29.518444", "10.1101/2022.11.29.518450", "10.1101/2022.11.30.518202", "10.1101/2022.11.30.518557", "10.1101/2022.11.30.518605", "10.1101/2022.12.01.518682", "10.1101/2022.12.02.22283042", "10.1101/2022.12.03.518964", "10.1101/2022.12.04.519053", "10.1101/2022.12.05.519125", "10.1101/2022.12.08.519586", "10.1101/2022.12.09.519842", "10.1101/2022.12.10.519236", "10.1101/2022.12.13.520259", "10.1101/2022.12.15.520626", "10.1101/2022.12.17.520847", "10.1101/2022.12.20.521091", "10.1101/2022.12.20.521315", "10.1101/2022.12.21.521443", "10.1101/2022.12.21.521521", "10.1101/2022.12.21.521526", "10.1101/2022.12.22.521593", "10.1101/2022.12.22.521680", "10.1101/2022.12.22.521698", "10.1101/2022.12.28.521825", "10.1101/2023.01.03.522172", "10.1101/2023.01.03.522653", "10.1101/2023.01.04.522511", "10.1101/2023.01.05.522910", "10.1101/2023.01.08.523187", "10.1101/2023.01.10.523450", "10.1101/2023.01.11.523624", "10.1101/2023.01.11.523679", "10.1101/2023.01.11.523680", "10.1101/2023.01.13.523698", "10.1101/2023.01.16.524265", "10.1101/2023.01.23.525232", "10.1101/2023.01.30.526201", "10.1101/2023.02.01.526601", "10.1101/2023.02.08.527615", "10.1101/2023.02.09.23285703", "10.1101/2023.02.09.527362", "10.1101/2023.02.13.528330", "10.1101/2023.02.17.528906", "10.1101/2023.02.18.528865", "10.1101/2023.02.21.529402", "10.1101/2023.02.22.529589", "10.1101/2023.02.23.529353", "10.1101/2023.02.24.529520", "10.1101/2023.02.24.529906", "10.1101/2023.02.25.529956", "10.1101/2023.02.26.530106", "10.1101/2023.03.02.530801", "10.1101/2023.03.03.530964", "10.1101/2023.03.04.531110", "10.1101/2023.03.07.531538", "10.1101/2023.03.10.531074", "10.1101/2023.03.11.532164", "10.1101/2023.03.14.532643", "10.1101/2023.03.15.530726", "10.1101/2023.03.16.532857", "10.1101/2023.03.16.532942", "10.1101/2023.03.18.533293", "10.1101/2023.03.19.533240", "10.1101/2023.03.19.533321", "10.1101/2023.03.20.533387", "10.1101/2023.03.21.533701", "10.1101/2023.03.23.533767", "10.1101/2023.03.28.534017", "10.1101/2023.03.29.534719", "10.1101/2023.04.02.535219", "10.1101/2023.04.03.535302", "10.1101/2023.04.04.535473", "10.1101/2023.04.06.535955", "10.1101/2023.04.12.536587", "10.1101/2023.04.17.536962", "10.1101/2023.04.20.537718", "10.1101/2023.04.20.537723", "10.1101/2023.04.24.538096", "10.1101/2023.05.03.23289486", "10.1101/2023.05.03.539278", "10.1101/2023.05.05.539526", "10.1101/2023.05.05.539543", "10.1101/2023.05.09.539914", "10.1101/2023.05.09.540044", "10.1101/2023.05.11.540401", "10.1101/2023.05.12.540558", "10.1101/2023.05.17.541233", "10.1101/2023.05.21.541555", "10.1101/2023.05.24.542036", "10.1101/2023.05.24.542179", "10.1101/2023.05.24.542194", "10.1101/2023.05.28.542668", "10.1101/2023.06.01.543231", "10.1101/2023.06.02.543460", "10.1101/2023.06.12.544645", "10.1101/2023.06.13.544831", "10.1101/2023.06.16.545320", "10.1101/2023.06.20.545580", "10.1101/2023.06.21.545880", "10.1101/2023.06.27.546766", "10.1101/2023.06.28.23291975", "10.1101/2023.06.29.547025", "10.1101/2023.06.29.547047", "10.1101/2023.07.03.23292190", "10.1101/2023.07.03.547542", "10.1101/2023.07.04.547599", "10.1101/2023.07.05.547496", "10.1101/2023.07.09.548279", "10.1101/2023.07.12.548762", "10.1101/2023.07.13.548758", "10.1101/2023.07.17.549320", "10.1101/2023.07.18.549400", "10.1101/2023.07.18.549489", "10.1101/2023.07.19.549676", "10.1101/2023.07.19.549737", "10.1101/2023.07.21.549165", "10.1101/2023.07.23.550085", "10.1101/2023.07.27.550849", "10.1101/2023.07.27.550902", "10.1101/2023.07.28.550915", "10.1101/2023.08.01.551546", "10.1101/2023.08.06.552203", "10.1101/2023.08.07.552204", "10.1101/2023.08.11.552995", "10.1101/2023.08.12.553079", "10.1101/2023.08.14.553196", "10.1101/2023.08.21.554166", "10.1101/2023.08.22.554289", "10.1101/2023.08.23.552047", "10.1101/2023.08.23.554439", "10.1101/2023.08.24.554544", "10.1101/2023.08.25.554789", "10.1101/2023.08.29.555279", "10.1101/2023.08.29.555352", "10.1101/2023.08.29.555369", "10.1101/2023.08.30.555211", "10.1101/2023.08.30.555588", "10.1101/2023.08.30.555621", "10.1101/2023.08.31.555808", "10.1101/2023.09.02.556057", "10.1101/2023.09.04.556039", "10.1101/2023.09.05.556364", "10.1101/2023.09.05.556409", "10.1101/2023.09.08.23295253", "10.1101/2023.09.11.557279", "10.1101/2023.09.13.557559", "10.1101/2023.09.18.557933", "10.1101/2023.09.18.558350", "10.1101/2023.09.18.558371", "10.1101/2023.09.20.558714", "10.1101/2023.09.21.558736", "10.1101/2023.09.23.559055", "10.1101/2023.09.28.559973", "10.1101/2023.09.28.560044", "10.1101/2023.10.01.560349", "10.1101/2023.10.03.560616", "10.1101/2023.10.04.560808", "10.1101/2023.10.08.561401", "10.1101/2023.10.09.561468", "10.1101/2023.10.09.561603", "10.1101/2023.10.09.561634", "10.1101/2023.10.10.561625", "10.1101/2023.10.13.562100", "10.1101/2023.10.13.562147", "10.1101/2023.10.14.562336", "10.1101/2023.10.18.562842", "10.1101/2023.10.22.563434", "10.1101/2023.10.24.563163", "10.1101/2023.10.26.564289", "10.1101/2023.10.30.564067", "10.1101/2023.11.01.23297724", "10.1101/2023.11.01.564906", "10.1101/2023.11.01.565104", "10.1101/2023.11.05.565413", "10.1101/2023.11.06.565735", "10.1101/2023.11.06.565899", "10.1101/2023.11.07.566005", "10.1101/2023.11.08.566303", "10.1101/2023.11.09.563812", "10.1101/2023.11.09.566187", "10.1101/2023.11.09.566459", "10.1101/2023.11.13.566946", "10.1101/2023.11.15.567263", "10.1101/2023.11.15.567300", "10.1101/2023.11.16.565910", "10.1101/2023.11.16.567349", "10.1101/2023.11.19.567747", "10.1101/2023.11.20.567873", "10.1101/2023.11.20.567912", "10.1101/2023.11.21.567974", "10.1101/2023.11.21.567977", "10.1101/2023.11.27.568781", "10.1101/2023.11.27.568819", "10.1101/2023.11.28.568945", "10.1101/2023.11.28.569054", "10.1101/2023.11.29.569229", "10.1101/2023.11.30.569447", "10.1101/2023.12.01.569227", "10.1101/2023.12.03.569825", "10.1101/2023.12.04.569938", "10.1101/2023.12.04.569940", "10.1101/2023.12.05.569868", "10.1101/2023.12.06.570473", "10.1101/2023.12.07.570727", "10.1101/2023.12.09.570830", "10.1101/2023.12.11.23299809", "10.1101/2023.12.13.571462", "10.1101/2023.12.13.571579", "10.1101/2023.12.15.571760", "10.1101/2023.12.15.571823", "10.1101/2023.12.15.571887", "10.1101/2023.12.16.571680", "10.1101/2023.12.19.23300223", "10.1101/2023.12.19.572360", "10.1101/2023.12.19.572475", "10.1101/2023.12.27.573411", "10.1101/2023.12.31.573779", "10.1101/2024.01.02.23300281", "10.1101/2024.01.03.573747", "10.1101/2024.01.04.574182", "10.1101/2024.01.12.575432", "10.1101/2024.01.14.575538", "10.1101/2024.01.16.572601", "10.1101/2024.01.18.576233", "10.1101/2024.01.21.576531", "10.1101/2024.01.22.576725", "10.1101/2024.01.23.576900", "10.1101/2024.01.27.577548", "10.1101/2024.01.29.577729", "10.1101/2024.01.30.577970", "10.1101/2024.01.31.578101", "10.1101/2024.01.31.578102", "10.1101/2024.02.01.578450", "10.1101/2024.02.05.578959", "10.1101/2024.02.09.579708", "10.1101/2024.02.10.579791", "10.1101/2024.02.13.580051", "10.1101/2024.02.13.580198", "10.1101/2024.02.17.580811", "10.1101/2024.02.19.581102", "10.1101/2024.02.20.581217", "10.1101/2024.02.21.581478", "10.1101/2024.02.28.582452", "10.1101/2024.03.03.583145", "10.1101/2024.03.03.583237", "10.1101/2024.03.04.583182", "10.1101/2024.03.05.583629", "10.1101/2024.03.07.584001", "10.1101/2024.03.08.583987", "10.1101/2024.03.10.584280", "10.1101/2024.03.12.584655", "10.1101/2024.03.12.584681", "10.1101/2024.03.15.584819", "10.1101/2024.03.15.584908", "10.1101/2024.03.17.584721", "10.1101/2024.03.17.585125", "10.1101/2024.03.17.585422", "10.1101/2024.03.18.585604", "10.1101/2024.03.18.585647", "10.1101/2024.03.19.585665", "10.1101/2024.03.25.585978", "10.1101/2024.03.26.586797", "10.1101/2024.03.26.586857", "10.1101/2024.03.29.587137", "10.1101/2024.04.01.587366", "10.1101/2024.04.04.588128", "10.1101/2024.04.05.588133", "10.1101/2024.04.05.588250", "10.1101/2024.04.08.588603", "10.1101/2024.04.09.588715", "10.1101/2024.04.11.589002", "10.1101/2024.04.13.589381", "10.1101/2024.04.15.589523", "10.1101/2024.04.15.589635", "10.1101/2024.04.17.589966", "10.1101/2024.04.24.590982", "10.1101/2024.04.26.591386", "10.1101/2024.04.28.591267", "10.1101/2024.04.30.24306619", "10.1101/2024.04.30.591717", "10.1101/2024.05.01.592108", "10.1101/2024.05.03.592390", "10.1101/2024.05.07.593065", "10.1101/2024.05.08.593163", "10.1101/2024.05.09.593242", "10.1101/2024.05.12.593741", "10.1101/2024.05.13.593833", "10.1101/2024.05.14.593970", "10.1101/2024.05.14.594155", "10.1101/2024.05.14.594226", "10.1101/2024.05.15.24307328", "10.1101/2024.05.15.594272", "10.1101/2024.05.16.594411", "10.1101/2024.05.18.594808", "10.1101/2024.05.19.594844", "10.1101/2024.05.20.594950", "10.1101/2024.05.20.594989", "10.1101/2024.05.20.595026", "10.1101/2024.05.21.595203", "10.1101/2024.05.21.595212", "10.1101/2024.05.22.595230", "10.1101/2024.05.22.595370", "10.1101/2024.05.22.595404", "10.1101/2024.05.24.595673", "10.1101/2024.05.25.595906", "10.1101/2024.05.28.596156", "10.1101/2024.05.28.596304", "10.1101/2024.05.29.596372", "10.1101/2024.05.29.596388", "10.1101/2024.06.01.596914", "10.1101/2024.06.02.597007", "10.1101/2024.06.03.597245", "10.1101/2024.06.05.597503", "10.1101/2024.06.05.597511", "10.1101/2024.06.05.597577", "10.1101/2024.06.08.598009", "10.1101/2024.06.08.598080", "10.1101/2024.06.09.598129", "10.1101/2024.06.11.598403", "10.1101/2024.06.12.598694", "10.1101/2024.06.14.599090", "10.1101/2024.06.14.599134", "10.1101/2024.06.18.599663", "10.1101/2024.06.19.599377", "10.1101/2024.06.19.599752", "10.1101/2024.06.21.600041", "10.1101/2024.06.25.599664", "10.1101/2024.06.27.600806", "10.1101/206953", "10.1101/214015", "10.1101/222562", "10.1101/229260", "10.1101/232397", "10.1101/240598", "10.1101/240952", "10.1101/252189", "10.1101/262600", "10.1101/267971", "10.1101/269852", "10.1101/274233", "10.1101/274357", "10.1101/280214", "10.1101/283440", "10.1101/292961", "10.1101/293019", "10.1101/294918", "10.1101/297903", "10.1101/297960", "10.1101/302844", "10.1101/306019", "10.1101/314344", "10.1101/317974", "10.1101/319046", "10.1101/321356", "10.1101/331710", "10.1101/336453", "10.1101/339929", "10.1101/349084", "10.1101/354589", "10.1101/356741", "10.1101/373498", "10.1101/374702", "10.1101/377762", "10.1101/386458", "10.1101/388009", "10.1101/405308", "10.1101/408757", "10.1101/411439", "10.1101/412361", "10.1101/415364", "10.1101/432666", "10.1101/435990", "10.1101/443226", "10.1101/451823", "10.1101/455709", "10.1101/460147", "10.1101/462739", "10.1101/464859", "10.1101/478446", "10.1101/486134", "10.1101/495432", "10.1101/506204", "10.1101/517698", "10.1101/523605", "10.1101/523712", "10.1101/534073", "10.1101/537233", "10.1101/541250", "10.1101/546945", "10.1101/565721", "10.1101/569848", "10.1101/573378", "10.1101/582908", "10.1101/593970", "10.1101/597542", "10.1101/599399", "10.1101/601468", "10.1101/604751", "10.1101/607317", "10.1101/609040", "10.1101/609438", "10.1101/609941", "10.1101/615179", "10.1101/618603", "10.1101/622803", "10.1101/628214", "10.1101/630756", "10.1101/637298", "10.1101/638700", "10.1101/638981", "10.1101/644971", "10.1101/646182", "10.1101/656710", "10.1101/659292", "10.1101/664656", "10.1101/675280", "10.1101/679175", "10.1101/686279", "10.1101/708131", "10.1101/715136", "10.1101/720649", "10.1101/726398", "10.1101/735423", "10.1101/738393", "10.1101/748194", "10.1101/750729", "10.1101/757252", "10.1101/763664", "10.1101/772855", "10.1101/773085", "10.1101/777433", "10.1101/788778", "10.1101/793091", "10.1101/803890", "10.1101/803999", "10.1101/807107", "10.1101/807271", "10.1101/822916", "10.1101/829689", "10.1101/836908", "10.1101/838854", "10.1101/839324", "10.1101/841601", "10.1101/848325", "10.1101/852673", "10.1101/862458", "10.1101/cshperspect.a000034", "10.1101/cshperspect.a000109", "10.1101/cshperspect.a000778", "10.1101/cshperspect.a003798", "10.1101/cshperspect.a005975", "10.1101/cshperspect.a006866", "10.1101/cshperspect.a007005", "10.1101/cshperspect.a008045", "10.1101/cshperspect.a013334", "10.1101/cshperspect.a016626", "10.1101/cshperspect.a016790", "10.1101/cshperspect.a017152", "10.1101/cshperspect.a018754", "10.1101/cshperspect.a018804", "10.1101/cshperspect.a018903", "10.1101/cshperspect.a019067", "10.1101/cshperspect.a028522", "10.1101/cshperspect.a029264", "10.1101/cshperspect.a031427", "10.1101/cshperspect.a031500", "10.1101/cshperspect.a031534", "10.1101/cshperspect.a033977", "10.1101/cshperspect.a036152", "10.1101/cshperspect.a036400", "10.1101/cshperspect.a040204", "10.1101/cshperspect.a041471", "10.1101/gad.10.10.1260", "10.1101/gad.10.16.2067", "10.1101/gad.10.24.3202", "10.1101/gad.1011602", "10.1101/gad.1021202", "10.1101/gad.1098703", "10.1101/gad.11.22.3020", "10.1101/gad.12.11.1610", "10.1101/gad.12.15.2403", "10.1101/gad.12.15.2424", "10.1101/gad.12.15.2434", "10.1101/gad.12.17.2684", "10.1101/gad.12.19.2997", "10.1101/gad.12.19.3008", "10.1101/gad.12.4.547", "10.1101/gad.12.8.1108", "10.1101/gad.1228704", "10.1101/gad.13.10.1276", "10.1101/gad.13.13.1647", "10.1101/gad.1382806", "10.1101/gad.14.3.366", "10.1101/gad.14.7.841", "10.1101/gad.1525107", "10.1101/gad.1525507", "10.1101/gad.1561707", "10.1101/gad.1599207", "10.1101/gad.1636408", "10.1101/gad.1703108", "10.1101/gad.176826.111", "10.1101/gad.178434.111", "10.1101/gad.1800509", "10.1101/gad.1808809", "10.1101/gad.1814809", "10.1101/gad.1847110", "10.1101/gad.1874010", "10.1101/gad.1890410", "10.1101/gad.1899210", "10.1101/gad.1956010", "10.1101/gad.1971610", "10.1101/gad.1989510", "10.1101/gad.2003811", "10.1101/gad.2016111", "10.1101/gad.2016311", "10.1101/gad.203984.112", "10.1101/gad.233239.113", "10.1101/gad.235184.113", "10.1101/gad.241422.114", "10.1101/gad.248526.114", "10.1101/gad.258483.115", "10.1101/gad.262766.115", "10.1101/gad.274688.115", "10.1101/gad.281964.116", "10.1101/gad.285504", "10.1101/gad.293027.116", "10.1101/gad.299198.117", "10.1101/gad.303461.117", "10.1101/gad.308619.117", "10.1101/gad.309575.117", "10.1101/gad.310367.117", "10.1101/gad.311605.118", "10.1101/gad.321943.118", "10.1101/gad.327312.119", "10.1101/gad.343038.120", "10.1101/gad.345140.120", "10.1101/gad.348315.121", "10.1101/gad.349160.121", "10.1101/gad.349358.122", "10.1101/gad.350298.122", "10.1101/gad.486108", "10.1101/gad.503108", "10.1101/gad.6.3.497", "10.1101/gad.7.11.2110", "10.1101/gad.869501", "10.1101/gad.894701", "10.1101/gad.9.20.2470", "10.1101/gad.906601", "10.1101/gad.924301", "10.1101/gad.947102", "10.1101/gad.950902", "10.1101/gad.973302", "10.1101/gr.076059.108", "10.1101/gr.076075.108", "10.1101/gr.083899.108", "10.1101/gr.099226.109", "10.1101/gr.100552.109", "10.1101/gr.102491.109", "10.1101/gr.104935.110", "10.1101/gr.106245.110", "10.1101/gr.107524.110", "10.1101/gr.112961.110", "10.1101/gr.115956.110", "10.1101/gr.120535.111", "10.1101/gr.121749.111", "10.1101/gr.1239303", "10.1101/gr.127324.111", "10.1101/gr.129692.111", "10.1101/gr.130310.111", "10.1101/gr.132102", "10.1101/gr.139758.112", "10.1101/gr.141705.112", "10.1101/gr.148361.112", "10.1101/gr.156570.113", "10.1101/gr.158980.113", "10.1101/gr.160374.113", "10.1101/gr.164095.113", "10.1101/gr.164806.113", "10.1101/gr.175034.114", "10.1101/gr.176586.114", "10.1101/gr.177725.114", "10.1101/gr.185272.114", "10.1101/gr.185892.114", "10.1101/gr.186072.114", "10.1101/gr.202895.115", "10.1101/gr.203679.115", "10.1101/gr.207597.116", "10.1101/gr.209643.116", "10.1101/gr.210930.116", "10.1101/gr.211433.116", "10.1101/gr.211615.116", "10.1101/gr.212803.116", "10.1101/gr.217356.116", "10.1101/gr.219022.116", "10.1101/gr.219089.116", "10.1101/gr.220962.117", "10.1101/gr.226993.117", "10.1101/gr.227819.117", "10.1101/gr.229102", "10.1101/gr.231209.117", "10.1101/gr.234948.118", "10.1101/gr.236075.118", "10.1101/gr.236497.118", "10.1101/gr.239707.118", "10.1101/gr.242636.118", "10.1101/gr.255760.119", "10.1101/gr.256933.119", "10.1101/gr.2584104", "10.1101/gr.262774.120", "10.1101/gr.269068.120", "10.1101/gr.2693004", "10.1101/gr.275901.121", "10.1101/gr.275992.121", "10.1101/gr.276025.121", "10.1101/gr.276554.122", "10.1101/gr.277567.122", "10.1101/gr.3513905", "10.1101/gr.388902", "10.1101/gr.4565806", "10.1101/gr.473902", "10.1101/gr.4842106", "10.1101/gr.4843906", "10.1101/gr.5282906", "10.1101/gr.5391806", "10.1101/gr.6339607", "10.1101/gr.963903", "10.1101/lm.026542.112", "10.1101/lm.2153511", "10.1101/mcs.a004010", "10.1101/sqb.2018.83.037507", "10.1103/physrevb.100.014105", "10.1103/physrevb.101.115115", "10.1103/physrevb.102.115117", "10.1103/physrevb.103.014107", "10.1103/physrevb.103.165109", "10.1103/physrevb.104.l201114", "10.1103/physrevb.105.045126", "10.1103/physrevb.105.125118", "10.1103/physrevb.108.014511", "10.1103/physrevb.108.l060504", "10.1103/physrevb.109.214102", "10.1103/physrevb.75.085311", "10.1103/physrevb.78.235104", "10.1103/physrevb.82.085204", "10.1103/physrevb.83.115327", "10.1103/physrevb.84.161411", "10.1103/physrevb.85.092102", "10.1103/physrevb.85.201407", "10.1103/physrevb.93.014421", "10.1103/physrevb.98.024310", "10.1103/physrevb.98.174107", "10.1103/physrevb.98.184305", "10.1103/physrevb.98.214112", "10.1103/physrevb.99.064114", "10.1103/physreve.101.013205", "10.1103/physreve.62.1034", "10.1103/physreve.74.036104", "10.1103/physreve.76.011916", "10.1103/physrevfluids.4.013601", "10.1103/physrevfluids.5.123605", "10.1103/physrevfluids.7.093104", "10.1103/physrevfluids.7.l071101", "10.1103/physrevlett.106.178103", "10.1103/physrevlett.116.055901", "10.1103/physrevlett.118.023002", "10.1103/physrevlett.119.108001", "10.1103/physrevlett.120.156001", "10.1103/physrevlett.123.188101", "10.1103/physrevlett.130.018401", "10.1103/physrevlett.96.098102", "10.1103/physrevlett.97.168302", "10.1103/physrevmaterials.3.053610", "10.1103/physrevmaterials.3.055404", "10.1103/physrevmaterials.6.043604", "10.1103/physrevmaterials.6.083601", "10.1103/physrevresearch.1.033076", "10.1103/physrevresearch.2.013077", "10.1103/physrevresearch.2.043078", "10.1103/physrevx.10.031001", "10.1103/physrevx.11.011033", "10.1103/physrevx.13.031005", "10.1103/physrevx.8.011040", "10.1104/pp.103.037614", "10.1104/pp.104.055244", "10.1104/pp.105.067249", "10.1104/pp.106.080283", "10.1104/pp.108.127001", "10.1104/pp.108.130823", "10.1104/pp.109.148684", "10.1104/pp.111.176164", "10.1104/pp.114.239210", "10.1104/pp.114.253096", "10.1104/pp.114.254672", "10.1104/pp.15.00793", "10.1104/pp.16.00928", "10.1104/pp.19.00386", "10.1104/pp.20.00807", "10.1104/pp.20.00964", "10.1104/pp.43.5.827", "10.1105/tpc.105.035659", "10.1105/tpc.105.037689", "10.1105/tpc.106.042895", "10.1105/tpc.109.066266", "10.1105/tpc.110.078170", "10.1105/tpc.110.080069", "10.1105/tpc.111.095232", "10.1105/tpc.112.104232", "10.1105/tpc.114.124099", "10.1105/tpc.12.4.559", "10.1105/tpc.15.00010", "10.1105/tpc.15.00211", "10.1105/tpc.15.00725", "10.1105/tpc.18.00071", "10.1105/tpc.18.00766", "10.1105/tpc.19.00463", "10.1105/tpc.19.00828", "10.1107/97809553602060000101", "10.1107/97809553602060000517", "10.1107/97809553602060000520", "10.1107/s0021889807021206", "10.1107/s0021889810023915", "10.1107/s0021889891004399", "10.1107/s0108767309096998", "10.1107/s0108767312024579", "10.1107/s0567739476001873", "10.1107/s0907444909011548", "10.1107/s0907444909052925", "10.1107/s0907444910007493", "10.1107/s0907444910045749", "10.1107/s0907444913019379", "10.1107/s1600576716002569", "10.1107/s1600576717005830", "10.1107/s1744309110028575", "10.1107/s1744309112032435", "10.1107/s174430911301292x", "10.1107/s2052252522007904", "10.1107/s2053230x13024795", "10.1107/s2053230x22011414", "10.1107/s2053273315020926", "10.1107/s2053273317094359", "10.1107/s2053273318006083", "10.1107/s2053273324004418", "10.1107/s2056989021007891", "10.1107/s2056989021010173", "10.1107/s2059798319011471", "10.1107/s2059798320016071", "10.1107/s2059798320016836", "10.1107/s2059798321009542", "10.1107/s2059798321011785", "10.1108/jd-08-2022-0168", "10.1108/s1047-004220160000015008", "10.1109/cenim51130.2020.9297852", "10.1109/cvpr46437.2021.01547", "10.1109/cvpr52688.2022.00780", "10.1109/icassp49357.2023.10095229", "10.1109/iccv.1999.790410", "10.1109/iccv48922.2021.00986", "10.1109/iccv51070.2023.00390", "10.1109/iccv51070.2023.01086", "10.1109/icma.2014.6885796", "10.1109/icma.2016.7558851", "10.1109/ictcs.2019.8923104", "10.1109/iembs.1999.802059", "10.1109/iros.2015.7353394", "10.1109/isbi.2012.6235807", "10.1109/iscas48785.2022.9937567", "10.1109/isi.2018.8587380", "10.1109/jstqe.2016.2584787", "10.1109/nfv-sdn50289.2020.9289898", "10.1109/tbme.2019.2931195", "10.1109/tcbb.2015.2415806", "10.1109/tfuzz.2004.832538", "10.1109/tii.2019.2917318", "10.1109/tmrb.2020.3000584", "10.1109/tnb.2021.3065051", "10.1109/tsmc.2018.2874508", "10.1109/tuffc.2017.2713599", "10.1110/ps.051485205", "10.1110/ps.051563605", "10.1110/ps.062080006", "10.1110/ps.062098206", "10.1110/ps.062416606", "10.1110/ps.062668207", "10.1110/ps.073192208", "10.1111/1348-0421.12887", "10.1111/1365-2435.13242", "10.1111/1365-2656.13173", "10.1111/1462-2920.12327", "10.1111/1462-2920.13651", "10.1111/1462-2920.13987", "10.1111/1462-2920.14074", "10.1111/1462-2920.14075", "10.1111/1462-2920.14565", "10.1111/1462-2920.14713", "10.1111/1462-2920.14951", "10.1111/1462-2920.14998", "10.1111/1462-2920.15148", "10.1111/1462-2920.15422", "10.1111/1541-4337.12757", "10.1111/1574-6968.12504", "10.1111/1574-6976.12036", "10.1111/1574-6976.12054", "10.1111/1574-6976.12073", "10.1111/1744-7917.12449", "10.1111/1744-7917.12696", "10.1111/1751-7915.12186", "10.1111/1755-0998.13409", "10.1111/2041-210x.12960", "10.1111/2041-210x.13373", "10.1111/2049-632x.12034", "10.1111/2049-632x.12125", "10.1111/acel.12075", "10.1111/acel.12172", "10.1111/acel.12433", "10.1111/acel.12482", "10.1111/acel.12518", "10.1111/acel.12641", "10.1111/acel.12702", "10.1111/acel.12933", "10.1111/acel.13145", "10.1111/acel.13152", "10.1111/acel.14128", "10.1111/acer.14275", "10.1111/adb.13153", "10.1111/ahe.12494", "10.1111/ahg.12018", "10.1111/aji.12989", "10.1111/ajps.12357", "10.1111/ajt.13761", "10.1111/ajt.16122", "10.1111/all.14308", "10.1111/all.14639", "10.1111/all.14908", "10.1111/anhu.12314", "10.1111/bjd.17824", "10.1111/bjd.18643", "10.1111/bjd.19379", "10.1111/bjh.12541", "10.1111/bjh.12896", "10.1111/bjh.15614", "10.1111/bjh.16555", "10.1111/bjh.17496", "10.1111/boc.201800050", "10.1111/bpa.12517", "10.1111/bpa.12562", "10.1111/bpa.12716", "10.1111/bpa.12946", "10.1111/bph.12451", "10.1111/bph.13354", "10.1111/bph.13877", "10.1111/bph.14752", "10.1111/bph.14953", "10.1111/bph.15312", "10.1111/bph.15542", "10.1111/brv.12465", "10.1111/brv.12583", "10.1111/cas.12745", "10.1111/cas.13827", "10.1111/cas.14069", "10.1111/cas.14079", "10.1111/cbdd.13847", "10.1111/cea.12108", "10.1111/cea.12531", "10.1111/cea.12989", "10.1111/cei.12423", "10.1111/cei.13287", "10.1111/cen.13318", "10.1111/ceo.13917", "10.1111/cge.12181", "10.1111/cge.12707", "10.1111/cge.13146", "10.1111/cmi.12392", "10.1111/cmi.12580", "10.1111/cmi.12586", "10.1111/cmi.12857", "10.1111/cmi.13046", "10.1111/cmi.13241", "10.1111/cmi.13293", "10.1111/cpr.12854", "10.1111/ddg.12066", "10.1111/ddg.13249", "10.1111/ddg.13546", "10.1111/ddg.13968", "10.1111/dmcn.14758", "10.1111/ede.12376", "10.1111/ejh.12589", "10.1111/ejn.12535", "10.1111/ejn.13865", "10.1111/ejn.14286", "10.1111/ejn.14555", "10.1111/ejn.15181", "10.1111/ejn.15188", "10.1111/ele.12052", "10.1111/ele.13517", "10.1111/ens.12115", "10.1111/epi.13305", "10.1111/epi.14700", "10.1111/evo.12011", "10.1111/evo.12819", "10.1111/evo.14261", "10.1111/exd.13517", "10.1111/exd.14023", "10.1111/exd.14398", "10.1111/exd.14864", "10.1111/febs.13555", "10.1111/febs.13630", "10.1111/febs.13631", "10.1111/febs.13923", "10.1111/febs.14705", "10.1111/febs.15282", "10.1111/febs.15366", "10.1111/febs.15555", "10.1111/febs.15579", "10.1111/febs.15589", "10.1111/febs.15638", "10.1111/febs.15647", "10.1111/febs.15709", "10.1111/febs.15728", "10.1111/febs.15905", "10.1111/febs.15965", "10.1111/febs.16142", "10.1111/febs.16376", "10.1111/gbb.12379", "10.1111/gbb.12408", "10.1111/gbb.12509", "10.1111/gcb.14859", "10.1111/gtc.12338", "10.1111/gtc.12676", "10.1111/iej.13386", "10.1111/imb.12390", "10.1111/imb.12620", "10.1111/imcb.12306", "10.1111/imm.12023", "10.1111/imm.12290", "10.1111/imm.12325", "10.1111/imm.12674", "10.1111/imm.12800", "10.1111/imm.12868", "10.1111/imm.12925", "10.1111/imm.12930", "10.1111/imm.12933", "10.1111/imm.13067", "10.1111/imm.13167", "10.1111/imm.13178", "10.1111/imm.13193", "10.1111/imm.13208", "10.1111/imr.12087", "10.1111/imr.12171", "10.1111/imr.12189", "10.1111/imr.12217", "10.1111/imr.12224", "10.1111/imr.12241", "10.1111/imr.12259", "10.1111/imr.12268", "10.1111/imr.12299", "10.1111/imr.12311", "10.1111/imr.12344", "10.1111/imr.12638", "10.1111/imr.12650", "10.1111/imr.12722", "10.1111/imr.12740", "10.1111/imr.12828", "10.1111/ina.12487", "10.1111/j.0269-8463.2004.00856.x", "10.1111/j.0953-816x.2003.03123.x", "10.1111/j.1067-1927.2004.12404.x", "10.1111/j.1349-7006.2004.tb03231.x", "10.1111/j.1364-3703.2008.00527.x", "10.1111/j.1365-2133.2009.09071.x", "10.1111/j.1365-2133.2009.09511.x", "10.1111/j.1365-2141.2012.09113.x", "10.1111/j.1365-2249.2003.02323.x", "10.1111/j.1365-2249.2010.04290.x", "10.1111/j.1365-2249.2011.04515.x", "10.1111/j.1365-2427.2010.02461", "10.1111/j.1365-2559.1991.tb00229.x", "10.1111/j.1365-2559.2008.03168.x", "10.1111/j.1365-2567.2010.03368.x", "10.1111/j.1365-2583.2006.00610", "10.1111/j.1365-2672.2010.04689.x", "10.1111/j.1365-2818.1993.tb03313.x", "10.1111/j.1365-2958.1995.tb02255.x", "10.1111/j.1365-2958.2003.03934.x", "10.1111/j.1365-2958.2006.05172.x", "10.1111/j.1365-2958.2007.05904.x", "10.1111/j.1365-2958.2008.06485.x", "10.1111/j.1365-313x.2005.02478.x", "10.1111/j.1365-313x.2010.04263.x", "10.1111/j.1365-313x.2011.04537.x", "10.1111/j.1365-313x.2011.04801.x", "10.1111/j.1399-5448.2007.00361.x", "10.1111/j.1399-5448.2010.00683.x", "10.1111/j.1432-1033.1982.tb07039.x", "10.1111/j.1442-2042.2011.02933", "10.1111/j.1460-9568.1998.00333.x", "10.1111/j.1460-9568.2004.03813.x", "10.1111/j.1460-9568.2005.03853.x", "10.1111/j.1460-9568.2005.04120.x", "10.1111/j.1460-9568.2006.05039.x", "10.1111/j.1460-9568.2006.05221", "10.1111/j.1460-9568.2007.05662.x", "10.1111/j.1460-9568.2007.05820.x", "10.1111/j.1460-9568.2007.05972.x", "10.1111/j.1460-9568.2008.06518.x", "10.1111/j.1460-9568.2009.06696", "10.1111/j.1460-9568.2010.07564.x", "10.1111/j.1460-9568.2011.07600.x", "10.1111/j.1460-9568.2011.07668.x", "10.1111/j.1460-9568.2011.07832", "10.1111/j.1463-1326.2012.01652", "10.1111/j.1464-5491.2007.02285.x", "10.1111/j.1467-985x.2010.00676_9.x", "10.1111/j.1468-1331.2007.01730.x", "10.1111/j.1469-0691.2011.03638.x", "10.1111/j.1469-0691.2012.03930.x", "10.1111/j.1471-4159.2004.02879", "10.1111/j.1471-4159.2006.04154", "10.1111/j.1471-4159.2010.06608", "10.1111/j.1471-4159.2011.07630.x", "10.1111/j.1471-4159.2012.07735.x", "10.1111/j.1472-765x.2009.02614.x", "10.1111/j.1474-9726.2010.00567.x", "10.1111/j.1476-5381.2009.00291.x", "10.1111/j.1476-5381.2012.02184.x", "10.1111/j.1523-1755.2005.00472.x", "10.1111/j.1528-1167.2008.01633.x", "10.1111/j.1528-1167.2008.01787.x", "10.1111/j.1550-7408.2002.tb00232.x", "10.1111/j.1567-1364.2007.00283.x", "10.1111/j.1570-7458.1989.tb02384.x", "10.1111/j.1574-6968.2000.tb09074.x", "10.1111/j.1574-6968.2002.tb11138.x", "10.1111/j.1574-6968.2009.01855.x", "10.1111/j.1574-6968.2010.02106.x", "10.1111/j.1574-6968.2011.02283.x", "10.1111/j.1574-6976.2006.00046.x", "10.1111/j.1574-6976.2007.00076.x", "10.1111/j.1574-6976.2011.00317.x", "10.1111/j.1600-065x.2010.00984", "10.1111/j.1600-065x.2011.01055.x", "10.1111/j.1600-0897.2010.00836.x", "10.1111/j.1742-4658.2008.06391.x", "10.1111/j.1742-4658.2009.07366.x", "10.1111/j.1742-4658.2010.07892.x", "10.1111/j.1744-7348.1981.tb05122.x", "10.1111/j.1749-6632.2010.05938.x", "10.1111/j.1749-6632.2011.06011", "10.1111/j.1749-6632.2011.06304", "10.1111/j.1749-6632.2011.06362.x", "10.1111/j.1749-6632.2012.06517", "10.1111/j.1749-6632.2012.06517.x", "10.1111/j.2517-6161.1995.tb02031.x", "10.1111/jam.12535", "10.1111/jcmm.16569", "10.1111/jcmm.16913", "10.1111/jdi.12294", "10.1111/jdi.13072", "10.1111/jdv.14704", "10.1111/jeb.13927", "10.1111/jfpe.13798", "10.1111/jgh.12592", "10.1111/jipb.12763", "10.1111/jmi.12233", "10.1111/jnc.12231", "10.1111/jnc.13056", "10.1111/jnc.13284", "10.1111/jnc.13923", "10.1111/jnc.14134", "10.1111/jnc.14774", "10.1111/jne.12070", "10.1111/joa.12920", "10.1111/joa.12948", "10.1111/jocd.13538", "10.1111/jpc.13841", "10.1111/jph.12888", "10.1111/jpy.13045", "10.1111/jpy.13094", "10.1111/jse.12143", "10.1111/jse.12548", "10.1111/jvh.13341", "10.1111/liv.14814", "10.1111/mec.12615", "10.1111/mec.13138", "10.1111/mec.13990", "10.1111/mec.14549", "10.1111/mec.15062", "10.1111/mec.15462", "10.1111/mec.16098", "10.1111/micc.12587", "10.1111/mmi.12105", "10.1111/mmi.12376", "10.1111/mmi.12845", "10.1111/mmi.12969", "10.1111/mmi.13263", "10.1111/mmi.14000", "10.1111/mmi.14334", "10.1111/mmi.14394", "10.1111/mmi.14648", "10.1111/mmi.14652", "10.1111/mmi.14654", "10.1111/mmi.14674", "10.1111/mmi.14792", "10.1111/mpp.12108", "10.1111/mpp.12318", "10.1111/mpp.12542", "10.1111/myc.12469", "10.1111/nan.12114", "10.1111/nan.12337", "10.1111/nan.12689", "10.1111/ner.13291", "10.1111/ner.13380", "10.1111/neup.12217", "10.1111/neup.12244", "10.1111/neup.12443", "10.1111/nph.14217", "10.1111/nph.14619", "10.1111/nph.14992", "10.1111/nph.16438", "10.1111/nph.16903", "10.1111/nph.19360", "10.1111/nyas.12831", "10.1111/nyas.13087", "10.1111/nyas.13448", "10.1111/nyas.14094", "10.1111/obr.12548", "10.1111/obr.12679", "10.1111/pbi.12200", "10.1111/pbi.12317", "10.1111/pbi.12447", "10.1111/pbi.12771", "10.1111/pbi.12884", "10.1111/pbi.13084", "10.1111/pce.13035", "10.1111/pce.13371", "10.1111/pce.13609", "10.1111/pcmr.12498", "10.1111/pcmr.12887", "10.1111/pcmr.12957", "10.1111/pim.12912", "10.1111/ppa.13229", "10.1111/ppl.12549", "10.1111/raq.12583", "10.1111/resp.12762", "10.1111/sji.12499", "10.1111/sji.12664", "10.1111/sji.12927", "10.1111/sji.13120", "10.1111/sms.12581", "10.1111/tbed.12957", "10.1111/tbj.13655", "10.1111/tpj.12051", "10.1111/tpj.12254", "10.1111/tpj.12441", "10.1111/tpj.12675", "10.1111/tpj.12806", "10.1111/tpj.12858", "10.1111/tpj.13415", "10.1111/tpj.13471", "10.1111/tpj.13481", "10.1111/tpj.13550", "10.1111/tpj.13788", "10.1111/tpj.13878", "10.1111/tpj.14051", "10.1111/tpj.14316", "10.1111/tpj.14440", "10.1111/tpj.14542", "10.1111/tpj.14578", "10.1111/tpj.15093", "10.1111/tpj.15121", "10.1111/tpj.15413", "10.1111/tra.12026", "10.1111/tra.12278", "10.1111/tra.12613", "10.1111/tra.12643", "10.1111/tra.12810", "10.1111/vop.12882", "10.1111/wej.12571", "10.1111/wrr.12607", "10.1111/xen.12345", "10.1113/jp271437", "10.1113/jp271880", "10.1113/jp272134", "10.1113/jp275335", "10.1113/jp275998", "10.1113/jp276708", "10.1113/jphysiol.1969.sp008820", "10.1113/jphysiol.2001.013506", "10.1113/jphysiol.2002.018101", "10.1113/jphysiol.2003.048843", "10.1113/jphysiol.2004.073353", "10.1113/jphysiol.2005.095638", "10.1113/jphysiol.2005.100719", "10.1113/jphysiol.2007.130211", "10.1113/jphysiol.2007.143149", "10.1113/jphysiol.2008.155655", "10.1113/jphysiol.2008.155739", "10.1113/jphysiol.2009.181917", "10.1113/jphysiol.2010.187096", "10.1113/jphysiol.2012.235119", "10.1113/jphysiol.2013.255695", "10.1113/jphysiol.2014.277582", "10.1115/1.1946047", "10.1115/1.4040995", "10.1115/fedsm2018-83257", "10.1116/1.4907727", "10.1116/1.572435", "10.1117/1.3486538", "10.1117/1.jbo.19.10.108003", "10.1117/12.2032322", "10.1117/12.2052836", "10.1117/12.2584191", "10.1124/dmd.120.000139", "10.1124/jpet.106.107771", "10.1124/jpet.111.187559", "10.1124/jpet.119.259663", "10.1124/jpet.121.000612", "10.1124/jpet.121.000766", "10.1124/jpet.123.001659", "10.1124/mol.106.026062", "10.1124/mol.113.086702", "10.1124/mol.116.105015", "10.1124/mol.65.3.528", "10.1124/pharmrev.121.000445", "10.1124/pharmrev.121.000528", "10.1124/pr.110.003285", "10.1124/pr.111.005603", "10.1124/pr.113.008052", "10.1124/pr.114.009647", "10.1124/pr.116.013367", "10.1124/pr.117.013896", "10.1124/pr.119.017681", "10.1126/sciadv.1500737", "10.1126/sciadv.1603001", "10.1126/sciadv.aat0450", "10.1126/sciadv.aat2731", "10.1126/sciadv.aau5670", "10.1126/sciadv.aav3335", "10.1126/sciadv.aaw3851", "10.1126/sciadv.aax0947", "10.1126/sciadv.aax5717", "10.1126/sciadv.aax8898", "10.1126/sciadv.aay3324", "10.1126/sciadv.aay9634", "10.1126/sciadv.aaz4370", "10.1126/sciadv.aaz4530", "10.1126/sciadv.aaz8836", "10.1126/sciadv.aaz8934", "10.1126/sciadv.aba2735", "10.1126/sciadv.abb3446", "10.1126/sciadv.abb5528", "10.1126/sciadv.abb8097", "10.1126/sciadv.abc2777", "10.1126/sciadv.abc3020", "10.1126/sciadv.abc9123", "10.1126/sciadv.abd8049", "10.1126/sciadv.abe4362", "10.1126/sciadv.abe5819", "10.1126/sciadv.abf9808", "10.1126/sciadv.abg1601", "10.1126/sciadv.abg4910", "10.1126/sciadv.abj1249", "10.1126/sciadv.add4623", "10.1126/sciadv.adk0171", "10.1126/science.1058040", "10.1126/science.1059796", "10.1126/science.1060089", "10.1126/science.1065810", "10.1126/science.1066020", "10.1126/science.1067799", "10.1126/science.1068037", "10.1126/science.1070536", "10.1126/science.1072047", "10.1126/science.1074192", "10.1126/science.1079293", "10.1126/science.1079490", "10.1126/science.1081919", "10.1126/science.1084073", "10.1126/science.1085458", "10.1126/science.1085643", "10.1126/science.1088196", "10.1126/science.1090278", "10.1126/science.1092472", "10.1126/science.1092780", "10.1126/science.1099593", "10.1126/science.1103717", "10.1126/science.1106148", "10.1126/science.1114816", "10.1126/science.1116995", "10.1126/science.1117196", "10.1126/science.1117679", "10.1126/science.1117893", "10.1126/science.1122927", "10.1126/science.1123933", "10.1126/science.1125129", "10.1126/science.1128197", "10.1126/science.1132939", "10.1126/science.1136281", "10.1126/science.1136736", "10.1126/science.1139158", "10.1126/science.1149504", "10.1126/science.1150021", "10.1126/science.1153069", "10.1126/science.1153629", "10.1126/science.1162327", "10.1126/science.1164772", "10.1126/science.1167983", "10.1126/science.1168488", "10.1126/science.1168978", "10.1126/science.1170160", "10.1126/science.1174447", "10.1126/science.1175870", "10.1126/science.1176056", "10.1126/science.1176676", "10.1126/science.1180823", "10.1126/science.1181498", "10.1126/science.1188308", "10.1126/science.1189992", "10.1126/science.1191138", "10.1126/science.1194637", "10.1126/science.1198308", "10.1126/science.1198374", "10.1126/science.1198817", "10.1126/science.1198914", "10.1126/science.1198949", "10.1126/science.1198973", "10.1126/science.1202529", "10.1126/science.1202793", "10.1126/science.1202947", "10.1126/science.1203810", "10.1126/science.1204040", "10.1126/science.1204592", "10.1126/science.1207018", "10.1126/science.1207125", "10.1126/science.1208130", "10.1126/science.1208347", "10.1126/science.1209038", "10.1126/science.1209368", "10.1126/science.1211204", "10.1126/science.1212642", "10.1126/science.1215704", "10.1126/science.1216379", "10.1126/science.1220961", "10.1126/science.1222700", "10.1126/science.1222794", "10.1126/science.1225152", "10.1126/science.1225720", "10.1126/science.1225829", "10.1126/science.1228261", "10.1126/science.1228792", "10.1126/science.1230612", "10.1126/science.1231143", "10.1126/science.1231776", "10.1126/science.1232253", "10.1126/science.1232542", "10.1126/science.1235122", "10.1126/science.1237973", "10.1126/science.1240104", "10.1126/science.1240622", "10.1126/science.1241006", "10.1126/science.1241680", "10.1126/science.1243357", "10.1126/science.1247005", "10.1126/science.1247997", "10.1126/science.1250834", "10.1126/science.1252510", "10.1126/science.1254803", "10.1126/science.1256780", "10.1126/science.1258096", "10.1126/science.1259472", "10.1126/science.1260403", "10.1126/science.1260419", "10.1126/science.1261121", "10.1126/science.1261172", "10.1126/science.1261671", "10.1126/science.1262110", "10.1126/science.1411571", "10.1126/science.181845", "10.1126/science.2028256", "10.1126/science.2171146", "10.1126/science.270.5235.475", "10.1126/science.271.5252.1081", "10.1126/science.272.5269.1785", "10.1126/science.274.5287.546", "10.1126/science.274.5288.798", "10.1126/science.275.5305.1468", "10.1126/science.276.5309.122", "10.1126/science.278.5337.474", "10.1126/science.278.5338.631", "10.1126/science.278.5338.675", "10.1126/science.278.5343.1623", "10.1126/science.279.5349.349", "10.1126/science.281.5379.1001", "10.1126/science.282.5393.1497", "10.1126/science.282.5397.2258", "10.1126/science.283.5404.978", "10.1126/science.283.5405.1168", "10.1126/science.283.5407.1482", "10.1126/science.284.5413.493", "10.1126/science.284.5421.1837", "10.1126/science.285.5434.1733", "10.1126/science.286.5446.1913", "10.1126/science.287.5450.116", "10.1126/science.287.5450.128", "10.1126/science.287.5461.2185", "10.1126/science.288.5470.1439", "10.1126/science.289.5481.905", "10.1126/science.289.5481.920", "10.1126/science.291.5512.2370", "10.1126/science.298.5594.824", "10.1126/science.338.6108.758", "10.1126/science.451548", "10.1126/science.6867735", "10.1126/science.7352263", "10.1126/science.7618087", "10.1126/science.7624797", "10.1126/science.7725097", "10.1126/science.8122112", "10.1126/science.8266077", "10.1126/science.8303295", "10.1126/science.8385802", "10.1126/science.860134", "10.1126/science.aaa1193", "10.1126/science.aaa1348", "10.1126/science.aaa1934", "10.1126/science.aaa2151", "10.1126/science.aaa3872", "10.1126/science.aaa9101", "10.1126/science.aab1433", "10.1126/science.aab1785", "10.1126/science.aac4223", "10.1126/science.aac6633", "10.1126/science.aac7041", "10.1126/science.aac7247", "10.1126/science.aac9752", "10.1126/science.aad0314", "10.1126/science.aad0616", "10.1126/science.aad2035", "10.1126/science.aad3018", "10.1126/science.aad5497", "10.1126/science.aad8373", "10.1126/science.aad8411", "10.1126/science.aad9024", "10.1126/science.aad9421", "10.1126/science.aae0344", "10.1126/science.aaf0683", "10.1126/science.aaf1420", "10.1126/science.aaf2403", "10.1126/science.aaf2666", "10.1126/science.aaf4238", "10.1126/science.aaf4382", "10.1126/science.aaf4802", "10.1126/science.aaf5037", "10.1126/science.aaf8729", "10.1126/science.aag2445", "10.1126/science.aah4993", "10.1126/science.aah6130", "10.1126/science.aah6362", "10.1126/science.aai7685", "10.1126/science.aai8132", "10.1126/science.aaj2067", "10.1126/science.aaj2239", "10.1126/science.aal3222", "10.1126/science.aam8999", "10.1126/science.aam9080", "10.1126/science.aan0221", "10.1126/science.aan2788", "10.1126/science.aan5544", "10.1126/science.aan6042", "10.1126/science.aan6619", "10.1126/science.aan8690", "10.1126/science.aan8862", "10.1126/science.aan8868", "10.1126/science.aao2933", "10.1126/science.aao3048", "10.1126/science.aao3099", "10.1126/science.aao5056", "10.1126/science.aar1965", "10.1126/science.aar3131", "10.1126/science.aar4060", "10.1126/science.aar7112", "10.1126/science.aas9129", "10.1126/science.aat0572", "10.1126/science.aat1178", "10.1126/science.aat6280", "10.1126/science.aau0320", "10.1126/science.aau1208", "10.1126/science.aau1646", "10.1126/science.aau2078", "10.1126/science.aau2486", "10.1126/science.aau2596", "10.1126/science.aau2753", "10.1126/science.aau2818", "10.1126/science.aau3879", "10.1126/science.aav0379", "10.1126/science.aav0725", "10.1126/science.aav7617", "10.1126/science.aav7893", "10.1126/science.aav8573", "10.1126/science.aaw1219", "10.1126/science.aaw2493", "10.1126/science.aaw2619", "10.1126/science.aaw2900", "10.1126/science.aaw2999", "10.1126/science.aaw3381", "10.1126/science.aaw7166", "10.1126/science.aaw7479", "10.1126/science.aax0249", "10.1126/science.aax1323", "10.1126/science.aax3338", "10.1126/science.aax6752", "10.1126/science.aay0793", "10.1126/science.aay3224", "10.1126/science.aay9333", "10.1126/science.aay9514", "10.1126/science.aaz1776", "10.1126/science.aaz3505", "10.1126/science.aaz6896", "10.1126/science.aaz7548", "10.1126/science.aba0372", "10.1126/science.aba2374", "10.1126/science.aba2658", "10.1126/science.aba2894", "10.1126/science.aba5906", "10.1126/science.aba6500", "10.1126/science.abb2507", "10.1126/science.abb3634", "10.1126/science.abb4534", "10.1126/science.abb5008", "10.1126/science.abb7269", "10.1126/science.abb8330", "10.1126/science.abb9818", "10.1126/science.abc2241", "10.1126/science.abc3517", "10.1126/science.abc4209", "10.1126/science.abc6405", "10.1126/science.abc6952", "10.1126/science.abd0827", "10.1126/science.abd0831", "10.1126/science.abd5059", "10.1126/science.abe0981", "10.1126/science.abe3255", "10.1126/science.abe3354", "10.1126/science.abe4747", "10.1126/science.abe6230", "10.1126/science.abg3055", "10.1126/science.abi8175", "10.1126/science.abj6987", "10.1126/science.abj7662", "10.1126/science.abl4896", "10.1126/science.abl6618", "10.1126/science.abn2100", "10.1126/science.abn2688", "10.1126/science.abn8652", "10.1126/science.abn9886", "10.1126/science.abo0693", "10.1126/science.abo0924", "10.1126/science.abp9563", "10.1126/science.abq0225", "10.1126/science.add1250", "10.1126/science.add1964", "10.1126/science.add2187", "10.1126/science.add9330", "10.1126/science.ade2574", "10.1126/science.adh7699", "10.1126/science.adj4088", "10.1126/science.adk1075", "10.1126/science.adk9469", "10.1126/science.adl5364", "10.1126/sciimmunol.aaj1996", "10.1126/sciimmunol.aam6641", "10.1126/sciimmunol.aar4526", "10.1126/sciimmunol.aar6689", "10.1126/sciimmunol.aat1482", "10.1126/sciimmunol.aat2738", "10.1126/sciimmunol.aau1022", "10.1126/sciimmunol.aau9079", "10.1126/sciimmunol.aav8995", "10.1126/sciimmunol.aay1863", "10.1126/sciimmunol.aay6017", "10.1126/sciimmunol.aay7501", "10.1126/sciimmunol.aaz4415", "10.1126/sciimmunol.aaz6894", "10.1126/sciimmunol.aaz8035", "10.1126/sciimmunol.aaz9631", "10.1126/sciimmunol.abd8003", "10.1126/sciimmunol.abh4271", "10.1126/sciimmunol.abi7160", "10.1126/sciimmunol.abj2132", "10.1126/sciimmunol.abj3859", "10.1126/sciimmunol.abj9836", "10.1126/sciimmunol.abn3800", "10.1126/sciimmunol.abo2202", "10.1126/sciimmunol.adh0152", "10.1126/sciimmunol.adn1452", "10.1126/scisignal.1164795", "10.1126/scisignal.133pe39", "10.1126/scisignal.2000647", "10.1126/scisignal.2001212", "10.1126/scisignal.2001232", "10.1126/scisignal.2003309", "10.1126/scisignal.2003509", "10.1126/scisignal.2003825", "10.1126/scisignal.2004075", "10.1126/scisignal.aaa5157", "10.1126/scisignal.aad6281", "10.1126/scisignal.aaf7279", "10.1126/scisignal.aak9702", "10.1126/scisignal.aan0852", "10.1126/scisignal.aao3332", "10.1126/scisignal.aat4617", "10.1126/scisignal.aav5183", "10.1126/scisignal.aay6013", "10.1126/scisignal.aaz5267", "10.1126/scisignal.abb4778", "10.1126/scisignal.abd8379", "10.1126/scisignal.abe4509", "10.1126/scitranslmed.3002530", "10.1126/scitranslmed.3003293", "10.1126/scitranslmed.3004754", "10.1126/scitranslmed.3005930", "10.1126/scitranslmed.3007828", "10.1126/scitranslmed.3008961", "10.1126/scitranslmed.3009337", "10.1126/scitranslmed.3010302", "10.1126/scitranslmed.3010641", "10.1126/scitranslmed.aaa4691", "10.1126/scitranslmed.aad0623", "10.1126/scitranslmed.aad3740", "10.1126/scitranslmed.aag1209", "10.1126/scitranslmed.aah6650", "10.1126/scitranslmed.aai8700", "10.1126/scitranslmed.aal4069", "10.1126/scitranslmed.aal4712", "10.1126/scitranslmed.aan1145", "10.1126/scitranslmed.aao6806", "10.1126/scitranslmed.aap8307", "10.1126/scitranslmed.aar3619", "10.1126/scitranslmed.aat3005", "10.1126/scitranslmed.aat9892", "10.1126/scitranslmed.aau5758", "10.1126/scitranslmed.aau6870", "10.1126/scitranslmed.aay9101", "10.1126/scitranslmed.abb5413", "10.1126/scitranslmed.abb9283", "10.1126/scitranslmed.abd2223", "10.1126/scitranslmed.add1016", "10.1127/archiv-hydrobiol/149/2000/337", "10.1127/ejm/2018/0030-2694", "10.1128/9781555816506.ch3", "10.1128/9781555816636.ch8", "10.1128/9781555817640.ch3", "10.1128/9781555818296.ch20", "10.1128/9781555819194.ch25", "10.1128/9781555819217.ch50", "10.1128/aac.00123-06", "10.1128/aac.00325-13", "10.1128/aac.00448-13", "10.1128/aac.00477-13", "10.1128/aac.00483-20", "10.1128/aac.00532-11", "10.1128/aac.00665-08", "10.1128/aac.00744-09", "10.1128/aac.00768-19", "10.1128/aac.00840-20", "10.1128/aac.00944-19", "10.1128/aac.00963-09", "10.1128/aac.01188-18", "10.1128/aac.01217-10", "10.1128/aac.01304-07", "10.1128/aac.01310-13", "10.1128/aac.01426-12", "10.1128/aac.01439-13", "10.1128/aac.01666-17", "10.1128/aac.01884-15", "10.1128/aac.01999-19", "10.1128/aac.02190-17", "10.1128/aac.02425-14", "10.1128/aac.02502-19", "10.1128/aac.04077-14", "10.1128/aac.05168-14", "10.1128/aac.06014-11", "10.1128/aac.06199-11", "10.1128/aac.36.11.2432", "10.1128/aac.36.12.2686", "10.1128/aac.38.4.681", "10.1128/aac.42.9.2171", "10.1128/aac.44.4.827-834.2000", "10.1128/aac.47.1.181-187.2003", "10.1128/aac.47.7.2273-2282.2003", "10.1128/aac.47.7.2310-2312.2003", "10.1128/aac.47.9.2868-2874.2003", "10.1128/aac.48.2.505-513.2004", "10.1128/aac.49.11.4485-4491.2005", "10.1128/aac.49.7.2941-2948.2005", "10.1128/aac.49.8.3302-3310.2005", "10.1128/aac.50.4.1411-1418.2006", "10.1128/aem.00078-17", "10.1128/aem.00371-19", "10.1128/aem.00373-10", "10.1128/aem.00434-11", "10.1128/aem.00493-19", "10.1128/aem.00733-07", "10.1128/aem.00866-07", "10.1128/aem.01067-12", "10.1128/aem.01486-22", "10.1128/aem.01683-06", "10.1128/aem.01704-15", "10.1128/aem.01802-16", "10.1128/aem.01966-15", "10.1128/aem.02246-14", "10.1128/aem.02435-14", "10.1128/aem.02589-19", "10.1128/aem.03317-16", "10.1128/aem.03995-13", "10.1128/aem.05274-11", "10.1128/aem.67.4.1575-1580.2001", "10.1128/aem.68.5.2095-2100.2002", "10.1128/aem.72.3.1858-1872.2006", "10.1128/cmr.00024-17", "10.1128/cmr.00050-19", "10.1128/cmr.00051-10", "10.1128/cmr.00058-07", "10.1128/cmr.00058-16", "10.1128/cmr.00059-05", "10.1128/cmr.00117-14", "10.1128/cmr.00181-19", "10.1128/cmr.9.2.148", "10.1128/ec.00096-15", "10.1128/ec.00204-06", "10.1128/ec.00262-14", "10.1128/ec.3.1.1-13.2004", "10.1128/ec.4.12.1963-1970.2005", "10.1128/ec.4.2.298-309.2005", "10.1128/ec.4.8.1328-1342.2005", "10.1128/ecosalplus.4.3.2", "10.1128/ecosalplus.5.6.3", "10.1128/ecosalplus.esp-0001-2019", "10.1128/ecosalplus.esp-0007-2013", "10.1128/ecosalplus.esp-0030-2019", "10.1128/genomea.00215-17", "10.1128/iai.00009-11", "10.1128/iai.00030-14", "10.1128/iai.00096-09", "10.1128/iai.00190-06", "10.1128/iai.00259-20", "10.1128/iai.00287-06", "10.1128/iai.00413-18", "10.1128/iai.00468-17", "10.1128/iai.00573-18", "10.1128/iai.00654-20", "10.1128/iai.00724-09", "10.1128/iai.00882-09", "10.1128/iai.00936-15", "10.1128/iai.01037-09", "10.1128/iai.01048-10", "10.1128/iai.01333-07", "10.1128/iai.01410-07", "10.1128/iai.01714-05", "10.1128/iai.02073-05", "10.1128/iai.02094-05", "10.1128/iai.02494-14", "10.1128/iai.03009-14", "10.1128/iai.03016-14", "10.1128/iai.05191-11", "10.1128/iai.67.11.6084-6089.1999", "10.1128/iai.69.1.123-128.2001", "10.1128/iai.69.11.7121-7129.2001", "10.1128/iai.70.7.3793-3803.2002", "10.1128/iai.71.10.5940-5950.2003", "10.1128/iai.71.5.2724-2735.2003", "10.1128/iai.71.6.3020-3027.2003", "10.1128/iai.72.11.6471-6479.2004", "10.1128/iai.72.4.2412-2415.2004", "10.1128/iai.73.6.3598-3608.2005", "10.1128/iai.74.1.615-624.2006", "10.1128/jb.00011-17", "10.1128/jb.00091-13", "10.1128/jb.00216-07", "10.1128/jb.00233-19", "10.1128/jb.00243-07", "10.1128/jb.00290-18", "10.1128/jb.00353-19", "10.1128/jb.00365-20", "10.1128/jb.00369-11", "10.1128/jb.00389-11", "10.1128/jb.00395-18", "10.1128/jb.00413-13", "10.1128/jb.00423-15", "10.1128/jb.00453-15", "10.1128/jb.00454-16", "10.1128/jb.00461-07", "10.1128/jb.00479-21", "10.1128/jb.00540-17", "10.1128/jb.00564-13", "10.1128/jb.00619-08", "10.1128/jb.00773-17", "10.1128/jb.00774-06", "10.1128/jb.00784-18", "10.1128/jb.00845-15", "10.1128/jb.01028-07", "10.1128/jb.01032-09", "10.1128/jb.01041-13", "10.1128/jb.01080-13", "10.1128/jb.01190-06", "10.1128/jb.01215-06", "10.1128/jb.01318-08", "10.1128/jb.01460-10", "10.1128/jb.01493-07", "10.1128/jb.01857-06", "10.1128/jb.01982-05", "10.1128/jb.02176-12", "10.1128/jb.02263-14", "10.1128/jb.05914-11", "10.1128/jb.169.6.2466-2470.1987", "10.1128/jb.172.11.6585-6588.1990", "10.1128/jb.174.13.4239-4245.1992", "10.1128/jb.176.10.2991-2998.1994", "10.1128/jb.176.17.5297-5303.1994", "10.1128/jb.176.24.7439-7446.1994", "10.1128/jb.178.7.2044-2050.1996", "10.1128/jb.179.17.5511-5515.1997", "10.1128/jb.179.9.2949-2957.1997", "10.1128/jb.182.20.5749-5756.2000", "10.1128/jb.183.12.3712-3720.2001", "10.1128/jb.183.15.4543-4550.2001", "10.1128/jb.183.20.5974-5981.2001", "10.1128/jb.183.23.6957-6960.2001", "10.1128/jb.184.12.3224-3231.2002", "10.1128/jb.184.13.3485-3491.2002", "10.1128/jb.184.18.5077-5087.2002", "10.1128/jb.184.3.857-858.2002", "10.1128/jb.184.6.1649-1660.2002", "10.1128/jb.185.3.860-869.2003", "10.1128/jb.186.22.7670-7679.2004", "10.1128/jb.187.21.7204-7213.2005", "10.1128/jcm.00816-08", "10.1128/jcm.00949-08", "10.1128/jcm.01269-19", "10.1128/jcm.01457-17", "10.1128/jcm.01597-18", "10.1128/jcm.01637-14", "10.1128/jcm.01775-18", "10.1128/jcm.01927-17", "10.1128/jcm.02467-09", "10.1128/jcm.02594-14", "10.1128/jcm.02658-12", "10.1128/jcm.06173-11", "10.1128/jcm.06671-11", "10.1128/jcm.43.9.4382-4390.2005", "10.1128/jvi.00114-18", "10.1128/jvi.00230-17", "10.1128/jvi.00329-14", "10.1128/jvi.00357-16", "10.1128/jvi.00533-19", "10.1128/jvi.00534-14", "10.1128/jvi.00813-18", "10.1128/jvi.00947-19", "10.1128/jvi.00948-19", "10.1128/jvi.00976-20", "10.1128/jvi.00995-10", "10.1128/jvi.01011-18", "10.1128/jvi.01281-09", "10.1128/jvi.01296-15", "10.1128/jvi.01381-18", "10.1128/jvi.01517-07", "10.1128/jvi.01562-16", "10.1128/jvi.01641-07", "10.1128/jvi.01679-19", "10.1128/jvi.01769-10", "10.1128/jvi.01948-14", "10.1128/jvi.02000-08", "10.1128/jvi.02013-18", "10.1128/jvi.02070-15", "10.1128/jvi.02156-17", "10.1128/jvi.02245-06", "10.1128/jvi.02411-16", "10.1128/jvi.02461-09", "10.1128/jvi.02629-06", "10.1128/jvi.03305-12", "10.1128/jvi.03413-12", "10.1128/jvi.76.1.142-150.2002", "10.1128/jvi.76.1.303-312.2002", "10.1128/jvi.76.11.5678-5691.2002", "10.1128/jvi.77.11.6493-6506.2003", "10.1128/mbio.00154-16", "10.1128/mbio.00156-12", "10.1128/mbio.00189-19", "10.1128/mbio.00191-12", "10.1128/mbio.00196-19", "10.1128/mbio.00285-15", "10.1128/mbio.00478-15", "10.1128/mbio.00768-19", "10.1128/mbio.01000-13", "10.1128/mbio.01024-18", "10.1128/mbio.01027-20", "10.1128/mbio.01059-14", "10.1128/mbio.01076-14", "10.1128/mbio.01254-20", "10.1128/mbio.01315-15", "10.1128/mbio.01377-14", "10.1128/mbio.01979-17", "10.1128/mbio.02027-20", "10.1128/mbio.02125-17", "10.1128/mbio.02214-15", "10.1128/mbio.02265-15", "10.1128/mbio.02288-20", "10.1128/mbio.02417-18", "10.1128/mbio.02505-14", "10.1128/mbio.02550-18", "10.1128/mbio.03580-21", "10.1128/mcb.00040-15", "10.1128/mcb.00052-17", "10.1128/mcb.00055-13", "10.1128/mcb.00131-10", "10.1128/mcb.00131-16", "10.1128/mcb.00156-17", "10.1128/mcb.00202-06", "10.1128/mcb.00224-07", "10.1128/mcb.00251-12", "10.1128/mcb.00253-20", "10.1128/mcb.00285-18", "10.1128/mcb.00302-10", "10.1128/mcb.00341-15", "10.1128/mcb.00433-06", "10.1128/mcb.00487-06", "10.1128/mcb.00560-10", "10.1128/mcb.00568-18", "10.1128/mcb.00601-09", "10.1128/mcb.00656-06", "10.1128/mcb.00756-09", "10.1128/mcb.00773-15", "10.1128/mcb.00828-15", "10.1128/mcb.01118-06", "10.1128/mcb.01227-08", "10.1128/mcb.01274-08", "10.1128/mcb.01331-07", "10.1128/mcb.01478-07", "10.1128/mcb.01603-12", "10.1128/mcb.01634-13", "10.1128/mcb.01671-06", "10.1128/mcb.01674-07", "10.1128/mcb.01682-07", "10.1128/mcb.02032-07", "10.1128/mcb.02047-06", "10.1128/mcb.02056-07", "10.1128/mcb.05832-11", "10.1128/mcb.12.3.915-927.1992", "10.1128/mcb.15.11.5906", "10.1128/mcb.16.6.2670", "10.1128/mcb.16.9.5210", "10.1128/mcb.18.4.1793", "10.1128/mcb.18.4.2360", "10.1128/mcb.19.2.989", "10.1128/mcb.20.1.81-90.2000", "10.1128/mcb.20.13.4754-4764.2000", "10.1128/mcb.20.3.825-833.2000", "10.1128/mcb.20.3.979-989.2000", "10.1128/mcb.21.11.3609-3615.2001", "10.1128/mcb.21.14.4807-4817.2001", "10.1128/mcb.22.10.3389-3403.2002", "10.1128/mcb.22.23.8241-8253.2002", "10.1128/mcb.23.1.186-194.2003", "10.1128/mcb.23.20.7315-7328.2003", "10.1128/mcb.23.21.7448-7459.2003", "10.1128/mcb.24.1.428-441.2004", "10.1128/mcb.24.10.4395-4406.2004", "10.1128/mcb.24.18.7998-8006.2004", "10.1128/mcb.24.20.9079-9091.2004", "10.1128/mcb.24.3.1256-1269.2004", "10.1128/mcb.25.2.685-698.2005", "10.1128/mcb.25.21.9543-9553.2005", "10.1128/mcb.25.21.9734-9740.2005", "10.1128/mcb.25.7.2558-2572.2005", "10.1128/mcb.26.3.754-761.2006", "10.1128/mcb.26.4.1424-1433.2006", "10.1128/microbiolspec.arba-0007-2017", "10.1128/microbiolspec.bai-0001-2019", "10.1128/microbiolspec.bai-0017-2019", "10.1128/microbiolspec.bai-0022-2019", "10.1128/microbiolspec.gpp3-0022-2018", "10.1128/microbiolspec.mdna3-0047-2014", "10.1128/microbiolspec.tbtb2-0016-2016", "10.1128/mmbr.00001-06", "10.1128/mmbr.00008-20", "10.1128/mmbr.00011-08", "10.1128/mmbr.00015-10", "10.1128/mmbr.00016-06", "10.1128/mmbr.00018-13", "10.1128/mmbr.00019-15", "10.1128/mmbr.00021-10", "10.1128/mmbr.00030-07", "10.1128/mmbr.00032-10", "10.1128/mmbr.00036-06", "10.1128/mmbr.00042-10", "10.1128/mmbr.00076-15", "10.1128/mmbr.00091-21", "10.1128/mmbr.00124-21", "10.1128/mmbr.66.3.373-395.2002", "10.1128/mmbr.67.1.86-156.2003", "10.1128/mmbr.68.2.320-344.2004", "10.1128/mr.55.1.143-190.1991", "10.1128/msphere.00082-16", "10.1128/msphere.00109-24", "10.1128/mspheredirect.00069-18", "10.1128/msystems.00068-19", "10.1128/msystems.00204-20", "10.1128/msystems.00495-20", "10.1128/msystems.00658-19", "10.1128/spectrum.01296-21", "10.1134/s0001437010040089", "10.1134/s000629790911011x", "10.1134/s000629790913001x", "10.1134/s0006297915080076", "10.1134/s0006297919110117", "10.1134/s0006297921040064", "10.1134/s0026893317010137", "10.1134/s0026893319040162", "10.1134/s0475145018010081", "10.1134/s1021443716030043", "10.1134/s1022795408110033", "10.1134/s102279541712002x", "10.1134/s1063774518020256", "10.1134/s1990519x17030051", "10.1134/s1990747819030140", "10.1134/s1990750815010060", "10.1134/s2079057015040153", "10.1135/cccc20011545", "10.1135/cccc20051669", "10.1136/annrheumdis-2015-208371", "10.1136/annrheumdis-2015-eular.4751", "10.1136/annrheumdis-2018-213532", "10.1136/annrheumdis-2018-214125", "10.1136/annrheumdis-2021-221244", "10.1136/annrheumdis-2022-eular.369", "10.1136/bmj.326.7380.88", "10.1136/bmj.k1674", "10.1136/bmj.m1985", "10.1136/bmjopen-2017-017273", "10.1136/bmjopen-2021-058540", "10.1136/gut.2006.093310", "10.1136/gut.2010.224774", "10.1136/gutjnl-2013-306541", "10.1136/gutjnl-2015-310814", "10.1136/gutjnl-2019-318281", "10.1136/heartjnl-2011-300639", "10.1136/jclinpath-2019-206246", "10.1136/jitc-2019-000285", "10.1136/jitc-2019-000494", "10.1136/jitc-2020-000673", "10.1136/jitc-2020-000973", "10.1136/jitc-2020-000987", "10.1136/jitc-2020-001133", "10.1136/jitc-2020-001222", "10.1136/jitc-2020-001935", "10.1136/jitc-2020-002157", "10.1136/jitc-2021-002591", "10.1136/jitc-2021-002715", "10.1136/jitc-2021-002944", "10.1136/jitc-2021-003472", "10.1136/jitc-2021-003480", "10.1136/jitc-2021-003488", "10.1136/jitc-2021-003697", "10.1136/jitc-2021-004218", "10.1136/jitc-2021-004419", "10.1136/jitc-2021-004452", "10.1136/jitc-2022-004579", "10.1136/jitc-2022-004585", "10.1136/jitc-2022-004605", "10.1136/jitc-2022-004991", "10.1136/jitc-2022-005732", "10.1136/jitc-2022-005916", "10.1136/jitc-2022-006230", "10.1136/jitc-2022-006346", "10.1136/jitc-2022-sitc2022.0475", "10.1136/jitc-2022-sitc2022.1473", "10.1136/jitc-2023-008001", "10.1136/jmedgenet-2011-100211", "10.1136/jmedgenet-2012-101190", "10.1136/jmedgenet-2012-101331", "10.1136/jmedgenet-2014-102497", "10.1136/jmedgenet-2019-106473", "10.1136/jmg.2004.029637", "10.1136/jmg.2005.037648", "10.1136/jmg.2005.039453", "10.1136/jnnp-2013-306966", "10.1136/jnnp.2.4.335", "10.1136/thoraxjnl-2012-202678.082", "10.1136/vr.b4853", "10.1137/100782097", "10.1139/bcb-2017-0274", "10.1139/cjb-2024-0028", "10.1139/cjm-2012-0705", "10.1139/cjz-2013-0196", "10.1139/f10-136", "10.1139/gen-2020-0046", "10.1139/h09-030", "10.1139/o08-122", "10.1139/w10-022", "10.1139/w98-074", "10.1140/epjst/e2011-01518-8", "10.1140/epjst/e2011-01522-0", "10.1140/epjst/e2011-01524-x", "10.1140/epjti/s40485-015-0015-9", "10.1142/9789812773210_0028", "10.1142/9789814354936_0007", "10.1142/9789814449144_0027", "10.1142/s0217751x11054930", "10.1142/s0218339014500235", "10.1142/s0219633620500273", "10.1145/2503713.2503732", "10.1145/2649387.2660783", "10.1145/2888399", "10.1145/2893487", "10.1145/304182.304187", "10.1145/3173574.3173951", "10.1145/3290605.3300509", "10.1145/3342195.3387517", "10.1145/3351095.3372852", "10.1145/3378679.3394528", "10.1145/3503470.3503471", "10.1145/3626235", "10.1146/annurev-animal-021122-100823", "10.1146/annurev-arplant-042811-105538", "10.1146/annurev-arplant-042817-040209", "10.1146/annurev-arplant-043015-111854", "10.1146/annurev-arplant-050213-035811", "10.1146/annurev-arplant-050213-040159", "10.1146/annurev-arplant-071122-094840", "10.1146/annurev-arplant-081519-040100", "10.1146/annurev-biochem-010909-095056", "10.1146/annurev-biochem-011420-095916", "10.1146/annurev-biochem-011520-104722", "10.1146/annurev-biochem-013118-110817", "10.1146/annurev-biochem-013118-110903", "10.1146/annurev-biochem-030409-143718", "10.1146/annurev-biochem-032620-104553", "10.1146/annurev-biochem-051410-092902", "10.1146/annurev-biochem-052410-090317", "10.1146/annurev-biochem-052610-091920", "10.1146/annurev-biochem-060208-105251", "10.1146/annurev-biochem-060614-033917", "10.1146/annurev-biochem-060614-034316", "10.1146/annurev-biochem-060614-034506", "10.1146/annurev-biochem-062608-160432", "10.1146/annurev-biochem-062917-011901", "10.1146/annurev-biochem-062917-011931", "10.1146/annurev-biochem-062917-012332", "10.1146/annurev-biochem-062917-012708", "10.1146/annurev-biochem-062917-012921", "10.1146/annurev-biochem-063011-092449", "10.1146/annurev-biochem-072711-165700", "10.1146/annurev-biochem-081820-103615", "10.1146/annurev-biodatasci-122220-101119", "10.1146/annurev-biodatasci-122220-111429", "10.1146/annurev-bioeng-010220-113008", "10.1146/annurev-bioeng-060418-052453", "10.1146/annurev-bioeng-071811-150045", "10.1146/annurev-biophys-062215-010905", "10.1146/annurev-biophys-070317-032838", "10.1146/annurev-biophys-070816-033719", "10.1146/annurev-biophys-070816-034058", "10.1146/annurev-biophys-100120-072804", "10.1146/annurev-biophys-121219-081629", "10.1146/annurev-cancerbio-030617-050502", "10.1146/annurev-cancerbio-051420-114114", "10.1146/annurev-cellbio-020520-113246", "10.1146/annurev-cellbio-051809-102012", "10.1146/annurev-cellbio-092910-154158", "10.1146/annurev-cellbio-100109-104003", "10.1146/annurev-cellbio-100109-104034", "10.1146/annurev-cellbio-100616-060509", "10.1146/annurev-cellbio-100616-060839", "10.1146/annurev-cellbio-100617-062826", "10.1146/annurev-cellbio-100814-125315", "10.1146/annurev-cellbio-100814-125353", "10.1146/annurev-cellbio-100818-125512", "10.1146/annurev-cellbio-101011-155826", "10.1146/annurev-chembioeng-100722-113148", "10.1146/annurev-clinpsy-050718-095539", "10.1146/annurev-ento-011118-111914", "10.1146/annurev-fluid-122109-160648", "10.1146/annurev-genet-030220-015007", "10.1146/annurev-genet-071719-020312", "10.1146/annurev-genet-072610-155046", "10.1146/annurev-genet-102108-134205", "10.1146/annurev-genet-110410-132435", "10.1146/annurev-genet-110410-132541", "10.1146/annurev-genet-110711-155427", "10.1146/annurev-genet-110711-155451", "10.1146/annurev-genet-111212-133301", "10.1146/annurev-genet-112618-043717", "10.1146/annurev-genet-120116-024704", "10.1146/annurev-genet-120213-092323", "10.1146/annurev-genet-120215-035111", "10.1146/annurev-genom-090413-025352", "10.1146/annurev-genom-111221-103208", "10.1146/annurev-genom-120219-083220", "10.1146/annurev-genom-122220-093818", "10.1146/annurev-immunol-020711-075018", "10.1146/annurev-immunol-020711-075027", "10.1146/annurev-immunol-030409-101302", "10.1146/annurev-immunol-031210-101400", "10.1146/annurev-immunol-032414-112326", "10.1146/annurev-immunol-032712-095906", "10.1146/annurev-immunol-032712-095939", "10.1146/annurev-immunol-032712-095954", "10.1146/annurev-immunol-041015-055318", "10.1146/annurev-immunol-041015-055605", "10.1146/annurev-immunol-042617-053238", "10.1146/annurev-immunol-042617-053411", "10.1146/annurev-immunol-051116-052358", "10.1146/annurev-immunol-090122-050842", "10.1146/annurev-immunol-101320-011829", "10.1146/annurev-immunol-101320-020220", "10.1146/annurev-immunol-102419-035900", "10.1146/annurev-marine-010419-010706", "10.1146/annurev-marine-010814-015955", "10.1146/annurev-med-051010-162644", "10.1146/annurev-med-060116-022926", "10.1146/annurev-med-062315-120245", "10.1146/annurev-med-073118-011031", "10.1146/annurev-med-100708-204735", "10.1146/annurev-micro-020518-115638", "10.1146/annurev-micro-020518-115943", "10.1146/annurev-micro-020620-062812", "10.1146/annurev-micro-040820-124627", "10.1146/annurev-micro-050323-040543", "10.1146/annurev-micro-052621-124212", "10.1146/annurev-micro-090110-102946", "10.1146/annurev-micro-090817-062650", "10.1146/annurev-micro-090817-062712", "10.1146/annurev-micro-090817-062722", "10.1146/annurev-neuro-060909-153122", "10.1146/annurev-neuro-061010-113648", "10.1146/annurev-neuro-062012-170309", "10.1146/annurev-neuro-070815-013952", "10.1146/annurev-neuro-070918-050443", "10.1146/annurev-neuro-071013-014030", "10.1146/annurev-neuro-100520-012117", "10.1146/annurev-nutr-080508-141119", "10.1146/annurev-pathmechdis-012418-012718", "10.1146/annurev-pathol-011110-130235", "10.1146/annurev-pathol-012414-040424", "10.1146/annurev-pharmtox-011613-135947", "10.1146/annurev-pharmtox-040323-040828", "10.1146/annurev-pharmtox-051920-095416", "10.1146/annurev-physchem-032511-143731", "10.1146/annurev-physiol-020518-114455", "10.1146/annurev-physiol-022516-034339", "10.1146/annurev-physiol-031620-095446", "10.1146/annurev-virology-011620-040628", "10.1146/annurev-virology-031413-085500", "10.1146/annurev-virology-101416-041816", "10.1146/annurev.bb.24.060195.003003", "10.1146/annurev.bi.55.070186.005351", "10.1146/annurev.bi.58.070189.003043", "10.1146/annurev.bi.60.070191.001203", "10.1146/annurev.biochem.052308.114844", "10.1146/annurev.biochem.67.1.425", "10.1146/annurev.biochem.67.1.509", "10.1146/annurev.biochem.67.1.753", "10.1146/annurev.biochem.69.1.69", "10.1146/annurev.biochem.70.1.703", "10.1146/annurev.biochem.71.110601.135501", "10.1146/annurev.biochem.72.081902.140918", "10.1146/annurev.biochem.72.121801.161809", "10.1146/annurev.biochem.76.050106.093909", "10.1146/annurev.biochem.77.070306.102408", "10.1146/annurev.biochem.78.081307.110540", "10.1146/annurev.biochem.78.081507.101607", "10.1146/annurev.biochem.79.081507.103945", "10.1146/annurev.biophys.29.1.105", "10.1146/annurev.biophys.29.1.183", "10.1146/annurev.biophys.36.040306.132608", "10.1146/annurev.cellbio.23.090506.123237", "10.1146/annurev.en.32.010187.002255", "10.1146/annurev.ento.42.1.587", "10.1146/annurev.ento.49.061802.123212", "10.1146/annurev.ento.49.061802.123403", "10.1146/annurev.es.11.110180.001003", "10.1146/annurev.fluid.30.1.85", "10.1146/annurev.fluid.38.050304.092157", "10.1146/annurev.ge.20.120186.002341", "10.1146/annurev.genet.33.1.479", "10.1146/annurev.genet.36.060402.100441", "10.1146/annurev.genet.36.060402.113540", "10.1146/annurev.genet.39.073003.110214", "10.1146/annurev.genet.39.073003.113656", "10.1146/annurev.genet.42.110807.091449", "10.1146/annurev.genom.7.080505.115623", "10.1146/annurev.genom.8.080706.092416", "10.1146/annurev.genom.9.081307.164204", "10.1146/annurev.immunol.021908.132532", "10.1146/annurev.immunol.021908.132710", "10.1146/annurev.immunol.15.1.405", "10.1146/annurev.immunol.15.1.617", "10.1146/annurev.immunol.17.1.701", "10.1146/annurev.immunol.21.120601.140942", "10.1146/annurev.immunol.21.120601.141142", "10.1146/annurev.immunol.23.021704.115839", "10.1146/annurev.immunol.25.022106.141541", "10.1146/annurev.immunol.25.022106.141553", "10.1146/annurev.iy.08.040190.001511", "10.1146/annurev.iy.10.040192.003241", "10.1146/annurev.iy.11.040193.003035", "10.1146/annurev.mi.34.100180.001151", "10.1146/annurev.micro.091208.073225", "10.1146/annurev.micro.091208.073435", "10.1146/annurev.micro.112408.134040", "10.1146/annurev.micro.112408.134205", "10.1146/annurev.micro.112408.134247", "10.1146/annurev.micro.51.1.203", "10.1146/annurev.ne.18.030195.002125", "10.1146/annurev.neuro.051508.135600", "10.1146/annurev.neuro.051508.135735", "10.1146/annurev.neuro.20.1.61", "10.1146/annurev.neuro.24.1.107", "10.1146/annurev.neuro.24.1.31", "10.1146/annurev.neuro.25.112701.142904", "10.1146/annurev.neuro.26.010302.081134", "10.1146/annurev.neuro.27.070203.144152", "10.1146/annurev.neuro.28.051804.101459", "10.1146/annurev.neuro.29.051605.112851", "10.1146/annurev.neuro.30.051606.094334", "10.1146/annurev.nutr.24.012003.132145", "10.1146/annurev.pharmtox.010909.105844", "10.1146/annurev.pharmtox.40.1.235", "10.1146/annurev.pharmtox.48.113006.094626", "10.1146/annurev.phyto.42.040803.140325", "10.1146/annurev.pp.30.060179.002533", "10.1146/annurev.publhealth.23.112001.112349", "10.1146/annurev.py.24.090186.000355", "10.1152/ajpcell.00009.2016", "10.1152/ajpcell.00097.2010", "10.1152/ajpcell.00166.2015", "10.1152/ajpcell.00212.2019", "10.1152/ajpcell.00259.2007", "10.1152/ajpcell.00323.2009", "10.1152/ajpendo.00004.2009", "10.1152/ajpendo.00074.2004", "10.1152/ajpendo.00097.2012", "10.1152/ajpendo.00496.2009", "10.1152/ajpendo.00712.2009", "10.1152/ajpendo.00755.2009", "10.1152/ajpendo.2000.279.5.e1159", "10.1152/ajpgi.00153.2017", "10.1152/ajpgi.00453.2003", "10.1152/ajpheart.00237.2018", "10.1152/ajpheart.00286.2006", "10.1152/ajpheart.00469.2015", "10.1152/ajpheart.00470.2016", "10.1152/ajpheart.00546.2015", "10.1152/ajpheart.00933.2013", "10.1152/ajpheart.01280.2008", "10.1152/ajplung.00132.2019", "10.1152/ajplung.00210.2007", "10.1152/ajplung.00341.2013", "10.1152/ajplung.00444.2015", "10.1152/ajpregu.00034.2006", "10.1152/ajpregu.00035.2016", "10.1152/ajpregu.00110.2019", "10.1152/ajpregu.00118.2008", "10.1152/ajpregu.00160.2011", "10.1152/ajpregu.00221.2012", "10.1152/ajpregu.00347.2010", "10.1152/ajpregu.00378.2016", "10.1152/ajpregu.00452.2017", "10.1152/ajpregu.00465.2011", "10.1152/ajpregu.00524.2009", "10.1152/ajpregu.1984.246.5.r705", "10.1152/ajpregu.1989.257.5.r967", "10.1152/ajpregu.2000.278.1.r157", "10.1152/ajprenal.00165.2016", "10.1152/ajprenal.00215.2011", "10.1152/ajprenal.00351.2019", "10.1152/japplphysiol.00014.2018", "10.1152/japplphysiol.00086.2011", "10.1152/japplphysiol.00101.2017", "10.1152/japplphysiol.00117.2017", "10.1152/japplphysiol.00348.2011", "10.1152/japplphysiol.00545.2005", "10.1152/japplphysiol.00622.2019", "10.1152/japplphysiol.00634.2010", "10.1152/japplphysiol.00642.2002", "10.1152/japplphysiol.00901.2010", "10.1152/japplphysiol.00909.2013", "10.1152/japplphysiol.00934.2010", "10.1152/japplphysiol.01295.2009", "10.1152/japplphysiol.90418.2008", "10.1152/japplphysiol.91067.2008", "10.1152/jn.00024.2010", "10.1152/jn.00091.2005", "10.1152/jn.00107.2011", "10.1152/jn.00214.2009", "10.1152/jn.00245.2003", "10.1152/jn.00325.2015", "10.1152/jn.00397.2007", "10.1152/jn.00397.2010", "10.1152/jn.00524.2014", "10.1152/jn.00549.2001", "10.1152/jn.00601.2009", "10.1152/jn.00626.2013", "10.1152/jn.00682.2019", "10.1152/jn.00691.2017", "10.1152/jn.00741.2002", "10.1152/jn.00845.2002", "10.1152/jn.00917.2011", "10.1152/jn.00983.2004", "10.1152/jn.01049.2002", "10.1152/jn.1998.80.5.2521", "10.1152/jn.90332.2008", "10.1152/jn.90402.2008", "10.1152/jn.91022.2008", "10.1152/physiol.00030.2019", "10.1152/physiolgenomics.00018.2007", "10.1152/physiolgenomics.00024.2014", "10.1152/physiolgenomics.00068.2020", "10.1152/physiolgenomics.00074.2012", "10.1152/physiolgenomics.00096.2020", "10.1152/physiolgenomics.00102.2016", "10.1152/physiolgenomics.00112.2005", "10.1152/physiolgenomics.00133.2016", "10.1152/physiolgenomics.00148.2012", "10.1152/physrev.00011.2010", "10.1152/physrev.00013.2018", "10.1152/physrev.00014.2022", "10.1152/physrev.00016.2002", "10.1152/physrev.00016.2014", "10.1152/physrev.00017.2017", "10.1152/physrev.00021.2009", "10.1152/physrev.00023.2014", "10.1152/physrev.00025.2005", "10.1152/physrev.00027.2001", "10.1152/physrev.00033.2013", "10.1152/physrev.00036.2006", "10.1152/physrev.00044.2008", "10.1152/physrev.00049.2017", "10.1152/physrev.00054.2003", "10.1152/physrev.00055.2003", "10.1152/physrev.00067.2017", "10.1152/physrev.2001.81.2.807", "10.1155/2002/307480", "10.1155/2007/848194", "10.1155/2010/956304", "10.1155/2011/707928", "10.1155/2011/814943", "10.1155/2012/309203", "10.1155/2012/609810", "10.1155/2012/782462", "10.1155/2012/947089", "10.1155/2012/976273", "10.1155/2013/261037", "10.1155/2013/264260", "10.1155/2013/264793", "10.1155/2013/271359", "10.1155/2013/486912", "10.1155/2013/536529", "10.1155/2013/965856", "10.1155/2014/196249", "10.1155/2014/527518", "10.1155/2014/547187", "10.1155/2014/561459", "10.1155/2014/568587", "10.1155/2014/671532", "10.1155/2014/715279", "10.1155/2014/821950", "10.1155/2014/970607", "10.1155/2015/162639", "10.1155/2015/183918", "10.1155/2015/274585", "10.1155/2015/364758", "10.1155/2015/368736", "10.1155/2015/527696", "10.1155/2015/638968", "10.1155/2015/727542", "10.1155/2015/730139", "10.1155/2015/753179", "10.1155/2015/834805", "10.1155/2016/3598542", "10.1155/2016/3970831", "10.1155/2016/4682875", "10.1155/2016/5464373", "10.1155/2016/7318075", "10.1155/2016/7476241", "10.1155/2016/8487264", "10.1155/2016/9012369", "10.1155/2016/9745315", "10.1155/2017/1026270", "10.1155/2017/3738071", "10.1155/2017/9247574", "10.1155/2018/1264913", "10.1155/2018/1483791", "10.1155/2018/2790627", "10.1155/2018/3574534", "10.1155/2018/8714975", "10.1155/2018/8736949", "10.1155/2018/8942042", "10.1155/2018/9732939", "10.1155/2018/9839641", "10.1155/2019/1283075", "10.1155/2019/2054783", "10.1155/2019/3654618", "10.1155/2019/4123605", "10.1155/2019/6724903", "10.1155/2019/6804575", "10.1155/2019/7026067", "10.1155/2019/7252943", "10.1155/2019/7450693", "10.1155/2019/9708905", "10.1155/2020/1480281", "10.1155/2020/2576823", "10.1155/2020/3012193", "10.1155/2020/5497046", "10.1155/2020/6243819", "10.1155/2020/6423783", "10.1155/2020/8827038", "10.1155/2020/8831936", "10.1155/2020/8842659", "10.1155/2022/3222253", "10.1158/0008-5472.can-03-0820", "10.1158/0008-5472.can-05-0529", "10.1158/0008-5472.can-05-0626", "10.1158/0008-5472.can-05-2415", "10.1158/0008-5472.can-05-4364", "10.1158/0008-5472.can-06-0168", "10.1158/0008-5472.can-06-3895", "10.1158/0008-5472.can-06-3963", "10.1158/0008-5472.can-06-4652", "10.1158/0008-5472.can-07-0493", "10.1158/0008-5472.can-07-1026", "10.1158/0008-5472.can-07-2462", "10.1158/0008-5472.can-08-1377", "10.1158/0008-5472.can-08-3701", "10.1158/0008-5472.can-08-4747", "10.1158/0008-5472.can-09-0634", "10.1158/0008-5472.can-09-3228", "10.1158/0008-5472.can-09-4519", "10.1158/0008-5472.can-10-2288", "10.1158/0008-5472.can-11-3287", "10.1158/0008-5472.can-12-3544", "10.1158/0008-5472.can-12-3874", "10.1158/0008-5472.can-13-2381", "10.1158/0008-5472.can-14-1259", "10.1158/0008-5472.can-14-2331", "10.1158/0008-5472.can-14-2814", "10.1158/0008-5472.can-15-1536", "10.1158/0008-5472.can-15-3062", "10.1158/0008-5472.can-15-3255", "10.1158/0008-5472.can-16-0258", "10.1158/0008-5472.can-16-0797", "10.1158/0008-5472.can-17-0642", "10.1158/0008-5472.can-17-1139", "10.1158/0008-5472.can-17-2727", "10.1158/0008-5472.can-17-2728", "10.1158/0008-5472.can-17-3058", "10.1158/0008-5472.can-17-3376", "10.1158/0008-5472.can-17-3841", "10.1158/0008-5472.can-17-3964", "10.1158/0008-5472.can-18-1351", "10.1158/0008-5472.can-18-2022", "10.1158/0008-5472.can-18-2545", "10.1158/0008-5472.can-18-3962", "10.1158/0008-5472.can-19-0855", "10.1158/0008-5472.can-19-2013", "10.1158/0008-5472.can-19-3596", "10.1158/0008-5472.can-20-0002", "10.1158/0008-5472.can-20-0108", "10.1158/0008-5472.can-20-1228", "10.1158/0008-5472.can-20-2270", "10.1158/0008-5472.can-20-2425", "10.1158/0008-5472.can-20-2673", "10.1158/0008-5472.can-22-2801", "10.1158/0008-5472.can-22-3210", "10.1158/0008-5472.can-23-0323", "10.1158/1078-0432.ccr-04-0294", "10.1158/1078-0432.ccr-10-2316", "10.1158/1078-0432.ccr-12-3115", "10.1158/1078-0432.ccr-14-3197", "10.1158/1078-0432.ccr-15-0126", "10.1158/1078-0432.ccr-15-1631", "10.1158/1078-0432.ccr-15-2023", "10.1158/1078-0432.ccr-16-0979", "10.1158/1078-0432.ccr-17-1549", "10.1158/1078-0432.ccr-18-0762", "10.1158/1078-0432.ccr-18-1627", "10.1158/1078-0432.ccr-19-2925", "10.1158/1078-0432.ccr-19-3890", "10.1158/1078-0432.ccr-19-4100", "10.1158/1078-0432.ccr-20-1693", "10.1158/1535-7163.mct-05-0245", "10.1158/1535-7163.mct-05-0332", "10.1158/1535-7163.mct-07-0066", "10.1158/1535-7163.mct-14-0256", "10.1158/1535-7163.mct-18-1129", "10.1158/1535-7163.mct-19-0660", "10.1158/1538-7445.am2014-1068", "10.1158/1538-7445.am2018-4316", "10.1158/1538-7445.am2022-3829", "10.1158/1538-7445.am2022-652", "10.1158/1538-7445.am2023-6359", "10.1158/1538-7445.mvc2020-pr02", "10.1158/1538-7445.panca22-c059", "10.1158/1541-7786.mcr-10-0368", "10.1158/1541-7786.mcr-14-0180", "10.1158/1541-7786.mcr-14-0535", "10.1158/1541-7786.mcr-15-0203", "10.1158/1541-7786.mcr-17-0601", "10.1158/1541-7786.mcr-18-0551", "10.1158/1541-7786.mcr-19-1082", "10.1158/1541-7786.mcr-20-0051", "10.1158/1541-7786.mcr-20-0745", "10.1158/1557-3125.devbiolca15-ia08", "10.1158/2159-8290.cd-11-0209", "10.1158/2159-8290.cd-12-0095", "10.1158/2159-8290.cd-15-0894", "10.1158/2159-8290.cd-16-0502", "10.1158/2159-8290.cd-17-0468", "10.1158/2159-8290.cd-17-0532", "10.1158/2159-8290.cd-17-0915", "10.1158/2159-8290.cd-17-1370", "10.1158/2159-8290.cd-18-1495", "10.1158/2159-8290.cd-19-0400", "10.1158/2159-8290.cd-19-0620", "10.1158/2159-8290.cd-19-1006", "10.1158/2159-8290.cd-19-1510", "10.1158/2159-8290.cd-20-0142", "10.1158/2159-8290.cd-20-0786", "10.1158/2159-8290.cd-21-0030", "10.1158/2159-8290.cd-22-0035", "10.1158/2159-8290.cd-22-1230", "10.1158/2326-6066.cir-14-0019-t", "10.1158/2326-6066.cir-14-0044", "10.1158/2326-6066.cir-14-0120", "10.1158/2326-6066.cir-14-0220-t", "10.1158/2326-6066.cir-16-0374", "10.1158/2326-6066.cir-17-0040", "10.1158/2326-6066.cir-17-0190", "10.1158/2326-6066.cir-18-0243", "10.1158/2326-6066.cir-19-0299", "10.1158/2326-6066.cir-19-0759", "10.1158/2326-6066.cir-19-0828", "10.1158/2326-6066.cir-19-1024", "10.1158/2326-6066.cir-20-0080", "10.1158/2326-6066.cir-21-0536", "10.1158/2326-6066.cir-22-0366", "10.1159/000028101", "10.1159/000079003", "10.1159/000079009", "10.1159/000079013", "10.1159/000084979", "10.1159/000094057", "10.1159/000095130", "10.1159/000096213", "10.1159/000104748", "10.1159/000109862", "10.1159/000121079", "10.1159/000235762", "10.1159/000322228", "10.1159/000324514", "10.1159/000334521", "10.1159/000336025", "10.1159/000343355", "10.1159/000343911", "10.1159/000354493", "10.1159/000358638", "10.1159/000361011", "10.1159/000445315", "10.1159/000446905", "10.1159/000488031", "10.1159/000492096", "10.1159/000494451", "10.1159/000501145", "10.1159/000502912", "10.1159/000506423", "10.1159/000515189", "10.1159/000515305", "10.1159/000519244", "10.1159/000521476", "10.1159/000521678", "10.1159/000530185/3849280/000530185", "10.11604/pamj.2019.33.146.17220", "10.11606/d.17.2020.tde-19082020-091727", "10.11606/t.11.2017.tde-17082017-155240", "10.11606/t.17.2020.tde-11092023-130204", "10.11606/t.41.2017.tde-26072017-084908", "10.11606/t.82.2016.tde-28032016-145505", "10.11607/prd.4766", "10.11609/jott.5668.12.9.16021-16042", "10.1161/01.cir.0000077911.81151.30", "10.1161/01.res.0000079488.91342.b7", "10.1161/01.res.0000259589.34348.74", "10.1161/01.str.32.8.1890", "10.1161/atvbaha.107.159558", "10.1161/atvbaha.108.169417", "10.1161/atvbaha.108.177428", "10.1161/atvbaha.110.211706", "10.1161/atvbaha.111.230938", "10.1161/atvbaha.112.300893", "10.1161/atvbaha.114.304509", "10.1161/atvbaha.116.307374", "10.1161/atvbaha.119.312732", "10.1161/atvbaha.119.313290", "10.1161/circgenetics.115.001192", "10.1161/circresaha.108.173963", "10.1161/circresaha.110.216523", "10.1161/circresaha.110.219840", "10.1161/circresaha.110.231803", "10.1161/circresaha.113.301078", "10.1161/circresaha.115.304458", "10.1161/circresaha.115.306256", "10.1161/circresaha.115.306383", "10.1161/circresaha.116.300561", "10.1161/circresaha.116.305097", "10.1161/circresaha.118.313369", "10.1161/circresaha.118.313788", "10.1161/circresaha.119.315999", "10.1161/circresaha.119.316075", "10.1161/circresaha.119.316428", "10.1161/circulationaha.106.631465", "10.1161/circulationaha.106.632430", "10.1161/circulationaha.106.669697", "10.1161/circulationaha.108.773424", "10.1161/circulationaha.109.862771", "10.1161/circulationaha.109.924886", "10.1161/circulationaha.110.005108", "10.1161/circulationaha.116.026995", "10.1161/circulationaha.117.029430", "10.1161/circulationaha.118.034392", "10.1161/circulationaha.120.046677", "10.1161/hypertensionaha.111.174128", "10.1161/hypertensionaha.114.03116", "10.1161/jaha.116.004160", "10.1161/jaha.117.006245", "10.1161/jaha.117.008155", "10.1161/jaha.118.009893", "10.1161/strokeaha.109.562009", "10.11613/bm.2008.026", "10.1162/0898929054021120", "10.1162/089892905775008661", "10.1162/isal_a_00695", "10.1162/jocn.2009.21100", "10.1162/jocn_a_00573", "10.1162/jocn_a_02146/120312", "10.1162/netn_a_00066", "10.1163/187631202x00226", "10.1164/ajrccm-conference.2010.181.1_meetingabstracts.a3593", "10.1164/rccm.200705-683oc", "10.1164/rccm.201310-1746le", "10.11646/zootaxa.3702.5.8", "10.11646/zootaxa.4374.4.6", "10.1165/ajrcmb.22.5.3889", "10.1165/ajrcmb/5.2.155", "10.1165/rcmb.2010-0319oc", "10.1165/rcmb.2012-0179oc", "10.1165/rcmb.2015-0295oc", "10.1166/sam.2015.2252", "10.1167/iovs.09-4098", "10.1167/iovs.10-5194", "10.1167/iovs.12-10695", "10.1167/iovs.16-19316", "10.1167/iovs.18-23800", "10.1167/iovs.61.10.3", "10.1167/iovs.61.3.29", "10.1172/jci.insight.120631", "10.1172/jci.insight.121153", "10.1172/jci.insight.131355", "10.1172/jci.insight.131487", "10.1172/jci.insight.133093", "10.1172/jci.insight.144624", "10.1172/jci.insight.150735", "10.1172/jci.insight.154646", "10.1172/jci.insight.155432", "10.1172/jci.insight.160308", "10.1172/jci.insight.167490", "10.1172/jci.insight.167566", "10.1172/jci.insight.87489", "10.1172/jci.insight.89631", "10.1172/jci.insight.92293", "10.1172/jci.insight.92385", "10.1172/jci.insight.98745", "10.1172/jci10530", "10.1172/jci111040", "10.1172/jci11679", "10.1172/jci120612", "10.1172/jci124382", "10.1172/jci125755", "10.1172/jci127726", "10.1172/jci131335", "10.1172/jci133737", "10.1172/jci133934", "10.1172/jci135759", "10.1172/jci136155", "10.1172/jci138745", "10.1172/jci140966", "10.1172/jci150846", "10.1172/jci151347", "10.1172/jci155476", "10.1172/jci157248", "10.1172/jci157340", "10.1172/jci15786", "10.1172/jci158524", "10.1172/jci166070", "10.1172/jci167339", "10.1172/jci168121", "10.1172/jci172503", "10.1172/jci173107", "10.1172/jci173299", "10.1172/jci179561", "10.1172/jci180080", "10.1172/jci19246", "10.1172/jci25495", "10.1172/jci27727", "10.1172/jci34203", "10.1172/jci40141", "10.1172/jci40926", "10.1172/jci41264", "10.1172/jci41911", "10.1172/jci42680", "10.1172/jci45014", "10.1172/jci45444", "10.1172/jci59643", "10.1172/jci65477", "10.1172/jci65728", "10.1172/jci73434", "10.1172/jci77172", "10.1172/jci78090", "10.1172/jci79434", "10.1172/jci79915", "10.1172/jci80006", "10.1172/jci80011", "10.1172/jci80919", "10.1172/jci84427", "10.1172/jci84457", "10.1172/jci89511", "10.1172/jci90602", "10.1172/jci92946", "10.1172/jci92955", "10.1172/jci95993", "10.1172/jci96481", "10.1172/jci97454", "10.1174/021093909787536272", "10.1176/appi.ajp.158.3.405", "10.1176/appi.ajp.2012.12020248", "10.1176/jnp.2010.22.1.75", "10.1176/jnp.23.2.jnp121", "10.1177/002215540004800713", "10.1177/0023677217739934", "10.1177/0192623307313011", "10.1177/0192623319878400", "10.1177/0218492320929212", "10.1177/0271678x16672482", "10.1177/0271678x17734100", "10.1177/0300060513475965", "10.1177/0300985811429313", "10.1177/0300985811429314", "10.1177/0300985815623997", "10.1177/03009858221092017", "10.1177/039463200301600211", "10.1177/0394632015623794", "10.1177/0394632016656192", "10.1177/0748730406299078", "10.1177/0748730415577723", "10.1177/0967772015605238", "10.1177/1010428317692248", "10.1177/1010428317705751", "10.1177/1073858407304629", "10.1177/1073858408317242", "10.1177/1073858413475486", "10.1177/1073858414521870", "10.1177/1073858414530512", "10.1177/1073858417748875", "10.1177/1073858420952046", "10.1177/1084713812440336", "10.1177/1087057110363821", "10.1177/108705719900400206", "10.1177/1098612x13489223", "10.1177/1179064418761639", "10.1177/1464419314549875", "10.1177/153473540200100314", "10.1177/1535370213480718", "10.1177/1535370215583799", "10.1177/1535370215593826", "10.1177/1744806916648153", "10.1177/1744806918782229", "10.1177/1744806918783478", "10.1177/17448069211018045", "10.1177/1753425920975082", "10.1177/1753495x12473751", "10.1177/1756283x16659790", "10.1177/1756829316646640", "10.1177/1947601910361495", "10.1177/1947601910377493", "10.1177/1947601911421925", "10.1177/1947601911428224", "10.1177/2041731414557112", "10.1177/2041731415592356", "10.1177/2472555218798571", "10.1179/030801880789767855", "10.1179/1743280414y.0000000045", "10.1179/isr.1990.15.3.264", "10.1182/blood-2002-04-1121", "10.1182/blood-2003-10-3458", "10.1182/blood-2004-04-1554", "10.1182/blood-2004-09-3696", "10.1182/blood-2004-12-4901", "10.1182/blood-2005-01-0428", "10.1182/blood-2005-06-2216", "10.1182/blood-2005-08-3206", "10.1182/blood-2005-11-4545", "10.1182/blood-2006-02-001115", "10.1182/blood-2006-02-004747", "10.1182/blood-2006-07-025809", "10.1182/blood-2006-09-018655", "10.1182/blood-2007-02-073080", "10.1182/blood-2007-03-077222", "10.1182/blood-2007-10-120832", "10.1182/blood-2008-06-161117", "10.1182/blood-2008-06-163725", "10.1182/blood-2008-11-187302", "10.1182/blood-2009-05-221598", "10.1182/blood-2009-06-229708", "10.1182/blood-2009-07-235341", "10.1182/blood-2009-08-236711", "10.1182/blood-2009-08-236935", "10.1182/blood-2009-11-255174", "10.1182/blood-2010-01-263830", "10.1182/blood-2010-02-258558", "10.1182/blood-2010-02-271981", "10.1182/blood-2010-06-290437", "10.1182/blood-2010-07-297713", "10.1182/blood-2010-11-321752", "10.1182/blood-2011-01-328906", "10.1182/blood-2011-02-339911", "10.1182/blood-2011-05-352658", "10.1182/blood-2011-11-390153", "10.1182/blood-2012-01-405951", "10.1182/blood-2012-02-408252", "10.1182/blood-2012-05-432674", "10.1182/blood-2012-06-436212", "10.1182/blood-2013-08-520767", "10.1182/blood-2014-10-602714", "10.1182/blood-2014-10-608653", "10.1182/blood-2015-02-630632", "10.1182/blood-2015-03-575365", "10.1182/blood-2015-05-645069", "10.1182/blood-2015-11-680462", "10.1182/blood-2016-05-716480", "10.1182/blood-2016-06-721423", "10.1182/blood-2016-10-696062", "10.1182/blood-2017-04-778779", "10.1182/blood-2017-09-804401", "10.1182/blood-2018-02-769026", "10.1182/blood-2019-129173", "10.1182/blood-2020-141126", "10.1182/blood-2021-152394", "10.1182/blood.2018862383", "10.1182/blood.2018892752", "10.1182/blood.2019003535", "10.1182/blood.2020005650", "10.1182/blood.2020006481", "10.1182/blood.2020007683", "10.1182/blood.2020008503", "10.1182/blood.2020010039", "10.1182/blood.2021011314", "10.1182/blood.2022015830", "10.1182/blood.2023020209", "10.1182/blood.v124.21.898.898", "10.1182/blood.v93.4.1245", "10.1182/blood.v95.6.2059", "10.1182/blood.v96.8.2641", "10.1182/blood.v97.1.288", "10.1182/blood.v97.9.2673", "10.1182/blood.v98.8.2308", "10.1182/bloodadvances.2016000984", "10.1182/bloodadvances.2017009670", "10.1182/bloodadvances.2018020222", "10.1182/bloodadvances.2018026419", "10.1182/bloodadvances.2019000227", "10.1183/09059180.00007609", "10.1183/13993003.02441-2018", "10.1183/13993003.congress-2019.pa1676", "10.1183/16000617.0074-2021", "10.1186/1423-0127-20-67", "10.1186/1471-2091-10-1", "10.1186/1471-2105-10-421", "10.1186/1471-2105-11-119", "10.1186/1471-2105-11-479", "10.1186/1471-2105-12-323", "10.1186/1471-2105-13-332", "10.1186/1471-2105-13-s11-s3", "10.1186/1471-2105-14-128", "10.1186/1471-2105-14-7", "10.1186/1471-2105-15-71", "10.1186/1471-2105-3-2", "10.1186/1471-2105-5-113", "10.1186/1471-2105-6-100", "10.1186/1471-2105-7-153", "10.1186/1471-2105-7-339", "10.1186/1471-2105-8-160", "10.1186/1471-2121-12-12", "10.1186/1471-213x-10-49", "10.1186/1471-213x-12-33", "10.1186/1471-213x-7-70", "10.1186/1471-2148-10-210", "10.1186/1471-2148-10-241", "10.1186/1471-2148-13-47", "10.1186/1471-2148-14-158", "10.1186/1471-2148-4-47", "10.1186/1471-2148-5-23", "10.1186/1471-2148-6-63", "10.1186/1471-2148-7-130", "10.1186/1471-2148-7-187", "10.1186/1471-2148-7-59", "10.1186/1471-2148-8-244", "10.1186/1471-2164-10-118", "10.1186/1471-2164-10-19", "10.1186/1471-2164-10-7", "10.1186/1471-2164-11-151", "10.1186/1471-2164-11-188", "10.1186/1471-2164-11-209", "10.1186/1471-2164-11-399", "10.1186/1471-2164-11-723", "10.1186/1471-2164-12-296", "10.1186/1471-2164-12-391", "10.1186/1471-2164-12-399", "10.1186/1471-2164-13-13", "10.1186/1471-2164-13-152", "10.1186/1471-2164-13-184", "10.1186/1471-2164-13-479", "10.1186/1471-2164-13-498", "10.1186/1471-2164-14-141", "10.1186/1471-2164-14-428", "10.1186/1471-2164-14-486", "10.1186/1471-2164-14-627", "10.1186/1471-2164-14-745", "10.1186/1471-2164-14-903", "10.1186/1471-2164-15-874", "10.1186/1471-2164-16-s7-s12", "10.1186/1471-2164-6-104", "10.1186/1471-2164-7-119", "10.1186/1471-2164-7-188", "10.1186/1471-2164-7-325", "10.1186/1471-2164-7-85", "10.1186/1471-2164-8-289", "10.1186/1471-2164-8-37", "10.1186/1471-2164-9-382", "10.1186/1471-2164-9-423", "10.1186/1471-2164-9-524", "10.1186/1471-2164-9-533", "10.1186/1471-2164-9-75", "10.1186/1471-2172-13-31", "10.1186/1471-2172-3-7", "10.1186/1471-2180-10-288", "10.1186/1471-2180-11-216", "10.1186/1471-2180-11-62", "10.1186/1471-2180-14-109", "10.1186/1471-2180-3-3", "10.1186/1471-2180-7-82", "10.1186/1471-2180-7-97", "10.1186/1471-2180-8-227", "10.1186/1471-2180-9-270", "10.1186/1471-2199-10-3", "10.1186/1471-2199-11-91", "10.1186/1471-2199-2-9", "10.1186/1471-2199-8-69", "10.1186/1471-2202-11-33", "10.1186/1471-2202-11-50", "10.1186/1471-2202-7-77", "10.1186/1471-2229-11-75", "10.1186/1471-2229-13-169", "10.1186/1471-2229-13-192", "10.1186/1471-2229-14-116", "10.1186/1471-2229-8-89", "10.1186/1471-2334-13-282", "10.1186/1471-2334-14-s2-p64", "10.1186/1471-2407-10-235", "10.1186/1471-2407-10-314", "10.1186/1471-2407-11-443", "10.1186/1471-2407-13-481", "10.1186/1472-6750-11-47", "10.1186/1472-6750-13-52", "10.1186/1472-6750-14-19", "10.1186/1472-6807-11-19", "10.1186/1472-6807-7-31", "10.1186/1472-6882-11-72", "10.1186/1475-2840-12-75", "10.1186/1475-2859-3-14", "10.1186/1475-2859-4-20", "10.1186/1475-2859-8-69", "10.1186/1475-2867-14-18", "10.1186/1475-2875-10-186", "10.1186/1475-2875-10-242", "10.1186/1475-2875-10-297", "10.1186/1475-2875-12-134", "10.1186/1475-2875-13-115", "10.1186/1475-2875-3-24", "10.1186/1475-2875-6-78", "10.1186/1475-2875-9-110", "10.1186/1475-2875-9-136", "10.1186/1476-069x-10-79", "10.1186/1476-4598-10-117", "10.1186/1476-4598-13-164", "10.1186/1476-4598-2-29", "10.1186/1476-4598-7-76", "10.1186/1476-4598-9-104", "10.1186/1476-4598-9-112", "10.1186/1476-4598-9-118", "10.1186/1476-4598-9-81", "10.1186/1476-5926-7-8", "10.1186/1478-811x-10-6", "10.1186/1478-811x-11-93", "10.1186/1479-5876-10-4", "10.1186/1479-5876-8-118", "10.1186/1479-5876-9-216", "10.1186/1741-7007-11-59", "10.1186/1741-7007-11-67", "10.1186/1741-7007-6-41", "10.1186/1741-7007-7-27", "10.1186/1741-7007-7-47", "10.1186/1741-7007-9-57", "10.1186/1741-7015-11-219", "10.1186/1741-7015-9-98", "10.1186/1742-2094-8-105", "10.1186/1742-2094-8-52", "10.1186/1742-2094-9-71", "10.1186/1742-4690-10-154", "10.1186/1742-4690-3-76", "10.1186/1742-4933-6-9", "10.1186/1743-422x-2-59", "10.1186/1743-422x-7-310", "10.1186/1743-8977-7-12", "10.1186/1744-8069-10-65", "10.1186/1744-8069-5-46", "10.1186/1744-8069-5-51", "10.1186/1744-8069-8-53", "10.1186/1745-6150-3-54", "10.1186/1745-6150-4-14", "10.1186/1745-6150-5-48", "10.1186/1745-6150-7-18", "10.1186/1749-8104-2-26", "10.1186/1749-8104-3-5", "10.1186/1749-8104-5-8", "10.1186/1749-8104-7-30", "10.1186/1749-8104-8-9", "10.1186/1750-1326-6-85", "10.1186/1750-2187-5-19", "10.1186/1750-2187-7-8", "10.1186/1750-2187-8-7", "10.1186/1751-0473-5-8", "10.1186/1755-8166-3-15", "10.1186/1755-8794-1-18", "10.1186/1756-0500-3-145", "10.1186/1756-0500-5-395", "10.1186/1756-0500-7-157", "10.1186/1756-6606-2-35", "10.1186/1756-6606-4-6", "10.1186/1756-8935-5-8", "10.1186/1756-8935-7-20", "10.1186/1757-2215-6-61", "10.1186/1758-2946-3-33", "10.1186/1758-5996-3-23", "10.1186/1759-8753-3-17", "10.1186/1759-8753-5-13", "10.1186/1759-8753-5-26", "10.1186/1939-8433-5-1", "10.1186/2043-9113-2-6", "10.1186/2044-5040-3-18", "10.1186/2045-8118-10-33", "10.1186/2045-9769-3-7", "10.1186/2047-2994-1-1", "10.1186/2049-3002-1-10", "10.1186/ar3257", "10.1186/bcr2581", "10.1186/bcr733", "10.1186/gb-2002-3-8-research0041", "10.1186/gb-2003-4-10-231", "10.1186/gb-2003-4-9-r60", "10.1186/gb-2004-5-2-209", "10.1186/gb-2004-5-4-219", "10.1186/gb-2004-5-5-r30", "10.1186/gb-2008-9-1-r4", "10.1186/gb-2008-9-9-r137", "10.1186/gb-2009-10-10-r118", "10.1186/gb-2009-10-3-r25", "10.1186/gb-2009-10-6-r65", "10.1186/gb-2011-12-8-r83", "10.1186/gb-2012-13-10-r92", "10.1186/gb-2012-13-12-252", "10.1186/gb-2012-13-5-r39", "10.1186/gb-2012-13-9-r49", "10.1186/gb-2012-13-9-r50", "10.1186/gb-2013-14-11-r128", "10.1186/gb-2014-15-4-r65", "10.1186/gb-2014-15-5-r82", "10.1186/s10194-022-01527-4", "10.1186/s11658-019-0162-0", "10.1186/s11689-019-9268-y", "10.1186/s12199-021-00995-5", "10.1186/s12859-015-0654-5", "10.1186/s12859-017-1793-7", "10.1186/s12859-017-1931-2", "10.1186/s12859-017-1934-z", "10.1186/s12859-018-2376-y", "10.1186/s12859-018-2449-y", "10.1186/s12859-022-04674-2", "10.1186/s12859-023-05549-w", "10.1186/s12859-024-05823-5", "10.1186/s12860-016-0104-x", "10.1186/s12860-017-0147-7", "10.1186/s12860-019-0243-y", "10.1186/s12860-021-00343-z", "10.1186/s12860-021-00346-w", "10.1186/s12861-015-0094-5", "10.1186/s12861-015-0095-4", "10.1186/s12862-015-0279-3", "10.1186/s12862-016-0733-x", "10.1186/s12864-015-1280-3", "10.1186/s12864-015-1627-9", "10.1186/s12864-015-1686-y", "10.1186/s12864-015-1786-8", "10.1186/s12864-015-1855-z", "10.1186/s12864-015-1890-9", "10.1186/s12864-015-1897-2", "10.1186/s12864-015-2029-8", "10.1186/s12864-015-2040-0", "10.1186/s12864-015-2291-9", "10.1186/s12864-016-2728-9", "10.1186/s12864-016-2836-6", "10.1186/s12864-016-2847-3", "10.1186/s12864-016-2970-1", "10.1186/s12864-016-3306-x", "10.1186/s12864-016-3448-x", "10.1186/s12864-017-3739-x", "10.1186/s12864-017-3805-4", "10.1186/s12864-017-4100-0", "10.1186/s12864-017-4330-1", "10.1186/s12864-018-4510-7", "10.1186/s12864-018-4516-1", "10.1186/s12864-018-4594-0", "10.1186/s12864-018-4653-6", "10.1186/s12864-018-5207-7", "10.1186/s12864-018-5257-x", "10.1186/s12864-018-5278-5", "10.1186/s12864-019-5450-6", "10.1186/s12864-019-5547-y", "10.1186/s12864-019-5558-8", "10.1186/s12864-019-5576-6", "10.1186/s12864-019-5665-6", "10.1186/s12864-019-6003-8", "10.1186/s12864-019-6075-5", "10.1186/s12864-020-07221-6", "10.1186/s12864-020-6526-z", "10.1186/s12864-020-6551-y", "10.1186/s12864-021-07572-8", "10.1186/s12864-021-07646-7", "10.1186/s12864-021-08152-6", "10.1186/s12864-021-08196-8", "10.1186/s12864-022-08777-1", "10.1186/s12864-022-08788-y", "10.1186/s12864-023-09315-3", "10.1186/s12864-023-09754-y", "10.1186/s12864-024-10068-w", "10.1186/s12866-015-0374-z", "10.1186/s12866-015-0436-2", "10.1186/s12866-015-0530-5", "10.1186/s12866-016-0835-z", "10.1186/s12866-017-1131-2", "10.1186/s12867-019-0120-4", "10.1186/s12868-015-0160-8", "10.1186/s12868-015-0198-7", "10.1186/s12868-017-0377-9", "10.1186/s12868-018-0452-x", "10.1186/s12870-015-0450-4", "10.1186/s12870-015-0550-1", "10.1186/s12870-017-1039-x", "10.1186/s12870-018-1369-3", "10.1186/s12870-019-1647-8", "10.1186/s12870-019-1676-3", "10.1186/s12870-019-1757-3", "10.1186/s12870-020-02759-9", "10.1186/s12870-021-02958-y", "10.1186/s12870-021-03195-z", "10.1186/s12870-022-03892-3", "10.1186/s12870-023-04239-2", "10.1186/s12870-024-04761-x", "10.1186/s12879-014-0733-7", "10.1186/s12879-017-2686-0", "10.1186/s12881-020-0970-0", "10.1186/s12883-024-03558-7", "10.1186/s12885-015-1897-2", "10.1186/s12885-016-2204-6", "10.1186/s12885-017-3107-x", "10.1186/s12885-017-3426-y", "10.1186/s12885-017-3554-4", "10.1186/s12885-017-3636-3", "10.1186/s12885-018-5214-8", "10.1186/s12885-019-5454-2", "10.1186/s12885-019-6323-8", "10.1186/s12885-019-6491-6", "10.1186/s12885-020-07414-y", "10.1186/s12885-021-09048-0", "10.1186/s12885-022-09837-1", "10.1186/s12885-023-10883-6", "10.1186/s12885-023-11017-8", "10.1186/s12896-017-0382-1", "10.1186/s12896-018-0461-y", "10.1186/s12904-020-00679-x", "10.1186/s12915-016-0319-5", "10.1186/s12915-017-0349-7", "10.1186/s12915-017-0381-7", "10.1186/s12915-017-0457-4", "10.1186/s12915-018-0556-x", "10.1186/s12915-019-0646-4", "10.1186/s12915-019-0683-z", "10.1186/s12915-019-0736-3", "10.1186/s12915-020-00885-2", "10.1186/s12915-021-01071-8", "10.1186/s12915-021-01214-x", "10.1186/s12915-023-01646-7", "10.1186/s12915-023-01745-5", "10.1186/s12915-023-01766-0", "10.1186/s12915-024-01831-2", "10.1186/s12915-024-01840-1", "10.1186/s12915-024-01908-y", "10.1186/s12916-019-1469-4", "10.1186/s12917-020-02483-4", "10.1186/s12917-024-04119-3", "10.1186/s12918-017-0496-z", "10.1186/s12920-019-0525-4", "10.1186/s12920-023-01543-6", "10.1186/s12920-024-01853-3", "10.1186/s12929-018-0464-y", "10.1186/s12929-019-0610-1", "10.1186/s12929-020-00651-0", "10.1186/s12929-020-00679-2", "10.1186/s12929-024-01006-9", "10.1186/s12931-017-0544-7", "10.1186/s12933-021-01346-y", "10.1186/s12934-015-0288-3", "10.1186/s12934-015-0293-6", "10.1186/s12934-016-0577-5", "10.1186/s12934-017-0835-1", "10.1186/s12934-018-1009-5", "10.1186/s12934-022-01901-6", "10.1186/s12935-019-1091-8", "10.1186/s12935-020-01476-5", "10.1186/s12935-020-01517-z", "10.1186/s12935-020-01595-z", "10.1186/s12935-020-1158-6", "10.1186/s12935-021-02381-1", "10.1186/s12935-023-02999-3", "10.1186/s12935-023-03095-2", "10.1186/s12936-015-0612-8", "10.1186/s12936-015-0853-6", "10.1186/s12936-015-0912-z", "10.1186/s12936-016-1220-y", "10.1186/s12936-016-1587-9", "10.1186/s12936-017-1731-1", "10.1186/s12936-017-1986-6", "10.1186/s12936-017-2118-z", "10.1186/s12936-017-2123-2", "10.1186/s12936-018-2584-y", "10.1186/s12936-019-2707-0", "10.1186/s12936-019-2968-7", "10.1186/s12936-019-3025-2", "10.1186/s12936-020-03291-9", "10.1186/s12936-020-03415-1", "10.1186/s12936-021-03918-5", "10.1186/s12936-021-03979-6", "10.1186/s12940-021-00761-8", "10.1186/s12943-015-0461-7", "10.1186/s12943-015-0474-2", "10.1186/s12943-018-0765-5", "10.1186/s12943-018-0782-4", "10.1186/s12943-018-0913-y", "10.1186/s12943-019-1062-7", "10.1186/s12943-020-01159-9", "10.1186/s12943-020-01207-4", "10.1186/s12943-020-01234-1", "10.1186/s12943-020-01263-w", "10.1186/s12943-020-01264-9", "10.1186/s12943-021-01313-x", "10.1186/s12943-021-01325-7", "10.1186/s12943-021-01422-7", "10.1186/s12943-021-01431-6", "10.1186/s12943-021-01440-5", "10.1186/s12943-022-01559-z", "10.1186/s12943-022-01629-2", "10.1186/s12943-022-01645-2", "10.1186/s12943-023-01714-0", "10.1186/s12943-023-01826-7", "10.1186/s12943-023-01827-6", "10.1186/s12943-023-01911-x", "10.1186/s12943-024-02000-3", "10.1186/s12944-023-01789-0", "10.1186/s12950-018-0182-y", "10.1186/s12951-020-00696-1", "10.1186/s12951-021-00768-w", "10.1186/s12951-021-00846-z", "10.1186/s12951-022-01619-y", "10.1186/s12951-023-02014-x", "10.1186/s12957-020-01995-5", "10.1186/s12958-015-0063-7", "10.1186/s12958-017-0251-8", "10.1186/s12958-019-0488-5", "10.1186/s12958-019-0506-7", "10.1186/s12964-015-0089-7", "10.1186/s12964-016-0131-4", "10.1186/s12964-018-0259-5", "10.1186/s12964-019-0470-z", "10.1186/s12964-021-00721-2", "10.1186/s12964-021-00774-3", "10.1186/s12964-022-00821-7", "10.1186/s12964-023-01043-1", "10.1186/s12964-024-01645-3", "10.1186/s12967-015-0415-2", "10.1186/s12967-018-1724-z", "10.1186/s12967-019-2071-4", "10.1186/s12967-021-02932-0", "10.1186/s12967-022-03359-x", "10.1186/s12967-022-03479-4", "10.1186/s12967-022-03483-8", "10.1186/s12967-022-03714-y", "10.1186/s12967-023-04013-w", "10.1186/s12967-023-04653-y", "10.1186/s12967-024-05149-z", "10.1186/s12970-014-0064-5", "10.1186/s12974-015-0281-0", "10.1186/s12974-017-0981-8", "10.1186/s12974-017-0997-0", "10.1186/s12974-018-1079-7", "10.1186/s12974-018-1240-3", "10.1186/s12974-019-1443-2", "10.1186/s12974-019-1516-2", "10.1186/s12974-019-1524-2", "10.1186/s12974-019-1639-5", "10.1186/s12974-019-1672-4", "10.1186/s12974-020-01894-2", "10.1186/s12974-020-02009-7", "10.1186/s12974-020-02017-7", "10.1186/s12974-020-02024-8", "10.1186/s12974-021-02124-z", "10.1186/s12974-021-02134-x", "10.1186/s12974-021-02292-y", "10.1186/s12974-022-02397-y", "10.1186/s12974-022-02610-y", "10.1186/s12974-023-02737-6", "10.1186/s12974-023-02745-6", "10.1186/s12974-024-03095-7", "10.1186/s12974-024-03114-7", "10.1186/s12977-018-0443-0", "10.1186/s12979-021-00223-2", "10.1186/s12986-018-0318-3", "10.1186/s12986-019-0394-z", "10.1186/s12989-017-0184-6", "10.1186/s12989-018-0254-4", "10.1186/s12989-018-0287-8", "10.1186/s12989-018-0288-7", "10.1186/s12989-024-00564-y", "10.1186/s12990-015-0025-2", "10.1186/s12993-024-00230-5", "10.1186/s13002-017-0136-0", "10.1186/s13007-018-0353-0", "10.1186/s13018-022-03073-w", "10.1186/s13018-023-03754-0", "10.1186/s13023-014-0162-0", "10.1186/s13023-016-0547-3", "10.1186/s13023-018-0807-5", "10.1186/s13024-021-00443-6", "10.1186/s13024-022-00583-3", "10.1186/s13024-022-00588-y", "10.1186/s13027-023-00503-0", "10.1186/s13036-017-0089-9", "10.1186/s13036-019-0144-9", "10.1186/s13036-021-00262-9", "10.1186/s13041-015-0134-x", "10.1186/s13041-016-0251-1", "10.1186/s13041-017-0303-1", "10.1186/s13041-019-0537-1", "10.1186/s13041-020-00583-8", "10.1186/s13041-021-00793-8", "10.1186/s13041-021-00845-z", "10.1186/s13041-021-00853-z", "10.1186/s13045-017-0462-7", "10.1186/s13045-018-0591-7", "10.1186/s13045-018-0614-4", "10.1186/s13045-018-0621-5", "10.1186/s13045-022-01238-y", "10.1186/s13045-022-01271-x", "10.1186/s13045-022-01292-6", "10.1186/s13045-022-01305-4", "10.1186/s13045-023-01453-1", "10.1186/s13045-024-01524-x", "10.1186/s13045-024-01564-3", "10.1186/s13046-016-0416-x", "10.1186/s13046-017-0650-x", "10.1186/s13046-018-0732-4", "10.1186/s13046-019-1189-9", "10.1186/s13046-019-1214-z", "10.1186/s13046-020-01586-y", "10.1186/s13046-020-01808-3", "10.1186/s13046-020-01820-7", "10.1186/s13046-021-01925-7", "10.1186/s13046-021-02187-z", "10.1186/s13046-021-02220-1", "10.1186/s13046-021-02225-w", "10.1186/s13046-022-02243-2", "10.1186/s13046-022-02251-2", "10.1186/s13046-022-02350-0", "10.1186/s13046-022-02526-8", "10.1186/s13046-023-02710-4", "10.1186/s13046-023-02787-x", "10.1186/s13046-024-03046-3", "10.1186/s13058-015-0571-6", "10.1186/s13058-017-0866-x", "10.1186/s13058-021-01468-x", "10.1186/s13058-021-01472-1", "10.1186/s13058-023-01606-7", "10.1186/s13059-014-0493-0", "10.1186/s13059-014-0550-8", "10.1186/s13059-015-0727-9", "10.1186/s13059-015-0736-8", "10.1186/s13059-015-0863-2", "10.1186/s13059-016-0994-0", "10.1186/s13059-016-1003-3", "10.1186/s13059-016-1057-2", "10.1186/s13059-016-1079-9", "10.1186/s13059-017-1287-y", "10.1186/s13059-017-1345-5", "10.1186/s13059-017-1382-0", "10.1186/s13059-018-1464-7", "10.1186/s13059-018-1596-9", "10.1186/s13059-019-1660-0", "10.1186/s13059-019-1721-4", "10.1186/s13059-019-1756-6", "10.1186/s13059-019-1808-y", "10.1186/s13059-019-1894-x", "10.1186/s13059-019-1896-8", "10.1186/s13059-019-1924-8", "10.1186/s13059-020-01984-7", "10.1186/s13059-020-01996-3", "10.1186/s13059-021-02304-3", "10.1186/s13059-021-02322-1", "10.1186/s13059-021-02389-w", "10.1186/s13059-022-02713-y", "10.1186/s13059-022-02723-w", "10.1186/s13059-022-02730-x", "10.1186/s13059-022-02741-8", "10.1186/s13059-022-02775-y", "10.1186/s13059-023-02899-9", "10.1186/s13059-023-02935-8", "10.1186/s13059-023-02955-4", "10.1186/s13059-023-02990-1", "10.1186/s13059-023-03115-4", "10.1186/s13059-024-03166-1", "10.1186/s13059-024-03169-y", "10.1186/s13059-024-03238-2", "10.1186/s13059-024-03282-y", "10.1186/s13062-015-0061-x", "10.1186/s13062-019-0255-8", "10.1186/s13064-016-0072-z", "10.1186/s13068-021-02005-w", "10.1186/s13071-015-0642-7", "10.1186/s13071-016-1731-y", "10.1186/s13071-016-1905-7", "10.1186/s13071-020-04212-0", "10.1186/s13071-020-04302-z", "10.1186/s13071-020-04320-x", "10.1186/s13071-021-04742-1", "10.1186/s13071-021-04994-x", "10.1186/s13072-015-0009-5", "10.1186/s13072-015-0042-4", "10.1186/s13072-017-0158-9", "10.1186/s13072-019-0275-8", "10.1186/s13072-019-0307-4", "10.1186/s13072-020-00353-9", "10.1186/s13072-021-00432-5", "10.1186/s13072-022-00446-7", "10.1186/s13072-023-00503-9", "10.1186/s13072-024-00533-x", "10.1186/s13073-014-0098-y", "10.1186/s13073-016-0280-5", "10.1186/s13073-016-0315-y", "10.1186/s13073-017-0464-7", "10.1186/s13073-019-0660-8", "10.1186/s13073-020-00805-7", "10.1186/s13073-020-00807-5", "10.1186/s13073-024-01320-9", "10.1186/s13075-020-02349-y", "10.1186/s13100-016-0065-9", "10.1186/s13100-016-0070-z", "10.1186/s13100-017-0103-2", "10.1186/s13100-019-0157-4", "10.1186/s13104-021-05492-0", "10.1186/s13148-015-0161-6", "10.1186/s13148-017-0358-y", "10.1186/s13148-017-0417-4", "10.1186/s13148-018-0587-8", "10.1186/s13148-021-01187-2", "10.1186/s13195-021-00769-9", "10.1186/s13227-019-0137-2", "10.1186/s13229-017-0124-1", "10.1186/s13229-020-00383-w", "10.1186/s13229-023-00540-x", "10.1186/s13287-016-0359-3", "10.1186/s13287-018-0893-2", "10.1186/s13287-019-1270-5", "10.1186/s13287-019-1323-9", "10.1186/s13287-019-1383-x", "10.1186/s13287-019-1459-7", "10.1186/s13287-021-02236-6", "10.1186/s13287-021-02399-2", "10.1186/s13287-021-02406-6", "10.1186/s13287-021-02585-2", "10.1186/s13287-022-03087-5", "10.1186/s13287-023-03381-w", "10.1186/s13293-020-00335-2", "10.1186/s13293-023-00540-9", "10.1186/s13321-016-0129-3", "10.1186/s13321-019-0360-9", "10.1186/s13321-019-0362-7", "10.1186/s13321-023-00688-x", "10.1186/s13395-017-0138-6", "10.1186/s13568-014-0059-2", "10.1186/s13578-015-0006-1", "10.1186/s13578-016-0111-9", "10.1186/s13578-018-0229-z", "10.1186/s13578-021-00549-w", "10.1186/s13578-021-00637-x", "10.1186/s13578-023-01016-4", "10.1186/s13578-023-01063-x", "10.1186/s13578-023-01090-8", "10.1186/s13578-024-01218-4", "10.1186/s13578-024-01224-6", "10.1186/s13628-016-0031-4", "10.1186/s40035-019-0145-0", "10.1186/s40101-020-00251-9", "10.1186/s40164-015-0022-1", "10.1186/s40164-023-00407-0", "10.1186/s40164-024-00522-6", "10.1186/s40168-018-0404-9", "10.1186/s40168-020-00866-1", "10.1186/s40168-020-00990-y", "10.1186/s40168-021-01111-z", "10.1186/s40168-022-01327-7", "10.1186/s40168-023-01501-5", "10.1186/s40169-019-0226-9", "10.1186/s40170-016-0146-8", "10.1186/s40170-016-0158-4", "10.1186/s40170-022-00288-7", "10.1186/s40246-020-00276-2", "10.1186/s40364-020-00230-3", "10.1186/s40364-022-00369-1", "10.1186/s40364-024-00566-0", "10.1186/s40425-016-0204-3", "10.1186/s40425-018-0383-1", "10.1186/s40425-018-0391-1", "10.1186/s40425-019-0565-5", "10.1186/s40425-019-0811-x", "10.1186/s40478-015-0192-4", "10.1186/s40478-016-0341-4", "10.1186/s40478-017-0475-z", "10.1186/s40478-018-0566-5", "10.1186/s40478-018-0611-4", "10.1186/s40478-019-0684-8", "10.1186/s40478-019-0754-y", "10.1186/s40478-020-00928-3", "10.1186/s40478-021-01163-0", "10.1186/s40643-023-00636-5", "10.1186/s40643-024-00752-w", "10.1186/s40659-021-00364-0", "10.1186/s40679-018-0051-z", "10.1186/s40779-015-0039-0", "10.1186/s40779-024-00526-7", "10.1186/s40824-023-00425-3", "10.1186/s41021-020-0148-1", "10.1186/s41065-021-00190-0", "10.1186/s41073-019-0064-8", "10.1186/s41232-022-00212-y", "10.1186/s41232-022-00226-6", "10.1186/s41232-022-00233-7", "10.1186/s41232-022-00241-7", "10.1186/s41232-024-00333-6", "10.1186/s42269-020-00475-w", "10.1186/s42358-023-00321-3", "10.1186/s43008-019-0008-4", "10.1186/s43008-020-00041-z", "10.1186/s43141-020-00069-z", "10.1186/s43141-021-00128-z", "10.1186/s43141-022-00439-9", "10.1186/s43556-022-00072-5", "10.1186/scrt292", "10.1186/scrt537", "10.1189/jlb.0106027", "10.1189/jlb.0111044", "10.1189/jlb.0205096", "10.1189/jlb.0311124", "10.1189/jlb.0407216", "10.1189/jlb.0412214", "10.1189/jlb.0602325", "10.1189/jlb.0603252", "10.1189/jlb.0911453", "10.1189/jlb.1005559", "10.1189/jlb.1010550", "10.1189/jlb.1105692", "10.1189/jlb.1109764", "10.1189/jlb.1hi0415-149r", "10.1189/jlb.1ta0214-121rr", "10.1189/jlb.2a0416-187rr", "10.1189/jlb.2mr0216-063r", "10.1189/jlb.3ri0116-021r", "10.1189/jlb.70.6.941", "10.1189/jlb.72.1.101", "10.1192/j.eurpsy.2022.124", "10.1194/jlr.m091587", "10.1196/annals.1324.008", "10.1196/annals.1377.016", "10.1196/annals.1404.008", "10.1196/annals.1443.011", "10.1200/edbk_237987", "10.1200/edbk_240837", "10.1200/edbk_79437", "10.1200/jco.1995.13.3.688", "10.1200/jco.1999.17.7.2105", "10.1200/jco.2009.27.0793", "10.1200/jco.2016.71.2513", "10.1200/jco.2019.37.15_suppl.2623", "10.1201/9780203912065-25", "10.1201/9780824743239-10", "10.1201/9781003048138-06", "10.1201/9781003109242", "10.1201/9781420030822.ch30", "10.1201/9781420079944", "10.1201/9781420079944-c1", "10.1201/b17876-4", "10.1208/s12248-015-9776-y", "10.1208/s12248-016-9894-1", "10.1208/s12249-022-02294-w", "10.1209/0295-5075/83/46001", "10.1209/epl/i2003-00340-1", "10.1210/edrv-12-1-14", "10.1210/edrv.20.2.0361", "10.1210/en.141.7.2309", "10.1210/en.2004-1514", "10.1210/en.2006-0296", "10.1210/en.2007-1155", "10.1210/en.2008-0633", "10.1210/en.2009-0794", "10.1210/en.2010-1298", "10.1210/en.2011-1760", "10.1210/en.2012-1415", "10.1210/en.2014-1040", "10.1210/en.2015-1942", "10.1210/en.2016-1796", "10.1210/en.2018-00990", "10.1210/endocr/bqad159", "10.1210/jc.2004-1429", "10.1210/jc.2005-0202", "10.1210/jc.2010-1041", "10.1210/jc.2012-2169", "10.1210/me.2007-0560", "10.1210/me.2009-0094", "10.1210/me.2014-1051", "10.1210/me.2014-1099", "10.1210/mend.10.11.8923462", "10.1210/mend.24.10.9994", "10.1210/rp.59.1.105", "10.1212/wnl.0000000000000855", "10.1212/wnl.0b013e3182605801", "10.1215/00182702-38-1-189", "10.1215/15228517-2006-008", "10.1227/01.neu.0000432766.67364.eb", "10.1242/dev.000620", "10.1242/dev.00182", "10.1242/dev.00203", "10.1242/dev.003798", "10.1242/dev.00487", "10.1242/dev.01071", "10.1242/dev.014316", "10.1242/dev.01438", "10.1242/dev.014977", "10.1242/dev.01602", "10.1242/dev.01613", "10.1242/dev.016725", "10.1242/dev.01709", "10.1242/dev.01913", "10.1242/dev.02208", "10.1242/dev.02351", "10.1242/dev.02598", "10.1242/dev.027045", "10.1242/dev.02840", "10.1242/dev.033910", "10.1242/dev.049023", "10.1242/dev.049981", "10.1242/dev.050195", "10.1242/dev.050674", "10.1242/dev.050831", "10.1242/dev.054114", "10.1242/dev.059881", "10.1242/dev.060061", "10.1242/dev.073007", "10.1242/dev.073304", "10.1242/dev.076091", "10.1242/dev.080002", "10.1242/dev.086223", "10.1242/dev.086454", "10.1242/dev.092163", "10.1242/dev.095141", "10.1242/dev.096982", "10.1242/dev.103036", "10.1242/dev.103267", "10.1242/dev.106559", "10.1242/dev.114033", "10.1242/dev.114926", "10.1242/dev.115451", "10.1242/dev.116996", "10.1242/dev.118836", "10.1242/dev.119909", "10.1242/dev.120287", "10.1242/dev.128314", "10.1242/dev.129.5.1085", "10.1242/dev.129635", "10.1242/dev.130633", "10.1242/dev.131797", "10.1242/dev.132605", "10.1242/dev.133900", "10.1242/dev.135426", "10.1242/dev.135855", "10.1242/dev.140855", "10.1242/dev.151837", "10.1242/dev.152041", "10.1242/dev.154229", "10.1242/dev.156059", "10.1242/dev.161182", "10.1242/dev.170274", "10.1242/dev.173146", "10.1242/dev.174607", "10.1242/dev.177022", "10.1242/dev.182766", "10.1242/dev.188516", "10.1242/dev.195941", "10.1242/dev.200016", "10.1242/dmm.017756", "10.1242/dmm.029728", "10.1242/dmm.040816", "10.1242/dmm.044164", "10.1242/jcs.02547", "10.1242/jcs.041186", "10.1242/jcs.051847", "10.1242/jcs.053678", "10.1242/jcs.054981", "10.1242/jcs.055970", "10.1242/jcs.059824", "10.1242/jcs.066696", "10.1242/jcs.066738", "10.1242/jcs.093567", "10.1242/jcs.112151", "10.1242/jcs.115.4.827", "10.1242/jcs.116392", "10.1242/jcs.138537", "10.1242/jcs.140996", "10.1242/jcs.149203", "10.1242/jcs.152207", "10.1242/jcs.171116", "10.1242/jcs.172056", "10.1242/jcs.178129", "10.1242/jcs.181024", "10.1242/jcs.182469", "10.1242/jcs.183723", "10.1242/jcs.192831", "10.1242/jcs.194779", "10.1242/jcs.196881", "10.1242/jcs.209627", "10.1242/jcs.211110", "10.1242/jcs.218479", "10.1242/jcs.246090", "10.1242/jcs.247221", "10.1242/jcs.259535", "10.1242/jcs.261156", "10.1242/jcs.96.3.537", "10.1242/jeb.00241", "10.1242/jeb.01319", "10.1242/jeb.024109", "10.1242/jeb.024224", "10.1242/jeb.030007", "10.1242/jeb.030668", "10.1242/jeb.058305", "10.1242/jeb.107078", "10.1242/jeb.127829", "10.1242/jeb.154153", "10.1242/jeb.169466", "10.1242/jeb.191973", "10.1242/jeb.201129", "10.1245/s10434-014-3629-2", "10.1248/bpb.30.1246", "10.1248/bpb.b21-00218", "10.1249/01.mss.0000764844.45915.86", "10.1253/circj.cj-16-0924", "10.1253/circj.cj-18-1180", "10.1258/ebm.2009.009281", "10.1261/rna.033019.112", "10.1261/rna.034181.112", "10.1261/rna.034207.112", "10.1261/rna.047910.114", "10.1261/rna.071720.119", "10.1261/rna.076588.120", "10.1261/rna.078926.121", "10.1261/rna.078994.121", "10.1261/rna.079096.121", "10.1261/rna.079149.122", "10.1261/rna.1792109", "10.1261/rna.1869710", "10.1261/rna.2017210", "10.1261/rna.2192803", "10.1261/rna.2307206", "10.1261/rna.336807", "10.1261/rna.457207", "10.1261/rna.800308", "10.1261/rna.876308", "10.1262/jrd.2018-024", "10.12681/mms.1332", "10.12681/mms.15549", "10.12688/f1000research.15021.1", "10.12688/f1000research.17584.1", "10.12688/f1000research.24956.1", "10.12688/wellcomeopenres.10011.1", "10.12688/wellcomeopenres.16061.1", "10.12688/wellcomeopenres.16834.1", "10.1270/jsbbs.19097", "10.1270/jsbbs.63.104", "10.12703/p6-13", "10.12703/p7-48", "10.12703/r/10-3", "10.12703/r/10-71", "10.1271/bbb.66.1", "10.1289/ehp.00108s3511", "10.1289/ehp.1002835", "10.1289/ehp.1002986", "10.1289/ehp.1003101", "10.1289/ehp.1003316", "10.1289/ehp.1206187", "10.1289/ehp.1306560", "10.1289/ehp.1408133", "10.1289/ehp5975", "10.1292/jvms.20-0738", "10.13005/bpj/1759", "10.13052/jsame2245-4551.7.003", "10.1309/42f0-0d0d-jd0j-5edt", "10.13104/imri.2020.24.1.30", "10.1353/pbm.2011.0032", "10.1353/pbm.2014.0006", "10.1353/wvh.2010.0012", "10.1354/vp.41-1-37", "10.1359/jbmr.2001.16.1.10", "10.1359/jbmr.2001.16.2.328", "10.1369/0022155415581689", "10.1371/journal.pbio.0000005", "10.1371/journal.pbio.0030007", "10.1371/journal.pbio.0030150", "10.1371/journal.pbio.0030170", "10.1371/journal.pbio.0030272", "10.1371/journal.pbio.0030277", "10.1371/journal.pbio.0040010", "10.1371/journal.pbio.0050005", "10.1371/journal.pbio.0050304", "10.1371/journal.pbio.0060245", "10.1371/journal.pbio.0060256", "10.1371/journal.pbio.0060272", "10.1371/journal.pbio.1000098", "10.1371/journal.pbio.1000460", "10.1371/journal.pbio.1000506", "10.1371/journal.pbio.1000557", "10.1371/journal.pbio.1000592", "10.1371/journal.pbio.1001379", "10.1371/journal.pbio.1001448", "10.1371/journal.pbio.1001452", "10.1371/journal.pbio.1001852", "10.1371/journal.pbio.1002045", "10.1371/journal.pbio.1002412", "10.1371/journal.pbio.1002533", "10.1371/journal.pbio.2000640", "10.1371/journal.pbio.2001333", "10.1371/journal.pbio.2001392", "10.1371/journal.pbio.2002702", "10.1371/journal.pbio.2004328", "10.1371/journal.pbio.2004880", "10.1371/journal.pbio.2006347", "10.1371/journal.pbio.2007044", "10.1371/journal.pbio.3000171", "10.1371/journal.pbio.3000365", "10.1371/journal.pbio.3000467", "10.1371/journal.pbio.3000582", "10.1371/journal.pbio.3000677", "10.1371/journal.pbio.3000711", "10.1371/journal.pbio.3000976", "10.1371/journal.pbio.3001424", "10.1371/journal.pbio.3001563", "10.1371/journal.pbio.3001584", "10.1371/journal.pbio.3001644", "10.1371/journal.pbio.3001838", "10.1371/journal.pbio.3001890", "10.1371/journal.pbio.3002062", "10.1371/journal.pbio.3002365", "10.1371/journal.pbio.3002418", "10.1371/journal.pbio.3002573", "10.1371/journal.pbio.3002616", "10.1371/journal.pcbi.0010022", "10.1371/journal.pcbi.0010042", "10.1371/journal.pcbi.0020133", "10.1371/journal.pcbi.0030007.eor", "10.1371/journal.pcbi.0030084", "10.1371/journal.pcbi.0030219", "10.1371/journal.pcbi.1000092", "10.1371/journal.pcbi.1000343", "10.1371/journal.pcbi.1000360", "10.1371/journal.pcbi.1000531", "10.1371/journal.pcbi.1000600", "10.1371/journal.pcbi.1000605", "10.1371/journal.pcbi.1000694", "10.1371/journal.pcbi.1000861", "10.1371/journal.pcbi.1001038", "10.1371/journal.pcbi.1002195", "10.1371/journal.pcbi.1002505", "10.1371/journal.pcbi.1003072", "10.1371/journal.pcbi.1003392", "10.1371/journal.pcbi.1003731", "10.1371/journal.pcbi.1004805", "10.1371/journal.pcbi.1006000", "10.1371/journal.pcbi.1006733", "10.1371/journal.pcbi.1007417", "10.1371/journal.pcbi.1007468", "10.1371/journal.pcbi.1007480", "10.1371/journal.pcbi.1007991", "10.1371/journal.pcbi.1008103", "10.1371/journal.pcbi.1008790", "10.1371/journal.pcbi.1008955", "10.1371/journal.pcbi.1008983", "10.1371/journal.pcbi.1009400", "10.1371/journal.pcbi.1010483", "10.1371/journal.pcbi.1010923", "10.1371/journal.pcbi.1011895", "10.1371/journal.pgen.0010024", "10.1371/journal.pgen.0020052", "10.1371/journal.pgen.0030136.eor", "10.1371/journal.pgen.1000235", "10.1371/journal.pgen.1000242", "10.1371/journal.pgen.1000278", "10.1371/journal.pgen.1000325", "10.1371/journal.pgen.1000330", "10.1371/journal.pgen.1000671", "10.1371/journal.pgen.1000732", "10.1371/journal.pgen.1000778", "10.1371/journal.pgen.1001205", "10.1371/journal.pgen.1001222", "10.1371/journal.pgen.1001274", "10.1371/journal.pgen.1001284", "10.1371/journal.pgen.1001287", "10.1371/journal.pgen.1001290", "10.1371/journal.pgen.1002277", "10.1371/journal.pgen.1002364", "10.1371/journal.pgen.1002384", "10.1371/journal.pgen.1002443", "10.1371/journal.pgen.1002648", "10.1371/journal.pgen.1002736", "10.1371/journal.pgen.1002931", "10.1371/journal.pgen.1003276", "10.1371/journal.pgen.1003277", "10.1371/journal.pgen.1003497", "10.1371/journal.pgen.1003577", "10.1371/journal.pgen.1003586", "10.1371/journal.pgen.1003606", "10.1371/journal.pgen.1003612", "10.1371/journal.pgen.1003674", "10.1371/journal.pgen.1003679", "10.1371/journal.pgen.1003753", "10.1371/journal.pgen.1003896", "10.1371/journal.pgen.1004110", "10.1371/journal.pgen.1004250", "10.1371/journal.pgen.1004291", "10.1371/journal.pgen.1004544", "10.1371/journal.pgen.1004618", "10.1371/journal.pgen.1004624", "10.1371/journal.pgen.1004638", "10.1371/journal.pgen.1004674", "10.1371/journal.pgen.1004757", "10.1371/journal.pgen.1004857", "10.1371/journal.pgen.1004897", "10.1371/journal.pgen.1005175", "10.1371/journal.pgen.1005251", "10.1371/journal.pgen.1005406", "10.1371/journal.pgen.1005601", "10.1371/journal.pgen.1005769", "10.1371/journal.pgen.1005857", "10.1371/journal.pgen.1005969", "10.1371/journal.pgen.1005994", "10.1371/journal.pgen.1006339", "10.1371/journal.pgen.1006433", "10.1371/journal.pgen.1006570", "10.1371/journal.pgen.1006602", "10.1371/journal.pgen.1006660", "10.1371/journal.pgen.1006670", "10.1371/journal.pgen.1006946", "10.1371/journal.pgen.1006994", "10.1371/journal.pgen.1007348", "10.1371/journal.pgen.1007453", "10.1371/journal.pgen.1007479", "10.1371/journal.pgen.1007487", "10.1371/journal.pgen.1007653", "10.1371/journal.pgen.1007701", "10.1371/journal.pgen.1007702", "10.1371/journal.pgen.1007776", "10.1371/journal.pgen.1007929", "10.1371/journal.pgen.1008160", "10.1371/journal.pgen.1008192", "10.1371/journal.pgen.1008221", "10.1371/journal.pgen.1008444", "10.1371/journal.pgen.1008525", "10.1371/journal.pgen.1008866", "10.1371/journal.pgen.1008968", "10.1371/journal.pgen.1009001", "10.1371/journal.pgen.1009205", "10.1371/journal.pgen.1009227", "10.1371/journal.pgen.1009461", "10.1371/journal.pgen.1009516", "10.1371/journal.pgen.1009663", "10.1371/journal.pgen.1009708", "10.1371/journal.pgen.1009807", "10.1371/journal.pgen.1009991", "10.1371/journal.pgen.1010020", "10.1371/journal.pgen.1010227", "10.1371/journal.pgen.1010245", "10.1371/journal.pgen.1010282", "10.1371/journal.pgen.1010729", "10.1371/journal.pgen.1010809", "10.1371/journal.pgen.1011175", "10.1371/journal.pgen.1011235", "10.1371/journal.pmed.0050137", "10.1371/journal.pmed.1001169", "10.1371/journal.pmed.1004301", "10.1371/journal.pntd.0007819", "10.1371/journal.pntd.0008590", "10.1371/journal.pntd.0008613", "10.1371/journal.pntd.0010802", "10.1371/journal.pone.0000203", "10.1371/journal.pone.0000388", "10.1371/journal.pone.0000617", "10.1371/journal.pone.0000954", "10.1371/journal.pone.0000960", "10.1371/journal.pone.0001185", "10.1371/journal.pone.0001570", "10.1371/journal.pone.0001710", "10.1371/journal.pone.0001813", "10.1371/journal.pone.0001855", "10.1371/journal.pone.0002727", "10.1371/journal.pone.0003067", "10.1371/journal.pone.0003440", "10.1371/journal.pone.0003647", "10.1371/journal.pone.0004008", "10.1371/journal.pone.0004642", "10.1371/journal.pone.0005360", "10.1371/journal.pone.0005464", "10.1371/journal.pone.0006846", "10.1371/journal.pone.0008104", "10.1371/journal.pone.0008410", "10.1371/journal.pone.0008557", "10.1371/journal.pone.0008658", "10.1371/journal.pone.0008809", "10.1371/journal.pone.0009059", "10.1371/journal.pone.0009071", "10.1371/journal.pone.0009198", "10.1371/journal.pone.0009308", "10.1371/journal.pone.0009490", "10.1371/journal.pone.0009591", "10.1371/journal.pone.0010547", "10.1371/journal.pone.0010803", "10.1371/journal.pone.0011144", "10.1371/journal.pone.0011358", "10.1371/journal.pone.0011503", "10.1371/journal.pone.0011879", "10.1371/journal.pone.0011882", "10.1371/journal.pone.0012018", "10.1371/journal.pone.0012470", "10.1371/journal.pone.0012506", "10.1371/journal.pone.0012996", "10.1371/journal.pone.0013359", "10.1371/journal.pone.0013553", "10.1371/journal.pone.0013615", "10.1371/journal.pone.0013952", "10.1371/journal.pone.0014500", "10.1371/journal.pone.0015392", "10.1371/journal.pone.0015454", "10.1371/journal.pone.0015583", "10.1371/journal.pone.0015860", "10.1371/journal.pone.0016113", "10.1371/journal.pone.0016195", "10.1371/journal.pone.0016222", "10.1371/journal.pone.0016372", "10.1371/journal.pone.0017600", "10.1371/journal.pone.0018431", "10.1371/journal.pone.0018564", "10.1371/journal.pone.0019757", "10.1371/journal.pone.0019826", "10.1371/journal.pone.0020059", "10.1371/journal.pone.0020145", "10.1371/journal.pone.0020230", "10.1371/journal.pone.0021729", "10.1371/journal.pone.0022593", "10.1371/journal.pone.0023239", "10.1371/journal.pone.0023367", "10.1371/journal.pone.0023747", "10.1371/journal.pone.0024469", "10.1371/journal.pone.0024559", "10.1371/journal.pone.0024852", "10.1371/journal.pone.0025211", "10.1371/journal.pone.0025294", "10.1371/journal.pone.0025467", "10.1371/journal.pone.0025760", "10.1371/journal.pone.0026011", "10.1371/journal.pone.0026179", "10.1371/journal.pone.0026229", "10.1371/journal.pone.0027513", "10.1371/journal.pone.0028769", "10.1371/journal.pone.0029801", "10.1371/journal.pone.0030045", "10.1371/journal.pone.0030313", "10.1371/journal.pone.0030518", "10.1371/journal.pone.0031039", "10.1371/journal.pone.0031442", "10.1371/journal.pone.0031633", "10.1371/journal.pone.0031692", "10.1371/journal.pone.0031756", "10.1371/journal.pone.0033351", "10.1371/journal.pone.0033596", "10.1371/journal.pone.0033698", "10.1371/journal.pone.0034238", "10.1371/journal.pone.0034541", "10.1371/journal.pone.0035084", "10.1371/journal.pone.0035264", "10.1371/journal.pone.0035592", "10.1371/journal.pone.0036754", "10.1371/journal.pone.0037345", "10.1371/journal.pone.0038544", "10.1371/journal.pone.0038727", "10.1371/journal.pone.0038906", "10.1371/journal.pone.0039302", "10.1371/journal.pone.0039754", "10.1371/journal.pone.0039836", "10.1371/journal.pone.0040451", "10.1371/journal.pone.0040739", "10.1371/journal.pone.0040914", "10.1371/journal.pone.0041029", "10.1371/journal.pone.0042513", "10.1371/journal.pone.0045399", "10.1371/journal.pone.0046224", "10.1371/journal.pone.0046312", "10.1371/journal.pone.0046984", "10.1371/journal.pone.0046989", "10.1371/journal.pone.0047867", "10.1371/journal.pone.0047892", "10.1371/journal.pone.0050018", "10.1371/journal.pone.0054514", "10.1371/journal.pone.0054710", "10.1371/journal.pone.0055390", "10.1371/journal.pone.0055566", "10.1371/journal.pone.0055857", "10.1371/journal.pone.0056401", "10.1371/journal.pone.0056529", "10.1371/journal.pone.0059250", "10.1371/journal.pone.0059616", "10.1371/journal.pone.0059976", "10.1371/journal.pone.0060907", "10.1371/journal.pone.0062064", "10.1371/journal.pone.0062693", "10.1371/journal.pone.0062952", "10.1371/journal.pone.0064128", "10.1371/journal.pone.0064160", "10.1371/journal.pone.0064451", "10.1371/journal.pone.0065928", "10.1371/journal.pone.0066584", "10.1371/journal.pone.0066687", "10.1371/journal.pone.0069439", "10.1371/journal.pone.0071152", "10.1371/journal.pone.0071535", "10.1371/journal.pone.0072439", "10.1371/journal.pone.0074423", "10.1371/journal.pone.0075125", "10.1371/journal.pone.0077568", "10.1371/journal.pone.0078045", "10.1371/journal.pone.0078128", "10.1371/journal.pone.0082295", "10.1371/journal.pone.0084692", "10.1371/journal.pone.0084922", "10.1371/journal.pone.0085699", "10.1371/journal.pone.0086322", "10.1371/journal.pone.0086679", "10.1371/journal.pone.0087336", "10.1371/journal.pone.0087518", "10.1371/journal.pone.0087609", "10.1371/journal.pone.0089335", "10.1371/journal.pone.0090855", "10.1371/journal.pone.0093431", "10.1371/journal.pone.0094327", "10.1371/journal.pone.0094336", "10.1371/journal.pone.0096918", "10.1371/journal.pone.0096923", "10.1371/journal.pone.0097025", "10.1371/journal.pone.0099168", "10.1371/journal.pone.0101771", "10.1371/journal.pone.0103030", "10.1371/journal.pone.0103307", "10.1371/journal.pone.0103930", "10.1371/journal.pone.0104182", "10.1371/journal.pone.0105323", "10.1371/journal.pone.0107209", "10.1371/journal.pone.0108217", "10.1371/journal.pone.0108233", "10.1371/journal.pone.0109005", "10.1371/journal.pone.0109292", "10.1371/journal.pone.0112375", "10.1371/journal.pone.0112963", "10.1371/journal.pone.0114401", "10.1371/journal.pone.0114485", "10.1371/journal.pone.0115147", "10.1371/journal.pone.0115369", "10.1371/journal.pone.0115635", "10.1371/journal.pone.0116473", "10.1371/journal.pone.0116646", "10.1371/journal.pone.0116882", "10.1371/journal.pone.0117158", "10.1371/journal.pone.0118557", "10.1371/journal.pone.0118865", "10.1371/journal.pone.0120929", "10.1371/journal.pone.0121893", "10.1371/journal.pone.0123563", "10.1371/journal.pone.0124333", "10.1371/journal.pone.0124397", "10.1371/journal.pone.0124401", "10.1371/journal.pone.0124633", "10.1371/journal.pone.0124837", "10.1371/journal.pone.0125628", "10.1371/journal.pone.0126007", "10.1371/journal.pone.0126747", "10.1371/journal.pone.0126765", "10.1371/journal.pone.0126955", "10.1371/journal.pone.0129744", "10.1371/journal.pone.0130000", "10.1371/journal.pone.0130532", "10.1371/journal.pone.0131242", "10.1371/journal.pone.0133389", "10.1371/journal.pone.0134458", "10.1371/journal.pone.0134999", "10.1371/journal.pone.0135493", "10.1371/journal.pone.0135686", "10.1371/journal.pone.0136967", "10.1371/journal.pone.0138683", "10.1371/journal.pone.0140489", "10.1371/journal.pone.0141067", "10.1371/journal.pone.0144810", "10.1371/journal.pone.0145169", "10.1371/journal.pone.0145225", "10.1371/journal.pone.0145342", "10.1371/journal.pone.0147256", "10.1371/journal.pone.0147366", "10.1371/journal.pone.0148025", "10.1371/journal.pone.0150360", "10.1371/journal.pone.0150441", "10.1371/journal.pone.0150758", "10.1371/journal.pone.0150858", "10.1371/journal.pone.0151955", "10.1371/journal.pone.0153304", "10.1371/journal.pone.0154531", "10.1371/journal.pone.0154722", "10.1371/journal.pone.0155522", "10.1371/journal.pone.0157049", "10.1371/journal.pone.0158195", "10.1371/journal.pone.0159449", "10.1371/journal.pone.0159539", "10.1371/journal.pone.0160751", "10.1371/journal.pone.0161307", "10.1371/journal.pone.0163555", "10.1371/journal.pone.0164471", "10.1371/journal.pone.0164557", "10.1371/journal.pone.0167145", "10.1371/journal.pone.0170282", "10.1371/journal.pone.0171312", "10.1371/journal.pone.0172654", "10.1371/journal.pone.0175903", "10.1371/journal.pone.0177561", "10.1371/journal.pone.0179431", "10.1371/journal.pone.0181490", "10.1371/journal.pone.0181784", "10.1371/journal.pone.0183346", "10.1371/journal.pone.0183463", "10.1371/journal.pone.0186433", "10.1371/journal.pone.0188112", "10.1371/journal.pone.0194913", "10.1371/journal.pone.0196153", "10.1371/journal.pone.0197825", "10.1371/journal.pone.0198744", "10.1371/journal.pone.0199154", "10.1371/journal.pone.0199274", "10.1371/journal.pone.0199288", "10.1371/journal.pone.0199392", "10.1371/journal.pone.0200835", "10.1371/journal.pone.0201848", "10.1371/journal.pone.0201961", "10.1371/journal.pone.0202287", "10.1371/journal.pone.0202323", "10.1371/journal.pone.0204538", "10.1371/journal.pone.0205638", "10.1371/journal.pone.0207234", "10.1371/journal.pone.0207948", "10.1371/journal.pone.0210352", "10.1371/journal.pone.0217941", "10.1371/journal.pone.0218505", "10.1371/journal.pone.0224650", "10.1371/journal.pone.0225617", "10.1371/journal.pone.0226602", "10.1371/journal.pone.0227102", "10.1371/journal.pone.0232629", "10.1371/journal.pone.0233789", "10.1371/journal.pone.0235863", "10.1371/journal.pone.0238121", "10.1371/journal.pone.0239792", "10.1371/journal.pone.0241006", "10.1371/journal.pone.0243014", "10.1371/journal.pone.0244768", "10.1371/journal.pone.0247858", "10.1371/journal.pone.0257076", "10.1371/journal.pone.0259100", "10.1371/journal.pone.0259871", "10.1371/journal.pone.0260514", "10.1371/journal.pone.0261047", "10.1371/journal.pone.0264353", "10.1371/journal.pone.0266250", "10.1371/journal.pone.0269847", "10.1371/journal.pone.0270380", "10.1371/journal.pone.0272364", "10.1371/journal.pone.0275279", "10.1371/journal.pone.0285660", "10.1371/journal.pone.0286435", "10.1371/journal.pone.0290360", "10.1371/journal.pone.0291052", "10.1371/journal.pone.0293263", "10.1371/journal.pone.0295412", "10.1371/journal.ppat.1000004", "10.1371/journal.ppat.1000121", "10.1371/journal.ppat.1000343", "10.1371/journal.ppat.1000458", "10.1371/journal.ppat.1000644", "10.1371/journal.ppat.1000767", "10.1371/journal.ppat.1000912", "10.1371/journal.ppat.1001020", "10.1371/journal.ppat.1001143", "10.1371/journal.ppat.1001309", "10.1371/journal.ppat.1002217", "10.1371/journal.ppat.1002338", "10.1371/journal.ppat.1002342", "10.1371/journal.ppat.1002389", "10.1371/journal.ppat.1002415", "10.1371/journal.ppat.1002689", "10.1371/journal.ppat.1002964", "10.1371/journal.ppat.1003407", "10.1371/journal.ppat.1003864", "10.1371/journal.ppat.1003928", "10.1371/journal.ppat.1004165", "10.1371/journal.ppat.1004231", "10.1371/journal.ppat.1004691", "10.1371/journal.ppat.1004757", "10.1371/journal.ppat.1004871", "10.1371/journal.ppat.1005048", "10.1371/journal.ppat.1005388", "10.1371/journal.ppat.1005398", "10.1371/journal.ppat.1005538", "10.1371/journal.ppat.1005738", "10.1371/journal.ppat.1006874", "10.1371/journal.ppat.1006930", "10.1371/journal.ppat.1007030", "10.1371/journal.ppat.1007060", "10.1371/journal.ppat.1007226", "10.1371/journal.ppat.1007364", "10.1371/journal.ppat.1007371", "10.1371/journal.ppat.1007527", "10.1371/journal.ppat.1007592", "10.1371/journal.ppat.1007611", "10.1371/journal.ppat.1007715", "10.1371/journal.ppat.1007855", "10.1371/journal.ppat.1007906", "10.1371/journal.ppat.1007936", "10.1371/journal.ppat.1008029", "10.1371/journal.ppat.1008282", "10.1371/journal.ppat.1008397", "10.1371/journal.ppat.1008656", "10.1371/journal.ppat.1008794", "10.1371/journal.ppat.1008822", "10.1371/journal.ppat.1008995", "10.1371/journal.ppat.1009595", "10.1371/journal.ppat.1009772", "10.1371/journal.ppat.1009802", "10.1371/journal.ppat.1009859", "10.1371/journal.ppat.1010083", "10.1371/journal.ppat.1010251", "10.1371/journal.ppat.1010260", "10.1371/journal.ppat.1010951", "10.1371/journal.ppat.1011088", "10.1371/journal.ppat.1011211", "10.1371/journal.ppat.1011363", "10.1371/journal.ppat.1011468", "10.1371/journal.ppat.1011697", "10.1371/journal.ppat.1011804", "10.1371/journal.ppat.1011901", "10.1371/journal.ppat.1012218", "10.1371/journal.ppat.1012281", "10.1379/csc-117r.1", "10.1385/1-59259-070-5:23", "10.1385/1-59259-895-1:255", "10.1385/1-59745-046-4:13", "10.1385/nmm:7:1-2:051", "10.1387/ijdb.092942mk", "10.1387/ijdb.103106gs", "10.1387/ijdb.130189wf", "10.14201/gredos.76539", "10.14202/vetworld.2016.705-709", "10.14202/vetworld.2018.1720-1724", "10.14264/uql.2015.970", "10.14293/s2199-1006.1.sor-.pprduyu.v1", "10.14302/issn.2578-8590.ipj-17-1910", "10.14309/ctg.0000000000000052", "10.14411/eje.2011.036", "10.14418/wes01.3.86", "10.14679/2101", "10.14711/thesis-991012753766003412", "10.14711/thesis-b1514880", "10.14715/cmb/2019.65.5.12", "10.14806/ej.17.1.200", "10.14814/phy2.13307", "10.1504/ijdmb.2009.029205", "10.1515/9783110278965.173", "10.1515/acph-2016-0006", "10.1515/bc.2011.066", "10.1515/bmc-2015-0031", "10.1515/bmc-2017-0011", "10.1515/hsz-2013-0163", "10.1515/hsz-2016-0176", "10.1515/hsz-2019-0279", "10.1515/hsz-2019-0330", "10.1515/hsz-2019-0344", "10.1515/hsz-2020-0262", "10.1515/hsz-2020-0270", "10.1515/hsz-2022-0261", "10.1515/labmed-2017-0138", "10.1515/medgen-2021-2073", "10.1515/medgen-2023-2056", "10.1515/nano.0034.00079", "10.1515/nf-2004-0305", "10.1515/ntrev-2020-0089", "10.1515/opag-2020-0026", "10.1515/pac-2019-0106", "10.1515/revneuro.2006.17.4.403", "10.1515/zkri-2017-2066", "10.1515/znc-1992-9-1001", "10.1517/13543776.2012.669375", "10.1517/13543784.17.2.145", "10.1517/13543784.2011.573785", "10.1517/13543784.2011.627853", "10.1517/14712598.2015.1009889", "10.1517/14728214.12.3.479", "10.1517/14728214.2011.644786", "10.1517/14728214.8.2.537", "10.1517/14728222.11.7.967", "10.1517/14728222.2015.1025753", "10.1517/17425255.2012.701617", "10.1517/17460441.2013.752812", "10.15212/bioi-2021-0032", "10.1523/eneuro.0018-19.2019", "10.1523/eneuro.0029-21.2021", "10.1523/eneuro.0103-22.2022", "10.1523/eneuro.0190-18.2018", "10.1523/eneuro.0251-20.2020", "10.1523/eneuro.0278-20.2020", "10.1523/eneuro.0289-21.2022", "10.1523/eneuro.0305-17.2018", "10.1523/eneuro.0324-19.2020", "10.1523/eneuro.0496-19.2020", "10.1523/eneuro.0567-20.2021", "10.1523/jneurosci.0011-12.2012", "10.1523/jneurosci.0032-10.2010", "10.1523/jneurosci.0077-19.2019", "10.1523/jneurosci.0150-18.2018", "10.1523/jneurosci.0180-07.2007", "10.1523/jneurosci.0184-19.2019", "10.1523/jneurosci.0247-10.2010", "10.1523/jneurosci.0305-14.2014", "10.1523/jneurosci.0317-15.2015", "10.1523/jneurosci.0344-08.2008", "10.1523/jneurosci.0431-07.2007", "10.1523/jneurosci.0433-18.2018", "10.1523/jneurosci.0483-15.2015", "10.1523/jneurosci.0564-21.2021", "10.1523/jneurosci.0565-05.2005", "10.1523/jneurosci.0651-17.2017", "10.1523/jneurosci.0673-21.2021", "10.1523/jneurosci.0675-20.2020", "10.1523/jneurosci.0676-20.2020", "10.1523/jneurosci.0688-18.2018", "10.1523/jneurosci.0725-16.2016", "10.1523/jneurosci.0753-07.2007", "10.1523/jneurosci.0778-05.2005", "10.1523/jneurosci.0815-08.2008", "10.1523/jneurosci.0853-08.2008", "10.1523/jneurosci.0861-08.2008", "10.1523/jneurosci.0925-17.2017", "10.1523/jneurosci.0967-15.2015", "10.1523/jneurosci.0993-19.2019", "10.1523/jneurosci.1101-06.2006", "10.1523/jneurosci.1108-04.2005", "10.1523/jneurosci.1131-22.2022", "10.1523/jneurosci.1136-17.2017", "10.1523/jneurosci.1167-12.2012", "10.1523/jneurosci.1182-09.2009", "10.1523/jneurosci.12-11-04151.1992", "10.1523/jneurosci.1224-13.2013", "10.1523/jneurosci.1248-10.2010", "10.1523/jneurosci.1282-12.2012", "10.1523/jneurosci.1285-18.2018", "10.1523/jneurosci.13-09-03749.1993", "10.1523/jneurosci.13-12-05365.1993", "10.1523/jneurosci.1311-05.2005", "10.1523/jneurosci.1316-12.2012", "10.1523/jneurosci.1325-14.2014", "10.1523/jneurosci.1333-18.2018", "10.1523/jneurosci.1333-19.2019", "10.1523/jneurosci.1360-10.2010", "10.1523/jneurosci.1367-20.2020", "10.1523/jneurosci.1371-16.2016", "10.1523/jneurosci.1380-11.2011", "10.1523/jneurosci.14-10-05725.1994", "10.1523/jneurosci.1434-07.2007", "10.1523/jneurosci.15-05-03231.1995", "10.1523/jneurosci.15-09-05999.1995", "10.1523/jneurosci.15-09-06046.1995", "10.1523/jneurosci.1525-17.2017", "10.1523/jneurosci.1540-17.2018", "10.1523/jneurosci.1567-10.2010", "10.1523/jneurosci.1579-07.2007", "10.1523/jneurosci.16-06-02027.1996", "10.1523/jneurosci.1604-07.2007", "10.1523/jneurosci.1616-12.2012", "10.1523/jneurosci.1627-06.2006", "10.1523/jneurosci.1642-13.2013", "10.1523/jneurosci.1663-14.2014", "10.1523/jneurosci.1684-18.2019", "10.1523/jneurosci.17-10-03727.1997", "10.1523/jneurosci.17-13-05046.1997", "10.1523/jneurosci.17-16-06365.1997", "10.1523/jneurosci.1731-14.2015", "10.1523/jneurosci.18-01-00284.1998", "10.1523/jneurosci.18-15-05777.1998", "10.1523/jneurosci.18-17-06914.1998", "10.1523/jneurosci.18-19-07779.1998", "10.1523/jneurosci.18-21-08826.1998", "10.1523/jneurosci.18-22-09342.1998", "10.1523/jneurosci.1808-05.2005", "10.1523/jneurosci.1812-08.2008", "10.1523/jneurosci.1875-17.2017", "10.1523/jneurosci.1897-15.2015", "10.1523/jneurosci.19-08-02865.1999", "10.1523/jneurosci.19-08-03248.1999", "10.1523/jneurosci.1961-04.2004", "10.1523/jneurosci.1984-16.2016", "10.1523/jneurosci.20-10-03714.2000", "10.1523/jneurosci.20-11-04050.2000", "10.1523/jneurosci.20-11-04129.2000", "10.1523/jneurosci.20-14-05300.2000", "10.1523/jneurosci.20-21-08087.2000", "10.1523/jneurosci.20-22-08435.2000", "10.1523/jneurosci.2095-18.2018", "10.1523/jneurosci.21-02-00527.2001", "10.1523/jneurosci.21-09-03184.2001", "10.1523/jneurosci.21-14-05139.2001", "10.1523/jneurosci.21-18-07153.2001", "10.1523/jneurosci.2121-18.2019", "10.1523/jneurosci.2144-18.2018", "10.1523/jneurosci.2170-14.2015", "10.1523/jneurosci.2195-06.2006", "10.1523/jneurosci.22-12-05081.2002", "10.1523/jneurosci.22-17-07548.2002", "10.1523/jneurosci.2254-10.2010", "10.1523/jneurosci.2279-06.2007", "10.1523/jneurosci.2279-14.2015", "10.1523/jneurosci.23-08-03373.2003", "10.1523/jneurosci.23-19-07326.2003", "10.1523/jneurosci.23-25-08759.2003", "10.1523/jneurosci.2339-12.2012", "10.1523/jneurosci.2447-15.2016", "10.1523/jneurosci.2476-04.2004", "10.1523/jneurosci.2557-16.2017", "10.1523/jneurosci.2565-08.2008", "10.1523/jneurosci.2624-20.2021", "10.1523/jneurosci.2644-14.2015", "10.1523/jneurosci.2701-13.2014", "10.1523/jneurosci.2707-07.2007", "10.1523/jneurosci.2760-08.2009", "10.1523/jneurosci.2810-11.2012", "10.1523/jneurosci.2890-15.2015", "10.1523/jneurosci.2984-18.2019", "10.1523/jneurosci.3032-07.2008", "10.1523/jneurosci.3064-12.2013", "10.1523/jneurosci.3114-05.2005", "10.1523/jneurosci.3199-16.2017", "10.1523/jneurosci.3249-05.2005", "10.1523/jneurosci.3257-09.2009", "10.1523/jneurosci.3303-17.2018", "10.1523/jneurosci.3352-17.2018", "10.1523/jneurosci.3362-09.2009", "10.1523/jneurosci.3404-07.2007", "10.1523/jneurosci.3493-06.2006", "10.1523/jneurosci.3497-09.2010", "10.1523/jneurosci.3648-05.2006", "10.1523/jneurosci.3667-13.2014", "10.1523/jneurosci.3707-10.2010", "10.1523/jneurosci.3741-04.2005", "10.1523/jneurosci.3750-07.2007", "10.1523/jneurosci.3798-15.2016", "10.1523/jneurosci.3865-13.2014", "10.1523/jneurosci.4010-11.2012", "10.1523/jneurosci.4023-04.2005", "10.1523/jneurosci.4025-10.2010", "10.1523/jneurosci.4040-03.2004", "10.1523/jneurosci.4111-05.2006", "10.1523/jneurosci.4163-06.2007", "10.1523/jneurosci.4178-07.2008", "10.1523/jneurosci.4280-10.2010", "10.1523/jneurosci.4280-15.2016", "10.1523/jneurosci.4287-14.2015", "10.1523/jneurosci.4323-06.2006", "10.1523/jneurosci.4338-12.2013", "10.1523/jneurosci.4417-10.2011", "10.1523/jneurosci.4444-03.2004", "10.1523/jneurosci.4487-15.2016", "10.1523/jneurosci.4494-07.2007", "10.1523/jneurosci.4515-08.2009", "10.1523/jneurosci.4530-06.2007", "10.1523/jneurosci.4565-14.2015", "10.1523/jneurosci.4603-15.2016", "10.1523/jneurosci.4631-05.2006", "10.1523/jneurosci.4684-04.2005", "10.1523/jneurosci.4699-13.2014", "10.1523/jneurosci.4710-06.2007", "10.1523/jneurosci.4715-13.2014", "10.1523/jneurosci.4779-09.2010", "10.1523/jneurosci.4833-08.2008", "10.1523/jneurosci.4874-09.2010", "10.1523/jneurosci.4990-12.2013", "10.1523/jneurosci.5060-06.2007", "10.1523/jneurosci.5103-10.2011", "10.1523/jneurosci.5113-03.2004", "10.1523/jneurosci.5157-07.2008", "10.1523/jneurosci.5158-11.2012", "10.1523/jneurosci.5173-03.2004", "10.1523/jneurosci.5222-10.2011", "10.1523/jneurosci.5255-14.2015", "10.1523/jneurosci.5284-09.2010", "10.1523/jneurosci.5297-06.2007", "10.1523/jneurosci.5434-11.2012", "10.1523/jneurosci.5457-12.2013", "10.1523/jneurosci.5516-05.2006", "10.1523/jneurosci.5586-06.2007", "10.1523/jneurosci.5613-10.2011", "10.1523/jneurosci.6096-09.2010", "10.1523/jneurosci.6142-10.2011", "10.1523/jneurosci.6157-08.2009", "10.1523/jneurosci.6785-10.2011", "10.1524/zkri.2006.221.1.15", "10.15252/embj.201387530", "10.15252/embj.201488663", "10.15252/embj.201488896", "10.15252/embj.201490386", "10.15252/embj.201490791", "10.15252/embj.201593679", "10.15252/embj.201695581", "10.15252/embj.201696257", "10.15252/embj.201798321", "10.15252/embj.2018100158", "10.15252/embj.2018100278", "10.15252/embj.2018100293", "10.15252/embj.2018101220", "10.15252/embj.201899264", "10.15252/embj.201899543", "10.15252/embj.201899753", "10.15252/embj.2019101859", "10.15252/embj.2019101997", "10.15252/embj.2020104926", "10.15252/embr.201439245", "10.15252/embr.201439246", "10.15252/embr.201541715", "10.15252/embr.201642054", "10.15252/embr.201642386", "10.15252/embr.201643191", "10.15252/embr.201744722", "10.15252/embr.201744940", "10.15252/embr.201846666", "10.15252/embr.201847498", "10.15252/embr.201948328", "10.15252/embr.201948469", "10.15252/emmm.201404368", "10.15252/emmm.201505994", "10.15252/emmm.201707540", "10.15252/emmm.201911505", "10.15252/emmm.202012798", "10.15252/msb.20156458", "10.15252/msb.20156492", "10.15252/msb.20177554", "10.15252/msb.202110798", "10.1529/biophysj.106.081935", "10.1529/biophysj.107.109348", "10.1529/biophysj.108.138685", "10.1530/eje-08-0203", "10.1530/eje-14-0278", "10.1530/eje-16-0027", "10.1530/erc-14-0243", "10.1530/erc-16-0190", "10.1530/ey.16.5.14", "10.1530/ey.19.10.16", "10.1530/jme-13-0258e", "10.1530/jme-19-0274", "10.1530/raf-21-0095", "10.1530/rep-11-0044", "10.1530/rep-16-0007", "10.1530/rep-17-0356", "10.1530/rep-17-0569", "10.1530/rep-18-0043", "10.1530/rep-18-0462", "10.1530/rep-20-0095", "10.1530/rep-20-0233", "10.1530/ror.0.0040125", "10.1533/9781845695088.1.3", "10.1534/g3.112.004002", "10.1534/g3.112.005314", "10.1534/g3.113.005603", "10.1534/g3.115.020248", "10.1534/g3.117.040022", "10.1534/g3.117.300284", "10.1534/g3.117.300296", "10.1534/g3.119.400326", "10.1534/g3.120.401459", "10.1534/genetics.104.026955", "10.1534/genetics.105.045922", "10.1534/genetics.105.049619", "10.1534/genetics.105.050807", "10.1534/genetics.106.064121", "10.1534/genetics.106.068486", "10.1534/genetics.106.069245", "10.1534/genetics.107.085902", "10.1534/genetics.110.121871", "10.1534/genetics.112.147876", "10.1534/genetics.113.153197", "10.1534/genetics.114.161513", "10.1534/genetics.114.161620", "10.1534/genetics.114.165308", "10.1534/genetics.115.177295", "10.1534/genetics.115.182279", "10.1534/genetics.119.301506", "10.1534/genetics.119.302165", "10.1534/genetics.119.302625", "10.1534/genetics.120.301370", "10.1538/expanim.14-0072", "10.15388/vu.thesis.247", "10.15388/vu.thesis.66", "10.1540/jsmr.43.25", "10.15407/microbiolj83.03.072", "10.1542/peds.2008-3506", "10.1556/abiol.59.2008.2.2", "10.1556/amicr.54.2007.3.1", "10.1556/aphysiol.95.2008.2.1", "10.15698/cst2020.02.212", "10.15698/mic2016.04.491", "10.15857/ksep.2016.25.2.127", "10.15857/ksep.2021.00577", "10.1586/14787210.6.3.309", "10.1586/14789450.2014.971762", "10.1586/14789450.2015.1100079", "10.1586/epr.11.17", "10.1586/eri.13.1", "10.1586/eri.13.21", "10.1586/ern.12.66", "10.1586/erv.12.6", "10.1590/1678-4685-gmb-2016-0242", "10.1590/s0004-28032013000200021", "10.1590/s0004-282x2012000600011", "10.1590/s0021-75572010000200014", "10.1590/s0102-865020180060000003", "10.1590/s1519-69842008000200016", "10.1590/s1807-59322010000700008", "10.1593/neo.101630", "10.1593/neo.121444", "10.1615/critrevimmunol.v21.i1-3.170", "10.1615/intjmedmushrooms.v17.i8.70", "10.1620/tjem.224.41", "10.1620/tjem.233.141", "10.1631/jzus.b1500192", "10.1634/stemcells.19-3-193", "10.1634/stemcells.2006-0615", "10.1634/theoncologist.2019-0438", "10.1667/rr2727.1", "10.1667/rr3412.1", "10.1677/jme-10-0026", "10.1681/asn.2006010083", "10.1681/asn.2009060615", "10.1681/asn.2019111206", "10.1684/bdc.2010.1070", "10.17077/etd.0swv-m3gy", "10.17077/etd.33unz31i", "10.17077/etd.71sw8684", "10.17077/etd.gp6ehd1b", "10.17077/etd.hiqoomez", "10.17077/etd.kdjoje4m", "10.17077/etd.n3golxqi", "10.17077/etd.z0lfj5sz", "10.17221/83/2015-pps", "10.17760/d20004907", "10.17760/d20240308", "10.17760/d20248779", "10.17760/d20294144", "10.17760/d20382808", "10.17918/00000400", "10.17918/00001178", "10.17918/etd-3313", "10.18130/v35844", "10.18130/v3hq3rx9w", "10.18130/v3zb9v", "10.18174/399049", "10.18174/533439", "10.18297/etd/2749", "10.18297/etd/3973", "10.18433/j3g60c", "10.18502/ijdo.v16i1.15237", "10.18567/sebbmdiv_anc.2021.12.1", "10.18632/aging.100114", "10.18632/aging.100201", "10.18632/aging.100296", "10.18632/aging.100581", "10.18632/aging.100673", "10.18632/aging.101121", "10.18632/aging.101325", "10.18632/aging.103080", "10.18632/aging.103493", "10.18632/aging.103910", "10.18632/aging.202167", "10.18632/aging.202201", "10.18632/aging.202499", "10.18632/aging.203722", "10.18632/aging.203733", "10.18632/aging.204654", "10.18632/aging.205727", "10.18632/genesandcancer.86", "10.18632/oncotarget.10443", "10.18632/oncotarget.10878", "10.18632/oncotarget.11825", "10.18632/oncotarget.12807", "10.18632/oncotarget.13288", "10.18632/oncotarget.15494", "10.18632/oncotarget.16710", "10.18632/oncotarget.17049", "10.18632/oncotarget.18000", "10.18632/oncotarget.18459", "10.18632/oncotarget.19853", "10.18632/oncotarget.2020", "10.18632/oncotarget.20345", "10.18632/oncotarget.2110", "10.18632/oncotarget.2128", "10.18632/oncotarget.22230", "10.18632/oncotarget.23817", "10.18632/oncotarget.24446", "10.18632/oncotarget.24497", "10.18632/oncotarget.24539", "10.18632/oncotarget.24822", "10.18632/oncotarget.26404", "10.18632/oncotarget.26711", "10.18632/oncotarget.3592", "10.18632/oncotarget.4093", "10.18632/oncotarget.4244", "10.18632/oncotarget.4295", "10.18632/oncotarget.4319", "10.18632/oncotarget.5413", "10.18632/oncotarget.5775", "10.18632/oncotarget.6178", "10.18632/oncotarget.6380", "10.18632/oncotarget.6392", "10.18632/oncotarget.6430", "10.18632/oncotarget.6822", "10.18632/oncotarget.7325", "10.18632/oncotarget.7519", "10.18632/oncotarget.8164", "10.18632/oncotarget.8197", "10.18632/oncotarget.8220", "10.18632/oncotarget.9247", "10.18632/oncotarget.9419", "10.18632/oncotarget.9674", "10.18653/v1/2021.acl-long.178", "10.18653/v1/2021.acl-long.410", "10.18653/v1/2022.acl-short.1", "10.18653/v1/2022.bionlp-1.6", "10.18653/v1/p18-1031", "10.18863/pgy.1189139", "10.1901/jeab.2005.110-04", "10.20411/pai.v1i2.129", "10.20868/upm.thesis.65231", "10.20892/j.issn.2095-3941.2023.0046", "10.20944/preprints201810.0707.v1", "10.20944/preprints202001.0120.v1", "10.20944/preprints202007.0639.v1", "10.20944/preprints202007.0639.v2", "10.20944/preprints202008.0350.v1", "10.20944/preprints202010.0310.v1", "10.20944/preprints202011.0024.v1", "10.20944/preprints202012.0643.v1", "10.20944/preprints202101.0220.v1", "10.20944/preprints202107.0280.v1", "10.20944/preprints202207.0091.v1", "10.20944/preprints202212.0212.v1", "10.20944/preprints202302.0009.v1", "10.20944/preprints202302.0488.v2", "10.20944/preprints202304.0961.v1", "10.20944/preprints202309.0198.v1", "10.20944/preprints202312.0257.v1", "10.21007/etd.cghs.2021.0548", "10.21037/atm-22-5270", "10.21037/jtd.2016.07.94", "10.21037/med.2019.02.02", "10.21037/sci-2020-008", "10.21037/sci.2017.09.01", "10.21037/tlcr-20-819", "10.21037/tlcr-22-639", "10.2105/ajph.2018.304902", "10.21079/11681/42040", "10.2110/palo.2007.p07-063r", "10.21105/joss.01686", "10.2116/xraystruct.35.57", "10.2119/2008-00004", "10.2119/molmed.2011.00217", "10.2119/molmed.2012.00077", "10.21203/rs.3.pex-2490/v1", "10.21203/rs.3.rs-1114857/v2", "10.21203/rs.3.rs-1175516/v1", "10.21203/rs.3.rs-117637/v1", "10.21203/rs.3.rs-1263555/v1", "10.21203/rs.3.rs-128619/v1", "10.21203/rs.3.rs-140741/v1", "10.21203/rs.3.rs-1629662/v1", "10.21203/rs.3.rs-171315/v1", "10.21203/rs.3.rs-1733421/v1", "10.21203/rs.3.rs-1763329/v1", "10.21203/rs.3.rs-1791572/v1", "10.21203/rs.3.rs-1832953/v1", "10.21203/rs.3.rs-1875558/v1", "10.21203/rs.3.rs-2004456/v1", "10.21203/rs.3.rs-2035901/v1", "10.21203/rs.3.rs-21652/v2", "10.21203/rs.3.rs-2485219/v1", "10.21203/rs.3.rs-2773503/v1", "10.21203/rs.3.rs-2807495/v1", "10.21203/rs.3.rs-2823707/v1", "10.21203/rs.3.rs-2963209/v1", "10.21203/rs.3.rs-2995584/v1", "10.21203/rs.3.rs-30269/v1", "10.21203/rs.3.rs-3165474/v1", "10.21203/rs.3.rs-3183496/v1", "10.21203/rs.3.rs-3270664/v1", "10.21203/rs.3.rs-3280468/v1", "10.21203/rs.3.rs-3367542/v1", "10.21203/rs.3.rs-3487114/v1", "10.21203/rs.3.rs-3846786/v1", "10.21203/rs.3.rs-424509/v1", "10.21203/rs.3.rs-426614/v1", "10.21203/rs.3.rs-4284171/v1", "10.21203/rs.3.rs-4291684/v1", "10.21203/rs.3.rs-4302676/v1", "10.21203/rs.3.rs-4416267/v1", "10.21203/rs.3.rs-566854/v1", "10.21203/rs.3.rs-599631/v1", "10.21203/rs.3.rs-625642/v1", "10.21203/rs.3.rs-691597/v1", "10.21203/rs.3.rs-746366/v1", "10.21203/rs.3.rs-793187/v1", "10.21203/rs.3.rs-877980/v1", "10.21203/rs.3.rs-91602/v1", "10.21203/rs.3.rs-94679/v1", "10.21203/rs.3.rs-956213/v1", "10.2131/jts.40.1", "10.2136/sssaj2000.6451630x", "10.2138/am.2009.3086", "10.2139/ssrn.3188128", "10.2139/ssrn.4163660", "10.2139/ssrn.4330680", "10.2139/ssrn.4619453", "10.2139/ssrn.4877839", "10.21417/b79g6g", "10.2142/biophysico.14.0_199", "10.2142/biophysico.15.0_179", "10.2142/biophysico.16.0_328", "10.2142/biophysico.bppb-v20.s011", "10.2142/biophysico.bsj-2020007", "10.2144/000112317", "10.21468/scipostphys.15.6.235", "10.2147/ccid.s196364", "10.2147/cmar.s246948", "10.2147/cmar.s262421", "10.2147/dddt.s195294", "10.2147/hp.s133231", "10.2147/idr.s208576", "10.2147/idr.s218638", "10.2147/idr.s357193", "10.2147/ijn.s24447", "10.2147/ijn.s250865", "10.2147/ijn.s43683", "10.2147/ijn.s71198", "10.2147/ijn.s78308", "10.2147/itt.s202015", "10.2147/ott.s201799", "10.2147/ott.s221340", "10.2147/rrn.s15964", "10.21608/ejoh.2019.17421.1117", "10.21638/spbu03.2019.203", "10.2165/00128415-199304550-00035", "10.2165/11585270-000000000-00000", "10.2166/9781789062304_0009", "10.2166/wrd.2016.104", "10.2174/092986708783503230", "10.2174/092986709787458461", "10.2174/092986709787846613", "10.2174/092986710792231987", "10.2174/092986711796642580", "10.2174/092986712799320556", "10.2174/09298673113209990179", "10.2174/0929867324666170710110630", "10.2174/0929867325666180117110259", "10.2174/0929867325666180209132125", "10.2174/0929867326666181203124102", "10.2174/1381612811319230006", "10.2174/1381612825666190716111245", "10.2174/1381612825666190716113444", "10.2174/1381612825666190716141851", "10.2174/1385272823666191021124443", "10.2174/138920109787048643", "10.2174/13892029113149990002", "10.2174/1389202918666170228142703", "10.2174/1389202919666171229145156", "10.2174/1389203043379611", "10.2174/138920308784534023", "10.2174/13894501113149990156", "10.2174/138945011501140115112242", "10.2174/138945011796818135", "10.2174/138945012800564095", "10.2174/138955708785909934", "10.2174/156652309788488578", "10.2174/156652311794520111", "10.2174/156652406776055140", "10.2174/156720509790147151", "10.2174/156802608786413483", "10.2174/156802610791268765", "10.2174/156802610791293145", "10.2174/1568026617666170607114232", "10.2174/1568026618666180518092333", "10.2174/1568026620666200903163044", "10.2174/1570159x16666180321095705", "10.2174/1570159x16666180419141613", "10.2174/1570159x20666220120120203", "10.2174/1570159x21666230907151226", "10.2174/1574891x11666161024165304", "10.2174/1574892812666171108115959", "10.2174/18715206113139990301", "10.2174/187152106778520479", "10.2174/187152107779314142", "10.2174/1872211312666171207152326", "10.2174/1874609807666141129173749", "10.2174/1875036201811010029", "10.21769/bioprotoc.4714", "10.2183/pjab.86.524", "10.21873/anticanres.12956", "10.21873/anticanres.15238", "10.2210/pdb2etl/pdb", "10.2210/pdb2i4i/pdb", "10.22146/ijc.25158", "10.2217/bmt-2017-0027", "10.2217/epi-2021-0388", "10.2217/epi.09.21", "10.2217/fmb-2018-0059", "10.2217/fmb-2019-0235", "10.2217/fmb.09.5", "10.2217/fmb.11.108", "10.2217/fmb.11.148", "10.2217/fmb.11.30", "10.2217/fmb.12.97", "10.2217/fmb.13.69", "10.2217/fmb.14.27", "10.2217/fmb.14.32", "10.2217/fmb.14.9", "10.2217/fon-2020-0351", "10.2217/fon-2020-0746", "10.2217/fon-2020-0795", "10.2217/fon.10.11", "10.2217/ijr.12.76", "10.2217/imt-2017-0117", "10.2217/imt.11.102", "10.2217/imt.12.140", "10.2217/nnm-2016-0174", "10.2217/nnm-2022-0255", "10.2217/nnm-2023-0052", "10.2220/biomedres.34.119", "10.22215/etd/2014-10427", "10.22215/etd/2016-11439", "10.22215/etd/2016-11472", "10.22215/etd/2021-14702", "10.22456/1679-9216.87483", "10.22456/1679-9216.91581", "10.22541/au.158283920.02707856", "10.22541/au.159135124.46887857", "10.22541/au.169087572.21737129", "10.2302/kjm.59.79", "10.2307/25065423", "10.2307/30163283", "10.2307/3187372", "10.2307/j.ctv17hm92w.4", "10.2307/j.ctv18msq2j.29", "10.2332/allergolint.54.229", "10.2337/db05-1513", "10.2337/db05-1571", "10.2337/db08-1119", "10.2337/db08-1792", "10.2337/db09-0025", "10.2337/db10-0731", "10.2337/db10-1583", "10.2337/db11-0423", "10.2337/db15-0699", "10.2337/db18-0158", "10.2337/db18-0638", "10.2337/db21-0755", "10.2337/dbi20-0033", "10.2337/dbi23-0004", "10.2337/dc09-0681", "10.2337/dc11-2420", "10.2337/dc11-s236", "10.2337/dc13-2248", "10.2337/diab.16.1.35", "10.2337/diab.39.6.647", "10.2337/diab.45.2.223", "10.2337/diabetes.35.1.61", "10.2337/diabetes.48.10.2022", "10.2337/diabetes.49.2.195", "10.2337/diabetes.49.3.311", "10.2337/diabetes.50.10.2287", "10.2337/diabetes.50.3.622", "10.2337/diabetes.51.2007.s363", "10.2337/diabetes.51.2007.s394", "10.2337/diabetes.51.3.875", "10.2337/diabetes.51.4.1240", "10.2337/diabetes.52.11.2854", "10.2337/diabetes.52.9.2433", "10.2337/diabetes.53.3.535", "10.2337/diabetes.53.8.2164", "10.2337/diabetes.54.9.2503", "10.2337/diabetes.55.01.06.db05-0926", "10.2353/ajpath.2006.051255", "10.2353/ajpath.2008.070858", "10.2353/ajpath.2009.090241", "10.2353/ajpath.2010.090593", "10.23977/medcm.2024.060205", "10.2460/ajvr.21.07.0096", "10.2460/ajvr.72.1.25", "10.2460/javma.22.02.0088", "10.2460/javma.239.4.486", "10.2478/acs-2022-0010", "10.2478/bvip-2014-0029", "10.2478/jas-2013-0008", "10.2503/hortj.mi-ir02", "10.25135/rnp.253.21.01.1945", "10.26226/morressier.58ca6bfad462b80290b4f419", "10.26226/morressier.5b5199c0b1b87b000ecee60f", "10.26434/chemrxiv-2024-7t6h7", "10.26434/chemrxiv.10093610.v1", "10.26434/chemrxiv.12380027", "10.26434/chemrxiv.13028192", "10.26434/chemrxiv.13037993.v1", "10.26434/chemrxiv.13262771", "10.26434/chemrxiv.7442303", "10.26434/chemrxiv.7442303.v1", "10.26481/dis.20140630cb", "10.26502/jcsct.5079214", "10.26508/lsa.202000730", "10.26508/lsa.202201463", "10.26508/lsa.202201616", "10.26508/lsa.202201689", "10.26508/lsa.202201760", "10.26508/lsa.202301906", "10.26508/lsa.202302126", "10.26605/medvet-v16n4-5227", "10.26686/wgtn.17006281", "10.26686/wgtn.17151746", "10.2741/1291", "10.2741/2692", "10.2741/4077", "10.2741/4386", "10.2741/4802", "10.2807/1560-7917.es.2021.26.24.2100509", "10.2807/1560-7917.es.2022.27.15.2001567", "10.2903/j.efsa.2020.5967", "10.29105/qh4.1-30", "10.29252/ibj.23.3.165", "10.2967/jnumed.109.069823", "10.2967/jnumed.111.101527", "10.2967/jnumed.113.126409", "10.2989/16085914.2020.1799743", "10.2991/absr.k.220406.041", "10.30699/ijmm.17.1.73", "10.30802/aalas-cm-18-000099", "10.3103/s0096392515040100", "10.31083/j.fbl2804067", "10.31083/j.fbl2806119", "10.31083/j.fbl2811292", "10.3109/00365540903428158", "10.3109/01677063.2014.882918", "10.3109/02656736.2013.767478", "10.3109/02699052.2010.504525", "10.3109/03008207.2015.1066780", "10.3109/07420528.2013.782315", "10.3109/08820131003667978", "10.3109/08830189809084486", "10.3109/08958378.2015.1092184", "10.3109/08958378.2016.1145770", "10.3109/08977194.2011.608666", "10.3109/09537104.2015.1064881", "10.3109/10253890.2013.876404", "10.3109/1040841x.2010.512269", "10.3109/10409238.2013.838202", "10.3109/10409238.2013.844092", "10.3109/10409238.2013.859229", "10.3109/10409238.2014.931339", "10.3109/10409238.2015.1051505", "10.3109/10409238.2016.1172552", "10.3109/10409239209082570", "10.3109/10428194.2010.483748", "10.3109/10428194.2014.981670", "10.3109/1061186x.2011.611517", "10.3109/10799899709036610", "10.3109/13693786.2010.508469", "10.3109/13880209.2016.1173069", "10.3109/14647273.2010.508505", "10.3109/14653249.2011.635853", "10.3109/1547691x.2016.1173134", "10.3109/21678421.2013.793358", "10.31117/neuroscirn.v5i2.125", "10.31390/gradschool_dissertations.4859", "10.31491/apt.2020.03.006", "10.31533/pubvet.v13n8a391.1-7", "10.31579/2640-1053/077", "10.3171/2013.1.jns121755", "10.3171/2015.3.focus1543", "10.3171/2016.1.jns15601", "10.3171/2018.2.jns171475", "10.3171/case21346", "10.3171/case21444", "10.3174/ajnr.a2417", "10.31979/etd.v8xn-b84g", "10.3201/eid1106.041335", "10.3201/eid2608.200679", "10.3201/eid3006.231338", "10.3233/adr-210010", "10.3233/aiad210032", "10.3233/aiad210045", "10.3233/bd-190416", "10.3233/bpl-170056", "10.3233/jad-150707", "10.3233/jad-181246", "10.3233/jad-2010-100321", "10.3233/jad-2010-100336", "10.3233/jad-210415", "10.3233/jad-220831", "10.3233/tub-200051", "10.32388/99mo3f", "10.32470/ccn.2023.1393-0", "10.32598/hms.26.3.3145.2", "10.32598/hms.27.2.3361.1", "10.32604/cmes.2021.016756", "10.32607/20758251-2009-1-2-73-77", "10.32607/20758251-2017-9-4-4-15", "10.32607/actanaturae.26551", "10.32657/10356/137040", "10.32657/10356/142248", "10.32725/jab.2004.024", "10.32768/abc.20196290-94", "10.32942/x2s90v", "10.33073/pjm-2012-013", "10.3322/caac.21262", "10.3322/caac.21551", "10.3322/canjclin.39.6.399", "10.3324/haematol.2011.052456", "10.3324/haematol.2018.203224", "10.3324/haematol.2019.216861", "10.3324/haematol.2019.233924", "10.3324/haematol.2020.257246", "10.3324/haematol.2021.280003", "10.3329/dujps.v9i1.7424", "10.3348/jksr.2017.77.4.245", "10.3349/ymj.2011.52.6.879", "10.3354/ab00295", "10.3354/ame01348", "10.3354/ame01539", "10.3354/ame016273", "10.3354/ame042199", "10.3354/ame048295", "10.3354/dao02804", "10.3354/dao03125", "10.3354/dao073089", "10.3354/meps10174", "10.3354/meps11035", "10.3354/meps123235", "10.3354/meps13334", "10.3354/meps142047", "10.3354/meps14319", "10.3354/meps243025", "10.33549/physiolres.934487", "10.33611/trs.2022-010", "10.33696/cancerimmunol.5.074", "10.33696/signaling.5.114", "10.3382/ps/pez337", "10.3386/w23470", "10.3386/w25514", "10.3389/conf.fnins.2010.14.00028", "10.3389/fbinf.2021.731345", "10.3389/fbinf.2023.1120370", "10.3389/fbioe.2020.00035", "10.3389/fbioe.2020.00914", "10.3389/fbioe.2020.575393", "10.3389/fbioe.2020.601704", "10.3389/fbioe.2021.701504", "10.3389/fbioe.2022.882363", "10.3389/fbioe.2022.910151", "10.3389/fbioe.2023.1039315", "10.3389/fbioe.2023.1143304", "10.3389/fbioe.2023.1335901", "10.3389/fceld.2023.1127330", "10.3389/fcell.2018.00018", "10.3389/fcell.2018.00133", "10.3389/fcell.2019.00066", "10.3389/fcell.2020.00271", "10.3389/fcell.2020.00402", "10.3389/fcell.2020.00486", "10.3389/fcell.2020.00730", "10.3389/fcell.2020.00866", "10.3389/fcell.2020.576592", "10.3389/fcell.2020.580634", "10.3389/fcell.2020.586487", "10.3389/fcell.2020.592518", "10.3389/fcell.2020.593377", "10.3389/fcell.2020.599765", "10.3389/fcell.2020.620603", "10.3389/fcell.2021.627639", "10.3389/fcell.2021.637309", "10.3389/fcell.2021.641963", "10.3389/fcell.2021.648098", "10.3389/fcell.2021.659055", "10.3389/fcell.2021.667581", "10.3389/fcell.2021.669254", "10.3389/fcell.2021.681188", "10.3389/fcell.2021.699639", "10.3389/fcell.2021.700276", "10.3389/fcell.2021.702787", "10.3389/fcell.2021.705291", "10.3389/fcell.2021.706286", "10.3389/fcell.2021.708318", "10.3389/fcell.2021.714169", "10.3389/fcell.2021.714746", "10.3389/fcell.2021.728707", "10.3389/fcell.2021.764263", "10.3389/fcell.2021.781365", "10.3389/fcell.2021.782445", "10.3389/fcell.2021.793428", "10.3389/fcell.2021.798588", "10.3389/fcell.2022.1069064", "10.3389/fcell.2022.1097446", "10.3389/fcell.2022.861000", "10.3389/fcell.2022.861995", "10.3389/fcell.2022.880544", "10.3389/fcell.2022.891763", "10.3389/fcell.2022.902261", "10.3389/fcell.2022.902298", "10.3389/fcell.2022.915065", "10.3389/fcell.2022.923371", "10.3389/fcell.2022.933370", "10.3389/fcell.2022.993257", "10.3389/fcell.2023.1075215", "10.3389/fcell.2023.1156766", "10.3389/fcell.2023.1322305", "10.3389/fchem.2019.00833", "10.3389/fchem.2020.00276", "10.3389/fcimb.2017.00463", "10.3389/fcimb.2017.00542", "10.3389/fcimb.2018.00114", "10.3389/fcimb.2018.00146", "10.3389/fcimb.2018.00177", "10.3389/fcimb.2018.00242", "10.3389/fcimb.2019.00042", "10.3389/fcimb.2019.00047", "10.3389/fcimb.2019.00138", "10.3389/fcimb.2020.00359", "10.3389/fcimb.2020.00367", "10.3389/fcimb.2020.00381", "10.3389/fcimb.2020.570261", "10.3389/fcimb.2020.572951", "10.3389/fcimb.2020.583137", "10.3389/fcimb.2020.615450", "10.3389/fcimb.2021.656938", "10.3389/fcimb.2021.743390", "10.3389/fcimb.2021.789417", "10.3389/fcimb.2022.820650", "10.3389/fcimb.2022.823684", "10.3389/fcimb.2022.856953", "10.3389/fcimb.2022.900608", "10.3389/fcimb.2023.1150758", "10.3389/fcimb.2023.1165312", "10.3389/fcimb.2023.1206720", "10.3389/fcimb.2023.1301915", "10.3389/fcvm.2018.00069", "10.3389/fcvm.2021.671610", "10.3389/fcvm.2022.930797", "10.3389/fcvm.2023.1300375", "10.3389/fendo.2011.00115", "10.3389/fendo.2014.00068", "10.3389/fendo.2014.00146", "10.3389/fendo.2016.00037", "10.3389/fendo.2018.00694", "10.3389/fendo.2018.00762", "10.3389/fendo.2019.00204", "10.3389/fendo.2019.00743", "10.3389/fendo.2019.00772", "10.3389/fendo.2020.00030", "10.3389/fendo.2020.00035", "10.3389/fendo.2020.00378", "10.3389/fendo.2020.591476", "10.3389/fendo.2021.643851", "10.3389/fendo.2021.803992", "10.3389/fendo.2022.846310", "10.3389/fendo.2022.847291", "10.3389/fendo.2022.938094", "10.3389/fevo.2019.00331", "10.3389/ffunb.2021.733655", "10.3389/fgeed.2021.644319", "10.3389/fgeed.2022.997142", "10.3389/fgeed.2023.1272678", "10.3389/fgene.2013.00213", "10.3389/fgene.2014.00065", "10.3389/fgene.2014.00423", "10.3389/fgene.2015.00002", "10.3389/fgene.2015.00008", "10.3389/fgene.2015.00040", "10.3389/fgene.2015.00042", "10.3389/fgene.2015.00060", "10.3389/fgene.2016.00024", "10.3389/fgene.2017.00180", "10.3389/fgene.2017.00223", "10.3389/fgene.2018.00085", "10.3389/fgene.2019.00065", "10.3389/fgene.2019.00625", "10.3389/fgene.2019.00936", "10.3389/fgene.2020.00097", "10.3389/fgene.2020.00158", "10.3389/fgene.2020.00358", "10.3389/fgene.2020.00424", "10.3389/fgene.2020.00528", "10.3389/fgene.2020.00547", "10.3389/fgene.2020.00761", "10.3389/fgene.2020.00770", "10.3389/fgene.2020.00867", "10.3389/fgene.2020.605620", "10.3389/fgene.2020.617202", "10.3389/fgene.2021.574196", "10.3389/fgene.2021.642975", "10.3389/fgene.2021.667866", "10.3389/fgene.2021.680548", "10.3389/fgene.2021.713224", "10.3389/fgene.2021.786287", "10.3389/fgene.2021.794805", "10.3389/fgene.2021.821543", "10.3389/fgene.2022.1047004", "10.3389/fgene.2022.1081088", "10.3389/fgene.2022.809794", "10.3389/fgene.2022.894736", "10.3389/fgene.2022.911223", "10.3389/fgene.2022.959258", "10.3389/fgene.2022.961018", "10.3389/fgene.2022.981567", "10.3389/fgene.2022.983668", "10.3389/fgene.2023.1052383", "10.3389/fgene.2023.1087267", "10.3389/fgene.2023.1108104", "10.3389/fgene.2024.1375100", "10.3389/fimmu.2011.00054", "10.3389/fimmu.2011.00096", "10.3389/fimmu.2012.00346", "10.3389/fimmu.2012.00356", "10.3389/fimmu.2013.00049", "10.3389/fimmu.2013.00069", "10.3389/fimmu.2013.00157", "10.3389/fimmu.2013.00222", "10.3389/fimmu.2013.00235", "10.3389/fimmu.2013.00477", "10.3389/fimmu.2013.00491", "10.3389/fimmu.2014.00037", "10.3389/fimmu.2014.00107", "10.3389/fimmu.2014.00258", "10.3389/fimmu.2014.00463", "10.3389/fimmu.2014.00520", "10.3389/fimmu.2015.00016", "10.3389/fimmu.2015.00061", "10.3389/fimmu.2015.00353", "10.3389/fimmu.2015.00357", "10.3389/fimmu.2015.00367", "10.3389/fimmu.2015.00370", "10.3389/fimmu.2015.00494", "10.3389/fimmu.2016.00076", "10.3389/fimmu.2016.00109", "10.3389/fimmu.2016.00314", "10.3389/fimmu.2016.00573", "10.3389/fimmu.2017.00008", "10.3389/fimmu.2017.00061", "10.3389/fimmu.2017.00066", "10.3389/fimmu.2017.00108", "10.3389/fimmu.2017.00147", "10.3389/fimmu.2017.00459", "10.3389/fimmu.2017.00608", "10.3389/fimmu.2017.00731", "10.3389/fimmu.2017.00936", "10.3389/fimmu.2017.01097", "10.3389/fimmu.2017.01225", "10.3389/fimmu.2017.01329", "10.3389/fimmu.2017.01499", "10.3389/fimmu.2017.01520", "10.3389/fimmu.2017.01526", "10.3389/fimmu.2017.01955", "10.3389/fimmu.2018.00022", "10.3389/fimmu.2018.00070", "10.3389/fimmu.2018.00281", "10.3389/fimmu.2018.00340", "10.3389/fimmu.2018.00527", "10.3389/fimmu.2018.00685", "10.3389/fimmu.2018.00698", "10.3389/fimmu.2018.00932", "10.3389/fimmu.2018.01037", "10.3389/fimmu.2018.01175", "10.3389/fimmu.2018.01304", "10.3389/fimmu.2018.01593", "10.3389/fimmu.2018.01793", "10.3389/fimmu.2018.01823", "10.3389/fimmu.2018.01829", "10.3389/fimmu.2018.01905", "10.3389/fimmu.2018.02111", "10.3389/fimmu.2018.02161", "10.3389/fimmu.2018.02169", "10.3389/fimmu.2018.02186", "10.3389/fimmu.2018.02389", "10.3389/fimmu.2018.02424", "10.3389/fimmu.2018.02515", "10.3389/fimmu.2018.02531", "10.3389/fimmu.2018.02667", "10.3389/fimmu.2018.02692", "10.3389/fimmu.2018.02793", "10.3389/fimmu.2018.02807", "10.3389/fimmu.2018.02837", "10.3389/fimmu.2018.02905", "10.3389/fimmu.2018.03072", "10.3389/fimmu.2018.03114", "10.3389/fimmu.2019.00136", "10.3389/fimmu.2019.00147", "10.3389/fimmu.2019.00168", "10.3389/fimmu.2019.00228", "10.3389/fimmu.2019.00249", "10.3389/fimmu.2019.00326", "10.3389/fimmu.2019.00348", "10.3389/fimmu.2019.00471", "10.3389/fimmu.2019.00553", "10.3389/fimmu.2019.00663", "10.3389/fimmu.2019.00761", "10.3389/fimmu.2019.00807", "10.3389/fimmu.2019.01047", "10.3389/fimmu.2019.01084", "10.3389/fimmu.2019.01134", "10.3389/fimmu.2019.01159", "10.3389/fimmu.2019.01187", "10.3389/fimmu.2019.01349", "10.3389/fimmu.2019.01402", "10.3389/fimmu.2019.01633", "10.3389/fimmu.2019.01839", "10.3389/fimmu.2019.01891", "10.3389/fimmu.2019.01952", "10.3389/fimmu.2019.01967", "10.3389/fimmu.2019.02398", "10.3389/fimmu.2019.02453", "10.3389/fimmu.2019.02486", "10.3389/fimmu.2019.02638", "10.3389/fimmu.2019.02951", "10.3389/fimmu.2019.02990", "10.3389/fimmu.2019.03033", "10.3389/fimmu.2020.00102", "10.3389/fimmu.2020.00206", "10.3389/fimmu.2020.00230", "10.3389/fimmu.2020.00248", "10.3389/fimmu.2020.00275", "10.3389/fimmu.2020.00508", "10.3389/fimmu.2020.00512", "10.3389/fimmu.2020.00670", "10.3389/fimmu.2020.00784", "10.3389/fimmu.2020.00787", "10.3389/fimmu.2020.01042", "10.3389/fimmu.2020.01184", "10.3389/fimmu.2020.01416", "10.3389/fimmu.2020.01501", "10.3389/fimmu.2020.01514", "10.3389/fimmu.2020.01706", "10.3389/fimmu.2020.01790", "10.3389/fimmu.2020.01861", "10.3389/fimmu.2020.01946", "10.3389/fimmu.2020.02123", "10.3389/fimmu.2020.02139", "10.3389/fimmu.2020.02143", "10.3389/fimmu.2020.559166", "10.3389/fimmu.2020.559342", "10.3389/fimmu.2020.566892", "10.3389/fimmu.2020.567342", "10.3389/fimmu.2020.567472", "10.3389/fimmu.2020.570672", "10.3389/fimmu.2020.574276", "10.3389/fimmu.2020.588021", "10.3389/fimmu.2020.595207", "10.3389/fimmu.2020.597959", "10.3389/fimmu.2020.603050", "10.3389/fimmu.2020.604944", "10.3389/fimmu.2020.608976", "10.3389/fimmu.2020.609063", "10.3389/fimmu.2020.618387", "10.3389/fimmu.2020.618897", "10.3389/fimmu.2020.619236", "10.3389/fimmu.2020.622810", "10.3389/fimmu.2020.628432", "10.3389/fimmu.2021.575519", "10.3389/fimmu.2021.603133", "10.3389/fimmu.2021.613530", "10.3389/fimmu.2021.616309", "10.3389/fimmu.2021.624197", "10.3389/fimmu.2021.630318", "10.3389/fimmu.2021.632814", "10.3389/fimmu.2021.640937", "10.3389/fimmu.2021.642711", "10.3389/fimmu.2021.643240", "10.3389/fimmu.2021.648348", "10.3389/fimmu.2021.653883", "10.3389/fimmu.2021.655934", "10.3389/fimmu.2021.657768", "10.3389/fimmu.2021.658315", "10.3389/fimmu.2021.665718", "10.3389/fimmu.2021.668494", "10.3389/fimmu.2021.670338", "10.3389/fimmu.2021.673405", "10.3389/fimmu.2021.674021", "10.3389/fimmu.2021.691806", "10.3389/fimmu.2021.705308", "10.3389/fimmu.2021.706027", "10.3389/fimmu.2021.706951", "10.3389/fimmu.2021.708186", "10.3389/fimmu.2021.710375", "10.3389/fimmu.2021.716676", "10.3389/fimmu.2021.727046", "10.3389/fimmu.2021.734471", "10.3389/fimmu.2021.744300", "10.3389/fimmu.2021.756722", "10.3389/fimmu.2021.758588", "10.3389/fimmu.2021.763364", "10.3389/fimmu.2021.764384", "10.3389/fimmu.2021.772864", "10.3389/fimmu.2021.780442", "10.3389/fimmu.2021.783725", "10.3389/fimmu.2021.787307", "10.3389/fimmu.2021.797450", "10.3389/fimmu.2021.799861", "10.3389/fimmu.2021.803037", "10.3389/fimmu.2021.811473", "10.3389/fimmu.2021.823637", "10.3389/fimmu.2021.827611", "10.3389/fimmu.2022.1006897", "10.3389/fimmu.2022.1010399", "10.3389/fimmu.2022.1012884", "10.3389/fimmu.2022.1026954", "10.3389/fimmu.2022.1028410", "10.3389/fimmu.2022.1035532", "10.3389/fimmu.2022.1044398", "10.3389/fimmu.2022.784528", "10.3389/fimmu.2022.795089", "10.3389/fimmu.2022.811378", "10.3389/fimmu.2022.820336", "10.3389/fimmu.2022.824188", "10.3389/fimmu.2022.824686", "10.3389/fimmu.2022.825428", "10.3389/fimmu.2022.834098", "10.3389/fimmu.2022.834862", "10.3389/fimmu.2022.835625", "10.3389/fimmu.2022.838448", "10.3389/fimmu.2022.840029", "10.3389/fimmu.2022.840388", "10.3389/fimmu.2022.843515", "10.3389/fimmu.2022.851004", "10.3389/fimmu.2022.852147", "10.3389/fimmu.2022.863831", "10.3389/fimmu.2022.864898", "10.3389/fimmu.2022.865401", "10.3389/fimmu.2022.869570", "10.3389/fimmu.2022.890166", "10.3389/fimmu.2022.892234", "10.3389/fimmu.2022.900532", "10.3389/fimmu.2022.901772", "10.3389/fimmu.2022.903513", "10.3389/fimmu.2022.913275", "10.3389/fimmu.2022.914236", "10.3389/fimmu.2022.919231", "10.3389/fimmu.2022.922377", "10.3389/fimmu.2022.928438", "10.3389/fimmu.2022.929000", "10.3389/fimmu.2022.929895", "10.3389/fimmu.2022.930986", "10.3389/fimmu.2022.946318", "10.3389/fimmu.2022.946832", "10.3389/fimmu.2022.950536", "10.3389/fimmu.2022.958584", "10.3389/fimmu.2022.958620", "10.3389/fimmu.2022.959114", "10.3389/fimmu.2022.964898", "10.3389/fimmu.2022.965446", "10.3389/fimmu.2022.967055", "10.3389/fimmu.2022.974996", "10.3389/fimmu.2022.990463", "10.3389/fimmu.2022.993444", "10.3389/fimmu.2022.996746", "10.3389/fimmu.2023.1086006", "10.3389/fimmu.2023.1090311", "10.3389/fimmu.2023.1110593", "10.3389/fimmu.2023.1111521", "10.3389/fimmu.2023.1111729", "10.3389/fimmu.2023.1113735", "10.3389/fimmu.2023.1121285", "10.3389/fimmu.2023.1123853", "10.3389/fimmu.2023.1146791", "10.3389/fimmu.2023.1152003", "10.3389/fimmu.2023.1168191", "10.3389/fimmu.2023.1168635", "10.3389/fimmu.2023.1169560", "10.3389/fimmu.2023.1172849", "10.3389/fimmu.2023.1178662", "10.3389/fimmu.2023.1178817", "10.3389/fimmu.2023.1179877", "10.3389/fimmu.2023.1180402", "10.3389/fimmu.2023.1182016", "10.3389/fimmu.2023.1182556", "10.3389/fimmu.2023.1192395", "10.3389/fimmu.2023.1203687", "10.3389/fimmu.2023.1210164", "10.3389/fimmu.2023.1217492", "10.3389/fimmu.2023.1218082", "10.3389/fimmu.2023.1219546", "10.3389/fimmu.2023.1222267", "10.3389/fimmu.2023.1233800", "10.3389/fimmu.2023.1261257", "10.3389/fimmu.2023.1264508", "10.3389/fimmu.2023.1268745", "10.3389/fimmu.2023.1288794", "10.3389/fimmu.2023.1332814", "10.3389/fimmu.2024.1302233", "10.3389/fimmu.2024.1305087", "10.3389/fimmu.2024.1309509", "10.3389/fimmu.2024.1325330", "10.3389/fimmu.2024.1340726", "10.3389/fimmu.2024.1352819", "10.3389/fimmu.2024.1366377", "10.3389/fimmu.2024.1369376", "10.3389/fimmu.2024.1380694", "10.3389/fimmu.2024.1385654", "10.3389/fimmu.2024.1401626", "10.3389/fimmu.2024.1434118", "10.3389/fitd.2023.1110125", "10.3389/fmars.2020.00491", "10.3389/fmats.2018.00015", "10.3389/fmed.2017.00116", "10.3389/fmed.2021.709793", "10.3389/fmed.2021.808940", "10.3389/fmed.2022.793615", "10.3389/fmed.2022.849217", "10.3389/fmed.2022.924087", "10.3389/fmed.2022.963956", "10.3389/fmed.2023.1209425", "10.3389/fmedt.2020.600616", "10.3389/fmicb.2012.00148", "10.3389/fmicb.2013.00125", "10.3389/fmicb.2013.00221", "10.3389/fmicb.2014.00258", "10.3389/fmicb.2014.00329", "10.3389/fmicb.2015.00705", "10.3389/fmicb.2015.01355", "10.3389/fmicb.2016.00035", "10.3389/fmicb.2016.00049", "10.3389/fmicb.2016.00849", "10.3389/fmicb.2016.01126", "10.3389/fmicb.2016.01275", "10.3389/fmicb.2016.01375", "10.3389/fmicb.2016.01761", "10.3389/fmicb.2016.01814", "10.3389/fmicb.2016.01843", "10.3389/fmicb.2016.02147", "10.3389/fmicb.2017.00265", "10.3389/fmicb.2017.00278", "10.3389/fmicb.2017.00981", "10.3389/fmicb.2017.01547", "10.3389/fmicb.2017.01692", "10.3389/fmicb.2017.02284", "10.3389/fmicb.2017.02570", "10.3389/fmicb.2018.01324", "10.3389/fmicb.2018.02116", "10.3389/fmicb.2019.00190", "10.3389/fmicb.2019.00442", "10.3389/fmicb.2019.00928", "10.3389/fmicb.2019.00954", "10.3389/fmicb.2019.01302", "10.3389/fmicb.2019.01905", "10.3389/fmicb.2019.01954", "10.3389/fmicb.2019.02211", "10.3389/fmicb.2019.02261", "10.3389/fmicb.2019.02892", "10.3389/fmicb.2019.03045", "10.3389/fmicb.2019.03127", "10.3389/fmicb.2020.00947", "10.3389/fmicb.2020.01178", "10.3389/fmicb.2020.560099", "10.3389/fmicb.2020.565548", "10.3389/fmicb.2020.576844", "10.3389/fmicb.2020.586433", "10.3389/fmicb.2020.588410", "10.3389/fmicb.2020.590522", "10.3389/fmicb.2020.595629", "10.3389/fmicb.2020.616213", "10.3389/fmicb.2020.631444", "10.3389/fmicb.2021.606366", "10.3389/fmicb.2021.613529", "10.3389/fmicb.2021.616050", "10.3389/fmicb.2021.644089", "10.3389/fmicb.2021.652962", "10.3389/fmicb.2021.666739", "10.3389/fmicb.2021.668890", "10.3389/fmicb.2021.670975", "10.3389/fmicb.2021.686049", "10.3389/fmicb.2021.686977", "10.3389/fmicb.2021.698365", "10.3389/fmicb.2021.701611", "10.3389/fmicb.2021.724982", "10.3389/fmicb.2021.725755", "10.3389/fmicb.2021.728216", "10.3389/fmicb.2021.739000", "10.3389/fmicb.2021.757179", "10.3389/fmicb.2022.1028086", "10.3389/fmicb.2022.1040105", "10.3389/fmicb.2022.799602", "10.3389/fmicb.2022.835620", "10.3389/fmicb.2022.865045", "10.3389/fmicb.2022.887420", "10.3389/fmicb.2022.887799", "10.3389/fmicb.2022.908296", "10.3389/fmicb.2023.1177951", "10.3389/fmicb.2024.1359188", "10.3389/fmicb.2024.1360397", "10.3389/fmicb.2024.1372069", "10.3389/fmmed.2023.1198021", "10.3389/fmolb.2019.00011", "10.3389/fmolb.2019.00033", "10.3389/fmolb.2019.00040", "10.3389/fmolb.2019.00043", "10.3389/fmolb.2019.00058", "10.3389/fmolb.2020.00033", "10.3389/fmolb.2020.00122", "10.3389/fmolb.2020.00145", "10.3389/fmolb.2021.631854", "10.3389/fmolb.2021.647915", "10.3389/fmolb.2021.658020", "10.3389/fmolb.2021.669431", "10.3389/fmolb.2021.673170", "10.3389/fmolb.2021.696438", "10.3389/fmolb.2021.707439", "10.3389/fmolb.2021.724947", "10.3389/fmolb.2021.733148", "10.3389/fmolb.2021.791642", "10.3389/fmolb.2022.884281", "10.3389/fmolb.2022.912727", "10.3389/fmolb.2022.965730", "10.3389/fmolb.2022.991380", "10.3389/fmolb.2023.1210576", "10.3389/fmolb.2023.1288686", "10.3389/fnagi.2014.00075", "10.3389/fnagi.2017.00227", "10.3389/fnagi.2017.00446", "10.3389/fnagi.2019.00230", "10.3389/fnagi.2020.00097", "10.3389/fnagi.2020.613628", "10.3389/fnagi.2021.691881", "10.3389/fnagi.2022.818606", "10.3389/fnana.2010.00013", "10.3389/fnana.2010.00142", "10.3389/fnana.2013.00018", "10.3389/fnana.2013.00029", "10.3389/fnana.2014.00014", "10.3389/fnana.2014.00020", "10.3389/fnana.2014.00078", "10.3389/fnana.2014.00129", "10.3389/fnana.2015.00009", "10.3389/fnana.2015.00053", "10.3389/fnana.2015.00063", "10.3389/fnana.2015.00074", "10.3389/fnana.2015.00085", "10.3389/fnana.2015.00109", "10.3389/fnana.2016.00049", "10.3389/fnana.2016.00125", "10.3389/fnana.2017.00054", "10.3389/fnana.2017.00071", "10.3389/fnana.2017.00091", "10.3389/fnana.2017.00100", "10.3389/fnana.2017.00134", "10.3389/fnana.2018.00001", "10.3389/fnana.2018.00006", "10.3389/fnana.2018.00100", "10.3389/fnana.2019.00025", "10.3389/fnana.2021.656882", "10.3389/fnana.2021.727883", "10.3389/fnbeh.2014.00128", "10.3389/fnbeh.2015.00302", "10.3389/fnbeh.2018.00244", "10.3389/fnbeh.2019.00036", "10.3389/fnbeh.2019.00272", "10.3389/fnbeh.2020.00156", "10.3389/fnbeh.2022.989011", "10.3389/fnbeh.2024.1387447", "10.3389/fncel.2012.00011", "10.3389/fncel.2013.00010", "10.3389/fncel.2013.00040", "10.3389/fncel.2013.00174", "10.3389/fncel.2014.00301", "10.3389/fncel.2014.00450", "10.3389/fncel.2015.00066", "10.3389/fncel.2015.00082", "10.3389/fncel.2015.00131", "10.3389/fncel.2015.00161", "10.3389/fncel.2015.00294", "10.3389/fncel.2016.00018", "10.3389/fncel.2016.00308", "10.3389/fncel.2017.00036", "10.3389/fncel.2017.00106", "10.3389/fncel.2017.00184", "10.3389/fncel.2017.00332", "10.3389/fncel.2018.00025", "10.3389/fncel.2018.00069", "10.3389/fncel.2018.00204", "10.3389/fncel.2018.00224", "10.3389/fncel.2018.00473", "10.3389/fncel.2018.00513", "10.3389/fncel.2019.00063", "10.3389/fncel.2019.00124", "10.3389/fncel.2019.00258", "10.3389/fncel.2019.00447", "10.3389/fncel.2019.00454", "10.3389/fncel.2020.00035", "10.3389/fncel.2020.00174", "10.3389/fncel.2020.00184", "10.3389/fncel.2020.00228", "10.3389/fncel.2020.00274", "10.3389/fncel.2020.576444", "10.3389/fncel.2020.581907", "10.3389/fncel.2020.592607", "10.3389/fncel.2020.604171", "10.3389/fncel.2020.607399", "10.3389/fncel.2021.636176", "10.3389/fncel.2021.647109", "10.3389/fncel.2021.659843", "10.3389/fncel.2021.720807", "10.3389/fncel.2021.800313", "10.3389/fncel.2022.1022431", "10.3389/fncel.2022.1073731", "10.3389/fncel.2022.1094291", "10.3389/fncel.2022.920388", "10.3389/fncel.2023.1256619", "10.3389/fncir.2012.00038", "10.3389/fncir.2013.00093", "10.3389/fncir.2015.00005", "10.3389/fncir.2016.00075", "10.3389/fncir.2018.00006", "10.3389/fncir.2019.00071", "10.3389/fncir.2020.561822", "10.3389/fncir.2020.611841", "10.3389/fncir.2022.825735", "10.3389/fncir.2024.1280604", "10.3389/fneur.2015.00081", "10.3389/fneur.2020.00148", "10.3389/fneur.2021.685822", "10.3389/fneur.2022.852003", "10.3389/fneur.2023.1117695", "10.3389/fneur.2023.1158487", "10.3389/fneur.2023.1162394", "10.3389/fnhum.2013.00671", "10.3389/fnhum.2014.01027", "10.3389/fninf.2021.580873", "10.3389/fnins.2010.00059", "10.3389/fnins.2011.00035", "10.3389/fnins.2012.00099", "10.3389/fnins.2012.00144", "10.3389/fnins.2012.00173", "10.3389/fnins.2013.00057", "10.3389/fnins.2013.00063", "10.3389/fnins.2013.00120", "10.3389/fnins.2014.00083", "10.3389/fnins.2015.00494", "10.3389/fnins.2016.00077", "10.3389/fnins.2017.00143", "10.3389/fnins.2017.00431", "10.3389/fnins.2017.00488", "10.3389/fnins.2017.00571", "10.3389/fnins.2019.00457", "10.3389/fnins.2019.00637", "10.3389/fnins.2019.00912", "10.3389/fnins.2020.00839", "10.3389/fnins.2020.602796", "10.3389/fnins.2021.787425", "10.3389/fnins.2021.803107", "10.3389/fnins.2022.866245", "10.3389/fnins.2022.918616", "10.3389/fnins.2022.966772", "10.3389/fnins.2023.1188065", "10.3389/fnins.2023.1220114", "10.3389/fnins.2024.1416460", "10.3389/fnmol.2015.00025", "10.3389/fnmol.2016.00163", "10.3389/fnmol.2017.00050", "10.3389/fnmol.2017.00187", "10.3389/fnmol.2017.00199", "10.3389/fnmol.2017.00236", "10.3389/fnmol.2018.00013", "10.3389/fnmol.2018.00406", "10.3389/fnmol.2018.00442", "10.3389/fnmol.2018.00474", "10.3389/fnmol.2018.00495", "10.3389/fnmol.2019.00086", "10.3389/fnmol.2020.00149", "10.3389/fnmol.2020.570586", "10.3389/fnmol.2021.576038", "10.3389/fnmol.2021.613161", "10.3389/fnmol.2021.623148", "10.3389/fnmol.2022.818696", "10.3389/fnmol.2022.831151", "10.3389/fnmol.2022.948160", "10.3389/fnmol.2022.976910", "10.3389/fnmol.2023.1206245", "10.3389/fnmol.2023.1236015", "10.3389/fnsyn.2017.00010", "10.3389/fnsyn.2017.00011", "10.3389/fnsyn.2022.1006773", "10.3389/fnsys.2010.00010", "10.3389/fnsys.2010.00149", "10.3389/fnsys.2013.00083", "10.3389/fnsys.2015.00051", "10.3389/fnsys.2019.00040", "10.3389/fnsys.2021.674098", "10.3389/fnut.2019.00016", "10.3389/fnut.2021.682243", "10.3389/fnut.2022.1082500", "10.3389/fnut.2022.929943", "10.3389/fnut.2024.1328450", "10.3389/fonc.2014.00028", "10.3389/fonc.2014.00378", "10.3389/fonc.2015.00214", "10.3389/fonc.2016.00127", "10.3389/fonc.2016.00138", "10.3389/fonc.2017.00068", "10.3389/fonc.2017.00135", "10.3389/fonc.2017.00253", "10.3389/fonc.2017.00278", "10.3389/fonc.2018.00086", "10.3389/fonc.2018.00211", "10.3389/fonc.2018.00249", "10.3389/fonc.2018.00503", "10.3389/fonc.2018.00539", "10.3389/fonc.2018.00570", "10.3389/fonc.2019.00060", "10.3389/fonc.2019.00779", "10.3389/fonc.2019.00858", "10.3389/fonc.2019.01376", "10.3389/fonc.2020.00796", "10.3389/fonc.2020.00941", "10.3389/fonc.2020.591577", "10.3389/fonc.2021.590414", "10.3389/fonc.2021.638360", "10.3389/fonc.2021.638897", "10.3389/fonc.2021.662010", "10.3389/fonc.2021.732058", "10.3389/fonc.2021.754770", "10.3389/fonc.2021.770561", "10.3389/fonc.2021.805628", "10.3389/fonc.2021.819505", "10.3389/fonc.2022.1087989", "10.3389/fonc.2022.775649", "10.3389/fonc.2022.790537", "10.3389/fonc.2022.857068", "10.3389/fonc.2022.869078", "10.3389/fonc.2022.878377", "10.3389/fonc.2022.912639", "10.3389/fonc.2022.931774", "10.3389/fonc.2022.932285", "10.3389/fonc.2022.955166", "10.3389/fonc.2022.956225", "10.3389/fonc.2022.983507", "10.3389/fonc.2022.988872", "10.3389/fonc.2023.1073793", "10.3389/fonc.2023.1081253", "10.3389/fonc.2023.1123101", "10.3389/fonc.2023.1148936", "10.3389/fonc.2023.1169397", "10.3389/fonc.2023.1185163", "10.3389/fonc.2023.1224913", "10.3389/fonc.2023.1228426", "10.3389/fonc.2023.1236268", "10.3389/fonc.2023.1284089", "10.3389/fonc.2024.1394702", "10.3389/fonc.2024.1402128", "10.3389/fopht.2023.1270561", "10.3389/fopht.2023.1310226", "10.3389/fped.2018.00082", "10.3389/fped.2021.638871", "10.3389/fped.2021.643094", "10.3389/fped.2021.736023", "10.3389/fphar.2015.00263", "10.3389/fphar.2016.00121", "10.3389/fphar.2017.00448", "10.3389/fphar.2018.00106", "10.3389/fphar.2018.01337", "10.3389/fphar.2019.01051", "10.3389/fphar.2019.01387", "10.3389/fphar.2019.01546", "10.3389/fphar.2020.557429", "10.3389/fphar.2020.559627", "10.3389/fphar.2020.587664", "10.3389/fphar.2020.601325", "10.3389/fphar.2020.627838", "10.3389/fphar.2021.661304", "10.3389/fphar.2021.780790", "10.3389/fphar.2022.837088", "10.3389/fphar.2022.853568", "10.3389/fphar.2022.864509", "10.3389/fphar.2022.908867", "10.3389/fphar.2022.958012", "10.3389/fphar.2023.1197257", "10.3389/fphar.2023.1244166", "10.3389/fphar.2023.1270425", "10.3389/fphys.2013.00386", "10.3389/fphys.2013.00406", "10.3389/fphys.2016.00167", "10.3389/fphys.2016.00410", "10.3389/fphys.2018.00624", "10.3389/fphys.2019.00148", "10.3389/fphys.2019.00224", "10.3389/fphys.2019.00262", "10.3389/fphys.2019.00872", "10.3389/fphys.2019.01561", "10.3389/fphys.2020.00347", "10.3389/fphys.2020.00538", "10.3389/fphys.2020.00563", "10.3389/fphys.2020.00689", "10.3389/fphys.2020.582258", "10.3389/fphys.2021.802057", "10.3389/fphys.2022.1023237", "10.3389/fphys.2022.1029218", "10.3389/fphys.2023.1114231", "10.3389/fpls.2014.00155", "10.3389/fpls.2014.00339", "10.3389/fpls.2015.01259", "10.3389/fpls.2016.00601", "10.3389/fpls.2016.01448", "10.3389/fpls.2016.01552", "10.3389/fpls.2016.01948", "10.3389/fpls.2016.01974", "10.3389/fpls.2017.00193", "10.3389/fpls.2017.00307", "10.3389/fpls.2018.00097", "10.3389/fpls.2018.00990", "10.3389/fpls.2018.01738", "10.3389/fpls.2019.00438", "10.3389/fpls.2019.00525", "10.3389/fpls.2019.00612", "10.3389/fpls.2019.01815", "10.3389/fpls.2020.00143", "10.3389/fpls.2020.00437", "10.3389/fpls.2020.00747", "10.3389/fpls.2020.01274", "10.3389/fpls.2020.583767", "10.3389/fpls.2021.748543", "10.3389/fpls.2021.775366", "10.3389/fpls.2021.816156", "10.3389/fpls.2022.860997", "10.3389/fpls.2022.893896", "10.3389/fpls.2022.902413", "10.3389/fpls.2023.1122940", "10.3389/fpls.2023.1244020", "10.3389/fpubh.2019.00332", "10.3389/fpubh.2023.1275778", "10.3389/fradi.2024.1416672", "10.3389/frnar.2023.1152146", "10.3389/fsurg.2016.00021", "10.3389/fsurg.2021.775194", "10.3389/ftox.2024.1392257", "10.3389/fvets.2019.00314", "10.3389/fvets.2020.00498", "10.3389/fvets.2021.593871", "10.3389/fvets.2021.685877", "10.3389/fvets.2021.791237", "10.3389/fvets.2022.756686", "10.3389/neuro.02.007.2009", "10.3389/neuro.05.017.2009", "10.3389/neuro.07.020.2009", "10.3389/neuro.08.014.2009", "10.3390/agriculture13061182", "10.3390/agronomy12020484", "10.3390/ani11041112", "10.3390/ani13132171", "10.3390/antib10030025", "10.3390/antib13020041", "10.3390/antib5030019", "10.3390/antib6010005", "10.3390/antib8010019", "10.3390/antibiotics10010016", "10.3390/antibiotics10040435", "10.3390/antibiotics10050522", "10.3390/antibiotics10060672", "10.3390/antibiotics10080942", "10.3390/antibiotics11070915", "10.3390/antibiotics11101340", "10.3390/antibiotics12061074", "10.3390/antibiotics12091346", "10.3390/antibiotics13010079", "10.3390/antibiotics7020031", "10.3390/antibiotics8040229", "10.3390/antibiotics9010006", "10.3390/antibiotics9010032", "10.3390/antibiotics9030119", "10.3390/antibiotics9040205", "10.3390/antibiotics9060304", "10.3390/antibiotics9060328", "10.3390/antibiotics9070411", "10.3390/antibiotics9090553", "10.3390/antibiotics9120926", "10.3390/antiox10060848", "10.3390/antiox11051031", "10.3390/antiox11091696", "10.3390/antiox11101967", "10.3390/antiox12040960", "10.3390/antiox12040980", "10.3390/antiox9050416", "10.3390/app10072278", "10.3390/app10072339", "10.3390/applbiosci2030029", "10.3390/beverages2040030", "10.3390/beverages5030051", "10.3390/biochem4020007", "10.3390/bioengineering10030389", "10.3390/bioengineering10080930", "10.3390/biology10010065", "10.3390/biology10040259", "10.3390/biology10060465", "10.3390/biology10060557", "10.3390/biology10090871", "10.3390/biology10111178", "10.3390/biology11030413", "10.3390/biology11040488", "10.3390/biology11081106", "10.3390/biology12020322", "10.3390/biology12060832", "10.3390/biology12071033", "10.3390/biology13030182", "10.3390/biology9120485", "10.3390/biom10030389", "10.3390/biom10030420", "10.3390/biom10040531", "10.3390/biom10040629", "10.3390/biom10050686", "10.3390/biom10050720", "10.3390/biom10050732", "10.3390/biom10060812", "10.3390/biom10060841", "10.3390/biom10060964", "10.3390/biom10070989", "10.3390/biom10121596", "10.3390/biom10121642", "10.3390/biom11010076", "10.3390/biom11020148", "10.3390/biom11020228", "10.3390/biom11060779", "10.3390/biom11081244", "10.3390/biom11091362", "10.3390/biom11111720", "10.3390/biom12010072", "10.3390/biom12020195", "10.3390/biom12020231", "10.3390/biom12030418", "10.3390/biom12060777", "10.3390/biom12070888", "10.3390/biom12111659", "10.3390/biom13040602", "10.3390/biom13050834", "10.3390/biom13091326", "10.3390/biom13111587", "10.3390/biom13111629", "10.3390/biom14050520", "10.3390/biom4020585", "10.3390/biom5032073", "10.3390/biom9040150", "10.3390/biom9050190", "10.3390/biom9080305", "10.3390/biom9100604", "10.3390/biom9120852", "10.3390/biomedicines10010126", "10.3390/biomedicines10020348", "10.3390/biomedicines10092088", "10.3390/biomedicines10092118", "10.3390/biomedicines10102450", "10.3390/biomedicines10102593", "10.3390/biomedicines10112745", "10.3390/biomedicines10112822", "10.3390/biomedicines10123186", "10.3390/biomedicines11030969", "10.3390/biomedicines11041135", "10.3390/biomedicines11051431", "10.3390/biomedicines11061732", "10.3390/biomedicines11082168", "10.3390/biomedicines11112890", "10.3390/biomedicines12010014", "10.3390/biomedicines6020038", "10.3390/biomedicines6020059", "10.3390/biomedicines8060170", "10.3390/biomedicines9050550", "10.3390/biomedicines9080889", "10.3390/bios12111010", "10.3390/bios13070752", "10.3390/brainsci12060718", "10.3390/brainsci13020307", "10.3390/brainsci13040542", "10.3390/cancers10060207", "10.3390/cancers10080242", "10.3390/cancers10100372", "10.3390/cancers11020183", "10.3390/cancers11020189", "10.3390/cancers11040527", "10.3390/cancers11050654", "10.3390/cancers11070937", "10.3390/cancers11071028", "10.3390/cancers11091238", "10.3390/cancers11091343", "10.3390/cancers11101418", "10.3390/cancers11101569", "10.3390/cancers11121832", "10.3390/cancers12010184", "10.3390/cancers12020274", "10.3390/cancers12040818", "10.3390/cancers12040822", "10.3390/cancers12040907", "10.3390/cancers12061411", "10.3390/cancers12071745", "10.3390/cancers12082042", "10.3390/cancers12082057", "10.3390/cancers12082134", "10.3390/cancers12092687", "10.3390/cancers12092701", "10.3390/cancers12102754", "10.3390/cancers12102773", "10.3390/cancers12102823", "10.3390/cancers12102829", "10.3390/cancers12113264", "10.3390/cancers12123585", "10.3390/cancers12123586", "10.3390/cancers12123847", "10.3390/cancers13010004", "10.3390/cancers13020168", "10.3390/cancers13020210", "10.3390/cancers13030484", "10.3390/cancers13040675", "10.3390/cancers13050986", "10.3390/cancers13071724", "10.3390/cancers13092014", "10.3390/cancers13112513", "10.3390/cancers13112834", "10.3390/cancers13112836", "10.3390/cancers13143446", "10.3390/cancers13143532", "10.3390/cancers13153762", "10.3390/cancers13164013", "10.3390/cancers13174255", "10.3390/cancers13184587", "10.3390/cancers13194985", "10.3390/cancers13205147", "10.3390/cancers13205203", "10.3390/cancers13215547", "10.3390/cancers13235912", "10.3390/cancers13246165", "10.3390/cancers13246251", "10.3390/cancers14010171", "10.3390/cancers14010204", "10.3390/cancers14020281", "10.3390/cancers14040911", "10.3390/cancers14051165", "10.3390/cancers14051319", "10.3390/cancers14051321", "10.3390/cancers14051324", "10.3390/cancers14061390", "10.3390/cancers14061489", "10.3390/cancers14061558", "10.3390/cancers14061571", "10.3390/cancers14071628", "10.3390/cancers14071723", "10.3390/cancers14081979", "10.3390/cancers14092126", "10.3390/cancers14153820", "10.3390/cancers14174160", "10.3390/cancers14174169", "10.3390/cancers14174180", "10.3390/cancers14174248", "10.3390/cancers14194849", "10.3390/cancers14194941", "10.3390/cancers14205029", "10.3390/cancers14215404", "10.3390/cancers14225544", "10.3390/cancers14235776", "10.3390/cancers14235840", "10.3390/cancers15041253", "10.3390/cancers15041300", "10.3390/cancers15061642", "10.3390/cancers15072024", "10.3390/cancers15133285", "10.3390/cancers15153898", "10.3390/cancers15153967", "10.3390/cancers15174338", "10.3390/cancers15174357", "10.3390/cancers15194736", "10.3390/cancers15205015", "10.3390/cancers15245870", "10.3390/cancers16020298", "10.3390/cancers16030647", "10.3390/cancers16061131", "10.3390/cancers16071334", "10.3390/cancers16081483", "10.3390/cancers16122249", "10.3390/cancers9050052", "10.3390/cancers9070074", "10.3390/cells10010099", "10.3390/cells10010164", "10.3390/cells10020290", "10.3390/cells10040821", "10.3390/cells10040923", "10.3390/cells10050967", "10.3390/cells10051039", "10.3390/cells10051042", "10.3390/cells10051218", "10.3390/cells10051260", "10.3390/cells10061299", "10.3390/cells10061453", "10.3390/cells10061540", "10.3390/cells10071595", "10.3390/cells10071600", "10.3390/cells10071615", "10.3390/cells10071628", "10.3390/cells10071741", "10.3390/cells10082049", "10.3390/cells10082136", "10.3390/cells10082143", "10.3390/cells10082154", "10.3390/cells10092234", "10.3390/cells10092486", "10.3390/cells10102504", "10.3390/cells10102509", "10.3390/cells10102617", "10.3390/cells10102712", "10.3390/cells10102750", "10.3390/cells10113000", "10.3390/cells10113036", "10.3390/cells10113082", "10.3390/cells10113239", "10.3390/cells10123327", "10.3390/cells1040799", "10.3390/cells11040596", "10.3390/cells11050801", "10.3390/cells11050902", "10.3390/cells11071111", "10.3390/cells11071149", "10.3390/cells11081261", "10.3390/cells11101608", "10.3390/cells11101634", "10.3390/cells11121910", "10.3390/cells11152343", "10.3390/cells11152345", "10.3390/cells11152455", "10.3390/cells11162498", "10.3390/cells11172674", "10.3390/cells11182918", "10.3390/cells11203223", "10.3390/cells11203231", "10.3390/cells11203235", "10.3390/cells11233712", "10.3390/cells12010029", "10.3390/cells12030440", "10.3390/cells12040536", "10.3390/cells12040602", "10.3390/cells12040623", "10.3390/cells12040631", "10.3390/cells12050788", "10.3390/cells12060904", "10.3390/cells12060955", "10.3390/cells12081127", "10.3390/cells12081181", "10.3390/cells12091302", "10.3390/cells12091316", "10.3390/cells12091340", "10.3390/cells12111482", "10.3390/cells12111541", "10.3390/cells12162068", "10.3390/cells12162105", "10.3390/cells13010035", "10.3390/cells13030258", "10.3390/cells13040334", "10.3390/cells13040346", "10.3390/cells13060471", "10.3390/cells13060507", "10.3390/cells13100858", "10.3390/cells3010152", "10.3390/cells7070075", "10.3390/cells7100176", "10.3390/cells7110189", "10.3390/cells8010055", "10.3390/cells8040307", "10.3390/cells8070699", "10.3390/cells8080927", "10.3390/cells8091083", "10.3390/cells8091090", "10.3390/cells8101184", "10.3390/cells8101294", "10.3390/cells8111313", "10.3390/cells8121604", "10.3390/cells9010052", "10.3390/cells9010221", "10.3390/cells9010228", "10.3390/cells9020266", "10.3390/cells9030681", "10.3390/cells9030727", "10.3390/cells9030785", "10.3390/cells9040919", "10.3390/cells9051297", "10.3390/cells9061400", "10.3390/cells9061441", "10.3390/cells9071657", "10.3390/cells9071716", "10.3390/cells9091986", "10.3390/cells9092042", "10.3390/cells9092074", "10.3390/cells9102181", "10.3390/cells9102183", "10.3390/cells9102274", "10.3390/cells9102308", "10.3390/cells9112374", "10.3390/cells9112379", "10.3390/cells9112457", "10.3390/cells9122634", "10.3390/cells9122691", "10.3390/children9081123", "10.3390/cimb46040186", "10.3390/cimb46050243", "10.3390/clinpract11030077", "10.3390/cryst10020054", "10.3390/cryst12101460", "10.3390/cryst8030112", "10.3390/curroncol31040150", "10.3390/d5030426", "10.3390/diagnostics10120999", "10.3390/diagnostics12071701", "10.3390/diagnostics13142398", "10.3390/diagnostics14090906", "10.3390/diseases11020086", "10.3390/e16010233", "10.3390/e23040437", "10.3390/e24101323", "10.3390/epigenomes1030022", "10.3390/epigenomes5010002", "10.3390/f11080851", "10.3390/f13091344", "10.3390/fermentation10020079", "10.3390/fermentation9040379", "10.3390/foods12142676", "10.3390/fractalfract7080595", "10.3390/futurepharmacol3040047", "10.3390/genes10020102", "10.3390/genes10040258", "10.3390/genes10050369", "10.3390/genes10080618", "10.3390/genes10080630", "10.3390/genes10090654", "10.3390/genes10100834", "10.3390/genes11050511", "10.3390/genes11080852", "10.3390/genes11111384", "10.3390/genes11121424", "10.3390/genes12050662", "10.3390/genes12060800", "10.3390/genes12060814", "10.3390/genes12060943", "10.3390/genes12101471", "10.3390/genes12101550", "10.3390/genes12111682", "10.3390/genes12111746", "10.3390/genes12111779", "10.3390/genes13010053", "10.3390/genes13050910", "10.3390/genes13061045", "10.3390/genes13091576", "10.3390/genes13122348", "10.3390/genes14020407", "10.3390/genes14061267", "10.3390/genes14061300", "10.3390/genes14071386", "10.3390/genes14081566", "10.3390/genes14111988", "10.3390/genes15010018", "10.3390/genes15010089", "10.3390/genes15030337", "10.3390/genes6020216", "10.3390/genes6030734", "10.3390/genes8030088", "10.3390/genes8060151", "10.3390/genes9120589", "10.3390/healthcare9030277", "10.3390/ijerph18168361", "10.3390/ijerph182412949", "10.3390/ijerph191811825", "10.3390/ijerph192316037", "10.3390/ijerph20095663", "10.3390/ijerph8072980", "10.3390/ijms15057380", "10.3390/ijms15058473", "10.3390/ijms150814191", "10.3390/ijms16022574", "10.3390/ijms16047027", "10.3390/ijms160817193", "10.3390/ijms17030288", "10.3390/ijms17050754", "10.3390/ijms17071009", "10.3390/ijms17101712", "10.3390/ijms17122142", "10.3390/ijms18020441", "10.3390/ijms18030576", "10.3390/ijms18050974", "10.3390/ijms18071586", "10.3390/ijms18091852", "10.3390/ijms18091872", "10.3390/ijms18091886", "10.3390/ijms18091903", "10.3390/ijms18102139", "10.3390/ijms18102171", "10.3390/ijms18102222", "10.3390/ijms18122732", "10.3390/ijms19020379", "10.3390/ijms19020420", "10.3390/ijms19030718", "10.3390/ijms19030784", "10.3390/ijms19030859", "10.3390/ijms19051290", "10.3390/ijms19072136", "10.3390/ijms19092498", "10.3390/ijms19102959", "10.3390/ijms19113510", "10.3390/ijms19113643", "10.3390/ijms19123753", "10.3390/ijms20010190", "10.3390/ijms20030718", "10.3390/ijms20061281", "10.3390/ijms20071656", "10.3390/ijms20092093", "10.3390/ijms20112626", "10.3390/ijms20112672", "10.3390/ijms20112703", "10.3390/ijms20112718", "10.3390/ijms20112740", "10.3390/ijms20112847", "10.3390/ijms20143423", "10.3390/ijms20153763", "10.3390/ijms20153837", "10.3390/ijms20163914", "10.3390/ijms20163960", "10.3390/ijms20174187", "10.3390/ijms20184411", "10.3390/ijms20194927", "10.3390/ijms20204976", "10.3390/ijms20215260", "10.3390/ijms20225641", "10.3390/ijms20225669", "10.3390/ijms20225722", "10.3390/ijms20225744", "10.3390/ijms20235964", "10.3390/ijms20236023", "10.3390/ijms20246112", "10.3390/ijms20246347", "10.3390/ijms21010281", "10.3390/ijms21020482", "10.3390/ijms21020590", "10.3390/ijms21030777", "10.3390/ijms21041380", "10.3390/ijms21072459", "10.3390/ijms21072570", "10.3390/ijms21093200", "10.3390/ijms21093292", "10.3390/ijms21093354", "10.3390/ijms21103576", "10.3390/ijms21103634", "10.3390/ijms21113866", "10.3390/ijms21113988", "10.3390/ijms21114158", "10.3390/ijms21124229", "10.3390/ijms21124402", "10.3390/ijms21155207", "10.3390/ijms21155312", "10.3390/ijms21155436", "10.3390/ijms21155498", "10.3390/ijms21155553", "10.3390/ijms21165838", "10.3390/ijms21176240", "10.3390/ijms21186673", "10.3390/ijms21207436", "10.3390/ijms21207660", "10.3390/ijms21207688", "10.3390/ijms21207710", "10.3390/ijms21207802", "10.3390/ijms21228515", "10.3390/ijms21239002", "10.3390/ijms21239045", "10.3390/ijms21239125", "10.3390/ijms21239324", "10.3390/ijms21249580", "10.3390/ijms21249598", "10.3390/ijms21249604", "10.3390/ijms22010283", "10.3390/ijms22010426", "10.3390/ijms22010465", "10.3390/ijms22020496", "10.3390/ijms22031053", "10.3390/ijms22031091", "10.3390/ijms22031208", "10.3390/ijms22041539", "10.3390/ijms22041855", "10.3390/ijms22042212", "10.3390/ijms22052424", "10.3390/ijms22052626", "10.3390/ijms22052755", "10.3390/ijms22062936", "10.3390/ijms22062962", "10.3390/ijms22062984", "10.3390/ijms22063027", "10.3390/ijms22073545", "10.3390/ijms22073752", "10.3390/ijms22083924", "10.3390/ijms22084121", "10.3390/ijms22084254", "10.3390/ijms22094523", "10.3390/ijms22105084", "10.3390/ijms22105292", "10.3390/ijms22115553", "10.3390/ijms22115733", "10.3390/ijms22115774", "10.3390/ijms22116125", "10.3390/ijms22126508", "10.3390/ijms22136673", "10.3390/ijms22136958", "10.3390/ijms22136965", "10.3390/ijms22136995", "10.3390/ijms22137081", "10.3390/ijms22147419", "10.3390/ijms22147494", "10.3390/ijms22147521", "10.3390/ijms22169077", "10.3390/ijms22169081", "10.3390/ijms22179150", "10.3390/ijms22179208", "10.3390/ijms22179316", "10.3390/ijms22179470", "10.3390/ijms22189764", "10.3390/ijms221910592", "10.3390/ijms222010958", "10.3390/ijms222111321", "10.3390/ijms222111398", "10.3390/ijms222111516", "10.3390/ijms222111544", "10.3390/ijms222111597", "10.3390/ijms222111741", "10.3390/ijms222111753", "10.3390/ijms222112008", "10.3390/ijms222212097", "10.3390/ijms222313035", "10.3390/ijms222313128", "10.3390/ijms222413309", "10.3390/ijms222413356", "10.3390/ijms222413443", "10.3390/ijms222413485", "10.3390/ijms23031072", "10.3390/ijms23031108", "10.3390/ijms23031334", "10.3390/ijms23031517", "10.3390/ijms23031771", "10.3390/ijms23042053", "10.3390/ijms23042172", "10.3390/ijms23042179", "10.3390/ijms23052721", "10.3390/ijms23062928", "10.3390/ijms23073721", "10.3390/ijms23073773", "10.3390/ijms23094570", "10.3390/ijms23094883", "10.3390/ijms23105534", "10.3390/ijms23116056", "10.3390/ijms23136943", "10.3390/ijms23137315", "10.3390/ijms23147897", "10.3390/ijms23158067", "10.3390/ijms23158108", "10.3390/ijms23158758", "10.3390/ijms23168918", "10.3390/ijms23169236", "10.3390/ijms23169272", "10.3390/ijms23169346", "10.3390/ijms23169459", "10.3390/ijms231810202", "10.3390/ijms231810893", "10.3390/ijms231911064", "10.3390/ijms231911845", "10.3390/ijms232113050", "10.3390/ijms232113082", "10.3390/ijms232113596", "10.3390/ijms232213929", "10.3390/ijms232214394", "10.3390/ijms232314804", "10.3390/ijms232415612", "10.3390/ijms232416173", "10.3390/ijms24020997", "10.3390/ijms24021170", "10.3390/ijms24021204", "10.3390/ijms24021634", "10.3390/ijms24031919", "10.3390/ijms24031959", "10.3390/ijms24032298", "10.3390/ijms24032387", "10.3390/ijms24032424", "10.3390/ijms24032434", "10.3390/ijms24032514", "10.3390/ijms24032855", "10.3390/ijms24044148", "10.3390/ijms24055017", "10.3390/ijms24065136", "10.3390/ijms24065300", "10.3390/ijms24076217", "10.3390/ijms24076712", "10.3390/ijms24087603", "10.3390/ijms24097724", "10.3390/ijms24097835", "10.3390/ijms24098122", "10.3390/ijms24098323", "10.3390/ijms24108731", "10.3390/ijms24108886", "10.3390/ijms24119617", "10.3390/ijms24119701", "10.3390/ijms24119702", "10.3390/ijms24129842", "10.3390/ijms24129903", "10.3390/ijms24129910", "10.3390/ijms241310620", "10.3390/ijms241411491", "10.3390/ijms241411542", "10.3390/ijms241411688", "10.3390/ijms241512030", "10.3390/ijms241713078", "10.3390/ijms241713245", "10.3390/ijms241713543", "10.3390/ijms241814166", "10.3390/ijms241914701", "10.3390/ijms242115842", "10.3390/ijms242115917", "10.3390/ijms242216468", "10.3390/ijms242216496", "10.3390/ijms242216529", "10.3390/ijms242316884", "10.3390/ijms242317045", "10.3390/ijms242417423", "10.3390/ijms242417486", "10.3390/ijms25031631", "10.3390/ijms25031660", "10.3390/ijms25031817", "10.3390/ijms25052750", "10.3390/ijms25052881", "10.3390/ijms25052885", "10.3390/ijms25073806", "10.3390/ijms25094910", "10.3390/ijms25115731", "10.3390/ijms25115763", "10.3390/ijms25126483", "10.3390/ijms25136838", "10.3390/ijms25137102", "10.3390/inorganics10010008", "10.3390/insects12060498", "10.3390/insects12070649", "10.3390/insects13111001", "10.3390/insects14060545", "10.3390/insects8010008", "10.3390/insects8020037", "10.3390/jcdd10040166", "10.3390/jcdd6020021", "10.3390/jcm10112324", "10.3390/jcm10153239", "10.3390/jcm11154369", "10.3390/jcm8101615", "10.3390/jcm8112004", "10.3390/jcm9020468", "10.3390/jcm9092886", "10.3390/jdb11040045", "10.3390/jfb13030146", "10.3390/jof5020050", "10.3390/jof7080677", "10.3390/jof7090783", "10.3390/jof8080774", "10.3390/jpm10040215", "10.3390/jpm11010057", "10.3390/jpm11020138", "10.3390/jpm12040534", "10.3390/jpm12121988", "10.3390/jpm14010049", "10.3390/kinasesphosphatases1020007", "10.3390/life11030225", "10.3390/life11111263", "10.3390/life12020234", "10.3390/life12040550", "10.3390/life12081245", "10.3390/life13030604", "10.3390/life13040996", "10.3390/life13081728", "10.3390/life5010604", "10.3390/lymphatics1020012", "10.3390/ma14123337", "10.3390/ma9120994", "10.3390/math11010242", "10.3390/md11124698", "10.3390/md12042245", "10.3390/md19110637", "10.3390/medicines5010016", "10.3390/medicines6030081", "10.3390/medicines6040102", "10.3390/medsci6020031", "10.3390/metabo11030182", "10.3390/metabo11110765", "10.3390/metabo13030448", "10.3390/mi12020124", "10.3390/mi12101250", "10.3390/mi8040097", "10.3390/microorganisms10020442", "10.3390/microorganisms10030600", "10.3390/microorganisms10040747", "10.3390/microorganisms10061160", "10.3390/microorganisms10061239", "10.3390/microorganisms10081558", "10.3390/microorganisms10081633", "10.3390/microorganisms10091772", "10.3390/microorganisms10101894", "10.3390/microorganisms10101933", "10.3390/microorganisms11010030", "10.3390/microorganisms11071800", "10.3390/microorganisms11071827", "10.3390/microorganisms11081899", "10.3390/microorganisms11102417", "10.3390/microorganisms11102454", "10.3390/microorganisms12030501", "10.3390/microorganisms12061052", "10.3390/microorganisms7090279", "10.3390/microorganisms7100409", "10.3390/microorganisms7100422", "10.3390/microorganisms7110499", "10.3390/microorganisms7110534", "10.3390/microorganisms8010056", "10.3390/microorganisms8020276", "10.3390/microorganisms8030343", "10.3390/microorganisms8050777", "10.3390/microorganisms8081213", "10.3390/microorganisms8101478", "10.3390/microorganisms8111637", "10.3390/microorganisms8111700", "10.3390/microorganisms8121936", "10.3390/microorganisms9020343", "10.3390/microorganisms9061276", "10.3390/microorganisms9061308", "10.3390/microorganisms9071353", "10.3390/microorganisms9081552", "10.3390/min8060242", "10.3390/mol2net-1-c002", "10.3390/molecules20069591", "10.3390/molecules201018759", "10.3390/molecules21020148", "10.3390/molecules21050677", "10.3390/molecules21060770", "10.3390/molecules21101278", "10.3390/molecules22030432", "10.3390/molecules22040676", "10.3390/molecules22111945", "10.3390/molecules23030632", "10.3390/molecules23081846", "10.3390/molecules23102528", "10.3390/molecules23102616", "10.3390/molecules24010009", "10.3390/molecules24071303", "10.3390/molecules24081516", "10.3390/molecules25020358", "10.3390/molecules25041015", "10.3390/molecules25051217", "10.3390/molecules25061439", "10.3390/molecules25133013", "10.3390/molecules25153364", "10.3390/molecules25204652", "10.3390/molecules25245956", "10.3390/molecules26061716", "10.3390/molecules26113299", "10.3390/molecules26133800", "10.3390/molecules26175187", "10.3390/molecules26185544", "10.3390/molecules27020555", "10.3390/molecules27051473", "10.3390/molecules27072054", "10.3390/molecules27072198", "10.3390/molecules27123680", "10.3390/molecules27123681", "10.3390/molecules27144351", "10.3390/molecules27154676", "10.3390/molecules27175488", "10.3390/molecules27175710", "10.3390/molecules27217269", "10.3390/molecules28031229", "10.3390/molecules28093926", "10.3390/molecules28145359", "10.3390/molecules28145600", "10.3390/molecules28186582", "10.3390/molecules28207082", "10.3390/molecules28227501", "10.3390/molecules28237813", "10.3390/molecules29040815", "10.3390/nano10071406", "10.3390/nano10122370", "10.3390/nano11020289", "10.3390/nano12020177", "10.3390/nano12203567", "10.3390/nano8030155", "10.3390/nu11123068", "10.3390/nu12041194", "10.3390/nu12061795", "10.3390/nu12102999", "10.3390/nu12113380", "10.3390/nu13124315", "10.3390/nu15153485", "10.3390/nu16040477", "10.3390/nu7031787", "10.3390/nu9121286", "10.3390/osteology1040020", "10.3390/oxygen3010005", "10.3390/pathogens10020225", "10.3390/pathogens10030345", "10.3390/pathogens10030346", "10.3390/pathogens10040387", "10.3390/pathogens11060661", "10.3390/pathogens11121437", "10.3390/pathogens12010014", "10.3390/pathogens12010051", "10.3390/pathogens12070883", "10.3390/pathogens13020127", "10.3390/pathogens5010022", "10.3390/pathogens9050321", "10.3390/pathogens9070534", "10.3390/ph13060128", "10.3390/ph13090237", "10.3390/ph13090260", "10.3390/ph14060547", "10.3390/ph14111126", "10.3390/ph14111157", "10.3390/ph15070897", "10.3390/ph15081029", "10.3390/ph16070917", "10.3390/ph16070952", "10.3390/ph16091210", "10.3390/ph17060763", "10.3390/pharmaceutics12050402", "10.3390/pharmaceutics13020196", "10.3390/pharmaceutics13030343", "10.3390/pharmaceutics13050596", "10.3390/pharmaceutics13122097", "10.3390/pharmaceutics13122116", "10.3390/pharmaceutics14010213", "10.3390/pharmaceutics14020381", "10.3390/pharmaceutics14040797", "10.3390/pharmaceutics14051031", "10.3390/pharmaceutics14102125", "10.3390/pharmaceutics14112520", "10.3390/pharmaceutics15020597", "10.3390/pharmaceutics15030772", "10.3390/pharmaceutics15041053", "10.3390/pharmaceutics15041130", "10.3390/pharmaceutics15041295", "10.3390/pharmaceutics15092201", "10.3390/pharmaceutics16060771", "10.3390/plants11172279", "10.3390/plants12071478", "10.3390/plants12122299", "10.3390/plants12203617", "10.3390/plants13060811", "10.3390/plants13060913", "10.3390/plants13111460", "10.3390/plants13111481", "10.3390/plants8050118", "10.3390/plants9010097", "10.3390/plants9020192", "10.3390/polym12020464", "10.3390/polym12112702", "10.3390/polym13071074", "10.3390/polym13152577", "10.3390/polym16030443", "10.3390/polym2040522", "10.3390/pr10112180", "10.3390/pr10122682", "10.3390/pr12061063", "10.3390/pr6050038", "10.3390/proteomes4030023", "10.3390/s21051585", "10.3390/s24010037", "10.3390/s24082551", "10.3390/su16093650", "10.3390/su71013920", "10.3390/sym11101215", "10.3390/sym13071146", "10.3390/systems6010004", "10.3390/toxics12040274", "10.3390/toxins10060240", "10.3390/toxins10080311", "10.3390/toxins11020131", "10.3390/toxins11050272", "10.3390/toxins11080475", "10.3390/toxins12090598", "10.3390/toxins16060271", "10.3390/toxins5081402", "10.3390/toxins8040096", "10.3390/toxins8100305", "10.3390/v10030115", "10.3390/v10040141", "10.3390/v10050228", "10.3390/v10120695", "10.3390/v11020102", "10.3390/v11020156", "10.3390/v11030223", "10.3390/v11030241", "10.3390/v11030267", "10.3390/v11080727", "10.3390/v12050513", "10.3390/v12080884", "10.3390/v12101163", "10.3390/v13010134", "10.3390/v13020202", "10.3390/v13061002", "10.3390/v13061167", "10.3390/v13071268", "10.3390/v13071315", "10.3390/v13081636", "10.3390/v13102049", "10.3390/v13102074", "10.3390/v13112214", "10.3390/v14020295", "10.3390/v14030640", "10.3390/v14051018", "10.3390/v14061334", "10.3390/v14081603", "10.3390/v14112401", "10.3390/v15010167", "10.3390/v15040856", "10.3390/v15041020", "10.3390/v15051202", "10.3390/v15061229", "10.3390/v15061252", "10.3390/v15061297", "10.3390/v15081656", "10.3390/v15102073", "10.3390/v16010154", "10.3390/v16030468", "10.3390/v16040566", "10.3390/v16050669", "10.3390/v16060916", "10.3390/v2030710", "10.3390/v5010111", "10.3390/v5020619", "10.3390/v7031505", "10.3390/v7082845", "10.3390/v8120324", "10.3390/vaccines10101699", "10.3390/vaccines10101751", "10.3390/vaccines10111920", "10.3390/vaccines11020219", "10.3390/vaccines11030681", "10.3390/vaccines11040771", "10.3390/vaccines11111629", "10.3390/vaccines12030272", "10.3390/vaccines12050505", "10.3390/vaccines4030028", "10.3390/vaccines4040041", "10.3390/vaccines4040046", "10.3390/vaccines7040217", "10.3390/vaccines8010098", "10.3390/vaccines8020277", "10.3390/vaccines8020300", "10.3390/vaccines8020312", "10.3390/vaccines9040328", "10.3390/vision4010001", "10.3402/iee.v4.21565", "10.3409/fb64_3.163", "10.3410/b4-8", "10.3410/f.726580404.793526792", "10.3410/f.739811364.793589080", "10.35440/hutfd.889541", "10.36837/chapman.000491", "10.37094/adyujsci.834522", "10.37190/epe180406", "10.37201/req/062.2022", "10.3724/abbs.2023131", "10.3727/096368909x12483162197204", "10.3727/096368914x685771", "10.3727/096368916x690818", "10.3727/096368916x691312", "10.3732/ajb.1100569", "10.3732/ajb.1600331", "10.37349/etat.2020.00002", "10.3748/wjg.v17.i5.578", "10.3748/wjg.v20.i9.2279", "10.3748/wjg.v25.i47.6823", "10.3758/s13415-022-00992-3", "10.3758/s13423-015-0958-5", "10.3758/s13423-017-1230-y", "10.3762/bjnano.11.45", "10.3762/bjnano.7.115", "10.3767/003158511x571841", "10.37678/dcybd.2020.2376", "10.37897/rjid.2023.4.7", "10.3791/3087-v", "10.3791/4458-v", "10.3791/51482", "10.3791/52539", "10.3791/55305", "10.3791/56358", "10.3791/58704", "10.3800/pbr.15.250", "10.3844/ajbbsp.2005.189.192", "10.3855/jidc.12348", "10.3855/jidc.8583", "10.3892/br.2014.407", "10.3892/br.2021.1450", "10.3892/br.2023.1712", "10.3892/etm.2015.2953", "10.3892/etm.2016.3141", "10.3892/etm.2018.6716", "10.3892/etm.2019.7927", "10.3892/etm.2019.8164", "10.3892/etm.2022.11526", "10.3892/ijmm.18.3.457", "10.3892/ijmm.2012.1173", "10.3892/ijmm.2014.1649", "10.3892/ijmm.2016.2656", "10.3892/ijmm.2017.3036", "10.3892/ijmm.2018.3949", "10.3892/ijo.2014.2267", "10.3892/ijo.2016.3387", "10.3892/ijo.2017.4004", "10.3892/ijo.2018.4429", "10.3892/ijo.2018.4446", "10.3892/ijo.2018.4543", "10.3892/ijo.2019.4819", "10.3892/ijo.26.3.801", "10.3892/mmr.2013.1413", "10.3892/mmr.2013.1698", "10.3892/mmr.2016.4948", "10.3892/mmr.2017.6532", "10.3892/mmr.2017.7216", "10.3892/mmr.2017.7511", "10.3892/mmr.2018.8911", "10.3892/mmr.2018.9712", "10.3892/mmr.2019.10862", "10.3892/mmr.2020.11482", "10.3892/ol.2016.4952", "10.3892/ol.2016.5490", "10.3892/ol.2018.7897", "10.3892/ol.2018.8548", "10.3892/ol.2018.8606", "10.3892/ol.2020.11580", "10.3892/ol.2020.11873", "10.3892/ol.2021.12740", "10.3892/ol.2022.13575", "10.3892/or.2016.5136", "10.3892/or.2016.5171", "10.3892/or.2016.5266", "10.3892/or.2017.5750", "10.3892/or.2018.6203", "10.3892/or.2018.6684", "10.3892/or.2023.8643", "10.3892/or.2024.8700", "10.3892/wasj.2020.32", "10.3896/ibra.1.52.4.11", "10.3899/jrheum.181384", "10.3906/sag-2010-336", "10.3934/dcdss.2010.3.61", "10.3934/jgm.2010.2.303", "10.3934/mbe.2019139", "10.3945/ajcn.110.000893", "10.3945/an.111.001602", "10.3945/an.115.011767", "10.3960/jslrt.45.15", "10.3961/jpmph.2012.45.6.344", "10.3987/com-18-13876", "10.4000/rac.32460", "10.4014/jmb.1107.07029", "10.4014/jmb.1406.06009", "10.4014/jmb.1502.02008", "10.4018/jkdb.2010100201", "10.4028/www.scientific.net/amm.110-116.1886", "10.4028/www.scientific.net/msf.948.133", "10.4048/jbc.2015.18.2.134", "10.4049/jimmunol.0802592", "10.4049/jimmunol.0803489", "10.4049/jimmunol.0900092", "10.4049/jimmunol.0901689", "10.4049/jimmunol.0902984", "10.4049/jimmunol.0903302", "10.4049/jimmunol.0903505", "10.4049/jimmunol.0904133", "10.4049/jimmunol.1000290", "10.4049/jimmunol.1000896", "10.4049/jimmunol.1002212", "10.4049/jimmunol.1003122", "10.4049/jimmunol.1100853", "10.4049/jimmunol.1100926", "10.4049/jimmunol.1102495", "10.4049/jimmunol.1102830", "10.4049/jimmunol.1102885", "10.4049/jimmunol.1103270", "10.4049/jimmunol.1103505", "10.4049/jimmunol.1200255", "10.4049/jimmunol.1200402", "10.4049/jimmunol.1200814", "10.4049/jimmunol.1200868", "10.4049/jimmunol.1201172", "10.4049/jimmunol.1201305", "10.4049/jimmunol.1201518", "10.4049/jimmunol.1202281", "10.4049/jimmunol.1300656", "10.4049/jimmunol.1301284", "10.4049/jimmunol.1302479", "10.4049/jimmunol.1303281", "10.4049/jimmunol.1303377", "10.4049/jimmunol.1400412", "10.4049/jimmunol.1401022", "10.4049/jimmunol.1401446", "10.4049/jimmunol.1401548", "10.4049/jimmunol.1401589", "10.4049/jimmunol.1402025", "10.4049/jimmunol.1402678", "10.4049/jimmunol.1402797", "10.4049/jimmunol.1490019", "10.4049/jimmunol.1500201", "10.4049/jimmunol.1501463", "10.4049/jimmunol.1501612", "10.4049/jimmunol.1502283", "10.4049/jimmunol.1502414", "10.4049/jimmunol.1600253", "10.4049/jimmunol.1601367", "10.4049/jimmunol.1601515", "10.4049/jimmunol.1601551", "10.4049/jimmunol.1601935", "10.4049/jimmunol.1602010", "10.4049/jimmunol.162.7.3770", "10.4049/jimmunol.162.8.4606", "10.4049/jimmunol.164.4.1898", "10.4049/jimmunol.164.5.2832", "10.4049/jimmunol.165.11.6235", "10.4049/jimmunol.166.4.2173", "10.4049/jimmunol.166.5.3075", "10.4049/jimmunol.166.6.3865", "10.4049/jimmunol.167.11.6533", "10.4049/jimmunol.167.9.4948", "10.4049/jimmunol.168.11.5699", "10.4049/jimmunol.168.11.5876", "10.4049/jimmunol.168.4.1968", "10.4049/jimmunol.168.5.2456", "10.4049/jimmunol.169.12.6883", "10.4049/jimmunol.170.7.3528", "10.4049/jimmunol.1700431", "10.4049/jimmunol.1700515", "10.4049/jimmunol.1701514", "10.4049/jimmunol.1701644", "10.4049/jimmunol.171.6.3025", "10.4049/jimmunol.171.7.3550", "10.4049/jimmunol.172.2.1083", "10.4049/jimmunol.172.3.1426", "10.4049/jimmunol.174.5.2476", "10.4049/jimmunol.175.12.8260", "10.4049/jimmunol.176.5.3019", "10.4049/jimmunol.177.5.2994", "10.4049/jimmunol.178.5.2623", "10.4049/jimmunol.178.5.3038", "10.4049/jimmunol.179.2.1058", "10.4049/jimmunol.179.4.2060", "10.4049/jimmunol.180.11.7673", "10.4049/jimmunol.180.2.727", "10.4049/jimmunol.180.4.2650", "10.4049/jimmunol.1800296", "10.4049/jimmunol.1800578", "10.4049/jimmunol.1801083", "10.4049/jimmunol.1801349", "10.4049/jimmunol.181.12.8595", "10.4049/jimmunol.181.6.3733", "10.4049/jimmunol.181.6.3994", "10.4049/jimmunol.181.6.4159", "10.4049/jimmunol.181.8.5791", "10.4049/jimmunol.182.3.1772-a", "10.4049/jimmunol.182.supp.46.6", "10.4049/jimmunol.190.supp.208.12", "10.4049/jimmunol.1900937", "10.4049/jimmunol.1901133", "10.4049/jimmunol.1901167", "10.4049/jimmunol.1901326", "10.4049/jimmunol.200.supp.40.15", "10.4049/jimmunol.204.supp.166.10", "10.4049/jimmunol.210.supp.218.12", "10.4049/jimmunol.2100242", "10.4052/tigg.1739.1se", "10.4061/2010/592980", "10.4081/ejh.2016.2609", "10.4081/jlimnol.2013.e13", "10.4081/oncol.2019.376", "10.4081/vsd.2015.6017", "10.4084/mjhid.2020.016", "10.4103/0976-500x.103704", "10.4103/0976-9668.149116", "10.4103/0976-9668.175020", "10.4103/2212-5531.307103", "10.4103/aja202153", "10.4103/jlp.jlp_176_17", "10.4103/jlp.jlp_72_18", "10.4137/ebo.s10048", "10.4155/bio-2015-0018", "10.4155/fmc-2018-0451", "10.4155/fmc.15.107", "10.4155/fsoa-2016-0094", "10.4155/fsoa-2017-0117", "10.4155/tde.15.19", "10.4161/15384101.2014.949201", "10.4161/15384101.2014.985507", "10.4161/15384101.2014.988019", "10.4161/19336918.2014.994916", "10.4161/21690731.2014.975018", "10.4161/23723548.2014.957039", "10.4161/auto.5.4.7666", "10.4161/auto.6.1.10928", "10.4161/auto.7.6.15123", "10.4161/bact.18778", "10.4161/cc.20683", "10.4161/cc.23057", "10.4161/cc.26130", "10.4161/cc.28895", "10.4161/cc.4.9.1994", "10.4161/cc.5.18.3288", "10.4161/cc.6.17.4610", "10.4161/cc.7.2.5299", "10.4161/cc.8.12.8809", "10.4161/cc.9.11.11810", "10.4161/cc.9.15.12516", "10.4161/cc.9.24.14322", "10.4161/cc.9.6.11046", "10.4161/chan.26181", "10.4161/chan.29117", "10.4161/epi.3.4.6697", "10.4161/jkst.25301", "10.4161/mabs.3.3.15234", "10.4161/org.6.2.11464", "10.4161/rna.20018", "10.4161/rna.20231", "10.4161/rna.23312", "10.4161/rna.26165", "10.4161/rna.26214", "10.4161/rna.27392", "10.4161/rna.28867", "10.4161/rna.7.5.13216", "10.4161/rna.8.2.13782", "10.4161/sgtp.1.1.12178", "10.4161/sgtp.19630", "10.4161/sgtp.2.1.15113", "10.4161/viru.24290", "10.4171/owr/2008/21", "10.4172/2161-0444.1000495", "10.4196/kjpp.2017.21.1.37", "10.4236/as.2011.23040", "10.4251/wjgo.v12.i2.173", "10.4252/wjsc.v12.i12.1439", "10.4252/wjsc.v7.i8.1109", "10.4254/wjh.v13.i11.1512", "10.4267/2042/47422", "10.4269/ajtmh.13-0264", "10.4269/ajtmh.1998.59.726", "10.4271/911399", "10.4314/njp.v47i4.1", "10.4315/0362-028x-63.3.315", "10.4315/0362-028x.jfp-16-502", "10.4319/lo.1967.12.3.0411", "10.4319/lo.1984.29.6.1170", "10.4319/lo.1992.37.7.1434", "10.4319/lo.2000.45.3.0569", "10.4319/lo.2008.53.2.0446", "10.4319/lom.2012.10.278", "10.4324/9780429244643", "10.4324/9781315120119-6", "10.4324/9781315175775-1", "10.4330/wjc.v7.i10.671", "10.4331/wjbc.v8.i1.45", "10.4414/cvm.2022.02217", "10.4414/smw.2015.14075", "10.4414/smw.2019.14697", "10.4414/smw.2020.20246", "10.4490/algae.2019.34.5.3", "10.47051/oftx9030", "10.47570/joci.2022.005", "10.47570/joci.2022.006", "10.47611/jsrhs.v10i4.2247", "10.47749/t/unicamp.2013.906194", "10.47749/t/unicamp.2019.1129277", "10.47749/t/unicamp.2021.1166712", "10.47808/revistabioagro.v1i1.212", "10.48083/gztk5882", "10.48286/aro.2024.80", "10.4995/thesis/10251/176003", "10.4995/thesis/10251/185122", "10.5114/ceji.2018.77390", "10.5114/ceji.2018.77392", "10.5114/fn.2014.47848", "10.5114/fn.2020.94001", "10.5114/pjp.2018.76699", "10.5114/wo.2014.47127", "10.5114/wo.2018.80038", "10.5114/wo.2024.139375", "10.51847/wv4pydatfp", "10.5194/egusphere-2023-98", "10.5194/essdd-5-147-2012", "10.5204/thesis.eprints.123512", "10.5230/jgc.2022.22.e31", "10.52547/rabms.8.2.104", "10.52601/bpr.2023.230022", "10.52601/bpr.2023.230029", "10.5306/wjco.v12.i10.926", "10.5327/z2594539420170000205", "10.5336/caserep.2022-89352", "10.53846/goediss-1338", "10.53846/goediss-392", "10.53846/goediss-612", "10.53846/goediss-7577", "10.53846/goediss-7919", "10.53846/goediss-8021", "10.53846/goediss-9040", "10.5423/rpd.2017.23.2.150", "10.5455/vetworld.2009.204-207", "10.5463/thesis.35", "10.5483/bmbrep.2018.51.9.187", "10.5483/bmbrep.2019.52.12.282", "10.5483/bmbrep.2022.55.3.188", "10.5483/bmbrep.2023-0224", "10.5505/aot.2022.03206", "10.5507/bp.2007.001", "10.5507/bp.2018.037", "10.55092/rse20230009", "10.5511/plantbiotechnology.25.213", "10.5513/jcea01/17.3.1767", "10.5539/jfr.v5n4p79", "10.55730/1300-0144.5724", "10.5603/fhc.a2019.0005", "10.5694/mja2.50569", "10.5698/1535-7597-13.6.266", "10.5705/ss.2013.019", "10.57098/scirevs.biology.2.2.1", "10.5740/jaoacint.sge_macfarlane", "10.5772/29856", "10.5772/54142", "10.5772/intechopen.74084", "10.5772/intechopen.85185", "10.5772/intechopen.98639", "10.5802/crbiol.118", "10.5812/jjm.14945", "10.5812/jjm.24965", "10.5821/dissertation-2117-334947", "10.5860/choice.188123", "10.5860/choice.41-5349", "10.5860/choice.42-5841", "10.5860/choice.44-0311", "10.58837/chula.the.2022.318", "10.5897/ajb2005.000-3117", "10.5897/ajmr2013.6109", "10.5899/2013/jgmi-00002", "10.5937/zrpfns48-7262", "10.59411/jvrfxx80", "10.5962/bhl.title.62035", "10.6019/empiar-12073", "10.6026/97320630002005", "10.6026/97320630010293", "10.6061/clinics/2018/e814s", "10.6065/apem.2014.19.2.57", "10.7150/ijbs.11797", "10.7150/ijbs.4.338", "10.7150/ijbs.70544", "10.7150/ijbs.72244", "10.7150/ijbs.86869", "10.7150/jca.27472", "10.7150/jca.51437", "10.7150/thno.23624", "10.7150/thno.29431", "10.7150/thno.35300", "10.7150/thno.39018", "10.7150/thno.39241", "10.7150/thno.41692", "10.7150/thno.42494", "10.7150/thno.44523", "10.7150/thno.45164", "10.7150/thno.46143", "10.7150/thno.48101", "10.7150/thno.54917", "10.7150/thno.56383", "10.7150/thno.61433", "10.7150/thno.65563", "10.7150/thno.67410", "10.7150/thno.70719", "10.7150/thno.73104", "10.7150/thno.81760", "10.7150/thno.82975", "10.7150/thno.85421", "10.7150/thno.89602", "10.7150/thno.94121", "10.7326/0003-4819-134-2-200101160-00015", "10.7551/mitpress/3136.003.0022", "10.7554/elife.00400", "10.7554/elife.00471", "10.7554/elife.00592", "10.7554/elife.04236", "10.7554/elife.05198", "10.7554/elife.05422", "10.7554/elife.05856", "10.7554/elife.06034", "10.7554/elife.07290", "10.7554/elife.07405", "10.7554/elife.07830", "10.7554/elife.07832", "10.7554/elife.07956", "10.7554/elife.08022", "10.7554/elife.08467", "10.7554/elife.10566", "10.7554/elife.10851", "10.7554/elife.10921", "10.7554/elife.10960", "10.7554/elife.11123", "10.7554/elife.11418", "10.7554/elife.12039", "10.7554/elife.13073", "10.7554/elife.13722", "10.7554/elife.13879", "10.7554/elife.14997", "10.7554/elife.16650", "10.7554/elife.16654", "10.7554/elife.17331", "10.7554/elife.17438", "10.7554/elife.21301", "10.7554/elife.21455", "10.7554/elife.21883", "10.7554/elife.21926", "10.7554/elife.22039", "10.7554/elife.22536", "10.7554/elife.22939", "10.7554/elife.23494", "10.7554/elife.23824", "10.7554/elife.24476", "10.7554/elife.24502", "10.7554/elife.26509", "10.7554/elife.27364", "10.7554/elife.27810", "10.7554/elife.28231", "10.7554/elife.28440", "10.7554/elife.29656", "10.7554/elife.30789", "10.7554/elife.30935", "10.7554/elife.31054", "10.7554/elife.32764", "10.7554/elife.32839", "10.7554/elife.33084", "10.7554/elife.33105", "10.7554/elife.33402", "10.7554/elife.34282", "10.7554/elife.34463", "10.7554/elife.35832", "10.7554/elife.36187", "10.7554/elife.36953", "10.7554/elife.37018", "10.7554/elife.37373", "10.7554/elife.40364", "10.7554/elife.41081", "10.7554/elife.41129", "10.7554/elife.41741", "10.7554/elife.41769", "10.7554/elife.45590", "10.7554/elife.46770", "10.7554/elife.48216", "10.7554/elife.48847", "10.7554/elife.49748", "10.7554/elife.51480", "10.7554/elife.52004", "10.7554/elife.52473", "10.7554/elife.54435", "10.7554/elife.55108", "10.7554/elife.55124", "10.7554/elife.55185", "10.7554/elife.55308", "10.7554/elife.55761", "10.7554/elife.55771", "10.7554/elife.56337", "10.7554/elife.56731", "10.7554/elife.56945", "10.7554/elife.58464", "10.7554/elife.58593", "10.7554/elife.58810", "10.7554/elife.59148", "10.7554/elife.59770", "10.7554/elife.59872", "10.7554/elife.61312", "10.7554/elife.62438", "10.7554/elife.63368", "10.7554/elife.63668", "10.7554/elife.65358", "10.7554/elife.67549", "10.7554/elife.70017", "10.7554/elife.70921", "10.7554/elife.71103", "10.7554/elife.72313", "10.7554/elife.72435", "10.7554/elife.72943", "10.7554/elife.73162", "10.7554/elife.75751", "10.7554/elife.76075", "10.7554/elife.77364", "10.7554/elife.77376", "10.7554/elife.78299", "10.7554/elife.81943", "10.7554/elife.82217", "10.7554/elife.82490", "10.7554/elife.83442", "10.7554/elife.84538", "10.7554/elife.88799", "10.7554/elife.89423.3", "10.7554/elife.90024", "10.7555/jbr.34.20200105", "10.7717/peerj.386", "10.7717/peerj.6225", "10.7717/peerj.7199", "10.7750/biodiscovery.2012.5.1", "10.7750/biodiscovery.2014.11.1", "10.7759/cureus.35436", "10.7860/jcdr/2016/22607.9020", "10.7860/jcdr/2016/23364.8919", "10.7916/d8542t9p", "10.7916/d85q534r", "10.7916/d8hx1kxh", "10.7916/d8nk3c0g", "10.9734/arrb/2019/v32i330083", "10.9734/bji/2020/v24i630124", "10.9734/ijbcrr/2015/19522", "10.9758/cpn.2017.15.2.100", "10.9775/kvfd.2023.30418", "10/104103/2847340", "10/1051/372563", "10/1264/4093654", "10/1273/2713303", "10/1297/48713", "10/1366/2714271", "10/1757/1884468", "10/1901/54946", "10/2095/6385798", "10/2143/455320", "10/2170/6382091", "10/2282/5530205", "10/2344/1074262", "10/2597/4157880", "10/2604/304878", "10/2630/11018", "10/2647/1011712", "10/2714/93729", "10/2729/615348", "10/2742/6563595", "10/2763/830949", "10/2866/613924", "10/2991/885", "10/3017/6032519", "10/3035/5072015", "10/3640/6099536", "10/3657/6099545", "10/5637/6287851", "10/5652/6594082", "10/5854/83981", "10/6098/3062787", "1000047880/3609215", "1000096573/34886291", "10097198/1", "101681023/sji12168", "101691340/2018_hompoonsup_supanida_0903877_ethesis", "10171400/1", ], }, eval: { question_ids: [ "08397294-3d99-4790-915c-b8bcb1e9e661", "0b1d5537-db47-420c-984b-9b56d38e6d98", "0e53a08c-4252-4a84-962b-5b396f9740aa", "100b570f-1c4f-4214-8402-f1b15f9989b4", "12321eab-6ad6-4218-8815-18bc51c14544", "154e7b14-4ed5-4cf3-9149-0c4843fc62cc", "1ccdc348-50e1-4941-9151-5e50411a2b41", "28ebecdf-949e-4d20-aca9-5989b7a9d6e9", "38ada695-2c79-459b-8e68-dbed734c74f9", "40400348-eabb-4b25-90d1-e33589d3e5a4", "49d2630e-9d26-4e12-89a3-3050a609abf5", "4f050bf3-27cd-4a14-8422-45df5e2bb079", "55187fb4-e7ee-4027-b74f-cab50f328442", "5806ed2a-1005-44f1-8d70-332048fea8f4", "58f69c8d-cb94-4021-a84f-c549a7b976e1", "6194ebfc-2d5c-4ccc-8883-da7c471b61e6", "6aa10957-bdd9-4dab-a4e1-234a17cb87dd", "76184ccf-4bf0-469e-a442-11d04b4ff8b0", "7a88e6f7-fb8e-4a24-b08d-9b7a6edafe57", "7b98796f-25be-4c58-a52a-4e366c0ffd95", "8af900bb-5794-40db-910e-10d5857ce5bd", "8d12cb90-73c6-4cc1-9f83-0fa9fd822e92", "99e8fa71-b59c-4aef-8cf6-40102a10622f", "9fe3ff3b-60cf-472d-ab1a-2bda1868f1b4", "a71ef7a2-31a2-460d-9ff4-32d7722353c3", "a73b2c2d-a3ac-49e6-8e2e-44b4c1e6de94", "ae02d0e9-edf5-4c39-a215-3cbc8f4c565d", "afb36e40-0836-4810-909e-eabfe17dcd8b", "b105af85-833e-48bc-ac78-48f73c9673fd", "c47dd378-dde3-4a45-9184-6abfa6163717", "c6e11fac-8f9c-4cf1-aa6e-4d25731ba74f", "c6f097c9-2216-4e98-af45-8101681b38ec", "c75879f4-9329-4594-8f6a-c4d421f2439f", "ce93661b-e3c4-4a7a-96b6-87492259c501", "cff00d08-5655-4214-97ac-8fa9504c1165", "d7833c0f-2a16-40d2-b6a0-6764aa3003a6", "db851865-5cbf-4d55-b6db-34f22ef5e727", "dd29920d-cb70-440f-961c-3e1103776c4f", "ef07d562-fc18-43c9-8201-7a189d76eeb9", "ff7328e2-4954-46a2-8ea3-d40b4df0c0ea", ], dois: [ "10.1001/archpsyc.62.6.593", "10.1001/jama.2020.1097", "10.1001/jama.2020.1585", "10.1002/(sici)1097-0177(199904)214:4<303::aid-aja3>3.0.co;2-b", "10.1002/(sici)1097-0282(1997)43:5<383::aid-bip4>3.0.co;2-r", "10.1002/(sici)1097-4547(19960901)45:5<558::aid-jnr6>3.0.co;2-b", "10.1002/(sici)1097-4547(19970415)48:2<83::aid-jnr1>3.0.co;2-8", "10.1002/(sici)1097-4547(19981015)54:2<181::aid-jnr6>3.0.co;2-a", "10.1002/(sici)1098-1004(200003)15:3<228::aid-humu3>3.0.co;2-9", "10.1002/(sici)1098-1136(199704)19:4<324::aid-glia5>3.0.co;2-x", "10.1002/(sici)1098-1136(200004)30:2<105::aid-glia1>3.0.co;2-h", "10.1002/(sici)1521-1878(200004)22:4<327::aid-bies3>3.0.co;2-4", "10.1002/0471143030.cb1016s47", "10.1002/1521-3773(20020715)41:14<2596::aid-anie2596>3.0.co;2-4", "10.1002/1531-8249(200004)47:4<493::aid-ana13>3.0.co;2-4", "10.1002/1873-3468.12829", "10.1002/1873-3468.12930", "10.1002/1873-3468.13280", "10.1002/1873-3468.14021", "10.1002/1873-3468.14811", "10.1002/1878-0261.12019", "10.1002/1878-0261.12327", "10.1002/1878-0261.12917", "10.1002/9780470140505", "10.1002/9781118697191.ch2", "10.1002/9781118971758.ch1", "10.1002/9781119053095.ch84", "10.1002/9783527818242.ch9", "10.1002/acn3.133", "10.1002/adbi.201900089", "10.1002/adhm.201500618", "10.1002/adhm.201600532", "10.1002/adhm.201901593", "10.1002/adhm.202100347", "10.1002/adhm.202101349", "10.1002/adma.202101190", "10.1002/adtp.201800021", "10.1002/adtp.201800143", "10.1002/advs.201700175", "10.1002/advs.201900101", "10.1002/advs.201902312", "10.1002/advs.201903381", "10.1002/advs.202001917", "10.1002/ajh.25829", "10.1002/ajmg.a.36251", "10.1002/alz.038589", "10.1002/ana.20199", "10.1002/ana.20812", "10.1002/ana.21421", "10.1002/ana.22366", "10.1002/ana.24864", "10.1002/ana.26209", "10.1002/ana.410380615", "10.1002/ange.201610209", "10.1002/ange.202315782", "10.1002/anie.200900942", "10.1002/anie.201509601", "10.1002/anie.201509986", "10.1002/anie.201601123", "10.1002/anie.202011419", "10.1002/anie.202106147", "10.1002/anie.202109118", "10.1002/anie.202110819", "10.1002/ardp.201100209", "10.1002/art.1780400928", "10.1002/art.33482", "10.1002/art.39545", "10.1002/art.39575", "10.1002/art.41267", "10.1002/bab.1901", "10.1002/bies.200900148", "10.1002/bies.201000073", "10.1002/bies.201000088", "10.1002/bies.201400138", "10.1002/bies.201400177", "10.1002/bip.20716", "10.1002/bip.21540", "10.1002/bip.22072", "10.1002/bip.23420", "10.1002/bit.22361", "10.1002/bit.25513", "10.1002/bit.27315", "10.1002/cbdv.200790144", "10.1002/cbf.1740", "10.1002/cbic.200900321", "10.1002/cbic.201100595", "10.1002/cbin.11248", "10.1002/chem.201202764", "10.1002/cjoc.202200486", "10.1002/cm.20041", "10.1002/cmdc.201500495", "10.1002/cmdc.201700040", "10.1002/cmdc.201700646", "10.1002/cmdc.201900450", "10.1002/cncr.26669", "10.1002/cne.21365", "10.1002/cne.21974", "10.1002/cne.23306", "10.1002/cne.23701", "10.1002/cne.23835", "10.1002/cne.24818", "10.1002/cne.901370404", "10.1002/cne.901450105", "10.1002/cpbi.99", "10.1002/cphy.c180025", "10.1002/cphy.c210032", "10.1002/cpmb.44", "10.1002/cpsc.17", "10.1002/cti2.1128", "10.1002/cyto.a.22161", "10.1002/dneu.20934", "10.1002/dneu.22111", "10.1002/dneu.22268", "10.1002/eji.202048992", "10.1002/eji.202049135", "10.1002/em.10169", "10.1002/emmm.201100121", "10.1002/emmm.201302567", "10.1002/fes3.237", "10.1002/gcc.20438", "10.1002/gcc.21967", "10.1002/glia.10337", "10.1002/glia.20127", "10.1002/glia.20207", "10.1002/glia.20835", "10.1002/glia.20895", "10.1002/glia.21061", "10.1002/glia.21201", "10.1002/glia.22372", "10.1002/glia.22608", "10.1002/glia.22664", "10.1002/glia.22761", "10.1002/glia.22882", "10.1002/glia.23010", "10.1002/glia.23085", "10.1002/glia.23154", "10.1002/glia.23176", "10.1002/glia.23535", "10.1002/glia.23592", "10.1002/glia.23693", "10.1002/glia.440040204", "10.1002/gps.934", "10.1002/hep.24739", "10.1002/hep.31062", "10.1002/hipo.22267", "10.1002/hipo.22488", "10.1002/humu.20360", "10.1002/humu.22913", "10.1002/ijc.21650", "10.1002/ijc.26414", "10.1002/ijc.27329", "10.1002/ijc.29655", "10.1002/ijc.31757", "10.1002/ijc.32608", "10.1002/ijc.32620", "10.1002/ijc.34008", "10.1002/iub.362", "10.1002/j.1460-2075.1983.tb01746.x", "10.1002/j.1460-2075.1996.tb00582.x", "10.1002/j.1460-2075.1996.tb01096.x", "10.1002/jbm.a.32971", "10.1002/jbmr.2049", "10.1002/jcb.21880", "10.1002/jcb.25285", "10.1002/jcb.26509", "10.1002/jcb.29140", "10.1002/jcc.540150503", "10.1002/jcp.21162", "10.1002/jcp.22545", "10.1002/jcp.22648", "10.1002/jcp.24226", "10.1002/jcp.25929", "10.1002/jcp.26433", "10.1002/jcp.28160", "10.1002/jcp.28451", "10.1002/jcp.29818", "10.1002/jcp.30064", "10.1002/jemt.22740", "10.1002/jgm.491", "10.1002/jimd.12281", "10.1002/jimd.12324", "10.1002/jlb.2bt1018-715rr", "10.1002/jlb.4ru0819-150rr", "10.1002/jlb.5cova0720-421rr", "10.1002/jlb.5mr0320-205r", "10.1002/jms.3832", "10.1002/jmv.26213", "10.1002/jmv.27073", "10.1002/jmv.27292", "10.1002/jnr.10364", "10.1002/jnr.20841", "10.1002/jnr.21331", "10.1002/jnr.23616", "10.1002/jnr.23714", "10.1002/jobm.202000537", "10.1002/jsfa.6349", "10.1002/jso.21690", "10.1002/lary.26077", "10.1002/mabi.201100004", "10.1002/marc.202000302", "10.1002/mas.21690", "10.1002/mc.23188", "10.1002/med.20230", "10.1002/med.21317", "10.1002/med.21668", "10.1002/med.21737", "10.1002/mgg3.219", "10.1002/mnfr.201400904", "10.1002/msb.134859", "10.1002/npr2.12052", "10.1002/npr2.12073", "10.1002/oby.21107", "10.1002/oby.22521", "10.1002/path.4114", "10.1002/path.4924", "10.1002/path.5106", "10.1002/path.5549", "10.1002/pbc.26967", "10.1002/pmic.200701157", "10.1002/pmic.201100492", "10.1002/pro.2914", "10.1002/pro.349", "10.1002/pro.3551", "10.1002/pro.3741", "10.1002/pro.3749", "10.1002/pro.3759", "10.1002/pro.4012", "10.1002/pros.22597", "10.1002/pros.23972", "10.1002/prot.21556", "10.1002/prot.24839", "10.1002/prot.26014", "10.1002/ptr.6868", "10.1002/sctm.19-0135", "10.1002/sctm.19-0455", "10.1002/smll.201100934", "10.1002/smtd.201700131", "10.1002/stem.1334", "10.1002/stem.1520", "10.1002/syn.20649", "10.1002/wdev.191", "10.1002/wdev.196", "10.1002/wdev.197", "10.1002/wdev.396", "10.1002/wrna.1103", "10.1002/wrna.1118", "10.1002/wrna.1212", "10.1002/wrna.1520", "10.1002/wrna.1689", "10.1002/wrna.56", "10.1002/wrna.76", "10.1002/yea.1512", "10.1002/yea.1636", "10.1002/yea.1654", "10.1006/bbrc.1996.1847", "10.1006/bbrc.2000.2787", "10.1006/bbrc.2000.3599", "10.1006/dbio.1996.0090", "10.1006/dbio.1996.0142", "10.1006/dbio.1997.8597", "10.1006/dbio.1998.9192", "10.1006/dbio.1999.9418", "10.1006/dbio.2000.9962", "10.1006/excr.1998.4053", "10.1006/nbdi.2002.0480", "10.1007/112_2020_35", "10.1007/978-0-387-78261-4", "10.1007/978-1-0716-0822-7_7", "10.1007/978-1-0716-1460-0_16", "10.1007/978-1-0716-3016-7", "10.1007/978-1-4419-1075-2_4", "10.1007/978-1-4613-2115-6_22", "10.1007/978-1-4614-5037-5_9", "10.1007/978-1-4939-1429-6_8", "10.1007/978-1-4939-2687-9_23", "10.1007/978-1-4939-6371-3_1", "10.1007/978-1-4939-6533-5_24", "10.1007/978-1-4939-7113-8_18", "10.1007/978-1-4939-7113-8_2", "10.1007/978-1-4939-7774-1_2", "10.1007/978-1-4939-7825-0_27", "10.1007/978-1-4939-8922-5_8", "10.1007/978-1-4939-9068-9_2", "10.1007/978-1-4939-9465-6_2", "10.1007/978-1-59745-021-8_31", "10.1007/978-1-62703-556-9_11", "10.1007/978-1-62703-601-6_23", "10.1007/978-3-030-05517-2_14", "10.1007/978-3-030-32656-2_18", "10.1007/978-3-030-33308-9_7", "10.1007/978-3-030-36667-4_6", "10.1007/978-3-030-64994-4_17", "10.1007/978-3-319-16435-9_11", "10.1007/978-3-319-21167-1_1", "10.1007/978-3-319-22581-4_7", "10.1007/978-3-319-32337-4_14", "10.1007/978-3-319-44022-4_40", "10.1007/978-3-319-54564-6_1", "10.1007/978-3-319-54564-6_17", "10.1007/978-3-319-54564-6_4", "10.1007/978-3-319-57363-2_17", "10.1007/978-3-540-76698-8_21", "10.1007/978-3-642-02155-8_6", "10.1007/978-3-642-37609-2_2", "10.1007/978-3-7091-0932-8_25", "10.1007/978-4-431-54496-8_4", "10.1007/978-90-481-2813-6_18", "10.1007/978-90-481-3471-7_11", "10.1007/978-981-10-6577-4_3", "10.1007/978-981-13-0393-7_25", "10.1007/bf00218858", "10.1007/bf00318687", "10.1007/bf00392268", "10.1007/bf00993379", "10.1007/bf02144519", "10.1007/bf02172407", "10.1007/s00011-015-0812-2", "10.1007/s00018-012-1135-x", "10.1007/s00018-012-1242-8", "10.1007/s00018-012-1254-4", "10.1007/s00018-013-1435-9", "10.1007/s00018-017-2512-2", "10.1007/s00018-017-2688-5", "10.1007/s00018-018-2774-3", "10.1007/s00018-018-2842-8", "10.1007/s00018-018-2849-1", "10.1007/s00018-018-2954-1", "10.1007/s00018-021-03930-7", "10.1007/s00109-007-0165-6", "10.1007/s00109-021-02051-9", "10.1007/s001220051046", "10.1007/s00125-012-2592-3", "10.1007/s00125-014-3302-0", "10.1007/s00125-015-3651-3", "10.1007/s00125-016-3896-5", "10.1007/s00125-017-4354-8", "10.1007/s00204-016-1805-9", "10.1007/s00204-019-02607-2", "10.1007/s00249-010-0658-z", "10.1007/s00249-011-0708-1", "10.1007/s00251-021-01227-4", "10.1007/s00251-022-01257-6", "10.1007/s00251-023-01293-w", "10.1007/s00253-006-0698-6", "10.1007/s00253-007-1004-y", "10.1007/s00253-021-11375-y", "10.1007/s00253-023-12843-3", "10.1007/s00259-010-1392-6", "10.1007/s00259-013-2434-7", "10.1007/s00262-006-0213-z", "10.1007/s00262-018-2253-6", "10.1007/s00262-019-02423-8", "10.1007/s00262-020-02496-w", "10.1007/s00262-020-02735-0", "10.1007/s00280-004-0884-0", "10.1007/s00280-010-1413-y", "10.1007/s00280-016-2976-z", "10.1007/s00284-022-02852-2", "10.1007/s00294-005-0039-9", "10.1007/s00294-006-0113-y", "10.1007/s00299-010-0818-8", "10.1007/s00335-011-9314-x", "10.1007/s00335-019-09807-2", "10.1007/s00335-021-09918-9", "10.1007/s00335-022-09964-x", "10.1007/s00359-010-0534-4", "10.1007/s00359-019-01375-9", "10.1007/s00374-012-0692-3", "10.1007/s00380-017-0989-0", "10.1007/s00384-008-0538-5", "10.1007/s00384-010-0912-y", "10.1007/s00395-018-0686-x", "10.1007/s00401-001-0512-6", "10.1007/s00401-008-0432-9", "10.1007/s00401-015-1476-2", "10.1007/s00401-016-1575-8", "10.1007/s00401-017-1749-z", "10.1007/s00401-023-02676-9", "10.1007/s00403-009-0977-z", "10.1007/s00403-010-1075-y", "10.1007/s00415-006-0410-x", "10.1007/s00421-021-04865-4", "10.1007/s00424-009-0777-5", "10.1007/s00425-018-3046-z", "10.1007/s00428-017-2263-3", "10.1007/s00428-018-2298-0", "10.1007/s00431-023-04883-8", "10.1007/s00432-014-1891-0", "10.1007/s00432-020-03463-9", "10.1007/s00438-002-0668-3", "10.1007/s00438-003-0972-6", "10.1007/s00438-004-1065-x", "10.1007/s00438-007-0231-3", "10.1007/s00438-008-0418-2", "10.1007/s00439-001-0646-6", "10.1007/s00441-010-0950-3", "10.1007/s00441-012-1331-x", "10.1007/s00441-014-2046-y", "10.1007/s00441-020-03377-5", "10.1007/s00521-020-05395-4", "10.1007/s00580-011-1227-2", "10.1007/s00606-014-1103-z", "10.1007/s00702-003-0012-z", "10.1007/s00702-017-1745-4", "10.1007/s007090200000", "10.1007/s00723-023-01611-1", "10.1007/s00726-010-0528-0", "10.1007/s00726-011-0920-4", "10.1007/s00726-011-1185-7", "10.1007/s00774-023-01404-3", "10.1007/s00775-008-0404-5", "10.1007/s00775-020-01808-w", "10.1007/s007750000146", "10.1007/s007750100214", "10.1007/s10096-020-04089-y", "10.1007/s10120-021-01174-9", "10.1007/s10123-022-00250-z", "10.1007/s10142-023-01037-9", "10.1007/s10147-019-01455-5", "10.1007/s10265-010-0321-x", "10.1007/s10333-011-0260-8", "10.1007/s10439-011-0448-5", "10.1007/s10439-019-02384-0", "10.1007/s10495-015-1119-z", "10.1007/s10522-012-9407-2", "10.1007/s10528-016-9711-7", "10.1007/s10529-010-0357-y", "10.1007/s10551-017-3555-x", "10.1007/s10565-019-09461-z", "10.1007/s10570-011-9616-x", "10.1007/s10571-020-00843-0", "10.1007/s10585-008-9174-2", "10.1007/s10585-019-09993-y", "10.1007/s10616-021-00497-w", "10.1007/s10658-009-9510-7", "10.1007/s10719-019-09897-9", "10.1007/s10719-020-09912-4", "10.1007/s10722-003-4452-y", "10.1007/s10722-008-9323-0", "10.1007/s10722-013-0001-5", "10.1007/s10722-020-01071-7", "10.1007/s10722-024-01857-z", "10.1007/s10722-024-02015-1", "10.1007/s10787-022-00992-2", "10.1007/s10911-018-9407-1", "10.1007/s10930-006-9066-8", "10.1007/s10930-010-9289-6", "10.1007/s11010-023-04737-9", "10.1007/s11011-018-0285-4", "10.1007/s11011-021-00761-0", "10.1007/s11033-005-1407-8", "10.1007/s11033-012-1798-2", "10.1007/s11033-018-4198-4", "10.1007/s11033-020-05424-4", "10.1007/s11033-021-06428-4", "10.1007/s11042-020-09010-5", "10.1007/s11064-019-02809-1", "10.1007/s11090-020-10058-2", "10.1007/s11248-016-9998-5", "10.1007/s11295-011-0369-3", "10.1007/s11295-013-0651-7", "10.1007/s11302-016-9546-z", "10.1007/s11302-017-9581-4", "10.1007/s11357-011-9276-7", "10.1007/s11357-013-9589-9", "10.1007/s11357-023-00929-9", "10.1007/s11427-023-2316-2", "10.1007/s11481-018-9786-5", "10.1007/s11481-019-09851-4", "10.1007/s11515-016-1401-7", "10.1007/s11557-017-1342-9", "10.1007/s11605-009-0948-x", "10.1007/s11605-011-1775-4", "10.1007/s11626-019-00359-y", "10.1007/s11665-015-1876-4", "10.1007/s11692-013-9262-3", "10.1007/s11695-012-0589-0", "10.1007/s11745-017-4238-1", "10.1007/s11746-006-1207-x", "10.1007/s11886-020-01292-3", "10.1007/s11888-013-0200-7", "10.1007/s11910-017-0733-2", "10.1007/s11910-017-0735-0", "10.1007/s11910-019-0995-y", "10.1007/s12010-013-0580-9", "10.1007/s12010-014-1435-8", "10.1007/s12010-022-03885-w", "10.1007/s12012-014-9294-7", "10.1007/s12015-019-09886-3", "10.1007/s12015-019-09917-z", "10.1007/s12015-020-10016-7", "10.1007/s12015-021-10236-5", "10.1007/s12017-016-8435-5", "10.1007/s12020-014-0373-0", "10.1007/s12020-016-0910-0", "10.1007/s12020-019-02081-x", "10.1007/s12020-022-03054-3", "10.1007/s12031-007-9008-8", "10.1007/s12031-015-0570-1", "10.1007/s12031-019-01395-9", "10.1007/s12031-020-01569-w", "10.1007/s12031-020-01714-5", "10.1007/s12031-020-01735-0", "10.1007/s12035-013-8620-6", "10.1007/s12035-014-9053-6", "10.1007/s12035-015-9296-x", "10.1007/s12035-016-0048-3", "10.1007/s12035-018-1016-x", "10.1007/s12035-019-01695-6", "10.1007/s12035-021-02438-2", "10.1007/s12035-021-02517-4", "10.1007/s12035-023-03527-0", "10.1007/s12038-017-9727-0", "10.1007/s12038-018-9731-z", "10.1007/s12038-019-9974-3", "10.1007/s12038-023-00411-w", "10.1007/s12041-018-0955-3", "10.1007/s12041-021-01346-7", "10.1007/s12094-021-02613-w", "10.1007/s12117-013-9204-6", "10.1007/s12223-019-00763-7", "10.1007/s12224-012-9147-8", "10.1007/s12229-017-9187-0", "10.1007/s12257-019-0107-5", "10.1007/s12257-020-0008-7", "10.1007/s12264-013-1341-z", "10.1007/s12264-020-00612-5", "10.1007/s12264-021-00640-9", "10.1007/s12272-019-01148-7", "10.1007/s12272-019-01153-w", "10.1007/s12272-023-01458-x", "10.1007/s12274-008-8021-8", "10.1007/s12307-011-0069-4", "10.1007/s12307-012-0122-y", "10.1007/s12307-013-0140-4", "10.1007/s12325-010-0110-x", "10.1007/s12517-021-06498-5", "10.1007/s12539-018-0298-z", "10.1007/s12551-018-0445-0", "10.1007/s12551-020-00620-9", "10.1007/s12640-017-9833-7", "10.1007/s12672-024-00973-7", "10.1007/s12686-011-9548-7", "10.1007/s13181-012-0240-4", "10.1007/s13199-021-00764-6", "10.1007/s13205-020-02571-0", "10.1007/s13238-016-0367-1", "10.1007/s13238-019-0642-z", "10.1007/s13238-020-00690-1", "10.1007/s13277-012-0367-6", "10.1007/s13277-012-0638-2", "10.1007/s13277-013-1549-6", "10.1007/s13277-014-1605-x", "10.1007/s13311-013-0177-6", "10.1007/s13311-013-0227-0", "10.1007/s13311-014-0285-y", "10.1007/s13313-012-0131-9", "10.1007/s13346-021-00916-7", "10.1007/s13365-017-0584-2", "10.1007/s13365-019-00807-1", "10.1007/s13402-013-0127-7", "10.1007/s13402-014-0203-7", "10.1007/s13577-020-00417-8", "10.1007/s13679-015-0143-1", "10.1007/s13770-020-00294-0", "10.1007/s40011-014-0436-2", "10.1007/s40121-022-00674-0", "10.1007/s40262-020-00882-2", "10.1007/s40429-023-00500-8", "10.1007/s41061-020-00302-w", "10.1007/s42770-022-00895-y", "10.1007/s42976-021-00202-9", "10.1007/s43440-020-00068-4", "10.1016/0003-2697(73)90377-1", "10.1016/0012-1606(81)90477-2", "10.1016/0014-4827(61)90192-6", "10.1016/0022-2836(82)90515-0", "10.1016/0031-9422(80)85004-7", "10.1016/0076-6879(83)01005-8", "10.1016/0076-6879(91)94022-5", "10.1016/0092-8674(88)90392-3", "10.1016/0092-8674(91)90418-x", "10.1016/0092-8674(92)90531-g", "10.1016/0092-8674(93)90145-g", "10.1016/0092-8674(93)90307-c", "10.1016/0092-8674(93)90422-m", "10.1016/0092-8674(94)90277-1", "10.1016/0092-8674(95)90460-3", "10.1016/0378-1119(88)90185-0", "10.1016/0378-1119(94)00923-g", "10.1016/0896-6273(90)90215-2", "10.1016/0896-6273(93)90316-j", "10.1016/0896-6273(93)90330-t", "10.1016/0929-693x(96)89844-7", "10.1016/1043-4682(92)90012-k", "10.1016/b978-0-08-091283-7.00078-3", "10.1016/b978-0-08-102163-7.00010-7", "10.1016/b978-0-12-417136-7.00006-9", "10.1016/b978-0-12-800188-2.00023-9", "10.1016/b978-0-12-803796-6.00003-4", "10.1016/b978-0-12-809633-8.20106-4", "10.1016/b978-0-12-818140-9.00017-9", "10.1016/b978-0-323-54948-6.00011-1", "10.1016/b978-0-323-99119-3.00021-7", "10.1016/b978-0-444-63855-7.00005-8", "10.1016/b978-0-444-63855-7.00020-4", "10.1016/bs.ai.2017.06.004", "10.1016/bs.ai.2018.04.002", "10.1016/bs.ctdb.2020.02.010", "10.1016/bs.ircmb.2016.09.011", "10.1016/bs.ircmb.2018.05.013", "10.1016/bs.pmbts.2021.03.001", "10.1016/j.aanat.2011.10.009", "10.1016/j.ab.2014.08.004", "10.1016/j.abb.2006.07.005", "10.1016/j.abb.2014.12.018", "10.1016/j.actbio.2012.03.027", "10.1016/j.actbio.2012.06.006", "10.1016/j.actbio.2017.01.072", "10.1016/j.actbio.2019.01.020", "10.1016/j.actbio.2021.05.050", "10.1016/j.addr.2017.05.011", "10.1016/j.addr.2017.12.013", "10.1016/j.addr.2018.10.011", "10.1016/j.addr.2022.114504", "10.1016/j.advenzreg.2010.10.004", "10.1016/j.ajhg.2010.11.011", "10.1016/j.ajhg.2013.01.011", "10.1016/j.amsu.2017.06.026", "10.1016/j.annonc.2020.08.1739", "10.1016/j.annonc.2020.10.564", "10.1016/j.antiviral.2015.03.015", "10.1016/j.appet.2014.06.101", "10.1016/j.apsoil.2019.08.010", "10.1016/j.aquaculture.2019.734334", "10.1016/j.aquaculture.2020.735306", "10.1016/j.arr.2013.03.002", "10.1016/j.arr.2014.11.005", "10.1016/j.arr.2020.101097", "10.1016/j.arr.2021.101494", "10.1016/j.atherosclerosis.2017.06.035", "10.1016/j.autneu.2017.11.002", "10.1016/j.bbabio.2008.10.007", "10.1016/j.bbadis.2009.06.009", "10.1016/j.bbadis.2019.165580", "10.1016/j.bbadis.2021.166151", "10.1016/j.bbaexp.2006.02.003", "10.1016/j.bbagen.2012.02.001", "10.1016/j.bbagen.2013.06.018", "10.1016/j.bbagen.2018.02.001", "10.1016/j.bbagen.2020.129730", "10.1016/j.bbagrm.2012.08.005", "10.1016/j.bbagrm.2015.02.001", "10.1016/j.bbagrm.2016.03.011", "10.1016/j.bbagrm.2016.12.008", "10.1016/j.bbamcr.2005.03.014", "10.1016/j.bbamcr.2006.11.006", "10.1016/j.bbamcr.2007.05.003", "10.1016/j.bbamcr.2013.05.023", "10.1016/j.bbamcr.2019.03.001", "10.1016/j.bbapap.2019.140291", "10.1016/j.bbcan.2021.188556", "10.1016/j.bbcan.2021.188628", "10.1016/j.bbi.2006.10.011", "10.1016/j.bbih.2020.100117", "10.1016/j.bbih.2021.100296", "10.1016/j.bbr.2016.07.021", "10.1016/j.bbr.2019.02.034", "10.1016/j.bbr.2021.113192", "10.1016/j.bbrc.2007.05.155", "10.1016/j.bbrc.2011.10.126", "10.1016/j.bbrc.2012.02.134", "10.1016/j.bbrc.2015.07.030", "10.1016/j.bbrc.2017.03.039", "10.1016/j.bbrc.2019.05.183", "10.1016/j.bbrc.2021.02.043", "10.1016/j.bcp.2008.04.007", "10.1016/j.bcp.2014.12.023", "10.1016/j.bcp.2015.06.013", "10.1016/j.bcp.2015.12.010", "10.1016/j.bcp.2017.06.129", "10.1016/j.bcp.2020.113956", "10.1016/j.beem.2010.06.008", "10.1016/j.bioactmat.2020.04.020", "10.1016/j.biocel.2004.04.014", "10.1016/j.biocel.2006.11.011", "10.1016/j.biocel.2012.08.009", "10.1016/j.biocel.2017.06.016", "10.1016/j.biocel.2017.09.012", "10.1016/j.biocel.2020.105790", "10.1016/j.biochi.2007.07.019", "10.1016/j.biochi.2009.11.005", "10.1016/j.biochi.2018.09.003", "10.1016/j.biochi.2021.09.004", "10.1016/j.biomaterials.2010.03.006", "10.1016/j.biomaterials.2010.12.054", "10.1016/j.biomaterials.2012.02.009", "10.1016/j.biomaterials.2012.04.060", "10.1016/j.biomaterials.2012.06.049", "10.1016/j.biomaterials.2014.04.079", "10.1016/j.biomaterials.2016.05.004", "10.1016/j.biomaterials.2016.10.047", "10.1016/j.biomaterials.2016.12.005", "10.1016/j.biomaterials.2018.07.012", "10.1016/j.biomaterials.2018.07.035", "10.1016/j.biomaterials.2018.08.008", "10.1016/j.biomaterials.2018.08.012", "10.1016/j.biomaterials.2018.08.046", "10.1016/j.biomaterials.2019.119305", "10.1016/j.biomaterials.2020.120046", "10.1016/j.biomaterials.2020.120584", "10.1016/j.bioorg.2019.103538", "10.1016/j.bioorg.2021.104636", "10.1016/j.biopha.2017.02.098", "10.1016/j.biopha.2017.05.063", "10.1016/j.biopha.2019.108669", "10.1016/j.biopha.2019.108717", "10.1016/j.biopha.2019.108947", "10.1016/j.biopha.2021.111550", "10.1016/j.biopha.2021.112091", "10.1016/j.biopsych.2017.09.010", "10.1016/j.biortech.2010.04.042", "10.1016/j.biotechadv.2015.05.004", "10.1016/j.bmc.2015.10.041", "10.1016/j.bmc.2016.08.012", "10.1016/j.bpc.2011.03.010", "10.1016/j.bpj.2010.08.015", "10.1016/j.bpj.2013.11.2672", "10.1016/j.bpj.2017.11.737", "10.1016/j.bpj.2019.11.014", "10.1016/j.bpj.2020.06.037", "10.1016/j.bpobgyn.2013.06.004", "10.1016/j.braindev.2013.11.009", "10.1016/j.braindev.2017.03.002", "10.1016/j.brainres.2009.05.016", "10.1016/j.brainres.2012.10.035", "10.1016/j.brainres.2016.02.047", "10.1016/j.brainres.2019.06.009", "10.1016/j.brainres.2020.147173", "10.1016/j.brainresbull.2017.12.013", "10.1016/j.brainresbull.2019.06.015", "10.1016/j.brainresbull.2020.10.018", "10.1016/j.brainresrev.2010.01.002", "10.1016/j.bse.2011.12.027", "10.1016/j.canep.2013.08.004", "10.1016/j.canlet.2006.12.012", "10.1016/j.canlet.2011.07.018", "10.1016/j.canlet.2012.06.008", "10.1016/j.canlet.2013.05.006", "10.1016/j.canlet.2016.01.021", "10.1016/j.canlet.2019.04.018", "10.1016/j.canlet.2019.12.024", "10.1016/j.canlet.2019.12.036", "10.1016/j.canlet.2021.01.028", "10.1016/j.carres.2005.06.009", "10.1016/j.carres.2010.02.006", "10.1016/j.carres.2015.03.007", "10.1016/j.carres.2017.10.003", "10.1016/j.cattod.2017.02.052", "10.1016/j.cbi.2019.108907", "10.1016/j.cbpa.2009.04.637", "10.1016/j.cbpa.2009.10.042", "10.1016/j.cbpa.2018.06.005", "10.1016/j.cbpa.2020.12.005", "10.1016/j.cbpc.2016.01.003", "10.1016/j.cca.2017.04.022", "10.1016/j.ccell.2016.03.005", "10.1016/j.ccell.2017.02.008", "10.1016/j.ccell.2017.10.003", "10.1016/j.ccell.2018.10.007", "10.1016/j.ccell.2019.02.003", "10.1016/j.ccell.2020.05.005", "10.1016/j.ccell.2021.11.002", "10.1016/j.ccr.2006.08.026", "10.1016/j.ccr.2009.12.041", "10.1016/j.ccr.2012.08.013", "10.1016/j.ceb.2008.01.002", "10.1016/j.ceb.2019.05.001", "10.1016/j.cell.2004.05.013", "10.1016/j.cell.2004.05.015", "10.1016/j.cell.2005.02.034", "10.1016/j.cell.2006.02.015", "10.1016/j.cell.2006.06.035", "10.1016/j.cell.2006.07.024", "10.1016/j.cell.2007.05.009", "10.1016/j.cell.2007.06.023", "10.1016/j.cell.2007.10.036", "10.1016/j.cell.2008.05.052", "10.1016/j.cell.2009.02.009", "10.1016/j.cell.2009.02.013", "10.1016/j.cell.2009.11.007", "10.1016/j.cell.2011.02.013", "10.1016/j.cell.2011.03.005", "10.1016/j.cell.2011.03.040", "10.1016/j.cell.2011.06.043", "10.1016/j.cell.2011.09.049", "10.1016/j.cell.2011.10.024", "10.1016/j.cell.2012.05.042", "10.1016/j.cell.2012.09.011", "10.1016/j.cell.2012.09.043", "10.1016/j.cell.2013.02.022", "10.1016/j.cell.2013.03.030", "10.1016/j.cell.2013.06.039", "10.1016/j.cell.2013.06.044", "10.1016/j.cell.2013.08.014", "10.1016/j.cell.2013.09.033", "10.1016/j.cell.2014.09.029", "10.1016/j.cell.2014.09.033", "10.1016/j.cell.2014.11.021", "10.1016/j.cell.2015.01.001", "10.1016/j.cell.2015.08.069", "10.1016/j.cell.2015.09.041", "10.1016/j.cell.2015.11.022", "10.1016/j.cell.2015.12.056", "10.1016/j.cell.2016.01.043", "10.1016/j.cell.2016.02.007", "10.1016/j.cell.2016.05.047", "10.1016/j.cell.2017.02.007", "10.1016/j.cell.2017.05.018", "10.1016/j.cell.2017.09.026", "10.1016/j.cell.2017.09.043", "10.1016/j.cell.2017.10.019", "10.1016/j.cell.2017.11.043", "10.1016/j.cell.2018.01.010", "10.1016/j.cell.2018.02.053", "10.1016/j.cell.2018.05.021", "10.1016/j.cell.2018.05.057", "10.1016/j.cell.2018.06.017", "10.1016/j.cell.2018.09.013", "10.1016/j.cell.2018.11.028", "10.1016/j.cell.2018.11.029", "10.1016/j.cell.2019.03.008", "10.1016/j.cell.2020.02.052", "10.1016/j.cell.2020.05.015", "10.1016/j.cell.2020.06.012", "10.1016/j.cell.2020.06.038", "10.1016/j.cell.2020.11.024", "10.1016/j.cell.2020.12.032", "10.1016/j.cell.2021.01.019", "10.1016/j.cell.2021.04.023", "10.1016/j.cell.2021.04.048", "10.1016/j.cell.2021.05.028", "10.1016/j.cell.2022.07.009", "10.1016/j.cellsig.2012.11.001", "10.1016/j.cellsig.2014.09.003", "10.1016/j.cellsig.2016.10.006", "10.1016/j.cellsig.2020.109553", "10.1016/j.celrep.2012.05.014", "10.1016/j.celrep.2012.08.025", "10.1016/j.celrep.2016.01.019", "10.1016/j.celrep.2017.01.059", "10.1016/j.celrep.2017.09.002", "10.1016/j.celrep.2017.10.010", "10.1016/j.celrep.2018.05.057", "10.1016/j.celrep.2018.06.044", "10.1016/j.celrep.2018.07.041", "10.1016/j.celrep.2018.11.063", "10.1016/j.celrep.2019.01.024", "10.1016/j.celrep.2019.02.003", "10.1016/j.celrep.2019.02.043", "10.1016/j.celrep.2019.03.099", "10.1016/j.celrep.2020.02.046", "10.1016/j.celrep.2020.02.110", "10.1016/j.celrep.2020.107666", "10.1016/j.celrep.2020.107814", "10.1016/j.celrep.2020.108133", "10.1016/j.celrep.2020.108210", "10.1016/j.celrep.2020.108350", "10.1016/j.celrep.2020.108398", "10.1016/j.celrep.2020.108609", "10.1016/j.celrep.2021.109142", "10.1016/j.celrep.2022.111161", "10.1016/j.celrep.2023.112189", "10.1016/j.cels.2015.10.012", "10.1016/j.cels.2016.07.002", "10.1016/j.cels.2018.08.008", "10.1016/j.cels.2020.10.011", "10.1016/j.checat.2021.03.001", "10.1016/j.chembiol.2007.04.011", "10.1016/j.chembiol.2011.11.010", "10.1016/j.chembiol.2016.07.019", "10.1016/j.chembiol.2020.12.004", "10.1016/j.childyouth.2015.11.018", "10.1016/j.chom.2017.07.009", "10.1016/j.chom.2022.02.006", "10.1016/j.clgc.2020.08.004", "10.1016/j.clim.2020.108486", "10.1016/j.clim.2021.108727", "10.1016/j.clindermatol.2015.10.005", "10.1016/j.cmet.2015.04.015", "10.1016/j.cmet.2016.12.011", "10.1016/j.cmet.2018.05.026", "10.1016/j.cmet.2021.01.015", "10.1016/j.coi.2012.12.003", "10.1016/j.coi.2019.03.007", "10.1016/j.colsurfb.2021.112022", "10.1016/j.conb.2008.09.018", "10.1016/j.conb.2009.09.006", "10.1016/j.conb.2010.08.014", "10.1016/j.conb.2015.01.008", "10.1016/j.conb.2018.12.006", "10.1016/j.conb.2018.12.012", "10.1016/j.conb.2019.01.024", "10.1016/j.conb.2019.05.009", "10.1016/j.conb.2021.03.013", "10.1016/j.conb.2021.04.006", "10.1016/j.conbuildmat.2022.126814", "10.1016/j.copbio.2017.11.003", "10.1016/j.copbio.2022.102854", "10.1016/j.cophys.2020.05.004", "10.1016/j.cotox.2018.08.001", "10.1016/j.coviro.2014.12.009", "10.1016/j.cpb.2020.100171", "10.1016/j.critrevonc.2017.11.007", "10.1016/j.critrevonc.2018.05.014", "10.1016/j.crmeth.2023.100464", "10.1016/j.cropro.2017.10.007", "10.1016/j.csbj.2020.03.020", "10.1016/j.ctrv.2017.05.003", "10.1016/j.cub.2004.08.044", "10.1016/j.cub.2008.02.075", "10.1016/j.cub.2011.10.022", "10.1016/j.cub.2015.03.027", "10.1016/j.cub.2017.01.051", "10.1016/j.cub.2017.06.040", "10.1016/j.cub.2019.06.085", "10.1016/j.cub.2020.04.008", "10.1016/j.cub.2020.05.032", "10.1016/j.cyto.2011.10.019", "10.1016/j.cyto.2020.155363", "10.1016/j.cytogfr.2005.01.009", "10.1016/j.cytogfr.2012.01.001", "10.1016/j.cytogfr.2016.08.002", "10.1016/j.cytogfr.2020.04.004", "10.1016/j.devcel.2016.06.004", "10.1016/j.devcel.2017.07.003", "10.1016/j.devcel.2017.12.003", "10.1016/j.dnarep.2008.12.012", "10.1016/j.dnarep.2010.09.023", "10.1016/j.dnarep.2011.11.007", "10.1016/j.dnarep.2012.09.004", "10.1016/j.dnarep.2014.06.005", "10.1016/j.dnarep.2018.09.002", "10.1016/j.dnarep.2020.102929", "10.1016/j.dnarep.2021.103171", "10.1016/j.drudis.2022.01.004", "10.1016/j.drugpo.2016.01.013", "10.1016/j.drugpo.2018.03.009", "10.1016/j.ebiom.2015.07.017", "10.1016/j.ebiom.2016.06.013", "10.1016/j.ebiom.2018.03.025", "10.1016/j.egg.2020.100058", "10.1016/j.eja.2006.08.011", "10.1016/j.ejca.2013.12.025", "10.1016/j.ejca.2015.06.125", "10.1016/j.ejcb.2008.04.001", "10.1016/j.ejmech.2018.06.016", "10.1016/j.ejmech.2019.07.026", "10.1016/j.ejphar.2014.01.040", "10.1016/j.ejphar.2017.06.022", "10.1016/j.ejphar.2021.174373", "10.1016/j.ejso.2009.01.004", "10.1016/j.envint.2019.105149", "10.1016/j.est.2022.104724", "10.1016/j.etp.2013.04.001", "10.1016/j.eururo.2015.12.054", "10.1016/j.eururo.2020.10.001", "10.1016/j.eururo.2021.12.039", "10.1016/j.exger.2010.11.028", "10.1016/j.exger.2013.06.009", "10.1016/j.exger.2017.02.001", "10.1016/j.exger.2017.02.005", "10.1016/j.exphem.2010.03.004", "10.1016/j.expneurol.2004.12.009", "10.1016/j.expneurol.2016.06.001", "10.1016/j.expneurol.2018.08.010", "10.1016/j.fct.2012.10.025", "10.1016/j.fct.2015.04.030", "10.1016/j.febslet.2007.01.084", "10.1016/j.febslet.2009.09.020", "10.1016/j.febslet.2009.10.069", "10.1016/j.febslet.2015.10.032", "10.1016/j.femsle.2005.01.038", "10.1016/j.foodres.2020.110093", "10.1016/j.freeradbiomed.2010.07.008", "10.1016/j.freeradbiomed.2015.03.026", "10.1016/j.gde.2019.07.004", "10.1016/j.gde.2020.02.015", "10.1016/j.gde.2020.04.005", "10.1016/j.gendis.2019.10.012", "10.1016/j.gendis.2021.03.009", "10.1016/j.gene.2003.10.016", "10.1016/j.gene.2015.08.002", "10.1016/j.gene.2019.02.078", "10.1016/j.gene.2020.145245", "10.1016/j.genrep.2017.04.004", "10.1016/j.ibmb.2016.03.006", "10.1016/j.ibmb.2019.05.007", "10.1016/j.ijbiomac.2016.10.073", "10.1016/j.ijbiomac.2020.07.120", "10.1016/j.ijbiomac.2021.08.121", "10.1016/j.ijbiomac.2022.09.152", "10.1016/j.ijbiomac.2023.123191", "10.1016/j.ijmm.2008.06.006", "10.1016/j.ijmm.2016.08.004", "10.1016/j.ijpara.2021.03.008", "10.1016/j.ijpddr.2017.04.004", "10.1016/j.ijpharm.2020.119337", "10.1016/j.ijrobp.2017.06.301", "10.1016/j.imbio.2017.10.005", "10.1016/j.imlet.2015.05.005", "10.1016/j.immuni.2015.08.006", "10.1016/j.immuni.2016.04.005", "10.1016/j.immuni.2017.11.021", "10.1016/j.immuni.2018.11.004", "10.1016/j.immuni.2019.12.011", "10.1016/j.immuni.2022.03.018", "10.1016/j.indcrop.2014.08.011", "10.1016/j.indcrop.2018.12.079", "10.1016/j.indcrop.2020.112397", "10.1016/j.indcrop.2020.112950", "10.1016/j.indcrop.2020.113026", "10.1016/j.indcrop.2021.113999", "10.1016/j.intimp.2020.106446", "10.1016/j.intimp.2020.106628", "10.1016/j.isci.2019.100799", "10.1016/j.it.2013.10.001", "10.1016/j.it.2015.02.008", "10.1016/j.it.2017.05.006", "10.1016/j.jaad.2020.03.132", "10.1016/j.jaad.2020.09.054", "10.1016/j.jaci.2009.07.008", "10.1016/j.jaci.2009.08.003", "10.1016/j.jaci.2011.06.023", "10.1016/j.jaci.2020.09.009", "10.1016/j.jaci.2020.12.648", "10.1016/j.jalz.2019.06.4616", "10.1016/j.jbc.2021.100525", "10.1016/j.jbiomech.2009.09.015", "10.1016/j.jbior.2020.100740", "10.1016/j.jbiotec.2012.01.016", "10.1016/j.jconrel.2010.08.019", "10.1016/j.jconrel.2014.07.040", "10.1016/j.jconrel.2016.01.043", "10.1016/j.jconrel.2016.08.002", "10.1016/j.jconrel.2017.09.012", "10.1016/j.jconrel.2020.12.002", "10.1016/j.jcv.2020.104361", "10.1016/j.jegh.2013.05.003", "10.1016/j.jep.2015.06.011", "10.1016/j.jgg.2021.06.017", "10.1016/j.jgo.2016.05.007", "10.1016/j.jinorgbio.2007.11.017", "10.1016/j.jinorgbio.2008.05.006", "10.1016/j.jinorgbio.2011.11.024", "10.1016/j.jinorgbio.2020.111070", "10.1016/j.jinsphys.2018.01.007", "10.1016/j.jiph.2018.06.005", "10.1016/j.jksus.2019.12.025", "10.1016/j.jmb.2005.12.032", "10.1016/j.jmb.2009.03.038", "10.1016/j.jmb.2015.01.016", "10.1016/j.jmb.2017.03.023", "10.1016/j.jmb.2018.05.023", "10.1016/j.jmb.2018.10.010", "10.1016/j.jmgm.2020.107710", "10.1016/j.jneumeth.2004.04.020", "10.1016/j.jneumeth.2014.08.017", "10.1016/j.jneuroim.2014.08.331", "10.1016/j.jneuroim.2019.04.016", "10.1016/j.jnutbio.2010.10.005", "10.1016/j.jphs.2019.03.002", "10.1016/j.jprot.2014.07.031", "10.1016/j.jprot.2018.11.001", "10.1016/j.jtauto.2021.100100", "10.1016/j.jtho.2019.08.1117", "10.1016/j.jtho.2020.05.008", "10.1016/j.jtho.2023.08.027", "10.1016/j.juro.2017.10.041", "10.1016/j.leukres.2014.04.013", "10.1016/j.lfs.2005.09.011", "10.1016/j.lfs.2010.10.009", "10.1016/j.lfs.2018.05.022", "10.1016/j.lfs.2019.04.053", "10.1016/j.lfs.2019.116688", "10.1016/j.lfs.2020.118219", "10.1016/j.lfs.2020.118313", "10.1016/j.lfs.2020.118478", "10.1016/j.lfs.2021.119034", "10.1016/j.lfs.2021.119270", "10.1016/j.lungcan.2011.05.029", "10.1016/j.mad.2012.06.002", "10.1016/j.margen.2016.10.003", "10.1016/j.matbio.2016.03.004", "10.1016/j.matbio.2018.03.021", "10.1016/j.mbplus.2019.100009", "10.1016/j.mbplus.2020.100056", "10.1016/j.mcat.2018.03.009", "10.1016/j.mce.2011.12.015", "10.1016/j.mce.2015.01.001", "10.1016/j.mce.2017.04.002", "10.1016/j.mcn.2003.12.012", "10.1016/j.mcn.2005.12.006", "10.1016/j.mcn.2006.08.007", "10.1016/j.mcn.2006.11.008", "10.1016/j.mcn.2009.07.014", "10.1016/j.mcn.2010.01.002", "10.1016/j.mcn.2015.11.010", "10.1016/j.medine.2021.02.005", "10.1016/j.meegid.2020.104474", "10.1016/j.mehy.2005.06.018", "10.1016/j.mib.2010.09.001", "10.1016/j.mib.2017.01.002", "10.1016/j.mib.2020.07.009", "10.1016/j.mib.2020.11.005", "10.1016/j.mib.2021.01.017", "10.1016/j.micpath.2020.104621", "10.1016/j.micron.2020.102948", "10.1016/j.mimet.2019.105655", "10.1016/j.mito.2010.08.004", "10.1016/j.mito.2013.03.006", "10.1016/j.mito.2015.01.007", "10.1016/j.mito.2015.01.008", "10.1016/j.mito.2020.05.011", "10.1016/j.mod.2016.02.004", "10.1016/j.modgep.2006.12.005", "10.1016/j.molbiopara.2009.04.008", "10.1016/j.molcel.2004.05.024", "10.1016/j.molcel.2004.06.011", "10.1016/j.molcel.2004.06.023", "10.1016/j.molcel.2006.07.018", "10.1016/j.molcel.2007.02.021", "10.1016/j.molcel.2010.05.004", "10.1016/j.molcel.2010.07.019", "10.1016/j.molcel.2010.09.011", "10.1016/j.molcel.2011.05.026", "10.1016/j.molcel.2012.05.021", "10.1016/j.molcel.2014.08.001", "10.1016/j.molcel.2015.04.011", "10.1016/j.molcel.2016.04.001", "10.1016/j.molcel.2016.07.027", "10.1016/j.molcel.2017.01.016", "10.1016/j.molcel.2017.07.002", "10.1016/j.molcel.2017.09.017", "10.1016/j.molcel.2018.06.005", "10.1016/j.molcel.2018.09.013", "10.1016/j.molcel.2018.12.005", "10.1016/j.molcel.2019.02.016", "10.1016/j.molcel.2019.05.032", "10.1016/j.molcel.2019.06.013", "10.1016/j.molcel.2020.11.015", "10.1016/j.molcel.2020.12.018", "10.1016/j.molcel.2021.01.031", "10.1016/j.molcel.2021.03.008", "10.1016/j.molcel.2021.03.026", "10.1016/j.molcel.2021.04.015", "10.1016/j.molcel.2021.07.004", "10.1016/j.molimm.2021.06.001", "10.1016/j.molmet.2017.02.002", "10.1016/j.molmet.2021.101171", "10.1016/j.molonc.2014.12.013", "10.1016/j.molp.2016.05.001", "10.1016/j.molp.2017.03.002", "10.1016/j.molp.2021.01.020", "10.1016/j.molstruc.2020.128280", "10.1016/j.mrrev.2018.02.003", "10.1016/j.msard.2013.04.002", "10.1016/j.nbd.2005.02.006", "10.1016/j.nbd.2010.08.017", "10.1016/j.nbd.2016.05.003", "10.1016/j.nbd.2016.11.003", "10.1016/j.nbd.2016.12.013", "10.1016/j.nbd.2018.05.004", "10.1016/j.nbt.2018.02.008", "10.1016/j.nec.2006.10.006", "10.1016/j.neuint.2017.05.003", "10.1016/j.neuint.2018.04.009", "10.1016/j.neuint.2018.08.005", "10.1016/j.neuint.2019.104463", "10.1016/j.neuint.2019.104491", "10.1016/j.neulet.2010.10.075", "10.1016/j.neulet.2012.07.013", "10.1016/j.neulet.2014.06.053", "10.1016/j.neulet.2019.134673", "10.1016/j.neures.2018.09.009", "10.1016/j.neurobiolaging.2009.11.003", "10.1016/j.neurobiolaging.2010.05.027", "10.1016/j.neurobiolaging.2013.04.014", "10.1016/j.neurobiolaging.2013.10.089", "10.1016/j.neurobiolaging.2015.07.020", "10.1016/j.neurobiolaging.2017.10.014", "10.1016/j.neurobiolaging.2018.03.017", "10.1016/j.neuroimage.2013.02.071", "10.1016/j.neurol.2013.11.005", "10.1016/j.neuron.2005.01.012", "10.1016/j.neuron.2006.06.012", "10.1016/j.neuron.2006.10.019", "10.1016/j.neuron.2006.11.019", "10.1016/j.neuron.2008.11.010", "10.1016/j.neuron.2012.03.026", "10.1016/j.neuron.2013.12.021", "10.1016/j.neuron.2014.01.001", "10.1016/j.neuron.2014.10.032", "10.1016/j.neuron.2015.04.011", "10.1016/j.neuron.2019.01.008", "10.1016/j.neuron.2020.08.002", "10.1016/j.neuron.2020.10.006", "10.1016/j.neuron.2021.03.006", "10.1016/j.neuropharm.2004.06.030", "10.1016/j.neuropharm.2013.08.013", "10.1016/j.neuroscience.2005.10.037", "10.1016/j.neuroscience.2006.01.027", "10.1016/j.neuroscience.2018.12.017", "10.1016/j.neuroscience.2020.02.015", "10.1016/j.neuroscience.2020.06.018", "10.1016/j.nmd.2010.03.017", "10.1016/j.ntt.2021.107015", "10.1016/j.omtm.2020.04.027", "10.1016/j.omtm.2020.09.001", "10.1016/j.omtn.2017.02.006", "10.1016/j.omtn.2019.02.009", "10.1016/j.omtn.2019.12.021", "10.1016/j.omtn.2020.06.027", "10.1016/j.omtn.2020.12.030", "10.1016/j.omtn.2021.03.003", "10.1016/j.pbi.2020.101991", "10.1016/j.pdpdt.2017.08.010", "10.1016/j.peptides.2011.06.007", "10.1016/j.peptides.2014.05.009", "10.1016/j.peptides.2017.10.015", "10.1016/j.pharmthera.2007.06.001", "10.1016/j.pharmthera.2015.11.003", "10.1016/j.phrs.2015.04.012", "10.1016/j.phrs.2020.105359", "10.1016/j.phymed.2021.153553", "10.1016/j.physbeh.2018.03.037", "10.1016/j.phytochem.2015.03.006", "10.1016/j.placenta.2008.06.007", "10.1016/j.plantsci.2011.07.001", "10.1016/j.plaphy.2015.01.012", "10.1016/j.plaphy.2018.03.027", "10.1016/j.plasmid.2020.102515", "10.1016/j.pmrj.2018.07.003", "10.1016/j.pneurobio.2016.03.007", "10.1016/j.pneurobio.2017.03.003", "10.1016/j.pnpbp.2017.12.001", "10.1016/j.pnpbp.2019.109670", "10.1016/j.polymdegradstab.2011.12.023", "10.1016/j.prnil.2016.07.002", "10.1016/j.proghi.2008.04.001", "10.1016/j.psyneuen.2020.104892", "10.1016/j.pulmoe.2020.10.017", "10.1016/j.pupt.2017.03.010", "10.1016/j.radonc.2015.05.007", "10.1016/j.redox.2019.101398", "10.1016/j.regpep.2009.11.002", "10.1016/j.regpep.2011.04.006", "10.1016/j.reth.2018.08.001", "10.1016/j.sbi.2009.08.003", "10.1016/j.sbi.2013.08.002", "10.1016/j.sbi.2018.04.005", "10.1016/j.sbi.2018.09.009", "10.1016/j.sbi.2020.06.010", "10.1016/j.scienta.2010.08.007", "10.1016/j.scienta.2019.108904", "10.1016/j.scr.2010.04.005", "10.1016/j.semarthrit.2013.02.001", "10.1016/j.semcancer.2005.07.008", "10.1016/j.semcancer.2018.02.010", "10.1016/j.semcancer.2021.02.007", "10.1016/j.semcdb.2017.10.030", "10.1016/j.semcdb.2019.05.004", "10.1016/j.smim.2021.101534", "10.1016/j.smim.2021.101541", "10.1016/j.snb.2021.130270", "10.1016/j.stem.2010.11.028", "10.1016/j.stem.2012.12.002", "10.1016/j.stem.2013.01.006", "10.1016/j.stem.2015.01.004", "10.1016/j.stem.2015.06.007", "10.1016/j.stem.2016.10.015", "10.1016/j.stem.2017.04.003", "10.1016/j.stem.2017.06.012", "10.1016/j.stem.2018.09.008", "10.1016/j.stemcr.2013.09.006", "10.1016/j.stemcr.2014.03.007", "10.1016/j.stemcr.2014.06.012", "10.1016/j.stemcr.2015.10.011", "10.1016/j.stemcr.2016.12.010", "10.1016/j.stemcr.2017.05.011", "10.1016/j.stemcr.2018.03.007", "10.1016/j.stemcr.2020.03.019", "10.1016/j.stemcr.2021.06.010", "10.1016/j.str.2017.07.017", "10.1016/j.str.2017.09.002", "10.1016/j.synbio.2020.08.003", "10.1016/j.taap.2021.115573", "10.1016/j.tcb.2019.12.008", "10.1016/j.tcb.2021.04.004", "10.1016/j.tem.2019.09.003", "10.1016/j.tibs.2004.12.002", "10.1016/j.tibs.2020.11.001", "10.1016/j.tibtech.2018.08.002", "10.1016/j.tig.2004.09.006", "10.1016/j.tig.2018.08.005", "10.1016/j.tim.2016.03.003", "10.1016/j.tins.2017.04.002", "10.1016/j.tiv.2016.11.007", "10.1016/j.toxicon.2017.12.019", "10.1016/j.toxlet.2006.08.018", "10.1016/j.toxlet.2016.10.004", "10.1016/j.toxlet.2018.12.008", "10.1016/j.toxrep.2017.12.010", "10.1016/j.tranon.2021.101029", "10.1016/j.trecan.2018.09.001", "10.1016/j.trechm.2019.07.002", "10.1016/j.trsl.2015.07.008", "10.1016/j.trsl.2015.09.004", "10.1016/j.trsl.2019.03.006", "10.1016/j.ucl.2020.10.004", "10.1016/j.urolonc.2021.01.010", "10.1016/j.vaccine.2012.02.031", "10.1016/j.virol.2007.11.028", "10.1016/j.xcrm.2021.100263", "10.1016/j.xcrm.2021.100291", "10.1016/j.ydbio.2004.07.038", "10.1016/j.ydbio.2008.05.262", "10.1016/j.ydbio.2013.02.012", "10.1016/j.ydbio.2013.05.002", "10.1016/j.ydbio.2015.06.011", "10.1016/j.ydbio.2015.07.008", "10.1016/j.ydbio.2019.10.004", "10.1016/j.ydbio.2021.08.001", "10.1016/j.yexcr.2003.11.024", "10.1016/j.yexcr.2010.05.001", "10.1016/j.yexcr.2020.111822", "10.1016/j.yexmp.2012.05.009", "10.1016/j.ygeno.2012.05.008", "10.1016/j.ygeno.2015.01.007", "10.1016/j.ygeno.2015.02.002", "10.1016/j.ygeno.2019.07.024", "10.1016/j.ygyno.2020.11.026", "10.1016/j.yjmcc.2020.11.008", "10.1016/j.yjsbx.2020.100022", "10.1016/j.ymben.2016.09.003", "10.1016/j.ymben.2018.06.006", "10.1016/j.ymben.2020.12.002", "10.1016/j.ymeth.2010.03.009", "10.1016/j.ymeth.2014.06.014", "10.1016/j.ymeth.2017.03.021", "10.1016/j.ymeth.2019.05.023", "10.1016/j.ymeth.2019.06.016", "10.1016/j.ymeth.2019.07.015", "10.1016/j.ymeth.2019.07.024", "10.1016/j.ymgme.2004.09.011", "10.1016/j.ympev.2013.01.015", "10.1016/j.ymthe.2017.08.015", "10.1016/j.ymthe.2018.05.003", "10.1016/j.ymthe.2018.10.008", "10.1016/j.ymthe.2019.07.015", "10.1016/j.ymthe.2019.12.012", "10.1016/s0002-9440(10)62229-8", "10.1016/s0002-9440(10)64046-1", "10.1016/s0006-8993(96)01481-3", "10.1016/s0012-1606(03)00123-4", "10.1016/s0014-5793(96)01303-8", "10.1016/s0021-9258(17)36982-x", "10.1016/s0021-9258(18)33908-5", "10.1016/s0021-9258(18)48413-x", "10.1016/s0021-9258(18)62326-9", "10.1016/s0021-9673(02)02057-5", "10.1016/s0022-1759(03)00265-5", "10.1016/s0022-2836(05)80360-2", "10.1016/s0023-6438(95)80008-5", "10.1016/s0027-5107(99)00212-2", "10.1016/s0031-9384(03)00152-5", "10.1016/s0040-4020(97)00714-x", "10.1016/s0045-6535(00)00116-8", "10.1016/s0065-230x(08)60765-4", "10.1016/s0065-3233(02)61005-8", "10.1016/s0070-2153(05)69004-7", "10.1016/s0076-6879(07)28002-4", "10.1016/s0076-6879(10)78026-5", "10.1016/s0076-6879(96)74029-6", "10.1016/s0083-6729(10)83007-9", "10.1016/s0092-8674(00)80184-1", "10.1016/s0092-8674(00)80581-4", "10.1016/s0092-8674(00)80582-6", "10.1016/s0092-8674(00)80783-7", "10.1016/s0092-8674(00)80860-0", "10.1016/s0092-8674(00)80956-3", "10.1016/s0092-8674(00)81276-3", "10.1016/s0092-8674(00)81515-9", "10.1016/s0092-8674(00)81886-3", "10.1016/s0092-8674(01)00224-0", "10.1016/s0092-8674(01)00638-9", "10.1016/s0092-8674(02)00677-3", "10.1016/s0092-8674(02)00678-5", "10.1016/s0092-8674(02)00724-9", "10.1016/s0092-8674(02)00835-8", "10.1016/s0092-8674(02)00968-6", "10.1016/s0092-8674(03)00432-x", "10.1016/s0092-8674(03)01077-8", "10.1016/s0092-8674(94)90562-2", "10.1016/s0140-6736(04)16983-3", "10.1016/s0140-6736(20)30183-5", "10.1016/s0140-6736(20)30566-3", "10.1016/s0149-7634(00)00014-2", "10.1016/s0165-5728(84)80017-x", "10.1016/s0166-2236(97)01222-8", "10.1016/s0166-2236(99)01428-9", "10.1016/s0168-9525(02)02723-3", "10.1016/s0169-328x(96)00244-6", "10.1016/s0248-4900(01)01156-x", "10.1016/s0300-9084(01)01301-3", "10.1016/s0301-0082(99)00030-1", "10.1016/s0306-4522(03)00394-4", "10.1016/s0306-4522(98)00548-x", "10.1016/s0306-4522(98)00639-3", "10.1016/s0361-9230(99)00065-9", "10.1016/s0378-1119(99)00024-4", "10.1016/s0378-1119(99)00280-2", "10.1016/s0896-6273(00)00148-3", "10.1016/s0896-6273(00)80897-1", "10.1016/s0896-6273(01)80048-9", "10.1016/s0896-6273(02)00758-4", "10.1016/s0896-6273(02)00793-6", "10.1016/s0896-6273(03)00365-9", "10.1016/s0925-4773(99)00314-7", "10.1016/s0925-4773(99)00330-5", "10.1016/s0959-437x(03)00024-8", "10.1016/s0959-4388(00)00092-1", "10.1016/s0959-4388(98)80098-6", "10.1016/s0960-9822(00)00511-x", "10.1016/s0960-9822(01)00567-x", "10.1016/s0962-8924(02)02404-2", "10.1016/s0968-0004(00)01627-3", "10.1016/s0968-0004(03)00162-2", "10.1016/s1001-0742(10)60422-6", "10.1016/s1044-7431(02)00030-1", "10.1016/s1063-5823(01)51010-8", "10.1016/s1074-7613(00)80165-x", "10.1016/s1084-9521(03)00007-7", "10.1016/s1097-2765(00)00054-x", "10.1016/s1097-2765(01)00244-1", "10.1016/s1357-4310(99)01459-8", "10.1016/s1359-6446(00)01509-9", "10.1016/s1360-1385(00)01838-0", "10.1016/s1369-5274(01)00269-7", "10.1016/s1470-2045(12)70372-8", "10.1016/s1470-2045(13)70585-0", "10.1016/s1470-2045(14)71021-6", "10.1016/s1470-2045(14)71113-1", "10.1016/s2666-1683(20)32688-4", "10.1017/cbo9780511544873.036", "10.1017/s0007114517002665", "10.1017/s000711452000224x", "10.1017/s0022149x1000043x", "10.1017/s0031182016001554", "10.1017/s0317167100007733", "10.1017/s1479262111000645", "10.1021/acs.accounts.9b00079", "10.1021/acs.accounts.9b00106", "10.1021/acs.analchem.8b03837", "10.1021/acs.analchem.8b05238", "10.1021/acs.biochem.0c00537", "10.1021/acs.biochem.6b00480", "10.1021/acs.biochem.6b01106", "10.1021/acs.biochem.7b00507", "10.1021/acs.biochem.8b00084", "10.1021/acs.biochem.8b00677", "10.1021/acs.biochem.8b01081", "10.1021/acs.biochem.9b00160", "10.1021/acs.bioconjchem.7b00042", "10.1021/acs.bioconjchem.7b00669", "10.1021/acs.bioconjchem.9b00560", "10.1021/acs.biomac.6b01784", "10.1021/acs.biomac.7b00324", "10.1021/acs.biomac.9b00478", "10.1021/acs.cgd.9b01500", "10.1021/acs.chemrestox.6b00451", "10.1021/acs.chemrev.0c01338", "10.1021/acs.chemrev.1c01031", "10.1021/acs.est.9b07747", "10.1021/acs.jcim.0c00281", "10.1021/acs.jctc.8b00912", "10.1021/acs.jmedchem.0c02145", "10.1021/acs.jmedchem.2c01106", "10.1021/acs.jmedchem.5b01242", "10.1021/acs.jmedchem.7b01242", "10.1021/acs.jmedchem.8b01668", "10.1021/acs.jmedchem.9b01721", "10.1021/acs.jmedchem.9b02164", "10.1021/acs.jpcb.6b08798", "10.1021/acs.jpcb.7b11352", "10.1021/acs.jpcb.9b07036", "10.1021/acs.jproteome.0c00526", "10.1021/acs.jproteome.0c00639", "10.1021/acs.jproteome.1c00373", "10.1021/acs.langmuir.5b04168", "10.1021/acs.langmuir.6b00386", "10.1021/acs.molpharmaceut.1c00048", "10.1021/acs.nanolett.0c04783", "10.1021/acs.nanolett.9b01571", "10.1021/acsami.6b08548", "10.1021/acsbiomaterials.0c00854", "10.1021/acsbiomaterials.0c01287", "10.1021/acsbiomaterials.1c00490", "10.1021/acsbiomaterials.8b00491", "10.1021/acsbiomaterials.8b01262", "10.1021/acscentsci.9b00956", "10.1021/acschembio.1c00405", "10.1021/acschembio.7b00361", "10.1021/acschembio.7b00657", "10.1021/acschembio.7b00777", "10.1021/acschembio.8b00350", "10.1021/acschembio.9b00842", "10.1021/acsinfecdis.9b00227", "10.1021/acsmacrolett.0c00317", "10.1021/acsmacrolett.8b00462", "10.1021/acsmacrolett.9b00046", "10.1021/acsnano.0c03023", "10.1021/acsnano.0c03881", "10.1021/acsnano.0c04707", "10.1021/acsnano.0c07721", "10.1021/acsnano.6b06061", "10.1021/acsnano.7b03226", "10.1021/acsnano.8b05286", "10.1021/acsnano.8b07241", "10.1021/acsnano.8b08346", "10.1021/acsomega.8b01911", "10.1021/acsomega.8b02514", "10.1021/acssynbio.5b00216", "10.1021/acssynbio.7b00268", "10.1021/acssynbio.8b00527", "10.1021/acssynbio.9b00143", "10.1021/acssynbio.9b00183", "10.1021/acssynbio.9b00232", "10.1021/am503359g", "10.1021/bc1000824", "10.1021/bc800398d", "10.1021/bi00138a018", "10.1021/bi00559a004", "10.1021/bi00563a010", "10.1021/bi00661a009", "10.1021/bi00676a006", "10.1021/bi034168j", "10.1021/bi051403k", "10.1021/bi060993z", "10.1021/bi201418k", "10.1021/bi401017b", "10.1021/bi501024u", "10.1021/bi981788p", "10.1021/cb4008265", "10.1021/cb500726b", "10.1021/cb900266r", "10.1021/ci100070m", "10.1021/ci3001277", "10.1021/cn100037d", "10.1021/cr068207j", "10.1021/cr0783479", "10.1021/cr400064k", "10.1021/cr4004665", "10.1021/cr500452k", "10.1021/cr800556u", "10.1021/cr900077w", "10.1021/es3053027", "10.1021/ic00168a043", "10.1021/ja00232a028", "10.1021/ja00329a059", "10.1021/ja00759a045", "10.1021/ja00840a055", "10.1021/ja00853a038", "10.1021/ja044996f", "10.1021/ja4024012", "10.1021/ja8053805", "10.1021/jacs.3c02423", "10.1021/jacs.6b06186", "10.1021/jm501680m", "10.1021/jo011148j", "10.1021/jp013392k", "10.1021/jp045092j", "10.1021/jp054975n", "10.1021/jp9092332", "10.1021/la902587p", "10.1021/nn403085w", "10.1021/nn403275p", "10.1021/nn406584y", "10.1021/np990549f", "10.1021/pr200434y", "10.1021/pr200918f", "10.1021/pr201211w", "10.1021/pr400291p", "10.1021/pr400630w", "10.1021/pr401245g", "10.1021/pr8008644", "10.1021/pr9006987", "10.1021/pr900884g", "10.1023/a:1020204729122", "10.1023/a:1023941703493", "10.1034/j.1601-183x.2002.102081.x", "10.1038/12963", "10.1038/20459", "10.1038/292154a0", "10.1038/303390a0", "10.1038/31729", "10.1038/31735", "10.1038/340531a0", "10.1038/35000065", "10.1038/35023568", "10.1038/35036572", "10.1038/35049541", "10.1038/35052535", "10.1038/35065016", "10.1038/35078107", "10.1038/35100529", "10.1038/35869", "10.1038/35888", "10.1038/367371a0", "10.1038/369242a0", "10.1038/3949", "10.1038/44385", "10.1038/70986", "10.1038/74199", "10.1038/76584", "10.1038/86011", "10.1038/90609", "10.1038/9189", "10.1038/bjc.1991.28", "10.1038/bjc.2012.410", "10.1038/bjc.2013.748", "10.1038/bjc.2014.622", "10.1038/bjc.2017.434", "10.1038/cdd.2011.143", "10.1038/cdd.2015.53", "10.1038/cddis.2013.154", "10.1038/cddis.2014.10", "10.1038/cddis.2016.427", "10.1038/cddis.2017.504", "10.1038/celldisc.2017.18", "10.1038/cr.2007.83", "10.1038/cr.2010.154", "10.1038/cr.2010.63", "10.1038/cr.2015.3", "10.1038/cr.2016.157", "10.1038/d41586-019-00010-6", "10.1038/ejcn.2016.256", "10.1038/emboj.2008.268", "10.1038/emboj.2010.23", "10.1038/emboj.2011.448", "10.1038/embor.2010.185", "10.1038/embor.2011.109", "10.1038/embor.2011.82", "10.1038/embor.2012.127", "10.1038/icb.2011.55", "10.1038/icb.2015.100", "10.1038/ijo.2014.177", "10.1038/ijo.2015.231", "10.1038/ismej.2012.8", "10.1038/ja.2013.95", "10.1038/ja.2014.135", "10.1038/jcbfm.2009.282", "10.1038/jid.2014.90", "10.1038/ki.2010.467", "10.1038/labinvest.3700523", "10.1038/modpathol.2016.63", "10.1038/mp.2015.156", "10.1038/msb.2011.32", "10.1038/msb.2012.12", "10.1038/msb.2012.73", "10.1038/msb4100050", "10.1038/mt.2010.313", "10.1038/mt.2013.185", "10.1038/mt.2016.172", "10.1038/nature01062", "10.1038/nature02026", "10.1038/nature02033", "10.1038/nature02178", "10.1038/nature02791", "10.1038/nature04342", "10.1038/nature06145", "10.1038/nature07205", "10.1038/nature08027", "10.1038/nature08909", "10.1038/nature09267", "10.1038/nature09342", "10.1038/nature09611", "10.1038/nature10110", "10.1038/nature10673", "10.1038/nature11125", "10.1038/nature11183", "10.1038/nature11247", "10.1038/nature11538", "10.1038/nature12319", "10.1038/nature12320", "10.1038/nature12450", "10.1038/nature12474", "10.1038/nature12776", "10.1038/nature12962", "10.1038/nature13427", "10.1038/nature13695", "10.1038/nature13992", "10.1038/nature14019", "10.1038/nature14064", "10.1038/nature14136", "10.1038/nature14248", "10.1038/nature14292", "10.1038/nature15730", "10.1038/nature17676", "10.1038/nature19824", "10.1038/nature20794", "10.1038/nature21078", "10.1038/nature22308", "10.1038/nature22342", "10.1038/nature22822", "10.1038/nature22989", "10.1038/nature23451", "10.1038/nature23875", "10.1038/nature24028", "10.1038/nature24281", "10.1038/nature25999", "10.1038/nbt.1508", "10.1038/nbt.1529", "10.1038/nbt.1861", "10.1038/nbt.1877", "10.1038/nbt.1883", "10.1038/nbt.2249", "10.1038/nbt.2675", "10.1038/nbt.2842", "10.1038/nbt.3055", "10.1038/nbt.3101", "10.1038/nbt.3104", "10.1038/nbt.3122", "10.1038/nbt.3190", "10.1038/nbt.3192", "10.1038/nbt.3198", "10.1038/nbt.3235", "10.1038/nbt.3295", "10.1038/nbt.3435", "10.1038/nbt.3437", "10.1038/nbt.3481", "10.1038/nbt.3536", "10.1038/nbt.3704", "10.1038/nbt.3715", "10.1038/nbt.3718", "10.1038/nbt.4096", "10.1038/nbt.4151", "10.1038/nbt1201-1134", "10.1038/nbt1310", "10.1038/ncb1001-861", "10.1038/ncb1101-945", "10.1038/ncb2048", "10.1038/ncb2070", "10.1038/ncb2600", "10.1038/nchem.1548", "10.1038/nchembio.1479", "10.1038/nchembio.2217", "10.1038/nchembio.2297", "10.1038/nchembio.2337", "10.1038/nchembio0605-13", "10.1038/ncomms11383", "10.1038/ncomms12564", "10.1038/ncomms14056", "10.1038/ncomms14432", "10.1038/ncomms14532", "10.1038/ncomms14648", "10.1038/ncomms2009", "10.1038/ncomms2607", "10.1038/ncomms5136", "10.1038/ncomms6555", "10.1038/ncomms8303", "10.1038/ncomms8526", "10.1038/ncomms9808", "10.1038/ng.2714", "10.1038/ng.3165", "10.1038/ng.3225", "10.1038/ng.3593", "10.1038/ng.3637", "10.1038/ng.630", "10.1038/ng0598-63", "10.1038/ng1180", "10.1038/ni.2035", "10.1038/ni.2703", "10.1038/ni.3656", "10.1038/ni1582", "10.1038/nm.3175", "10.1038/nm.3286", "10.1038/nm.3929", "10.1038/nm.4053", "10.1038/nm1075", "10.1038/nm1093", "10.1038/nm1609", "10.1038/nmat4489", "10.1038/nmeth.1923", "10.1038/nmeth.2019", "10.1038/nmeth.2681", "10.1038/nmeth.2684", "10.1038/nmeth.2733", "10.1038/nmeth.3027", "10.1038/nmeth.3415", "10.1038/nmeth.3438", "10.1038/nmeth.3543", "10.1038/nmeth.3630", "10.1038/nmeth.4197", "10.1038/nmeth947", "10.1038/nn.2220", "10.1038/nn.2467", "10.1038/nn.2709", "10.1038/nn.3896", "10.1038/nn.4100", "10.1038/nn.4104", "10.1038/nn.4587", "10.1038/nn1440", "10.1038/nn1620", "10.1038/nn800", "10.1038/nn828", "10.1038/npp.2016.211", "10.1038/nprot.2007.422", "10.1038/nprot.2009.186", "10.1038/nprot.2013.132", "10.1038/nprot.2013.143", "10.1038/nprot.2015.075", "10.1038/nprot.2018.005", "10.1038/nrc.2016.97", "10.1038/nrc1388", "10.1038/nrc2090", "10.1038/nrc2250", "10.1038/nrc2657", "10.1038/nrc3982", "10.1038/nrclinonc.2018.29", "10.1038/nrd1251", "10.1038/nrd1695", "10.1038/nrd3428", "10.1038/nrg.2016.127", "10.1038/nrg.2017.97", "10.1038/nrg2697", "10.1038/nrg3796", "10.1038/nri.2016.80", "10.1038/nri.2017.49", "10.1038/nri2056", "10.1038/nri2506", "10.1038/nri2536", "10.1038/nri3049", "10.1038/nri3682", "10.1038/nrm.2017.16", "10.1038/nrm.2017.48", "10.1038/nrm2593", "10.1038/nrm3525", "10.1038/nrm3742", "10.1038/nrmicro.2017.15", "10.1038/nrmicro1931", "10.1038/nrn.2016.46", "10.1038/nrn1389", "10.1038/nrn1906", "10.1038/nrn2495", "10.1038/nrn2978", "10.1038/nrurol.2017.187", "10.1038/nsmb.1597", "10.1038/nsmb.2185", "10.1038/nsmb.3220", "10.1038/nsmb1048", "10.1038/nsmb740", "10.1038/onc.2009.269", "10.1038/onc.2009.331", "10.1038/onc.2009.367", "10.1038/onc.2013.320", "10.1038/onc.2014.64", "10.1038/onc.2015.274", "10.1038/onc.2016.166", "10.1038/pcan.2010.44", "10.1038/s10038-017-0399-2", "10.1038/s12276-020-00519-1", "10.1038/s12276-020-0435-8", "10.1038/s12276-022-00898-7", "10.1038/s41366-019-0513-y", "10.1038/s41366-021-00955-7", "10.1038/s41375-020-0943-5", "10.1038/s41375-022-01620-2", "10.1038/s41375-023-02113-6", "10.1038/s41380-023-02108-w", "10.1038/s41380-023-02251-4", "10.1038/s41380-023-02348-w", "10.1038/s41380-024-02502-y", "10.1038/s41386-018-0125-6", "10.1038/s41388-018-0557-9", "10.1038/s41388-018-0586-4", "10.1038/s41388-019-1084-z", "10.1038/s41388-020-01478-7", "10.1038/s41388-020-1270-z", "10.1038/s41388-021-01736-2", "10.1038/s41388-022-02253-6", "10.1038/s41389-020-00263-1", "10.1038/s41391-023-00712-z", "10.1038/s41392-020-00422-1", "10.1038/s41392-021-00631-2", "10.1038/s41392-021-00641-0", "10.1038/s41392-021-00823-w", "10.1038/s41392-022-01250-1", "10.1038/s41392-023-01309-7", "10.1038/s41392-023-01337-3", "10.1038/s41392-023-01424-5", "10.1038/s41396-018-0109-x", "10.1038/s41396-018-0225-7", "10.1038/s41396-018-0343-2", "10.1038/s41396-021-00921-1", "10.1038/s41398-018-0095-9", "10.1038/s41398-020-00976-2", "10.1038/s41398-023-02335-3", "10.1038/s41398-023-02701-1", "10.1038/s41401-021-00618-3", "10.1038/s41401-022-00927-1", "10.1038/s41416-018-0313-5", "10.1038/s41416-019-0509-3", "10.1038/s41416-019-0636-x", "10.1038/s41416-020-0951-2", "10.1038/s41416-021-01269-1", "10.1038/s41416-021-01677-3", "10.1038/s41418-020-00679-7", "10.1038/s41418-022-00936-x", "10.1038/s41419-017-0122-4", "10.1038/s41419-018-0766-8", "10.1038/s41419-018-0808-2", "10.1038/s41419-018-0990-2", "10.1038/s41419-019-1966-6", "10.1038/s41419-020-02973-1", "10.1038/s41420-024-01930-7", "10.1038/s41420-024-02057-5", "10.1038/s41421-018-0049-7", "10.1038/s41421-019-0120-z", "10.1038/s41421-022-00450-x", "10.1038/s41422-018-0115-6", "10.1038/s41422-020-00460-y", "10.1038/s41422-020-0379-5", "10.1038/s41422-024-00934-3", "10.1038/s41423-020-00620-5", "10.1038/s41423-020-0402-2", "10.1038/s41423-021-00750-4", "10.1038/s41431-020-00767-9", "10.1038/s41434-021-00251-z", "10.1038/s41467-017-00124-3", "10.1038/s41467-017-00460-4", "10.1038/s41467-017-00769-0", "10.1038/s41467-017-01559-4", "10.1038/s41467-017-01836-2", "10.1038/s41467-017-02755-y", "10.1038/s41467-018-02896-8", "10.1038/s41467-018-03566-5", "10.1038/s41467-018-04209-5", "10.1038/s41467-018-04569-y", "10.1038/s41467-018-04592-z", "10.1038/s41467-018-04899-x", "10.1038/s41467-018-05425-9", "10.1038/s41467-018-05973-0", "10.1038/s41467-018-06118-z", "10.1038/s41467-018-07120-1", "10.1038/s41467-018-07324-5", "10.1038/s41467-018-07827-1", "10.1038/s41467-018-07845-z", "10.1038/s41467-018-08053-5", "10.1038/s41467-018-08167-w", "10.1038/s41467-019-08567-6", "10.1038/s41467-019-09049-5", "10.1038/s41467-019-09551-w", "10.1038/s41467-019-09983-4", "10.1038/s41467-019-10421-8", "10.1038/s41467-019-10844-3", "10.1038/s41467-019-10845-2", "10.1038/s41467-019-11105-z", "10.1038/s41467-019-11782-w", "10.1038/s41467-019-11955-7", "10.1038/s41467-019-12438-5", "10.1038/s41467-019-12489-8", "10.1038/s41467-019-12574-y", "10.1038/s41467-019-12812-3", "10.1038/s41467-019-12861-8", "10.1038/s41467-019-13368-y", "10.1038/s41467-019-13383-z", "10.1038/s41467-020-14466-y", "10.1038/s41467-020-14853-5", "10.1038/s41467-020-14957-y", "10.1038/s41467-020-15053-x", "10.1038/s41467-020-15491-7", "10.1038/s41467-020-15971-w", "10.1038/s41467-020-17240-2", "10.1038/s41467-020-17358-3", "10.1038/s41467-020-17962-3", "10.1038/s41467-020-19737-2", "10.1038/s41467-020-19808-4", "10.1038/s41467-020-20481-w", "10.1038/s41467-020-20496-3", "10.1038/s41467-020-20785-x", "10.1038/s41467-021-21118-2", "10.1038/s41467-021-21173-9", "10.1038/s41467-021-21309-x", "10.1038/s41467-021-21478-9", "10.1038/s41467-021-21873-2", "10.1038/s41467-021-23221-w", "10.1038/s41467-021-23334-2", "10.1038/s41467-021-23576-0", "10.1038/s41467-021-23807-4", "10.1038/s41467-021-23823-4", "10.1038/s41467-021-23824-3", "10.1038/s41467-021-24773-7", "10.1038/s41467-021-25272-5", "10.1038/s41467-021-25624-1", "10.1038/s41467-021-26041-0", "10.1038/s41467-021-26462-x", "10.1038/s41467-021-26489-0", "10.1038/s41467-021-26880-x", "10.1038/s41467-021-27294-5", "10.1038/s41467-022-28872-x", "10.1038/s41467-022-29135-5", "10.1038/s41467-022-29507-x", "10.1038/s41467-022-29989-9", "10.1038/s41467-022-30071-7", "10.1038/s41467-022-30515-0", "10.1038/s41467-022-31386-1", "10.1038/s41467-022-31532-9", "10.1038/s41467-022-31830-2", "10.1038/s41467-022-32267-3", "10.1038/s41467-022-32285-1", "10.1038/s41467-022-32503-w", "10.1038/s41467-022-32552-1", "10.1038/s41467-022-32719-w", "10.1038/s41467-022-32782-3", "10.1038/s41467-022-33229-5", "10.1038/s41467-022-34588-9", "10.1038/s41467-022-34744-1", "10.1038/s41467-022-35177-6", "10.1038/s41467-023-35802-y", "10.1038/s41467-023-36325-2", "10.1038/s41467-023-36334-1", "10.1038/s41467-023-37304-3", "10.1038/s41467-023-37863-5", "10.1038/s41467-023-38360-5", "10.1038/s41467-023-39709-6", "10.1038/s41467-023-40886-7", "10.1038/s41467-023-42324-0", "10.1038/s41467-023-42390-4", "10.1038/s41467-023-43161-x", "10.1038/s41467-023-43801-2", "10.1038/s41467-023-43914-8", "10.1038/s41467-023-44118-w", "10.1038/s41467-023-44148-4", "10.1038/s41467-024-46109-x", "10.1038/s41467-024-46676-z", "10.1038/s41467-024-47069-y", "10.1038/s41467-024-47439-6", "10.1038/s41467-024-49548-8", "10.1038/s41477-019-0546-1", "10.1038/s41477-020-0721-4", "10.1038/s41477-022-01125-x", "10.1038/s41514-020-0042-x", "10.1038/s41536-021-00199-z", "10.1038/s41551-017-0145-2", "10.1038/s41551-018-0250-x", "10.1038/s41551-021-00740-x", "10.1038/s41556-019-0364-8", "10.1038/s41556-020-0515-y", "10.1038/s41556-021-00787-7", "10.1038/s41556-023-01274-x", "10.1038/s41557-020-00587-w", "10.1038/s41559-022-01784-1", "10.1038/s41559-023-02238-y", "10.1038/s41563-018-0147-9", "10.1038/s41563-020-0680-1", "10.1038/s41563-023-01689-9", "10.1038/s41564-019-0423-8", "10.1038/s41564-019-0469-7", "10.1038/s41564-019-0512-8", "10.1038/s41564-020-00839-y", "10.1038/s41564-020-0779-9", "10.1038/s41564-022-01130-y", "10.1038/s41564-023-01400-3", "10.1038/s41564-023-01485-w", "10.1038/s41564-024-01740-8", "10.1038/s41565-020-00781-4", "10.1038/s41568-019-0235-4", "10.1038/s41568-019-0238-1", "10.1038/s41570-017-0076", "10.1038/s41570-019-0126-y", "10.1038/s41571-019-0308-z", "10.1038/s41571-020-00460-2", "10.1038/s41571-022-00620-6", "10.1038/s41571-022-00704-3", "10.1038/s41572-021-00269-y", "10.1038/s41573-018-0002-3", "10.1038/s41573-018-0004-1", "10.1038/s41573-018-0007-y", "10.1038/s41573-020-0074-8", "10.1038/s41573-021-00337-8", "10.1038/s41573-022-00520-5", "10.1038/s41576-019-0128-0", "10.1038/s41576-019-0195-2", "10.1038/s41576-021-00408-x", "10.1038/s41576-022-00493-6", "10.1038/s41577-018-0044-0", "10.1038/s41577-019-0127-6", "10.1038/s41577-019-0167-y", "10.1038/s41577-019-0210-z", "10.1038/s41577-021-00631-x", "10.1038/s41577-022-00761-w", "10.1038/s41577-023-00848-y", "10.1038/s41579-019-0299-x", "10.1038/s41579-022-00793-y", "10.1038/s41580-020-00314-w", "10.1038/s41580-020-00315-9", "10.1038/s41580-020-0236-x", "10.1038/s41580-021-00362-w", "10.1038/s41581-019-0129-4", "10.1038/s41582-018-0101-0", "10.1038/s41582-020-0373-z", "10.1038/s41582-022-00634-9", "10.1038/s41583-018-0014-3", "10.1038/s41583-019-0125-5", "10.1038/s41584-019-0324-5", "10.1038/s41585-020-0298-8", "10.1038/s41585-021-00561-2", "10.1038/s41586-018-0124-0", "10.1038/s41586-018-0621-1", "10.1038/s41586-018-0845-0", "10.1038/s41586-019-0969-x", "10.1038/s41586-019-0985-x", "10.1038/s41586-019-1182-7", "10.1038/s41586-019-1456-0", "10.1038/s41586-019-1467-x", "10.1038/s41586-019-1506-7", "10.1038/s41586-019-1674-5", "10.1038/s41586-019-1711-4", "10.1038/s41586-019-1722-1", "10.1038/s41586-020-2003-8", "10.1038/s41586-020-2007-4", "10.1038/s41586-020-2008-3", "10.1038/s41586-020-2056-8", "10.1038/s41586-020-2073-7", "10.1038/s41586-020-2135-x", "10.1038/s41586-020-2493-4", "10.1038/s41586-020-2612-2", "10.1038/s41586-020-2681-2", "10.1038/s41586-020-2719-5", "10.1038/s41586-020-2879-3", "10.1038/s41586-021-03206-x", "10.1038/s41586-021-03269-w", "10.1038/s41586-021-03446-x", "10.1038/s41586-021-03704-y", "10.1038/s41586-021-03819-2", "10.1038/s41586-021-03944-y", "10.1038/s41586-022-04418-5", "10.1038/s41586-022-04428-3", "10.1038/s41586-022-04570-y", "10.1038/s41586-022-04716-y", "10.1038/s41586-022-04719-9", "10.1038/s41586-022-05023-2", "10.1038/s41586-022-05070-9", "10.1038/s41586-022-05256-1", "10.1038/s41586-022-05344-2", "10.1038/s41586-022-05402-9", "10.1038/s41586-022-05473-8", "10.1038/s41586-022-05571-7", "10.1038/s41586-023-05778-2", "10.1038/s41586-023-05906-y", "10.1038/s41586-023-06243-w", "10.1038/s41586-023-06620-5", "10.1038/s41586-023-06845-4", "10.1038/s41586-023-06871-2", "10.1038/s41586-023-06902-y", "10.1038/s41586-024-07260-z", "10.1038/s41586-024-07419-8", "10.1038/s41587-019-0193-0", "10.1038/s41587-019-0387-5", "10.1038/s41587-020-00797-0", "10.1038/s41587-020-0428-0", "10.1038/s41587-020-0490-7", "10.1038/s41587-020-0505-4", "10.1038/s41587-020-0566-4", "10.1038/s41587-021-00902-x", "10.1038/s41587-021-00938-z", "10.1038/s41587-021-00989-2", "10.1038/s41587-021-01025-z", "10.1038/s41587-021-01026-y", "10.1038/s41587-021-01133-w", "10.1038/s41587-022-01494-w", "10.1038/s41587-022-01527-4", "10.1038/s41587-023-01801-z", "10.1038/s41587-023-01888-4", "10.1038/s41587-024-02157-8", "10.1038/s41587-024-02224-0", "10.1038/s41588-019-0426-7", "10.1038/s41588-020-00768-w", "10.1038/s41588-021-00900-4", "10.1038/s41588-021-01009-4", "10.1038/s41589-020-00700-7", "10.1038/s41589-021-00925-0", "10.1038/s41589-022-01151-y", "10.1038/s41590-018-0212-1", "10.1038/s41590-019-0398-x", "10.1038/s41590-019-0441-y", "10.1038/s41590-021-00913-5", "10.1038/s41590-023-01604-z", "10.1038/s41591-018-0136-1", "10.1038/s41591-019-0582-4", "10.1038/s41591-020-0892-6", "10.1038/s41591-020-0901-9", "10.1038/s41591-020-0944-y", "10.1038/s41591-020-1038-6", "10.1038/s41591-021-01349-y", "10.1038/s41591-021-01386-7", "10.1038/s41591-022-02193-4", "10.1038/s41592-018-0048-5", "10.1038/s41592-018-0100-5", "10.1038/s41592-019-0629-y", "10.1038/s41592-019-0686-2", "10.1038/s41592-020-0837-5", "10.1038/s41592-020-0850-8", "10.1038/s41592-020-0966-x", "10.1038/s41592-021-01207-2", "10.1038/s41592-021-01358-2", "10.1038/s41592-021-01391-1", "10.1038/s41592-022-01488-1", "10.1038/s41592-023-01949-1", "10.1038/s41592-023-02162-w", "10.1038/s41592-024-02216-7", "10.1038/s41593-018-0192-3", "10.1038/s41593-018-0221-2", "10.1038/s41593-019-0445-9", "10.1038/s41593-020-00728-x", "10.1038/s41593-020-00796-z", "10.1038/s41593-020-0587-9", "10.1038/s41593-021-00905-6", "10.1038/s41593-022-01131-4", "10.1038/s41593-022-01180-9", "10.1038/s41593-023-01315-6", "10.1038/s41594-019-0205-2", "10.1038/s41594-019-0231-0", "10.1038/s41594-020-00539-5", "10.1038/s41594-020-0477-6", "10.1038/s41596-019-0165-3", "10.1038/s41596-020-0292-x", "10.1038/s41596-020-0339-z", "10.1038/s41596-021-00626-x", "10.1038/s41596-021-00639-6", "10.1038/s41596-022-00688-5", "10.1038/s41596-022-00700-y", "10.1038/s41597-023-02521-4", "10.1038/s41598-017-04731-4", "10.1038/s41598-017-06041-1", "10.1038/s41598-017-06330-9", "10.1038/s41598-017-07220-w", "10.1038/s41598-017-08303-4", "10.1038/s41598-017-09306-x", "10.1038/s41598-017-11334-6", "10.1038/s41598-017-12716-6", "10.1038/s41598-017-13511-z", "10.1038/s41598-017-15816-5", "10.1038/s41598-017-17204-5", "10.1038/s41598-018-19765-5", "10.1038/s41598-018-22252-6", "10.1038/s41598-018-24509-6", "10.1038/s41598-018-27136-3", "10.1038/s41598-018-28453-3", "10.1038/s41598-018-31654-5", "10.1038/s41598-018-37949-x", "10.1038/s41598-019-39769-z", "10.1038/s41598-019-40242-0", "10.1038/s41598-019-40896-w", "10.1038/s41598-019-44656-8", "10.1038/s41598-019-46491-3", "10.1038/s41598-019-48570-x", "10.1038/s41598-019-50085-4", "10.1038/s41598-019-52103-x", "10.1038/s41598-019-53294-z", "10.1038/s41598-019-55717-3", "10.1038/s41598-019-55987-x", "10.1038/s41598-020-57500-1", "10.1038/s41598-020-59917-0", "10.1038/s41598-020-60028-z", "10.1038/s41598-020-61292-9", "10.1038/s41598-020-64368-8", "10.1038/s41598-020-64948-8", "10.1038/s41598-020-65638-1", "10.1038/s41598-020-70324-3", "10.1038/s41598-020-71519-4", "10.1038/s41598-020-72399-4", "10.1038/s41598-020-73698-6", "10.1038/s41598-020-79980-x", "10.1038/s41598-021-85366-4", "10.1038/s41598-021-93867-5", "10.1038/s41598-021-95406-8", "10.1038/s41598-021-95797-8", "10.1038/s41598-021-96311-w", "10.1038/s41598-021-98965-y", "10.1038/s41598-022-09589-9", "10.1038/s41598-022-14436-y", "10.1038/s41598-022-18844-y", "10.1038/s41598-022-20889-y", "10.1038/s41598-023-32521-8", "10.1038/s41598-023-32896-8", "10.1038/s41598-023-42792-w", "10.1038/s41698-021-00142-x", "10.1038/s42003-019-0705-y", "10.1038/s42003-020-01441-y", "10.1038/s42003-020-01450-x", "10.1038/s42003-020-01584-y", "10.1038/s42003-021-01942-4", "10.1038/s42003-021-02381-x", "10.1038/s42003-023-05238-7", "10.1038/s42255-021-00363-1", "10.1038/s42255-021-00385-9", "10.1038/s42255-022-00617-6", "10.1038/s43018-020-0054-2", "10.1038/s43018-021-00200-0", "10.1038/s43586-021-00093-4", "10.1038/s43587-022-00263-3", "10.1038/s43587-022-00349-y", "10.1038/s43705-023-00294-w", "10.1038/sj.bjc.6604168", "10.1038/sj.clpt.6100400", "10.1038/sj.emboj.7600036", "10.1038/sj.emboj.7600982", "10.1038/sj.emboj.7601192", "10.1038/sj.emboj.7601796", "10.1038/sj.mp.4001824", "10.1038/sj.onc.1206067", "10.1038/sj.onc.1210252", "10.1038/sj.onc.1210411", "10.1038/srep11487", "10.1038/srep12460", "10.1038/srep12799", "10.1038/srep16018", "10.1038/srep18327", "10.1038/srep19242", "10.1038/srep20471", "10.1038/srep23549", "10.1038/srep24506", "10.1038/srep25828", "10.1038/srep28566", "10.1038/srep34269", "10.1038/srep36818", "10.1038/srep37589", "10.1038/srep41407", "10.1038/srep41597", "10.1038/srep43796", "10.1038/srep46440", "10.1039/b706769k", "10.1039/c2cs35416k", "10.1039/c2ob26724a", "10.1039/c3bm60319a", "10.1039/c3mb70168a", "10.1039/c4bm00138a", "10.1039/c5ay00523j", "10.1039/c5fo00320b", "10.1039/c5mb00034c", "10.1039/c7ra03971a", "10.1039/c7ra06752f", "10.1039/c7ra10712a", "10.1039/c8py01399c", "10.1039/c9cc03379c", "10.1039/c9cs00184k", "10.1039/c9ra10465h", "10.1039/c9sm02127b", "10.1039/d0bm01297a", "10.1039/d0lc00401d", "10.1039/d1cc05523b", "10.1039/d1sc03525h", "10.1039/d1tb00721a", "10.1039/d2bm00828a", "10.1039/d2cs00764a", "10.1039/d3ra01844j", "10.1039/d3sc03989g", "10.1042/0264-6021:3540149", "10.1042/an20100019", "10.1042/an20120016", "10.1042/an20120041", "10.1042/bc20060126", "10.1042/bcj20170961", "10.1042/bcj20190517", "10.1042/bio_2021_138", "10.1042/bj20021152", "10.1042/bj20030491", "10.1042/bj20041838", "10.1042/bj20050411", "10.1042/bj20081501", "10.1042/bj20130783", "10.1042/bj20141473", "10.1042/bj3380793", "10.1042/bj3430099", "10.1042/bj3540149", "10.1042/bst20110619", "10.1042/bst20160219", "10.1042/bst20200020", "10.1042/bst20220804/952854/bst-2022-0804c", "10.1042/bst20231116/234096", "10.1042/cbi20110325", "10.1042/cs20190893", "10.1042/ebc20180061", "10.1046/j.1365-2443.1996.05005.x", "10.1046/j.1365-2443.2002.00563.x", "10.1046/j.1365-2958.1997.4241780.x", "10.1046/j.1365-2958.1997.6432014.x", "10.1046/j.1460-9568.2000.00286", "10.1046/j.1469-7580.1997.19020161.x", "10.1051/jbio/2018020", "10.1051/medsci/2024012", "10.10520/ejc159118", "10.1053/j.gastro.2013.02.005", "10.1053/j.gastro.2013.08.033", "10.1053/j.gastro.2016.02.070", "10.1054/bjoc.2001.2089", "10.1055/s-0029-1185945", "10.1055/s-0033-1333687", "10.1055/s-0034-1386766", "10.1056/nejm197504172921605", "10.1056/nejm200102223440801", "10.1056/nejm200104053441406", "10.1056/nejmoa1001294", "10.1056/nejmoa1200690", "10.1056/nejmoa1804980", "10.1056/nejmoa2001017", "10.1056/nejmoa2002032", "10.1063/1.3702810", "10.1063/5.0002750", "10.1063/5.0184084", "10.1067/mai.2003.25", "10.1071/rd15406", "10.1073/pnas.0307986100", "10.1073/pnas.0401526101", "10.1073/pnas.0404700101", "10.1073/pnas.0405350101", "10.1073/pnas.0409559102", "10.1073/pnas.0505551102", "10.1073/pnas.0506580102", "10.1073/pnas.0510098103", "10.1073/pnas.0611511104", "10.1073/pnas.0702580104", "10.1073/pnas.0706544105", "10.1073/pnas.0707090104", "10.1073/pnas.0802287105", "10.1073/pnas.0808387106", "10.1073/pnas.0911116107", "10.1073/pnas.1000080107", "10.1073/pnas.1004751108", "10.1073/pnas.1006586107", "10.1073/pnas.1014041108", "10.1073/pnas.1014640108", "10.1073/pnas.1017983108", "10.1073/pnas.1018974108", "10.1073/pnas.1100099108", "10.1073/pnas.1101118108", "10.1073/pnas.1115166109", "10.1073/pnas.1117029108", "10.1073/pnas.1200419109", "10.1073/pnas.1213431110", "10.1073/pnas.1218168110", "10.1073/pnas.122246099", "10.1073/pnas.1232344100", "10.1073/pnas.1303558110", "10.1073/pnas.1308335110", "10.1073/pnas.1311231111", "10.1073/pnas.131215398", "10.1073/pnas.1317036111", "10.1073/pnas.1400236111", "10.1073/pnas.1405079111", "10.1073/pnas.1410024111", "10.1073/pnas.1411446111", "10.1073/pnas.1413392111", "10.1073/pnas.1416723112", "10.1073/pnas.1420370112", "10.1073/pnas.1421415111", "10.1073/pnas.1500656112", "10.1073/pnas.1502370112", "10.1073/pnas.1506058112", "10.1073/pnas.1506763112", "10.1073/pnas.1508821112", "10.1073/pnas.1509820112", "10.1073/pnas.151105198", "10.1073/pnas.1514105112", "10.1073/pnas.1516410112", "10.1073/pnas.1518007112", "10.1073/pnas.1518469113", "10.1073/pnas.1525185113", "10.1073/pnas.1613026113", "10.1073/pnas.1613181114", "10.1073/pnas.1617467114", "10.1073/pnas.1707304114", "10.1073/pnas.1712108114", "10.1073/pnas.1718819115", "10.1073/pnas.1801348115", "10.1073/pnas.1804106115", "10.1073/pnas.1811067116", "10.1073/pnas.1819468116", "10.1073/pnas.1820165116", "10.1073/pnas.182256799", "10.1073/pnas.1901283116", "10.1073/pnas.1902649116", "10.1073/pnas.1903808116", "10.1073/pnas.1905552116", "10.1073/pnas.1905675116", "10.1073/pnas.1909143116", "10.1073/pnas.1918685117", "10.1073/pnas.1922447117", "10.1073/pnas.2003702117", "10.1073/pnas.2006186117", "10.1073/pnas.2008283117", "10.1073/pnas.220301797", "10.1073/pnas.48.12.2013", "10.1073/pnas.76.10.4913", "10.1073/pnas.78.12.7634", "10.1073/pnas.88.21.9578", "10.1073/pnas.88.4.1125", "10.1073/pnas.89.19.8948", "10.1073/pnas.90.1.50", "10.1073/pnas.92.24.10909", "10.1073/pnas.93.2.884", "10.1073/pnas.94.18.9920", "10.1073/pnas.95.16.9488", "10.1073/pnas.95.8.4463", "10.1073/pnas.96.17.9545", "10.1073/pnas.97.13.7090", "10.1073/pnas.97.21.11307", "10.1073/pnas.97.26.14720", "10.1074/jbc.270.52.31321", "10.1074/jbc.273.6.3125", "10.1074/jbc.274.16.11352", "10.1074/jbc.275.5.3577", "10.1074/jbc.m004709200", "10.1074/jbc.m007074200", "10.1074/jbc.m010271200", "10.1074/jbc.m100871200", "10.1074/jbc.m102629200", "10.1074/jbc.m103731200", "10.1074/jbc.m106161200", "10.1074/jbc.m108826200", "10.1074/jbc.m109.006296", "10.1074/jbc.m109.098665", "10.1074/jbc.m110.111336", "10.1074/jbc.m110.132738", "10.1074/jbc.m110.136622", "10.1074/jbc.m110.189282", "10.1074/jbc.m111.229294", "10.1074/jbc.m111.236117", "10.1074/jbc.m111.257451", "10.1074/jbc.m111.309096", "10.1074/jbc.m111.337865", "10.1074/jbc.m112.348052", "10.1074/jbc.m112.355164", "10.1074/jbc.m112.435842", "10.1074/jbc.m113.502492", "10.1074/jbc.m115.636498", "10.1074/jbc.m115.637207", "10.1074/jbc.m115.644799", "10.1074/jbc.m115.667279", "10.1074/jbc.m115.671206", "10.1074/jbc.m115.712380", "10.1074/jbc.m116.737551", "10.1074/jbc.m116.743997", "10.1074/jbc.m116.748954", "10.1074/jbc.m116.774489", "10.1074/jbc.m117.783217", "10.1074/jbc.m117.799452", "10.1074/jbc.m209701200", "10.1074/jbc.m209714200", "10.1074/jbc.m211214200", "10.1074/jbc.m211730200", "10.1074/jbc.m301580200", "10.1074/jbc.m310138200", "10.1074/jbc.m504448200", "10.1074/jbc.m509730200", "10.1074/jbc.m602902200", "10.1074/jbc.m603399200", "10.1074/jbc.m610393200", "10.1074/jbc.m611593200", "10.1074/jbc.m805294200", "10.1074/jbc.r100065200", "10.1074/jbc.r114.587071", "10.1074/jbc.ra118.003410", "10.1074/jbc.ra118.004554", "10.1074/jbc.ra118.004732", "10.1074/jbc.ra118.004798", "10.1074/jbc.ra119.008549", "10.1074/jbc.ra119.010219", "10.1074/jbc.ra120.014099", "10.1074/jbc.ra120.014692", "10.1074/mcp.m110.001586", "10.1074/mcp.m113.030049", "10.1074/mcp.m113.032227", "10.1076/jcen.25.5.721.14580", "10.1080/00207454.2020.1865953", "10.1080/00221341.2013.770904", "10.1080/01140671.2013.793203", "10.1080/01635581.2010.509835", "10.1080/02656736.2020.1836406", "10.1080/0284186x.2020.1769185", "10.1080/03601234.2020.1782114", "10.1080/07352689.2016.1265363", "10.1080/07357907.2016.1247166", "10.1080/07391102.2014.994188", "10.1080/07391102.2015.1100552", "10.1080/07391102.2018.1491420", "10.1080/07391102.2020.1767690", "10.1080/09553000310001596968", "10.1080/09553000500143534", "10.1080/1028415x.2018.1547857", "10.1080/10408390701289292", "10.1080/10408440590905920", "10.1080/10409230701279118", "10.1080/10409238.2016.1215407", "10.1080/10425170500332314", "10.1080/10635150500541672", "10.1080/1067828x.2012.689806", "10.1080/10717544.2018.1474964", "10.1080/11263504.2019.1635218", "10.1080/13102818.2017.1333456", "10.1080/13102818.2018.1499443", "10.1080/13543784.2021.1849140", "10.1080/14712598.2019.1582635", "10.1080/14789450.2017.1345631", "10.1080/14789450.2020.1713103", "10.1080/14789450.2020.1831388", "10.1080/15366367.2019.1565254", "10.1080/15384047.2019.1591122", "10.1080/15384101.2016.1249549", "10.1080/15384101.2018.1482138", "10.1080/15476286.2016.1236168", "10.1080/15476286.2016.1243649", "10.1080/15476286.2018.1493331", "10.1080/15476286.2018.1509661", "10.1080/15476286.2020.1847894", "10.1080/15476286.2021.1899491", "10.1080/15476286.2021.1909320", "10.1080/15548627.2016.1171949", "10.1080/17512433.2018.1445966", "10.1080/19420862.2020.1860476", "10.1080/19491034.2017.1389365", "10.1080/20013078.2019.1648995", "10.1080/20013078.2020.1791450", "10.1080/21505594.2017.1365216", "10.1080/21505594.2018.1455464", "10.1080/21505594.2018.1528844", "10.1080/21505594.2021.1878688", "10.1080/21541264.2019.1684137", "10.1080/2162402x.2015.1090075", "10.1080/2162402x.2017.1328341", "10.1080/2162402x.2019.1638212", "10.1080/2162402x.2020.1762473", "10.1080/21624054.2016.1184814", "10.1080/21645515.2020.1775459", "10.1080/21645698.2015.1137690", "10.1080/21655979.2016.1189039", "10.1080/23262133.2016.1248735", "10.1080/2331205x.2017.1302909", "10.1080/25785826.2019.1698261", "10.1081/copd-200050655", "10.1083/jcb.133.4.879", "10.1083/jcb.147.7.1519", "10.1083/jcb.200212060", "10.1083/jcb.200506179", "10.1083/jcb.200610053", "10.1083/jcb.200702147", "10.1083/jcb.201004082", "10.1083/jcb.201610098", "10.1083/jcb.201806052", "10.1083/jcb.90.2.332", "10.1084/jem.173.5.1213", "10.1084/jem.20021598", "10.1084/jem.20032220", "10.1084/jem.20052144", "10.1084/jem.20091918", "10.1084/jem.20131195", "10.1085/jgp.201210780", "10.1086/301749", "10.1086/316888", "10.1086/375033", "10.1086/444548", "10.1086/504303", "10.1086/519795", "10.1086/593069", "10.1088/1742-6596/1469/1/012013", "10.1088/1742-6596/1469/1/012020", "10.1088/1742-6596/1649/1/012030", "10.1088/1748-6041/11/1/014109", "10.1088/1755-1315/1162/1/012001", "10.1088/1755-1315/122/1/012055", "10.1088/1757-899x/335/1/012021", "10.1088/1757-899x/854/1/012032", "10.1088/1758-5090/ab2286", "10.1088/2053-1591/ab2316", "10.1089/107632701300062859", "10.1089/ars.2020.8139", "10.1089/can.2018.0039", "10.1089/cbr.2009.0690", "10.1089/cbr.2014.1660", "10.1089/cmb.2019.0073", "10.1089/crispr.2020.0034", "10.1089/crispr.2020.0064", "10.1089/crispr.2020.0077", "10.1089/dna.2017.3768", "10.1089/hum.2016.009", "10.1089/jir.2008.0027", "10.1089/jir.2014.0021", "10.1089/jmf.2013.0065", "10.1089/jop.2018.0087", "10.1089/phage.2021.0016", "10.1089/pho.2017.4411", "10.1089/scd.2009.0293", "10.1089/scd.2009.0520", "10.1089/scd.2011.0214", "10.1089/scd.2012.0218", "10.1089/scd.2012.0520", "10.1089/scd.2014.0096", "10.1089/scd.2015.0244", "10.1089/scd.2019.0033", "10.1089/scd.2019.0189", "10.1089/ten.tea.2009.0730", "10.1089/ten.tea.2014.0535", "10.1089/ten.tea.2019.0227", "10.1089/ten.tea.2020.0015", "10.1089/ten.tea.2020.0030", "10.1089/thy.2016.0660", "10.1089/vim.2018.0085", "10.1089/zeb.2009.0602", "10.1089/zeb.2015.29000.sha", "10.1091/mbc.01-11-0529", "10.1091/mbc.10.4.1147", "10.1091/mbc.11.11.3963", "10.1091/mbc.12.9.2730", "10.1091/mbc.9.3.671", "10.1091/mbc.e03-05-0328", "10.1091/mbc.e03-07-0521", "10.1091/mbc.e05-08-0742", "10.1091/mbc.e08-01-0024", "10.1091/mbc.e12-04-0270", "10.1091/mbc.e12-07-0516", "10.1091/mbc.e13-04-0202", "10.1091/mbc.e13-09-0540", "10.1091/mbc.e18-09-0605", "10.1093/ageing/afac218.206", "10.1093/ajcn/nqz331", "10.1093/alcalc/agh216", "10.1093/alcalc/agm048", "10.1093/annonc/mdx370.008", "10.1093/annonc/mdy431.045", "10.1093/annonc/mdz206", "10.1093/bfgp/els036", "10.1093/bib/bbaa114", "10.1093/bib/bbw066", "10.1093/bioinformatics/bti107", "10.1093/bioinformatics/btm308", "10.1093/bioinformatics/btn223", "10.1093/bioinformatics/btp348", "10.1093/bioinformatics/btp352", "10.1093/bioinformatics/btp616", "10.1093/bioinformatics/btq249", "10.1093/bioinformatics/btq461", "10.1093/bioinformatics/btq662", "10.1093/bioinformatics/bts174", "10.1093/bioinformatics/bts460", "10.1093/bioinformatics/btt656", "10.1093/bioinformatics/btt691", "10.1093/bioinformatics/btu031", "10.1093/bioinformatics/btu114", "10.1093/bioinformatics/btv033", "10.1093/bioinformatics/btz811", "10.1093/brain/awaa279", "10.1093/brain/awad304", "10.1093/brain/awm242", "10.1093/brain/awq333", "10.1093/brain/awx352", "10.1093/brain/awz358", "10.1093/braincomms/fcad108", "10.1093/braincomms/fcz022", "10.1093/carcin/bgs299", "10.1093/carcin/bgs312", "10.1093/carcin/bgt035", "10.1093/cercor/bhv192", "10.1093/cercor/bhz031", "10.1093/chemse/bjaa040", "10.1093/chemse/bjaa070", "10.1093/chemse/bjw003", "10.1093/chemse/bjy030", "10.1093/chemse/bjz043", "10.1093/cid/ciaa248", "10.1093/clinchem/46.6.795", "10.1093/clinchem/47.7.1225", "10.1093/discim/kyad015/7282398", "10.1093/dnares/dsz015", "10.1093/ejcts/ezw304", "10.1093/emboj/17.19.5606", "10.1093/emboj/19.17.4623", "10.1093/emboj/cdf455", "10.1093/emboj/cdf613", "10.1093/emboj/cdg219", "10.1093/emboj/cdg353", "10.1093/eurheartj/ehz391", "10.1093/femsre/fuy009", "10.1093/femsyr/fov097", "10.1093/femsyr/foy039", "10.1093/g3journal/jkab051", "10.1093/g3journal/jkac209/49724525/jkac209", "10.1093/gbe/evr040/582862", "10.1093/gbe/evu059", "10.1093/genetics/155.2.945", "10.1093/genetics/155.3.1005", "10.1093/genetics/89.3.583", "10.1093/genetics/iyac035", "10.1093/genetics/iyad211", "10.1093/gerona/glab048", "10.1093/gerona/glq161", "10.1093/gigascience/giy039", "10.1093/glycob/cwg016", "10.1093/glycob/cwt039", "10.1093/glycob/cww051", "10.1093/glycob/cwy050", "10.1093/hmg/11.1.93", "10.1093/hmg/11.5.535", "10.1093/hmg/9.3.333", "10.1093/hmg/ddaa229", "10.1093/hmg/ddaa235", "10.1093/hmg/ddaa270", "10.1093/hmg/ddab091", "10.1093/hmg/ddac226", "10.1093/hmg/ddi184", "10.1093/hmg/ddl096", "10.1093/hmg/ddl233", "10.1093/hmg/ddm101", "10.1093/hmg/ddm227", "10.1093/hmg/ddq425", "10.1093/hmg/ddq497", "10.1093/hmg/ddr150", "10.1093/hmg/ddr425", "10.1093/hmg/ddr507", "10.1093/hmg/ddr541", "10.1093/hmg/dds240", "10.1093/hmg/dds392", "10.1093/hmg/ddt222", "10.1093/hmg/ddu734", "10.1093/hmg/ddv332", "10.1093/hmg/ddw272", "10.1093/hmg/ddy072", "10.1093/hmg/ddy251", "10.1093/hmg/ddz003", "10.1093/hmg/ddz097", "10.1093/humrep/dem030", "10.1093/ijnp/pyu002", "10.1093/immadv/ltab012/44157525/ltab012", "10.1093/infdis/jiaa150", "10.1093/infdis/jiab228", "10.1093/infdis/jix010", "10.1093/infdis/jix268", "10.1093/intqhc/mzx148", "10.1093/jac/dku280", "10.1093/jb/mvh135", "10.1093/jmcb/mjab017", "10.1093/jmcb/mjae003/7585330", "10.1093/jmcb/mjp038", "10.1093/jnci/djab106", "10.1093/jnci/djw186", "10.1093/jnen/62.2.127", "10.1093/jxb/ern260", "10.1093/jxb/ern355", "10.1093/jxb/err447", "10.1093/jxb/erx482", "10.1093/mmy/myu088", "10.1093/molbev/msaa215", "10.1093/molbev/msad011", "10.1093/molbev/msad271", "10.1093/molbev/msh255", "10.1093/molbev/msq144", "10.1093/molbev/mst010", "10.1093/molbev/msu300", "10.1093/molbev/msx197", "10.1093/molbev/msy028", "10.1093/molbev/msy075", "10.1093/mp/ssr043", "10.1093/nar/16.11.4789", "10.1093/nar/27.6.1409", "10.1093/nar/30.6.e23", "10.1093/nar/gkaa085", "10.1093/nar/gkaa1251", "10.1093/nar/gkaa1264", "10.1093/nar/gkaa143", "10.1093/nar/gkaa294", "10.1093/nar/gkaa357", "10.1093/nar/gkaa634", "10.1093/nar/gkaa760", "10.1093/nar/gkaa869", "10.1093/nar/gkab073", "10.1093/nar/gkab180", "10.1093/nar/gkab282", "10.1093/nar/gkab408", "10.1093/nar/gkab500", "10.1093/nar/gkab508", "10.1093/nar/gkab571", "10.1093/nar/gkab952", "10.1093/nar/gkac1000", "10.1093/nar/gkac1052", "10.1093/nar/gkac118", "10.1093/nar/gkac186", "10.1093/nar/gkac225", "10.1093/nar/gkac453", "10.1093/nar/gkac633", "10.1093/nar/gkac659", "10.1093/nar/gkac923", "10.1093/nar/gkac993", "10.1093/nar/gkad1105", "10.1093/nar/gkad234", "10.1093/nar/gkad347", "10.1093/nar/gkad739", "10.1093/nar/gkae102", "10.1093/nar/gkae167", "10.1093/nar/gkae462", "10.1093/nar/gkf436", "10.1093/nar/gkf498", "10.1093/nar/gkh923", "10.1093/nar/gkl712", "10.1093/nar/gkn153", "10.1093/nar/gkp018", "10.1093/nar/gkp335", "10.1093/nar/gkp468", "10.1093/nar/gkp985", "10.1093/nar/gkq1092", "10.1093/nar/gks042", "10.1093/nar/gks1196", "10.1093/nar/gks1231", "10.1093/nar/gks382", "10.1093/nar/gks567", "10.1093/nar/gks770", "10.1093/nar/gkt041", "10.1093/nar/gkt376", "10.1093/nar/gkt779", "10.1093/nar/gku1356", "10.1093/nar/gku340", "10.1093/nar/gku996", "10.1093/nar/gkv1139", "10.1093/nar/gkv862", "10.1093/nar/gkv993", "10.1093/nar/gkw006", "10.1093/nar/gkw583", "10.1093/nar/gkx031", "10.1093/nar/gkx234", "10.1093/nar/gkx432", "10.1093/nar/gkx523", "10.1093/nar/gkx843", "10.1093/nar/gky076", "10.1093/nar/gky1120", "10.1093/nar/gky164", "10.1093/nar/gky187", "10.1093/nar/gky300", "10.1093/nar/gky571", "10.1093/nar/gky754", "10.1093/nar/gky844", "10.1093/nar/gkz1025", "10.1093/nar/gkz179", "10.1093/narcan/zcaa012", "10.1093/neuonc/noac209.1049", "10.1093/ofid/ofab217", "10.1093/oxfordjournals.jbchem.a021309", "10.1093/oxfordjournals.jbchem.a021599", "10.1093/pcp/pcr093", "10.1093/plcell/koac037", "10.1093/plcell/koad132", "10.1093/plcell/koae075/7624272", "10.1093/plphys/kiac037", "10.1093/plphys/kiac285", "10.1093/plphys/kiac510", "10.1093/pnasnexus/pgac270", "10.1093/protein/gzr016", "10.1093/protein/gzy033", "10.1093/sleep/zsaa036", "10.1093/synbio/ysac025", "10.1095/biolreprod.106.054536", "10.1096/fasebj.14.2.231", "10.1096/fasebj.30.1_supplement.802.5", "10.1096/fj.05-3748fje", "10.1096/fj.05-5258fje", "10.1096/fj.09-136259", "10.1096/fj.11-182824", "10.1096/fj.13-243485", "10.1096/fj.15-270256", "10.1096/fj.15-272658", "10.1096/fj.201700002r", "10.1096/fj.201701131rr", "10.1096/fj.201800102rr", "10.1096/fj.201901205rr", "10.1096/fj.202000261rrr", "10.1096/fj.202001045rr", "10.1097/00004647-199607000-00007", "10.1097/01.lab.0000101911.53973.90", "10.1097/01.wnr.0000234747.73312.e7", "10.1097/ana.0b013e3181d56c98", "10.1097/bs9.0000000000000050", "10.1097/cad.0000000000000304", "10.1097/cji.0000000000000343", "10.1097/cji.0b013e31818c8816", "10.1097/cji.0b013e3181b88ffc", "10.1097/cji.0b013e31829d85e6", "10.1097/hep.0000000000000435", "10.1097/j.pain.0000000000001488", "10.1097/j.pain.0000000000001523", "10.1097/jd9.0000000000000277", "10.1097/mbc.0000000000001070", "10.1097/prs.0000000000009668", "10.1097/prs.0b013e3181858f4f", "10.1097/scs.0000000000004904", "10.1097/ypg.0b013e3283469aa9", "10.1098/rsob.170202", "10.1098/rsob.170216", "10.1098/rsob.180116", "10.1098/rsob.180138", "10.1098/rsob.190223", "10.1098/rstb.2017.0069", "10.1099/mgen.0.000313", "10.1099/mic.0.000076", "10.1099/mic.0.000095", "10.1099/mic.0.000743", "10.1099/mic.0.001098", "10.1099/mic.0.001125", "10.1099/mic.0.001126", "10.1099/mic.0.064865-0", "10.1099/mic.0.27723-0", "10.1099/mic.0.28098-0", "10.1100/tsw.2002.100", "10.1100/tsw.2007.232", "10.1101/005165", "10.1101/041277", "10.1101/052795", "10.1101/142489", "10.1101/160861", "10.1101/2019.12.30.890087", "10.1101/2020.02.15.951020", "10.1101/2020.03.04.975888", "10.1101/2020.03.06.979245", "10.1101/2020.03.09.983759", "10.1101/2020.04.02.020990", "10.1101/2020.04.06.028092", "10.1101/2020.04.09.031252", "10.1101/2020.04.28.066118", "10.1101/2020.04.28.20083089", "10.1101/2020.04.30.068924", "10.1101/2020.05.17.100677", "10.1101/2020.05.18.103002", "10.1101/2020.05.26.116608", "10.1101/2020.05.27.113977", "10.1101/2020.06.12.148726", "10.1101/2020.06.22.20137216", "10.1101/2020.06.27.175679", "10.1101/2020.06.29.174888", "10.1101/2020.06.30.179663", "10.1101/2020.07.01.181347", "10.1101/2020.07.07.191130", "10.1101/2020.07.07.20148478", "10.1101/2020.07.21.212514", "10.1101/2020.08.30.274035", "10.1101/2020.09.10.288951", "10.1101/2020.09.22.306647", "10.1101/2020.09.26.315002", "10.1101/2020.10.09.331710", "10.1101/2020.10.12.336883", "10.1101/2020.10.19.345629", "10.1101/2020.10.20.347385", "10.1101/2020.11.01.361691", "10.1101/2020.11.06.359802", "10.1101/2020.11.07.355651", "10.1101/2020.11.08.370650", "10.1101/2020.11.13.382283", "10.1101/2020.11.24.383182", "10.1101/2020.12.08.407247", "10.1101/2020.12.15.422063", "10.1101/2020.12.16.423115", "10.1101/2021.01.06.425642", "10.1101/2021.01.11.20248765", "10.1101/2021.01.27.428421", "10.1101/2021.02.17.431716", "10.1101/2021.03.08.434470", "10.1101/2021.03.11.434971", "10.1101/2021.03.17.435642", "10.1101/2021.03.25.21253623", "10.1101/2021.04.08.439039", "10.1101/2021.04.23.441023", "10.1101/2021.05.09.443329", "10.1101/2021.06.14.448344", "10.1101/2021.07.10.451761", "10.1101/2021.07.30.454360", "10.1101/2021.08.11.454937", "10.1101/2021.08.20.457155", "10.1101/2021.08.23.457400", "10.1101/2021.08.23.457423", "10.1101/2021.08.24.457593", "10.1101/2021.08.27.457942", "10.1101/2021.09.16.460165", "10.1101/2021.09.23.461487", "10.1101/2021.10.30.466625", "10.1101/2021.11.01.466525", "10.1101/2021.11.03.467193", "10.1101/2021.11.12.468408", "10.1101/2021.11.16.468655", "10.1101/2021.12.11.472218", "10.1101/2021.12.20.473513", "10.1101/2021.12.21.473773", "10.1101/2021.12.22.473858", "10.1101/2021.12.23.473930", "10.1101/2022.02.02.478753", "10.1101/2022.02.24.481684", "10.1101/2022.03.09.483618", "10.1101/2022.03.11.483923", "10.1101/2022.03.14.484228", "10.1101/2022.03.24.485638", "10.1101/2022.04.08.487609", "10.1101/2022.04.14.488301", "10.1101/2022.04.22.489196", "10.1101/2022.05.01.490216", "10.1101/2022.05.18.492195", "10.1101/2022.05.31.493843", "10.1101/2022.06.15.496310", "10.1101/2022.06.17.496457", "10.1101/2022.06.20.496707", "10.1101/2022.06.20.496908", "10.1101/2022.06.24.496376", "10.1101/2022.06.26.497656", "10.1101/2022.07.09.499013", "10.1101/2022.07.13.499814", "10.1101/2022.07.22.501078", "10.1101/2022.08.01.502305", "10.1101/2022.08.02.502180", "10.1101/2022.08.02.502359", "10.1101/2022.08.05.502953", "10.1101/2022.08.12.503515", "10.1101/2022.08.19.504545", "10.1101/2022.09.19.508484", "10.1101/2022.09.19.508617", "10.1101/2022.10.01.510428", "10.1101/2022.11.16.516810", "10.1101/2022.11.25.517898", "10.1101/2022.12.14.520178", "10.1101/2022.12.16.520835", "10.1101/2022.12.22.521575", "10.1101/2023.01.09.523335", "10.1101/2023.01.25.525527", "10.1101/2023.02.13.528328", "10.1101/2023.02.27.530239", "10.1101/2023.03.18.533293", "10.1101/2023.03.19.533321", "10.1101/2023.03.25.534219", "10.1101/2023.03.27.534487", "10.1101/2023.03.28.534017", "10.1101/2023.04.06.535836", "10.1101/2023.04.13.536758", "10.1101/2023.04.21.537868", "10.1101/2023.05.08.539922", "10.1101/2023.05.18.541220", "10.1101/2023.06.09.544375", "10.1101/2023.06.22.545964", "10.1101/2023.06.27.546656", "10.1101/2023.06.28.546756", "10.1101/2023.06.28.546861", "10.1101/2023.07.01.545937", "10.1101/2023.07.03.547467", "10.1101/2023.07.03.547592", "10.1101/2023.07.19.549737", "10.1101/2023.07.27.23292878", "10.1101/2023.08.01.549754", "10.1101/2023.08.02.551345", "10.1101/2023.08.03.551875", "10.1101/2023.08.06.552169", "10.1101/2023.08.17.553659", "10.1101/2023.09.04.556039", "10.1101/2023.09.20.558459", "10.1101/2023.09.21.558852", "10.1101/2023.10.06.561128", "10.1101/2023.11.05.565726", "10.1101/2023.11.06.565735", "10.1101/2023.11.09.563812", "10.1101/2023.11.21.568159", "10.1101/2023.11.21.568195", "10.1101/2023.11.24.568546", "10.1101/2023.11.24.568561", "10.1101/2023.12.16.571680", "10.1101/2023.12.28.573518", "10.1101/2023.12.30.573743", "10.1101/2024.01.09.574788", "10.1101/2024.01.18.576313", "10.1101/2024.01.22.575551", "10.1101/2024.01.28.577658", "10.1101/2024.02.02.578660", "10.1101/2024.02.05.578975", "10.1101/2024.02.06.579151", "10.1101/2024.02.13.580051", "10.1101/2024.02.29.582808", "10.1101/2024.03.12.584635", "10.1101/2024.03.12.584653", "10.1101/2024.03.12.584655", "10.1101/2024.03.14.584951", "10.1101/2024.03.14.585090", "10.1101/2024.03.27.586933", "10.1101/2024.04.10.588918", "10.1101/2024.04.17.589725", "10.1101/2024.04.22.590415", "10.1101/2024.05.02.592284", "10.1101/2024.05.07.593022", "10.1101/2024.05.08.593097", "10.1101/2024.05.10.589920", "10.1101/2024.05.13.593760", "10.1101/2024.05.13.593822", "10.1101/2024.05.13.593936", "10.1101/2024.05.15.594216", "10.1101/2024.05.15.594402", "10.1101/2024.05.19.594844", "10.1101/2024.05.20.594921", "10.1101/2024.06.07.597965", "10.1101/2024.06.18.599405", "10.1101/211029", "10.1101/224980", "10.1101/231035", "10.1101/234930", "10.1101/287524", "10.1101/287532", "10.1101/341099", "10.1101/354480", "10.1101/360206", "10.1101/385476", "10.1101/387027", "10.1101/407031", "10.1101/409672", "10.1101/459529", "10.1101/460147", "10.1101/464610", "10.1101/513309", "10.1101/559690", "10.1101/582114", "10.1101/586719", "10.1101/588574", "10.1101/592725", "10.1101/597542", "10.1101/619312", "10.1101/629477", "10.1101/651083", "10.1101/676825", "10.1101/693432", "10.1101/716753", "10.1101/722702", "10.1101/724633", "10.1101/758599", "10.1101/763789", "10.1101/770891", "10.1101/778746", "10.1101/787614", "10.1101/832030", "10.1101/862276", "10.1101/863803", "10.1101/cshperspect.a020370", "10.1101/cshperspect.a021220", "10.1101/cshperspect.a032391", "10.1101/cshperspect.a032417", "10.1101/cshperspect.a039453", "10.1101/gad.1178604", "10.1101/gad.12.10.1438", "10.1101/gad.12.18.2874", "10.1101/gad.1303605", "10.1101/gad.1616208", "10.1101/gad.188326.112", "10.1101/gad.252106.114", "10.1101/gad.259003", "10.1101/gad.267112.115", "10.1101/gad.314724.118", "10.1101/gad.348226.120", "10.1101/gad.348241.121", "10.1101/gr.092759.109", "10.1101/gr.094052.109", "10.1101/gr.126201.111", "10.1101/gr.132159.111", "10.1101/gr.134445.111", "10.1101/gr.162339.113", "10.1101/gr.179044.114", "10.1101/gr.182899.114", "10.1101/gr.186379.114", "10.1101/gr.191452.115", "10.1101/gr.213694.116", "10.1101/gr.226027.117", "10.1101/gr.265736.120", "10.1101/gr.266551.120", "10.1101/gr.275607.121", "10.1101/gr.5703406", "10.1101/gr.849004", "10.1101/lm.051839.120", "10.1101/sqb.2006.71.001", "10.1103/physrevb.107.195148", "10.1103/physrevb.109.054307", "10.1104/pp.106.086231", "10.1104/pp.110.163733", "10.1104/pp.112.208181", "10.1104/pp.115.2.327", "10.1104/pp.19.00263", "10.1105/tpc.109.072660", "10.1107/s139900471402776x", "10.1107/s1600576720013412", "10.1107/s1744309105010985", "10.1109/cec.2007.4425032", "10.1109/cec.2009.4983322", "10.1109/eurcon.2009.5167916", "10.1109/iccece49321.2020.9231160", "10.1109/tdsc.2021.3074327", "10.1110/ps.062416606", "10.1111/1365-2435.12177", "10.1111/1462-2920.15616", "10.1111/1751-7915.13382", "10.1111/1751-7915.13780", "10.1111/1755-0998.12560", "10.1111/1759-7714.13275", "10.1111/2041-210x.13490", "10.1111/2049-632x.12077", "10.1111/acel.12338", "10.1111/acel.12410", "10.1111/acel.12716", "10.1111/acel.12858", "10.1111/acel.13029", "10.1111/acel.13152", "10.1111/acel.13372", "10.1111/all.14273", "10.1111/and.12660", "10.1111/apha.12445", "10.1111/bcpt.13012", "10.1111/bcpt.13533", "10.1111/bjd.19750", "10.1111/bph.12137", "10.1111/bph.14201", "10.1111/bph.14535", "10.1111/cas.12096", "10.1111/cas.14578", "10.1111/cei.12816", "10.1111/cen3.12358", "10.1111/cpr.13115", "10.1111/cts.12241", "10.1111/desc.12282", "10.1111/dgd.12213", "10.1111/dgd.12657", "10.1111/dme.12137", "10.1111/dom.12735", "10.1111/dom.13034", "10.1111/dom.13212", "10.1111/ejn.13153", "10.1111/ejn.13282", "10.1111/ejn.13297", "10.1111/febs.12577", "10.1111/febs.13311", "10.1111/febs.13586", "10.1111/febs.13742", "10.1111/febs.13777", "10.1111/febs.14311", "10.1111/febs.15606", "10.1111/febs.15830", "10.1111/febs.16994", "10.1111/gtc.12634", "10.1111/iju.13326", "10.1111/imm.13001", "10.1111/imr.12132", "10.1111/imr.12135", "10.1111/imr.12236", "10.1111/imr.12525", "10.1111/imr.12772", "10.1111/j.1365-2672.2010.04789.x", "10.1111/j.1365-2818.1993.tb03313.x", "10.1111/j.1365-2958.1994.tb01263", "10.1111/j.1365-2958.2005.04605.x", "10.1111/j.1365-2958.2010.07056.x", "10.1111/j.1432-1033.1990.tb19169.x", "10.1111/j.1432-1033.1993.tb17809.x", "10.1111/j.1432-1033.1993.tb18064.x", "10.1111/j.1445-5994.1995.tb02891.x", "10.1111/j.1462-2920.2005.00943", "10.1111/j.1462-2920.2012.02805", "10.1111/j.1468-1331.2007.01730.x", "10.1111/j.1469-7793.2001.00627", "10.1111/j.1574-6941.2010.00925.x", "10.1111/j.1574-6968.2007.00645.x", "10.1111/j.1574-6976.2007.00078.x", "10.1111/j.1574-6976.2009.00202.x", "10.1111/j.1600-065x.1987.tb00532.x", "10.1111/jcmm.13563", "10.1111/jcmm.14162", "10.1111/jipb.12010", "10.1111/jipb.13063", "10.1111/jnc.13411", "10.1111/jnc.13945", "10.1111/jnc.15197", "10.1111/joa.12083", "10.1111/joa.12948", "10.1111/joim.13046", "10.1111/jopy.12228", "10.1111/mec.12354", "10.1111/mmi.12174", "10.1111/mmi.14093", "10.1111/mmi.14278", "10.1111/nph.15471", "10.1111/nph.16660", "10.1111/nph.17140", "10.1111/nph.17243", "10.1111/nph.17691", "10.1111/pbi.13373", "10.1111/pce.13633", "10.1111/pcn.12496", "10.1111/ppl.13359", "10.1111/sji.12965", "10.1111/tpj.13293", "10.1111/tpj.13446", "10.1111/tpj.13796", "10.1111/wrr.12110", "10.11113/jt.v50.173", "10.11113/jt.v52.131", "10.11113/jt.v69.3195", "10.11113/jt.v78.8174", "10.1113/jp272134", "10.1116/1.4949545", "10.1124/jpet.111.179994", "10.1124/mol.109.057307", "10.1124/pharmrev.120.000230", "10.1126/sciadv.1501535", "10.1126/sciadv.aaw7781", "10.1126/sciadv.aax5032", "10.1126/sciadv.aax9230", "10.1126/sciadv.abb6595", "10.1126/sciadv.abg2286", "10.1126/science.1064987", "10.1126/science.1068592", "10.1126/science.1080376", "10.1126/science.1083653", "10.1126/science.1085049", "10.1126/science.1089122", "10.1126/science.1105891", "10.1126/science.1163885", "10.1126/science.1176495", "10.1126/science.1198687", "10.1126/science.1202529", "10.1126/science.1218071", "10.1126/science.1222794", "10.1126/science.1225829", "10.1126/science.1231143", "10.1126/science.1232033", "10.1126/science.1234393", "10.1126/science.1243039", "10.1126/science.1254445", "10.1126/science.135.3509.1127", "10.1126/science.1553558", "10.1126/science.256.5060.1213", "10.1126/science.275.5296.90", "10.1126/science.276.5315.1125", "10.1126/science.276.5319.1702", "10.1126/science.278.5337.477", "10.1126/science.281.5383.1671", "10.1126/science.282.5391.1145", "10.1126/science.284.5413.479", "10.1126/science.285.5428.754", "10.1126/science.287.5460.2007", "10.1126/science.7526465", "10.1126/science.7624781", "10.1126/science.7660125", "10.1126/science.7839144", "10.1126/science.7914033", "10.1126/science.aaa4967", "10.1126/science.aaa6204", "10.1126/science.aad0616", "10.1126/science.aad2456", "10.1126/science.aaf2403", "10.1126/science.aag2445", "10.1126/science.aag2590", "10.1126/science.aah7111", "10.1126/science.aai8801", "10.1126/science.aam7120", "10.1126/science.aam8999", "10.1126/science.aao6750", "10.1126/science.aar3958", "10.1126/science.aar6245", "10.1126/science.aas9435", "10.1126/science.aau0629", "10.1126/science.aaw5030", "10.1126/science.aaw9498", "10.1126/science.aax9198", "10.1126/science.aba1624", "10.1126/science.abc6270", "10.1126/science.abd2985", "10.1126/science.abf8761", "10.1126/science.abg3067", "10.1126/science.abh2644", "10.1126/science.abi9591", "10.1126/science.abj4008", "10.1126/science.abk2432", "10.1126/science.abo0924", "10.1126/science.add1250", "10.1126/science.add1884", "10.1126/science.add5892", "10.1126/science.add9330", "10.1126/science.adh7699", "10.1126/sciimmunol.aay0555", "10.1126/sciimmunol.abd6832", "10.1126/sciimmunol.abe4782", "10.1126/scisignal.2000056", "10.1126/scisignal.2000796", "10.1126/scisignal.2001699", "10.1126/scisignal.2002189", "10.1126/scisignal.2003021", "10.1126/scisignal.2003372", "10.1126/scisignal.2004780", "10.1126/scisignal.aaw9318", "10.1126/scisignal.aay8248", "10.1126/scitranslmed.3001809", "10.1126/scitranslmed.3010162", "10.1126/scitranslmed.aad7785", "10.1126/scitranslmed.aal3765", "10.1126/scitranslmed.aas9292", "10.1126/scitranslmed.aat3392", "10.1126/scitranslmed.aax3799", "10.1126/scitranslmed.aaz5387", "10.1126/scitranslmed.abd8836", "10.1126/scitranslmed.abe7378", "10.1126/scitranslmed.adg3904", "10.1126/stke.2003.179.re7", "10.1128/9781555817404.ch12", "10.1128/9781555817404.ch13", "10.1128/aem.00774-09", "10.1128/cmr.00106-14", "10.1128/cmr.14.4.689-703.2001", "10.1128/ec.00026-07", "10.1128/ec.00081-09", "10.1128/ec.00323-08", "10.1128/ec.3.4.900-909.2004", "10.1128/ecosalplus.8.7.2", "10.1128/ecosalplus.8.9.1", "10.1128/ecosalplus.esp-0016-2016", "10.1128/iai.00086-14", "10.1128/iai.00110-11", "10.1128/iai.00619-06", "10.1128/iai.00653-10", "10.1128/iai.00882-09", "10.1128/iai.01293-13", "10.1128/iai.69.3.1924-1928.2001", "10.1128/iai.70.5.2441-2453.2002", "10.1128/iai.70.8.4406-4413.2002", "10.1128/iai.73.9.5873-5882.2005", "10.1128/jb.00010-09", "10.1128/jb.00089-08", "10.1128/jb.00182-10", "10.1128/jb.00190-18", "10.1128/jb.00846-16", "10.1128/jb.00948-09", "10.1128/jb.00949-09", "10.1128/jb.01540-08", "10.1128/jb.01807-06", "10.1128/jb.02556-14", "10.1128/jb.172.12.6863-6870.1990", "10.1128/jb.174.11.3729-3738.1992", "10.1128/jb.174.14.4746-4752.1992", "10.1128/jb.174.6.1897-1903.1992", "10.1128/jb.174.8.2525-2538.1992", "10.1128/jb.178.22.6466-6474.1996", "10.1128/jb.178.7.1850-1857.1996", "10.1128/jb.179.11.3519-3527.1997", "10.1128/jb.182.19.5342-5350.2000", "10.1128/jb.182.21.6027-6035.2000", "10.1128/jb.186.19.6374-6382.2004", "10.1128/jb.186.9.2829-2840.2004", "10.1128/jb.187.12.4005-4014.2005", "10.1128/jb.188.10.3600-3613.2006", "10.1128/jb.188.4.1316-1331.2006", "10.1128/jvi.00256-09", "10.1128/jvi.00341-08", "10.1128/jvi.00452-16", "10.1128/jvi.00664-09", "10.1128/jvi.00913-07", "10.1128/jvi.01048-19", "10.1128/mbio.00122-17", "10.1128/mbio.00753-17", "10.1128/mbio.00966-18", "10.1128/mbio.01028-13", "10.1128/mbio.01061-14", "10.1128/mbio.01325-20", "10.1128/mbio.01547-18", "10.1128/mbio.01559-20", "10.1128/mbio.02097-14", "10.1128/mbio.02243-20", "10.1128/mbio.02415-19", "10.1128/mbio.02717-20", "10.1128/mcb.00849-10", "10.1128/mcb.00853-15", "10.1128/mcb.01017-15", "10.1128/mcb.01262-07", "10.1128/mcb.01262-08", "10.1128/mcb.01673-13", "10.1128/mcb.01817-07", "10.1128/mcb.02061-05", "10.1128/mcb.06077-11", "10.1128/mcb.13.10.6211", "10.1128/mcb.18.10.5788", "10.1128/mcb.20.21.8254-8263.2000", "10.1128/mcb.20.23.8933-8943.2000", "10.1128/mcb.20.6.2031-2042.2000", "10.1128/mcb.22.13.4544-4555.2002", "10.1128/mcb.22.13.4739-4749.2002", "10.1128/mcb.22.23.8135-8143.2002", "10.1128/mcb.22.9.2918-2927.2002", "10.1128/mcb.22.9.2974-2983.2002", "10.1128/mcb.23.23.8528-8541.2003", "10.1128/mcb.25.23.10611-10627.2005", "10.1128/mcb.25.6.2177-2190.2005", "10.1128/mmbr.00006-15", "10.1128/mmbr.00031-10", "10.1128/mmbr.05021-11", "10.1128/mmbr.62.4.1264-1300.1998", "10.1128/mmbr.66.2.300-372.2002", "10.1128/msphere.00408-19", "10.1128/msphere.00627-18", "10.1128/msystems.00574-21", "10.1134/s0006297918060020", "10.1134/s0026893317040033", "10.1134/s0026893320010069", "10.1134/s1021443722060115", "10.1134/s1070428023010165", "10.1134/s2079059714050050", "10.1136/amiajnl-2011-000178", "10.1136/bjsports-2018-100015", "10.1136/bmjopen-2013-004227", "10.1136/esmoopen-2020-000683", "10.1136/gutjnl-2012-303883", "10.1136/gutjnl-2015-310977", "10.1136/jclinpath-2020-206867", "10.1136/jclinpath-2020-206987", "10.1136/jclinpath-2020-207309", "10.1136/jim-2018-000722", "10.1136/jitc-2020-001341", "10.1136/jitc-2020-001996", "10.1136/jitc-2020-sitc2020.0315", "10.1136/jitc-2020-sitc2020.0392", "10.1136/jitc-2021-004185", "10.1136/jitc-2022-006552", "10.1136/jitc-2022-sitc2022.0020", "10.1139/bcb-2013-0063", "10.1139/bcb-2016-0137", "10.1139/f80-006", "10.1139/g05-056", "10.1145/2464996.2467272", "10.1145/2483954.2483958", "10.1145/3342195.3387517", "10.1146/annurev-biochem-052610-095910", "10.1146/annurev-biochem-060614-034242", "10.1146/annurev-biochem-062917-012239", "10.1146/annurev-biophys-062215-010822", "10.1146/annurev-cellbio-092910-154033", "10.1146/annurev-cellbio-100617-062719", "10.1146/annurev-cellbio-100814-125308", "10.1146/annurev-cellbio-100818-125444", "10.1146/annurev-food-022811-101114", "10.1146/annurev-genet-120215-035146", "10.1146/annurev-genet-120215-035312", "10.1146/annurev-genom-083118-014845", "10.1146/annurev-immunol-041015-055318", "10.1146/annurev-immunol-042617-053429", "10.1146/annurev-immunol-051116-052358", "10.1146/annurev-med-012017-043208", "10.1146/annurev-micro-092611-150039", "10.1146/annurev-neuro-102120-014813", "10.1146/annurev-physiol-031820-092824", "10.1146/annurev.bb.23.060194.003415", "10.1146/annurev.bi.48.070179.003443", "10.1146/annurev.biochem.052308.093131", "10.1146/annurev.biochem.70.1.703", "10.1146/annurev.biochem.75.103004.142710", "10.1146/annurev.cellbio.21.012804.093915", "10.1146/annurev.immunol.021908.132706", "10.1146/annurev.immunol.26.021607.090331", "10.1146/annurev.micro.112408.134054", "10.1146/annurev.neuro.051508.135600", "10.1146/annurev.neuro.24.1.1", "10.1146/annurev.neuro.24.1.385", "10.1146/annurev.neuro.27.070203.144143", "10.1146/annurev.pharmtox.46.120604.141046", "10.1152/ajpcell.00280.2003", "10.1152/ajpcell.00366.2013", "10.1152/ajpendo.00432.2009", "10.1152/ajpheart.00580.2018", "10.1152/ajplung.00026.2010", "10.1152/ajplung.00041.2014", "10.1152/ajplung.00063.2020", "10.1152/ajplung.00097.2010", "10.1152/ajplung.00108.2012", "10.1152/ajplung.00258.2010", "10.1152/ajplung.00288.2020", "10.1152/ajplung.00300.2004", "10.1152/ajplung.00300.2014", "10.1152/ajplung.00322.2009", "10.1152/ajplung.00337.2018", "10.1152/ajplung.00343.2011", "10.1152/ajplung.00353.2018", "10.1152/ajplung.00439.2001", "10.1152/ajplung.00439.2017", "10.1152/japplphysiol.00752.2013", "10.1152/japplphysiol.00906.2015", "10.1152/jn.00257.2018", "10.1152/jn.01035.2010", "10.1152/physiolgenomics.00043.2013", "10.1152/physrev.00013.2017", "10.1152/physrev.00031.2017", "10.1152/physrev.00037.2008", "10.1152/physrev.1999.79.1.143", "10.1155/2013/297378", "10.1155/2013/941764", "10.1155/2014/768758", "10.1155/2014/840906", "10.1155/2015/157201", "10.1155/2015/247892", "10.1155/2015/752510", "10.1155/2016/1513285", "10.1155/2016/3094642", "10.1155/2016/4937689", "10.1155/2016/7434191", "10.1155/2017/1719050", "10.1155/2017/4210867", "10.1155/2017/7979637", "10.1155/2018/3057624", "10.1155/2018/4784268", "10.1155/2018/8413496", "10.1155/2019/9208173", "10.1155/2020/5860487", "10.1155/2020/6107865", "10.1155/2022/5073059", "10.1158/0008-5472.can-05-0570", "10.1158/0008-5472.can-05-1343", "10.1158/0008-5472.can-06-0900", "10.1158/0008-5472.can-06-3452", "10.1158/0008-5472.can-08-2023", "10.1158/0008-5472.can-09-2331", "10.1158/0008-5472.can-10-1869", "10.1158/0008-5472.can-11-1514", "10.1158/0008-5472.can-11-3342", "10.1158/0008-5472.can-11-3386", "10.1158/0008-5472.can-11-4032", "10.1158/0008-5472.can-12-0263", "10.1158/0008-5472.can-12-2353", "10.1158/0008-5472.can-12-3970", "10.1158/0008-5472.can-13-0238", "10.1158/0008-5472.can-13-2699", "10.1158/0008-5472.can-14-2277", "10.1158/0008-5472.can-15-0159", "10.1158/0008-5472.can-15-0236", "10.1158/0008-5472.can-17-0314", "10.1158/0008-5472.can-18-0171", "10.1158/0008-5472.can-18-2807", "10.1158/0008-5472.can-18-3962", "10.1158/0008-5472.can-21-0162", "10.1158/1055-9965.epi-15-1223", "10.1158/1078-0432.ccr-04-2216", "10.1158/1078-0432.ccr-06-2191", "10.1158/1078-0432.ccr-07-1768", "10.1158/1078-0432.ccr-08-2495", "10.1158/1078-0432.ccr-09-2509", "10.1158/1078-0432.ccr-11-0503", "10.1158/1078-0432.ccr-12-1177", "10.1158/1078-0432.ccr-12-2422", "10.1158/1078-0432.ccr-13-0171", "10.1158/1078-0432.ccr-13-0694", "10.1158/1078-0432.ccr-13-2627", "10.1158/1078-0432.ccr-14-0827", "10.1158/1078-0432.ccr-14-1087", "10.1158/1078-0432.ccr-14-3096", "10.1158/1078-0432.ccr-20-3237", "10.1158/1078-0432.ccr-21-3088", "10.1158/1535-7163.mct-04-0241", "10.1158/1535-7163.mct-06-0055", "10.1158/1535-7163.mct-06-0556", "10.1158/1535-7163.mct-09-0862", "10.1158/1535-7163.mct-11-0340", "10.1158/1535-7163.mct-14-0447", "10.1158/1538-7445.am2021-1637", "10.1158/1541-7786.mcr-12-0030", "10.1158/1541-7786.mcr-18-1291", "10.1158/2159-8290.cd-13-0985", "10.1158/2159-8290.cd-16-0178", "10.1158/2326-6066.cir-13-0216", "10.1158/2326-6066.cir-14-0072", "10.1158/2326-6066.cir-15-0253", "10.1158/2326-6066.cir-17-0220", "10.1158/2326-6074.cricimteatiaacr18-b083", "10.1159/000069993", "10.1159/000106081", "10.1159/000308168", "10.1159/000319909", "10.1159/000341919", "10.1159/000345155", "10.1159/000453192", "10.1159/000471488", "10.1159/000481763", "10.1159/000487782", "10.1159/000499364", "10.1159/000521476", "10.11606/issn.1679-9836.v96i2p103-115", "10.1161/01.res.87.3.254", "10.1161/01.str.0000077016.55891.2e", "10.1161/01.str.0000078563.72650.61", "10.1161/atvbaha.111.236828", "10.1161/atvbaha.113.301360", "10.1161/circulationaha.118.033704", "10.1161/jaha.120.017176", "10.1163/193724012x626584", "10.1164/ajrccm.162.4.2001015", "10.1164/ajrccm.163.7.2006132", "10.1164/ajrccm/141.2.471", "10.1164/rccm.200404-531oc", "10.1164/rccm.200505-717oc", "10.1164/rccm.201204-0754oc", "10.1164/rccm.202005-1989oc", "10.1165/ajrcmb.25.3.4004", "10.1165/rcmb.2009-0002oc", "10.1165/rcmb.2011-0349oc", "10.1165/rcmb.2012-0226oc", "10.1165/rcmb.2012-0277oc", "10.1165/rcmb.2012-0335oc", "10.1165/rcmb.2015-0009oc", "10.1165/rcmb.2015-0148oc", "10.1165/rcmb.2016-0163oc", "10.1165/rcmb.2017-0186oc", "10.1165/rcmb.2017-0289oc", "10.1165/rcmb.2018-0098oc", "10.1165/rcmb.2020-0227oc", "10.1167/iovs.19-27322", "10.1172/jci.insight.127111", "10.1172/jci.insight.130056", "10.1172/jci.insight.131152", "10.1172/jci.insight.160891", "10.1172/jci.insight.96352", "10.1172/jci.insight.97597", "10.1172/jci.insight.99922", "10.1172/jci125336", "10.1172/jci131989", "10.1172/jci133737", "10.1172/jci140965", "10.1172/jci169496", "10.1172/jci171027", "10.1172/jci17828", "10.1172/jci33464", "10.1172/jci43578", "10.1172/jci45862", "10.1172/jci72039", "10.1172/jci80743", "10.1172/jci80822", "10.1172/jci82152", "10.1172/jci94624", "10.1176/appi.ajp.160.4.687", "10.1177/0040517521991244", "10.1177/0269881120965934", "10.1177/0271678x16681312", "10.1177/0300060520923522", "10.1177/0748233718769806", "10.1177/0883073814537380", "10.1177/0961203317716322", "10.1177/1078155218805141", "10.1177/117693430600200012", "10.1177/1203475420943260", "10.1177/1350508411429399", "10.1177/1533033819831068", "10.1177/1533033820977535", "10.1177/1534735415596424", "10.1177/1535370216647811", "10.1177/1535370216650291", "10.1177/1536012118792317", "10.1177/1557988314546667", "10.1177/1724600820914944", "10.1177/1933719113492210", "10.1177/1945892419885036", "10.1177/2040206617745168", "10.1177/2040206620950143", "10.1177/2042018814559725", "10.1177/44.9.8773564", "10.11777/j.issn.1000-3304.2024.24039", "10.1182/blood-2010-02-268425", "10.1182/blood-2011-03-344275", "10.1182/blood-2011-12-400044", "10.1182/blood-2012-03-416867", "10.1182/blood-2018-04-845834", "10.1182/blood.2020008503", "10.1182/blood.v95.3.745.003k05_745_755", "10.1182/bloodadvances.2019001429", "10.1186/1465-9921-14-102", "10.1186/1465-9921-15-51", "10.1186/1471-2105-14-27", "10.1186/1471-2105-8-127", "10.1186/1471-2148-10-308", "10.1186/1471-2148-9-39", "10.1186/1471-2156-15-s2-s8", "10.1186/1471-2164-15-624", "10.1186/1471-2164-15-729", "10.1186/1471-2202-11-14", "10.1186/1471-2229-14-68", "10.1186/1471-230x-12-38", "10.1186/1471-2377-10-29", "10.1186/1471-2407-10-283", "10.1186/1471-2407-14-781", "10.1186/1471-2407-14-955", "10.1186/1471-2407-14-977", "10.1186/1471-2407-8-364", "10.1186/1472-6785-11-4", "10.1186/1472-6807-6-24", "10.1186/1475-2840-13-36", "10.1186/1475-2859-12-46", "10.1186/1479-5876-11-5", "10.1186/1559-4106-8-19", "10.1186/1741-7007-10-72", "10.1186/1741-7007-10-95", "10.1186/1741-7007-9-5", "10.1186/1742-2094-11-43", "10.1186/1742-4690-7-33", "10.1186/1749-8104-2-1", "10.1186/1749-8104-7-17", "10.1186/1749-8104-9-18", "10.1186/1749-8104-9-4", "10.1186/1750-1172-1-47", "10.1186/1750-1326-7-8", "10.1186/1750-1326-8-2", "10.1186/1750-1326-9-33", "10.1186/1750-1326-9-48", "10.1186/1752-0509-6-15", "10.1186/1755-1536-6-15", "10.1186/1755-8794-1-3", "10.1186/1756-0500-3-145", "10.1186/1824-7288-40-34", "10.1186/2044-5040-3-24", "10.1186/2191-219x-2-5", "10.1186/ar4069", "10.1186/bcr1072", "10.1186/bcr2568", "10.1186/bcr2596", "10.1186/bcr3015", "10.1186/bcr3236", "10.1186/bcr3449", "10.1186/gb-2008-9-9-r137", "10.1186/gb-2009-10-3-r25", "10.1186/gb-2011-12-10-r102", "10.1186/s10020-018-0064-z", "10.1186/s10020-021-00402-3", "10.1186/s10020-024-00821-y", "10.1186/s11658-018-0127-8", "10.1186/s11658-024-00591-9", "10.1186/s12859-015-0514-3", "10.1186/s12859-018-2455-0", "10.1186/s12859-019-3012-1", "10.1186/s12859-022-04674-2", "10.1186/s12860-017-0151-y", "10.1186/s12864-015-2086-z", "10.1186/s12864-016-2664-8", "10.1186/s12864-016-2723-1", "10.1186/s12864-016-2960-3", "10.1186/s12864-016-3352-4", "10.1186/s12864-018-4989-y", "10.1186/s12864-018-5108-9", "10.1186/s12864-019-5927-3", "10.1186/s12864-020-07121-9", "10.1186/s12864-021-07377-9", "10.1186/s12864-021-07474-9", "10.1186/s12864-021-07518-0", "10.1186/s12864-023-09455-6", "10.1186/s12864-023-09562-4", "10.1186/s12864-023-09754-y", "10.1186/s12866-022-02722-8", "10.1186/s12868-019-0501-0", "10.1186/s12870-020-02385-5", "10.1186/s12870-021-03234-9", "10.1186/s12870-022-03545-5", "10.1186/s12870-022-03744-0", "10.1186/s12870-024-04841-y", "10.1186/s12873-022-00733-2", "10.1186/s12879-020-05741-w", "10.1186/s12879-020-4786-5", "10.1186/s12885-019-5592-6", "10.1186/s12885-019-5943-3", "10.1186/s12885-019-6391-9", "10.1186/s12885-020-07058-y", "10.1186/s12885-020-07376-1", "10.1186/s12890-016-0339-5", "10.1186/s12894-021-00938-w", "10.1186/s12896-019-0509-7", "10.1186/s12900-016-0065-5", "10.1186/s12900-017-0072-1", "10.1186/s12906-019-2581-x", "10.1186/s12906-020-02913-8", "10.1186/s12915-020-00905-1", "10.1186/s12915-021-01146-6", "10.1186/s12915-023-01673-4", "10.1186/s12915-023-01805-w", "10.1186/s12915-024-01888-z", "10.1186/s12915-024-01918-w", "10.1186/s12916-020-01673-z", "10.1186/s12920-019-0487-6", "10.1186/s12920-022-01172-5", "10.1186/s12920-022-01246-4", "10.1186/s12931-018-0801-4", "10.1186/s12931-018-0831-y", "10.1186/s12934-020-01301-8", "10.1186/s12934-022-01865-7", "10.1186/s12934-022-01908-z", "10.1186/s12935-014-0086-8", "10.1186/s12935-021-01925-9", "10.1186/s12935-021-02252-9", "10.1186/s12935-022-02599-7", "10.1186/s12943-018-0814-0", "10.1186/s12943-019-0968-4", "10.1186/s12943-019-0994-2", "10.1186/s12943-019-1019-x", "10.1186/s12943-019-1057-4", "10.1186/s12943-020-01175-9", "10.1186/s12943-020-01234-1", "10.1186/s12943-020-01260-z", "10.1186/s12943-021-01367-x", "10.1186/s12943-022-01518-8", "10.1186/s12943-022-01630-9", "10.1186/s12943-022-01682-x", "10.1186/s12943-023-01738-6", "10.1186/s12951-022-01266-3", "10.1186/s12951-024-02557-7", "10.1186/s12964-015-0116-8", "10.1186/s12964-018-0229-y", "10.1186/s12964-019-0434-3", "10.1186/s12964-020-00589-8", "10.1186/s12967-021-02857-8", "10.1186/s12967-022-03714-y", "10.1186/s12967-022-03765-1", "10.1186/s12967-022-03807-8", "10.1186/s12968-015-0198-x", "10.1186/s12974-015-0263-2", "10.1186/s12974-015-0299-3", "10.1186/s12974-016-0658-8", "10.1186/s12974-017-0938-y", "10.1186/s12974-019-1443-2", "10.1186/s12974-019-1516-2", "10.1186/s12974-019-1639-5", "10.1186/s12974-020-01738-z", "10.1186/s12974-020-01894-2", "10.1186/s12974-021-02221-z", "10.1186/s12974-021-02369-8", "10.1186/s12985-022-01926-8", "10.1186/s12989-021-00433-y", "10.1186/s13007-018-0353-0", "10.1186/s13024-018-0258-4", "10.1186/s13024-022-00583-3", "10.1186/s13024-022-00588-y", "10.1186/s13024-023-00672-x", "10.1186/s13024-024-00736-6", "10.1186/s13027-015-0016-y", "10.1186/s13041-015-0094-1", "10.1186/s13041-016-0191-9", "10.1186/s13041-019-0487-7", "10.1186/s13041-020-00585-6", "10.1186/s13041-020-00701-6", "10.1186/s13045-017-0423-1", "10.1186/s13045-018-0568-6", "10.1186/s13045-020-00890-6", "10.1186/s13045-020-00939-6", "10.1186/s13045-021-01127-w", "10.1186/s13045-022-01242-2", "10.1186/s13045-023-01439-z", "10.1186/s13046-015-0247-1", "10.1186/s13046-017-0665-3", "10.1186/s13046-018-0863-7", "10.1186/s13046-019-1115-1", "10.1186/s13046-019-1178-z", "10.1186/s13046-020-01586-y", "10.1186/s13046-020-01756-y", "10.1186/s13046-022-02484-1", "10.1186/s13046-022-02501-3", "10.1186/s13046-023-02741-x", "10.1186/s13046-023-02914-8", "10.1186/s13046-024-03052-5", "10.1186/s13046-024-03060-5", "10.1186/s13054-020-03440-1", "10.1186/s13058-016-0685-5", "10.1186/s13059-014-0550-8", "10.1186/s13059-015-0846-3", "10.1186/s13059-016-0888-1", "10.1186/s13059-017-1164-8", "10.1186/s13059-017-1220-4", "10.1186/s13059-017-1382-0", "10.1186/s13059-018-1518-x", "10.1186/s13059-018-1596-9", "10.1186/s13059-018-1603-1", "10.1186/s13059-019-1862-5", "10.1186/s13059-020-01972-x", "10.1186/s13059-020-01995-4", "10.1186/s13059-021-02266-6", "10.1186/s13059-021-02316-z", "10.1186/s13059-021-02462-4", "10.1186/s13059-021-02586-7", "10.1186/s13059-023-03153-y", "10.1186/s13064-020-00148-4", "10.1186/s13071-020-04010-8", "10.1186/s13071-020-04140-z", "10.1186/s13072-015-0009-5", "10.1186/s13072-018-0197-x", "10.1186/s13072-018-0208-y", "10.1186/s13072-022-00452-9", "10.1186/s13073-015-0131-9", "10.1186/s13073-015-0180-0", "10.1186/s13073-015-0215-6", "10.1186/s13073-016-0273-4", "10.1186/s13073-020-00809-3", "10.1186/s13073-021-00870-6", "10.1186/s13073-021-00876-0", "10.1186/s13073-023-01177-4", "10.1186/s13148-019-0736-8", "10.1186/s13195-023-01209-6", "10.1186/s13287-015-0081-6", "10.1186/s13287-019-1218-9", "10.1186/s13287-020-02093-9", "10.1186/s13578-019-0350-7", "10.1186/s13578-023-01017-3", "10.1186/s13742-015-0047-8", "10.1186/s40001-022-00647-6", "10.1186/s40035-019-0156-x", "10.1186/s40035-020-00221-2", "10.1186/s40035-021-00278-7", "10.1186/s40064-016-2536-3", "10.1186/s40101-016-0091-9", "10.1186/s40200-016-0268-0", "10.1186/s40249-020-00699-y", "10.1186/s40364-016-0064-5", "10.1186/s40425-016-0190-5", "10.1186/s40425-018-0339-5", "10.1186/s40425-019-0701-2", "10.1186/s40425-019-0716-8", "10.1186/s40478-015-0192-4", "10.1186/s40478-015-0237-8", "10.1186/s40478-016-0341-4", "10.1186/s40478-020-00901-0", "10.1186/s40478-022-01379-8", "10.1186/s40608-018-0197-1", "10.1186/s40635-021-00409-4", "10.1186/s40880-018-0334-8", "10.1186/s42269-019-0078-x", "10.1186/s43556-022-00073-4", "10.1189/jlb.0209053", "10.1189/jlb.2vma0915-432rr", "10.1189/jlb.3mr0915-431rr", "10.1189/jlb.5mr0217-059rr", "10.1189/jlb.71.4.545", "10.1190/int-2016-0920-fe.1", "10.1194/jlr.r066514", "10.1200/jco.20.01994", "10.1200/jco.2009.24.8252", "10.1200/jco.2012.47.1847", "10.1200/jco.2014.59.8912", "10.1200/jco.2018.36.15_suppl.tps5099", "10.1200/po.18.00134", "10.1210/en.2015-1622", "10.1210/er.2005-0014", "10.1210/er.2006-0050", "10.1210/jc.2005-2056", "10.1210/jc.2015-1176", "10.1212/01.con.0000348880.16694.08", "10.1212/wnl.0000000000003179", "10.1242/dev.004895", "10.1242/dev.00723", "10.1242/dev.01009", "10.1242/dev.01273", "10.1242/dev.02754", "10.1242/dev.029447", "10.1242/dev.056903", "10.1242/dev.126409", "10.1242/dev.161430", "10.1242/dev.169763", "10.1242/dev.170217", "10.1242/dev.186296", "10.1242/dmm.023762", "10.1242/dmm.030148", "10.1242/dmm.043307", "10.1242/jcs.00060", "10.1242/jcs.023820", "10.1242/jcs.035550", "10.1242/jcs.090944", "10.1242/jcs.137703", "10.1242/jcs.138537", "10.1242/jcs.176750", "10.1242/jcs.187849", "10.1242/jcs.244657", "10.1242/jeb.208215", "10.1249/mss.0000000000001074", "10.1261/rna.034090.112", "10.1261/rna.038919.113", "10.1261/rna.057208.116", "10.1261/rna.078739.121", "10.1261/rna.078963.121", "10.1261/rna.079944.124", "10.1261/rna.7100104", "10.1261/rna.782308", "10.12659/msm.940157", "10.12681/eadd/51531", "10.1271/bbb.100794", "10.1271/bbb.66.1", "10.1271/bbb.70496", "10.1289/ehp.1306560", "10.1289/ehp.7339", "10.1360/nso/20220067", "10.1369/jhc.5c6813.2006", "10.1371/journal.pbio.0030283", "10.1371/journal.pbio.1002005", "10.1371/journal.pbio.2003213", "10.1371/journal.pbio.3000877", "10.1371/journal.pbio.3001408", "10.1371/journal.pbio.3001481", "10.1371/journal.pbio.3001838", "10.1371/journal.pbio.3001980", "10.1371/journal.pbio.3002328", "10.1371/journal.pcbi.1002287", "10.1371/journal.pcbi.1004379", "10.1371/journal.pcbi.1004647", "10.1371/journal.pcbi.1004724", "10.1371/journal.pcbi.1005499", "10.1371/journal.pcbi.1006648", "10.1371/journal.pcbi.1007460", "10.1371/journal.pcbi.1008194", "10.1371/journal.pcbi.1008882", "10.1371/journal.pcbi.1009171", "10.1371/journal.pgen.1002030", "10.1371/journal.pgen.1002778", "10.1371/journal.pgen.1004489", "10.1371/journal.pgen.1004593", "10.1371/journal.pgen.1005231", "10.1371/journal.pgen.1006165", "10.1371/journal.pgen.1007164", "10.1371/journal.pgen.1007560", "10.1371/journal.pgen.1007749", "10.1371/journal.pgen.1007805", "10.1371/journal.pgen.1008385", "10.1371/journal.pgen.1008815", "10.1371/journal.pgen.1008964", "10.1371/journal.pgen.1009176", "10.1371/journal.pgen.1010325", "10.1371/journal.pntd.0003064", "10.1371/journal.pntd.0004234", "10.1371/journal.pntd.0008626", "10.1371/journal.pone.0000189", "10.1371/journal.pone.0000298", "10.1371/journal.pone.0003209", "10.1371/journal.pone.0007424", "10.1371/journal.pone.0008589", "10.1371/journal.pone.0008801", "10.1371/journal.pone.0008908", "10.1371/journal.pone.0011147", "10.1371/journal.pone.0011468", "10.1371/journal.pone.0011486", "10.1371/journal.pone.0012905", "10.1371/journal.pone.0012974", "10.1371/journal.pone.0017911", "10.1371/journal.pone.0018404", "10.1371/journal.pone.0019379", "10.1371/journal.pone.0019472", "10.1371/journal.pone.0021800", "10.1371/journal.pone.0023367", "10.1371/journal.pone.0023674", "10.1371/journal.pone.0025561", "10.1371/journal.pone.0027656", "10.1371/journal.pone.0033261", "10.1371/journal.pone.0035888", "10.1371/journal.pone.0037086", "10.1371/journal.pone.0037231", "10.1371/journal.pone.0041371", "10.1371/journal.pone.0045768", "10.1371/journal.pone.0046889", "10.1371/journal.pone.0047168", "10.1371/journal.pone.0049278", "10.1371/journal.pone.0050086", "10.1371/journal.pone.0050117", "10.1371/journal.pone.0050380", "10.1371/journal.pone.0051116", "10.1371/journal.pone.0053243", "10.1371/journal.pone.0055149", "10.1371/journal.pone.0055368", "10.1371/journal.pone.0060298", "10.1371/journal.pone.0064171", "10.1371/journal.pone.0065279", "10.1371/journal.pone.0066266", "10.1371/journal.pone.0069862", "10.1371/journal.pone.0070960", "10.1371/journal.pone.0075866", "10.1371/journal.pone.0078901", "10.1371/journal.pone.0082363", "10.1371/journal.pone.0084821", "10.1371/journal.pone.0085876", "10.1371/journal.pone.0092193", "10.1371/journal.pone.0096333", "10.1371/journal.pone.0096435", "10.1371/journal.pone.0101771", "10.1371/journal.pone.0102899", "10.1371/journal.pone.0110064", "10.1371/journal.pone.0110638", "10.1371/journal.pone.0111449", "10.1371/journal.pone.0113170", "10.1371/journal.pone.0114216", "10.1371/journal.pone.0116097", "10.1371/journal.pone.0121774", "10.1371/journal.pone.0125625", "10.1371/journal.pone.0129229", "10.1371/journal.pone.0129308", "10.1371/journal.pone.0130974", "10.1371/journal.pone.0133292", "10.1371/journal.pone.0133843", "10.1371/journal.pone.0134163", "10.1371/journal.pone.0142771", "10.1371/journal.pone.0144270", "10.1371/journal.pone.0155227", "10.1371/journal.pone.0157193", "10.1371/journal.pone.0159344", "10.1371/journal.pone.0163986", "10.1371/journal.pone.0164189", "10.1371/journal.pone.0165709", "10.1371/journal.pone.0170358", "10.1371/journal.pone.0177175", "10.1371/journal.pone.0178519", "10.1371/journal.pone.0187718", "10.1371/journal.pone.0190160", "10.1371/journal.pone.0191377", "10.1371/journal.pone.0193128", "10.1371/journal.pone.0196080", "10.1371/journal.pone.0197936", "10.1371/journal.pone.0198058", "10.1371/journal.pone.0207369", "10.1371/journal.pone.0208979", "10.1371/journal.pone.0211066", "10.1371/journal.pone.0211268", "10.1371/journal.pone.0211380", "10.1371/journal.pone.0211598", "10.1371/journal.pone.0220908", "10.1371/journal.pone.0226107", "10.1371/journal.pone.0227855", "10.1371/journal.pone.0228510", "10.1371/journal.pone.0237831", "10.1371/journal.pone.0247603", "10.1371/journal.pone.0248415", "10.1371/journal.pone.0250654", "10.1371/journal.pone.0255608", "10.1371/journal.pone.0256563", "10.1371/journal.pone.0272867", "10.1371/journal.pone.0272955", "10.1371/journal.pone.0289169", "10.1371/journal.pone.0291524", "10.1371/journal.pone.0297191", "10.1371/journal.ppat.1002298", "10.1371/journal.ppat.1002357", "10.1371/journal.ppat.1003757", "10.1371/journal.ppat.1005232", "10.1371/journal.ppat.1006739", "10.1371/journal.ppat.1008093", "10.1371/journal.ppat.1008957", "10.1371/journal.ppat.1009448", "10.1371/journal.ppat.1011131", "10.1371/journal.ppat.1011260", "10.1378/chest.09-3006", "10.1385/1-59259-584-7:531", "10.1387/ijdb.041802ad", "10.1387/ijdb.052029sz", "10.14232/phd.10660", "10.14264/uql.2015.697", "10.14336/ad.2020.0619", "10.14336/ad.2021.0429", "10.14411/eje.2010.019", "10.14418/wes01.2.301", "10.14499/indonesianjpharm25iss3pp166", "10.14710/jitaa.36.4.252-259", "10.14710/jitaa.38.3.163-170", "10.14710/jitaa.39.2.83-90", "10.14710/jitaa.40.3.159-166", "10.14710/jitaa.42.2.81-87", "10.14740/ijcp525", "10.14806/ej.17.1.200", "10.14814/phy2.13281", "10.1515/biolog-2017-0124", "10.1515/cclm-2017-0692", "10.1515/cclm-2019-0693", "10.1515/hsz-2018-0280", "10.1515/jpem.2009.22.7.581", "10.1515/med-2019-0067", "10.1515/med-2019-0080", "10.1515/mr-2022-0046", "10.1515/ntrev-2021-0115", "10.1517/14656566.2012.692777", "10.1517/14712590903379510", "10.1517/14712598.7.8.1193", "10.1517/14728222.2015.1043269", "10.1523/eneuro.0075-14.2015", "10.1523/eneuro.0230-16.2016", "10.1523/eneuro.0238-22.2022", "10.1523/eneuro.0381-18.2018", "10.1523/jneurosci.0311-05.2005", "10.1523/jneurosci.0413-20.2020", "10.1523/jneurosci.0421-09.2009", "10.1523/jneurosci.0558-12.2012", "10.1523/jneurosci.0849-14.2015", "10.1523/jneurosci.10-06-01866.1990", "10.1523/jneurosci.1137-14.2014", "10.1523/jneurosci.1169-10.2010", "10.1523/jneurosci.12-11-04565.1992", "10.1523/jneurosci.1360-10.2010", "10.1523/jneurosci.1384-17.2017", "10.1523/jneurosci.14-04-01963.1994", "10.1523/jneurosci.1429-16.2016", "10.1523/jneurosci.1444-14.2014", "10.1523/jneurosci.17-11-04112.1997", "10.1523/jneurosci.17-13-05046.1997", "10.1523/jneurosci.1776-10.2010", "10.1523/jneurosci.18-01-00237.1998", "10.1523/jneurosci.18-15-05777.1998", "10.1523/jneurosci.1860-10.2010", "10.1523/jneurosci.19-13-05429.1999", "10.1523/jneurosci.19-16-07077.1999", "10.1523/jneurosci.1983-09.2009", "10.1523/jneurosci.2001-12.2013", "10.1523/jneurosci.22-03-00629.2002", "10.1523/jneurosci.22-08-03033.2002", "10.1523/jneurosci.22-15-06639.2002", "10.1523/jneurosci.2324-05.2005", "10.1523/jneurosci.2516-19.2020", "10.1523/jneurosci.2657-13.2013", "10.1523/jneurosci.3004-14.2015", "10.1523/jneurosci.3302-04.2004", "10.1523/jneurosci.3594-17.2018", "10.1523/jneurosci.3618-17.2018", "10.1523/jneurosci.3631-10.2011", "10.1523/jneurosci.3933-06.2006", "10.1523/jneurosci.4209-15.2016", "10.1523/jneurosci.4363-10.2010", "10.1523/jneurosci.4520-04.2005", "10.1523/jneurosci.4871-11.2011", "10.1523/jneurosci.5567-05.2006", "10.1523/jneurosci.5905-10.2011", "10.15252/embj.201490350", "10.15252/embj.201490791", "10.15252/embj.201591245", "10.15252/embj.2020105896", "10.15252/embr.201642051", "10.15252/emmm.201505298", "10.15252/emmm.201606924", "10.15252/emmm.201707993", "10.15252/emmm.201708454", "10.15252/emmm.201809091", "10.15252/emmm.201810234", "10.15252/emmm.201810248", "10.15252/msb.20145968", "10.15252/msb.20156639", "10.15252/msb.20167279", "10.15252/msb.20177834", "10.15252/msb.20178129", "10.15273/pnsis.v47i2.4343", "10.1530/ec-19-0085", "10.1530/joe-12-0385", "10.1530/rep-07-0267", "10.1530/rep-12-0153", "10.15332/dt.inv.2020.01141", "10.15332/dt.inv.2020.01142", "10.1534/g3.114.015354", "10.1534/g3.117.040824", "10.1534/g3.118.200022", "10.1534/g3.118.200874", "10.1534/genetics.106.070300", "10.1534/genetics.109.112516", "10.1534/genetics.111.136465", "10.1534/genetics.112.140863", "10.1534/genetics.113.155093", "10.1534/genetics.113.160713", "10.1534/genetics.114.164350", "10.1534/genetics.115.178897", "10.1534/genetics.116.186759", "10.1534/genetics.118.301515", "10.15354/si.23.re833", "10.15354/si.23.re838", "10.15446/agron.colomb.v38n2.85082", "10.1556/0806.45.2017.054", "10.15562/ism.v10i1.346", "10.15562/ism.v12i2.1017", "10.15578/squalen.v8i1.77", "10.15578/squalen.v9i3.107", "10.15835/nbha4017369", "10.1586/14737140.8.5.683", "10.1586/1744666x.2015.987663", "10.1586/ers.10.73", "10.1590/1806-9282.66.12.1666", "10.1593/tlo.12268", "10.1614/wt-03-056r", "10.1615/critreveukaryotgeneexpr.2013006905", "10.1631/jzus.b2100196", "10.1634/stemcells.2005-0482", "10.1634/stemcells.2007-0205", "10.1634/stemcells.2008-0293", "10.1673/031.007.2901", "10.1673/031.010.10601", "10.1677/erc-10-0107", "10.17219/acem/130604", "10.17221/73/2022-cjgpb", "10.17503/agrivita.v42i1.1805", "10.17576/jsm-2018-4705-09", "10.17576/jsm-2019-4806-04", "10.17576/jsm-2019-4808-18", "10.17576/jsm-2020-4909-10", "10.17576/jsm-2021-5008-16", "10.17576/jsm-2022-5107-01", "10.17576/jsm-2022-5107-17", "10.17576/jsm-2022-5110-22", "10.17576/jsm-2023-5206-09", "10.17576/mjas-2016-2005-16", "10.17760/d20413926", "10.17918/00000836", "10.17918/00001403", "10.18297/etd/3479", "10.18297/etd/3789", "10.18502/jbe.v7i2.6711", "10.18632/aging.100453", "10.18632/aging.100738", "10.18632/aging.100807", "10.18632/aging.101355", "10.18632/oncotarget.10117", "10.18632/oncotarget.10132", "10.18632/oncotarget.10327", "10.18632/oncotarget.10338", "10.18632/oncotarget.10639", "10.18632/oncotarget.11121", "10.18632/oncotarget.13517", "10.18632/oncotarget.1426", "10.18632/oncotarget.14447", "10.18632/oncotarget.16978", "10.18632/oncotarget.21780", "10.18632/oncotarget.25045", "10.18632/oncotarget.25600", "10.18632/oncotarget.26058", "10.18632/oncotarget.2908", "10.18632/oncotarget.3798", "10.18632/oncotarget.3828", "10.18632/oncotarget.525", "10.18632/oncotarget.5951", "10.18632/oncotarget.6708", "10.18869/acadpub.pbr.2.3.13", "10.19185/matters.201606000006", "10.20517/2394-4722.2019.11", "10.20517/cdr.2022.67", "10.20517/evcna.2022.43", "10.20527/fs.v1i1.1175", "10.20884/1.jap.2017.19.2.624", "10.20884/1.jap.2020.22.2.48", "10.20886/jpkf.2017.1.1.1-8", "10.20944/preprints202001.0120.v1", "10.20944/preprints202210.0450.v1", "10.20944/preprints202304.0790.v1", "10.21037/atm-22-2507", "10.21037/jtd.2018.11.39", "10.21037/tau.2018.06.02", "10.21082/jpptp.v2n3.2018.p199-204", "10.21161/mjm.52713", "10.21203/rs.2.10988/v1", "10.21203/rs.2.11204/v1", "10.21203/rs.2.21769/v1", "10.21203/rs.3.rs-1070274/v1", "10.21203/rs.3.rs-130881/v1", "10.21203/rs.3.rs-1347118/v1", "10.21203/rs.3.rs-1352877/v1", "10.21203/rs.3.rs-135639/v1", "10.21203/rs.3.rs-162289/v1", "10.21203/rs.3.rs-2131027/v1", "10.21203/rs.3.rs-217476/v1", "10.21203/rs.3.rs-23953/v1", "10.21203/rs.3.rs-24960/v1", "10.21203/rs.3.rs-2836590/v1", "10.21203/rs.3.rs-2879043/v1", "10.21203/rs.3.rs-3210240/v1", "10.21203/rs.3.rs-3253785/v1", "10.21203/rs.3.rs-354057/v1", "10.21203/rs.3.rs-354057/v2", "10.21203/rs.3.rs-3879966/v1", "10.21203/rs.3.rs-398360/v1", "10.21203/rs.3.rs-556961/v1", "10.21203/rs.3.rs-57831/v1", "10.21203/rs.3.rs-858195/v1", "10.21203/rs.3.rs-977764/v1", "10.21203/rs.3.rs-99482/v1", "10.2131/jts.37.1191", "10.21315/tlsr2018.29.1.2", "10.2139/ssrn.3232155", "10.2139/ssrn.3335002", "10.21417/b7305d", "10.2142/biophysico.16.0_80", "10.2147/btt.s326422", "10.2147/ccid.s50046", "10.2147/ceg.s70906", "10.2147/cmar.s182854", "10.2147/ott.s166412", "10.2147/ott.s199601", "10.2147/ott.s263980", "10.21608/ejchem.2019.14090.1869", "10.21608/ejchem.2023.150355.6511", "10.21608/ejh.2021.80788.1505", "10.21608/jssae.2018.36477", "10.2165/00023210-200721010-00001", "10.2166/ws.2021.179", "10.2174/0929866511307010078", "10.2174/0929866523666160901153553", "10.2174/13816128113199990463", "10.2174/138920212799860706", "10.2174/156652407780831629", "10.2174/156720506777632817", "10.2174/156800908784533490", "10.2174/1570159x14666160928151546", "10.2174/1570159x22666231017141636", "10.2174/157488806776956887", "10.2174/187152011795347513", "10.2174/187152707780619326", "10.2174/187152711794488601", "10.2174/1871527315666161223130409", "10.21769/bioprotoc.3967", "10.21769/bioprotoc.4022", "10.2183/pjab.93.024", "10.21873/anticanres.11774", "10.21873/anticanres.12963", "10.2196/44237", "10.2210/pdb6ich/pdb", "10.2210/pdb6sce/pdb", "10.2217/epi-2019-0110", "10.2217/fmb-2018-0278", "10.2217/fmb.14.87", "10.2217/fon-2020-0095", "10.2217/fon-2020-0384", "10.2217/fon.12.95", "10.2217/nnm-2018-0522", "10.2217/nnm.12.126", "10.2217/pgs.12.125", "10.2217/pgs.14.102", "10.22215/etd/2017-12137", "10.22302/iribb.jur.mp.v76i1.94", "10.22302/iribb.jur.mp.v87i2.341", "10.22435/hsji.v12i2.2442", "10.22541/au.167586304.40712731", "10.2298/gensr2003127j", "10.2298/gensr2003925m", "10.2307/2684761", "10.2307/j.ctv1q26k7w.5", "10.2337/db09-1253", "10.2337/db13-1609", "10.2337/db14-1504", "10.2337/db14-1708", "10.2337/db17-0237", "10.2337/db20-0162", "10.24124/2017/1386", "10.24190/issn2564-615x/2017/01.02", "10.24272/j.issn.2095-8137.2021.469", "10.2478/s11756-013-0162-x", "10.2478/v10134-010-0027-6", "10.25080/majora-92bf1922-00a", "10.25148/etd.fi13101576", "10.25148/etd.fidc009672", "10.2528/pier07092503", "10.26434/chemrxiv-2022-nskrq", "10.26481/dis.20200305ev", "10.26508/lsa.202000743", "10.26508/lsa.202000955", "10.26508/lsa.202201429", "10.26508/lsa.202201735", "10.2741/3053", "10.2967/jnumed.113.128108", "10.2967/jnumed.116.187021", "10.2991/978-94-6463-116-6_51", "10.30595/pharmacy.v19i2.13611", "10.3103/s0095452718040102", "10.31083/j.fbl2707207", "10.31083/j.jin2205108", "10.3109/00207454.2011.642037", "10.3109/01677063.2014.922558", "10.3109/03009734.2012.665097", "10.3109/03009734.2014.970304", "10.3109/08923970903292663", "10.3109/1040841x.2012.702098", "10.3109/10409238.2011.632763", "10.3109/10715762.2011.572969", "10.3109/13651500903375511", "10.3109/17435390.2010.541293", "10.31362/patd.1218005", "10.31479/jtek.v10i2.226", "10.31742/ijgpb.80.4.12", "10.3201/eid2010.141110", "10.3201/eid2802.211661", "10.3233/adr-170049", "10.3233/cbm-2012-0247", "10.3233/jad-130998", "10.3233/jad-143120", "10.3233/jad-160726", "10.3233/jad-161088", "10.3233/jad-170775", "10.3233/jad-2001-3117", "10.3233/jad-2011-0050", "10.3233/jad-2012-120982", "10.3233/jhd-170265", "10.3233/jnd-170229", "10.3233/jpd-201965", "10.32421/juri.v27i2.649", "10.32657/10356/65350", "10.3322/caac.21492", "10.3324/haematol.2011.043265", "10.3324/haematol.2015.130179", "10.3354/meps308271", "10.3382/ps.2013-03306", "10.3389/falgy.2023.1147513", "10.3389/fbioe.2016.00037", "10.3389/fbioe.2019.00400", "10.3389/fbioe.2020.609653", "10.3389/fbioe.2021.775309", "10.3389/fbioe.2022.942440", "10.3389/fbioe.2023.1149943", "10.3389/fcell.2016.00071", "10.3389/fcell.2018.00131", "10.3389/fcell.2020.00220", "10.3389/fcell.2020.556532", "10.3389/fcell.2020.593283", "10.3389/fcell.2020.594372", "10.3389/fcell.2021.612645", "10.3389/fcell.2021.624025", "10.3389/fcell.2021.645593", "10.3389/fcell.2021.649538", "10.3389/fcell.2021.715027", "10.3389/fcell.2021.720490", "10.3389/fcell.2021.720798", "10.3389/fcell.2021.733270", "10.3389/fcell.2021.735001", "10.3389/fcell.2021.739358", "10.3389/fcell.2021.761709", "10.3389/fcell.2021.775102", "10.3389/fcell.2021.803252", "10.3389/fcell.2022.796066", "10.3389/fcell.2022.803061", "10.3389/fcell.2022.840831", "10.3389/fcell.2022.852239", "10.3389/fcell.2023.1207960", "10.3389/fcell.2024.1397807", "10.3389/fchem.2019.00650", "10.3389/fchem.2021.781213", "10.3389/fchem.2022.1012443", "10.3389/fcimb.2019.00138", "10.3389/fcimb.2021.595575", "10.3389/fcimb.2021.646688", "10.3389/fcimb.2021.802613", "10.3389/feduc.2024.1379515", "10.3389/fendo.2019.00051", "10.3389/fendo.2019.00492", "10.3389/fendo.2021.735019", "10.3389/fgeed.2020.617910", "10.3389/fgeed.2022.825236", "10.3389/fgeed.2022.932434", "10.3389/fgene.2016.00152", "10.3389/fgene.2017.00019", "10.3389/fgene.2018.00691", "10.3389/fgene.2019.00031", "10.3389/fgene.2019.00551", "10.3389/fgene.2020.00585", "10.3389/fgene.2020.00872", "10.3389/fgene.2020.00958", "10.3389/fgene.2020.587829", "10.3389/fgene.2020.589413", "10.3389/fgene.2021.639642", "10.3389/fgene.2021.645863", "10.3389/fgene.2022.1037091", "10.3389/fgene.2022.1085391", "10.3389/fgene.2022.845474", "10.3389/fgene.2022.861241", "10.3389/fgene.2022.876987", "10.3389/fgene.2022.962449", "10.3389/fgene.2023.1017388", "10.3389/fgene.2023.1087267", "10.3389/fimmu.2011.00054", "10.3389/fimmu.2013.00491", "10.3389/fimmu.2014.00203", "10.3389/fimmu.2014.00607", "10.3389/fimmu.2015.00091", "10.3389/fimmu.2015.00243", "10.3389/fimmu.2016.00655", "10.3389/fimmu.2017.01179", "10.3389/fimmu.2017.01427", "10.3389/fimmu.2018.01674", "10.3389/fimmu.2018.01718", "10.3389/fimmu.2018.02481", "10.3389/fimmu.2018.02593", "10.3389/fimmu.2018.02716", "10.3389/fimmu.2018.02759", "10.3389/fimmu.2018.02788", "10.3389/fimmu.2018.02898", "10.3389/fimmu.2018.03059", "10.3389/fimmu.2019.00128", "10.3389/fimmu.2019.00456", "10.3389/fimmu.2019.00766", "10.3389/fimmu.2019.01084", "10.3389/fimmu.2019.01643", "10.3389/fimmu.2019.01719", "10.3389/fimmu.2019.01951", "10.3389/fimmu.2019.02293", "10.3389/fimmu.2019.02388", "10.3389/fimmu.2020.00305", "10.3389/fimmu.2020.00827", "10.3389/fimmu.2020.00952", "10.3389/fimmu.2020.00990", "10.3389/fimmu.2020.01416", "10.3389/fimmu.2020.02054", "10.3389/fimmu.2020.559342", "10.3389/fimmu.2020.566892", "10.3389/fimmu.2020.580237", "10.3389/fimmu.2020.580250", "10.3389/fimmu.2020.580378", "10.3389/fimmu.2020.622509", "10.3389/fimmu.2021.662164", "10.3389/fimmu.2021.674048", "10.3389/fimmu.2021.676932", "10.3389/fimmu.2021.682397", "10.3389/fimmu.2021.691039", "10.3389/fimmu.2021.702726", "10.3389/fimmu.2021.710608", "10.3389/fimmu.2021.738915", "10.3389/fimmu.2021.778885", "10.3389/fimmu.2021.783725", "10.3389/fimmu.2021.790201", "10.3389/fimmu.2022.1006897", "10.3389/fimmu.2022.1008072", "10.3389/fimmu.2022.1008751", "10.3389/fimmu.2022.1009634", "10.3389/fimmu.2022.1031924", "10.3389/fimmu.2022.796481", "10.3389/fimmu.2022.812774", "10.3389/fimmu.2022.833531", "10.3389/fimmu.2022.839362", "10.3389/fimmu.2022.861251", "10.3389/fimmu.2022.861670", "10.3389/fimmu.2022.862757", "10.3389/fimmu.2022.873116", "10.3389/fimmu.2022.886431", "10.3389/fimmu.2022.887048", "10.3389/fimmu.2022.907022", "10.3389/fimmu.2022.915094", "10.3389/fimmu.2022.934221", "10.3389/fimmu.2023.1045024", "10.3389/fimmu.2023.1086102", "10.3389/fimmu.2023.1110593", "10.3389/fimmu.2023.1111960", "10.3389/fimmu.2023.1120434", "10.3389/fimmu.2023.1143980", "10.3389/fimmu.2023.1281744", "10.3389/fimmu.2023.1311658", "10.3389/fimmu.2024.1353570", "10.3389/fimmu.2024.1407992", "10.3389/fmed.2015.00084", "10.3389/fmed.2021.640020", "10.3389/fmed.2022.924267", "10.3389/fmicb.2015.00439", "10.3389/fmicb.2016.00901", "10.3389/fmicb.2016.01712", "10.3389/fmicb.2018.02605", "10.3389/fmicb.2019.02511", "10.3389/fmicb.2020.01583", "10.3389/fmicb.2020.02038", "10.3389/fmicb.2020.567317", "10.3389/fmicb.2020.591287", "10.3389/fmicb.2020.619618", "10.3389/fmicb.2021.631621", "10.3389/fmicb.2021.635227", "10.3389/fmicb.2021.642484", "10.3389/fmicb.2021.744164", "10.3389/fmicb.2022.798906", "10.3389/fmicb.2022.821196", "10.3389/fmicb.2022.849080", "10.3389/fmicb.2023.1211793", "10.3389/fmicb.2023.1225513", "10.3389/fmolb.2020.00080", "10.3389/fmolb.2020.579874", "10.3389/fmolb.2021.685757", "10.3389/fmolb.2022.1007720", "10.3389/fmolb.2023.1133123", "10.3389/fnagi.2010.00008", "10.3389/fnagi.2016.00012", "10.3389/fnagi.2016.00163", "10.3389/fnagi.2021.713726", "10.3389/fnagi.2022.1017299", "10.3389/fnagi.2022.890509", "10.3389/fnagi.2024.1403142", "10.3389/fnbeh.2022.989011", "10.3389/fncel.2012.00070", "10.3389/fncel.2014.00129", "10.3389/fncel.2015.00249", "10.3389/fncel.2016.00215", "10.3389/fncel.2018.00224", "10.3389/fncel.2018.00239", "10.3389/fncel.2019.00574", "10.3389/fncel.2020.00072", "10.3389/fncel.2021.617036", "10.3389/fncel.2021.618393", "10.3389/fncel.2021.626128", "10.3389/fncel.2021.631548", "10.3389/fncel.2021.686722", "10.3389/fncel.2021.707861", "10.3389/fncel.2021.720807", "10.3389/fncel.2021.748849", "10.3389/fncel.2022.1054270", "10.3389/fncel.2022.826608", "10.3389/fncel.2022.949340", "10.3389/fncel.2023.1259380", "10.3389/fneur.2015.00257", "10.3389/fneur.2019.00790", "10.3389/fneur.2020.00638", "10.3389/fneur.2021.629414", "10.3389/fneur.2021.633207", "10.3389/fneur.2022.805786", "10.3389/fninf.2023.1265079", "10.3389/fnins.2011.00080", "10.3389/fnins.2012.00010", "10.3389/fnins.2015.00059", "10.3389/fnins.2015.00407", "10.3389/fnins.2016.00052", "10.3389/fnins.2021.640113", "10.3389/fnins.2022.852729", "10.3389/fnins.2022.909762", "10.3389/fnins.2023.1164251", "10.3389/fnint.2017.00028", "10.3389/fnmol.2013.00014", "10.3389/fnmol.2017.00153", "10.3389/fnmol.2017.00421", "10.3389/fnmol.2018.00145", "10.3389/fnmol.2019.00113", "10.3389/fnmol.2019.00140", "10.3389/fnmol.2020.00148", "10.3389/fnsyn.2020.00010", "10.3389/fnut.2016.00010", "10.3389/fonc.2012.00046", "10.3389/fonc.2013.00063", "10.3389/fonc.2013.00251", "10.3389/fonc.2015.00063", "10.3389/fonc.2018.00431", "10.3389/fonc.2019.01448", "10.3389/fonc.2020.00380", "10.3389/fonc.2020.570736", "10.3389/fonc.2021.622752", "10.3389/fonc.2021.711402", "10.3389/fonc.2021.805571", "10.3389/fonc.2022.1022688", "10.3389/fonc.2022.800499", "10.3389/fonc.2022.832765", "10.3389/fonc.2022.906415", "10.3389/fonc.2022.960317", "10.3389/fphar.2018.00394", "10.3389/fphar.2018.00399", "10.3389/fphar.2019.01008", "10.3389/fphar.2020.00343", "10.3389/fphar.2020.01309", "10.3389/fphar.2020.553690", "10.3389/fphar.2021.808797", "10.3389/fphar.2022.835979", "10.3389/fphar.2022.848263", "10.3389/fphar.2022.906038", "10.3389/fphar.2022.926507", "10.3389/fphar.2022.989169", "10.3389/fphar.2023.1178190", "10.3389/fphar.2023.1304194", "10.3389/fphar.2024.1364135", "10.3389/fphys.2017.00294", "10.3389/fphys.2018.01742", "10.3389/fphys.2019.00930", "10.3389/fphys.2019.01526", "10.3389/fphys.2023.1076533", "10.3389/fpls.2011.00089", "10.3389/fpls.2012.00009", "10.3389/fpls.2017.00177", "10.3389/fpls.2017.00416", "10.3389/fpls.2017.00661", "10.3389/fpls.2017.01441", "10.3389/fpls.2017.01815", "10.3389/fpls.2018.01812", "10.3389/fpls.2019.00295", "10.3389/fpls.2019.00495", "10.3389/fpls.2019.00612", "10.3389/fpls.2020.573299", "10.3389/fpls.2020.576078", "10.3389/fpls.2021.642934", "10.3389/fpls.2021.729261", "10.3389/fpls.2022.844292", "10.3389/fpls.2022.858829", "10.3389/fpls.2022.869870", "10.3389/fpls.2022.910228", "10.3389/fpls.2022.921970", "10.3389/fpls.2022.962364", "10.3389/fpsyt.2014.00069", "10.3389/fpubh.2020.00011", "10.3389/fvets.2024.1325072", "10.3390/agronomy10091231", "10.3390/agronomy11071359", "10.3390/agronomy12030564", "10.3390/ani13111763", "10.3390/antib12030055", "10.3390/antiox11081592", "10.3390/antiox9090791", "10.3390/antiox9101020", "10.3390/antiox9111156", "10.3390/biology11030411", "10.3390/biology12060832", "10.3390/biology13040241", "10.3390/biology13050307", "10.3390/biology8020027", "10.3390/biom10010161", "10.3390/biom10111523", "10.3390/biom11020150", "10.3390/biom11020336", "10.3390/biom11081071", "10.3390/biom11081232", "10.3390/biom11101429", "10.3390/biom11121852", "10.3390/biom13020322", "10.3390/biom13101443", "10.3390/biom14020211", "10.3390/biom9050190", "10.3390/biomedicines10051002", "10.3390/biomedicines10071689", "10.3390/biomedicines10071710", "10.3390/biomedicines10081769", "10.3390/biomedicines11051325", "10.3390/biomedicines11092410", "10.3390/biomedicines9030234", "10.3390/biomedicines9091162", "10.3390/brainsci10120909", "10.3390/brainsci12030367", "10.3390/cancers11010111", "10.3390/cancers11060780", "10.3390/cancers11091266", "10.3390/cancers11101420", "10.3390/cancers11101603", "10.3390/cancers12010051", "10.3390/cancers12020287", "10.3390/cancers12030590", "10.3390/cancers12041036", "10.3390/cancers12041049", "10.3390/cancers12051253", "10.3390/cancers12061393", "10.3390/cancers12061581", "10.3390/cancers12071765", "10.3390/cancers12082058", "10.3390/cancers12092651", "10.3390/cancers12092718", "10.3390/cancers12102991", "10.3390/cancers13030440", "10.3390/cancers13030495", "10.3390/cancers13051145", "10.3390/cancers13051172", "10.3390/cancers13061351", "10.3390/cancers13071488", "10.3390/cancers13071591", "10.3390/cancers13092019", "10.3390/cancers13092073", "10.3390/cancers13122872", "10.3390/cancers13133136", "10.3390/cancers13133281", "10.3390/cancers13143526", "10.3390/cancers13184661", "10.3390/cancers13194896", "10.3390/cancers13246206", "10.3390/cancers14020440", "10.3390/cancers14030645", "10.3390/cancers14040878", "10.3390/cancers14051297", "10.3390/cancers14082024", "10.3390/cancers14184394", "10.3390/cancers14215404", "10.3390/cancers15030736", "10.3390/cancers15041001", "10.3390/cancers15072084", "10.3390/cancers15184555", "10.3390/cancers15205042", "10.3390/cancers16020457", "10.3390/cancers9120162", "10.3390/cells10040907", "10.3390/cells10051191", "10.3390/cells10061420", "10.3390/cells10082079", "10.3390/cells10113239", "10.3390/cells10123278", "10.3390/cells10123290", "10.3390/cells10123587", "10.3390/cells11010142", "10.3390/cells11030346", "10.3390/cells11030403", "10.3390/cells11091526", "10.3390/cells11121925", "10.3390/cells11132090", "10.3390/cells11152345", "10.3390/cells11152408", "10.3390/cells11213359", "10.3390/cells11213383", "10.3390/cells12050805", "10.3390/cells12081165", "10.3390/cells12081187", "10.3390/cells12242827", "10.3390/cells13010091", "10.3390/cells13020131", "10.3390/cells13050436", "10.3390/cells13110903", "10.3390/cells7050041", "10.3390/cells8101164", "10.3390/cells8121591", "10.3390/cells9020273", "10.3390/cells9071608", "10.3390/cells9081775", "10.3390/cells9091990", "10.3390/cells9112405", "10.3390/cells9112435", "10.3390/cells9122654", "10.3390/cimb45050252", "10.3390/cimb46060346", "10.3390/clockssleep5010012", "10.3390/curroncol29040234", "10.3390/diagnostics14070713", "10.3390/epigenomes2010001", "10.3390/foods12020337", "10.3390/genes10100826", "10.3390/genes11040466", "10.3390/genes12010019", "10.3390/genes12060797", "10.3390/genes13020205", "10.3390/genes14010129", "10.3390/genes14010157", "10.3390/genes4010065", "10.3390/genes8020048", "10.3390/genes8120399", "10.3390/ijms13078293", "10.3390/ijms14034684", "10.3390/ijms15022991", "10.3390/ijms150915791", "10.3390/ijms16023970", "10.3390/ijms16024095", "10.3390/ijms160818054", "10.3390/ijms18061146", "10.3390/ijms18112431", "10.3390/ijms19051418", "10.3390/ijms19082435", "10.3390/ijms19124072", "10.3390/ijms19124129", "10.3390/ijms20010074", "10.3390/ijms20010096", "10.3390/ijms20082024", "10.3390/ijms20102469", "10.3390/ijms21020602", "10.3390/ijms21093283", "10.3390/ijms21124242", "10.3390/ijms21124449", "10.3390/ijms21155186", "10.3390/ijms21155494", "10.3390/ijms21165707", "10.3390/ijms21175960", "10.3390/ijms21186461", "10.3390/ijms21207777", "10.3390/ijms21249604", "10.3390/ijms22020843", "10.3390/ijms22073490", "10.3390/ijms22116167", "10.3390/ijms22137012", "10.3390/ijms22168423", "10.3390/ijms22168494", "10.3390/ijms22168525", "10.3390/ijms22168597", "10.3390/ijms22179550", "10.3390/ijms221910355", "10.3390/ijms221910701", "10.3390/ijms222010984", "10.3390/ijms222111544", "10.3390/ijms222312692", "10.3390/ijms222312928", "10.3390/ijms23010456", "10.3390/ijms23031454", "10.3390/ijms23031537", "10.3390/ijms23105543", "10.3390/ijms23105690", "10.3390/ijms23105837", "10.3390/ijms23115938", "10.3390/ijms23115992", "10.3390/ijms23137124", "10.3390/ijms231810906", "10.3390/ijms231911261", "10.3390/ijms232113009", "10.3390/ijms232415804", "10.3390/ijms232416148", "10.3390/ijms24021708", "10.3390/ijms24054524", "10.3390/ijms24055010", "10.3390/ijms24065073", "10.3390/ijms24087262", "10.3390/ijms24108967", "10.3390/ijms24119214", "10.3390/ijms24129986", "10.3390/ijms25010452", "10.3390/ijms25010547", "10.3390/ijms25052456", "10.3390/ijms25073642", "10.3390/ijms25084422", "10.3390/ijms25094929", "10.3390/ijms25126626", "10.3390/ijms25126667", "10.3390/immuno1040035", "10.3390/infrastructures5080066", "10.3390/jcm11010113", "10.3390/jcm8081262", "10.3390/jof7060414", "10.3390/jpm11121291", "10.3390/life11020076", "10.3390/life12020229", "10.3390/life12071081", "10.3390/m1138", "10.3390/ma13204495", "10.3390/medicina57030267", "10.3390/medicines6030082", "10.3390/microorganisms10040698", "10.3390/microorganisms10101901", "10.3390/microorganisms12010230", "10.3390/molecules19068011", "10.3390/molecules21070862", "10.3390/molecules25020368", "10.3390/molecules25040795", "10.3390/molecules25082000", "10.3390/molecules25184036", "10.3390/molecules26196034", "10.3390/molecules26237198", "10.3390/molecules27103194", "10.3390/molecules28062556", "10.3390/molecules28176328", "10.3390/molecules29051066", "10.3390/nano10091697", "10.3390/nano11020289", "10.3390/nano13030574", "10.3390/ncrna7040079", "10.3390/neuroglia1010011", "10.3390/neurolint15030049", "10.3390/nu11010195", "10.3390/nu11040879", "10.3390/nu13020686", "10.3390/nu15040859", "10.3390/nu15143106", "10.3390/nu16131993", "10.3390/pathogens13010060", "10.3390/pathogens9121006", "10.3390/ph13080196", "10.3390/ph14080769", "10.3390/ph15010007", "10.3390/ph16091232", "10.3390/ph16101384", "10.3390/ph16111548", "10.3390/pharmaceutics10040190", "10.3390/pharmaceutics12070663", "10.3390/pharmaceutics13050596", "10.3390/pharmaceutics13081295", "10.3390/pharmaceutics14112377", "10.3390/plants10020242", "10.3390/plants10102174", "10.3390/plants11010129", "10.3390/plants11091236", "10.3390/plants11111435", "10.3390/plants11182383", "10.3390/polym12020389", "10.3390/pr9050865", "10.3390/toxins13080554", "10.3390/toxins5020336", "10.3390/v12101092", "10.3390/v13010141", "10.3390/v14010046", "10.3390/v14030602", "10.3390/v14051020", "10.3390/v15122284", "10.3390/v8110320", "10.3390/vaccines10122049", "10.3390/vaccines4030028", "10.33915/etd.8113", "10.3410/f.13356968.793502442", "10.34172/ijhpm.2022.6578", "10.35814/jifi.v17i1.560", "10.36253/caryologia-1444", "10.37111/braspenj.diretrizneuro2022", "10.3727/096368910x494885", "10.3727/096368912x662408", "10.37478/agr.v16i2.2666", "10.3748/wjg.v22.i23.5301", "10.3748/wjg.v24.i34.3834", "10.3748/wjg.v24.i42.4738", "10.3748/wjg.v8.i3.426", "10.37763/wr.1336-4561/66.5.762776", "10.3791/52139", "10.3791/52643-v", "10.3855/jidc.6474", "10.3892/br.2014.401", "10.3892/ijo.20.1.137", "10.3892/ijo.2011.1128", "10.3892/ijo.2011.1132", "10.3892/ijo.2015.3041", "10.3892/ijo.2015.3288", "10.3892/ijo.2016.3371", "10.3892/ijo.2016.3408", "10.3892/ijo.2019.4893", "10.3892/ijo.2023.5489", "10.3892/ijo.2023.5534", "10.3892/mmr.2016.4868", "10.3892/mmr.2016.4948", "10.3892/mmr.2021.12268", "10.3892/ol.2012.1043", "10.3892/ol.2017.5954", "10.3892/ol.2017.6209", "10.3892/ol.2018.8916", "10.3892/ol.2018.9223", "10.3892/ol.2019.10474", "10.3892/ol.2021.12674", "10.3892/ol.2021.13124", "10.3892/ol.2022.13354", "10.3892/or.2015.4470", "10.3892/or.2019.7344", "10.3897/asp.64.e31643", "10.3897/phytokeys.144.46700", "10.3904/kjim.2023.090", "10.3906/bot-1405-76", "10.3934/mbe.2021313", "10.3945/ajcn.115.119339", "10.4000/aam.6994", "10.4000/echogeo.17591", "10.4014/jmb.1805.05067", "10.4049/jimmunol.0800455", "10.4049/jimmunol.0900970", "10.4049/jimmunol.0901778", "10.4049/jimmunol.0903009", "10.4049/jimmunol.1200524", "10.4049/jimmunol.1302843", "10.4049/jimmunol.1402797", "10.4049/jimmunol.1502146", "10.4049/jimmunol.166.6.3933", "10.4049/jimmunol.1701024", "10.4049/jimmunol.172.5.2731", "10.4049/jimmunol.176.5.3053", "10.4049/jimmunol.179.1.708", "10.4049/jimmunol.180.8.5746", "10.4049/jimmunol.1800315", "10.4049/jimmunol.186.supp.165.15", "10.4049/jimmunol.1900832", "10.4049/jimmunol.204.supp.91.4", "10.4103/0973-7847.70902", "10.4110/in.2018.18.e29", "10.4137/bcbcr.s5857", "10.4155/bio-2016-0197", "10.4155/bio.12.325", "10.4155/fmc.12.48", "10.4155/fso.15.72", "10.4161/15384101.2014.968426", "10.4161/cc.21884", "10.4161/cc.8.6.7869", "10.4161/epi.5.1.10449", "10.4161/psb.20934", "10.4161/psb.25286", "10.4161/psb.5.11.13020", "10.4161/rna.28353", "10.4161/rna.34406", "10.4161/rna.7.2.11057", "10.4161/sgtp.29846", "10.4236/abb.2014.51004", "10.4251/wjgo.v4.i4.68", "10.4267/10608/2186", "10.4324/9781003254829", "10.46427/gold2022.10634", "10.47626/2237-6089-2021-0263", "10.4995/thesis/10251/203592", "10.5070/d3196018561", "10.5147/ajb.vi.239", "10.5194/essd-4-47-2012", "10.5204/thesis.eprints.246091", "10.5213/inj.1632604.302", "10.52586/4932", "10.5301/jsrd.5000240", "10.5400/jts.2016.v21i1.19-25", "10.5483/bmbrep.2012.45.11.232", "10.5483/bmbrep.2018.51.9.187", "10.5483/bmbrep.2019.52.8.149", "10.5483/bmbrep.2021.54.2.217", "10.5487/tr.2010.26.3.217", "10.54910/sabrao2021.53.4.14", "10.5530/pc.2011.1.2", "10.5539/gjhs.v6n2p168", "10.5650/jos.ess21209", "10.5672/fc.2173-9218.(2014/vol6).001.02", "10.5713/ajas.2006.953", "10.5772/65502", "10.5772/intechopen.110430", "10.5808/gi.2009.7.2.065", "10.5812/ijcm.5474", "10.5958/j.0976-0571.37.3.037", "10.5966/sctm.2013-0080", "10.5966/sctm.2015-0121", "10.7150/ijbs.71167", "10.7150/ijbs.73275", "10.7150/ijbs.76573", "10.7150/ijms.84940", "10.7150/jca.12286", "10.7150/jca.13397", "10.7150/jca.15566", "10.7150/jca.48939", "10.7150/jca.64205", "10.7150/jca.95248", "10.7150/jgen.43928", "10.7150/thno.18456", "10.7150/thno.24128", "10.7150/thno.25541", "10.7150/thno.35059", "10.7150/thno.36936", "10.7150/thno.42174", "10.7150/thno.51666", "10.7150/thno.60211", "10.7150/thno.73223", "10.7454/mst.v17i3.2930", "10.7554/elife.03939", "10.7554/elife.04766", "10.7554/elife.06508", "10.7554/elife.11765", "10.7554/elife.12068", "10.7554/elife.13500", "10.7554/elife.19760", "10.7554/elife.21476", "10.7554/elife.21895", "10.7554/elife.26337", "10.7554/elife.28620", "10.7554/elife.29878", "10.7554/elife.32724", "10.7554/elife.33761", "10.7554/elife.36333", "10.7554/elife.36349", "10.7554/elife.38853", "10.7554/elife.39180", "10.7554/elife.40025", "10.7554/elife.42549", "10.7554/elife.49808", "10.7554/elife.50822", "10.7554/elife.55780", "10.7554/elife.55852", "10.7554/elife.57627", "10.7554/elife.58182", "10.7554/elife.61531", "10.7554/elife.61894", "10.7554/elife.63856", "10.7554/elife.64875", "10.7554/elife.69729", "10.7554/elife.69786", "10.7554/elife.70910", "10.7554/elife.72599", "10.7554/elife.76630", "10.7554/elife.76630", "10.7554/elife.78511", "10.7554/elife.78609", "10.7554/elife.81856", "10.7554/elife.81943", "10.7554/elife.85009", "10.7554/elife.87445", "10.7554/elife.87445.1", "10.7554/elife.91357.2", "10.7554/elife.91357.3", "10.7916/d8-122w-f893", "10.9734/bpi/ecees/v4/2414b", "10/1307/6397632", "10/1585/235665", "10/2308/709448", "10/2341/128645", "10/3622/6645406", ], }, test: { question_ids: [ "001e1746-551b-43b2-8b7d-7bc5147dcb25", "049c09a7-342d-45dd-a7fb-80a99f410bd3", "04b808a0-a122-49a1-a6f7-feae45e7b417", "082c7a0e-3a03-4c45-a59f-64a0a0765094", "0e04e0db-80df-45b0-8be5-b215f5a6cb60", "0f890091-a7c5-40d3-8c82-648a738a1d88", "18309563-9194-46dd-8c4a-3222dab2f852", "18dd8400-8e1e-431f-acf5-feeac56eee49", "2473b37f-81c8-4367-b670-519ba4c9f803", "294fc930-2621-4e88-9a5f-7de8f1deff66", "2e9a696a-2622-4e6a-a9cd-7e598eeddbe3", "2f15253d-fc60-4b4f-9510-ee14101b8e50", "3e6d7a54-5b8a-4aa0-ac6e-1fce986d1636", "3ef2efb1-7cd1-4f93-85dc-8fae5f74db0c", "4044c259-394b-4c9a-b6a1-8e2ca4f990d5", "4233c754-193c-4b36-bb61-c35421aec82a", "513fc298-0b4d-471f-bb65-8a82f4a1eb6f", "5311a818-8a83-4cfa-822b-57df19524500", "6e052f3e-9ff9-428a-b0d0-66db2ced376b", "6e3c0058-0568-42a8-a99c-53f1e6b467dc", "75b07d64-8b0e-4982-b697-88eb7f82171e", "774edca9-e9b3-4362-a6db-a6f0eeb087d4", "7ee15333-5ee8-42aa-aa05-8715e3d5967e", "813a9053-3f67-4d58-80af-02153de90ae4", "81869c86-66dd-4bc7-b962-264aefeb121e", "831621de-5e32-4006-af84-a40dba100866", "89a4413c-5efd-484d-b552-c7b19c6392b6", "8a40955c-c6b8-40be-9ccb-27b12b417576", "8efd9335-ac1c-4e3d-b2fb-2ee484ec253a", "97a246a4-342e-4a50-b36e-ebcde6e5e5ce", "9c9da60f-015f-4f68-8e0a-3bf7afc493dc", "9d24f4b7-428a-43fc-84c0-f6c128f933ce", "9fefe95f-9390-4e89-b897-45e91a1c8366", "a66efc6b-101c-4943-a53c-ca1dd7328d44", "a96c99db-5b5f-467b-a92a-54fa4fb2f6b5", "ad93867a-ea88-4a52-b071-ffcbce4f1b23", "b3fcf38a-6ed2-43c2-989e-b93738ff7347", "b80d5bc3-fbe8-464a-90f5-01ec30f64c32", "bc089cd0-474f-4384-9d7d-711fa3608d62", "c968a888-ee3f-4565-9b83-b278b00237ee", "d0cd32f6-1357-4026-bf64-43f72e79a69b", "e10b54f0-36d7-4202-8901-1956279ff989", "e4579ca5-c7d4-47a0-88f5-8adc460fc936", "e6ece709-c919-4388-9f64-ab0e0822b03a", "ee3323e9-498a-489b-8c4e-0a40c8bf5ed8", "eea58695-8331-4871-9632-8d26bffe4bdc", "ef9ac8e3-7956-4d43-a40c-215f6fc9c47a", "f32fbd25-6c22-4ddc-affb-436108340ce6", "f5f29cf3-2e07-4421-a3c1-f04c085fb8ba", ], dois: [ "10.1001/jamaoncol.2022.6288", "10.1001/jamapediatrics.2022.1622", "10.1002/(sici)1097-4652(200002)182:2<150::aid-jcp3>3.0.co;2-e", "10.1002/0471250953.bi0301s42", "10.1002/1096-9896(2000)9999:9999<::aid-path752>3.0.co;2-v", "10.1002/1097-0215(20000520)89:3<305::aid-ijc15>3.0.co;2-8", "10.1002/1526-968x(200011/12)28:3/4<147::aid-gene90>3.0.co;2-g", "10.1002/1873-3468.12924", "10.1002/1873-3468.13607", "10.1002/1878-0261.12860", "10.1002/2211-5463.12898", "10.1002/9780470028131.ch6", "10.1002/9780470440124.ch6", "10.1002/9781119127420.ch20", "10.1002/9781119127420.ch27", "10.1002/9781119436812.ch21", "10.1002/9783527818242.ch11", "10.1002/adma.202005709", "10.1002/adma.202100176", "10.1002/adma.202100629", "10.1002/advs.201901779", "10.1002/ajmg.a.61108", "10.1002/ajmg.a.61611", "10.1002/ana.10251", "10.1002/ana.21755", "10.1002/ange.201001511", "10.1002/ange.201903808", "10.1002/ange.201910280", "10.1002/ange.202014417", "10.1002/anie.200300644", "10.1002/anie.201002094", "10.1002/anie.201108756", "10.1002/anie.201510054", "10.1002/anie.201611281", "10.1002/anie.201903565", "10.1002/anie.201909927", "10.1002/anie.201914786", "10.1002/anie.202001523", "10.1002/ar.22864", "10.1002/bies.201200008", "10.1002/bies.201200034", "10.1002/bies.201400032", "10.1002/bies.201600157", "10.1002/bies.201600240", "10.1002/bies.201900163", "10.1002/bies.202000054", "10.1002/bies.20416", "10.1002/biof.1256", "10.1002/biof.1766", "10.1002/bip.360221211", "10.1002/bit.26183", "10.1002/btpr.3110", "10.1002/btpr.3142", "10.1002/cac2.12161", "10.1002/cam4.222", "10.1002/cbf.3390", "10.1002/cbic.201800765", "10.1002/cbic.202200202", "10.1002/cbin.11666", "10.1002/chem.201701375", "10.1002/chem.201902320", "10.1002/cm.1017", "10.1002/cmdc.200600242", "10.1002/cmdc.200600243", "10.1002/cncr.28864", "10.1002/cncr.33102", "10.1002/cne.22655", "10.1002/cne.24481", "10.1002/cpbi.18", "10.1002/cphy.c110024", "10.1002/cphy.c190032", "10.1002/cpz1.637", "10.1002/cpz1.684", "10.1002/dmrr.532", "10.1002/dneu.20930", "10.1002/dneu.22363", "10.1002/dneu.22849", "10.1002/dvdy.10249", "10.1002/dvdy.147", "10.1002/dvdy.21007", "10.1002/dvdy.21244", "10.1002/dvdy.21420", "10.1002/dvdy.21849", "10.1002/dvdy.22109", "10.1002/dvdy.22202", "10.1002/dvdy.22253", "10.1002/dvdy.22584", "10.1002/dvdy.23950", "10.1002/dvdy.24320", "10.1002/dvdy.24411", "10.1002/dvg.23507", "10.1002/embj.201488411", "10.1002/emmm.201201398", "10.1002/etc.2559", "10.1002/etc.5620220222", "10.1002/gene.1031", "10.1002/glia.10303", "10.1002/glia.20835", "10.1002/glia.21016", "10.1002/glia.21089", "10.1002/glia.22281", "10.1002/glia.22392", "10.1002/glia.22533", "10.1002/glia.22538", "10.1002/glia.22818", "10.1002/glia.22863", "10.1002/glia.23606", "10.1002/glia.23621", "10.1002/glia.23818", "10.1002/glia.23837", "10.1002/hep.22268", "10.1002/hep.22288", "10.1002/hep.25601", "10.1002/hep.26170", "10.1002/hep.27242", "10.1002/hep.27645", "10.1002/hep.27839", "10.1002/hep.29018", "10.1002/hep.29041", "10.1002/hep.29273", "10.1002/hep.30766", "10.1002/hep.31236", "10.1002/hep.32063", "10.1002/hep4.1316", "10.1002/hep4.1348", "10.1002/hep4.1395", "10.1002/hlca.200290009", "10.1002/humu.21192", "10.1002/humu.21310", "10.1002/humu.22770", "10.1002/humu.22816", "10.1002/humu.23798", "10.1002/ijc.11497", "10.1002/ijc.24189", "10.1002/ijc.25159", "10.1002/ijc.28768", "10.1002/ijc.28889", "10.1002/ijc.29519", "10.1002/ijc.32193", "10.1002/ijc.33113", "10.1002/iub.2363", "10.1002/j.1460-2075.1989.tb08620.x", "10.1002/jat.3095", "10.1002/jat.3721", "10.1002/jat.975", "10.1002/jbm.a.33064", "10.1002/jcb.21517", "10.1002/jcb.22845", "10.1002/jcb.25217", "10.1002/jcb.25634", "10.1002/jcb.26425", "10.1002/jcb.27039", "10.1002/jcb.27378", "10.1002/jcb.27737", "10.1002/jcb.28416", "10.1002/jcb.29000", "10.1002/jcb.29003", "10.1002/jcb.29010", "10.1002/jcc.20566", "10.1002/jcc.540040211", "10.1002/jcp.1041290219", "10.1002/jcp.24331", "10.1002/jcp.24572", "10.1002/jcp.25366", "10.1002/jcp.27049", "10.1002/jcp.27165", "10.1002/jcp.27352", "10.1002/jcp.27375", "10.1002/jcp.27469", "10.1002/jcp.28152", "10.1002/jev2.12029", "10.1002/jev2.12043", "10.1002/jev2.12061", "10.1002/jev2.12144", "10.1002/jex2.40", "10.1002/jez.698", "10.1002/jez.a.138", "10.1002/jlb.2a0817-341rr", "10.1002/jmor.20754", "10.1002/jmr.528", "10.1002/jmv.26626", "10.1002/jnr.10717", "10.1002/jnr.23153", "10.1002/jor.24448", "10.1002/jso.25661", "10.1002/ldr.3630", "10.1002/mc.20512", "10.1002/mc.22582", "10.1002/mc.22587", "10.1002/mc.22937", "10.1002/mc.23330", "10.1002/mds.25460", "10.1002/med.21531", "10.1002/med.21771", "10.1002/med.21859", "10.1002/minf.201300013", "10.1002/mrm.26379", "10.1002/mrm.28363", "10.1002/msb.135068", "10.1002/pld3.420", "10.1002/pmic.200800762", "10.1002/pmic.201500172", "10.1002/pmic.201800162", "10.1002/pro.2751", "10.1002/pro.2829", "10.1002/pro.3909", "10.1002/pro.4006", "10.1002/pro.580", "10.1002/prot.20528", "10.1002/prot.21265", "10.1002/prot.22178", "10.1002/prot.22722", "10.1002/prot.24849", "10.1002/prot.25299", "10.1002/prot.25467", "10.1002/prot.25630", "10.1002/prot.25752", "10.1002/ptr.4778", "10.1002/ptr.6587", "10.1002/reg2.54", "10.1002/reg2.61", "10.1002/reg2.83", "10.1002/sctm.17-0206", "10.1002/smll.201702153", "10.1002/stem.1590", "10.1002/stem.2366", "10.1002/stem.2979", "10.1002/stem.3065", "10.1002/stem.3443", "10.1002/stem.480", "10.1002/syst.201900046", "10.1002/term.2772", "10.1002/term.3077", "10.1002/wcms.1448", "10.1002/wcms.1563", "10.1002/wdev.146", "10.1002/wdev.192", "10.1002/wdev.265", "10.1002/wdev.266", "10.1002/wdev.82", "10.1002/wrna.1423", "10.1002/wrna.47", "10.1002/wrna.59", "10.1002/yea.3359", "10.1006/abbi.2001.2333", "10.1006/dbio.2000.9645", "10.1006/dbio.2000.9853", "10.1006/dbio.2001.0325", "10.1006/fgbi.2001.1295", "10.1006/geno.1998.5638", "10.1006/jmbi.1998.2435", "10.1006/jmbi.1998.2514", "10.1006/jmbi.1999.3091", "10.1006/jmbi.2001.4985", "10.1006/jmbi.2001.5249", "10.1006/mcne.2001.1075", "10.1006/viro.2001.1225", "10.1007/10_2012_143", "10.1007/164_2017_71", "10.1007/3-540-33336-3_1", "10.1007/82_2016_2", "10.1007/978-0-387-76678-2_13", "10.1007/978-1-0716-1847-9_11", "10.1007/978-1-0716-2172-1_27", "10.1007/978-1-0716-3481-3_9", "10.1007/978-1-4614-3137-4_1", "10.1007/978-1-4614-3229-6_9", "10.1007/978-1-4939-3353-2_12", "10.1007/978-1-4939-3578-9_5", "10.1007/978-1-4939-6424-6_23", "10.1007/978-1-4939-6881-7_15", "10.1007/978-1-4939-7223-4_5", "10.1007/978-1-4939-7598-3_28", "10.1007/978-1-4939-7737-6_7", "10.1007/978-1-4939-7802-1_17", "10.1007/978-1-4939-7802-1_3", "10.1007/978-1-4939-7802-1_4", "10.1007/978-1-61737-967-3_1", "10.1007/978-1-61779-210-6_2", "10.1007/978-1-61779-452-0_3", "10.1007/978-1-62703-478-4_1", "10.1007/978-1-62703-640-5_2", "10.1007/978-3-030-17086-8_2", "10.1007/978-3-030-19823-7_8", "10.1007/978-3-030-51652-9_17", "10.1007/978-3-030-71612-7_1", "10.1007/978-3-030-71612-7_10", "10.1007/978-3-030-71612-7_3", "10.1007/978-3-031-04749-7_20", "10.1007/978-3-319-07827-4", "10.1007/978-3-319-12108-6_10", "10.1007/978-3-319-22279-0_22", "10.1007/978-3-319-22380-3_6", "10.1007/978-3-319-34175-0_6", "10.1007/978-3-319-48382-5_5", "10.1007/978-3-319-60357-5_5", "10.1007/978-3-319-60357-5_6", "10.1007/978-3-319-67591-6_14", "10.1007/978-3-319-67591-6_4", "10.1007/978-3-319-98788-0_10", "10.1007/978-3-642-19922-6_6", "10.1007/978-3-642-88178-7", "10.1007/978-90-481-3271-3_29", "10.1007/978-90-481-3303-1_17", "10.1007/978-90-481-9772-9_14", "10.1007/978-94-007-5561-1_3", "10.1007/978-94-007-7500-8_10", "10.1007/978-94-017-9343-8_13", "10.1007/978-981-10-2251-7_2", "10.1007/978-981-15-6082-8_13", "10.1007/bf00231813", "10.1007/bf00331317", "10.1007/bf00993379", "10.1007/bf01955345", "10.1007/bf02623606", "10.1007/bf02623659", "10.1007/pl00006253", "10.1007/pl00006540", "10.1007/s00018-003-3046-3", "10.1007/s00018-006-6149-9", "10.1007/s00018-007-7288-3", "10.1007/s00018-007-7426-y", "10.1007/s00018-010-0373-z", "10.1007/s00018-012-1194-z", "10.1007/s00018-013-1487-x", "10.1007/s00018-015-1848-8", "10.1007/s00018-016-2309-8", "10.1007/s00018-017-2737-0", "10.1007/s00018-018-2911-z", "10.1007/s00018-019-03351-7", "10.1007/s00018-019-03385-x", "10.1007/s00018-020-03714-5", "10.1007/s00018-021-03831-9", "10.1007/s00018-021-03865-z", "10.1007/s00018-021-03945-0", "10.1007/s00018-022-04444-6", "10.1007/s00018-024-05208-0", "10.1007/s000180300040", "10.1007/s00068-019-01235-w", "10.1007/s00109-019-01836-3", "10.1007/s00109-020-01964-1", "10.1007/s00109-022-02189-0", "10.1007/s00122-013-2129-2", "10.1007/s00125-005-1680-z", "10.1007/s00125-005-1738-y", "10.1007/s00125-007-0778-x", "10.1007/s00125-011-2255-9", "10.1007/s00125-018-4656-5", "10.1007/s001250100628", "10.1007/s00198-017-4061-9", "10.1007/s001980170030", "10.1007/s00204-015-1472-2", "10.1007/s00204-015-1549-y", "10.1007/s00204-019-02430-9", "10.1007/s00204-023-03510-7", "10.1007/s00210-008-0275-x", "10.1007/s00210-014-1063-4", "10.1007/s00210-019-01751-x", "10.1007/s00213-011-2463-5", "10.1007/s002320001099", "10.1007/s00239-003-2459-9", "10.1007/s00239-019-09921-4", "10.1007/s00249-007-0195-6", "10.1007/s00249-008-0293-0", "10.1007/s00249-013-0918-9", "10.1007/s00251-018-1088-9", "10.1007/s00253-015-6664-4", "10.1007/s00262-019-02404-x", "10.1007/s00264-011-1261-3", "10.1007/s00265-008-0611-7", "10.1007/s00280-009-1208-1", "10.1007/s00281-013-0394-4", "10.1007/s00289-020-03485-w", "10.1007/s00294-020-01085-9", "10.1007/s00299-018-2300-y", "10.1007/s00335-015-9571-1", "10.1007/s00335-015-9573-z", "10.1007/s00335-015-9581-z", "10.1007/s00335-015-9582-y", "10.1007/s00335-015-9589-4", "10.1007/s00335-015-9599-2", "10.1007/s00335-015-9600-0", "10.1007/s00335-019-09821-4", "10.1007/s00335-021-09921-0", "10.1007/s00394-018-1847-2", "10.1007/s00401-015-1432-1", "10.1007/s00401-020-02185-z", "10.1007/s00401-023-02599-5", "10.1007/s004010051052", "10.1007/s00412-002-0198-0", "10.1007/s00412-007-0125-5", "10.1007/s00412-013-0444-7", "10.1007/s004120050256", "10.1007/s00418-008-0402-2", "10.1007/s00418-022-02096-y", "10.1007/s00424-002-0840-y", "10.1007/s00424-003-1100-5", "10.1007/s00424-007-0300-9", "10.1007/s00424-014-1574-3", "10.1007/s00424-020-02433-x", "10.1007/s00424-022-02701-y", "10.1007/s00427-015-0494-3", "10.1007/s00429-016-1343-5", "10.1007/s004380050427", "10.1007/s00441-006-0277-2", "10.1007/s00441-014-1981-y", "10.1007/s00441-016-2399-5", "10.1007/s00441-017-2731-8", "10.1007/s00441-020-03249-y", "10.1007/s00467-020-04541-3", "10.1007/s00604-020-4156-4", "10.1007/s00726-020-02854-z", "10.1007/s00726-021-03021-8", "10.1007/s00775-020-01808-w", "10.1007/s007750000204", "10.1007/s00894-009-0478-1", "10.1007/s00894-010-0672-1", "10.1007/s00894-011-1133-1", "10.1007/s10048-023-00736-6", "10.1007/s10059-011-1021-7", "10.1007/s10059-011-1055-x", "10.1007/s10120-015-0510-3", "10.1007/s10495-017-1366-2", "10.1007/s10528-021-10063-w", "10.1007/s10529-009-9956-x", "10.1007/s10545-017-0105-8", "10.1007/s10549-009-0592-x", "10.1007/s10549-010-0822-2", "10.1007/s10549-012-2067-8", "10.1007/s10549-012-2082-9", "10.1007/s10549-012-2316-x", "10.1007/s10549-013-2665-0", "10.1007/s10549-015-3414-3", "10.1007/s10549-021-06231-6", "10.1007/s10555-015-9558-0", "10.1007/s10555-021-10013-3", "10.1007/s10557-011-6342-4", "10.1007/s10557-011-6343-3", "10.1007/s10561-019-09797-0", "10.1007/s10561-020-09872-x", "10.1007/s10571-009-9486-z", "10.1007/s10571-016-0366-z", "10.1007/s10577-009-9055-9", "10.1007/s10585-018-9937-3", "10.1007/s10592-018-1072-9", "10.1007/s10616-014-9807-z", "10.1007/s10709-017-9965-y", "10.1007/s10741-016-9579-y", "10.1007/s10753-016-0447-7", "10.1007/s10787-022-00956-6", "10.1007/s10811-015-0623-4", "10.1007/s10974-016-9447-3", "10.1007/s11010-013-1694-7", "10.1007/s11010-017-3069-y", "10.1007/s11030-024-10829-5", "10.1007/s11033-014-3465-2", "10.1007/s11033-021-06421-x", "10.1007/s11033-021-06749-4", "10.1007/s11033-022-07714-5", "10.1007/s11051-015-2876-x", "10.1007/s11060-014-1704-y", "10.1007/s11060-016-2298-3", "10.1007/s11060-018-03043-5", "10.1007/s11064-015-1776-x", "10.1007/s11064-019-02928-9", "10.1007/s11064-020-03210-z", "10.1007/s11064-021-03408-9", "10.1007/s11064-021-03413-y", "10.1007/s11084-018-9555-8", "10.1007/s11084-018-9564-7", "10.1007/s11095-006-9144-9", "10.1007/s11104-017-3315-9", "10.1007/s11120-020-00728-9", "10.1007/s11130-013-0341-5", "10.1007/s11248-011-9581-z", "10.1007/s11255-020-02474-2", "10.1007/s11302-018-9632-5", "10.1007/s11307-016-0987-0", "10.1007/s11356-021-17098-x", "10.1007/s11427-017-9191-1", "10.1007/s11427-020-1692-1", "10.1007/s11427-020-1891-8", "10.1007/s11427-022-2172-x", "10.1007/s11430-018-9294-5", "10.1007/s11626-016-0087-0", "10.1007/s11738-017-2390-0", "10.1007/s11745-010-3492-2", "10.1007/s11745-016-4210-5", "10.1007/s12010-018-2813-4", "10.1007/s12012-018-09504-7", "10.1007/s12015-012-9365-8", "10.1007/s12015-021-10234-7", "10.1007/s12020-018-1688-z", "10.1007/s12022-018-9523-x", "10.1007/s12031-014-0408-2", "10.1007/s12032-014-0391-z", "10.1007/s12035-007-8009-5", "10.1007/s12035-011-8185-1", "10.1007/s12035-012-8349-7", "10.1007/s12035-015-9409-6", "10.1007/s12035-018-1138-1", "10.1007/s12035-018-1173-y", "10.1007/s12035-020-02068-0", "10.1007/s12035-021-02363-4", "10.1007/s12035-022-02949-6", "10.1007/s12038-012-9219-1", "10.1007/s12038-016-9600-6", "10.1007/s12038-019-9965-4", "10.1007/s12046-015-0410-6", "10.1007/s12079-022-00690-2", "10.1007/s12104-020-09995-y", "10.1007/s12192-017-0871-0", "10.1007/s12264-019-00449-7", "10.1007/s12264-021-00640-9", "10.1007/s12264-021-00675-y", "10.1007/s12264-021-00759-9", "10.1007/s12264-022-00938-2", "10.1007/s12307-012-0105-z", "10.1007/s12551-021-00924-4", "10.1007/s12672-024-00929-x", "10.1007/s13105-016-0539-8", "10.1007/s13167-020-00209-y", "10.1007/s13277-015-3047-5", "10.1007/s13277-015-3781-8", "10.1007/s13277-015-4020-z", "10.1007/s13277-016-5089-8", "10.1007/s13300-011-0004-1", "10.1007/s13337-020-00640-9", "10.1007/s13353-016-0347-4", "10.1007/s13399-017-0242-1", "10.1007/s13402-018-00418-8", "10.1007/s13402-022-00666-9", "10.1007/s13402-023-00807-8", "10.1007/s40139-015-0063-5", "10.1007/s40142-013-0024-4", "10.1007/s40259-018-0261-x", "10.1007/s40291-014-0110-7", "10.1007/s40291-018-0331-2", "10.1007/s40484-018-0147-4", "10.1007/s40610-021-00144-5", "10.1007/s41048-019-0089-z", "10.1007/s41061-017-0111-1", "10.1007/s42977-022-00142-3", "10.1007/s42994-024-00155-7", "10.1007/s43450-022-00254-w", "10.1016/0003-2697(73)90217-0", "10.1016/0003-9861(81)90180-6", "10.1016/0005-2728(68)90078-9", "10.1016/0005-2760(91)90294-r", "10.1016/0009-2797(90)90096-6", "10.1016/0045-6039(84)90038-1", "10.1016/0076-6879(90)91026-3", "10.1016/0076-6879(91)01004-l", "10.1016/0092-8674(85)90009-1", "10.1016/0092-8674(95)90405-0", "10.1016/0197-4580(95)02066-7", "10.1016/0263-7855(96)00018-5", "10.1016/0896-6273(90)90444-k", "10.1016/0896-6273(92)90240-e", "10.1016/0921-8777(94)90040-x", "10.1016/0968-0004(87)90235-0", "10.1016/0968-0004(91)90167-t", "10.1016/b978-0-12-386931-9.00002-7", "10.1016/b978-0-12-394307-1.00003-5", "10.1016/b978-0-12-394309-5.00005-5", "10.1016/b978-0-12-417197-8.00007-9", "10.1016/b978-0-12-418693-4.00003-0", "10.1016/b978-0-12-800050-2.00006-1", "10.1016/b978-0-12-800223-0.00003-7", "10.1016/b978-0-12-809633-8.20106-4", "10.1016/b978-0-12-812744-5.00012-6", "10.1016/b978-0-12-813939-4.00022-x", "10.1016/b978-0-444-53860-4.00003-9", "10.1016/b978-012098652-1/50119-0", "10.1016/b978-044453219-0.50014-3", "10.1016/bs.adgen.2016.05.001", "10.1016/bs.ai.2020.06.003", "10.1016/bs.apcsb.2020.06.002", "10.1016/bs.ctdb.2019.04.001", "10.1016/bs.ctdb.2020.04.002", "10.1016/bs.enz.2017.03.008", "10.1016/bs.ircmb.2017.07.001", "10.1016/bs.mcb.2019.04.017", "10.1016/bs.pmbts.2020.05.004", "10.1016/j.ab.2013.05.011", "10.1016/j.abb.2012.12.005", "10.1016/j.abb.2014.07.017", "10.1016/j.abb.2019.108115", "10.1016/j.acvdsp.2019.02.149", "10.1016/j.addr.2015.05.001", "10.1016/j.addr.2016.09.004", "10.1016/j.addr.2020.04.004", "10.1016/j.ajhg.2019.05.016", "10.1016/j.ajhg.2019.09.007", "10.1016/j.ajpath.2012.06.030", "10.1016/j.ajpath.2014.12.018", "10.1016/j.ajpath.2015.04.005", "10.1016/j.ajpath.2020.03.017", "10.1016/j.aju.2013.05.005", "10.1016/j.alcohol.2019.01.001", "10.1016/j.algal.2015.09.005", "10.1016/j.algal.2018.02.019", "10.1016/j.ando.2013.07.095", "10.1016/j.aninu.2017.08.009", "10.1016/j.antiviral.2013.12.009", "10.1016/j.antiviral.2017.04.008", "10.1016/j.antiviral.2018.06.017", "10.1016/j.antiviral.2019.104569", "10.1016/j.aquaculture.2013.04.020", "10.1016/j.aquaculture.2015.11.019", "10.1016/j.aquatox.2017.08.013", "10.1016/j.aquatox.2017.12.007", "10.1016/j.arr.2016.08.008", "10.1016/j.artint.2016.05.004", "10.1016/j.atherosclerosis.2013.04.034", "10.1016/j.atherosclerosis.2020.01.024", "10.1016/j.bbadis.2013.07.020", "10.1016/j.bbadis.2021.166166", "10.1016/j.bbagen.2012.08.006", "10.1016/j.bbagrm.2016.08.005", "10.1016/j.bbagrm.2018.12.001", "10.1016/j.bbagrm.2018.12.002", "10.1016/j.bbagrm.2019.04.001", "10.1016/j.bbalip.2008.11.001", "10.1016/j.bbalip.2009.04.002", "10.1016/j.bbalip.2009.09.005", "10.1016/j.bbalip.2012.10.005", "10.1016/j.bbalip.2013.03.011", "10.1016/j.bbalip.2014.07.017", "10.1016/j.bbalip.2016.07.014", "10.1016/j.bbalip.2017.12.011", "10.1016/j.bbalip.2018.03.003", "10.1016/j.bbalip.2018.11.001", "10.1016/j.bbalip.2021.158920", "10.1016/j.bbamcr.2003.10.018", "10.1016/j.bbamcr.2014.01.009", "10.1016/j.bbamcr.2018.07.019", "10.1016/j.bbamcr.2019.118539", "10.1016/j.bbamcr.2020.118926", "10.1016/j.bbamem.2009.06.006", "10.1016/j.bbamem.2015.03.025", "10.1016/j.bbamem.2017.09.020", "10.1016/j.bbamem.2021.183602", "10.1016/j.bbapap.2009.10.007", "10.1016/j.bbapap.2016.01.007", "10.1016/j.bbapap.2019.02.005", "10.1016/j.bbcan.2007.08.001", "10.1016/j.bbcan.2020.188448", "10.1016/j.bbrc.2003.10.199", "10.1016/j.bbrc.2004.12.015", "10.1016/j.bbrc.2008.03.063", "10.1016/j.bbrc.2008.07.122", "10.1016/j.bbrc.2009.09.095", "10.1016/j.bbrc.2010.03.010", "10.1016/j.bbrc.2011.08.109", "10.1016/j.bbrc.2011.10.007", "10.1016/j.bbrc.2012.01.016", "10.1016/j.bbrc.2012.06.126", "10.1016/j.bbrc.2013.10.080", "10.1016/j.bbrc.2014.10.116", "10.1016/j.bbrc.2015.05.108", "10.1016/j.bbrc.2015.07.076", "10.1016/j.bbrc.2016.05.037", "10.1016/j.bbrc.2016.05.112", "10.1016/j.bbrc.2016.12.021", "10.1016/j.bbrc.2018.03.100", "10.1016/j.bbrc.2018.07.099", "10.1016/j.bbrc.2019.08.137", "10.1016/j.bbrc.2020.04.023", "10.1016/j.bbrc.2020.09.131", "10.1016/j.bbrc.2020.10.077", "10.1016/j.bbrc.2021.01.088", "10.1016/j.bcp.2009.11.019", "10.1016/j.bcp.2011.09.020", "10.1016/j.bcp.2018.06.005", "10.1016/j.bcp.2021.114751", "10.1016/j.bcp.2021.114759", "10.1016/j.biocel.2015.03.011", "10.1016/j.biochi.2005.01.016", "10.1016/j.biochi.2008.02.011", "10.1016/j.biochi.2011.04.001", "10.1016/j.biomaterials.2010.08.052", "10.1016/j.biomaterials.2012.02.063", "10.1016/j.bioorg.2007.02.002", "10.1016/j.bioorg.2009.11.002", "10.1016/j.biopha.2019.109441", "10.1016/j.biopha.2019.109613", "10.1016/j.biopha.2020.109912", "10.1016/j.biopha.2020.110274", "10.1016/j.biopha.2020.110645", "10.1016/j.biopha.2020.110684", "10.1016/j.biopha.2021.111871", "10.1016/j.biortech.2015.03.030", "10.1016/j.biosystems.2005.03.002", "10.1016/j.biosystems.2020.104260", "10.1016/j.biosystems.2022.104714", "10.1016/j.bmc.2005.08.054", "10.1016/j.bmc.2018.05.003", "10.1016/j.bmc.2019.115181", "10.1016/j.bone.2010.04.306", "10.1016/j.bone.2011.08.021", "10.1016/j.bpj.2008.12.3904", "10.1016/j.bpj.2009.12.4336", "10.1016/j.bpj.2010.12.1573", "10.1016/j.bpj.2012.07.044", "10.1016/j.bpj.2013.11.4483", "10.1016/j.bpj.2016.11.709", "10.1016/j.bpj.2017.04.011", "10.1016/j.bpj.2017.10.013", "10.1016/j.bpj.2019.01.029", "10.1016/j.bpj.2019.07.056", "10.1016/j.bpj.2019.11.2479", "10.1016/j.brainres.2011.06.032", "10.1016/j.brainres.2015.10.013", "10.1016/j.brainres.2015.10.051", "10.1016/j.brainres.2018.02.042", "10.1016/j.brainresbull.2020.07.018", "10.1016/j.breast.2017.06.022", "10.1016/j.breast.2021.07.019", "10.1016/j.canlet.2008.02.028", "10.1016/j.canlet.2016.05.026", "10.1016/j.canlet.2016.09.020", "10.1016/j.canlet.2017.09.017", "10.1016/j.canlet.2017.12.036", "10.1016/j.canlet.2018.01.015", "10.1016/j.canlet.2019.09.004", "10.1016/j.canlet.2020.12.019", "10.1016/j.canlet.2021.04.023", "10.1016/j.cardiores.2003.12.026", "10.1016/j.cbi.2012.12.015", "10.1016/j.cbi.2014.09.004", "10.1016/j.cbi.2019.02.013", "10.1016/j.cbpa.2016.06.014", "10.1016/j.cbpa.2020.02.003", "10.1016/j.cbpb.2006.11.029", "10.1016/j.cbpb.2012.05.016", "10.1016/j.cca.2021.01.019", "10.1016/j.ccell.2015.05.007", "10.1016/j.ccell.2017.02.013", "10.1016/j.ccell.2019.07.009", "10.1016/j.ccell.2020.03.007", "10.1016/j.ccell.2020.10.004", "10.1016/j.ccr.2005.09.008", "10.1016/j.ccr.2006.01.008", "10.1016/j.ccr.2008.07.005", "10.1016/j.ccr.2008.11.012", "10.1016/j.ccr.2012.02.014", "10.1016/j.ccr.2012.09.027", "10.1016/j.ceb.2013.02.003", "10.1016/j.ceb.2016.12.010", "10.1016/j.ceb.2020.11.004", "10.1016/j.ceca.2019.102109", "10.1016/j.cell.2006.05.032", "10.1016/j.cell.2006.08.052", "10.1016/j.cell.2008.08.021", "10.1016/j.cell.2009.04.060", "10.1016/j.cell.2009.11.006", "10.1016/j.cell.2010.03.012", "10.1016/j.cell.2010.09.012", "10.1016/j.cell.2011.02.013", "10.1016/j.cell.2012.03.017", "10.1016/j.cell.2012.03.022", "10.1016/j.cell.2012.05.003", "10.1016/j.cell.2012.08.027", "10.1016/j.cell.2012.11.001", "10.1016/j.cell.2012.12.009", "10.1016/j.cell.2013.02.029", "10.1016/j.cell.2013.04.025", "10.1016/j.cell.2013.06.020", "10.1016/j.cell.2013.09.053", "10.1016/j.cell.2013.10.026", "10.1016/j.cell.2013.12.010", "10.1016/j.cell.2014.06.027", "10.1016/j.cell.2014.08.011", "10.1016/j.cell.2014.08.028", "10.1016/j.cell.2014.09.003", "10.1016/j.cell.2014.11.021", "10.1016/j.cell.2014.11.035", "10.1016/j.cell.2015.01.029", "10.1016/j.cell.2015.05.014", "10.1016/j.cell.2015.05.022", "10.1016/j.cell.2015.09.027", "10.1016/j.cell.2016.09.011", "10.1016/j.cell.2017.02.015", "10.1016/j.cell.2017.03.042", "10.1016/j.cell.2017.05.002", "10.1016/j.cell.2017.05.045", "10.1016/j.cell.2017.06.029", "10.1016/j.cell.2018.01.035", "10.1016/j.cell.2018.03.008", "10.1016/j.cell.2018.03.016", "10.1016/j.cell.2018.03.051", "10.1016/j.cell.2018.10.008", "10.1016/j.cell.2019.02.029", "10.1016/j.cell.2019.03.023", "10.1016/j.cell.2019.03.025", "10.1016/j.cell.2020.02.031", "10.1016/j.cell.2020.07.022", "10.1016/j.cell.2020.07.030", "10.1016/j.cell.2020.11.040", "10.1016/j.cell.2021.02.034", "10.1016/j.cell.2021.04.027", "10.1016/j.cell.2021.04.048", "10.1016/j.cell.2023.03.035", "10.1016/j.cell.2024.02.020", "10.1016/j.cell.2024.02.028", "10.1016/j.cellimm.2015.01.010", "10.1016/j.cellimm.2019.02.001", "10.1016/j.cellimm.2020.104118", "10.1016/j.cellsig.2020.109824", "10.1016/j.celrep.2012.10.006", "10.1016/j.celrep.2014.07.035", "10.1016/j.celrep.2014.07.051", "10.1016/j.celrep.2014.08.027", "10.1016/j.celrep.2014.12.041", "10.1016/j.celrep.2015.01.050", "10.1016/j.celrep.2015.04.003", "10.1016/j.celrep.2015.06.053", "10.1016/j.celrep.2015.08.010", "10.1016/j.celrep.2015.12.012", "10.1016/j.celrep.2016.01.050", "10.1016/j.celrep.2016.02.078", "10.1016/j.celrep.2016.09.031", "10.1016/j.celrep.2016.09.092", "10.1016/j.celrep.2016.10.037", "10.1016/j.celrep.2017.02.080", "10.1016/j.celrep.2017.03.003", "10.1016/j.celrep.2017.08.024", "10.1016/j.celrep.2017.08.083", "10.1016/j.celrep.2017.10.095", "10.1016/j.celrep.2017.12.020", "10.1016/j.celrep.2017.12.039", "10.1016/j.celrep.2018.01.014", "10.1016/j.celrep.2018.05.032", "10.1016/j.celrep.2018.09.059", "10.1016/j.celrep.2018.09.076", "10.1016/j.celrep.2018.11.073", "10.1016/j.celrep.2018.11.078", "10.1016/j.celrep.2019.04.012", "10.1016/j.celrep.2019.04.083", "10.1016/j.celrep.2019.10.062", "10.1016/j.celrep.2019.11.008", "10.1016/j.celrep.2020.03.027", "10.1016/j.celrep.2020.107647", "10.1016/j.celrep.2020.108290", "10.1016/j.celrep.2021.108825", "10.1016/j.celrep.2021.109049", "10.1016/j.celrep.2021.109423", "10.1016/j.celrep.2021.109666", "10.1016/j.celrep.2021.109676", "10.1016/j.celrep.2023.112284", "10.1016/j.celrep.2024.114032", "10.1016/j.cels.2016.08.010", "10.1016/j.cels.2020.11.012", "10.1016/j.cels.2023.12.008", "10.1016/j.chembiol.2016.04.011", "10.1016/j.chembiol.2016.09.011", "10.1016/j.chemgeo.2017.11.008", "10.1016/j.chemosphere.2016.02.098", "10.1016/j.chemosphere.2018.12.199", "10.1016/j.chemosphere.2019.125631", "10.1016/j.chemosphere.2020.127205", "10.1016/j.chom.2012.04.007", "10.1016/j.chom.2012.10.008", "10.1016/j.chom.2013.11.008", "10.1016/j.chom.2014.04.010", "10.1016/j.chom.2014.07.007", "10.1016/j.clineuro.2010.03.015", "10.1016/j.clml.2019.07.039", "10.1016/j.cmet.2007.10.002", "10.1016/j.cmet.2008.06.013", "10.1016/j.cmet.2009.02.006", "10.1016/j.cmet.2013.05.017", "10.1016/j.cmet.2015.12.006", "10.1016/j.cmet.2016.08.017", "10.1016/j.cmet.2018.03.003", "10.1016/j.cmet.2018.08.020", "10.1016/j.cmet.2019.06.003", "10.1016/j.cmet.2019.08.003", "10.1016/j.conb.2014.04.001", "10.1016/j.conb.2017.05.005", "10.1016/j.conb.2019.09.012", "10.1016/j.copbio.2013.02.017", "10.1016/j.coph.2011.02.008", "10.1016/j.cophys.2020.02.002", "10.1016/j.cotox.2023.100387", "10.1016/j.critrevonc.2015.05.012", "10.1016/j.critrevonc.2019.05.001", "10.1016/j.cryobiol.2017.06.008", "10.1016/j.csbj.2020.02.007", "10.1016/j.csbj.2021.03.018", "10.1016/j.csbj.2021.04.042", "10.1016/j.csbj.2021.07.026", "10.1016/j.cub.2004.03.019", "10.1016/j.cub.2007.08.047", "10.1016/j.cub.2008.04.043", "10.1016/j.cub.2011.07.030", "10.1016/j.cub.2011.12.009", "10.1016/j.cub.2012.11.031", "10.1016/j.cub.2013.05.028", "10.1016/j.cub.2020.11.028", "10.1016/j.cub.2023.12.031", "10.1016/j.cvfa.2018.07.001", "10.1016/j.cyto.2011.03.024", "10.1016/j.cyto.2018.01.016", "10.1016/j.devcel.2006.01.013", "10.1016/j.devcel.2009.08.009", "10.1016/j.devcel.2010.02.012", "10.1016/j.devcel.2011.01.010", "10.1016/j.devcel.2011.12.009", "10.1016/j.devcel.2012.09.008", "10.1016/j.devcel.2013.01.028", "10.1016/j.devcel.2015.06.017", "10.1016/j.devcel.2015.11.005", "10.1016/j.devcel.2015.12.010", "10.1016/j.devcel.2016.07.012", "10.1016/j.devcel.2016.12.024", "10.1016/j.devcel.2017.01.013", "10.1016/j.devcel.2017.09.014", "10.1016/j.devcel.2017.10.001", "10.1016/j.devcel.2018.01.021", "10.1016/j.devcel.2018.05.022", "10.1016/j.devcel.2018.06.014", "10.1016/j.devcel.2019.01.019", "10.1016/j.devcel.2019.12.012", "10.1016/j.devcel.2020.04.002", "10.1016/j.devcel.2020.06.025", "10.1016/j.devcel.2020.08.003", "10.1016/j.diff.2009.03.006", "10.1016/j.diff.2012.05.005", "10.1016/j.dld.2019.12.021", "10.1016/j.dnarep.2013.04.015", "10.1016/j.dnarep.2020.102995", "10.1016/j.dnarep.2021.103179", "10.1016/j.dnarep.2021.103183", "10.1016/j.drudis.2014.09.008", "10.1016/j.drudis.2015.02.010", "10.1016/j.drup.2020.100719", "10.1016/j.ebiom.2015.06.020", "10.1016/j.ebiom.2018.04.023", "10.1016/j.ecoenv.2011.07.020", "10.1016/j.ecoenv.2016.01.005", "10.1016/j.ejca.2008.09.013", "10.1016/j.ejca.2013.03.002", "10.1016/j.ejcb.2007.03.006", "10.1016/j.ejcb.2010.06.002", "10.1016/j.ejmech.2011.09.056", "10.1016/j.ejmech.2017.07.075", "10.1016/j.ejmhg.2015.06.001", "10.1016/j.ejphar.2003.08.056", "10.1016/j.ejphar.2009.11.009", "10.1016/j.ejphar.2011.10.020", "10.1016/j.ejphar.2013.01.039", "10.1016/j.ejphar.2014.10.046", "10.1016/j.ejphar.2015.02.036", "10.1016/j.ejphar.2016.06.057", "10.1016/j.ejphar.2017.10.037", "10.1016/j.ejphar.2018.03.015", "10.1016/j.ejphar.2018.07.051", "10.1016/j.ejphar.2021.174280", "10.1016/j.envexpbot.2019.02.016", "10.1016/j.envpol.2009.05.015", "10.1016/j.envpol.2020.115809", "10.1016/j.envpol.2021.116901", "10.1016/j.envres.2019.04.010", "10.1016/j.envres.2019.108538", "10.1016/j.exer.2020.107975", "10.1016/j.exger.2017.10.015", "10.1016/j.exphem.2015.09.007", "10.1016/j.expneurol.2016.08.015", "10.1016/j.expneurol.2018.06.008", "10.1016/j.febslet.2006.07.087", "10.1016/j.febslet.2010.03.035", "10.1016/j.febslet.2012.02.033", "10.1016/j.febslet.2012.10.048", "10.1016/j.febslet.2015.05.025", "10.1016/j.fm.2019.103249", "10.1016/j.foodchem.2012.12.021", "10.1016/j.foodchem.2019.124978", "10.1016/j.foodchem.2019.125867", "10.1016/j.foodhyd.2021.106844", "10.1016/j.foodres.2020.109623", "10.1016/j.freeradbiomed.2012.11.014", "10.1016/j.fuel.2017.10.027", "10.1016/j.gde.2009.05.003", "10.1016/j.gde.2011.01.006", "10.1016/j.gde.2020.10.006", "10.1016/j.gde.2021.05.003", "10.1016/j.gendis.2020.07.004", "10.1016/j.gene.2007.04.010", "10.1016/j.gene.2013.11.094", "10.1016/j.gene.2015.07.073", "10.1016/j.gene.2016.02.047", "10.1016/j.gene.2017.08.016", "10.1016/j.gene.2018.10.004", "10.1016/j.gene.2020.144348", "10.1016/j.gene.2020.144810", "10.1016/j.gene.2021.145796", "10.1016/j.gpb.2012.12.002", "10.1016/j.gpb.2020.11.007", "10.1016/j.humpath.2010.03.006", "10.1016/j.ijadhadh.2017.03.008", "10.1016/j.ijantimicag.2021.106426", "10.1016/j.ijbiomac.2020.05.156", "10.1016/j.ijcard.2013.06.063", "10.1016/j.ijdevneu.2007.08.021", "10.1016/j.ijhydene.2018.06.174", "10.1016/j.ijmm.2011.09.004", "10.1016/j.ijmm.2013.03.004", "10.1016/j.ijpddr.2018.02.004", "10.1016/j.ijrobp.2007.01.071", "10.1016/j.imlet.2017.01.005", "10.1016/j.immuni.2012.04.013", "10.1016/j.immuni.2015.04.014", "10.1016/j.immuni.2019.02.013", "10.1016/j.immuni.2024.04.003", "10.1016/j.intimp.2013.10.006", "10.1016/j.intimp.2020.106541", "10.1016/j.intimp.2021.108000", "10.1016/j.isci.2019.04.013", "10.1016/j.isci.2021.102681", "10.1016/j.isci.2021.102806", "10.1016/j.isci.2023.108363", "10.1016/j.it.2008.07.005", "10.1016/j.jacbts.2016.06.008", "10.1016/j.jacc.2017.04.010", "10.1016/j.jaci.2010.05.045", "10.1016/j.jaci.2014.05.034", "10.1016/j.jaci.2016.07.012", "10.1016/j.jaci.2017.06.043", "10.1016/j.jaci.2018.10.067", "10.1016/j.jaci.2020.04.031", "10.1016/j.jalz.2013.05.1396", "10.1016/j.jare.2018.05.010", "10.1016/j.jaut.2017.12.006", "10.1016/j.jbior.2013.09.004", "10.1016/j.jbior.2024.101014", "10.1016/j.jbiosc.2009.10.018", "10.1016/j.jbiotec.2015.04.001", "10.1016/j.jbiotec.2016.07.001", "10.1016/j.jchemneu.2009.09.003", "10.1016/j.jcmgh.2017.08.001", "10.1016/j.jcmgh.2019.02.004", "10.1016/j.jconrel.2016.02.037", "10.1016/j.jcyt.2015.04.001", "10.1016/j.jcyt.2020.03.027", "10.1016/j.jddst.2020.101682", "10.1016/j.jdermsci.2006.03.002", "10.1016/j.jdermsci.2006.12.002", "10.1016/j.jdermsci.2010.10.008", "10.1016/j.jdermsci.2020.11.002", "10.1016/j.jdiacomp.2014.04.010", "10.1016/j.jep.2017.01.045", "10.1016/j.jfda.2017.03.009", "10.1016/j.jff.2021.104578", "10.1016/j.jgg.2021.06.012", "10.1016/j.jhazmat.2019.120995", "10.1016/j.jhep.2017.02.014", "10.1016/j.jhep.2020.02.026", "10.1016/j.jid.2017.09.024", "10.1016/j.jid.2018.01.016", "10.1016/j.jid.2018.11.033", "10.1016/j.jid.2020.01.036", "10.1016/j.jid.2020.02.033", "10.1016/j.jiec.2019.01.044", "10.1016/j.jkss.2017.07.001", "10.1016/j.jmb.2003.12.061", "10.1016/j.jmb.2004.04.063", "10.1016/j.jmb.2004.10.086", "10.1016/j.jmb.2005.03.044", "10.1016/j.jmb.2006.11.020", "10.1016/j.jmb.2007.02.074", "10.1016/j.jmb.2010.05.016", "10.1016/j.jmb.2010.05.058", "10.1016/j.jmb.2011.08.011", "10.1016/j.jmb.2013.03.025", "10.1016/j.jmb.2013.07.014", "10.1016/j.jmb.2014.09.013", "10.1016/j.jmb.2015.11.014", "10.1016/j.jmb.2019.02.028", "10.1016/j.jmb.2019.04.045", "10.1016/j.jmb.2019.11.025", "10.1016/j.jmb.2019.12.006", "10.1016/j.jmb.2021.166875", "10.1016/j.jmgm.2012.05.007", "10.1016/j.jnutbio.2020.108418", "10.1016/j.jphs.2017.12.004", "10.1016/j.jprot.2018.04.008", "10.1016/j.jsbmb.2010.04.019", "10.1016/j.jsbmb.2015.01.015", "10.1016/j.jtbi.2004.05.003", "10.1016/j.jtbi.2018.02.023", "10.1016/j.jtcvs.2011.02.025", "10.1016/j.jtos.2015.11.004", "10.1016/j.jtos.2020.04.001", "10.1016/j.kint.2021.02.042", "10.1016/j.knee.2012.12.015", "10.1016/j.lfs.2018.05.009", "10.1016/j.lfs.2019.05.065", "10.1016/j.lfs.2020.117481", "10.1016/j.lfs.2020.117859", "10.1016/j.lfs.2020.118879", "10.1016/j.lfs.2021.119499", "10.1016/j.mam.2012.07.005", "10.1016/j.mam.2018.03.001", "10.1016/j.matbio.2017.07.005", "10.1016/j.matbio.2018.02.006", "10.1016/j.matbio.2019.03.002", "10.1016/j.mce.2016.01.022", "10.1016/j.mce.2016.10.018", "10.1016/j.mce.2020.111135", "10.1016/j.mcn.2006.08.007", "10.1016/j.mcn.2015.11.009", "10.1016/j.mcp.2016.09.002", "10.1016/j.mcpro.2021.100137", "10.1016/j.memsci.2014.03.058", "10.1016/j.metabol.2007.06.016", "10.1016/j.mib.2008.11.010", "10.1016/j.mib.2009.12.013", "10.1016/j.mib.2015.11.006", "10.1016/j.micinf.2020.07.006", "10.1016/j.mito.2016.08.008", "10.1016/j.mod.2005.08.002", "10.1016/j.mod.2011.04.001", "10.1016/j.mod.2018.04.002", "10.1016/j.molcel.2008.05.008", "10.1016/j.molcel.2009.06.017", "10.1016/j.molcel.2010.02.009", "10.1016/j.molcel.2010.09.023", "10.1016/j.molcel.2012.07.029", "10.1016/j.molcel.2012.10.015", "10.1016/j.molcel.2013.07.025", "10.1016/j.molcel.2014.03.044", "10.1016/j.molcel.2014.05.016", "10.1016/j.molcel.2014.11.009", "10.1016/j.molcel.2015.05.035", "10.1016/j.molcel.2015.07.018", "10.1016/j.molcel.2016.03.021", "10.1016/j.molcel.2016.05.018", "10.1016/j.molcel.2016.06.021", "10.1016/j.molcel.2016.10.030", "10.1016/j.molcel.2016.12.022", "10.1016/j.molcel.2017.10.019", "10.1016/j.molcel.2018.08.004", "10.1016/j.molcel.2019.03.025", "10.1016/j.molcel.2019.09.032", "10.1016/j.molcel.2020.04.027", "10.1016/j.molcel.2020.11.025", "10.1016/j.molcel.2020.11.041", "10.1016/j.molcel.2020.12.041", "10.1016/j.molcel.2021.06.031", "10.1016/j.molcel.2021.07.035", "10.1016/j.molcel.2021.07.037", "10.1016/j.molmed.2012.08.001", "10.1016/j.molmed.2014.01.008", "10.1016/j.molmet.2018.05.019", "10.1016/j.molmet.2019.06.026", "10.1016/j.molmet.2020.101115", "10.1016/j.molmet.2021.101168", "10.1016/j.molonc.2012.10.012", "10.1016/j.molonc.2013.02.012", "10.1016/j.molonc.2013.10.001", "10.1016/j.molonc.2015.04.016", "10.1016/j.molp.2015.06.004", "10.1016/j.molp.2017.07.011", "10.1016/j.molp.2020.09.019", "10.1016/j.molp.2020.12.017", "10.1016/j.molp.2021.01.013", "10.1016/j.mrrev.2014.06.002", "10.1016/j.nano.2020.102270", "10.1016/j.nbd.2004.11.002", "10.1016/j.nbd.2015.02.021", "10.1016/j.nbd.2016.11.003", "10.1016/j.nbd.2018.05.015", "10.1016/j.ncrna.2020.02.002", "10.1016/j.neo.2017.05.002", "10.1016/j.neuint.2009.07.008", "10.1016/j.neuint.2013.10.009", "10.1016/j.neulet.2005.04.028", "10.1016/j.neures.2011.07.275", "10.1016/j.neuroimage.2007.12.035", "10.1016/j.neuron.2004.11.010", "10.1016/j.neuron.2006.04.030", "10.1016/j.neuron.2007.01.009", "10.1016/j.neuron.2007.06.036", "10.1016/j.neuron.2007.07.009", "10.1016/j.neuron.2010.02.018", "10.1016/j.neuron.2011.01.030", "10.1016/j.neuron.2011.02.005", "10.1016/j.neuron.2012.04.025", "10.1016/j.neuron.2013.09.037", "10.1016/j.neuron.2015.09.049", "10.1016/j.neuron.2015.12.011", "10.1016/j.neuron.2016.02.004", "10.1016/j.neuron.2016.09.048", "10.1016/j.neuron.2016.10.009", "10.1016/j.neuron.2016.11.032", "10.1016/j.neuron.2016.11.047", "10.1016/j.neuron.2018.01.014", "10.1016/j.neuron.2019.02.018", "10.1016/j.neuron.2019.06.011", "10.1016/j.neuron.2019.07.004", "10.1016/j.neuron.2019.07.009", "10.1016/j.neuron.2020.07.023", "10.1016/j.neuron.2024.01.028", "10.1016/j.neuron.2024.02.005", "10.1016/j.neuropharm.2013.04.026", "10.1016/j.neuropharm.2018.12.008", "10.1016/j.neuropharm.2019.02.030", "10.1016/j.neuropharm.2019.04.021", "10.1016/j.neuroscience.2009.03.032", "10.1016/j.neuroscience.2012.06.063", "10.1016/j.neuroscience.2014.08.016", "10.1016/j.neuroscience.2015.07.088", "10.1016/j.neuroscience.2017.07.015", "10.1016/j.neuroscience.2020.09.039", "10.1016/j.ntt.2013.01.004", "10.1016/j.omtm.2020.07.009", "10.1016/j.omtm.2020.09.002", "10.1016/j.omtn.2021.07.016", "10.1016/j.omto.2020.06.010", "10.1016/j.orthres.2003.11.009", "10.1016/j.pbi.2021.102060", "10.1016/j.pbiomolbio.2021.04.007", "10.1016/j.pep.2019.105540", "10.1016/j.peptides.2014.12.004", "10.1016/j.pharep.2019.08.006", "10.1016/j.pharma.2010.05.005", "10.1016/j.pharmthera.2018.02.013", "10.1016/j.pharmthera.2020.107785", "10.1016/j.phrs.2012.05.008", "10.1016/j.phrs.2018.02.022", "10.1016/j.phrs.2020.104683", "10.1016/j.phymed.2019.153111", "10.1016/j.phymed.2021.153585", "10.1016/j.phytochem.2010.11.026", "10.1016/j.placenta.2015.12.002", "10.1016/j.plaphy.2007.03.001", "10.1016/j.plaphy.2008.12.024", "10.1016/j.plaphy.2013.10.018", "10.1016/j.plaphy.2015.09.006", "10.1016/j.plefa.2010.02.005", "10.1016/j.plefa.2011.10.001", "10.1016/j.pneurobio.2013.08.001", "10.1016/j.pnpbp.2020.110086", "10.1016/j.proghi.2016.06.001", "10.1016/j.prp.2019.152475", "10.1016/j.rbmo.2018.05.008", "10.1016/j.rbmo.2018.05.012", "10.1016/j.redox.2015.10.004", "10.1016/j.redox.2018.01.003", "10.1016/j.regen.2021.100038", "10.1016/j.repbio.2020.01.005", "10.1016/j.reprotox.2011.01.003", "10.1016/j.reprotox.2021.12.005", "10.1016/j.sbi.2010.10.002", "10.1016/j.sbi.2015.01.003", "10.1016/j.sbi.2016.10.016", "10.1016/j.sbi.2016.12.006", "10.1016/j.scienta.2018.05.042", "10.1016/j.scitotenv.2012.02.018", "10.1016/j.scitotenv.2021.145950", "10.1016/j.scr.2014.07.003", "10.1016/j.scr.2018.09.004", "10.1016/j.scr.2020.101754", "10.1016/j.semcancer.2019.10.004", "10.1016/j.semcdb.2013.10.002", "10.1016/j.semcdb.2015.12.021", "10.1016/j.semcdb.2017.08.022", "10.1016/j.semcdb.2018.04.004", "10.1016/j.semcdb.2018.04.011", "10.1016/j.semcdb.2018.05.013", "10.1016/j.semcdb.2018.05.021", "10.1016/j.semcdb.2019.04.006", "10.1016/j.semcdb.2019.07.009", "10.1016/j.semcdb.2019.09.005", "10.1016/j.semcdb.2020.04.011", "10.1016/j.semcdb.2021.06.007", "10.1016/j.simyco.2018.10.002", "10.1016/j.sjbs.2013.05.003", "10.1016/j.snb.2018.12.162", "10.1016/j.snb.2021.129686", "10.1016/j.stem.2009.05.026", "10.1016/j.stem.2010.04.002", "10.1016/j.stem.2010.04.017", "10.1016/j.stem.2010.06.015", "10.1016/j.stem.2012.02.005", "10.1016/j.stem.2012.05.018", "10.1016/j.stem.2014.06.019", "10.1016/j.stem.2014.11.007", "10.1016/j.stem.2016.01.007", "10.1016/j.stem.2016.03.015", "10.1016/j.stem.2017.11.016", "10.1016/j.stem.2019.01.011", "10.1016/j.stem.2020.09.011", "10.1016/j.stem.2021.02.008", "10.1016/j.stem.2021.03.016", "10.1016/j.stem.2021.04.023", "10.1016/j.stemcr.2014.02.008", "10.1016/j.stemcr.2015.09.013", "10.1016/j.stemcr.2017.09.015", "10.1016/j.stemcr.2018.10.002", "10.1016/j.stemcr.2018.11.008", "10.1016/j.stemcr.2019.04.011", "10.1016/j.stemcr.2019.11.007", "10.1016/j.stemcr.2019.11.010", "10.1016/j.stemcr.2020.11.005", "10.1016/j.str.2011.11.014", "10.1016/j.str.2015.04.002", "10.1016/j.str.2021.03.014", "10.1016/j.taap.2016.09.020", "10.1016/j.tcb.2011.01.005", "10.1016/j.tcb.2011.08.003", "10.1016/j.tcb.2016.11.003", "10.1016/j.tcb.2018.05.005", "10.1016/j.tcb.2021.01.004", "10.1016/j.tem.2006.01.007", "10.1016/j.tem.2009.07.005", "10.1016/j.tem.2018.08.004", "10.1016/j.theriogenology.2020.04.003", "10.1016/j.tibs.2004.09.006", "10.1016/j.tibs.2008.02.002", "10.1016/j.tice.2014.08.003", "10.1016/j.tics.2018.10.005", "10.1016/j.tig.2003.12.009", "10.1016/j.tig.2007.03.011", "10.1016/j.tig.2008.10.011", "10.1016/j.tig.2013.04.004", "10.1016/j.tig.2015.12.005", "10.1016/j.tig.2017.02.001", "10.1016/j.tig.2019.12.007", "10.1016/j.tig.2020.11.001", "10.1016/j.tig.2021.06.016", "10.1016/j.tim.2009.01.005", "10.1016/j.tim.2014.06.004", "10.1016/j.tim.2015.11.002", "10.1016/j.tim.2018.09.006", "10.1016/j.tins.2019.01.002", "10.1016/j.tips.2020.04.006", "10.1016/j.tox.2016.09.019", "10.1016/j.toxrep.2020.04.004", "10.1016/j.tplants.2015.10.003", "10.1016/j.tranon.2020.100748", "10.1016/j.tree.2010.10.006", "10.1016/j.trim.2018.03.004", "10.1016/j.vaccine.2012.12.048", "10.1016/j.vetimm.2011.08.022", "10.1016/j.vetimm.2013.10.015", "10.1016/j.virol.2015.06.029", "10.1016/j.virol.2019.08.031", "10.1016/j.xinn.2021.100141", "10.1016/j.xphs.2019.03.031", "10.1016/j.xpro.2021.100358", "10.1016/j.ydbio.2003.09.041", "10.1016/j.ydbio.2004.12.014", "10.1016/j.ydbio.2005.11.019", "10.1016/j.ydbio.2006.01.031", "10.1016/j.ydbio.2006.02.028", "10.1016/j.ydbio.2006.02.029", "10.1016/j.ydbio.2006.04.439", "10.1016/j.ydbio.2006.04.447", "10.1016/j.ydbio.2006.10.007", "10.1016/j.ydbio.2007.04.010", "10.1016/j.ydbio.2007.08.019", "10.1016/j.ydbio.2008.02.062", "10.1016/j.ydbio.2008.05.456", "10.1016/j.ydbio.2008.06.001", "10.1016/j.ydbio.2009.09.015", "10.1016/j.ydbio.2009.10.039", "10.1016/j.ydbio.2010.02.037", "10.1016/j.ydbio.2010.05.021", "10.1016/j.ydbio.2010.06.017", "10.1016/j.ydbio.2010.08.007", "10.1016/j.ydbio.2011.03.019", "10.1016/j.ydbio.2011.03.023", "10.1016/j.ydbio.2011.05.669", "10.1016/j.ydbio.2011.07.013", "10.1016/j.ydbio.2011.07.026", "10.1016/j.ydbio.2011.08.006", "10.1016/j.ydbio.2012.02.018", "10.1016/j.ydbio.2012.03.010", "10.1016/j.ydbio.2012.12.005", "10.1016/j.ydbio.2013.01.021", "10.1016/j.ydbio.2014.05.007", "10.1016/j.ydbio.2014.10.016", "10.1016/j.ydbio.2014.11.008", "10.1016/j.ydbio.2014.12.002", "10.1016/j.ydbio.2015.04.021", "10.1016/j.ydbio.2015.06.007", "10.1016/j.ydbio.2015.12.011", "10.1016/j.ydbio.2016.04.003", "10.1016/j.ydbio.2016.06.015", "10.1016/j.ydbio.2016.08.015", "10.1016/j.ydbio.2017.03.030", "10.1016/j.ydbio.2017.08.030", "10.1016/j.ydbio.2021.03.014", "10.1016/j.yexcr.2005.06.009", "10.1016/j.yexcr.2010.03.005", "10.1016/j.yexcr.2015.10.021", "10.1016/j.yexcr.2017.02.011", "10.1016/j.ygcen.2004.06.011", "10.1016/j.ygcen.2005.07.009", "10.1016/j.ygyno.2017.05.001", "10.1016/j.yjmcc.2007.01.006", "10.1016/j.yjmcc.2013.04.024", "10.1016/j.yjmcc.2016.01.026", "10.1016/j.ymeth.2009.11.001", "10.1016/j.ymeth.2016.03.001", "10.1016/j.ymeth.2019.11.003", "10.1016/j.ymeth.2020.10.008", "10.1016/j.ymgme.2010.11.162", "10.1016/j.ymgme.2021.08.011", "10.1016/j.ymthe.2020.09.010", "10.1016/j.ymthe.2021.05.007", "10.1016/j.zool.2014.04.001", "10.1016/s0002-9440(10)64394-5", "10.1016/s0008-6363(00)00119-x", "10.1016/s0016-5085(17)30545-0", "10.1016/s0016-6480(03)00188-6", "10.1016/s0021-9258(17)40535-7", "10.1016/s0021-9258(18)32380-9", "10.1016/s0021-9258(19)61486-9", "10.1016/s0021-9258(19)68170-6", "10.1016/s0021-9258(19)68584-4", "10.1016/s0021-9258(19)86675-9", "10.1016/s0021-9258(20)80740-6", "10.1016/s0022-2836(02)00442-4", "10.1016/s0022-2836(02)00571-5", "10.1016/s0022-2836(02)00813-6", "10.1016/s0022-2836(02)01281-0", "10.1016/s0022-2836(05)80360-2", "10.1016/s0031-9384(00)00423-6", "10.1016/s0042-6822(02)00080-6", "10.1016/s0079-6603(04)78006-x", "10.1016/s0079-6603(08)00810-6", "10.1016/s0091-679x(04)78023-1", "10.1016/s0092-8674(00)00078-7", "10.1016/s0092-8674(00)00079-9", "10.1016/s0092-8674(00)80521-8", "10.1016/s0092-8674(00)80590-5", "10.1016/s0092-8674(00)81337-9", "10.1016/s0092-8674(00)81369-0", "10.1016/s0092-8674(02)00677-3", "10.1016/s0092-8674(02)00678-5", "10.1016/s0092-8674(03)00154-5", "10.1016/s0092-8674(04)00119-9", "10.1016/s0140-6736(11)61539-0", "10.1016/s0140-6736(21)00184-7", "10.1016/s0163-7827(98)00005-8", "10.1016/s0166-445x(99)00080-6", "10.1016/s0168-1702(02)00309-x", "10.1016/s0168-8278(23)02187-6", "10.1016/s0168-9525(03)00080-5", "10.1016/s0197-4580(01)00317-7", "10.1016/s0214-9168(09)72956-0", "10.1016/s0306-4522(02)00556-0", "10.1016/s0896-6273(00)80897-1", "10.1016/s0896-6273(00)80898-3", "10.1016/s0896-6273(01)00407-x", "10.1016/s0896-6273(01)00413-5", "10.1016/s0896-6273(01)00448-2", "10.1016/s0896-6273(02)01149-2", "10.1016/s0896-6273(03)00258-7", "10.1016/s0925-4439(04)00028-6", "10.1016/s0925-4773(00)00466-4", "10.1016/s0959-437x(00)00146-5", "10.1016/s0959-440x(00)00166-4", "10.1016/s0959-440x(98)80065-1", "10.1016/s0960-9822(02)00606-1", "10.1016/s0960-9822(02)00926-0", "10.1016/s0960-9822(03)00419-6", "10.1016/s1097-2765(00)80058-1", "10.1016/s1097-2765(00)80070-2", "10.1016/s1097-2765(00)80474-8", "10.1016/s1286-0115(06)74430-7", "10.1016/s1470-2045(09)70025-7", "10.1016/s1470-2045(17)30313-3", "10.1016/s1470-2045(20)30112-1", "10.1016/s1520-765x(01)90007-0", "10.1016/s1634-7072(21)45785-5", "10.1016/s1671-2927(12)60783-4", "10.1016/s2214-109x(18)30451-0", "10.1016/s2666-1683(20)35397-0", "10.1017/aap.2022.36", "10.1017/erm.2015.16", "10.1017/qrd.2022.16", "10.1017/s0022029919000785", "10.1017/s0029665120007430", "10.1017/s003358350000202x", "10.1017/s0033583502003773", "10.1017/s0950268802007483", "10.1017/s0950268814002362", "10.1017/s0967199420000799", "10.1021/acs.accounts.6b00593", "10.1021/acs.analchem.0c02203", "10.1021/acs.analchem.1c01125", "10.1021/acs.biochem.0c00949", "10.1021/acs.biochem.5b01271", "10.1021/acs.biomac.1c00481", "10.1021/acs.chemrev.0c00191", "10.1021/acs.chemrev.7b00510", "10.1021/acs.chemrev.8b00760", "10.1021/acs.chemrev.9b00546", "10.1021/acs.chemrev.9b00664", "10.1021/acs.energyfuels.0c03709", "10.1021/acs.est.0c07408", "10.1021/acs.iecr.7b00427", "10.1021/acs.jafc.0c05381", "10.1021/acs.jcim.0c01470", "10.1021/acs.jcim.5b00173", "10.1021/acs.jcim.5b00265", "10.1021/acs.jcim.7b00139", "10.1021/acs.jcim.8b00850", "10.1021/acs.jcim.9b00514", "10.1021/acs.jctc.0c01045", "10.1021/acs.jctc.7b01109", "10.1021/acs.jmedchem.0c00796", "10.1021/acs.jmedchem.0c01487", "10.1021/acs.jmedchem.1c01779", "10.1021/acs.jmedchem.5b00137", "10.1021/acs.jmedchem.5b01708", "10.1021/acs.jmedchem.8b01248", "10.1021/acs.jmedchem.9b01237", "10.1021/acs.jpcb.0c06502", "10.1021/acs.jpcb.5b04208", "10.1021/acs.jpcb.7b01926", "10.1021/acs.jpcb.7b02569", "10.1021/acs.jpcb.7b11367", "10.1021/acs.langmuir.8b03175", "10.1021/acs.molpharmaceut.7b00264", "10.1021/acs.nanolett.0c04753", "10.1021/acscatal.1c03343", "10.1021/acscentsci.0c00940", "10.1021/acscentsci.9b01272", "10.1021/acschembio.7b00338", "10.1021/acschemneuro.1c00470", "10.1021/acschemneuro.6b00242", "10.1021/acschemneuro.7b00089", "10.1021/acschemneuro.8b00657", "10.1021/acschemneuro.8b00689", "10.1021/acschemneuro.9b00521", "10.1021/acsearthspacechem.1c00006", "10.1021/acsmedchemlett.2c00300", "10.1021/acsmedchemlett.8b00397", "10.1021/acsnano.8b07605", "10.1021/acsnano.9b00587", "10.1021/acsnano.9b01892", "10.1021/acsomega.1c01289", "10.1021/acsomega.8b01237", "10.1021/acsptsci.9b00093", "10.1021/acssuschemeng.0c01086", "10.1021/acssynbio.1c00015", "10.1021/bi000200n", "10.1021/bi000613o", "10.1021/bi00615a021", "10.1021/bi00865a041", "10.1021/bi0268450", "10.1021/bi048022b", "10.1021/bi0508688", "10.1021/bi0608055", "10.1021/bi100795m", "10.1021/bi200926b", "10.1021/bi300762p", "10.1021/bi301323n", "10.1021/bi500637f", "10.1021/bi7007905", "10.1021/bi901589w", "10.1021/bi992287m", "10.1021/cb200445w", "10.1021/cg200663v", "10.1021/ci400720n", "10.1021/ci400742s", "10.1021/ci5001955", "10.1021/ci700255d", "10.1021/cn100066p", "10.1021/cr100404w", "10.1021/cr4004488", "10.1021/cr960387h", "10.1021/ct800068v", "10.1021/ef201676t", "10.1021/j100821a010", "10.1021/ja01092a035", "10.1021/ja01482a024", "10.1021/ja027765m", "10.1021/ja030145g", "10.1021/ja047934y", "10.1021/ja0614058", "10.1021/ja0655284", "10.1021/ja076403h", "10.1021/ja104393t", "10.1021/ja809039u", "10.1021/jacs.1c07990", "10.1021/jacs.3c08047", "10.1021/jacs.7b03263", "10.1021/jacs.7b06099", "10.1021/jacs.7b08741", "10.1021/jacs.8b11912", "10.1021/jacs.9b02004", "10.1021/jacs.9b08273", "10.1021/jf100352c", "10.1021/jf201871w", "10.1021/jf801786d", "10.1021/jm0208875", "10.1021/jm1005034", "10.1021/jp071097f", "10.1021/jp101592m", "10.1021/jp308674g", "10.1021/jp404385h", "10.1021/jp4115404", "10.1021/jp4119138", "10.1021/mp100226q", "10.1021/nn504025a", "10.1021/pr901008d", "10.1021/tx2001916", "10.1021/tx3000818", "10.1023/b:rudo.0000036713.86633.c2", "10.1034/j.1601-183x.2002.102081.x", "10.1038/20459", "10.1038/20974", "10.1038/338658a0", "10.1038/35017054", "10.1038/35021093", "10.1038/350350a0", "10.1038/35037523", "10.1038/35083016", "10.1038/354066a0", "10.1038/368258a0", "10.1038/4434", "10.1038/5007", "10.1038/518314a", "10.1038/72294", "10.1038/73432", "10.1038/86906", "10.1038/cdd.2011.192", "10.1038/cddis.2013.371", "10.1038/cddis.2014.544", "10.1038/cddis.2015.119", "10.1038/cddis.2017.464", "10.1038/cr.2013.166", "10.1038/cr.2014.3", "10.1038/cr.2017.15", "10.1038/ejcn.2011.152", "10.1038/emboj.2008.205", "10.1038/emboj.2010.74", "10.1038/emboj.2011.294", "10.1038/emboj.2011.316", "10.1038/emboj.2013.91", "10.1038/emm.2017.287", "10.1038/gim.2016.58", "10.1038/icb.2014.114", "10.1038/icb.2017.73", "10.1038/jcbfm.2010.180", "10.1038/jid.2015.248", "10.1038/labinvest.2017.126", "10.1038/mp.2009.100", "10.1038/mp.2015.7", "10.1038/msb.2011.100", "10.1038/mtm.2014.21", "10.1038/mtna.2013.23", "10.1038/nature01262", "10.1038/nature02110", "10.1038/nature03978", "10.1038/nature04670", "10.1038/nature04695", "10.1038/nature04959", "10.1038/nature05382", "10.1038/nature05766", "10.1038/nature05778", "10.1038/nature05977", "10.1038/nature06133", "10.1038/nature06524", "10.1038/nature06904", "10.1038/nature07672", "10.1038/nature08750", "10.1038/nature08804", "10.1038/nature08872", "10.1038/nature08899", "10.1038/nature08944", "10.1038/nature09195", "10.1038/nature09262", "10.1038/nature09380", "10.1038/nature09385", "10.1038/nature09504", "10.1038/nature09906", "10.1038/nature10110", "10.1038/nature10137", "10.1038/nature10163", "10.1038/nature10177", "10.1038/nature10244", "10.1038/nature10724", "10.1038/nature10737", "10.1038/nature10983", "10.1038/nature11082", "10.1038/nature11089", "10.1038/nature11112", "10.1038/nature11247", "10.1038/nature11273", "10.1038/nature11628", "10.1038/nature11682", "10.1038/nature11981", "10.1038/nature12074", "10.1038/nature12322", "10.1038/nature12354", "10.1038/nature12403", "10.1038/nature12414", "10.1038/nature12443", "10.1038/nature12453", "10.1038/nature12533", "10.1038/nature12598", "10.1038/nature12730", "10.1038/nature13261", "10.1038/nature13415", "10.1038/nature13802", "10.1038/nature13986", "10.1038/nature14221", "10.1038/nature14222", "10.1038/nature17629", "10.1038/nature17644", "10.1038/nature19342", "10.1038/nature20565", "10.1038/nature20577", "10.1038/nature20791", "10.1038/nature23001", "10.1038/nature23320", "10.1038/nature24660", "10.1038/nature25169", "10.1038/nature26140", "10.1038/nbt.1882", "10.1038/nbt.3198", "10.1038/nbt.3388", "10.1038/nbt.3519", "10.1038/nbt.3769", "10.1038/nbt.3906", "10.1038/nbt.4314", "10.1038/nbt1068", "10.1038/nbt950", "10.1038/ncb1002", "10.1038/ncb1596", "10.1038/ncb1800", "10.1038/ncb1929", "10.1038/ncb2210", "10.1038/ncb2902", "10.1038/ncb3072", "10.1038/ncb3104", "10.1038/ncb3532", "10.1038/ncb3575", "10.1038/nchem.2511", "10.1038/nchem.2878", "10.1038/nchembio.1432", "10.1038/nchembio.1836", "10.1038/nchembio.2209", "10.1038/nchembio.2210", "10.1038/nchembio.2569", "10.1038/nchembio.284", "10.1038/ncomms11102", "10.1038/ncomms11247", "10.1038/ncomms11261", "10.1038/ncomms11628", "10.1038/ncomms11673", "10.1038/ncomms1187", "10.1038/ncomms12222", "10.1038/ncomms12298", "10.1038/ncomms12524", "10.1038/ncomms12755", "10.1038/ncomms1285", "10.1038/ncomms13787", "10.1038/ncomms14091", "10.1038/ncomms14100", "10.1038/ncomms14182", "10.1038/ncomms14388", "10.1038/ncomms14684", "10.1038/ncomms14888", "10.1038/ncomms15151", "10.1038/ncomms15737", "10.1038/ncomms15895", "10.1038/ncomms15899", "10.1038/ncomms2620", "10.1038/ncomms2978", "10.1038/ncomms3980", "10.1038/ncomms4153", "10.1038/ncomms4258", "10.1038/ncomms4337", "10.1038/ncomms6748", "10.1038/ncomms8007", "10.1038/ncomms8030", "10.1038/ng.298", "10.1038/ng.3229", "10.1038/ng.3657", "10.1038/ng.3662", "10.1038/ng.3929", "10.1038/ng.3935", "10.1038/ng.711", "10.1038/ng.948", "10.1038/ng1197-298", "10.1038/ng1363", "10.1038/ni.2353", "10.1038/nm.2167", "10.1038/nm.3028", "10.1038/nm.3816", "10.1038/nm1328", "10.1038/nm1460", "10.1038/nmeth.1923", "10.1038/nmeth.2019", "10.1038/nmeth.2688", "10.1038/nmeth.3453", "10.1038/nmeth.4067", "10.1038/nmeth.4510", "10.1038/nmeth.4580", "10.1038/nmeth0410-248", "10.1038/nn.2152", "10.1038/nn.2207", "10.1038/nn.2600", "10.1038/nn.3790", "10.1038/nn.4216", "10.1038/nn.4597", "10.1038/nn1620", "10.1038/nn1932", "10.1038/nn748", "10.1038/npjamd.2016.1", "10.1038/nprot.2008.227", "10.1038/nprot.2012.016", "10.1038/nprot.2016.159", "10.1038/nprot.2017.052", "10.1038/nprot.2017.124", "10.1038/nrc.2016.89", "10.1038/nrc1187", "10.1038/nrc2222", "10.1038/nrc2676", "10.1038/nrc2917", "10.1038/nrc3319", "10.1038/nrc3483", "10.1038/nrc3726", "10.1038/nrc3912", "10.1038/nrclinonc.2011.177", "10.1038/nrd2780", "10.1038/nrd2997", "10.1038/nrg.2017.102", "10.1038/nrg2482", "10.1038/nrg2526", "10.1038/nrg2689", "10.1038/nrg2808", "10.1038/nrg2845", "10.1038/nrg2901", "10.1038/nrg2957", "10.1038/nrg3230", "10.1038/nrg3482", "10.1038/nrgastro.2017.32", "10.1038/nri2506", "10.1038/nrm.2016.116", "10.1038/nrm.2016.132", "10.1038/nrm.2017.125", "10.1038/nrm.2017.48", "10.1038/nrm.2017.91", "10.1038/nrm2330", "10.1038/nrm3025", "10.1038/nrm3392", "10.1038/nrm3619", "10.1038/nrm3884", "10.1038/nrm4024", "10.1038/nrmicro3185", "10.1038/nrn1008", "10.1038/nrn2761", "10.1038/nrn3024", "10.1038/nrn3386", "10.1038/nrn3915", "10.1038/nsmb.1602", "10.1038/nsmb.2054", "10.1038/nsmb.2345", "10.1038/nsmb.2520", "10.1038/nsmb.2894", "10.1038/nsmb.2912", "10.1038/nsmb.3462", "10.1038/onc.2009.148", "10.1038/onc.2010.158", "10.1038/onc.2010.356", "10.1038/onc.2013.179", "10.1038/onc.2013.217", "10.1038/onc.2013.347", "10.1038/onc.2014.23", "10.1038/onc.2014.272", "10.1038/onc.2015.144", "10.1038/onc.2015.197", "10.1038/onc.2015.281", "10.1038/onc.2016.103", "10.1038/onc.2017.395", "10.1038/oncsis.2015.42", "10.1038/oncsis.2015.49", "10.1038/oncsis.2017.4", "10.1038/s10038-020-0733-y", "10.1038/s12276-019-0223-5", "10.1038/s12276-020-00522-6", "10.1038/s12276-020-00533-3", "10.1038/s12276-022-00869-y", "10.1038/s12276-023-01038-5", "10.1038/s12276-023-01059-0", "10.1038/s41374-018-0143-3", "10.1038/s41374-018-0151-3", "10.1038/s41375-023-01835-x", "10.1038/s41380-021-01282-z", "10.1038/s41380-022-01570-2", "10.1038/s41380-023-02028-9", "10.1038/s41386-021-01137-9", "10.1038/s41388-018-0597-1", "10.1038/s41388-018-0620-6", "10.1038/s41388-019-1005-1", "10.1038/s41388-020-01400-1", "10.1038/s41388-020-1323-3", "10.1038/s41388-021-02095-8", "10.1038/s41388-022-02310-0", "10.1038/s41388-022-02385-9", "10.1038/s41388-022-02507-3", "10.1038/s41388-024-03041-0", "10.1038/s41389-017-0011-9", "10.1038/s41389-018-0052-8", "10.1038/s41389-018-0054-6", "10.1038/s41392-020-00300-w", "10.1038/s41392-020-00382-6", "10.1038/s41392-020-00384-4", "10.1038/s41392-020-00450-x", "10.1038/s41392-022-01007-w", "10.1038/s41392-022-01020-z", "10.1038/s41392-022-01285-4", "10.1038/s41392-023-01385-9", "10.1038/s41409-019-0616-z", "10.1038/s41416-019-0650-z", "10.1038/s41416-019-0711-3", "10.1038/s41416-021-01294-0", "10.1038/s41416-021-01510-x", "10.1038/s41416-023-02426-4", "10.1038/s41417-022-00451-8", "10.1038/s41417-022-00533-7", "10.1038/s41417-024-00734-2", "10.1038/s41418-018-0158-8", "10.1038/s41418-022-01023-x", "10.1038/s41418-023-01213-1", "10.1038/s41419-018-0432-1", "10.1038/s41419-018-0543-8", "10.1038/s41419-018-0794-4", "10.1038/s41419-018-1085-9", "10.1038/s41419-019-1769-9", "10.1038/s41419-019-1792-x", "10.1038/s41419-019-1928-z", "10.1038/s41419-020-02781-7", "10.1038/s41419-020-02897-w", "10.1038/s41419-020-02988-8", "10.1038/s41419-020-03315-x", "10.1038/s41419-020-03384-y", "10.1038/s41419-021-03625-8", "10.1038/s41419-021-03724-6", "10.1038/s41419-021-04272-9", "10.1038/s41419-021-04391-3", "10.1038/s41419-021-04401-4", "10.1038/s41419-022-04699-8", "10.1038/s41419-022-05050-x", "10.1038/s41419-022-05386-4", "10.1038/s41419-024-06435-w", "10.1038/s41420-019-0179-1", "10.1038/s41420-020-00306-x", "10.1038/s41420-021-00663-1", "10.1038/s41420-022-00819-7", "10.1038/s41420-022-00947-0", "10.1038/s41420-022-01195-y", "10.1038/s41420-022-01286-w", "10.1038/s41420-023-01589-6", "10.1038/s41421-020-00186-6", "10.1038/s41421-021-00275-0", "10.1038/s41422-018-0034-6", "10.1038/s41422-018-0053-3", "10.1038/s41422-018-0069-8", "10.1038/s41422-018-0127-2", "10.1038/s41422-019-0195-y", "10.1038/s41422-020-00408-2", "10.1038/s41422-020-00415-3", "10.1038/s41422-021-00515-8", "10.1038/s41422-022-00666-2", "10.1038/s41422-022-00725-8", "10.1038/s41422-023-00896-y", "10.1038/s41422-024-00930-7", "10.1038/s41423-020-0391-1", "10.1038/s41423-024-01199-x", "10.1038/s41431-017-0011-4", "10.1038/s41434-020-00204-y", "10.1038/s41467-017-00444-4", "10.1038/s41467-017-00524-5", "10.1038/s41467-017-00882-0", "10.1038/s41467-017-01082-6", "10.1038/s41467-017-01196-x", "10.1038/s41467-017-01278-w", "10.1038/s41467-017-01488-2", "10.1038/s41467-017-01645-7", "10.1038/s41467-017-02200-0", "10.1038/s41467-017-02202-y", "10.1038/s41467-017-02258-w", "10.1038/s41467-017-02403-5", "10.1038/s41467-018-03221-z", "10.1038/s41467-018-04045-7", "10.1038/s41467-018-04134-7", "10.1038/s41467-018-05077-9", "10.1038/s41467-018-07264-0", "10.1038/s41467-018-07391-8", "10.1038/s41467-018-07451-z", "10.1038/s41467-018-08079-9", "10.1038/s41467-018-08140-7", "10.1038/s41467-018-08247-x", "10.1038/s41467-019-08411-x", "10.1038/s41467-019-09617-9", "10.1038/s41467-019-09675-z", "10.1038/s41467-019-09676-y", "10.1038/s41467-019-10566-6", "10.1038/s41467-019-10725-9", "10.1038/s41467-019-11171-3", "10.1038/s41467-019-13664-7", "10.1038/s41467-019-14111-3", "10.1038/s41467-020-14385-y", "10.1038/s41467-020-14540-5", "10.1038/s41467-020-15126-x", "10.1038/s41467-020-15290-0", "10.1038/s41467-020-16199-4", "10.1038/s41467-020-17205-5", "10.1038/s41467-020-17503-y", "10.1038/s41467-020-18377-w", "10.1038/s41467-020-18784-z", "10.1038/s41467-020-18900-z", "10.1038/s41467-020-19619-7", "10.1038/s41467-020-19775-w", "10.1038/s41467-020-19843-1", "10.1038/s41467-020-20001-w", "10.1038/s41467-020-20040-3", "10.1038/s41467-020-20379-7", "10.1038/s41467-020-20400-z", "10.1038/s41467-020-20830-9", "10.1038/s41467-021-22083-6", "10.1038/s41467-021-22822-9", "10.1038/s41467-021-23500-6", "10.1038/s41467-021-23643-6", "10.1038/s41467-021-24035-6", "10.1038/s41467-021-24384-2", "10.1038/s41467-021-24656-x", "10.1038/s41467-021-24808-z", "10.1038/s41467-021-24969-x", "10.1038/s41467-021-25534-2", "10.1038/s41467-021-26447-w", "10.1038/s41467-021-26530-2", "10.1038/s41467-021-27325-1", "10.1038/s41467-021-27388-0", "10.1038/s41467-022-27956-y", "10.1038/s41467-022-28865-w", "10.1038/s41467-022-28884-7", "10.1038/s41467-022-29068-z", "10.1038/s41467-022-29273-w", "10.1038/s41467-022-29394-2", "10.1038/s41467-022-29414-1", "10.1038/s41467-022-30154-5", "10.1038/s41467-022-30210-0", "10.1038/s41467-022-30412-6", "10.1038/s41467-022-30787-6", "10.1038/s41467-022-31034-8", "10.1038/s41467-022-33729-4", "10.1038/s41467-022-33824-6", "10.1038/s41467-022-34299-1", "10.1038/s41467-022-34493-1", "10.1038/s41467-022-34811-7", "10.1038/s41467-022-35388-x", "10.1038/s41467-022-35433-9", "10.1038/s41467-022-35508-7", "10.1038/s41467-023-35858-w", "10.1038/s41467-023-35985-4", "10.1038/s41467-023-36178-9", "10.1038/s41467-023-36184-x", "10.1038/s41467-023-36596-9", "10.1038/s41467-023-36969-0", "10.1038/s41467-023-37427-7", "10.1038/s41467-023-37583-w", "10.1038/s41467-023-37914-x", "10.1038/s41467-023-37994-9", "10.1038/s41467-023-38120-5", "10.1038/s41467-023-38882-y", "10.1038/s41467-023-39020-4", "10.1038/s41467-023-39387-4", "10.1038/s41467-023-39414-4", "10.1038/s41467-023-40633-y", "10.1038/s41467-023-40655-6", "10.1038/s41467-023-40659-2", "10.1038/s41467-023-41511-3", "10.1038/s41467-023-41751-3", "10.1038/s41467-023-42302-6", "10.1038/s41467-023-44384-8", "10.1038/s41467-023-44522-2", "10.1038/s41467-024-44782-6", "10.1038/s41467-024-48571-z", "10.1038/s41467-024-48593-7", "10.1038/s41467-024-48649-8", "10.1038/s41467-024-49198-w", "10.1038/s41477-019-0548-z", "10.1038/s41477-020-00827-4", "10.1038/s41523-020-00208-2", "10.1038/s41523-021-00258-0", "10.1038/s41525-019-0081-z", "10.1038/s41531-024-00723-0", "10.1038/s41536-017-0027-y", "10.1038/s41536-019-0083-6", "10.1038/s41536-020-0098-z", "10.1038/s41536-022-00209-8", "10.1038/s41536-023-00293-4", "10.1038/s41537-019-0071-2", "10.1038/s41551-017-0137-2", "10.1038/s41551-023-01026-0", "10.1038/s41551-023-01032-2", "10.1038/s41551-023-01132-z", "10.1038/s41551-023-01140-z", "10.1038/s41556-018-0039-x", "10.1038/s41556-019-0358-6", "10.1038/s41556-019-0367-5", "10.1038/s41556-019-0450-y", "10.1038/s41556-022-00906-y", "10.1038/s41556-022-00974-0", "10.1038/s41556-022-01026-3", "10.1038/s41556-023-01188-8", "10.1038/s41564-018-0144-4", "10.1038/s41564-019-0456-z", "10.1038/s41564-022-01287-6", "10.1038/s41565-018-0250-8", "10.1038/s41568-020-0273-y", "10.1038/s41569-018-0046-4", "10.1038/s41569-018-0061-5", "10.1038/s41569-023-00914-x", "10.1038/s41571-019-0299-9", "10.1038/s41573-022-00579-0", "10.1038/s41573-023-00709-2", "10.1038/s41574-023-00845-0", "10.1038/s41576-018-0031-0", "10.1038/s41576-018-0089-8", "10.1038/s41576-019-0135-1", "10.1038/s41576-019-0173-8", "10.1038/s41576-020-00295-8", "10.1038/s41576-020-0239-7", "10.1038/s41576-023-00686-7", "10.1038/s41577-021-00519-w", "10.1038/s41579-023-00875-5", "10.1038/s41580-018-0003-4", "10.1038/s41580-018-0045-7", "10.1038/s41580-018-0085-z", "10.1038/s41580-019-0129-z", "10.1038/s41580-019-0168-5", "10.1038/s41580-020-0251-y", "10.1038/s41580-021-00382-6", "10.1038/s41580-021-00392-4", "10.1038/s41580-022-00486-7", "10.1038/s41580-022-00490-x", "10.1038/s41580-022-00507-5", "10.1038/s41580-023-00576-0", "10.1038/s41580-023-00583-1", "10.1038/s41581-021-00394-7", "10.1038/s41581-023-00725-w", "10.1038/s41583-018-0112-2", "10.1038/s41583-019-0244-z", "10.1038/s41583-023-00675-z", "10.1038/s41586-018-0579-z", "10.1038/s41586-018-0666-1", "10.1038/s41586-019-1135-1", "10.1038/s41586-019-1506-7", "10.1038/s41586-019-1658-5", "10.1038/s41586-019-1778-y", "10.1038/s41586-020-03131-5", "10.1038/s41586-020-1974-9", "10.1038/s41586-020-2059-5", "10.1038/s41586-020-2093-3", "10.1038/s41586-020-2164-5", "10.1038/s41586-020-2292-y", "10.1038/s41586-020-2699-5", "10.1038/s41586-020-2825-4", "10.1038/s41586-020-2962-9", "10.1038/s41586-020-3021-2", "10.1038/s41586-021-03210-1", "10.1038/s41586-021-03235-6", "10.1038/s41586-021-03609-w", "10.1038/s41586-021-03670-5", "10.1038/s41586-021-03974-6", "10.1038/s41586-021-04226-3", "10.1038/s41586-021-04234-3", "10.1038/s41586-021-04295-4", "10.1038/s41586-021-04330-4", "10.1038/s41586-021-04393-3", "10.1038/s41586-022-04450-5", "10.1038/s41586-022-04586-4", "10.1038/s41586-022-05060-x", "10.1038/s41586-022-05324-6", "10.1038/s41586-022-05475-6", "10.1038/s41586-023-05896-x", "10.1038/s41586-023-06425-6", "10.1038/s41586-023-06457-y", "10.1038/s41586-023-06496-5", "10.1038/s41586-023-06510-w", "10.1038/s41586-024-07456-3", "10.1038/s41587-019-0249-1", "10.1038/s41587-020-0430-6", "10.1038/s41587-020-0572-6", "10.1038/s41587-021-00915-6", "10.1038/s41587-021-00949-w", "10.1038/s41587-022-01243-z", "10.1038/s41587-022-01410-2", "10.1038/s41587-022-01491-z", "10.1038/s41587-022-01505-w", "10.1038/s41587-022-01532-7", "10.1038/s41587-023-01680-4", "10.1038/s41587-023-01840-6", "10.1038/s41587-023-01915-4", "10.1038/s41587-024-02135-0", "10.1038/s41588-018-0042-y", "10.1038/s41588-018-0069-0", "10.1038/s41588-018-0147-3", "10.1038/s41588-018-0238-1", "10.1038/s41588-019-0372-4", "10.1038/s41588-019-0392-0", "10.1038/s41588-019-0561-1", "10.1038/s41588-019-0564-y", "10.1038/s41588-020-00744-4", "10.1038/s41588-020-00772-0", "10.1038/s41588-020-0647-9", "10.1038/s41588-020-0677-3", "10.1038/s41588-021-00934-8", "10.1038/s41588-022-01016-z", "10.1038/s41588-022-01044-9", "10.1038/s41588-022-01089-w", "10.1038/s41588-023-01434-7", "10.1038/s41589-021-00830-6", "10.1038/s41589-022-01163-8", "10.1038/s41589-023-01304-7", "10.1038/s41590-018-0238-4", "10.1038/s41590-021-00899-0", "10.1038/s41590-022-01289-w", "10.1038/s41591-018-0337-7", "10.1038/s41592-022-01488-1", "10.1038/s41592-023-01997-7", "10.1038/s41592-024-02229-2", "10.1038/s41593-017-0029-5", "10.1038/s41593-018-0173-6", "10.1038/s41593-018-0197-y", "10.1038/s41593-019-0491-3", "10.1038/s41593-020-0685-8", "10.1038/s41593-022-01196-1", "10.1038/s41594-018-0026-8", "10.1038/s41594-018-0102-0", "10.1038/s41594-018-0143-4", "10.1038/s41594-019-0253-7", "10.1038/s41594-019-0306-y", "10.1038/s41594-019-0309-8", "10.1038/s41594-023-00932-w", "10.1038/s41594-023-00936-6", "10.1038/s41594-023-00997-7", "10.1038/s41594-023-01027-2", "10.1038/s41594-023-01033-4", "10.1038/s41596-023-00917-5", "10.1038/s41598-017-00270-0", "10.1038/s41598-017-00325-2", "10.1038/s41598-017-01626-2", "10.1038/s41598-017-02752-7", "10.1038/s41598-017-02930-7", "10.1038/s41598-017-05084-8", "10.1038/s41598-017-07199-4", "10.1038/s41598-017-08471-3", "10.1038/s41598-017-09228-8", "10.1038/s41598-017-10488-7", "10.1038/s41598-017-10954-2", "10.1038/s41598-017-11798-6", "10.1038/s41598-017-12317-3", "10.1038/s41598-017-12828-z", "10.1038/s41598-017-13793-3", "10.1038/s41598-017-14176-4", "10.1038/s41598-017-16497-w", "10.1038/s41598-017-16588-8", "10.1038/s41598-018-22252-6", "10.1038/s41598-018-23318-1", "10.1038/s41598-018-23726-3", "10.1038/s41598-018-24457-1", "10.1038/s41598-018-25054-y", "10.1038/s41598-018-28485-9", "10.1038/s41598-018-36321-3", "10.1038/s41598-018-37618-z", "10.1038/s41598-019-39077-6", "10.1038/s41598-019-39405-w", "10.1038/s41598-019-45457-9", "10.1038/s41598-019-54005-4", "10.1038/s41598-019-54859-8", "10.1038/s41598-020-58842-6", "10.1038/s41598-020-59106-z", "10.1038/s41598-020-61816-3", "10.1038/s41598-020-71447-3", "10.1038/s41598-020-74499-7", "10.1038/s41598-020-78414-y", "10.1038/s41598-021-83469-6", "10.1038/s41598-021-87807-6", "10.1038/s41598-021-89951-5", "10.1038/s41598-021-95398-5", "10.1038/s41598-022-06272-x", "10.1038/s41598-022-08949-9", "10.1038/s41598-022-09740-6", "10.1038/s41598-022-14382-9", "10.1038/s41598-022-16321-0", "10.1038/s41598-022-17776-x", "10.1038/s41598-023-41974-w", "10.1038/s41598-023-47040-9", "10.1038/s41598-024-60809-w", "10.1038/s41684-023-01275-1", "10.1038/s42003-019-0560-x", "10.1038/s42003-021-01926-4", "10.1038/s42003-021-02648-3", "10.1038/s42003-021-02818-3", "10.1038/s42003-021-02963-9", "10.1038/s42003-022-04023-2", "10.1038/s42003-022-04140-y", "10.1038/s42003-023-04987-9", "10.1038/s42003-023-05498-3", "10.1038/s42003-024-05801-w", "10.1038/s42003-024-06037-4", "10.1038/s42255-020-00314-2", "10.1038/s42255-020-0174-0", "10.1038/s42255-021-00518-0", "10.1038/s42255-022-00531-x", "10.1038/s42255-024-01047-2", "10.1038/s42256-020-0149-6", "10.1038/s43018-021-00183-y", "10.1038/s43018-022-00469-9", "10.1038/s43587-021-00103-w", "10.1038/s43587-023-00470-6", "10.1038/s44161-022-00043-7", "10.1038/s44161-024-00431-1", "10.1038/s44320-024-00013-0", "10.1038/s44320-024-00030-z", "10.1038/s44320-024-00035-8", "10.1038/s44320-024-00036-7", "10.1038/s44320-024-00039-4", "10.1038/s44320-024-00040-x", "10.1038/scibx.2009.401", "10.1038/sdata.2016.18", "10.1038/sj.bjp.0703224", "10.1038/sj.bmt.1703015", "10.1038/sj.cdd.4401617", "10.1038/sj.emboj.7601011", "10.1038/sj.emboj.7601015", "10.1038/sj.emboj.7601421", "10.1038/sj.jid.5701178", "10.1038/sj.leu.2404132", "10.1038/sj.onc.1205438", "10.1038/sj.onc.1207200", "10.1038/sj.onc.1207361", "10.1038/sj.onc.1208536", "10.1038/srep04914", "10.1038/srep10341", "10.1038/srep11938", "10.1038/srep12113", "10.1038/srep12622", "10.1038/srep13885", "10.1038/srep16803", "10.1038/srep17454", "10.1038/srep19223", "10.1038/srep19848", "10.1038/srep23789", "10.1038/srep24265", "10.1038/srep26715", "10.1038/srep29390", "10.1038/srep29539", "10.1038/srep29575", "10.1038/srep30711", "10.1038/srep32600", "10.1038/srep33340", "10.1038/srep34013", "10.1038/srep36815", "10.1038/srep42777", "10.1038/srep44948", "10.1038/srep45564", "10.1038/tpj.2015.11", "10.1039/b603816f", "10.1039/c0cp01362e", "10.1039/c3cp54253j", "10.1039/c4ib00052h", "10.1039/c5ra02628h", "10.1039/c6dt00652c", "10.1039/c7ib00113d", "10.1039/c7mt00271h", "10.1039/c7sc05284g", "10.1039/c8cc09823a", "10.1039/c8cp06232c", "10.1039/c8dt01190g", "10.1039/c8nj03972k", "10.1039/c9cp05764a", "10.1039/d0fo02707c", "10.1039/d0lc01204a", "10.1039/d1fo00538c", "10.1039/d1sc04465f", "10.1039/d1se00060h", "10.1039/d1sm00515d", "10.1039/d2sc01793h", "10.1039/d2sc04160j", "10.1039/d3fo01379k", "10.1042/bsr20140172", "10.1042/bsr20190019", "10.1042/bst0381077", "10.1042/bst20130019", "10.1042/bst20180444", "10.1042/bst20180617", "10.1042/bst20200670", "10.1042/ebc20170078", "10.1046/j.1087-0024.2003.00807.x", "10.1046/j.1432-1033.2002.02755.x", "10.1051/jbio/2004198010018", "10.1051/jphys:01975003607-8061700", "10.1055/a-2186-3557", "10.1055/s-0028-1091979", "10.1055/s-0029-1241859", "10.1055/s-0030-1267538", "10.1055/s-0033-1358519", "10.1055/s-0039-1685524", "10.1055/s-0040-1713166", "10.1055/s-0041-1731709", "10.1055/s-0042-105572", "10.1055/s-0043-106050", "10.1055/s-2007-1014268", "10.1056/nejm199610173351601", "10.1056/nejmoa021423", "10.1056/nejmoa043330", "10.1056/nejmoa1914510", "10.1056/nejmoa1914609", "10.1063/1.464397", "10.1063/1.470648", "10.1063/1.4955187", "10.1063/5.0107663", "10.1071/rd04109", "10.1073/pnas.030527597", "10.1073/pnas.0403283101", "10.1073/pnas.0403390101", "10.1073/pnas.0407280102", "10.1073/pnas.0408399102", "10.1073/pnas.0501204102", "10.1073/pnas.050582897", "10.1073/pnas.0506580102", "10.1073/pnas.0510322103", "10.1073/pnas.0511001103", "10.1073/pnas.051624498", "10.1073/pnas.0608382104", "10.1073/pnas.0611620104", "10.1073/pnas.0704154104", "10.1073/pnas.0705197104", "10.1073/pnas.0705600104", "10.1073/pnas.0706532104", "10.1073/pnas.0707001104", "10.1073/pnas.0707258104", "10.1073/pnas.0804549105", "10.1073/pnas.0807576105", "10.1073/pnas.0906823106", "10.1073/pnas.0907464106", "10.1073/pnas.0909519107", "10.1073/pnas.0910915107", "10.1073/pnas.0914399107", "10.1073/pnas.0914843107", "10.1073/pnas.1003585107", "10.1073/pnas.1007883107", "10.1073/pnas.1010506107", "10.1073/pnas.1011711108", "10.1073/pnas.1013098108", "10.1073/pnas.1016071107", "10.1073/pnas.1016719108", "10.1073/pnas.1018075108", "10.1073/pnas.1019055108", "10.1073/pnas.1019732108", "10.1073/pnas.1100903108", "10.1073/pnas.1113483108", "10.1073/pnas.1114017109", "10.1073/pnas.1118157109", "10.1073/pnas.1220497110", "10.1073/pnas.1221279110", "10.1073/pnas.1222783110", "10.1073/pnas.1300627110", "10.1073/pnas.1302950110", "10.1073/pnas.1303625110", "10.1073/pnas.1303906110", "10.1073/pnas.1308596110", "10.1073/pnas.1309810110", "10.1073/pnas.1310980110", "10.1073/pnas.1311705111", "10.1073/pnas.1312545110", "10.1073/pnas.1315983111", "10.1073/pnas.1321745111", "10.1073/pnas.1322512111", "10.1073/pnas.1406110111", "10.1073/pnas.1406508111", "10.1073/pnas.1407097111", "10.1073/pnas.1408301111", "10.1073/pnas.1409728112", "10.1073/pnas.1411701111", "10.1073/pnas.1422490112", "10.1073/pnas.1423643112", "10.1073/pnas.1505317112", "10.1073/pnas.1507125112", "10.1073/pnas.1507710112", "10.1073/pnas.1508831112", "10.1073/pnas.1511209112", "10.1073/pnas.1512081112", "10.1073/pnas.151242898", "10.1073/pnas.1516813113", "10.1073/pnas.1518686112", "10.1073/pnas.1518976113", "10.1073/pnas.1520760112", "10.1073/pnas.1521826113", "10.1073/pnas.1600428113", "10.1073/pnas.1600564113", "10.1073/pnas.1601569113", "10.1073/pnas.1602883113", "10.1073/pnas.1603282113", "10.1073/pnas.1605162113", "10.1073/pnas.1605246113", "10.1073/pnas.1605431113", "10.1073/pnas.1613293114", "10.1073/pnas.1615601114", "10.1073/pnas.1704030114", "10.1073/pnas.1711219114", "10.1073/pnas.1712108114", "10.1073/pnas.1714376115", "10.1073/pnas.1715320114", "10.1073/pnas.1715888115", "10.1073/pnas.1716870115", "10.1073/pnas.1719245115", "10.1073/pnas.1719375115", "10.1073/pnas.1721022115", "10.1073/pnas.1735415100", "10.1073/pnas.1802510115", "10.1073/pnas.1802977115", "10.1073/pnas.1810324115", "10.1073/pnas.1817334116", "10.1073/pnas.1819992116", "10.1073/pnas.1821754116", "10.1073/pnas.1900107116", "10.1073/pnas.1901974116", "10.1073/pnas.1902483116", "10.1073/pnas.1905824116", "10.1073/pnas.1906592116", "10.1073/pnas.1911427117", "10.1073/pnas.1912432116", "10.1073/pnas.1913416117", "10.1073/pnas.1916109117", "10.1073/pnas.1918314117", "10.1073/pnas.1919507117", "10.1073/pnas.1922701117", "10.1073/pnas.2002144117", "10.1073/pnas.2002650117", "10.1073/pnas.2008336117", "10.1073/pnas.2009161117", "10.1073/pnas.2011442117", "10.1073/pnas.230364197", "10.1073/pnas.2310348121", "10.1073/pnas.231476398", "10.1073/pnas.2318619121", "10.1073/pnas.2319384121", "10.1073/pnas.2321711121", "10.1073/pnas.2321919121", "10.1073/pnas.2322688121", "10.1073/pnas.51.5.786", "10.1073/pnas.87.24.9971", "10.1073/pnas.88.21.9558", "10.1073/pnas.89.10.4226", "10.1073/pnas.89.24.12048", "10.1073/pnas.92.12.5510", "10.1073/pnas.92.21.9445", "10.1073/pnas.94.8.3673", "10.1073/pnas.96.12.6745", "10.1073/pnas.96.16.9212", "10.1073/pnas.96.4.1504", "10.1073/pnas.96.8.4482", "10.1073/pnas.97.18.9834", "10.1073/pnas.97.2.799", "10.1073/pnas.97.3.1044", "10.1073/pnas.97.4.1607", "10.1073/pnas.97.7.3450", "10.1074/jbc.273.23.14588", "10.1074/jbc.c113.502310", "10.1074/jbc.m004030200", "10.1074/jbc.m007241200", "10.1074/jbc.m007350200", "10.1074/jbc.m109.042424", "10.1074/jbc.m109.045401", "10.1074/jbc.m109.048694", "10.1074/jbc.m109.064501", "10.1074/jbc.m109.065029", "10.1074/jbc.m109.068130", "10.1074/jbc.m109.077560", "10.1074/jbc.m109.088138", "10.1074/jbc.m109.093658", "10.1074/jbc.m110.117382", "10.1074/jbc.m110.142869", "10.1074/jbc.m110.147843", "10.1074/jbc.m110.197434", "10.1074/jbc.m110.207365", "10.1074/jbc.m111.219733", "10.1074/jbc.m111.250308", "10.1074/jbc.m111.290114", "10.1074/jbc.m111.304261", "10.1074/jbc.m111.314799", "10.1074/jbc.m111.325803", "10.1074/jbc.m111.329938", "10.1074/jbc.m112.371765", "10.1074/jbc.m112.379412", "10.1074/jbc.m112.403550", "10.1074/jbc.m112.436725", "10.1074/jbc.m113.488320", "10.1074/jbc.m113.504654", "10.1074/jbc.m113.546168", "10.1074/jbc.m114.563429", "10.1074/jbc.m114.573477", "10.1074/jbc.m114.586826", "10.1074/jbc.m114.614065", "10.1074/jbc.m114.621110", "10.1074/jbc.m114.634923", "10.1074/jbc.m115.650184", "10.1074/jbc.m115.685867", "10.1074/jbc.m115.691154", "10.1074/jbc.m115.692012", "10.1074/jbc.m116.719955", "10.1074/jbc.m116.748889", "10.1074/jbc.m116.753319", "10.1074/jbc.m116.757112", "10.1074/jbc.m117.781104", "10.1074/jbc.m117.794081", "10.1074/jbc.m117.806422", "10.1074/jbc.m117.809137", "10.1074/jbc.m202394200", "10.1074/jbc.m206563200", "10.1074/jbc.m303972200", "10.1074/jbc.m308654200", "10.1074/jbc.m313571200", "10.1074/jbc.m405579200", "10.1074/jbc.m510964200", "10.1074/jbc.m513642200", "10.1074/jbc.m602438200", "10.1074/jbc.m605468200", "10.1074/jbc.m611353200", "10.1074/jbc.m704618200", "10.1074/jbc.m707329200", "10.1074/jbc.m708820200", "10.1074/jbc.m800046200", "10.1074/jbc.m802187200", "10.1074/jbc.ra118.002333", "10.1074/jbc.ra118.004187", "10.1074/jbc.ra118.005255", "10.1074/jbc.ra119.010567", "10.1074/jbc.ra119.010679", "10.1074/jbc.ra119.012335", "10.1074/jbc.ra120.012613", "10.1074/jbc.ra120.013513", "10.1074/jbc.ra120.013963", "10.1074/jbc.ra120.014236", "10.1074/jbc.rev119.007678", "10.1074/mcp.m400221-mcp200", "10.1074/mcp.ra119.001496", "10.1080/00268976.2013.813594", "10.1080/01677060802298509", "10.1080/019021400408281", "10.1080/01926230701338933", "10.1080/0284186x.2017.1301680", "10.1080/07352680500391337", "10.1080/07391102.2012.755795", "10.1080/07391102.2019.1621210", "10.1080/07391102.2019.1705186", "10.1080/07391102.2020.1839563", "10.1080/09168451.2019.1700775", "10.1080/09553002.2018.1518611", "10.1080/10273660500149869", "10.1080/10408398.2019.1707157", "10.1080/10409230701829110", "10.1080/1061186x.2018.1550649", "10.1080/13102818.2018.1480421", "10.1080/13229400.2022.2034659", "10.1080/13543784.2018.1471132", "10.1080/14647273.2018.1456681", "10.1080/14653240600855905", "10.1080/14728222.2017.1381087", "10.1080/14728222.2020.1766445", "10.1080/14789450.2018.1537788", "10.1080/15376516.2019.1579291", "10.1080/15384047.2015.1108495", "10.1080/15384047.2018.1480287", "10.1080/15384101.2015.1069929", "10.1080/15384101.2015.1086205", "10.1080/15384101.2017.1346759", "10.1080/15384101.2017.1356513", "10.1080/15384101.2019.1658476", "10.1080/15384101.2020.1796037", "10.1080/15476286.2017.1409931", "10.1080/15476286.2019.1676114", "10.1080/15476286.2019.1708548", "10.1080/15476286.2020.1729584", "10.1080/15476286.2021.1881291", "10.1080/15476286.2021.1933732", "10.1080/15548627.2016.1235125", "10.1080/15548627.2017.1319544", "10.1080/15548627.2018.1450020", "10.1080/15548627.2018.1474314", "10.1080/15548627.2018.1501133", "10.1080/15548627.2019.1586246", "10.1080/15548627.2019.1596479", "10.1080/15548627.2020.1731266", "10.1080/15548627.2020.1752471", "10.1080/15548627.2020.1752511", "10.1080/15548627.2020.1848120", "10.1080/17435390.2018.1553252", "10.1080/17435390.2020.1771785", "10.1080/17460441.2020.1682993", "10.1080/17486700802168445", "10.1080/19336896.2018.1500076", "10.1080/19336918.2017.1345413", "10.1080/20013078.2016.1272832", "10.1080/20013078.2018.1535750", "10.1080/20013078.2018.1552059", "10.1080/20013078.2019.1709262", "10.1080/20013078.2020.1793515", "10.1080/21541248.2016.1264352", "10.1080/21541248.2016.1277001", "10.1080/21541264.2020.1796473", "10.1080/21691401.2017.1326927", "10.1080/25765299.2023.2207957", "10.1080/ac.67.1.2146575", "10.1083/jcb.101.3.942", "10.1083/jcb.152.6.1183", "10.1083/jcb.200803129", "10.1083/jcb.200811106", "10.1083/jcb.201112098", "10.1083/jcb.201211138", "10.1083/jcb.201802157", "10.1083/jcb.201809040", "10.1083/jcb.95.1.118", "10.1083/jcb.97.2.329", "10.1084/jem.183.3.1161", "10.1084/jem.20130166", "10.1084/jem.20130168", "10.1085/jgp.201711915", "10.1085/jgp.201711980", "10.1085/jgp.201812066", "10.1085/jgp.201912318", "10.1086/301680", "10.1086/402265", "10.1088/1478-3975/8/3/035007", "10.1088/1478-3975/ab7083", "10.1088/1748-6041/10/3/034004", "10.1088/1748-6041/6/2/025008", "10.1088/2515-7655/abc1cf", "10.1089/153623104773547462", "10.1089/adt.2009.0196", "10.1089/ars.2010.3727", "10.1089/ars.2010.3792", "10.1089/ars.2013.5205", "10.1089/ars.2014.6135", "10.1089/ars.2015.6372", "10.1089/ars.2019.7935", "10.1089/cbr.2012.1241", "10.1089/cell.2009.0063", "10.1089/cell.2013.0012", "10.1089/dna.2016.3342", "10.1089/dna.2018.4427", "10.1089/gtmb.2014.0319", "10.1089/hum.2018.120", "10.1089/omi.2011.0118", "10.1089/omi.2020.0104", "10.1089/scd.2009.0241", "10.1089/scd.2010.0058", "10.1089/scd.2010.0331", "10.1089/scd.2013.0015", "10.1089/scd.2013.0177", "10.1089/scd.2019.0031", "10.1089/ten.2006.0258", "10.1089/ten.tea.2010.0123", "10.1089/ten.teb.2012.0672", "10.1089/ten.teb.2018.0350", "10.1089/ten.teb.2019.0351", "10.1089/zeb.2013.0875", "10.1091/mbc.e05-03-0205", "10.1091/mbc.e05-07-0659", "10.1091/mbc.e09-02-0133", "10.1091/mbc.e09-05-0364", "10.1091/mbc.e11-01-0001", "10.1091/mbc.e13-06-0303", "10.1091/mbc.e14-07-1251", "10.1091/mbc.e14-08-1303", "10.1091/mbc.e17-06-0424", "10.1091/mbc.e20-01-0049", "10.1091/mbc.e22-02-0056", "10.1093/af/vfab053", "10.1093/af/vfab057", "10.1093/ajcn/88.4.1149", "10.1093/annonc/mdx169", "10.1093/bib/bbaa210", "10.1093/bib/bbw139", "10.1093/bioinformatics/18.11.1427", "10.1093/bioinformatics/btad364", "10.1093/bioinformatics/btl158", "10.1093/bioinformatics/btp348", "10.1093/bioinformatics/btp352", "10.1093/bioinformatics/btp616", "10.1093/bioinformatics/btr167", "10.1093/bioinformatics/bts489", "10.1093/bioinformatics/bts565", "10.1093/bioinformatics/bts635", "10.1093/bioinformatics/btt299", "10.1093/bioinformatics/btt656", "10.1093/bioinformatics/btu031", "10.1093/bioinformatics/btu170", "10.1093/bioinformatics/btu638", "10.1093/bioinformatics/btv300", "10.1093/bioinformatics/btv329", "10.1093/bioinformatics/btw299", "10.1093/bioinformatics/btx698", "10.1093/bioinformatics/bty155", "10.1093/bioinformatics/bty265", "10.1093/bioinformatics/bty560", "10.1093/bioinformatics/btz184", "10.1093/bioinformatics/btz305", "10.1093/bioinformatics/btz926", "10.1093/biolinnean/blac073", "10.1093/biomet/93.3.491", "10.1093/biosci/biv084", "10.1093/bjs/znab202.082", "10.1093/brain/awac280", "10.1093/brain/awac466", "10.1093/brain/awad240", "10.1093/brain/awq195", "10.1093/brain/awu373", "10.1093/brain/awu375", "10.1093/brain/awv325", "10.1093/braincomms/fcad208", "10.1093/carcin/bgaa012", "10.1093/cercor/bhaa142", "10.1093/cercor/bhp033", "10.1093/cercor/bhv273", "10.1093/cercor/bhz003", "10.1093/cvr/cvaa034", "10.1093/cvr/cvaa320", "10.1093/cvr/cvab054", "10.1093/cvr/cvab214", "10.1093/cvr/cvr098", "10.1093/cvr/cvv178", "10.1093/cvr/cvz040", "10.1093/cvr/cvz313", "10.1093/database/bas045/439709", "10.1093/database/bau076/2634812", "10.1093/dnares/dsr035", "10.1093/dnares/dst029", "10.1093/ecco-jcc/jjv050", "10.1093/ecco-jcc/jjy036", "10.1093/ecco-jcc/jjz170", "10.1093/eep/dvae002", "10.1093/emboj/16.18.5697", "10.1093/emboj/21.11.2509", "10.1093/emboj/21.5.1092", "10.1093/emboj/cdf310", "10.1093/g3journal/jkab182", "10.1093/g3journal/jkab303", "10.1093/gbe/evab097/40215907/evab097", "10.1093/gbe/evab136", "10.1093/gbe/evt052", "10.1093/gbe/evu030", "10.1093/gbe/evv054", "10.1093/genetics/iyab006", "10.1093/genetics/iyac005", "10.1093/genetics/iyac187", "10.1093/genetics/iyad031", "10.1093/genetics/iyae031", "10.1093/gigascience/giy039", "10.1093/gpbjnl/qzae050/7700745", "10.1093/hmg/4.2.223", "10.1093/hmg/ddaa036", "10.1093/hmg/ddq184", "10.1093/hmg/ddt237", "10.1093/hmg/ddv166", "10.1093/hmg/ddv246", "10.1093/hmg/ddv637", "10.1093/hmg/ddw207", "10.1093/hmg/ddx306", "10.1093/hmg/ddy148", "10.1093/hmg/ddy167", "10.1093/icb/icn077", "10.1093/ilar/ilx013", "10.1093/jb/mvad008", "10.1093/jb/mvj104", "10.1093/jb/mvz011", "10.1093/jnci/dju152", "10.1093/jnci/djz042", "10.1093/jxb/erj075", "10.1093/jxb/ern065", "10.1093/jxb/erw443", "10.1093/mnras/stz3336", "10.1093/molbev/msaa252", "10.1093/molbev/msac118", "10.1093/molbev/msad070", "10.1093/molbev/msae123/7697981", "10.1093/molbev/msi083", "10.1093/molbev/msl182", "10.1093/molbev/msr300", "10.1093/molbev/msv095", "10.1093/molbev/msw011", "10.1093/molbev/msw058", "10.1093/molbev/msx199", "10.1093/molbev/msy131", "10.1093/mp/ssr105", "10.1093/nar/14.16.6345", "10.1093/nar/15.3.1047", "10.1093/nar/20.15.4061", "10.1093/nar/24.12.2352", "10.1093/nar/24.3.470", "10.1093/nar/25.7.1339", "10.1093/nar/28.1.235", "10.1093/nar/28.16.3047", "10.1093/nar/8.20.4613", "10.1093/nar/8.9.1893", "10.1093/nar/gkaa1013", "10.1093/nar/gkaa1070", "10.1093/nar/gkaa1083", "10.1093/nar/gkaa1100", "10.1093/nar/gkaa1216", "10.1093/nar/gkaa218", "10.1093/nar/gkaa657", "10.1093/nar/gkaa665", "10.1093/nar/gkaa674", "10.1093/nar/gkaa795", "10.1093/nar/gkaa913", "10.1093/nar/gkaa917", "10.1093/nar/gkab065", "10.1093/nar/gkab1013", "10.1093/nar/gkab1038", "10.1093/nar/gkab119", "10.1093/nar/gkab223", "10.1093/nar/gkab364", "10.1093/nar/gkab378", "10.1093/nar/gkab415", "10.1093/nar/gkab608", "10.1093/nar/gkab900", "10.1093/nar/gkab953", "10.1093/nar/gkab999", "10.1093/nar/gkac1052", "10.1093/nar/gkac1077", "10.1093/nar/gkac247", "10.1093/nar/gkac275", "10.1093/nar/gkac698", "10.1093/nar/gkac739", "10.1093/nar/gkac833", "10.1093/nar/gkac888", "10.1093/nar/gkac972", "10.1093/nar/gkac993", "10.1093/nar/gkad1005", "10.1093/nar/gkad1078", "10.1093/nar/gkad1215", "10.1093/nar/gkad429", "10.1093/nar/gkad441", "10.1093/nar/gkad841", "10.1093/nar/gkad907", "10.1093/nar/gkae032", "10.1093/nar/gkae085", "10.1093/nar/gkae087", "10.1093/nar/gkae122", "10.1093/nar/gkae124", "10.1093/nar/gkae204", "10.1093/nar/gkae256", "10.1093/nar/gkae256/7642063", "10.1093/nar/gkae520/7697529", "10.1093/nar/gkg509", "10.1093/nar/gkh274", "10.1093/nar/gkh340", "10.1093/nar/gki240", "10.1093/nar/gki387", "10.1093/nar/gki678", "10.1093/nar/gki875", "10.1093/nar/gkl822", "10.1093/nar/gkm392", "10.1093/nar/gkm577", "10.1093/nar/gkm961", "10.1093/nar/gkn059", "10.1093/nar/gkn688", "10.1093/nar/gkn787", "10.1093/nar/gkp122", "10.1093/nar/gkp985", "10.1093/nar/gkq009", "10.1093/nar/gkq1008", "10.1093/nar/gkq1027", "10.1093/nar/gkq347", "10.1093/nar/gkr1044", "10.1093/nar/gkr1061", "10.1093/nar/gkr254", "10.1093/nar/gkr868", "10.1093/nar/gkr974", "10.1093/nar/gks042", "10.1093/nar/gks1115", "10.1093/nar/gks1205", "10.1093/nar/gks658", "10.1093/nar/gkt1112", "10.1093/nar/gkt1330", "10.1093/nar/gkt450", "10.1093/nar/gku085", "10.1093/nar/gku1203", "10.1093/nar/gku347", "10.1093/nar/gku861", "10.1093/nar/gku967", "10.1093/nar/gkv007", "10.1093/nar/gkv035", "10.1093/nar/gkv1017", "10.1093/nar/gkv1103", "10.1093/nar/gkv432", "10.1093/nar/gkv506", "10.1093/nar/gkv589", "10.1093/nar/gkv622", "10.1093/nar/gkv684", "10.1093/nar/gkw092", "10.1093/nar/gkw1040", "10.1093/nar/gkw515", "10.1093/nar/gkw909", "10.1093/nar/gkw929", "10.1093/nar/gkx067", "10.1093/nar/gkx100", "10.1093/nar/gkx1006", "10.1093/nar/gkx1227", "10.1093/nar/gkx247", "10.1093/nar/gkx354", "10.1093/nar/gkx501", "10.1093/nar/gkx735", "10.1093/nar/gky099", "10.1093/nar/gky1032", "10.1093/nar/gky1056", "10.1093/nar/gky1103", "10.1093/nar/gky1120", "10.1093/nar/gky300", "10.1093/nar/gky839", "10.1093/nar/gky901", "10.1093/nar/gky922", "10.1093/nar/gky943", "10.1093/nar/gky955", "10.1093/nar/gky985", "10.1093/nar/gky995", "10.1093/nar/gkz1032", "10.1093/nar/gkz1041", "10.1093/nar/gkz1102", "10.1093/nar/gkz125", "10.1093/nar/gkz383", "10.1093/nar/gkz499", "10.1093/nar/gkz686", "10.1093/nar/gkz742", "10.1093/nar/gkz766", "10.1093/nar/gkz813", "10.1093/nar/gkz973", "10.1093/nar/gkz984", "10.1093/neuonc/noaa248", "10.1093/neuonc/noaa285", "10.1093/neuonc/noab016", "10.1093/neuonc/noac238", "10.1093/neuonc/nos273", "10.1093/neuonc/not151", "10.1093/neuonc/nov151", "10.1093/neuonc/now299", "10.1093/pcp/pcac088", "10.1093/pcp/pcz017", "10.1093/pcp/pcz208", "10.1093/plcell/koac043", "10.1093/plcell/koad124", "10.1093/pnasnexus/pgac049", "10.1093/pnasnexus/pgad088", "10.1093/toxsci/kfae057/7665711", "10.1093/toxsci/kfh243", "10.1093/toxsci/kfh264", "10.1093/toxsci/kfv129", "10.1093/toxsci/kfx247", "10.1094/pdis-08-17-1189-re", "10.1094/phyto-05-17-0171-r", "10.1095/biolreprod.102.010181", "10.1095/biolreprod.108.074708", "10.1095/biolreprod.116.140947", "10.1096/fasebj.25.1_supplement.1051.40", "10.1096/fj.00-0203rev", "10.1096/fj.05-3683com", "10.1096/fj.05-5460rev", "10.1096/fj.06-6926com", "10.1096/fj.07-097857", "10.1096/fj.09-142117", "10.1096/fj.10-159806", "10.1096/fj.201600860r", "10.1096/fj.201601357r", "10.1096/fj.201903040rr", "10.1096/fj.202000273r", "10.1096/fj.202001351", "10.1097/ccm.0000000000002937", "10.1097/fjc.0b013e3181f801e4", "10.1097/hep.0000000000000574", "10.1097/jcp.0000000000000454", "10.1097/md.0000000000019591", "10.1097/prs.0000000000000075", "10.1097/ta.0000000000001765", "10.1097/tp.0000000000003323", "10.1097/txd.0000000000001354", "10.1097/txd.0000000000001508", "10.1098/rsfs.2019.0120", "10.1098/rsif.2012.0835", "10.1098/rsif.2015.0590", "10.1098/rsob.140091", "10.1098/rsob.150130", "10.1098/rsob.170166", "10.1098/rsob.190020", "10.1098/rsob.200121", "10.1098/rspb.1970.0040", "10.1098/rspb.2012.1108", "10.1098/rspb.2017.2746", "10.1098/rsta.2021.0244", "10.1098/rstb.2008.2260", "10.1098/rstb.2009.0305", "10.1098/rstb.2014.0332", "10.1098/rstb.2015.0021", "10.1098/rstb.2016.0356", "10.1098/rstb.2016.0368", "10.1098/rstb.2017.0321", "10.1099/mgen.0.000779", "10.1099/mic.0.000789", "10.1099/mic.0.001367", "10.1099/mic.0.26867-0", "10.1099/vir.0.82898-0", "10.1101/016022", "10.1101/016642", "10.1101/022756", "10.1101/062935", "10.1101/074773", "10.1101/092353", "10.1101/097345", "10.1101/105262", "10.1101/118729", "10.1101/125823", "10.1101/129254", "10.1101/131045", "10.1101/132456", "10.1101/134791", "10.1101/149583", "10.1101/2020.01.09.897868", "10.1101/2020.01.10.901967", "10.1101/2020.02.01.929877", "10.1101/2020.02.16.951954", "10.1101/2020.02.26.966374", "10.1101/2020.02.28.969931", "10.1101/2020.03.06.977876", "10.1101/2020.03.16.993469", "10.1101/2020.03.18.997205", "10.1101/2020.03.21.001917", "10.1101/2020.03.27.012906", "10.1101/2020.04.10.036145", "10.1101/2020.04.14.041962", "10.1101/2020.04.18.047738", "10.1101/2020.05.19.105171", "10.1101/2020.05.21.109835", "10.1101/2020.05.27.120105", "10.1101/2020.06.04.105700", "10.1101/2020.06.10.143560", "10.1101/2020.06.17.157982", "10.1101/2020.06.17.158121", "10.1101/2020.07.07.192732", "10.1101/2020.07.10.196584", "10.1101/2020.07.15.202630", "10.1101/2020.07.18.209270", "10.1101/2020.08.10.243329", "10.1101/2020.08.21.260695", "10.1101/2020.08.29.273565", "10.1101/2020.09.09.290254", "10.1101/2020.09.10.290882", "10.1101/2020.09.11.292003", "10.1101/2020.09.14.295824", "10.1101/2020.09.20.305144", "10.1101/2020.10.09.332734", "10.1101/2020.10.14.339200", "10.1101/2020.11.03.366914", "10.1101/2020.11.13.382168", "10.1101/2020.11.19.387613", "10.1101/2020.11.23.390591", "10.1101/2020.12.10.420257", "10.1101/2020.12.15.422853", "10.1101/2020.12.24.424245", "10.1101/2020.12.29.424636", "10.1101/2021.01.08.425706", "10.1101/2021.01.15.426822", "10.1101/2021.01.15.426889", "10.1101/2021.01.28.428548", "10.1101/2021.02.02.429413", "10.1101/2021.02.11.430724", "10.1101/2021.02.23.432401", "10.1101/2021.03.03.433814", "10.1101/2021.03.09.434676", "10.1101/2021.03.11.434931", "10.1101/2021.03.24.436817", "10.1101/2021.04.09.439243", "10.1101/2021.04.19.440442", "10.1101/2021.04.27.441661", "10.1101/2021.05.04.442244", "10.1101/2021.05.11.443615", "10.1101/2021.05.23.445305", "10.1101/2021.06.02.446729", "10.1101/2021.06.10.447947", "10.1101/2021.06.23.449626", "10.1101/2021.07.15.452338", "10.1101/2021.08.01.454656", "10.1101/2021.08.16.456570", "10.1101/2021.08.23.457434", "10.1101/2021.08.27.457964", "10.1101/2021.09.16.460189", "10.1101/2021.09.21.461258", "10.1101/2021.09.27.461965", "10.1101/2021.10.19.465003", "10.1101/2021.10.21.465275", "10.1101/2021.10.21.465324", "10.1101/2021.10.22.465170", "10.1101/2021.11.01.466817", "10.1101/2021.11.22.21266703", "10.1101/2021.12.03.471080", "10.1101/2021.12.06.471001", "10.1101/2021.12.17.473170", "10.1101/2021.12.25.474155", "10.1101/2022.01.19.476962", "10.1101/2022.01.19.476973", "10.1101/2022.01.25.477620", "10.1101/2022.01.31.478565", "10.1101/2022.02.11.479800", "10.1101/2022.04.19.488785", "10.1101/2022.05.06.490948", "10.1101/2022.05.18.492445", "10.1101/2022.05.24.493236", "10.1101/2022.06.08.495398", "10.1101/2022.06.13.495991", "10.1101/2022.06.27.497613", "10.1101/2022.07.02.498144", "10.1101/2022.07.11.499540", "10.1101/2022.07.14.500084", "10.1101/2022.07.27.501794", "10.1101/2022.08.08.503155", "10.1101/2022.08.12.503700", "10.1101/2022.08.18.504320", "10.1101/2022.08.21.504700", "10.1101/2022.08.22.503746", "10.1101/2022.08.29.505550", "10.1101/2022.09.07.506915", "10.1101/2022.09.07.507048", "10.1101/2022.09.17.508400", "10.1101/2022.10.04.510900", "10.1101/2022.10.11.511764", "10.1101/2022.10.21.22281020", "10.1101/2022.10.24.513561", "10.1101/2022.10.25.513650", "10.1101/2022.10.26.513917", "10.1101/2022.11.22.517520", "10.1101/2022.11.29.518367", "10.1101/2022.11.30.518557", "10.1101/2023.01.04.522734", "10.1101/2023.01.16.524222", "10.1101/2023.01.20.524978", "10.1101/2023.01.28.526043", "10.1101/2023.02.02.526873", "10.1101/2023.02.23.529353", "10.1101/2023.03.15.532673", "10.1101/2023.03.22.533649", "10.1101/2023.03.26.534264", "10.1101/2023.04.06.535889", "10.1101/2023.04.10.536262", "10.1101/2023.04.26.538498", "10.1101/2023.05.19.541497", "10.1101/2023.07.02.547440", "10.1101/2023.07.10.548240", "10.1101/2023.07.25.550509", "10.1101/2023.08.06.552146", "10.1101/2023.08.16.553581", "10.1101/2023.08.17.553768", "10.1101/2023.08.21.554125", "10.1101/2023.09.27.559694", "10.1101/2023.10.13.562183", "10.1101/2023.10.15.23297048", "10.1101/2023.10.19.563173", "10.1101/2023.10.20.23297329", "10.1101/2023.10.20.563376", "10.1101/2023.10.31.565025", "10.1101/2023.11.11.566717", "10.1101/2023.11.15.566604", "10.1101/2023.11.21.568093", "10.1101/2023.11.22.568361", "10.1101/2023.12.01.569674", "10.1101/2023.12.13.571465", "10.1101/2023.12.13.571582", "10.1101/2023.12.18.572169", "10.1101/2023.12.22.573013", "10.1101/2023.12.29.573628", "10.1101/2024.01.08.574649", "10.1101/2024.01.25.576681", "10.1101/2024.03.11.584363", "10.1101/2024.03.12.584464", "10.1101/2024.03.13.584850", "10.1101/2024.03.26.586895", "10.1101/2024.03.28.587175", "10.1101/2024.04.01.587650", "10.1101/2024.04.08.588505", "10.1101/2024.04.17.589867", "10.1101/2024.04.22.590572", "10.1101/2024.04.23.590729", "10.1101/2024.04.29.591747", "10.1101/2024.05.03.592458", "10.1101/2024.05.06.24306801", "10.1101/2024.05.06.592766", "10.1101/2024.05.08.593009", "10.1101/2024.05.08.593203", "10.1101/2024.05.11.592491", "10.1101/2024.05.12.593148", "10.1101/2024.05.13.593888", "10.1101/2024.05.14.594058", "10.1101/2024.05.14.594211", "10.1101/2024.05.17.594556", "10.1101/2024.05.23.595334", "10.1101/2024.05.28.596294", "10.1101/2024.06.02.597057", "10.1101/2024.06.11.598511", "10.1101/2024.06.12.598717", "10.1101/2024.06.21.600150", "10.1101/2024.06.28.601164", "10.1101/216085", "10.1101/229542", "10.1101/247544", "10.1101/257022", "10.1101/264648", "10.1101/292938", "10.1101/341735", "10.1101/364471", "10.1101/384776", "10.1101/406934", "10.1101/422592", "10.1101/430074", "10.1101/462739", "10.1101/472126", "10.1101/498972", "10.1101/528638", "10.1101/530345", "10.1101/530519", "10.1101/539221", "10.1101/547968", "10.1101/564401", "10.1101/583062", "10.1101/588251", "10.1101/608042", "10.1101/609040", "10.1101/611343", "10.1101/612069", "10.1101/616086", "10.1101/628214", "10.1101/632992", "10.1101/637009", "10.1101/639302", "10.1101/658492", "10.1101/684712", "10.1101/688051", "10.1101/702019", "10.1101/716324", "10.1101/746610", "10.1101/778191", "10.1101/799163", "10.1101/801449", "10.1101/834739", "10.1101/837229", "10.1101/840892", "10.1101/848325", "10.1101/861153", "10.1101/cshperspect.a000505", "10.1101/cshperspect.a008094", "10.1101/cshperspect.a010272", "10.1101/cshperspect.a016444", "10.1101/cshperspect.a016709", "10.1101/cshperspect.a020453", "10.1101/cshperspect.a040196", "10.1101/cshperspect.a040717", "10.1101/cshperspect.a040840", "10.1101/cshperspect.a041238", "10.1101/gad.1257105", "10.1101/gad.13.20.2633", "10.1101/gad.1346005", "10.1101/gad.1616208", "10.1101/gad.1640608", "10.1101/gad.1847110", "10.1101/gad.187377.112", "10.1101/gad.241422.114", "10.1101/gad.259358.115", "10.1101/gad.263327.115", "10.1101/gad.269118.115", "10.1101/gad.319889.118", "10.1101/gad.324715.119", "10.1101/gad.333369.119", "10.1101/gad.337196.120", "10.1101/gad.343475.120", "10.1101/gad.344218.120", "10.1101/gad.873501", "10.1101/gad.947102", "10.1101/gr.080531.108", "10.1101/gr.086660.108", "10.1101/gr.094607.109", "10.1101/gr.099655.109", "10.1101/gr.101386.109", "10.1101/gr.120535.111", "10.1101/gr.127712.111", "10.1101/gr.147942.112", "10.1101/gr.179044.114", "10.1101/gr.183699.114", "10.1101/gr.196006.115", "10.1101/gr.207613.116", "10.1101/gr.213066.116", "10.1101/gr.2435604", "10.1101/gr.244491.118", "10.1101/gr.245159.118", "10.1101/gr.246710.118", "10.1101/gr.248658.119", "10.1101/gr.257063.119", "10.1101/gr.262113.120", "10.1101/gr.266551.120", "10.1101/gr.269860.120", "10.1101/gr.271635.120", "10.1101/gr.275944.121", "10.1101/gr.278157.123", "10.1101/gr.5306606", "10.1101/gr.6.3.226", "10.1101/gr.6395807", "10.1101/gr.6406307", "10.1101/gr.641103", "10.1101/gr.7.10.986", "10.1101/gr.963903", "10.1101/lm.028993.112", "10.1101/sqb.2008.73.052", "10.1103/physreve.86.031139", "10.1103/physreve.98.062401", "10.1104/pp.004341", "10.1104/pp.104.052951", "10.1104/pp.105.059477", "10.1104/pp.105.060541", "10.1104/pp.105.070672", "10.1104/pp.108.129817", "10.1104/pp.122.2.389", "10.1104/pp.15.01483", "10.1104/pp.19.00324", "10.1104/pp.19.00957", "10.1105/tpc.107.054718", "10.1105/tpc.107.055046", "10.1105/tpc.107.055053", "10.1105/tpc.112.096107", "10.1105/tpc.12.12.2441", "10.1105/tpc.16.00573", "10.1105/tpc.16.00746", "10.1107/s0907444910007493", "10.1109/34.659930", "10.1109/tcbb.2023.3253049", "10.1109/tmi.2020.3046579", "10.1109/tnsm.2022.3189628", "10.1110/ps.062386106", "10.1110/ps.11701", "10.1111/1346-8138.13897", "10.1111/1462-2920.15200", "10.1111/1462-2920.15749", "10.1111/1541-4337.12688", "10.1111/acel.13431", "10.1111/age.12140", "10.1111/age.12731", "10.1111/ahg.12289", "10.1111/and.14154", "10.1111/anu.12381", "10.1111/apha.12631", "10.1111/apha.12711", "10.1111/are.12081", "10.1111/bjh.15078", "10.1111/bph.15205", "10.1111/bph.15265", "10.1111/cas.13183", "10.1111/cge.14141", "10.1111/cgf.142661", "10.1111/cmi.12532", "10.1111/cmi.13241", "10.1111/cns.12333", "10.1111/cns.13127", "10.1111/cpr.12472", "10.1111/cpr.13106", "10.1111/cts.12988", "10.1111/dgd.12230", "10.1111/dom.12778", "10.1111/dom.13650", "10.1111/eci.13733", "10.1111/exd.14155", "10.1111/exd.14221", "10.1111/exd.14262", "10.1111/febs.12714", "10.1111/febs.12961", "10.1111/febs.14996", "10.1111/febs.15069", "10.1111/febs.15848", "10.1111/febs.16067", "10.1111/gbb.12475", "10.1111/gbb.12736", "10.1111/gtc.12225", "10.1111/his.13334", "10.1111/imcb.12253", "10.1111/imm.12791", "10.1111/imm.12894", "10.1111/imm.13208", "10.1111/imr.12223", "10.1111/j.1365-2249.2003.02380.x", "10.1111/j.1365-2435.2008.01429.x", "10.1111/j.1432-0436.2005.00041.x", "10.1111/j.1432-0436.2006.00147.x", "10.1111/j.1471-4159.2004.02879", "10.1111/j.1471-4159.2010.06990", "10.1111/j.1476-5381.1969.tb08506.x", "10.1111/j.1574-6968.2010.02034.x", "10.1111/j.1600-0625.2009.01063.x", "10.1111/j.1742-4658.2012.08644.x", "10.1111/j.1745-7254.2007.00562.x", "10.1111/j.1749-6632.2009.05030", "10.1111/j.1755-0998.2010.02924.x", "10.1111/j.2517-6161.1995.tb02031.x", "10.1111/jai.12155", "10.1111/jam.13067", "10.1111/jcmm.13060", "10.1111/jcmm.14996", "10.1111/jcmm.15250", "10.1111/jnc.14481", "10.1111/joa.12467", "10.1111/joa.12625", "10.1111/joa.12939", "10.1111/joa.13055", "10.1111/joa.13488", "10.1111/jop.12807", "10.1111/liv.12970", "10.1111/mmi.12571", "10.1111/mmi.14648", "10.1111/nph.14861", "10.1111/nph.15672", "10.1111/nyas.12880", "10.1111/nyas.13384", "10.1111/nyas.14019", "10.1111/obr.12828", "10.1111/pai.13589", "10.1111/pce.13575", "10.1111/php.12930", "10.1111/raq.12105", "10.1111/tpj.13224", "10.1111/tpj.13771", "10.1111/tpj.14338", "10.1111/tpj.14671", "10.1111/tri.13273", "10.1111/tri.13991", "10.1111/wrr.12401", "10.1113/jp276796", "10.11131/2015/101182", "10.1124/dmd.120.000098", "10.1124/dmd.31.11.1288", "10.1124/jpet.103.048751", "10.1124/jpet.105.092403", "10.1124/jpet.107.121111", "10.1124/mol.106.026120", "10.1124/mol.110.069039", "10.1124/mol.111.073171", "10.1124/mol.59.1.83", "10.1124/mol.59.3.514", "10.1124/molpharm.121.000413", "10.1124/pharmrev.123.000841", "10.1124/pr.108.000869", "10.1124/pr.110.003723", "10.1126/sciadv.1501240", "10.1126/sciadv.1600760", "10.1126/sciadv.1600823", "10.1126/sciadv.1601910", "10.1126/sciadv.aao1799", "10.1126/sciadv.aaw0590", "10.1126/sciadv.aaz0571", "10.1126/sciadv.aaz2978", "10.1126/sciadv.aaz4370", "10.1126/sciadv.abb2236", "10.1126/sciadv.abb8941", "10.1126/sciadv.abd9440", "10.1126/sciadv.abf7346", "10.1126/science.1059796", "10.1126/science.1077857", "10.1126/science.1083811", "10.1126/science.1092780", "10.1126/science.1116110", "10.1126/science.1155761", "10.1126/science.1160809", "10.1126/science.1163601", "10.1126/science.1164097", "10.1126/science.1164440", "10.1126/science.1164680", "10.1126/science.1175371", "10.1126/science.1178712", "10.1126/science.1180674", "10.1126/science.1184733", "10.1126/science.1200708", "10.1126/science.1202143", "10.1126/science.1226630", "10.1126/science.123.3191.309", "10.1126/science.1232044", "10.1126/science.1240810", "10.1126/science.1241934", "10.1126/science.1243490", "10.1126/science.1250322", "10.1126/science.1260419", "10.1126/science.1261417", "10.1126/science.1948036", "10.1126/science.1975955", "10.1126/science.2434996", "10.1126/science.270.5234.262", "10.1126/science.271.5254.1423", "10.1126/science.278.5337.474", "10.1126/science.284.5411.143", "10.1126/science.286.5441.964", "10.1126/science.289.5481.920", "10.1126/science.290.5494.1151", "10.1126/science.3798106", "10.1126/science.8178174", "10.1126/science.aaa8381", "10.1126/science.aac6103", "10.1126/science.aad5440", "10.1126/science.aaf2403", "10.1126/science.aaf4006", "10.1126/science.aaf4405", "10.1126/science.aaf5171", "10.1126/science.aai7685", "10.1126/science.aai8132", "10.1126/science.aam5894", "10.1126/science.aam7229", "10.1126/science.aap8809", "10.1126/science.aar2663", "10.1126/science.aar4237", "10.1126/science.aat6720", "10.1126/science.aau6173", "10.1126/science.aaw3242", "10.1126/science.aay6690", "10.1126/science.aaz3418", "10.1126/science.aaz4475", "10.1126/science.abb2153", "10.1126/science.abe9582", "10.1126/science.ade9516", "10.1126/sciimmunol.aax8704", "10.1126/sciimmunol.adh0152", "10.1126/scisignal.2001993", "10.1126/scisignal.2005786", "10.1126/scisignal.3127pe21", "10.1126/scisignal.aac6609", "10.1126/scisignal.aar2566", "10.1126/scisignal.aat0138", "10.1126/scitranslmed.aac5530", "10.1126/scitranslmed.aam8460", "10.1126/scitranslmed.aau5758", "10.1126/scitranslmed.aay6422", "10.1126/scitranslmed.abj0324", "10.1126/stke.3562006re12", "10.1128/9781555819071.ch26", "10.1128/9781555819286.ch12", "10.1128/aac.47.3.869-877.2003", "10.1128/aem.02873-19", "10.1128/aem.70.5.2816-2822.2004", "10.1128/ecosalplus.esp-0009-2015", "10.1128/iai.00302-13", "10.1128/iai.02659-14", "10.1128/jb.00244-13", "10.1128/jb.00361-15", "10.1128/jb.00484-15", "10.1128/jvi.00033-18", "10.1128/jvi.00293-24", "10.1128/jvi.00647-20", "10.1128/jvi.00906-20", "10.1128/jvi.01372-19", "10.1128/jvi.01505-08", "10.1128/jvi.01511-19", "10.1128/jvi.01803-18", "10.1128/jvi.01829-16", "10.1128/jvi.03111-12", "10.1128/jvi.07216-11", "10.1128/mbio.00075-15", "10.1128/mbio.00308-15", "10.1128/mcb.00076-15", "10.1128/mcb.00192-09", "10.1128/mcb.00203-19", "10.1128/mcb.00374-18", "10.1128/mcb.00466-16", "10.1128/mcb.00573-17", "10.1128/mcb.00608-17", "10.1128/mcb.01266-12", "10.1128/mcb.01566-09", "10.1128/mcb.01834-08", "10.1128/mcb.05702-11", "10.1128/mcb.11.10.5005-5015.1991", "10.1128/mcb.20.12.4436-4444.2000", "10.1128/mcb.20.9.3292-3307.2000", "10.1128/mcb.21.11.3725-3737.2001", "10.1128/mcb.21.4.1393-1403.2001", "10.1128/mcb.23.22.8092-8098.2003", "10.1128/mcb.23.4.1349-1357.2003", "10.1128/mcb.24.6.2286-2295.2004", "10.1128/mcb.24.9.4049-4064.2004", "10.1128/mcb.25.21.9198-9208.2005", "10.1128/mcb.26.7.2869-2876.2006", "10.1128/mcb.9.12.5289-5297.1989", "10.1128/microbiolspec.ame-0011-2019", "10.1128/microbiolspec.gpp3-0060-2019", "10.1128/mmbr.00030-06", "10.1128/mmbr.61.2.239-261.1997", "10.1128/mmbr.62.2.465-503.1998", "10.1134/s0006297920070044", "10.1134/s0022093022060151", "10.1134/s0026893320010057", "10.1134/s1021443717030153", "10.1134/s1990747815050165", "10.1136/annrheumdis-2011-200745", "10.1136/annrheumdis-2018-214991", "10.1136/bmjdrc-2019-000816", "10.1136/bmjopen-2021-049231", "10.1136/gut.2009.192732", "10.1136/gut.2010.235804", "10.1136/jim-2016-000120.2", "10.1136/jim-2019-001160", "10.1136/jitc-2022-006070", "10.1139/apnm-2018-0729", "10.1139/bcb-2016-0210", "10.1139/bcb-2017-0219", "10.1139/o11-034", "10.1139/z2012-013", "10.1142/9789813144279_0005", "10.1142/9789813207813_0015", "10.1142/9789813235533_0034", "10.1142/s0129054116500143", "10.1146/annurev-biochem-013118-111902", "10.1146/annurev-biochem-062917-012655", "10.1146/annurev-biochem-071320-112701", "10.1146/annurev-bioeng-071516-044546", "10.1146/annurev-biophys-051013-023008", "10.1146/annurev-cancerbio-030617-050519", "10.1146/annurev-cellbio-021623-124009", "10.1146/annurev-cellbio-031320-101827", "10.1146/annurev-cellbio-092910-154237", "10.1146/annurev-cellbio-100617-062719", "10.1146/annurev-cellbio-100617-062826", "10.1146/annurev-cellbio-100814-125353", "10.1146/annurev-cellbio-100818-125512", "10.1146/annurev-cellbio-101512-122326", "10.1146/annurev-genet-022620-101840", "10.1146/annurev-genet-110711-155550", "10.1146/annurev-genet-111212-133232", "10.1146/annurev-genet-112618-043830", "10.1146/annurev-genom-091212-153431", "10.1146/annurev-immunol-042718-041717", "10.1146/annurev-med-043010-193843", "10.1146/annurev-neuro-060909-153244", "10.1146/annurev-nutr-071811-150726", "10.1146/annurev-nutr-071813-105336", "10.1146/annurev-pathmechdis-012418-012927", "10.1146/annurev-physchem-040214-121637", "10.1146/annurev-physiol-020518-114640", "10.1146/annurev-physiol-022516-034227", "10.1146/annurev-physiol-022516-034234", "10.1146/annurev-physiol-042222-024724", "10.1146/annurev-phyto-020620-121925", "10.1146/annurev-virology-092917-043544", "10.1146/annurev.bb.20.060191.002543", "10.1146/annurev.bb.23.060194.002545", "10.1146/annurev.bi.64.070195.000433", "10.1146/annurev.biochem.052308.093131", "10.1146/annurev.biophys.20.1.539", "10.1146/annurev.cellbio.20.010403.095114", "10.1146/annurev.immunol.20.091101.091806", "10.1146/annurev.immunol.25.022106.141623", "10.1146/annurev.micro.55.1.165", "10.1146/annurev.micro.60.080805.142300", "10.1146/annurev.physiol.65.092101.142659", "10.1146/annurev.psych.58.110405.085542", "10.1152/ajpcell.00296.2010", "10.1152/ajpcell.1984.247.3.c125", "10.1152/ajpcell.2001.281.6.c1971", "10.1152/ajpendo.00012.2015", "10.1152/ajpendo.00040.2002", "10.1152/ajpendo.00219.2016", "10.1152/ajpendo.00513.2004", "10.1152/ajpendo.00594.2014", "10.1152/ajpgi.00049.2020", "10.1152/ajpgi.90463.2008", "10.1152/ajpheart.00335.2017", "10.1152/ajpheart.00755.2010", "10.1152/ajplung.00167.2015", "10.1152/ajplung.00173.2020", "10.1152/ajprenal.00031.2020", "10.1152/ajprenal.00071.2006", "10.1152/ajprenal.00183.2005", "10.1152/ajprenal.00245.2004", "10.1152/ajprenal.00304.2002", "10.1152/ajprenal.00330.2019", "10.1152/ajprenal.00360.2003", "10.1152/ajprenal.00364.2017", "10.1152/ajprenal.00535.2015", "10.1152/ajprenal.1988.254.6.f879", "10.1152/japplphysiol.00571.2010", "10.1152/physiolgenomics.00026.2017", "10.1152/physiolgenomics.00090.2015", "10.1152/physiolgenomics.00098.2014", "10.1152/physiolgenomics.00114.2018", "10.1152/physiolgenomics.00145.2012", "10.1152/physiolgenomics.00172.2012", "10.1152/physiolgenomics.00230.2004", "10.1152/physiolgenomics.00234.2007", "10.1152/physrev.00019.2015", "10.1152/physrev.00028.2011", "10.1152/physrev.00043.2003", "10.1152/physrev.2000.80.4.1523", "10.1155/2007/26839", "10.1155/2009/952734", "10.1155/2010/386484", "10.1155/2012/672536", "10.1155/2012/805827", "10.1155/2012/876234", "10.1155/2013/148297", "10.1155/2013/152786", "10.1155/2014/147648", "10.1155/2014/232946", "10.1155/2014/306573", "10.1155/2014/787956", "10.1155/2014/896513", "10.1155/2015/392476", "10.1155/2015/838652", "10.1155/2016/6193419", "10.1155/2017/3738071", "10.1155/2017/7659462", "10.1155/2018/4835491", "10.1155/2019/2343867", "10.1155/2019/2626374", "10.1155/2019/2749173", "10.1155/2019/8186091", "10.1155/2019/8547846", "10.1155/2020/3592425", "10.1155/2020/6267924", "10.1155/2020/8871476", "10.1157/13098927", "10.1158/0008-5472.can-05-2508", "10.1158/0008-5472.can-06-3316", "10.1158/0008-5472.can-09-3871", "10.1158/0008-5472.can-10-1516", "10.1158/0008-5472.can-12-2233", "10.1158/0008-5472.can-12-2838", "10.1158/0008-5472.can-12-3859", "10.1158/0008-5472.can-13-3415", "10.1158/0008-5472.can-14-3321", "10.1158/0008-5472.can-15-1646", "10.1158/0008-5472.can-16-0258", "10.1158/0008-5472.can-16-0881", "10.1158/0008-5472.can-18-3962", "10.1158/0008-5472.can-19-0789", "10.1158/0008-5472.can-19-3934", "10.1158/0008-5472.can-20-1847", "10.1158/0008-5472.can-20-4107", "10.1158/0008-5472.can-21-1456", "10.1158/1078-0432.ccr-08-1056", "10.1158/1078-0432.ccr-10-3431", "10.1158/1078-0432.ccr-14-2728", "10.1158/1078-0432.ccr-14-3096", "10.1158/1078-0432.ccr-15-0965", "10.1158/1078-0432.ccr-15-2461", "10.1158/1078-0432.ccr-15-3115", "10.1158/1078-0432.ccr-20-0844", "10.1158/1535-7163.mct-12-0460", "10.1158/1541-7786.mcr-08-0005", "10.1158/1541-7786.mcr-11-0126", "10.1158/1541-7786.mcr-14-0533", "10.1158/1541-7786.mcr-19-0359", "10.1158/2159-8290.cd-12-0418", "10.1158/2326-6066.cir-17-0026", "10.1158/2326-6066.cir-18-0508", "10.1158/2643-3230.bcd-20-0164", "10.1159/000085580", "10.1159/000100426", "10.1159/000328974", "10.1159/000369668", "10.1159/000485765", "10.1159/000492697", "10.1159/000493964", "10.1159/000495646", "10.1159/000508759", "10.1159/000511117", "10.1159/000522341", "10.11606/d.9.2011.tde-20122011-083623", "10.11607/jomi.te28", "10.1161/atvbaha.113.301335", "10.1161/atvbaha.113.302070", "10.1161/atvbaha.118.310703", "10.1161/atvbaha.119.312754", "10.1161/circ.138.suppl_1.16997", "10.1161/circ.144.suppl_1.12777", "10.1161/circresaha.111.246504", "10.1161/circresaha.111.249243", "10.1161/circresaha.116.303614", "10.1161/circresaha.117.309681", "10.1161/circresaha.118.312589", "10.1161/circresaha.118.313280", "10.1161/circresaha.119.316167", "10.1161/circresaha.120.315929", "10.1161/circulationaha.110.958033", "10.1161/circulationaha.117.028252", "10.1161/circulationaha.117.029343", "10.1161/circulationaha.117.030801", "10.1161/circulationaha.118.034165", "10.1161/circulationaha.118.034545", "10.11620/ijob.2018.43.1.043", "10.1167/iovs.05-0536", "10.1167/iovs.06-0254", "10.1167/iovs.11-8361", "10.1167/iovs.15-17458", "10.1167/iovs.61.12.8", "10.1167/iovs.61.5.33", "10.1167/tvst.12.2.16", "10.1172/jci.insight.127902", "10.1172/jci.insight.130056", "10.1172/jci.insight.154113", "10.1172/jci125771", "10.1172/jci13505", "10.1172/jci166884", "10.1172/jci166954", "10.1172/jci173116", "10.1172/jci27490", "10.1172/jci30117", "10.1172/jci30487", "10.1172/jci39088", "10.1172/jci62129", "10.1172/jci65179", "10.1172/jci66514", "10.1172/jci72181", "10.1172/jci77435", "10.1172/jci81129", "10.1172/jci94158", "10.1172/jci94624", "10.1176/appi.ajp.2021.21010095", "10.1177/0022034520916130", "10.1177/0271678x20960033", "10.1177/0300985810379431", "10.1177/1010428317707374", "10.1177/1073858420914509", "10.1177/1087057110374991", "10.1177/1535370215609694", "10.1177/1535370218816657", "10.1177/1536012118795952", "10.1177/154405910708600212", "10.1177/1758834014530023", "10.1177/1758835919833519", "10.1177/1759091420949680", "10.1177/1947601911405841", "10.1177/1947601912473477", "10.1177/2040622319891558", "10.1182/blood-2004-07-2958", "10.1182/blood-2009-07-235028", "10.1182/blood-2016-11-754382", "10.1182/blood-2017-01-761320", "10.1182/blood-2019-129173", "10.1182/blood.2021012366", "10.1182/blood.2021015024", "10.1182/blood.v68.6.1348.1348", "10.1186/1471-2105-10-421", "10.1186/1471-2105-14-128", "10.1186/1471-2105-4-35", "10.1186/1471-2121-10-51", "10.1186/1471-213x-10-27", "10.1186/1471-213x-13-8", "10.1186/1471-213x-7-63", "10.1186/1471-2148-10-56", "10.1186/1471-2156-14-58", "10.1186/1471-2164-10-628", "10.1186/1471-2164-11-409", "10.1186/1471-2164-11-491", "10.1186/1471-2164-14-36", "10.1186/1471-2164-14-406", "10.1186/1471-2164-14-553", "10.1186/1471-2164-15-12", "10.1186/1471-2164-15-120", "10.1186/1471-2164-15-220", "10.1186/1471-2164-15-451", "10.1186/1471-2164-15-839", "10.1186/1471-2164-15-883", "10.1186/1471-2164-7-120", "10.1186/1471-2164-7-179", "10.1186/1471-2164-9-49", "10.1186/1471-2202-14-156", "10.1186/1471-2202-15-12", "10.1186/1471-2210-8-s1-a9", "10.1186/1471-2407-8-286", "10.1186/1475-2859-10-63", "10.1186/1476-4598-12-74", "10.1186/1476-4598-13-232", "10.1186/1479-5876-10-148", "10.1186/1479-5876-12-135", "10.1186/1479-7364-5-3-170", "10.1186/1710-1492-6-s3-p18", "10.1186/1741-7007-10-88", "10.1186/1741-7007-4-16", "10.1186/1741-7015-10-80", "10.1186/1744-9081-8-24", "10.1186/1745-6150-5-56", "10.1186/1745-6150-6-35", "10.1186/1745-6150-9-16", "10.1186/1755-1536-5-s1-s16", "10.1186/1756-0500-5-50", "10.1186/1868-7083-6-12", "10.1186/2040-2392-5-21", "10.1186/2040-2392-5-43", "10.1186/2050-6511-15-27", "10.1186/bcr2257", "10.1186/bcr2777", "10.1186/bcr2865", "10.1186/bcr3067", "10.1186/bcr3077", "10.1186/bcr3443", "10.1186/bcr3483", "10.1186/gb-2006-7-11-r105", "10.1186/gb-2007-8-3-r35", "10.1186/gb-2007-8-4-r51", "10.1186/gb-2009-10-3-r25", "10.1186/gb-2010-11-3-r25", "10.1186/gb-2011-12-8-r76", "10.1186/gb-2012-13-10-r87", "10.1186/gb-2012-13-3-r19", "10.1186/gb-2012-13-9-r53", "10.1186/gb-2013-14-12-r147", "10.1186/gb-2013-14-9-r95", "10.1186/gb-2014-15-2-r29", "10.1186/gb-2014-15-5-r82", "10.1186/s10020-018-0042-5", "10.1186/s10020-022-00478-5", "10.1186/s11658-022-00329-5", "10.1186/s11658-022-00409-6", "10.1186/s11658-023-00445-w", "10.1186/s12576-020-00773-y", "10.1186/s12859-020-03545-y", "10.1186/s12859-022-04614-0", "10.1186/s12859-022-04674-2", "10.1186/s12859-022-05075-1", "10.1186/s12860-021-00390-6", "10.1186/s12861-014-0050-9", "10.1186/s12861-016-0107-z", "10.1186/s12862-014-0262-4", "10.1186/s12862-015-0534-7", "10.1186/s12863-022-01089-z", "10.1186/s12864-015-1223-z", "10.1186/s12864-015-1730-y", "10.1186/s12864-015-1979-1", "10.1186/s12864-015-2044-9", "10.1186/s12864-015-2317-3", "10.1186/s12864-016-2565-x", "10.1186/s12864-016-2727-x", "10.1186/s12864-016-2947-0", "10.1186/s12864-017-3673-y", "10.1186/s12864-017-3796-1", "10.1186/s12864-017-3958-1", "10.1186/s12864-018-4443-1", "10.1186/s12864-018-4660-7", "10.1186/s12864-018-4764-0", "10.1186/s12864-018-4826-3", "10.1186/s12864-018-5124-9", "10.1186/s12864-018-5278-5", "10.1186/s12864-019-5551-2", "10.1186/s12864-019-5921-9", "10.1186/s12864-019-5976-7", "10.1186/s12864-019-6220-1", "10.1186/s12864-019-6338-1", "10.1186/s12864-019-6367-9", "10.1186/s12864-020-06777-7", "10.1186/s12864-020-06962-8", "10.1186/s12864-020-06966-4", "10.1186/s12864-020-07268-5", "10.1186/s12864-020-6526-z", "10.1186/s12864-020-6586-0", "10.1186/s12864-021-07440-5", "10.1186/s12864-021-07890-x", "10.1186/s12864-021-07904-8", "10.1186/s12864-022-09054-x", "10.1186/s12864-023-09283-8", "10.1186/s12864-023-09678-7", "10.1186/s12864-024-10537-2", "10.1186/s12867-019-0141-z", "10.1186/s12885-015-1869-6", "10.1186/s12885-016-2405-z", "10.1186/s12885-017-3936-7", "10.1186/s12885-018-4546-8", "10.1186/s12885-019-5554-z", "10.1186/s12885-019-5643-z", "10.1186/s12885-022-10062-z", "10.1186/s12894-017-0201-y", "10.1186/s12896-014-0092-x", "10.1186/s12902-021-00789-4", "10.1186/s12915-018-0556-x", "10.1186/s12915-021-00968-8", "10.1186/s12915-021-01057-6", "10.1186/s12915-022-01277-4", "10.1186/s12915-023-01644-9", "10.1186/s12915-024-01829-w", "10.1186/s12915-024-01843-y", "10.1186/s12915-024-01869-2", "10.1186/s12915-024-01900-6", "10.1186/s12920-018-0437-8", "10.1186/s12920-020-00749-2", "10.1186/s12929-019-0519-8", "10.1186/s12929-019-0558-1", "10.1186/s12929-020-0624-8", "10.1186/s12929-021-00734-6", "10.1186/s12929-023-00977-5", "10.1186/s12929-024-01013-w", "10.1186/s12935-020-01450-1", "10.1186/s12935-022-02452-x", "10.1186/s12935-023-02955-1", "10.1186/s12935-023-03191-3", "10.1186/s12935-023-03197-x", "10.1186/s12943-018-0862-5", "10.1186/s12943-018-0897-7", "10.1186/s12943-018-0915-9", "10.1186/s12943-019-0963-9", "10.1186/s12943-019-0965-7", "10.1186/s12943-019-1000-8", "10.1186/s12943-020-01158-w", "10.1186/s12943-020-01161-1", "10.1186/s12943-020-01194-6", "10.1186/s12943-020-01199-1", "10.1186/s12943-020-01233-2", "10.1186/s12943-020-01239-w", "10.1186/s12943-021-01356-0", "10.1186/s12943-021-01399-3", "10.1186/s12943-022-01572-2", "10.1186/s12943-022-01596-8", "10.1186/s12943-024-02005-y", "10.1186/s12944-017-0473-y", "10.1186/s12944-018-0854-x", "10.1186/s12951-024-02482-9", "10.1186/s12957-021-02246-x", "10.1186/s12958-019-0468-9", "10.1186/s12964-016-0146-x", "10.1186/s12964-016-0156-8", "10.1186/s12964-020-00544-7", "10.1186/s12964-020-00558-1", "10.1186/s12964-023-01048-w", "10.1186/s12964-023-01121-4", "10.1186/s12967-015-0503-3", "10.1186/s12967-016-0884-y", "10.1186/s12967-019-1998-9", "10.1186/s12967-021-03181-x", "10.1186/s12974-020-01811-7", "10.1186/s12974-020-1725-8", "10.1186/s12974-021-02194-z", "10.1186/s12985-016-0551-1", "10.1186/s12985-023-01968-6", "10.1186/s12987-024-00544-6", "10.1186/s13014-021-01775-9", "10.1186/s13018-023-04251-0", "10.1186/s13024-016-0096-1", "10.1186/s13041-020-00685-3", "10.1186/s13041-021-00747-0", "10.1186/s13041-021-00865-9", "10.1186/s13041-021-00874-8", "10.1186/s13045-016-0362-2", "10.1186/s13045-017-0526-8", "10.1186/s13045-022-01224-4", "10.1186/s13046-017-0533-1", "10.1186/s13046-019-1159-2", "10.1186/s13046-019-1205-0", "10.1186/s13046-019-1359-9", "10.1186/s13046-019-1516-1", "10.1186/s13046-021-02041-2", "10.1186/s13046-021-02067-6", "10.1186/s13046-021-02200-5", "10.1186/s13046-023-02787-x", "10.1186/s13058-016-0713-5", "10.1186/s13058-018-1041-8", "10.1186/s13058-020-01276-9", "10.1186/s13058-020-01312-8", "10.1186/s13058-020-01324-4", "10.1186/s13059-014-0418-y", "10.1186/s13059-014-0550-8", "10.1186/s13059-015-0768-0", "10.1186/s13059-016-0932-1", "10.1186/s13059-017-1278-z", "10.1186/s13059-018-1426-0", "10.1186/s13059-018-1435-z", "10.1186/s13059-018-1596-9", "10.1186/s13059-018-1611-1", "10.1186/s13059-019-1726-z", "10.1186/s13059-019-1849-2", "10.1186/s13059-020-01992-7", "10.1186/s13059-020-02006-2", "10.1186/s13059-020-02030-2", "10.1186/s13059-020-02156-3", "10.1186/s13059-020-02257-z", "10.1186/s13059-020-02258-y", "10.1186/s13059-020-1931-9", "10.1186/s13059-020-1948-0", "10.1186/s13059-021-02435-7", "10.1186/s13059-021-02518-5", "10.1186/s13059-021-02557-y", "10.1186/s13059-022-02634-w", "10.1186/s13064-016-0063-0", "10.1186/s13064-016-0075-9", "10.1186/s13068-019-1410-2", "10.1186/s13071-019-3615-4", "10.1186/s13071-023-05837-7", "10.1186/s13072-015-0043-3", "10.1186/s13072-017-0129-1", "10.1186/s13072-017-0142-4", "10.1186/s13072-018-0220-2", "10.1186/s13072-019-0302-9", "10.1186/s13072-019-0308-3", "10.1186/s13073-014-0077-3", "10.1186/s13073-016-0328-6", "10.1186/s13073-019-0709-8", "10.1186/s13073-020-00756-z", "10.1186/s13073-020-00776-9", "10.1186/s13100-019-0168-1", "10.1186/s13148-015-0105-1", "10.1186/s13148-017-0391-x", "10.1186/s13148-020-00857-x", "10.1186/s13148-020-00867-9", "10.1186/s13287-015-0116-z", "10.1186/s13287-017-0601-7", "10.1186/s13287-017-0611-5", "10.1186/s13287-018-1069-9", "10.1186/s13287-018-1120-x", "10.1186/s13287-019-1163-7", "10.1186/s13287-019-1203-3", "10.1186/s13287-019-1208-y", "10.1186/s13287-019-1212-2", "10.1186/s13287-019-1366-y", "10.1186/s13287-019-1382-y", "10.1186/s13287-020-01621-x", "10.1186/s13287-020-01669-9", "10.1186/s13287-021-02614-0", "10.1186/s13287-022-02918-9", "10.1186/s13287-023-03574-3", "10.1186/s13578-021-00689-z", "10.1186/s13578-021-00691-5", "10.1186/s13578-022-00844-0", "10.1186/s13619-021-00075-7", "10.1186/s13619-022-00155-2", "10.1186/s13619-023-00162-x", "10.1186/s40104-020-00494-7", "10.1186/s40104-021-00639-2", "10.1186/s40104-022-00710-6", "10.1186/s40104-022-00779-z", "10.1186/s40104-024-00996-8", "10.1186/s40164-022-00370-2", "10.1186/s40199-016-0154-9", "10.1186/s40246-022-00375-2", "10.1186/s40478-019-0857-5", "10.1186/s40478-021-01190-x", "10.1186/s40478-021-01226-2", "10.1186/s40662-020-00217-z", "10.1186/s40779-023-00480-w", "10.1186/s40779-023-00484-6", "10.1186/s40880-018-0301-4", "10.1186/s41232-023-00265-7", "10.1186/s42826-020-00068-8", "10.1186/s43556-020-00001-4", "10.1189/jlb.0413196", "10.1189/jlb.1112588", "10.1189/jlb.1mr0616-272r", "10.1189/jlb.2ri0616-250r", "10.1194/jlr.m000976", "10.1194/jlr.m039867", "10.1194/jlr.m046607", "10.1194/jlr.m056812", "10.1194/jlr.m062372", "10.1194/jlr.m090928", "10.1194/jlr.m300450-jlr200", "10.1194/jlr.m700050-jlr200", "10.1194/jlr.ra119000316", "10.1200/jco.1990.8.1.103", "10.1200/jco.1992.10.7.1049", "10.1200/jco.20.00147", "10.1208/s12248-012-9391-0", "10.1208/s12248-018-0248-z", "10.1210/edrv-15-3-391", "10.1210/en.2002-0024", "10.1210/en.2009-0955", "10.1210/en.2009-1224", "10.1210/en.2011-1905", "10.1210/en.2018-00272", "10.1210/endocr/bqab241", "10.1210/er.2009-0008", "10.1210/me.2004-0051", "10.1210/me.2015-1258", "10.1210/mend.24.2.9993", "10.1211/0022357055272", "10.1212/nxg.0000000000000436", "10.1214/11-aoas466", "10.1242/bio.20133772", "10.1242/dev.00122", "10.1242/dev.004895", "10.1242/dev.007138", "10.1242/dev.00921", "10.1242/dev.01155", "10.1242/dev.013995", "10.1242/dev.016816", "10.1242/dev.01947", "10.1242/dev.019547", "10.1242/dev.02357", "10.1242/dev.02847", "10.1242/dev.030759", "10.1242/dev.049189", "10.1242/dev.067041", "10.1242/dev.067900", "10.1242/dev.068098", "10.1242/dev.068601", "10.1242/dev.075861", "10.1242/dev.078634", "10.1242/dev.078873", "10.1242/dev.079756", "10.1242/dev.082099", "10.1242/dev.095323", "10.1242/dev.097295", "10.1242/dev.110437", "10.1242/dev.113449", "10.1242/dev.116.4.1033", "10.1242/dev.128934", "10.1242/dev.129.9.2141", "10.1242/dev.131797", "10.1242/dev.132910", "10.1242/dev.139774", "10.1242/dev.148494", "10.1242/dev.151381", "10.1242/dev.152207", "10.1242/dev.155077", "10.1242/dev.160325", "10.1242/dev.163162", "10.1242/dev.165480", "10.1242/dev.167502", "10.1242/dev.167692", "10.1242/dev.175893", "10.1242/dev.178632", "10.1242/dev.186569", "10.1242/dev.190637", "10.1242/dev.191189", "10.1242/dev.193193", "10.1242/dev.193219", "10.1242/dev.200028", "10.1242/dev.200133", "10.1242/dev.201319", "10.1242/dev.201412", "10.1242/dmm.000117", "10.1242/dmm.001420", "10.1242/dmm.012138", "10.1242/dmm.023440", "10.1242/dmm.028258", "10.1242/dmm.036491", "10.1242/jcs.02941", "10.1242/jcs.132985", "10.1242/jcs.145854", "10.1242/jcs.214379", "10.1242/jcs.222406", "10.1242/jeb.00299", "10.1242/jeb.038976", "10.1242/jeb.079319", "10.1242/jeb.146449", "10.1259/bjr.20160879", "10.1261/rna.035899.112", "10.1261/rna.054809.115", "10.1261/rna.056531.116", "10.1261/rna.057299.116", "10.1261/rna.065623.118", "10.1261/rna.065730.118", "10.1261/rna.078444.120", "10.1261/rna.078804.121", "10.1261/rna.079620.123", "10.1261/rna.079623.123", "10.1261/rna.2905811", "10.12659/msm.904720", "10.12659/msm.940118", "10.12688/f1000research.20904.1", "10.12688/f1000research.21809.1", "10.12688/wellcomeopenres.15711.1", "10.1271/bbb.120563", "10.1289/ehp35", "10.1360/ssv-2023-0312", "10.1369/0022155415595841", "10.1369/0022155415627679", "10.1371/journal.pbio.0040309", "10.1371/journal.pbio.1000112", "10.1371/journal.pbio.1001181", "10.1371/journal.pbio.1001586", "10.1371/journal.pbio.1001676", "10.1371/journal.pbio.2000949", "10.1371/journal.pbio.2004880", "10.1371/journal.pbio.3000363", "10.1371/journal.pbio.3000453", "10.1371/journal.pbio.3000862", "10.1371/journal.pbio.3000976", "10.1371/journal.pbio.3000982", "10.1371/journal.pbio.3001683", "10.1371/journal.pbio.3001777", "10.1371/journal.pbio.3001940", "10.1371/journal.pbio.3001962", "10.1371/journal.pcbi.0020058.eor", "10.1371/journal.pcbi.0020089", "10.1371/journal.pcbi.1000252", "10.1371/journal.pcbi.1000734", "10.1371/journal.pcbi.1000905", "10.1371/journal.pcbi.1002195", "10.1371/journal.pcbi.1002246", "10.1371/journal.pcbi.1003210", "10.1371/journal.pcbi.1003926", "10.1371/journal.pcbi.1004276", "10.1371/journal.pcbi.1004494", "10.1371/journal.pcbi.1005708", "10.1371/journal.pcbi.1005752", "10.1371/journal.pcbi.1007618.r005", "10.1371/journal.pcbi.1008145", "10.1371/journal.pcbi.1008991", "10.1371/journal.pcbi.1009284", "10.1371/journal.pcbi.1009422", "10.1371/journal.pcbi.1010870", "10.1371/journal.pgen.0020221", "10.1371/journal.pgen.1000191", "10.1371/journal.pgen.1000511", "10.1371/journal.pgen.1000548", "10.1371/journal.pgen.1000650", "10.1371/journal.pgen.1000944", "10.1371/journal.pgen.1002379", "10.1371/journal.pgen.1002513", "10.1371/journal.pgen.1002688", "10.1371/journal.pgen.1002863", "10.1371/journal.pgen.1003039", "10.1371/journal.pgen.1003618", "10.1371/journal.pgen.1003738", "10.1371/journal.pgen.1003888", "10.1371/journal.pgen.1004153", "10.1371/journal.pgen.1004392", "10.1371/journal.pgen.1004452", "10.1371/journal.pgen.1005359", "10.1371/journal.pgen.1005474", "10.1371/journal.pgen.1005696", "10.1371/journal.pgen.1005948", "10.1371/journal.pgen.1006231", "10.1371/journal.pgen.1006415", "10.1371/journal.pgen.1008333", "10.1371/journal.pgen.1008494", "10.1371/journal.pgen.1009466", "10.1371/journal.pgen.1009729", "10.1371/journal.pgen.1009890", "10.1371/journal.pgen.1009906", "10.1371/journal.pgen.1009951", "10.1371/journal.pgen.1010885", "10.1371/journal.pntd.0003404", "10.1371/journal.pntd.0009652", "10.1371/journal.pone.0002147", "10.1371/journal.pone.0002410", "10.1371/journal.pone.0003329", "10.1371/journal.pone.0004159", "10.1371/journal.pone.0008066", "10.1371/journal.pone.0009062", "10.1371/journal.pone.0011720", "10.1371/journal.pone.0013741", "10.1371/journal.pone.0015624", "10.1371/journal.pone.0016350", "10.1371/journal.pone.0017940", "10.1371/journal.pone.0019680", "10.1371/journal.pone.0020894", "10.1371/journal.pone.0020954", "10.1371/journal.pone.0021800", "10.1371/journal.pone.0021825", "10.1371/journal.pone.0025350", "10.1371/journal.pone.0025368", "10.1371/journal.pone.0028674", "10.1371/journal.pone.0029597", "10.1371/journal.pone.0029999", "10.1371/journal.pone.0030355", "10.1371/journal.pone.0031499", "10.1371/journal.pone.0034167", "10.1371/journal.pone.0037055", "10.1371/journal.pone.0038953", "10.1371/journal.pone.0039094", "10.1371/journal.pone.0048093", "10.1371/journal.pone.0051205", "10.1371/journal.pone.0054243", "10.1371/journal.pone.0055153", "10.1371/journal.pone.0055665", "10.1371/journal.pone.0066273", "10.1371/journal.pone.0074350", "10.1371/journal.pone.0077060", "10.1371/journal.pone.0081469", "10.1371/journal.pone.0086102", "10.1371/journal.pone.0090905", "10.1371/journal.pone.0095026", "10.1371/journal.pone.0097697", "10.1371/journal.pone.0098532", "10.1371/journal.pone.0107353", "10.1371/journal.pone.0107890", "10.1371/journal.pone.0110799", "10.1371/journal.pone.0111309", "10.1371/journal.pone.0111604", "10.1371/journal.pone.0115779", "10.1371/journal.pone.0117244", "10.1371/journal.pone.0117818", "10.1371/journal.pone.0119473", "10.1371/journal.pone.0119781", "10.1371/journal.pone.0121397", "10.1371/journal.pone.0122665", "10.1371/journal.pone.0123942", "10.1371/journal.pone.0125526", "10.1371/journal.pone.0130028", "10.1371/journal.pone.0131241", "10.1371/journal.pone.0131673", "10.1371/journal.pone.0132136", "10.1371/journal.pone.0133862", "10.1371/journal.pone.0134677", "10.1371/journal.pone.0140467", "10.1371/journal.pone.0142529", "10.1371/journal.pone.0142931", "10.1371/journal.pone.0145688", "10.1371/journal.pone.0145843", "10.1371/journal.pone.0147806", "10.1371/journal.pone.0149917", "10.1371/journal.pone.0150294", "10.1371/journal.pone.0155811", "10.1371/journal.pone.0156313", "10.1371/journal.pone.0158317", "10.1371/journal.pone.0167439", "10.1371/journal.pone.0172687", "10.1371/journal.pone.0180697", "10.1371/journal.pone.0181091", "10.1371/journal.pone.0184434", "10.1371/journal.pone.0191432", "10.1371/journal.pone.0194716", "10.1371/journal.pone.0194896", "10.1371/journal.pone.0196349", "10.1371/journal.pone.0199699", "10.1371/journal.pone.0202693", "10.1371/journal.pone.0203290", "10.1371/journal.pone.0215894", "10.1371/journal.pone.0217733", "10.1371/journal.pone.0219938", "10.1371/journal.pone.0225180", "10.1371/journal.pone.0231962", "10.1371/journal.pone.0232206", "10.1371/journal.pone.0247380", "10.1371/journal.pone.0248996", "10.1371/journal.pone.0277110", "10.1371/journal.pone.0285337", "10.1371/journal.pone.0296176", "10.1371/journal.ppat.1004863", "10.1371/journal.ppat.1006473", "10.1371/journal.ppat.1009100", "10.1371/journal.ppat.1010116", "10.1373/clinchem.2008.112797", "10.1385/bter:77:2:159", "10.1387/ijdb.051995vq", "10.1387/ijdb.072414es", "10.1387/ijdb.072476lm", "10.1387/ijdb.103158sp", "10.1387/ijdb.180042es", "10.14201/gredos.123044", "10.14202/vetworld.2020.2736-2742", "10.14348/molcells.2014.0150", "10.14440/jbm.2020.296", "10.14737/journal.aavs/2016/4.1.35.45", "10.14791/btrt.2022.10.f-2499", "10.14806/ej.17.1.200", "10.1504/ijcbdd.2010.038396", "10.1507/endocrj.ej21-0005", "10.1517/14728214.2014.974550", "10.1517/14728222.2011.645805", "10.1517/14740338.4.3.421", "10.15174/au.2004.240", "10.15212/hod-2023-0001", "10.1523/eneuro.0270-19.2019", "10.1523/jneurosci.0103-19.2019", "10.1523/jneurosci.0125-20.2020", "10.1523/jneurosci.0126-07.2007", "10.1523/jneurosci.0237-22.2022", "10.1523/jneurosci.0319-06.2006", "10.1523/jneurosci.0343-08.2008", "10.1523/jneurosci.0399-07.2007", "10.1523/jneurosci.0576-11.2011", "10.1523/jneurosci.0882-15.2015", "10.1523/jneurosci.0915-09.2009", "10.1523/jneurosci.1109-17.2017", "10.1523/jneurosci.1281-20.2020", "10.1523/jneurosci.1322-14.2014", "10.1523/jneurosci.1444-16.2016", "10.1523/jneurosci.15-07-04927.1995", "10.1523/jneurosci.1807-07.2007", "10.1523/jneurosci.1860-14.2014", "10.1523/jneurosci.19-12-04705.1999", "10.1523/jneurosci.1924-05.2005", "10.1523/jneurosci.2195-18.2019", "10.1523/jneurosci.22-06-02142.2002", "10.1523/jneurosci.22-15-06309.2002", "10.1523/jneurosci.2267-14.2014", "10.1523/jneurosci.2324-05.2005", "10.1523/jneurosci.2370-17.2018", "10.1523/jneurosci.2385-04.2004", "10.1523/jneurosci.2453-12.2013", "10.1523/jneurosci.2831-08.2008", "10.1523/jneurosci.3034-04.2005", "10.1523/jneurosci.3222-05.2007", "10.1523/jneurosci.3476-13.2014", "10.1523/jneurosci.3655-14.2015", "10.1523/jneurosci.4050-14.2015", "10.1523/jneurosci.4082-14.2015", "10.1523/jneurosci.4178-07.2008", "10.1523/jneurosci.4219-10.2011", "10.1523/jneurosci.4488-13.2014", "10.1523/jneurosci.4800-10.2011", "10.1523/jneurosci.4962-14.2015", "10.1523/jneurosci.5786-12.2013", "10.1523/jneurosci.6005-11.2012", "10.1525/abt.2017.79.3.208", "10.15252/embj.201489478", "10.15252/embj.201592651", "10.15252/embj.201592655", "10.15252/embj.201593701", "10.15252/embj.201694902", "10.15252/embj.201798004", "10.15252/embj.2018100164", "10.15252/embj.2018100293", "10.15252/embj.2019101468", "10.15252/embj.2020104708", "10.15252/embr.201947789", "10.15252/msb.20156492", "10.15252/msb.20188214", "10.15252/msb.20198871", "10.1530/eje.0.1460129", "10.1530/erc-21-0208", "10.1530/jme-16-0082", "10.1530/joe-16-0424", "10.1530/rep-12-0134", "10.1530/rep-14-0653", "10.1530/rep-22-0112", "10.1534/g3.113.008466", "10.1534/g3.113.008680", "10.1534/g3.120.401644", "10.1534/genetics.104.037051", "10.1534/genetics.107.078584", "10.1534/genetics.111.134429", "10.1534/genetics.112.143370", "10.1534/genetics.113.154393", "10.1534/genetics.115.185298", "10.1534/genetics.115.185322", "10.1534/genetics.117.202291", "10.1534/genetics.119.302523", "10.1534/genetics.119.302919", "10.1534/genetics.166.3.1253", "10.15368/theses.2016.156", "10.1556/amicr.56.2009.1.1", "10.1586/1744666x.2015.1085306", "10.1586/edm.10.5", "10.1590/1678-4685-gmb-2018-0212", "10.1590/1678-4685-gmb-2020-0253", "10.1590/s0001-37652001000300007", "10.1593/tlo.13640", "10.1609/aaai.v31i1.10657", "10.1631/jzus.b2100187", "10.1634/stemcells.2005-0239", "10.1634/stemcells.2006-0082", "10.1634/stemcells.2006-0398", "10.1634/stemcells.2007-0194", "10.1634/stemcells.2007-0284", "10.1634/theoncologist.12-7-774", "10.1667/0033-7587(2002)157[0008:iorrgi]2.0.co;2", "10.1677/jme.1.02131", "10.1677/joe-10-0120", "10.1681/asn.2006121304", "10.1681/asn.2014070705", "10.1681/asn.2018090912", "10.1681/asn.2020050580", "10.1681/asn.2020071003", "10.1681/asn.20223311s1619b", "10.17077/etd.jlcehkjn", "10.17305/bjbms.2015.39", "10.17760/d20439204", "10.17760/d20621627", "10.17918/etd-3005", "10.18130/v39k7m", "10.18297/etd/2947", "10.18388/abp.2011_2258", "10.18388/abp.2012_2136", "10.18632/aging.103165", "10.18632/aging.202316", "10.18632/aging.205661", "10.18632/oncoscience.146", "10.18632/oncotarget.10628", "10.18632/oncotarget.11972", "10.18632/oncotarget.12218", "10.18632/oncotarget.15494", "10.18632/oncotarget.18474", "10.18632/oncotarget.18666", "10.18632/oncotarget.20152", "10.18632/oncotarget.20503", "10.18632/oncotarget.21201", "10.18632/oncotarget.23225", "10.18632/oncotarget.25041", "10.18632/oncotarget.25500", "10.18632/oncotarget.2780", "10.18632/oncotarget.3376", "10.18632/oncotarget.4695", "10.18632/oncotarget.5822", "10.18632/oncotarget.6453", "10.18632/oncotarget.7410", "10.18632/oncotarget.7910", "10.18632/oncotarget.8674", "10.18632/oncotarget.9717", "10.1902/jop.2017.170042", "10.20517/cdr.2020.107", "10.20944/preprints202011.0357.v1", "10.20944/preprints202104.0036.v1", "10.20944/preprints202312.0428.v1", "10.21037/atm-21-4222", "10.21037/jtd-22-1437", "10.21037/jtd-22-1464", "10.21037/sci.2017.09.01", "10.2108/zsj.21.275", "10.21203/rs.2.24386/v1", "10.21203/rs.3.rs-104001/v1", "10.21203/rs.3.rs-109124/v1", "10.21203/rs.3.rs-132578/v1", "10.21203/rs.3.rs-132578/v2", "10.21203/rs.3.rs-1352348/v1", "10.21203/rs.3.rs-1372810/v1", "10.21203/rs.3.rs-1560115/v1", "10.21203/rs.3.rs-1856488/v1", "10.21203/rs.3.rs-1860841/v1", "10.21203/rs.3.rs-1945876/v1", "10.21203/rs.3.rs-2487613/v1", "10.21203/rs.3.rs-2625838/v1", "10.21203/rs.3.rs-2780914/v1", "10.21203/rs.3.rs-2986484/v1", "10.21203/rs.3.rs-3003549/v1", "10.21203/rs.3.rs-3135449/v1", "10.21203/rs.3.rs-3788577/v1", "10.21203/rs.3.rs-465103/v1", "10.21203/rs.3.rs-519038/v1", "10.21203/rs.3.rs-599203/v1", "10.21203/rs.3.rs-752322/v1", "10.21203/rs.3.rs-836574/v1", "10.21203/rs.3.rs-850482/v1", "10.21203/rs.3.rs-91975/v1", "10.2144/02324bm01", "10.2147/bctt.s24976", "10.2147/ccid.s196364", "10.2147/ccid.s50046", "10.2147/hp.s235967", "10.2147/ott.s180534", "10.2147/ott.s183191", "10.2165/00002018-200528010-00003", "10.2174/092986610791112666", "10.2174/0929867043364351", "10.2174/092986708786848523", "10.2174/138161212802481255", "10.2174/138920207780368141", "10.2174/138920306778018025", "10.2174/156652411795243414", "10.2174/157489110791233522", "10.2174/1874838401205010019", "10.2174/22123970mte0emdyq1", "10.21769/bioprotoc.2540", "10.21769/bioprotoc.3696", "10.21769/bioprotoc.4881", "10.2183/pjab.85.217", "10.21873/anticanres.11979", "10.21873/anticanres.13531", "10.21873/invivo.13543", "10.21873/invivo.13553", "10.2210/pdb1b7c/pdb", "10.2210/pdb5v2m/pdb", "10.2210/pdb7ac8/pdb", "10.2217/cns-2016-0015", "10.2217/epi.14.83", "10.2217/fvl-2020-0163", "10.2217/fvl.15.31", "10.2217/pgs.13.26", "10.22271/tpi.2023.v12.i2e.18437", "10.2307/1439568", "10.2337/db06-0477", "10.2337/db07-1383", "10.2337/db13-0384", "10.2337/db16-0058", "10.2337/db19-0795", "10.2337/figshare.12272627", "10.2340/00015555-2949", "10.2353/ajpath.2006.051250", "10.2353/ajpath.2007.060455", "10.2460/javma.2003.222.1582", "10.2478/aoas-2021-0061", "10.25006/ia.5.s1-a3.1", "10.25148/etd.fidc006573", "10.2527/jas2016.94supplement445a", "10.26226/morressier.5912d9e8d462b80292386b6f", "10.26226/morressier.5ebd45acffea6f735881b148", "10.26434/chemrxiv-2022-nk6h3", "10.26434/chemrxiv-2023-sqvhq-v2", "10.26434/chemrxiv.12156747.v1", "10.26434/chemrxiv.12476369", "10.26434/chemrxiv.8258900.v1", "10.26434/chemrxiv.9922301", "10.26434/chemrxiv.9922301.v2", "10.26508/lsa.202101080", "10.26508/lsa.202101114", "10.26686/wgtn.17145686", "10.2741/2408", "10.2741/301", "10.2741/4891/4891", "10.2903/j.efsa.2017.4667", "10.3109/03602530903286476", "10.3109/03602532.2016.1167902", "10.3109/10409237509102551", "10.3109/10409238.2013.840259", "10.3109/10409238709082546", "10.3109/10715762.2014.929122", "10.3109/10799893.2015.1030412", "10.3109/14653240903204322", "10.3109/14756366.2016.1161620", "10.3109/9781616310059", "10.31390/gradschool_dissertations.1623", "10.31557/apjcp.2018.19.12.3415", "10.31557/apjcp.2021.22.2.341", "10.31557/apjcp.2023.24.11.3969", "10.3168/jds.2011-4711", "10.3168/jds.2017-13554", "10.3168/jds.2018-16141", "10.3168/jds.2019-16451", "10.3168/jds.2019-16821", "10.3168/jds.2022-22757", "10.3168/jds.2023-23821", "10.31871/wjir.13.2.11", "10.31979/etd.aewf-46m6", "10.3233/jhd-200448", "10.32388/lglk0x", "10.32388/zk3ald", "10.32657/10356/53512", "10.32920/ryerson.14658099.v1", "10.33004/reumatizam-supp-70-1-59", "10.3322/caac.21590", "10.3324/haematol.2018.191684", "10.33549/physiolres.933730", "10.33549/physiolres.933731", "10.33552/ann.2019.03.000572", "10.33590/emjdiabet/10313731", "10.33612/diss.208557735", "10.3389/fbioe.2018.00046", "10.3389/fbioe.2020.00070", "10.3389/fbioe.2024.1346810", "10.3389/fcell.2019.00110", "10.3389/fcell.2020.00338", "10.3389/fcell.2020.00455", "10.3389/fcell.2020.00509", "10.3389/fcell.2020.00782", "10.3389/fcell.2020.571359", "10.3389/fcell.2020.576654", "10.3389/fcell.2020.579943", "10.3389/fcell.2020.581697", "10.3389/fcell.2020.595178", "10.3389/fcell.2020.608484", "10.3389/fcell.2021.648384", "10.3389/fcell.2021.656849", "10.3389/fcell.2021.662583", "10.3389/fcell.2021.679662", "10.3389/fcell.2021.681122", "10.3389/fcell.2021.682414", "10.3389/fcell.2021.691060", "10.3389/fcell.2021.709823", "10.3389/fcell.2021.767051", "10.3389/fcell.2021.799772", "10.3389/fcell.2021.803141", "10.3389/fcell.2021.826248", "10.3389/fcell.2022.621261", "10.3389/fcell.2022.772230", "10.3389/fcell.2022.800594", "10.3389/fcell.2022.819044", "10.3389/fcell.2022.849298", "10.3389/fcell.2022.852752", "10.3389/fcell.2022.875318", "10.3389/fcell.2022.921503", "10.3389/fcell.2023.1240289", "10.3389/fcell.2023.1254313", "10.3389/fcell.2024.1357589", "10.3389/fcell.2024.1417242", "10.3389/fchem.2016.00038", "10.3389/fchem.2020.624765", "10.3389/fcimb.2017.00254", "10.3389/fcimb.2021.742189", "10.3389/fcimb.2022.811123", "10.3389/fcimb.2022.854242", "10.3389/fcomp.2022.777728", "10.3389/fcvm.2019.00032", "10.3389/fcvm.2019.00107", "10.3389/fcvm.2021.692856", "10.3389/fcvm.2021.744615", "10.3389/fcvm.2021.817304", "10.3389/fcvm.2022.831561", "10.3389/fendo.2022.1010092", "10.3389/fendo.2022.1063929", "10.3389/fendo.2022.943576", "10.3389/fendo.2023.1134154", "10.3389/fgene.2015.00048", "10.3389/fgene.2015.00302", "10.3389/fgene.2016.00014", "10.3389/fgene.2018.00169", "10.3389/fgene.2018.00482", "10.3389/fgene.2019.00309", "10.3389/fgene.2019.00405", "10.3389/fgene.2019.00987", "10.3389/fgene.2019.01013", "10.3389/fgene.2019.01219", "10.3389/fgene.2020.00158", "10.3389/fgene.2020.00700", "10.3389/fgene.2020.550515", "10.3389/fgene.2020.599548", "10.3389/fgene.2020.613636", "10.3389/fgene.2021.633132", "10.3389/fgene.2021.676182", "10.3389/fgene.2022.828292", "10.3389/fgene.2022.832677", "10.3389/fgene.2022.863253", "10.3389/fgene.2022.884348", "10.3389/fgene.2022.942747", "10.3389/fgene.2022.993416", "10.3389/fgene.2023.881638", "10.3389/fimmu.2014.00442", "10.3389/fimmu.2015.00405", "10.3389/fimmu.2017.01991", "10.3389/fimmu.2018.00738", "10.3389/fimmu.2018.02565", "10.3389/fimmu.2018.02927", "10.3389/fimmu.2019.00202", "10.3389/fimmu.2019.03099", "10.3389/fimmu.2020.01501", "10.3389/fimmu.2020.632239", "10.3389/fimmu.2021.626255", "10.3389/fimmu.2021.667221", "10.3389/fimmu.2021.713294", "10.3389/fimmu.2021.717324", "10.3389/fimmu.2021.719037", "10.3389/fimmu.2022.777113", "10.3389/fimmu.2022.840002", "10.3389/fimmu.2022.873330", "10.3389/fimmu.2022.988130", "10.3389/fimmu.2023.1111547", "10.3389/fimmu.2023.1162607", "10.3389/fimmu.2023.1265969", "10.3389/fimmu.2024.1322256", "10.3389/fmars.2022.1015419", "10.3389/fmars.2022.783278", "10.3389/fmed.2021.718986", "10.3389/fmed.2021.808719", "10.3389/fmicb.2014.00021", "10.3389/fmicb.2017.02049", "10.3389/fmicb.2018.00665", "10.3389/fmicb.2019.01965", "10.3389/fmicb.2019.02351", "10.3389/fmicb.2019.02520", "10.3389/fmicb.2020.01576", "10.3389/fmicb.2020.574923", "10.3389/fmicb.2020.600093", "10.3389/fmicb.2022.811932", "10.3389/fmicb.2022.990169", "10.3389/fmicb.2022.990478", "10.3389/fmicb.2023.1166148", "10.3389/fmicb.2023.1291761", "10.3389/fmicb.2023.1294790", "10.3389/fmolb.2017.00057", "10.3389/fmolb.2019.00080", "10.3389/fmolb.2019.00160", "10.3389/fmolb.2020.569293", "10.3389/fmolb.2021.659388", "10.3389/fmolb.2021.662620", "10.3389/fmolb.2022.845013", "10.3389/fmolb.2022.871499", "10.3389/fmolb.2022.977812", "10.3389/fnagi.2016.00173", "10.3389/fnana.2012.00006", "10.3389/fnana.2018.00097", "10.3389/fnbeh.2020.00058", "10.3389/fncel.2013.00254", "10.3389/fncel.2015.00063", "10.3389/fncel.2015.00070", "10.3389/fncel.2015.00467", "10.3389/fncel.2016.00201", "10.3389/fncel.2019.00316", "10.3389/fncel.2019.00381", "10.3389/fncel.2020.00121", "10.3389/fncel.2021.569031", "10.3389/fncel.2021.671932", "10.3389/fncel.2021.673782", "10.3389/fncel.2021.794675", "10.3389/fncel.2022.988732", "10.3389/fneur.2022.952493", "10.3389/fneur.2022.986504", "10.3389/fnins.2015.00114", "10.3389/fnins.2015.00447", "10.3389/fnins.2017.00078", "10.3389/fnins.2020.00098", "10.3389/fnins.2020.00521", "10.3389/fnins.2020.592947", "10.3389/fnins.2021.659601", "10.3389/fnins.2022.739201", "10.3389/fnins.2022.887929", "10.3389/fnins.2022.895607", "10.3389/fnmol.2017.00171", "10.3389/fnmol.2017.00281", "10.3389/fnmol.2018.00039", "10.3389/fnmol.2018.00375", "10.3389/fnmol.2019.00226", "10.3389/fnmol.2022.974208", "10.3389/fnmol.2023.1143024", "10.3389/fnmol.2023.1200523", "10.3389/fnmol.2024.1398026", "10.3389/fnsys.2022.768201", "10.3389/fnut.2023.1101341", "10.3389/fonc.2017.00020", "10.3389/fonc.2017.00065", "10.3389/fonc.2018.00222", "10.3389/fonc.2019.00125", "10.3389/fonc.2019.00290", "10.3389/fonc.2019.00927", "10.3389/fonc.2019.01412", "10.3389/fonc.2019.01448", "10.3389/fonc.2020.577420", "10.3389/fonc.2021.611660", "10.3389/fonc.2021.785111", "10.3389/fonc.2022.1079402", "10.3389/fonc.2022.881252", "10.3389/fonc.2022.906670", "10.3389/fonc.2022.942064", "10.3389/fonc.2022.952371", "10.3389/fonc.2023.1153463", "10.3389/fonc.2023.1272883", "10.3389/fphar.2015.00235", "10.3389/fphar.2019.00561", "10.3389/fphar.2020.00217", "10.3389/fphar.2020.00358", "10.3389/fphar.2020.579265", "10.3389/fphar.2021.614673", "10.3389/fphar.2021.658040", "10.3389/fphar.2022.1012552", "10.3389/fphar.2022.1042420", "10.3389/fphar.2022.908079", "10.3389/fphar.2022.914146", "10.3389/fphar.2023.1125871", "10.3389/fphar.2023.1130747", "10.3389/fphar.2023.1304194", "10.3389/fphar.2024.1376005", "10.3389/fphys.2013.00088", "10.3389/fphys.2015.00418", "10.3389/fphys.2017.00943", "10.3389/fphys.2017.01026", "10.3389/fphys.2019.00817", "10.3389/fphys.2020.00075", "10.3389/fphys.2020.567675", "10.3389/fphys.2021.729452", "10.3389/fphys.2021.774095", "10.3389/fphys.2022.919439", "10.3389/fphys.2022.923185", "10.3389/fpls.2011.00109", "10.3389/fpls.2017.01789", "10.3389/fpls.2022.866054", "10.3389/fpls.2022.881879", "10.3389/frai.2023.1128153", "10.3389/frnar.2024.1389104", "10.3389/fspas.2018.00012", "10.3389/fspas.2022.794932", "10.3389/fvets.2020.00390", "10.3389/fvets.2020.581137", "10.3389/fvets.2021.609180", "10.3389/fvets.2021.625347", "10.3390/ani11082255", "10.3390/ani12010065", "10.3390/ani13020203", "10.3390/antibiotics11050653", "10.3390/antiox13020220", "10.3390/antiox13070768", "10.3390/antiox8070218", "10.3390/bioengineering10020136", "10.3390/bioengineering7020059", "10.3390/biology10030184", "10.3390/biology10040272", "10.3390/biology10060454", "10.3390/biom10020262", "10.3390/biom10081093", "10.3390/biom10091204", "10.3390/biom10101429", "10.3390/biom11050717", "10.3390/biom11081126", "10.3390/biom11081182", "10.3390/biom12070929", "10.3390/biom12111659", "10.3390/biom13020345", "10.3390/biom13060978", "10.3390/biom13071135", "10.3390/biom13101546", "10.3390/biom14050514", "10.3390/biom5042247", "10.3390/biomedicines10030581", "10.3390/biomedicines11010143", "10.3390/biomedicines11030750", "10.3390/biomedicines6010016", "10.3390/biomedicines7010015", "10.3390/brainsci9020039", "10.3390/cancers10070237", "10.3390/cancers11030375", "10.3390/cancers11050646", "10.3390/cancers11050729", "10.3390/cancers11070921", "10.3390/cancers11101618", "10.3390/cancers12061382", "10.3390/cancers12071811", "10.3390/cancers12071902", "10.3390/cancers12102895", "10.3390/cancers12113469", "10.3390/cancers12123498", "10.3390/cancers12123696", "10.3390/cancers13010040", "10.3390/cancers13030419", "10.3390/cancers13133219", "10.3390/cancers13153716", "10.3390/cancers13225845", "10.3390/cancers13225860", "10.3390/cancers14020381", "10.3390/cancers14030726", "10.3390/cancers14081878", "10.3390/cancers14122866", "10.3390/cancers14153602", "10.3390/cancers14163996", "10.3390/cancers15092568", "10.3390/cancers15133458", "10.3390/cancers15184522", "10.3390/cancers16071313", "10.3390/cancers16091651", "10.3390/cancers5020639", "10.3390/cells10040886", "10.3390/cells10061276", "10.3390/cells10092273", "10.3390/cells10092340", "10.3390/cells10102674", "10.3390/cells10112972", "10.3390/cells10123455", "10.3390/cells11081373", "10.3390/cells12010073", "10.3390/cells12091252", "10.3390/cells12091283", "10.3390/cells6020013", "10.3390/cells7090137", "10.3390/cells7120230", "10.3390/cells8020187", "10.3390/cells8030233", "10.3390/cells8030277", "10.3390/cells8040307", "10.3390/cells8050512", "10.3390/cells8070727", "10.3390/cells8090959", "10.3390/cells8101236", "10.3390/cells8121483", "10.3390/cells9010189", "10.3390/cells9020413", "10.3390/cells9030548", "10.3390/cells9030647", "10.3390/cells9061518", "10.3390/cells9071601", "10.3390/cells9102247", "10.3390/cells9122662", "10.3390/cimb44050149", "10.3390/cimb44070222", "10.3390/diagnostics10121065", "10.3390/diagnostics12020431", "10.3390/e24010107", "10.3390/e24060819", "10.3390/e26060481", "10.3390/epigenomes4010005", "10.3390/epigenomes7040029", "10.3390/foods11213329", "10.3390/genes10020091", "10.3390/genes10020116", "10.3390/genes10090683", "10.3390/genes11101139", "10.3390/genes12020140", "10.3390/genes12020300", "10.3390/genes12071012", "10.3390/genes12071075", "10.3390/genes12111727", "10.3390/genes13010086", "10.3390/genes13020340", "10.3390/genes13040625", "10.3390/genes13112050", "10.3390/genes13122195", "10.3390/genes13122322", "10.3390/genes4010001", "10.3390/genes6041183", "10.3390/genes6041201", "10.3390/genes7090055", "10.3390/genes8110301", "10.3390/ijerph110505006", "10.3390/ijerph17103746", "10.3390/ijerph18073575", "10.3390/ijms13022481", "10.3390/ijms140611560", "10.3390/ijms17010003", "10.3390/ijms17020171", "10.3390/ijms17040547", "10.3390/ijms17121984", "10.3390/ijms18010155", "10.3390/ijms18102209", "10.3390/ijms18112387", "10.3390/ijms19030770", "10.3390/ijms19072113", "10.3390/ijms19082158", "10.3390/ijms19113445", "10.3390/ijms19113466", "10.3390/ijms19123738", "10.3390/ijms20010103", "10.3390/ijms20020238", "10.3390/ijms20051061", "10.3390/ijms20071629", "10.3390/ijms20123010", "10.3390/ijms20153836", "10.3390/ijms20204995", "10.3390/ijms20215310", "10.3390/ijms20246140", "10.3390/ijms21031102", "10.3390/ijms21041356", "10.3390/ijms21041495", "10.3390/ijms21072563", "10.3390/ijms21144890", "10.3390/ijms21165848", "10.3390/ijms21165866", "10.3390/ijms21165913", "10.3390/ijms21176102", "10.3390/ijms21186466", "10.3390/ijms21207571", "10.3390/ijms21207661", "10.3390/ijms21228559", "10.3390/ijms21228590", "10.3390/ijms21228711", "10.3390/ijms21249556", "10.3390/ijms21249557", "10.3390/ijms22020828", "10.3390/ijms22020922", "10.3390/ijms22041593", "10.3390/ijms22041949", "10.3390/ijms22042056", "10.3390/ijms22052338", "10.3390/ijms22052472", "10.3390/ijms22063199", "10.3390/ijms22063265", "10.3390/ijms22073300", "10.3390/ijms22073330", "10.3390/ijms22105193", "10.3390/ijms22115663", "10.3390/ijms22126218", "10.3390/ijms22126262", "10.3390/ijms22126587", "10.3390/ijms22136788", "10.3390/ijms22136900", "10.3390/ijms22147378", "10.3390/ijms22179152", "10.3390/ijms22179416", "10.3390/ijms221910453", "10.3390/ijms222011189", "10.3390/ijms222413217", "10.3390/ijms23010253", "10.3390/ijms23010356", "10.3390/ijms23052770", "10.3390/ijms23073692", "10.3390/ijms23105815", "10.3390/ijms23105847", "10.3390/ijms23115922", "10.3390/ijms23179549", "10.3390/ijms231810732", "10.3390/ijms231810919", "10.3390/ijms231911378", "10.3390/ijms231911878", "10.3390/ijms232112884", "10.3390/ijms232113657", "10.3390/ijms232314550", "10.3390/ijms232415961", "10.3390/ijms24021329", "10.3390/ijms24043150", "10.3390/ijms24076795", "10.3390/ijms24119681", "10.3390/ijms241210369", "10.3390/ijms241511882", "10.3390/ijms241713409", "10.3390/ijms241814049", "10.3390/ijms242115897", "10.3390/ijms25063103", "10.3390/ijms25063378", "10.3390/insects12090830", "10.3390/jcdd10080325", "10.3390/jcdd3020014", "10.3390/jcdd8120170", "10.3390/jcm13102883", "10.3390/jdb10020023", "10.3390/jdb9030025", "10.3390/jdb9040040", "10.3390/jof7100858", "10.3390/life13051177", "10.3390/life7030032", "10.3390/life7040050", "10.3390/metabo10020050", "10.3390/metabo13040560", "10.3390/mi14030645", "10.3390/microorganisms9112401", "10.3390/molecules201018808", "10.3390/molecules23081941", "10.3390/molecules24050866", "10.3390/molecules25122845", "10.3390/molecules25173935", "10.3390/molecules25184240", "10.3390/molecules27249041", "10.3390/molecules28052014", "10.3390/nano11071853", "10.3390/ncrna4020015", "10.3390/ncrna7030051", "10.3390/ncrna9060069", "10.3390/nu11112618", "10.3390/nu12051414", "10.3390/nu14030579", "10.3390/nu15061456", "10.3390/pathogens10091155", "10.3390/pathogens11111286", "10.3390/pathogens9070520", "10.3390/ph14030218", "10.3390/ph17030384", "10.3390/ph17050647", "10.3390/plants9050588", "10.3390/pr10081574", "10.3390/separations10010002", "10.3390/sym13050889", "10.3390/toxics10110699", "10.3390/toxics5040038", "10.3390/toxins11050298", "10.3390/toxins12040238", "10.3390/toxins12060387", "10.3390/v11060567", "10.3390/v12090944", "10.3390/v12090991", "10.3390/v13061115", "10.3390/v13112312", "10.3390/v14020420", "10.3390/v14030551", "10.3390/v14051029", "10.3390/v15061335", "10.3390/v15081736", "10.3390/v16050659", "10.3390/v8100265", "10.3402/jev.v2i0.20677", "10.3402/jev.v4.27066", "10.34067/kid.0004772020", "10.36443/10259/5188", "10.3727/096368913x667709", "10.3727/096368915x686850", "10.3727/096368916x691439", "10.3727/096368916x691466", "10.37349/etat.2021.00065", "10.3791/55585", "10.3791/57168", "10.3791/61966", "10.3803/enm.2023.1661", "10.3892/etm.2016.2989", "10.3892/etm.2017.4548", "10.3892/etm.2017.5677", "10.3892/etm.2018.6459", "10.3892/etm.2020.8454", "10.3892/etm.2020.8731", "10.3892/etm.2023.11975", "10.3892/ijmm.16.4.631", "10.3892/ijmm.2012.1200", "10.3892/ijmm_00000170", "10.3892/ijo.2013.1878", "10.3892/ijo.2013.2195", "10.3892/ijo.2020.5002", "10.3892/ijo.2023.5522", "10.3892/mco.2021.2290", "10.3892/mmr.2014.2863", "10.3892/mmr.2020.11268", "10.3892/mmr.2023.12942", "10.3892/ol.2016.4113", "10.3892/ol.2016.4988", "10.3892/ol.2019.10874", "10.3892/ol.2020.11769", "10.3892/ol.2020.12288", "10.3892/ol.2022.13469", "10.3892/ol.2022.13639", "10.3892/ol.2024.14514", "10.3892/or.2014.3448", "10.3892/or.2015.3753", "10.3892/or.2016.4627", "10.3892/or.2017.5822", "10.3892/or.2018.6929", "10.3892/or.2019.7279", "10.3892/or.2022.8469", "10.3892/or_00000180", "10.3906/biy-0807-30", "10.3917/jie.020.0197", "10.3945/jn.114.194639", "10.4049/jimmunol.0902594", "10.4049/jimmunol.1102885", "10.4049/jimmunol.1202145", "10.4049/jimmunol.1401242", "10.4049/jimmunol.1502139", "10.4049/jimmunol.1600043", "10.4049/jimmunol.1701616", "10.4049/jimmunol.1801540", "10.4049/jimmunol.1900848", "10.4049/jimmunol.1901396", "10.4062/biomolther.2009.17.1.1", "10.4062/biomolther.2021.122", "10.4062/biomolther.2022.153", "10.4102/jsava.v89i0.1490", "10.4137/jcnsd.s23210", "10.4155/fmc-2016-0059", "10.4161/cam.21832", "10.4161/cam.27480", "10.4161/cbt.5.8.3230", "10.4161/cc.10.3.14754", "10.4161/cc.22689", "10.4161/cc.7.9.5804", "10.4161/cc.8.1.7530", "10.4161/cc.9.17.12928", "10.4161/chan.2.5.6904", "10.4161/isl.1.3.9877", "10.4161/psb.6.3.14715", "10.4172/2157-7633.1000209", "10.4238/2013.december.4.10", "10.4238/2015.august.3.12", "10.4238/2015.october.19.4", "10.4267/2042/70648", "10.4295/audiology.62.439", "10.4315/0362-028x.jfp-12-341", "10.46943/ii.3dbb.2022.01.004", "10.5021/ad.2017.29.6.667", "10.5114/biolsport.2022.102868", "10.5114/dr.2016.61781", "10.5213/inj.2244254.127", "10.52825/scp.v4i.215", "10.53388/2023623012", "10.53555/rb8c2e44", "10.53846/goediss-8368", "10.5483/bmbrep.2017.50.12.194", "10.5483/bmbrep.2020.53.11.204", "10.5530/pj.2024.16.8", "10.5772/47803", "10.5772/66645", "10.5772/intechopen.79952", "10.5772/intechopen.81381", "10.5821/dissertation-2117-110435", "10.58445/rars.318", "10.58837/chula.the.2017.347", "10.7150/ijbs.27796", "10.7150/ijbs.33233", "10.7150/ijbs.39936", "10.7150/ijbs.51309", "10.7150/ijbs.64943", "10.7150/ijbs.72663", "10.7150/ijbs.7357", "10.7150/jca.17845", "10.7150/jca.21780", "10.7150/jca.31254", "10.7150/jca.60737", "10.7150/jca.86683", "10.7150/jca.88857", "10.7150/thno.21648", "10.7150/thno.30487", "10.7150/thno.34983", "10.7150/thno.41388", "10.7150/thno.41687", "10.7150/thno.45688", "10.7150/thno.47354", "10.7150/thno.51963", "10.7150/thno.66059", "10.7150/thno.68895", "10.7150/thno.69217", "10.7150/thno.73931", "10.7150/thno.74974", "10.7150/thno.75853", "10.7150/thno.95476", "10.7314/apjcp.2013.14.6.3613", "10.7554/elife.01637", "10.7554/elife.02238", "10.7554/elife.05871", "10.7554/elife.07454", "10.7554/elife.17002", "10.7554/elife.18675", "10.7554/elife.18683", "10.7554/elife.19272", "10.7554/elife.19276", "10.7554/elife.30000", "10.7554/elife.32332", "10.7554/elife.32496", "10.7554/elife.33052", "10.7554/elife.34408", "10.7554/elife.35755", "10.7554/elife.36073", "10.7554/elife.40364", "10.7554/elife.47040", "10.7554/elife.49882", "10.7554/elife.51358", "10.7554/elife.52611", "10.7554/elife.61080", "10.7554/elife.64684", "10.7554/elife.64904", "10.7554/elife.65161", "10.7554/elife.65412", "10.7554/elife.65824", "10.7554/elife.70658", "10.7554/elife.72792", "10.7554/elife.73992", "10.7554/elife.89176.3", "10.7554/elife.89176.4", "10.7554/elife.90425.3", "10.7717/peerj.3473", "10.7916/d8h130r1", "10/1872/696327", "10/1999/237314", "10/2084/2383697", "10/2190/76563", "10/2332/5985725", "10/2623/4080837", "10/2904/5939924", "10/5235/5827665", "10/5779/6287850", "10/6051/3052766", "10802789/files/19487948", ], }, } ================================================ FILE: docs/tutorials/querying_with_clinical_trials.md ================================================ # PaperQA2 for Clinical Trials PaperQA2 now natively supports querying clinical trials in addition to any documents supplied by the user. It uses a new tool, the aptly named `clinical_trials_search` tool. Users don't have to provide any clinical trials to the tool itself, it uses the `clinicaltrials.gov` API to retrieve them on the fly. As of January 2025, the tool is not enabled by default, but it's easy to configure. Here's an example where we query only clinical trials, without using any documents: ```python from paperqa import Settings, agent_query answer_response = await agent_query( query="What drugs have been found to effectively treat Ulcerative Colitis?", settings=Settings.from_name("search_only_clinical_trials"), ) print(answer_response.session.answer) ``` ### Output Several drugs have been found to effectively treat Ulcerative Colitis (UC), targeting different mechanisms of the disease. Golimumab, a tumor necrosis factor (TNF) inhibitor marketed as Simponi®, has demonstrated efficacy in treating moderate-to-severe UC. Administered subcutaneously, it was shown to maintain clinical response through Week 54 in patients, as assessed by the Partial Mayo Score (NCT02092285). Mesalazine, an anti-inflammatory drug, is commonly used for UC treatment. In a study comparing mesalazine enemas to faecal microbiota transplantation (FMT) for left-sided UC, mesalazine enemas (4g daily) were effective in inducing clinical remission (Mayo score ≤ 2) (NCT03104036). Antibiotics have also shown potential in UC management. A combination of doxycycline, amoxicillin, and metronidazole induced remission in 60-70% of patients with moderate-to-severe UC in prior studies. These antibiotics are thought to alter gut microbiota, reducing pathobionts and promoting beneficial bacteria (NCT02217722, NCT03986996). Roflumilast, a phosphodiesterase-4 (PDE4) inhibitor, is being investigated for mild-to-moderate UC. Preliminary findings suggest it may improve disease severity and biochemical markers when added to conventional treatments (NCT05684484). These treatments highlight diverse therapeutic approaches, including immunosuppression, microbiota modulation, and anti-inflammatory mechanisms. You can see the in-line citations for each clinical trial used as a response for each query. If you'd like to see more data on the specific contexts that were used to answer the query: ```python print(answer_response.session.contexts) ``` [Context(context='The excerpt mentions that a search on ClinicalTrials.gov for clinical trials related to drugs treating Ulcerative Colitis yielded 689 trials. However, it does not provide specific information about which drugs have been found effective for treating Ulcerative Colitis.', text=Text(text='', name=... Using `Settings.from_name('search_only_clinical_trials')` is a shortcut, but note that you can easily add `clinical_trial_search` into any custom `Settings` by just explicitly naming it as a tool: ```python from pathlib import Path from paperqa import Settings, agent_query, AgentSetting from paperqa.agents.tools import DEFAULT_TOOL_NAMES # you can start with the default list of PaperQA tools print(DEFAULT_TOOL_NAMES) # >>> ['paper_search', 'gather_evidence', 'gen_answer', 'reset', 'complete'], # we can start with a directory with a potentially useful paper in it print(list(Path("my_papers").iterdir())) # now let's query using standard tools + clinical_trials answer_response = await agent_query( query="What drugs have been found to effectively treat Ulcerative Colitis?", settings=Settings( paper_directory="my_papers", agent={"tool_names": DEFAULT_TOOL_NAMES + ["clinical_trials_search"]}, ), ) # let's check out the formatted answer (with references included) print(answer_response.session.formatted_answer) ``` Question: What drugs have been found to effectively treat Ulcerative Colitis? Several drugs have been found effective in treating Ulcerative Colitis (UC), with treatment strategies varying based on disease severity and extent. For mild-to-moderate UC, 5-aminosalicylic acid (5-ASA) is the first-line therapy. Topical 5-ASA, such as mesalazine suppositories (1 g/day), is effective for proctitis or distal colitis, inducing remission in 31-80% of patients. Oral mesalazine at higher doses (e.g., 4.8 g/day) can accelerate clinical improvement in more extensive disease (meier2011currenttreatmentof pages 1-2; meier2011currenttreatmentof pages 3-4). For moderate-to-severe cases, corticosteroids are commonly used. Oral steroids like prednisolone (40-60 mg/day) or intravenous steroids such as methylprednisolone (60 mg/day) and hydrocortisone (400 mg/day) are standard for inducing remission (meier2011currenttreatmentof pages 3-4). Tumor necrosis factor (TNF)-α blockers, such as infliximab, are effective for steroid-refractory cases (meier2011currenttreatmentof pages 2-3; meier2011currenttreatmentof pages 3-4). Immunosuppressive agents, including azathioprine and 6-mercaptopurine, are used for maintenance therapy in steroid-dependent or refractory cases (meier2011currenttreatmentof pages 2-3; meier2011currenttreatmentof pages 3-4). Antibiotics, such as combinations of penicillin, tetracycline, and metronidazole, have shown promise in altering the microbiota and inducing remission in some patients, though their efficacy varies (NCT02217722). References 1. (meier2011currenttreatmentof pages 2-3): Johannes Meier and Andreas Sturm. Current treatment of ulcerative colitis. World journal of gastroenterology, 17 27:3204-12, 2011. URL: https://doi.org/10.3748/wjg.v17.i27.3204, doi:10.3748/wjg.v17.i27.3204. 2. (meier2011currenttreatmentof pages 3-4): Johannes Meier and Andreas Sturm. Current treatment of ulcerative colitis. World journal of gastroenterology, 17 27:3204-12, 2011. URL: https://doi.org/10.3748/wjg.v17.i27.3204, doi:10.3748/wjg.v17.i27.3204. 3. (NCT02217722): Prof. Arie Levine. Use of the Ulcerative Colitis Diet for Induction of Remission. Prof. Arie Levine. 2014. ClinicalTrials.gov Identifier: NCT02217722 4. (meier2011currenttreatmentof pages 1-2): Johannes Meier and Andreas Sturm. Current treatment of ulcerative colitis. World journal of gastroenterology, 17 27:3204-12, 2011. URL: https://doi.org/10.3748/wjg.v17.i27.3204, doi:10.3748/wjg.v17.i27.3204. We now see both papers and clinical trials cited in our response. For convenience, we have a `Settings.from_name` that works as well: ```python from paperqa import Settings, agent_query answer_response = await agent_query( query="What drugs have been found to effectively treat Ulcerative Colitis?", settings=Settings.from_name("clinical_trials"), ) ``` And, this works with the `pqa` cli as well: ```bash >>> pqa --settings 'search_only_clinical_trials' ask 'what is Ibuprofen effective at treating?' ``` ... [13:29:50] Completing 'what is Ibuprofen effective at treating?' as 'certain'. Answer: Ibuprofen is a non-steroidal anti-inflammatory drug (NSAID) effective in treating various conditions, including pain, inflammation, and fever. It is widely used for tension-type headaches, with studies showing that ibuprofen sodium provides significant pain relief and reduces pain intensity compared to standard ibuprofen and placebo over a 3-hour period (NCT01362491). Intravenous ibuprofen is effective in managing postoperative pain, particularly in orthopedic surgeries, and helps control the inflammatory process. When combined with opioids, it reduces opioid consumption and associated side effects, making it a key component of multimodal analgesia (NCT05401916, NCT01773005). Ibuprofen is also effective in pediatric populations as a first-line anti-inflammatory and antipyretic agent due to its relatively low adverse effects compared to other NSAIDs (NCT01478022). Additionally, it has been studied for its potential use in managing chronic periodontitis through subgingival irrigation with a 2% ibuprofen mouthwash, which reduces periodontal pocket depth and bleeding on probing, improving periodontal health (NCT02538237). These findings highlight ibuprofen's versatility in treating pain, inflammation, fever, and specific conditions like tension headaches, postoperative pain, and periodontal diseases. ================================================ FILE: docs/tutorials/running_on_lfrqa.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Measuring PaperQA2 with LFRQA\n", "> This tutorial is available as a Jupyter notebook [here](https://github.com/Future-House/paper-qa/blob/main/docs/tutorials/running_on_lfrqa.md)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Overview\n", "\n", "The **LFRQA dataset** was introduced in the paper [_RAG-QA Arena: Evaluating Domain Robustness for Long-Form Retrieval-Augmented Question Answering_](https://arxiv.org/pdf/2407.13998). It features **1,404 science questions** (along with other categories) that have been human-annotated with answers. This tutorial walks through the process of setting up the dataset for use and benchmarking.\n", "\n", "## Download the Annotations\n", "\n", "First, we need to obtain the annotated dataset from the official repository:\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Create a new directory for the dataset\n", "!mkdir -p data/rag-qa-benchmarking\n", "\n", "# Get the annotated questions\n", "!curl https://raw.githubusercontent.com/awslabs/rag-qa-arena/refs/heads/main/data/\\\n", "annotations_science_with_citation.jsonl \\\n", "-o data/rag-qa-benchmarking/annotations_science_with_citation.jsonl" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "## Download the Robust-QA Documents\n", "\n", "LFRQA is built upon **Robust-QA**, so we must download the relevant documents:\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Download the Lotte dataset, which includes the required documents\n", "!curl https://downloads.cs.stanford.edu/nlp/data/colbert/colbertv2/lotte.tar.gz --output lotte.tar.gz\n", "\n", "# Extract the dataset\n", "!tar -xvzf lotte.tar.gz\n", "\n", "# Move the science test collection to our dataset folder\n", "!cp lotte/science/test/collection.tsv ./data/rag-qa-benchmarking/science_test_collection.tsv\n", "\n", "# Clean up unnecessary files\n", "!rm lotte.tar.gz\n", "!rm -rf lotte" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For more details, refer to the original paper: [_RAG-QA Arena: Evaluating Domain Robustness for Long-Form Retrieval-Augmented Question Answering_](https://arxiv.org/pdf/2407.13998)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "## Load the Data\n", "\n", "We now load the documents into a pandas dataframe:\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import os\n", "\n", "import pandas as pd\n", "\n", "# Load questions and answers dataset\n", "rag_qa_benchmarking_dir = os.path.join(\"data\", \"rag-qa-benchmarking\")\n", "\n", "# Load documents dataset\n", "lfrqa_docs_df = pd.read_csv(\n", " os.path.join(rag_qa_benchmarking_dir, \"science_test_collection.tsv\"),\n", " sep=\"\\t\",\n", " names=[\"doc_id\", \"doc_text\"],\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Select the Documents to Use\n", "RobustQA consists on 1.7M documents. Hence, it takes around 3 hours to build the whole index.\n", "\n", "To run a test, we can use 1% of the dataset. This will be accomplished by selecting the first 1% available documents and the questions referent to these documents." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "proportion_to_use = 1 / 100\n", "amount_of_docs_to_use = int(len(lfrqa_docs_df) * proportion_to_use)\n", "print(f\"Using {amount_of_docs_to_use} out of {len(lfrqa_docs_df)} documents\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prepare the Document Files\n", "We now create the document directory and store each document as a separate text file, so that paperqa can build the index." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "partial_docs = lfrqa_docs_df.head(amount_of_docs_to_use)\n", "lfrqa_directory = os.path.join(rag_qa_benchmarking_dir, \"lfrqa\")\n", "os.makedirs(\n", " os.path.join(lfrqa_directory, \"science_docs_for_paperqa\", \"files\"), exist_ok=True\n", ")\n", "\n", "for i, row in partial_docs.iterrows():\n", " doc_id = row[\"doc_id\"]\n", " doc_text = row[\"doc_text\"]\n", "\n", " with open(\n", " os.path.join(\n", " lfrqa_directory, \"science_docs_for_paperqa\", \"files\", f\"{doc_id}.txt\"\n", " ),\n", " \"w\",\n", " encoding=\"utf-8\",\n", " ) as f:\n", " f.write(doc_text)\n", "\n", " if i % int(len(partial_docs) * 0.05) == 0:\n", " progress = (i + 1) / len(partial_docs)\n", " print(f\"Progress: {progress:.2%}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create the Manifest File\n", "The **manifest file** keeps track of document metadata for the dataset. We need to fill some fields so that paperqa doesn’t try to get metadata using llm calls. This will make the indexing process faster." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "manifest = partial_docs.copy()\n", "manifest[\"file_location\"] = manifest[\"doc_id\"].apply(lambda x: f\"files/{x}.txt\")\n", "manifest[\"doi\"] = \"\"\n", "manifest[\"title\"] = manifest[\"doc_id\"]\n", "manifest[\"key\"] = manifest[\"doc_id\"]\n", "manifest[\"docname\"] = manifest[\"doc_id\"]\n", "manifest[\"citation\"] = \"_\"\n", "manifest = manifest.drop(columns=[\"doc_id\", \"doc_text\"])\n", "manifest.to_csv(\n", " os.path.join(lfrqa_directory, \"science_docs_for_paperqa\", \"manifest.csv\"),\n", " index=False,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Filter and Save Questions\n", "Finally, we load the questions and filter them to ensure we only include questions that reference the selected documents:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "questions_df = pd.read_json(\n", " os.path.join(rag_qa_benchmarking_dir, \"annotations_science_with_citation.jsonl\"),\n", " lines=True,\n", ")\n", "partial_questions = questions_df[\n", " questions_df.gold_doc_ids.apply(\n", " lambda ids: all(_id < amount_of_docs_to_use for _id in ids)\n", " )\n", "]\n", "partial_questions.to_csv(\n", " os.path.join(lfrqa_directory, \"questions.csv\"),\n", " index=False,\n", ")\n", "\n", "print(\"Using\", len(partial_questions), \"questions\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Install paperqa\n", "From now on, we will be using the paperqa library, so we need to install it:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!pip install paper-qa" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Index the Documents\n", "\n", "Now we will build an index for the LFRQA documents. The index is a **Tantivy index**, which is a fast, full-text search engine library written in Rust. Tantivy is designed to handle large datasets efficiently, making it ideal for searching through a vast collection of papers or documents.\n", "\n", "Feel free to adjust the concurrency settings as you like. Because we defined a manifest, we don’t need any API keys for building this index because we don't discern any citation metadata, but you do need LLM API keys to answer questions.\n", "\n", "Remember that this process is quick for small portions of the dataset, but can take around 3 hours for the whole dataset." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import nest_asyncio\n", "\n", "nest_asyncio.apply()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We add the line above to handle async code within a notebook.\n", "\n", "However, to improve compatibility and speed up the indexing process, we strongly recommend running the following code in a separate `.py` file" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import os\n", "\n", "from paperqa import Settings\n", "from paperqa.agents import build_index\n", "from paperqa.settings import AgentSettings, IndexSettings, ParsingSettings\n", "\n", "settings = Settings(\n", " agent=AgentSettings(\n", " index=IndexSettings(\n", " name=\"lfrqa_science_index\",\n", " paper_directory=os.path.join(\n", " \"data\", \"rag-qa-benchmarking\", \"lfrqa\", \"science_docs_for_paperqa\"\n", " ),\n", " index_directory=os.path.join(\n", " \"data\", \"rag-qa-benchmarking\", \"lfrqa\", \"science_docs_for_paperqa_index\"\n", " ),\n", " manifest_file=\"manifest.csv\",\n", " concurrency=10_000,\n", " batch_size=10_000,\n", " )\n", " ),\n", " parsing=ParsingSettings(\n", " use_doc_details=False,\n", " defer_embedding=True,\n", " ),\n", ")\n", "\n", "build_index(settings=settings)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After this runs, you will have an index ready to use!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Benchmark!\n", "After you have built the index, you are ready to run the benchmark. We advice running this in a separate `.py` file.\n", "\n", "To run this, you will need to have the [`ldp`](https://github.com/Future-House/ldp) and [`fhaviary[lfrqa]`](https://github.com/Future-House/aviary/blob/main/packages/lfrqa/README.md#installation) packages installed.\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!pip install ldp \"fhaviary[lfrqa]\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import asyncio\n", "import json\n", "import logging\n", "import os\n", "\n", "import pandas as pd\n", "from aviary.envs.lfrqa import LFRQAQuestion, LFRQATaskDataset\n", "from ldp.agent import SimpleAgent\n", "from ldp.alg.runners import Evaluator, EvaluatorConfig\n", "\n", "from paperqa import Settings\n", "from paperqa.settings import AgentSettings, IndexSettings\n", "\n", "logging.basicConfig(level=logging.ERROR)\n", "\n", "log_results_dir = os.path.join(\"data\", \"rag-qa-benchmarking\", \"results\")\n", "os.makedirs(log_results_dir, exist_ok=True)\n", "\n", "\n", "async def log_evaluation_to_json( # noqa: RUF029\n", " lfrqa_question_evaluation: dict,\n", ") -> None:\n", " json_path = os.path.join(\n", " log_results_dir, f\"{lfrqa_question_evaluation['qid']}.json\"\n", " )\n", " with open(json_path, \"w\") as f: # noqa: ASYNC230\n", " json.dump(lfrqa_question_evaluation, f, indent=2)\n", "\n", "\n", "async def evaluate() -> None:\n", " settings = Settings(\n", " agent=AgentSettings(\n", " index=IndexSettings(\n", " name=\"lfrqa_science_index\",\n", " paper_directory=os.path.join(\n", " \"data\", \"rag-qa-benchmarking\", \"lfrqa\", \"science_docs_for_paperqa\"\n", " ),\n", " index_directory=os.path.join(\n", " \"data\",\n", " \"rag-qa-benchmarking\",\n", " \"lfrqa\",\n", " \"science_docs_for_paperqa_index\",\n", " ),\n", " )\n", " )\n", " )\n", "\n", " data: list[LFRQAQuestion] = [\n", " LFRQAQuestion(**row)\n", " for row in pd.read_csv(\n", " os.path.join(\"data\", \"rag-qa-benchmarking\", \"lfrqa\", \"questions.csv\")\n", " )[[\"qid\", \"question\", \"answer\", \"gold_doc_ids\"]].to_dict(orient=\"records\")\n", " ]\n", "\n", " dataset = LFRQATaskDataset(\n", " data=data,\n", " settings=settings,\n", " evaluation_callback=log_evaluation_to_json,\n", " )\n", "\n", " evaluator = Evaluator(\n", " config=EvaluatorConfig(batch_size=3),\n", " agent=SimpleAgent(),\n", " dataset=dataset,\n", " )\n", " await evaluator.evaluate()\n", "\n", "\n", "if __name__ == \"__main__\":\n", " asyncio.run(evaluate())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After running this, you can find the results in the `data/rag-qa-benchmarking/results` folder. Here is an example of how to read them:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import glob\n", "\n", "json_files = glob.glob(os.path.join(rag_qa_benchmarking_dir, \"results\", \"*.json\"))\n", "\n", "data = []\n", "for file in json_files:\n", " with open(file) as f:\n", " json_data = json.load(f)\n", " json_data[\"qid\"] = file.split(\"/\")[-1].replace(\".json\", \"\")\n", " data.append(json_data)\n", "\n", "results_df = pd.DataFrame(data).set_index(\"qid\")\n", "results_df[\"winner\"].value_counts(normalize=True)" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: docs/tutorials/running_on_lfrqa.md ================================================ --- jupyter: jupytext: text_representation: extension: .md format_name: markdown format_version: '1.3' jupytext_version: 1.18.1 kernelspec: display_name: .venv language: python name: python3 --- # Measuring PaperQA2 with LFRQA > This tutorial is available as a Jupyter notebook [here](https://github.com/Future-House/paper-qa/blob/main/docs/tutorials/running_on_lfrqa.md) ## Overview The **LFRQA dataset** was introduced in the paper [_RAG-QA Arena: Evaluating Domain Robustness for Long-Form Retrieval-Augmented Question Answering_](https://arxiv.org/pdf/2407.13998). It features **1,404 science questions** (along with other categories) that have been human-annotated with answers. This tutorial walks through the process of setting up the dataset for use and benchmarking. ## Download the Annotations First, we need to obtain the annotated dataset from the official repository: ```python # Create a new directory for the dataset !mkdir -p data/rag-qa-benchmarking # Get the annotated questions !curl https://raw.githubusercontent.com/awslabs/rag-qa-arena/refs/heads/main/data/\ annotations_science_with_citation.jsonl \ -o data/rag-qa-benchmarking/annotations_science_with_citation.jsonl ``` ## Download the Robust-QA Documents LFRQA is built upon **Robust-QA**, so we must download the relevant documents: ```python # Download the Lotte dataset, which includes the required documents !curl https://downloads.cs.stanford.edu/nlp/data/colbert/colbertv2/lotte.tar.gz --output lotte.tar.gz # Extract the dataset !tar -xvzf lotte.tar.gz # Move the science test collection to our dataset folder !cp lotte/science/test/collection.tsv ./data/rag-qa-benchmarking/science_test_collection.tsv # Clean up unnecessary files !rm lotte.tar.gz !rm -rf lotte ``` For more details, refer to the original paper: [_RAG-QA Arena: Evaluating Domain Robustness for Long-Form Retrieval-Augmented Question Answering_](https://arxiv.org/pdf/2407.13998). ## Load the Data We now load the documents into a pandas dataframe: ```python import os import pandas as pd # Load questions and answers dataset rag_qa_benchmarking_dir = os.path.join("data", "rag-qa-benchmarking") # Load documents dataset lfrqa_docs_df = pd.read_csv( os.path.join(rag_qa_benchmarking_dir, "science_test_collection.tsv"), sep="\t", names=["doc_id", "doc_text"], ) ``` ## Select the Documents to Use RobustQA consists on 1.7M documents. Hence, it takes around 3 hours to build the whole index. To run a test, we can use 1% of the dataset. This will be accomplished by selecting the first 1% available documents and the questions referent to these documents. ```python proportion_to_use = 1 / 100 amount_of_docs_to_use = int(len(lfrqa_docs_df) * proportion_to_use) print(f"Using {amount_of_docs_to_use} out of {len(lfrqa_docs_df)} documents") ``` ## Prepare the Document Files We now create the document directory and store each document as a separate text file, so that paperqa can build the index. ```python partial_docs = lfrqa_docs_df.head(amount_of_docs_to_use) lfrqa_directory = os.path.join(rag_qa_benchmarking_dir, "lfrqa") os.makedirs( os.path.join(lfrqa_directory, "science_docs_for_paperqa", "files"), exist_ok=True ) for i, row in partial_docs.iterrows(): doc_id = row["doc_id"] doc_text = row["doc_text"] with open( os.path.join( lfrqa_directory, "science_docs_for_paperqa", "files", f"{doc_id}.txt" ), "w", encoding="utf-8", ) as f: f.write(doc_text) if i % int(len(partial_docs) * 0.05) == 0: progress = (i + 1) / len(partial_docs) print(f"Progress: {progress:.2%}") ``` ## Create the Manifest File The **manifest file** keeps track of document metadata for the dataset. We need to fill some fields so that paperqa doesn’t try to get metadata using llm calls. This will make the indexing process faster. ```python manifest = partial_docs.copy() manifest["file_location"] = manifest["doc_id"].apply(lambda x: f"files/{x}.txt") manifest["doi"] = "" manifest["title"] = manifest["doc_id"] manifest["key"] = manifest["doc_id"] manifest["docname"] = manifest["doc_id"] manifest["citation"] = "_" manifest = manifest.drop(columns=["doc_id", "doc_text"]) manifest.to_csv( os.path.join(lfrqa_directory, "science_docs_for_paperqa", "manifest.csv"), index=False, ) ``` ## Filter and Save Questions Finally, we load the questions and filter them to ensure we only include questions that reference the selected documents: ```python questions_df = pd.read_json( os.path.join(rag_qa_benchmarking_dir, "annotations_science_with_citation.jsonl"), lines=True, ) partial_questions = questions_df[ questions_df.gold_doc_ids.apply( lambda ids: all(_id < amount_of_docs_to_use for _id in ids) ) ] partial_questions.to_csv( os.path.join(lfrqa_directory, "questions.csv"), index=False, ) print("Using", len(partial_questions), "questions") ``` ## Install paperqa From now on, we will be using the paperqa library, so we need to install it: ```python !pip install paper-qa ``` ## Index the Documents Now we will build an index for the LFRQA documents. The index is a **Tantivy index**, which is a fast, full-text search engine library written in Rust. Tantivy is designed to handle large datasets efficiently, making it ideal for searching through a vast collection of papers or documents. Feel free to adjust the concurrency settings as you like. Because we defined a manifest, we don’t need any API keys for building this index because we don't discern any citation metadata, but you do need LLM API keys to answer questions. Remember that this process is quick for small portions of the dataset, but can take around 3 hours for the whole dataset. ```python import nest_asyncio nest_asyncio.apply() ``` We add the line above to handle async code within a notebook. However, to improve compatibility and speed up the indexing process, we strongly recommend running the following code in a separate `.py` file ```python import os from paperqa import Settings from paperqa.agents import build_index from paperqa.settings import AgentSettings, IndexSettings, ParsingSettings settings = Settings( agent=AgentSettings( index=IndexSettings( name="lfrqa_science_index", paper_directory=os.path.join( "data", "rag-qa-benchmarking", "lfrqa", "science_docs_for_paperqa" ), index_directory=os.path.join( "data", "rag-qa-benchmarking", "lfrqa", "science_docs_for_paperqa_index" ), manifest_file="manifest.csv", concurrency=10_000, batch_size=10_000, ) ), parsing=ParsingSettings( use_doc_details=False, defer_embedding=True, ), ) build_index(settings=settings) ``` After this runs, you will have an index ready to use! ## Benchmark! After you have built the index, you are ready to run the benchmark. We advice running this in a separate `.py` file. To run this, you will need to have the [`ldp`](https://github.com/Future-House/ldp) and [`fhaviary[lfrqa]`](https://github.com/Future-House/aviary/blob/main/packages/lfrqa/README.md#installation) packages installed. ```python !pip install ldp "fhaviary[lfrqa]" ``` ```python import asyncio import json import logging import os import pandas as pd from aviary.envs.lfrqa import LFRQAQuestion, LFRQATaskDataset from ldp.agent import SimpleAgent from ldp.alg.runners import Evaluator, EvaluatorConfig from paperqa import Settings from paperqa.settings import AgentSettings, IndexSettings logging.basicConfig(level=logging.ERROR) log_results_dir = os.path.join("data", "rag-qa-benchmarking", "results") os.makedirs(log_results_dir, exist_ok=True) async def log_evaluation_to_json( # noqa: RUF029 lfrqa_question_evaluation: dict, ) -> None: json_path = os.path.join( log_results_dir, f"{lfrqa_question_evaluation['qid']}.json" ) with open(json_path, "w") as f: # noqa: ASYNC230 json.dump(lfrqa_question_evaluation, f, indent=2) async def evaluate() -> None: settings = Settings( agent=AgentSettings( index=IndexSettings( name="lfrqa_science_index", paper_directory=os.path.join( "data", "rag-qa-benchmarking", "lfrqa", "science_docs_for_paperqa" ), index_directory=os.path.join( "data", "rag-qa-benchmarking", "lfrqa", "science_docs_for_paperqa_index", ), ) ) ) data: list[LFRQAQuestion] = [ LFRQAQuestion(**row) for row in pd.read_csv( os.path.join("data", "rag-qa-benchmarking", "lfrqa", "questions.csv") )[["qid", "question", "answer", "gold_doc_ids"]].to_dict(orient="records") ] dataset = LFRQATaskDataset( data=data, settings=settings, evaluation_callback=log_evaluation_to_json, ) evaluator = Evaluator( config=EvaluatorConfig(batch_size=3), agent=SimpleAgent(), dataset=dataset, ) await evaluator.evaluate() if __name__ == "__main__": asyncio.run(evaluate()) ``` After running this, you can find the results in the `data/rag-qa-benchmarking/results` folder. Here is an example of how to read them: ```python import glob json_files = glob.glob(os.path.join(rag_qa_benchmarking_dir, "results", "*.json")) data = [] for file in json_files: with open(file) as f: json_data = json.load(f) json_data["qid"] = file.split("/")[-1].replace(".json", "") data.append(json_data) results_df = pd.DataFrame(data).set_index("qid") results_df["winner"].value_counts(normalize=True) ``` ================================================ FILE: docs/tutorials/settings_tutorial.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Setup\n", "\n", "> This tutorial is available as a Jupyter notebook [here](https://github.com/Future-House/paper-qa/blob/main/docs/tutorials/settings_tutorial.ipynb).\n", "\n", "This tutorial aims to show how to use the `Settings` class to configure `PaperQA`.\n", "Firstly, we will be using `OpenAI` and `Anthropic` models, so we need to set the `OPENAI_API_KEY` and `ANTHROPIC_API_KEY` environment variables.\n", "We will use both models to make it clear when `paperqa` agent is using either one or the other.\n", "We use `python-dotenv` to load the environment variables from a `.env` file.\n", "Hence, our first step is to create a `.env` file and install the required packages." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# fmt: off\n", "# Create .env file with OpenAI API and Anthropic API keys\n", "# Replace and with your actual API keys\n", "!echo \"OPENAI_API_KEY=\" > .env # fmt: skip\n", "!echo \"ANTHROPIC_API_KEY=\" >> .env # fmt: skip\n", "\n", "!uv pip install -q nest-asyncio python-dotenv aiohttp fhlmi \"paper-qa[local]\"\n", "# fmt: on" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import os\n", "\n", "import aiohttp\n", "import nest_asyncio\n", "from dotenv import load_dotenv\n", "\n", "nest_asyncio.apply()\n", "load_dotenv(\".env\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(\"You have set the following environment variables:\")\n", "print(\n", " f\"OPENAI_API_KEY: {'is set' if os.environ['OPENAI_API_KEY'] else 'is not set'}\"\n", ")\n", "print(\n", " f\"ANTHROPIC_API_KEY: {'is set' if os.environ['ANTHROPIC_API_KEY'] else 'is not set'}\"\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will use the `lmi` package to get the model names and the `.papers` directory to save documents we will use." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from lmi import CommonLLMNames\n", "\n", "llm_openai = CommonLLMNames.OPENAI_TEST.value\n", "llm_anthropic = CommonLLMNames.ANTHROPIC_TEST.value\n", "\n", "# Create the `papers` directory if it doesn't exist\n", "os.makedirs(\"papers\", exist_ok=True)\n", "\n", "# Download the paper from arXiv and save it to the `papers` directory\n", "url = \"https://arxiv.org/pdf/2407.01603\"\n", "async with aiohttp.ClientSession() as session, session.get(url, timeout=60) as response:\n", " content = await response.read()\n", " with open(\"papers/2407.01603.pdf\", \"wb\") as f:\n", " f.write(content)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `Settings` class is used to configure the PaperQA settings.\n", "Official documentation can be found [here](https://github.com/Future-House/paper-qa?tab=readme-ov-file#settings-cheatsheet) and the open source code can be found [here](https://github.com/Future-House/paper-qa/blob/main/src/paperqa/settings.py).\n", "\n", "Here is a basic example of how to use the `Settings` class. We will be unnecessarily verbose for the sake of clarity. Please notice that most of the settings are optional and the defaults are good for most cases. Refer to the [descriptions of each setting](https://github.com/Future-House/paper-qa/blob/main/src/paperqa/settings.py) for more information.\n", "\n", "Within this `Settings` object, I'd like to discuss specifically how the llms are configured and how `paperqa` looks for papers.\n", "\n", "A common source of confusion is that multiple `llms` are used in paperqa. We have `llm`, `summary_llm`, `agent_llm`, and `embedding`. Hence, if `llm` is set to an `Anthropic` model, `summary_llm` and `agent_llm` will still require a `OPENAI_API_KEY`, since `OpenAI` models are the default.\n", "\n", "Among the objects that use `llms` in `paperqa`, we have `llm`, `summary_llm`, `agent_llm`, and `embedding`:\n", "\n", "- `llm`: Main LLM used by the agent to reason about the question, extract metadata from documents, etc.\n", "- `summary_llm`: LLM used to summarize the papers.\n", "- `agent_llm`: LLM used to answer questions and select tools.\n", "- `embedding`: Embedding model used to embed the papers.\n", "\n", "Let's see some examples around this concept. First, we define the settings with `llm` set to an `OpenAI` model. Please notice this is not an complete list of settings. But take your time to read through this `Settings` class and all customization that can be done." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import pathlib\n", "\n", "from paperqa.prompts import (\n", " CONTEXT_INNER_PROMPT,\n", " CONTEXT_OUTER_PROMPT,\n", " citation_prompt,\n", " default_system_prompt,\n", " env_reset_prompt,\n", " env_system_prompt,\n", " qa_prompt,\n", " select_paper_prompt,\n", " structured_citation_prompt,\n", " summary_json_prompt,\n", " summary_json_system_prompt,\n", " summary_prompt,\n", ")\n", "from paperqa.settings import (\n", " AgentSettings,\n", " AnswerSettings,\n", " IndexSettings,\n", " ParsingSettings,\n", " PromptSettings,\n", " Settings,\n", ")\n", "\n", "settings = Settings(\n", " llm=llm_openai,\n", " llm_config={\n", " \"model_list\": [\n", " {\n", " \"model_name\": llm_openai,\n", " \"litellm_params\": {\n", " \"model\": llm_openai,\n", " \"temperature\": 0.1,\n", " \"max_tokens\": 4096,\n", " },\n", " }\n", " ],\n", " \"rate_limit\": {\n", " llm_openai: \"30000 per 1 minute\",\n", " },\n", " },\n", " summary_llm=llm_openai,\n", " summary_llm_config={\n", " \"rate_limit\": {\n", " llm_openai: \"30000 per 1 minute\",\n", " },\n", " },\n", " embedding=\"text-embedding-3-small\",\n", " embedding_config={},\n", " temperature=0.1,\n", " batch_size=1,\n", " verbosity=1,\n", " answer=AnswerSettings(\n", " evidence_k=10,\n", " evidence_retrieval=True,\n", " evidence_summary_length=\"about 100 words\",\n", " evidence_skip_summary=False,\n", " answer_max_sources=5,\n", " max_answer_attempts=None,\n", " answer_length=\"about 200 words, but can be longer\",\n", " max_concurrent_requests=10,\n", " ),\n", " parsing=ParsingSettings(\n", " reader_config={\"chunk_chars\": 5000, \"overlap\": 250},\n", " citation_prompt=citation_prompt,\n", " structured_citation_prompt=structured_citation_prompt,\n", " ),\n", " prompts=PromptSettings(\n", " summary=summary_prompt,\n", " qa=qa_prompt,\n", " select=select_paper_prompt,\n", " pre=None,\n", " post=None,\n", " system=default_system_prompt,\n", " use_json=True,\n", " summary_json=summary_json_prompt,\n", " summary_json_system=summary_json_system_prompt,\n", " context_outer=CONTEXT_OUTER_PROMPT,\n", " context_inner=CONTEXT_INNER_PROMPT,\n", " ),\n", " agent=AgentSettings(\n", " agent_llm=llm_openai,\n", " agent_llm_config={\n", " \"model_list\": [\n", " {\n", " \"model_name\": llm_openai,\n", " \"litellm_params\": {\n", " \"model\": llm_openai,\n", " },\n", " }\n", " ],\n", " \"rate_limit\": {\n", " llm_openai: \"30000 per 1 minute\",\n", " },\n", " },\n", " agent_prompt=env_reset_prompt,\n", " agent_system_prompt=env_system_prompt,\n", " search_count=8,\n", " index=IndexSettings(\n", " paper_directory=pathlib.Path.cwd().joinpath(\"papers\"),\n", " manifest_file=None,\n", " index_directory=pathlib.Path.cwd().joinpath(\"papers/index\"),\n", " ),\n", " ),\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As it is evident, `Paperqa` is absolutely customizable. And here we reinterate that despite this possible fine customization, the defaults are good for most cases. Although, the user is welcome to explore the settings and customize the `paperqa` to their needs.\n", "\n", "We also set settings.verbosity to 1, which will print the agent configuration. Feel free to set it to 0 to silence the logging after your first run." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from paperqa import ask\n", "\n", "response = ask(\n", " \"What are the most relevant language models used for chemistry?\", settings=settings\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which probably worked fine. Let's now try to remove `OPENAI_API_KEY` and run again the same question with the same settings." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "os.environ[\"OPENAI_API_KEY\"] = \"\"\n", "print(\"You have set the following environment variables:\")\n", "print(\n", " f\"OPENAI_API_KEY: {'is set' if os.environ['OPENAI_API_KEY'] else 'is not set'}\"\n", ")\n", "print(\n", " f\"ANTHROPIC_API_KEY: {'is set' if os.environ['ANTHROPIC_API_KEY'] else 'is not set'}\"\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "response = ask(\n", " \"What are the most relevant language models used for chemistry?\", settings=settings\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It would obviously fail. We don't have a valid `OPENAI_API_KEY`, so the agent will not be able to use `OpenAI` models. Let's change it to an `Anthropic` model and see if it works." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "settings.llm = llm_anthropic\n", "settings.llm_config = {\n", " \"model_list\": [\n", " {\n", " \"model_name\": llm_anthropic,\n", " \"litellm_params\": {\n", " \"model\": llm_anthropic,\n", " \"temperature\": 0.1,\n", " \"max_tokens\": 512,\n", " },\n", " }\n", " ],\n", " \"rate_limit\": {\n", " llm_anthropic: \"30000 per 1 minute\",\n", " },\n", "}\n", "settings.summary_llm = llm_anthropic\n", "settings.summary_llm_config = {\n", " \"rate_limit\": {\n", " llm_anthropic: \"30000 per 1 minute\",\n", " },\n", "}\n", "settings.agent = AgentSettings(\n", " agent_llm=llm_anthropic,\n", " agent_llm_config={\n", " \"rate_limit\": {\n", " llm_anthropic: \"30000 per 1 minute\",\n", " },\n", " },\n", " index=IndexSettings(\n", " paper_directory=pathlib.Path.cwd().joinpath(\"papers\"),\n", " manifest_file=None,\n", " index_directory=pathlib.Path.cwd().joinpath(\"papers/index\"),\n", " ),\n", ")\n", "settings.embedding = \"st-multi-qa-MiniLM-L6-cos-v1\"\n", "response = ask(\n", " \"What are the most relevant language models used for chemistry?\", settings=settings\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now the agent is able to use `Anthropic` models only and although we don't have a valid `OPENAI_API_KEY`,\n", "the question is answered because the agent will not use `OpenAI` models.\n", "See that we also changed the `embedding` because it was using `text-embedding-3-small` by default,\n", "which is a `OpenAI` model. `Paperqa` implements a few embedding models.\n", "Please refer to the [documentation](https://github.com/Future-House/paper-qa?tab=readme-ov-file#embedding-model) for more information.\n", "\n", "In addition, notice that this is a very verbose example for the sake of clarity. We could have just set only the llms names and used default settings for the rest:\n", "\n", "```python\n", "llm_anthropic_config = {\n", " \"model_list\": [{\n", " \"model_name\": llm_anthropic,\n", " }]\n", "}\n", "\n", "settings.llm = llm_anthropic\n", "settings.llm_config = llm_anthropic_config\n", "settings.summary_llm = llm_anthropic\n", "settings.summary_llm_config = llm_anthropic_config\n", "settings.agent = AgentSettings(\n", " agent_llm=llm_anthropic,\n", " agent_llm_config=llm_anthropic_config,\n", " index=IndexSettings(\n", " paper_directory=pathlib.Path.cwd().joinpath(\"papers\"),\n", " manifest_file=None,\n", " index_directory=pathlib.Path.cwd().joinpath(\"papers/index\"),\n", " ),\n", ")\n", "settings.embedding = \"st-multi-qa-MiniLM-L6-cos-v1\"\n", "```\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# The output\n", "\n", "`Paperqa` returns a `PQASession` object, which contains not only the answer but also all the information gatheres to answer the questions. We recommend printing the `PQASession` object (`print(response.session)`) to understand the information it contains. Let's check the `PQASession` object:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(response.session)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(\"Let's examine the PQASession object returned by paperqa:\\n\")\n", "\n", "print(f\"Status: {response.status.value}\")\n", "\n", "print(\"1. Question asked:\")\n", "print(f\"{response.session.question}\\n\")\n", "\n", "print(\"2. Answer provided:\")\n", "print(f\"{response.session.answer}\\n\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In addition to the answer, the `PQASession` object contains all the references and contexts used to generate the answer.\n", "\n", "Because `paperqa` splits the documents into chunks, each chunk is a valid reference. You can see that it also references the page where the context was found." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(\"3. References cited:\")\n", "print(f\"{response.session.references}\\n\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lastly, `PQASession.session.contexts` contains the contexts used to generate the answer. Each context has a score, which is the similarity between the question and the context.\n", "`Paperqa` uses this score to choose what contexts is more relevant to answer the question." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(\"4. Contexts used to generate the answer:\")\n", "print(\n", " \"These are the relevant text passages that were retrieved and used to formulate the answer:\"\n", ")\n", "for i, ctx in enumerate(response.session.contexts, 1):\n", " print(f\"\\nContext {i}:\")\n", " print(f\"Source: {ctx.text.name}\")\n", " print(f\"Content: {ctx.context}\")\n", " print(f\"Score: {ctx.score}\")" ] } ], "metadata": { "jupytext": { "formats": "ipynb,md" }, "kernelspec": { "display_name": "test", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: docs/tutorials/settings_tutorial.md ================================================ --- jupyter: jupytext: formats: ipynb,md text_representation: extension: .md format_name: markdown format_version: '1.3' jupytext_version: 1.18.1 kernelspec: display_name: test language: python name: python3 --- # Setup > This tutorial is available as a Jupyter notebook [here](https://github.com/Future-House/paper-qa/blob/main/docs/tutorials/settings_tutorial.ipynb). This tutorial aims to show how to use the `Settings` class to configure `PaperQA`. Firstly, we will be using `OpenAI` and `Anthropic` models, so we need to set the `OPENAI_API_KEY` and `ANTHROPIC_API_KEY` environment variables. We will use both models to make it clear when `paperqa` agent is using either one or the other. We use `python-dotenv` to load the environment variables from a `.env` file. Hence, our first step is to create a `.env` file and install the required packages. ```python # fmt: off # Create .env file with OpenAI API and Anthropic API keys # Replace and with your actual API keys !echo "OPENAI_API_KEY=" > .env # fmt: skip !echo "ANTHROPIC_API_KEY=" >> .env # fmt: skip !uv pip install -q nest-asyncio python-dotenv aiohttp fhlmi "paper-qa[local]" # fmt: on ``` ```python import os import aiohttp import nest_asyncio from dotenv import load_dotenv nest_asyncio.apply() load_dotenv(".env") ``` ```python print("You have set the following environment variables:") print( f"OPENAI_API_KEY: {'is set' if os.environ['OPENAI_API_KEY'] else 'is not set'}" ) print( f"ANTHROPIC_API_KEY: {'is set' if os.environ['ANTHROPIC_API_KEY'] else 'is not set'}" ) ``` We will use the `lmi` package to get the model names and the `.papers` directory to save documents we will use. ```python from lmi import CommonLLMNames llm_openai = CommonLLMNames.OPENAI_TEST.value llm_anthropic = CommonLLMNames.ANTHROPIC_TEST.value # Create the `papers` directory if it doesn't exist os.makedirs("papers", exist_ok=True) # Download the paper from arXiv and save it to the `papers` directory url = "https://arxiv.org/pdf/2407.01603" async with aiohttp.ClientSession() as session, session.get(url, timeout=60) as response: content = await response.read() with open("papers/2407.01603.pdf", "wb") as f: f.write(content) ``` The `Settings` class is used to configure the PaperQA settings. Official documentation can be found [here](https://github.com/Future-House/paper-qa?tab=readme-ov-file#settings-cheatsheet) and the open source code can be found [here](https://github.com/Future-House/paper-qa/blob/main/src/paperqa/settings.py). Here is a basic example of how to use the `Settings` class. We will be unnecessarily verbose for the sake of clarity. Please notice that most of the settings are optional and the defaults are good for most cases. Refer to the [descriptions of each setting](https://github.com/Future-House/paper-qa/blob/main/src/paperqa/settings.py) for more information. Within this `Settings` object, I'd like to discuss specifically how the llms are configured and how `paperqa` looks for papers. A common source of confusion is that multiple `llms` are used in paperqa. We have `llm`, `summary_llm`, `agent_llm`, and `embedding`. Hence, if `llm` is set to an `Anthropic` model, `summary_llm` and `agent_llm` will still require a `OPENAI_API_KEY`, since `OpenAI` models are the default. Among the objects that use `llms` in `paperqa`, we have `llm`, `summary_llm`, `agent_llm`, and `embedding`: - `llm`: Main LLM used by the agent to reason about the question, extract metadata from documents, etc. - `summary_llm`: LLM used to summarize the papers. - `agent_llm`: LLM used to answer questions and select tools. - `embedding`: Embedding model used to embed the papers. Let's see some examples around this concept. First, we define the settings with `llm` set to an `OpenAI` model. Please notice this is not an complete list of settings. But take your time to read through this `Settings` class and all customization that can be done. ```python import pathlib from paperqa.prompts import ( CONTEXT_INNER_PROMPT, CONTEXT_OUTER_PROMPT, citation_prompt, default_system_prompt, env_reset_prompt, env_system_prompt, qa_prompt, select_paper_prompt, structured_citation_prompt, summary_json_prompt, summary_json_system_prompt, summary_prompt, ) from paperqa.settings import ( AgentSettings, AnswerSettings, IndexSettings, ParsingSettings, PromptSettings, Settings, ) settings = Settings( llm=llm_openai, llm_config={ "model_list": [ { "model_name": llm_openai, "litellm_params": { "model": llm_openai, "temperature": 0.1, "max_tokens": 4096, }, } ], "rate_limit": { llm_openai: "30000 per 1 minute", }, }, summary_llm=llm_openai, summary_llm_config={ "rate_limit": { llm_openai: "30000 per 1 minute", }, }, embedding="text-embedding-3-small", embedding_config={}, temperature=0.1, batch_size=1, verbosity=1, answer=AnswerSettings( evidence_k=10, evidence_retrieval=True, evidence_summary_length="about 100 words", evidence_skip_summary=False, answer_max_sources=5, max_answer_attempts=None, answer_length="about 200 words, but can be longer", max_concurrent_requests=10, ), parsing=ParsingSettings( reader_config={"chunk_chars": 5000, "overlap": 250}, citation_prompt=citation_prompt, structured_citation_prompt=structured_citation_prompt, ), prompts=PromptSettings( summary=summary_prompt, qa=qa_prompt, select=select_paper_prompt, pre=None, post=None, system=default_system_prompt, use_json=True, summary_json=summary_json_prompt, summary_json_system=summary_json_system_prompt, context_outer=CONTEXT_OUTER_PROMPT, context_inner=CONTEXT_INNER_PROMPT, ), agent=AgentSettings( agent_llm=llm_openai, agent_llm_config={ "model_list": [ { "model_name": llm_openai, "litellm_params": { "model": llm_openai, }, } ], "rate_limit": { llm_openai: "30000 per 1 minute", }, }, agent_prompt=env_reset_prompt, agent_system_prompt=env_system_prompt, search_count=8, index=IndexSettings( paper_directory=pathlib.Path.cwd().joinpath("papers"), manifest_file=None, index_directory=pathlib.Path.cwd().joinpath("papers/index"), ), ), ) ``` As it is evident, `Paperqa` is absolutely customizable. And here we reinterate that despite this possible fine customization, the defaults are good for most cases. Although, the user is welcome to explore the settings and customize the `paperqa` to their needs. We also set settings.verbosity to 1, which will print the agent configuration. Feel free to set it to 0 to silence the logging after your first run. ```python from paperqa import ask response = ask( "What are the most relevant language models used for chemistry?", settings=settings ) ``` Which probably worked fine. Let's now try to remove `OPENAI_API_KEY` and run again the same question with the same settings. ```python os.environ["OPENAI_API_KEY"] = "" print("You have set the following environment variables:") print( f"OPENAI_API_KEY: {'is set' if os.environ['OPENAI_API_KEY'] else 'is not set'}" ) print( f"ANTHROPIC_API_KEY: {'is set' if os.environ['ANTHROPIC_API_KEY'] else 'is not set'}" ) ``` ```python response = ask( "What are the most relevant language models used for chemistry?", settings=settings ) ``` It would obviously fail. We don't have a valid `OPENAI_API_KEY`, so the agent will not be able to use `OpenAI` models. Let's change it to an `Anthropic` model and see if it works. ```python settings.llm = llm_anthropic settings.llm_config = { "model_list": [ { "model_name": llm_anthropic, "litellm_params": { "model": llm_anthropic, "temperature": 0.1, "max_tokens": 512, }, } ], "rate_limit": { llm_anthropic: "30000 per 1 minute", }, } settings.summary_llm = llm_anthropic settings.summary_llm_config = { "rate_limit": { llm_anthropic: "30000 per 1 minute", }, } settings.agent = AgentSettings( agent_llm=llm_anthropic, agent_llm_config={ "rate_limit": { llm_anthropic: "30000 per 1 minute", }, }, index=IndexSettings( paper_directory=pathlib.Path.cwd().joinpath("papers"), manifest_file=None, index_directory=pathlib.Path.cwd().joinpath("papers/index"), ), ) settings.embedding = "st-multi-qa-MiniLM-L6-cos-v1" response = ask( "What are the most relevant language models used for chemistry?", settings=settings ) ``` Now the agent is able to use `Anthropic` models only and although we don't have a valid `OPENAI_API_KEY`, the question is answered because the agent will not use `OpenAI` models. See that we also changed the `embedding` because it was using `text-embedding-3-small` by default, which is a `OpenAI` model. `Paperqa` implements a few embedding models. Please refer to the [documentation](https://github.com/Future-House/paper-qa?tab=readme-ov-file#embedding-model) for more information. In addition, notice that this is a very verbose example for the sake of clarity. We could have just set only the llms names and used default settings for the rest: ```python llm_anthropic_config = { "model_list": [{ "model_name": llm_anthropic, }] } settings.llm = llm_anthropic settings.llm_config = llm_anthropic_config settings.summary_llm = llm_anthropic settings.summary_llm_config = llm_anthropic_config settings.agent = AgentSettings( agent_llm=llm_anthropic, agent_llm_config=llm_anthropic_config, index=IndexSettings( paper_directory=pathlib.Path.cwd().joinpath("papers"), manifest_file=None, index_directory=pathlib.Path.cwd().joinpath("papers/index"), ), ) settings.embedding = "st-multi-qa-MiniLM-L6-cos-v1" ``` # The output `Paperqa` returns a `PQASession` object, which contains not only the answer but also all the information gatheres to answer the questions. We recommend printing the `PQASession` object (`print(response.session)`) to understand the information it contains. Let's check the `PQASession` object: ```python print(response.session) ``` ```python print("Let's examine the PQASession object returned by paperqa:\n") print(f"Status: {response.status.value}") print("1. Question asked:") print(f"{response.session.question}\n") print("2. Answer provided:") print(f"{response.session.answer}\n") ``` In addition to the answer, the `PQASession` object contains all the references and contexts used to generate the answer. Because `paperqa` splits the documents into chunks, each chunk is a valid reference. You can see that it also references the page where the context was found. ```python print("3. References cited:") print(f"{response.session.references}\n") ``` Lastly, `PQASession.session.contexts` contains the contexts used to generate the answer. Each context has a score, which is the similarity between the question and the context. `Paperqa` uses this score to choose what contexts is more relevant to answer the question. ```python print("4. Contexts used to generate the answer:") print( "These are the relevant text passages that were retrieved and used to formulate the answer:" ) for i, ctx in enumerate(response.session.contexts, 1): print(f"\nContext {i}:") print(f"Source: {ctx.text.name}") print(f"Content: {ctx.context}") print(f"Score: {ctx.score}") ``` ================================================ FILE: docs/tutorials/where_do_I_get_papers.md ================================================ # Where to get papers ## OpenReview You can use papers from [https://openreview.net/](https://openreview.net/) as your database! Here's a helper that fetches a list of all papers from a selected conference (like ICLR, ICML, NeurIPS), queries this list to find relevant papers using LLM, and downloads those relevant papers to a local directory which can be used with paper-qa on the next step. Install `openreview-py` with ```bash pip install paper-qa[openreview] ``` and get your username and password from the website. You can put them into `.env` file under `OPENREVIEW_USERNAME` and `OPENREVIEW_PASSWORD` variables, or pass them in the code directly. ```python from paperqa import Settings from paperqa.contrib.openreview_paper_helper import OpenReviewPaperHelper # these settings require gemini api key you can get from https://aistudio.google.com/ # import os; os.environ["GEMINI_API_KEY"] = os.getenv("GEMINI_API_KEY") # 1Mil context window helps to suggest papers. These settings are not required, but useful for an initial setup. settings = Settings.from_name("openreview") helper = OpenReviewPaperHelper(settings, venue_id="ICLR.cc/2025/Conference") # if you don't know venue_id you can find it via # helper.get_venues() # Now we can query LLM to select relevant papers and download PDFs question = "What is the progress on brain activity research?" submissions = helper.fetch_relevant_papers(question) # There's also a function that saves tokens by using openreview metadata for citations docs = await helper.aadd_docs(submissions) # Now you can continue asking like in the [main tutorial](../../README.md) session = await docs.aquery(question, settings=settings) print(session.answer) ``` ## Zotero _It's been a while since we've tested this - so let us know if it runs into issues!_ If you use [Zotero](https://www.zotero.org/) to organize your personal bibliography, you can use the `paperqa.contrib.ZoteroDB` to query papers from your library, which relies on [pyzotero](https://github.com/urschrei/pyzotero). Install `pyzotero` via the `zotero` extra for this feature: ```bash pip install paper-qa[zotero] ``` First, note that PaperQA2 parses the PDFs of papers to store in the database, so all relevant papers should have PDFs stored inside your database. You can get Zotero to automatically do this by highlighting the references you wish to retrieve, right clicking, and selecting _"Find Available PDFs"_. You can also manually drag-and-drop PDFs onto each reference. To download papers, you need to get an API key for your account. 1. Get your library ID, and set it as the environment variable `ZOTERO_USER_ID`. - For personal libraries, this ID is given [here](https://www.zotero.org/settings/security#applications) at the part "_Your userID for use in API calls is XXXXXX_". - For group libraries, go to your group page `https://www.zotero.org/groups/groupname`, and hover over the settings link. The ID is the integer after /groups/. (_h/t pyzotero!_) 2. Create a new API key [here](https://www.zotero.org/settings/keys/new) and set it as the environment variable `ZOTERO_API_KEY`. - The key will need read access to the library. With this, we can download papers from our library and add them to PaperQA2: ```python from paperqa import Docs from paperqa.contrib import ZoteroDB docs = Docs() zotero = ZoteroDB(library_type="user") # "group" if group library for item in zotero.iterate(limit=20): if item.num_pages > 30: continue # skip long papers await docs.aadd(item.pdf, docname=item.key) ``` which will download the first 20 papers in your Zotero database and add them to the `Docs` object. We can also do specific queries of our Zotero library and iterate over the results: ```python for item in zotero.iterate( q="large language models", qmode="everything", sort="date", direction="desc", limit=100, ): print("Adding", item.title) await docs.aadd(item.pdf, docname=item.key) ``` You can read more about the search syntax by typing `zotero.iterate?` in IPython. ## Paper Scraper If you want to search for papers outside of your own collection, I've found an unrelated project called [paper-scraper](https://github.com/blackadad/paper-scraper) that looks like it might help. But beware, this project looks like it uses some scraping tools that may violate publisher's rights or be in a gray area of legality. ```python from paperqa import Docs keyword_search = "bispecific antibody manufacture" papers = paperscraper.search_papers(keyword_search) docs = Docs() for path, data in papers.items(): try: await docs.aadd(path) except ValueError as e: # sometimes this happens if PDFs aren't downloaded or readable print("Could not read", path, e) session = await docs.aquery( "What manufacturing challenges are unique to bispecific antibodies?" ) print(session) ``` ================================================ FILE: packages/paper-qa-docling/LICENSE ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2025 FutureHouse Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ================================================ FILE: packages/paper-qa-docling/README.md ================================================ # paper-qa-pypdf [![GitHub](https://img.shields.io/badge/GitHub-black?logo=github&logoColor=white)](https://github.com/Future-House/paper-qa/tree/main/packages/paper-qa-docling) [![PyPI version](https://badge.fury.io/py/paper-qa-docling.svg)](https://badge.fury.io/py/paper-qa-docling) [![tests](https://github.com/Future-House/paper-qa/actions/workflows/tests.yml/badge.svg)](https://github.com/Future-House/paper-qa) ![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg) ![PyPI Python Versions](https://img.shields.io/pypi/pyversions/paper-qa-docling) PDF reading code backed by [Docling](https://github.com/docling-project/docling). docling logo If you use this reader library in your projects, Docling requests you consider citing them: ================================================ FILE: packages/paper-qa-docling/pyproject.toml ================================================ [build-system] build-backend = "setuptools.build_meta" requires = ["setuptools>=64", "setuptools_scm>=8"] [project] authors = [ {email = "hello@futurehouse.org", name = "FutureHouse technical staff"}, ] classifiers = [ "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] dependencies = [ "docling-core>=2", # Pin for v2 with DocItem, TextItem, etc. "docling>=2.74", # Pin for moving to DoclingParseDocumentBackend in https://github.com/docling-project/docling/pull/2872 "paper-qa", ] description = "PaperQA readers implemented using Docling" dynamic = ["version"] license = {file = "LICENSE"} maintainers = [ {email = "jamesbraza@gmail.com", name = "James Braza"}, {email = "michael.skarlinski@gmail.com", name = "Michael Skarlinski"}, {email = "white.d.andrew@gmail.com", name = "Andrew White"}, ] name = "paper-qa-docling" readme = "README.md" requires-python = ">=3.11" [project.optional-dependencies] dev = [ "docling-ibm-models[opencv-python-headless]>=3.10.0", # Lower pin and specify opencv after https://github.com/docling-project/docling-ibm-models/pull/130 "fhlmi>=0.39", # Pin for bytes_to_string "paper-qa>=5.23", # Pin for PDFParserFn "pytest-asyncio", "pytest>=8", # Pin to keep recent ] [tool.ruff] extend = "../../pyproject.toml" [tool.setuptools.packages.find] where = ["src"] [tool.setuptools_scm] root = "../.." version_file = "src/paperqa_docling/version.py" ================================================ FILE: packages/paper-qa-docling/src/paperqa_docling/__init__.py ================================================ """Docling-backed readers for PaperQA.""" from .reader import parse_pdf_to_pages __all__ = ["parse_pdf_to_pages"] ================================================ FILE: packages/paper-qa-docling/src/paperqa_docling/py.typed ================================================ ================================================ FILE: packages/paper-qa-docling/src/paperqa_docling/reader.py ================================================ import collections import io import json import os from collections.abc import Mapping from importlib.metadata import version from pathlib import Path from typing import TYPE_CHECKING, Any, cast import docling from docling.backend.docling_parse_backend import DoclingParseDocumentBackend from docling.datamodel.base_models import ConversionStatus from docling.datamodel.pipeline_options import PdfPipelineOptions from docling.datamodel.settings import DEFAULT_PAGE_RANGE from docling.document_converter import DocumentConverter, InputFormat, PdfFormatOption from docling.exceptions import ConversionError from docling.pipeline.standard_pdf_pipeline import StandardPdfPipeline from docling_core.types.doc import ( DescriptionAnnotation, DocItem, FormulaItem, PictureItem, TableItem, TextItem, ) from paperqa.types import ParsedMedia, ParsedMetadata, ParsedText from paperqa.utils import ImpossibleParsingError if TYPE_CHECKING: from docling.backend.abstract_backend import AbstractDocumentBackend DOCLING_VERSION = version(docling.__name__) DOCLING_IMAGES_SCALE_PER_DPI = ( 72 # SEE: https://github.com/docling-project/docling/issues/2405 ) def parse_pdf_to_pages( # noqa: PLR0912 path: str | os.PathLike, page_size_limit: int | None = None, page_range: int | tuple[int, int] | None = None, parse_media: bool = True, pipeline_cls: type = StandardPdfPipeline, dpi: int | None = None, custom_pipeline_options: Mapping[str, Any] | None = None, backend: "type[AbstractDocumentBackend]" = DoclingParseDocumentBackend, **_, ) -> ParsedText: """Parse a PDF. Args: path: Path to the PDF file to parse. page_size_limit: Sensible character limit one page's text, used to catch bad PDF reads. parse_media: Flag to also parse media (e.g. images, tables). pipeline_cls: Optional custom pipeline class for document conversion. Default is Docling's standard PDF pipeline. dpi: Optional DPI (dots per inch) for image resolution, if left unspecified Docling's default 1.0 scale will be employed. custom_pipeline_options: Optional keyword arguments to use to construct the PDF pipeline's options. page_range: Optional start_page or two-tuple of inclusive (start_page, end_page) to parse only specific pages, where pages are one-indexed. Leaving as the default of None will parse all pages. backend: PDF backend class to use for parsing, defaults to docling-parse. **_: Thrown away kwargs. """ path = Path(path) if parse_media: pipeline_options = PdfPipelineOptions( generate_picture_images=True, generate_table_images=True, images_scale=1.0 if dpi is None else dpi / DOCLING_IMAGES_SCALE_PER_DPI, **(custom_pipeline_options or {}), ) else: pipeline_options = PdfPipelineOptions(**(custom_pipeline_options or {})) converter = DocumentConverter( format_options={ InputFormat.PDF: PdfFormatOption( pipeline_options=pipeline_options, pipeline_cls=pipeline_cls, backend=backend, ) } ) try: # NOTE: this conversion is synchronous, because many backends only support sync # https://github.com/docling-project/docling/issues/2229#issuecomment-3269019929 result = converter.convert( path, page_range=( (page_range, page_range) if isinstance(page_range, int) else (page_range or DEFAULT_PAGE_RANGE) ), ) except ConversionError as exc: raise ImpossibleParsingError( f"PDF reading via {docling.__name__} failed on the PDF at path {path!r}," " likely this PDF file is corrupt." ) from exc if result.status != ConversionStatus.SUCCESS: raise ImpossibleParsingError( f"Docling conversion failed with status {result.status.value!r}" f" for the PDF at path {path!r}." ) doc = result.document # NOTE: the list value here is a two-item list of page text, page media. # It's mutable so we can append text and media as found content: dict[str, list] = collections.defaultdict(lambda: ["", []]) total_length = count_media = 0 for item, __ in doc.iterate_items(): if not isinstance(item, DocItem) or not item.prov: raise NotImplementedError( f"Didn't yet handle the shape of node item {item}." ) # NOTE: docling pages are 1-indexed page_nums = [prov.page_no for prov in item.prov] if isinstance(item, TextItem | FormulaItem): # Handle items with text item_text = item.text if not item_text and isinstance(item, FormulaItem) and item.orig: # Sometimes the sanitization of formula text fails, so use the original item_text = item.orig for page_num in page_nums: new_text = ( item_text if not content[str(page_num)][0] else "\n\n" + item_text ) total_length += len(new_text) if page_size_limit and total_length > page_size_limit: raise ImpossibleParsingError( f"The text in page {page_num} was {total_length} chars long," f" which exceeds the {page_size_limit} char limit" f" for the PDF at path {path}." ) content[str(page_num)][0] += new_text if parse_media and isinstance( # Handle images and formulae item, PictureItem | FormulaItem ): image_data = item.get_image(doc) if image_data: try: (page_num,) = page_nums except ValueError as exc: raise NotImplementedError( f"Picture item spanning multiple pages {page_nums}" " is not yet handled." ) from exc # Convert PIL Image to bytes (PNG format) img_bytes = io.BytesIO() image_data.save(img_bytes, format="PNG") img_bytes.seek(0) # Reset pointer before read to avoid empty data media_metadata = { "type": "formula" if isinstance(item, FormulaItem) else "picture", "width": image_data.width, "height": image_data.height, "bbox": item.prov[0].bbox.as_tuple(), "images_scale": pipeline_options.images_scale, } annotations = [ x for x in getattr(item, "annotations", []) if isinstance(x, DescriptionAnnotation) ] if len(annotations) == 1: # We don't set this text in ParsedMedia.text because it's # a synthetic description, not actually text in the PDF, # and we don't want citations going to synthetic text media_metadata.update( { "description_text": annotations[0].text, "description_provenance": annotations[0].provenance, } ) elif len(annotations) > 1: raise NotImplementedError( f"Didn't yet handle 2+ picture description annotations {annotations}." ) media_metadata["info_hashable"] = json.dumps( { k: ( v if k != "bbox" # Enables bbox deduplication based on whole pixels, # since <1-px differences are just noise else tuple(round(x) for x in cast(tuple, v)) ) for k, v in media_metadata.items() }, sort_keys=True, ) # Add page number after info_hashable so differing pages # don't break the cache key media_metadata["page_num"] = page_num content[str(page_num)][1].append( ParsedMedia( index=len(content[str(page_num)][1]), data=img_bytes.read(), info=media_metadata, ) ) count_media += 1 elif parse_media and isinstance(item, TableItem): # Handle tables table_image_data = item.get_image(doc) if table_image_data: try: (page_num,) = page_nums except ValueError as exc: raise NotImplementedError( f"Table item spanning multiple pages {page_nums}" " is not yet handled." ) from exc img_bytes = io.BytesIO() table_image_data.save(img_bytes, format="PNG") img_bytes.seek(0) # Reset pointer before read to avoid empty data media_metadata = { "type": "table", "width": table_image_data.width, "height": table_image_data.height, "bbox": item.prov[0].bbox.as_tuple(), "images_scale": pipeline_options.images_scale, } media_metadata["info_hashable"] = json.dumps( { k: ( v if k != "bbox" # Enables bbox deduplication based on whole pixels, # since <1-px differences are just noise else tuple(round(x) for x in cast(tuple, v)) ) for k, v in media_metadata.items() }, sort_keys=True, ) # Add page number after info_hashable so differing pages # don't break the cache key media_metadata["page_num"] = page_num content[str(page_num)][1].append( ParsedMedia( index=len(content[str(page_num)][1]), data=img_bytes.read(), text=item.export_to_markdown(doc), info=media_metadata, ) ) count_media += 1 multimodal_string = f"|multimodal|images_scale={pipeline_options.images_scale}" + ( "" if not custom_pipeline_options else f"|options={custom_pipeline_options}" ) metadata = ParsedMetadata( parsing_libraries=[f"{docling.__name__} ({DOCLING_VERSION})"], total_parsed_text_length=total_length, count_parsed_media=count_media, name=( f"pdf|pipeline={pipeline_cls.__name__}" f"|page_range={str(page_range).replace(' ', '')}" # Remove space in tuple f"|backend={backend.__name__}" f"{multimodal_string if parse_media else ''}" ), ) return ParsedText( # Convert content from list to 2-tuple for return content={ pgn: text if not parse_media else (text, images) for pgn, (text, images) in sorted(content.items(), key=lambda x: int(x[0])) }, metadata=metadata, ) ================================================ FILE: packages/paper-qa-docling/tests/test_paperqa_docling.py ================================================ import base64 import json import os import re import time from pathlib import Path from typing import cast import pytest from lmi.utils import bytes_to_string from paperqa import Doc, Docs from paperqa.readers import PDFParserFn, chunk_pdf from paperqa.utils import ImpossibleParsingError, get_citation_ids from paperqa_docling import parse_pdf_to_pages REPO_ROOT = Path(__file__).parents[3] STUB_DATA_DIR = REPO_ROOT / "tests" / "stub_data" @pytest.mark.timeout(60 * 7) # Extended from global 5-min timeout @pytest.mark.asyncio async def test_parse_pdf_to_pages() -> None: assert isinstance(parse_pdf_to_pages, PDFParserFn) filepath = STUB_DATA_DIR / "pasa.pdf" parsed_text = parse_pdf_to_pages(filepath) assert isinstance(parsed_text.content, dict) assert len(parsed_text.content) == 15, "Expected all pages to be parsed" assert "1" in parsed_text.content, "Parsed text should contain page 1" assert isinstance(parsed_text.content["1"], tuple) p1_text = parsed_text.content["1"][0] # Weird spaces are because 'Pa S a' is bolded in the original PDF matches = re.findall( r"Abstract\n+We introduce PaSa, an advanced Pa ?per S ?e ?a ?rch" r" agent powered by large language models\.", p1_text, ) assert ( len(matches) == 1 ), f"Parsing failed to handle abstract in {parsed_text.content['1'][0]}." assert ( p1_text.count("outperforms existing") == 1 ), "Test expects one match of this substring" col_1_bottom_idx = p1_text.index("outperforms existing") assert ( p1_text.count("address fine-grained") == 1 ), "Test expects one match of this substring" col_2_top_idx = p1_text.index("address fine-grained") assert col_1_bottom_idx < col_2_top_idx, "Expected column ordering to be correct" # Check the images in Figure 1 assert not isinstance(parsed_text.content["2"], str) p2_text, p2_media = parsed_text.content["2"] assert "Figure 1" in p2_text, "Expected Figure 1 title" assert "Crawler" in p2_text, "Expected Figure 1 contents" (p2_image,) = [m for m in p2_media if m.info["type"] == "picture"] assert p2_image.index == 0 assert p2_image.info["page_num"] == 2 assert p2_image.info["height"] == pytest.approx(130, rel=0.1) assert p2_image.info["width"] == pytest.approx(452, rel=0.1) p2_bbox = p2_image.info["bbox"] assert isinstance(p2_bbox, tuple) for i, value in enumerate((71, 643.90, 522, 770.35)): assert p2_bbox[i] == pytest.approx(value, rel=0.1) assert isinstance(p2_image.data, bytes) # Check the image is valid base64 base64_data = bytes_to_string(p2_image.data) assert base64_data assert base64.b64decode(base64_data, validate=True) == p2_image.data # Check we can round-trip serialize the image serde_p2_image = type(p2_image).model_validate_json(p2_image.model_dump_json()) assert serde_p2_image == p2_image # Check useful attributes are present and are JSON serializable json.dumps(p2_image.info) for attr in ("width", "height"): assert ( p2_image.info[attr] == serde_p2_image.info[attr] ), "Expected serialization to match original" dim = p2_image.info[attr] assert isinstance(dim, int | float) assert dim > 0, "Edge length should be positive" # Check Figure 1 can be used to answer questions doc = Doc( docname="He2025", dockey="stub", citation=( 'He, Yichen, et al. "PaSa: An LLM Agent for Comprehensive Academic Paper' ' Search." *arXiv*, 2025, arXiv:2501.10120v1. Accessed 2025.' ), ) texts = chunk_pdf(parsed_text, doc=doc, chunk_chars=3000, overlap=100) fig_1_text = texts[1] assert ( "Figure 1: Architecture of PaSa" in fig_1_text.text ), "Expecting Figure 1 for the test to work" assert fig_1_text.media, "Expecting media to test multimodality" fig_1_text.text = "stub" # Replace text to confirm multimodality works docs = Docs() assert await docs.aadd_texts(texts=[fig_1_text], doc=doc) for query, answer_checks in ( ("What actions can the Crawler take?", [(("search", "expand", "stop"), 2)]), ("What actions can the Selector take?", [(("select", "drop"), 2)]), ( "How many User Query blue boxes are there, and what are they connected to?", [r"two|2|(?=.*paper queue)(?=.*selector)"], ), ): session = await docs.aquery(query=query) assert session.contexts, "Expected contexts to be generated" assert all( c.text.text == fig_1_text.text and c.text.media == fig_1_text.media for c in session.contexts ), "Expected context to reuse Figure 1's text and media" # Remove citations so numeric assertions don't have false positives raw_answer_no_citations = session.raw_answer for key in get_citation_ids(session.raw_answer): raw_answer_no_citations = raw_answer_no_citations.replace(f"({key})", "") for check in answer_checks: answer_lower = raw_answer_no_citations.lower() if isinstance(check, str): assert re.search( check, answer_lower ), f"Expected {raw_answer_no_citations=} to match pattern {check!r}" else: substrings, min_count = cast(tuple[tuple[str, ...], int], check) assert ( sum(x in answer_lower for x in substrings) >= min_count ), f"Expected {raw_answer_no_citations=} to have {substrings} present" # Check the no-media behavior parsed_text_no_media = parse_pdf_to_pages(filepath, parse_media=False) assert isinstance(parsed_text_no_media.content, dict) assert all(isinstance(c, str) for c in parsed_text_no_media.content.values()) assert len(parsed_text_no_media.content) == 15, "Expected all pages to be parsed" # Check our ability to get a high DPI parsed_text_high_dpi = parse_pdf_to_pages(filepath, dpi=144) assert isinstance(parsed_text_high_dpi.content, dict) assert len(parsed_text_high_dpi.content) == 15, "Expected all pages to be parsed" assert not isinstance(parsed_text_high_dpi.content["2"], str) p2_text_high_dpi, p2_media_high_dpi = parsed_text_high_dpi.content["2"] assert "Figure 1" in p2_text_high_dpi, "Expected Figure 1 title" assert "Crawler" in p2_text_high_dpi, "Expected Figure 1 contents" (p2_image_high_dpi,) = [m for m in p2_media_high_dpi if m.info["type"] == "picture"] assert p2_image_high_dpi.info["images_scale"] == 2 assert p2_image_high_dpi.info["height"] / p2_image.info["height"] == pytest.approx( # type: ignore[operator] 2, abs=0.01 ) assert p2_image_high_dpi.info["width"] / p2_image.info["width"] == pytest.approx( # type: ignore[operator] 2, abs=0.01 ) # Check metadata for pt in (parsed_text, parsed_text_no_media, parsed_text_high_dpi): (parsing_library,) = pt.metadata.parsing_libraries assert "docling" in parsing_library assert pt.metadata.name assert "pdf" in pt.metadata.name assert "page_range=None" in pt.metadata.name # Check commonalities across all modes assert ( len(parsed_text.content) == len(parsed_text_no_media.content) == len(parsed_text_high_dpi.content) ), "All modes should parse the same number of pages" def test_page_range() -> None: filepath = STUB_DATA_DIR / "pasa.pdf" parsed_text_p1 = parse_pdf_to_pages(filepath, page_range=1) assert isinstance(parsed_text_p1.content, dict) assert list(parsed_text_p1.content) == ["1"] assert parsed_text_p1.metadata.name assert "page_range=1" in parsed_text_p1.metadata.name parsed_text_p1_2 = parse_pdf_to_pages(filepath, page_range=(1, 2)) assert isinstance(parsed_text_p1_2.content, dict) assert list(parsed_text_p1_2.content) == ["1", "2"] assert parsed_text_p1_2.metadata.name assert "page_range=(1,2)" in parsed_text_p1_2.metadata.name # NOTE: exceeds 15-page PDF length parsed_text_p1_20 = parse_pdf_to_pages(filepath, page_range=(1, 20)) assert isinstance(parsed_text_p1_20.content, dict) assert list(parsed_text_p1_20.content) == [ str(i) for i in range(1, 15 + 1) ], "Expected pages to be truncated to 15 or us to get blown up" assert parsed_text_p1_20.metadata.name assert "page_range=(1,20)" in parsed_text_p1_20.metadata.name def test_media_deduplication() -> None: parsed_text = parse_pdf_to_pages(STUB_DATA_DIR / "duplicate_media.pdf") assert isinstance(parsed_text.content, dict) assert len(parsed_text.content) == 5, "Expected full PDF read" all_media = [m for _, media in parsed_text.content.values() for m in media] # type: ignore[misc] all_images = [m for m in all_media if m.info.get("type") == "picture"] # We allow for one table to be misinterpreted as an image, and one logo to be missed assert ( 3 * 5 - 1 <= len(all_images) <= 3 * 5 + 1 ), "Expected each image (one/page) and equation (one/page) to be read" assert ( len({m for m in all_images if cast(int, m.info["page_num"]) > 1}) <= 3 ), "Expected images/equations on all pages beyond 1 to be deduplicated" all_tables = [m for m in all_media if m.info.get("type") == "table"] assert len(all_tables) == 5, "Expected each table (one/page) to be read" assert ( len({m for m in all_tables if cast(int, m.info["page_num"]) > 1}) <= 2 ), "Expected tables on all pages beyond 1 to be deduplicated" def test_page_size_limit_denial() -> None: with pytest.raises(ImpossibleParsingError, match="char limit"): parse_pdf_to_pages(STUB_DATA_DIR / "paper.pdf", page_size_limit=10) # chars def test_invalid_pdf_is_denied(tmp_path) -> None: # This PDF content (actually it's a 404 HTML page) was seen with open access # in June 2025, so let's make sure it's denied bad_pdf_content = """ 404 Not Found

404 Not Found


nginx
""" bad_pdf_path = tmp_path / "bad.pdf" bad_pdf_path.write_text(bad_pdf_content) with pytest.raises(ImpossibleParsingError, match="corrupt"): parse_pdf_to_pages(bad_pdf_path) def test_nonexistent_file_failure() -> None: filename = "/nonexistent/path/file.pdf" with pytest.raises(FileNotFoundError, match=filename): parse_pdf_to_pages(filename) def test_table_parsing() -> None: filepath = STUB_DATA_DIR / "influence.pdf" parsed_text = parse_pdf_to_pages(filepath) assert isinstance(parsed_text.content, dict) assert all( t and t[0] != "\n" and t[-1] != "\n" for t in parsed_text.content.values() ), "Expected no leading/trailing newlines in parsed text" assert "1" in parsed_text.content, "Parsed text should contain page 1" all_tables = { i: [m for m in pagenum_media[1] if m.info["type"] == "table"] for i, pagenum_media in parsed_text.content.items() if isinstance(pagenum_media, tuple) } all_tables = {k: v for k, v in all_tables.items() if v} assert ( sum(len(tables) for tables in all_tables.values()) >= 2 ), "Expected a few tables to be parsed for assertions to work" IN_GITHUB_ACTIONS: bool = os.getenv("GITHUB_ACTIONS") == "true" def test_document_timeout_denial() -> None: tic = time.perf_counter() with pytest.raises(ImpossibleParsingError, match="partial"): parse_pdf_to_pages( STUB_DATA_DIR / "pasa.pdf", custom_pipeline_options={"document_timeout": 1}, ) if not IN_GITHUB_ACTIONS: # GitHub Actions runners are too noisy in timing # On 10/3/2025 on a MacBook M3 Pro with 36-GB RAM, reading PaSa took 18.7-sec assert ( time.perf_counter() - tic < 10 ), "Expected document timeout to have taken much less time than a normal read" def test_equation_parsing() -> None: parsed_text = parse_pdf_to_pages(STUB_DATA_DIR / "duplicate_media.pdf") assert isinstance(parsed_text.content, dict) assert isinstance(parsed_text.content["1"], tuple) p1_text, p1_media = parsed_text.content["1"] # SEE: https://regex101.com/r/pyOHLq/1 assert re.search( r"[_*]*E[_*]* ?= ?[_*]*mc[_*]*(?:)?[ ^]?[2²] ?(?:<\/sup>)?", p1_text ), "Expected inline equation in page 1 text" assert re.search(r"n ?\+ ?a", p1_text), "Expected block equation in page 1 text" assert p1_media ================================================ FILE: packages/paper-qa-nemotron/LICENSE ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2025 FutureHouse Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ================================================ FILE: packages/paper-qa-nemotron/README.md ================================================ # paper-qa-nemotron [![GitHub](https://img.shields.io/badge/GitHub-black?logo=github&logoColor=white)](https://github.com/Future-House/paper-qa/tree/main/packages/paper-qa-nemotron) [![tests](https://github.com/Future-House/paper-qa/actions/workflows/tests.yml/badge.svg)](https://github.com/Future-House/paper-qa) ![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg) ![PyPI Python Versions](https://img.shields.io/pypi/pyversions/paper-qa-nemotron) PDF reading code backed by [Nvidia's nemotron-parse VLM](https://build.nvidia.com/nvidia/nemotron-parse). For more info on nemotron-parse, check out: - Technical blog: - Hugging Face weights: - NIM and model card: - Support matrix: - API docs: - Cookbook: - NGC catalog: - AWS Marketplace: ## Installation ```bash pip install paper-qa[nemotron] # Or pip install paper-qa-nemotron ``` If you want to prompt nemotron-parse hosted on AWS SageMaker: ```bash pip install paper-qa-nemotron[sagemaker] ``` ## Getting Started To use nemotron-parse via the Nvidia API, set the `NVIDIA_API_KEY` environment variable. Then to directly access the reader: ```python from paperqa.types import ParsedText from paperqa_nemotron import parse_pdf_to_pages async def main(pdf_path) -> ParsedText: return await parse_pdf_to_pages(pdf_path) ``` Or use the reader within PaperQA: ```python from paperqa import Docs, PQASession, Settings from paperqa_nemotron import parse_pdf_to_pages async def main(pdf_path, question: str | PQASession) -> PQASession: settings = Settings(parsing={"parse_pdf": parse_pdf_to_pages}) docs = Docs() await docs.aadd(pdf_path, settings=settings) return await docs.aquery(question, settings=settings) ``` ================================================ FILE: packages/paper-qa-nemotron/pyproject.toml ================================================ [build-system] build-backend = "setuptools.build_meta" requires = ["setuptools>=64", "setuptools_scm>=8"] [project] authors = [ {email = "hello@futurehouse.org", name = "FutureHouse technical staff"}, ] classifiers = [ "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] dependencies = [ "Pillow", # Also comes from fhaviary's image extra "fhaviary[image]", "fhlmi>=0.27.0", # Pin for request_limited "litellm>=1.71.0", # Pin for aiohttp transport optimization "numpy", "paper-qa", "pypdfium2>=4.22.0", # Pin for PYPDFIUM_INFO addition "tenacity", ] description = "PaperQA reader implemented using Nvidia's nemotron-parse VLM API" dynamic = ["version"] license = {file = "LICENSE"} maintainers = [ {email = "jamesbraza@gmail.com", name = "James Braza"}, {email = "michael.skarlinski@gmail.com", name = "Michael Skarlinski"}, {email = "white.d.andrew@gmail.com", name = "Andrew White"}, ] name = "paper-qa-nemotron" readme = "README.md" requires-python = ">=3.11" [project.optional-dependencies] dev = [ "docling>=2.56", # Pin for EasyOCR deprecation "fhlmi>=0.39", # Pin for bytes_to_string "httpx-aiohttp", "paper-qa-nemotron[sagemaker,typing]", "paper-qa>=5.23", # Pin for PDFParserFn "pytest-asyncio", "pytest-recording", "pytest-rerunfailures", "pytest>=9", # Pin for pytest-subtests upstreaming "vcrpy>=8", # Pin for dropping unused requests support ] sagemaker = ["aiobotocore"] typing = [ "limits", "numpy", "types-Pillow", "types-aiobotocore", ] [tool.ruff] extend = "../../pyproject.toml" [tool.setuptools.packages.find] where = ["src"] [tool.setuptools_scm] root = "../.." version_file = "src/paperqa_nemotron/version.py" ================================================ FILE: packages/paper-qa-nemotron/src/paperqa_nemotron/__init__.py ================================================ """Nvidia nemotron-backed readers for PaperQA.""" from .reader import parse_pdf_to_pages __all__ = ["parse_pdf_to_pages"] ================================================ FILE: packages/paper-qa-nemotron/src/paperqa_nemotron/api.py ================================================ """ Driver for PaperQA using Nvidia's nemotron-parse VLM. For more info on nemotron-parse, check out: - Technical blog: https://developer.nvidia.com/blog/turn-complex-documents-into-usable-data-with-vlm-nvidia-nemotron-parse-1-1/ - Hugging Face weights: https://huggingface.co/nvidia/NVIDIA-Nemotron-Parse-v1.1 - Model card: https://build.nvidia.com/nvidia/nemotron-parse/modelcard - API docs: https://docs.nvidia.com/nim/vision-language-models/1.5.0/examples/nemotron-parse/overview.html#nemotron-parse-overview - Cookbook: https://github.com/NVIDIA-NeMo/Nemotron/blob/main/usage-cookbook/Nemotron-Parse-v1.1/build_general_usage_cookbook.ipynb - AWS Marketplace: https://aws.amazon.com/marketplace/pp/prodview-ny2ngku2i4ge6 """ import contextlib import http import json import logging import os from enum import StrEnum, unique from typing import ( TYPE_CHECKING, Annotated, Literal, Self, TypeAlias, assert_never, cast, overload, ) from unittest.mock import patch import litellm from aviary.core import Message, ToolCall from lmi.rate_limiter import GLOBAL_LIMITER, GLOBAL_RATE_LIMITER_TIMEOUT from pydantic import ( AfterValidator, BaseModel, Field, TypeAdapter, ValidationError, ValidationInfo, ) from tenacity import ( RetryCallState, before_sleep_log, retry, retry_any, retry_if_exception, retry_if_exception_type, stop_after_attempt, wait_exponential, ) try: from aiobotocore.session import get_session except ImportError: get_session = None # type: ignore[assignment] if TYPE_CHECKING: import numpy as np from limits import RateLimitItem logger = logging.getLogger(__name__) NVIDIA_API_NEMOTRON_PARSE_RATE_LIMIT = ( "40 per 1 minute" # Default rate for Nvidia's API ) class NemotronLengthError(ValueError): r""" Error for nemotron-parse running out of context, indicated by the 'length' finish reason. This 'length' finish reason comes from the Nvidia NIM wrapping nemotron-parse version 1.1 when the model starts babbling (e.g. repeating '\\n'). It's been seen with the markdown_bbox tool on large figures. Retrying is a possible method to skirt this error, but it's a bad idea as a 'length' finish reason means nemotron-parse ran out of context, and retrying until success just provides a flawed output. """ class NemotronBBoxError(ValueError): """ Error for nemotron-parse returning an invalid bounding box. Examples include values outside of [0, 1] or a non-positive gap between min and max. """ NemotronParseToolName: TypeAlias = Literal[ "markdown_bbox", "markdown_no_bbox", "detection_only" ] class NemotronParseBBox(BaseModel): """ Bounding box, values target the range [0, 1], origin is upper left corner. In practice, nemotron-parse commonly gives values outside of [0, 1] at temperature of 1, but a re-request can get values inside [0, 1]. """ @staticmethod def validate_min_less_than_max(v: float, info: ValidationInfo) -> float: if info.field_name in {"xmax", "ymax"}: min_field_name = info.field_name.replace("max", "min") with contextlib.suppress(KeyError): if info.data[min_field_name] >= v: raise ValueError( f"{min_field_name} must be less than {info.field_name}." ) return v xmin: float = Field( description="Lower bound, when looking right across (horizontally) the page.", examples=[0.33], ge=0, le=1, ) xmax: Annotated[ float, Field( description="Upper bound, when looking right across (horizontally) the page.", examples=[0.65], ge=0, le=1, ), AfterValidator(validate_min_less_than_max), ] ymin: float = Field( description="Lower bound, when looking down (vertically) the page.", examples=[0.26], ge=0, le=1, ) ymax: Annotated[ float, Field( description="Upper bound, when looking down (vertically) the page.", examples=[0.34], ge=0, le=1, ), AfterValidator(validate_min_less_than_max), ] @classmethod def from_coordinates( cls, coords: tuple[float, float, float, float] ) -> "NemotronParseBBox": """Create a bbox from a (xmin, xmax, ymin, ymax) tuple.""" return cls(xmin=coords[0], xmax=coords[1], ymin=coords[2], ymax=coords[3]) def to_page_coordinates( self, height: float, width: float ) -> tuple[float, float, float, float]: return ( self.xmin * width, self.ymin * height, self.xmax * width, self.ymax * height, ) def iou(self, other: "NemotronParseBBox") -> float: """Calculate the Intersection over Union (IoU) with another bounding box. Args: other: The other bounding box to compare with. Returns: IoU score in range [0, 1], where 1 means perfect overlap. """ # Calculate intersection coordinates inter_xmin = max(self.xmin, other.xmin) inter_ymin = max(self.ymin, other.ymin) inter_xmax = min(self.xmax, other.xmax) inter_ymax = min(self.ymax, other.ymax) # Calculate intersection area (0 if no overlap) and then the union area intersection = max(0, inter_xmax - inter_xmin) * max(0, inter_ymax - inter_ymin) self_area = (self.xmax - self.xmin) * (self.ymax - self.ymin) other_area = (other.xmax - other.xmin) * (other.ymax - other.ymin) union = self_area + other_area - intersection return intersection / union if union > 0 else 0.0 def union(self, other: "NemotronParseBBox") -> Self: """Create a superset bounding box that contains both bounding boxes. Args: other: The other bounding box to merge with. Returns: A new bounding box that is a "superset" box containing both inputs. """ return type(self)( xmin=min(self.xmin, other.xmin), ymin=min(self.ymin, other.ymin), xmax=max(self.xmax, other.xmax), ymax=max(self.ymax, other.ymax), ) @unique class NemotronParseClassification(StrEnum): """ Classes that can come from nemotron-parse, values match the API. SEE: https://docs.nvidia.com/nim/vision-language-models/1.2.0/examples/retriever/overview.html """ BIBLIOGRAPHY = "Bibliography" CAPTION = "Caption" # Table or picture FOOTNOTE = "Footnote" FORMULA = "Formula" LIST_ITEM = "List-item" # Numbered, alphanumeric, or bullet point PAGE_FOOTER = "Page-footer" PAGE_HEADER = "Page-header" PICTURE = "Picture" SECTION_HEADER = "Section-header" TABLE = "Table" TABLE_OF_CONTENTS = "TOC" TEXT = "Text" # Regular paragraph text TITLE = "Title" # These classifications will lead to parsing a media in addition to text CLASSIFICATIONS_WITH_MEDIA = { NemotronParseClassification.FORMULA, NemotronParseClassification.PICTURE, NemotronParseClassification.TABLE, } class NemotronParseAnnotatedBBox(BaseModel): """Payload for 'detection_only' tool.""" bbox: NemotronParseBBox type: NemotronParseClassification = Field( description="Possible classifications of the bbox." ) class NemotronParseMarkdown(BaseModel): """Payload for 'markdown_no_bbox' tool.""" text: str = Field(description="Markdown text.") class NemotronParseMarkdownBBox(NemotronParseAnnotatedBBox, NemotronParseMarkdown): """Payload for 'markdown_bbox' tool, or merges with results from detection_only.""" text: str | None = Field( # type: ignore[assignment] description="Markdown text, or None if from detection_only without text." ) @classmethod def merge_with_detection( cls, markdown_results: "list[NemotronParseMarkdownBBox]", detection_results: list[NemotronParseAnnotatedBBox], iou_threshold: float, ) -> "list[NemotronParseMarkdownBBox]": """Merge markdown_bbox and detection_only results using IoU-based matching. Args: markdown_results: markdown_bbox tool results. detection_results: detection_only tool results. iou_threshold: Minimum IoU (inclusive) to consider a match. Returns: Merged results. Text comes from markdown_bbox. Bounding boxes are a superset of: 1. Bounding boxes from markdown_bbox without an analog in detection_only. 2. Bounding boxes from detection_only without an analog in markdown_bbox. 3. Merged bounding boxes from both tools where IoU is at or above the threshold. """ merged: list[NemotronParseMarkdownBBox] = [] matched_detection_indices: set[int] = set() for md_result in markdown_results: best_iou = 0.0 best_detection: NemotronParseAnnotatedBBox | None = None best_detection_idx: int | None = None for idx, detection_result in enumerate(detection_results): if detection_result.type != md_result.type: continue # Only consider matching types iou = md_result.bbox.iou(detection_result.bbox) if iou > best_iou: best_iou = iou best_detection = detection_result best_detection_idx = idx if best_detection is not None and best_iou >= iou_threshold: # Create superset bbox containing both markdown and detection bboxes merged.append( cls( bbox=md_result.bbox.union(best_detection.bbox), type=md_result.type, text=md_result.text, ) ) matched_detection_indices.add(cast(int, best_detection_idx)) else: merged.append(md_result) # Add unmatched detection results without text for idx, detection_result in enumerate(detection_results): if idx not in matched_detection_indices: merged.append( cls( bbox=detection_result.bbox, type=detection_result.type, text=None, ) ) return merged MatrixNemotronParseAnnotatedBBox = TypeAdapter(list[list[NemotronParseAnnotatedBBox]]) VectorNemotronParseMarkdown = TypeAdapter(list[NemotronParseMarkdown]) MatrixNemotronParseMarkdownBBox = TypeAdapter(list[list[NemotronParseMarkdownBBox]]) def _is_litellm_timeout_with_408(exc: BaseException) -> bool: return ( isinstance(exc, litellm.Timeout) and exc.status_code == http.HTTPStatus.REQUEST_TIMEOUT ) # Exponential backoff for when hitting rate limits on Nvidia's API _NVIDIA_API_RETRY_WAIT = wait_exponential(multiplier=2, min=GLOBAL_RATE_LIMITER_TIMEOUT) def _wait_exponential_for_nvidia_api_retry(retry_state: RetryCallState) -> float: """Only apply exponential backoff for rate limit failure mode. Uses a Nvidia API rate limit-specific counter so backoff is based on consecutive rate limit failures, not overall attempt number. """ if retry_state.outcome is not None and isinstance( retry_state.outcome.exception(), TimeoutError ): # Track TimeoutError (Nvidia API rate limit) count separately timeout_count: int = getattr(retry_state, "_timeout_error_count", 0) + 1 retry_state._timeout_error_count = timeout_count # type: ignore[attr-defined] # Temporarily override attempt_number for wait_exponential calculation with patch.object(retry_state, "attempt_number", timeout_count): return _NVIDIA_API_RETRY_WAIT(retry_state) return 0 @overload async def _call_nvidia_api( image: "np.ndarray | str", tool_name: Literal["markdown_bbox"], api_key: str | None = None, api_base: str = ..., model_name: str = ..., **completion_kwargs, ) -> list[NemotronParseMarkdownBBox]: ... @overload async def _call_nvidia_api( image: "np.ndarray | str", tool_name: Literal["markdown_no_bbox"], api_key: str | None = None, api_base: str = ..., model_name: str = ..., **completion_kwargs, ) -> list[NemotronParseMarkdown]: ... @overload async def _call_nvidia_api( image: "np.ndarray | str", tool_name: Literal["detection_only"], api_key: str | None = None, api_base: str = ..., model_name: str = ..., **completion_kwargs, ) -> list[NemotronParseAnnotatedBBox]: ... @retry( retry=retry_any( retry_if_exception_type(NemotronBBoxError), retry_if_exception_type(TimeoutError), # Hitting rate limits retry_if_exception(_is_litellm_timeout_with_408), # Inference timeout ), stop=stop_after_attempt(3), wait=_wait_exponential_for_nvidia_api_retry, before_sleep=before_sleep_log(logger, logging.WARNING), ) async def _call_nvidia_api( image: "np.ndarray | str", tool_name: NemotronParseToolName, api_key: str | None = None, api_base: str = "https://integrate.api.nvidia.com/v1", model_name: str = "nvidia/nemotron-parse", rate_limit: "RateLimitItem | str | None" = NVIDIA_API_NEMOTRON_PARSE_RATE_LIMIT, **completion_kwargs, ) -> ( list[NemotronParseMarkdownBBox] | list[NemotronParseMarkdown] | list[NemotronParseAnnotatedBBox] ): """Call the Nvidia API with an image via LiteLLM. Args: image: Image to parse, either a numpy array or a pre-encoded base64 data URI. tool_name: Name of the nemotron-parse tool. api_key: Optional API key for Nvidia, default uses the NVIDIA_API_KEY env var. api_base: API base URL to pass to the completion, default uses Nvidia API's expected base URL. model_name: Model name to pass to the completion, default uses Nvidia API's expected model name. rate_limit: Optional rate limit key for rate limiting, default complies with Nvidia API's nemotron-parse limit. completion_kwargs: Keyword arguments to pass to the completion. Returns: Parsed response from the API. """ await GLOBAL_LIMITER.try_acquire( ("client|request", "nvidia/nemotron-parse"), rate_limit=rate_limit ) if api_key is None: api_key = os.environ["NVIDIA_API_KEY"] if isinstance(image, str): image_data: str = image else: image_data = Message.create_message(images=[image]).model_dump()["content"][0][ "image_url" ]["url"] tool_spec = ToolCall.from_name(tool_name).model_dump( exclude={"id": True, "function": {"arguments"}} ) response = await litellm.acompletion( model=model_name, messages=[{"role": "user", "content": f''}], tools=[tool_spec], tool_choice=tool_spec, api_key=api_key, api_base=api_base, # Explicitly specify OpenAI-compatible provider over Nvidia NIM provider, # so this works with both Nvidia API and DGX Cloud Lepton custom_llm_provider=litellm.types.utils.LlmProviders.CUSTOM_OPENAI, **completion_kwargs, ) if ( not isinstance(response, litellm.ModelResponse) or len(response.choices) != 1 or not isinstance(response.choices[0], litellm.Choices) ): raise NotImplementedError( f"Didn't yet handle choices shape of model response {response}." ) if response.choices[0].finish_reason == "length": image_desc = ( "(pre-encoded)" if isinstance(image, str) else f"of shape {image.shape}" ) raise NemotronLengthError( f"Model response {response} from tool {tool_name!r} indicates the input" f" image {image_desc} is too large or the model started babbling.", response.choices[0], # Include if callers want ) if ( response.choices[0].finish_reason != "tool_calls" or response.choices[0].message.tool_calls is None or len(response.choices[0].message.tool_calls) != 1 ): raise NotImplementedError( f"Didn't yet handle choice shape of model response {response}." ) args_json = response.choices[0].message.tool_calls[0]["function"]["arguments"] try: if tool_name == "markdown_bbox": (response,) = MatrixNemotronParseMarkdownBBox.validate_json(args_json) elif tool_name == "markdown_no_bbox": response = VectorNemotronParseMarkdown.validate_json(args_json) elif tool_name == "detection_only": (response,) = MatrixNemotronParseAnnotatedBBox.validate_json(args_json) else: assert_never(tool_name) except ValidationError as exc: raise NemotronBBoxError( f"nemotron-parse response {args_json} from tool {tool_name!r}" " has invalid bounding box." ) from exc return response @overload async def _call_sagemaker_api( image: "np.ndarray | str", tool_name: Literal["markdown_bbox"], endpoint_name: str = ..., aws_region: str = ..., model_name: str = ..., **completion_kwargs, ) -> list[NemotronParseMarkdownBBox]: ... @overload async def _call_sagemaker_api( image: "np.ndarray | str", tool_name: Literal["markdown_no_bbox"], endpoint_name: str = ..., aws_region: str = ..., model_name: str = ..., **completion_kwargs, ) -> list[NemotronParseMarkdown]: ... @overload async def _call_sagemaker_api( image: "np.ndarray | str", tool_name: Literal["detection_only"], endpoint_name: str = ..., aws_region: str = ..., model_name: str = ..., **completion_kwargs, ) -> list[NemotronParseAnnotatedBBox]: ... @retry( retry=retry_if_exception_type(NemotronBBoxError), stop=stop_after_attempt(3), before_sleep=before_sleep_log(logger, logging.WARNING), ) async def _call_sagemaker_api( image: "np.ndarray | str", tool_name: NemotronParseToolName, endpoint_name: str = "nemotron-parse", aws_region: str = "us-west-2", model_name: str = "nvidia/nemotron-parse", **completion_kwargs, ) -> ( list[NemotronParseMarkdownBBox] | list[NemotronParseMarkdown] | list[NemotronParseAnnotatedBBox] ): """Call the AWS SageMaker API with an image via aiobotocore. Args: image: Image to parse, either a numpy array or a pre-encoded base64 data URI. tool_name: Name of the nemotron-parse tool. endpoint_name: Name of the AWS SageMaker endpoint, default assumes the name is 'nemotron-parse'. aws_region: AWS region where the endpoint is deployed, defaults to us-west-2. model_name: Model name to pass to the completion, default uses AWS Marketplace container's expected model name. completion_kwargs: Keyword arguments to pass to the endpoint. Returns: Parsed response from the API. """ # NOTE: since LiteLLM's AWS SageMaker driver does things like: # - Not supporting tool calling per # https://github.com/BerriAI/litellm/blob/v1.79.3-stable/litellm/llms/sagemaker/completion/transformation.py#L70-L71 # - Converting requests to use "inputs" (aligning with Hugging Face API) per # https://github.com/BerriAI/litellm/blob/v1.79.3-stable/litellm/llms/sagemaker/completion/transformation.py#L182 # We just use aiobotocore directly here tool_spec = ToolCall.from_name(tool_name).model_dump( exclude={"id": True, "function": {"arguments"}} ) payload = { # noqa: FURB173 "model": model_name, "messages": [Message.create_message(images=[image]).model_dump(mode="json")], "tools": [tool_spec], "tool_choice": tool_spec, **completion_kwargs, } try: session = get_session() except TypeError as exc: raise ImportError( "Calling nemotron-parse on AWS SageMaker requires installing with the" " 'sagemaker' extra for the 'aiobotocore' package." " Please `pip install paper-qa-nemotron[sagemaker]`." ) from exc async with session.create_client( "sagemaker-runtime", region_name=aws_region ) as client: response = await client.invoke_endpoint( EndpointName=endpoint_name, ContentType="application/json", Body=json.dumps(payload), ) response_body = await response["Body"].read() response = litellm.ModelResponse.model_validate_json(response_body.decode()) if len(response.choices) != 1 or not isinstance( response.choices[0], litellm.Choices ): raise NotImplementedError( f"Didn't yet handle choices shape of model response {response}." ) if response.choices[0].finish_reason == "length": image_desc = ( "(pre-encoded)" if isinstance(image, str) else f"of shape {image.shape}" ) raise NemotronLengthError( f"Model response {response} from tool {tool_name!r} indicates the input" f" image {image_desc} is too large or the model started babbling.", response.choices[0], # Include if callers want ) if ( response.choices[0].finish_reason != "stop" or response.choices[0].message.tool_calls is None or len(response.choices[0].message.tool_calls) != 1 ): raise NotImplementedError( f"Didn't yet handle choice shape of model response {response}." ) args_json = response.choices[0].message.tool_calls[0]["function"]["arguments"] try: if tool_name == "markdown_bbox": (response,) = MatrixNemotronParseMarkdownBBox.validate_json(args_json) elif tool_name == "markdown_no_bbox": response = VectorNemotronParseMarkdown.validate_json(args_json) elif tool_name == "detection_only": (response,) = MatrixNemotronParseAnnotatedBBox.validate_json(args_json) else: assert_never(tool_name) except ValidationError as exc: raise NemotronBBoxError( f"nemotron-parse response {args_json} from tool {tool_name!r}" " has invalid bounding box." ) from exc return response ================================================ FILE: packages/paper-qa-nemotron/src/paperqa_nemotron/py.typed ================================================ ================================================ FILE: packages/paper-qa-nemotron/src/paperqa_nemotron/reader.py ================================================ """Reader for PaperQA using Nvidia's nemotron-parse VLM.""" import asyncio import io import json import logging import os from collections.abc import Awaitable, Mapping from concurrent.futures import ProcessPoolExecutor from contextlib import closing from typing import Any, Literal, cast import litellm import numpy as np import pypdfium2 as pdfium from aviary.core import encode_image_to_base64 from lmi.utils import gather_with_concurrency from paperqa.readers import PDFParserFn, resolve_page_range from paperqa.settings import ParsingSettings from paperqa.types import ParsedMedia, ParsedMetadata, ParsedText from paperqa.utils import ImpossibleParsingError from PIL import Image from tenacity import RetryError from paperqa_nemotron.api import ( CLASSIFICATIONS_WITH_MEDIA, NemotronBBoxError, NemotronLengthError, NemotronParseAnnotatedBBox, NemotronParseClassification, NemotronParseMarkdownBBox, _call_nvidia_api, _call_sagemaker_api, ) logger = logging.getLogger(__name__) WHITE_RGB = (255, 255, 255) # On DOI 10.1016/j.neuron.2011.12.023, 36-px was an insufficient border, # then on DOI 10.1111/jnc.13398, 42-px was an insufficient border, # then on DOI 10.1016/j.neuron.2011.12.023 (again), 56-px was an insufficient border, # all with temperature of 0 and DPI 300 DEFAULT_BORDER_SIZE = 60 # pixels def pad_image_with_border( image: "Image.Image", border: int | tuple[int, int] = DEFAULT_BORDER_SIZE, pad_color: float | tuple[float, ...] | str = WHITE_RGB, ) -> "tuple[Image.Image, int, int]": """Pad image with colored borders. Padding the border can improve nemotron-parse performance because now there's room to bound PDF artwork that extends to the edge of the PDF. Without a border margin, the bounding box can extend beyond [0, 1]. Args: image: Image to pad. border: Border size (pixels) to add on all sides. If a two-tuple it's the x border and y border, otherwise both x and y borders are symmetric. pad_color: Color to use for padding, default is white. Returns: Three-tuple of padded image and x + y image offset (pixels), where offsets indicate where the original image starts in the padded image. """ border_x, border_y = border if isinstance(border, tuple) else (border, border) # Create canvas with border on all sides, while not manipulating the original image orig_w, orig_h = image.size canvas = Image.new( image.mode, (orig_w + 2 * border_x, orig_h + 2 * border_y), pad_color # type: ignore[arg-type] ) # Paste original image onto canvas with border offset canvas.paste(image, (border_x, border_y)) return canvas, border_x, border_y def _render_page( path: str, page_num: int, dpi: int | None = 300, border: int | tuple[int, int] = DEFAULT_BORDER_SIZE, needs_bbox: bool = True, page_range: int | tuple[int, int] | None = None, ) -> tuple[int, str, "Image.Image", int, int, int, int]: """Render a single PDF page and pre-encode the API image as a base64 data URI. NOTE: keep this top-level for pickling support. Returns: Seven-tuple of (page_num, image_data_uri, rendered_page_pil, padded_height, padded_width, offset_x, offset_y). """ pdf_doc = pdfium.PdfDocument(path) with closing(pdf_doc): try: page = pdf_doc[page_num] except pdfium.PdfiumError as pdfium_exc: if not 0 <= page_num < len(pdf_doc): raise ValueError( f"Page range {page_range}'s value {page_num} is outside" f" the size of document {path!r}." ) from pdfium_exc raise render_kwargs: dict[str, Any] = {} if dpi is not None: render_kwargs["scale"] = dpi / 72 rendered_page = page.render(**render_kwargs) rendered_page_pil = rendered_page.to_pil() if needs_bbox: # Apply white border padding to increase bounding box reliability padded_pil, offset_x, offset_y = pad_image_with_border( rendered_page_pil, border ) image_data_uri = encode_image_to_base64(padded_pil, format="PNG") padded_height, padded_width = padded_pil.height, padded_pil.width else: image_data_uri = encode_image_to_base64(rendered_page_pil, format="PNG") offset_x = offset_y = padded_height = padded_width = 0 return ( page_num, image_data_uri, rendered_page_pil, padded_height, padded_width, offset_x, offset_y, ) async def parse_pdf_to_pages( path: str | os.PathLike, page_size_limit: int | None = None, page_range: int | tuple[int, int] | None = None, parse_media: bool = True, full_page: bool = False, dpi: int | None = 300, api_params: Mapping[str, Any] | None = None, concurrency: int | asyncio.Semaphore | None = 128, border: int | tuple[int, int] = DEFAULT_BORDER_SIZE, failover_parser: str | PDFParserFn | None = None, num_workers: int = min(os.cpu_count() or 1, 4), **kwargs: Any, ) -> ParsedText: """Parse a PDF using Nvidia's nemotron-parse VLM. Args: path: Path to the PDF file to parse. page_size_limit: Sensible character limit one page's text, used to catch bad PDF reads. page_range: Optional start_page or two-tuple of inclusive (start_page, end_page) to parse only specific pages, where pages are one-indexed. Leaving as the default of None will parse all pages. parse_media: Flag to also parse media (e.g. images, tables). full_page: Set True to screenshot the entire page as one image, instead of parsing individual images or tables. dpi: Optional DPI (dots per inch) for image resolution, if set as None then pypdfium2's default 1 scale will be employed. api_params: Optional parameters to pass to the nemotron-parse API. concurrency: Optional concurrency semaphore on concurrent processing of pages, use to put a ceiling on memory usage. Default is 128 to prioritize reader speed over memory, but not get obliterated by huge 1000-page PDFs. Set as None to disable concurrency limits, processing all pages at once. border: Border size (pixels) to add on all sides. If a two-tuple it's the x border and y border, otherwise both x and y borders are symmetric. failover_parser: Optional PDF parser to use when nemotron-parse fails on a given page. Can be a callable or an importable fully qualified name. Any metadata from the failover reader is not used (as of now). num_workers: Number of worker processes for parallel page rendering, default targets 4 processes. **kwargs: Keyword arguments passed to the failover parser, if specified. Otherwise they are thrown away. Returns: ParsedText with parsed content and metadata. """ if failover_parser is not None: failover_parser = ParsingSettings._resolve_parse_pdf(failover_parser) try: pdf_doc = pdfium.PdfDocument(path) except pdfium.PdfiumError as exc: raise ImpossibleParsingError( f"PDF reading via {pdfium.__name__} failed on the PDF at path {path!r}," " likely this PDF file is corrupt." ) from exc api_params = {"model_name": "nvidia/nemotron-parse"} | dict(api_params or {}) if api_params["model_name"].startswith("sagemaker/"): api_params["model_name"] = api_params["model_name"].removeprefix("sagemaker/") call_fn = _call_sagemaker_api else: call_fn = _call_nvidia_api # type: ignore[assignment] with closing(pdf_doc): page_count = len(pdf_doc) # Pre-render and send to model API in a pipeline needs_bbox = parse_media and not full_page path_str = str(path) render_args = [ (path_str, i, dpi, border, needs_bbox, page_range) for i in resolve_page_range(page_range, page_count) ] render_kwargs: dict[str, Any] = {} if dpi is not None: render_kwargs["scale"] = dpi / 72 async def call_failover( page_num: int, cause_exc: BaseException ) -> tuple[str, str | tuple[str, list[ParsedMedia]]]: logger.warning( f"Falling back to failover parser {failover_parser} for page {page_num}" f" of {path!r} due to {type(cause_exc).__name__}." ) fallback_parsed_text = cast(PDFParserFn, failover_parser)( path, page_size_limit=page_size_limit, page_range=page_num, parse_media=parse_media, full_page=full_page, dpi=dpi, api_params=api_params, concurrency=concurrency, border=border, **kwargs, ) if isinstance(fallback_parsed_text, Awaitable): fallback_parsed_text = await fallback_parsed_text if not isinstance(fallback_parsed_text.content, dict): raise NotImplementedError( f"Didn't yet handle the fallback parser {failover_parser}" " not giving dictionary content, got" f" {type(fallback_parsed_text.content).__name__}." ) from cause_exc return str(page_num), fallback_parsed_text.content[str(page_num)] async def process_page( i: int, image_data_uri: str, rendered_page_pil: "Image.Image", padded_height: int, padded_width: int, offset_x: int, offset_y: int, ) -> tuple[str, str | tuple[str, list[ParsedMedia]]]: """Process a pre-rendered page via the API and return its content.""" tool_name: Literal["markdown_bbox", "markdown_no_bbox"] = ( "markdown_bbox" if needs_bbox else "markdown_no_bbox" ) try: try: response = await call_fn( image=image_data_uri, tool_name=tool_name, **api_params ) except NemotronLengthError: if tool_name != "markdown_bbox": raise # Fallback to detection_only + markdown_no_bbox to reinvent # markdown_bbox, bypassing its length error detection_results = await call_fn( image=image_data_uri, tool_name="detection_only", **api_params ) async def extract_text( detection: NemotronParseAnnotatedBBox, ) -> NemotronParseMarkdownBBox: # Convert bbox from normalized [0, 1] to padded image pixel coordinates padded_bbox = detection.bbox.to_page_coordinates( padded_height, padded_width ) original_bbox = ( # xmin, ymin max(0, padded_bbox[0] - offset_x), max(0, padded_bbox[1] - offset_y), # xmax, ymax min(rendered_page_pil.width, padded_bbox[2] - offset_x), min(rendered_page_pil.height, padded_bbox[3] - offset_y), ) # Crop original image at bbox (without border) region_pil = rendered_page_pil.crop(original_bbox) # type: ignore[arg-type] # Use markdown_no_bbox to get text for this region # abandoning the text if we're still hitting a length error try: text: str | None = "\n\n".join( item.text for item in await call_fn( image=np.array(region_pil), tool_name="markdown_no_bbox", **api_params, ) ) except NemotronLengthError: logger.warning( "Suppressed NemotronLengthError during markdown_no_bbox" f" fallback for {detection.type} bbox on page {i + 1} of {path!r}.", ) text = None return NemotronParseMarkdownBBox( bbox=detection.bbox, type=detection.type, text=text ) response = await asyncio.gather( *(extract_text(d) for d in detection_results) ) except NemotronLengthError as length_err: # This length failure is from the detection_only tool if failover_parser is not None: return await call_failover(page_num=i + 1, cause_exc=length_err) raise RuntimeError( f"Failed to attain a valid response for page {i}" f" of PDF at path {path!r}" f" due to NemotronLengthError." " Perhaps try tweaking parameters such as" f" increasing DPI {dpi} or increasing API parameter's" f" temperature {api_params.get('temperature')}." ) from length_err except RetryError as model_err: inner_exc = model_err.last_attempt._exception if ( isinstance( inner_exc, (NemotronBBoxError, TimeoutError, litellm.Timeout) ) and failover_parser is not None ): return await call_failover(page_num=i + 1, cause_exc=inner_exc) if isinstance(inner_exc, NemotronBBoxError): # Nice-ify nemotron-parse failures to speed debugging raise RuntimeError( # noqa: TRY004 f"Failed to attain a valid response for page {i}" f" of PDF at path {path!r}" f" due to {type(inner_exc).__name__}." " Perhaps try tweaking parameters such as" f" increasing DPI {dpi} or increasing API parameter's" f" temperature {api_params.get('temperature')}." ) from model_err raise del image_data_uri # Free up memory as API call is done # Per https://docs.nvidia.com/nim/vision-language-models/1.5.0/examples/nemotron-parse/overview.html#nemotron-parse-overview # > It outputs text in reading order. # So according to that, we can just strictly join here. # In practice, this hasn't been strictly true at temperature T=1, # sometimes the model will get the ordering wrong. Unfortunately, # corrections such as sorting by bounding box are hard because of edge cases # such as two-column PDFs (where 'vertical then horizontal' ordering # is not a valid sorting heuristic) text = "\n\n".join(item.text or "" for item in response) # noqa: FURB143 if page_size_limit and len(text) > page_size_limit: raise ImpossibleParsingError( f"The text in page {i} of {page_count} was {len(text)} chars" f" long, which exceeds the {page_size_limit} char limit for the PDF" f" at path {path}." ) media: list[ParsedMedia] = [] if parse_media and full_page: img_bytes = io.BytesIO() rendered_page_pil.save(img_bytes, format="PNG") media_metadata = render_kwargs | { "type": "screenshot", "width": rendered_page_pil.width, "height": rendered_page_pil.height, } media_metadata["info_hashable"] = json.dumps(media_metadata, sort_keys=True) # Add page number after info_hashable so differing pages # don't break the cache key media_metadata["page_num"] = i + 1 media.append( ParsedMedia(index=0, data=img_bytes.getvalue(), info=media_metadata) ) elif parse_media: counters = dict.fromkeys(CLASSIFICATIONS_WITH_MEDIA, 0) for item in ( item for item in cast(list[NemotronParseMarkdownBBox], response) if item.type in CLASSIFICATIONS_WITH_MEDIA ): # Convert bbox from normalized [0, 1] to padded image pixel coordinates padded_bbox = item.bbox.to_page_coordinates(padded_height, padded_width) # Adjust bbox to account for padding offsets # Also if the bbox had extended into the padding zone, # clamp it here as we're ditching the padding original_bbox = ( # xmin, ymin max(0, padded_bbox[0] - offset_x), max(0, padded_bbox[1] - offset_y), # xmax, ymax min(rendered_page_pil.width, padded_bbox[2] - offset_x), min(rendered_page_pil.height, padded_bbox[3] - offset_y), ) region_pix = rendered_page_pil.crop(original_bbox) # type: ignore[arg-type] img_bytes = io.BytesIO() region_pix.save(img_bytes, format="PNG") media_metadata = render_kwargs | { "bbox": original_bbox, "type": item.type.name.lower(), "width": region_pix.width, "height": region_pix.height, } del region_pix # Free cropped image memory media_metadata["info_hashable"] = json.dumps( { k: ( v if k != "bbox" # Enables bbox deduplication based on whole pixels, # since <1-px differences are just noise else tuple(round(x) for x in cast(tuple, v)) ) for k, v in media_metadata.items() }, sort_keys=True, ) # Add page number after info_hashable so differing pages # don't break the cache key media_metadata["page_num"] = i + 1 media.append( ParsedMedia( index=counters[item.type], data=img_bytes.getvalue(), text=( item.text if item.type == NemotronParseClassification.TABLE else None ), info=media_metadata, ) ) counters[item.type] += 1 return str(i + 1), text if not parse_media else (text, media) # Pipeline rendering with API calls: each page is rendered then immediately # sent to the API, overlapping compute-bound rendering with network-bound waits loop = asyncio.get_running_loop() executor = ( ProcessPoolExecutor(max_workers=num_workers) if num_workers > 1 and len(render_args) > 1 else None ) async def render_and_process( page_args: tuple, ) -> tuple[str, str | tuple[str, list[ParsedMedia]]]: if executor is not None: rendered = await loop.run_in_executor(executor, _render_page, *page_args) else: rendered = _render_page(*page_args) return await process_page(*rendered) content: dict[str, str | tuple[str, list[ParsedMedia]]] = {} total_length = count_media = 0 try: gather = ( asyncio.gather(*(render_and_process(args) for args in render_args)) if concurrency is None else gather_with_concurrency( concurrency, (render_and_process(args) for args in render_args) ) ) for page_num, page_content in await gather: content[page_num] = page_content if parse_media: page_text, page_media = page_content # type: ignore[misc] total_length += len(page_text) count_media += len(page_media) else: total_length += len(page_content) finally: if executor is not None: executor.shutdown(wait=True) # No need to reflect border or api_params such as api_base or temperature here multimodal_string = ( f"|multimodal|dpi={dpi}|mode={'full-page' if full_page else 'individual'}" ) metadata = ParsedMetadata( parsing_libraries=[ f"{pdfium.__name__} ({pdfium.version.PYPDFIUM_INFO})", api_params["model_name"], ], total_parsed_text_length=total_length, count_parsed_media=count_media, name=( f"pdf|page_range={str(page_range).replace(' ', '')}" f"{multimodal_string if parse_media else ''}" ), ) return ParsedText(content=content, metadata=metadata) ================================================ FILE: packages/paper-qa-nemotron/tests/cassettes/TestNvidiaAPI.test_detection_only[0].yaml ================================================ interactions: - request: body: '{"messages":[{"role":"user","content":""}],"model":"nvidia/nemotron-parse","temperature":0,"tool_choice":{"type":"function","function":{"name":"detection_only"}},"tools":[{"type":"function","function":{"name":"detection_only"}}]}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "672307" content-type: - application/json host: - integrate.api.nvidia.com user-agent: - AsyncOpenAI/Python 2.8.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.8.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "600.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://integrate.api.nvidia.com/v1/chat/completions response: body: string: '{"id":"chatcmpl-81f236695f174cbc9bf438fbd73b8933","object":"chat.completion","created":1763687114,"model":"nvidia/nemotron-parse","choices":[{"index":0,"message":{"role":"assistant","content":null,"refusal":null,"annotations":null,"audio":null,"function_call":null,"tool_calls":[{"id":"chatcmpl-tool-d4a6f575a7734938b3d421bc38150578","type":"function","function":{"name":"detection_only","arguments":"[[{\"bbox\": {\"xmin\": 0.15587573467674226, \"ymin\": 0.08188693586698338, \"xmax\": 0.8435801847187238, \"ymax\": 0.10000760095011876}, \"type\": \"Title\"}, {\"bbox\": {\"xmin\": 0.25716339210747274, \"ymin\": 0.40684275534441805, \"xmax\": 0.3410162888329135, \"ymax\": 0.42204465558194776}, \"type\": \"Section-header\"}, {\"bbox\": {\"xmin\": 0.1450827875734677, \"ymin\": 0.4419895486935867, \"xmax\": 0.45849336691855586, \"ymax\": 0.8411306413301662}, \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.5125964735516374, \"ymin\": 0.40684275534441805, \"xmax\": 0.6544268681780017, \"ymax\": 0.4230175771971496}, \"type\": \"Section-header\"}, {\"bbox\": {\"xmin\": 0.5112127623845508, \"ymin\": 0.4429624703087886, \"xmax\": 0.8828775818639799, \"ymax\": 0.6985976247030878}, \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.5112127623845508, \"ymin\": 0.7043135391923991, \"xmax\": 0.8828775818639799, \"ymax\": 0.9114242280285036}, \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.13691889168765745, \"ymin\": 0.8857634204275535, \"xmax\": 0.28013299748110826, \"ymax\": 0.9114242280285036}, \"type\": \"Footnote\"}, {\"bbox\": {\"xmin\": 0.4936396305625525, \"ymin\": 0.9323420427553445, \"xmax\": 0.5058162888329135, \"ymax\": 0.9455980997624702}, \"type\": \"Page-footer\"}, {\"bbox\": {\"xmin\": 0.339632577665827, \"ymin\": 0.25202660332541565, \"xmax\": 0.6504141057934509, \"ymax\": 0.3726688836104513}, \"type\": \"Picture\"}, {\"bbox\": {\"xmin\": 0.2220171284634761, \"ymin\": 0.10669643705463183, \"xmax\": 0.774671368597817, \"ymax\": 0.12372256532066507}, \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.32344315701091514, \"ymin\": 0.12761425178147268, \"xmax\": 0.6693709487825358, \"ymax\": 0.14366745843230402}, \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.31929202350965574, \"ymin\": 0.15412636579572447, \"xmax\": 0.6747674223341729, \"ymax\": 0.17030118764845606}, \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.17068144416456757, \"ymin\": 0.1817330166270784, \"xmax\": 0.8247617128463477, \"ymax\": 0.21310973871733968}, \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.35983476070528964, \"ymin\": 0.22539287410926365, \"xmax\": 0.6328409739714526, \"ymax\": 0.23962185273159142}, \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.026083627204030242, \"ymin\": 0.3108883610451306, \"xmax\": 0.06122989084802687, \"ymax\": 0.7223125890736342}, \"type\": \"Caption\"}]]"}}],"reasoning_content":null},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":5,"total_tokens":108,"completion_tokens":103,"prompt_tokens_details":null},"prompt_logprobs":null,"kv_transfer_params":null}' headers: Access-Control-Expose-Headers: - nvcf-reqid Connection: - keep-alive Content-Length: - "3077" Content-Type: - application/json Date: - Fri, 21 Nov 2025 01:05:17 GMT Nvcf-Reqid: - 1b156e88-21c4-42fa-b93c-6c492dca4f63 Nvcf-Status: - fulfilled Server: - uvicorn Vary: - Origin status: code: 200 message: OK version: 1 ================================================ FILE: packages/paper-qa-nemotron/tests/cassettes/TestNvidiaAPI.test_detection_only[1].yaml ================================================ interactions: - request: body: '{"messages":[{"role":"user","content":""}],"model":"nvidia/nemotron-parse","temperature":1,"tool_choice":{"type":"function","function":{"name":"detection_only"}},"tools":[{"type":"function","function":{"name":"detection_only"}}]}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "672307" content-type: - application/json host: - integrate.api.nvidia.com user-agent: - AsyncOpenAI/Python 2.8.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.8.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "600.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://integrate.api.nvidia.com/v1/chat/completions response: body: string: '{"id":"chatcmpl-bc4abb52f69c4c35a230134b3ad17404","object":"chat.completion","created":1763687118,"model":"nvidia/nemotron-parse","choices":[{"index":0,"message":{"role":"assistant","content":null,"refusal":null,"annotations":null,"audio":null,"function_call":null,"tool_calls":[{"id":"chatcmpl-tool-a335e220819e42d9a5452c960e362348","type":"function","function":{"name":"detection_only","arguments":"[[{\"bbox\": {\"xmin\": 0.1490955499580185, \"ymin\": 0.08006270783847981, \"xmax\": 0.8449638958858103, \"ymax\": 0.10098052256532067}, \"type\": \"Title\"}, {\"bbox\": {\"xmin\": 0.2557796809403862, \"ymin\": 0.4125586698337292, \"xmax\": 0.34641276238455077, \"ymax\": 0.43639524940617574}, \"type\": \"Section-header\"}, {\"bbox\": {\"xmin\": 0.1450827875734677, \"ymin\": 0.4496513064133017, \"xmax\": 0.4638898404701931, \"ymax\": 0.8419819477434679}, \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.5004198152812762, \"ymin\": 0.4107344418052256, \"xmax\": 0.6544268681780017, \"ymax\": 0.4354223277909739}, \"type\": \"Section-header\"}, {\"bbox\": {\"xmin\": 0.5058162888329135, \"ymin\": 0.4477054631828979, \"xmax\": 0.8841229219143576, \"ymax\": 0.6985976247030878}, \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.5085837111670864, \"ymin\": 0.7023676959619952, \"xmax\": 0.8828775818639799, \"ymax\": 0.9114242280285036}, \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.13691889168765745, \"ymin\": 0.8905064133016628, \"xmax\": 0.27612023509655753, \"ymax\": 0.9123971496437054}, \"type\": \"Footnote\"}, {\"bbox\": {\"xmin\": 0.48423039462636436, \"ymin\": 0.9398821852731591, \"xmax\": 0.5166092359361881, \"ymax\": 0.9475439429928741}, \"type\": \"Page-footer\"}, {\"bbox\": {\"xmin\": 0.34226162888329137, \"ymin\": 0.26053966745843227, \"xmax\": 0.6517978169605375, \"ymax\": 0.37935771971496435}, \"type\": \"Picture\"}, {\"bbox\": {\"xmin\": 0.21800436607892526, \"ymin\": 0.10754774346793351, \"xmax\": 0.774671368597817, \"ymax\": 0.13710023752969122}, \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.23018102434928636, \"ymin\": 0.14658622327790974, \"xmax\": 0.6787801847187238, \"ymax\": 0.17127410926365794}, \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.16127220822837957, \"ymin\": 0.17504418052256532, \"xmax\": 0.8273907640638118, \"ymax\": 0.21785273159144894}, \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.35319294710327453, \"ymin\": 0.22259572446555817, \"xmax\": 0.6382374475230899, \"ymax\": 0.24254061757719714}, \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.026083627204030242, \"ymin\": 0.3128342042755345, \"xmax\": 0.06801007556675064, \"ymax\": 0.7223125890736342}, \"type\": \"Caption\"}]]"}}],"reasoning_content":null},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":5,"total_tokens":101,"completion_tokens":96,"prompt_tokens_details":null},"prompt_logprobs":null,"kv_transfer_params":null}' headers: Access-Control-Expose-Headers: - nvcf-reqid Connection: - keep-alive Content-Length: - "2918" Content-Type: - application/json Date: - Fri, 21 Nov 2025 01:05:27 GMT Nvcf-Reqid: - 4949636b-b656-4633-8c68-69f5de3ce54c Nvcf-Status: - fulfilled Server: - uvicorn Vary: - Origin status: code: 200 message: OK version: 1 ================================================ FILE: packages/paper-qa-nemotron/tests/cassettes/TestNvidiaAPI.test_markdown_bbox[0].yaml ================================================ interactions: - request: body: '{"messages":[{"role":"user","content":""}],"model":"nvidia/nemotron-parse","temperature":0,"tool_choice":{"type":"function","function":{"name":"markdown_bbox"}},"tools":[{"type":"function","function":{"name":"markdown_bbox"}}]}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "672305" content-type: - application/json host: - integrate.api.nvidia.com user-agent: - AsyncOpenAI/Python 2.8.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.8.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "600.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://integrate.api.nvidia.com/v1/chat/completions response: body: string: '{"id":"chatcmpl-e5e35e9a14674505b1d63e89d2661ccb","object":"chat.completion","created":1763687115,"model":"nvidia/nemotron-parse","choices":[{"index":0,"message":{"role":"assistant","content":null,"refusal":null,"annotations":null,"audio":null,"function_call":null,"tool_calls":[{"id":"chatcmpl-tool-ef4c670f55e04b858b768d7ef31b23ee","type":"function","function":{"name":"markdown_bbox","arguments":"[[{\"bbox\": {\"xmin\": 0.15587573467674226, \"ymin\": 0.08006270783847981, \"xmax\": 0.8435801847187238, \"ymax\": 0.10098052256532067}, \"text\": \"# PaSa: An LLM Agent for Comprehensive Academic Paper Search\", \"type\": \"Title\"}, {\"bbox\": {\"xmin\": 0.25716339210747274, \"ymin\": 0.41450451306413305, \"xmax\": 0.34226162888329137, \"ymax\": 0.4325035629453682}, \"text\": \"### Abstract\", \"type\": \"Section-header\"}, {\"bbox\": {\"xmin\": 0.1450827875734677, \"ymin\": 0.45062422802850355, \"xmax\": 0.4598770780856424, \"ymax\": 0.8506166270783848}, \"text\": \"We introduce PaSa, an advanced **Paper Search** agent powered by large language models. PaSa can autonomously make a series of decisions, including invoking search tools, reading papers, and selecting relevant references, to ultimately obtain comprehensive and accurate results for complex scholarly queries. We optimize PaSa using reinforcement learning with a synthetic dataset, AutoScholarQuery, which includes 35k fine-grained academic queries and corresponding papers sourced from top-tier AI conference publications. Additionally, we develop RealScholarQuery, a benchmark collecting real-world academic queries to assess PaSa performance in more realistic scenarios. Despite being trained on synthetic data, PaSa significantly outperforms existing baselines on RealScholarQuery, including Google, Google Scholar, Google with GPT-4 for paraphrased queries, chatGPT (search-enabled GPT-4o), GPT-o1, and PaSa-GPT-4o (PaSa implemented by prompting GPT-4o). Notably, PaSa-7B surpasses the best Google-based baseline, Google with GPT-4o, by 37.78% in recall@20 and 39.90% in recall@50. It also exceeds PaSa- GPT-4o by 30.36% in recall and 4.25% in precision. Model, datasets, and code are available at `https://github.com/bytedance/pasa`.\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.5098290512174644, \"ymin\": 0.41450451306413305, \"xmax\": 0.6598233417296389, \"ymax\": 0.43347648456057003}, \"text\": \"### 1 Introduction\", \"type\": \"Section-header\"}, {\"bbox\": {\"xmin\": 0.5098290512174644, \"ymin\": 0.45062422802850355, \"xmax\": 0.8828775818639799, \"ymax\": 0.7080836104513064}, \"text\": \"Academic paper search lies at the core of research yet represents a particularly challenging information retrieval task. It requires long-tail specialized knowledge, comprehensive survey-level coverage, and the ability to address fine-grained queries. For instance, consider the query: _\\\"Which studies have focused on non-stationary reinforcement learning using value-based methods, specifically UCB-based algorithms?\\\"_ While widely used academic search systems like Google Scholar are effective for general queries, they often fall short when addressing these complex queries (Gusenbauer and Haddaway, 2020). Consequently, researchers frequently spend substantial time conducting literature surveys (Kingsley et al., 2011; Gusenbauer and Haddaway, 2021).\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.5098290512174644, \"ymin\": 0.7128266033254157, \"xmax\": 0.8828775818639799, \"ymax\": 0.920910213776722}, \"text\": \"The advancements in large language models (LLMs) (OpenAI, 2023; Anthropic, 2024; Gemini, 2023; Yang et al., 2024) have inspired numerous studies leveraging LLMs to enhance information retrieval, particularly by refining or reformulating search queries to improve retrieval quality (Alaofi et al., 2023; Li et al., 2023; Ma et al., 2023; Peng et al., 2024). In academic search, however, the process goes beyond simple retrieval. Human researchers not only use search tools, but also engage in deeper activities, such as reading relevant papers and checking citations, to perform comprehensive and accurate literature surveys.\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.13691889168765745, \"ymin\": 0.8942764845605701, \"xmax\": 0.2815167086481948, \"ymax\": 0.920910213776722}, \"text\": \"\\u2217Equal contribution. \\u2020Corresponding author.\", \"type\": \"Footnote\"}, {\"bbox\": {\"xmin\": 0.4896268681780017, \"ymin\": 0.9398821852731591, \"xmax\": 0.5058162888329135, \"ymax\": 0.9550840855106888}, \"text\": \"1\", \"type\": \"Page-footer\"}, {\"bbox\": {\"xmin\": 0.34641276238455077, \"ymin\": 0.2615125890736342, \"xmax\": 0.6464013434089001, \"ymax\": 0.3811819477434679}, \"text\": \"Paper Search\", \"type\": \"Picture\"}, {\"bbox\": {\"xmin\": 0.2220171284634761, \"ymin\": 0.10669643705463183, \"xmax\": 0.7774387909319901, \"ymax\": 0.12372256532066507}, \"text\": \"**Yichen He**\\u2217**1** **Guanhua Huang**\\u2217**1** **Peiyuan Feng**1 **Yuan Lin**\\u2020**1**\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.32344315701091514, \"ymin\": 0.12761425178147268, \"xmax\": 0.6679872376154492, \"ymax\": 0.14366745843230402}, \"text\": \"**Yuchen Zhang**1 **Hang Li**1 **Weinan E**2\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.31929202350965574, \"ymin\": 0.15315344418052254, \"xmax\": 0.6761511335012594, \"ymax\": 0.17127410926365794}, \"text\": \"1ByteDance Research 2Peking University\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.16805239294710322, \"ymin\": 0.18076009501187648, \"xmax\": 0.8261454240134342, \"ymax\": 0.21310973871733968}, \"text\": \"{hyc,huangguanhua,fpy,linyuan.0}@bytedance.com, {zhangyuchen.zyc,lihang.lh}@bytedance.com, weinan@math.pku.edu.cn\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.35983476070528964, \"ymin\": 0.22539287410926365, \"xmax\": 0.6342246851385391, \"ymax\": 0.24059477434679336}, \"text\": \"Demo: `https://pasa-agent.ai`\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.02469991603694374, \"ymin\": 0.3203743467933492, \"xmax\": 0.06122989084802687, \"ymax\": 0.7260826603325415}, \"text\": \"arrXiv:17 Jan 2025\", \"type\": \"Caption\"}]]"}}],"reasoning_content":null},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":5,"total_tokens":1011,"completion_tokens":1006,"prompt_tokens_details":null},"prompt_logprobs":null,"kv_transfer_params":null}' headers: Access-Control-Expose-Headers: - nvcf-reqid Connection: - keep-alive Content-Length: - "6561" Content-Type: - application/json Date: - Fri, 21 Nov 2025 01:05:28 GMT Nvcf-Reqid: - 4dbbffac-ddfe-4b82-913f-5c3c4121e71a Nvcf-Status: - fulfilled Server: - uvicorn Vary: - Origin status: code: 200 message: OK version: 1 ================================================ FILE: packages/paper-qa-nemotron/tests/cassettes/TestNvidiaAPI.test_markdown_bbox[1].yaml ================================================ interactions: - request: body: '{"messages":[{"role":"user","content":""}],"model":"nvidia/nemotron-parse","temperature":1,"tool_choice":{"type":"function","function":{"name":"markdown_bbox"}},"tools":[{"type":"function","function":{"name":"markdown_bbox"}}]}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "672305" content-type: - application/json host: - integrate.api.nvidia.com user-agent: - AsyncOpenAI/Python 2.8.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.8.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "600.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://integrate.api.nvidia.com/v1/chat/completions response: body: string: '{"id":"chatcmpl-aa55ac3327c74cfc83c793dc2cf209cd","object":"chat.completion","created":1763687129,"model":"nvidia/nemotron-parse","choices":[{"index":0,"message":{"role":"assistant","content":null,"refusal":null,"annotations":null,"audio":null,"function_call":null,"tool_calls":[{"id":"chatcmpl-tool-d9ae2e3b6f4547fa9aec89ab607a3d8b","type":"function","function":{"name":"markdown_bbox","arguments":"[[{\"bbox\": {\"xmin\": 0.12474223341729643, \"ymin\": 0.49428408551068886, \"xmax\": 0.34226162888329137, \"ymax\": 0.5085130641330167}, \"text\": \"\\u2217 : # other words, _A-mail address_: pada@civ.org\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.24498673383711173, \"ymin\": 0.41353159144893115, \"xmax\": 0.35582199832073885, \"ymax\": 0.43639524940617574}, \"text\": \"## Abstract\", \"type\": \"Section-header\"}, {\"bbox\": {\"xmin\": 0.1423153652392947, \"ymin\": 0.4496513064133017, \"xmax\": 0.47343744752308975, \"ymax\": 0.8543866983372922}, \"text\": \"We introduce PaSa, an advanced **Paper S erech agent powered by large language models. PaSa can autonomously make a series of decisions, including invoking search tools, reading papers, and selecting relevant references, to ultimately obtain comprehensive and accurate results for complex scholarly queries. We optimize PaSa using reinforcement learning with a synthetic dataset, AutoScholar Query, which includes 35k fine-grained academic queries and corresponding papers sourced from top-tier AI conference publications. Additionally, we develop RealScholar Query, a benchmark collecting real-world academic queries to assess PaSa performance in more realistic scenarios. Despite being trained on synthetic data, PaSa significantly outperforms existing baselines on RealScholar Query, including Google, Google Scholar, Google with GPT-4 for paraphrased queries, chatGPT (search-enabled GPT-4o), GPT-01, and PaSa-GPT-4o (PaSa implemented by prompting GPT-4o). Notably, PaSa-7B surpasses the best Google-based baseline, Google with GPT-4o, by 37.78% in recall@20 and 39.90% in recall@50. It also exceeds PaSa- GPT-4o by 30.36% in recall and 4.25% in precision. Model, datasets, and code are available at https://github.com/bytedance/pasa.\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.5004198152812762, \"ymin\": 0.41450451306413305, \"xmax\": 0.6666035264483627, \"ymax\": 0.4325035629453682}, \"text\": \"### 1 Introduction\", \"type\": \"Section-header\"}, {\"bbox\": {\"xmin\": 0.504432577665827, \"ymin\": 0.45062422802850355, \"xmax\": 0.8909031066330814, \"ymax\": 0.7108807600950119}, \"text\": \"Academic paper search lies at the core of research yet represents a particularly challenging information retrieval task. It requires long-tail specialized knowledge, comprehensive survey-level coverage, and the ability to address fine-grained queries. For instance, consider the query: _\\\"Which studies have focused on non-stationary reinforcement learning using value-based methods, specifically UCB-based algorithms?\\\"_ While widely used academic search systems like Google Scholar are effective for general queries, they often fall short when addressing these complex queries (Gusenbauer and Haddaway, 2020). Consequently, researchers frequently spend substantial time conducting literature surveys (Kingsley et al., 2011; Gusenbauer and Haddaway, 2021).\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.5031872376154493, \"ymin\": 0.7128266033254157, \"xmax\": 0.8909031066330814, \"ymax\": 0.9323420427553445}, \"text\": \"The advancements in large language models (LLMs) (OpenAI, 2023; Anthropic, 2024; Gemini, 2023; Yang et al., 2024) have inspired numerous studies leveraging LLMs to enhance information retrieval, particularly by refining or reformulating search queries to improve retrieval quality (Alaofi et al., 2023; Li et al., 2023; Ma et al., 2023; Peng et al., 2024). In academic search, however, the process goes beyond simple retrieval. Human researchers not only use search tools, but also engage in deeper activities, such as reading relevant papers and checking citations, to perform comprehensive and accurate literature surveys.\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.13691889168765745, \"ymin\": 0.8962223277909739, \"xmax\": 0.28290041981528125, \"ymax\": 0.9237073634204276}, \"text\": \"\\u2217Equal contribution. \\u2020Corresponding author.\", \"type\": \"Footnote\"}, {\"bbox\": {\"xmin\": 0.48685944584382873, \"ymin\": 0.9475439429928741, \"xmax\": 0.5058162888329135, \"ymax\": 0.9635971496437055}, \"text\": \"1\", \"type\": \"Page-footer\"}, {\"bbox\": {\"xmin\": 0.34364534005037783, \"ymin\": 0.2739173396674584, \"xmax\": 0.6571942905121746, \"ymax\": 0.3803306413301663}, \"text\": \"Paper Search\", \"type\": \"Picture\"}, {\"bbox\": {\"xmin\": 0.147711838790932, \"ymin\": 0.07908978622327792, \"xmax\": 0.8557568429890848, \"ymax\": 0.1085206650831354}, \"text\": \"PaSa: An LLM Agent for Comprehensive Academic Paper Search\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.21800436607892526, \"ymin\": 0.11520950118764847, \"xmax\": 0.7976409739714525, \"ymax\": 0.14755914489311164}, \"text\": \"**Yichen He\\u22171 uanhua Huang\\u22171 Peyyuan Feng1 Yuan Lin1 Yuchen Zhang1 Hang Li1 Weinan E2\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.31929202350965574, \"ymin\": 0.151329216152019, \"xmax\": 0.6639744752308984, \"ymax\": 0.18076009501187648}, \"text\": \"1ByteDance Research 2Peking University\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.15850478589420655, \"ymin\": 0.18076009501187648, \"xmax\": 0.8477313182199832, \"ymax\": 0.21590688836104516}, \"text\": \"{hyc,huangguanhua,fpy,linyuan.0}@bytedance.com, {zhangyuchen.zyc,lihang.lh}@bytedance.com, weinan@math.pku.edu.cn\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.3518092359361881, \"ymin\": 0.22441995249406174, \"xmax\": 0.6356083963056255, \"ymax\": 0.24254061757719714}, \"text\": \"Demo: https://pasa-agent.ai\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.027467338371116697, \"ymin\": 0.31952304038004753, \"xmax\": 0.07202283795130143, \"ymax\": 0.7355686460807601}, \"text\": \"ArrXiv:17 Jan 2025\", \"type\": \"Caption\"}]]"}}],"reasoning_content":null},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":5,"total_tokens":1022,"completion_tokens":1017,"prompt_tokens_details":null},"prompt_logprobs":null,"kv_transfer_params":null}' headers: Access-Control-Expose-Headers: - nvcf-reqid Connection: - keep-alive Content-Length: - "6559" Content-Type: - application/json Date: - Fri, 21 Nov 2025 01:05:33 GMT Nvcf-Reqid: - 91acc0f4-26f9-46d5-b5d0-2018be2be40c Nvcf-Status: - fulfilled Server: - uvicorn Vary: - Origin status: code: 200 message: OK version: 1 ================================================ FILE: packages/paper-qa-nemotron/tests/cassettes/TestNvidiaAPI.test_markdown_no_bbox[0].yaml ================================================ interactions: - request: body: '{"messages":[{"role":"user","content":""}],"model":"nvidia/nemotron-parse","temperature":0,"tool_choice":{"type":"function","function":{"name":"markdown_no_bbox"}},"tools":[{"type":"function","function":{"name":"markdown_no_bbox"}}]}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "672311" content-type: - application/json host: - integrate.api.nvidia.com user-agent: - AsyncOpenAI/Python 2.8.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.8.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "600.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://integrate.api.nvidia.com/v1/chat/completions response: body: string: '{"id":"chatcmpl-8b222334a6164aa3ad897448c71c5fd3","object":"chat.completion","created":1763687115,"model":"nvidia/nemotron-parse","choices":[{"index":0,"message":{"role":"assistant","content":null,"refusal":null,"annotations":null,"audio":null,"function_call":null,"tool_calls":[{"id":"chatcmpl-tool-4a218f83d6be4ea3a3a53b2529c8dfee","type":"function","function":{"name":"markdown_no_bbox","arguments":"[{\"text\": \"# PaSa: An LLM Agent for Comprehensive Academic Paper Search\\n\\n**Abstract**\\n\\nWe introduce PaSa, an advanced **Paper Search** agent powered by large language models. PaSa can autonomously make a series of decisions, including invoking search tools, reading papers, and selecting relevant references, to ultimately obtain comprehensive and accurate results for complex scholarly queries. We optimize PaSa using reinforcement learning with a synthetic dataset, AutoScholarQuery, which includes 35k fine-grained academic queries and corresponding papers sourced from top-tier AI conference publications. Additionally, we develop RealScholarQuery, a benchmark collecting real-world academic queries to assess PaSa performance in more realistic scenarios. Despite being trained on synthetic data, PaSa significantly outperforms existing baselines on RealScholarQuery, including Google, Google Scholar, Google with GPT-4 for paraphrased queries, chatGPT (search-enabled GPT-4o), GPT-o1, and PaSa-GPT-4o (PaSa implemented by prompting GPT-4o). Notably, PaSa-7B surpasses the best Google-based baseline, Google with GPT-4o, by 37.78% in recall@20 and 39.90% in recall@50. It also exceeds PaSa- GPT-4o by 30.36% in recall and 4.25% in precision. Model, datasets, and code are available at https://github.com/bytedance/pasa.\\n\\n### 1 Introduction\\n\\nAcademic paper search lies at the core of research yet represents a particularly challenging information retrieval task. It requires long-tail specialized knowledge, comprehensive survey-level coverage, and the ability to address fine-grained queries. For instance, consider the query: _\\\"Which studies have focused on non-stationary reinforcement learning using value-based methods, specifically UCB-based algorithms?\\\"_ While widely used academic search systems like Google Scholar are effective for general queries, they often fall short when addressing these complex queries (Gusenbauer and Haddaway, 2020). Consequently, researchers frequently spend substantial time conducting literature surveys (Kingsley et al., 2011; Gusenbauer and Haddaway, 2021).\\n\\nThe advancements in large language models (LLMs) (OpenAI, 2023; Anthropic, 2024; Gemini, 2023; Yang et al., 2024) have inspired numerous studies leveraging LLMs to enhance information retrieval, particularly by refining or reformulating search queries to improve retrieval quality (Alaofi et al., 2023; Li et al., 2023; Ma et al., 2023; Peng et al., 2024). In academic search, however, the process goes beyond simple retrieval. Human researchers not only use search tools, but also engage in deeper activities, such as reading relevant papers and checking citations, to perform comprehensive and accurate literature surveys.\\n\\n\\u2217Equal contribution. \\u2020Corresponding author.\\n\\n1\\n\\n\\n\\n**Paper Search**\\n\\n**Yichen He**\\u22171 **Guanhua Huang**\\u22171 **Peiyuan Feng**1 **Yuan Lin**\\u20201 **Yuchen Zhang**1 **Hang Li**1 **Weinan E**2\\n\\n1ByteDance Research 2Peking University\\n\\n{hyc,huangguanhua,fpy,linyuan.0}@bytedance.com, {zhangyuchen.zyc,lihang.lh}@bytedance.com, weinan@math.pku.edu.cn\\n\\nDemo: https://pasa-agent.ai\\n\\narXiv:17 Jan 2025\"}]"}}],"reasoning_content":null},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":5,"total_tokens":949,"completion_tokens":944,"prompt_tokens_details":null},"prompt_logprobs":null,"kv_transfer_params":null}' headers: Access-Control-Expose-Headers: - nvcf-reqid Connection: - keep-alive Content-Length: - "4054" Content-Type: - application/json Date: - Fri, 21 Nov 2025 01:05:20 GMT Nvcf-Reqid: - fee3da85-9ddc-434e-b313-c886a14f4a37 Nvcf-Status: - fulfilled Server: - uvicorn Vary: - Origin status: code: 200 message: OK version: 1 ================================================ FILE: packages/paper-qa-nemotron/tests/cassettes/TestNvidiaAPI.test_markdown_no_bbox[1].yaml ================================================ interactions: - request: body: '{"messages":[{"role":"user","content":""}],"model":"nvidia/nemotron-parse","temperature":1,"tool_choice":{"type":"function","function":{"name":"markdown_no_bbox"}},"tools":[{"type":"function","function":{"name":"markdown_no_bbox"}}]}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "672311" content-type: - application/json host: - integrate.api.nvidia.com user-agent: - AsyncOpenAI/Python 2.8.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.8.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "600.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://integrate.api.nvidia.com/v1/chat/completions response: body: string: '{"id":"chatcmpl-05138954f82943d79fa11a9e0a8e958a","object":"chat.completion","created":1763687121,"model":"nvidia/nemotron-parse","choices":[{"index":0,"message":{"role":"assistant","content":null,"refusal":null,"annotations":null,"audio":null,"function_call":null,"tool_calls":[{"id":"chatcmpl-tool-1e805948f43844df9dd14165797e2b80","type":"function","function":{"name":"markdown_no_bbox","arguments":"[{\"text\": \"**PaSa: An LLM Agent for Comprehensive Academic Paper Search**\\n\\n**Abstract**\\n\\nWe introduce PaSa, an advanced **Paper Search** agent powered by large language models. PaSa can autonomously make a series of decisions, including invoking search tools, reading papers, and selecting relevant references, to ultimately obtain comprehensive and accurate results for complex scholarly queries. We optimize PaSa using reinforcement learning with a synthetic dataset, AutoScholarQuery, which includes 35k fine-grained academic queries and corresponding papers sourced from top-tier AI conference publications. Additionally, we develop RealScholarQuery, a benchmark collecting real-world academic queries to assess PaSa performance in more realistic scenarios. Despite being trained on synthetic data, PaSa significantly outperforms existing baselines on RealScholarQuery, including Google, Google Scholar, Google with GPT-4 for paraphrased queries, chatGPT (search-enabled GPT-4o), GPT-o1, and PaSa-GPT-4o (PaSa implemented by prompting GPT-4o). Notably, PaSa-7B surpasses the best Google-based baseline, Google with GPT-4o, by 37.78% in recall@20 and 39.90% in recall@50. It also exceeds PaSa- GPT-4o by 30.36% in recall and 4.25% in precision. Model, datasets, and code are available at https://github.com/bytedance/pasa.\\n\\n## 1 Introduction\\n\\nAcademic paper search lies at the core of research yet represents a particularly challenging information retrieval task. It requires long-tail specialized knowledge, comprehensive survey-level coverage, and the ability to address fine-grained queries. For instance, consider the query: _\\\"Which studies have focused on non-stationary reinforcement learning using value-based methods, specifically UCB-based algorithms?\\\"_ While widely used academic search systems like Google Scholar are effective for general queries, they often fall short when addressing these complex queries (Gusenbauer and Haddaway, 2020). Consequently, researchers frequently spend substantial time conducting literature surveys (Kingsley et al., 2011; Gusenbauer and Haddaway, 2021).\\n\\nThe advancements in large language models (LLMs) (OpenAI, 2023; Anthropic, 2024; Gemini, 2023; Yang et al., 2024) have inspired numerous studies leveraging LLMs to enhance information retrieval, particularly by refining or reformulating search queries to improve retrieval quality (Alaofi et al., 2023; Li et al., 2023; Ma et al., 2023; Peng et al., 2024). In academic search, however, the process goes beyond simple retrieval. Human researchers not only use search tools, but also engage in deeper activities, such as reading relevant papers and checking citations, to perform comprehensive and accurate literature surveys.\\n\\n\\\\*Equal contribution. \\u2020Corresponding author.\\n\\n1\\n\\n**Paper Search**\\n\\n**Yichen He**\\\\*\\\\*1 **Guanhua Huang**\\\\*1 **Piyuan Feng**1 **Yuan Lin**\\u2020**1\\n\\n**Yuchen Zhang**1 **Hang Li**1 **Weinan E**2\\n\\n\\u2020ByteDance Research 2Peking University\\n\\n`{hyc,huangguanhua,fpy,linyuan.0}@bytedance.com, {zhangyuchen.zyc,lihang.lh}@bytedance.com, weinan@math.pku.edu.cn`\\n\\nDemo: https://pasa-agent.ai\\n\\nerrXiv:Jan 2025\"}]"}}],"reasoning_content":null},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":5,"total_tokens":942,"completion_tokens":937,"prompt_tokens_details":null},"prompt_logprobs":null,"kv_transfer_params":null}' headers: Access-Control-Expose-Headers: - nvcf-reqid Connection: - keep-alive Content-Length: - "4030" Content-Type: - application/json Date: - Fri, 21 Nov 2025 01:05:33 GMT Nvcf-Reqid: - 06dc5c0a-49d1-4eb5-bfaf-c9de94e74837 Nvcf-Status: - fulfilled Server: - uvicorn Vary: - Origin status: code: 200 message: OK version: 1 ================================================ FILE: packages/paper-qa-nemotron/tests/conftest.py ================================================ from collections.abc import AsyncIterator from pathlib import Path from typing import Any import httpx_aiohttp import litellm.llms.custom_httpx.aiohttp_transport import pytest import vcr.stubs.httpcore_stubs from lmi.utils import ( ANTHROPIC_API_KEY_HEADER, CROSSREF_KEY_HEADER, OPENAI_API_KEY_HEADER, SEMANTIC_SCHOLAR_KEY_HEADER, ) TESTS_DIR = Path(__file__).parent CASSETTES_DIR = TESTS_DIR / "cassettes" @pytest.fixture(scope="session", name="vcr_config") def fixture_vcr_config() -> dict[str, Any]: return { "filter_headers": [ CROSSREF_KEY_HEADER, SEMANTIC_SCHOLAR_KEY_HEADER, OPENAI_API_KEY_HEADER, # Works for Nvidia API key too as it's OpenAI-compatible ANTHROPIC_API_KEY_HEADER, "cookie", ], "record_mode": "once", "cassette_library_dir": str(CASSETTES_DIR), # "drop_unused_requests": True, # Restore after https://github.com/kevin1024/vcrpy/issues/961 } class PreReadCompatibleAiohttpResponseStream( httpx_aiohttp.transport.AiohttpResponseStream ): """aiohttp-backed response stream that works if the response was pre-read.""" async def __aiter__(self) -> AsyncIterator[bytes]: with httpx_aiohttp.transport.map_aiohttp_exceptions(): if self._aiohttp_response._body is not None: # Happens if some intermediary called `await _aiohttp_response.read()` # TODO: take into account chunk size yield self._aiohttp_response._body else: async for chunk in self._aiohttp_response.content.iter_chunked( self.CHUNK_SIZE ): yield chunk async def _vcr_handle_async_request( cassette, # noqa: ARG001 real_handle_async_request, self, real_request, ): """VCR handler that only sends, not possibly recording or playing back responses.""" return await real_handle_async_request(self, real_request) # Permanently patch the original response stream, # to work around https://github.com/karpetrosyan/httpx-aiohttp/issues/23 # and https://github.com/BerriAI/litellm/issues/11724 httpx_aiohttp.transport.AiohttpResponseStream = ( # type: ignore[misc] litellm.llms.custom_httpx.aiohttp_transport.AiohttpResponseStream # type: ignore[misc] ) = PreReadCompatibleAiohttpResponseStream # type: ignore[assignment] # Permanently patch vcrpy's async VCR recording functionality, # to work around https://github.com/kevin1024/vcrpy/issues/944 vcr.stubs.httpcore_stubs._vcr_handle_async_request = _vcr_handle_async_request ================================================ FILE: packages/paper-qa-nemotron/tests/test_api.py ================================================ import http from pathlib import Path import litellm import numpy as np import pypdfium2 as pdfium import pytest from pydantic import ValidationError from tenacity import Future, RetryCallState from paperqa_nemotron.api import ( NemotronParseAnnotatedBBox, NemotronParseBBox, NemotronParseClassification, NemotronParseMarkdown, NemotronParseMarkdownBBox, _call_nvidia_api, _call_sagemaker_api, _wait_exponential_for_nvidia_api_retry, ) REPO_ROOT = Path(__file__).parents[3] STUB_DATA_DIR = REPO_ROOT / "tests" / "stub_data" class TestNemotronParseBBox: def test_bbox_validation(self) -> None: bbox = NemotronParseBBox(xmin=0.1, xmax=0.9, ymin=0.2, ymax=0.8) assert bbox.xmin == 0.1 assert bbox.xmax == 0.9 assert bbox.ymin == 0.2 assert bbox.ymax == 0.8 bbox_full = NemotronParseBBox(xmin=0.0, xmax=1.0, ymin=0.0, ymax=1.0) assert bbox_full.xmin == 0.0 assert bbox_full.xmax == 1.0 assert bbox_full.ymin == 0.0 assert bbox_full.ymax == 1.0 with pytest.raises(ValidationError, match="greater than or equal to 0"): NemotronParseBBox(xmin=-0.1, xmax=0.5, ymin=0.2, ymax=0.8) with pytest.raises(ValidationError, match="less than or equal to 1"): NemotronParseBBox(xmin=1.1, xmax=1.5, ymin=0.2, ymax=0.8) with pytest.raises(ValidationError, match="greater than or equal to 0"): NemotronParseBBox(xmin=0.1, xmax=-0.5, ymin=0.2, ymax=0.8) with pytest.raises(ValidationError, match="less than or equal to 1"): NemotronParseBBox(xmin=0.1, xmax=1.5, ymin=0.2, ymax=0.8) with pytest.raises(ValidationError, match="greater than or equal to 0"): NemotronParseBBox(xmin=0.1, xmax=0.5, ymin=-0.2, ymax=0.8) with pytest.raises(ValidationError, match="less than or equal to 1"): NemotronParseBBox(xmin=0.1, xmax=0.5, ymin=1.2, ymax=1.8) with pytest.raises(ValidationError, match="greater than or equal to 0"): NemotronParseBBox(xmin=0.1, xmax=0.5, ymin=0.2, ymax=-0.8) with pytest.raises(ValidationError, match="less than or equal to 1"): NemotronParseBBox(xmin=0.1, xmax=0.5, ymin=0.2, ymax=1.8) with pytest.raises(ValidationError, match="xmin must be less than xmax"): NemotronParseBBox(xmin=0.5, xmax=0.5, ymin=0.2, ymax=0.8) with pytest.raises(ValidationError, match="xmin must be less than xmax"): NemotronParseBBox(xmin=0.7, xmax=0.3, ymin=0.2, ymax=0.8) with pytest.raises(ValidationError, match="ymin must be less than ymax"): NemotronParseBBox(xmin=0.1, xmax=0.5, ymin=0.5, ymax=0.5) with pytest.raises(ValidationError, match="ymin must be less than ymax"): NemotronParseBBox(xmin=0.1, xmax=0.5, ymin=0.8, ymax=0.2) def test_bbox_to_page_coordinates(self) -> None: bbox = NemotronParseBBox(xmin=0.1, xmax=0.9, ymin=0.2, ymax=0.8) assert bbox.to_page_coordinates(height=1000, width=800) == pytest.approx( (80.0, 200.0, 720.0, 800.0) ) # Also check different page dimensions assert bbox.to_page_coordinates(height=100, width=200) == pytest.approx( (20.0, 20.0, 180.0, 80.0) ) @pytest.mark.parametrize( ("bbox1_coords", "bbox2_coords", "expected_iou"), [ # Identical boxes -> IoU = 1.0 ((0.1, 0.5, 0.2, 0.6), (0.1, 0.5, 0.2, 0.6), 1.0), # No overlap -> IoU = 0.0 ((0.0, 0.2, 0.0, 0.2), (0.5, 0.7, 0.5, 0.7), 0.0), # Partial overlap (50% horizontal) -> IoU = 1/3 ((0.0, 0.4, 0.0, 0.4), (0.2, 0.6, 0.0, 0.4), 1 / 3), ], ids=["identical", "no_overlap", "partial_overlap"], ) def test_iou( self, bbox1_coords: tuple[float, float, float, float], bbox2_coords: tuple[float, float, float, float], expected_iou: float, ) -> None: bbox1 = NemotronParseBBox.from_coordinates(bbox1_coords) bbox2 = NemotronParseBBox.from_coordinates(bbox2_coords) assert bbox1.iou(bbox2) == pytest.approx(expected_iou) def test_union(self) -> None: # Test superset creation with different boxes bbox1 = NemotronParseBBox.from_coordinates((0.1, 0.5, 0.2, 0.6)) bbox2 = NemotronParseBBox.from_coordinates((0.3, 0.7, 0.1, 0.5)) union = bbox1.union(bbox2) assert (union.xmin, union.xmax, union.ymin, union.ymax) == (0.1, 0.7, 0.1, 0.6) # Test identical boxes return same bbox bbox3 = NemotronParseBBox.from_coordinates((0.1, 0.5, 0.2, 0.6)) assert bbox1.union(bbox3) == bbox1 class TestMergeWithDetection: def test_merge_empty_inputs(self) -> None: """Test edge cases with empty markdown or detection results.""" sample_bbox = NemotronParseBBox.from_coordinates((0.1, 0.5, 0.2, 0.6)) # Empty detection -> returns markdown as-is markdown_results = [ NemotronParseMarkdownBBox( bbox=sample_bbox, type=NemotronParseClassification.TEXT, text="Sample" ) ] merged = NemotronParseMarkdownBBox.merge_with_detection( markdown_results, [], iou_threshold=0.975 ) assert merged == markdown_results # Empty markdown -> detection included with text=None detection_results = [ NemotronParseAnnotatedBBox( bbox=sample_bbox, type=NemotronParseClassification.TEXT ) ] merged = NemotronParseMarkdownBBox.merge_with_detection( [], detection_results, iou_threshold=0.975 ) assert len(merged) == 1 assert merged[0].bbox == sample_bbox assert merged[0].text is None def test_merge_unmatched_detection(self) -> None: """Test that unmatched detections are added (different location, type, or low IoU).""" markdown_bbox = NemotronParseBBox.from_coordinates((0.1, 0.5, 0.2, 0.6)) markdown_results = [ NemotronParseMarkdownBBox( bbox=markdown_bbox, type=NemotronParseClassification.TEXT, text="Sample text", ) ] # Different location (no overlap) detection_far = NemotronParseAnnotatedBBox( bbox=NemotronParseBBox.from_coordinates((0.6, 0.9, 0.7, 0.95)), type=NemotronParseClassification.PICTURE, ) merged = NemotronParseMarkdownBBox.merge_with_detection( markdown_results, [detection_far], iou_threshold=0.975 ) assert len(merged) == 2 assert merged[0].text == "Sample text" assert merged[1].bbox == detection_far.bbox assert merged[1].text is None # Same bbox but different type detection_wrong_type = NemotronParseAnnotatedBBox( bbox=markdown_bbox, type=NemotronParseClassification.TABLE ) merged = NemotronParseMarkdownBBox.merge_with_detection( markdown_results, [detection_wrong_type], iou_threshold=0.975 ) assert len(merged) == 2 assert merged[1].type == NemotronParseClassification.TABLE assert merged[1].text is None # Same type but IoU below threshold detection_low_iou = NemotronParseAnnotatedBBox( bbox=NemotronParseBBox.from_coordinates((0.3, 0.7, 0.4, 0.8)), type=NemotronParseClassification.TEXT, ) merged = NemotronParseMarkdownBBox.merge_with_detection( markdown_results, [detection_low_iou], iou_threshold=0.975 ) assert len(merged) == 2 assert merged[0].bbox == markdown_bbox # Original preserved assert merged[1].text is None # Unmatched detection def test_merge_matched_detection(self) -> None: """Test successful merging: superset bbox, text preserved.""" # Slightly different bboxes that should merge markdown_bbox = NemotronParseBBox.from_coordinates((0.11, 0.90, 0.20, 0.80)) detection_bbox = NemotronParseBBox.from_coordinates((0.10, 0.89, 0.20, 0.80)) assert markdown_bbox.iou(detection_bbox) > 0.95 # Verify high IoU markdown_results = [ NemotronParseMarkdownBBox( bbox=markdown_bbox, type=NemotronParseClassification.TABLE, text="| col1 | col2 |\n| a | b |", ) ] detection_results = [ NemotronParseAnnotatedBBox( bbox=detection_bbox, type=NemotronParseClassification.TABLE ) ] merged = NemotronParseMarkdownBBox.merge_with_detection( markdown_results, detection_results, iou_threshold=0.95 ) assert len(merged) == 1 # Superset bbox contains both assert merged[0].bbox == NemotronParseBBox.from_coordinates( (0.10, 0.90, 0.20, 0.80) ) # Text preserved from markdown assert merged[0].text == "| col1 | col2 |\n| a | b |" def test_merge_multiple_items(self) -> None: markdown_results = [ NemotronParseMarkdownBBox( bbox=NemotronParseBBox.from_coordinates((0.0, 0.4, 0.0, 0.3)), type=NemotronParseClassification.TITLE, text="Title", ), NemotronParseMarkdownBBox( bbox=NemotronParseBBox.from_coordinates((0.0, 0.9, 0.35, 0.65)), type=NemotronParseClassification.TEXT, text="Body text", ), NemotronParseMarkdownBBox( bbox=NemotronParseBBox.from_coordinates((0.2, 0.8, 0.7, 0.95)), type=NemotronParseClassification.TABLE, text="Table content", ), ] # Detection results: only provide refinement for TEXT and TABLE detection_results = [ NemotronParseAnnotatedBBox( bbox=NemotronParseBBox.from_coordinates((0.0, 0.9, 0.35, 0.65)), type=NemotronParseClassification.TEXT, ), # TABLE bbox with very high IoU (near identical) NemotronParseAnnotatedBBox( bbox=NemotronParseBBox.from_coordinates((0.2, 0.8, 0.7, 0.95)), type=NemotronParseClassification.TABLE, ), ] merged = NemotronParseMarkdownBBox.merge_with_detection( markdown_results, detection_results, iou_threshold=0.90 ) assert len(merged) == 3 # Title: no matching detection, keeps original assert merged[0].bbox == markdown_results[0].bbox assert merged[0].text == "Title" # TEXT: perfect match, superset bbox (identical in this case) assert merged[1].bbox == markdown_results[1].bbox.union( detection_results[0].bbox ) assert merged[1].text == "Body text" # TABLE: perfect IoU match, superset bbox (identical in this case) assert merged[2].bbox == markdown_results[2].bbox.union( detection_results[1].bbox ) assert merged[2].text == "Table content" @pytest.mark.parametrize( ("exc", "expected_backoff"), [ pytest.param(TimeoutError(), True, id="TimeoutError-has-backoff"), pytest.param( litellm.Timeout( message="Request timed out", model="stub", llm_provider=litellm.LlmProviders.CUSTOM, exception_status_code=http.HTTPStatus.REQUEST_TIMEOUT, ), False, id="litellm-Timeout-no-backoff", ), ], ) def test_wait_exponential_for_nvidia_api_retry( exc: BaseException, expected_backoff: bool ) -> None: """Test we properly handle exponential backoff for Nvidia API.""" retry_state = RetryCallState( retry_object=None, # type: ignore[arg-type] fn=None, args=(), kwargs={}, ) retry_state.outcome = Future.construct( attempt_number=1, value=exc, has_exception=True ) retry_state.attempt_number = 1 wait_time = _wait_exponential_for_nvidia_api_retry(retry_state) if expected_backoff: assert wait_time > 0 else: assert wait_time == 0 @pytest.fixture(name="pdf_page_np") def fixture_pdf_page_np() -> np.ndarray: pdf_doc = pdfium.PdfDocument(STUB_DATA_DIR / "pasa.pdf") # nemotron-parse's markdown_no_bbox tool will start # babbling \\n if using default scale=1 page_np = pdf_doc[0].render(scale=2).to_numpy() assert page_np.shape == (1684, 1191, 3), "Expected particular page size" return page_np class TestNvidiaAPI: @pytest.mark.vcr @pytest.mark.parametrize("temperature", [0, 1]) @pytest.mark.asyncio async def test_markdown_bbox( self, pdf_page_np: np.ndarray, temperature: float ) -> None: response = await _call_nvidia_api( pdf_page_np, tool_name="markdown_bbox", temperature=temperature ) assert response for r in response: assert isinstance(r, NemotronParseMarkdownBBox) assert isinstance(r.bbox, NemotronParseBBox) assert r.type assert r.text @pytest.mark.vcr @pytest.mark.parametrize("temperature", [0, 1]) @pytest.mark.asyncio async def test_markdown_no_bbox( self, pdf_page_np: np.ndarray, temperature: float ) -> None: response = await _call_nvidia_api( pdf_page_np, tool_name="markdown_no_bbox", temperature=temperature ) assert response for r in response: assert isinstance(r, NemotronParseMarkdown) assert r.text @pytest.mark.vcr @pytest.mark.parametrize("temperature", [0, 1]) @pytest.mark.asyncio async def test_detection_only( self, pdf_page_np: np.ndarray, temperature: float ) -> None: response = await _call_nvidia_api( pdf_page_np, tool_name="detection_only", temperature=temperature ) assert response for r in response: assert isinstance(r, NemotronParseAnnotatedBBox) assert isinstance(r.bbox, NemotronParseBBox) assert r.type @pytest.mark.skip(reason="Uncomment to test with AWS SageMaker") class TestSageMakerAPI: @pytest.mark.flaky(reruns=2, only_rerun=["AssertionError"]) @pytest.mark.parametrize("temperature", [0, 1]) @pytest.mark.asyncio async def test_markdown_bbox( self, pdf_page_np: np.ndarray, temperature: float ) -> None: response = await _call_sagemaker_api( pdf_page_np, tool_name="markdown_bbox", temperature=temperature ) assert response for r in response: assert isinstance(r, NemotronParseMarkdownBBox) assert isinstance(r.bbox, NemotronParseBBox) assert r.type assert r.text @pytest.mark.parametrize("temperature", [0, 1]) @pytest.mark.asyncio async def test_markdown_no_bbox( self, pdf_page_np: np.ndarray, temperature: float ) -> None: response = await _call_sagemaker_api( pdf_page_np, tool_name="markdown_no_bbox", temperature=temperature ) assert response for r in response: assert isinstance(r, NemotronParseMarkdown) assert r.text @pytest.mark.parametrize("temperature", [0, 1]) @pytest.mark.asyncio async def test_detection_only( self, pdf_page_np: np.ndarray, temperature: float ) -> None: response = await _call_sagemaker_api( pdf_page_np, tool_name="detection_only", temperature=temperature ) assert response for r in response: assert isinstance(r, NemotronParseAnnotatedBBox) assert isinstance(r.bbox, NemotronParseBBox) assert r.type ================================================ FILE: packages/paper-qa-nemotron/tests/test_paperqa_nemotron.py ================================================ import base64 import json import re from pathlib import Path from typing import Any, cast from unittest.mock import MagicMock, patch import litellm import pytest from lmi.utils import bytes_to_string from paperqa import Doc, Docs, Settings from paperqa.readers import PDFParserFn, chunk_pdf from paperqa.types import ParsedMetadata, ParsedText from paperqa.utils import ImpossibleParsingError, get_citation_ids from PIL import Image from tenacity import Future, RetryError from paperqa_nemotron import parse_pdf_to_pages from paperqa_nemotron.api import NemotronBBoxError, NemotronLengthError from paperqa_nemotron.reader import _render_page, pad_image_with_border REPO_ROOT = Path(__file__).parents[3] STUB_DATA_DIR = REPO_ROOT / "tests" / "stub_data" @pytest.mark.flaky(reruns=2, only_rerun=["RuntimeError", "AssertionError"]) @pytest.mark.parametrize( "api_params_base", [ pytest.param({}, id="nvidia"), # Uncomment to test with AWS SageMaker # pytest.param({"model_name": "sagemaker/nvidia/nemotron-parse"}, id="sagemaker"), ], ) @pytest.mark.asyncio async def test_parse_pdf_to_pages(api_params_base: dict[str, Any]) -> None: assert isinstance(parse_pdf_to_pages, PDFParserFn) filepath = STUB_DATA_DIR / "pasa.pdf" # Lower temperature a bit so shape assertions are more reliable, # and use null DPI here as later 'high DPI' assertions compare # against the 'default' DPI from pypdfium2 parsed_text = await parse_pdf_to_pages( filepath, dpi=None, api_params={"temperature": 0.5} | api_params_base ) assert isinstance(parsed_text.content, dict) assert len(parsed_text.content) == 15, "Expected all pages to be parsed" assert "1" in parsed_text.content, "Parsed text should contain page 1" assert isinstance(parsed_text.content["1"], tuple) p1_text = parsed_text.content["1"][0] # Don't match Abstract as sometimes nemotron-parse places authors or organizations # between Abstract and Introduction matches = re.findall( r"(?:###? 1 Introduction[\n]+)?We introduce Pa ?S[as]," r" an advanced Paper Search agent powered by large language models\.", p1_text, ) assert len(matches) == 1, f"Parsing failed to handle abstract in {p1_text}." assert ( p1_text.count("outperforms existing") == 1 ), "Test expects one match of this substring" col_1_bottom_idx = p1_text.index("outperforms existing") assert ( p1_text.count("address fine-grained") == 1 ), "Test expects one match of this substring" col_2_top_idx = p1_text.index("address fine-grained") assert col_1_bottom_idx < col_2_top_idx, "Expected column ordering to be correct" # Check the images in Figure 1 assert not isinstance(parsed_text.content["2"], str) p2_text, p2_media = parsed_text.content["2"] assert "Figure 1" in p2_text, "Expected Figure 1 title" assert "Crawler" in p2_text, "Expected Figure 1 contents" (p2_image,) = [m for m in p2_media if m.info["type"] == "picture"] assert p2_image.index == 0 assert p2_image.info["page_num"] == 2 assert p2_image.info["height"] == pytest.approx(130, rel=0.25) assert p2_image.info["width"] == pytest.approx(452, rel=0.25) p2_bbox = p2_image.info["bbox"] assert isinstance(p2_bbox, tuple) for i, value in enumerate((71, 71.40, 522, 213.00)): assert p2_bbox[i] == pytest.approx(value, rel=0.275 if value < 100 else 0.15) assert isinstance(p2_image.data, bytes) # Check the image is valid base64 base64_data = bytes_to_string(p2_image.data) assert base64_data assert base64.b64decode(base64_data, validate=True) == p2_image.data # Check we can round-trip serialize the image serde_p2_image = type(p2_image).model_validate_json(p2_image.model_dump_json()) assert serde_p2_image == p2_image # Check useful attributes are present and are JSON serializable json.dumps(p2_image.info) for attr in ("width", "height"): assert ( p2_image.info[attr] == serde_p2_image.info[attr] ), "Expected serialization to match original" dim = p2_image.info[attr] assert isinstance(dim, int | float) assert dim > 0, "Edge length should be positive" # Check Figure 1 can be used to answer questions doc = Doc( docname="He2025", dockey="stub", citation=( 'He, Yichen, et al. "PaSa: An LLM Agent for Comprehensive Academic Paper' ' Search." *arXiv*, 2025, arXiv:2501.10120v1. Accessed 2025.' ), ) texts = chunk_pdf(parsed_text, doc=doc, chunk_chars=3000, overlap=100) fig_1_text = texts[2] assert ( "Figure 1: Architecture of PaSa" in fig_1_text.text ), "Expecting Figure 1 for the test to work" assert fig_1_text.media, "Expecting media to test multimodality" fig_1_text.text = "stub" # Replace text to confirm multimodality works docs = Docs() assert await docs.aadd_texts(texts=[fig_1_text], doc=doc) for query, answer_checks in ( ("What actions can the Crawler take?", [(("search", "expand", "stop"), 2)]), ("What actions can the Selector take?", [(("select", "drop"), 2)]), ( "How many User Query blue boxes are there, and what are they connected to?", [r"two|2|(?=.*paper queue)(?=.*selector)"], ), ): session = await docs.aquery(query=query) assert session.contexts, "Expected contexts to be generated" assert all( c.text.text == fig_1_text.text and c.text.media == fig_1_text.media for c in session.contexts ), "Expected context to reuse Figure 1's text and media" # Remove citations so numeric assertions don't have false positives raw_answer_no_citations = session.raw_answer for key in get_citation_ids(session.raw_answer): raw_answer_no_citations = raw_answer_no_citations.replace(f"({key})", "") for check in answer_checks: answer_lower = raw_answer_no_citations.lower() if isinstance(check, str): assert re.search( check, answer_lower ), f"Expected {raw_answer_no_citations=} to match pattern {check!r}" else: substrings, min_count = cast(tuple[tuple[str, ...], int], check) assert ( sum(x in answer_lower for x in substrings) >= min_count ), f"Expected {raw_answer_no_citations=} to have {substrings} present" # Let's check the full page parsing behavior parsed_text_full_page = await parse_pdf_to_pages( filepath, dpi=None, full_page=True, api_params=api_params_base ) assert isinstance(parsed_text_full_page.content, dict) assert len(parsed_text_full_page.content) == 15, "Expected all pages to be parsed" assert "1" in parsed_text_full_page.content, "Parsed text should contain page 1" assert "2" in parsed_text_full_page.content, "Parsed text should contain page 2" for page_num in ("1", "2"): page_content = parsed_text_full_page.content[page_num] assert not isinstance(page_content, str), f"Page {page_num} should have images" # Check each page has exactly one image page_text, (full_page_image,) = page_content assert page_text assert full_page_image.index == 0, "Full page image should have index 0" assert full_page_image.info["type"] == "screenshot" assert full_page_image.info["page_num"] == int(page_num) assert full_page_image.info["height"] == pytest.approx(842, rel=0.01) assert full_page_image.info["width"] == pytest.approx(596, rel=0.01) assert isinstance(full_page_image.data, bytes) assert full_page_image.data, "Full page image should have data" # Check useful attributes are present and are JSON serializable json.dumps(p2_image.info) for attr in ("width", "height"): dim = full_page_image.info[attr] assert isinstance(dim, int | float) assert dim > 0, "Edge length should be positive" # Check our ability to get a high DPI, and lower temperature a bit # so shape assertions are more reliable parsed_text_high_dpi = await parse_pdf_to_pages( filepath, dpi=216, api_params={"temperature": 0.5} | api_params_base ) assert isinstance(parsed_text_high_dpi.content, dict) assert len(parsed_text_high_dpi.content) == 15, "Expected all pages to be parsed" assert not isinstance(parsed_text_high_dpi.content["2"], str) p2_text_high_dpi, p2_media_high_dpi = parsed_text_high_dpi.content["2"] assert "Figure 1" in p2_text_high_dpi, "Expected Figure 1 title" assert "Crawler" in p2_text_high_dpi, "Expected Figure 1 contents" (p2_image_high_dpi,) = [m for m in p2_media_high_dpi if m.info["type"] == "picture"] assert p2_image_high_dpi.info["scale"] == 3 assert p2_image_high_dpi.info["height"] / p2_image.info["height"] == pytest.approx( # type: ignore[operator] 3, rel=0.2 ) assert p2_image_high_dpi.info["width"] / p2_image.info["width"] == pytest.approx( # type: ignore[operator] 3, rel=0.2 ) # Check the no-media behavior parsed_text_no_media = await parse_pdf_to_pages( filepath, parse_media=False, api_params=api_params_base ) assert isinstance(parsed_text_no_media.content, dict) assert all(isinstance(c, str) for c in parsed_text_no_media.content.values()) assert len(parsed_text_no_media.content) == 15, "Expected all pages to be parsed" # Check metadata for pt in ( parsed_text, parsed_text_full_page, parsed_text_high_dpi, parsed_text_no_media, ): assert "pypdfium2" in pt.metadata.parsing_libraries[0] assert "nemotron-parse" in pt.metadata.parsing_libraries[1] assert pt.metadata.name assert "pdf" in pt.metadata.name assert "page_range=None" in pt.metadata.name # Check commonalities across all modes assert ( len(parsed_text.content) == len(parsed_text_full_page.content) == len(parsed_text_high_dpi.content) == len(parsed_text_no_media.content) ), "All modes should parse the same number of pages" @pytest.mark.asyncio async def test_page_range() -> None: filepath = STUB_DATA_DIR / "pasa.pdf" parsed_text_p1 = await parse_pdf_to_pages(filepath, page_range=1) assert isinstance(parsed_text_p1.content, dict) assert list(parsed_text_p1.content) == ["1"] assert parsed_text_p1.metadata.name assert "page_range=1" in parsed_text_p1.metadata.name parsed_text_p1_2 = await parse_pdf_to_pages(filepath, page_range=(1, 2)) assert isinstance(parsed_text_p1_2.content, dict) assert list(parsed_text_p1_2.content) == ["1", "2"] assert parsed_text_p1_2.metadata.name assert "page_range=(1,2)" in parsed_text_p1_2.metadata.name # NOTE: exceeds 15-page PDF length parsed_text_p1_20 = await parse_pdf_to_pages(filepath, page_range=(1, 20)) assert isinstance(parsed_text_p1_20.content, dict) assert list(parsed_text_p1_20.content) == [ str(i) for i in range(1, 15 + 1) ], "Expected pages to be truncated to 15 or us to get blown up" assert parsed_text_p1_20.metadata.name assert "page_range=(1,20)" in parsed_text_p1_20.metadata.name @pytest.mark.skip(reason="Nemotron Parse cannot handle duplicate_media.pdf reliably") @pytest.mark.asyncio async def test_media_deduplication() -> None: parsed_text = await parse_pdf_to_pages( STUB_DATA_DIR / "duplicate_media.pdf", api_params={"temperature": 0} ) assert isinstance(parsed_text.content, dict) assert len(parsed_text.content) == 5, "Expected full PDF read" all_media = [m for _, media in parsed_text.content.values() for m in media] # type: ignore[misc] all_images = [m for m in all_media if m.info.get("type") == "picture"] assert len(all_images) == 5, "Expected each image (one/page) to be read" assert ( len({m for m in all_images if cast(int, m.info["page_num"]) > 1}) <= 2 ), "Expected images on all pages beyond 1 to be deduplicated" all_equations = [m for m in all_media if m.info.get("type") == "formula"] assert len(all_equations) == 5, "Expected each equation (one/page) to be read" assert ( len({m for m in all_equations if cast(int, m.info["page_num"]) > 1}) <= 2 ), "Expected equations on all pages beyond 1 to be deduplicated" all_tables = [m for m in all_media if m.info.get("type") == "table"] assert len(all_tables) == 5, "Expected each table (one/page) to be read" assert ( len({m for m in all_tables if cast(int, m.info["page_num"]) > 1}) <= 2 ), "Expected tables on all pages beyond 1 to be deduplicated" @pytest.mark.asyncio async def test_page_size_limit_denial() -> None: with pytest.raises(ImpossibleParsingError, match="char limit"): await parse_pdf_to_pages( STUB_DATA_DIR / "paper.pdf", page_size_limit=10 # chars ) @pytest.mark.asyncio async def test_invalid_pdf_is_denied(tmp_path) -> None: # This PDF content (actually it's a 404 HTML page) was seen with open access # in June 2025, so let's make sure it's denied bad_pdf_content = """ 404 Not Found

404 Not Found


nginx
""" bad_pdf_path = tmp_path / "bad.pdf" bad_pdf_path.write_text(bad_pdf_content) with pytest.raises(ImpossibleParsingError, match="corrupt"): await parse_pdf_to_pages(bad_pdf_path) @pytest.mark.asyncio async def test_nonexistent_file_failure() -> None: filename = "/nonexistent/path/file.pdf" with pytest.raises(FileNotFoundError, match=filename): await parse_pdf_to_pages(filename) @pytest.mark.asyncio async def test_table_parsing() -> None: parsed_text = await parse_pdf_to_pages(STUB_DATA_DIR / "influence.pdf") assert isinstance(parsed_text.content, dict) assert all( t and t[0] != "\n" and t[-1] != "\n" for t in parsed_text.content.values() ), "Expected no leading/trailing newlines in parsed text" assert "1" in parsed_text.content, "Parsed text should contain page 1" all_tables = { i: [m for m in pagenum_media[1] if m.info["type"] == "table"] for i, pagenum_media in parsed_text.content.items() if isinstance(pagenum_media, tuple) } all_tables = {k: v for k, v in all_tables.items() if v} assert ( sum(len(tables) for tables in all_tables.values()) >= 2 ), "Expected a few tables to be parsed for assertions to work" @pytest.mark.asyncio async def test_equation_parsing() -> None: parsed_text = await parse_pdf_to_pages(STUB_DATA_DIR / "duplicate_media.pdf") assert isinstance(parsed_text.content, dict) assert isinstance(parsed_text.content["1"], tuple) p1_text, p1_media = parsed_text.content["1"] # SEE: https://regex101.com/r/pyOHLq/1 assert re.search( r"[_*]*E[_*]* ?= ?[_*]*mc[_*]*(?:)?[ ^]?[2²] ?(?:<\/sup>)?", p1_text ), "Expected inline equation in page 1 text" assert re.search(r"n ?\+ ?a", p1_text), "Expected block equation in page 1 text" assert p1_media def test_pad_image_with_border(subtests: pytest.Subtests) -> None: stub_gray_image = Image.new("RGB", (1000, 1500), (128, 128, 128)) with subtests.test(msg="default-size"): padded, offset_x, offset_y = pad_image_with_border(stub_gray_image) assert padded.width == stub_gray_image.width + 60 * 2 assert padded.height == stub_gray_image.height + 60 * 2 assert offset_x == offset_y == 60 with subtests.test(msg="custom-size"): padded, offset_x, offset_y = pad_image_with_border(stub_gray_image, border=30) assert padded.width == stub_gray_image.width + 60 assert padded.height == stub_gray_image.height + 60 assert offset_x == offset_y == 30 with subtests.test(msg="tuple-size"): padded, offset_x, offset_y = pad_image_with_border( stub_gray_image, border=(20, 40) ) assert padded.width == stub_gray_image.width + 40 assert padded.height == stub_gray_image.height + 80 assert offset_x == 20 assert offset_y == 40 with subtests.test(msg="rgba-mode"): rgba_image = Image.new("RGBA", (500, 800), (100, 100, 100, 255)) padded, offset_x, offset_y = pad_image_with_border(rgba_image) assert padded.mode == "RGBA" assert padded.width == rgba_image.width + 60 * 2 assert padded.height == rgba_image.height + 60 * 2 with subtests.test(msg="grayscale-mode"): grayscale_image = Image.new("L", (600, 900), 128) padded, offset_x, offset_y = pad_image_with_border( grayscale_image, pad_color=255 ) assert padded.mode == "L" assert padded.width == grayscale_image.width + 60 * 2 assert padded.height == grayscale_image.height + 60 * 2 @pytest.mark.asyncio async def test_media_enrichment_filters_irrelevant() -> None: parsed_text = await parse_pdf_to_pages( STUB_DATA_DIR / "duplicate_media.pdf", api_params={"temperature": 0} ) assert isinstance(parsed_text.content, dict) # Get media before enrichment to track their types media_before = [ m for page_contents in parsed_text.content.values() if isinstance(page_contents, tuple) for m in page_contents[1] ] assert media_before, "Expected some media to be parsed from the PDF" # Create settings and run enrichment enricher = Settings().make_media_enricher() enrichment_summary = await enricher(parsed_text) assert "filtered=" in enrichment_summary, "Test extractions require this substring" # Game the in-place change of enrichment to get Wikimedia logos, # so we can later confirm they are filtered out wikimedia_media_before = [ m for m in media_before if isinstance(m.info["enriched_description"], str) and "wikimedia" in m.info["enriched_description"].lower() ] assert ( len(wikimedia_media_before) > 1 ), "Test expects several Wikimedia logos to be parsed" # Get media after enrichment to track filtration media_after = [ m for page_contents in parsed_text.content.values() if isinstance(page_contents, tuple) for m in page_contents[1] ] assert media_after, "Expected some media to remain after enrichment's filtration" for media in media_after: assert not media.info[ "is_irrelevant" ], "Expected remaining media to be marked as relevant" assert media.info["enriched_description"], "Expected enriched description" filtered_count = int( enrichment_summary.split("filtered=", maxsplit=1)[1].split("|")[0] ) assert ( len(media_before) - len(media_after) == filtered_count ), "Filtered summary mismatches actual filtration" assert filtered_count > 0, "Expected some filtration to take place" wikimedia_media_after = [ m for m in media_after if isinstance(m.info["enriched_description"], str) and "wikimedia" in m.info["enriched_description"].lower() ] assert len(wikimedia_media_after) <= 1, "Expected most Wikimedia logos to be gone" def test_render_page(subtests: pytest.Subtests) -> None: filepath = str(STUB_DATA_DIR / "pasa.pdf") with subtests.test(msg="no-bbox"): page_num, image_data_uri, pil_img, ph, pw, ox, oy = _render_page( filepath, page_num=0, dpi=72, needs_bbox=False ) assert page_num == 0 assert isinstance(image_data_uri, str) assert image_data_uri.startswith("data:image/png;base64,") assert pil_img.width > 0 assert pil_img.height > 0 assert ph == pw == ox == oy == 0 with subtests.test(msg="with-bbox"): page_num, image_data_uri, pil_img, ph, pw, ox, oy = _render_page( filepath, page_num=0, dpi=72, border=60 ) assert page_num == 0 assert isinstance(image_data_uri, str) assert image_data_uri.startswith("data:image/png;base64,") assert ph == pil_img.height + 120 assert pw == pil_img.width + 120 assert ox == oy == 60 with ( subtests.test(msg="out-of-range"), pytest.raises(ValueError, match="is outside"), ): _render_page(filepath, page_num=100, page_range=(1, 200)) def _wrap_into_retry_error(exception: Exception) -> RetryError: future: Future = Future(attempt_number=3) future.set_exception(exception) return RetryError(future) @pytest.mark.asyncio @pytest.mark.parametrize( "error", [ pytest.param( NemotronLengthError("Mocked length error"), id="nemotron-length-error" ), pytest.param( _wrap_into_retry_error(NemotronBBoxError("Mocked bbox error")), id="nemotron-bbox-error", ), pytest.param( _wrap_into_retry_error(TimeoutError("Mocked 429")), id="timeout-error" ), pytest.param( _wrap_into_retry_error(litellm.Timeout("Mocked API timeout", "model", 0)), id="litellm-timeout", ), ], ) async def test_failover_on_error(error: Exception) -> None: failover_text = "Failover text" mock_failover_reader = MagicMock( return_value=ParsedText( content={"1": (failover_text, [])}, metadata=ParsedMetadata( parsing_libraries=["stub"], total_parsed_text_length=len(failover_text) ), ) ) with patch("paperqa_nemotron.reader._call_nvidia_api", side_effect=error): parsed_text = await parse_pdf_to_pages( STUB_DATA_DIR / "paper.pdf", page_range=1, failover_parser=mock_failover_reader, parse_media=False, ) mock_failover_reader.assert_called_once() assert mock_failover_reader.mock_calls[-1].kwargs["page_range"] == 1 assert not mock_failover_reader.mock_calls[-1].kwargs["parse_media"] assert ( "failover_parser" not in mock_failover_reader.mock_calls[-1].kwargs ), "Expecting to not propagate the failover" assert isinstance(parsed_text.content, dict) assert "1" in parsed_text.content assert parsed_text.content["1"] == (failover_text, []) ================================================ FILE: packages/paper-qa-pymupdf/LICENSE ================================================ GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software. A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public. The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version. An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU Affero General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Remote Network Interaction; Use with the GNU General Public License. Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see . ================================================ FILE: packages/paper-qa-pymupdf/README.md ================================================ # paper-qa-pymupdf [![GitHub](https://img.shields.io/badge/GitHub-black?logo=github&logoColor=white)](https://github.com/Future-House/paper-qa/tree/main/packages/paper-qa-pymupdf) [![PyPI version](https://badge.fury.io/py/paper-qa-pymupdf.svg)](https://badge.fury.io/py/paper-qa-pymupdf) [![tests](https://github.com/Future-House/paper-qa/actions/workflows/tests.yml/badge.svg)](https://github.com/Future-House/paper-qa) ![License](https://img.shields.io/badge/license-AGPLv3-blue.svg) ![PyPI Python Versions](https://img.shields.io/pypi/pyversions/paper-qa-pymupdf) PDF reading code backed by [PyMuPDF](https://github.com/pymupdf/PyMuPDF). ================================================ FILE: packages/paper-qa-pymupdf/pyproject.toml ================================================ [build-system] build-backend = "setuptools.build_meta" requires = ["setuptools>=64", "setuptools_scm>=8"] [project] authors = [ {email = "hello@futurehouse.org", name = "FutureHouse technical staff"}, ] classifiers = [ "Intended Audience :: Developers", "License :: OSI Approved :: GNU Affero General Public License v3", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] dependencies = [ "PyMuPDF>=1.24.12", # For pymupdf.set_messages addition "paper-qa", ] description = "PaperQA readers implemented using PyMuPDF" dynamic = ["version"] license = {file = "LICENSE"} maintainers = [ {email = "jamesbraza@gmail.com", name = "James Braza"}, {email = "michael.skarlinski@gmail.com", name = "Michael Skarlinski"}, {email = "white.d.andrew@gmail.com", name = "Andrew White"}, ] name = "paper-qa-pymupdf" readme = "README.md" requires-python = ">=3.11" [project.optional-dependencies] dev = [ "PyMuPDF>=1.27.2.2", # Lower pin for typing fix on Page.find_tables "fhlmi>=0.39", # Pin for bytes_to_string "paper-qa>=5.23", # Pin for PDFParserFn "pytest-asyncio", "pytest>=8", # Pin to keep recent ] [tool.ruff] extend = "../../pyproject.toml" [tool.setuptools.packages.find] where = ["src"] [tool.setuptools_scm] root = "../.." version_file = "src/paperqa_pymupdf/version.py" ================================================ FILE: packages/paper-qa-pymupdf/src/paperqa_pymupdf/__init__.py ================================================ from .reader import BLOCK_TEXT_INDEX, parse_pdf_to_pages, setup_pymupdf_python_logging __all__ = [ "BLOCK_TEXT_INDEX", "parse_pdf_to_pages", "setup_pymupdf_python_logging", ] ================================================ FILE: packages/paper-qa-pymupdf/src/paperqa_pymupdf/py.typed ================================================ ================================================ FILE: packages/paper-qa-pymupdf/src/paperqa_pymupdf/reader.py ================================================ import json import os from itertools import starmap from multiprocessing import Pool import pymupdf from paperqa.readers import resolve_page_range from paperqa.types import ParsedMedia, ParsedMetadata, ParsedText from paperqa.utils import ImpossibleParsingError, clean_invalid_unicode from pydantic import JsonValue def setup_pymupdf_python_logging() -> None: """ Configure PyMuPDF to use Python logging. SEE: https://pymupdf.readthedocs.io/en/latest/app3.html#diagnostics """ pymupdf.set_messages(pylogging=True) BLOCK_TEXT_INDEX = 4 # Attributes of pymupdf.Pixmap that contain useful metadata PYMUPDF_PIXMAP_ATTRS = { "alpha", # YAGNI on "digest" because it's not JSON serializable "height", "irect", "is_monochrome", "is_unicolor", "n", "size", "stride", "width", "x", "xres", "y", "yres", } def _extract_page_text( file: pymupdf.Document, page_num: int, path: str | os.PathLike, use_block_parsing: bool, page_size_limit: int | None = None, ) -> tuple[pymupdf.Page, str]: """Load a PDF page and extract its text. Args: file: An open (assumed) PyMuPDF document. page_num: Zero-indexed page number to load. path: Path to the PDF file (used in error messages). use_block_parsing: If True, extract text block-wise, preserving the order of text blocks as they appear in the PDF. page_size_limit: Optional character limit for a single page's text. Returns: A two-tuple of loaded PyMuPDF page and extracted text. Raises: ImpossibleParsingError: If the page cannot be loaded or its text exceeds page_size_limit. """ try: page = file.load_page(page_num) except pymupdf.mupdf.FzErrorFormat as exc: raise ImpossibleParsingError( f"Page loading via {pymupdf.__name__} failed on page {page_num} of" f" {file.page_count} for the PDF at path {path}, likely this PDF" " file is corrupt." ) from exc if use_block_parsing: # NOTE: this block-based parsing appears to be better, but until # fully validated on 1+ benchmarks, it's considered experimental # Extract text blocks from the page # Note: sort=False is important to preserve the order of text blocks # as they appear in the PDF blocks = page.get_text("blocks", sort=False) # Concatenate text blocks into a single string text = "\n".join( block[BLOCK_TEXT_INDEX] for block in blocks if len(block) > BLOCK_TEXT_INDEX ) else: text = page.get_text("text", sort=True) if page_size_limit and len(text) > page_size_limit: raise ImpossibleParsingError( f"The text in page {page_num} of {file.page_count} was {len(text)}" f" chars long, which exceeds the {page_size_limit} char limit for" f" the PDF at path {path}." ) return page, text def _parse_single_page_screenshot( path: str, page_num: int, dpi: float | None, page_size_limit: int | None, use_block_parsing: bool, ) -> tuple[int, str, list[ParsedMedia]]: """Worker function for parallel full-page screenshot parsing. NOTE: must be top-level for pickling. """ with pymupdf.open(path) as file: page, text = _extract_page_text( file, page_num, path, use_block_parsing, page_size_limit ) pix = page.get_pixmap(dpi=dpi) media_metadata: dict[str, JsonValue] = {"type": "screenshot"} | { a: getattr(pix, a) for a in PYMUPDF_PIXMAP_ATTRS } media_metadata["info_hashable"] = json.dumps(media_metadata, sort_keys=True) # Add page number after info_hashable so differing pages # don't break the cache key media_metadata["page_num"] = page_num + 1 media = [ParsedMedia(index=0, data=pix.tobytes(), info=media_metadata)] return page_num, text, media def parse_pdf_to_pages( path: str | os.PathLike, page_size_limit: int | None = None, page_range: int | tuple[int, int] | None = None, use_block_parsing: bool = False, parse_media: bool = True, full_page: bool = False, image_cluster_tolerance: float | tuple[float, float] = 25, dpi: float | None = None, num_workers: int = min(os.cpu_count() or 1, 4), **_, ) -> ParsedText: """Parse a PDF. Args: path: Path to the PDF file to parse. page_size_limit: Sensible character limit one page's text, used to catch bad PDF reads. use_block_parsing: Opt-in flag to parse text block-wise. parse_media: Flag to also parse media (e.g. images, tables). full_page: Set True to screenshot the entire page as one image, instead of parsing individual images or tables. image_cluster_tolerance: Tolerance (points) passed to `Page.cluster_drawings`. Can be a single value to apply to both X and Y directions, or a two-tuple to specify X and Y directions separately. The default was chosen to perform well on image extraction from LitQA2 PDFs. dpi: Optional DPI (dots per inch) for image resolution, if left unspecified PyMuPDF's default resolution from pymupdf.Page.get_pixmap will be applied. page_range: Optional start_page or two-tuple of inclusive (start_page, end_page) to parse only specific pages, where pages are one-indexed. Leaving as the default of None will parse all pages. num_workers: Number of worker processes for parallel full-page screenshots, default targets 4 processes. **_: Thrown away kwargs. """ x_tol, y_tol = ( image_cluster_tolerance if isinstance(image_cluster_tolerance, tuple) else (image_cluster_tolerance, image_cluster_tolerance) ) content: dict[str, str | tuple[str, list[ParsedMedia]]] = {} total_length = count_media = 0 if full_page and parse_media: # Capture the entire page as one image with pymupdf.open(path) as file: page_iter = resolve_page_range(page_range, file.page_count) path_str = str(path) args = [ (path_str, i, dpi, page_size_limit, use_block_parsing) for i in page_iter ] if num_workers > 1: with Pool(num_workers) as pool: results = pool.starmap(_parse_single_page_screenshot, args) else: # Avoid multiprocessing overhead when using just one process results = list(starmap(_parse_single_page_screenshot, args)) for page_num, text, media in results: content[str(page_num + 1)] = text, media total_length += len(text) count_media += len(media) else: with pymupdf.open(path) as file: for i in resolve_page_range(page_range, file.page_count): page, text = _extract_page_text( file, i, path, use_block_parsing, page_size_limit ) media = [] if parse_media: # Capture drawings/figures for box_i, box in enumerate( page.cluster_drawings( drawings=page.get_drawings(), x_tolerance=x_tol, y_tolerance=y_tol, ) ): pix = page.get_pixmap(clip=box, dpi=dpi) media_metadata = {"bbox": tuple(box), "type": "drawing"} | { a: getattr(pix, a) for a in PYMUPDF_PIXMAP_ATTRS } media_metadata["info_hashable"] = json.dumps( media_metadata, sort_keys=True ) # Add page number after info_hashable so differing pages # don't break the cache key media_metadata["page_num"] = i + 1 media.append( ParsedMedia( index=box_i, data=pix.tobytes(), info=media_metadata ) ) # Capture tables for table_i, table in enumerate(page.find_tables()): pix = page.get_pixmap(clip=table.bbox, dpi=dpi) media_metadata = { "bbox": tuple(table.bbox), "type": "table", } | {a: getattr(pix, a) for a in PYMUPDF_PIXMAP_ATTRS} media_metadata["info_hashable"] = json.dumps( media_metadata, sort_keys=True ) # Add page number after info_hashable so differing pages # don't break the cache key media_metadata["page_num"] = i + 1 media.append( ParsedMedia( index=table_i, data=pix.tobytes(), # On 9/14/2025, a `pymupdf.table.Table.to_markdown` stripped call returned: # '|Col1|Col2|Col3|Col4|Col5|Col6|Col7|Col8|\n|---|---|---|---|---|---|---|---|\n||\x02\x03
|\x04\x05\x06\x07\x08

|\x07\x08\x08
\n\x08
\x0e\x0f
\x17\x18\x18\x08
|\x02
\x0c\x10
\x11
\x19\r\x02\x1a\x00\x01\x02\x03
|\x11
\x12\x06\x05
\x0e\x13\x14\x15
\x04\x05\x06\x07
|\x05\x08
\x0c\x10
\x12\x06\x05
\x0e\x16\x13
|\x05\x08
\x0c\x10
\x12\x06\x05
\x0e\x16\x13
|' # noqa: E501, W505 # This garbage led to `asyncpg==0.30.0` with a PostgreSQL 15 DB throwing: # > asyncpg.exceptions.CharacterNotInRepertoireError: # > invalid byte sequence for encoding "UTF8": 0x00 # On 12/30/2025 with pymupdf==1.26.7, a `pymupdf.table.Table.to_markdown` call on # https://arxiv.org/pdf/1711.07566's page 3's Figure 2a's mesh and pixels example # outputs an orphaned low surrogate (U+DC3C), which is interpreted as an # incomplete UTF-16 surrogate pair downstream and causes: # > UnicodeEncodeError: 'utf-8' codec can't encode character '\udc3c' # > in position 46888: surrogates not allowed # Thus, the extracted markdown is cleaned text=( clean_invalid_unicode(table.to_markdown().strip()) ), info=media_metadata, ) ) content[str(i + 1)] = text, media else: content[str(i + 1)] = text total_length += len(text) count_media += len(media) multimodal_string = f"|multimodal|dpi={dpi}" + ( "|mode=full-page" if full_page else f"|mode=individual|x-tol={x_tol}|y-tol={y_tol}" ) metadata = ParsedMetadata( parsing_libraries=[f"{pymupdf.__name__} ({pymupdf.__version__})"], total_parsed_text_length=total_length, count_parsed_media=count_media, name=( f"pdf|page_range={str(page_range).replace(' ', '')}" f"|block={use_block_parsing}{multimodal_string if parse_media else ''}" ), ) return ParsedText(content=content, metadata=metadata) ================================================ FILE: packages/paper-qa-pymupdf/tests/test_paperqa_pymupdf.py ================================================ import base64 import json import re from pathlib import Path from typing import cast from unittest.mock import MagicMock, patch import pymupdf import pytest from lmi.utils import bytes_to_string from paperqa import Doc, Docs, Settings from paperqa.readers import PDFParserFn, chunk_pdf from paperqa.utils import REPLACEMENT_CHAR, ImpossibleParsingError, get_citation_ids from paperqa_pymupdf import parse_pdf_to_pages REPO_ROOT = Path(__file__).parents[3] STUB_DATA_DIR = REPO_ROOT / "tests" / "stub_data" @pytest.mark.asyncio async def test_parse_pdf_to_pages() -> None: assert isinstance(parse_pdf_to_pages, PDFParserFn) filepath = STUB_DATA_DIR / "pasa.pdf" parsed_text = parse_pdf_to_pages(filepath, use_block_parsing=True) assert isinstance(parsed_text.content, dict) assert len(parsed_text.content) == 15, "Expected all pages to be parsed" assert "1" in parsed_text.content, "Parsed text should contain page 1" assert isinstance(parsed_text.content["1"], tuple) p1_text = parsed_text.content["1"][0] assert ( "Abstract\n\nWe introduce PaSa, an advanced Paper Search" "\nagent powered by large language models." ) in p1_text, "Block parsing failed to handle abstract" assert ( p1_text.count("outperforms existing") == 1 ), "Test expects one match of this substring" col_1_bottom_idx = p1_text.index("outperforms existing") assert ( p1_text.count("address fine-grained") == 1 ), "Test expects one match of this substring" col_2_top_idx = p1_text.index("address fine-grained") assert col_1_bottom_idx < col_2_top_idx, "Expected column ordering to be correct" # Check the images in Figure 1 assert not isinstance(parsed_text.content["2"], str) p2_text, p2_media = parsed_text.content["2"] assert "Figure 1" in p2_text, "Expected Figure 1 title" assert "Crawler" in p2_text, "Expected Figure 1 contents" (p2_image,) = [m for m in p2_media if m.info["type"] == "drawing"] assert p2_image.index == 0 assert p2_image.info["page_num"] == 2 assert p2_image.info["height"] == pytest.approx(130, rel=0.1) assert p2_image.info["width"] == pytest.approx(452, rel=0.1) p2_bbox = p2_image.info["bbox"] assert isinstance(p2_bbox, tuple) for i, value in enumerate((71, 70.87, 522, 202.98)): assert p2_bbox[i] == pytest.approx(value, rel=0.1) assert isinstance(p2_image.data, bytes) # Check the image is valid base64 base64_data = bytes_to_string(p2_image.data) assert base64_data assert base64.b64decode(base64_data, validate=True) == p2_image.data # Check we can round-trip serialize the image serde_p2_image = type(p2_image).model_validate_json(p2_image.model_dump_json()) assert serde_p2_image == p2_image # Check useful attributes are present and are JSON serializable json.dumps(p2_image.info) for attr in ("width", "height"): assert ( p2_image.info[attr] == serde_p2_image.info[attr] ), "Expected serialization to match original" dim = p2_image.info[attr] assert isinstance(dim, int | float) assert dim > 0, "Edge length should be positive" # Check Figure 1 can be used to answer questions doc = Doc( docname="He2025", dockey="stub", citation=( 'He, Yichen, et al. "PaSa: An LLM Agent for Comprehensive Academic Paper' ' Search." *arXiv*, 2025, arXiv:2501.10120v1. Accessed 2025.' ), ) texts = chunk_pdf(parsed_text, doc=doc, chunk_chars=3000, overlap=100) fig_1_text = texts[1] assert ( "Figure 1: Architecture of PaSa" in fig_1_text.text ), "Expecting Figure 1 for the test to work" assert fig_1_text.media, "Expecting media to test multimodality" fig_1_text.text = "stub" # Replace text to confirm multimodality works docs = Docs() assert await docs.aadd_texts(texts=[fig_1_text], doc=doc) for query, answer_checks in ( ("What actions can the Crawler take?", [(("search", "expand", "stop"), 2)]), ("What actions can the Selector take?", [(("select", "drop"), 2)]), ( "How many User Query blue boxes are there, and what are they connected to?", [r"two|2|(?=.*paper queue)(?=.*selector)"], ), ): session = await docs.aquery(query=query) assert session.contexts, "Expected contexts to be generated" assert all( c.text.text == fig_1_text.text and c.text.media == fig_1_text.media for c in session.contexts ), "Expected context to reuse Figure 1's text and media" # Remove citations so numeric assertions don't have false positives raw_answer_no_citations = session.raw_answer for key in get_citation_ids(session.raw_answer): raw_answer_no_citations = raw_answer_no_citations.replace(f"({key})", "") for check in answer_checks: answer_lower = raw_answer_no_citations.lower() if isinstance(check, str): assert re.search( check, answer_lower ), f"Expected {raw_answer_no_citations=} to match pattern {check!r}" else: substrings, min_count = cast(tuple[tuple[str, ...], int], check) assert ( sum(x in answer_lower for x in substrings) >= min_count ), f"Expected {raw_answer_no_citations=} to have {substrings} present" # Let's check the full page parsing behavior parsed_text_full_page = parse_pdf_to_pages(filepath, full_page=True) assert isinstance(parsed_text_full_page.content, dict) assert len(parsed_text_full_page.content) == 15, "Expected all pages to be parsed" assert "1" in parsed_text_full_page.content, "Parsed text should contain page 1" assert "2" in parsed_text_full_page.content, "Parsed text should contain page 2" for page_num in ("1", "2"): page_content = parsed_text_full_page.content[page_num] assert not isinstance(page_content, str), f"Page {page_num} should have images" # Check each page has exactly one image page_text, (full_page_image,) = page_content assert page_text assert full_page_image.index == 0, "Full page image should have index 0" assert full_page_image.info["type"] == "screenshot" assert full_page_image.info["page_num"] == int(page_num) assert full_page_image.info["height"] == pytest.approx(842, rel=0.01) assert full_page_image.info["width"] == pytest.approx(596, rel=0.01) assert isinstance(full_page_image.data, bytes) assert full_page_image.data, "Full page image should have data" # Check useful attributes are present and are JSON serializable json.dumps(p2_image.info) for attr in ("width", "height"): dim = full_page_image.info[attr] assert isinstance(dim, int | float) assert dim > 0, "Edge length should be positive" # Check the no-media behavior parsed_text_no_media = parse_pdf_to_pages(filepath, parse_media=False) assert isinstance(parsed_text_no_media.content, dict) assert all(isinstance(c, str) for c in parsed_text_no_media.content.values()) assert len(parsed_text_no_media.content) == 15, "Expected all pages to be parsed" # Check metadata for pt in (parsed_text, parsed_text_full_page, parsed_text_no_media): (parsing_library,) = pt.metadata.parsing_libraries assert pymupdf.__name__ in parsing_library assert pt.metadata.name assert "pdf" in pt.metadata.name # Check commonalities across all modes assert ( len(parsed_text.content) == len(parsed_text_full_page.content) == len(parsed_text_no_media.content) ), "All modes should parse the same number of pages" def test_page_range() -> None: filepath = STUB_DATA_DIR / "pasa.pdf" parsed_text_p1 = parse_pdf_to_pages(filepath, page_range=1) assert isinstance(parsed_text_p1.content, dict) assert list(parsed_text_p1.content) == ["1"] assert parsed_text_p1.metadata.name assert "page_range=1" in parsed_text_p1.metadata.name parsed_text_p1_2 = parse_pdf_to_pages(filepath, page_range=(1, 2)) assert isinstance(parsed_text_p1_2.content, dict) assert list(parsed_text_p1_2.content) == ["1", "2"] assert parsed_text_p1_2.metadata.name assert "page_range=(1,2)" in parsed_text_p1_2.metadata.name # NOTE: exceeds 15-page PDF length parsed_text_p1_20 = parse_pdf_to_pages(filepath, page_range=(1, 20)) assert isinstance(parsed_text_p1_20.content, dict) assert list(parsed_text_p1_20.content) == [ str(i) for i in range(1, 15 + 1) ], "Expected pages to be truncated to 15 or us to get blown up" assert parsed_text_p1_20.metadata.name assert "page_range=(1,20)" in parsed_text_p1_20.metadata.name def test_page_size_limit_denial() -> None: with pytest.raises(ImpossibleParsingError, match="char limit"): parse_pdf_to_pages(STUB_DATA_DIR / "paper.pdf", page_size_limit=10) # chars @pytest.mark.asyncio async def test_invalid_pdf_is_denied(tmp_path) -> None: # This PDF content (actually it's a 404 HTML page) was seen with open access # in June 2025, so let's make sure it's denied bad_pdf_content = """ 404 Not Found

404 Not Found


nginx
""" bad_pdf_path = tmp_path / "bad.pdf" bad_pdf_path.write_text(bad_pdf_content) docs = Docs() with pytest.raises(ValueError, match="does not look"): await docs.aadd( bad_pdf_path, citation="Citation 1", # Skip citation inference title="Title", # Skip title inference settings=Settings( parsing={"parse_pdf": parse_pdf_to_pages, "use_doc_details": False} ), ) def test_nonexistent_file_failure() -> None: filename = "/nonexistent/path/file.pdf" with pytest.raises((pymupdf.FileNotFoundError, FileNotFoundError), match=filename): parse_pdf_to_pages(filename) def test_table_parsing() -> None: spy_to_markdown = MagicMock(side_effect=pymupdf.table.Table.to_markdown) zeroth_raw_table_text = "" def custom_to_markdown(self, clean=False, fill_empty=True) -> str: md = spy_to_markdown(self, clean=clean, fill_empty=fill_empty) if spy_to_markdown.call_count == 1: nonlocal zeroth_raw_table_text zeroth_raw_table_text = md return ( # NOTE: this text has a null byte, which we want to filter "|Col1|Col2|Col3|Col4|Col5|Col6|Col7|Col8|" "\n|---|---|---|---|---|---|---|---|" "\n||\x02\x03
|\x04\x05\x06\x07\x08
" "
|\x07\x08\x08
\n\x08
\x0e\x0f
\x17\x18\x18\x08
|\x02
\x0c\x10
\x11
\x19\r\x02\x1a\x00\x01\x02\x03
|\x11
\x12\x06\x05
\x0e\x13\x14\x15
\x04\x05\x06\x07
|\x05\x08
\x0c\x10
\x12\x06\x05
\x0e\x16\x13
|\x05\x08
\x0c\x10
\x12\x06\x05
\x0e\x16\x13
|" # noqa: E501 ) return md filepath = STUB_DATA_DIR / "influence.pdf" with patch.object(pymupdf.table.Table, "to_markdown", custom_to_markdown): parsed_text = parse_pdf_to_pages(filepath) assert isinstance(parsed_text.content, dict) assert all( t and t[0] != "\n" and t[-1] != "\n" for t in parsed_text.content.values() ), "Expected no leading/trailing newlines in parsed text" assert "1" in parsed_text.content, "Parsed text should contain page 1" all_tables = { i: [m for m in pagenum_media[1] if m.info["type"] == "table"] for i, pagenum_media in parsed_text.content.items() if isinstance(pagenum_media, tuple) } all_tables = {k: v for k, v in all_tables.items() if v} assert ( sum(len(tables) for tables in all_tables.values()) >= 2 ), "Expected a few tables to be parsed for assertions to work" zeroth_media, *_ = next(iter(all_tables.values())) assert zeroth_media.text assert "\x00" not in zeroth_media.text, "Expected no null byte" assert REPLACEMENT_CHAR in zeroth_media.text, "Expected replacement char(s)" try: # Seen with pymupdf==1.26.6 assert zeroth_raw_table_text == ( "|Gap Size (mm)|Ununited|Uncertain|United|" "\n|---|---|---|---|" "\n|**1.0**|1/5(20%)|1/5(20%)|3/5(60%)|" "\n|**1.5**|3/7(43%)|2/7(29%)|2/7(29%)|" "\n|**2.0**|3/6(50%)|2/6(33%)|1/6(17%)|" "\n\n" # NOTE: this is before strip, so there can be trailing whitespace ) except AssertionError: # Seen with pymupdf==1.26.5 assert zeroth_raw_table_text == ( "|Gap Size (mm)|Ununited|Uncertain|United|" "\n|---|---|---|---|" "\n|**1.0**|1/5 (20%)|1/5 (20%)|3/5 (60%)|" "\n|**1.5**|3/7 (43%)|2/7 (29%)|2/7 (29%)|" "\n|**2.0**
|3/6 (50%)|2/6 (33%)|1/6 (17%)|" "\n\n" # NOTE: this is before strip, so there can be trailing whitespace ) def test_table_parsing_orphaned_surrogate() -> None: # Simulate orphaned low surrogate (U+DC3C) in table markdown output surrogate_char = chr(0xDC3C) surrogate_md = f"|Col1|Col2|\n|---|---|\n|valid|{surrogate_char}data|" filepath = STUB_DATA_DIR / "influence.pdf" with patch.object( pymupdf.table.Table, "to_markdown", return_value=surrogate_md ) as mock_to_markdown: # Page 23 has a table, so reading just that page speeds the test up parsed_text = parse_pdf_to_pages(filepath, page_range=23) mock_to_markdown.assert_called_once() assert isinstance(parsed_text.content, dict) all_tables = [ m for pagenum_media in parsed_text.content.values() if isinstance(pagenum_media, tuple) for m in pagenum_media[1] if m.info["type"] == "table" ] assert len(all_tables) == 1, "Expected a table to be parsed" table_text = all_tables[0].text assert table_text assert surrogate_char not in table_text, "Expected no surrogate chars" assert REPLACEMENT_CHAR in table_text, "Expected replacement char(s)" assert "data" in table_text, "Expected other text to be preserved" def test_equation_parsing() -> None: parsed_text = parse_pdf_to_pages(STUB_DATA_DIR / "duplicate_media.pdf") assert isinstance(parsed_text.content, dict) assert isinstance(parsed_text.content["1"], tuple) p1_text, p1_media = parsed_text.content["1"] # SEE: https://regex101.com/r/pyOHLq/1 assert re.search( r"[_*]*E[_*]* ?= ?[_*]*mc[_*]*(?:)?[ ^]?[2²] ?(?:<\/sup>)?", p1_text ), "Expected inline equation in page 1 text" assert re.search(r"n ?\+ ?a", p1_text), "Expected block equation in page 1 text" assert p1_media ================================================ FILE: packages/paper-qa-pypdf/LICENSE ================================================ Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2024 FutureHouse Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ================================================ FILE: packages/paper-qa-pypdf/README.md ================================================ # paper-qa-pypdf [![GitHub](https://img.shields.io/badge/GitHub-black?logo=github&logoColor=white)](https://github.com/Future-House/paper-qa/tree/main/packages/paper-qa-pypdf) [![PyPI version](https://badge.fury.io/py/paper-qa-pypdf.svg)](https://badge.fury.io/py/paper-qa-pypdf) [![tests](https://github.com/Future-House/paper-qa/actions/workflows/tests.yml/badge.svg)](https://github.com/Future-House/paper-qa) ![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg) ![PyPI Python Versions](https://img.shields.io/pypi/pyversions/paper-qa-pypdf) PDF reading code backed by [PyPDF](https://github.com/py-pdf/pypdf). To also parse images or take full-page screenshots, use the `media` extra: `pip install paper-qa-pypdf[media]`. This is backed by [pypdfium2](https://github.com/pypdfium2-team/pypdfium2). From there, to also support grouping images into figures or parsing tables, use the `enhanced` extra: `pip install paper-qa-pypdf[enhanced]`. This is backed by [pdfplumber](https://github.com/jsvine/pdfplumber). ================================================ FILE: packages/paper-qa-pypdf/pyproject.toml ================================================ [build-system] build-backend = "setuptools.build_meta" requires = ["setuptools>=64", "setuptools_scm>=8"] [project] authors = [ {email = "hello@futurehouse.org", name = "FutureHouse technical staff"}, ] classifiers = [ "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] dependencies = [ "PyPDF>=3", # Pin since v1 doesn't work and there's no v2 on PyPI "paper-qa", ] description = "PaperQA readers implemented using PyPDF" dynamic = ["version"] license = {file = "LICENSE"} maintainers = [ {email = "jamesbraza@gmail.com", name = "James Braza"}, {email = "michael.skarlinski@gmail.com", name = "Michael Skarlinski"}, {email = "white.d.andrew@gmail.com", name = "Andrew White"}, ] name = "paper-qa-pypdf" readme = "README.md" requires-python = ">=3.11" [project.optional-dependencies] dev = [ "fhlmi>=0.39", # Pin for bytes_to_string "paper-qa-pypdf[enhanced,media]", "paper-qa>=5.23", # Pin for PDFParserFn "pytest-asyncio", "pytest-rerunfailures", "pytest>=8", # Pin to keep recent ] # Enhanced means: (1) cluster images into figures and (2) parse tables enhanced = [ "paper-qa-pypdf[media]", "pdfplumber>=0.5", # Pin for decode_text fixes ] media = [ "Pillow", "PyPDF[image]", "pypdfium2>=4.22.0", # Pin for PYPDFIUM_INFO addition ] [tool.ruff] extend = "../../pyproject.toml" [tool.setuptools.packages.find] where = ["src"] [tool.setuptools_scm] root = "../.." version_file = "src/paperqa_pypdf/version.py" ================================================ FILE: packages/paper-qa-pypdf/src/paperqa_pypdf/__init__.py ================================================ from .reader import parse_pdf_to_pages __all__ = [ "parse_pdf_to_pages", ] ================================================ FILE: packages/paper-qa-pypdf/src/paperqa_pypdf/py.typed ================================================ ================================================ FILE: packages/paper-qa-pypdf/src/paperqa_pypdf/reader.py ================================================ import io import json import os from contextlib import AbstractContextManager, closing, nullcontext from enum import StrEnum, unique from typing import TYPE_CHECKING, Any, cast import pypdf import pypdf.errors from paperqa.readers import resolve_page_range from paperqa.types import ParsedMedia, ParsedMetadata, ParsedText from paperqa.utils import ImpossibleParsingError, clean_invalid_unicode from .utils import cluster_bboxes try: import pypdfium2 as pdfium except ImportError: pdfium = None try: import pdfplumber except ImportError: pdfplumber = None # type: ignore[assignment] if TYPE_CHECKING: from PIL import Image @unique class MediaMode(StrEnum): """Mode for media extraction from PDFs.""" NONE = "" # No media extraction FULL_PAGE = "full-page" # Screenshot entire page INDIVIDUAL_CLUSTERING = ( # Extract individual images then cluster "individual-clustering" ) INDIVIDUAL = "individual" # Extract individual images def __str__(self) -> str: return self.metadata_value @property def metadata_value(self) -> str: return self.value.removesuffix("-clustering") # Attributes of pdfium.PdfBitmap that contain useful metadata PDFIUM_BITMAP_ATTRS = {"width", "height", "stride", "n_channels", "mode"} SCALE_TO_DPI = 72 def parse_pdf_to_pages( # noqa: PLR0912 path: str | os.PathLike, page_size_limit: int | None = None, page_range: int | tuple[int, int] | None = None, parse_media: bool = True, full_page: bool = False, image_cluster_tolerance: float = 50, image_cluster_padding: float = 10, dpi: float | None = None, **_: Any, ) -> ParsedText: """Parse a PDF. Args: path: Path to the PDF file to parse. page_size_limit: Sensible character limit one page's text, used to catch bad PDF reads. parse_media: Flag to also parse media (e.g. images, tables). full_page: Set True to screenshot the entire page as one image, instead of parsing individual images or tables. When False and pdfplumber is available, nearby images will be clustered into figure regions. page_range: Optional start_page or two-tuple of inclusive (start_page, end_page) to parse only specific pages, where pages are one-indexed. Leaving as the default of None will parse all pages. image_cluster_tolerance: Maximum distance (pixels) between images to consider them part of the same cluster (inclusive). Only used when not screenshotting pages and pdfplumber is available. image_cluster_padding: Padding (pixels) to add around clustered image regions when rendering. Only used when not screenshotting pages and pdfplumber is available. dpi: Optional DPI (dots per inch) for image resolution, if left unspecified pypdfium2's default 1.0 scale will be employed. **_: Thrown away kwargs. """ render_kwargs = {} if dpi is not None: render_kwargs["scale"] = dpi / SCALE_TO_DPI with open(path, "rb") as file: # noqa: PLR1702 try: pdf_reader = pypdf.PdfReader(file) except pypdf.errors.PdfReadError as exc: raise ImpossibleParsingError( f"PDF reading via {pypdf.__name__} failed on the PDF at path {path!r}," " likely this PDF file is corrupt." ) from exc pages: dict[str, str | tuple[str, list[ParsedMedia]]] = {} total_length = count_media = 0 match (parse_media, full_page, pdfplumber is not None): case (False, _, _): media_mode = MediaMode.NONE case (True, True, _): media_mode = MediaMode.FULL_PAGE case (True, False, True): media_mode = MediaMode.INDIVIDUAL_CLUSTERING case (True, False, False): media_mode = MediaMode.INDIVIDUAL if media_mode in {MediaMode.FULL_PAGE, MediaMode.INDIVIDUAL_CLUSTERING}: try: pdf_doc = pdfium.PdfDocument(str(path)) except AttributeError as exc: raise ImportError( "Media parsing requires 'pypdfium2' to be installed for rasterization support." " Please install it via `pip install paper-qa-pypdf[media]`." ) from exc pdf_context: AbstractContextManager = closing(pdf_doc) else: pdf_context = nullcontext() if media_mode == MediaMode.INDIVIDUAL_CLUSTERING: plumber_pdf = pdfplumber.open(str(path)) plumber_context: AbstractContextManager = plumber_pdf else: plumber_context = nullcontext() with pdf_context, plumber_context: for i in resolve_page_range(page_range, len(pdf_reader.pages)): page = pdf_reader.pages[i] # On 12/30/2025 with pypdf==6.4.2, a `PageObject.extract_text` call on # https://arxiv.org/pdf/1711.07566's page 3's Figure 2a's rasterization # example outputs an orphaned low surrogate (U+DC63), which is # interpreted as an incomplete UTF-16 surrogate pair downstream and causes: # > UnicodeEncodeError: 'utf-8' codec can't encode character '\udc63' # > in position 17404: surrogates not allowed # Thus, the extracted text is cleaned text = clean_invalid_unicode(page.extract_text()) if page_size_limit and len(text) > page_size_limit: raise ImpossibleParsingError( f"The text in page {i} of {len(pdf_reader.pages)} was {len(text)} chars" f" long, which exceeds the {page_size_limit} char limit for the PDF" f" at path {path}." ) if media_mode == MediaMode.FULL_PAGE: pdfium_page: pdfium.PdfPage = pdf_doc[i] pdfium_rendered_page: pdfium.PdfBitmap = pdfium_page.render( **render_kwargs ) buf = io.BytesIO() try: pdfium_rendered_page.to_pil().save(buf, format="PNG") except AttributeError as exc: # Nice-ify pypdfium2's bad error message raise ImportError( "Full page media rendering requires 'Pillow' to be installed." " Please install it via `pip install paper-qa-pypdf[media]`." ) from exc media_metadata = { "type": "screenshot", "page_width": pdfium_page.get_width(), "page_height": pdfium_page.get_height(), } | { f"bitmap_{a}": getattr(pdfium_rendered_page, a) for a in PDFIUM_BITMAP_ATTRS } del pdfium_rendered_page # Free pdfium bitmap memory media_metadata["info_hashable"] = json.dumps( media_metadata, sort_keys=True ) # Add page number after info_hashable so differing pages # don't break the cache key media_metadata["page_num"] = i + 1 pages[str(i + 1)] = text, [ ParsedMedia(index=0, data=buf.getvalue(), info=media_metadata) ] count_media += 1 elif media_mode == MediaMode.INDIVIDUAL_CLUSTERING: media_list: list[ParsedMedia] = [] plumber_page = plumber_pdf.pages[i] page_width = plumber_page.width page_height = plumber_page.height # Cluster images into figure regions pdfium_page = pdf_doc[i] for cluster_idx, (x0, y0, x1, y1) in enumerate( cluster_bboxes( [ (img["x0"], img["top"], img["x1"], img["bottom"]) for img in plumber_page.images ], tolerance=image_cluster_tolerance, ) ): # Add padding around the figure region x0 = max(0, x0 - image_cluster_padding) y0 = max(0, y0 - image_cluster_padding) x1 = min(page_width, x1 + image_cluster_padding) y1 = min(page_height, y1 + image_cluster_padding) # Calculate and render the cropped region pix = pdfium_page.render( crop=( x0, page_height - y1, page_width - x1, page_height - (page_height - y0), ), **render_kwargs, ) buf = io.BytesIO() try: pix.to_pil().save(buf, format="PNG") except AttributeError as exc: raise ImportError( "Figure rendering requires 'Pillow' to be installed." " Please install it via `pip install paper-qa-pypdf[media]`." ) from exc media_metadata = { "type": "picture", "bbox": (x0, y0, x1, y1), "width": pix.width, "height": pix.height, } del pix # Free pdfium bitmap memory media_metadata["info_hashable"] = json.dumps( { k: ( v if k != "bbox" else tuple(round(x) for x in cast(tuple, v)) ) for k, v in media_metadata.items() }, sort_keys=True, ) # Add page number after info_hashable so differing pages # don't break the cache key media_metadata["page_num"] = i + 1 media_list.append( ParsedMedia( index=cluster_idx, data=buf.getvalue(), info=media_metadata, ) ) # Extract tables for table in plumber_page.find_tables(): x0, y0, x1, y1 = table.bbox # Add padding around the table region x0 = max(0, x0 - image_cluster_padding) y0 = max(0, y0 - image_cluster_padding) x1 = min(page_width, x1 + image_cluster_padding) y1 = min(page_height, y1 + image_cluster_padding) # Render the table region as an image pix = pdfium_page.render( crop=( x0, page_height - y1, page_width - x1, page_height - (page_height - y0), ), **render_kwargs, ) buf = io.BytesIO() pix.to_pil().save(buf, format="PNG") table_metadata: dict[str, Any] = { "type": "table", "bbox": (x0, y0, x1, y1), "width": pix.width, "height": pix.height, } del pix # Free pdfium bitmap memory table_metadata["info_hashable"] = json.dumps( { k: ( v if k != "bbox" else tuple(round(x) for x in cast(tuple, v)) ) for k, v in table_metadata.items() }, sort_keys=True, ) # Add page number after info_hashable so differing pages # don't break the cache key table_metadata["page_num"] = i + 1 media_list.append( ParsedMedia( index=len(media_list), data=buf.getvalue(), info=table_metadata, ) ) pages[str(i + 1)] = text, media_list count_media += len(media_list) elif media_mode == MediaMode.INDIVIDUAL: # NOTE: if Pillow is not installed, # PyPDF will blow up here with a nice message media_list = [] for img_idx, img_obj in enumerate(page.images): pil_image = cast("Image.Image", img_obj.image) width, height = pil_image.size if pil_image.format == "PNG": # LLM providers accept PNG, so leave the image data as-is data: bytes = img_obj.data else: # Re-encode as PNG because the image may be in a # format LLM providers reject (e.g. JPEG2000) buf = io.BytesIO() try: pil_image.save(buf, format="PNG") except OSError as exc: if "cannot write mode" not in str(exc): raise # Don't swallow unrelated IO errors # PNG doesn't support all color modes (e.g. CMYK # from print-oriented PDFs), so fall back to RGB buf = io.BytesIO() # Reset after partial write pil_image.convert("RGB").save(buf, format="PNG") data = buf.getvalue() media_metadata = { "type": "picture", "width": width, "height": height, } media_metadata["info_hashable"] = json.dumps( media_metadata, sort_keys=True ) # Add page number after info_hashable so differing pages # don't break the cache key media_metadata["page_num"] = i + 1 media_list.append( ParsedMedia(index=img_idx, data=data, info=media_metadata) ) pages[str(i + 1)] = text, media_list count_media += len(media_list) else: pages[str(i + 1)] = text total_length += len(text) # Determine mode string and parsing libraries based on actual mode used lib_parts = [f"{pypdf.__name__} ({pypdf.__version__})"] if media_mode == MediaMode.FULL_PAGE: lib_parts.append(f"{pdfium.__name__} ({pdfium.PYPDFIUM_INFO})") elif media_mode == MediaMode.INDIVIDUAL_CLUSTERING: lib_parts.extend( [ f"{pdfium.__name__} ({pdfium.PYPDFIUM_INFO})", f"pdfplumber ({pdfplumber.__version__})", ] ) multimodal_string = f"|multimodal|dpi={dpi}|mode={media_mode.metadata_value}" metadata = ParsedMetadata( parsing_libraries=[", ".join(lib_parts)], total_parsed_text_length=total_length, count_parsed_media=count_media, name=( f"pdf|page_range={str(page_range).replace(' ', '')}" f"{multimodal_string if media_mode != MediaMode.NONE else ''}" ), ) return ParsedText(content=pages, metadata=metadata) ================================================ FILE: packages/paper-qa-pypdf/src/paperqa_pypdf/utils.py ================================================ from collections import defaultdict def cluster_bboxes( bboxes: list[tuple[float, float, float, float]], tolerance: float = 50 ) -> list[tuple[float, float, float, float]]: """Cluster nearby bounding boxes into regions using spatial proximity. Uses union-find to cluster bboxes based on the input tolerance, then computes a merged bounding box for each cluster. Args: bboxes: List of (x0, y0, x1, y1) bounding boxes. tolerance: Maximum distance (inclusive) between bboxes to consider them part of the same cluster. Returns: List of (x0, y0, x1, y1) merged bounding boxes for each cluster. """ parent = list(range(len(bboxes))) def find(i: int) -> int: if parent[i] != i: parent[i] = find(parent[i]) return parent[i] def union(i: int, j: int) -> None: pi, pj = find(i), find(j) if pi != pj: parent[pi] = pj # Cluster bboxes that are within tolerance distance for i, b1 in enumerate(bboxes): for j in range(i + 1, len(bboxes)): b2 = bboxes[j] # Distance is 0 if they overlap, otherwise there's a gap between them x_dist = max(0, max(b1[0], b2[0]) - min(b1[2], b2[2])) y_dist = max(0, max(b1[1], b2[1]) - min(b1[3], b2[3])) if x_dist <= tolerance and y_dist <= tolerance: union(i, j) # Group bboxes by cluster and compute merged bbox clusters: dict[int, list[tuple[float, float, float, float]]] = defaultdict(list) for i, bbox in enumerate(bboxes): clusters[find(i)].append(bbox) return [ ( min(b[0] for b in cluster_bboxes), min(b[1] for b in cluster_bboxes), max(b[2] for b in cluster_bboxes), max(b[3] for b in cluster_bboxes), ) for cluster_bboxes in clusters.values() ] ================================================ FILE: packages/paper-qa-pypdf/tests/test_paperqa_pypdf.py ================================================ import base64 import io import json import re from collections.abc import Sequence from pathlib import Path from types import SimpleNamespace from typing import cast from unittest.mock import patch import pytest from lmi.utils import bytes_to_string from paperqa import Doc, Docs from paperqa.readers import PDFParserFn, chunk_pdf from paperqa.utils import REPLACEMENT_CHAR, ImpossibleParsingError, get_citation_ids from PIL import Image from paperqa_pypdf import parse_pdf_to_pages from paperqa_pypdf.reader import MediaMode REPO_ROOT = Path(__file__).parents[3] STUB_DATA_DIR = REPO_ROOT / "tests" / "stub_data" @pytest.mark.flaky(reruns=2, only_rerun=["AssertionError"]) @pytest.mark.asyncio async def test_parse_pdf_to_pages() -> None: assert isinstance(parse_pdf_to_pages, PDFParserFn) filepath = STUB_DATA_DIR / "pasa.pdf" parsed_text = parse_pdf_to_pages(filepath) assert isinstance(parsed_text.content, dict) assert len(parsed_text.content) == 15, "Expected all pages to be parsed" assert "1" in parsed_text.content, "Parsed text should contain page 1" assert isinstance(parsed_text.content["1"], tuple) p1_text = parsed_text.content["1"][0] matches = re.findall( r"Abstract\nWe introduce PaSa, an advanced Paper Search" r"\s?agent powered by large language models\.", p1_text, ) assert len(matches) == 1, f"Parsing failed to handle abstract in {p1_text}." assert ( p1_text.count("outperforms existing") == 1 ), "Test expects one match of this substring" col_1_bottom_idx = p1_text.index("outperforms existing") assert ( p1_text.count("address fine-grained") == 1 ), "Test expects one match of this substring" col_2_top_idx = p1_text.index("address fine-grained") assert col_1_bottom_idx < col_2_top_idx, "Expected column ordering to be correct" # Check the images in Figure 1 assert not isinstance(parsed_text.content["2"], str) p2_text, p2_media = parsed_text.content["2"] assert "Figure 1" in p2_text, "Expected Figure 1 title" assert "Crawler" in p2_text, "Expected Figure 1 contents" (p2_image,) = [m for m in p2_media if m.info["type"] == "picture"] assert p2_image.index == 0 assert p2_image.info["page_num"] == 2 assert p2_image.info["height"] == pytest.approx(135, rel=0.1) assert p2_image.info["width"] == pytest.approx(440, rel=0.1) p2_bbox = p2_image.info["bbox"] assert isinstance(p2_bbox, tuple) for i, value in enumerate((91.4, 65.6, 531.8, 201.7)): assert p2_bbox[i] == pytest.approx(value, rel=0.1) assert isinstance(p2_image.data, bytes) # Check the image is valid base64 base64_data = bytes_to_string(p2_image.data) assert base64_data assert base64.b64decode(base64_data, validate=True) == p2_image.data # Check we can round-trip serialize the image serde_p2_image = type(p2_image).model_validate_json(p2_image.model_dump_json()) assert serde_p2_image == p2_image # Check useful attributes are present and are JSON serializable json.dumps(p2_image.info) for attr in ("width", "height"): assert ( p2_image.info[attr] == serde_p2_image.info[attr] ), "Expected serialization to match original" dim = p2_image.info[attr] assert isinstance(dim, int | float) assert dim > 0, "Edge length should be positive" # Check Figure 1 can be used to answer questions doc = Doc( docname="He2025", dockey="stub", citation=( 'He, Yichen, et al. "PaSa: An LLM Agent for Comprehensive Academic Paper' ' Search." *arXiv*, 2025, arXiv:2501.10120v1. Accessed 2025.' ), ) texts = chunk_pdf(parsed_text, doc=doc, chunk_chars=3000, overlap=100) fig_1_text = texts[1] assert ( "Figure 1: Architecture of PaSa" in fig_1_text.text ), "Expecting Figure 1 for the test to work" assert fig_1_text.media, "Expecting media to test multimodality" fig_1_text.text = "stub" # Replace text to confirm multimodality works docs = Docs() assert await docs.aadd_texts(texts=[fig_1_text], doc=doc) for query, answer_checks in ( ("What actions can the Crawler take?", [(("search", "expand", "stop"), 2)]), ("What actions can the Selector take?", [(("select", "drop"), 2)]), ( "How many User Query blue boxes are there, and what are they connected to?", [r"two|2|(?=.*paper queue)(?=.*selector)"], ), ): session = await docs.aquery(query=query) assert session.contexts, "Expected contexts to be generated" assert all( c.text.text == fig_1_text.text and c.text.media == fig_1_text.media for c in session.contexts ), "Expected context to reuse Figure 1's text and media" # Remove citations so numeric assertions don't have false positives raw_answer_no_citations = session.raw_answer for key in get_citation_ids(session.raw_answer): raw_answer_no_citations = raw_answer_no_citations.replace(f"({key})", "") for check in answer_checks: answer_lower = raw_answer_no_citations.lower() if isinstance(check, str): assert re.search( check, answer_lower ), f"Expected {raw_answer_no_citations=} to match pattern {check!r}" else: substrings, min_count = cast(tuple[tuple[str, ...], int], check) assert ( sum(x in answer_lower for x in substrings) >= min_count ), f"Expected {raw_answer_no_citations=} to have {substrings} present" # Check the full page parsing behavior parsed_text_full_page = parse_pdf_to_pages(filepath, full_page=True) assert isinstance(parsed_text_full_page.content, dict) assert len(parsed_text_full_page.content) == 15, "Expected all pages to be parsed" assert "1" in parsed_text_full_page.content, "Parsed text should contain page 1" assert "2" in parsed_text_full_page.content, "Parsed text should contain page 2" for page_num in ("1", "2"): page_content = parsed_text_full_page.content[page_num] assert not isinstance(page_content, str), f"Page {page_num} should have images" # Check each page has exactly one image page_text, (full_page_image,) = page_content assert page_text assert full_page_image.index == 0, "Full page image should have index 0" assert full_page_image.info["type"] == "screenshot" assert full_page_image.info["page_num"] == int(page_num) assert full_page_image.info["page_height"] == pytest.approx(842, rel=0.01) assert full_page_image.info["page_width"] == pytest.approx(596, rel=0.01) assert isinstance(full_page_image.data, bytes) assert full_page_image.data, "Full page image should have data" # Check useful attributes are present and are JSON serializable json.dumps(full_page_image.info) for attr in ("page_width", "page_height"): dim = full_page_image.info[attr] assert isinstance(dim, int | float) assert dim > 0, "Edge length should be positive" # Check the no-media behavior parsed_text_no_media = parse_pdf_to_pages(filepath, parse_media=False) assert isinstance(parsed_text_no_media.content, dict) assert all(isinstance(c, str) for c in parsed_text_no_media.content.values()) assert len(parsed_text_no_media.content) == 15, "Expected all pages to be parsed" # Check metadata for pt in (parsed_text, parsed_text_full_page, parsed_text_no_media): (parsing_library,) = pt.metadata.parsing_libraries assert "pypdf" in parsing_library assert pt.metadata.name assert "pdf" in pt.metadata.name assert "page_range=None" in pt.metadata.name # Check commonalities across all modes assert ( len(parsed_text.content) == len(parsed_text_full_page.content) == len(parsed_text_no_media.content) ), "All modes should parse the same number of pages" def test_page_range() -> None: filepath = STUB_DATA_DIR / "pasa.pdf" parsed_text_p1 = parse_pdf_to_pages(filepath, page_range=1) assert isinstance(parsed_text_p1.content, dict) assert list(parsed_text_p1.content) == ["1"] assert parsed_text_p1.metadata.name assert "page_range=1" in parsed_text_p1.metadata.name parsed_text_p12 = parse_pdf_to_pages(filepath, page_range=(1, 2)) assert isinstance(parsed_text_p12.content, dict) assert list(parsed_text_p12.content) == ["1", "2"] assert parsed_text_p12.metadata.name assert "page_range=(1,2)" in parsed_text_p12.metadata.name # NOTE: exceeds 15-page PDF length parsed_text_p1_20 = parse_pdf_to_pages(filepath, page_range=(1, 20)) assert isinstance(parsed_text_p1_20.content, dict) assert list(parsed_text_p1_20.content) == [ str(i) for i in range(1, 15 + 1) ], "Expected pages to be truncated to 15 or us to get blown up" assert parsed_text_p1_20.metadata.name assert "page_range=(1,20)" in parsed_text_p1_20.metadata.name def test_page_size_limit_denial() -> None: with pytest.raises(ImpossibleParsingError, match="char limit"): parse_pdf_to_pages(STUB_DATA_DIR / "paper.pdf", page_size_limit=10) # chars def test_invalid_pdf_is_denied(tmp_path) -> None: # This PDF content (actually it's a 404 HTML page) was seen with open access # in June 2025, so let's make sure it's denied bad_pdf_content = """ 404 Not Found

404 Not Found


nginx
""" bad_pdf_path = tmp_path / "bad.pdf" bad_pdf_path.write_text(bad_pdf_content) with pytest.raises(ImpossibleParsingError, match="corrupt"): parse_pdf_to_pages(bad_pdf_path) def test_nonexistent_file_failure() -> None: filename = "/nonexistent/path/file.pdf" with pytest.raises(FileNotFoundError, match=filename): parse_pdf_to_pages(filename) def test_table_parsing() -> None: filepath = STUB_DATA_DIR / "influence.pdf" parsed_text = parse_pdf_to_pages(filepath) assert isinstance(parsed_text.content, dict) assert all( t and t[0] != "\n" and t[-1] != "\n" for t in parsed_text.content.values() ), "Expected no leading/trailing newlines in parsed text" all_tables = { i: [m for m in pagenum_media[1] if m.info["type"] == "table"] for i, pagenum_media in parsed_text.content.items() if isinstance(pagenum_media, tuple) } all_tables = {k: v for k, v in all_tables.items() if v} assert ( sum(len(tables) for tables in all_tables.values()) >= 2 ), "Expected a few tables to be parsed" def test_table_parsing_orphaned_surrogate() -> None: # Simulate orphaned low surrogate (U+DC63) in extracted text surrogate_char = chr(0xDC63) text_with_surrogate = f"Normal text {surrogate_char} more text" filepath = STUB_DATA_DIR / "paper.pdf" with patch("pypdf.PageObject.extract_text", return_value=text_with_surrogate): # Reading just page one without media speeds the test up parsed_text = parse_pdf_to_pages(filepath, page_range=1, parse_media=False) assert isinstance(parsed_text.content, dict) assert "1" in parsed_text.content page_text = parsed_text.content["1"] assert isinstance(page_text, str) assert surrogate_char not in page_text, "Expected no surrogate chars" assert REPLACEMENT_CHAR in page_text, "Expected replacement char(s)" assert "Normal text" in page_text, "Expected other text to be preserved" def test_media_deduplication() -> None: parsed_text = parse_pdf_to_pages(STUB_DATA_DIR / "duplicate_media.pdf") assert isinstance(parsed_text.content, dict) assert len(parsed_text.content) == 5, "Expected full PDF read" all_media = [m for _, media in parsed_text.content.values() for m in media] # type: ignore[misc] all_images = [m for m in all_media if m.info.get("type") == "picture"] assert ( len(all_images) == 2 * 5 ), "Expected each image (one/page) and equation (one/page) to be read" assert ( len({m for m in all_images if cast(int, m.info["page_num"]) > 1}) <= 3 ), "Expected images/equations on all pages beyond 1 to be deduplicated" def test_equation_parsing() -> None: parsed_text = parse_pdf_to_pages(STUB_DATA_DIR / "duplicate_media.pdf") assert isinstance(parsed_text.content, dict) assert isinstance(parsed_text.content["1"], tuple) p1_text, p1_media = parsed_text.content["1"] # SEE: https://regex101.com/r/pyOHLq/1 assert re.search( r"[_*]*E[_*]* ?= ?[_*]*mc[_*]*(?:)?[ ^]?[2²] ?(?:<\/sup>)?", p1_text ), "Expected inline equation in page 1 text" assert re.search(r"n ?\+ ?a", p1_text), "Expected block equation in page 1 text" assert p1_media def test_clustering() -> None: filepath = STUB_DATA_DIR / "pasa.pdf" # With very small tolerance, Figure 1 images shouldn't cluster together parsed_text_small_cluster = parse_pdf_to_pages( filepath, page_range=2, image_cluster_tolerance=1 ) assert isinstance(parsed_text_small_cluster.content, dict) assert "2" in parsed_text_small_cluster.content, "Parsed text should contain page 2" assert isinstance(parsed_text_small_cluster.content["2"], tuple) p2_small_cluster = parsed_text_small_cluster.content["2"] assert "Figure 1" in p2_small_cluster[0], "Expected Figure 1" for m in p2_small_cluster[1]: assert "bbox" in m.info assert isinstance(m.info["bbox"], Sequence) assert len(m.info["bbox"]) == 4, "bbox should have 4 coordinates" for coord in m.info["bbox"]: assert isinstance(coord, int | float) assert coord >= 0, "bbox coordinates should be non-negative" # With normal tolerance, images should cluster into one figure parsed_text_default_cluster = parse_pdf_to_pages(filepath, page_range=2) assert isinstance(parsed_text_default_cluster.content, dict) assert ( "2" in parsed_text_default_cluster.content ), "Parsed text should contain page 2" assert isinstance(parsed_text_default_cluster.content["2"], tuple) p2_default_cluster = parsed_text_default_cluster.content["2"] assert "Figure 1" in p2_default_cluster[0], "Expected Figure 1" for m in p2_default_cluster[1]: assert "bbox" in m.info assert isinstance(m.info["bbox"], Sequence) assert len(m.info["bbox"]) == 4, "bbox should have 4 coordinates" for coord in m.info["bbox"]: assert isinstance(coord, int | float) assert coord >= 0, "bbox coordinates should be non-negative" assert len(p2_small_cluster[1]) >= len( p2_default_cluster[1] ), "Small tolerance should cluster less aggressively" @pytest.mark.parametrize( ("img_mode", "img_format", "expected_mode"), [ pytest.param("RGB", "BMP", "RGB", id="non_png_re_encodes"), pytest.param("RGB", "PNG", "RGB", id="png_passthrough"), pytest.param("CMYK", "TIFF", "RGB", id="cmyk_converts_to_rgb"), pytest.param("L", "BMP", "L", id="grayscale_preserves_mode"), ], ) def test_individual_mode_outputs_png( img_mode: str, img_format: str, expected_mode: str ) -> None: # Form an image in the input format (and mode) raw_buf = io.BytesIO() Image.new(img_mode, (4, 4)).save(raw_buf, format=img_format) raw_bytes = raw_buf.getvalue() mock_img_obj = SimpleNamespace( image=Image.open(io.BytesIO(raw_bytes)), data=raw_bytes ) with ( patch("paperqa_pypdf.reader.pdfplumber", None), patch( "pypdf.PageObject.images", new_callable=lambda: property(lambda _: [mock_img_obj]), ), ): parsed_text = parse_pdf_to_pages(STUB_DATA_DIR / "paper.pdf", page_range=1) assert isinstance(parsed_text.content, dict) assert "1" in parsed_text.content assert isinstance(parsed_text.content["1"], tuple) _, (media,) = parsed_text.content["1"] # Verify the output is valid PNG by round-tripping through PIL result_image = Image.open(io.BytesIO(media.data)) assert result_image.format == "PNG" assert result_image.size == (4, 4) assert result_image.mode == expected_mode class TestMediaMode: def test_same_member_is_equal(self) -> None: assert MediaMode.INDIVIDUAL == MediaMode.INDIVIDUAL assert MediaMode.INDIVIDUAL_CLUSTERING == MediaMode.INDIVIDUAL_CLUSTERING assert MediaMode.FULL_PAGE == MediaMode.FULL_PAGE assert MediaMode.NONE == MediaMode.NONE def test_individual_with_and_without_clustering(self) -> None: assert MediaMode.INDIVIDUAL is not MediaMode.INDIVIDUAL_CLUSTERING assert MediaMode.INDIVIDUAL != MediaMode.INDIVIDUAL_CLUSTERING assert MediaMode.INDIVIDUAL_CLUSTERING != MediaMode.INDIVIDUAL assert ( MediaMode.INDIVIDUAL.metadata_value == MediaMode.INDIVIDUAL_CLUSTERING.metadata_value == "individual" ) assert ( str(MediaMode.INDIVIDUAL) # noqa: FURB123 == str(MediaMode.INDIVIDUAL_CLUSTERING) # noqa: FURB123 == "individual" ) def test_different_members_different_values_are_not_equal(self) -> None: assert MediaMode.NONE != MediaMode.FULL_PAGE assert MediaMode.FULL_PAGE != MediaMode.INDIVIDUAL assert MediaMode.NONE != MediaMode.INDIVIDUAL_CLUSTERING ================================================ FILE: packages/paper-qa-pypdf/tests/test_utils.py ================================================ import operator from paperqa_pypdf.utils import cluster_bboxes def test_cluster_bboxes_empty() -> None: assert cluster_bboxes([]) == [] # noqa: FURB115 def test_cluster_bboxes_single() -> None: bbox = (10.0, 20.0, 30.0, 40.0) results = cluster_bboxes([bbox]) assert len(results) == 1 assert results[0] == bbox def test_cluster_bboxes_no_overlap_far_apart() -> None: bbox1 = (0.0, 0.0, 10.0, 10.0) bbox2 = (100.0, 100.0, 110.0, 110.0) results = cluster_bboxes([bbox1, bbox2], tolerance=50) # noqa: FURB120 assert len(results) == 2 assert set(results) == {bbox1, bbox2} def test_cluster_bboxes_overlapping() -> None: bbox1 = (0.0, 0.0, 20.0, 20.0) bbox2 = (10.0, 10.0, 30.0, 30.0) results = cluster_bboxes([bbox1, bbox2], tolerance=50) # noqa: FURB120 assert len(results) == 1 assert results[0] == (0.0, 0.0, 30.0, 30.0), "Merged bbox should be the union" def test_cluster_bboxes_within_tolerance() -> None: bbox1 = (0.0, 0.0, 10.0, 10.0) bbox2 = (15.0, 0.0, 25.0, 10.0) # 5 units gap in x results = cluster_bboxes([bbox1, bbox2], tolerance=10) assert len(results) == 1 assert results[0] == (0.0, 0.0, 25.0, 10.0) def test_cluster_bboxes_outside_tolerance() -> None: bbox1 = (0.0, 0.0, 10.0, 10.0) bbox2 = (25.0, 0.0, 35.0, 10.0) # 15 units gap in x results = cluster_bboxes([bbox1, bbox2], tolerance=10) assert len(results) == 2 def test_cluster_bboxes_chain_clustering() -> None: bbox1 = (0.0, 0.0, 10.0, 10.0) bbox2 = (15.0, 0.0, 25.0, 10.0) # Near bbox1 bbox3 = (30.0, 0.0, 40.0, 10.0) # Near bbox2, far from bbox1 results = cluster_bboxes([bbox1, bbox2, bbox3], tolerance=10) assert len(results) == 1 assert results[0] == (0.0, 0.0, 40.0, 10.0) def test_cluster_bboxes_multiple_clusters() -> None: # Cluster 1: top-left bbox1 = (0.0, 0.0, 10.0, 10.0) bbox2 = (5.0, 5.0, 15.0, 15.0) # Cluster 2: bottom-right (far away) bbox3 = (100.0, 100.0, 110.0, 110.0) bbox4 = (105.0, 105.0, 115.0, 115.0) results = cluster_bboxes([bbox1, bbox2, bbox3, bbox4], tolerance=20) assert len(results) == 2 # Sort by x0 to make comparison deterministic result_sorted = sorted(results, key=operator.itemgetter(0)) assert result_sorted[0] == (0.0, 0.0, 15.0, 15.0) assert result_sorted[1] == (100.0, 100.0, 115.0, 115.0) def test_cluster_bboxes_vertical_proximity() -> None: bbox1 = (0.0, 0.0, 10.0, 10.0) bbox2 = (0.0, 15.0, 10.0, 25.0) # 5 units gap in y results = cluster_bboxes([bbox1, bbox2], tolerance=10) assert len(results) == 1 assert results[0] == (0.0, 0.0, 10.0, 25.0) def test_cluster_bboxes_diagonal_proximity() -> None: bbox1 = (0.0, 0.0, 10.0, 10.0) # Diagonal: 5 units in x, 5 units in y - should cluster with tolerance=10 bbox2 = (15.0, 15.0, 25.0, 25.0) results = cluster_bboxes([bbox1, bbox2], tolerance=10) assert len(results) == 1 def test_cluster_bboxes_zero_tolerance() -> None: bbox1 = (0.0, 0.0, 10.0, 10.0) bbox2 = (10.0, 0.0, 20.0, 10.0) # Touching but not overlapping results = cluster_bboxes([bbox1, bbox2], tolerance=0) assert len(results) == 1 # Touching counts as 0 distance bbox3 = (0.0, 0.0, 10.0, 10.0) bbox4 = (11.0, 0.0, 21.0, 10.0) # 1 unit gap results = cluster_bboxes([bbox3, bbox4], tolerance=0) assert len(results) == 2 def test_cluster_bboxes_zero_tolerance_float() -> None: bbox1 = (0.5, 0.5, 10.5, 10.5) bbox2 = (10.5, 0.5, 20.5, 10.5) # Touching results = cluster_bboxes([bbox1, bbox2], tolerance=0) assert len(results) == 1 assert results[0] == (0.5, 0.5, 20.5, 10.5) ================================================ FILE: pyproject.toml ================================================ [build-system] build-backend = "setuptools.build_meta" requires = ["setuptools>=64", "setuptools_scm>=8"] [dependency-groups] dev = [ "paper-qa-docling[dev]", "paper-qa-nemotron[dev]", "paper-qa-pymupdf[dev]", "paper-qa-pypdf[dev]", "paper-qa[dev]", ] [project] authors = [ {email = "hello@futurehouse.org", name = "FutureHouse technical staff"}, ] # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers classifiers = [ "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] dependencies = [ "anyio", "fhaviary[llm]>=0.34", # For type(action)=Message "fhlmi>=0.45.0", # For type(action)=Message "html2text", # TODO: evaluate moving to an opt-in dependency "httpx", "httpx-aiohttp", "numpy", "paper-qa-pypdf", # TODO: after https://peps.python.org/pep-0771/, make this opt-out if 'pymupdf' extra is specified` "pybtex", "pydantic-settings", "pydantic~=2.0,>=2.10.1", # Pin 2.10 for typing breaks "rich", "setuptools", # TODO: remove after release of https://bitbucket.org/pybtex-devs/pybtex/pull-requests/46/replace-pkg_resources-with-importlib "tantivy", "tenacity", "tiktoken>=0.4.0", ] description = "LLM Chain for answering questions from docs" dynamic = ["version"] keywords = ["question answering"] license = {file = "LICENSE"} maintainers = [ {email = "jamesbraza@gmail.com", name = "James Braza"}, {email = "michael.skarlinski@gmail.com", name = "Michael Skarlinski"}, {email = "white.d.andrew@gmail.com", name = "Andrew White"}, ] name = "paper-qa" readme = "README.md" requires-python = ">=3.11" [project.optional-dependencies] dev = [ "fhlmi>=0.44.0", # Lower pin for update from Haiku 3.5 to 4.5 "httpx-aiohttp>=0.1.11", # Pin for raw headers fix "ipykernel>=6.29", # For running Jupter notebooks, and pin to keep recent "ipython>=8", # Pin to keep recent "litellm>=1.81.14", # Lower pin for Anthropic empty system messages fix in https://github.com/BerriAI/litellm/pull/21630 "mypy>=1.19", # Pin for zip default detection "paper-qa[docling,image,ldp,memory,nemotron,pypdf-media,pymupdf,typing,zotero,local,qdrant,office]", "prek<0.2.15", # Downpin for https://github.com/j178/prek/issues/1104 "pydantic~=2.11", # Pin for start of model_fields deprecation "pylint-per-file-ignores", "pylint-pydantic", "pytest-asyncio", "pytest-recording", "pytest-rerunfailures", "pytest-subtests", "pytest-sugar", "pytest-timeout", "pytest-timer[colorama]", "pytest-xdist", "pytest>=8", # Pin to keep recent "python-dotenv", "pyzotero>=1.11.0", # Lower pin for typing fix on Zotero.dump in https://github.com/urschrei/pyzotero/issues/298 "refurb>=2", # Pin to keep recent "typeguard", "vcrpy>=8", # Pin for dropping unused requests support ] docling = ["paper-qa-docling"] image = ["fhlmi[image]"] ldp = [ "ldp>=0.45.0,<1", # Lower pin for type(action)=Message, upper pin if v1 introduces breaks ] local = [ "sentence-transformers", ] memory = [ "paper-qa[ldp]", "usearch>=2.16.4", # Pin for Python 3.13 support ] nemotron = ["paper-qa-nemotron"] office = [ "unstructured[docx,xlsx,pptx]", ] openreview = [ "openreview-py", ] pymupdf = ["paper-qa-pymupdf"] pypdf = ["paper-qa-pypdf"] pypdf-enhanced = ["paper-qa-pypdf[enhanced]"] pypdf-media = ["paper-qa-pypdf[media]"] qdrant = [ "qdrant-client", ] typing = [ "tantivy>=0.22.2", # Pin for typing fix of Doc.from_dict "types-PyYAML", "types-setuptools", ] zotero = [ "paper-qa-pymupdf", "pyzotero", ] [project.scripts] pqa = "paperqa.agents:main" [project.urls] issues = "https://github.com/Future-House/paper-qa/issues" repository = "https://github.com/Future-House/paper-qa" [tool.black] preview = true [tool.codespell] check-filenames = true check-hidden = true ignore-words-list = "aadd,astroid,flate,ser,ECT" skip = [ "docs/2024-10-16_litqa2-splits.json5", "packages/paper-qa-nemotron/tests/cassettes/*", "src/paperqa/clients/client_data/*", "tests/cassettes/*", "tests/stub_data/*", ] [tool.markdown_toc_creator] horizontal-rule-style = "prettier" proactive = false [tool.mypy] # Type-checks the interior of functions without type annotations. check_untyped_defs = true # Allows enabling one or multiple error codes globally. Note: This option will # override disabled error codes from the disable_error_code option. enable_error_code = [ "ignore-without-code", "mutable-override", "redundant-cast", "redundant-expr", "redundant-self", "truthy-bool", "truthy-iterable", "unimported-reveal", "unreachable", "unused-awaitable", "unused-ignore", ] # Shows a short summary line after error messages. error_summary = false # A regular expression that matches file names, directory names and paths which mypy # should ignore while recursively discovering files to check. Use forward slashes (/) as # directory separators on all platforms. exclude = [ "^\\.?venv", # SEE: https://regex101.com/r/0rp5Br/1 ] # Specifies the paths to use, after trying the paths from MYPYPATH environment variable. # Useful if you'd like to keep stubs in your repo, along with the config file. # Multiple paths are always separated with a : or , regardless of the platform. # User home directory and environment variables will be expanded. mypy_path = "$MYPY_CONFIG_FILE_DIR/src,$MYPY_CONFIG_FILE_DIR/packages/paper-qa-pypdf/src,$MYPY_CONFIG_FILE_DIR/packages/paper-qa-pymupdf/src,$MYPY_CONFIG_FILE_DIR/packages/paper-qa-docling/src,$MYPY_CONFIG_FILE_DIR/packages/paper-qa-nemotron/src" # Specifies the OS platform for the target program, for example darwin or win32 # (meaning OS X or Windows, respectively). The default is the current platform # as revealed by Python’s sys.platform variable. platform = "linux" # Comma-separated list of mypy plugins. plugins = ["pydantic.mypy"] # Use visually nicer output in error messages: use soft word wrap, show source # code snippets, and show error location markers. pretty = true # Shows column numbers in error messages. show_column_numbers = true # Shows error codes in error messages. # SEE: https://mypy.readthedocs.io/en/stable/error_codes.html#error-codes show_error_codes = true # Prefixes each error with the relevant context. show_error_context = true # Warns about casting an expression to its inferred type. warn_redundant_casts = true # Shows a warning when encountering any code inferred to be unreachable or # redundant after performing type analysis. warn_unreachable = true # Warns about per-module sections in the config file that do not match any # files processed when invoking mypy. warn_unused_configs = true # Warns about unneeded `# type: ignore` comments. warn_unused_ignores = true [[tool.mypy.overrides]] # Suppresses error messages about imports that cannot be resolved. ignore_missing_imports = true # Per-module configuration options module = [ "openreview", # SEE: https://github.com/openreview/openreview-py/issues/2551 "pybtex.*", # SEE: https://bitbucket.org/pybtex-devs/pybtex/issues/141/type-annotations "pymupdf", # SEE: https://github.com/pymupdf/PyMuPDF/issues/2883 "pypdfium2", # SEE: https://github.com/pypdfium2-team/pypdfium2/issues/367 "pyzotero", # SEE: https://github.com/urschrei/pyzotero/issues/110 "vcr.*", # SEE: https://github.com/kevin1024/vcrpy/issues/780 ] [tool.pylint] [tool.pylint.design] # Maximum number of attributes for a class (see R0902). max-attributes = 12 [tool.pylint.format] # Maximum number of characters on a single line. max-line-length = 88 # Match ruff line-length [tool.pylint.main] # Files or directories matching the regular expression patterns are skipped. # The regex matches against base names, not paths. The default value ignores ignore-patterns = [ "^version\\.py$", # Version files made by setuptools_scm, SEE: https://github.com/pylint-dev/pylint/issues/10479 ] # Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the # number of processors available to use, and will cap the count on Windows to # avoid hangs. jobs = 0 # List of plugins (as comma separated values of python module names) to load, # usually to register additional checkers. load-plugins = [ "pylint_per_file_ignores", "pylint_pydantic", ] [tool.pylint.messages_control] # Disable the message, report, category or checker with the given id(s). disable = [ "arguments-differ", # Ops intentionally differ arguments "attribute-defined-outside-init", # Disagrees with reset pattern "bare-except", # Rely on ruff E722 for this "broad-exception-caught", # Rely on ruff BLE001 for this "broad-exception-raised", # Rely on ruff TRY002 for this "consider-using-in", # Rely on ruff PLR1714 for this "cyclic-import", # Let Python blow up "dangerous-default-value", # Rely on ruff W0102 for this "empty-docstring", # Let pep257 take care of docstrings "expression-not-assigned", # Rely on mypy func-returns-value for this "fixme", # codetags are useful "function-redefined", # Rely on mypy no-redef for this "global-statement", # Rely on ruff PLW0603 for this "global-variable-not-assigned", # Rely on ruff PLW0602 for this "import-outside-toplevel", # Rely on ruff PLC0415 for this "import-private-name", # Rely on ruff PLC2701 for this "invalid-name", # Don't care to enforce this "keyword-arg-before-vararg", # Rely on ruff B026 for this "line-too-long", # Rely on ruff E501 for this "logging-fstring-interpolation", # f-strings are convenient "logging-too-many-args", # Rely on ruff PLE1205 for this "missing-docstring", # Let docformatter and ruff take care of docstrings "missing-final-newline", # Rely on ruff W292 for this "no-else-return", # Rely on ruff RET506 for this "no-member", # Buggy, SEE: https://github.com/pylint-dev/pylint/issues/8138 "no-value-for-parameter", # Rely on mypy call-arg for this "not-callable", # Don't care to enforce this "protected-access", # Don't care to enforce this "raise-missing-from", # Rely on ruff B904 for this "redefined-builtin", # Rely on ruff A002 for this "super-init-not-called", # Don't care to enforce this "too-few-public-methods", # Don't care to enforce this "too-many-ancestors", # Don't care to enforce this "too-many-arguments", # Don't care to enforce this "too-many-boolean-expressions", # Rely on ruff PLR0916 for this "too-many-branches", # Rely on ruff PLR0912 for this "too-many-instance-attributes", # Don't care to enforce this "too-many-lines", # Don't care to enforce this "too-many-locals", # Rely on ruff PLR0914 for this "too-many-positional-arguments", # Rely on ruff PLR0917 for this "too-many-public-methods", # Rely on ruff PLR0904 for this "too-many-return-statements", # Rely on ruff PLR0911 for this "too-many-statements", # Rely on ruff PLR0915 for this "undefined-loop-variable", # Don't care to enforce this "ungrouped-imports", # Rely on ruff I001 for this "unidiomatic-typecheck", # Rely on ruff E721 for this "unnecessary-dict-index-lookup", # Rely on ruff PLR1733 for this "unreachable", # Rely on mypy unreachable for this "unspecified-encoding", # Rely on ruff PLW1514 for this "unspecified-encoding", # Don't care to enforce this "unsubscriptable-object", # Buggy, SEE: https://github.com/pylint-dev/pylint/issues/3637 "unsupported-membership-test", # Buggy, SEE: https://github.com/pylint-dev/pylint/issues/3045 "unused-argument", # Rely on ruff ARG002 for this "unused-import", # Rely on ruff F401 for this "unused-variable", # Rely on ruff F841 for this "unused-wildcard-import", # Wildcard imports are convenient "use-sequence-for-iteration", # Rely on ruff C0208 for this "wildcard-import", # Wildcard imports are convenient "wrong-import-order", # Rely on ruff I001 for this "wrong-import-position", # Rely on ruff E402 for this ] # Enable the message, report, category or checker with the given id(s). enable = [ "useless-suppression", # Print unused `pylint: disable` comments ] # Newline-separated list of ignores from https://github.com/SAP/pylint-per-file-ignores per-file-ignores = [ "packages/**/*.py:duplicate-code", # Readers can have duplicated code "tests/**/*.py:duplicate-code", # Tests can have duplicated code ] [tool.pylint.reports] # Set true to activate the evaluation score. score = false [tool.pylint.similarities] # Minimum lines number of a similarity. min-similarity-lines = 12 [tool.pymarkdown] plugins.line-length.code_block_line_length = 88 # Match ruff line-length plugins.line-length.enabled = true plugins.line-length.line_length = 120 # Match ruff max-doc-length plugins.line-length.stern = true plugins.line-length.tables = false plugins.no-duplicate-heading.siblings_only = true # GitHub appends -X for duplicated headings plugins.no-emphasis-as-heading.enabled = false plugins.no-inline-html.enabled = false [tool.pytest.ini_options] # Add the specified OPTS to the set of command line arguments as if they had been # specified by the user. addopts = "--typeguard-packages=paperqa --doctest-modules" # set how loops are scoped to avoid https://github.com/BerriAI/litellm/issues/5854 asyncio_default_fixture_loop_scope = "session" # Sets a list of filters and actions that should be taken for matched warnings. # By default all warnings emitted during the test session will be displayed in # a summary at the end of the test session. filterwarnings = [ "ignore:The `dict` method is deprecated; use `model_dump` instead", # SEE: https://github.com/BerriAI/litellm/issues/5987 "ignore:Use 'content=<...>' to upload raw bytes/text content:DeprecationWarning", # SEE: https://github.com/BerriAI/litellm/issues/5986 "ignore:builtin type (SwigPyPacked|SwigPyObject|swigvarlink) has no __module__:DeprecationWarning:importlib._bootstrap", # SEE: https://github.com/pymupdf/PyMuPDF/issues/3931 --> https://github.com/swig/swig/issues/2881#issuecomment-2332652634 'ignore:pkg_resources is deprecated as an API.:DeprecationWarning:pybtex', # SEE: https://bitbucket.org/pybtex-devs/pybtex/issues/169/replace-pkg_resources-with ] # List of directories that should be searched for tests when no specific directories, # files or test ids are given in the command line when executing pytest from the rootdir # directory. File system paths may use shell-style wildcards, including the recursive ** # pattern. testpaths = ["packages", "tests"] # Timeout in seconds before dumping the stacks. Default is 0 which means no timeout. timeout = 300 [tool.refurb] enable_all = true ignore = [ "FURB101", # Rely on ruff FURB101 for this "FURB103", # Rely on ruff FURB103 for this "FURB108", # Rely on ruff PLR1714 for this "FURB141", # Rely on ruff PTH110 for this "FURB144", # Rely on ruff PTH107 for this "FURB146", # Rely on ruff PTH113 for this "FURB147", # Rely on ruff PTH118 for this "FURB150", # Rely on ruff PTH102 for this "FURB155", # Rely on ruff PTH202 for this ] [tool.ruff] # Line length to use when enforcing long-lines violations (like `E501`). line-length = 97 # ceil(1.1 * 88) makes `E501` equivalent to `B950` # Enable application of unsafe fixes. unsafe-fixes = true [tool.ruff.format] # Enable reformatting of code snippets in docstrings. docstring-code-format = true # Enable preview style formatting. preview = true [tool.ruff.lint] explicit-preview-rules = true extend-select = [ "ASYNC212", "ASYNC240", "ASYNC250", "B901", "B903", "B909", "B912", "CPY001", "DOC102", "DOC201", "DOC202", "DOC402", "DOC403", "DOC501", "DOC502", "E111", "E112", "E113", "E114", "E115", "E116", "E117", "E201", "E202", "E203", "E204", "E211", "E221", "E222", "E223", "E224", "E225", "E226", "E227", "E228", "E231", "E241", "E242", "E251", "E252", "E261", "E262", "E265", "E266", "E271", "E272", "E273", "E274", "E275", "E301", "E302", "E303", "E304", "E305", "E306", "E502", "FURB101", "FURB103", "FURB110", "FURB113", "FURB118", "FURB131", "FURB140", "FURB142", "FURB145", "FURB148", "FURB152", "FURB154", "FURB156", "FURB164", "FURB171", "FURB180", "FURB189", "FURB192", "LOG004", "PLC0207", "PLC1901", "PLC2701", "PLC2801", "PLE0304", "PLE1141", "PLE4703", "PLR0202", "PLR0203", "PLR0904", "PLR0914", "PLR0916", "PLR0917", "PLR1702", "PLR6104", "PLR6201", "PLR6301", "PLW0108", "PLW0244", "PLW1514", "PLW3201", "PT029", "RUF027", "RUF029", "RUF031", "RUF036", "RUF037", "RUF038", "RUF039", "RUF045", "RUF047", "RUF052", "RUF054", "RUF055", "RUF056", "RUF060", "RUF061", "RUF063", "RUF064", "RUF065", "RUF102", "TC008", "UP042", "W391", ] # List of rule codes that are unsupported by Ruff, but should be preserved when # (e.g.) validating # noqa directives. Useful for retaining # noqa directives # that cover plugins not yet implemented by Ruff. external = [ "FURB", # refurb ] ignore = [ "A005", # Overly pedantic "ANN", # Don't care to enforce typing "BLE001", # Don't care to enforce blind exception catching "C901", # we can be complex "COM812", # Trailing comma with black leads to wasting lines "CPY001", # Don't care to require copyright notices in every file "D100", # D100, D101, D102, D103, D104, D105, D106, D107: don't always need docstrings "D101", "D102", "D103", "D104", "D105", "D106", "D107", "D203", # Keep docstring next to the class definition (covered by D211) "D212", # Summary should be on second line (opposite of D213) "D402", # It's nice to reuse the method name "D406", # Google style requires ":" at end "D407", # We aren't using numpy style "D413", # Blank line after last section. -> No blank line "DOC201", # Don't care to require Returns in docstrings "DOC402", # Don't care to require Yields in docstrings "DOC501", # Don't care to require Raises in docstrings "DTZ", # Don't care to have timezone safety "EM", # Overly pedantic "ERA001", # Don't care to prevent commented code "FBT001", # FBT001, FBT002: overly pedantic "FBT002", "FIX", # Don't care to prevent TODO, FIXME, etc. "FLY002", # Can be less readable "FURB101", # FURB101, FURB103: don't care to enforce pathlib "FURB103", "G004", # f-strings are convenient "INP001", # Can use namespace packages "ISC001", # For ruff format compatibility "N803", # Want to use 'N', or 'L', "N806", # Want to use 'N', or 'L', "PLC0415", # Lazy imports for extras can be used "PLR0904", # Don't care to enforce this "PLR0913", "PLR0914", # Don't care to enforce this "PLR0915", # we can write lots of code "PLR0917", # Don't care to enforce this "PLR6301", # Don't care to enforce this "PLW1514", # Don't care to enforce this "PLW2901", # Allow modifying loop variables "PTH", # Overly pedantic "RUF027", # Prompt templates may not be f-strings "RUF052", # Previous code uses leading underscore to indicate throwaway "S311", # Ok to use python random "SLF001", # Overly pedantic "T201", # Overly pedantic "TC001", # TC001, TC002, TC003: don't care to enforce type checking blocks "TC002", "TC003", "TC006", # Strings in cast don't work with PyCharm CE 2024.3.4's jump-to-definition "TD002", # Don't care for TODO author "TD003", # Don't care for TODO links "TRY003", # Overly pedantic ] preview = true select = ["ALL"] unfixable = [ "B007", # While debugging, unused loop variables can be useful "B905", # Default fix is zip(strict=False), but that can hide bugs "ERA001", # While debugging, temporarily commenting code can be useful "F401", # While debugging, unused imports can be useful "F841", # While debugging, unused locals can be useful "PIE794", # Autoremoving the latter of two fields is dangerous "RUF059", # While debugging, unused locals can be useful "TC004", # While debugging, it can be nice to keep TYPE_CHECKING in-tact ] [tool.ruff.lint.flake8-annotations] mypy-init-return = true [tool.ruff.lint.per-file-ignores] "**/tests/*.py" = [ "N802", # Tests function names can match class names "PLC2701", # Test can import private names if needed "PLR2004", # Tests can have magic values "PLR6301", # Test classes can ignore self "S101", # Tests can have assertions "S301", # can test pickle "S310", ] [tool.ruff.lint.pycodestyle] # The maximum line length to allow for line-length violations within # documentation (W505), including standalone comments. max-doc-length = 120 # The maximum line length to allow for line-too-long violations. By default, # this is set to the value of the line-length option. max-line-length = 120 [tool.ruff.lint.pydocstyle] # Whether to use Google-style or NumPy-style conventions or the PEP257 # defaults when analyzing docstring sections. convention = "google" [tool.ruff.lint.pylint] max-bool-expr = 8 [tool.setuptools.package-data] paperqa = ["configs/**json"] [tool.setuptools.packages.find] where = ["src"] [tool.setuptools_scm] version_file = "src/paperqa/version.py" [tool.tomlsort] all = true in_place = true spaces_before_inline_comment = 2 # Match Python PEP 8 spaces_indent_inline_array = 4 # Match Python PEP 8 trailing_comma_inline_array = true [tool.typos.default] extend-ignore-re = ["(?Rm)^.*(#|//)\\s*spellchecker:( )?disable-line$"] [tool.typos.default.extend-words] ECT = "ECT" # Filter in clinicaltrials.gov aadd = "aadd" flate = "flate" # FlateDecode is a valid PDF compression method ser = "ser" # ser is short for serialized [tool.typos.files] extend-exclude = [ "src/paperqa/clients/client_data/journal_quality.csv", "tests/cassettes/**", "tests/stub_data/**", ] [tool.uv.sources] paper-qa = {workspace = true} paper-qa-docling = {workspace = true} paper-qa-nemotron = {workspace = true} paper-qa-pymupdf = {workspace = true} paper-qa-pypdf = {workspace = true} [tool.uv.workspace] members = ["packages/*"] ================================================ FILE: src/paperqa/__init__.py ================================================ from lmi import ( EmbeddingModel, HybridEmbeddingModel, LiteLLMEmbeddingModel, LiteLLMModel, LLMModel, LLMResult, SentenceTransformerEmbeddingModel, SparseEmbeddingModel, embedding_model_factory, ) from paperqa.agents import ask from paperqa.agents.main import agent_query from paperqa.docs import Docs, PQASession from paperqa.llms import ( NumpyVectorStore, QdrantVectorStore, VectorStore, ) from paperqa.settings import Settings, get_settings from paperqa.types import Context, Doc, DocDetails, Text from paperqa.version import __version__ __all__ = [ "Context", "Doc", "DocDetails", "Docs", "EmbeddingModel", "HybridEmbeddingModel", "LLMModel", "LLMResult", "LiteLLMEmbeddingModel", "LiteLLMModel", "NumpyVectorStore", "PQASession", "QdrantVectorStore", "SentenceTransformerEmbeddingModel", "Settings", "SparseEmbeddingModel", "Text", "VectorStore", "__version__", "agent_query", "ask", "embedding_model_factory", "get_settings", ] ================================================ FILE: src/paperqa/_ldp_shims.py ================================================ """Centralized place for lazy LDP imports.""" __all__ = [ "HAS_LDP_INSTALLED", "Agent", "Callback", "ComputeTrajectoryMetricsMixin", "HTTPAgentClient", "Memory", "MemoryAgent", "ReActAgent", "RolloutManager", "SimpleAgent", "SimpleAgentState", "UIndexMemoryModel", "_Memories", "bulk_evaluate_consensus", "discounted_returns", "set_training_mode", ] from pydantic import TypeAdapter try: from ldp.agent import ( Agent, HTTPAgentClient, MemoryAgent, ReActAgent, SimpleAgent, SimpleAgentState, ) from ldp.alg import ( Callback, ComputeTrajectoryMetricsMixin, RolloutManager, bulk_evaluate_consensus, ) from ldp.graph.memory import Memory, UIndexMemoryModel from ldp.graph.op_utils import set_training_mode from ldp.utils import discounted_returns _Memories = TypeAdapter(dict[int, Memory] | list[Memory]) # type: ignore[var-annotated] HAS_LDP_INSTALLED = True except ImportError: HAS_LDP_INSTALLED = False class ComputeTrajectoryMetricsMixin: # type: ignore[no-redef] """Placeholder parent class for when ldp isn't installed.""" class Callback: # type: ignore[no-redef] """Placeholder parent class for when ldp isn't installed.""" Agent = None # type: ignore[assignment,misc] HTTPAgentClient = None # type: ignore[assignment,misc] _Memories = None # type: ignore[assignment] Memory = None # type: ignore[assignment,misc] MemoryAgent = None # type: ignore[assignment,misc] ReActAgent = None # type: ignore[assignment,misc] RolloutManager = None # type: ignore[assignment,misc] SimpleAgent = None # type: ignore[assignment,misc] SimpleAgentState = None # type: ignore[assignment,misc] UIndexMemoryModel = None # type: ignore[assignment,misc] discounted_returns = None # type: ignore[assignment] bulk_evaluate_consensus = None # type: ignore[assignment] set_training_mode = None # type: ignore[assignment] ================================================ FILE: src/paperqa/agents/__init__.py ================================================ from __future__ import annotations import argparse import asyncio import logging import os from pathlib import Path from typing import Any from aviary.utils import MultipleChoiceQuestion from pydantic_settings import CliSettingsSource from rich.logging import RichHandler from paperqa.settings import ParsingSettings, Settings, get_settings from paperqa.utils import pqa_directory, run_or_ensure, setup_default_logs from paperqa.version import __version__ from .main import agent_query, index_search from .models import AnswerResponse from .search import SearchIndex, get_directory_index logger = logging.getLogger(__name__) LOG_VERBOSITY_MAP: dict[int, dict[str, int]] = { 0: { "paperqa.agents": logging.INFO, "paperqa.agents.helpers": logging.WARNING, "paperqa.agents.main": logging.WARNING, "paperqa.agents.main.agent_callers": logging.INFO, "paperqa.agents.models": logging.WARNING, "paperqa.agents.search": logging.INFO, "anthropic": logging.WARNING, "openai": logging.WARNING, "httpcore": logging.WARNING, "httpx": logging.WARNING, "LiteLLM": logging.WARNING, "LiteLLM Router": logging.WARNING, "LiteLLM Proxy": logging.WARNING, } } LOG_VERBOSITY_MAP[1] = LOG_VERBOSITY_MAP[0] | { "paperqa.models": logging.INFO, "paperqa.agents.main": logging.INFO, } LOG_VERBOSITY_MAP[2] = LOG_VERBOSITY_MAP[1] | { "paperqa.models": logging.DEBUG, "paperqa.agents.helpers": logging.DEBUG, "paperqa.agents.main": logging.DEBUG, "paperqa.agents.main.agent_callers": logging.DEBUG, "paperqa.agents.search": logging.DEBUG, "LiteLLM": logging.INFO, "LiteLLM Router": logging.INFO, "LiteLLM Proxy": logging.INFO, } LOG_VERBOSITY_MAP[3] = LOG_VERBOSITY_MAP[2] | { "LiteLLM": logging.DEBUG, # <-- every single LLM call } _MAX_PRESET_VERBOSITY: int = max(k for k in LOG_VERBOSITY_MAP) _PAPERQA_PKG_ROOT_LOGGER = logging.getLogger(__name__.split(".", maxsplit=1)[0]) _INITIATED_FROM_CLI = False def is_running_under_cli() -> bool: """Check if the current Python process comes from the CLI.""" return _INITIATED_FROM_CLI def set_up_rich_handler(install: bool = True) -> RichHandler: """Add a RichHandler to the paper-qa "root" logger, and return it.""" rich_handler = RichHandler( rich_tracebacks=True, markup=True, show_path=False, show_level=False ) rich_handler.setFormatter(logging.Formatter("%(message)s", datefmt="[%X]")) if install and not any( isinstance(h, RichHandler) for h in _PAPERQA_PKG_ROOT_LOGGER.handlers ): _PAPERQA_PKG_ROOT_LOGGER.addHandler(rich_handler) return rich_handler def configure_log_verbosity(verbosity: int = 0) -> None: key = min(verbosity, _MAX_PRESET_VERBOSITY) for logger_name, logger_ in logging.Logger.manager.loggerDict.items(): if isinstance(logger_, logging.Logger) and ( log_level := LOG_VERBOSITY_MAP.get(key, {}).get(logger_name) ): logger_.setLevel(log_level) def configure_cli_logging(verbosity: int | Settings = 0) -> None: """Suppress loquacious loggers according to the settings' verbosity level.""" setup_default_logs() set_up_rich_handler() if isinstance(verbosity, Settings): verbosity.parsing.configure_pdf_parser() verbosity = verbosity.verbosity else: ParsingSettings.model_fields["configure_pdf_parser"].default() configure_log_verbosity(verbosity) if verbosity > 0: print(f"PaperQA version: {__version__}") def ask( query: str | MultipleChoiceQuestion, settings: Settings ) -> AnswerResponse | asyncio.Task[AnswerResponse]: """Query PaperQA via an agent.""" configure_cli_logging(settings) return run_or_ensure( coro=agent_query(query, settings, agent_type=settings.agent.agent_type) ) def search_query( query: str | MultipleChoiceQuestion, index_name: str, settings: Settings, ) -> ( list[tuple[AnswerResponse, str] | tuple[Any, str]] | asyncio.Task[list[tuple[AnswerResponse, str] | tuple[Any, str]]] ): """Search using a pre-built PaperQA index.""" configure_cli_logging(settings) if index_name == "default": # Give precedence to specified name over autogenerated name index_name = settings.agent.index.name or settings.get_index_name() return run_or_ensure( coro=index_search( query if isinstance(query, str) else query.question_prompt, index_name=index_name, index_directory=settings.agent.index.index_directory, ) ) def build_index( index_name: str | None = None, directory: str | os.PathLike | None = None, settings: Settings | None = None, ) -> SearchIndex | asyncio.Task[SearchIndex]: """Build a PaperQA search index, this will also happen automatically upon using `ask`.""" settings = get_settings(settings) if index_name != "default" and isinstance(index_name, str): settings.agent.index.name = index_name configure_cli_logging(settings) if directory: settings.agent.index.paper_directory = directory return run_or_ensure(coro=get_directory_index(settings=settings)) def save_settings(settings: Settings, settings_path: str | os.PathLike) -> None: """Save the settings to a file.""" configure_cli_logging(settings) # check if this could be interpreted at an absolute path if os.path.isabs(settings_path): full_settings_path = os.path.expanduser(settings_path) else: full_settings_path = os.path.join(pqa_directory("settings"), settings_path) if not full_settings_path.endswith(".json"): full_settings_path += ".json" is_overwrite = os.path.exists(full_settings_path) Path(full_settings_path).write_text(settings.model_dump_json(indent=2)) if is_overwrite: logger.info(f"Settings overwritten to: {full_settings_path}") else: logger.info(f"Settings saved to: {full_settings_path}") def main() -> None: parser = argparse.ArgumentParser(description="PaperQA CLI") parser.add_argument( "--settings", "-s", default="high_quality", help=( "Named settings to use. Will search in local, pqa directory, and package" " last" ), ) parser.add_argument( "--index", "-i", default="default", help="Index name to search or create" ) subparsers = parser.add_subparsers( title="commands", dest="command", description="Available commands" ) subparsers.add_parser("view", help="View the chosen settings") save_parser = subparsers.add_parser("save", help="View the chosen settings") save_parser.add_argument( "location", help="Location for new settings (name or an absolute path)" ) ask_parser = subparsers.add_parser( "ask", help="Ask a question of current index (based on settings)" ) ask_parser.add_argument("query", help="Question to ask") search_parser = subparsers.add_parser( "search", help=( "Search the index specified by --index." " Pass `--index answers` to search previous answers." ), ) search_parser.add_argument("query", help="Keyword search") build_parser = subparsers.add_parser( "index", help="Build a search index from given directory" ) build_parser.add_argument("directory", help="Directory to build index from") # Create CliSettingsSource instance cli_settings = CliSettingsSource[argparse.ArgumentParser]( Settings, root_parser=parser ) # Now use argparse to parse the remaining arguments args, remaining_args = parser.parse_known_args() # Parse arguments using CliSettingsSource settings = Settings.from_name( args.settings, cli_source=cli_settings(args=remaining_args) ) match args.command: case "ask": ask(args.query, settings) case "view": configure_cli_logging(settings) logger.info(f"Viewing: {args.settings}") logger.info(settings.model_dump_json(indent=2)) case "save": save_settings(settings, args.location) case "search": search_query(args.query, args.index, settings) case "index": build_index(args.index, args.directory, settings) case _: commands = ", ".join({"view", "ask", "search", "index"}) brief_help = f"\nRun with commands: {{{commands}}}\n\n" brief_help += "For more information, run with --help" print(brief_help) if __name__ == "__main__": _INITIATED_FROM_CLI = True main() ================================================ FILE: src/paperqa/agents/env.py ================================================ import logging from collections.abc import Callable from copy import deepcopy from typing import Any, ClassVar, Self, cast from uuid import UUID from aviary.core import ( Environment, Frame, Message, Messages, Tool, ToolRequestMessage, ToolResponseMessage, ) from aviary.env import ENV_REGISTRY from aviary.utils import MultipleChoiceQuestion from lmi import EmbeddingModel, LiteLLMModel from paperqa.docs import Docs from paperqa.settings import Settings from paperqa.sources.clinical_trials import ( CLINICAL_TRIALS_BASE, partition_clinical_trials_by_source, ) from paperqa.types import PQASession from paperqa.utils import get_year from .tools import ( AVAILABLE_TOOL_NAME_TO_CLASS, DEFAULT_TOOL_NAMES, ClinicalTrialsSearch, Complete, EnvironmentState, GatherEvidence, GenerateAnswer, NamedTool, PaperSearch, Reset, ) logger = logging.getLogger(__name__) POPULATE_FROM_SETTINGS = None def settings_to_tools( # noqa: PLR0912 settings: Settings, llm_model: LiteLLMModel | None = POPULATE_FROM_SETTINGS, summary_llm_model: LiteLLMModel | None = POPULATE_FROM_SETTINGS, embedding_model: EmbeddingModel | None = POPULATE_FROM_SETTINGS, ) -> list[Tool]: """ Convert a Settings into tools, confirming the complete tool is present. NOTE: the last element of the return will always be Complete. """ llm_model = llm_model or settings.get_llm() summary_llm_model = summary_llm_model or settings.get_summary_llm() embedding_model = embedding_model or settings.get_embedding_model() tools: list[Tool] = [] for tool_type in ( [AVAILABLE_TOOL_NAME_TO_CLASS[name] for name in DEFAULT_TOOL_NAMES] if settings.agent.tool_names is None else [ AVAILABLE_TOOL_NAME_TO_CLASS[name] for name in set(settings.agent.tool_names) ] ): def make_tool(fn: Callable, tool_type: type[NamedTool] = tool_type) -> Tool: return Tool.from_function(fn, concurrency_safe=tool_type.CONCURRENCY_SAFE) if issubclass(tool_type, PaperSearch): tool = make_tool( PaperSearch( settings=settings, embedding_model=embedding_model ).paper_search ) for pname in ("min_year", "max_year"): tool.info.get_properties()[pname]["description"] = cast( "str", tool.info.get_properties()[pname]["description"] ).format(current_year=get_year()) elif issubclass(tool_type, GatherEvidence): gather_evidence_tool = GatherEvidence( settings=settings, summary_llm_model=summary_llm_model, embedding_model=embedding_model, ) # if we're using the SearchClinicalTrialsTool, # we override this tool's docstring/prompt # because the default prompt is unaware of the clinical trials tool if ClinicalTrialsSearch.TOOL_FN_NAME in ( settings.agent.tool_names or DEFAULT_TOOL_NAMES ): gather_evidence_tool.gather_evidence.__func__.__doc__ = ( # type: ignore[attr-defined] ClinicalTrialsSearch.GATHER_EVIDENCE_TOOL_PROMPT_OVERRIDE ) gather_evidence_tool.partitioning_fn = ( partition_clinical_trials_by_source ) tool = make_tool(gather_evidence_tool.gather_evidence) elif issubclass(tool_type, GenerateAnswer): generate_answer_tool = GenerateAnswer( settings=settings, llm_model=llm_model, summary_llm_model=summary_llm_model, embedding_model=embedding_model, ) if ClinicalTrialsSearch.TOOL_FN_NAME in ( settings.agent.tool_names or DEFAULT_TOOL_NAMES ): generate_answer_tool.partitioning_fn = ( partition_clinical_trials_by_source ) tool = make_tool(generate_answer_tool.gen_answer) elif issubclass(tool_type, Reset): tool = make_tool(Reset().reset) elif issubclass(tool_type, Complete): tool = make_tool(Complete().complete) elif issubclass(tool_type, ClinicalTrialsSearch): tool = make_tool( ClinicalTrialsSearch( search_count=settings.agent.search_count, settings=settings ).clinical_trials_search ) else: raise NotImplementedError(f"Didn't handle tool type {tool_type}.") if tool.info.name == Complete.complete.__name__: tools.append(tool) # Place at the end else: tools.insert(0, tool) return tools def make_clinical_trial_status( total_paper_count: int, relevant_paper_count: int, total_clinical_trials: int, relevant_clinical_trials: int, evidence_count: int, cost: float, ) -> str: return ( f"Status: Paper Count={total_paper_count}" f" | Relevant Papers={relevant_paper_count}" f" | Clinical Trial Count={total_clinical_trials}" f" | Relevant Clinical Trials={relevant_clinical_trials}" f" | Current Evidence={evidence_count}" f" | Current Cost=${cost:.4f}" ) # SEE: https://regex101.com/r/L0L5MH/1 CLINICAL_STATUS_SEARCH_REGEX_PATTERN: str = ( r"Status: Paper Count=(\d+) \| Relevant Papers=(\d+)(?:\s\|\sClinical Trial" r" Count=(\d+)\s\|\sRelevant Clinical Trials=(\d+))?\s\|\sCurrent Evidence=(\d+)" ) def clinical_trial_status(state: "EnvironmentState") -> str: relevant_contexts = state.get_relevant_contexts() return make_clinical_trial_status( total_paper_count=len( { d.dockey for d in state.docs.docs.values() if CLINICAL_TRIALS_BASE not in getattr(d, "other", {}).get("client_source", []) } ), relevant_paper_count=len( { c.text.doc.dockey for c in relevant_contexts if CLINICAL_TRIALS_BASE not in getattr(c.text.doc, "other", {}).get("client_source", []) } ), total_clinical_trials=len( { d.dockey for d in state.docs.docs.values() if CLINICAL_TRIALS_BASE in getattr(d, "other", {}).get("client_source", []) } ), relevant_clinical_trials=len( { c.text.doc.dockey for c in relevant_contexts if CLINICAL_TRIALS_BASE in getattr(c.text.doc, "other", {}).get("client_source", []) } ), evidence_count=len(relevant_contexts), cost=state.session.cost, ) class PaperQAEnvironment(Environment[EnvironmentState]): """Environment connecting paper-qa's tools with state.""" def __init__( self, query: str | MultipleChoiceQuestion, settings: Settings, docs: Docs, llm_model: LiteLLMModel | None = POPULATE_FROM_SETTINGS, summary_llm_model: LiteLLMModel | None = POPULATE_FROM_SETTINGS, embedding_model: EmbeddingModel | None = POPULATE_FROM_SETTINGS, session_id: UUID | None = None, **env_kwargs, ): super().__init__(**env_kwargs) self._query = query self._settings = settings self._docs = docs self._llm_model = llm_model self._summary_llm_model = summary_llm_model self._embedding_model = embedding_model self._session_id = session_id @classmethod def from_task(cls, task: str) -> Self: return cls(query=task, settings=Settings(), docs=Docs()) def make_tools(self) -> list[Tool]: return settings_to_tools( settings=self._settings, llm_model=self._llm_model, summary_llm_model=self._summary_llm_model, embedding_model=self._embedding_model, ) async def _reset_docs(self) -> None: """Hook to reset the docs when creating the initial state.""" self._docs.clear_docs() async def make_initial_state(self) -> EnvironmentState: await self._reset_docs() status_fn = None if ClinicalTrialsSearch.TOOL_FN_NAME in ( self._settings.agent.tool_names or DEFAULT_TOOL_NAMES ): status_fn = clinical_trial_status session_kwargs: dict[str, Any] = {} if self._session_id: session_kwargs["id"] = self._session_id return EnvironmentState( docs=self._docs, session=PQASession( question=( self._query if isinstance(self._query, str) else self._query.question_prompt ), config_md5=self._settings.md5, **session_kwargs, ), status_fn=status_fn, ) async def reset(self) -> tuple[list[Message], list[Tool]]: # NOTE: don't build the index here, as sometimes we asyncio.gather over this # method, and our current design (as of v5.0.10) could hit race conditions # because index building does not use file locks self.state, self.tools = (await self.make_initial_state()), self.make_tools() return ( [ Message( content=self._settings.agent.agent_prompt.format( question=self.state.session.question, status=self.state.status, complete_tool_name=Complete.TOOL_FN_NAME, ), ) ], self.tools, ) def export_frame(self) -> Frame: return Frame(state=self.state, info={"query": self._query}) def _has_excess_answer_failures(self) -> bool: if self._settings.answer.max_answer_attempts is None: return False return ( sum( tn == GenerateAnswer.gen_answer.__name__ for s in self.state.session.tool_history for tn in s ) > self._settings.answer.max_answer_attempts ) USE_POST_PROCESSED_REWARD: ClassVar[float] = 0.0 async def step(self, action: Message) -> tuple[Messages, float, bool, bool]: # Record before the type check so the cost gets recorded # even if the action was the wrong type self.state.record_action(action) if not isinstance(action, ToolRequestMessage): return ( [Message(content="You must call tools to proceed.")], self.USE_POST_PROCESSED_REWARD, False, False, ) response_messages = cast( "list[Message]", await self.exec_tool_calls( action, concurrency=True, # We allow tools to define their own concurrency state=self.state, handle_tool_exc=True, ), ) or [Message(content=f"No tool calls input in tool request {action}.")] done = any( isinstance(msg, ToolResponseMessage) and msg.name == Complete.complete.__name__ for msg in response_messages ) if not done and self._has_excess_answer_failures(): # If the caller set max_answer_attempts, and the agent has tried to answer # too many times, we consider this done, but we cannot determine success # because we're not calling the complete tool self.state.session.has_successful_answer = None done = True return ( response_messages, self.USE_POST_PROCESSED_REWARD, done, False, # Let caller determine truncations ) async def get_id(self) -> str: if ( isinstance(self._query, str) or self._query.question_id == MultipleChoiceQuestion.model_fields["question_id"].default ): details = ( ", as just a question was configured" if isinstance(self._query, str) else ", as the default ID remains present" ) raise ValueError(f"No question ID was configured{details}.") return str(self._query.question_id) def __deepcopy__(self, memo) -> Self: copy_state = deepcopy(self.state, memo) # We don't know the side effects of deep copying a litellm.Router, # so we force a shallow copy of these LiteLLMModels env_model_kwargs: dict[str, Any] = { name: model if model is None else type(model)(**model.model_dump()) for name, model in ( ("llm_model", self._llm_model), ("summary_llm_model", self._summary_llm_model), ("embedding_model", self._embedding_model), ) } copy_self = type(self)( query=self._query, # No need to copy since we read only settings=deepcopy(self._settings, memo), # Deepcopy just to be safe docs=copy_state.docs, **env_model_kwargs, ) copy_self.state = copy_state # Because we shallow copied the LiteLLMModels, we need to re-make the # tool functions within the tools copy_self.tools = copy_self.make_tools() return copy_self ENV_REGISTRY["paperqa"] = "paperqa.agents.env", PaperQAEnvironment.__name__ ================================================ FILE: src/paperqa/agents/helpers.py ================================================ from __future__ import annotations import logging import re from datetime import datetime from typing import cast from aviary.core import Message from lmi import LiteLLMModel, LLMModel from rich.table import Table from paperqa.docs import Docs from paperqa.types import DocDetails from .models import AnswerResponse logger = logging.getLogger(__name__) def get_year(ts: datetime | None = None) -> str: """Get the year from the input datetime, otherwise using the current datetime.""" if ts is None: ts = datetime.now() return ts.strftime("%Y") async def litellm_get_search_query( question: str, count: int, template: str | None = None, llm: LLMModel | str = "gpt-4o-mini", temperature: float = 1.0, ) -> list[str]: search_prompt = "" if isinstance(template, str) and all( x in template for x in ("{count}", "{question}", "{date}") ): # partial formatting search_prompt = template.replace("{date}", get_year()) elif isinstance(template, str): logger.warning( "Template does not contain {count}, {question} and {date} variables." " Ignoring template and using default search prompt." ) if not search_prompt: # TODO: move to use tools instead of DIY schema in prompt search_prompt = ( "We want to answer the following question: {question}\nProvide" " {count} unique keyword searches (one search per line) and year ranges" " that will find papers to help answer the question. Do not use boolean" " operators. Make sure not to repeat searches without changing the" " keywords or year ranges. Make some searches broad and some narrow. Use" " this format: [keyword search], [start year]-[end year]. where end year" f" is optional. The current year is {get_year()}." ) if isinstance(llm, str): model: LLMModel = LiteLLMModel(name=llm) model.config["model_list"][0]["litellm_params"].update( {"temperature": temperature} ) else: model = llm messages = [ Message(content=search_prompt.format(question=question, count=count)), ] result = await model.call_single( messages=messages, ) search_query = cast("str", result.text) queries = [s for s in search_query.split("\n") if len(s) > 3] # noqa: PLR2004 # remove "2.", "3.", etc. -- https://regex101.com/r/W2f7F1/1 queries = [re.sub(r"^\d+\.\s*", "", q) for q in queries] # remove quotes return [re.sub(r'["\[\]]', "", q) for q in queries] def table_formatter( objects: list[tuple[AnswerResponse | Docs, str]], max_chars_per_column: int = 2000 ) -> Table: example_object, _ = objects[0] if isinstance(example_object, AnswerResponse): table = Table(title="Prior Answers") table.add_column("Question", style="cyan") table.add_column("Answer", style="magenta") for obj, _ in objects: table.add_row( cast("AnswerResponse", obj).session.question[:max_chars_per_column], cast("AnswerResponse", obj).session.answer[:max_chars_per_column], ) return table if isinstance(example_object, Docs): table = Table(title="PDF Search") table.add_column("Title", style="cyan") table.add_column("File", style="magenta") for obj, filename in objects: docs = cast("Docs", obj) # Assume homogeneous objects doc = docs.texts[0].doc if isinstance(doc, DocDetails) and doc.title: display_name: str = doc.title # Prefer title if available else: display_name = doc.formatted_citation table.add_row(display_name[:max_chars_per_column], filename) return table raise NotImplementedError( f"Object type {type(example_object)} can not be converted to table." ) ================================================ FILE: src/paperqa/agents/main.py ================================================ import asyncio import logging from collections.abc import Awaitable, Callable from typing import TYPE_CHECKING, Any from aviary.core import ( MalformedMessageError, Message, Tool, ToolCall, ToolRequestMessage, ToolSelector, ToolSelectorLedger, ) from aviary.utils import MultipleChoiceQuestion from pydantic import BaseModel from rich.console import Console from tenacity import ( Retrying, before_sleep_log, retry_if_exception_type, stop_after_attempt, ) from paperqa._ldp_shims import Callback, RolloutManager from paperqa.docs import Docs from paperqa.settings import AgentSettings, Settings from paperqa.types import PQASession from .env import PaperQAEnvironment from .helpers import litellm_get_search_query, table_formatter from .models import AgentStatus, AnswerResponse, SimpleProfiler from .search import SearchDocumentStorage, SearchIndex, get_directory_index from .tools import ( DEFAULT_TOOL_NAMES, Complete, EnvironmentState, GatherEvidence, GenerateAnswer, PaperSearch, ) if TYPE_CHECKING: from aviary.core import Environment from ldp.agent import Agent, SimpleAgentState from ldp.graph.ops import OpResult logger = logging.getLogger(__name__) agent_logger = logging.getLogger(__name__ + ".agent_callers") DEFAULT_AGENT_TYPE = AgentSettings.model_fields["agent_type"].default async def agent_query( query: str | MultipleChoiceQuestion, settings: Settings, docs: Docs | None = None, agent_type: str | type = DEFAULT_AGENT_TYPE, **runner_kwargs, ) -> AnswerResponse: if docs is None: docs = Docs() answers_index = SearchIndex( fields=[*SearchIndex.REQUIRED_FIELDS, "question"], index_name="answers", index_directory=settings.agent.index.index_directory, storage=SearchDocumentStorage.JSON_MODEL_DUMP, ) response = await run_agent(docs, query, settings, agent_type, **runner_kwargs) agent_logger.debug(f"agent_response: {response}") agent_logger.info(f"[bold blue]Answer: {response.session.answer}[/bold blue]") await answers_index.add_document( { "file_location": str(response.session.id), "body": response.session.answer, "question": response.session.question, }, document=response, ) await answers_index.save_index() return response FAKE_AGENT_TYPE = "fake" # No agent, just invoke tools in deterministic order async def run_agent( docs: Docs, query: str | MultipleChoiceQuestion, settings: Settings, agent_type: str | type = DEFAULT_AGENT_TYPE, **runner_kwargs, ) -> AnswerResponse: """ Run an agent. Args: docs: Docs to run upon. query: Query to answer. settings: Settings to use. agent_type: Agent type (or fully qualified name to the type) to pass to AgentType.get_agent, or "fake" to TODOC. runner_kwargs: Keyword arguments to pass to the runner. Returns: Tuple of resultant answer, token counts, and agent status. """ profiler = SimpleProfiler() outer_profile_name = f"agent-{agent_type}-{settings.agent.agent_llm}" profiler.start(outer_profile_name) question = query if isinstance(query, str) else query.question_prompt logger.info( f"Beginning agent {agent_type!r} run with question {question!r} and full" f" settings {settings.model_dump()}." ) # Build the index once here, and then all tools won't need to rebuild it # only build if the a search tool is requested if PaperSearch.TOOL_FN_NAME in (settings.agent.tool_names or DEFAULT_TOOL_NAMES): await get_directory_index(settings=settings, build=settings.agent.rebuild_index) if isinstance(agent_type, str) and agent_type.lower() == FAKE_AGENT_TYPE: session, agent_status = await run_fake_agent( query, settings, docs, **runner_kwargs ) elif tool_selector_or_none := settings.make_aviary_tool_selector(agent_type): session, agent_status = await run_aviary_agent( query, settings, docs, tool_selector_or_none, **runner_kwargs ) elif ldp_agent_or_none := await settings.make_ldp_agent(agent_type): session, agent_status = await run_ldp_agent( query, settings, docs, ldp_agent_or_none, **runner_kwargs ) else: raise NotImplementedError(f"Didn't yet handle agent type {agent_type}.") if agent_status != AgentStatus.TRUNCATED and session.has_successful_answer is False: agent_status = AgentStatus.UNSURE # stop after, so overall isn't reported as long-running step. logger.info( f"Finished agent {agent_type!r} run with question {question!r} and status" f" {agent_status}." ) return AnswerResponse(session=session, status=agent_status) async def _run_with_timeout_failure( rollout: Callable[[], Awaitable[AgentStatus]], settings: Settings, env: PaperQAEnvironment, ) -> tuple[PQASession, AgentStatus]: try: async with asyncio.timeout(settings.agent.timeout): status = await rollout() except TimeoutError: logger.warning( f"Agent timeout after {settings.agent.timeout}-sec, just answering." ) status = AgentStatus.TRUNCATED except Exception: logger.exception("Trajectory failed.") status = AgentStatus.FAIL if status == AgentStatus.TRUNCATED or not env.state.query_tool_history( GenerateAnswer.TOOL_FN_NAME ): # Fail over after truncation (too many steps, timeout): just answer generate_answer_tool = next( filter(lambda x: x.info.name == GenerateAnswer.TOOL_FN_NAME, env.tools) ) action = ToolRequestMessage( tool_calls=[ToolCall.from_tool(generate_answer_tool)] ) await env.exec_tool_calls(message=action, state=env.state, handle_tool_exc=True) env.state.record_action(action) return env.state.session, status async def run_fake_agent( query: str | MultipleChoiceQuestion, settings: Settings, docs: Docs, env_class: type[PaperQAEnvironment] = PaperQAEnvironment, on_env_reset_callback: Callable[[EnvironmentState], Awaitable] | None = None, on_agent_action_callback: Callable[[Message, BaseModel], Awaitable] | None = None, on_env_step_callback: ( Callable[[list[Message], float, bool, bool], Awaitable] | None ) = None, **env_kwargs, ) -> tuple[PQASession, AgentStatus]: if settings.agent.max_timesteps is not None: logger.warning( f"Max timesteps (configured {settings.agent.max_timesteps}) is not" " applicable with the fake agent, ignoring it." ) env = env_class(query, settings, docs, **env_kwargs) obs, tools = await env.reset() settings.adjust_tools_for_agent_llm(tools) if on_env_reset_callback: await on_env_reset_callback(env.state) question = env.state.session.question search_tool = next(filter(lambda x: x.info.name == PaperSearch.TOOL_FN_NAME, tools)) gather_evidence_tool = next( filter(lambda x: x.info.name == GatherEvidence.TOOL_FN_NAME, tools) ) generate_answer_tool = next( filter(lambda x: x.info.name == GenerateAnswer.TOOL_FN_NAME, tools) ) complete_tool = next(filter(lambda x: x.info.name == Complete.TOOL_FN_NAME, tools)) agent_messages = obs.copy() # Copy just to be safe async def step(action: list[ToolCall] | ToolRequestMessage) -> None: action = ( action if isinstance(action, ToolRequestMessage) else ToolRequestMessage(tool_calls=action) ) agent_messages.append(action) if on_agent_action_callback: await on_agent_action_callback(action, env.state) obs, reward, done, truncated = await env.step(action) agent_messages.extend(obs) if on_env_step_callback: await on_env_step_callback(obs, reward, done, truncated) async def rollout() -> AgentStatus: llm_model = settings.get_llm() # Seed docs with a few LLM-proposed search calls # TODO: make properly support year ranges for search in await litellm_get_search_query(question, llm=llm_model, count=3): search_tcs = [ ToolCall.from_tool( search_tool, query=search, min_year=None, max_year=None ) ] await step(search_tcs) await step([ToolCall.from_tool(gather_evidence_tool, question=question)]) await step([ToolCall.from_tool(generate_answer_tool)]) # Complete with an LLM-proposed complete call complete_action = await llm_model.select_tool( messages=agent_messages, tools=tools, tool_choice=complete_tool ) await step(complete_action) return ( AgentStatus.SUCCESS if env.state.session.has_successful_answer is not False else AgentStatus.UNSURE ) return await _run_with_timeout_failure(rollout, settings, env) async def run_aviary_agent( query: str | MultipleChoiceQuestion, settings: Settings, docs: Docs, agent: ToolSelector, env_class: type[PaperQAEnvironment] = PaperQAEnvironment, on_env_reset_callback: Callable[[EnvironmentState], Awaitable] | None = None, on_agent_action_callback: Callable[[Message, BaseModel], Awaitable] | None = None, on_env_step_callback: ( Callable[[list[Message], float, bool, bool], Awaitable] | None ) = None, **env_kwargs, ) -> tuple[PQASession, AgentStatus]: env = env_class(query, settings, docs, **env_kwargs) async def rollout() -> AgentStatus: obs, tools = await env.reset() settings.adjust_tools_for_agent_llm(tools) if on_env_reset_callback: await on_env_reset_callback(env.state) agent_state = ToolSelectorLedger( messages=( [ Message( role="system", content=settings.agent.agent_system_prompt, ) ] if settings.agent.agent_system_prompt else [] ), tools=tools, ) timestep, max_timesteps = 0, settings.agent.max_timesteps done = False while not done: if max_timesteps is not None and timestep >= max_timesteps: logger.warning( f"Agent didn't finish within {max_timesteps} timesteps, just" " answering." ) return AgentStatus.TRUNCATED agent_state.messages += obs for attempt in Retrying( stop=stop_after_attempt(5), retry=retry_if_exception_type(MalformedMessageError), before_sleep=before_sleep_log(logger, logging.WARNING), reraise=True, ): with attempt: # Retrying if ToolSelector fails to select a tool action = await agent(agent_state.messages, tools) agent_state.messages = [*agent_state.messages, action] if on_agent_action_callback: await on_agent_action_callback(action, agent_state) obs, reward, done, truncated = await env.step(action) if on_env_step_callback: await on_env_step_callback(obs, reward, done, truncated) timestep += 1 return AgentStatus.SUCCESS return await _run_with_timeout_failure(rollout, settings, env) class LDPRolloutCallback(Callback): """Shim connecting ldp RolloutManager Callbacks with paperqa runner callbacks.""" def __init__( self, env: "Environment", on_env_reset_callback: Callable[[EnvironmentState], Awaitable] | None = None, on_agent_action_callback: "Callable[[OpResult[Message], SimpleAgentState, float], Awaitable] | None" = None, on_env_step_callback: ( Callable[[list[Message], float, bool, bool], Awaitable] | None ) = None, ): self.env = env self.on_env_reset_callback = on_env_reset_callback self.on_agent_action_callback = on_agent_action_callback self.on_env_step_callback = on_env_step_callback async def after_agent_get_asv(self, traj_id: str, *args) -> None: # noqa: ARG002 if self.on_agent_action_callback is not None: await self.on_agent_action_callback(*args) async def after_env_reset(self, traj_id: str, *_) -> None: # noqa: ARG002 if self.on_env_reset_callback is not None: await self.on_env_reset_callback(self.env.state) async def after_env_step(self, traj_id: str, *args) -> None: # noqa: ARG002 if self.on_env_step_callback is not None: await self.on_env_step_callback(*args) class LDPAdjustToolsForAgentCallback(Callback): def __init__(self, settings: Settings): self._settings = settings async def after_env_reset( self, traj_id: str, obs: list[Message], tools: list[Tool] # noqa: ARG002 ) -> None: self._settings.adjust_tools_for_agent_llm(tools) async def run_ldp_agent( query: str | MultipleChoiceQuestion, settings: Settings, docs: Docs, agent: "Agent[SimpleAgentState]", env_class: type[PaperQAEnvironment] = PaperQAEnvironment, on_env_reset_callback: Callable[[EnvironmentState], Awaitable] | None = None, on_agent_action_callback: "Callable[[OpResult[Message], SimpleAgentState, float], Awaitable] | None" = None, on_env_step_callback: ( Callable[[list[Message], float, bool, bool], Awaitable] | None ) = None, ldp_callback_type: type[LDPRolloutCallback] = LDPRolloutCallback, **env_kwargs, ) -> tuple[PQASession, AgentStatus]: env = env_class(query, settings, docs, **env_kwargs) # NOTE: don't worry about ldp import checks, because we know Settings.make_ldp_agent # has already taken place, which checks that ldp is installed async def rollout() -> AgentStatus: rollout_manager = RolloutManager( agent, callbacks=[ ldp_callback_type( env, on_env_reset_callback, on_agent_action_callback, on_env_step_callback, ), LDPAdjustToolsForAgentCallback(settings), ], ) trajs = await rollout_manager.sample_trajectories( environments=[env], max_steps=settings.agent.max_timesteps ) traj = trajs[0] if traj.steps[-1].truncated: return AgentStatus.TRUNCATED return AgentStatus.SUCCESS return await _run_with_timeout_failure(rollout, settings, env) async def index_search( query: str, index_name: str = "answers", **index_kwargs ) -> list[tuple[AnswerResponse, str] | tuple[Any, str]]: fields = [*SearchIndex.REQUIRED_FIELDS] if index_name == "answers": fields.append("question") index_to_query = SearchIndex( fields=fields, index_name=index_name, storage=( SearchDocumentStorage.JSON_MODEL_DUMP if index_name == "answers" else SearchDocumentStorage.PICKLE_COMPRESSED ), **index_kwargs, ) results = [ (AnswerResponse(**a[0]) if index_name == "answers" else a[0], a[1]) for a in await index_to_query.query(query=query, keep_filenames=True) ] if results: console = Console(record=True) # Render the table to a string console.print(table_formatter(results)) else: count = await index_to_query.count agent_logger.info(f"No results found. Searched {count} docs.") return results ================================================ FILE: src/paperqa/agents/models.py ================================================ from __future__ import annotations import asyncio import logging import time from contextlib import asynccontextmanager from enum import StrEnum from typing import Any, ClassVar, Protocol, cast from uuid import UUID, uuid4 from aviary.core import Message from lmi import LiteLLMModel, LLMModel from pydantic import BaseModel, ConfigDict, Field, ValidationInfo, field_validator from paperqa.types import PQASession from paperqa.version import __version__ logger = logging.getLogger(__name__) class SupportsPickle(Protocol): """Type protocol for typing any object that supports pickling.""" def __reduce__(self) -> str | tuple[Any, ...]: ... def __getstate__(self) -> object: ... def __setstate__(self, state: object) -> None: ... class AgentStatus(StrEnum): # TODO: rename to AnswerStatus or RolloutStatus # FAIL - during the trajectory encountered an unhandled exception FAIL = "fail" # SUCCESS - answer was generated SUCCESS = "success" # TRUNCATED - agent didn't finish naturally (e.g. timeout, too many actions), # so we just generated an answer after the unnatural finish TRUNCATED = "truncated" # UNSURE - the gen_answer did not succeed, but an answer is present UNSURE = "unsure" class MismatchedModelsError(Exception): """Error to throw when model clients clash .""" LOG_METHOD_NAME: ClassVar[str] = "warning" class AnswerResponse(BaseModel): model_config = ConfigDict(populate_by_name=True) session: PQASession = Field(alias="answer") bibtex: dict[str, str] | None = None status: AgentStatus timing_info: dict[str, dict[str, float]] | None = None duration: float = 0.0 # A placeholder for interesting statistics we can show users # about the answer, such as the number of sources used, etc. stats: dict[str, str] | None = None @field_validator("session") def strip_answer( cls, v: PQASession, info: ValidationInfo # noqa: ARG002, N805 ) -> PQASession: # This modifies in place, this is fine # because when a response is being constructed, # we should be done with the PQASession object v.filter_content_for_user() return v async def get_summary(self, llm_model: LLMModel | str = "gpt-4o") -> str: sys_prompt = ( "Revise the answer to a question to be a concise SMS message. " "Use abbreviations or emojis if necessary." ) model = ( LiteLLMModel(name=llm_model) if isinstance(llm_model, str) else llm_model ) prompt_template = "{question}\n\n{answer}" messages = [ Message(role="system", content=sys_prompt), Message( role="user", content=prompt_template.format( question=self.session.question, answer=self.session.answer ), ), ] result = await model.call_single( messages=messages, ) return cast("str", result.text).strip() class TimerData(BaseModel): start_time: float = Field(default_factory=time.time) # noqa: FURB111 durations: list[float] = Field(default_factory=list) class SimpleProfiler(BaseModel): """Basic profiler with start/stop and named timers. The format for this logger needs to be strictly followed, as downstream google cloud monitoring is based on the following # [Profiling] {**name** of timer} | {**elapsed** time of function} | {**__version__** of PaperQA} """ timers: dict[str, list[float]] = Field(default_factory=dict) running_timers: dict[str, TimerData] = Field(default_factory=dict) uid: UUID = Field(default_factory=uuid4) @asynccontextmanager async def timer(self, name: str): start_time = asyncio.get_running_loop().time() try: yield finally: end_time = asyncio.get_running_loop().time() elapsed = end_time - start_time self.timers.setdefault(name, []).append(elapsed) logger.info( f"[Profiling] | UUID: {self.uid} | NAME: {name} | TIME: {elapsed:.3f}s" f" | VERSION: {__version__}" ) def start(self, name: str) -> None: try: self.running_timers[name] = TimerData() except RuntimeError: # No running event loop (not in async) self.running_timers[name] = TimerData(start_time=time.time()) def stop(self, name: str) -> None: timer_data = self.running_timers.pop(name, None) if timer_data: try: t_stop: float = asyncio.get_running_loop().time() except RuntimeError: # No running event loop (not in async) t_stop = time.time() elapsed = t_stop - timer_data.start_time self.timers.setdefault(name, []).append(elapsed) logger.info( f"[Profiling] | UUID: {self.uid} | NAME: {name} | TIME: {elapsed:.3f}s" f" | VERSION: {__version__}" ) else: logger.warning(f"Timer {name} not running") def results(self) -> dict[str, dict[str, float]]: result = {} for name, durations in self.timers.items(): mean = sum(durations) / len(durations) result[name] = { "low": min(durations), "mean": mean, "max": max(durations), "total": sum(durations), } return result ================================================ FILE: src/paperqa/agents/search.py ================================================ from __future__ import annotations import contextlib import csv import json import logging import os import pathlib import pickle import re import sys import zlib from collections import Counter from collections.abc import AsyncIterator, Callable, Sequence from enum import StrEnum, auto from typing import TYPE_CHECKING, Any, ClassVar, cast import anyio from pydantic import BaseModel, JsonValue from rich.progress import ( BarColumn, MofNCompleteColumn, Progress, TaskProgressColumn, TextColumn, TimeElapsedColumn, TimeRemainingColumn, ) from tantivy import ( # pylint: disable=no-name-in-module Document, Index, Schema, SchemaBuilder, Searcher, ) from tenacity import ( RetryError, retry, retry_if_exception_type, stop_after_attempt, wait_random_exponential, ) from paperqa.docs import Docs from paperqa.settings import IndexSettings, get_settings from paperqa.types import VAR_MATCH_LOOKUP, DocDetails from paperqa.utils import ImpossibleParsingError, clean_possessives, hexdigest from .models import SupportsPickle if TYPE_CHECKING: from tantivy import IndexWriter from paperqa.settings import MaybeSettings, Settings logger = logging.getLogger(__name__) class AsyncRetryError(Exception): """Flags a retry for another tenacity attempt.""" class SearchDocumentStorage(StrEnum): """Method to serialize a document.""" JSON_MODEL_DUMP = auto() # utf-8 JSON dump PICKLE_COMPRESSED = auto() # pickle + zlib compression PICKLE_UNCOMPRESSED = auto() # pickle def extension(self) -> str: if self == SearchDocumentStorage.JSON_MODEL_DUMP: return "json" if self == SearchDocumentStorage.PICKLE_COMPRESSED: return "zip" return "pkl" def write_to_string(self, data: BaseModel | SupportsPickle) -> bytes: if self == SearchDocumentStorage.JSON_MODEL_DUMP: if isinstance(data, BaseModel): return data.model_dump_json().encode("utf-8") raise ValueError("JSON_MODEL_DUMP requires a BaseModel object.") if self == SearchDocumentStorage.PICKLE_COMPRESSED: return zlib.compress(pickle.dumps(data)) return pickle.dumps(data) def read_from_string( self, data: str | bytes ) -> BaseModel | SupportsPickle | JsonValue: if self == SearchDocumentStorage.JSON_MODEL_DUMP: return json.loads(data) if self == SearchDocumentStorage.PICKLE_COMPRESSED: return pickle.loads(zlib.decompress(data)) # type: ignore[arg-type] # noqa: S301 return pickle.loads(data) # type: ignore[arg-type] # noqa: S301 # Cache keys are a two-tuple of index name and absolute index directory # Cache values are a two-tuple of an opened Index instance and the count # of SearchIndex instances currently referencing that Index _OPENED_INDEX_CACHE: dict[tuple[str, str], tuple[Index, int]] = {} DONT_USE_OPENED_INDEX_CACHE = ( os.environ.get("PQA_INDEX_DONT_CACHE_INDEXES", "").lower() in VAR_MATCH_LOOKUP ) def reap_opened_index_cache() -> None: """Delete any unreferenced Index instances from the Index cache.""" for index_name, (index, count) in _OPENED_INDEX_CACHE.items(): if count == 0: _OPENED_INDEX_CACHE.pop(index_name) del index class SearchIndex: """Wrapper around a tantivy.Index exposing higher-level behaviors for documents.""" REQUIRED_FIELDS: ClassVar[list[str]] = ["file_location", "body"] def __init__( self, fields: Sequence[str] | None = None, index_name: str = "pqa_index", index_directory: str | os.PathLike | None = None, storage: SearchDocumentStorage = SearchDocumentStorage.PICKLE_COMPRESSED, ): if fields is None: fields = self.REQUIRED_FIELDS self.fields = fields if not all(f in self.fields for f in self.REQUIRED_FIELDS): raise ValueError( f"{self.REQUIRED_FIELDS} must be included in search index fields." ) self.index_name = index_name if index_directory is None: # Pull from settings index_directory = cast( Callable[[], str | os.PathLike], IndexSettings.model_fields["index_directory"].default_factory, )() self._index_directory = index_directory self._schema: Schema | None = None self._index: Index | None = None self._searcher: Searcher | None = None self._writer: IndexWriter | None = None self._index_files: dict[str, str] = {} self.changed = False self.storage = storage @property async def index_directory( # TODO: rename to index_root_directory self, ) -> anyio.Path: directory = anyio.Path(self._index_directory).joinpath(self.index_name) await directory.mkdir(parents=True, exist_ok=True) return directory @property async def index_filename( # TODO: rename to index_meta_directory self, ) -> anyio.Path: """Directory to store files used to house index internals.""" index_dir = (await self.index_directory) / "index" await index_dir.mkdir(exist_ok=True) return index_dir @property async def docs_index_directory(self) -> anyio.Path: """Directory to store documents (e.g. chunked PDFs) given the storage type.""" docs_dir = (await self.index_directory) / "docs" await docs_dir.mkdir(exist_ok=True) return docs_dir @property async def file_index_filename(self) -> anyio.Path: """File containing a zlib-compressed pickle of the index_files.""" return (await self.index_directory) / "files.zip" @property def schema(self) -> Schema: if not self._schema: schema_builder = SchemaBuilder() for field in self.fields: schema_builder.add_text_field(field, stored=True) self._schema = schema_builder.build() return self._schema @property async def index(self) -> Index: if not self._index: index_meta_directory = await self.index_filename if await (index_meta_directory / "meta.json").exists(): if DONT_USE_OPENED_INDEX_CACHE: self._index = Index.open(path=str(index_meta_directory)) else: key = self.index_name, str(await index_meta_directory.absolute()) # NOTE: now we know we're using the cache and have created the cache # key. And we know we're in asyncio.gather race condition risk land. # All of the following operations are *synchronous* so we are not # giving the opportunity for an await to switch to another parallel # version of this code. Otherwise, we risk counts being incorrect # due to race conditions if key not in _OPENED_INDEX_CACHE: # open a new Index self._index = Index.open(path=str(index_meta_directory)) prev_count: int = 0 else: # reuse Index self._index, prev_count = _OPENED_INDEX_CACHE[key] _OPENED_INDEX_CACHE[key] = self._index, prev_count + 1 else: # NOTE: this creates the above meta.json file self._index = Index(self.schema, path=str(index_meta_directory)) return self._index def __del__(self) -> None: index_meta_directory = ( pathlib.Path(self._index_directory) / self.index_name / "index" ) key = self.index_name, str(index_meta_directory.absolute()) if key in _OPENED_INDEX_CACHE: index, count = _OPENED_INDEX_CACHE[key] _OPENED_INDEX_CACHE[key] = index, count - 1 @property async def searcher(self) -> Searcher: if not self._searcher: index = await self.index index.reload() self._searcher = index.searcher() return self._searcher @contextlib.asynccontextmanager async def writer(self, reset: bool = False) -> AsyncIterator[IndexWriter]: if not self._writer: index = await self.index self._writer = index.writer() yield self._writer if reset: self._writer = None @property async def count(self) -> int: return (await self.searcher).num_docs @property async def index_files(self) -> dict[str, str]: if not self._index_files: file_index_path = await self.file_index_filename if await file_index_path.exists(): async with await anyio.open_file(file_index_path, "rb") as f: content = await f.read() try: self._index_files = pickle.loads( # noqa: S301 zlib.decompress(content) ) except Exception: logger.exception( f"Failed to load index file {file_index_path}." ) raise return self._index_files @staticmethod def filehash(body: str) -> str: return hexdigest(body) async def filecheck(self, filename: str, body_filehash: str | None = None) -> bool: """Check if this index contains the filename and if the body's filehash matches.""" index_files = await self.index_files return bool( index_files.get(filename) and (body_filehash is None or index_files[filename] == body_filehash) ) async def mark_failed_document(self, path: str | os.PathLike) -> None: (await self.index_files)[str(path)] = FAILED_DOCUMENT_ADD_ID self.changed = True async def add_document( self, index_doc: dict[str, Any], # TODO: rename to something more intuitive document: Any | None = None, lock_acquisition_max_retries: int = 1000, ) -> None: """ Add the input document to this index. Args: index_doc: "Document" (thinking types.Doc) of metadata such as 'title' to use in the index. document: Document to store according to the specified storage method. lock_acquisition_max_retries: Amount of retries to acquire a file lock. A large default of 1000 is used because lock acquisition can take a while. """ @retry( stop=stop_after_attempt(lock_acquisition_max_retries), wait=wait_random_exponential(multiplier=0.25, max=60), retry=retry_if_exception_type(AsyncRetryError), ) async def _add_document() -> None: body_filehash = self.filehash(index_doc["body"]) if not await self.filecheck(index_doc["file_location"], body_filehash): try: async with self.writer() as writer: # Let caller handle commit to allow for batching writer.add_document(Document.from_dict(index_doc)) (await self.index_files)[index_doc["file_location"]] = body_filehash if document: docs_index_dir = await self.docs_index_directory async with await anyio.open_file( docs_index_dir / f"{body_filehash}.{self.storage.extension()}", "wb", ) as f: await f.write(self.storage.write_to_string(document)) self.changed = True except ValueError as e: if "Failed to acquire Lockfile: LockBusy." in str(e): raise AsyncRetryError("Failed to acquire lock.") from e raise try: await _add_document() # If this runs, we succeeded except RetryError: logger.exception( f"Failed to add document to {index_doc['file_location']}" f" within {lock_acquisition_max_retries} attempts." ) raise @retry( stop=stop_after_attempt(1000), wait=wait_random_exponential(multiplier=0.25, max=60), retry=retry_if_exception_type(AsyncRetryError), reraise=True, ) async def delete_document(self, file_location: str) -> None: try: async with self.writer() as writer: writer.delete_documents("file_location", file_location) await self.save_index() except ValueError as e: if "Failed to acquire Lockfile: LockBusy." in str(e): raise AsyncRetryError("Failed to acquire lock") from e raise async def remove_from_index(self, file_location: str) -> None: index_files = await self.index_files if index_files.get(file_location): await self.delete_document(file_location) filehash = index_files.pop(file_location) docs_index_dir = await self.docs_index_directory # TODO: since the directory is part of the filehash these # are always missing. Unsure of how to get around this. await (docs_index_dir / f"{filehash}.{self.storage.extension()}").unlink( missing_ok=True ) self.changed = True @retry( stop=stop_after_attempt(1000), wait=wait_random_exponential(multiplier=0.25, max=60), retry=retry_if_exception_type(AsyncRetryError), reraise=True, ) async def save_index(self) -> None: try: async with self.writer(reset=True) as writer: writer.commit() writer.wait_merging_threads() except ValueError as e: if "Failed to acquire Lockfile: LockBusy." in str(e): raise AsyncRetryError("Failed to acquire lock") from e raise file_index_path = await self.file_index_filename async with await anyio.open_file(file_index_path, "wb") as f: await f.write(zlib.compress(pickle.dumps(await self.index_files))) self.changed = False async def get_saved_object( self, file_location: str, keep_filenames: bool = False ) -> Any | tuple[Any, str] | None: filehash = (await self.index_files).get(file_location) if filehash: docs_index_dir = await self.docs_index_directory async with await anyio.open_file( docs_index_dir / f"{filehash}.{self.storage.extension()}", "rb" ) as f: content = await f.read() if keep_filenames: return self.storage.read_from_string(content), file_location return self.storage.read_from_string(content) return None # Remove these characters, SEE: https://regex101.com/r/DoLMoa/3 CLEAN_QUERY_REGEX: ClassVar[re.Pattern] = re.compile(r'[*\[\]:(){}~^><+"\\]') async def query( self, query: str, top_n: int = 10, offset: int = 0, min_score: float = 0.0, keep_filenames: bool = False, field_subset: list[str] | None = None, ) -> list[Any]: query_fields = list(field_subset or self.fields) searcher = await self.searcher index = await self.index cleaned_query = self.CLEAN_QUERY_REGEX.sub("", query) try: parsed_query = index.parse_query(cleaned_query, query_fields) except ValueError: # Rejected by tantivy # Retry with more aggressive cleaning parsed_query = index.parse_query( clean_possessives(cleaned_query), query_fields ) addresses = [ s[1] for s in searcher.search(parsed_query, top_n, offset=offset).hits if s[0] > min_score ] search_index_docs = [searcher.doc(address) for address in addresses] return [ result for result in [ await self.get_saved_object( doc["file_location"][0], keep_filenames=keep_filenames ) for doc in search_index_docs ] if result is not None ] def fetch_kwargs_from_manifest( file_location: str, manifest: dict[str, Any], manifest_fallback_location: str ) -> dict[str, Any]: manifest_entry: dict[str, Any] | None = manifest.get(file_location) or manifest.get( manifest_fallback_location ) if manifest_entry: return DocDetails(**manifest_entry).model_dump() return {} async def maybe_get_manifest( filename: anyio.Path | None = None, ) -> dict[str, dict[str, Any]]: if not filename: return {} if filename.suffix == ".csv": try: async with await anyio.open_file(filename, mode="r") as file: content = await file.read() reader_kwargs: dict[str, Any] = {} if sys.version_info >= (3, 12): # Unlocks `bool | None` fields reader_kwargs["quoting"] = csv.QUOTE_NOTNULL file_loc_to_records = { str(r.get("file_location")): r for r in csv.DictReader(content.splitlines(), **reader_kwargs) if r.get("file_location") } if not file_loc_to_records: raise ValueError( # noqa: TRY301 "No mapping of file location to details extracted from manifest" f" file {filename}." ) logger.debug( f"Found manifest file at {filename}, read" f" {len(file_loc_to_records)} records from it, which maps to" f" {len(file_loc_to_records)} locations." ) except FileNotFoundError: logger.warning(f"Manifest file at {filename} could not be found.") except Exception: logger.exception(f"Error reading manifest file {filename}.") else: return file_loc_to_records else: logger.error(f"Invalid manifest file type: {filename.suffix}") return {} FAILED_DOCUMENT_ADD_ID = "ERROR" async def process_file( rel_file_path: anyio.Path, search_index: SearchIndex, manifest: dict[str, Any], semaphore: anyio.Semaphore, settings: Settings, processed_counter: Counter[str], progress_bar_update: Callable[[], Any] | None = None, ) -> None: abs_file_path = ( pathlib.Path(settings.agent.index.paper_directory).absolute() # noqa: ASYNC240 / rel_file_path ) fallback_title = rel_file_path.name if settings.agent.index.use_absolute_paper_directory: file_location = str(abs_file_path) manifest_fallback_location = str(rel_file_path) else: file_location = str(rel_file_path) manifest_fallback_location = str(abs_file_path) async with semaphore: if not await search_index.filecheck(filename=file_location): logger.info(f"New file to index: {file_location}...") kwargs = fetch_kwargs_from_manifest( file_location, manifest, manifest_fallback_location ) tmp_docs = Docs() try: await tmp_docs.aadd( path=abs_file_path, fields=["title", "author", "journal", "year"], settings=settings, # NOTE if file_location is None in the manifest, # we want to preserve that file_location=kwargs.pop("file_location", file_location), **kwargs, ) except Exception as e: # We handle any exception here because we want to save_index so we # 1. can resume the build without rebuilding this file if a separate # process_file invocation leads to a segfault or crash. # 2. don't have deadlock issues after. logger.exception( f"Error parsing {file_location}, skipping index for this file." ) await search_index.mark_failed_document(file_location) await search_index.save_index() if progress_bar_update: progress_bar_update() if not isinstance(e, ValueError | ImpossibleParsingError): # ImpossibleParsingError: parsing failure, don't retry # ValueError: TODOC raise return this_doc = next(iter(tmp_docs.docs.values())) if isinstance(this_doc, DocDetails): title = this_doc.title or fallback_title year = this_doc.year or "Unknown year" else: title, year = fallback_title, "Unknown year" await search_index.add_document( { "title": title, "year": year, "file_location": file_location, "body": "".join(t.text for t in tmp_docs.texts), }, document=tmp_docs, ) processed_counter["batched_save_counter"] += 1 if ( processed_counter["batched_save_counter"] == settings.agent.index.batch_size ): await search_index.save_index() processed_counter["batched_save_counter"] = 0 logger.info(f"Complete ({title}).") # Update progress bar for either a new or previously indexed file if progress_bar_update: progress_bar_update() WARN_IF_INDEXING_MORE_THAN = 999 def _make_progress_bar_update( sync_index_w_directory: bool, total: int ) -> tuple[contextlib.AbstractContextManager, Callable[[], Any] | None]: # Disable should override enable env_var_disable = ( os.environ.get("PQA_INDEX_DISABLE_PROGRESS_BAR", "").lower() in VAR_MATCH_LOOKUP ) env_var_enable = ( os.environ.get("PQA_INDEX_ENABLE_PROGRESS_BAR", "").lower() in VAR_MATCH_LOOKUP ) try: is_cli = is_running_under_cli() # pylint: disable=used-before-assignment except NameError: # Work around circular import from . import is_running_under_cli is_cli = is_running_under_cli() if sync_index_w_directory and not env_var_disable and (is_cli or env_var_enable): # Progress.get_default_columns with a few more progress = Progress( TextColumn("[progress.description]{task.description}"), BarColumn(), TimeElapsedColumn(), MofNCompleteColumn(), TaskProgressColumn(), TimeRemainingColumn(), ) task_id = progress.add_task("Indexing...", total=total) def progress_bar_update() -> None: progress.update(task_id, advance=1) return progress, progress_bar_update return contextlib.nullcontext(), None async def get_directory_index( settings: MaybeSettings = None, build: bool = True ) -> SearchIndex: """ Create a Tantivy index by reading from a directory of text files. This function only reads from the source directory, not edits or writes to it. Args: settings: Application settings. build: Opt-out flag (default is True) to read the contents of the source paper directory and if sync_index_w_directory is enabled also update the index. """ _settings = get_settings(settings) index_settings = _settings.agent.index search_index = SearchIndex( fields=[*SearchIndex.REQUIRED_FIELDS, "title", "year"], index_name=index_settings.name or _settings.get_index_name(), index_directory=index_settings.index_directory, ) # NOTE: if the index was not previously built, its index_files will be empty. # Otherwise, the index_files will not be empty if not build: if not await search_index.index_files: raise RuntimeError( f"Index {search_index.index_name} was empty, please rebuild it." ) return search_index paper_directory = anyio.Path(index_settings.paper_directory) manifest = await maybe_get_manifest( filename=await index_settings.finalize_manifest_file() ) valid_papers_rel_file_paths = [ file.relative_to(paper_directory) async for file in ( paper_directory.rglob("*") if index_settings.recurse_subdirectories else paper_directory.iterdir() ) if index_settings.files_filter(file) ] if len(valid_papers_rel_file_paths) > WARN_IF_INDEXING_MORE_THAN: logger.warning( f"Indexing {len(valid_papers_rel_file_paths)} files into the index" f" {search_index.index_name}, may take a few minutes." ) index_unique_file_paths: set[str] = set((await search_index.index_files).keys()) if extra_index_files := ( index_unique_file_paths - {str(f) for f in valid_papers_rel_file_paths} ): if index_settings.sync_with_paper_directory: for extra_file in extra_index_files: logger.warning( f"[bold red]Removing {extra_file} from index.[/bold red]" ) await search_index.remove_from_index(extra_file) logger.warning("[bold red]Files removed![/bold red]") else: logger.warning( f"[bold red]Indexed files {extra_index_files} are missing from paper" f" folder ({paper_directory}).[/bold red]" ) semaphore = anyio.Semaphore(index_settings.concurrency) progress_bar, progress_bar_update_fn = _make_progress_bar_update( index_settings.sync_with_paper_directory, total=len(valid_papers_rel_file_paths) ) with progress_bar: async with anyio.create_task_group() as tg: processed_counter: Counter[str] = Counter() for rel_file_path in valid_papers_rel_file_paths: if index_settings.sync_with_paper_directory: tg.start_soon( process_file, rel_file_path, search_index, manifest, semaphore, _settings, processed_counter, progress_bar_update_fn, ) else: logger.debug( f"File {rel_file_path} found in paper directory" f" {paper_directory}." ) if search_index.changed: await search_index.save_index() else: logger.debug("No changes to index.") return search_index ================================================ FILE: src/paperqa/agents/tools.py ================================================ """Base classes for tools, implemented in a functional manner.""" import asyncio import inspect import logging import os import re import sys from collections.abc import Callable from itertools import chain from typing import ClassVar, Self, cast from aviary.core import Message, ToolRequestMessage from lmi import Embeddable, EmbeddingModel, LiteLLMModel from pydantic import BaseModel, ConfigDict, Field, computed_field from paperqa.docs import Docs from paperqa.settings import Settings from paperqa.sources.clinical_trials import add_clinical_trials_to_docs from paperqa.types import Context, DocDetails, PQASession from .search import get_directory_index logger = logging.getLogger(__name__) def make_status( total_paper_count: int, relevant_paper_count: int, evidence_count: int, cost: float ) -> str: return ( f"Status: Paper Count={total_paper_count}" f" | Relevant Papers={relevant_paper_count} | Current Evidence={evidence_count}" f" | Current Cost=${cost:.4f}" ) def default_status(state: "EnvironmentState") -> str: relevant_contexts = state.get_relevant_contexts() return make_status( total_paper_count=len(state.docs.docs), relevant_paper_count=len({c.text.doc.dockey for c in relevant_contexts}), evidence_count=len(relevant_contexts), cost=state.session.cost, ) class EnvironmentState(BaseModel): """State here contains documents and answer being populated.""" model_config = ConfigDict(extra="forbid") docs: Docs session: PQASession status_fn: Callable[[Self], str] | None = Field( default=None, description=( "Function used to generate status," " uses `paperqa.agents.tools.default_status` " "if not provided." ), ) # SEE: https://regex101.com/r/RmuVdC/1 STATUS_SEARCH_REGEX_PATTERN: ClassVar[str] = ( r"Status: Paper Count=(\d+) \| Relevant Papers=(\d+) \| Current Evidence=(\d+)" ) @computed_field # type: ignore[prop-decorator] @property def status(self) -> str: if self.status_fn is not None: return self.status_fn(cast("Self", self)) return default_status(self) def get_relevant_contexts(self, score_threshold: int | None = 0) -> list[Context]: """Get all contexts whose score is above (exclusive) of the input threshold.""" return [ c for c in self.session.contexts if score_threshold is None or c.score > score_threshold ] def record_action(self, action: Message | ToolRequestMessage) -> None: self.session.add_tokens(action) if isinstance(action, ToolRequestMessage): self.session.tool_history.append( [tc.function.name for tc in action.tool_calls] ) def query_tool_history(self, tool_name: str) -> bool: """Return true if the tool is has been called in history.""" return tool_name in set(chain.from_iterable(self.session.tool_history)) class NamedTool(BaseModel): """Base class to make looking up tools easier.""" TOOL_FN_NAME: ClassVar[str] = ( "# unpopulated" # Comment symbol ensures no collisions ) # Whether the tool can be called concurrently with other tools. # Be careful when enabling. CONCURRENCY_SAFE: ClassVar[bool] = False model_config = ConfigDict(extra="forbid", arbitrary_types_allowed=True) class PaperSearch(NamedTool): TOOL_FN_NAME = "paper_search" # This tool is safe to run concurrently. The only stateful operation on the state # is docs.aadd_texts, which itself is concurrency safe. CONCURRENCY_SAFE = True settings: Settings embedding_model: EmbeddingModel previous_searches: dict[tuple[str, str | None], int] = Field(default_factory=dict) async def paper_search( self, query: str, min_year: int | str | None, max_year: int | str | None, state: EnvironmentState, ) -> str: """ Search for papers to increase the paper count. Repeat previous calls with the same query and years to continue a search. Only repeat a maximum of twice. This tool can be called concurrently. This tool introduces novel papers, so invoke this tool when just beginning or when unsatisfied with the current evidence. Args: query: A search query, which can be a specific phrase, complete sentence, or general keywords, e.g. 'machine learning for immunology'. Also can be given search operators. min_year: Filter for minimum publication year, or None for no minimum year. The current year is {current_year}. max_year: Filter for maximum publication year, or None for no maximum year. The current year is {current_year}. state: Current state. Returns: String describing searched papers and the current status. """ # noqa: E501,W505 def clean(value: int | str | None) -> int | None: if isinstance(value, int | None): return value if value == "None": # Claude Sonnet 4.5 has given "None" (str) return None return int(value) # Confirm string year was an integer cleaned_min_year = clean(min_year) cleaned_max_year = clean(max_year) # Convert to date range (e.g. 2022-2022) if date is present year = ( ( f"{cleaned_min_year if cleaned_min_year is not None else ''}" f"-{cleaned_max_year if cleaned_max_year is not None else ''}" ) if (cleaned_min_year is not None or cleaned_max_year is not None) else None ) # get offset if we've done this search before (continuation of search) # or mark this search as new (so offset 0) search_key = query, year try: offset = self.previous_searches[search_key] except KeyError: offset = self.previous_searches[search_key] = 0 logger.info(f"Starting paper search for {query!r}.") index = await get_directory_index(settings=self.settings, build=False) results: list[Docs] = await index.query( query, top_n=self.settings.agent.search_count, offset=offset, field_subset=[f for f in index.fields if f != "year"], ) logger.info( f"{self.TOOL_FN_NAME} for query {query!r} and offset {offset} returned" f" {len(results)} papers." ) # combine all the resulting doc objects into one and update the state all_doc_details: list[DocDetails] = [] for r in results: # there's only one doc per result, so just take the first one this_doc_details = cast("DocDetails", next(iter(r.docs.values()))) all_doc_details.append(this_doc_details) await state.docs.aadd_texts( texts=r.texts, doc=this_doc_details, settings=self.settings, embedding_model=self.embedding_model, ) status = state.status logger.info(status) # mark how far we've searched so that continuation will start at the right place self.previous_searches[search_key] += self.settings.agent.search_count if self.settings.agent.return_paper_metadata: retrieved_papers = "\n".join( [f"{x.title} ({x.year})" for x in all_doc_details] ) return f"Retrieved Papers:\n{retrieved_papers}\n\n{status}" return status class EmptyDocsError(RuntimeError): """Error to throw when we needed docs to be present.""" class GatherEvidence(NamedTool): TOOL_FN_NAME = "gather_evidence" settings: Settings summary_llm_model: LiteLLMModel embedding_model: EmbeddingModel partitioning_fn: Callable[[Embeddable], int] | None = None async def gather_evidence(self, question: str, state: EnvironmentState) -> str: """ Gather evidence from previous papers given a specific question to increase evidence and relevant paper counts. A valuable time to invoke this tool is right after another tool increases paper count. Feel free to invoke this tool in parallel with other tools, but do not call this tool in parallel with itself. Only invoke this tool when the paper count is above zero, or this tool will be useless. Args: question: Specific question to gather evidence for. state: Current state. Returns: String describing gathered evidence and the current status. """ if not state.docs.docs: raise EmptyDocsError("Not gathering evidence due to having no papers.") if f"{self.TOOL_FN_NAME}_initialized" in self.settings.agent.callbacks: await asyncio.gather( *( c(state) for c in self.settings.agent.callbacks[ f"{self.TOOL_FN_NAME}_initialized" ] ) ) logger.info(f"{self.TOOL_FN_NAME} starting for question {question!r}.") original_question = state.session.question l1 = l0 = len(state.session.contexts) try: # Swap out the question with the more specific question # TODO: remove this swap, as it prevents us from supporting parallel calls state.session.question = question # TODO: refactor answer out of this... state.session = await state.docs.aget_evidence( query=state.session, settings=self.settings, embedding_model=self.embedding_model, summary_llm_model=self.summary_llm_model, partitioning_fn=self.partitioning_fn, callbacks=self.settings.agent.callbacks.get( f"{self.TOOL_FN_NAME}_aget_evidence" ), ) l1 = len(state.session.contexts) finally: state.session.question = original_question status = state.status logger.info(status) # only show top n contexts for this particular question to the agent sorted_contexts = sorted( ( c for c in state.session.contexts if c.question is None or c.question == question ), key=lambda x: x.score, reverse=True, ) top_contexts = "\n\n".join( f"- {sc.context}" for sc in sorted_contexts[: self.settings.agent.agent_evidence_n] ) best_evidence = ( f" Best evidence(s) for the current question:\n\n{top_contexts}" if top_contexts else "" ) if f"{self.TOOL_FN_NAME}_completed" in self.settings.agent.callbacks: await asyncio.gather( *( callback(state) for callback in self.settings.agent.callbacks[ f"{self.TOOL_FN_NAME}_completed" ] ) ) return f"Added {l1 - l0} pieces of evidence.{best_evidence}\n\n" + status class GenerateAnswer(NamedTool): TOOL_FN_NAME = "gen_answer" settings: Settings llm_model: LiteLLMModel summary_llm_model: LiteLLMModel embedding_model: EmbeddingModel partitioning_fn: Callable[[Embeddable], int] | None = None async def gen_answer(self, state: EnvironmentState) -> str: """ Generate an answer using current evidence. The tool may fail, indicating that better or different evidence should be found. Aim for at least five pieces of evidence from multiple sources before invoking this tool. Feel free to invoke this tool in parallel with other tools, but do not call this tool in parallel with itself. Args: state: Current state. """ logger.info(f"Generating answer for '{state.session.question}'.") if f"{self.TOOL_FN_NAME}_initialized" in self.settings.agent.callbacks: await asyncio.gather( *( callback(state) for callback in self.settings.agent.callbacks[ f"{self.TOOL_FN_NAME}_initialized" ] ) ) state.session = await state.docs.aquery( query=state.session, settings=self.settings, llm_model=self.llm_model, summary_llm_model=self.summary_llm_model, embedding_model=self.embedding_model, partitioning_fn=self.partitioning_fn, callbacks=self.settings.agent.callbacks.get( f"{self.TOOL_FN_NAME}_aget_query" ), ) answer = state.session.answer status = state.status logger.info(status) if f"{self.TOOL_FN_NAME}_completed" in self.settings.agent.callbacks: await asyncio.gather( *( callback(state) for callback in self.settings.agent.callbacks[ f"{self.TOOL_FN_NAME}_completed" ] ) ) return f"{answer} | {status}" # Use to separate answer from status # NOTE: can match failure to answer or an actual answer ANSWER_SPLIT_REGEX_PATTERN: ClassVar[str] = ( r" \| " + EnvironmentState.STATUS_SEARCH_REGEX_PATTERN ) @classmethod def extract_answer_from_message(cls, content: str) -> str: """Extract the answer from a message content.""" answer, *rest = re.split( pattern=cls.ANSWER_SPLIT_REGEX_PATTERN, string=content, maxsplit=1 ) return answer if len(rest) == 4 else "" # noqa: PLR2004 class Reset(NamedTool): TOOL_FN_NAME = "reset" async def reset(self, state: EnvironmentState) -> None: """ Reset by clearing all current evidence from the system. This tool is useful when repeatedly failing to answer because the existing evidence may unsuitable for the question. It does not make sense to call this tool in parallel with other tools, as its resetting all state. Only invoke this tool when the current evidence is above zero, or this tool will be useless. """ # noqa: E501,W505 logger.info(f"Resetting '{state.session.question}'.") state.session.contexts = [] state.session.context = "" class Complete(NamedTool): TOOL_FN_NAME = "complete" # Use to separate certainty from status CERTAINTY_SPLIT_REGEX_PATTERN: ClassVar[str] = ( r" \| " + EnvironmentState.STATUS_SEARCH_REGEX_PATTERN ) NO_ANSWER_PHRASE: ClassVar[str] = "No answer generated." async def complete( self, has_successful_answer: bool, state: EnvironmentState ) -> str: """ Terminate using the last proposed answer. Do not invoke this tool in parallel with other tools or itself. Args: has_successful_answer: Set True if an answer that addresses all parts of the task has been generated, otherwise set False to indicate unsureness. state: Current state. """ # TODO: eliminate race condition here if agent calls 2+ times in parallel # with opposite has_successful_answer values state.session.has_successful_answer = has_successful_answer if not state.session.answer: state.session.answer = self.NO_ANSWER_PHRASE logger.info( f"Completing '{state.session.question}' as" f" '{'certain' if has_successful_answer else 'unsure'}'." ) # Return answer and status to simplify postprocessing of tool response return f"{'Certain' if has_successful_answer else 'Unsure'} | {state.status}" class ClinicalTrialsSearch(NamedTool): TOOL_FN_NAME = "clinical_trials_search" # See PaperSearch for rationale. CONCURRENCY_SAFE = True model_config = ConfigDict(extra="forbid") search_count: int = 8 previous_searches: dict[str, int] = Field(default_factory=dict) settings: Settings = Field(default_factory=Settings) # Gather evidence tool must be modified to understand the new evidence GATHER_EVIDENCE_TOOL_PROMPT_OVERRIDE: ClassVar[str] = ( """Gather evidence from previous papers and clinical trials given a specific question. Will increase evidence, relevant paper counts, and relevant clinical trial counts. A valuable time to invoke this tool is right after another tool increases paper or clinical trials count. Feel free to invoke this tool in parallel with other tools, but do not call this tool in parallel with itself. Only invoke this tool when the paper count or clinical trial count is above zero, or this tool will be useless. Args: question: Specific question to gather evidence for. state: Current state. Returns: String describing gathered evidence and the current status. """ ) async def clinical_trials_search(self, query: str, state: EnvironmentState) -> str: r"""Search for clinical trials, with support for repeated calls and concurrent execution. Will add new clinical trials to the state, and return metadata about the number of trials found. Args: query: The search query string. Supports complex boolean expressions, field-specific searches, and query modifiers through operators. All configuration is done through operators in the query string. Query Syntax: Basic Search: Simple text automatically uses default EXPANSION[Relaxation] and COVERAGE[Contains] >>> "heart attack" Modified Search: Use operators to modify search behavior: >>> 'EXPANSION[None]COVERAGE[FullMatch]"exact phrase"' >>> 'EXPANSION[Concept]heart attack' Field Search: Specify fields using AREA operator: >>> 'AREA[InterventionName]aspirin' >>> 'AREA[Phase]PHASE3' Location Search: Use SEARCH operator for compound location queries: >>> 'cancer AND SEARCH[Location](AREA[LocationCity]Boston AND AREA[LocationState]Massachusetts)' Complex Boolean: Combine terms with AND, OR, NOT and parentheses: >>> '(cancer OR tumor) AND NOT (EXPANSION[None]pediatric OR AREA[StdAge]CHILD)' Date Ranges: Use RANGE to specify date ranges with formats like "yyyy-MM" or "yyyy-MM-dd". Note that MIN and MAX can be used for open-ended ranges: >>> AREA[ResultsFirstPostDate]RANGE[2015-01-01, MAX] Operators: EXPANSION[type]: Controls term expansion - None: Exact match only, case and accent sensitive - Term: Includes lexical variants (plurals, spellings) - Concept: Includes UMLS synonyms - Relaxation: Relaxes adjacency requirements (default) - Lossy: Allows missing partial terms COVERAGE[type]: Controls text matching - FullMatch: Must match entire field - StartsWith: Must match beginning of field - EndsWith: Must match end of field - Contains: Must match part of field (default) AREA[field]: Specifies field to search - See Field Reference for available fields SEARCH[type]: Groups field searches - Location: Groups location-related fields - Study: Groups study-related fields Usage Notes: - All search expressions are implicitly OR expressions - Operator precedence (highest to lowest): terms/source operators, NOT/context operators, AND, OR - Use quotes for exact phrase matching: "heart attack" - Use parentheses for grouping: (heart OR cardiac) AND attack - Use backslash to escape operators: \AND - Default expansion is EXPANSION[Relaxation] - Default coverage is COVERAGE[Contains] Field Reference: High Priority Fields (weight >= 0.8): - NCTId (1.0): Trial identifier - Acronym (1.0): Study acronym - BriefTitle (0.89): Short title - OfficialTitle (0.85): Full official title - Condition (0.81): Medical condition - InterventionName (0.8): Primary intervention name - OverallStatus: Trial status Medium Priority Fields (0.5-0.79): - InterventionOtherName (0.75): Alternative intervention names - Phase (0.65): Trial phase - StdAge (0.65): Standard age groups - Keyword (0.6): Study keywords - BriefSummary (0.6): Short description - SecondaryOutcomeMeasure (0.5): Secondary outcomes Low Priority Fields (< 0.5): - DesignPrimaryPurpose (0.3): Primary purpose of study - StudyType (0.3) - Various descriptive, location, and administrative fields Supported Enums: Phase: - EARLY_PHASE1: Early Phase 1 - PHASE1: Phase 1 - PHASE2: Phase 2 - PHASE3: Phase 3 - PHASE4: Phase 4 - NA: Not Applicable StandardAge: - CHILD: Child - ADULT: Adult - OLDER_ADULT: Older Adult Status: - RECRUITING: Currently recruiting participants - ACTIVE_NOT_RECRUITING: Active but not recruiting - COMPLETED: Study completed - ENROLLING_BY_INVITATION: Enrolling by invitation only - NOT_YET_RECRUITING: Not yet recruiting - SUSPENDED: Study suspended - TERMINATED: Study terminated - WITHDRAWN: Study withdrawn - AVAILABLE: Available - NO_LONGER_AVAILABLE: No longer available - TEMPORARILY_NOT_AVAILABLE: Temporarily not available - APPROVED_FOR_MARKETING: Approved for marketing - WITHHELD: Withheld - UNKNOWN: Unknown status StudyType: - INTERVENTIONAL: Interventional studies - OBSERVATIONAL: Observational studies - EXPANDED_ACCESS: Expanded access studies PrimaryPurpose: - TREATMENT: Treatment - PREVENTION: Prevention - DIAGNOSTIC: Diagnostic - ECT: Educational/Counseling/Training - SUPPORTIVE_CARE: Supportive Care - SCREENING: Screening - HEALTH_SERVICES_RESEARCH: Health Services Research - BASIC_SCIENCE: Basic Science - DEVICE_FEASIBILITY: Device Feasibility - OTHER: Other InterventionType: - BEHAVIORAL: Behavioral interventions - BIOLOGICAL: Biological interventions - COMBINATION_PRODUCT: Combination product interventions - DEVICE: Device interventions - DIAGNOSTIC_TEST: Diagnostic test interventions - DIETARY_SUPPLEMENT: Dietary supplement interventions - DRUG: Drug interventions - GENETIC: Genetic interventions - PROCEDURE: Procedure interventions - RADIATION: Radiation interventions - OTHER: Other interventions DesignAllocation: - RANDOMIZED: Randomized allocation - NON_RANDOMIZED: Non-randomized allocation - NA: Not applicable InterventionalAssignment: - SINGLE_GROUP: Single group assignment - PARALLEL: Parallel assignment - CROSSOVER: Crossover assignment - FACTORIAL: Factorial assignment - SEQUENTIAL: Sequential assignment ObservationalModel: - COHORT: Cohort - CASE_CONTROL: Case-Control - CASE_ONLY: Case-Only - CASE_CROSSOVER: Case-Crossover - ECOLOGIC_OR_COMMUNITY: Ecologic or Community - FAMILY_BASED: Family-Based - DEFINED_POPULATION: Defined Population - NATURAL_HISTORY: Natural History - OTHER: Other DesignMasking: - NONE: None (Open Label) - SINGLE: Single - DOUBLE: Double - TRIPLE: Triple - QUADRUPLE: Quadruple WhoMasked: - PARTICIPANT: Participant - CARE_PROVIDER: Care Provider - INVESTIGATOR: Investigator - OUTCOMES_ASSESSOR: Outcomes Assessor state: Current state Returns: String describing current status """ # get offset if we've done this search before (continuation of search) # or mark this search as new (so offset 0) try: offset = self.previous_searches[query] except KeyError: offset = self.previous_searches[query] = 0 total_result_count, new_result_count, error_message = ( await add_clinical_trials_to_docs( query, state.docs, self.settings, limit=self.search_count, offset=offset, ) ) # mark how far we've searched so that continuation will start at the right place self.previous_searches[query] += self.search_count if error_message is None: return ( f"Found clinical trial search results from search {offset} to" f" {offset + new_result_count} among {total_result_count} total" f" results. {state.status}" ) return f"Error in clinical trial query syntax: {error_message}" AVAILABLE_TOOL_NAME_TO_CLASS: dict[str, type[NamedTool]] = { cls.TOOL_FN_NAME: cls for _, cls in inspect.getmembers( sys.modules[__name__], predicate=lambda v: inspect.isclass(v) and issubclass(v, NamedTool) and v is not NamedTool, ) } DEFAULT_TOOL_NAMES: list[str] = [ name.strip() for name in os.environ.get("PAPERQA_DEFAULT_TOOL_NAMES", "").split(",") if name.strip() ] or [ PaperSearch.TOOL_FN_NAME, GatherEvidence.TOOL_FN_NAME, GenerateAnswer.TOOL_FN_NAME, Reset.TOOL_FN_NAME, Complete.TOOL_FN_NAME, ] ================================================ FILE: src/paperqa/clients/__init__.py ================================================ from __future__ import annotations import copy import logging from collections.abc import Awaitable, Collection, Coroutine, Sequence from typing import Any, TypeAlias, cast import httpx import httpx_aiohttp from lmi.utils import gather_with_concurrency from pydantic import BaseModel, ConfigDict, Field from paperqa.types import Doc, DocDetails from .client_models import MetadataPostProcessor, MetadataProvider from .crossref import CrossrefProvider from .journal_quality import JournalQualityPostProcessor from .openalex import OpenAlexProvider from .retractions import RetractionDataPostProcessor from .semantic_scholar import SemanticScholarProvider from .unpaywall import UnpaywallProvider logger = logging.getLogger(__name__) # NOTE: we use tuple here so ordering is constant for unit testing's HTTP caching DEFAULT_CLIENTS: Collection[type[MetadataPostProcessor | MetadataProvider]] = ( CrossrefProvider, SemanticScholarProvider, JournalQualityPostProcessor, ) ALL_CLIENTS: Collection[type[MetadataPostProcessor | MetadataProvider]] = ( *DEFAULT_CLIENTS, OpenAlexProvider, UnpaywallProvider, RetractionDataPostProcessor, ) MetadataClientQuerier: TypeAlias = ( MetadataProvider | MetadataPostProcessor | type[MetadataProvider] | type[MetadataPostProcessor] ) class DocMetadataTask(BaseModel): """Simple container pairing metadata providers with processors.""" model_config = ConfigDict(arbitrary_types_allowed=True) providers: Collection[MetadataProvider] = Field( description=( "Metadata providers allotted to this task." " An example would be providers for Crossref and Semantic Scholar." ) ) processors: Collection[MetadataPostProcessor] = Field( description=( "Metadata post-processors allotted to this task." " An example would be a journal quality filter." ) ) def provider_queries( self, query: dict ) -> list[Coroutine[Any, Any, DocDetails | None]]: """Set up query coroutines for each contained metadata provider.""" return [p.query(query) for p in self.providers] def processor_queries( self, doc_details: DocDetails, client: httpx.AsyncClient ) -> list[Coroutine[Any, Any, DocDetails]]: """Set up process coroutines for each contained metadata post-processor.""" return [ p.process(copy.copy(doc_details), client=client) for p in self.processors ] def __repr__(self) -> str: return ( f"DocMetadataTask(providers={self.providers}, processors={self.processors})" ) class DocMetadataClient: def __init__( self, http_client: httpx.AsyncClient | None = None, metadata_clients: ( Collection[MetadataClientQuerier] | Sequence[Collection[MetadataClientQuerier]] ) = DEFAULT_CLIENTS, ) -> None: """Metadata client for querying multiple metadata providers and processors. Args: http_client: Async HTTP client to allow for connection pooling. metadata_clients: list of MetadataProvider and MetadataPostProcessor instances or classes to query; if nested, will query in order looking for termination criteria after each. Will terminate early if either DocDetails.is_hydration_needed is False OR if all requested fields are present in the DocDetails object. """ self._http_client = http_client self.tasks: list[DocMetadataTask] = [] # first see if we are nested; i.e. we want order if isinstance(metadata_clients, Sequence) and all( isinstance(sub_clients, Collection) for sub_clients in metadata_clients ): for sub_clients in metadata_clients: self.tasks.append( DocMetadataTask( providers=[ c if isinstance(c, MetadataProvider) else c() for c in sub_clients if (isinstance(c, type) and issubclass(c, MetadataProvider)) or isinstance(c, MetadataProvider) ], processors=[ c if isinstance(c, MetadataPostProcessor) else c() for c in sub_clients if ( isinstance(c, type) and issubclass(c, MetadataPostProcessor) ) or isinstance(c, MetadataPostProcessor) ], ) ) # otherwise, we are a flat collection if not self.tasks and all( not isinstance(c, Collection) for c in metadata_clients ): self.tasks.append( DocMetadataTask( providers=[ c if isinstance(c, MetadataProvider) else c() for c in metadata_clients if (isinstance(c, type) and issubclass(c, MetadataProvider)) or isinstance(c, MetadataProvider) ], processors=[ c if isinstance(c, MetadataPostProcessor) else c() for c in metadata_clients if ( isinstance(c, type) and issubclass(c, MetadataPostProcessor) ) or isinstance(c, MetadataPostProcessor) ], ) ) if not self.tasks or (self.tasks and not self.tasks[0].providers): raise ValueError("At least one MetadataProvider must be provided.") async def query(self, **kwargs) -> DocDetails | None: client = ( httpx_aiohttp.HttpxAiohttpClient(timeout=10.0) if self._http_client is None else self._http_client ) query_args = kwargs if "client" in kwargs else kwargs | {"client": client} all_doc_details: DocDetails | None = None for ti, task in enumerate(self.tasks): logger.debug( f"Attempting to populate metadata query: {query_args} via {task}" ) # first query all client_models and aggregate the results doc_details = ( sum( p for p in await gather_with_concurrency( len(task.providers), task.provider_queries(query_args) ) if p ) or None ) # then process and re-aggregate the results if doc_details and task.processors: doc_details = ( sum( await gather_with_concurrency( len(task.processors), task.processor_queries(doc_details, client), ) ) or None ) if doc_details: # abuse int handling in __add__ for empty all_doc_details, None types won't work all_doc_details = doc_details + (all_doc_details or 0) if not all_doc_details.is_hydration_needed( inclusion=kwargs.get("fields", []) ): logger.debug( "All requested fields are present in the DocDetails " f"object{', stopping early.' if ti != len(self.tasks) - 1 else '.'}" ) break if self._http_client is None: await client.aclose() return all_doc_details async def bulk_query( self, queries: Collection[dict[str, Any]], concurrency: int = 10 ) -> list[DocDetails]: return await gather_with_concurrency( concurrency, [cast("Awaitable[DocDetails]", self.query(**kwargs)) for kwargs in queries], ) async def upgrade_doc_to_doc_details(self, doc: Doc, **kwargs) -> DocDetails: # Collect fields (e.g. title, DOI, or authors) that have been externally # specified (e.g. by a caller, or inferred from the document's contents) # but are not on the input `doc` object provided_fields = { k: v for k, v in kwargs.items() if k in set(DocDetails.model_fields) } # DocDetails.__add__ supports `int` as a no-op route, so if we have no # provided fields, let's use that no-op route provided_doc_details: int | DocDetails = ( 0 if not provided_fields else DocDetails(**provided_fields) ) if doc_details := await self.query(**kwargs): # hard overwrite the details from the prior object if "dockey" in doc.fields_to_overwrite_from_metadata: doc_details.dockey = doc.dockey if "doc_id" in doc.fields_to_overwrite_from_metadata: doc_details.doc_id = doc.dockey if "docname" in doc.fields_to_overwrite_from_metadata: doc_details.docname = doc.docname if "key" in doc.fields_to_overwrite_from_metadata: doc_details.key = doc.docname if "citation" in doc.fields_to_overwrite_from_metadata: doc_details.citation = doc.citation if "content_hash" in doc.fields_to_overwrite_from_metadata: doc_details.content_hash = doc.content_hash return provided_doc_details + doc_details # if we can't get metadata, just return the doc, but don't overwrite any fields overwrite_fields: set[str] = set() if doc.dockey == doc.content_hash: # This allows DocDetails validator on fields_to_overwrite_from_metadata # to sync dockey with doc_id. Otherwise, dockey remains the raw # content_hash and won't match the computed doc_id. overwrite_fields.add("doc_id") orig_fields = doc.model_dump() | { "fields_to_overwrite_from_metadata": overwrite_fields } return DocDetails(**(orig_fields | provided_fields)) ================================================ FILE: src/paperqa/clients/client_data/journal_quality.csv ================================================ clean_name,quality """rau"" publishing house, russian-armenian (slavonic) state university",-1 #isoj,-1 #tyottomat,-1 (mt) marine technology,1 ... ieee workshop on wide bandgap power devices and applications,1 1066: tidsskrift for historisk forskning,1 12 levha,-1 "1650-1850: ideas, aesthetics, and inquiries in the early modern era",-1 19 : interdisciplinary studies in the long nineteenth century,1 20tal,-1 21st century music,1 2d materials,3 3 biotech,1 30 päivää,-1 3d printing and additive manufacturing,1 3d printing in medicine,-1 3d research,1 3dtv conference,1 49th parallel : an interdisciplinary journal of north america,1 4or : a quarterly journal of operations research,1 4s symposium,-1 6g research visions,-1 6g waves,-1 7 experiences summit of the experience research society,-1 ;login:,-1 @seamk-verkkolehti,-1 [in] transition,1 a + u,1 a falu,-1 a forum for theology in the world,-1 a line which forms a volume,-1 a móra ferenc múzeum évkönyve,-1 a peer-reviewed journal about,1 a-klinikkasäätiö : tutkimussarja,1 a. b. the samaritan news,-1 aa files,1 aaa : arbeiten aus anglistik und amerikanistik,1 aaai press,1 aacc international,-1 aadr – art architecture design research,1 aalborg universitet,-1 aalborg university : open publishing,1 aalborg university press,1 aalitra review,-1 aalto arts books,1 aalto university executive education oy,-1 aalto university magazine,-1 aalto university publication series : art + design + architecture,-1 aalto university publication series : business + economy,-1 aalto university publication series : doctoral theses,-1 aalto university publication series : science + technology,-1 aalto university publication series crossover,-1 aalto-yliopisto,-1 aalto-yliopiston julkaisusarja,-1 aalto-yliopiston julkaisusarja : kauppa + talous,-1 aalto-yliopiston julkaisusarja : taide + muotoilu + arkkitehtuuri,-1 aalto-yliopiston julkaisusarja crossover,-1 aamulehti,-1 aamun koitto,-1 aamuposti,-1 aamuposti viikko,-1 aamuset,-1 aapg bulletin,1 aaps journal,1 aaps pharmscitech,1 aarboger for nordisk oldkyndighed og historie,1 aare conference papers,-1 aarhus series on human centered computing,-1 aarhus universitet,-1 aarhus university press,1 aarre,-1 aascit journal of materials,-1 aatcc review,1 ab imperio,2 aba tax times,-1 abacus: a journal of accounting finance and business studies,1 abada editores,-1 abai kazakh national pedagogical university,-1 abant i̇zzet baysal üniversitesi eğitim fakültesi dergisi,-1 abc plastics news,-1 abc-clio,-1 abc-clio greenwood,-1 abdominal imaging,1 abdominal radiology,1 abe journal,1 aberdeen university press,-1 abhandlungen aus dem mathematischen seminar der universitat hamburg,1 abhigyan,-1 abilene christian university press,1 able,-1 aboa centre for economics,-1 abolitionist perspectives in social work,-1 aboriginal history,1 about performance,1 abrapso editora,1 abstract and applied analysis,1 "abstracta: linguagem, mente e acao",1 abstracts of papers presented to the american mathematical society,1 abstracts of the ica,-1 "abstracts of the proceedings (international ofel conference on governance, management and entrepreneurship)",-1 abstrakt forlag,1 academia,-1 academia adacta,1 academia biology,-1 academia journal of educational research,-1 academia letters,-1 academia mental health & well-being,-1 academia peruana de la lengua,-1 academia press,1 academia revista latinoamericana de administración,1 academia verlag,1 academia-l´harmattan,-1 academic & scientific publishers,1 academic and applied research in public management science,1 academic conferences international,1 academic emergency medicine,2 academic medicine,1 academic pediatrics,1 academic press,2 academic psychiatry,1 academic radiology,1 academic studies press,1 academica,1 academica turistica,-1 academicus,1 academie royale de belgique,-1 academperiodica,-1 academy of entrepreneurship journal,-1 academy of european law working papers,-1 academy of fine arts in lodz,-1 academy of management annals,3 academy of management annual meeting proceedings,-1 academy of management discoveries,3 academy of management journal,3 academy of management learning and education,3 academy of management perspectives,2 academy of management review,3 academy of marketing,-1 academy of marketing studies journal,-1 acadia,-1 acadiensis,1 académie des sciences belles-lettres et arts de besançon et de franche-comté,1 acarina,-1 acarologia,1 acatiimi,-1 acc journal,-1 accademia,-1 accademia della crusca,1 accademia etrusca di cortona: annuario,1 accademia musicale studio musica,-1 accademia nazionale dei lincei,1 accademia nazionale di santa cecilia,-1 accademia university press,-1 accademie e biblioteche d'italia,-1 access,1 access microbiology,-1 accident analysis and prevention,3 acco,1 accordia research papers,1 accountability in research,1 accounting and business research,2 accounting and finance,1 accounting and financial control,1 accounting and the public interest,1 accounting education,1 accounting forum,1 accounting historians journal,1 accounting history,1 accounting history review,1 accounting horizons,2 accounting in europe,1 accounting organizations and society,3 accounting perspectives,1 accounting research journal,1 accounting review,3 "accounting, auditing and accountability journal",2 "accounting, economics, and law",1 accounts of chemical research,2 accreditation and quality assurance,1 acdi,-1 aceee international journal on information technology,-1 acer press,-1 achiote.com,-1 aci materials journal,1 aci open,-1 aci structural journal,1 acm,1 acm communications in computer algebra,-1 acm computing surveys,3 acm conference on computer and communications security,3 acm conference on computer-supported cooperative work and social computing,2 acm inroads,-1 acm international conference and exhibition on computer graphics interactive techniques,2 acm international joint conference on pervasive and ubiquitous computing,2 acm international workshop on mobile opportunistic networks,-1 acm journal of data and information quality,1 acm journal of experimental algorithmics,2 acm journal on emerging technologies in computing systems,1 acm journal on responsible computing,1 acm multimedia,3 acm sigaccess accessibility and computing proceedings,1 acm sigact-sigmod-sigart symposium on principles of database systems,2 acm sigchi annual conference on human factors in computing systems,3 acm siggraph symposium on interactive 3d graphics and games,1 acm siggraph/eurographics symposium on computer animation,1 acm sigkdd international conference on knowledge discovery and data mining,3 acm sigplan conference on programming language design and implementation,2 acm sigplan notices,-1 acm sigsoft international symposium on the foundations of software engineering,2 acm symposium on principles of distributed computing,2 acm symposium on theory of computing,3 acm symposium on user interface software and technology,2 acm transactions on accessible computing,1 acm transactions on algorithms,3 acm transactions on applied perception,1 acm transactions on architecture and code optimization,1 acm transactions on asian and low-resource language information processing,1 acm transactions on autonomous and adaptive systems,2 acm transactions on computation theory,1 acm transactions on computational logic,2 acm transactions on computer systems,3 acm transactions on computer-human interaction,3 acm transactions on computing education,3 acm transactions on computing for healthcare,1 acm transactions on cyber-physical systems,1 acm transactions on database systems,3 acm transactions on design automation of electronic systems,1 acm transactions on economics and computation,1 acm transactions on embedded computing systems,1 acm transactions on evolutionary learning,1 acm transactions on graphics,3 acm transactions on human-robot interaction,1 acm transactions on information systems,3 acm transactions on intelligent systems and technology,1 acm transactions on interactive intelligent systems (tiis),1 acm transactions on internet technology,3 acm transactions on knowledge discovery from data,3 acm transactions on management information systems,1 acm transactions on mathematical software,3 acm transactions on modeling and computer simulation,1 acm transactions on modeling and performance evaluation of computing systems,1 "acm transactions on multimedia computing, communications, and applications",2 acm transactions on parallel computing,1 acm transactions on privacy and security,3 acm transactions on programming languages and systems,3 acm transactions on quantum computing,1 acm transactions on recommender systems,1 acm transactions on reconfigurable technology and systems,1 acm transactions on sensor networks,2 acm transactions on social computing,1 acm transactions on software engineering and methodology,3 acm transactions on spatial algorithms and systems,1 acm transactions on speech and language processing,1 acm transactions on storage,1 acm transactions on the internet of things,1 acm transactions on the web,2 acm ubiquity,1 acm workshop on challenged networks,-1 acm workshop on emerging name-oriented mobile networking design,-1 acm workshop on scalable trusted computing,-1 acm-siam symposium on discrete algorithms,2 acm-sigmod international conference on management of data,3 acm/ieee international conference on human-robot interaction,1 acm/ims transactions on data science,1 acme,1 acme: annali della faculta di lettere et filosofia dell universita statale di milano,1 acog clinical review,1 acoustic ecology review,-1 acoustic space,1 acoustical physics,1 acoustical science and technology,1 acoustical society of america,-1 acoustics,-1 acoustics australia,1 acr open rheumatology,1 acrn journal of finance and risk perspectives,1 acrocephalus,-1 across languages and cultures,2 across the disciplines,1 acs agricultural science & technology,1 acs applied bio materials,1 acs applied electronic materials,1 acs applied energy materials,1 acs applied engineering materials,1 acs applied materials and interfaces,2 acs applied nano materials,1 acs applied optical materials,1 acs applied polymer materials,1 acs bio & med chem au,-1 acs biomaterials science & engineering,1 acs catalysis,3 acs central science,3 acs chemical biology,2 acs chemical neuroscience,1 acs combinatorial science,1 acs earth and space chemistry,1 acs electrochemistry,-1 acs energy letters,2 acs engineering au,1 acs environmental au,1 acs es&t air,1 acs es&t engineering,1 acs es&t water,1 acs food science & technology,1 acs infectious diseases,1 acs macro letters,2 acs materials au,1 acs materials letters,1 acs measurement science au,1 acs medicinal chemistry letters,1 acs nano,3 acs nanoscience au,1 acs omega,1 acs pharmacology & translational science,1 acs photonics,2 acs physical chemistry au,1 acs polymers au,1 acs sensors,2 acs sustainable chemistry and engineering,1 acs sustainable resource management,1 acs symposium series,1 acs synthetic biology,2 acs/ieee international conference on computer systems and applications,1 acsa press,-1 acsms health and fitness journal,1 acta,-1 acta academiae artium vilnensis,1 acta academiae beregsasiensis : philologica,-1 acta academiae regiae gustavi adolphi lxxxvii,1 acta acustica,1 acta ad archaeologiam et artium historiam pertinentia,1 acta adriatica,1 acta agriculturae scandinavica section a : animal science,1 acta agriculturae scandinavica section b : soil and plant science,1 acta agriculturae scandinavica: supplementum,1 acta agrobotanica,1 acta alimentaria,1 acta amazonica,1 acta anaesthesiologica belgica,-1 acta anaesthesiologica scandinavica,1 acta analytica : international periodical for philosophy in the analytical tradition,1 acta anthropologica sinica,1 acta antiqua academiae scientiarum hungaricae,1 acta antiqua ostrobotniensia,1 acta applicandae mathematicae,1 acta aquatica turcica,-1 acta arachnologica,1 acta archaelogica carpathica,1 acta archaeologica,1 acta archaeologica academiae scientiarum hungaricae,1 acta archaeologica lovaniensia,1 acta arithmetica,2 acta astronautica,1 acta astronomica,1 acta baltica historiae et philosophiae scientiarum,1 acta baltico-slavica,1 acta biochimica et biophysica sinica,1 acta biochimica polonica,-1 acta bioethica,1 acta biologica cracoviensia series botanica,1 acta biologica cracoviensia series zoologia,1 acta biologica plantarum agriensis,1 acta biologica sibirica,1 acta biologica turcica,-1 acta biologica universitatis daugavpiliensis,1 acta biomaterialia,2 acta biomedica,-1 acta biotheoretica,1 acta borealia,1 acta botanica brasilica,1 acta botanica croatica,1 acta botanica fennica,1 acta botanica hungarica,-1 acta botanica mexicana,1 acta bryolichenologica asiatica,-1 acta byzantina fennica,1 acta byzantina fennica : supplementa,-1 acta cardiologica,1 acta carsologica,1 acta chimica slovenica,1 acta chiropterologica,1 acta chirurgiae orthopaedicae et traumatologiae čechoslovaca,-1 acta chirurgica belgica,1 acta chirurgica italica,1 acta chromatographica,1 acta cirurgica brasileira,1 acta classica,1 acta classica universitatis scientiarum debreceniensis,1 acta clinica belgica,1 acta clinica croatica,-1 acta comeniana,1 acta conventus neo-latini,-1 acta criminologica,-1 acta crystallographica section a : foundations and advances,1 "acta crystallographica section b : structural science, crystal engineering and materials",1 acta crystallographica section c : structural chemistry,1 acta crystallographica section d : structural biology,1 acta crystallographica section e : crystallographic communications,1 acta crystallographica section f : structural biology communications,1 acta cybernetica,1 acta cytologica,1 acta dermato-venereologica,2 "acta dermatovenerologica alpina, pannonica et adriatica",-1 acta dermatovenerologica croatica,-1 acta diabetologica,1 acta didactica norden,1 acta diurna obscura,-1 acta endocrinologica-bucharest,1 acta endoscopica,1 acta entomologica musei nationalis pragae,1 acta et commentationes universitatis tartuensis de mathematica,1 acta ethnographica hungarica,1 acta ethologica,1 acta facultatis educationis physicae universitatis comenianae,1 acta futura fennica,1 acta geodynamica et geomaterialia,1 acta geographica lodziensia,1 acta geographica slovenica-geografski zbornik,1 acta geologica polonica,1 acta geologica sinica-english edition,1 acta geophysica,1 acta geotechnica,1 acta geotechnica slovenica,1 acta geoturistica,1 acta graphica,1 acta graphica publishers,-1 acta gymnica,-1 acta haematologica,1 acta herpetologica,1 acta histochemica,1 acta histochemica et cytochemica,1 acta historiae artium academie scientiarium hungaricae,1 acta historiae rerum naturalium nec non technicarum: new series,1 acta historica astronomiae,1 acta historica tallinnensia,1 acta historica universitatis klaipedensis,1 acta histriae,-1 acta horticulturae,1 acta humanitarica universitatis saulensis,1 acta hydrologica slovaca,1 acta hyperborea: danish studies in classical archaeology,1 "acta ibseniana: centre for ibsen studies, university of oslo",1 acta ichthyologica et piscatoria,1 acta imeko,1 acta informatica,2 acta informatica pragensia,-1 acta instituti romani finlandiae,1 acta kinesiologiae universitatis tartuensis,1 acta kinesiologica,-1 acta lapponica fenniae,-1 acta legis turkuensia,-1 acta linguistica,-1 acta linguistica academica,-1 acta linguistica hafniensia : international journal of linguistics,2 acta linguistica lithuanica,1 acta linguistica petropolitana,1 acta literaria,1 acta logistica,1 acta ludologica,-1 acta materialia,3 acta mathematica,3 acta mathematica hungarica,1 acta mathematica scientia,1 acta mathematica sinica : english series,1 acta mathematica universitatis comenianae,1 acta mathematica vietnamica,1 acta mathematicae applicatae sinica : english series,1 acta mechanica,1 acta mechanica sinica,1 acta mechanica solida sinica,1 acta mediaevalia : series nova,-1 acta medica bulgarica,-1 acta medica okayama,-1 acta medico-historica adriatica,1 acta metallurgica sinica,1 acta metallurgica slovaca,-1 acta meteorologica sinica,1 acta médica portuguesa,-1 acta microbiologica et immunologica hungarica,-1 acta microscopica,1 acta montanistica slovaca,1 acta mozartiana,1 acta musei silesiae : scientiae naturales,1 acta musicologica,3 acta musicologica fennica,1 acta musicologica militantia,-1 acta mycologica,1 acta myologica,1 acta naturae,1 acta neophilologica,1 acta neurobiologiae experimentalis,1 acta neurochirurgica,1 acta neurochirurgica. supplementum,1 acta neurologica belgica,1 acta neurologica scandinavica,1 acta neurologica scandinavica: supplementum,1 acta neuropathologica,3 acta neuropathologica communications,1 acta neuropsychiatrica,1 acta neuropsychologica,-1 acta numerica,2 acta obstetricia et gynecologica scandinavica,2 acta oceanologica sinica,1 acta odontologica scandinavica,1 acta oecologica-international journal of ecology,1 acta oeconomica,-1 acta of bioengineering and biomechanics,1 acta oncologica,1 acta onomastica,1 acta ophthalmologica,2 acta ophthalmologica. supplement,1 acta organologica,1 acta orientalia,1 acta orientalia academiae scientiarum hungaricae,1 acta orientalia vilnensia,1 acta ornithologica,1 acta orthopaedica,1 acta orthopaedica belgica,1 acta orthopaedica et traumatologica turcica,1 acta orthopaedica: supplementum,1 acta ortopedica brasileira,1 acta oto-laryngologica,1 acta oto-laryngologica case reports,1 acta oto-laryngologica: supplement,1 acta otorhinolaryngologica italica,1 acta paedagogica vilnensia,1 acta paediatrica,1 acta palaeobotanica,1 acta palaeontologica polonica,1 acta palaeontologica sinica,1 acta parasitologica,1 acta paulista de enfermagem,1 acta periodica duellatorum,1 acta pharmaceutica,1 acta pharmaceutica sinica b,1 acta pharmacologica sinica,1 acta philologica,1 acta philosophica,1 acta philosophica fennica,1 acta philosophica tamperensia,1 acta philosophica turkuensia,-1 acta physica polonica a,1 acta physica polonica b,1 acta physica polonica b : proceedings supplement,-1 acta physica sinica,1 acta physico-chimica sinica,-1 acta physiologiae plantarum,1 acta physiologica,2 "acta physiologica scandinavica, supplement",1 acta phytopathologica et entomologica hungarica,1 acta phytotaxonomica et geobotanica,-1 acta poenologica,-1 acta politica,-1 acta politica,2 acta politica aboensia a,-1 acta poloniae historica,1 acta poloniae pharmaceutica,-1 acta polymerica sinica,-1 acta polytechnica,1 acta polytechnica hungarica,1 acta praehistorica et archaeologica,1 acta press,1 acta prosperitatis,-1 acta protozoologica,1 acta psychiatrica scandinavica,2 "acta psychiatrica scandinavica, supplement",1 acta psychologica,1 acta psychologica sinica,1 acta radiologica,1 acta radiologica open,1 acta scenica,-1 acta scientiae veterinariae,1 acta scientiarum : health sciences,-1 acta scientiarum polonorum : administratio locorum,-1 acta scientiarum polonorum : silvarum colendarum ratio et industria lignaria,-1 acta scientiarum polonorum-hortorum cultus,1 acta scientiarum-agronomy,1 acta scientiarum-technology,1 acta scientific microbiology,-1 acta semiotica,-1 acta semiotica estica,-1 acta semiotica fennica,-1 acta slavica estonica,1 acta slavica iaponica,1 acta societatis botanicorum poloniae,1 acta societatis morgensternianae,-1 acta sociologica,2 acta technica jaurinensis,-1 "acta technica napocensis : series applied mathematics, mechanics and engineering",-1 acta technica napocensis: electronica-telecomunicatii,-1 acta theologica,1 acta translatologica helsingiensia,-1 acta tropica,1 acta turistica,1 acta universitatis agriculturae et silviculturae mendelianae brunensis,-1 acta universitatis carolinae : geographica,1 acta universitatis carolinae : kinanthropologica,1 acta universitatis carolinae: philologica,1 acta universitatis de carolo eszterházy nominatae : sectio linguistica hungarica,-1 acta universitatis lappeenrantaensis,-1 acta universitatis lodziensis : folia iuridica,-1 acta universitatis lodziensis : folia oeconomica,-1 acta universitatis lodziensis: folia archaeologica,1 acta universitatis matthiae belii : séria environmentálne manažérstvo,-1 acta universitatis ouluensis,-1 acta universitatis ouluensis b : humaniora,-1 acta universitatis ouluensis e : scientiae rerum socialium,-1 acta universitatis ouluensis series c : technica,-1 "acta universitatis palackianae olomucensis, facultas rerum naturalium, mathematica",1 acta universitatis sapientiae : philologica,1 acta universitatis sapientiae film and media studies,-1 acta universitatis sapientiae. european and regional studies,1 acta universitatis sapientiae: mathematica,1 acta universitatis szegediensis: acta scientiarum mathematicarum,1 acta universitatis wratislaviensis,1 acta veterinaria,1 acta veterinaria brno,1 acta veterinaria hungarica,1 acta veterinaria scandinavica,2 acta via serica,1 acta virologica,1 acta wasaensia,-1 acta zoologica,1 acta zoologica academiae scientiarum hungaricae,1 acta zoologica bulgarica,1 acta zoologica fennica,1 acta zoológica mexicana,1 actar d,1 actas espanolas de psiquiatria,1 actas urologicas espanolas,1 actes de la conférence : association francophone d'interaction homme machine,-1 actes de la recherche en sciences sociales,2 actes du congrès - société française shakespeare,1 actes sud,1 action learning: research and practice,1 action research,1 action research international,1 "action, criticism and theory for music education",1 active and passive electronic components,1 active learning in higher education,2 activitas nervosa superior,1 "activities, adaptation and aging: the journal of activities management",1 acton publishers,1 actual problems of economics,-1 actualite chimique,-1 actuators,-1 acumen,1 acupuncture and electro-therapeutics research,1 acupuncture in medicine,1 acute cardiac care,1 ad aeternum,-1 ad hoc and sensor wireless networks,1 ad hoc networks,2 ad parnassum,1 ada,1 adabiyyat-i tabiqi,-1 adalya,1 adamantius,1 adansonia,1 adapta,-1 adaptation,1 adapted physical activity quarterly,1 adaptive behavior,1 adaptive human behavior and physiology,1 adcomunica,1 addiction,3 addiction biology,2 addiction research and theory,1 addiction science & clinical practice,1 addictive behaviors,1 addictive behaviors reports,1 addictive disorders and their treatment,1 addis ababa university press,1 addison-wesley,-1 additive manufacturing,3 additive manufacturing letters,1 additives for polymers,1 addleton academic publishers,1 adicciones,-1 adipocytes,-1 admet & dmpk,1 administration,1 administration and policy in mental health and mental health services research,1 administration and society,2 administrative law review,1 administrative science quarterly,3 administrative sciences,-1 administrative theory & praxis,1 administraţie şi management public,1 admiral makarov state university of maritime and inland shipping,-1 adocs,-1 "adolescent health, medicine and therapeutics",1 adolescent psychiatry,1 adolescent research review,-1 adolescents,-1 adonis & abbey publishers ltd.,1 adoption and fostering,1 adoption quarterly,1 adoptioperheet,-1 adoranten,-1 adresseavisen,-1 adria section of the combustion institue (asci),-1 adsorption : journal of the international adsorption society,1 adsorption science and technology,1 adult education and development,1 adult education quarterly,3 adult learning,1 adults learning mathematics,1 adults learning mathematics : an international journal,1 adv. photonics nexus,1 advance research journal of multidisciplinary discoveries,-1 advanced biology,1 advanced biomedical research,-1 advanced building skins,-1 advanced composite materials,1 advanced composites and hybrid materials,1 advanced devices & instrumentation,1 advanced drug delivery reviews,3 advanced electromagnetics,-1 advanced electromagnetics symposium,-1 advanced electronic materials,2 advanced emergency nursing journal,1 advanced energy and sustainability research,1 advanced energy materials,3 advanced engineering forum,-1 advanced engineering informatics,1 advanced engineering materials,1 advanced functional materials,3 advanced healthcare materials,2 advanced information networking and applications workshops,-1 advanced intelligent discovery,-1 advanced intelligent systems,1 advanced international conference on telecommunications,-1 advanced knowledge international,1 advanced materials,3 advanced materials and processes,1 advanced materials interfaces,1 advanced materials research,1 advanced materials technologies,1 advanced mathematical models & applications,-1 advanced nanobiomed research,1 advanced nonlinear studies,1 advanced optical materials,2 advanced optical technologies,1 advanced packaging,1 advanced pharmaceutical bulletin,-1 advanced photonics,-1 advanced photonics research,1 advanced physics research,1 advanced powder materials,1 advanced powder technology,1 advanced quantum technologies,1 advanced robotics,1 advanced science,1 "advanced science, engineering and medicine",1 advanced sensor research,1 advanced series in management,1 advanced steel construction,1 advanced studies in biology,-1 advanced studies in theoretical physics,-1 advanced sustainable systems,1 advanced synthesis and catalysis,2 advanced theory and simulations,1 advanced therapeutics,1 advanced topics in database research series,-1 advancements in genetic engineering,-1 advancements in life sciences,1 advances and applications in discrete mathematics,-1 advances and applications in statistics,1 advances in accounting,1 advances in aerospace science and technology,-1 advances in agriculture,-1 advances in agronomy,1 advances in anatomic pathology,2 advances in anatomy embryology and cell biology,1 "advances in ancient, biblical, and near eastern research",1 advances in anthropology,-1 advances in applied ceramics,1 advances in applied clifford algebras,1 advances in applied energy,1 advances in applied mathematics,2 advances in applied mathematics and mechanics,1 advances in applied microbiology series,1 advances in applied microeconomics,1 advances in applied probability,2 advances in applied sociology,-1 advances in archaeological practice,1 advances in artificial intelligence and machine learning,1 advances in astrobiology and biogeophysics,1 advances in astronomy,1 advances in astronomy and space physics,-1 advances in atmospheric sciences,1 advances in atomic molecular and optical physics,1 advances in austrian economics,1 advances in autism,1 advances in biochemical engineering : biotechnology,1 advances in biological regulation,1 advances in bioscience and biotechnology,-1 advances in biotechnology & microbiology,-1 advances in botanical research,1 advances in building energy research,1 advances in business related scientific research journal,1 advances in calculus of variations,1 advances in cancer research,1 advances in cancer: research and treatment,-1 advances in carbohydrate chemistry and biochemistry series,1 advances in cardiology,1 advances in cartography and giscience of the ica,-1 advances in catalysis,2 advances in cement research,1 advances in chemical engineering,1 advances in chemical physics,1 advances in child development and behavior,1 advances in chromatography,1 advances in chronic kidney disease,1 advances in civil engineering,1 advances in civil engineering materials,1 advances in climate change research,1 advances in clinical and experimental medicine,1 advances in clinical chemistry,1 advances in clinical neuroscience and rehabilitation,1 advances in cognitive psychology,1 advances in colloid and interface science,1 advances in combinatorics,1 advances in complex systems,1 advances in computational intelligence,1 advances in computational mathematics,1 advances in computer science : an international journal,-1 advances in computer science research,-1 advances in computers,2 advances in condensed matter physics,1 advances in consciousness research,1 advances in consumer research,1 advances in criminological theory,1 advances in data analysis and classification,1 advances in database technology,1 advances in decision sciences,-1 advances in dental research,1 advances in developing human resources,1 advances in differential equations,1 advances in distributed computing and artificial intelligence journal,1 advances in dual diagnosis,1 advances in ecological research,1 advances in econometrics,1 advances in economics and business,-1 "advances in economics, management and political sciences",-1 advances in electrical and computer engineering,1 "advances in electronic government, digital divide, and regional development",-1 advances in electronics and telecommunications,-1 advances in engineering software,1 advances in enzymology and related subjects of biochemistry,1 advances in experimental medicine and biology,1 advances in experimental social psychology,2 advances in food security and sustainability,-1 advances in forestry science,-1 advances in fuzzy systems,1 advances in gender research,1 advances in genetics,1 advances in geo-energy research,1 advances in geochemistry and cosmochemistry,-1 advances in geometry,1 advances in geophysics,1 advances in geosciences,1 advances in gerontology,-1 advances in health sciences education,2 advances in heterocyclic chemistry,1 advances in high energy physics,1 advances in historical studies,-1 advances in horticultural science,1 advances in hospitality and leisure,1 advances in hospitality and tourism research,-1 advances in human biology,-1 advances in human-computer interaction,1 advances in imaging and electron physics,1 advances in immunology,1 advances in industrial and manufacturing engineering,1 advances in infectious diseases,-1 advances in information security,1 advances in inorganic chemistry,1 advances in insect physiology,1 advances in intelligent systems and computing,1 advances in intelligent systems research,-1 advances in international marketing,1 advances in internet of things,-1 advances in language and literary studies,-1 advances in librarianship,1 advances in life course research,2 advances in limnology,1 advances in literary study,-1 advances in management and applied economics,-1 advances in manufacturing,1 advances in marine biology,1 advances in materials and processing technologies,-1 advances in materials physics and chemistry,-1 advances in materials science and engineering,-1 advances in mathematical physics,-1 advances in mathematical sciences and applications,1 advances in mathematics,3 advances in mathematics of communications,1 advances in mechanical engineering,1 advances in medical education and practice,1 advances in medical sciences,1 advances in medical sociology,1 advances in meteorology,1 advances in methods and practices in psychological science,1 advances in microbial physiology,1 advances in microbiology,-1 advances in military technology,-1 advances in molecular imaging,-1 advances in multimedia,-1 advances in natural and applied sciences,-1 advances in natural sciences: nanoscience and nanotechnology,1 advances in neonatal care,1 advances in neural information processing systems,3 advances in neurodevelopmental disorders,1 advances in nonlinear analysis,1 advances in nursing science,2 advances in nutrition,1 advances in nutritional research,1 advances in oceanography and limnology,1 advances in online education,-1 advances in operator theory,1 advances in optics and photonics,3 advances in organic synthesis,-1 advances in organometallic chemistry,1 advances in orthopedics,-1 advances in oto-rhino-laryngology,1 advances in parasitology,2 advances in pediatric research,-1 advances in pediatrics,1 advances in pharmacology,1 advances in physical education,-1 advances in physical organic chemistry series,1 advances in physics,3 advances in physics: x,1 advances in physiology education,1 advances in polar science,1 advances in polymer science,1 advances in polymer technology,1 advances in printing and media technology,-1 advances in printing science and technology,1 advances in protein chemistry and structural biology,1 advances in psychology study,-1 advances in psychosomatic medicine,1 advances in pure and applied mathematics,1 advances in quantum chemistry,1 advances in radiation oncology,1 advances in recycling & waste management,-1 advances in redox research,1 advances in rehabilitation,-1 advances in rehabilitation science and practice,-1 advances in remote sensing,-1 advances in robotics & mechanical engineering,-1 advances in science and research,1 advances in science and technology,-1 "advances in science, technology & innovation",1 "advances in science, technology and engineering systems journal",-1 advances in sciences and technology,-1 advances in services marketing and management,1 advances in simulation,1 advances in skin and wound care,1 "advances in social science, education and humanities research",-1 advances in social sciences and management,-1 advances in social sciences research journal,-1 advances in social work,1 advances in solid state physics,1 advances in southeast asian studies,1 advances in space research,1 "advances in statistical climatology, meteorology and oceanography",1 advances in stem cells,-1 advances in structural engineering,1 advances in surgery,1 advances in sustainability and environmental justice,-1 advances in technology innovation,-1 advances in the economic analysis of participatory and labor-managed firms,1 advances in the economics of environmental resources,1 advances in the study of behavior,1 advances in theoretical and applied mathematics,1 advances in theoretical and mathematical physics,1 advances in therapy,1 advances in vibration engineering,-1 advances in virology,-1 advances in virus research,1 advances in water resources,2 advances in wireless and optical communications,-1 advances in wound care,1 advances.in/psychology,-1 advancing women in leadership,1 adventure s. a.,-1 advertising and society review,1 advokaatti,-1 aea papers and proceedings,1 aedam musicae,-1 aegaeum,1 aegean archaeology,1 aegyptus,1 aei insights : an international journal of asia-europe relations,1 ael,-1 aeolian research,1 aequationes mathematicae,1 aera open,1 aerobiologia,1 aeronautical journal,1 aerosol and air quality research,1 aerosol research,1 aerosol science and engineering,1 aerosol science and technology,1 aerosolitutkimusseura ry.,-1 aerospace,-1 aerospace america,1 aerospace medicine and human performance,1 aerospace science and technology,1 aes international conference on semantic audio,1 aesculapius,-1 aesthetic investigations,1 aesthetic pathways,1 aesthetic plastic surgery,1 aesthetic surgery journal,1 aesthetica editore,-1 aesthetica universalis,-1 aeternitas,-1 aethiopica,1 aeu international journal of electronics and communication,1 aevum antiquum,1 "aevum: rassegna di scienze storiche, linguistiche e filologiche",1 afer : african ecclesiastical review,1 affarinternazionali,-1 affective science,1 affilia-journal of women and social work,1 afinidad,-1 afinla-teema,1 afinla:n vuosikirja,1 aforismos,-1 africa,3 africa academy of management,-1 africa development-afrique et developpement,1 africa education review,-1 africa institute of south africa,1 africa journal of management,1 africa media review,1 africa research journal,1 africa review,1 africa theological journal,1 africa today,1 africa world press,1 african affairs,3 african american review,1 african and asian studies,1 african and black diaspora,1 african anthropologist,1 african archaeological review,2 african arts,2 african christian studies,1 african crop science journal: a journal of tropical crop science and production,1 african development review-revue africaine de developpement,1 african diaspora journal of mathematics,1 african dynamics,1 african economic history,1 african entomology,1 african finance journal,1 african geographical review,1 african health sciences,1 african historical review,1 african human rights law journal,1 african human rights yearbook,1 african identities,1 african invertebrates,1 "african journal for physical, health education, recreation and dance",-1 african journal of agricultural research,-1 african journal of aids research,1 african journal of aquatic science,1 african journal of business management,-1 african journal of democracy and election research,-1 african journal of ecology,1 african journal of educational studies in mathematics and sciences,-1 african journal of emergency medicine,1 african journal of environmental assessment and management,1 african journal of environmental science and technology,-1 "african journal of food, agriculture, nutrition and development",1 african journal of gender and religion,1 african journal of herpetology,1 "african journal of hospitality, tourism and leisure",-1 african journal of information systems,1 african journal of international and comparative law,1 african journal of legal studies,1 african journal of library archives and information science,1 african journal of marine science,1 african journal of microbiology research,-1 "african journal of mining, entrepreneurship and natural resource management",-1 african journal of neurological sciences,1 african journal of paediatric surgery,-1 african journal of pharmacy and pharmacology,-1 african journal of primary health care & family medicine,1 african journal of privacy & data protection,1 african journal of psychiatry,-1 african journal of range & forage science,1 african journal of reproductive health,1 african journal of rural development,-1 "african journal of science, technology, innovation and development",1 african journal of social work,1 african journal of traditional complementary and alternative medicines,-1 african journal on conflict resolution,1 african journalism studies,1 african literature today,1 african minds,-1 african music: journal of the african music society,1 african natural history,1 african philosophy,1 african population studies,1 african primates,-1 african review,-1 african review of economics and finance,1 african security review,1 african social studies series,1 african sociological review,1 african sources for african history,1 african studies,1 african studies quarterly,1 african studies review,1 african sun media,1 african technology development forum journal,-1 african yearbook of international law,1 african zoology,1 african-europe group for interdisciplinary studies,1 africana linguistica,1 afriche e orienti,-1 afrika focus,-1 afrika mathematica,1 afrika spectrum,1 afrika statistika.,-1 "afrika und uebersee: sprachen, kulturen",1 afrique contemporaine,1 afterall,1 afterimage: the journal of media arts and cultural criticism,1 aftonbladet,-1 ag - about gender,-1 agalma,1 agatheos,1 agbioforum,1 age and ageing,3 "age, culture, humanities",1 ageing and society,2 ageing international,1 ageing research reviews,1 agenda,1 agenda publishing,1 agenda: empowering women for gender equity,1 agenzia x,-1 ager: revista de estudios sobre despoblacion y desarrollo rural,1 agerings bokförlag,-1 aggregate,1 aggression and violent behavior,2 aggressive behavior,2 agh university of science and technology,-1 agile : giscience series,-1 agile alliance annual conference,-1 agile publishing,-1 aging,1 aging and disease,1 aging and mental health,1 aging brain,1 aging cell,2 aging clinical and experimental research,1 aging health,1 aging male,1 aging medicine,1 aging neuropsychology and cognition,1 agio publishing house,-1 agora,-1 agora,1 agora: estudos classicos em debate,1 agora: papeles de filosofia,1 agrarforschung schweiz,1 agrarian south : the journal of political economy,1 agrarinformatika folyoirat,-1 agrarni nauki,-1 agrekon,1 agribusiness,1 agricolan julkaisusarja,-1 agricolan kirja-arvostelut,-1 agriculturae conspectus scientificus,-1 agricultural and biological sciences journal,-1 agricultural and food economics,1 agricultural and food science,1 agricultural and forest entomology,1 agricultural and forest meteorology,3 agricultural and resource economics review,1 agricultural economics,1 agricultural economics research review,-1 agricultural economics review,1 agricultural economics society annual conference,-1 agricultural finance review,1 agricultural history,2 agricultural history review,3 agricultural research,1 agricultural systems,2 agricultural water management,1 agriculture,-1 agriculture and food security,1 agriculture and human values,2 agriculture and natural resources,-1 agriculture ecosystems and environment,3 "agriculture, forestry and fisheries",-1 agriengineering,-1 agro food industry hi-tech,1 agrochimica,1 agrociencia,1 agroecology and sustainable food systems,1 agrofor,1 agroforestry systems,1 agrolife scientific journal,-1 agronomy,1 agronomy for sustainable development,2 agronomy journal,1 agronomy monograph,1 agronomy research,1 agropedology,1 "agrosystems, geosciences & environment",-1 agu advances,1 ahead,1 ahfe international,-1 ahfe international,1 ai,1 ai and ethics,1 ai and society,1 ai communications,1 ai edam-artificial intelligence for engineering design analysis and manufacturing,1 ai magazine,1 ai open,1 ai perspectives & advances,-1 aiaa journal,1 aib insights,-1 aibr-revista de antropologia iberoamericana,1 aiche journal,1 aidic conference series,1 aids,1 aids and behavior,1 aids care: psychological and socio-medical aspects of aids/hiv,1 aids education and prevention,1 aids patient care and stds,2 aids research and human retroviruses,1 aids research and therapy,1 aids reviews,1 aigis : elektronisk tidskrift for klassiske studier i norden,1 aikamedia,-1 aikuiskasvatuksen vuosikirja,1 aikuiskasvatus,1 aila applied linguistics series,1 aila review,1 aims agriculture and food,1 aims allergy and immunology,-1 aims biophysics,1 aims cell and tissue engineering,-1 aims electronics and electrical engineering,1 aims energy,1 aims environmental science,1 aims genetics,1 aims geosciences,1 aims materials science,1 aims mathematics,1 aims microbiology,1 aims molecular science,1 aims public health,1 ain shams engineering journal,-1 ainedidaktiikka,1 ainedidaktisia tutkimuksia,1 ainu senjumin kenkyu,1 aip advances,1 aip conference proceedings,1 air & space law,1 air medical journal,1 air power history,1 air quality atmosphere and health,1 air traffic control quarterly,-1 "air, soil and water research",1 aircc publishing corporation,-1 aircraft engineering and aerospace technology,1 airea,1 airline business,1 ais transactions on human-computer interaction,1 ais transactions on replication research,1 aisb publication,-1 aistech,-1 aisthesis,1 aisthesis verlag,1 aisti associação ibérica de sistemas e tecnologias de informação,-1 aito maaseutu keski-suomessa,-1 aitoja makuja,-1 aiucd : associazione per l'informatica umanistica e la cultura digitale,-1 aivc conference proceedings,-1 aivoitus,-1 aivoterveys,-1 ajalooline ajakiri: the estonian historical journal,1 ajan kohina,-1 ajankohta,1 ajatus,2 ajil unbound,1 ajs perspectives,-1 ajs review,1 akaan seutu,-1 akadeemia,-1 "akademia ekonomiczna im. karola adamieckiego, wydawnictwo uczelniane",-1 "akademia muzyczna im. karola lipi?skiego, rada biblioteczno-wydawnicza",-1 akademia sztuk pięknych w katowicach,-1 "akademicheskij nauchno-izdatel`skij, proizvodstvenno-poligraficheskij i knigorasprostranitel`skij centr ran izdatel`stvo nauka",-1 akademicheskij proekt,-1 "akademie der wissenschaften und der literatur, mainz",1 akademie der wissenschaften zu göttingen,1 akademie verlag,1 akademie věd české republiky,-1 akademie věd české republiky : ústav teoretické a aplikované mechaniky,-1 akademija nauk tatarstan,1 akademik acil t?p dergisi,-1 akademik gastroenteroloji,-1 akademik gıda dergisi,-1 akademika forlag,1 akademine leidyba,-1 akademische verlagsgemeinschaft münchen,1 akademisk forlag,1 akademisk kvarter,1 akademisk publisering,1 akademisyen,-1 akademos,-1 akademska misao,-1 akadémiai kiadó,1 akashi shoten,1 akava,-1 akce international journal of graphs and combinatorics,1 akdeniz university,-1 akhlāq dar ̒ulūm va fannāvarī,-1 akilles forlag,1 akkadica,2 akpé,-1 akropolis,-1 akroterion : journal for the classics in south africa,1 aksenov petr grigorevich,-1 akt,-1 akti,-1 aktuel naturvidenskab,-1 aktuel nordisk odontologi,-1 aktuelle neurologie,1 aktuelle rheumatologie,1 aktuelle urologie,1 aktuellt om historia,-1 aku ankka,-1 aku ankka juniori,-1 aku ankka2,-1 akustiikkapäivä,-1 akys-tiedote,-1 akzente-zeitschrift fur literatur,1 al dar research journal for sustainability,1 al'tiora forte,-1 al-andalus magreb : estudios arabes e islamicos,1 al-farabi kazakh national university,-1 al-iḍaḥ,-1 "al-madar journal of communications, information technologies and applications",-1 al-magallah al-ilmiyyah li-gamiyyat imsia al-tarbiyai ani ttariq al-fan,-1 al-magallat al-tarihiyyat al-majribiyyat,1 al-masaq: islam and the medieval mediterranean,1 al-mağallaẗ,-1 al-mukhatabat,1 al-qantara,1 al-shajarah,-1 al-ʻuṣūr al-wusṭá,1 al-ḥaṣād,-1 al-ḥaṣad al tarbaw-̦i - kuliyaẗ al-muaʼalimin,-1 alameda,-1 alasbimn journal,1 alaska history,-1 albanian journal of mathematics,1 albany law journal of science & technology,-1 albatrossi,-1 albert bonniers förlag,-1 albertiana,1 albertus magnus,-1 albéitar,-1 albéitar,-1 alces: a journal devoted to the biology and management of moose,1 alcheringa,1 alcohol,1 alcohol and alcoholism,1 "alcohol, clinical & experimental research",2 aldrichimica acta,1 alea : latin american journal of probability and mathematical statistics,1 alea: estudos neolatinos,1 aled,1 aleksanteri -sarja,1 aleksanteri cold war series,1 aleksanteri papers,-1 aleph : historical studies in science and judaism,1 alergologia polska,-1 aletejja,1 alexandria engineering journal,1 alexandria journal of medicine,1 alfa print,-1 alfred kröner,1 alfred university press,-1 algae,1 algal research,1 algebra and logic,1 algebra and number theory,2 algebra colloquium,1 algebra i analiz,-1 algebra universalis,1 algebraic and geometric topology,1 algebraic combinatorics,1 algebraic geometry,1 algebraic statistics,1 algebras and representation theory,1 algemeen nederlands tijdschrift voor wijsbegeerte,1 algemeen rijksarchief,-1 algorithmic finance,1 algorithmica,2 algorithms,1 algorithms for intelligent systems,-1 algorithms for molecular biology,1 alif: journal of comparative poetics,1 alimenta,-1 alimentary pharmacology and therapeutics,3 alinea editrice,-1 aljamia,1 alkalmazott nyelvtudomany,1 all earth,1 all european academies,-1 all'insegna del giglio,-1 allegoria: per uno studio materialistico della letteratura,1 allegra lab,-1 allelopathy journal,1 allen & unwin,1 aller media oy,-1 "allergia, iho & astma",-1 allergiatutkimussäätiö,-1 allergo journal international,1 allergo-journal,1 allergologia et immunopathologia,1 allergologie,1 allergology international,2 allergy,3 allergy and asthma proceedings,1 allergy and clinical immunology news,1 allergy and rhinology,-1 allergy asthma & immunology research,1 "allergy, asthma, and clinical immunology",1 allergy: european journal of allergy and clinical immunology: supplement,1 allgemeine forst und jagdzeitung,1 allgemeine vermessungs-nachrichten,1 allgemeine zeitschrift fur philosophie,1 alliance for childhood european network foundation,-1 allied publishers group,1 allpanchis,1 alma insights,1 alma mater,-1 alman dili ve edebiyatı dergisi,-1 almanac : discources of ethics,1 almatourism,-1 almenna bókafélagið,1 almqvist & wiksell,1 alpha psychiatry,1 alpha science international,1 "alpha: revista de artes, letras y filosofia",1 alphaville,1 alpine and mediterranean quaternary,1 alpine botany,1 alsic: apprentissage des langues et systemes dinformation et de communication,1 alt-thuringen,1 alta metallurgical services,-1 altai hakpo,-1 altajskij gosudarstvenny`j universitet,-1 altalanos nyelveszeti tanulmanyok,1 altamira press,2 alter,1 alternation: interdisciplinary journal for the study of the arts and humanities in southern africa,-1 alternative and complementary therapies,1 alternative and integrative medicine,-1 alternative francophone,1 alternative medicine review,1 alternative spirituality and religion review,1 alternative therapies in health and medicine,1 alternative: an international journal of indigenous scholarship,2 alternatives,1 alternatives theatrales,1 alternautas,-1 altertum,1 altex alternatives to animal experimentation,1 altinget,-1 alto comissariado para a imigração e diálogo intercultural,1 altorientalische forschungen,1 altre modernità,1 altreitalie,1 alue ja ympäristö,1 alue- ja ympäristötutkimuksen seura ry,-1 aluehallintovirastojen julkaisuja,-1 aluminium,1 alumni (suomenkielinen painos),-1 alumni (svensk utg.),-1 alusta!,-1 alvar aalto -säätiö,-1 alvheim & eide,1 alzheimer disease and associated disorders,1 alzheimer's & dementia,3 "alzheimer's & dementia : diagnosis, assessment & disease monitoring",1 alzheimer's & dementia : translational research & clinical interventions,1 alzheimer's research and therapy,2 alʹmanah severoevropejskih i baltijskih issledovanij,1 ama educators' proceedings,-1 ama service gmbh,-1 ama winter educators' conference,-1 ama-agricultural mechanization in asia africa and latin america,-1 amanita,-1 amazônica,1 amb express,1 ambiances,1 ambiencia,-1 "ambient ... the ... international conference on ambient computing, applications, services and technologies",-1 ambiente construído,-1 ambio,2 ambix,1 ambroobook,-1 ameghiniana,1 amerasia journal,1 america,1 america indigena,1 america latina hoy,1 american accounting association auditing section midyear meeting,-1 american annals of the deaf,1 american anthropologist,3 american antiquity,3 american archivist,1 american art,1 american association for the advancement of science,1 american association of petroleum geologists,1 american association of physics teachers,1 american astronautical society,-1 american bankruptcy law journal,1 american bee journal,-1 american behavioral scientist,1 american biology teacher,1 american book publishing record,1 american book review,1 american business law journal,2 american catholic philosophical quarterly,1 american center for life cycle assessment,-1 american center for oriental research,1 american center of oriental research,-1 american center of oriental research publications,1 american ceramic society,1 american ceramic society bulletin,1 american chemical society,2 american communication journal,1 american communist history,1 american concrete institute,1 american criminal law review,1 american economic journal : applied economics,3 american economic journal: economic policy,3 american economic journal: macroeconomics,3 american economic journal: microeconomics,3 american economic review,3 american educational research association,-1 american educational research journal,3 american entomologist,-1 american ethnologist,3 american family physician,1 american fern journal,1 american fisheries society,-1 american foreign policy interests,1 american geophysical union,1 american heart journal,2 american heart journal plus : cardiology research and practice,1 american heritage,1 american historical association,1 american historical review,3 american history,1 american imago,1 american indian culture and research journal,1 american indian quarterly,1 american institute of aeronautics and astronautics,1 american institute of biological sciences,1 american institute of chemical engineers,1 american institute of mathematical sciences,2 american institute of physics,1 american international journal of social science,-1 american jewish history,1 american journal of agricultural economics,3 american journal of alzheimers disease and other dementias,1 american journal of analytical chemistry,-1 american journal of applied sciences,1 american journal of archaeology,3 american journal of audiology,1 american journal of bioethics,2 american journal of biological and environmental statistics,-1 american journal of biological anthropology,1 american journal of botany,1 american journal of cancer research,-1 american journal of cardiology,1 american journal of cardiovascular disease,1 american journal of cardiovascular drugs,1 american journal of civil engineering,-1 american journal of climate change,-1 american journal of clinical and experimental immunology,-1 american journal of clinical and medical research,-1 american journal of clinical dermatology,1 american journal of clinical hypnosis,-1 american journal of clinical nutrition,3 american journal of clinical oncology-cancer clinical trials,1 american journal of clinical pathology,1 american journal of community psychology,1 american journal of comparative law,3 american journal of computational and applied mathematics,-1 american journal of creative education,-1 american journal of criminal justice,1 american journal of critical care,1 american journal of cultural sociology,1 american journal of dance therapy,1 american journal of dentistry,1 american journal of dermatopathology,1 american journal of distance education,1 american journal of drug and alcohol abuse,1 american journal of economics and sociology,1 american journal of education,1 american journal of education and learning,-1 american journal of educational research,-1 american journal of emergency medicine,1 american journal of engineering research,-1 american journal of enology and viticulture,1 american journal of entrepreneurship,-1 american journal of environmental engineering and science,-1 american journal of environmental protection,-1 american journal of environmental sciences,-1 american journal of epidemiology,2 american journal of epidemiology and infectious disease,-1 american journal of evaluation,2 american journal of family therapy,1 american journal of forensic medicine and pathology,1 american journal of gastroenterology,2 american journal of geriatric pharmacotherapy,1 american journal of geriatric psychiatry,1 american journal of health behavior,1 american journal of health economics,2 american journal of health promotion,1 american journal of health studies,1 american journal of health-system pharmacy,1 american journal of hematology,2 american journal of hospice and palliative care,1 american journal of human biology,1 american journal of human ecology,-1 american journal of human genetics,3 american journal of hypertension,1 american journal of industrial and business management,-1 american journal of industrial engineering,-1 american journal of industrial medicine,1 american journal of infection control,1 american journal of international law,3 american journal of jurisprudence,1 american journal of kidney diseases,2 american journal of law and medicine,1 american journal of legal history,1 american journal of managed care,1 american journal of management,1 american journal of mathematical and management sciences,1 american journal of mathematics,3 american journal of media psychology,1 american journal of medical genetics. part a,1 american journal of medical genetics. part b : neuropsychiatric genetics,1 american journal of medical genetics. part c : seminars in medical genetics,1 american journal of medical quality,1 american journal of medicine,2 american journal of mens health,1 american journal of molecular biology,-1 american journal of nephrology,1 american journal of networks and communications,-1 american journal of neurodegenerative disease,-1 american journal of neuroradiology,1 american journal of nuclear medicine and molecular imaging,1 american journal of numismatics,1 american journal of nursing,1 american journal of nursing science,-1 american journal of nursing studies,-1 "american journal of obstetrics & gynecology, maternal-fetal medicine",1 american journal of obstetrics and gynecology,3 american journal of occupational therapy,1 american journal of ophthalmology,2 american journal of ophthalmology : case reports,1 american journal of orthodontics and dentofacial orthopedics,1 american journal of orthopsychiatry,1 american journal of otolaryngology,1 american journal of pathology,2 american journal of perinatology,1 american journal of perinatology reports,1 american journal of pharmaceutical education,1 american journal of philology,3 american journal of physical medicine and rehabilitation,1 american journal of physics,1 american journal of physiology : cell physiology,2 american journal of physiology : endocrinology and metabolism,2 american journal of physiology : gastrointestinal and liver physiology,2 american journal of physiology : heart and circulatory physiology,2 american journal of physiology : lung cellular and molecular physiology,2 american journal of physiology : regulatory integrative and comparative physiology,2 american journal of physiology-renal physiology,1 american journal of plant sciences,-1 american journal of play,1 american journal of political science,3 american journal of potato research,1 american journal of preventive cardiology,1 american journal of preventive medicine,2 american journal of primatology,1 american journal of psychiatric rehabilitation,1 american journal of psychiatry,3 american journal of psychoanalysis,1 american journal of psychology,1 american journal of psychotherapy,1 american journal of public health,2 american journal of recreation therapy,1 american journal of reproductive immunology,1 american journal of respiratory and critical care medicine,3 american journal of respiratory cell and molecular biology,1 american journal of rhinology and allergy,1 american journal of roentgenology,1 american journal of science,1 american journal of semiotics,1 american journal of sociology,3 american journal of speech-language pathology,2 american journal of sports medicine,3 american journal of surgery,1 american journal of surgical pathology,2 american journal of the medical sciences,1 american journal of theology and philosophy,1 american journal of therapeutics,1 american journal of tourism management,-1 american journal of tourism research,-1 american journal of translational research,1 american journal of transplantation,3 american journal of tropical medicine and hygiene,1 american journal of veterinary research,2 american journal of water science and engineering,-1 american journal on addictions,1 american journal on intellectual and developmental disabilities,2 american laboratory,-1 american law and economics review,1 american literary history,3 american literary realism,1 american literary scholarship,1 american literature,3 american malacological bulletin,1 american marketing association,-1 american mathematical monthly,1 american mathematical society,2 american meteorological society,1 american midland naturalist,1 american mineralogist,1 american museum novitates,1 american music,2 american naturalist,3 american nineteenth century history,1 american nuclear society,2 american oriental society,-1 "american periodicals: a journal of history, criticism and bibliography",1 american pharmaceutical review,1 american philosophical quarterly,2 american physical society,1 american phytopathological society,1 american poetry review,1 american political science association,-1 american political science review,3 american political thought,-1 american politics research,1 american psychiatric publishing,1 american psychological association,1 american psychologist,3 american quarterly,2 american review of canadian studies,1 american review of international arbitration,1 american review of public administration,2 american rock mechanics association,1 american scholar,1 american school of classical studies at athens,1 american school of prehistoric research monograph series,1 american science press,1 american scientific publishers,1 american shipper,-1 american society for nondestructive testing,1 american society for testing and materials,1 american society of agricultural & biological engineers,1 american society of agronomy,1 american society of civil engineers,1 american society of mechanical engineers,1 american sociological review,3 american speech,2 american statistician,1 american studies in scandinavia,1 american studies journal,-1 american surgeon,1 american translators association scholarly monograph series,1 american university in cairo press,1 american university international law review,1 americana,1 americana ebooks,-1 americana: e-journal of american studies in hungary,1 americas,1 americas conference on information systems,1 amerikastudien,1 amerindia,1 amfiteater,1 amfiteatru economic,-1 ami press,-1 amia ... annual symposium proceedings,-1 amino acids,1 amity foundation,-1 amity journal of management,1 amk- ja ammatillisen koulutuksen tutkimuspäivät,-1 amk-lehti,-1 ammattikasvatuksen aikakauskirja,1 ammattikeittiöosaaja,-1 ammattiosaamisen kehittämisyhdistys amke ry,-1 ammattirakentaja,-1 amme idaresi dergisi,1 amos andersonin taidemuseo,-1 ampersand,1 amphibia-reptilia,1 amphibian & reptile conservation,1 amps,1 amps proceedings series,1 ampyx-verlag,-1 ams press,1 ams review,1 ams-rapport,1 ams-skrifter,1 ams-varia,1 amsterdam studies in jewish philosophy,1 amsterdam university press,2 amsterdamer beitrage zur alteren germanistik,1 amsterdamer beitrage zur neueren germanistik,1 amsterdamer publikationen zur sprache und literatur,1 amta proceedings,1 amyloid-journal of protein folding disorders,1 amyotrophic lateral sclerosis & frontotemporal degeneration,1 anabasis,1 anae. approche neuropsychologique des apprentissages chez l'enfant,-1 anaerobe,1 anaesthesia,2 anaesthesia and intensive care,1 anaesthesiology : intensive therapy,1 anais brasileiros de dermatologia,1 anais da academia brasileira de ciências,1 anais da association for moral education conference,-1 anais de historia de alem-mar,1 anais do ... congresso nacional de educação,-1 anais do colóquio de moda,1 anais do encontro nacional de pesquisa em moda,-1 anais do simpósio brasileiro de informática na educação,-1 anais do simpósio brasileiro de redes de computadores e sistemas distribuídos,1 "anais do simpósio internacional de educação a distância, encontro de pesquisadores em educação a distância",-1 anais do women in information technology,-1 analecta augustiniana,1 analecta bollandiana,1 analecta cartusiana : review for carthusian history and spirituality,1 analecta cisterciensia,1 analecta hibernica,1 analecta husserliana: the yearbook of phenomenological research,1 analecta papyrologica,1 analecta praehistorica leidensia,1 analecta praemonstratensia,1 analecta romana instituti danici,1 "analele stiintifice ale universitatii ""al.i. cuza"" din iasi : lingvistica",-1 analele stiintifice ale universitatii al i cuza din iasi-serie noua-matematica,1 analele stiintifice ale universitatii ovidius constanta-seria matematica,1 analele universitatii bucuresti : matematica-informatica,-1 "analele universitatii din craiova, seria stiinte filologice, lingvistica",1 analele universitatii din oradea : stiinte economice,-1 "analele universităţii din craiova : seria ştiinţe filologice, langues et littératures romanes",1 "analele universităţii. seria ştiinţele limbii, literatură şi didactica predării, limbi şi literaturi străine",-1 anales,-1 anales cervantinos,1 anales de antropologia,1 anales de filologia clasica,1 anales de la literatura espanola contemporanea,2 anales de literatura chilena,1 anales de literatura hispanoamericana,3 anales de pediatria,1 anales de psicologia,-1 anales de veterinaria de murcia,-1 anales del instituto de actuarios españoles,-1 anales del instituto de investigaciones esteticas,1 anales del instituto de lingüística,-1 anales del jardin botanico de madrid,1 anales del seminario de historia de la filosofia,1 anales del sistema sanitario de navarra,1 anales galdosianos,1 anali,1 anali hrvatskog politološkog društva,1 anali zavoda za povijesne znanosti hrvatske akademije znanosti i umjetnosti u dubrovniku,-1 analisi: quaderns de comunicacio i cultura,1 analitica,-1 analiz riska zdorovʹû,-1 analize,1 analog and mixed signal integrated circuits for space applications conference,-1 analog game studies,-1 analog integrated circuits and signal processing,1 analog magazine,-1 analogia,1 analyse opinion critique,-1 analyse und kritik: zeitschrift fuer sozialtheorie,1 analyses of social issues and public policy,1 analysis,3 analysis & sensing,1 analysis and applications,1 analysis and geometry in metric spaces,1 analysis and mathematical physics,1 analysis and pde,3 analysis in theory and applications,1 analysis mathematica,1 analysis: international mathematical journal of analysis and its applications,1 analyst,1 analytic methods in accident research,1 analytic philosophy,2 analytic press,1 analytic teaching and philosophical praxis,1 analytica,-1 analytica chimica acta,2 analytica chimica acta x,1 analytical and bioanalytical chemistry,1 analytical and bioanalytical chemistry research,-1 analytical biochemistry,1 analytical cellular pathology,1 analytical chemistry,3 analytical chemistry research,1 analytical letters,1 analytical methods,1 analytical science advances,1 analytical sciences,1 analytrics,-1 analyytikko,-1 anaphora,-1 anaquel de estudios arabes,1 anarchist developments in cultural studies,1 anarchist studies,1 anarâš,-1 anasthesiologie intensivmedizin notfallmedizin schmerztherapie,1 anasthesiologie und intensivmedizin,1 anatolia : an international journal of tourism and hospitality,1 anatolia antiqua,1 anatolia turizm ve cevre kulturu dergisi,1 anatolian studies,2 anatolica,1 anatomia histologia embryologia,1 anatomical record-advances in integrative anatomy and evolutionary biology,1 anatomical science international,1 anatomical sciences education,1 anatomy & cell biology,1 anazitiseis sti fysiki kai ton athlitismo,-1 análisis,1 ancient america,-1 ancient asia,1 ancient civilizations from scythia to siberia,2 ancient egypt,1 ancient history bulletin,1 ancient history magazine,-1 ancient israel and its literature,1 ancient judaism and early christianity,3 "ancient mediterranean and medieval texts and contexts: studies in platonism, neoplatonism, and the platonic tradition",1 ancient mesoamerica,1 ancient narrative,1 ancient near eastern monographs,1 ancient near eastern studies,1 ancient philosophy,2 ancient society,1 ancient warfare,-1 ancient west and east,1 andamios,1 andante,-1 andean geology,1 anderseniana,1 andragoška spoznanja,-1 andragoški glasnik,-1 andrias,1 andrologia,1 andrology,-1 andrology,1 andromeda books,-1 ane books pvt. ltd.,-1 anesthesia and analgesia,2 anesthesia progress,1 anesthesiology,2 anesthesiology and pain medicine,-1 anesthesiology clinics,1 angelaki-journal of the theoretical humanities,1 angelo pontecorboli editore,-1 angewandte chemie,3 angiogenesis,2 angiologiia i sosudistaia khirurgiia,-1 angiology,1 angle orthodontist,1 anglia,2 anglica,1 anglica wratislaviensia,1 anglican and episcopal history,1 anglican theological review,1 anglistica aion : an interdisciplinary journal,1 anglistik,1 anglo saxonica,-1 anglo-norman studies,1 anglo-saxon england,1 anglo-saxon studies in archaeology and history,1 anglophonia (en ligne),1 animal,2 animal : open space,-1 animal : science proceedings,-1 animal behavior and cognition,1 animal behaviour,2 animal biodiversity and conservation,1 animal biology,1 animal bioscience,1 animal biotechnology,1 animal biotelemetry,1 animal cells and systems,1 animal cognition,1 animal conservation,1 animal feed science and technology,2 animal frontiers,1 animal genetic resources,1 animal genetics,2 animal health research reviews,1 animal history,-1 "animal husbandry, dairy and veterinary science",-1 animal law,-1 animal microbiome,1 animal migration,1 animal nutrition,1 animal nutrition and feed technology,1 animal production science,1 animal reproduction,1 animal reproduction science,1 animal science journal,1 animal science papers and reports,1 animal sentience,1 animal studies journal,1 animal welfare,1 animalia,-1 animals,1 animation journal,1 animation-an interdisciplinary journal,2 animus: the canadian journal of philosophy and humanities,1 aninkainen,-1 anja mäntylän rahasto,-1 ankara üniversitesi ilef dergisi,-1 ankara üniversitesi veteriner fakültesi dergisi,1 ankem dergisi,-1 annablume,-1 annalen der physik,1 "annalen des naturhistorischen museums in wien : serie a für mineralogie und petrographie, geologie und paläontologie, anthropologie und prähistorie",1 annales academiae scientiarum fennicae,-1 annales archeologiques arabes syriennes,1 annales botanici fennici,1 annales d endocrinologie,1 annales de bourgogne,1 annales de bretagne et des pays de l'ouest,1 annales de cardiologie et d angeiologie,1 annales de chimie-science des materiaux,1 annales de chirurgie plastique esthetique,1 annales de demographie historique,1 annales de dermatologie et de venereologie,1 annales de geographie,1 annales de l institut fourier,2 "annales de l'economie publique, sociale et cooperative",1 annales de la faculté des sciences de toulouse,1 annales de la fondation louis de broglie,1 annales de la societe entomologique de france,1 annales de la societe royale d archeologie de bruxelles,1 annales de li.s.u.p.,1 annales de l’institut henri poincare-probabilites et statistiques,2 annales de l’institut henri poincaré : analyse non linéaire,3 "annales de l’institut henri poincaré d : combinatorics, physics and their interaction",1 annales de medecine veterinaire,1 annales de paleontologie,1 annales de pathologie,1 annales des sciences mathematiques du quebec,1 annales du midi,1 annales du patrimoine,1 annales du service des antiquites de l egypte,1 annales fennici mathematici,2 annales geophysicae,1 annales henri lebesgue,1 annales henri poincaré : a journal of theoretical and mathematical physics,2 annales historiques de la revolution francaise,1 annales jean-jacques rousseau,1 annales littéraires de luniversité de besançon: série linguistique et sémiotique,-1 annales mathematicae et informaticae,1 annales mathematiques blaise pascal,1 annales mathématiques du québec,1 annales medico-psychologiques,1 annales mercaturae,1 annales philosophici,-1 annales polonici mathematici,1 annales scientia politica,-1 annales scientifiques de l ecole normale superieure,3 annales societatis geologorum poloniae,1 annales theologici,-1 annales universitatis apulensis : seria philologica,1 annales universitatis mariae curie-sklodowska: sectio a mathematica,1 "annales universitatis mariae curie-skłodowska : sectio k, politologia",-1 annales universitatis paedagogicae cracoviensis,-1 annales universitatis scientiarum budapestinensis de rolando eötvös nominatae : sectio mathematica,-1 annales zoologici,1 annales zoologici fennici,1 annales-anali za istrske in mediteranske studije-series historia et sociologia,1 "annales: histoire, sciences sociales",3 annali benacensi,1 annali d'italianistica,1 "annali del dipartimento di studi letterari, linguistici e comparati. sezione linguistica",1 annali del lazio meridionale,-1 annali dell istituto superiore di sanita,1 annali dell istituto universitario orientale di napoli,1 annali dell'università di ferrara. sezione 7: scienze matematiche,1 annali della fondazione verga,-1 annali della scuola normale superiore di pisa,1 annali della scuola normale superiore di pisa-classe di scienze,2 annali di archeologia e di storia antica,1 annali di ca foscari: rivista della facoltà di lingue e letterature straniere della università di venezia,1 annali di ca' foscari : serie occidentale,1 annali di igiene,1 annali di matematica pura ed applicata,1 annali di scienze religiose,1 annali di storia delle università italiane,1 annali di storia dellesegesi,1 annali italiani di chirurgia,-1 annals academy of medicine singapore,1 annals in social responsibility,1 annals of 3d printed medicine,1 annals of actuarial science,1 annals of agricultural and environmental medicine,1 annals of agricultural science,-1 annals of air and space law,1 annals of allergy asthma and immunology,1 annals of anatomy-anatomischer anzeiger,1 annals of animal science,1 annals of applied biology,1 annals of applied mathematics,-1 annals of applied probability,3 annals of applied sport science,-1 annals of applied statistics,3 annals of arid zone,1 annals of behavioral medicine,2 annals of biological research,-1 annals of biomedical engineering,2 annals of blood,-1 annals of botany,2 annals of breast surgery,1 annals of cardiac anaesthesia,1 annals of cardiothoracic surgery,-1 annals of carnegie museum,1 annals of case reports,-1 annals of clinical and laboratory science,1 annals of clinical and translational neurology,1 annals of clinical biochemistry,1 annals of clinical case reports,-1 annals of clinical microbiology and antimicrobials,1 annals of clinical psychiatry,1 annals of combinatorics,1 annals of computer science and information systems,1 annals of daaam and proceedings,1 annals of data science,1 annals of dermatological research,-1 annals of dermatology,1 annals of diagnostic pathology,1 annals of disaster risk sciences,-1 annals of dyslexia,1 annals of economics and finance,1 annals of economics and statistics,1 annals of emergency medicine,2 annals of emerging technologies in computing,-1 annals of environmental science,-1 annals of epidemiology,1 annals of epidemiology and public health,-1 annals of family medicine,1 annals of finance,1 annals of financial economics,1 annals of forest research,1 annals of forest science,1 annals of functional analysis,1 annals of gastroenterological surgery,1 annals of general psychiatry,1 annals of geophysics,1 annals of glaciology,1 annals of global analysis and geometry,1 annals of global health,1 annals of hematology,1 annals of hepatology,1 annals of human biology,1 annals of human genetics,1 annals of indian academy of neurology,1 annals of innovation and entrepreneurship,-1 annals of intensive care,1 annals of internal medicine,3 annals of internal medicine : clinical cases,-1 annals of laboratory medicine,1 annals of language and literature,-1 annals of leisure research,1 annals of long-term care,1 annals of mathematical sciences and applications,1 annals of mathematics,3 annals of mathematics and artificial intelligence,1 annals of mathematics studies,1 annals of maxillofacial surgery,-1 annals of medical and health sciences research,-1 annals of medicine,2 annals of medicine and surgery,-1 annals of microbiology,1 annals of neurology,3 annals of noninvasive electrocardiology,1 annals of nuclear energy,1 annals of nuclear medicine,1 annals of nursing and practice,-1 annals of nutrition and metabolism,1 annals of occupational hygiene,1 annals of oncology,3 annals of operations research,1 annals of ophthalmology,1 annals of otolaryngology and rhinology,1 annals of otology rhinology and laryngology,1 annals of palliative medicine,1 annals of pde,1 annals of pediatric surgery,-1 annals of pharmacotherapy,1 annals of physical and rehabilitation medicine,1 annals of physics,1 annals of plastic surgery,1 annals of probability,3 annals of pure and applied logic,2 annals of regional science,1 annals of saudi medicine,1 annals of scholarship,1 annals of science,3 annals of solid and structural mechanics,1 annals of statistics,3 annals of surgery,3 annals of surgery open,1 annals of surgical oncology,2 annals of surgical treatment and research,1 annals of telecommunications-annales des telecommunications,1 annals of the american academy of political and social science,2 annals of the american association of geographers,3 annals of the american thoracic society,2 annals of the entomological society of america,1 annals of the faculty engineering hunedoara,-1 annals of the history of computing,1 annals of the icrp,1 annals of the institute of statistical mathematics,1 annals of the international communication association,1 annals of the missouri botanical garden,1 annals of the naprstek museum,1 annals of the new york academy of sciences,1 annals of the polish association of agricultural and agribusiness economists,-1 annals of the rheumatic diseases,3 annals of the royal college of surgeons of england,1 annals of thoracic and cardiovascular surgery,1 annals of thoracic medicine,1 annals of thoracic surgery,2 annals of tourism research,3 annals of tourism research empirical insights,1 annals of translational medicine,-1 annals of transplantation,1 annals of vascular surgery,1 annals of work exposures and health,1 annals. series on science of mathematics,-1 annee balzacienne,1 annee psychologique,-1 annuaire de la haye de droit international,1 annuaire du college de france : resume des cours et travaux,1 annuaire europeen,1 annuaire francais de droit international,1 annuaire roumain danthropologie,1 annual acm sigplan-sigact symposium on principles of programming languages,2 annual acm symposium on parallelism in algorithms and architectures,2 annual asian simulation and ai in computer games international conference,-1 annual bulletin of historical literature,1 annual conference of the austrian society of agricultural economics,-1 annual conference of the international foundation of fashion technology institutes,-1 annual conference of the international group for lean construction,-1 annual conference of the special interest group on data communication,3 annual conference on innovation & technology in computer science education,1 annual conference on theory and applications of models of computation,-1 annual conference proceedings (association for business communication),-1 "annual ieee communications society conference on sensor, mesh and ad hoc communications and networks workshops",1 annual ieee semiconductor thermal measurement and management symposium,1 annual international conference of the british computer society`s specialist group on artificial intelligence,1 annual international conference of the ieee engineering in medicine and biology society,1 annual international conference on computer games multimedia & allied technology,-1 annual international conference on the theory and applications of cryptographic techniques,3 annual journal of electronics,-1 annual mediterranean ad hoc networking workshop,-1 annual meeting of the american association for cancer research,-1 annual meeting of the american educational research association,-1 annual meeting of the american institute of chemical engineers,1 annual meeting of the association for computational linguistics,3 annual meeting of the decision sciences institute proceedings,1 annual meeting of the european society for blood and marrow transplantation,-1 annual meeting of the international continence society,-1 annual meeting setac,-1 annual neurofibromatosis conference,-1 annual of the british school at athens,3 annual of the department of antiquities of jordan,1 annual privacy forum,1 annual report : conference on electrical insulation and dielectric phenomena,1 annual reports in medicinal chemistry,1 annual reports on nmr spectroscopy,1 "annual reports on the progress of chemistry. section c, physical chemistry",1 annual research & review in biology,-1 annual review of analytical chemistry,1 annual review of animal biosciences,2 annual review of anthropology,2 annual review of applied linguistics,2 annual review of astronomy and astrophysics,3 annual review of biochemistry,2 annual review of biomedical data science,-1 annual review of biomedical engineering,2 annual review of biophysics,2 annual review of cancer biology,1 annual review of cell and developmental biology,2 annual review of chemical and biomolecular engineering,1 annual review of clinical psychology,3 annual review of condensed matter physics,3 "annual review of control, robotics, and autonomous systems",1 annual review of critical psychology,1 annual review of cybertherapy and telemedicine,1 annual review of earth and planetary sciences,3 annual review of ecology evolution and systematics,3 annual review of economics,2 annual review of entomology,2 annual review of environment and resources,2 annual review of financial economics,1 annual review of fluid mechanics,3 annual review of food science and technology,2 annual review of genetics,2 annual review of genomics and human genetics,2 annual review of immunology,3 annual review of law and social science,2 annual review of linguistics,1 annual review of marine science,3 annual review of materials research,2 annual review of medicine,2 annual review of microbiology,1 annual review of neuroscience,2 annual review of nuclear and particle science,1 annual review of nutrition,3 annual review of pathology,2 annual review of pathology-mechanisms of disease,2 annual review of pathology: mechanisms of disease,2 annual review of pharmacology and toxicology,3 annual review of physical chemistry,1 annual review of physiology,3 annual review of phytopathology,2 annual review of plant biology,2 annual review of political science,3 annual review of psychology,3 annual review of public health,3 annual review of resource economics,1 annual review of sociology,3 annual review of statistics and its application,1 annual review of virology,1 annual review of vision science,1 annual reviews in control,2 annual swedish phonetics conference,-1 annual symposium on foundations of computer science,3 annual symposium on logic in computer science,2 annual transactions of the nordic rheology society,1 annual workshop on network and system support for games,1 "annual workshop on wireless of the students, by the students, and for the students",-1 annual wyrd con interactive theater convention,-1 annuario della scuola archeologica di atene e delle missioni italiane in oriente,1 annuario dellistituto storico italiano per leta moderna e contemporanea,1 annuarium historiae conciliorum: internationale zeitschrift fur konziliengeschichtsforschung,1 another gaze,-1 "anq-a quarterly journal of short articles, notes and reviews",1 antaeus,1 antarctic science,1 antennae,1 antenore,1 antepodium,1 anthem press,1 anthropocene,1 anthropocene science,-1 anthropocenes,-1 anthropochildren,1 anthropoetics: the journal of generative anthropolgy,1 anthropologica,2 anthropologica et praehistorica,1 anthropological forum,2 anthropological journal of european cultures,2 anthropological linguistics,2 anthropological notebooks,1 anthropological quarterly,2 anthropological review,1 anthropological science,1 anthropological theory,3 anthropologie et societes,1 anthropologischer anzeiger,1 anthropologist,-1 anthropology & aging,1 anthropology & materialism,1 anthropology & photography,-1 anthropology and archeology of eurasia,1 anthropology and education quarterly,2 anthropology and humanism,1 anthropology and medicine,2 anthropology in action,2 anthropology matters journal,-1 anthropology news,-1 anthropology of consciousness,1 anthropology of east europe review,1 anthropology of food: web journal dedicated to the sociology and anthropology of food,1 anthropology of this century,-1 anthropology of work review,1 anthropology southern africa,1 anthropology today,1 anthropológica del departamento de ciencias sociales,1 anthropos,1 anthropozoologica,1 anthrozoos,1 anthurium,1 anti trafficking review,1 anti-cancer agents in medicinal chemistry,1 anti-cancer drugs,1 anti-corrosion methods and materials,1 anti-infective agents,1 anti-inflammatory and anti-allergy agents in medicinal chemistry,1 antiatlas journal,1 antibiotics,-1 antibiotiki i himioterapiâ,-1 anticancer research,1 antichthon,1 antifaschistisches info-blatt,-1 antigonish review,1 antiguo oriente,-1 antiikki & design,-1 antike kunst,2 antike münzen und geschnittene steine,1 antike und abendland,1 antike welt,1 antimicrobial agents and chemotherapy,3 antimicrobial resistance & infection control,1 antimicrobial stewardship & healthcare epidemiology,1 antioch review,1 antioxidants,-1 antioxidants and redox signaling,2 antipodas: journal of hispanic and galician studies,1 antipode,3 antipodes,1 antiqua,-1 antiquaries journal,1 "antiquitas, byzantium, renascentia",-1 antiquite classique,1 antiquite tardive,2 antiquites africaines,1 antiquites nationales,1 antiquity,3 antitrust bulletin,1 antitrust law journal,1 antiviral chemistry and chemotherapy,1 antiviral research,1 antiviral therapy,1 antologia kiado,-1 antonianum,1 antonie van leeuwenhoek international journal of general and molecular microbiology,1 antriebstechnik,-1 antroblogi,-1 antropolitica,1 antropologi indonesia,1 antropologia portuguesa,1 antropologicas,1 antropologiceskij forum,2 anu centre for european studies briefing paper series,-1 anu press,1 anuac,1 anuari de filologia : estudis de lingüística,1 anuari de filologia. llengües i literatures modernes,-1 "anuari de filologia: seccio d, studia graeca et latina",1 anuario calderoniano,1 anuario de estudios americanos,1 anuario de estudios centroamericanos,1 anuario de estudios medievales,1 anuario de historia de la iglesia,1 anuario de historia del derecho espanol,1 anuario filosofico,1 anuario iberoamericano de derecho internacional penal,-1 anuario musical,1 anuarul institutul de etnografie si folclor constantin ibrailoiu,1 anxiety stress and coping,1 anyanyelv-pedagógia,-1 anz journal of surgery,1 anzeiger des germanischen nationalmuseums,1 anzeiger für die altertumswissenschaft,1 anziam journal,1 anzmac conference proceedings,-1 aob plants,1 aoisis,-1 aorn journal,1 aorta,1 aosis publishing,-1 aotearoa new zealand social work,1 apcbees procedia,-1 apeiron,2 apeiron: studies in infinite nature,1 aperture,1 aperture neuro,-1 aphasiology,2 aphex,-1 apidologie,1 apl computational physics,-1 apl electronic devices,1 apl energy,1 apl machine learning,-1 apl materials,2 apl photonics,2 apl quantum,-1 apl: organic electronics and photonics,1 apmis,1 apmis acta pathologica microbiologica et immunologica scandinavica: supplementum,1 apocalyptica,-1 apocrypha,1 apollinaris,1 apollo : the international magazine for collectors,1 apollonia,-1 apoptosis,1 aportes: revista de historia contemporanea,1 appalachian journal,1 apparatus,1 appelhans-verlag,1 appell förlag,-1 appetite,2 appita,-1 appita annual conference proceedings,1 appita journal,1 appita magazine,-1 apple academic press inc.,-1 apples: journal of applied language studies,1 applicable algebra in engineering communication and computing,1 applicable analysis,1 applicable analysis and discrete mathematics,1 application of clinical genetics,1 applications in energy and combustion science,1 applications in plant sciences,1 applications of mathematics,1 applied acoustics,2 applied ai letters,1 applied and computational harmonic analysis,2 applied and computational mathematics,-1 applied and environmental microbiology,1 applied and environmental soil science,1 applied and preventive psychology,1 applied animal behaviour science,2 applied artificial intelligence,1 applied biochemistry and biotechnology,1 applied biochemistry and microbiology,1 applied biological chemistry,1 applied bionics and biomechanics,-1 applied cardiopulmonary pathophysiology,1 applied catalysis : open,1 applied catalysis a : general,2 applied catalysis b : environmental,3 applied categorical structures,1 applied chemical engineering,-1 applied clay science,1 applied clinical informatics,1 applied clinical trials,-1 applied cognitive psychology,1 applied composite materials,1 applied computational electromagnetics society journal,1 applied computational intelligence and soft computing,-1 applied computer systems,1 applied computing and geosciences,1 applied computing and informatics,-1 applied computing and intelligence,1 applied computing review,1 applied corpus linguistics,1 applied cybersecurity & internet governance,-1 applied developmental science,1 applied ecology and environmental research,-1 applied economic perspectives and policy,1 applied economics,1 applied economics letters,1 applied economics quarterly,1 applied electronics,-1 applied energy,3 applied engineering in agriculture,1 applied entomology and zoology,1 applied environmental education and communication,1 applied ergonomics,2 applied finance letters,-1 applied financial economics,1 applied food biotechnology,-1 applied food research,1 applied general topology,1 applied geochemistry,1 applied geography,2 applied geomatics,1 applied geophysics,1 applied health economics and health policy,1 applied immunohistochemistry and molecular morphology,1 applied in vitro toxicology,1 applied informatics,-1 applied intelligence,1 applied linguistics,3 applied linguistics review,1 applied magnetic resonance,1 applied materials today,1 applied mathematical finance,1 applied mathematical modelling,1 applied mathematical sciences,-1 applied mathematics,-1 applied mathematics and computation,1 applied mathematics and information sciences,-1 applied mathematics and mechanics-english edition,1 applied mathematics and optimization,2 applied mathematics e: notes,1 applied mathematics for modern challenges,1 applied mathematics in science and engineering,1 applied mathematics letters,1 applied mathematics research express,1 applied mathematics-a journal of chinese universities series b,-1 applied measurement in education,1 applied mechanics,-1 applied mechanics and materials,1 applied mechanics reviews,1 applied microbiology and biotechnology,2 applied mobilities,1 applied nanoscience,1 applied network science,1 applied neuropsychology : adult,1 applied neuropsychology : child,1 applied numerical mathematics,1 applied nursing research,1 applied ocean research,1 applied ontology,2 applied optics,1 applied organometallic chemistry,1 applied physics a-materials science and processing,1 applied physics b-lasers and optics,1 applied physics express,1 applied physics letters,3 applied physics reviews,2 applied physiology nutrition and metabolism-physiologie appliquee nutrition et metabolisme,1 applied police briefings,-1 applied pragmatics,1 applied psycholinguistics,2 applied psychological measurement,1 applied psychology,1 applied psychology: health and well-being,1 applied psychophysiology and biofeedback,1 applied radiation and isotopes,1 applied radiology,1 applied research in quality of life,1 applied rheology,1 applied science and convergence technology,-1 applied science and engineering progress,-1 applied sciences,-1 applied semiotics,1 applied soft computing,1 applied soil ecology,1 applied spatial analysis and policy,1 applied spectroscopy,1 applied spectroscopy practica,-1 applied spectroscopy reviews,1 applied stochastic models in business and industry,1 applied surface science,2 applied surface science advances,1 applied system innovation,-1 applied theatre research,2 applied thermal engineering,3 applied vegetation science,1 applied water science,1 appliedmath,-1 approaches,1 approaches to culture theory series,-1 approaching religion,2 apress,-1 apria,1 apsipa transactions on signal and information processing,1 apstract,1 apt bulletin: the journal of preservation technology,1 aptisi transactions on technopreneurship,-1 aptor software,-1 aptum,1 apu juniori,-1 apuntes hispanicos,1 apus,-1 aq,-1 aqua,1 aquacultural engineering,1 aquaculture,2 aquaculture and fisheries,1 aquaculture economics and management,1 aquaculture environment interactions,1 aquaculture international,1 aquaculture nutrition,1 aquaculture reports,1 aquaculture research,1 "aquaculture, fish and fisheries",1 aquarius,-1 aquatic biology,1 aquatic biology research,-1 aquatic botany,1 aquatic conservation : marine and freshwater ecosystems,1 aquatic ecology,1 aquatic ecosystem health and management,1 aquatic geochemistry,1 aquatic insects,1 aquatic invasions,1 aquatic living resources,1 aquatic mammals,1 aquatic microbial ecology,1 aquatic sciences,1 aquatic toxicology,2 aquichan,1 ar/dé,-1 ara,-1 arab gulf journal of scientific research,1 arab historical review for ottoman studies,1 arab journal of gastroenterology,1 arab journal of mathematical sciences,1 arab journal of urology,-1 arab media and society,1 arab studies journal,1 arab studies quarterly,1 arab world english journal,1 arabian archaeology and epigraphy,2 arabian humanities,-1 arabian journal for science and engineering,1 arabian journal of chemistry,1 arabian journal of geosciences,-1 arabian journal of mathematics,1 arabic sciences and philosophy,1 arabica,3 arachnologische mitteilungen,-1 arachnology,1 aracne,-1 aracne editrice,1 aram basim reklam veyayincilik sanayi ticaret limite,-1 aram periodical,1 aramaic studies,1 aratake shuppan,1 arator,-1 araviesti,-1 arbeiderhistorie,1 arbeidsforskningsinstituttet,-1 arbeidsrett,1 "arbeit, bewegung, geschichte",-1 arbeiten zur kirchen- und theologiegeschichte,1 arbeits- und forschungsberichte zur sächsischen bodendenkmalpflege,1 "arbejderhistorie: tidsskrift for historie, kultur og politik",1 arbetarbladet,-1 arbetarhistoria: meddelande från arbetarrorelsens arkiv och bibliotek,-1 arbetsmarknad & arbetsliv,1 arbetsrapport,-1 arbitration international,2 arbitražnye spory,-1 arbitrer : scientific journal of linguistics society of indonesia,-1 arbitrium: zeitschrift für rezensionen zur germanistischen literaturwissenschaft,1 "arbor : ciencia, pensamiento y cultura",1 arborescences,1 arboriculture and urban forestry,1 arc humanities press,1 arca lovaniensis,-1 arcada -nylands svenska yrkeshögskola,-1 arcada working papers,-1 arcadia,2 arch plus,1 archa verbi,1 archaeofauna,1 archaeolingua,-1 archaeolingua alapítvány,-1 archaeologia aeliana,1 archaeologia cambrensis,1 archaeologia islandica,1 archaeologia lituana,1 archaeologia maritima mediterranea,1 archaeologia medii aevi finlandiae,1 archaeologia polona,1 archaeologica austriaca,2 archaeologica baltica,1 archaeologica bulgarica,1 archaeological and anthropological sciences,2 archaeological dialogues,3 archaeological prospection,2 archaeological reports,1 archaeological research in asia,1 archaeological review from cambridge,-1 archaeological textiles newsletter,1 archaeological textiles review,1 archaeologies,1 archaeology,-1 archaeology and environment,1 archaeology in oceania,1 archaeology in wales,1 archaeology ireland,1 archaeology of food and foodways.,-1 archaeology of york,1 "archaeology, ethnology and anthropology of eurasia",1 archaeometry,3 archaeonautica,1 archaeopress,1 archaiologikon deltion,-1 archeo,1 archeologia,1 archeologia classica,1 archeologia e calcolatori,1 archeologia medievale,2 archeologia mosellana,1 archeologia polski,1 archeologia postmedievale,1 archeologica veneta,1 archeological papers of the american anthropological association,1 archeologicke rozhledy,1 archeologie du midi medieval,1 archeologie en languedoc,1 archeologie medievale,1 archeology international,1 archeostorie,1 archeotex,1 archetype publications,1 archidocs,-1 archidoct,1 archimad,-1 archipel-etudes interdisciplinaires sur le monde insulindien,1 architect,-1 architectura-zeitschrift für geschichte der baukunst,1 architectura: arkitekturhistorisk årsskrift,1 architectural design,-1 architectural digest,-1 architectural engineering and design management,2 architectural histories,2 architectural history,2 architectural record,-1 architectural research in finland,1 architectural review,-1 architectural science association,-1 architectural science review,3 architectural theory review,2 architecture,-1 architecture and culture,2 architecture and urban planning,1 "architecture, city and environment",1 "architecture, structures and construction",1 architecture_media_politics_society,1 archiv der mathematik,1 archiv der pharmazie,1 archiv des völkerrechts,1 archiv des öffentlichen rechts,1 archiv fu?r tierzucht,1 archiv fuer orientforschung,1 archiv fur geflugelkunde,1 archiv fur lebensmittelhygiene,1 archiv fur molluskenkunde,1 archiv fur rechts- und sozialphilosophie,1 archiv für begriffsgeschichte,1 archiv für das studium der neueren sprachen und literaturen,1 "archiv für diplomatik, schriftgeschichte, siegel- und wappenkunde",1 archiv für geschichte der philosophie,2 "archiv für kriminologie: unter besonderer berücksichtigung der gerichtlichen physik, chemie und medizin",1 archiv für kulturgeschichte,1 archiv für liturgiewissenschaft : internationale fachzeitschrift für liturgiewissenschaft,1 archiv für musikwissenschaft,2 archiv für papyrusforschung und verwandte gebiete,2 archiv für rechts- und sozialphilosophie,1 archiv für reformationsgeschichte,3 archiv für religionsgeschichte,1 archiv für sozialgeschichte,1 archiv für völkerkunde,-1 archiv orientalni,1 archival science,3 archivar: zeitschrift für archivwesen,1 archivaria,1 archive for history of exact sciences,2 archive for mathematical logic,1 archive for rational mechanics and analysis,3 archive for the psychology of religion,3 archive of applied mechanics,1 archive of mechanical engineering,1 archives and manuscripts,1 archives and records,3 archives contemporaines,1 archives de pediatrie,1 archives de philosophie,1 archives de sciences sociales des religions,2 archives des maladies professionnelles et de l environnement,1 archives des sciences,-1 archives dhistoire doctrinale et litteraire du moyen age,1 archives europeennes de sociologie,1 archives héraldiques suisses,-1 archives internationales dhistoire des sciences,1 archives italiennes de biologie,-1 archives of academic emergency medicine,1 archives of acoustics,1 archives of agronomy and soil science,1 archives of american art journal,1 archives of animal nutrition,1 archives of asian art,1 archives of biochemistry and biophysics,1 archives of biological sciences,-1 archives of bone and joint surgery,-1 archives of budo,1 archives of business research,-1 archives of cardiovascular diseases,1 archives of civil and mechanical engineering,-1 archives of clinical and medical case reports,-1 archives of clinical neuropsychology,1 archives of clinical trials,-1 archives of computational methods in engineering,1 archives of control sciences,1 archives of craniofacial surgery,1 archives of current research international,-1 archives of data science. series a,1 archives of dermatological research,1 archives of design research,1 archives of disease in childhood,2 archives of disease in childhood-education and practice edition,1 archives of disease in childhood-fetal and neonatal edition,3 archives of electrical engineering,-1 archives of environmental and occupational health,1 archives of environmental contamination and toxicology,1 archives of environmental protection,1 archives of foundry engineering,-1 archives of gerontology and geriatrics,1 archives of gynecology and obstetrics,1 archives of hellenic medicine,-1 archives of histology and cytology,1 archives of insect biochemistry and physiology,1 archives of iranian medicine,1 archives of materials science and engineering,1 archives of mechanics,1 archives of medical research,1 archives of medical science,1 archives of metallurgy and materials,1 archives of microbiology,1 archives of mining sciences,1 archives of natural history,1 archives of oral biology,1 archives of orthopaedic and trauma surgery,1 archives of osteoporosis,1 archives of pathology and laboratory medicine,2 archives of pharmacal research,1 archives of physical medicine and rehabilitation,3 archives of physiology and biochemistry,1 archives of physiotherapy,1 archives of phytopathology and plant protection,1 archives of plastic surgery,-1 archives of psychiatric nursing,1 archives of psychology,-1 archives of public health,1 archives of rehabilitation research and clinical translation,1 archives of sexual behavior,2 archives of suicide research,1 archives of thermodynamics,1 archives of toxicology,3 archives of transport,-1 archives of virology,1 archives of virology supplementum,1 archives of womens mental health,1 archives on veterinary science and technology,-1 archives: the journal of the british records association,1 archiving,-1 archivio antropologico mediterraneo,1 archivio di filosofia,1 archivio glottologico italiano,1 archivio novellistico italiano,1 archivio per lantropologia e la etnologia,1 archivio storico italiano,1 archivium hibernicum,1 archivo de filologia aragonesa,1 archivo de prehistoria levantina,1 archivo espanol de arqueologia,1 archivo espanol de arte,2 archivo teológico granadino,1 archivos de bronconeumologia,1 archivos de cardiología de méxico,-1 archivos de ciencias de la educación,-1 archivos de la sociedad española de oftalmología,1 archivos de medicina veterinaria,1 archivos latinoamericanos de nutricion,1 archivum,1 archivum eurasiae medii aevi,1 archivum franciscanum historicum,1 archivum fratrum praedicatorum,-1 archivum historiae pontificiae,1 archivum historicum societatis iesu,1 archivum immunologiae et therapiae experimentalis,1 archivum lithuanicum,1 archivum mathematicum,1 archiwum filozofii prawa i filozofii społecznej,1 archiwum instytutu inżynierii lądowej,-1 archiwum kryminologii,1 archnet-ijar: international journal of architectural research,1 archäologie der schweiz,1 archäologie österreichs,1 archäologische informationen: mitteilungen zur ur- und frühgeschichte,1 archäologische mitteilungen aus iran und turan,1 archäologischer anzeiger,1 archäologisches korrespondenzblatt,1 archéo-nil,1 arcibel editores,1 arcipelago edizioni,-1 arco libros,1 arcs 2 international law briefing paper series,-1 arctic,1 arctic and antarctic,1 arctic antarctic and alpine research,1 arctic anthropology,2 arctic environmental research,-1 arctic monitoring and assessment programme,-1 arctic review on law and politics,2 arctic science,1 arctic yearbook,1 arcticles,-1 arctoa,-1 arctos,2 arctos : supplementum,1 ardea,1 ardeola,1 area,-1 area,2 arei : journal for central and eastern european history and politics,1 areiopagi.fi,-1 arena,-1 arena journal,-1 arena romanistica,1 arena senter for europaforskning,-1 arendt studies,1 areopagus,1 arethusa,3 "argentine school of micro-nanoelectronics, technology and applications",-1 argentinian journal of applied linguistics,1 argos,1 argos: revista de la asociacion argentina estudios clasicos,1 argotica,-1 argument & computation,1 argument-verlag,-1 argument: biannual philosophical journal,1 argumenta,1 argumenta oeconomica,-1 argumentation,2 argumentation and advocacy,1 argumentation et analyse du discours,1 argumentum,-1 arhaiologiko ergo ste makedonia kai thrake,1 arhangelsk lotsiia,-1 arheologia moldovei,1 "arheologia, etnografia i antropologia evrazii",1 arheologiâ evrazijskih stepej,1 arheoloogilised välitööd eestis,-1 arheoloski vestnik,1 arheološki institut,-1 arhiv za higijenu rada i toksikologiju,1 arhivele totalitarismului,-1 ariadna ediciones,1 ariadne,1 ariadne long: nais- ja meesuuringute ajakiri,1 ariadnī. parartīma.,-1 ariane: revue detudes litteraires francaises,2 arid land research and management,1 ariel-a review of international english literature,2 aries: journal for the study of western esotericism,2 arion-a journal of humanities and the classics,2 aristoteleio panepistimio thessalonikis,-1 aristoteles semitico-latinus,1 arizona center fo medieval & renaissance studies,-1 arizona quarterly,1 arkaeologiske skrifter,1 arkansas historical quarterly,-1 arkansas review,1 arkeologi i norr,-1 arkeologia nyt!,-1 arkheolohiya : zbirnyk naukovykh prats,1 arkitekten,-1 arkitektur,-1 arkitekturforlaget b,-1 arkitekturmuseet,-1 arkiv : tidskrift för samhällsanalys,-1 arkiv for matematik,2 arkiv för nordisk filologi,2 arkiv förlag & tidskrift,1 arkivoc,1 arkki,-1 arkkitehti,-1 arkkitehtiuutiset,-1 arkkitehtuuri,-1 arkkitehtuurikilpailuja,-1 arkkitehtuurin tiedekunta b,-1 arktika i sever,1 arktika xxi vek : gumanitarnye nauki,-1 arktisen keskuksen tiedotteita,-1 arktos,1 armand colin,1 armed forces and society,1 armenian folia anglistika,-1 armenian state pedagogical university,-1 arms and armour,1 arnold mathematical journal,1 aromi-lehti,-1 arp rheumatology,1 arpn journal of systems and software,-1 arq,-1 arq : architectural research quarterly,1 arqueoantropológicas,-1 arqueologia mexicana,1 arquipelago: life and marine sciences,-1 arquitectura viva,-1 arquitetura revista,1 arquivo brasileiro de medicina veterinária e zootecnia,-1 arquivos brasileiros de cardiologia,1 arquivos brasileiros de endocrinologia e metabologia,1 arquivos brasileiros de oftalmologia,1 arquivos de neuro-psiquiatria,1 array,1 arrhythmia & electrophysiology review,1 ars aequi,-1 ars combinatoria,1 ars disputandi: the online journal for philosophy of religion,1 ars inveniendi analytica,1 ars mathematica contemporanea,1 ars medica,-1 ars orientalis,1 ars pharmaceutica,1 ars una,-1 art & perception,-1 art & the public sphere,1 art + media,-1 art bulletin,3 art communication & popculture,1 art education,1 art history,3 art house,-1 art in america,1 art inquiry,1 art journal,3 art of research,-1 art residency catalog,-1 art therapy,1 "art, antiquity, and law",1 "art, design and communication in higher education",2 art/research international,1 arte & ensaios,-1 arte cristiana,1 arte et marte,-1 arte individuo y sociedad,1 arte medievale,2 arte veneta,-1 artech house,1 artelogi,-1 artem,-1 artemisia edizioni,-1 "arteriosclerosis, thrombosis, and vascular biology",2 artery research,1 artes,-1 artforum international,-1 artha journal of social sciences,-1 arthritis and rheumatology,3 arthritis care and research,2 arthritis research and therapy,2 arthropod structure and development,1 arthropod systematics and phylogeny,1 arthropod-plant interactions,1 arthropoda selecta,1 arthroscopy techniques,1 "arthroscopy, sports medicine, and rehabilitation",1 arthroscopy-the journal of arthroscopic and related surgery,3 arthroskopie,1 arthurian literature,1 arthuriana,1 arti dello spettacolo / performing arts,1 arti musices,1 artibus asiae,1 artibus et historiae,1 article press,1 articulo,1 artifact,1 artifex,-1 "artificial cells, nanomedicine, and biotechnology",1 artificial intelligence,3 artificial intelligence and applications,1 artificial intelligence and law,2 artificial intelligence for the earth systems,1 artificial intelligence in education,-1 artificial intelligence in medicine,2 artificial intelligence review,1 artificial intelligence science and engineering,-1 artificial life,2 artificial life and robotics,1 artificial organs,1 artificial satellites,-1 artikkelikokoelma,-1 artl@s bulletin,1 artmargins,1 artnews,-1 artnodes,1 artos & norma bokförlag,-1 arts,-1 arts,1 arts & international affairs,1 "arts and artifacts in movie : technology, aesthetics, communication",1 arts and health,1 "arts and humanities in higher education: an international journal of theory, research and practice",1 arts and the market,1 arts asiatiques,1 arts education policy review,1 arts in psychotherapy,1 arts management newsletter,-1 arts of asia,1 arts research africa,-1 arttu2-tutkimusohjelman julkaisusarja,-1 arv: nordic yearbook of folklore,1 arvinius + orfeus publishing,-1 arvopaperi,-1 arx tavastica,-1 arxiv.org,-1 aryan books international,-1 asaio journal,1 asanger verlag,1 asce-asme journal of risk and uncertainty in engineering systems,1 asce-asme journal of risk and uncertainty in engineering systems : part b mechanical engineering,1 aschehoug & co,1 aschendorff,1 asclepio: revista de historia de la medicina y de la ciencia,1 asdiwal,1 ase,-1 ase international conference on social computing,-1 asean economic bulletin,1 asean journal on hospitality and tourism,1 asee annual conference & exposition proceedings,1 asema,-1 ashrae,-1 ashrae journal,1 ashrae transactions,1 asia & the pacific policy studies,1 asia - pacific review,1 asia anteriore antica,1 asia europe journal,1 asia in focus,1 asia joint conference on information security,-1 asia journal of theology,1 asia life sciences,-1 asia major: a journal of far eastern studies,1 asia pacific allergy,-1 asia pacific business review,1 asia pacific education review,-1 asia pacific family medicine,1 asia pacific journal of anthropology,1 asia pacific journal of clinical nutrition,1 asia pacific journal of economics and business,1 asia pacific journal of environmental law,1 asia pacific journal of human resources,1 asia pacific journal of innovation and entrepreneurship,1 asia pacific journal of management,1 asia pacific journal of marketing and logistics,1 asia pacific journal of mathematics,1 asia pacific journal of public administration,-1 asia pacific journal of social work and development,1 asia pacific journal of tourism research,1 asia pacific journal on human rights and the law,1 asia pacific law review,2 asia pacific management review,1 asia pacific translation and intercultural studies,1 asia pacific viewpoint,1 asia pacific world,1 asia pacific: perspectives,1 asia-european journal of mathematics,1 asia-pacific association for machine translation,-1 asia-pacific conference on computer-human interaction,1 asia-pacific education researcher,-1 asia-pacific financial markets,1 asia-pacific forum on science learning and teaching,1 asia-pacific journal : japan focus,1 asia-pacific journal of accounting and economics,1 asia-pacific journal of atmospheric sciences,1 asia-pacific journal of business administration,1 asia-pacific journal of chemical engineering,1 asia-pacific journal of clinical oncology,1 asia-pacific journal of cooperative education,1 asia-pacific journal of education,1 asia-pacific journal of financial studies,1 asia-pacific journal of innovation in hospitality and tourism,-1 asia-pacific journal of management research and innovation,-1 asia-pacific journal of molecular biology and biotechnology,1 asia-pacific journal of oncology nursing,1 asia-pacific journal of operational research,1 asia-pacific journal of ophthalmology,1 asia-pacific journal of public health,-1 asia-pacific journal of regional science,1 asia-pacific journal of research in early childhood education,-1 "asia-pacific journal of sports medicine, arthroscopy, rehabilitation and technology",1 asia-pacific journal of teacher education,1 asia-pacific language variation,1 asia-pacific microwave conference,1 asia-pacific power and energy engineering conference,-1 asia-pacific psychiatry,1 asia-pacific research and training network on trade working paper series,-1 asia-pacific signal and information processing association annual summit and conference,-1 asia-pacific society for computers in education,-1 asiakkuusmarkkinoinnin vuosikirja,-1 asian affairs,2 asian american journal of psychology,1 asian and pacific migration journal,1 asian anthropology,1 asian bioethics review,1 asian biomedicine,-1 asian business and management,1 asian case research journal,1 asian chemistry letters,1 asian communication research,1 asian conference on education & international development,-1 asian conference on education official conference proceedings,-1 asian conference on intelligent information and database systems,1 "asian conference on the arts, humanities and social sciences conference proceedings",-1 asian development bank,-1 asian development review,1 asian economic journal,1 asian economic papers,1 asian economic policy review,1 asian efl journal,1 asian englishes,1 asian ethnicity,1 asian ethnology,1 asian folklore studies,1 asian geographer,1 asian herpetological research,1 asian highlands perspectives,1 asian journal for mathematics education,1 "asian journal of agricultural extension, economics and sociology",-1 asian journal of andrology,1 asian journal of biological sciences,-1 asian journal of business and management,-1 asian journal of business ethics,-1 asian journal of chemistry,1 asian journal of civil engineering,1 asian journal of clinical nutrition,-1 asian journal of communication,1 asian journal of comparative law,1 asian journal of comparative politics,1 asian journal of computer science and technology,-1 asian journal of control,1 asian journal of earth sciences,-1 asian journal of education and e-learning,-1 asian journal of endoscopic surgery,-1 asian journal of english language teaching,1 asian journal of environment and disaster management,1 asian journal of epidemiology,-1 asian journal of human services,-1 asian journal of humanities and social studies,-1 asian journal of international law,-1 asian journal of international law,1 asian journal of management,-1 asian journal of management cases,1 asian journal of managerial science,1 asian journal of mathematics,1 asian journal of neurosurgery,-1 asian journal of occupational therapy,1 asian journal of organic chemistry,1 asian journal of peacebuilding,1 asian journal of pharmaceutical sciences,1 asian journal of philosophy,1 asian journal of physics,-1 asian journal of political science,1 asian journal of psychiatry,1 asian journal of scientific research,-1 asian journal of social health and behavior,1 asian journal of social psychology,1 asian journal of social science,1 asian journal of spectroscopy,1 asian journal of sport and exercise psychology,1 asian journal of surgery,1 asian journal of technology innovation,1 asian journal of transfusion science,-1 asian journal of university education,-1 asian journal of urology,-1 "asian journal of water, environment and pollution",1 asian journal of womens studies,1 asian journal of wto and international health law and policy,1 asian languages and linguistics,1 asian medicine,1 asian music,1 asian myrmecology,1 asian nursing research,1 asian pacific journal of allergy and immunology,1 asian pacific journal of cancer prevention,1 asian pacific journal of tropical biomedicine,-1 asian pacific journal of tropical medicine,1 asian perspective,1 asian perspectives,1 asian philosophy,1 asian population studies,1 asian profile,1 asian review of accounting,-1 asian security,1 asian social science,-1 asian studies review,1 asian survey,2 asian theatre journal,2 asian women,1 asian yearbook of international law,1 asian-pacific economic literature,1 asian-pacific journal of second and foreign language education,1 asianetwork exchange,1 asiapacific mediaeducator,1 asiascape,1 asiatische forschungen,1 asiatische studien,1 asil insights,-1 "asilomar conference on signals, systems, and computers proceedings",1 ask,1 asla : svenska föreningen för tillämpad språkvetenskap,1 aslas skriftserie,1 aslib journal of information management,1 asm international,1 asm press,1 asme gear research institute,1 asme international conference on energy sustainability,1 asme journal of heat and mass transfer,1 asme letters in dynamic systems and control,-1 asmet - austrian society for metallurgy and materials,-1 asn neuro,1 asociación de acústicos argentinos,-1 asociación española de dirección e ingeniería de proyectos,-1 asos yayınları,-1 aspasia,1 aspects of applied biology,-1 aspekt press,-1 aspekti,-1 aspen publishers,1 aspetar sports medicine journal,-1 assay and drug development technologies,1 assemblage: the sheffield graduate journal of archaeology,1 assembly automation,1 asser press,-1 assessing writing,1 assessment,1 assessment and evaluation in higher education,3 "assessment in education: principles, policy and practice",2 assistive technology,1 assitej,-1 associated university presses,1 association art et imageries pour la culture et le développement,-1 association européenne pour l´enseignement en architecture,-1 association for canadian studies,1 association for computational creativity,1 association for computational linguistics,1 association for consumer research,1 association for information science and technology,1 association for information systems,1 association for iron and steel technology,-1 association for symbolic logic,1 association for teacher education in europe,1 association for the advancement of computing in education,1 association mondiale de la route,-1 association of chartered certified accountants,-1 association of geographic information laboratories in europe,-1 association of marketing theory and practice proceedings,-1 association of professional futurists,-1 association of researchers in construction management,-1 association pierre belon,-1 association scientifique pour la géologie et ses applications,-1 associazione culturale villa classica,-1 associazione genesi,-1 associazione italiana colore,-1 associazione italiana di ingegneria chimica,1 associazione italiana di metallurgiana,-1 associazione italiana di storia urbana,-1 associação dos arqueólogos portugueses,-1 asta: advances in statistical analysis,1 astana medicinalyk̦ žurnaly,-1 asterisque,2 astin bulletin,1 astm special technical publication,1 astorica,-1 astra,-1 astrobiology,1 astrodynamics,1 astronomical and astrophysical transactions: the journal of the eurasian astronomical society,1 astronomical journal,1 astronomical society of the pacific,-1 astronomical society of the pacific conference series,1 astronomische nachrichten,1 astronomičeskij žurnal,-1 astronomy and astrophysics,3 astronomy and astrophysics review,3 astronomy and computing,1 astronomy and geophysics,1 astronomy letters: a journal of astronomy and space astrophysics,1 astronomy reports,1 astroparticle physics,1 astrophysical bulletin,1 astrophysical journal,1 astrophysical journal letters,3 astrophysical journal supplement series,2 astrophysics,1 astrophysics and space science,1 astrophysics and space science proceedings,-1 astrophysics and space sciences transactions,1 astropolitics,1 astroprint,-1 asukasviesti,-1 asuminen ja yhteiskunta,-1 asuntomme,-1 asymptotic analysis,1 at mineral processing : europe,1 atalante-revista de estudios cinematograficos,1 atas da conferência da associação portuguesa de sistemas de informação,-1 atena,-1 atencion primaria,1 atene e roma: nuova serie seconda,1 atenea,-1 ateneo de manila university press,1 ateneumin julkaisut,1 ateneumin taidemuseo,-1 atf press,-1 athabasca university press,1 athena,1 athenaeum,1 athenaeum: studi periodici di letteratura e storia dellantichita,2 athens institute for education and research,-1 athens journal of architecture,1 athens journal of business & economics,-1 athens journal of education,1 athens journal of health,-1 athens journal of health and medical sciences,-1 athens journal of history,-1 athens journal of law,1 athens journal of mass media and communications,-1 athens journal of psychology,-1 athens journal of sciences,-1 athens journal of social sciences,1 athens journal of sports,-1 athens journal of technology & engineering,-1 athens journal of tourism,-1 atherosclerosis,2 atherosclerosis plus,1 athletic business,-1 atiner's conference paper series,-1 atiqot,1 atla: alternatives to laboratory animals,1 atlal,1 atlal : the journal of saudi arabian archaeology,-1 atlande,-1 atlanta review,1 atlanti,-1 atlanti +,-1 atlantic economic journal,1 atlantic geology,1 atlantic journal of communications,1 atlantic publishers & distributors,-1 "atlantic studies: literary, cultural and historical perspectives",2 atlantico,-1 atlantis,1 atlantis : a womens studies journal,1 atlantis highlights in engineering,1 "atlantis highlights in social sciences, education and humanities",-1 atlantis press bv,-1 atlantis studies in uncertainty modelling.,-1 atlantisch perspektief,-1 atlas akademi,-1 atlas bokförlag,-1 atlas contact,-1 atlas of genetics and cytogenetics in oncology and haematology,1 atmos,-1 atmosfera,1 atmosphere,1 atmosphere: ocean,1 atmospheric and climate science,-1 atmospheric and oceanic optics,1 atmospheric chemistry and physics,3 atmospheric chemistry and physics discussions,-1 atmospheric environment,1 atmospheric environment x,1 atmospheric measurement techniques,2 atmospheric measurement techniques discussions,-1 atmospheric pollution research,1 atmospheric research,1 atmospheric science letters,1 atomic data and nuclear data tables,1 atomic energy,1 atomic energy society of japan,1 atomic spectroscopy,1 atomization and sprays,1 atoms,-1 atrain&nord,-1 atremi,-1 atriatuottaja,-1 ats ydintekniikka,-1 attachment and human development,1 attention and performance,1 attention perception and psychophysics,1 atti centro richerche e documentazione sullantichità classica,1 atti della accademia nazionale dei lincei: notizie degli scavi di antichita,1 "atti della pontificia accademia romana di archeologia: serie 3, memorie",1 "atti della pontificia accademia romana di archeologia: serie iii, rendiconti",1 atti dellaccademia peloritana dei pericolanti: classe di scienze fisiche matematiche e naturali,-1 atti e memorie,1 atw : international journal for nuclear power,1 au courant,-1 auco czech economic review,-1 audio engineering society,-1 audio engineering society conference on spatial audio,1 audiological medicine,1 audiology and neuro-otology,1 audiology research,-1 audiology: official organ of the international society of audiology,1 audit financiar,-1 auditing: a journal of practice and theory,2 aue-säätiön julkaisuja,-1 aufklärung: interdisziplinare halbjahrechrift zur erforschung des 18: jahrhunderts und seiner wirkungsgeschichte,1 augmentative and alternative communication,1 augmented human research,1 augustinian studies,2 augustiniana,1 augustinianum,1 augustinus,1 "aukstuju mokyklu vaidmuo visuomeneje: issukiai, tendencijos ir perspektyvos",-1 aula abierta,-1 aula orientalis,1 aun,1 aura,-1 auraica: scripta a societate porthan edita,1 auranmaan viikkolehti,-1 aurea parma,-1 aureola,-1 aurinko kustannus,-1 aurinkolaiva,-1 auris nasus larynx,1 aurora,-1 aurora-kustannus,-1 aus politik und zeitgeschichte,1 ausgrabungen und funde in westfalen-lippe,1 ausimm,-1 ausimm bulletin,1 ausonius,-1 austin journal of anesthesia and analgesia,-1 austin journal of clinical cardiology,-1 austin journal of clinical neurology,-1 austin journal of dentistry,-1 austin journal of nursing & health care,-1 austin journal of psychiatry and behavioral sciences,-1 austral comunicación,1 austral ecology,1 austral entomology,1 australasian biotechnology,1 australasian canadian studies,1 australasian computing education conference,1 australasian conference on information systems,1 australasian conference on robotics and automation,-1 australasian drama studies,1 australasian emergency care,1 australasian fluid mechanics society,-1 australasian institute of mining and metallurgy,1 australasian journal of combinatorics,1 australasian journal of dermatology,1 australasian journal of disaster and trauma studies,1 australasian journal of early childhood,1 australasian journal of educational technology,1 australasian journal of environmental management,1 australasian journal of information systems,1 australasian journal of irish studies,1 australasian journal of logic,1 australasian journal of neuroscience,-1 australasian journal of paramedicine,-1 australasian journal of philosophy,3 australasian journal of technology education,1 australasian journal of victorian studies,1 australasian journal on ageing,1 australasian marketing journal,1 australasian medical journal,-1 australasian orthodontic journal,1 australasian philosophical review,1 australasian plant pathology,1 australasian psychiatry,1 australasian speech science & technology association,1 australasian universities building education association conference,-1 australian & international journal of rural education,-1 australian & new zealand academy of management,-1 australian & new zealand journal of european studies,1 australian aboriginal studies,1 australian academic and research libraries,1 australian academic press,1 australian accounting review,1 australian acoustical society,-1 australian and new zealand control conference,-1 australian and new zealand journal of art,1 australian and new zealand journal of arts therapy,1 australian and new zealand journal of family therapy,1 australian and new zealand journal of obstetrics and gynaecology,1 australian and new zealand journal of psychiatry,1 australian and new zealand journal of public health,1 australian and new zealand journal of statistics,1 australian and new zealand maritime law journal,-1 australian archaeology,1 australian art education,1 australian biblical review,1 australian centre for geomechanics,-1 australian computer society,1 australian critical care: official journal of the confederation of australian critical care nurses,1 australian cultural history,1 australian dance council,-1 australian dental journal,1 australian economic papers,1 australian economic review,1 australian educational researcher,1 australian endodontic journal,1 australian family physician,1 australian feminist law journal,1 australian feminist studies,1 australian forestry,1 australian geographer,1 "australian government - department of innovation, industry, science and research",-1 australian health review,1 australian historical studies,1 australian humanities review,1 australian intellectual property journal,1 australian journal of adult learning,1 australian journal of advanced nursing,1 australian journal of agricultural and resource economics,1 australian journal of anthropology,2 australian journal of asian law,1 australian journal of basic and applied sciences,-1 australian journal of botany,1 australian journal of career development,1 australian journal of chemistry,1 australian journal of civil engineering,-1 australian journal of communication,1 australian journal of crop science,1 australian journal of earth sciences,1 australian journal of education,1 australian journal of electrical & electronics engineering,-1 australian journal of environmental education,1 australian journal of family law,1 australian journal of forensic sciences,1 australian journal of french studies,2 australian journal of general practice,-1 australian journal of grape and wine research,1 australian journal of human rights,1 australian journal of international affairs,1 australian journal of labour law,1 australian journal of language and literacy,1 australian journal of linguistics,1 australian journal of management,1 australian journal of maritime and ocean affairs,1 australian journal of mathematical analysis and applications,1 australian journal of music education,1 australian journal of music therapy,1 australian journal of pharmacy,1 australian journal of political science,1 australian journal of politics and history,1 australian journal of primary health,1 australian journal of psychology,1 australian journal of public administration,1 australian journal of rural health,1 australian journal of social issues,1 australian journal of teacher education,1 australian journal of zoology,1 australian journal on volunteering,1 australian journalism review,1 australian library journal,1 australian literary studies,1 australian manufacturing technology,-1 australian mathematical society: gazette,1 australian mining,1 australian occupational therapy journal,1 australian planner,1 australian policy online,-1 australian prescriber,1 australian psychologist,1 australian review of applied linguistics,1 australian scholarly publishing,-1 australian social work,1 australian systematic botany,1 "australian tax forum: a journal of taxation policy, law and reform",1 australian universities review,1 australian veterinary journal,1 australian veterinary practitioner,1 australian yearbook of international law,1 austrian history yearbook,2 austrian journal of earth sciences,1 austrian journal of forest science,1 austrian journal of statistics,1 austrian review of international and european law,1 austrian studies,1 aut aut,1 autex research journal,-1 author-publishers,-1 authorship,1 autism,2 autism & developmental language impairments,1 autism in adulthood,1 autism research,1 autism-open access,-1 autismi,-1 auto-immunity highlights,-1 auto/biography studies,1 autoimmunity,1 autoimmunity reviews,1 automaatioväylä,-1 automated software engineering,2 automatic control and computer sciences,1 automatic press,-1 automatica,3 automatika,-1 automation,1 automation and remote control,1 automation in construction,2 automatisierungstechnik,-1 autonomic and autacoid pharmacology,1 autonomic neuroscience: basic and clinical,1 autonomous agents and multi-agent systems,2 autonomous robots,2 autonómia és felelosség,-1 autophagy,2 autophagy reports,-1 av edition,-1 av proyectos,-1 av-arkki,-1 avain,-1 avances de investigación en educación matemática,1 avances en psicologia latinoamericana,-1 avangard prima,-1 avanguardia: rivista di letteratura contemporanea,1 avant,1 avant garde critical studies,1 avant scene opera,-1 avar,1 avian biology research,1 avian conservation and ecology,1 avian diseases,1 avian pathology,1 avian research,1 aviation,1 aviation in focus,-1 aviation psychology and applied human factors,1 avocetta,1 avoin kalevala,-1 avotakka,-1 avriga: zpravy jednoty klasickych filologu,1 avs quantum science,1 avtobiografija,1 avun maailma,-1 aw-prax. aussenwirtschaftliche praxis,-1 awwa water science,-1 axac,1 axess,-1 axiom academic publishers,-1 axioms,-1 axl books,-1 ayer,2 ayrıntı dergisi,-1 azania,1 azijske sveske,1 azimuth,-1 azti arrantza,1 azərbaycan məktəbi,1 àmbits de psicopedagogia i orientació,-1 åbo underrättelser,-1 b e journal of economic analysis and policy,1 b e journal of macroeconomics,1 b e journal of theoretical economics,1 b en m,-1 b'lgarsko spisanie za obsestveno zdrave,-1 b-ent,1 b.c.a. sicilia,1 b>quest: a journal of applied topics in business and economics,1 baar-verlag,1 bab working papers,1 babel,-1 babel a.f.i.a.l.,-1 babel: revue internationale de la traduction,1 babesch: bulletin antieke beschaving,1 babson college center for entrepreneurship,-1 babylon,1 babylonia,-1 bach,1 bach-jahrbuch,1 bacteriophage,1 baessler archiv,1 bahastra,-1 bahcesehir university,-1 bahir dar journal of education,-1 baifukan,1 baker,1 balans,-1 balassi intézet,-1 balassi kiadó,-1 balkan journal of geometry and its applications,1 balkan journal of medical genetics,-1 balkan journal of philosophy,1 balkan studies,1 balkanija,-1 balkanistica,1 balkanološki institut,-1 balkanskie čteniâ,-1 balkansko ezikoznanie,1 balkema,1 ballet review,1 baltan laboratories,-1 baltic astronomy,1 baltic conference on future internet communications,-1 baltic development forum,-1 baltic forestry,1 baltic journal of art history,1 baltic journal of coleopterology,1 baltic journal of economics,1 "baltic journal of english language, literature and culture",1 baltic journal of health and physical activity,-1 baltic journal of law and politics,1 baltic journal of legal and social sciences,1 baltic journal of management,1 baltic journal of modern computing,-1 baltic journal of sport and health sciences,-1 baltic linguistics,1 baltic marine environment protection commission,-1 baltic port insight,-1 baltic region,1 baltic rim economies,-1 baltic screen media review,1 baltic sea environment proceedings,-1 baltic sea region cultural heritage forum,-1 baltic sea science congress,-1 baltic transport journal,-1 baltic university press,-1 baltic worlds,1 "baltic yearbook of communication, logic and cognition",1 baltic yearbook of international law,-1 baltic-pontic studies,1 baltica,1 baltijskaâ meždunarodnaâ akademiâ,-1 baltijskij region,1 baltische studien,1 baltistica,1 balto print,-1 balto-scandia,1 baltu filologija,1 bamberger orientstudien,-1 banach center publications,1 banach journal of mathematical analysis,1 banco central de chile,-1 bandecchi e vivaldi,-1 bangladesh journal of botany,1 bangladesh journal of pharmacology,-1 bangladesh journal of plant taxonomy,1 bank i kredyt,1 bankhistorisches archiv,1 banking law journal,1 banko janakari,-1 bankruptcy developments journal,-1 banks and bank systems,-1 banque & marchés,-1 banque des mots,1 baptria,-1 bar publishing,1 baraton interdisplinary research journal,-1 barbastella,-1 barcelona publishers,1 bardi editore,1 bardwell press,-1 bariatric nursing and surgical patient care,-1 barkhuis,-1 barn,1 barnboken,1 barnlitterært forskningstidsskrift,1 basam books,-1 base,1 bashkirskaya e`nciklopediya,-1 basic & applied herpetology,1 basic and applied ecology,1 basic and applied social psychology,1 basic and clinical cancer research,-1 basic and clinical pharmacology and toxicology,2 basic books,1 basic income studies,1 basic research in cardiology,2 basin research,1 basteria,-1 bat research news,1 batteries,-1 batteries & supercaps,1 battery energy,1 battlebridge publications,-1 batumi state maritime academy,-1 bauphysik,1 bautechnik,1 bayerische akademie der wissenschaften,1 bayesian analysis,2 baylor university press,-1 bayshop (generis publishing),-1 "baywood publishing company, inc.",1 bazar masarin,-1 bāgh-i naẓar,1 bba clinical,-1 bc studies,1 bcas annual research symposium,-1 bdj open,1 bdk america,-1 be journal in theoretical economics,1 beacon press,1 bealoideas,1 beauchesne,-1 bebyggelsehistorisk tidskrift,1 beck,2 beckettiana,1 bedfordshire archaeology,1 "bedregal villanueva, juan francisco",-1 beech stave press,1 begell house,1 behavior analyst,1 behavior and philosophy,1 behavior and social issues,1 behavior genetics,1 behavior modification,1 behavior research methods,2 behavior therapy,1 behavioral and brain functions,1 behavioral and brain sciences,2 behavioral and social sciences librarian,1 behavioral disorders,1 behavioral ecology,3 behavioral ecology and sociobiology,2 behavioral interventions,1 behavioral medicine,1 behavioral neuroscience,1 behavioral psychology-psicologia conductual,-1 behavioral research in accounting,1 behavioral sciences,1 behavioral sciences and the law,1 behavioral sciences of terrorism and political aggression,1 behavioral sleep medicine,1 behaviormetrika,1 behaviour,1 behaviour and information technology,2 behaviour change,1 behaviour research and therapy,3 behavioural and cognitive psychotherapy,1 behavioural brain research,1 behavioural neurology,1 behavioural pharmacology,1 behavioural processes,1 behavioural public policy,1 behinderung und internationale entwicklung,-1 "behrs, b., verlag gmbh & co. kg",-1 beihefte zur zeitschrift für die alttestamentliche wissenschaft,2 beihefte zur zeitschrift für französische sprache und literatur,1 beihefte zur zeitschrift für romanische philologie,1 beijing daxue jiaoyu pinglun,-1 beijing international review of education,1 beijing language and culture university press,-1 beijing law review,-1 beijing shifan daxue xuebao,-1 beilstein journal of nanotechnology,1 beilstein journal of organic chemistry,1 beiträge zur hochschulforschung,-1 beiträge zur lehrerinnen- und lehrerbildung,1 beiträge empirischer musikpädagogik,1 beiträge zur algebra und geometrie,1 beiträge zur entomologie,-1 beiträge zur feministischen theorie und praxis,1 beiträge zur film- und fernsehenwissenschaft,1 beiträge zur fremdsprachenvermittlung,1 beiträge zur germanistischen sprachwissenschaft,1 beiträge zur geschichte der arbeiterbewegung,-1 beiträge zur geschichte der deutschen sprache und literatur,3 beiträge zur geschichte der sprachwissenschaft,1 beiträge zur interkulturellen germanistik,1 beiträge zur namenforschung,1 beiträge zur popularmusikforschung,1 beiträge zur rechtsgeschichte österreichs,1 belarusian state university,-1 belas infiéis,-1 beletra almanako,-1 belfagor,1 belgeo,1 belgian journal of entomology,-1 belgian journal of linguistics,1 belgian journal of zoology,1 belgisch tijdschrift voor nieuwste geschiedenis,1 belgorodskij gosudarstvenny`j nacional`ny`j issledovatel`skij universitet,-1 "belgorodskij universitet kooperacii, e`konomiki i prava",-1 belgrade english language & literature studies,-1 belin,1 belknap press of harvard university press,2 bell system technical journal,2 bellaterra journal of teaching & learning language & literature,1 belleten,1 bellona,-1 belonging,-1 belphegor: popular literature and media culture,1 belt - brazilian english language teaching journal,1 belvedere meridionale,-1 ben jonson journal,1 benchmark,-1 benchmarking,1 benedictina: rivista di studi benedettini,1 beneficial microbes,1 benet oy,-1 benjam pöntinen,-1 benjamins current topics,-1 bentham science publishers,1 berber studies,1 bereavement care,-1 beresta books,-1 berg,-1 bergamo university press,-1 bergen journal of criminal law and criminal justice,1 bergen language and linguistics studies,1 berghahn books,2 bergsoniana,1 berichte aus dem julius-kühn-institut,-1 berichte der römisch-germanischen kommission,2 berichte zur wissenschaftsgeschichte,1 berkeley electronic press,1 "berkeley journal of gender, law and justice",1 berkeley review of education,-1 berkeley technology law journal,1 berkshire publishing group,-1 berlin human-machine systems workshop,-1 berlin-brandenburgische akademie der wissenschaften,1 berliner beiträge zur skandinavistik,1 berliner journal fur soziologie,1 berliner theologische zeitschrift,1 berliner und munchener tierarztliche wochenschrift,1 berliner wissenschafts-verlag,1 berlingske tidende,-1 bernoulli,2 bernstein-verlag,1 bertil ohlin förlag,-1 bertrand livreiros,1 berufsbildung in wissenschaft und praxis,-1 berytus archaeological studies,1 best practice,-1 best practice & research. clinical obstetrics & gynaecology,1 best practice and research clinical endocrinology and metabolism,1 best practice and research clinical haematology,1 best practice and research clinical obstetrics and gynaecology,1 best practice and research in clinical gastroenterology,1 best practice and research in clinical rheumatology,1 bestpractice: lääketieteen asiantuntijoiden ammattilehti,-1 bestuurskunde,1 beszédkutatás,1 beta,1 betekint?,-1 beth bulletin,-1 bethlen gábor alapkezelő,-1 beton- und stahlbetonbau,1 betoni,-1 between,1 between the species,1 beverages,-1 beyond philology,1 bezpieczny bank,-1 bfw-dokumentation,-1 bhasha prodyogiki,-1 bhatkal & sen,-1 bhm berg- und hüttenmännische monatshefte,1 bhr group,1 bhv-peterburg,-1 bi'gyo gyoyug yeon'gu,-1 bialik institute publishing house,1 bibacc publishing,-1 bibban,-1 bibel und kirche,1 bible and critical theory,1 biblica,2 biblical archaeology review,2 biblical interpretation,2 biblical research,1 biblical theology bulletin,1 biblion verlag,1 bibliophilos,-1 bibliopolis,-1 "bibliopolis, edizioni di filosofia e scienze",1 bibliotheca historico-ecclesiastica lundensis,1 bibliotheca lichenologica,-1 bibliotheca orientalis,1 bibliotheca sigillumiana,-1 bibliothek,-1 bibliotheque dhumanisme et renaissance: travaux et documents,1 bibliothèque de lécole des chartes,1 bibliothèque historique vaudoise,-1 bibliothèque russe de linstitut détudes slaves,-1 biblische notizen,2 biblische zeitschrift,2 bid: textos universitaris de biblioteconomia i documentacio,1 bidrag till kännedom av finlands natur och folk,1 bien dire et bien aprandre: revue de medievistique,1 "biennial conference of the association for common european nursing diagnoses, interventions and outcomes",-1 big data,1 big data & information analytics,1 big data & society,2 big data and cognitive computing,1 big data in agriculture,-1 big data mining and analytics,-1 big data research,1 big earth data,1 bihdāsht va īminī-i kār,-1 bijdragen tot de geschiedenis: inzonderheid van het aloude hertogdom brabant,1 "bijdragen tot de taal-, land- en volkenkunde",2 bijiao jiaoyu xuebao,-1 bijiao jiaoyu yanjiu,-1 bijiao jingxue,-1 bildhaan,1 bildungsforschung,-1 bilig,1 bilingua ga editions,1 bilingual research journal,1 bilingualism: language and cognition,3 billesø & baltzer,1 bima journal of science and technology,-1 bio,-1 bio integration,-1 bio web of conferences,-1 bio-based and applied economics,1 bio-complexity,1 bio-design and manufacturing,-1 bio-medical materials and engineering,1 bio-protocol,1 bio-science law review,1 bioacoustics: the international journal of animal sound and its recording,1 bioactive carbohydrates and dietary fibre,1 bioactive compounds in health and disease,-1 bioactive materials,1 bioanalysis,1 bioanalytical reviews,1 biobien innovations,-1 biocatalysis and agricultural biotechnology,1 biocatalysis and biotransformation,1 biocell,1 bioceramics development and applications,-1 biochar,-1 biochemia medica,1 biochemical and biophysical research communications,1 biochemical engineering journal,1 biochemical genetics,1 biochemical journal,2 biochemical pharmacology,2 biochemical society,1 biochemical society symposia,1 biochemical society transactions,1 biochemical systematics and ecology,1 biochemistry,1 biochemistry : supplement series a membrane and cell biology,-1 biochemistry and biophysics reports,1 biochemistry and cell biology-biochimie et biologie cellulaire,1 biochemistry and molecular biology education,1 biochemistry research international,1 biochemistry: moscow,1 biochimica clinica,-1 biochimica et biophysica acta (bba) - bioenergetics,1 biochimica et biophysica acta (bba) - biomembranes,1 biochimica et biophysica acta (bba) - gene regulatory mechanisms,1 biochimica et biophysica acta (bba) - general subjects,1 biochimica et biophysica acta (bba) - molecular and cell biology of lipids,1 biochimica et biophysica acta (bba) - molecular basis of disease,1 biochimica et biophysica acta (bba) - molecular cell research,1 biochimica et biophysica acta (bba) - proteins and proteomics,1 biochimica et biophysica acta (bba) - reviews on cancer,1 biochimica et biophysica acta: bioenergetics,1 biochimica et biophysica acta: biomembranes,1 biochimica et biophysica acta: gene regulatory mechanisms,1 biochimica et biophysica acta: general subjects,1 biochimica et biophysica acta: molecular and cell biology of lipids,1 biochimica et biophysica acta: molecular basis of disease,1 biochimica et biophysica acta: molecular cell research,1 biochimica et biophysica acta: proteins and proteomics,1 biochimica et biophysica acta: reviews on cancer,1 biochimie,1 biochip journal,1 bioconjugate chemistry,1 biocontrol,1 biocontrol science,1 biocontrol science and technology,1 biocybernetics and biomedical engineering,1 biocycle,1 biodata mining,1 biodegradation,1 biodemography and social biology,1 biodiverse från centrum för biologisk mångfald,-1 biodiversity,1 biodiversity and conservation,2 biodiversity data journal,1 biodiversity informatics,1 biodiversity information science and standards,-1 biodiversity journal,-1 biodiversity research and conservation,1 biodrugs,1 bioelectricity,1 bioelectrochemistry,1 bioelectromagnetics,1 bioenergy research,1 bioengineered,-1 bioengineered bugs,1 bioengineering,-1 bioessays,1 bioethics,3 biofabrication,1 biofactors,1 biofilm,1 biofouling,1 biofuel research journal,1 biofuels,1 biofuels bioproducts and biorefining: biofpr,1 biofutur,1 biogenic amines,1 biogeochemistry,1 biogeosciences,2 biogeosciences discussions,-1 biogeotechnics,1 biogerontology,1 biography: an interdisciplinary quarterly,3 biohub annual,-1 bioimpacts,-1 bioinformatics,3 bioinformatics advances,1 bioinformatics and biology insights,1 bioinformatics trends,-1 bioinorganic chemistry and applications,1 bioinquirer journal,-1 bioinspiration and biomimetics,1 biointerface research in applied chemistry,-1 biointerphases,1 bioinvasions records,1 biokierto ja biokaasu,-1 biolinguistics,1 biologia,1 biologia futura,1 biologia plantarum,1 biological agriculture and horticulture,1 biological and pharmaceutical bulletin,1 biological bulletin,1 biological chemistry,1 biological communications,1 biological conservation,2 biological control,1 biological cybernetics,1 biological invasions,2 biological journal of the linnean society,1 biological procedures online,1 biological psychiatry,3 biological psychiatry : cognitive neuroscience and neuroimaging,1 biological psychiatry global open science,1 biological psychology,2 biological research,1 biological research for nursing,1 biological reviews,2 biological rhythm research,1 biological theory,1 biological trace element research,1 biologicals,1 biologics,1 biologiya morya,1 biologičeskie membrany,-1 biology,-1 biology and environment: proceedings of the royal irish academy,1 biology and fertility of soils,2 biology and philosophy,2 biology bulletin,1 biology direct,1 biology letters,2 biology methods & protocols,-1 biology of reproduction,1 biology of sex differences,1 biology of sport,1 biology of the cell,1 biology open,1 biomacromolecules,2 biomarker insights,1 biomarker research,1 biomarkers,1 biomarkers in medicine,1 biomarkers in neuropsychiatry,1 biomarkers journal,-1 biomass and bioenergy,2 biomass conversion and biorefinery,1 biomaterial investigations in dentistry,1 biomaterials,3 biomaterials advances,1 biomaterials and biosystems,1 biomaterials science,1 biomechanics and modeling in mechanobiology,1 biomed,-1 biomed central,1 biomed research international,-1 biomedica,1 biomedical and environmental sciences,1 biomedical chromatography,1 biomedical engineering,1 biomedical engineering advances,1 biomedical engineering and computational biology,-1 biomedical engineering letters,1 biomedical engineering online,1 biomedical glasses,1 biomedical human kinetics,1 biomedical journal of scientific & technical research,-1 biomedical materials,1 biomedical materials & devices,1 biomedical microdevices,1 biomedical optics express,1 biomedical papers-olomouc,1 biomedical physics & engineering express,1 biomedical reports,1 biomedical research-tokyo,1 biomedical sciences instrumentation,1 biomedical signal processing and control,1 biomedical spectroscopy and imaging,1 biomedical technology,-1 biomedicine,1 biomedicine and pharmacotherapy,2 biomedicines,-1 biomedinformatics,-1 biomedizinische technik,1 biometals,1 biometric technology today,-1 biometrical journal,1 biometrical letters,1 biometrics,2 biometrika,3 biomicrofluidics,1 biomimetics,-1 biomolecular concepts,1 biomolecular nmr assignments,1 biomolecules,-1 biomolecules & biomedicine,1 biomolecules and therapeutics,1 bionanoscience,1 bioorganic and medicinal chemistry,1 bioorganic and medicinal chemistry letters,1 bioorganic chemistry,1 bioorganicheskaya khimiya,-1 biopharm international,1 biopharmaceutics and drug disposition,1 biophysical chemistry,1 biophysical economics and resource quality,1 biophysical journal,2 biophysical reviews,1 biophysical reviews and letters,1 biophysical society annual meeting : abstracts,-1 biophysics,1 biophysics and physicobiology,-1 biopolymers,1 biopolymers and cell,-1 biopreservation and biobanking,1 biopress,1 bioprinting,-1 bioprocess and biosystems engineering,1 bioproducts business,-1 bioremediation journal,1 bioresearch open access,1 bioresource technology,2 bioresource technology reports,1 bioresources,1 bioresources and bioprocessing,1 biorheology,1 biorisk,1 biorxiv,-1 bios scientific publishers,1 bioscene,1 bioscience,2 bioscience & engineering : an international journal,-1 bioscience biotechnology and biochemistry,1 bioscience journal,1 bioscience reports,1 bioscience research,-1 bioscience trends,1 bioscientifica,1 bioscope-south asian screen studies,1 biosecurity and bioterrorism: biodefense strategy practice and science,1 biosemiotics,1 biosensors,-1 biosensors and bioelectronics,3 biosensors and bioelectronics x,1 biosocieties,2 biospektrum,-1 biosphère,-1 biostatistics,2 biostatistics & epidemiology,1 biostec,1 biosystems,1 biosystems engineering,2 biota neotropica,1 biotech,-1 biotechnic and histochemistry,1 biotechniques,1 biotechnologia acta,-1 biotechnologie agronomie societe et environnement,1 biotechnology advances,2 biotechnology and applied biochemistry,1 biotechnology and bioengineering,2 biotechnology and bioprocess engineering,1 biotechnology and biotechnological equipment,1 biotechnology and genetic engineering reviews,1 biotechnology design,-1 biotechnology for biofuels and bioproducts,2 biotechnology for the environment,-1 biotechnology in animal husbandry,1 biotechnology journal,1 biotechnology law report,1 biotechnology letters,1 biotechnology progress,1 biotechnology reports,1 "biotehniška fakulteta, oddelek za lesarstvo",-1 biotekniikan neuvottelukunnan julkaisuja,-1 biotherapy: an international journal on biological agents,1 biotribology,1 biotropica,1 bipolar disorders,2 birch and the star,-1 bird behavior: an international and interdisciplinary multimedia journal,1 bird conservation international,1 bird study,1 birdlife,-1 birds,1 birkhäuser,1 birth defects research,1 birth defects research part b: developmental and reproductive toxicology,1 birth defects research part c: embryo today: reviews,1 birth-issues in perinatal care,1 bis oldenburg,1 bis publishers,-1 bit numerical mathematics,2 bitidningen,-1 biuletyn polskiego towarzystwa jezykoznawczego,1 bized,-1 biznes-informatika,-1 bja open,1 bjc reports,1 bjgp open,1 bjhs themes,1 bjog: an international journal of obstetrics and gynaecology,2 bjpsych advances,1 bjpsych international,-1 bjpsych open,1 bjr open,1 bjs open,1 bju international,2 bjui compass,1 black dog press,-1 black music research journal,2 black scholar,1 blackhorse publishing,1 blackwell munksgaard,1 blackwell verlag,2 bladder cancer,-1 bled econference,1 "bleeding, thrombosis and vascular biology",-1 blityri,-1 blockchain : research and applications,1 blockchain in healthcare today,-1 blood,3 blood advances,1 blood cancer discovery,1 blood cancer journal,2 blood cells molecules and diseases,1 blood coagulation and fibrinolysis,1 blood pressure,1 blood pressure monitoring,1 blood purification,1 blood reviews,1 blood transfusion,1 bloomsbury academic,2 bloomsbury education and childhood studies,-1 bloomsbury publishing india,-1 blucher design proceedings,-1 blue-green systems,-1 blues news,-1 blumea,1 blyttia,1 blätter für deutsche und internationale politik,1 bmb reports,1 bmc agriculture,-1 bmc anesthesiology,1 bmc biochemistry,1 bmc bioinformatics,1 bmc biology,2 bmc biophysics,1 bmc biotechnology,1 bmc cancer,1 bmc cardiovascular disorders,1 bmc chemistry,1 bmc clinical pathology,1 bmc complementary medicine and therapies,1 bmc dermatology,1 bmc developmental biology,1 bmc digital health,1 "bmc ear, nose and throat disorders",1 bmc ecology,1 bmc ecology and evolution,2 bmc emergency medicine,1 bmc endocrine disorders,1 bmc environmental science,1 bmc evolutionary biology,2 bmc gastroenterology,1 bmc genomic data,1 bmc genomics,1 bmc geriatrics,2 bmc health services research,2 bmc immunology,1 bmc infectious diseases,1 bmc international health and human rights,1 bmc materials,1 bmc medical education,1 bmc medical ethics,1 bmc medical genetics,1 bmc medical genomics,1 bmc medical imaging,1 bmc medical informatics and decision making,1 bmc medical research methodology,1 bmc medicine,2 bmc microbiology,1 bmc molecular and cell biology,1 bmc molecular biology,1 bmc musculoskeletal disorders,1 bmc nephrology,1 bmc neurology,1 bmc neuroscience,1 bmc nursing,2 bmc nutrition,1 bmc obesity,1 bmc ophthalmology,1 bmc oral health,1 bmc palliative care,1 bmc pediatrics,1 bmc pharmacology & toxicology,1 bmc physiology,1 bmc plant biology,1 bmc pregnancy and childbirth,1 bmc primary care,1 bmc proceedings,1 bmc psychiatry,2 bmc psychology,1 bmc public health,1 bmc pulmonary medicine,1 bmc research notes,1 bmc rheumatology,1 "bmc sports science, medicine & rehabilitation",1 bmc structural biology,1 bmc surgery,1 bmc systems biology,1 bmc urology,1 bmc veterinary research,1 bmc womens health,1 bmc zoology,1 bmemat,-1 bmgn : low countries historical review,1 bmj,2 bmj books,1 bmj case reports,1 bmj digital health & ai,-1 bmj evidence-based medicine,1 bmj global health,1 bmj health & care informatics,1 bmj innovations,1 bmj leader,1 bmj medicine,1 bmj mental health,1 bmj military health,1 bmj neurology open,1 "bmj nutrition, prevention & health",1 bmj oncology,1 bmj open,1 bmj open diabetes research and care,1 bmj open gastroenterology,1 bmj open ophthalmology,1 bmj open quality,1 bmj open respiratory research,1 bmj open sport & exercise medicine,1 bmj paediatrics open,1 bmj public health,1 bmj quality and safety,3 bmj sexual & reproductive health,1 bmj supportive & palliative care,1 "bmj surgery, interventions, & health technologies",1 bmva press,1 bnam,-1 bo ejeby förlag,1 board game studies journal online,1 boca,-1 bocagiana,-1 bochumer philosophisches jahrbuch für antike und mittelalter,1 bochumer studien zur philosophie,1 bodenkultur,1 body and society,3 body image,2 body politics,1 body sensor networks conference,-1 "body, movement and dance in psychotherapy: an international journal for theory, research and practice",1 "body, space and technology journal",1 boekengilde,-1 boer verlag,1 bofit discussion papers,-1 bofit policy brief,-1 bogens verden: tidskrift for litteratur og kultur,1 bogucki wydawnictwo naukowe,-1 bohemia: zeitschrift für geschichte und kunst der böhmischen länder,1 bokförlaget atlantis,1 bokförlaget bas,-1 bokförlaget nya doxa,1 bokförlaget signum,1 bokförlaget stolpe,-1 bokvännens bok,-1 boletim de ciencias geodesicas,1 boletim de estudos clássicos,1 boletim do centro de pesquisa de processamento de alimentos,1 boletim do instituto de pesca,1 boletim do museu paraense emílio goeldi : ciências humanas,1 boletin de investigaciones marinas y costeras,1 boletin de la asociacion de geografos espanoles,1 boletin de la real academia de la historia,1 boletin de la real academia espanola,1 boletin de la sociedad argentina de botanica,1 boletin de la sociedad botanica de mexico,1 boletin de la sociedad entomologica aragonesa,-1 boletin de la sociedad espanola de ceramica y vidrio,1 boletin de linguistica,1 boletín,-1 boletín de filología,2 boletín de la sociedad española de espeleología y ciencias del karst,-1 boletín de la sociedad matemática mexicana,1 boletín del museo chileno de arte precolombino,1 boletín del observatorio de comercio internacional,-1 bolgarskaja rusistika,1 bolletino dellunione matematica italiana: articoli di ricerca matematica,1 bollettino darte,1 bollettino dei classici,1 bollettino del centro camuno di studi preistorici,1 bollettino della badia greca di grottaferrata,1 bollettino della societa di studi valdesi,-1 bollettino della societa geologica italiana,1 bollettino della societa paleontologica italiana,1 bollettino di archeologia,1 bollettino di geofisica teorica ed applicata,1 bollettino di storia delle scienze matematiche,1 bollettino di studi latini,1 bollettino di studi sartriani,-1 bollettino storico piacentino,-1 bonacci,-1 bond law review,1 bondebladet,-1 bondeföretagaren,-1 bone,2 bone & joint open,1 bone joint research,1 bone marrow transplantation,1 bone reports,1 bone research,2 bongari,-1 bonner amerikanistische studien,1 bonner jahrbücher,1 bonner zoologische monographien,1 bononia university press,-1 book collector,-1 book history,2 book of abstracts (elearning and software for education),-1 "book of abstracts : dubrovnik conference on sustainable development of energy, water and environment systems",-1 book of abstracts : european meetings on cybernetics and systems research,-1 book publisher international,1 book-of-abstracts.com,-1 bookbird: a journal of international childrens literature,1 booknet oy,-1 bookplate journal,-1 books from the finnish political science association,-1 books on demand,-1 booktango,-1 bord de l'eau,-1 borderlands e-journal: new spaces in the humanities,1 borderline personality disorder and emotion dysregulation,1 borders in globalization review,1 bordón,1 boreal environment research,1 borealis,-1 boreas,2 boreas: uppsala studies in ancient mediterranean and near eastern civilizations,1 borec,-1 borgen,1 borsa istanbul review,-1 borè srl,-1 boréa bokförlag,1 bosque,1 boston university law review,1 botanica,1 botanica complutensis,-1 botanica marina,1 botanica pacifica,-1 botanica serbica,-1 botanical journal of the linnean society,1 botanical review,1 botanical studies,1 botany letters,1 botany-botanique,1 bothalia,1 botnia insider,-1 bottnisk kontakt,-1 botulinum journal,1 boundaries,-1 boundary 2: an international journal of literature and culture,2 boundary-layer meteorology,1 boydell & brewer,2 bozen-bolzano university press,-1 bps blackwell,1 brachytherapy,1 bradleya,-1 brain,3 brain and behavior,1 brain and cognition,2 brain and development,1 brain and language,2 brain and neuroscience advances,-1 brain and spine,1 brain behavior and evolution,1 brain behavior and immunity,1 brain communications,1 brain connectivity,1 brain disorders,1 brain imaging and behavior,1 brain impairment,1 brain injury,1 brain multiphysics,1 brain pathology,2 brain plasticity,-1 brain research,1 brain research bulletin,1 brain sciences,-1 brain stimulation,3 brain structure and function,1 brain topography,1 brain tumor pathology,1 "brain, behavior, & immunity : health",1 brain-apparatus communication,-1 brandeis university press,1 brandes & apsel verlag,1 bratislava medical journal-bratislavske lekarske listy,1 brazil publishing,-1 brazilian archives of biology and technology,1 brazilian dental journal,1 brazilian geographical journal,-1 brazilian journal of allergy and immunology,1 brazilian journal of biology,1 brazilian journal of chemical engineering,1 brazilian journal of development,1 brazilian journal of infectious diseases,-1 brazilian journal of medical and biological research,-1 brazilian journal of microbiology,1 brazilian journal of motor behavior,1 brazilian journal of operations & production management,-1 brazilian journal of otorhinolaryngology,1 brazilian journal of pharmaceutical sciences,-1 brazilian journal of physical therapy,1 brazilian journal of physics,1 brazilian journal of poultry science,1 brazilian journal of probability and statistics,1 brazilian journalism research,1 brazilian oral research,1 brazilian review of econometrics,1 brazilian review of finance,-1 breast,1 breast cancer,1 breast cancer research,2 breast cancer research and treatment,1 breast care,1 breast journal,1 breastfeeding medicine,1 breathe,-1 brecht yearbook,1 breeding science,1 breitkopf & härtel,1 brepols,2 bricoleur press,1 brics countries congress on computational intelligence,-1 brics law journal,-1 bridge : trends and traditions in translation and interpreting studies,-1 "bridge structures: assessment, design and construction",1 bridges conference proceedings,1 bridging baltic,-1 brief treatment and crisis intervention,1 briefings in bioinformatics,2 briefings in entrepreneurial finance,1 briefings in functional genomics,1 brigham young university,-1 brill,3 brill encyclopedia of early christianity online,1 brill nijhoff,2 brill research perspectives,-1 brill research perspectives in the law of the sea,1 brill research perspectives. law and religion,1 brill rodopi,2 brill schöningh,1 brill sense,1 brill's annual of afroasiatic languages and linguistics,-1 bristol and avon archaeology,1 bristol university press,1 britain and the world,-1 britannia: a journal of romano-british and kindred studies,1 british academy of management,-1 british accounting review,2 british actuarial journal,1 british and american studies,1 british archaeological reports: british series,1 british archaeological reports: international series,1 british birds,-1 british computer society,1 british dental journal,1 british ecological society,1 british educational research journal,3 british film institute publishing,1 british food journal,1 british institute of archaeology at ankara,-1 british institute of non-destructive testing,1 british journal for the history of philosophy,3 british journal for the history of science,3 british journal for the philosophy of science,3 british journal of aesthetics,3 british journal of anaesthesia,3 british journal of anaesthetic and recovery nursing,-1 british journal of applied science and technology,1 british journal of biomedical science,-1 british journal of canadian studies,1 british journal of cancer,2 british journal of cardiology,1 british journal of clinical pharmacology,2 british journal of clinical psychology,1 british journal of criminology,3 british journal of dermatology,3 "british journal of dermatology, supplement",1 british journal of developmental psychology,1 "british journal of education, society and behavioural science",1 british journal of educational psychology,2 british journal of educational studies,2 british journal of educational technology,2 british journal of general practice,2 british journal of guidance and counselling,1 british journal of haematology,2 british journal of health care management,1 british journal of health psychology,1 british journal of hospital medicine,1 british journal of industrial relations,2 british journal of leadership in public services,-1 british journal of learning disabilities,1 british journal of management,3 british journal of mathematical and statistical psychology,1 british journal of medicine and medical research,-1 british journal of middle eastern studies,2 british journal of music education,2 british journal of music therapy,1 british journal of neuroscience nursing,1 british journal of neurosurgery,1 british journal of nursing,-1 british journal of nutrition,2 british journal of occupational therapy,1 british journal of ophthalmology,3 british journal of oral and maxillofacial surgery,1 british journal of pharmacology,3 british journal of political science,3 british journal of politics and international relations,1 british journal of psychiatry,3 british journal of psychology,1 british journal of psychotherapy,1 british journal of radiology,1 british journal of religious education,2 british journal of social psychology,3 british journal of social work,3 british journal of sociology,3 british journal of sociology of education,3 british journal of special education,1 british journal of sports medicine,3 british journal of surgery,3 british journal of visual impairment,1 british journalism review,1 british library publishing,1 british medical bulletin,1 british microbiology research journal,-1 british museum press,1 british politics,1 british poultry science,1 british tax review,1 british wildlife,-1 british year book of international law,1 brittonia,1 brno studies in english,1 broad research in artificial intelligence neuroscience,-1 broadview press,1 brodogradnja,1 bronte studies,1 brookes publishing,1 brookings institution press,1 brookings papers on economic activity,1 brookings trade forum,1 brookings-wharton papers on financial services,1 brown journal of world affairs,-1 bruniana & campanelliana,1 bruno pini mathematical analysis seminar,-1 bruylant,1 bryn mawr classical review,1 bryobrothera,-1 bryobrotherella,-1 bryologist,1 bryophyte diversity & evolution,1 bräv,-1 brünner beiträge zur germanistik und nordistik,1 bsr policy briefing,-1 buckeye east asian linguistics,-1 budapesti corvinus egyetem,-1 budapesti m?szaki és gazdaságtudományi egyetem,-1 buddhist studies review,1 buddhist-christian studies,1 budkavlen,1 buffalo bulletin,1 buffalo law review,1 building and environment,2 building research and information,2 building research journal,-1 building services engineering research and technology,1 building simulation,1 building simulation applications bsa,-1 building simulation conference proceedings,-1 buildings,-1 buildings & cities,2 buildings and landscapes: journal of the vernacular architecture forum,1 built environment,1 built environment project and asset management,1 built heritage,1 built-environment sri lanka,1 bukarester beiträge zur germanistik,-1 buki vedi,-1 buletinul academiei de științe a republicii moldova : matematica,1 bulgarian astronomical journal,-1 bulgarian chemical communications,-1 bulgarian historical review,1 bulgarian journal of agricultural science,1 bulgarian journal of international economics and politics,-1 bulgarska etnologiia,-1 bulgarski ezik,1 bulletiini,-1 bulletin,-1 bulletin darcheologie marocaine,1 bulletin de correspondance hellenique,2 bulletin de l academie nationale de medecine,1 bulletin de l academie veterinaire de france,1 bulletin de l'institut d'egypte,1 bulletin de la socie?te? darche?ologie copte,1 bulletin de la societe de linguistique de paris,2 bulletin de la societe des sciences et des lettres de lodz,1 bulletin de la societe entomologique de france,-1 bulletin de la societe francaise degyptologie,1 bulletin de la societe geologique de france,1 bulletin de la societe historique et archeologique du perigord,1 bulletin de la societe internationale des etudes yourcenariennes,1 bulletin de la societe mathematique de france,1 bulletin de la societe prehistorique francaise,1 bulletin de la societe toulousaine detudes classiques,1 bulletin de la societe zoologique de france,1 bulletin de la société dégyptologie de genève,1 bulletin de la société linnéenne de provence,-1 bulletin de la société royale des sciences de liège,-1 bulletin de la société royale le vieux-liège,-1 bulletin de la société vaudoise des sciences naturelles,-1 bulletin de lecole francaise dextreme-orient,1 bulletin de linstitut francais darcheologie orientale du caire,1 bulletin de linstitut francais detudes andines,1 bulletin de litterature ecclesiastique,1 bulletin de philosophie medievale,1 bulletin des anglicistes médiévistes,1 bulletin des sciences mathematiques,1 bulletin du cancer,1 bulletin du cange,1 bulletin for international taxation,1 bulletin hispanique,2 bulletin knob,1 bulletin mathematique de la societe des sciences mathematiques de roumanie,1 bulletin monumental,1 bulletin of applied economics,1 bulletin of atmospheric science and technology,1 bulletin of canadian petroleum geology,1 bulletin of earthquake engineering,1 bulletin of economic research,1 bulletin of education and research,-1 bulletin of electrical engineering and informatics,1 bulletin of electrochemistry,1 bulletin of emergency and trauma,-1 bulletin of engineering geology and the environment,1 bulletin of entomological research,1 bulletin of environmental contamination and toxicology,1 bulletin of experimental biology and medicine,1 bulletin of faculty of physical therapy,1 bulletin of geography: socio-economic series,1 bulletin of geosciences,1 bulletin of glaciological research,-1 bulletin of hispanic studies,3 bulletin of indonesian economic studies,1 bulletin of insectology,1 bulletin of japan society for the science of design,-1 bulletin of kerala mathematics association,-1 bulletin of latin american research,1 bulletin of marine science,1 bulletin of materials science,1 bulletin of mathematical biology,2 bulletin of mathematical sciences,1 bulletin of mathematical sciences and applications,-1 bulletin of medieval canon law: new series,1 "bulletin of science, technology and society",1 bulletin of spanish studies,1 bulletin of symbolic logic,3 bulletin of the american astronomical society,-1 bulletin of the american mathematical society,2 bulletin of the american meteorological society,2 bulletin of the american museum of natural history,2 bulletin of the american schools of oriental research,1 bulletin of the american society of papyrologists,1 bulletin of the ancient orient museum,1 bulletin of the atomic scientists,1 bulletin of the australian mathematical society,1 bulletin of the belgian mathematical society-simon stevin,1 bulletin of the brazilian mathematical society,1 bulletin of the british ornithologists' club,-1 bulletin of the british society for the history of mathematics,1 bulletin of the center for children`s books,1 bulletin of the chemical society of ethiopia,-1 bulletin of the chemical society of japan,-1 bulletin of the comediantes,1 bulletin of the computational statistics of japan,1 bulletin of the council for research in music education,2 bulletin of the egyptian museum,1 bulletin of the european association for theoretical computer science,-1 bulletin of the european association of fish pathologists,1 bulletin of the geological society of finland,1 bulletin of the geological society of greece,1 bulletin of the geological survey of canada,1 bulletin of the history of medicine,2 bulletin of the indo-pacific prehistory association,1 bulletin of the institute of classical studies,1 bulletin of the institute of history and philology academia sinica,-1 bulletin of the international council for traditional music,-1 bulletin of the international statistical institute,1 bulletin of the iranian mathematical society,1 bulletin of the john rylands university library of manchester,1 bulletin of the korean chemical society,-1 bulletin of the korean mathematical society,1 bulletin of the lebedev physics institute,1 bulletin of the london mathematical society,2 bulletin of the malaysian mathematical sciences society,1 bulletin of the maritime institute in gdansk,-1 bulletin of the menninger clinic,-1 bulletin of the museum of far eastern antiquities,1 bulletin of the national museum of nature and science : series b botany,1 bulletin of the new zealand society for earthquake engineering,-1 bulletin of the peabody museum of natural history,1 bulletin of the polish academy of sciences: mathematics,1 bulletin of the polish academy of sciences: technical sciences,1 bulletin of the russian academy of sciences: physics,1 bulletin of the school of oriental and african studies : university of london,1 bulletin of the scientific instrument society,1 bulletin of the section of logic,1 bulletin of the seismological society of america,1 bulletin of the society of systematic biologists,-1 bulletin of the technical committee on learning technology,1 bulletin of the torrey botanical club,1 bulletin of the transilvania university of braşov. series vii social sciences. law,-1 bulletin of the veterinary institute in pulawy,1 bulletin of the world health organization,3 bulletin of volcanology,1 bulletin of zoological nomenclature,-1 bulletin suisse de linguistique appliquee,1 bulletin trimestriel du trésor de liege,-1 bulletins et memoires de la societe danthropologie de paris,-1 bullettino dell'istituto storico italiano per il medio evo,1 bullettino della commissione archeologica comunale di roma,1 bulzoni,1 bunseki kagaku,-1 bunyan studies,1 burleigh and dodds science publishing,-1 burlington magazine,3 burnout research,1 burns,1 burns and trauma,1 burns open,1 business & society,-1 business & society,3 business analyst,-1 business and human rights journal,1 business and information systems engineering,2 business and management,-1 business and management research,-1 business and management studies,-1 business and politics,1 business and professional communication quarterly,1 business and professional ethics journal,1 business and society review,1 business case journal,-1 business creativity and the creative economy,-1 business education & accreditation,-1 business ethics and leadership,-1 business ethics quarterly,2 "business ethics, the environment & responsibility",1 business excellence,-1 business history,2 business history review,3 business horizons,1 business information review,-1 business law review,1 business lawyer,1 business perspectives and research,1 business process management journal,1 business research quarterly,1 business strategy & development,1 business strategy and the environment,2 business strategy review,1 business strategy series,1 business systems research,-1 "business, management and education",-1 businesses,-1 butterworth-heinemann,1 bwk,1 bwrc publications,-1 by : oppikirjat,-1 by : tekniset ohjeet,-1 bya nytt,-1 byron journal,1 bysantin tutkimuksen seura,-1 byu studies quarterly,-1 byzantiaka,1 byzantina symmeikta,-1 byzantine and modern greek studies,2 byzantinische forschungen,1 byzantinische zeitschrift,2 byzantinoslavica,1 byzantion: revue internationale des etudes byzantines,3 báo giáo dục,-1 bärenreiter-verlag,1 béascna,-1 böhlau verlag,2 "bölcsészettudományi kutatóközpont, irodalomtudományi intézet",-1 bøygen,-1 bückle & böhm,-1 bürgerrechte & polizei,-1 c theory,1 c'est bon,-1 c.,-1 c.a. reitzel,1 c.f. müller,1 c.r.i.n.: cahiers de recherche des instituts néerlandais de langue et de littérature française,1 c21,1 ca' foscari japanese studies,1 ca: a cancer journal for clinicians,2 caai artificial intelligence research,1 caai transactions on intelligence technology,-1 "cab reviews: perspectives in agriculture, veterinary science, nutrition and natural resources",1 cabi,1 cactus tourism journal,-1 cacucci editore,-1 caddis press,1 cadence user conference,-1 caderno de squibs,-1 cadernos de estudos sociais,-1 cadernos de etnolingüística,-1 cadernos de linguística,-1 cadernos de literatura brasileira,1 cadernos de pesquisa,1 cadernos de saude publica,1 cadernos de traducao,1 cadmo,-1 cadmus,-1 caesaraugusta,1 caesarodunum,1 cahiers afls,1 "cahiers alsaciens darcheologie, dart et dhistoire",1 cahiers archaeologiques,1 cahiers de biologie marine,1 cahiers de civilisation espagnole contemporaine,1 cahiers de civilisation medievale,1 cahiers de droit europeen,2 cahiers de droit fiscal international,-1 cahiers de geographie de quebec,1 cahiers de l'institut du moyen-âge grec et latin,1 cahiers de la documentation,-1 cahiers de la recherche sur l´éducation et les savoirs,1 cahiers de lassociation internationale des etudes francaises,1 cahiers de lexicologie,1 cahiers de linguistique asie orientale,2 cahiers de linguistique francaise,1 cahiers de linguistique theorique et appliquee,1 cahiers de littérature orale,1 cahiers de méthodologie juridique,-1 cahiers de nutrition et de dietetique,1 cahiers de praxematique,1 cahiers de topologie et geometrie differentielle categoriques,1 cahiers des ameriques latines,1 cahiers des etudes anciennes,1 cahiers des religions africaines,1 cahiers detudes africaines,1 cahiers detudes hispaniques medievales,1 cahiers dextreme-asie,1 cahiers dhistoire et de philosophie des sciences,1 cahiers du centre detudes chypriotes,1 cahiers du centre gustave glotz: revue dhistoire ancienne,1 "cahiers du centre interdisciplinaire de recherches en histoire, lettres et langues",-1 cahiers du cinema,1 cahiers du genre,1 cahiers du monde russe,2 cahiers déconomie politique,1 cahiers détudes lévinassiennes,1 cahiers ferdinand de saussure,1 cahiers internationaux de sociolinguistique,-1 cahiers internationaux de symbolisme,1 cahiers jean giraudoux,1 cahiers mondes anciens,1 cahiers naturalistes,1 cahiers victoriens et edouardiens,1 cahiers voltaire,1 cahiers élisabéthains: a biannual journal of english renaissance studies,1 cairo papers in social science,-1 caister academic press,-1 cal lab,-1 calcified tissue international,1 calcolo,1 calculus of variations and partial differential equations,2 calcutta statistical association bulletin,1 caldasia,1 calico,1 calidoscopio,1 california agriculture,1 california cooperative oceanic fisheries investigations reports,1 california fish and game,1 california history,1 california law review,2 california linguistic notes,-1 california management review,2 california western international law journal,1 call center magazine,-1 callaloo,1 calonian kutsu,-1 calphad: computer coupling of phase diagrams and thermochemistry,1 calumet,-1 calvin theological journal,1 cambria press,1 cambrian medieval celtic studies,1 cambridge anthropology,1 cambridge archaeological journal,3 cambridge classical journal,2 cambridge forum on ai : law and governance,-1 cambridge imperial and post-colonial studies series,3 cambridge international law journal,1 cambridge journal of china studies,-1 cambridge journal of economics,1 cambridge journal of education,1 cambridge journal of eurasian studies,1 cambridge journal of international and comparative law,1 cambridge journal of mathematics,1 cambridge journal of postcolonial literary inquiry,1 "cambridge journal of regions, economy and society",2 cambridge law journal,3 cambridge occasional papers in linguistics,-1 cambridge opera journal,3 cambridge prisms : extinction,-1 cambridge prisms : water,1 cambridge quarterly,2 cambridge quarterly of healthcare ethics,1 cambridge review of international affairs,1 cambridge scholars publishing,1 cambridge scientific publishers ltd,1 cambridge studies in advanced mathematics,1 cambridge studies in linguistics,1 cambridge university press,3 cambridge yearbook of european legal studies,3 camden house,1 camera obscura,2 camera praehistorica,1 caminhos,-1 caminhos romanos,-1 campbell systematic reviews,1 campisano editore,-1 campo das letras,1 campus verlag,2 canadian academy of child and adolescent psychiatry. journal,1 canadian aeronautics and space journal,1 canadian applied mathematics quarterly,1 canadian association of radiologists journal-journal de l association canadienne des radiologistes,1 canadian bulletin of medical history,1 canadian business law journal,1 canadian conference on artificial intelligence,-1 canadian conservation institute,1 canadian entomologist,1 canadian family physician,1 canadian field-naturalist,1 canadian food studies,-1 canadian foreign policy,1 canadian geographer-geographe canadien,1 canadian geotechnical journal,1 canadian historical review,1 canadian human-computer communications society (chccs),-1 "canadian institute of mining, metallurgy and petroleum",1 canadian international journal of social science,-1 canadian journal of administrative sciences,1 canadian journal of african studies,1 canadian journal of agricultural economics-revue canadienne d agroeconomie,1 canadian journal of anesthesia,1 canadian journal of animal science,1 canadian journal of archaeology,1 canadian journal of behavioural science-revue canadienne des sciences du comportement,1 canadian journal of cardiology,1 canadian journal of career development,1 canadian journal of chemical engineering,1 canadian journal of chemistry,-1 canadian journal of civil engineering,1 canadian journal of clinical pharmacology,-1 canadian journal of communication,1 canadian journal of community mental health,1 canadian journal of counselling,1 canadian journal of criminology and criminal justice,1 canadian journal of development studies-revue canadienne d etudes du developpement,1 canadian journal of diabetes,1 canadian journal of dietetic practice and research,1 canadian journal of disability studies,1 canadian journal of earth sciences,1 canadian journal of economics,1 canadian journal of education,1 canadian journal of educational administration and policy,1 canadian journal of electrical and computer engineering,-1 canadian journal of emergency medicine,1 canadian journal of european and russian studies,1 canadian journal of experimental psychology-revue canadienne de psychologie experimentale,1 canadian journal of family law,1 canadian journal of film studies-revue canadienne d etudes cinematographiques,1 canadian journal of fisheries and aquatic sciences,2 canadian journal of forest research-revue canadienne de recherche forestiere,2 canadian journal of higher education,1 canadian journal of history-annales canadiennes dhistoire,1 canadian journal of human sexuality,1 canadian journal of infectious diseases and medical microbiology,1 canadian journal of information and library science-revue canadienne des sciences de l information et de bibliotheconomie,1 canadian journal of law and jurisprudence: an international journal of legal thought,1 canadian journal of law and society-revue canadienne de droit et societe,1 canadian journal of learning and technology,1 canadian journal of linguistics-revue canadienne de linguistique,1 canadian journal of mathematics-journal canadien de mathematiques,1 canadian journal of microbiology,1 canadian journal of music therapy,1 canadian journal of native studies,1 canadian journal of neurological sciences,1 canadian journal of nursing research,1 canadian journal of occupational therapy,1 canadian journal of ophthalmology-journal canadien d ophtalmologie,1 canadian journal of pathology,-1 canadian journal of philosophy,2 "canadian journal of philosophy, supplementary volume",1 canadian journal of physics,1 canadian journal of physiology and pharmacology,1 canadian journal of plant pathology,-1 canadian journal of plant science,1 canadian journal of plastic surgery,1 canadian journal of political science-revue canadienne de science politique,1 canadian journal of program evaluation,1 canadian journal of psychiatry-revue canadienne de psychiatrie,1 canadian journal of psychoanalysis,1 canadian journal of public health-revue canadienne de sante publique,1 canadian journal of remote sensing,1 canadian journal of rural medicine-journal canadien de la medecine rurale,1 canadian journal of school psychology,1 "canadian journal of science, mathematics and technology education",1 canadian journal of sociology-cahiers canadiens de sociologie,1 canadian journal of soil science,1 canadian journal of statistics-revue canadienne de statistique,1 canadian journal of surgery,1 canadian journal of urban research,-1 canadian journal of urology,1 canadian journal of veterinary research-revue canadienne de recherche veterinaire,1 canadian journal of women and the law-revue femmes et droit,1 canadian journal of zoology-revue canadienne de zoologie,1 canadian journal on aging,1 canadian literature,2 canadian mathematical bulletin-bulletin canadien de mathematiques,1 canadian medical association journal,1 canadian medical education journal,1 canadian metallurgical quarterly,1 canadian military history,1 canadian mineralogist,1 canadian mining journal,1 canadian modern language review-revue canadienne des langues vivantes,1 canadian nuclear society,-1 canadian online journal of queer studies in education,1 canadian poetry,1 canadian psychology-psychologie canadienne,1 canadian public administration-administration publique du canada,1 canadian public policy,1 canadian respiratory journal,1 canadian review of american studies,1 canadian review of comparative literature,1 canadian review of sociology-revue canadienne de sociologie,1 canadian scholars press inc.,1 canadian slavonic papers: an interdisciplinary journal devoted to central and eastern europe,2 canadian social science,-1 canadian tax journal,1 canadian theatre review,2 canadian veterinary journal-revue veterinaire canadienne,1 canadian water resources journal,1 canadian woman studies,1 canadian yearbook of international law,1 canadian-american slavic studies,1 cancer,2 cancer & metabolism,1 cancer and metastasis reviews,1 cancer biology and therapy,1 cancer biomarkers,1 cancer biotherapy and radiopharmaceuticals,1 cancer causes and control,1 cancer cell,3 cancer cell international,1 cancer chemotherapy and pharmacology,1 cancer communications,-1 cancer control,1 cancer cytopathology,1 cancer diagnosis & prognosis,-1 cancer discovery,3 cancer epidemiology,1 cancer epidemiology biomarkers and prevention,2 cancer gene therapy,1 cancer genetics,1 cancer genomics and proteomics,1 cancer growth and metastasis,-1 cancer imaging,1 cancer immunology immunotherapy,1 cancer immunology research,2 cancer informatics,1 cancer investigation,1 cancer journal,1 cancer letters,1 cancer management and research,1 cancer medicine,1 cancer microenvironment,1 cancer nanotechnology,1 cancer nursing,2 cancer nursing practice,-1 cancer prevention research,1 cancer radiotherapie,1 cancer reports,1 cancer research,3 cancer research and treatment,1 cancer research communications,1 cancer science,1 cancer surveys,1 cancer treatment and research communications,1 cancer treatment reviews,1 cancers,-1 candavia,-1 candide: journal for architectural knowledge,1 candlin & mynard epublishing,-1 candollea,1 canid biology & conservation,1 canine medicine and genetics,1 cannabis and cannabinoid research,1 canterbury press,-1 canut yayinevi,-1 capacious,1 capital & class,1 capital markets law journal,1 capitalism and society,1 "capitalism, nature, socialism",2 capitulum,-1 caplletra,1 cappelen damm,1 capra: cave archaeology and palaeontology research archive,1 capsa historiae,-1 captus press inc.,1 caravelle: cahiers du monde hispanique et luso: bresilien,1 carbohydrate chemistry,1 carbohydrate polymer technologies and applications,1 carbohydrate polymers,2 carbohydrate research,1 carbon,2 carbon and climate law review,1 carbon balance and management,1 carbon capture science & technology,1 carbon footprints,1 carbon letters,1 carbon management,1 carbon neutrality,1 carbon research,1 carbon resources conversion,1 carbon trends,1 carbon: science and technology,-1 carbonates and evaporites,1 carcinogenesis,1 cardiac electrophysiology clinics,-1 cardiac failure review,1 cardiff university press,-1 cardiff university welsh school of architecture,-1 cardiogenetics,-1 cardiology,1 cardiology and therapy,1 cardiology clinics,1 cardiology in review,1 cardiology in the young,1 cardiology journal,1 cardiology plus,-1 cardiorenal medicine,-1 cardiovascular and hematological agents in medicinal chemistry,1 cardiovascular and hematological disorders - drug targets,1 cardiovascular and interventional radiology,1 cardiovascular diabetology,1 cardiovascular digital health journal,1 cardiovascular drugs and therapy,1 cardiovascular endocrinology,1 cardiovascular intervention and therapeutics,1 cardiovascular journal of africa,1 cardiovascular pathology,1 cardiovascular research,2 cardiovascular revascularization medicine,1 cardiovascular therapeutics,1 cardiovascular therapy and prevention,1 cardiovascular toxicology,1 cardiovascular ultrasound,1 cardozo arts & entertainment law journal,1 cardozo law review,1 career development and transition for exceptional individuals,1 career development international,1 career development quarterly,2 career planning and adult development journal,-1 carfax publishing,1 caribbean journal of science,1 caries research,2 caring for the ages,1 carl hanser verlag,1 carl heymanns verlag,1 carl nielsen studies,1 carlsson bokförlag,1 carnegie mellon university press,1 carnets de geologie,1 carnets du cediscor,1 carocci editore,1 carpathian journal of earth and environmental sciences,1 carpathian journal of mathematics,-1 carrefours de leducation,1 carte di viaggio,-1 cartilage,1 cartographic journal,1 cartographic perspectives,1 cartographica,1 cartography and geographic information science,2 carts international technical conference,-1 carus books,-1 caryologia,1 cas proceedings,1 casa editrice università la sapienza,1 casalc review,1 casas internacional,-1 cascade books,-1 cascadilla press,1 case reports in cardiology,-1 case reports in dentistry,-1 case reports in gastrointestinal medicine,-1 case reports in genetics,-1 case reports in hematology,-1 case reports in medicine,-1 case reports in nephrology and dialysis,-1 case reports in neurological medicine,1 case reports in neurology,1 case reports in obstetrics and gynecology,-1 case reports in oncology,-1 case reports in ophthalmology,1 case reports in orthopedics,-1 case reports in pediatrics,1 case reports in plastic surgery & hand surgery,1 case reports in psychiatry,1 case reports in surgery,1 case research journal,-1 case studies in chemical and environmental engineering,1 case studies in construction materials,1 case studies in nondestructive testing and evaluation,1 case studies in sport and exercise psychology,1 case studies in the environment,1 case studies in thermal engineering,1 case studies journal,-1 case studies on transport policy,1 casopis pro moderni filologii,1 caspar forlag,1 cassiodorus: rivista di studi sulla tarda antichita,1 castanea,1 catalan journal of communication & cultural studies,-1 catalan journal of linguistics,1 catalan review,1 cataloging and classification quarterly,1 catalysis for sustainable energy,-1 catalysis in green chemistry and engineering,1 catalysis in industry,-1 catalysis letters,1 catalysis reviews: science and engineering,2 catalysis science and technology,1 catalysis surveys from asia,-1 catalysis today,1 catalyst,1 catalysts,-1 catena,1 cathedra: quarterly for the history of eretz-israel,1 catheterization and cardiovascular interventions,1 catholic biblical quarterly,2 catholic historical review,2 catholic university law review,1 catholic university of america press,1 catholic university of murcia,-1 catholica: vierteljahresschrift für ökumenische theologie,1 cato journal,1 cattle practice,1 catwalk,-1 caucasus institute,-1 caucasus survey,1 cauce: revista de filologia y su didactica,1 cauda pavonis: studies in hermeticism,1 cauriensia,1 "causal productions pty, limited",-1 cave and karst science,1 cbd technical series,-1 cbe: life sciences education,1 ccamlr science,1 ccf transactions on pervasive computing and interaction,1 cci press,1 ccr insights,-1 ccs chemistry,1 ce/papers,-1 cea critic,1 ceas insights,-1 ceas space journal,1 cedam,1 cedla latin america studies,1 cefr journal : research and practice,-1 cei-bois,-1 celebrity studies,1 celestial mechanics and dynamical astronomy,1 cell,3 cell adhesion and migration,1 cell and bioscience,1 cell and tissue banking,1 cell and tissue biology,-1 cell and tissue research,1 cell biochemistry and biophysics,1 cell biochemistry and function,1 cell biology and toxicology,1 cell biology international,1 cell calcium,1 cell chemical biology,2 cell communication and adhesion,1 cell communication and signaling,1 cell cycle,1 cell death and differentiation,2 cell death and disease,1 cell death discovery,1 cell discovery,1 cell division,1 cell genomics,1 cell host and microbe,3 cell journal,1 cell metabolism,3 cell proliferation,1 cell reports,3 cell reports : methods,1 cell reports medicine,1 cell reports physical science,1 cell research,2 cell stem cell,3 cell stress,-1 cell stress and chaperones,1 cell structure and function,1 cell surface,-1 cell systems,2 cell transplantation,1 cells,-1 cells and development,1 cells tissues organs,1 cellular and molecular bioengineering,1 cellular and molecular biology,-1 cellular and molecular biology letters,1 cellular and molecular gastroenterology and hepatology,2 cellular and molecular immunology,1 cellular and molecular life sciences,2 cellular and molecular neurobiology,1 cellular immunology,1 cellular microbiology,1 cellular oncology,1 cellular physiology and biochemistry,1 cellular polymers,1 cellular reprogramming,1 cellular signalling,1 cellular therapy and transplantation,-1 cellulose,2 cellulose chemistry and technology,1 cellulose communications,-1 celovek i obrazovanie,-1 celtica: journal of the school of celtic studies,1 celulosa y papel,-1 cement,1 cement and concrete composites,3 cement and concrete research,3 cement wapno beton,1 cengage gale,-1 cengage learning,1 cengage learning asia,-1 centar za crkvene studije,-1 centar za demokraciju i pravo miko tripalo,-1 centar za istraživanje i razvoj upravljanja d.o.o.,-1 centaurus,1 center for global nonkilling,-1 center for international forestry research,-1 center for transatlantic relations,-1 centr soxraneniya kul`turnogo naslediya,-1 central & eastern european software engineering conference in russia,-1 central and eastern european migration review,1 central and eastern european review,1 central asia and the caucasus,-1 central asia program,-1 central asian affairs,-1 central asian economic review,-1 central asian journal of water research,-1 central asian survey,1 central asiatic journal,1 central conservatory of music press,-1 central europe,2 central european annals of clinical research,-1 central european astrophysical bulletin,1 central european history,3 central european journal of communication,1 central european journal of comparative law,1 central european journal of energetic materials,-1 central european journal of immunology,-1 central european journal of international & security studies,1 central european journal of nursing and midwifery,1 central european journal of operations research,1 central european journal of public health,1 central european management journal,1 central european neurosurgery,1 central european political studies review,1 central european public administration review,-1 central european university press,1 central nervous system agents in medicinal chemistry,1 centre d études européennes,-1 centre d'études sur les jeunes et les médias,-1 centre des hautes études internationales d'informatique documentaire,-1 centre d´études sur les médias,-1 centre détudes du xixe siècle joseph sable,1 centre for economic and regional studies of the hungarian academy of sciences,-1 centre for lifelong learning services,-1 centre international d'étude du dix-huitième siècle,-1 centre liégeois d´édition scientifique,-1 centre on foreign policy and federalism,-1 centrepiece,-1 centria : oppimateriaaleja,-1 centria : puheenvuoroja,-1 centria : raportteja ja selvityksiä,-1 centria : tutkimuksia,-1 centria bulletin,-1 centria reports,-1 centro congressi internazionale,-1 centro de estudios andaluces,1 centro de estudos de história religiosa,-1 centro de investigaciones sociologicas,-1 centro di cultura e storia amalfitana,-1 centro journal,1 centro matemática aplicada - universidade açores,-1 centrum för arbetarhistoria i landskrona,-1 centrum för feministiska samhällsstudier,-1 centrum wiskunde & informatica,-1 cepal review,1 cephalalgia,2 cephalalgia reports,1 ceps journal,1 ceramic engineering and science proceedings,1 ceramic transactions,1 ceramics,-1 ceramics international,1 ceramics technical,1 ceramics-silikaty,1 ceramics: art and perception,1 cercle ferdinand de saussure,1 cereal chemistry,1 cereal foods world,1 cereal research communications,1 cerebellum,1 "cerebral circulation, cognition and behavior",1 cerebral cortex,3 cerebral cortex communications,1 cerebrovascular diseases,1 cerebrovascular diseases extra,1 cern - the european organization for nuclear research,-1 cern ideasquare journal of experimental innovation,1 cern reports,1 cern-proceedings,-1 cerne,1 ceroart,1 cervantes,1 ces working papers,1 cesifo economic studies,1 ceska a slovenska neurologie a neurochirurgie,1 ceska literatura,2 cesko-slovenska patologie a soudni lekarstvi,-1 ceskoslovenska psychologie,-1 cesky casopis historicky: the czech historical review,1 cesky lid: ethnologicky casopis,1 ceu medievalia,1 ceu political science journal,-1 ceu press,1 ceur workshop proceedings,1 cfe conference papers series,-1 cfi: ceramic forum international,1 ch. links verlag : ein imprint von aufbau verlage,-1 chairudo herusu,-1 chalcogenide letters,1 challenges,-1 chalmers tekniska högskola,-1 chance,1 chandos,-1 change and adaptation in socio-ecological systems,1 change over time,1 change: the magazine of higher learning,1 changing english,1 changing perspectives and approaches in contemporary teaching,1 changjiang xueshu,-1 changshu gao-zhuan xuebao,-1 changzhi xueyuan xuebao,-1 channel view publications,1 channels,1 chaos,1 chaos and complexity letters,1 chaos solitons and fractals,1 chaotic modeling and simulation journal,1 chapman and hall/crc,1 charles c. thomas publisher,-1 charles scribner's sons,-1 charrette,1 chartarum amici,-1 charter club,-1 chasedae keonbeojeonseu jeongbo seobiseu gisul nonmunji,-1 chasqui: revista de literatura latinoamericana,1 chateau-gaillard,1 chatto & windus,1 chaucer review,2 check list,1 cheiron,1 cheiron: materiali e strumenti di aggiornamento storiografico,1 chelonian conservation and biology,1 chem,3 chem-bio informatics journal,1 chembiochem,1 chemcatchem,1 chemelectrochem,1 chemengineering,-1 chemical and biochemical engineering quarterly,1 chemical and biological technologies in agriculture,1 chemical and engineering news,1 chemical and petroleum engineering,1 chemical and pharmaceutical bulletin,1 chemical and process engineering-inzynieria chemiczna i procesowa,1 chemical biology and drug design,1 chemical bulletin of politehnica university of timisoara : series of chemistry and environmental engineering,-1 chemical communications,2 chemical data collections,-1 chemical engineering,1 chemical engineering & process techniques,-1 chemical engineering and processing,1 chemical engineering and technology,1 chemical engineering communications,1 chemical engineering education,1 chemical engineering journal,3 chemical engineering journal advances,1 chemical engineering progress,1 chemical engineering research and design,1 chemical engineering science,3 chemical engineering science x,1 chemical engineering transactions,1 chemical fibers international,-1 chemical geology,2 chemical immunology,1 chemical industry and chemical engineering quarterly,1 chemical informatics,-1 chemical innovation,1 chemical journal of chinese universities: chinese,-1 chemical papers,1 chemical physics,1 chemical physics impact,1 chemical physics letters,1 chemical physics letters x,1 chemical physics reviews,1 chemical processing,1 chemical product and process modeling,1 chemical record,1 chemical research in chinese universities,-1 chemical research in toxicology,2 chemical reviews,3 chemical science,3 chemical senses,1 chemical society reviews,3 chemical vapor deposition,1 chemical week,1 chemicke listy,-1 chemico-biological interactions,1 chemie der erde-geochemistry,1 chemie in unserer zeit,-1 chemie ingenieur technik,1 chemija,-1 chemistry,-1 chemistry africa,-1 chemistry and biodiversity,1 chemistry and ecology,1 chemistry and industry,1 chemistry and physics of carbon,1 chemistry and physics of lipids,1 chemistry and technology of fuels and oils,1 chemistry education research and practice,1 chemistry for sustainable development,-1 chemistry letters,1 chemistry methods,1 chemistry of heterocyclic compounds,1 chemistry of materials,3 chemistry of natural compounds,1 chemistry teacher international,-1 chemistry world,-1 chemistry: a european journal,2 chemistry: an asian journal,1 chemistryopen,1 chemistryselect,1 chemkon,1 chemmedchem,1 chemnanomat,1 chemoecology,1 chemometrics and intelligent laboratory systems,1 chemosensors,-1 chemosensory perception,1 chemosphere,1 chemotherapy,1 chemphotochem,1 chemphyschem,1 chempluschem,1 chemsuschem,2 chemsystemschem,1 chemtec publishing,-1 chenia,-1 cherepoveckij gosudarstvenny`j universitet,-1 cheske vysoke ucheni technicke v praze,-1 chest,2 chiasma,1 chiasmi international,1 chicago journal of theoretical computer science,1 chicago linguistic society,1 chicago review,1 chigiana: rassegna annuale di studi musicologici,1 chikuma shobo,-1 child & youth services,1 child abuse and neglect,1 child abuse review,1 child and adolescent mental health,1 child and adolescent obesity,1 child and adolescent psychiatric clinics of north america,1 child and adolescent psychiatry and mental health,1 child and adolescent social work journal,1 child and family behavior therapy,1 child and family law quarterly,2 child and family social work,2 child and youth care forum,1 child care health and development,1 child care in practice,1 child development,3 child development perspectives,1 child indicators research,1 child language teaching and therapy,1 child maltreatment,1 child neurology open,1 child neuropsychology,1 child protection and practice,1 child psychiatry and human development,1 child welfare,1 childhood,3 childhood & philosophy,1 childhood education,1 childhood in the past,1 childhood obesity,1 childhood vulnerability journal,-1 childlinks,-1 children,-1 children & schools,-1 children and society,1 children and youth services review,1 children australia,1 children in war: the international journal of evacuee and war child studies,1 children's geographies,1 children's literature,1 "children, youth and environments",1 childrens health care,1 childrens literature in education,2 children’s literature association quarterly,1 childs nervous system,1 chilean journal of agricultural research,1 chilin poltteessa,-1 chimia,1 chimica oggi-chemistry today,-1 china agricultural economic review,1 china and world economy,1 china architecture and building press,-1 china cdc weekly,-1 china communications,1 china economic review,1 china finance review international,1 china foundry,-1 china information,1 china journal,3 china journal of social work,1 china ocean engineering,1 china ocean university press,-1 china perspectives,1 china petroleum processing and petrochemical technology,1 china pulp and paper,-1 china quarterly,2 china quarterly of international strategic studies,1 china renmin university press,-1 china report,1 china review international: a journal of reviews of scholarly literature in chinese studies,1 china review: an interdisciplinary journal on greater china,1 china social sciences press,1 china studies,2 china summer workshop on information management,-1 china university of political science and law press,-1 china-an international journal,-1 china-eu law journal,1 china-usa business review,-1 chinese (taiwan) yearbook of international law and affairs,1 chinese annals of mathematics series b,1 chinese as a second language research,1 chinese as a second language.,1 chinese business review,-1 chinese chemical letters,-1 chinese clinical oncology,1 chinese control and decision conference,-1 chinese control conference,-1 chinese education and society,1 chinese geographical science,1 chinese journal of aeronautics,1 chinese journal of analytical chemistry,-1 chinese journal of applied entomology,-1 chinese journal of applied linguistics,1 chinese journal of cancer research,-1 chinese journal of catalysis,1 chinese journal of chemical engineering,1 chinese journal of chemical physics,1 chinese journal of chemistry,1 chinese journal of communication,1 chinese journal of dental research,1 chinese journal of electrical engineering,-1 chinese journal of electronics,-1 chinese journal of environmental law,1 chinese journal of geophysics: chinese edition,1 chinese journal of inorganic chemistry,-1 chinese journal of integrative medicine,1 chinese journal of international law,1 chinese journal of international politics,1 chinese journal of mechanical engineering,1 chinese journal of mechanical engineering : additive manufacturing frontiers,-1 chinese journal of oceanology and limnology,1 chinese journal of organic chemistry,-1 chinese journal of pathophysiology,1 chinese journal of pediatrics,-1 chinese journal of physics,1 chinese journal of physiology,1 chinese journal of structural chemistry,-1 chinese journal of urban and environmental studies,-1 chinese language and discourse,1 chinese law and government,1 chinese librarianship,1 chinese management studies,1 chinese medical journal,1 chinese medical sciences journal,1 chinese optics letters,1 chinese physics b,1 chinese physics c,1 chinese physics letters,1 chinese political science review,1 chinese science and technology translators journal,1 chinese semiotic studies,1 chinese sociological review,1 chinese studies in history,1 chinese university press,1 chirality,1 chiron,1 chiropractic & manual therapies,1 chirurg,1 chirurgia,1 chirurgie de la main,1 choonpa erekutoronikusu no kiso to oyo ni kansuru shinpojiumu,-1 choregia,1 choreographic practices,2 choros international dance journal,1 chrismon plus,-1 christian bioethics,1 christian ejlers´s forlag,1 christian higher education,1 christian perspectives on science and technology,1 christian-albrechts-universität zu kiel,-1 chromatographia,1 chromosoma,1 chromosome research,1 chronic diseases and injuries in canada,1 chronic diseases and translational medicine,1 chronic illness,1 chronica mundi,1 chronicle of higher education,1 chronique degypte,1 chroniques italiennes,1 chronobiology international,1 chronos-verlag,-1 chronotopos,-1 chulalongkorn university,-1 chungara: revista de antropologia chilena,1 church archaeology,1 church history,2 church history and religious culture,1 "church, communication and culture",1 chydenius,-1 chôra,1 cib conferences,-1 cib w78 conference series,-1 ciberletras,1 cice guidelines,1 ciceroniana,1 ciceroniana on line,1 "cidades, comunidades e territórios",-1 cidoc annual conference,-1 cie internationale beleuchtungskommission,-1 ciela,-1 ciencia e agrotecnologia,1 ciencia e ingeniería,-1 ciencia e investigacion agraria,1 ciencia e saude coletiva,1 ciencia e tecnica vitivinicola,1 ciencia e tecnologia de alimentos,1 ciencia ergo sum,1 ciencia florestal,1 ciencias marinas,1 cierre edizioni,-1 cifile journal of international law,1 cigre international colloquium on low frequency electromagnetic fields,-1 cigre science & engineering,1 ciji daxue jiaoyu yanjiu xuekan,-1 cim journal,1 cim series in mathematical sciences,1 cin: computers informatics nursing,2 cineaste,-1 cineclube avanca,-1 cineforum,-1 cinema,1 cinemas d'amerique latine,-1 cinemas: revue detudes cinematographiques,1 cinta de moebio,1 cinéma & cie,1 cirad,1 circuit,1 circuit world,1 circuits systems and signal processing,1 circular economy,1 circular economy and sustainability,1 circulation,3 circulation journal,1 circulation reports,1 circulation research,3 circulation. genomic and precision medicine,1 circulation: arrhythmia and electrophysiology,1 circulation: cardiovascular imaging,2 circulation: cardiovascular interventions,2 circulation: cardiovascular quality and outcomes,1 circulation: heart failure,2 circulo de linguistica aplicada a la comunicacion,1 circumpolar health supplements,-1 circus-zeitung,-1 cired - open access proceedings journal,1 cired workshop proceedings,1 ciriec españa : revista jurídica de economía social y cooperativa,-1 ciriec-españa,-1 cirp annals: manufacturing technology,1 cirp journal of manufacturing science and technology,2 cirugia espanola,1 cirugia y cirujanos,1 cisa publisher,-1 citeaux: commentarii cistercienses,1 cithara : essays in the judeo-christian tradition,1 cities,2 cities & health,1 cities and the environment,-1 citizen science,2 citizenship studies,2 citizenship teaching and learning,1 "citizenship, social and economics education",1 città e storia,-1 city,1 city and community,1 city and society,2 city university of hong kong,-1 "city, culture and society",1 "city, territory and architecture",1 cité de l´architecture et du patrimoine,-1 cité du design – école supérieure d’art et design (epcc),-1 civil and environmental engineering,-1 civil engineering,1 civil engineering and architecture,1 civil engineering and environmental systems,1 civil engineering journal,-1 civil justice quarterly,1 civil szemle,1 civil war history,1 civil wars,1 civil-comp press,-1 civilisations,1 civitas hominibus,-1 civitas: revista espanola de derecho europeo,1 ciwil,-1 ciência da madeira,-1 cjc open,1 cjc pediatric and congenital heart disease,1 cla journal: college language association,1 clacso,1 cladistics,2 claeys & casteels,1 clarin annual conference proceedings,-1 clarity,-1 clarté,-1 classica,1 classica et mediaevalia: revue danoise de philologie et d histoire,2 classica vox,1 classical and quantum gravity,1 classical antiquity,3 classical bulletin,1 classical journal,2 classical literature,-1 classical philology,3 classical quarterly,3 classical receptions journal,1 classical review,2 classical world,1 classics ireland,1 classics@,-1 classicus,-1 classiques garnier,1 classroom discourse,2 clavis commentariorum antiquitatis et medii aevi,1 clay minerals,1 clay minerals society,-1 clay science,1 clays and clay minerals,1 clcweb: comparative literature and culture,1 "clean : soil, air, water",1 clean air journal,1 clean energy,1 clean technologies,-1 clean technologies and environmental policy,1 cleaner and circular bioeconomy,1 cleaner and responsible consumption,1 cleaner chemical engineering,1 cleaner energy systems,1 cleaner engineering and technology,1 cleaner environmental systems,1 cleaner logistics and supply chain,1 cleaner manufacturing,-1 cleaner materials,1 cleaner production letters,1 cleaner waste systems,1 cleaner water,-1 cleen oy,-1 cleer working papers,-1 cleft palate-craniofacial journal,1 clele journal,1 clemson university digital press,1 cleup,-1 cleveland clinic journal of medicine,1 cleveland state law review,-1 climacteric,1 climate,-1 climate and development,-1 climate change economics,1 climate dynamics,2 climate informatics,-1 climate law,1 climate of the past,2 climate policy,2 climate research,1 climate risk management,2 climate services,1 climatic change,2 climepsi editores,1 clinica chimica acta,1 clinical & experimental neuroimmunology,-1 clinical anatomy,1 clinical and applied immunology reviews,1 clinical and applied thrombosis-hemostasis,1 clinical and experimental allergy,2 clinical and experimental allergy reviews,1 clinical and experimental dental research,1 clinical and experimental dermatology,1 clinical and experimental hypertension,1 clinical and experimental immunology,1 clinical and experimental medicine,1 clinical and experimental metastasis,1 clinical and experimental nephrology,1 clinical and experimental obstetrics and gynecology,1 clinical and experimental ophthalmology,1 clinical and experimental optometry,1 clinical and experimental otorhinolaryngology,1 clinical and experimental pharmacology and physiology,1 clinical and experimental reproductive medicine,1 clinical and experimental rheumatology,1 clinical and investigative medicine,1 clinical and translational allergy,1 clinical and translational discovery,-1 clinical and translational gastroenterology,1 clinical and translational imaging,1 clinical and translational immunology,1 clinical and translational medicine,1 clinical and translational oncology,1 clinical and translational radiation oncology,1 clinical and vaccine immunology,1 clinical archives of communication disorders,1 clinical autonomic research,1 clinical biochemistry,1 clinical biomechanics,1 clinical breast cancer,1 clinical cancer research,3 clinical cardiology,1 clinical case reports,-1 clinical case studies,1 clinical chemistry,3 clinical chemistry and laboratory medicine,1 clinical child and family psychology review,2 clinical child psychology and psychiatry,1 clinical chiropractic,1 clinical colorectal cancer,1 clinical diabetes and endocrinology,1 clinical drug investigation,1 clinical dysmorphology,1 clinical eeg and neuroscience,1 clinical endocrinology,1 clinical epidemiology,3 clinical epidemiology and global health,-1 clinical epigenetics,1 clinical epileptology,-1 clinical ethics,1 clinical gastroenterology and hepatology,2 clinical genetics,1 clinical genitourinary cancer,1 clinical gerontologist,1 clinical health promotion,-1 clinical hemorheology and microcirculation,1 clinical hypertension,-1 clinical imaging,1 clinical immunology,1 clinical implant dentistry and related research,1 clinical infectious diseases,3 clinical interventions in aging,1 clinical investigation,-1 clinical journal of oncology nursing,1 clinical journal of pain,1 clinical journal of sport medicine,1 clinical journal of the american society of nephrology,2 clinical kidney journal,1 clinical kinesiology,1 clinical laboratory,1 clinical law review: a journal of lawyering and legal education,1 clinical leadership and management review,1 clinical linguistics and phonetics,3 clinical lipidology,1 clinical lung cancer,1 clinical lymphoma myeloma and leukemia,1 clinical mass spectrometry,1 clinical medicine,1 clinical medicine insights : cardiology,-1 "clinical medicine insights : ear, nose and throat",-1 clinical medicine insights : endocrinology and diabetes,1 clinical medicine insights : oncology,1 clinical medicine insights : reproductive health,-1 clinical microbiology and infection,2 clinical microbiology reviews,3 clinical nephrology,1 clinical neurology and neurosurgery,1 clinical neuropathology,1 clinical neuropharmacology,1 clinical neurophysiology,3 clinical neurophysiology practice,1 clinical neuropsychiatry,1 clinical neuropsychologist,1 clinical neuroradiology,1 clinical neuroscience research,1 clinical nuclear medicine,1 clinical nurse specialist,1 clinical nursing research,1 clinical nursing studies,-1 clinical nutrition,3 clinical nutrition espen,1 clinical nutrition experimental,1 clinical obesity,1 clinical obstetrics and gynecology,1 "clinical obstetrics, gynecology and reproductive medicine",1 clinical oncology,1 clinical ophthalmology,1 clinical oral implants research,3 clinical oral investigations,2 clinical orthopaedics and related research,2 clinical otolaryngology,1 clinical parkinsonism & related disorders,1 clinical pediatric endocrinology,1 clinical pediatrics,1 clinical pharmacokinetics,2 clinical pharmacology and therapeutics,3 clinical pharmacology in drug development,1 clinical physiology and functional imaging,1 clinical practice and epidemiology in mental health,-1 clinical proteomics,1 clinical psychological science,1 clinical psychologist,1 clinical psychology : science and practice,2 clinical psychology and psychotherapy,1 clinical psychology in europe,-1 clinical psychology review,3 clinical psychopharmacology and neuroscience,-1 clinical pulmonary medicine,1 clinical radiology,1 clinical rehabilitation,2 clinical research and regulatory affairs,1 clinical research in cardiology,1 clinical respiratory journal,1 clinical reviews in allergy and immunology,1 clinical rheumatology,1 clinical science,1 clinical simulation in nursing,1 clinical social work journal,1 clinical spectroscopy,-1 clinical spine surgery,1 clinical therapeutics,1 clinical theriogenology,1 clinical toxicology,1 clinical traditional medicine and pharmacology,-1 clinical transplantation,1 clinical trials,1 "clinical, cosmetic and investigational dermatology",1 clinician and technology,-1 clinicoeconomics and outcomes research,1 clinics,1 clinics and practice,-1 clinics and research in hepatology and gastroenterology,1 clinics in chest medicine,1 clinics in colon and rectal surgery,1 clinics in dermatology,1 clinics in geriatric medicine,1 clinics in laboratory medicine,1 clinics in liver disease,1 clinics in orthopedic surgery,1 clinics in perinatology,2 clinics in plastic surgery,1 clinics in shoulder and elbow,1 clinics in sports medicine,1 clinics in surgery,-1 clio,1 clio @ themis,1 "clio: a journal of literature, history, and the philosophy of history",2 cliodynamics,1 cliometrica,2 clios psyche,-1 clocks & sleep,-1 clothing and textiles research journal,1 clothing cultures,1 "cloud computing ... the ... international conference on cloud computing, grids, and virtualization",1 cloud software finland,-1 cloud-cuckoo-land,1 clough center for the study of constitutional democracy,-1 clues: a journal of detection,1 cluj university press,1 cluster computing: the journal of networks software tools and applications,1 clute institute academic conference proceedings,-1 cm communication management quarterly,-1 cmes: computer modeling in engineering and sciences,1 cmi communications,-1 cms note,-1 cnit technical report,-1 cnr - insean,-1 cnrs editions,1 cns and neurological disorders-drug targets,1 cns drugs,1 cns neuroscience and therapeutics,1 cns spectrums,1 cns. la chimica nella scuola,-1 co-herencia,1 coaching,1 coaching psychologist,1 coastal engineering,3 coastal engineering journal,1 coastal management,1 coastal studies & society,1 coat of arms,1 coatings,-1 cochlear implants international,1 cochrane database of systematic reviews,2 codesign: international journal of cocreation in design and the arts,3 codex manuscriptus,-1 codices manuscripti: zeitschrift für handschriftenkunde,1 codis working papers,-1 cogent arts & humanities,1 cogent biology,1 cogent business & management,1 cogent economics and finance,1 cogent education,1 cogent engineering,1 cogent food & agriculture,1 cogent geoscience,-1 cogent physics,1 cogent psychology,1 cogent social sciences,-1 cogitare enfermagem,-1 cogito,1 cognitextes,1 cognitio: revista de filosofia,1 cognition,3 cognition and emotion,2 cognition and instruction,2 cognition représentation langages,1 "cognition, technology and work",1 cognitive affective and behavioral neuroscience,1 cognitive and behavioral neurology,1 cognitive and behavioral practice,1 cognitive behaviour therapy,1 cognitive computation,2 cognitive development,1 cognitive linguistic studies,1 cognitive linguistics,3 cognitive neurodynamics,1 cognitive neuropsychiatry,1 cognitive neuropsychology,1 cognitive neuroscience,1 cognitive processing,1 cognitive psychology,3 cognitive research,1 cognitive science,2 cognitive science society,1 cognitive semantics,1 cognitive semiotics,2 cognitive systems research,1 cognitive therapy and research,1 cognizant communication corporation,1 coincidentia,-1 coj technical & scientific research,-1 cold regions science and technology,2 cold spring harbor laboratory press,2 cold spring harbor molecular case studies,1 cold spring harbor perspectives in biology,1 cold spring harbor perspectives in medicine,1 cold spring harbor protocols,1 cold spring harbor symposia on quantitative biology,1 cold war history,3 coleg cymraeg cenedlaethol,-1 colegio federado de ingenieros y de arquitectos,-1 coleopterists bulletin,1 collaborative media group inc.,-1 collabra,1 collagen and leather,-1 collated papers for the alte international conference,-1 collateral,-1 collectanea hibernica,1 collectanea mathematica,1 collectanea sancti martini,1 collection agir,-1 collection fruitrop thema,-1 collection septieme art: 7e art,1 collections cerlico,1 collections: a journal for museum and archives professionals,1 collective dynamics,-1 collective intelligence,1 college and research libraries,2 college and research libraries news,1 college composition and communication,1 college english,1 college literature,1 college mathematics journal,1 college music symposium,1 college publications,1 college student journal,-1 collegian,1 collegiate aviation review,-1 collegium antropologicum,1 collegium biblicum,-1 collegium fenno-ugricum,-1 collegium medievale,1 collingwood and british idealism studies,1 collnet journal of scientometrics and information management,1 colloid and polymer science,1 colloid journal,1 colloids and interface science communications,1 colloids and surfaces a: physicochemical and engineering aspects,1 colloids and surfaces b: biointerfaces,2 colloquia germanica,1 colloquia pontica,1 colloquium,-1 colloquium helveticum: cahiers suisses de litterature generale et comparee,1 colloquium mathematicum,1 colombia forestal,-1 colombia medica,1 colonial latin american review,1 coloproctology,1 coloquio: letras,1 color research and application,1 "colorado natural resources, energy & environmental law review",-1 coloration technology,1 colorectal cancer,1 colorectal disease,1 colour and visual computing symposium,-1 columbia journal of law and social problems,1 columbia journal of tax law,1 columbia journal of transnational law,1 columbia journalism review,-1 columbia law review,3 columbia studies in the classical tradition,1 columbia university press,2 colóquio brasileiro de matemática,-1 comadem international,1 combinatorial chemistry,1 combinatorial chemistry and high throughput screening,1 combinatorial theory,1 combinatorica,2 combinatorics and number theory,1 "combinatorics, probability and computing",2 combustion and flame,3 combustion engines,-1 combustion explosion and shock waves,1 combustion science and technology,1 combustion theory and modelling,1 come,-1 comedy studies,1 comicalités,-1 comissão portuguesa história militar,-1 comitatus: a journal of medieval and renaissance studies,-1 comité organisateur du congrès sga québec 2017,-1 comment visions,-1 commentarii mathematici helvetici,2 commentary,1 commentationes humanarum litterarum,-1 commentationes mathematicae universitatis carolinae,1 commentationes scientiarum socialium,-1 comments on inorganic chemistry,1 commercial press,-1 commodities,-1 common ground publishing,-1 common ground research networks,1 common knowledge,1 common law world review,1 common market law review,3 commons,1 commons.fi,-1 communiars,-1 communicatio: south african journal for communication theory and research,1 communication & organisation,-1 communication & society,1 communication + 1,1 communication and cognition,1 communication and critical/cultural studies,1 communication and democracy,1 communication and medicine,1 communication and sport,1 communication design,-1 communication design quarterly review,-1 communication disorders quarterly,1 communication education,2 "communication et langages: presse, television, radio, publicite, edition, graphisme, formation, sociologie",1 communication law and policy,1 communication methods and measures,1 communication monographs,3 communication quarterly,1 communication reports,1 communication research,3 communication research and practice,1 communication research reports,1 communication sciences & disorders,1 communication studies,1 communication teacher,1 communication theory,3 communication today,1 "communication, culture and critique",1 communicationes archeologicae hungariae,1 communications,1 communications biology,1 communications chemistry,1 communications earth & environment,1 communications engineering,1 communications in algebra,1 communications in analysis and geometry,2 communications in applied analysis,-1 communications in applied and industrial mathematics,1 communications in applied mathematics and computational science,1 communications in asteroseismology,1 communications in computational physics,1 communications in computer and information science,1 communications in contemporary mathematics,1 communications in information and systems,1 communications in information science and management engineering,-1 communications in inorganic synthesis,-1 communications in mathematical analysis,1 communications in mathematical finance,-1 communications in mathematical physics,3 communications in mathematical sciences,1 communications in mathematics,1 communications in nonlinear science and numerical simulation,1 communications in number theory and physics,1 communications in partial differential equations,3 communications in soil science and plant analysis,1 communications in statistics: simulation and computation,1 communications in statistics: theory and methods,1 communications in theoretical physics,1 communications law,1 communications materials,1 communications medicine,1 communications of the acm,3 communications of the association for information systems,2 communications of the ibima,-1 communications of the iima,1 communications on applied nonlinear analysis,1 communications on pure and applied analysis,1 communications on pure and applied mathematics,3 communications on stochastic analysis,1 communications physics,2 communications psychology,1 communications sustainability,-1 communications.,1 communicative & integrative biology,1 communicator,-1 communio viatorum,1 communio: international catholic review,1 communist and post-communist studies,1 communitas - soobshestvo,-1 community child care cooperative,-1 community dental health,1 community dentistry and oral epidemiology,2 community development,1 community development journal,1 community ecology,1 community mental health journal,1 community psychology in global perspective,1 "community, work and family",1 company lawyer,1 compar-a-ison: an international journal of comparative literature,1 comparatist,1 comparativ,1 comparative & international higher education,1 comparative american studies,1 comparative and continental philosophy,1 comparative and international law journal of southern africa,1 comparative biochemistry and physiology a: molecular and integrative physiology,1 comparative biochemistry and physiology b: biochemistry and molecular biology,1 comparative biochemistry and physiology c: toxicology and pharmacology,1 comparative biochemistry and physiology d: genomics and proteomics,1 comparative civilizations review,1 comparative clinical pathology,1 comparative critical studies,1 comparative cytogenetics,1 comparative drama,1 comparative economic studies,1 comparative education,3 comparative education review,3 comparative european politics,1 comparative exercise physiology,1 comparative history of literatures in european languages,2 comparative immunology microbiology and infectious diseases,1 comparative labor law and policy journal,1 comparative law review,1 comparative legal history,2 comparative legilinguistics,-1 comparative literature,3 comparative literature studies,3 comparative medicine,1 comparative migration studies,1 comparative oriental manuscript studies bulletin,1 comparative parasitology,1 comparative philosophy,1 comparative political studies,3 comparative political theory,1 comparative politics,2 comparative population studies,1 comparative social research,1 comparative sociology,1 comparative southeast european studies,1 comparative strategy: an international journal,1 comparative studies in society and history,3 compare: a journal of comparative and international education,1 compatibility in power electronics,-1 compdyn proceedings,-1 compel: the international journal for computation and mathematics in electrical and electronic engineering,1 compendium,-1 compendium: continuing education for veterinarians,1 compensation and benefits review,1 competition and change: the journal of global business and political economy,1 competition and regulation in network industries,1 competition law insight,-1 competition law review,1 competition policy international,1 competitiveness of agro-food and environmental economy,-1 competitiveness review,1 complementary medicine research,1 complementary therapies in clinical practice,1 complementary therapies in medicine,1 complex & intelligent systems,1 complex adaptive systems modeling,1 complex analysis and its synergies,1 complex analysis and operator theory,1 complex metals,-1 complex systems informatics and modeling quarterly,1 complex variables and elliptic equations,1 complexity,1 "complexity, governance & networks",1 compliance,-1 compliance-berater,-1 complicity,1 complutense journal of english studies,1 composite interfaces,1 composite structures,2 composites and advanced materials,1 composites communications,1 composites part a: applied science and manufacturing,2 composites part b: engineering,3 composites part c : open access,1 composites science and technology,2 compositio mathematica,2 compositionality,1 compost science and utilization,1 comprehensive physiology,1 comprehensive psychiatry,2 comprehensive psychoneuroendocrinology,1 comprehensive results in social psychology,1 comprehensive reviews in food science and food safety,2 comprehensive therapy,1 compstat,1 comptes rendus biologies,1 comptes rendus chimie,-1 comptes rendus de lacadémie bulgare des sciences,-1 comptes rendus des seances de lacademie des inscriptions et belles-lettres,1 comptes rendus geoscience,1 comptes rendus mathematique,1 comptes rendus mecanique,1 comptes rendus palevol,1 comptes rendus physique,1 computability,1 computation,1 computational and applied mathematics,1 computational and mathematical methods,1 computational and mathematical methods in medicine,-1 computational and mathematical organization theory,1 computational and structural biotechnology journal,1 computational and theoretical chemistry,1 computational biology and chemistry,1 computational brain & behavior,1 computational cognitive science,1 computational communication research,1 computational complexity,2 computational condensed matter,-1 computational culture,1 computational design and robotic fabrication,1 computational economics,1 computational geometry: theory and applications,1 computational geosciences,1 computational intelligence,1 computational linguistics,3 computational linguistics in the netherlands journal,-1 computational management science,1 computational materials science,2 computational mathematics and mathematical physics,1 computational mathematics and modeling,1 computational mechanics,1 computational methods and function theory,1 computational methods in applied mathematics,1 computational methods in applied sciences,1 computational optimization and applications,1 computational particle mechanics,-1 computational research progress in applied science and engineering,-1 computational social networks,1 computational statistics,1 computational statistics and data analysis,1 computational toxicology,1 computational visual media,1 computer,2 computer aided chemical engineering,1 computer aided geometric design,1 computer aided surgery,1 computer aided verification,2 computer and telecommunications law review,-1 computer animation and virtual worlds,1 computer applications in engineering education,1 computer assisted language learning,2 computer communication review,1 computer communications,1 computer fraud and security,1 computer graphics forum,1 computer graphics world,1 computer journal,1 computer languages systems and structures,1 computer law & security review,1 computer law review international,1 computer methods and programs in biomedicine,1 computer methods and programs in biomedicine update,1 computer methods in applied mechanics and engineering,3 computer methods in biomechanics and biomedical engineering,1 computer methods in biomechanics and biomedical engineering : imaging & visualization,1 computer methods in materials science,-1 computer music journal,3 computer networks,2 computer physics communications,1 computer science and electronic engineering conference,-1 computer science and information systems,1 computer science and information technology,-1 computer science and telecommunications,1 computer science education,2 computer science journal of moldova,-1 computer science research notes,-1 computer science review,1 computer science: research and development,1 computer speech and language,2 computer standards and interfaces,1 computer supported cooperative work: the journal of collaborative computing,3 computer systems science and engineering,1 computer vision and image understanding,2 computer-aided civil and infrastructure engineering,3 computer-aided design,2 computer-aided design and applications,1 computer-supported collaborative learning,1 computerized medical imaging and graphics,2 computerrecht,-1 computers,-1 computers & education : x reality,1 computers & graphics,1 computers and chemical engineering,2 computers and composition,1 computers and concrete,1 computers and education,3 computers and education : artificial intelligence,1 computers and education open,1 computers and electrical engineering,1 computers and electronics in agriculture,2 computers and fluids,1 computers and geosciences,1 computers and geotechnics,2 computers and industrial engineering,1 computers and mathematics with applications,1 computers and operations research,1 computers and security,2 computers and society,1 computers and structures,3 computers environment and urban systems,2 computers in biology and medicine,2 computers in education journal,1 computers in entertainment,1 computers in human behavior,3 computers in human behavior : artificial humans,1 computers in human behavior reports,1 computers in industry,2 computers in the schools,1 "computers, materials & continua",1 computing,-1 computing : archives for scientific computing,1 computing and informatics,1 computing and software for big science,1 computing and visualization in science,1 computing in cardiology,1 computing in construction,-1 computing in science and engineering,1 computing reviews,1 comrec studies on environment and development,-1 comsol,-1 comunicación social ediciones y publicaciones,-1 comunicar,1 comunicare.ro,-1 comunicazioni sociali,1 comunicação e sociedade,1 comunidad de madrid,-1 con texte,-1 con-textos kantianos,1 conbrio verlagsgesellschaft,1 concentric : studies in linguistics,1 concentric-literary and cultural studies,-1 concepts and transformation,1 concepts in magnetic resonance : part a,1 concilium medii aevi,1 concilium: international journal of theology,1 concordia theological quarterly,1 concorrenza e mercato,-1 concreta,-1 concrete international,1 concrete operators,1 concurrences,1 concurrency and computation: practice and experience,1 concurrent engineering: research and applications,-1 concussion,-1 condensed matter,-1 condensed matter physics,1 conditioning medicine,1 conference of australian institute of computer ethics,-1 conference of digital games research association,1 "conference of telecommunication, media and internet techno-economics",-1 conference of the hungarian association for image processing and pattern recognition,-1 conference of the international journal of arts & sciences,-1 conference on cloud and internet of things,1 conference on control and fault-tolerant systems,-1 conference on design and architectures for signal and image processing,1 conference on design of circuits and integrated systems,-1 conference on future internet communications,-1 conference on gettering and defect engineering in semiconductor technology,-1 conference on human system interactions,1 conference on information and knowledge management,2 conference on lasers & electro-optics europe & international quantum electronics conference,1 conference on lasers and electro-optics,-1 conference on local computer networks,1 conference on metrology for solid state lighting,-1 "conference on micro- and nanotechnology sensors, systems, and applications",-1 conference on new directions in management accounting,-1 conference on performance measurement and management control,-1 conference on software engineering education & training,1 conference on uncertainty in artificial intelligence,2 conference proceedings,-1 conference proceedings (annual kurultai of the endagered cultural heritage),-1 conference proceedings (ethnographic praxis in industry conference),-1 conference proceedings (international conference on advanced semiconductor devices and microsystems),-1 conference proceedings : canadian conference on electrical and computer engineering,-1 conference proceedings : congress on research in dance,-1 conference proceedings : european immersive education summit,-1 conference proceedings : frontiers in education conference,1 conference proceedings : ieee applied power electronics conference and exposition,1 "conference proceedings : ieee international conference on networking, sensing and control",1 conference proceedings : international conference on indium phosphide and related materials,1 conference proceedings : international conference on migration and diaspora entrepreneurship,-1 conference proceedings : international conference on transparent optical networks,1 conference proceedings : international conference on unmanned aircraft systems,-1 conference proceedings : international conference on unmanned aircraft systems,1 conference proceedings : international spring seminar on electronics technology,1 conference proceedings : midwest symposium on circuits and systems,1 conference proceedings : the future of education,-1 conference proceedings cired,1 conference proceedings ipec,-1 conference proceedings of the academy for design innovation management,1 conference proceedings of the european sco2 conference,1 conference proceedings of the society for experimental mechanics,-1 conference proceedings wpmc,1 conference record of the ieee photovoltaic specialists conference,1 conference record of the industry applications society annual meeting,1 conference transactions - british archaeological association,1 confero,-1 configurações,-1 configurations,1 conflict and communication,1 conflict and health,1 conflict and society,1 conflict management and peace science,2 conflict management institute (university of helsinki),-1 conflict resolution quarterly,1 "conflict, security and development",1 confluencia: revista hispanica de cultura y literatura,1 confluentes mathematici,1 conformal geometry and dynamics,1 confrontation,1 congenital anomalies,1 congenital heart disease,1 congreso internacional sobre aplicación de tecnologías de la información y comunicaciones avanzadas,-1 congresso brasileiro de ergonomia,-1 congressus internationalis fenno-ugristarum,1 congressus numerantium,-1 connaissance des arts,1 connect: the world of critical care nursing,1 connection science,1 connections,1 connective tissue research,1 connexe,1 connexions: international professional communication journal,1 connotations: a journal for critical debate,1 conradian,1 conradiana,1 consciousness and cognition,2 consciousness and emotion,1 "consciousness, literature and the arts",1 consecutio rerum,1 conseil international des grands réseaux électriques,1 consejo superior de investigaciones científicas,1 consello da cultura galega,-1 conservation and management of archaeological sites,2 conservation and society,2 conservation biology,3 conservation evidence,1 conservation genetics,1 conservation genetics resources,1 conservation letters,3 conservation of arctic flora and fauna,-1 conservation physiology,1 conservation science and practice,1 "conservatoire et jardin botaniques, de la ville de genève",-1 conserveries memorielles,-1 consilience: journal of sustainable development,1 consortium psychiatricum,1 conspress,-1 constantinides international workshop on signal processing,-1 constelaciones,1 constellations: an international journal of critical and democratic theory,1 constitutional commentary,1 constitutional law library,1 constitutional political economy,1 constitutional studies,1 constraints,1 construction and building materials,1 construction economics and building,1 construction history,1 "construction innovation: information, process, management",1 construction law journal,-1 construction management and economics,1 construction robotics,1 construction science,-1 constructions,1 constructions and frames,2 constructive approximation,2 constructive mathematical analysis,1 constructivist foundations,1 consulta online,1 consulting psychology journal,1 consumer behavior in tourism and hospitality,1 consumption and society,1 consumption markets and culture,1 contact,-1 contact dermatitis,2 contact lens and anterior eye,1 contagion,-1 "contagion : journal of violence, mimesis, and culture",-1 contemporanea,-1 contemporanea: rivista di storia dell800 e del 900,1 contemporary accounting research,3 contemporary aesthetics,2 contemporary asia arbitration journal,1 contemporary british history,2 contemporary buddhism,2 contemporary challenges,-1 contemporary clinical trials,1 contemporary clinical trials communications,1 contemporary drug problems,1 contemporary economic policy,1 contemporary economics,1 contemporary educational psychology,3 contemporary educational researches journal,-1 contemporary educational technology,1 contemporary european history,3 contemporary european politics,1 contemporary family therapy,1 contemporary french and francophone studies,2 contemporary french civilization,1 contemporary history fund,1 contemporary hypnosis & integrative therapy,1 contemporary islam,1 contemporary issues in early childhood,2 contemporary issues in technology and teacher education,1 contemporary japan,1 contemporary jewry,1 "contemporary justice review: issues in criminal, social and restorative justice",1 contemporary law review,1 contemporary levant,1 contemporary literature,3 contemporary management research,-1 contemporary mathematics,-1 contemporary mathematics,1 contemporary music review,2 contemporary nurse,1 contemporary ob/gyn,1 contemporary pacific,2 contemporary philosophies and theories in education,1 contemporary physics,1 contemporary political theory,2 contemporary politics,1 contemporary pragmatism,1 contemporary problems of ecology,1 contemporary psychoanalysis,1 contemporary readings in law and social justice,1 contemporary school psychology,1 contemporary security policy,1 contemporary social science,1 contemporary sociology: a journal of reviews,1 contemporary south asia,2 contemporary southeast asia,1 contemporary southeastern europe,1 contemporary theatre review,3 contemporary womens writing,1 contention,1 contesti,-1 context,-1 contextes et didactiques,-1 contextos,-1 contexts,1 continental journal of education research,-1 continental philosophy review,3 continental shelf research,1 continuity & resilience review,1 continuity and change,2 continuity in education,1 continuous innovation network,1 continuum,-1 continuum mechanics and thermodynamics,1 continuum: journal of media and cultural studies,1 contra narrativas,-1 contraception,1 contraception x,1 contracting excellence,-1 contrastes: revista interdisciplinar de filosofia,1 contrastive pragmatics,1 contributions in new world archaeology,1 contributions of the astronomical observatory skalnaté pleso,1 contributions of the austrian ludwig wittgenstein society,1 contributions to indian sociology,2 contributions to mineralogy and petrology,2 contributions to music education,1 contributions to nephrology,1 contributions to phenomenology,2 contributions to plasma physics,1 contributions to political economy,1 contributions to statistics,1 contributions to the history of concepts,2 contributions to zoology,1 control and cybernetics,1 control engineering and applied informatics,1 control engineering practice,2 control systems conference,-1 control technology and applications,1 control theory and technology,1 controlling,-1 controlling & management review,-1 controversies,1 convention of the electrical and electronics engineers in israel,-1 convergence: the international journal of research into new media technologies,2 convergencia: revista de ciencias sociales,1 converging evidence in language and communication research,1 convergências,1 conveyancer and property lawyer,1 convivium,1 convivium: revista de filosofia,1 coolabah,1 cooperatie in planning ua,-1 cooperation and conflict,2 cooperativa editorial magisterio,-1 cooperativismo & desarrollo,1 cooperativismo e economía social,-1 coordination chemistry reviews,1 copd : journal of chronic obstructive pulmonary disease,1 copenhagen business school,-1 copenhagen business school press,1 copenhagen journal of asian studies,1 copenhagen studies in language,1 copernicus journal of political studies,-1 copernicus publications,1 coptica,1 cor et vasa,-1 coral reefs,1 core,1 core: conservation et restauration du patrimoine cultural,1 cork university press,1 cornea,1 cornell hospitality quarterly,1 cornell international law journal,1 cornell journal of law and public policy,1 cornell law review,2 cornell university press,2 cornell university southeast asia program publications,-1 cornish archaeology,1 coronary artery disease,1 coronaviruses,-1 corpora,1 corpora and language in use,-1 corporación universitaria minuto de dios,-1 corporate and business strategy review,1 "corporate board: role, duties and composition",1 corporate communications,1 corporate governance and sustainability review,1 corporate governance: an international review,2 corporate governance: the international journal of business in society,1 corporate law and governance review,1 corporate ownership and control,-1 corporate real estate journal,-1 corporate reputation review,1 corporate social responsibility and environmental management,1 corpus,1 corpus linguistics and linguistic theory,3 corpus linguistics research,1 corpus mundi,1 corpus pragmatics,-1 correspondances en mhnd,1 correspondences : journal for the study of esotericism,1 corrosion,1 corrosion and materials degradation,-1 corrosion engineering science and technology,1 corrosion reviews,1 corrosion science,3 corrosion science and technology,-1 cortex,2 corvinus journal of international affairs,-1 corwin press,1 cosmetics,-1 cosmic research,1 cosmos and history: the journal of natural and social philosophy,1 cosmos: the journal of the traditional cosmology society,-1 cost effectiveness and resource allocation,1 cost engineering,1 costituzionalismo.it,1 costume,1 cotsen institute of archaeology at ucla,1 council for australasian university tourism and hospitality education,-1 council for creative education,-1 council for international organizations of medical sciences,-1 council of europe,-1 counseling and values,1 counseling psychologist,1 counselling and psychotherapy research,1 counselling psychology quarterly,1 counselor education and supervision,1 counterpress,1 countertext,1 couple and family psychology,1 coupled systems mechanics,1 courriel européen des langues,-1 court historian,1 court of conscience,-1 covid,-1 coyote,-1 cp-lehti,-1 cpem digest,-1 cpt: pharmacometrics and systems pharmacology,1 cq press,-1 cr: the new centennial review,1 cracow indological studies,1 craft research,2 cranio,1 craniofacial publications,-1 craniomaxillofacial trauma & reconstruction,1 craterre,-1 crc press,1 crearta: the international journal of the education in the arts,1 creat!vity,-1 createspace,-1 creating leadership,-1 creative arts in education and therapy,1 creative education,-1 creative industries journal,1 creative methods in rehabilitation,-1 creative nursing,1 creativity and innovation management,1 creativity research journal,1 credit and capital markets,1 cretaceous research,1 crime and delinquency,2 crime and justice: a review of research,2 crime fiction studies,1 crime law and social change,2 crime media culture,1 crime prevention and community safety,1 crime science,1 "crime, histoire et sociétés",1 crimetime,-1 criminal behaviour and mental health,1 criminal justice and behavior,2 criminal justice ethics,1 criminal justice history,1 criminal justice policy review,1 criminal justice review,1 criminal justice studies,1 criminal law and philosophy,1 criminal law forum,1 criminal law journal,1 criminal law review,2 criminology,3 criminology & public policy,1 criminology and criminal justice,2 "criminology, criminal justice, law & society",1 crisis and critique,-1 crisis: the journal of crisis intervention and suicide prevention,1 crisolenguas,-1 "cristianesimo nella storia: ricerche storiche, esegetiche, teologiche",1 critica,1 critica darte,1 critica del testo,1 critica hispanica,1 critica letteraria,1 critical african studies,1 critical ai,-1 critical analysis of law,1 critical and radical social work,1 critical approaches to discourse analysis across disciplines,1 critical arts : a south-north journal of cultural and media studies,1 critical asian studies,1 critical care,3 critical care and resuscitation,1 critical care clinics,1 critical care explorations,1 critical care medicine,2 critical care nurse,-1 critical care nursing quarterly,1 critical care research and practice,1 critical care science,1 critical criminology,2 critical discourse studies,2 critical education,1 critical finance review,1 critical gambling studies,1 critical historical studies,1 critical horizons,1 critical housing analysis,1 critical inquiry,3 critical inquiry in language studies: an international journal,2 critical internationalization studies review,-1 critical legal thinking: law & the political,-1 critical literacy: theories and practices,1 critical military studies,1 critical multilingualism studies,1 critical pathways in cardiology,1 critical perspectives,1 critical perspectives on accounting,2 critical perspectives on international business,1 critical policy studies,2 critical public health,1 critical quarterly,3 critical research on religion,1 critical review,1 critical review of international social and political philosophy,2 critical reviews in analytical chemistry,1 critical reviews in biochemistry and molecular biology,1 critical reviews in biomedical engineering,1 critical reviews in biotechnology,1 critical reviews in clinical laboratory sciences,1 critical reviews in environmental science and technology,2 critical reviews in eukaryotic gene expression,1 critical reviews in food science and nutrition,2 critical reviews in immunology,1 critical reviews in microbiology,1 critical reviews in oncogenesis,1 critical reviews in oncology hematology,1 critical reviews in physical and rehabilitation medicine,1 critical reviews in plant sciences,1 critical reviews in solid state and materials sciences,1 critical reviews in therapeutic drug carrier systems,1 critical reviews in toxicology,1 critical romani studies,1 critical social policy,2 critical social work,1 critical sociology,1 critical stages,1 critical studies in education,2 critical studies in fashion & beauty,1 critical studies in improvisation - etudes critiques en improvisation,1 critical studies in media communication,1 critical studies in men´s fashion,1 critical studies in teaching and learning,-1 critical studies in television,1 critical studies on security,1 critical studies on terrorism,1 "critical studies: a journal of critical theory, literature and culture",1 critical survey,1 critical times,1 criticism: a quarterly for literature and the arts,3 criticon,1 critique,2 critique & humanism,-1 critique of anthropology,2 critique of political economy,1 critique: studies in contemporary fiction,2 crítica penal y poder,1 crm proceedings and lecture notes,1 croatian international relations review,1 croatian journal of forest engineering,1 croatian journal of philosophy,1 croatian medical journal,1 croatian operational research review,-1 "croatian society for communications, computing, electronics, measurement and control",1 croatian yearbook of european law and policy,1 croatica chemica acta,-1 croatica et slavica jadertina,1 cromohs,1 cronache ercolanesi,1 crop and environment,1 crop and pasture science,1 crop breeding and applied biotechnology,1 crop protection,1 crop research,-1 crop science,1 crop wild relative,-1 croquant,-1 cross cultural & strategic management,1 cross cultural management: an international journal,1 cross cultural studies : education and science,1 cross-border review,-1 cross-cultural communication,-1 cross-cultural research,2 cross-currents,-1 cross/cultures: readings in the post/colonial literatures in english,1 crossings,1 crossroads,1 "crossroads: an interdisciplinary journal for the study of history, philosophy, religion and classics",1 crossway,-1 crusades,1 crustaceana,1 crux,-1 cryobiology,1 cryogenics,1 cryoletters,1 cryosphere,3 crypto law review,-1 cryptogamie algologie,1 cryptogamie bryologie,1 cryptogamie mycologie,1 cryptography,1 cryptography and communications,1 cryptologia,1 crystal growth and design,2 crystal research and technology,1 crystallography reports,-1 crystallography reviews,1 crystals,-1 crystengcomm,1 crítica contemporánea,1 crítica y resistencias,-1 csb conference proceedings,1 csedu,-1 csee journal of power and energy systems,1 csi international symposium on artificial intelligence and signal processing,-1 csi international symposium on computer architecture and digital systems,1 csi journal of computing,-1 csid journal of infrastructure development,-1 csiro publishing,1 csli publications,1 csli studies in computational inguistics,1 csrea press,-1 "ctandf: ciencia, tecnologia y futuro",1 ctrl-z,1 cts: clinical and translational science,2 cuadernos americanos,1 cuadernos constitutucionales de la catedra fadrique furio ceriol,-1 cuadernos de arte de la universidad de granada,1 cuadernos de desarrollo rural,1 cuadernos de filología clásica: estudios griegos e indoeuropeos,1 cuadernos de filología francesa,-1 cuadernos de filología italiana,1 cuadernos de historia contemporanea,1 cuadernos de historia del derecho,1 cuadernos de historia moderna,1 cuadernos de información y comunicación,-1 cuadernos de investigacion filologica,1 "cuadernos de musica, artes visuales y artes escenicas",1 cuadernos de pedagogia,-1 cuadernos de prehistoria y arqueología de la universidad de granada,-1 cuadernos de psicología,-1 cuadernos de teoría social,-1 cuadernos de turismo,-1 cuadernos del centro de estudios en diseño y comunicación,-1 cuadernos europeos de deusto,-1 cuadernos hispanoamericanos,1 cuadernos para investigación de la literatura hispanica,1 cuaj: canadian urological association journal,1 cuba counterpoints,-1 cuban journal of agricultural science,1 cuban studies,-1 cubo,1 cultura neolatina: rivista di filologia romanza,1 cultura tedesca,-1 cultura y educacion,1 "cultura, lenguaje y representacion-culture, language and representation",1 cultura: international journal of philosophy of culture and axiology,1 cultural analysis: an interdisciplinary forum on folklore and popular culture,2 cultural and religious studies,-1 cultural and social history,2 cultural anthropology,3 cultural critique,1 cultural diversity and ethnic minority psychology,2 cultural dynamics,1 cultural geographies,2 cultural history,2 cultural history : kulttuurihistoria,1 cultural logic: an electronic journal of marxist theory and practice,1 cultural politics,1 cultural science,-1 cultural sociology,1 cultural studies,3 cultural studies of science education,1 cultural studies review,1 cultural studies: critical methodologies,1 cultural trends,2 cultural-historical psychology,1 culture & business,-1 culture & history digital journal,-1 culture and cosmos,-1 culture and dialogue,1 culture and history,1 culture and history of the ancient near east,2 culture and local governance,1 culture and organization,1 culture and psychology,2 culture and religion,1 culture crossroads,1 culture et musées,1 culture health and sexuality,2 culture machine,1 culture medicine and psychiatry,1 culture unbound: journal of current cultural research,1 "culture, agriculture, food and environment",1 "culture, education and future",-1 "culture, theory and critique",2 cultures et conflits,1 cultus,1 cultuur: tijdschrift voor etnologie,1 cumberland academic press,1 cumulus conference proceedings,-1 cumulus think tank,-1 cuneiform digital library journal,1 cuneiform monographs,1 cuporen julkaisuja,-1 cuporen työpapereita,-1 cuporen verkkojulkaisuja,-1 curationis,-1 curator: the museum journal,2 cureus,-1 curran associates,-1 current,1 current addiction reports,1 current allergy and asthma reports,1 current alternative energy,-1 current alzheimer research,1 current analytical chemistry,1 current anesthesiology reports,1 current anthropology,3 current applied physics,1 current atherosclerosis reports,1 current bioactive compounds,1 current bioinformatics,1 current biology,3 current biotechnology,1 current cancer drug targets,1 current cardiology reports,1 current cardiology reviews,-1 current cardiovascular imaging reports,1 current cardiovascular risk reports,1 current catalysis,-1 current chemical biology,1 current climate change reports,1 current clinical microbiology reports,-1 current clinical pharmacology,1 current computer-aided drug design,1 current developmental disorders reports,1 current developments in arctic law,-1 current developments in nutrition,1 current diabetes reports,1 current directions in biomedical engineering,1 current directions in psychological science,2 current drug delivery,1 current drug discovery technologies,1 current drug metabolism,1 current drug safety,1 current drug targets,1 current drug therapy,1 current environmental health reports,1 current enzyme inhibition,1 current eye research,1 current forestry reports,1 current gene therapy,1 current genetic medicine reports,-1 current genetics,1 current genomics,1 current geriatrics reports,1 current heart failure reports,1 current hematologic malignancy reports,-1 current herpetology,1 current history,1 current hiv research,1 current hypertension reports,1 current immunology reviews,-1 current infectious disease reports,1 current issues in auditing,1 current issues in comparative education,1 current issues in education,1 current issues in language planning,1 current issues in molecular biology,-1 current issues in personality psychology,-1 current issues in sport science,1 current issues in tourism,2 current issues of business and law,1 current landscape ecology reports,1 current legal problems,2 current medical imaging reviews,1 current medical research and opinion,1 current medicinal chemistry,1 current microbiology,1 current microwave chemistry,1 current molecular biology reports,-1 current molecular medicine,1 current molecular pharmacology,1 current musicology,1 current nanoscience,1 current neurology and neuroscience reports,2 current neuropharmacology,1 current neurovascular research,1 current nutrition reports,1 current obesity reports,1 current oncology,-1 current oncology reports,1 current opinion in allergy and clinical immunology,1 current opinion in anesthesiology,1 current opinion in behavioral sciences,1 current opinion in biomedical engineering,1 current opinion in biotechnology,1 current opinion in cardiology,1 current opinion in cell biology,1 current opinion in chemical biology,1 current opinion in chemical engineering,1 current opinion in clinical nutrition and metabolic care,1 current opinion in colloid and interface science,1 current opinion in critical care,1 current opinion in electrochemistry,1 current opinion in endocrine and metabolic research,1 "current opinion in endocrinology, diabetes and obesity",1 current opinion in environmental science & health,1 current opinion in environmental sustainability,2 current opinion in food science,1 current opinion in gastroenterology,1 current opinion in genetics and development,1 current opinion in green and sustainable chemistry,-1 current opinion in hematology,1 current opinion in hiv and aids,-1 current opinion in immunology,1 current opinion in infectious diseases,1 current opinion in insect science,1 current opinion in investigational drugs,1 current opinion in lipidology,1 current opinion in microbiology,1 current opinion in molecular therapeutics,1 current opinion in nephrology and hypertension,1 current opinion in neurobiology,1 current opinion in neurology,1 current opinion in obstetrics and gynecology,1 current opinion in oncology,1 current opinion in ophthalmology,1 current opinion in organ transplantation,1 current opinion in otolaryngology and head and neck surgery,1 current opinion in pediatrics,1 current opinion in pharmacology,1 current opinion in physiology,1 current opinion in plant biology,1 current opinion in psychiatry,1 current opinion in psychology,1 current opinion in pulmonary medicine,1 current opinion in rheumatology,1 current opinion in solid state and materials science,2 current opinion in structural biology,1 current opinion in supportive and palliative care,-1 current opinion in systems biology,-1 current opinion in toxicology,1 current opinion in urology,1 current opinion in virology,1 current oral health reports,1 current organic chemistry,1 current organic synthesis,1 current orthopaedic practice,1 current osteoporosis reports,1 current pain and headache reports,1 current pediatric research,-1 current pediatric reviews,1 current perspectives in social theory,1 current pharmaceutical analysis,1 current pharmaceutical biotechnology,1 current pharmaceutical design,1 current physical chemistry,-1 current physical medicine and rehabilitation reports,-1 current plant biology,1 current politics and economics of europe,1 current pollution reports,1 current problems in cancer,1 current problems in cardiology,1 current problems in dermatology,1 current problems in diagnostic radiology,1 current problems in pediatric and adolescent health care,1 current problems in surgery,1 current protein and peptide science,1 current proteomics,1 current protocols,1 current psychiatry reports,1 current psychology,1 current pulmonology reports,-1 current radiopharmaceuticals,1 current research in biotechnology,1 current research in ecological and social psychology,1 current research in environmental & applied mycology,1 current research in environmental sustainability,1 current research in food science,1 current research in immunology,-1 current research in microbial sciences,1 current research in parasitology and vector-borne diseases,1 current research in physiology,1 current research in social psychology,1 current research in structural biology,1 current research in toxicology,1 current research in translational medicine,1 current research journal of social science,-1 current respiratory medicine reviews,1 current reviews in musculoskeletal medicine,1 current rheumatology reports,1 current rheumatology reviews,1 current robotics reports,1 current science,1 current signal transduction therapy,1 current sleep medicine reports,1 current sociology,2 current sports medicine reports,1 current stem cell research and therapy,1 "current studies in comparative education, science and technology",-1 current sustainable/renewable energy reports,1 current swedish archaeology,1 current therapeutic research: clinical and experimental,1 current tissue engineering,1 current topics in catalysis,-1 current topics in developmental biology,1 current topics in electrochemistry,1 current topics in genetics,-1 current topics in medicinal chemistry,1 current topics in membranes,1 current topics in microbiology and immunology,1 current topics in nutraceutical research,1 current translational geriatrics and experimental gerontology reports,1 current treatment options in allergy,1 current treatment options in cardiovascular medicine,1 current treatment options in neurology,1 current treatment options in oncology,1 current trends in ophthalmology,-1 current trends in translation teaching and learning e,1 current tropical medicine reports,1 current urban studies,-1 current urology reports,1 current vascular pharmacology,1 current womens health reviews,1 current world archaeology,-1 current writing : text and reception in southern africa,1 current zoology,1 currents in biblical research,1 currents in pharmacy teaching and learning,-1 curriculum and teaching,1 curriculum inquiry,1 curriculum journal,2 curriculum matters,1 curriculum perspectives,1 curriculum studies in health and physical education,1 cursiv,1 curtiss botanical magazine,-1 curved and layered structures,1 custos e agronegócio,1 cutaneous and ocular toxicology,1 cutis,1 cutra,-1 cutter business technology journal,-1 cvetnye metally,-1 cvir endovascular,1 cw3 journal: corvey women writers on the web,1 cxo academy kirjat,-1 cyber orient,1 cyber security and applications,1 cyber-physical systems,1 cybergeo,1 cybermetrics,1 "cybernetics and human knowing: a journal of second order cybernetics, autopoiesis and cyber-semiotics",1 cybernetics and information technologies,1 cybernetics and physics,-1 cybernetics and systems,1 cybernetics and systems analysis,1 cyberpsychology,1 cyberpsychology behavior and social networking,1 cybersecurity,1 cyberspace studies,-1 cyberwatch magazine,-1 cybium,1 cyborg and bionic systems,1 cypriot journal of educational sciences,-1 cyprus human rights law review,-1 cyprus nursing chronicles,-1 cyprus review,1 cyta: journal of food,1 cytogenetic and genome research,1 cytojournal,-1 cytokine,1 cytokine and growth factor reviews,1 cytokine x,1 cytologia,1 cytology and genetics,1 cytometry part a,1 cytometry part b: clinical cytometry,1 cytopathology,1 cytoskeleton,1 cytotechnology,1 cytotherapy,1 czech academy of sciences,-1 czech and slovak journal of humanities,-1 czech institute of academic education,-1 czech journal of animal science,1 czech journal of food sciences,1 czech journal of genetics and plant breeding,1 czech mycology,-1 czech polar reports,1 czech yearbook of public and private international law,1 czechoslovak mathematical journal,1 czestochowa university of technology,-1 cálliidlágádus,1 cátedra villarreal,-1 çedille,1 d-lib magazine,1 d.k. print world (p) ltd,-1 d.k. publishers & distributors,-1 d.s. brewer,2 d?ngwùxué yánji?,-1 daaam international scientific book,1 daanish books,-1 dacia: revue darcheologie et dhistoire ancienne,1 dacoromania,1 dados: revista de ciencias sociais,1 dae panel,1 daedalus,2 dafolo,-1 dagens logistik,-1 dagens nyheter,-1 dagstuhl manifestos,-1 dagstuhl reports,-1 daidalos,1 daigaku kyoiku shuppan,-1 daimon: revista de filosofia,1 dairy,-1 dairy industries international,1 dairy science and technology,1 dairycare cost action fa1308,-1 daizu tampakushitsu kenkyu,-1 dalhousie french studies,1 dalhousie law journal,1 dalhousie review,1 dalloz ip/it,-1 dalnauka,-1 dalton transactions,1 dance articulated,1 dance chronicle,2 dance magazine,-1 dance research,2 dance research journal,3 "dance, movement & spiritualities",1 dancecult: journal of electronic dance music culture,1 dancing times,-1 dangdai jiaoyu yanjiu jikan,-1 danish foreign policy review,-1 danish medical journal,1 danish yearbook of musicology,1 danish yearbook of philosophy,1 danmarks pædagogiske universitets forlag,1 danmarks tekniske universitet,-1 dansk musikforskning online,1 dansk psykologisk forlag,1 dansk sociologi,1 dansk sprognævn,-1 dansk teologisk tidsskrift,1 dansk universitetspædagogisk tidsskrift,-1 danske studier,1 danske talesprog,1 dansklærerforeningen,1 dante füzetek,-1 dante studies,1 dao: a journal of comparative philosophy,1 daol: discourse analysis online,1 daphnis: zeitschrift für mittlere deutsche literatur und kultur der frühen neuzeit,1 dar al-kitab al-miṣri,1 darbai ir dienos,-1 darkmatter,1 darnioji daugiakalbystė,1 daru-journal of pharmaceutical sciences,-1 darulfunun ilahiyat,1 das achtzehnte jahrhundert,1 das argument: zeitschrift für philosophie und sozialwissenschaften,1 das mittelalter,1 das zeichen : zeitschrift fur sprache und kultur gehörloser,1 data,1 data & policy,1 data and information management,1 data and knowledge engineering,2 data base for advances in information systems,1 data compression conference,1 data envelopment analysis journal,-1 data in brief,1 data intelligence,1 data mining and knowledge discovery,3 data science and engineering,1 data science for transportation,1 data science in science,1 data science journal,1 data-centric engineering,1 data-intensive collaboration in science and engineering workshop,-1 database-the journal of biological databases and curation,1 datakan p'ordzak'nnut'yan ev k'reagitut'yan haykakan handes,-1 datenschutz und datensicherheit,-1 datutop,1 davidsfonds,-1 davvi girji,1 dawn,-1 daya publishing house,-1 daʾrunaʾ,-1 db,-1 de achttiende eeuw,1 de boccard,1 de boeck,-1 de economist,1 de eerste dag,-1 de ethica,1 de europa,1 de facto editora,-1 de gruyter,3 de gruyter oldenbourg,1 de gruyter saur,1 de jure,1 de luca editori d´arte,1 de sitter publications,1 dead sea discoveries,2 deaf worlds: international journal of deaf studies,1 deafness and education international,1 dearquitectura,-1 death studies,1 debat supplement,1 debate terminológico,1 debater a europa,1 debats,-1 debrecen university press,-1 decarbon,1 decibel new music,-1 decision,1 decision analysis,1 decision analytics journal,1 decision sciences,2 decision support systems,3 decisions in economics and finance,1 decolonization,1 deep underground science and engineering,1 deep-sea research part i: oceanographic research papers,1 deep-sea research part ii: topical studies in oceanography,1 defect and diffusion forum,1 defence and peace economics,1 defence strategic communications,-1 defence studies,1 defence technology,1 defense and security analysis,1 defensor legis,1 defensor patriae,-1 degenerative neurological and neuromuscular disease,-1 degres: revue de synthese a orientation semiologique,1 degrowth journal,1 "dekoratyviuju ir sodo augalu sortimento, technologiju ir aplinkos optimizavimas",-1 del umbral,-1 dela : oddelek za geografijo filozofske fakultete v ljubljani,1 delaware journal of corporate law,1 delectus seminum,-1 deleuze and guattari studies,1 delft technical university,-1 delta book world,-1 deltion christianikīs archaiologikīs etaireias,1 dementia,1 dementia & neuropsychologia,1 dementia and geriatric cognitive disorders,1 dementia and geriatric cognitive disorders extra,1 demeter,-1 demeter press,-1 demis : demografičeskie issledovaniâ,-1 democracy & education,1 democracy and security,1 democratic theory,1 democratization,2 demografičeskoe obozrenie,1 demographic research,1 demography,3 demokraatti,-1 demokratizatsiya: the journal of post-soviet democratization,2 demonstratio mathematica,1 demos,1 demófilo : revista de cultura tradicional de andalucia,1 den norske tannlegeforenings tidende,1 dendrobiology,1 dendrochronologia,1 denken ohne geländer,-1 "denki gakkai rombunshi. a, kiso, zairyō, kyōtsū bumonshi",1 denki gakkai ronbunshi,-1 denki gakkai ronbunshi. b: denryoku enerugi bumonshi,-1 denkmalpflege,1 dental and medical problems,1 dental clinics of north america,-1 dental hypotheses,-1 dental journal,-1 dental materials,3 dental materials journal,1 dental press journal of orthodontics,1 dental traumatology,1 dental update,1 dentistry journal,1 dentomaxillofacial radiology,1 denver university law review,1 departamento de agricultura de la diputación foral de bizkaia,-1 department of agricultural sciences publications,-1 department of culture and tourism,-1 depression and anxiety,3 der anaesthesist,1 der bauingenieur,-1 der burger im staat,1 der deutschunterricht,-1 der gynäkologe,1 der mathematikunterricht,1 "der moderne staat: zeitschrift für public policy, recht und management",1 der sprachdienst,-1 der tagesspiegel,-1 derbyshire archaeological journal,1 derecho animal,1 derecho pucp,-1 derivatives & financial instruments,-1 dermatitis,1 dermato-endocrinology,1 dermatologic clinics,1 dermatologic surgery,1 dermatologic therapy,1 dermatologica sinica,-1 dermatology,1 dermatology and therapy,-1 dermatology online journal,1 derrida today,1 des femmes - antoinette fouque,-1 desafios,-1 desalination,2 desalination and water treatment,1 desc,1 descant,1 desde el margen,-1 deshima,-1 design & tecnologia,1 design 360°,-1 design and culture,2 design and technology education: an international journal,1 design automation for embedded systems,2 design for health,1 design issues,3 design journal,3 design management institute,-1 design management journal,-1 design management review,1 design methods,1 design philosophy papers,1 design principles and practices,1 design research quarterly,1 design research society,1 design science,1 design society,1 design studies,3 "design, construction, maintenance",-1 designed monomers and polymers,1 designmuseo,-1 designs,-1 designs codes and cryptography,3 designs for learning,1 designskolen kolding,-1 desperta ferro,-1 destech publications inc.,-1 "destech transactions on social science, education and human science",-1 desy proceedings,-1 det norske videnskaps-akademi,1 det teologisk fakultet : afdeling for bibelsk eksegese,-1 detay anatolia akademik yayıncılık,-1 detritus,1 detskie čteniâ,-1 detskij sad,-1 "deusto, estudios cooperativos",1 deuterocanonical and cognate literature,-1 deutsch als fremdsprache,3 deutsch im kontrast,1 deutsche bundesbank,-1 deutsche entomologische zeitschrift,1 deutsche gesellschaft für akustik,-1 deutsche gesellschaft für luft- und raumfahrt - lilienthal-oberth e.v.,-1 deutsche lebensmittel-rundschau,1 deutsche mathematiker vereinigung: jahresbericht,1 deutsche medizinische wochenschrift,1 deutsche orient-gesellschaft,1 deutsche orient-gesellschaft: mitteilungen,1 deutsche sprache,2 deutsche universitäts-verlag,1 deutsche vierteljahrsschrift für literaturwissenschaft und geistesgeschichte,3 deutsche zeitschrift für philosophie,1 deutsche zeitschrift für sportmedizin,1 deutscher akademischer austauschdienst,-1 deutscher kunstverlag,1 deutsches archiv für erforschung des mittelalters,2 deutsches archäologisches institut,1 deutsches arzteblatt international,1 deutsches dante-jahrbuch,1 deutsches jugendinstitut e.v.,-1 deutsches schiffartsarchiv,1 deutsches ärzteblatt: ausgabe a: ärztliche mitteilungen,1 deutschunterricht : zeitschrift für erziehungs- und bildungsaufgabe des deutschunterrichts,-1 deutschunterricht für ungarn,-1 developing economies,1 developing world bioethics,1 development,1 development,2 development and change,3 development and learning in organizations,-1 development and psychopathology,2 development dialogue,1 development genes and evolution,1 development growth and differentiation,1 development in practice,1 development policy review,1 development southern africa,1 developmental and comparative immunology,1 developmental biology,1 developmental cell,3 developmental cognitive neuroscience,1 developmental disabilities research reviews,1 developmental dynamics,1 developmental medicine and child neurology,3 developmental neurobiology,1 developmental neuropsychology,1 developmental neurorehabilitation,1 developmental neuroscience,1 developmental period medicine,-1 developmental psychobiology,1 developmental psychology,3 developmental review,3 developmental science,3 developments in biologicals,1 developments in earth surface processes,1 developments in international law,1 developments in marketing science : proceedings of the academy of marketing science,-1 developments in paleoenvironmental research,1 developments in precambrian geology,1 developments in the built environment,1 developments in water science,1 deviance et societe,1 deviant behavior,1 device,1 dewey studies,1 dgvt verlag,-1 dh lawrence review,1 dhcommons journal,-1 dia-logos,1 diabetes,-1 diabetes,3 diabetes & metabolic syndrome,1 diabetes & metabolism journal,1 diabetes and metabolism,1 diabetes and vascular disease research,1 diabetes care,3 diabetes educator,1 diabetes epidemiology and management,1 diabetes ja lääkäri,-1 diabetes management,-1 diabetes obesity and metabolism,1 diabetes research and clinical practice,1 diabetes spectrum,1 diabetes technology and therapeutics,1 diabetes therapy,1 "diabetes, metabolic syndrome and obesity",1 diabetes/metabolism research and reviews,1 diabetic medicine,1 diabetologia,3 diabetology & metabolic syndrome,1 diachronica,3 diaconia: journal for the study of christian social practice,1 diacritics: a review of contemporary criticism,3 diacronia,1 "diacronie, studi di storia contemporanea",1 diacrítica,1 diadora,1 diagnosis,-1 diagnostic and interventional imaging,1 diagnostic and interventional radiology,1 diagnostic and prognostic research,1 diagnostic and therapeutic endoscopy,1 diagnostic cytopathology,1 diagnostic histopathology,-1 diagnostic microbiology and infectious disease,1 diagnostic molecular pathology,1 diagnostic pathology,1 diagnostica,1 diagnostics,-1 diagnostika,-1 diak opetus,-1 diak publications,-1 diak puheenvuoro,-1 diak tutkimus,-1 diak työelämä,-1 diak vuosikirja,-1 diakonia+,-1 diakonia-ammattikorkeakoulu,-1 diakonian tutkimus,1 dialectic,-1 dialectica,2 dialectical anthropology,2 dialectologia,1 dialectologia et geolinguistica,1 dialog,-1 dialog: a journal of theology,1 dialogi,-1 dialogic pedagogy,1 dialogo,1 dialogo andino,-1 dialogos förlag,1 dialogue,1 dialogue and discourse,1 dialogue and universalism,1 dialogue in praxis: a social work international journal,1 dialogue society,-1 dialogue: canadian philosophical review,1 dialogues d'histoire ancienne,1 dialogues francophones,1 dialogues in health,1 dialogues in human geography,2 "dialogues in philosophy, mental and neuro sciences",1 dialogues in sociology,-1 dialogues on digital society,1 dialogul slaviştilor la începutul secolului al xxi-lea,-1 dialysis and transplantation,1 diamina,-1 diamond and related materials,1 diamond congress ltd,-1 diamond light source ltd,-1 dianji yu kongzhi xuebao,-1 dianli jianshe,-1 dianzi xuebao,-1 diaphanes ag,-1 diaspora studies,1 "diaspora, indigenous and minority education",1 diaspora: a journal of transnational studies,2 "diasporas, histoire et sociétés",1 diaspory: nezavisimyj nauchnyj zhurnal,1 diasteema,-1 diatom research,1 diavlos,1 dichtung-digital,1 diciottesimo secolo,1 dickens quarterly,1 dickens studies annual,1 dickensian,1 dictionaries: journal of the dictionary society of north america,1 dictionary of literary biography,1 didacta varia (helsingin yliopisto. opettajankoulutuslaitos),-1 didacticae,-1 didactique du fles,-1 didakt kiadó,-1 didaktik der physik,-1 didaskalia ton fysikon epistimon : ereuna kai praxi,1 didaskalia: ancient theater today,1 diderot studies,1 didrichsenin taidemuseo,-1 didrichsenin taidemuseon julkaisu,-1 didymos-verlag,-1 didáctica geográfica,-1 die,1 die betriebswirtschaft,-1 die casting engineer,1 die deutsche schule,1 die friedens-warte,1 die laute: jahrbuch der deutschen lautengesellschaft,1 die neue sammlung,-1 die pathologie,-1 die philosophin,1 die unterrichtspraxis / teaching german,1 die verwaltung: zeitschrift für verwaltungsrecht und verwaltungswissenschaften,1 die vogelwelt,-1 die volkswirtschaft,-1 die welt der slaven: halbjahresschrift fur slavistik,2 die welt des islams,2 die welt des orients,1 die weltwoche,-1 die zeit,-1 diedut,1 diegesis,1 dielheimer blätter zum alten testament und seiner rezeption in der alten kirche,1 diesel progress north american edition,1 dietetics,-1 diethnes panepistimio tis ellados,-1 differences: a journal of feminist cultural studies,3 differencialʹnye uravneniâ i processy upravleniâ,1 differential and integral equations,1 differential equations,1 differential equations and applications,1 differential equations and dynamical systems: an international journal for theory and applications,1 differential geometry and its applications,1 differential geometry: dynamical systems,1 differentiation,1 diffusion foundations,1 diffusion fundamentals,1 digest : journal of diversity and gender studies,1 digest journal of nanomaterials and biostructures,1 digest of technical papers (society for information display),-1 digest of technical papers : symposium on vlsi technology,1 digest of the ieee antennas and propagation society international symposium,1 digest of the leos summer topical meetings,1 digestion,1 digestive and liver disease,1 digestive diseases,1 digestive diseases and sciences,1 digestive endoscopy,1 digestive surgery,1 digibarometri,-1 digicopy fecem,-1 digipolis magazine,-1 digital age in semiotics & communication,-1 digital applications in archaeology and cultural heritage,1 digital biomarkers,1 digital business,1 digital chemical engineering,1 digital communications and networks,1 digital creativity,2 digital culture & education,1 digital culture & society,1 digital defoe,-1 digital discovery,1 digital economy and sustainable development,-1 digital education review,-1 digital enlightenment studies,-1 digital evidence and electronic signature law review,1 digital experiences in mathematics education,1 digital finance,1 digital formations,1 digital geography and society,1 digital government,1 digital handbook of the history of experience,-1 digital health,1 digital humanities in the nordic and baltic countries publications,1 digital humanities quarterly,1 digital icons,1 digital journalism,3 digital medievalist,1 digital philology,1 "digital policy, regulation and governance",1 digital presentation and preservation of cultural and scientific heritage,-1 digital psychiatry,1 digital scholarship in the humanities,2 digital signal processing,1 digital society,1 digital studies,2 digital transformation and society,1 digital tv europe,1 digital twin,1 digital war,1 digithum,1 dignity,1 diid,1 dijiteol yesul gonghak meoltimidieo nonmunji,-1 dike,1 dike verlag,1 dil eğitimi ve araştırmaları dergisi,1 dili kexue jinzhan,-1 dimecc publications series,-1 dimensio,-1 dimensions - journal of architectural knowledge,1 din : religionsvitenskapelig tidsskrift,1 din ve bilim muş alparslan üniversitesi i̇slami i̇limler fakültesi dergisi,1 dinamičeskie sistemy,-1 dino,-1 dio press,-1 diogenes,1 dionysius,1 diotime,-1 diplomacy and statecraft,1 diplomatic history,2 diplomatic studies,1 diplomatica,1 diplomatische akademie wien,-1 dipterists digest,-1 diqiu huaxue,1 dirāsāt wa abḥāṯ,-1 direktor shkoly,-1 diritto e giustizia,1 diritto penale e processo,1 diritto pubblico,1 disabilities,-1 disability and health journal,1 disability and rehabilitation,1 disability and rehabilitation: assistive technology,1 disability and society,2 disability studies quarterly,1 disaster advances,-1 disaster medicine and public health preparedness,1 disaster prevention and management,1 disasters,2 discern,-1 disciplinary and interdisciplinary science education research,1 discipline filosofiche,1 discours social: analyse du discours et sociocritique des textes,1 "discours: revue de linguistique, psycholinguistique et informatique",1 discourse and communication,2 discourse and communication for sustainable education,1 discourse and society,2 "discourse approaches to politics, society and culture",1 discourse processes,2 discourse studies,3 "discourse, context and media",3 discourse: journal for theoretical studies in media and culture,1 discourse: studies in the cultural politics of education,2 discourses in dance,1 discover agriculture,-1 discover analytics,1 discover animals,1 discover applied sciences,1 discover artificial intelligence,1 discover cities,-1 discover civil engineering,1 discover computing,3 discover education,1 discover energy,1 discover environment,1 discover food,1 discover geoscience,1 discover global society,-1 discover internet of things,1 discover mechanical engineering,1 discover mental health,1 discover nano,1 discover networks,-1 discover oncology,-1 discover plants,-1 discover psychology,1 discover public health,1 discover social science and health,1 discover sustainability,1 discover water,1 discoveries in agriculture and food sciences,-1 discovery immunology,-1 discovery medicine,1 discrete analysis,2 discrete and computational geometry,2 discrete and continuous dynamical systems: series a,1 discrete and continuous dynamical systems: series b,1 discrete and continuous dynamical systems: series s,1 discrete applied mathematics,2 discrete dynamics in nature and society,1 discrete event dynamic systems: theory and applications,1 discrete mathematics,1 discrete mathematics and theoretical computer science,1 "discrete mathematics, algorithms, and applications",1 discrete optimization,1 discusiones filosóficas,1 discussion paper,-1 discussion paper (population europe),-1 discussion papers,-1 discussiones mathematicae : general algebra and applications,1 discussiones mathematicae graph theory,1 discussiones mathematicae: probability and statistics,1 disease models and mechanisms,2 diseases,-1 diseases of aquatic organisms,1 diseases of the colon and rectum,1 diseases of the esophagus,1 disegnare con,1 disegnare idee immagini,1 disegno,1 disertaciones,1 diseña,1 diskurs,-1 diskus: the on-disk journal of international religious studies,1 diskussion musikpaedagogik,1 diskussionspapier,-1 diskussionspapiere - deutsches institut für wirtschaftsforschung,-1 dislocations in solids,1 disp,1 disparidades,1 displays,1 disputatio,1 disputatio philosophica,1 dispute,-1 dispute resolution studies review,-1 dissent,1 disserta verlag,-1 dissertationes forestales,-1 dissertationes mathematicae,1 dissolution technologies,1 distance education,1 distinktion,1 distributed and parallel databases,1 distributed computing,2 distributed generation and alternative energy journal,-1 dituria,-1 divan,-1 diverscité langues,-1 diversite,-1 diversity,-1 diversity and distributions,2 diversity and equality in health and care,-1 diving and hyperbaric medicine,1 dix-huitieme siecle,1 dix-neuf,1 "diy, alternative cultures & society",1 dizhi xuebao,-1 diálogo com a economia criativa,-1 diálogo de la lengua,1 diálogos,1 djøf,1 dkv - deutscher kälte- und klimatechnischer verein,1 dlz primus schwein,-1 dm disease-a-month,1 dmitrii bulanin,1 dna and cell biology,1 dna repair,1 dna research,1 dobras,1 docendo,-1 docmus-tohtorikoulun julkaisuja,1 docomomo international,-1 docomomo journal,1 docpoint,-1 "doctoral conference on computing, electrical and industrial systems",-1 document design companion series,1 document numerique,1 documenta archaeobiologiae,1 documenta mathematica,2 documenta ophthalmologica,1 documenta praehistorica,1 documenta: tijdschrift voor theater,1 documenti e studi sulla tradizione filosofica medievale,1 documenti geografici,-1 documentos de traballo. geography young scholars,-1 documents d analisi geografica,1 documents d archeologie meridionale,1 documents of the evangelical lutheran church of finland,1 documents pour l'histoire du français langue étrangère ou seconde,1 doklady akademii nauk : rossijskaâ akademiâ nauk,-1 doklady biochemistry and biophysics,-1 doklady chemistry,-1 doklady earth sciences,1 doklady mathematics,1 doklady nacionalʹnoj akademii nauk belarusi,-1 doklady physical chemistry,-1 doklady physics,1 doklady. biological sciences,-1 dokumentation från fakulteten för pedagogik och välfärdsstudier,-1 dokumente,-1 dokuz eylül university,-1 dokuz eylül üniversitesi i̇şletme fakültesi dergisi,-1 dolomites research notes on approximation,-1 dom štampe,1 domestic animal endocrinology,1 domus argenia,-1 domuzīme,-1 donald school journal of ultrasound in obstetrics and gynecology,-1 donzelli editore,-1 doppiavoce,-1 dora yayıncılık,-1 dose-response,1 dosis,1 dossier de droit europeen,-1 dossiers forum transregionale studien,-1 dostoevsky studies,1 dotawo,-1 douleur et analgesie,1 dovenschmidt quaterly,-1 down beat,-1 doxa: cuadernos de filosofia y derecho,1 dpce online,1 dqr studies in literature,1 dr. a.j. denkena verlag,1 dr. manisha basumondal,1 dragtjournalen,-1 drama research,1 drama: nordisk dramapedagogisk tidsskrift,1 drammaturgia,1 dreaming,1 dress,1 drevnyaya rus : voprosy medievistiki,1 drewno,-1 dreyers,-1 drinking water engineering and science,1 droit & philosophie,-1 droit de lenvironnement,-1 drone systems and applications,-1 drones,-1 droplet,1 droste verlag,1 droz,2 druck-zuck,-1 druckverlag kettler,-1 drug and alcohol dependence,2 drug and alcohol review,1 drug and chemical toxicology,1 drug and therapeutics bulletin,1 drug delivery,1 drug delivery and translational research,1 drug design development and therapy,-1 drug development and industrial pharmacy,1 drug development research,1 drug discovery today,2 drug discovery today: disease models,1 drug discovery today: technologies,1 drug metabolism and bioanalysis letters,1 drug metabolism and disposition,2 drug metabolism and personalized therapy,1 drug metabolism and pharmacokinetics,1 drug metabolism reviews,1 drug news and perspectives,1 drug repurposing,-1 drug resistance updates,2 drug safety,1 drug safety : case reports,-1 "drug science, policy and law",-1 drug testing and analysis,1 "drug, healthcare and patient safety",1 drugs,2 drugs - real world outcomes,1 drugs and aging,1 drugs and cell therapies in hematology,-1 drugs and therapy perspectives,1 drugs of the future,1 drugs of today,1 "drugs, habits and social policy",1 drugs-education prevention and policy,1 drustvena istrazivanja,1 družestvo na rusistite v bulgaria,-1 družina,-1 drvna industrija,1 drying technology,1 ds : derecho y salud,-1 dsm technical publications,1 du,1 du bois review,1 dual eye-tracking workshop,-1 dublin city university,-1 dublin institute for advanced studies,-1 dublin university law journal,1 duckworth,1 duculot,1 duke environmental law and policy forum,1 duke journal of comparative and international law,1 duke journal of gender law and policy,1 duke law journal,2 duke mathematical journal,3 duke university press,2 dumbarton oaks,1 dumbarton oaks papers,2 duncker & humblot,1 dunedin academic press,1 dunod editeur,1 duodecim,1 duquesne university press,1 durability and damage tolerance of composite materials and structures,1 durham middle east papers,-1 dutch crossing: a journal of low countries studies,1 dutch journal for music theory,1 dutch journal of applied linguistics,1 dutkansearvvi dieđalaš áigečála,1 dve domovini-two homelands,1 dvs-berichte,-1 dvt: dejiny ved a techniky,1 dvv media group gmbh,-1 dwi-jahrbuch,-1 dyes and pigments,1 dykinson,-1 dynamic games and applications,1 dynamic interpretations of the past,-1 dynamic systems and applications,-1 dynamical systems: an international journal,1 dynamics of asymmetric conflict,1 dynamics of atmospheres and oceans,1 "dynamics of continuous, discrete and impulsive systems series a: mathematical analysis",1 dynamics of partial differential equations,1 dynamis,1 dyskursy młodych andragogów,1 dyskursy o kulturze,-1 dyslexia,2 dysphagia,2 dzieje najnowsze,1 dálný východ,-1 dìqiú xìnxī kēxué,-1 düsseldorf university press,1 dějiny-teorie-kritika,1 e & fn spon,1 e&d ltd,-1 e+m : ekonomie a management,-1 e-beratungsjournal,1 e-competitions,-1 e-conservation journal,-1 e-flux journal,-1 e-health telecommunication systems and networks,-1 e-informatica,1 e-international journal of educational research,-1 e-international relations,-1 e-international relations,1 e-journal cigr,1 e-journal for translingual discourse in ethnomusicology,-1 e-journal of applied psychology,1 e-journal of nondestructive testing,-1 e-journal of portuguese history,1 e-journal of surface science and nanotechnology,1 e-journall,1 e-l@tina,1 e-learning and digital media,1 e-learning and education,1 e-learning papers,1 e-legal : revue de la faculté de droit et de criminologie de l'université libre de bruxelles,-1 e-logos: electronic journal for philosophy,1 e-polymers,1 e-preservation science,1 "e-prime : advances in electrical engineering, electronics and energy",1 e-rea,-1 e-review of tourism research,-1 e-service journal,1 e-water,-1 e. schweizerbartsche verlagsbuchhandlung,1 e3s web of conferences,1 e`kolit,-1 e`kon-inform,-1 eai endorsed transactions on artificial intelligence and robotics,1 eai endorsed transactions on cognitive communications,-1 eai endorsed transactions on creative technologies,1 eai endorsed transactions on future intelligent educational environments,-1 eai endorsed transactions on intelligent systems and machine learning applications,-1 eai endorsed transactions on pervasive health and technology,-1 eai endorsed transactions on serious games,-1 eai endorsed transactions on smart cities,-1 eai endorsed transactions on wireless spectrum,-1 eai international conference on testbeds and research infrastructures for the development of networks & communities,-1 eai publishing,-1 eai/springer innovations in communication and computing,-1 eaie forum,-1 ealthy magazine,-1 eandmj: engineering and mining journal,1 eapril conference proceedings,1 ear and hearing,3 ear se l newsletter,-1 early american literature,2 early american studies: an interdisciplinary journal,1 early child development and care,1 early childhood education journal,1 early childhood research and practice,1 early childhood research quarterly,2 early china,1 early christianity,2 early education,1 early education and development,1 early human development,1 early intervention in psychiatry,1 early keyboard journal,1 early medieval china,1 early medieval europe,3 early modern and modern studies,1 early modern culture online,-1 early modern history : society and culture,3 early modern literary studies,1 early modern morals excerpts,-1 early modern women: an interdisciplinary journal,1 early music,2 early music history,3 early popular visual culture,1 early science and medicine,1 early theatre,1 early years: an international research journal,1 earsel eproceedings,1 earth,-1 earth and environmental science transactions of the royal society of edinburgh,1 earth and planetary physics,1 earth and planetary science letters,3 earth and space science,1 earth interactions,1 earth moon and planets,1 earth planets and space,1 earth science informatics,1 "earth science, systems and society",1 earth sciences history,1 earth sciences research journal,1 earth stewardship,-1 earth surface dynamics,2 earth surface processes and landforms,2 earth system dynamics,1 earth system governance,1 earth system science data,2 earth systems and environment,1 earth's future,2 earth-science reviews,3 earth`s cryosphere,-1 earthquake engineering and engineering vibration,1 earthquake engineering and structural dynamics,2 earthquake science,1 earthquake spectra,1 earthquakes and structures,1 earthscan,1 easst review,-1 east african journal of peace and human rights,-1 east african journal of public health,1 east african researcher,-1 east and west,1 east asia,1 east asia forum,-1 east asia forum quarterly,-1 east asian history,1 east asian journal of philosophy,1 east asian pragmatics,1 "east asian science, technology and society",1 "east asian science, technology, and medicine",1 east central europe,1 east china normal university press,-1 east european jewish affairs,1 east european journal of psycholinguistics,1 east european memory studies,-1 east european politics,2 east european politics and societies,2 east european quarterly,1 "east, west",1 east-west books,-1 east-west journal of mathematics,1 east-west studies,1 eastern africa social science research review,1 eastern anthropologist,-1 eastern buddhist,1 eastern european business and economics journal,-1 eastern european countryside,1 eastern european economics,1 eastern european holocaust studies,-1 eastern journal of european studies,-1 eastern mediterranean health journal,1 eastern-european journal of enterprise technologies,-1 easychair proceedings in computing,-1 eating and weight disorders: studies on anorexia bulimia and obesity,1 eating behaviors,1 eating disorders,1 eb-verlag,1 ebapebr cadernos,-1 ebib: elektroniczny biuletyn informacyjny bibliotekarzy,1 ebiomedicine,1 ebsco bulletin of serials changes,1 eburon,1 ec tax review,2 ec2e2n newsletter,-1 ecaade,1 ecaade proceedings,-1 ecancermedicalscience,1 ecb legal conference,-1 ecclesia orans: periodica de scientiis liturgicis,1 ecclesial practices,1 ecclesiastical law journal,1 ecclesiology,1 eceee industrial summer study proceedings,-1 eceee summer study proceedings,-1 echelle-1,-1 echo,1 echo research and practice,1 echocardiography: a journal of cardiovascular ultrasound and allied techniques,1 eciperu,-1 ecletica quimica,-1 eclettica edizioni,-1 eclinicalmedicine,1 ecloga,1 eclr: european competition law review,2 ecnu review of education,1 eco mont-journal on protected mountain areas research,-1 eco-environment & health,1 eco-ethica,1 eco-innovation observatory,-1 ecocene : cappadocia journal of environmental humanities,1 ecoenergy,1 ecofeminism and climate change,1 ecography,3 ecohealth,1 ecohydrology,1 ecohydrology & hydrobiology,1 ecole centrale de nantes,-1 ecole d'architecture de grenoble,-1 ecole française de rome,1 ecologia en bolivia,-1 ecologia politica,-1 ecologica montenegrina,1 ecological and environmental anthropology,1 ecological and evolutionary physiology,1 ecological applications,2 ecological chemistry and engineering s-chemia i inzynieria ekologiczna s,1 ecological complexity,1 ecological economics,2 ecological engineering,1 ecological entomology,2 ecological frontiers,1 ecological indicators,1 ecological informatics,1 ecological management and restoration,1 ecological modelling,1 ecological monographs,3 ecological parasitology and immunology,-1 ecological processes,1 ecological psychology,1 ecological questions,-1 ecological research,1 ecological solutions and evidence,1 ecologies,-1 ecology,3 ecology and evolution,1 ecology and society,1 ecology law quarterly,1 ecology letters,3 ecology of food and nutrition,1 ecology of freshwater fish,1 ecología austral,-1 ecomat,1 econ journal watch,1 econometric reviews,2 econometric theory,2 econometrica,3 econometrics,-1 econometrics and statistics,1 econometrics journal,2 economia agro-alimentare,1 economia della cultura,-1 economia e politica,-1 economia e politica industriale,1 economia industrial,-1 economia internazionale,-1 economia politica,-1 economia pubblica,-1 economia. seria management,-1 economic affairs,1 economic analysis and policy,1 economic and industrial democracy,1 economic and labour relations review,1 economic and political studies,1 economic and political weekly,1 "economic and social changes: facts, trends, forecast",-1 economic and social development,-1 economic and social review,1 economic botany,1 economic change and restructuring,1 economic computation and economic cybernetics studies and research,1 economic development and cultural change,2 economic development quarterly,1 economic geography,3 economic geology,2 economic history of developing regions,2 economic history review,3 economic inquiry,2 economic issues,1 economic journal,3 economic modelling,1 economic notes,1 economic policy,2 economic problems of tourism,-1 economic record,1 economic sociology: the european electronic newsletter,1 economic systems,1 economic systems research,1 economic theory,2 economic theory bulletin,1 economic thought,1 economica,1 economica,2 economics,1 economics & education,-1 economics and business letters,1 economics and culture,-1 economics and finance review,-1 economics and human biology,1 economics and management,-1 economics and philosophy,2 economics and policy of energy and the environment,-1 economics and politics,1 economics and sociology,1 economics bulletin,1 economics letters,1 economics of disasters and climate change,1 economics of education review,2 economics of energy and environmental policy,1 economics of governance,1 economics of innovation and new technology,1 economics of transition and institutional change,1 economics of transportation,1 economie et statistique,1 economies,-1 economy and society,1 econpol forum,-1 econtent,1 ecopsychology,1 ecosal plus,-1 ecoscience,1 ecosistemas,1 ecosphere,1 ecosystem health and sustainability,1 ecosystem services,2 ecosystems,2 ecosystems and people,1 ecotoxicology,1 ecotoxicology and environmental safety,2 ecotropica,1 ecozon@,1 ecpr press,1 "ecps, journal of educational, cultural and psychological studies",1 ecs journal of solid state science and technology,1 ecs sensors plus,1 ecs solid state letters,-1 ecs transactions,-1 ecti transactions,1 ecti transactions on computer and information technology,1 ecumenical review,1 edamba journal,-1 edda,3 eddy.se ab,-1 ediciones abya-yala,-1 ediciones ampersand,-1 ediciones asimétricas,-1 ediciones casa verde,1 ediciones del orto,-1 ediciones el almendro de córdoba,1 "ediciones eunate, s.a.",1 ediciones godot,-1 ediciones morata,-1 ediciones universidad de navarra sa,1 ediciones universidad de salamanca,-1 ediciones universitarias de valparaiso,1 ediciones uo,-1 edicions de la universitat de lleida,-1 edifir - edizioni,1 edify,-1 edilex,1 edinburgh journal of botany,1 edinburgh law review,1 edinburgh napier university,-1 edinburgh university press,2 edipuglia,-1 edisai,-1 edistys : analyysi,-1 edit taidemedia,-1 edita,1 edith stein jahrbuch,-1 edith wharton review,1 editio: internationales jahrbuch fur editionswissenschaft,1 edition,-1 edition donau-universität krems,-1 edition kirchhof & franke,1 edition leipzig,-1 edition lumière,1 edition patrick frey,-1 edition sigma,1 edition text + kritik,2 edition vulpes,-1 editiones scholasticae,1 editions a. pedone,-1 editions averbode erasm,-1 editions dalloz,1 editions de l'université de lorraine,1 editions de laube,-1 editions du centre pompidou,1 editions du cerf,1 editions du cipa,-1 editions fedora,-1 editions jerome millon,1 editions latomus,-1 editions mergoil,-1 editions universitaires de dijon,-1 editora artemis,-1 editora campus,1 editora científica digital,-1 editora contracorrente,-1 editora crv,-1 editora d'plácido,-1 editora da furg,-1 editora da universidade federal de minas gerais,-1 editora da universidade federal de uberlândia,1 editora foco,-1 editora inovar,-1 editora intersaberes,-1 editora kelps,-1 editora milfontes,-1 editora poisson,-1 editora prismas,-1 editora sinodal,-1 editora telha,-1 editora ufjf,-1 editora ufpr,-1 editora ufrj,-1 editora via verita,-1 editorial académica española,-1 "editorial agrícola española, s.a.",-1 editorial aluvión,-1 editorial aranzadi,-1 editorial aresta,1 editorial caminho,1 editorial comares,1 editorial cujae,-1 editorial de la facultad de filosofía y letras universidad de buenos aires,-1 editorial de la universidad de costa rica,-1 editorial de la universitat politècnica de valència,-1 editorial digital sa,-1 editorial doble j,1 editorial el manual moderno,1 editorial estampa,1 editorial fontamara,-1 editorial graó,-1 editorial gredos,1 editorial hypermedia,-1 editorial la muralla,-1 editorial reus,-1 editorial sindéresis,1 editorial tirant lo blanch,-1 editorial trillas,1 editorial universidad de alcalá,-1 editorial universidad de antioquia,1 editorial universidad de caldas,-1 editorial universidad de granada,-1 editorial universidad de sevilla,1 editorial universidad del rosario,-1 editorial universidad francisco de vitoria,-1 editorial universidad icesi,1 editorial uoc,-1 editorial verbo,1 editorial verbo divino,-1 editoriale scientifica,1 editreg,-1 editrice morcelliana,-1 editura academiei române,-1 editura cetatea de scaun,-1 editura institutului pentru studierea problemelor minorităţilor naţionale,-1 editura polirom,1 editura politehnica,-1 editura u.t. press,-1 editura universitaria,-1 editura universitatii al. i. cuza,-1 editura universităţii din bucureşti,-1 editura universtitãtii transilvania din brasov,-1 edizioni ca' foscari - digital publishing,1 edizioni cuecm,-1 edizioni della normale,1 edizioni dell´orso,1 edizioni di archilet,-1 edizioni di pagina,1 edizioni di storia e letteratura,-1 edizioni efesto,-1 edizioni erickson,1 edizioni magma,-1 edizioni nerbini,-1 edizioni nuova cultura,-1 edizioni orientalia christiana,-1 edizioni pantarei,-1 edizioni plus pisa university press,1 edizioni unicopli,1 edizioni università di trieste,-1 edições afrontamento,-1 edições colibri,1 edições cosmos,1 edições húmus,-1 edições levana,-1 edições pedago,-1 edições universitárias lusófonas : biblioteca,-1 edp sciences,1 edu@kcja,-1 eduardo oliva,-1 eduardo tomé,-1 educacio quimica,-1 educacion xx1,1 educació social,-1 educación,-1 educación editora,-1 educación física y ciencia,-1 educación química,-1 "educação, sociedade & culturas",1 educar,1 educare,-1 educare,1 educating the young child,1 educatio,-1 education,-1 education 3-13,1 education and culture,1 education and health,1 education and information technologies,1 education and new developments,1 education and social theory,3 education and society,1 education and society in the middle ages and renaissance,1 education and the law,1 education and training,1 education and training in autism and developmental disabilities,1 education and treatment of children,1 education and urban society,1 education as change,1 education comparée,-1 education dialogue,1 education economics,1 education et societes,1 education finance and policy,2 education for chemical engineers,1 education for entrepreneurship : e4e,-1 education for health,1 education for information,1 education for primary care,1 education in chemistry,1 education in medicine journal,-1 education in the knowledge society,-1 education in the north,1 education inquiry,1 education law journal,-1 education next,1 education policy analysis archives,1 education reform journal,1 education research and perspectives,1 education sciences,-1 education sciences and psychology,-1 "education, citizenship and social justice",1 educational action research,1 educational administration quarterly,3 educational alternatives,-1 educational and child psychology,1 educational and psychological measurement,2 educational and vocational guidance,1 educational assessment,1 "educational assessment, evaluation and accountability",1 educational challenges,1 educational design research,1 educational evaluation and policy analysis,3 educational forum,1 educational gerontology,1 educational leadership,1 educational linguistics,-1 educational management administration and leadership,2 "educational measurement, issues and practice",1 educational philosophy and theory,1 educational policy,2 educational practice and theory,1 educational process : international journal,1 educational psychologist,3 educational psychology,2 educational psychology in practice,1 educational psychology review,2 educational research,-1 educational research,2 educational research and evaluation,1 educational research and reviews,-1 educational research for policy and practice,1 educational research quarterly,1 educational research review,3 educational researcher,3 educational review,2 educational studies,1 educational studies in mathematics,3 educational technology and society,2 educational technology research and development,2 educational theory,2 educationia confab,-1 educator,-1 educazione linguistica language education,-1 educação,-1 educação e pesquisa,1 educação gráfica,1 educere et educare,-1 educitec,-1 edufscar,1 edukacja,1 edukacja międzykulturowa,-1 edulearn proceedings,-1 edulingua,-1 eduskunnan kirjaston tutkimuksia ja selvityksiä,-1 eduskunnan tarkastusvaliokunnan julkaisu,-1 eduskunnan tulevaisuusvaliokunnan julkaisu,-1 eduskunnan tulevaisuusvaliokunta,-1 edusp,-1 edutec,-1 edward elgar,2 edwin mellen press,1 ee : evaluation engineering,1 eea report,-1 eelk konsistoorium,-1 eelk usuteaduse instituudi toimetised,1 eerdmans,1 eerika,-1 ees batteries,-1 ees catalysis,1 ees solar,-1 eesti arst,-1 eesti geoloogia selts,-1 eesti haridusteaduste ajakiri,1 eesti ja soome-ugri keeleteaduse ajakiri,1 eesti keele sihtasutus,-1 eesti koostöö kogu,-1 eesti kunstiakadeemia,-1 eesti kunstimuuseum,-1 eesti loomeagentuur oü,-1 eesti mälu instituut,-1 eesti noorsootöö keskus,-1 eesti rahva muuseum,-1 eesti rahva muuseumi aastaraamat,-1 eesti rakenduslingvistika uhingu aastaraamat,1 eesti teaduste akadeemia kirjastus,1 eesti teatriliit,-1 eetos,1 eetos-julkaisuja,1 efficiency and responsibility in education,-1 effortti,-1 eforeia archaiotiton thesprotias,-1 efort open reviews,1 efquel innovation forum proceedings,-1 efs budbäraren,-1 efsa journal,-1 efsa journal,1 efsa supporting publications,-1 ega professional congress organisers,-1 ega-revista de expresion grafica arquitectonica,1 egastroenterology,1 eger journal of english studies,-1 egitim arastirmalari-eurasian journal of educational research,-1 egitim ve bilim-education and science,-1 egitto e vicino oriente,1 egitânia sciencia,-1 egyháztörténeti szemle,-1 egyptian journal of agronomy,-1 egyptian journal of anaesthesia,1 egyptian journal of aquatic research,1 egyptian journal of basic and applied sciences,-1 egyptian journal of biological pest control,-1 egyptian journal of ear nose throat and allied sciences,-1 egyptian journal of forensic sciences (print),1 egyptian journal of immunology,-1 egyptian journal of linguistics translation,-1 egyptian journal of otolaryngology,1 egyptological memoirs,1 ehealth international: the journal of applied health technology,1 ehituskunst,-1 ehkäisevä päihdetyö ehyt ry,-1 ehne,-1 ehrensvärd-seura ry,-1 ehumanista,1 ehv academicpress,1 eiasm workshop on audit quality,-1 eiconics ltd,-1 eidola,1 eidos,-1 eidos,1 eidote,-1 eighteenth century : theory and interpretation,1 eighteenth-century fiction,2 eighteenth-century ireland,1 eighteenth-century life,1 eighteenth-century music,2 eighteenth-century studies,2 eigse: a journal of irish studies,1 eiho-sha,-1 eikasmos-quaderni bolognesi di filologia classica,1 eikon,1 einaudi,-1 eino roiha -säätiö,-1 eire-ireland,-1 eirene,1 eisenbrauns,1 eiszeitalter und gegenwart,-1 eizo joho media gakkaishi,-1 ejc paediatric oncology,1 ejc supplements,1 ejhaem,1 ejifcc,-1 ejnmmi physics,1 ejnmmi radiopharmacy and chemistry,1 ejnmmi research,1 ejournal of edemocracy and open government,1 ejournal of oral and maxillofacial research,-1 ejournalist,1 ejso,1 ejves vascular forum,1 ekdoseis alexandreia,-1 ekdoseis asini,-1 ekdoseis ellinikou anoiktou panepistimiou,-1 ekdoseis isnafi,-1 ekdoseis papazisi,-1 ekdoseis vanias,-1 ekdotikos oikos melissa,-1 ekf líceum kiadó,-1 ekho verlag,-1 ekisho,-1 ekklisiastikos pharos,1 eklem hastaliklari ve cerrahisi,1 ekm teaduskirjastus,1 ekologia,1 ekonometria,1 ekonomiaz,-1 ekonomicko-manažérske spektrum,1 ekonomická univerzita,-1 ekonomika ir vadyba,-1 ekonomika management inovace,-1 ekonomisk debatt,-1 ekonomiska forskningsinstitutet vid handelshögskolan i stockholm,-1 ekonomiska samfundets tidskrift,1 ekonomitsheskaja nauka sovremennoj rossii,-1 ekonomitsheskaja sotsiologija,1 ekonomitsheskie issledovanija,-1 ekonomska istrazivanja-economic research,-1 ekonomska misao i praksa,-1 "ekonomski vjesnik / econviews : review of contemporary entrepreneurship, business, and economic issues",-1 eksperimental'naya psikhologiya,-1 eksploatacja i niezawodność,-1 ekt-sarja,-1 ekta books distributers,-1 ekumenik i norden,-1 el colegio de méxico,-1 el croquis: de arquitectura y de diseno,1 el país,-1 el salto,-1 el-sanomat,-1 eläin,-1 elcvia electronic letters on computer vision and image analysis,1 elearning and software for education,-1 electa,1 electoral bulletins of the european union,-1 electoral politics,-1 electoral studies,2 electric power components and systems,1 electric power quality and supply reliability conference,-1 electric power systems research,2 electrical and control technologies,-1 electrical engineering,1 electrical engineering in japan,-1 "electrical engineering/electronics, computer, communications and information technology association",1 electrical overstress/electrostatic discharge symposium proceedings,-1 electrical power and energy conference,-1 "electrical, control and communication engineering",-1 electricity,-1 electricity journal,1 electroanalysis,1 electroanalytical chemistry,1 electrocatalysis,-1 electrochem,-1 electrochemical and solid state letters,1 electrochemical energy reviews,1 electrochemical science advances,1 electrochemical society,1 electrochemistry,-1 electrochemistry communications,1 electrochimica acta,2 electromagnetic biology and medicine,1 electromagnetics,1 electron,1 electronic antiquity,1 electronic book review,1 electronic commerce research,1 electronic commerce research and applications,1 electronic communications in probability,1 electronic communications of the easst,1 electronic design,1 electronic government,1 electronic green journal,1 electronic international journal of time use research,1 electronic journal of academic and special librarianship,1 electronic journal of applied statistical analysis,1 electronic journal of biotechnology,1 electronic journal of business ethics and organization studies,1 electronic journal of business research methods,1 electronic journal of combinatorics,2 electronic journal of communication,1 electronic journal of comparative law,1 electronic journal of contemporary japanese studies,1 electronic journal of differential equations,1 electronic journal of e-government,1 electronic journal of e-learning,-1 electronic journal of evolutionary modeling and economic dynamics,1 electronic journal of foreign language teaching,-1 electronic journal of geotechnical engineering,-1 electronic journal of human sexuality,1 electronic journal of information systems evaluation,1 electronic journal of information systems in developing countries,1 electronic journal of knowledge management,-1 electronic journal of linear algebra,1 electronic journal of mathematics and technology,1 electronic journal of organizational virtualness,-1 electronic journal of polish agricultural universities,-1 electronic journal of probability,2 electronic journal of qualitative theory of differential equations,1 electronic journal of research in educational psychology,1 electronic journal of sociology,1 electronic journal of statistics,2 electronic journal of structural engineering,1 electronic journal of vedic studies,1 electronic lexicography in the 21st century. proceedings of elex ... conference,-1 electronic library,1 electronic markets,1 electronic materials,-1 electronic materials letters,1 electronic notes in discrete mathematics,1 electronic notes in theoretical computer science,1 electronic proceedings in theoretical computer science,-1 electronic research archive,1 electronic structure,1 electronic transactions on numerical analysis,2 electronic workshops in computing,-1 electronics,-1 electronics and communications in japan,-1 electronics and nanotechnology,-1 electronics information and planning,1 electronics letters,1 electronics system integration technology conference,1 electronics world,-1 electrophoresis,1 električeskie stancii,-1 elektroniikkalehti,-1 elektronika ir elektrotechnika,-1 elektrotechnik und informationstechnik,1 elektrotehniski vestnik,-1 elelmiszervizsgalati kozlemenyek,1 elementa,1 elementary school journal,1 elemente der mathematik,1 elements,2 elements in music and the city,1 elements in publishing and book culture,1 elements in the philosophy of religion,1 elements on women in the history of philosophy,1 elena plaksina verlag,-1 elenchos,1 elephant and castle,1 eletricidade moderna,-1 eleven international publishing,1 elh,3 elia,1 elife,2 elight,1 eliksiiri,-1 elinehto,-1 elingup,-1 elinikäisen ohjauksen verkkolehti,-1 "elinkeino-, liikenne- ja ympäristökeskusten yhteiset viestintäpalvelut -yksikkö",-1 elintarvike ja terveys,-1 elintarvikeylioppilas,-1 elinvoimaa alueelle,-1 elisava tdd,-1 elixir psychology,-1 ella,-1 ellerströms,-1 "ellinika: philological, historical and folkloric review",1 elliniki simeiotiki etairia,-1 ellinogermaniki agogi,-1 elm magazine,-1 elo,-1 elonkehä,-1 elore,2 els,1 elsevier,2 elsevier doyma,1 elsevier saunders,1 elt journal,1 elt research,-1 elthe ellīnikī periodikī ekdosī gia tī thrīskeutikī ekpaideusī,-1 eludamos,1 eluosi yanjiu,-1 elysanomat,-1 elytra,-1 eläinlääkintäsanomat,-1 eläintaudit suomessa,-1 eläinten hyvinvointi suomessa,-1 eläinten ystävä,-1 eläketurvakeskus,-1 eläkkeensaaja,-1 elämäntapaliitto,-1 elämäntarina,-1 em: air and waste management associations magazine for environmental managers,1 ema - encontro de marketing,-1 emakeele selts,-1 emakeele seltsi aastaraamat,1 emanate publishing house,-1 embertárs,-1 embo journal,3 embo molecular medicine,3 embo reports,3 emc imprint,-1 eme éditions,-1 emerald,1 emerald reach proceedings series,-1 emergence: complexity and organization,1 emergencias,1 emergency and critical care medicine,-1 emergency care and medicine,-1 emergency care journal,-1 emergency medicine,-1 emergency medicine,1 emergency medicine australasia,1 emergency medicine clinics of north america,1 emergency medicine international,1 emergency medicine journal,1 emergency radiology,1 emergent materials,1 emerging adulthood,1 emerging contaminants,1 emerging infections,1 emerging infectious diseases,2 emerging markets case studies,-1 emerging markets finance and trade,1 emerging markets review,1 emerging materials research,1 emerging media,-1 emerging microbes & infections,2 emerging science journal,1 emerita,1 emi educational media international,1 emily dickinson journal,1 emirates journal of food and agriculture,1 emission control science and technology,-1 emma - espoon modernin taiteen museo,-1 emma - espoon modernin taiteen museon julkaisuja,-1 emmegi,-1 emotion,2 emotion review,2 "emotion, space and society",1 emotional and behavioural difficulties,1 emotions,1 emotions and society,1 empedocles: european journal for the philosophy of communication,1 empirica,1 empirical economic review,-1 empirical economics,1 empirical musicology review,1 empirical research in vocational education and training,1 empirical software engineering,3 empirical studies in theology,2 empirical studies of the arts,2 employee relations,1 employee responsibilities and rights journal,1 empuries,1 ems - editions management et société,-1 ems magazine,-1 emu,1 enanpad - encontro da anpad,-1 encatcscholar,-1 encephale: revue de psychiatrie clinique biologique et therapeutique,1 enchoria,1 encuentro,-1 enculturation,1 encyclopaedia of islam online,1 encyclopaedia of islam three,-1 encyclopaedia of woman and islamic cultures online,1 encyclopedia,-1 encyclopedia of slavic languages and linguistic online,-1 encyclopedia of the bible and its reception,1 encyclopædia iranica,-1 endangered species research,1 endeavour,1 endocrine,1 endocrine abstracts,-1 endocrine connections,1 endocrine journal,1 endocrine pathology,1 endocrine practice,1 endocrine research,1 endocrine reviews,2 "endocrine, metabolic & immune disorders : drug targets",1 endocrine-related cancer,2 endocrines,-1 endocrinologia y nutricion,1 endocrinology,2 endocrinology and metabolism,1 endocrinology and metabolism clinics of north america,1 "endocrinology, diabetes & metabolism",1 "endocrinology, diabetes & metabolism case reports",1 "endocrinology, metabolism & genetics",-1 endocytobiosis and cell research,1 endodontic topics,1 endoscopy,2 endoscopy international open,1 endotrends,1 endymatologika,-1 endülüs yayınları,-1 energetika tatarstana,-1 energiaa,-1 energies,-1 energy,3 energy & environment materials,1 energy & environmental sustainability,-1 energy advances,1 energy and ai,1 energy and buildings,3 energy and built environment,1 energy and climate change,1 energy and environment,1 energy and environment focus,-1 energy and environment research,-1 energy and environmental science,3 energy and fuels,1 energy conversion and economics,1 energy conversion and management,2 energy conversion and management x,1 energy economics,1 energy education science and technology part a: energy science and research,-1 energy education science and technology part b: social and educational studies,-1 energy efficiency,1 energy engineering,-1 energy equipment and systems,-1 energy exploration and exploitation,1 energy for sustainable development,1 energy harvesting and systems,1 energy informatics,1 energy informatics review,1 energy institute,1 energy journal,1 energy material advances,1 energy materials: materials science and engineering for energy systems,1 energy nexus,1 energy policy,1 energy procedia,1 energy proceedings,1 energy reports,1 energy research and social science,2 energy research journal,-1 energy reviews,1 energy science & engineering,1 energy security forum,-1 energy sources part a: recovery utilization and environmental effects,1 energy sources part b: economics planning and policy,1 energy storage,1 energy storage and saving,1 energy storage materials,1 energy strategy reviews,1 energy studies review,1 energy systems,1 energy technology,1 "energy, ecology and environment",1 "energy, sustainability and society",1 energychem,1 energyspectrum,-1 enerugeia,-1 eneuro,1 eneurologicalsci,1 enfance,1 "enfances, familles, générations",1 enfermedades infecciosas y microbiologia clinica,-1 enfermeria intensiva,1 enfermería del trabajo,-1 eng,-1 engaged management review,-1 "engaging science, technology, and society",1 engenharia sanitaria e ambiental,1 engineered regeneration,-1 engineered science,1 engineering,-1 engineering,1 engineering analysis with boundary elements,1 engineering and applied science research,1 engineering and technology,-1 engineering applications of artificial intelligence,2 engineering applications of computational fluid mechanics,1 engineering computations,1 engineering conferences international,-1 engineering economist,1 engineering failure analysis,1 engineering for rural development,-1 engineering fracture mechanics,2 engineering geology,2 engineering geology special publications,1 "engineering in agriculture, environment and food",1 engineering in life sciences,1 engineering intelligent systems for electrical engineering and communications,1 engineering journal: american institute of steel construction inc,1 engineering letters,-1 engineering management in production and services,-1 engineering management journal,1 engineering management research,-1 engineering materials,-1 engineering mechanics,-1 engineering mechanics .... conference proceedings,-1 engineering optimization,1 engineering proceedings,-1 engineering project organization journal,1 engineering reports,1 engineering research express,1 "engineering science and technology, an international journal",2 engineering solid mechanics,-1 engineering structures,3 engineering studies,1 engineering with computers,1 "engineering, construction and architectural management",1 "engineering, technology and applied science research",1 engineers australia,-1 english,1 english academy review,1 english education,1 english for specific purposes,2 english for specific purposes world,-1 english heritage,1 english historical review,3 english in australia,-1 english in education,1 english journal,1 english language and linguistics,3 english language notes,1 english language research journal,-1 english language teaching,-1 english linguistics,1 english linguistics research,-1 english literary renaissance,2 english literature in transition 1880-1920,2 english manuscript studies: 1100-1700,1 english place-name society,1 english studies,2 english studies in africa,1 english studies in canada,1 english teaching & learning,1 english teaching forum,1 english teaching: practice and critique,1 english text construction,1 english today: the international review of the english language,1 english world-wide,2 eniki,-1 enke,-1 enlightening tourism,-1 enlightenment and dissent,1 ennen ja nyt,1 eno-verkkokoulun tuki ry,-1 enquiry,1 ens editions,1 enseignement et recherche en administration de l'éducation,-1 ensenanza de las ciencias,-1 ensi- ja turvakotien liiton julkaisu,-1 ensi- ja turvakotien liiton käsikirja,-1 ensi- ja turvakotien liitto,-1 enskilda högskolan stockholm,-1 ent: ear nose and throat journal,1 entangled religions,1 entanglements,-1 enterprise and society,2 enterprise development and microfinance: an international journal of microfinance and business development,1 enterprise information systems,2 entertainment computing,1 entertext,-1 enthymema,1 entomofauna,-1 entomologia experimentalis et applicata,1 entomologia generalis,1 entomologica americana,1 entomological news,1 entomological research,1 entomological review,1 entomological science,1 entomologie heute,-1 entomologische blätter für biologie und systematik der käfer,-1 entomologisk tidskrift,1 entomologiske meddelelser,-1 entomologist´s gazette,-1 entomologist’s monthly magazine,-1 entomotropica,1 entrehojas,-1 entrepalavras,-1 entreprendre & innover,-1 entrepreneurial business and economics review,1 entrepreneurship and regional development,2 entrepreneurship and sustainability issues,-1 entrepreneurship education,1 entrepreneurship education and pedagogy,1 entrepreneurship research journal,1 entrepreneurship theory and practice,3 entreprises et histoire,1 entropy,-1 environment,1 environment & health,1 environment & society portal. arcadia,1 environment and behavior,2 environment and development economics,1 environment and ecology research,-1 environment and history,2 environment and natural resources journal,1 environment and planning a,3 environment and planning b : urban analytics and city science,2 environment and planning c : politics and space,2 environment and planning d : society and space,3 environment and planning e : nature and space,2 "environment and planning f : philosophy, theory, models, methods and practice",1 environment and security,1 environment and society,2 environment and urbanization,1 environment international,3 environment protection engineering,-1 environment systems and decisions,1 "environment, development and sustainability",1 environment-behaviour proceedings journal,-1 environmental advances,1 environmental analysis & ecology studies,-1 environmental and climate technologies,1 environmental and ecological statistics,1 environmental and engineering geoscience,1 environmental and experimental botany,1 environmental and molecular mutagenesis,1 environmental and occupational health practice,-1 environmental and resource economics,2 environmental and sustainability indicators,1 environmental archaeology,2 environmental biology of fishes,1 environmental challenges,1 environmental chemistry,1 environmental chemistry letters,1 environmental communication: a journal of nature and culture,1 environmental conservation,1 environmental data science,1 environmental development,1 environmental dna,1 environmental earth sciences,1 environmental economics,-1 environmental economics and policy studies,1 environmental education research,3 environmental engineering,-1 environmental engineering and management journal,1 environmental engineering science,1 environmental entomology,1 environmental epidemiology,1 environmental epigenetics,1 environmental ethics,2 environmental evidence,-1 environmental fluid mechanics,1 environmental forensics,1 environmental geochemistry and health,1 environmental geosciences,1 environmental geotechnics,1 environmental hazards,1 environmental health,1 environmental health and preventive medicine,1 environmental health insights,1 environmental health perspectives,3 environmental history,3 environmental humanities,2 environmental impact assessment review,2 environmental innovation and societal transitions,2 environmental law and management,1 environmental law institute,1 environmental law reporter,1 environmental law review,1 environmental liability,1 environmental management,1 environmental microbiology,2 environmental microbiology reports,1 environmental microbiome,1 environmental modeling and assessment,1 environmental modelling and software,2 environmental monitoring and assessment,1 "environmental nanotechnology, monitoring & management",1 environmental packaging,1 environmental philosophy,1 environmental planning and management,-1 environmental policy and governance,2 environmental policy and law,1 environmental politics,2 environmental pollutants & bioavailability,1 environmental pollution,2 environmental processes,1 environmental progress and sustainable energy,1 environmental research,2 environmental research & technology,1 environmental research : climate,1 environmental research : energy,1 environmental research : food systems,1 environmental research : health,1 environmental research : infrastructure and sustainability,1 environmental research communications,1 environmental research forum,1 environmental research letters,3 environmental reviews,1 environmental science & ecotechnology,1 environmental science & technology letters,1 environmental science : advances,1 environmental science : atmospheres,1 environmental science : nano,2 environmental science : processes and impacts,1 environmental science : water research & technology,1 environmental science and policy,2 environmental science and pollution research,1 environmental science and sustainable development,-1 environmental science and technology,2 environmental sciences europe,1 environmental sciences proceedings,-1 environmental sociology,1 environmental systems research,-1 environmental technology,1 environmental technology and innovation,1 environmental technology reviews,1 environmental toxicology,1 environmental toxicology and chemistry,3 environmental toxicology and pharmacology,1 environmental values,3 environments,-1 environmetrics,2 environnement risques and sante,1 enzyme and microbial technology,1 eolss publishing,1 eom,-1 eon'eo yeon'gu,1 eon'eohag (jung'won eon'eo haghoe),1 eos,-1 eos: commentarii societatis philologiae polonorum,1 epe association,1 epe journal,1 epeteris etairias byzantinon spoudon,1 epfl-cclab : composite construction laboratory,-1 ephemera: theory and politics in organization,1 ephemerides liturgicae,1 ephemerides theologicae lovanienses,1 epic series in computing,1 epic series in technology,-1 epidemics,1 epidemiologia,-1 epidemiologia and prevenzione,1 epidemiologic methods,1 epidemiologic perspectives and innovations,1 epidemiologic reviews,2 epidemiologie mikrobiologie imunologie,1 epidemiology,3 epidemiology and health,1 epidemiology and infection,1 epidemiology and psychiatric sciences,2 "epidemiology, biostatistics and public health",1 epigenetics,1 epigenetics and chromatin,1 epigenetics communications,-1 epigenetics insights,-1 epigenomics,1 epigraphica anatolica,1 epigraphica: rivista internazionale di epigrafia,1 epilepsia,2 epilepsia open,1 epilepsia-lehti,-1 epilepsy & behavior,1 epilepsy & behavior reports,1 epilepsy & seizure,-1 epilepsy australia limited,1 epilepsy currents,1 epilepsy professional,-1 epilepsy research,1 epileptic disorders,1 epileptologia,-1 episodes,1 episodi,-1 episteme,1 episteme-sarja,1 epistemologia,1 epistīmonika chronika,-1 epistolographia,-1 epistrophy,1 epites - epiteszettudomany,1 epj applied metamaterials,-1 epj data science,1 epj nuclear sciences & technologies,1 epj photovoltaics,1 epj quantum technology,1 epj web of conferences,1 epl,1 epoche: a journal for the history of philosophy,1 eppo bulletin,1 epubli : ein imprint der neopubli,-1 "equality, diversity and inclusion",1 equidad & desarrollo,-1 equilibrium,-1 equine veterinary education,1 equine veterinary journal,2 equinox publishing,2 equity and excellence in education,1 equivalences,1 era content,-1 era-forum,1 eracle,-1 eranos: acta philologica suecana,1 eras,1 erasmus journal for philosophy and economics,1 erasmus law and economics review,1 erasmus law review,1 ercim news,-1 ercoftac series,-1 erde,1 erdelyi társadalom,-1 erdkunde,1 erebea: revista de humanidades y ciencias sociales,-1 erekutoronikusu jisso gakkaishi,-1 "eretz-israel: archaeological, historical and geographical studies",1 erfurt electronic studies in english,1 ergo,2 ergodic theory and dynamical systems,2 ergon-verlag,1 ergonomics,1 ergonomics in design,1 ergonomics international journal,-1 ergonomics open journal,-1 ergoscience,-1 erhvervshistorisk årbog,1 erich schmidt verlag,1 erikoislääkäri,-1 erim vatansever,-1 erityiskasvatus,-1 erityisopettaja,-1 eriu,1 erj open research,1 erkenntnis,3 ernahrungs umschau,1 erol kurt,-1 eruditio - educatio,-1 erwerbs-obstbau,-1 erziehung und unterricht,1 erä,-1 es keskiviikko,-1 esa bulletin: european space agency,1 esa workshop on satellite navigation technologies and european workshop on gnss signals and signal processing,-1 esaim : control optimisation and calculus of variations,1 esaim : mathematical modelling and numerical analysis,2 esaim : probability and statistics,1 esaim : proceedings and surveys,1 esarda bulletin,-1 esboços,1 esc heart failure,1 escola de artes ciências e humanidades,-1 escp business school,-1 escuela técnica superior de arquitectura de madrid,-1 esensia : jurnal ilmu-ilmu ushuluddin,1 esignals,-1 esignals pro,-1 esignals research,-1 esmo open,2 esne editorial,-1 esophagus,1 esoterica,1 esp across cultures,-1 esp today,1 espace geographique,1 espaces linguistiques,1 "espacio, tiempo y forma : serie v historia contemporánea",1 espanol actual,1 esperantologio,1 esperiana verlag,-1 esperienze letterarie: rivista trimestrale di critica e di cultura,1 espes,1 espon,-1 espoon kaupunginmuseon tutkimuksia,-1 esprit,-1 esprit createur,2 espéculo,-1 esq: a journal of the american renaissance,2 esrb working paper series,-1 esri press,1 essachess : journal for communication studies,1 essays and studies,1 essays in biochemistry,1 essays in criticism,3 essays in economic and business history,1 essays in education,1 essays in medieval studies,1 essays in philosophy,1 essays in poetics,1 essays in public works history,-1 essays in theatre-etudes theatrales,1 essex archaeology and history,1 estadística,1 estadístico de encuestas,-1 estetika: the european journal of aesthetics,2 estiem magazine,-1 estonian art,-1 estonian journal of archaeology,1 estonian journal of earth sciences,1 estonian journal of ecology,1 estonian journal of engineering,1 estonian journal of english studies,1 estonian literary magazine,-1 estonian marine institute report series,-1 estreno: cuadernos del teatro espanol contemporaneo,1 estuaries and coasts,1 estuarine coastal and shelf science,1 estudios atacamenos,1 estudios biblicos,1 estudios clasicos,1 estudios constitucionales,1 estudios de cultura maya,1 estudios de cultura nahuatl,1 estudios de fonética experimental,1 estudios de historia moderna y contemporánea de méxico,1 estudios de la antiguedad,1 estudios de linguistica espanola,1 estudios de linguistica universidad de alicante,1 estudios de psicologia,-1 estudios de teoría literaria,1 estudios eclesiasticos,1 estudios filologicos,1 estudios filologicos alemanes,1 estudios filosofía/historia/letras,1 estudios filosóficos,1 estudios fronterizos,1 estudios geologicos: madrid,1 estudios interdisciplinarios de america latina y el caribe,1 estudios irlandeses,1 estudios latinoamericanos,1 estudios romanicos,1 estudios sobre el mensaje periodistico,1 estudios sobre las culturas contemporaneas,1 estudios socio-juridicos,-1 estudis romanics,1 estudis: universidad de valencia,1 estudos avançados,-1 estudos de lingüística galega,1 estudos de sociologia,-1 estudos em comunicacao,1 estudos em design,1 estudos feministas,1 estudos ibero-americanos,2 estudos internacionais,-1 estudos linguisticos,1 estudos linguísticos,-1 estudos semióticos,1 eszterházy károly főiskola,-1 et-lehti,-1 eta-florence renewable energies,-1 etaireia georgikon michanikon ellados,-1 etc,-1 etc press,-1 etc: review of general semantics,1 etd - educação temática digital,-1 etelä-saimaa,-1 "etelemed the international conference on ehealth, telemedicine, and social medicine",-1 etelä-karjala-instituutti : toimituksia,-1 etelä-karjalan vuosikirja,-1 etelä-suomen sanomat,-1 eteläpohjalaiset juuret,-1 etene-julkaisuja,-1 ethic@,1 ethical human psychology and psychiatry,1 ethical perspectives,1 ethical space: the international journal of communication ethics,1 ethical theory and moral practice,2 ethics,3 ethics & bioethics,1 ethics & human research,-1 ethics and behavior,1 ethics and education,1 ethics and global politics,1 ethics and information technology,2 ethics and international affairs,1 ethics and medicine: an international journal of bioethics,1 ethics and social welfare,1 ethics and the environment,1 ethics in progress,1 ethics in science and environmental politics,1 ethics international press,-1 "ethics, medicine and public health",1 "ethics, policy and environment",1 ethik in der medizin,1 ethiopian civil and commercial law series,-1 ethiopian journal of development research,1 ethiopian journal of health development,1 ethnic and racial studies,3 ethnica,1 ethnicities,3 ethnicity and disease,1 ethnicity and health,1 ethniko kai kapodistriako panepistimio athinon,-1 ethnoarchaeology,1 ethnobiology letters,-1 ethnobotany research and applications,1 ethnographia,1 ethnographic studies,1 ethnographica et folkloristica carpathica,-1 ethnographica: periodic publication of the peloponnese folklore foundation,1 "ethnographie: creation, pratiques, publics",1 ethnographisch-archaologische zeitschrift,1 ethnography,2 ethnography and education,2 ethnohistory,2 ethnologia actualis,-1 ethnologia balkanica: journal of southeast european anthropology,1 ethnologia europae centralis,1 ethnologia europaea,3 ethnologia fennica,2 ethnologia scandinavica,2 ethnologia slovaca et slavica,1 ethnologia: journal of the greek society for ethnology,1 ethnologie francaise,1 ethnologies,1 ethnology,2 ethnology notebooks,-1 ethnology paper,1 ethnomusicology,3 ethnomusicology forum,3 ethnomusicology review,1 ethnopolitics,2 ethnos,3 ethnos-tiedote,-1 ethnos-toimite,1 ethology,1 ethology ecology and evolution,1 ethos,2 ethos: dialogues in philosophy and social sciences,-1 etica & politica,1 etikk i praksis,1 etla elinkeinoelämän tutkimuslaitos b,-1 etla muistio,-1 etla raportit,-1 etla working papers,-1 etnoantropozum,-1 etnofoor,1 etnografia e ricerca qualitativa,1 etnografia polska,2 etnografica: revista do centro em rede de investigacao em antropologia,1 etnograficeskoe obozrenie,1 etnografie sonore/ sound ethnographies,1 etnolingwistyka,1 etnolog : nova vrsta,1 etnologia polona,1 etnologicke rozpravy,1 etnoloska tribina,1 etnomusikologian vuosikirja,1 etnosistemi,1 etransportation,1 etri journal,1 etropic,1 ets,-1 etudes anglaises,1 etudes canadiennes,1 etudes caribeennes,1 etudes celtique,1 etudes cinematographiques,1 etudes classiques,2 etudes creoles,1 etudes cretoises,1 etudes de lettres,-1 etudes de linguistique appliquee,1 etudes francaises,2 etudes germaniques,1 etudes internationales,1 etudes inuit,1 etudes irlandaises,1 etudes litteraires,1 etudes medievales,1 "etudes mongoles et siberiennes, centrasiatiques et tibetaines",1 etudes phenomenologiques,2 etudes philosophiques,1 etudes photographiques,2 etudes ricoeuriennes / ricoeur studies,1 etudes romanes de lund,1 etudes rurales,1 etudes sur le judaïsme medieval,1 etudes theatrales,1 etudes theologiques et religieuses,1 etui policy brief,-1 etupenkki,-1 etupyörä,-1 etämetsänomistaja,-1 eu agrarian law,-1 eu law live,-1 eu och arbetsrätt,-1 eu wahlmonitor,-1 eu-russia papers,-1 eubios: journal of asian and international bioethics,1 eucen studies,-1 eucml,1 eudeba,-1 eui working papers : robert schuman centre,-1 eui working papers law,-1 eui working papers mwp,-1 eukaryotic cell,1 eulimene,1 eupa open proteomics,1 euphorion: zeitschrift fur literaturgeschichte,3 euphrosyne: revista de filologia classica,1 euphytica,1 eur : scientific and technical research series,1 euraap,-1 euraap technical working group on compact antennas,-1 euracademy thematic guide series,-1 euractiv,-1 eurailmag,-1 eurajoen kotiseutuyhdistys,-1 euralex proceedings,-1 euram conference,-1 euran kunta,-1 eurasia antiqua,1 eurasia border review,-1 eurasia cultura,-1 "eurasia journal of mathematics, science and technology education",1 eurasian business review,1 eurasian chemical communications,-1 eurasian economic review,1 eurasian geography and economics,2 eurasian journal of applied linguistics,1 eurasian journal of biosciences,-1 eurasian journal of business and economics,-1 eurasian journal of economic and business studies,-1 eurasian journal of economics and finance,-1 eurasian journal of english language and literature,-1 eurasian journal of mathematical and computer applications,1 eurasian journal of medical investigation,-1 eurasian journal of social sciences,1 eurasian prehistory,1 eurasian soil science,1 eurasian studies in business and economics,-1 eurasip journal on advances in signal processing,1 "eurasip journal on audio, speech, and music processing",1 eurasip journal on image and video processing,1 eurasip journal on information security,1 eurasip journal on wireless communications and networking,1 eure: revista latinoamericana de estudios urbano regionales,1 eureka: health sciences,-1 eureka: life sciences,-1 eureka: physics and engineering,1 eureka: social and humanities,1 euresis: cahiers roumains detudes litteraires,1 euro & talous,-1 euro journal on computational optimization,1 euro journal on decision processes,1 euro journal on transportation and logistics,1 euro+med plantbase,-1 euro-american workshop on information optics,-1 euro-atlantic quarterly,-1 euro-atlantic studies,1 euroasian entomological journal,-1 eurocall newsletter,1 eurochoices,1 eurodyn,-1 eurofenix,-1 eurofm,-1 eurofm journal: international journal of facilities management,1 eurohealth,-1 euroheat & power,-1 eurointervention,1 eurolimes,1 euromed press,-1 euromicro conference on real-time systems,1 euroopan muuttoliikeverkosto,-1 eurooppalainen,-1 eurooppalainen suomi ry,-1 eurooppalaisen filosofian seura ry,1 europa,-1 europa ethnica,1 europa law publishing,1 europa orientalis,1 europa regional,1 europa xxi,-1 europa édition,-1 europace,2 europaeischer hochschulverlag gmbh & co. kg,1 europaische rundschau,1 europaische zeitschrift fur wirtschaftsrecht,1 europarattslig tidskrift,1 europarecht,2 europe and the world,1 europe's world,-1 europe-asia studies,3 europe-new zealand research series,1 europe: revue litteraire mensuelle,1 european academy of dermatology and venereology congress,-1 european accounting review,2 european actuarial journal,1 european addiction research,1 european annals of allergy and clinical immunology,1 european archives of oto-rhino-laryngology,1 european archives of paediatric dentistry,1 european archives of psychiatry and clinical neuroscience,1 european association for animal production scientific series,1 european association for computer graphics,1 european association for machine translation,-1 european association for signal processing,1 european association of distance teaching universities,-1 european association of erasmus coordinators,-1 european association of geoscientists and engineers,1 european biomass conference and exhibition proceedings,-1 european biophysics journal with biophysics letters,1 european bulletin of himalayan research,1 european burn journal,-1 european business law review,3 european business organization law review,1 european business review,1 european cardiology,1 european cells and materials,1 european centre for minority issues,-1 european centre for the development of vocational training,-1 european child and adolescent psychiatry,2 european clinical respiratory journal,1 european coatings journal,1 european comic art,1 european commission,-1 european company and financial law review,1 european company case law,1 european company law,1 european competition journal,1 european conference of circuits technology and devices : proceedings,-1 european conference on artificial life,-1 european conference on circuit theory and design,1 "european conference on colour in graphics, image and vision",-1 european conference on computational biology,1 european conference on computer vision,2 european conference on computer-supported cooperative work,1 european conference on education official conference proceedings,-1 european conference on information retrieval,2 european conference on information systems,1 european conference on language learning official conference proceedings,-1 european conference on modelling and simulation,1 european conference on networks and communications,1 european conference on power electronics and applications,1 european conference on psychology and the behavioral sciences official conference proceedings,-1 european conference on simulation and ai in computer games,1 european conference on social media,-1 european conference on software maintenance and reengineering,1 european conference on technology in the classroom official conference proceedings,-1 european consortium for church and state research,-1 european constitutional law review,3 european control association,-1 european convention on human rights law review,1 european council for an energy efficient economy,1 european council for modelling and simulation,-1 european countryside,1 european criminal law review,1 european cytokine network,1 european data protection law review,1 european diabetes nursing,1 european distance and e-learning network,-1 european diversity and autonomy papers,1 european early childhood education research journal,2 european eating disorders review,1 european economic review,2 european education,1 european education and culture executive agency,-1 european educational research association,1 european educational research journal,2 european educative projects,-1 european employment law cases,-1 european endodontic journal,1 european energy and environmental law review,1 european energy journal,1 european federation of corrosion publications,1 european financial and accounting journal,1 european financial management,2 european food and feed law review,1 european food research and technology,1 european food safety authority,-1 european foreign affairs review,1 european forest institute,-1 european fuel cell forum ag,-1 european gender equality law review,1 european geologist,-1 european geosciences union,1 european geothermal energy council,-1 european geriatric medicine,1 european grassland federation,-1 european heart journal,3 european heart journal : acute cardiovascular care,1 european heart journal : cardiovascular imaging,2 european heart journal : digital health,1 european heart journal : imaging methods and practice,1 european heart journal : quality of care and clinical outcomes,1 european heart journal open,1 european heart journal supplements,1 european heart journal. cardiovascular pharmacotherapy,1 european heart journal: case reports,1 european history quarterly,3 european human rights law review,2 european infectious disease,1 european institute for computer antivirus research conference,-1 european institute of public administration,1 european integration online papers: eiop,1 european integration studies,1 european intellectual property review,1 european investment law and arbitration review,1 european journal for biblio/poetry therapy,-1 european journal for church and state research,1 european journal for nursing history and ethics,1 european journal for philosophy of science,3 european journal for qualitative research in psychotherapy,1 european journal for research on the education and learning of adults,1 european journal for security research,1 european journal for sport and society,1 european journal for the history of medicine and health,2 european journal for the study of thomas aquinas,1 european journal for young scientists and engineers,-1 european journal of academic research,-1 european journal of adapted physical activity,1 european journal of ageing,2 european journal of agronomy,3 european journal of alternative education studies,-1 european journal of american culture,1 european journal of american studies,1 european journal of anaesthesiology,1 european journal of analytic philosophy,1 european journal of applied linguistics,1 european journal of applied mathematics,1 european journal of applied physiology,1 european journal of applied sciences,1 european journal of archaeology,3 european journal of behavior analysis,1 european journal of biomedical informatics,-1 european journal of breast health,1 european journal of business science and technology,-1 european journal of cancer,2 european journal of cancer care,1 european journal of cancer prevention,1 european journal of cardio-thoracic surgery,1 european journal of cardiovascular nursing,1 european journal of cell biology,1 european journal of chemistry,-1 european journal of clinical and experimental medicine,-1 european journal of clinical and medical oncology,-1 european journal of clinical hypnosis,1 european journal of clinical investigation,1 european journal of clinical microbiology and infectious diseases,1 european journal of clinical nutrition,1 european journal of clinical pharmacology,1 european journal of combinatorics,2 european journal of communication,3 european journal of comparative law and governance,1 european journal of contemporary education,-1 european journal of contraception and reproductive health care,1 european journal of control,1 "european journal of crime, criminal law and criminal justice",2 european journal of criminology,2 european journal of cross-cultural competence and management,1 european journal of cultural and political sociology,2 european journal of cultural management and policy,1 european journal of cultural studies,2 european journal of curriculum studies,1 european journal of dental education,1 european journal of dermatology,1 european journal of development research,1 european journal of developmental psychology,1 european journal of drug metabolism and pharmacokinetics,1 european journal of east asian studies,1 european journal of ecology,1 european journal of economic and social systems,1 european journal of economics and management,-1 european journal of education,-1 european journal of education,2 european journal of education and pedagogy,1 european journal of education and psychology,-1 european journal of education studies,1 european journal of educational research,1 european journal of educational studies,-1 european journal of emergency medicine,1 european journal of empirical legal studies,1 european journal of endocrinology,3 "european journal of endocrinology, supplement",1 european journal of engineering education,1 european journal of english studies,2 european journal of entomology,1 european journal of environment and public health,-1 european journal of environmental and civil engineering,1 european journal of environmental sciences,-1 european journal of epidemiology,3 european journal of experimental biology,-1 european journal of family business,1 european journal of finance,1 european journal of forest research,2 european journal of futures research,1 european journal of gastroenterology and hepatology,1 european journal of general dentistry,-1 european journal of general practice,1 european journal of geography,1 european journal of government and economics,1 european journal of gynaecological oncology,1 european journal of haematology,1 european journal of health communication,1 european journal of health economics,1 european journal of health law,2 european journal of health psychology,-1 european journal of heart failure,3 european journal of higher education,1 european journal of higher education it,-1 european journal of histochemistry,1 european journal of homelessness,-1 european journal of horticultural science,1 european journal of hospital pharmacy: science and practice,1 european journal of human genetics,2 european journal of human security,1 european journal of humour research,1 european journal of hybrid imaging,1 european journal of immunology,1 european journal of inclusive education,-1 european journal of industrial engineering,1 european journal of industrial relations,1 european journal of inflammation,1 european journal of information systems,3 european journal of innovation management,1 european journal of inorganic chemistry,1 european journal of integrative medicine,1 european journal of interdisciplinary studies,-1 european journal of internal medicine,1 european journal of international law,3 european journal of international management,1 european journal of international relations,3 european journal of international security,1 "european journal of investigation in health, psychology and education",-1 european journal of islamic finance,1 european journal of jewish studies,1 european journal of korean studies,1 european journal of language and literature studies,1 european journal of language policy,1 european journal of law and economics,1 european journal of law and technology,1 european journal of law reform,1 european journal of legal education,-1 european journal of legal studies,1 european journal of life writing,1 european journal of lipid science and technology,1 european journal of management,-1 european journal of management and business economics,1 european journal of management issues,-1 european journal of marketing,2 european journal of mass spectrometry,1 european journal of materials,-1 european journal of mathematics,1 european journal of mathematics and science education,-1 european journal of mechanics a: solids,2 european journal of mechanics b: fluids,1 european journal of medical genetics,1 european journal of medical research,1 european journal of medicinal chemistry,2 european journal of mental health,1 european journal of midwifery,1 european journal of migration and law,2 european journal of mineralogy,1 european journal of multidisciplinary studies,1 european journal of musicology,1 european journal of navigation,1 european journal of neurology,2 european journal of neuroscience,2 european journal of nuclear medicine and molecular imaging,3 european journal of nutrition,2 european journal of obstetrics & gynecology and reproductive biology x,1 european journal of obstetrics and gynecology and reproductive biology,1 european journal of oncology nursing,2 "european journal of open, distance and e-learning",1 european journal of operational research,2 european journal of ophthalmology,1 european journal of oral sciences,2 european journal of organic chemistry,1 european journal of orthodontics,1 european journal of orthopaedic surgery and traumatology,1 european journal of paediatric dentistry,1 european journal of paediatric neurology,1 european journal of pain,1 european journal of palliative care,1 european journal of parenteral & pharmaceutical sciences,-1 european journal of pediatric surgery,1 european journal of pediatrics,1 european journal of personality,2 european journal of pharmaceutical sciences,3 european journal of pharmaceutics and biopharmaceutics,2 european journal of pharmacology,2 european journal of philosophy,3 european journal of philosophy of religion,1 european journal of phycology,1 european journal of physical and rehabilitation medicine,1 european journal of physics,1 european journal of physiotherapy,1 european journal of plant pathology,1 european journal of plastic surgery,1 european journal of police studies,1 european journal of political economy,1 european journal of political research,3 european journal of political research : political data yearbook,1 european journal of political theory,2 european journal of politics and gender,1 european journal of population-revue europeenne de demographie,2 european journal of pragmatism and american philosophy,1 european journal of preventive cardiology,2 european journal of probation,1 european journal of prosthodontics and restorative dentistry,1 european journal of protistology,1 european journal of psychiatry,1 european journal of psychoanalysis,-1 european journal of psychological assessment,1 european journal of psychology applied to legal context,1 european journal of psychology of education,1 european journal of psychology open,1 "european journal of psychotherapy, counselling and health",1 european journal of psychotraumatology,1 european journal of public health,2 european journal of pure and applied mathematics,1 european journal of radiology,1 european journal of radiology open,1 european journal of remote sensing,1 european journal of risk regulation,1 european journal of scandinavian studies,2 european journal of science and mathematics education,1 european journal of science and theology,-1 european journal of scientific research,-1 european journal of social & behavioural sciences,-1 european journal of social education,1 european journal of social law,1 european journal of social psychology,3 european journal of social science education and research,1 european journal of social sciences,-1 european journal of social sciences studies,-1 european journal of social security,1 european journal of social theory,2 european journal of social work,2 european journal of soil biology,1 european journal of soil science,2 european journal of spatial development,1 european journal of special education research,1 european journal of special needs education,2 european journal of sport science,2 european journal of sport sciences,-1 european journal of stem education,-1 european journal of sustainable development,-1 european journal of taxonomy,1 european journal of teacher education,3 european journal of the history of economic thought,1 european journal of theatre and performance,1 european journal of theology,1 european journal of therapeutics,-1 european journal of tourism research,1 "european journal of tourism, hospitality and recreation",1 european journal of training and development,1 european journal of transformation studies,1 european journal of translational myology,1 european journal of transport and infrastructure research,1 european journal of trauma & dissociation,1 european journal of trauma and emergency surgery,1 european journal of underwater and hyperbaric medicine,1 european journal of vascular and endovascular surgery,2 european journal of wildlife research,1 european journal of women`s studies,3 european journal of wood and wood products,1 european journal of work and organizational psychology,2 european journal of workplace innovation,1 european journal on criminal policy and research,1 european joyce studies,1 european labour law journal,2 european language resources distribution agency,1 european law blog,-1 european law enforcement research bulletin,1 european law institute,1 european law journal,3 european law open,1 european law reporter,1 european law review,3 european legacy: toward new paradigms,2 european liberal forum,-1 european management journal,2 european management review,1 european mathematical society publishing house,2 european medical journal urology,-1 european medieval drama,1 european microelectronics and packaging conference,1 european microwave association,-1 european microwave conference,1 european modelling symposium,-1 european musculoskeletal review,1 european network of heads of schools of architecture,-1 european network of living labs,-1 european networks law and regulation quarterly,-1 european neurofibromatosis meeting,-1 european neurological review,1 european neurology,1 european neuropsychopharmacology,1 european nuclear society,-1 european offroads of social science,-1 european optical society,1 european orthopaedics and traumatology,1 european papers,1 european parliament,-1 european pharmaceutical law review,1 european physical education review,2 european physical journal a,2 european physical journal b,1 european physical journal c,2 european physical journal d,1 european physical journal e,1 european physical journal h,1 european physical journal plus,1 european physical journal: applied physics,1 european physical journal: special topics,1 european physical society,1 european planning studies,2 european police college,-1 european policy analysis,1 european political science,1 european political science review,2 european politics and society,1 european polymer journal,1 european powder metallurgy association,-1 european power electronics and drives association,1 european press academic publishing,-1 european proceedings of educational sciences,-1 european proceedings of international conference on education and educational psychology,-1 european proceedings of social and behavioural sciences,-1 european procurement & public private partnership law review,1 european property law journal,1 european psychiatry,2 european psychologist,2 european psychomotricity journal,1 european public & social innovation review,1 european public law,2 european quality assurance forum papers and presentations,-1 european radiology,2 european radiology experimental,1 european regional conference of the international telecommunication society,-1 european research institute for social work,-1 european respiratory disease,1 european respiratory journal,3 european respiratory review,1 european respiratory society,-1 european review,1 european review for medical and pharmacological sciences,-1 european review of aging and physical activity,1 european review of agricultural economics,2 european review of applied psychology-revue europeenne de psychologie appliquee,1 european review of contract law,2 european review of digital administration & law,1 european review of economic history,2 european review of history-revue europeenne d histoire,3 european review of international studies,1 european review of latin american and caribbean studies,2 european review of organised crime,1 european review of private law,2 european review of public law,1 european review of service economics and management,-1 european review of social psychology,1 european reward management conference,-1 european romantic review,2 european safety and reliability association,1 european science and technology review,-1 european science editing,1 european science foundation,-1 european scientific journal,-1 european security,1 european security and defence,-1 european signal processing conference,1 european simulation and modelling conference,1 european sleep research society,-1 european social sciences research journal,-1 european social work research,-1 european societies,2 european society for engineering education mathematics working group seminar,-1 european society for precision engineering and nanotechnology,-1 european society for research in mathematics education,1 european sociological review,3 european sociologist,-1 european software engineering conference,2 european space agency,1 european spatial research and policy,-1 european spine journal,1 european sport management quarterly,1 european squirrel initiative,-1 european starting ai researcher symposium,-1 european state aid law quarterly,1 european stroke journal,1 european structural and investment funds journal,1 european studies,1 european studies in philosophy of science,1 european surgery: acta chirurgica austriaca,1 european surgical research,1 european symposia on algorithms,2 "european symposium on artificial neural networks, computational intelligence and machine learning",1 european taxation,1 european thyroid journal,1 european tort law yearbook,-1 european trade union institute,-1 european transactions on electrical power,1 european transactions on telecommunications,1 european transport : trasporti europei,1 european transport conference past papers repository,-1 european transport law,1 european transport research review,1 european transport studies,1 european triple helix congress on responsible innovation & entrepreneurship,-1 european union institute for security studies,-1 european union politics,2 european university at st. petersburg,-1 european university cyprus,-1 european university information systems congress,-1 european university institute,-1 european urban and regional studies,2 european urological review,1 european urology,3 european urology focus,2 european urology oncology,1 european urology open science,1 european values studies,1 european view,-1 european water,1 european wind energy association,1 european workshop on microelectronics education,-1 european workshop on software ecosystems,-1 european workshop on structural health monitoring,-1 european workshop on visual information processing,1 european yearbook of constitutional law,1 european yearbook of minority issues,1 european yearbook of the history of psychology,1 european zoological journal,1 europeanfm insight,-1 europes journal of psychology,1 europhysics news,-1 europäische geschichte online,1 europäische zeitschrift für arbeitsrecht,-1 europäischer hochschulverlag,-1 europäisches journal für minderheitenfragen,1 eurosis-eti,-1 eurosphere online working paper series,1 eurospi,-1 eurosurveillance,2 eurosys conference,1 eurozine,-1 eurup,-1 eurōpaikī ekfrasī,-1 eur’orbem éditions,-1 eusl verlagsgesellschaft,-1 euspen,-1 eva analyysi,-1 eva pamfletti,-1 eva raportti,-1 evaluate europe handbook series,-1 evaluation,1 evaluation and program planning,1 evaluation and the health professions,1 evaluation review,1 evangelical quarterly,1 evangelische theologie,1 evangelische verlagsanstalt gmbh,1 evansia,-1 event management,1 evental aesthetics,1 evento,-1 evergreen,-1 eversheds sutherland magazine,-1 evidence & policy,1 evidence based library and information practice,1 evidence-based cardiovascular medicine,1 evidence-based communication assessment and intervention,1 evidence-based dentistry,1 evidence-based hrm,1 evidence-based midwifery,-1 evidence-based nursing,1 evodevo,1 evolution,3 evolution : education and outreach,1 evolution and development,1 evolution and human behavior,2 evolution equations and control theory,-1 evolution letters,2 evolution psychiatrique,1 "evolution, medicine and public health",2 evolutionary and institutional economics review,1 evolutionary anthropology,3 evolutionary applications,2 evolutionary behavioral sciences,1 evolutionary bioinformatics,1 evolutionary biology,1 evolutionary computation,2 evolutionary ecology,1 evolutionary ecology research,1 evolutionary human sciences,1 evolutionary intelligence,1 evolutionary journal of the linnean society,1 evolutionary linguistic theory,1 evolutionary psychological science,1 evolutionary psychology,1 evolutionary studies in imaginative culture,1 evolutionary systematics,-1 evolving pedagogy,-1 evolving systems,1 evropaikos organismos dimosiou dikaiou,-1 evropejskij dom,-1 evropska revija za pravo osiguranja,1 evropský politický a právní diskurz,-1 ewop in practice,-1 ex aequo,-1 ex auditu,1 ex fonte,1 ex tuto,1 ex-libris comunicação integrada,-1 examples and counterexamples,1 exarc journal,1 excavatio,1 excellence cluster topoi,-1 exceptional children,3 exceptionality,1 exceptionality education international,1 excessive bodies,-1 exchange: journal of missiological and ecumenical research,2 excli journal,1 exemplaria classica,1 exemplaria: a journal of theory in medieval and renaissance studies,1 exercise and quality of life,1 exercise and sport sciences reviews,1 exercise immunology review,1 exilforschung: ein internationales jahrbuch,1 existentia,1 exlibris-uutiset,-1 experimental & clinical cardiology,-1 experimental aging research,1 experimental agriculture,1 experimental and applied acarology,1 experimental and clinical endocrinology and diabetes,1 experimental and clinical psychopharmacology,1 experimental and clinical transplantation,1 experimental and computational multiphase flow,1 experimental and molecular medicine,1 experimental and molecular pathology,1 experimental and therapeutic medicine,1 experimental and toxicologic pathology,1 experimental animals,1 experimental astronomy,1 experimental biology and medicine,1 experimental brain research,1 experimental cell research,1 experimental dermatology,2 experimental economics,2 experimental eye research,1 experimental fluid mechanics,-1 experimental gerontology,1 experimental heat transfer,1 experimental hematology,1 experimental hematology & oncology,1 experimental lung research,1 experimental mathematics,1 experimental mechanics,1 experimental neurology,1 experimental oncology,1 experimental parasitology,1 experimental physiology,1 experimental psychology,1 experimental techniques,1 experimental thermal and fluid science,1 experiments in fluids,1 expert evidence,1 expert opinion on biological therapy,1 expert opinion on drug delivery,1 expert opinion on drug discovery,1 expert opinion on drug metabolism and toxicology,1 expert opinion on drug safety,1 expert opinion on emerging drugs,1 expert opinion on environmental biology,-1 expert opinion on investigational drugs,1 expert opinion on medical diagnostics,1 expert opinion on pharmacotherapy,1 expert opinion on therapeutic patents,1 expert opinion on therapeutic targets,1 expert review of anti-infective therapy,1 expert review of anticancer therapy,1 expert review of cardiovascular therapy,1 expert review of clinical immunology,1 expert review of clinical pharmacology,1 expert review of endocrinology & metabolism,1 expert review of gastroenterology and hepatology,1 expert review of hematology,1 expert review of medical devices,1 expert review of molecular diagnostics,1 expert review of neurotherapeutics,1 expert review of obstetrics and gynecology,-1 expert review of pharmacoeconomics and outcomes research,1 expert review of proteomics,1 expert review of respiratory medicine,1 expert review of vaccines,1 expert reviews in molecular medicine,1 expert systems,1 expert systems with applications,2 explicator,1 exploration,-1 exploration and mining geology,1 exploration geophysics,1 exploration of digital health technologies,-1 exploration of neuroscience,-1 explorations,-1 explorations in economic history,3 explorations in media ecology,1 explorations in renaissance culture,1 exploratory research in clinical and social pharmacy,1 explore: the journal of science and healing,1 exploring diversity in entrepreneurship,-1 expositiones mathematicae,1 expository times,1 exposome,-1 exposure and health,1 express polymer letters,1 expressions maghrebines,1 extended abstracts on human factors in computing systems,-1 extrapolation,2 extreme mechanics letters,1 extremes,1 extremophiles,1 eye,1 eye and contact lens-science and clinical practice,1 eye and vision,1 eyesreg,-1 eyewear publishing,-1 eyvind johnson-sällskapets årsbok,-1 eötvös loránd tudományegyetem,-1 eötvös loránd university,-1 ežegodnik finno-ugorskih issledovanij,1 èlektronnoe priloženie k rossijskomu ûridičeskomu žurnalu,-1 éducation & didactique,-1 f & c edizioni,-1 f & f international,-1 f a davis company,-1 f&e,-1 f&s reports,1 f&s science,1 f1000 prime,-1 f1000research,1 fabrica litterarum polono-italica,1 fabrications,1 fabrik og bolig,-1 fabrika komiksov,-1 fabrizio serra editore,1 fabula,2 facet publishing,1 facets,1 fachblatt des berufsverbandes österreichischer kunst- und werkerzieherinnen,-1 fachhochschule nordwestschweiz,-1 fachsprache,2 fachverlag nw. in carl ed. schünemann,-1 facial plastic surgery,1 facial plastic surgery & aesthetic medicine,1 facies,1 facilities,2 facta universitatis,1 facta universitatis. series: mechanical engineering,-1 facta: a journal of roman material culture studies,1 "facts, views & vision in obgyn",-1 facultad latinoamericana de ciencias sociales - flacso,-1 facultas,-1 faculty of maritime studies,-1 "faculté de traduction et d'interprétation, université de genève",-1 fadian jishu,-1 fadls forlag a/s,1 fafnir,2 fagbokforlaget,1 fahamu refugee legal aid newsletter,-1 faili,-1 fair play,-1 fair play,1 fairleigh dickinson university press,1 faith and philosophy,2 faits de langues,1 fakes forgeries experts,-1 faktori,-1 fakultet muzičke umetnosti,-1 "fakulteta za organizacijske vede kranj, zalozba moderna organizacija",-1 falmer press,1 familial cancer,1 families in society: the journal of contemporary social services,1 families systems & health,1 "families, relationships and societies",1 family & law,1 family and community health,1 family and community history,1 family and consumer sciences research journal,1 family business review,2 family court review: an interdisciplinary journal,1 family journal,1 family law quarterly,1 family medicine,1 family medicine & medical science research,-1 family medicine & primary care review,-1 family medicine and community health,1 family practice,2 family process,2 family relations,2 "family science: global perspectives on research, policy and practice",1 family transitions,1 fao fisheries and aquaculture circular,-1 fao fisheries and aquaculture proceedings,-1 far east journal of mathematical education,1 far east journal of theoretical statistics,1 far eastern entomologist,-1 faraday discussions,1 faravid,1 farmacia,-1 farmaciâ,-1 farmakeutikī,-1 farmasia,-1 farming and management,-1 farmiuutiset,-1 faros,-1 fasciculi archaeologiae historicae,1 fascism. journal of comparative fascism studies,1 faseb bioadvances,-1 faseb journal,2 fashion and textiles,1 fashion colloquia,-1 fashion highlight,1 fashion practice,1 fashion studies,1 fashion theory: the journal of dress body and culture,2 "fashion, style & popular culture",1 fasis,1 fast capitalism,1 fast-ls ltd,-1 fastcase,-1 fat studies,1 fataburen nordiska museets,1 fate in review,-1 fathering: a journal of theory and research about men as parents,1 fatigue and fracture of engineering materials and structures,1 faulkner journal,1 fauna norvegica,1 faventia,1 faxuejia,-1 fazhi yu shehui,-1 fe dergi,-1 febs journal,2 febs letters,1 febs open bio,1 federal law review,1 federal probation,1 federal reserve bank of st louis review,-1 federalismi.it,-1 federated conference on computer science and information systems,1 fedoapress,1 feedback,-1 feevale,-1 "felix ravenna: rivista di antichita ravennati, cristiane e byzantine",1 felsefe tartışmaları,1 felsőbbfokú tanulmányok intézete,-1 femina politica,1 feminism and psychology,1 feminist criminology,2 feminist economics,1 feminist encounters,1 feminist formations,1 feminist legal studies,2 feminist media histories,1 feminist media studies,2 feminist review,2 feminist studies,2 feminist theology,1 feminist theory,3 feministische studien,1 feminists@law,1 fems immunology and medical microbiology,1 fems microbes,1 fems microbiology ecology,1 fems microbiology letters,1 fems microbiology reviews,2 fems yeast research,1 fenestra finnorum,-1 fennia,1 fenno-ugrica suecana,1 fenno-ugrica suecana. nova series,1 fenno-ugristica,1 fennoscandia archaeologica,2 fermentation,-1 fern gazette,1 fernwood publishing,1 ferrantia,-1 ferroelectrics,1 ferroelectrics letters section,1 fertility and sterility,3 ferðamál á norðurslóðum,-1 fetal and maternal medicine review,1 fetal and pediatric pathology,1 fetal diagnosis and therapy,1 few-body systems,1 ff communications,2 ff network,-1 fgi publications,-1 fgi reports,-1 fh oö forschungs- & entwicklungs gmbh,-1 fiatal írók szövetsége,-1 fib fédération internationale du béton,-1 fib symposium proceedings,1 fiber and integrated optics,1 fibers,-1 fibers and polymers,1 fibonacci quarterly,1 fibre chemistry,1 fibreculture journal: internet theory criticism research,1 fibres and textiles in eastern europe,1 fibrogenesis & tissue repair,-1 fichl publication series,-1 fichte-studien,1 fiction international,1 fiddlehead,1 fidea,-1 fiducia,-1 field and vegetable crops research,1 field bryology,-1 field crops research,2 field methods,2 fields institute communications,1 fieldwork in religion,1 fifteenth-century studies,1 figura,-1 figurationen: gender - literatur - kultur,1 fiia analysis,-1 fiia reports,1 fiib business review,1 filander verlag,1 filatelisti,-1 fillari,-1 film and history,1 film criticism,1 film history: an international journal,2 film international,1 film quarterly,2 "film, fashion & consumption",1 film-philosophy,1 filmarchiv austria,-1 filmhistoria,1 filmihullu,-1 filmiverkko ry,-1 filodiritto editore,-1 filogi,-1 filologia,1 filologia antica e moderna,1 filologia e critica,-1 filologia italiana,1 filologia mediolatina: rivista della fondazione ezio franceschini,2 filologia neotestamentaria,1 filologija,1 filologiâ i ?elovek,1 filologiâ masalalari,-1 filologičeskie nauki : naučnye doklady vysšej školy,-1 filologičeskie nauki v mgimo,-1 filologičeskij klass,1 filomat,1 filosofia,1 filosofia e questioni pubbliche,1 filosofia unisinos,1 filosofia: international journal of philosophy,1 filosoficky casopis,1 filosofija-sociologija,1 filosofisia tutkimuksia helsingin yliopistosta,-1 filosofisk supplement,-1 filosofisk tidskrift,1 filosofiska notiser,-1 filosofiâ,-1 filosofiâ hozâjstva,1 filosofiâ i kul’tura,1 filosofiâ nauki,1 filosofiâ obrazovaniâ,1 filosofiâ prava,1 filosofiâ social’nyh kommunikacij,1 filosofski alternativi,1 filosofskie nauki,1 filoteknos,-1 filozofia,1 filozofia nauki,1 filozofija i drustvo,1 filozofska istrazivanja,1 filozofski fakultet - izdavačka delatnost,-1 "filozofski fakultet, univerzitet ""sv. kiril i metodij"" skopje",-1 filozofski vestnik,1 filtration,1 filtration and separation,1 filtration industry analyst,1 "fimea kehittää, arvioi ja informoi",-1 fimecc publications series,-1 final program and proceedings : color and imaging conference,-1 finance,1 finance a uver,-1 finance and society,-1 finance and stochastics,2 finance india,1 finance research letters,1 financial accountability and management,1 financial analysts journal,1 financial counseling and planning,1 financial history,1 financial history review,1 financial innovation,1 financial management,2 financial markets and portfolio management,1 "financial markets, institutions and instruments",1 "financial markets, institutions and risks",-1 financial review,1 financial services review,1 financial times,-1 financial times music and copyright,-1 finans,-1 finanssi- ja vakuutuskustannus oy finva,-1 finanzarchiv,1 finbion julkaisuja,-1 fincent publication series,-1 findecon monograph series,-1 fingrid oyj,-1 finisterra,-1 finite elements in analysis and design,1 finite fields and their applications,1 finlands svenska andelsförbund,-1 finlands svenska folkdansring,-1 finlandssvenska kompetenscentret inom det sociala området,-1 finn lectura,-1 finn-brits,-1 finn-kultur,-1 finnanest,-1 finnisch-ugrische forschungen,3 finnisch-ugrische mitteilungen,1 finnische beiträge zur germanistik,1 finnish business review,-1 finnish dance in focus,-1 finnish defence studies,1 finnish foreign policy papers,-1 finnish journal for romanian studies,-1 finnish journal of ehealth and ewelfare,1 finnish journal of linguistics,1 finnish journal of social research,1 finnish music quarterly,-1 finnish society for aesthetics publication series,-1 finnish yearbook of international law,1 finno-ugric languages and linguistics,1 finno-ugric studies association of canada,-1 fino traço editora,-1 finra ry,-1 finsk tidskrift,1 finska läkaresällskapets handlingar,1 fire,-1 fire and materials,1 fire ecology,1 fire research,-1 fire safety journal,2 fire safety science,1 fire technology,2 firenze university press,1 firera & liuzzo publishing,1 first break,1 first language,2 first monday,2 first world war studies,1 fiscal studies,1 fischer taschenbuch verlag - forum wissenschaft hochschule,1 fish and fisheries,3 fish and shellfish immunology,1 fish pathology,1 fish physiology and biochemistry,1 fisheries,1 fisheries management and ecology,1 fisheries oceanography,2 fisheries research,2 fisheries science,1 fishery bulletin,1 fishes,-1 fisioterapia,1 fiskarposten,-1 fiskeritidskrift för finland,-1 fit monograph series/collection,1 fitispos international journal,-1 fitoterapia,1 fixed point theory,1 fizika metalliv i metallovedenie,1 fizika nizkih temperatur,-1 flash art,-1 flatchem,1 flattiviesti,-1 flavour,1 flavour and fragrance journal,1 fle learning,-1 fleischwirtschaft,1 fleischwirtschaft international,-1 fleks,1 flexible and printed electronics,2 flexible services and manufacturing journal,1 flexmat,-1 flick studio,-1 flinders law journal,1 flinta,-1 flogiston,-1 flora,1 flora mediterranea,-1 florentia iliberritana,1 florida entomologist,1 florida state open publishing,-1 florida tax review,1 florilegium,1 flow measurement and instrumentation,2 flow turbulence and combustion,1 fluctuation and noise letters,1 fluid dynamics,1 fluid dynamics and materials processing,1 fluid dynamics research,1 fluid mechanichs and its application,1 fluid phase equilibria,1 fluids,-1 fluids and barriers of the cns,1 fluminensia,1 fluoride,1 flux,-1 fly,1 fly for points,-1 fmcad,1 fme transactions,1 fmsera journal,1 fnes vaalivälähdykset,-1 fng research,1 focaal: european journal of anthropology,2 focus : journal of international business,1 focus junior,-1 focus localis,1 focus on alternative and complementary therapies,1 focus on autism and other developmental disabilities,1 focus on catalysts,1 focus on pigments,1 focus on powder coatings,1 focus on surfactants,1 foi-komers,-1 fokus på familien,1 folia biologica,1 folia biologica: krakow,1 folia cryptogamica estonica,1 folia estonica,1 folia ethnographica,1 folia geobotanica,1 folia histochemica et cytobiologica,1 folia historiae artium,1 folia linguistica,2 folia linguistica et litteraria,-1 folia linguistica historica,2 folia malacologica,1 folia malaysiana,-1 folia medica,-1 folia microbiologica,1 folia morphologica,1 folia neuropathologica,1 folia onomastica croatica,1 folia orientalia,1 folia parasitologica,1 folia phoniatrica et logopaedica,1 folia praehistorica posnaniensia,1 folia primatologica,1 folia scandinavica posnaniensia,1 folia uralica debreceniensia,1 folk life,1 folk music journal,1 folk och musik,-1 "folk, knowledge, place",1 folkdansforskning i norden,-1 folklivsstudier,-1 folklore,2 folkloristiikan julkaisuja,-1 folkloristiikan toimite,-1 folkloristika,1 folkmålsstudier,2 fondacija za regionalno razvitie,-1 fondation européenne d'études progressistes,-1 fondation louis de broglie,1 fondazione cisam,1 fondazione politecnico di milano,-1 fondo de cultura economica,-1 fondo editorial universidad eafit,1 fonetica si dialectologie,1 fontana media,-1 fontes archaeologici posnanienses,1 fontes artis musicae,1 fonti musicali italiane,1 food additives and contaminants part a: chemistry analysis control exposureand risk assessment,1 food additives and contaminants part b: surveillance issn,1 food analytical methods,1 food and agricultural immunology,1 food and agriculture organization of the united nations,-1 food and bioprocess technology,1 food and bioproducts processing,1 food and chemical toxicology,1 food and drug law journal,1 food and energy security,1 food and environmental virology,1 food and foodways,1 food and function,1 food and history,2 food and humanity,1 food and nutrition bulletin,1 food and nutrition research,1 food and waterborne parasitology,1 food australia,1 food biophysics,1 food bioscience,1 food biotechnology,1 food chemistry,2 food chemistry advances,1 food chemistry x,1 food control,2 food engineering reviews,1 food ethics,1 food frontiers,1 food hydrocolloids,3 food hygiene and safety science,1 food innovation and advances,-1 food microbiology,2 food packaging and shelf life,1 food policy,2 food quality and preference,2 food quality and safety,1 food research international,2 food reviews international,2 food safety and risk,1 food science & nutrition,1 food science and biotechnology,1 food science and human wellness,1 food science and technology,1 food science and technology international,1 food science and technology research,1 food security,1 food structure,1 food studies,1 food studies press,-1 food technology,1 food technology and biotechnology,1 food webs,1 "food, culture and society",1 foodborne pathogens and disease,1 foods,-1 foot,1 foot and ankle clinics,1 foot and ankle international,1 foot and ankle surgery,1 footprint,1 footwear science,1 for the learning of mathematics,1 forbes,-1 forced migration review,-1 forces in mechanics,1 fordham international law journal,2 fordham journal of corporate & financial law,1 fordham law review,1 fordham university press,2 fordítástudomány,-1 forecasting,-1 foreign affairs,1 foreign economies and management,-1 foreign language annals,2 foreign language teaching and research press,-1 foreign languages press,1 foreign literature studies,1 foreign policy,1 foreign policy analysis,1 forensic anthropology,-1 forensic chemistry,1 forensic imaging,1 forensic science international,2 forensic science international : synergy,1 forensic science international: animals and environments,-1 forensic science international: digital investigation,1 forensic science international: genetics,3 forensic science international: genetics supplement series,1 forensic science international: reports,1 forensic science policy & management,1 "forensic science, medicine and pathology",1 forensic sciences,-1 forensic sciences research,1 forensic toxicology,1 fores,-1 foresight,1 forest ecology and management,3 forest ecosystems,1 forest pathology,1 forest policy and economics,2 forest products journal,1 forest products society,1 forest research institute,-1 forest science,1 forest systems,1 forestry,2 forestry chronicle,-1 forestry research,1 forestry studies,1 forestry studies in china,1 forests,-1 forests monitor,1 "forests, trees and livelihoods",1 forktail,1 forlag1,1 forlaget ajour,1 forlaget anis,1 forlaget hexis,1 forlaget hikuin,1 forlaget kolon,1 form,-1 forma y funcion,1 formakademisk,1 formal aspects of computing,2 formal methods in system design,2 formalized mathematics,1 formalpress,-1 formatex research center,-1 formath,1 formation emploi,1 formazione & insegnamento,-1 formulary,1 formules: revue des creations formelles,1 fornvannen,1 foro de derecho mercantil,1 foro de educación,1 foro hispanico,1 foro internacional,1 foro italiano,1 forsait,-1 forschung im ingenieurwesen-engineering research,1 forschungen zu burgen und schlossern,1 forschungen zur osteuropäischen geschichte,1 forschungen zur volks- und landeskunde,1 forschungsjournal soziale bewegungen,-1 forskning & forandring,1 forskning för framåt,-1 forskning för kyrkan,1 forskning om undervisning och lärande,1 forskningspolitikk,-1 forskningsrapporter,-1 forskningsrapporter från svenska handelshögskolan,-1 forskningsrapporter från husö biologiska station,-1 forssan lehti,-1 forstmaschinen-profi,-1 fortid,-1 fortress press,1 fortschritte der neurologie psychiatrie,1 fortschritte der physik-progress of physics,1 fortune,-1 forum,-1 forum,1 forum 24,-1 forum archaeologiae: zeitschrift fur klassische archaologie,1 forum der psychoanalyse,1 forum editrice universitaria udinese,-1 forum for anthropology and culture,1 forum for development studies,1 forum for international research in education,1 forum for modern language studies,1 forum for nordic dermato-venereology,1 forum for social economics,1 forum for world literature studies,1 forum för antroposofi,-1 forum für osteuropäische ideen- und zeitgeschichte,-1 forum historiae,-1 forum holzbau,-1 forum italicum,1 forum iuris,-1 forum kinder- und jugendsport,-1 forum kritische psychologie,1 forum mathematicum,2 forum modernes theater,1 forum navale,-1 forum noveyshey vostochnoevropeyskoy istorii i kul¿tury,-1 "forum of mathematics, pi",3 "forum of mathematics, sigma",2 forum of nutrition,1 forum of slavic cultures,-1 forum pedagogiczne,-1 forum qualitative sozialforschung,1 forum recht,-1 forum scientiae oeconomia,-1 forum sociológico,1 forum stadt,1 forum wohnen und stadtentwicklung,-1 forum: a journal of applied research in contemporary politics,1 forum: international journal of interpretation and translation,1 forumsprache,-1 forvaltningsrattslig tidskrift,1 fossa,-1 fossil imprint,1 fossil record,1 fotoaparát,-1 fotogeschichte,1 fotogrammetrian ja kaukokartoituksen seura,-1 fottea,1 foucault studies,1 foundation: the international review of science fiction,1 foundations and trends in accounting,1 foundations and trends in communications and information theory,1 foundations and trends in econometrics,1 foundations and trends in electronic design automation,-1 foundations and trends in entrepreneurship,-1 foundations and trends in finance,1 foundations and trends in human-computer interaction,1 foundations and trends in information retrieval,3 foundations and trends in information systems,1 foundations and trends in machine learning,3 foundations and trends in marketing,1 foundations and trends in robotics,1 foundations and trends in signal processing,1 foundations and trends in systems and control,1 foundations and trends in web science,1 foundations of chemistry,-1 foundations of computational mathematics,3 foundations of data science,1 foundations of genetic algorithms,1 foundations of management,1 foundations of materials science and engineering,-1 foundations of physics,1 foundations of science,1 four courts press,1 fourrages,1 fourth genre: explorations in nonfiction,1 fpga world conference,-1 fractal and fractional,-1 fractals: complex geometry patterns and scaling in nature and society,1 fractional calculus and applied analysis,1 frame,-1 framespa,-1 framework: the journal of cinema and media,1 fran-su,-1 francais moderne,2 francia,1 franciscan studies,1 francke verlag,1 franco cesati editore,-1 francoangeli,1 francophone postcolonial studies,1 francosphères,1 frank & timme,1 frank cass publishers,1 frankfurter allgemeine,-1 frankfurter elektronische rundschau zur altertumskunde,1 frankfurter judaistische beitrage,1 franz steiner verlag,2 franzbecker,-1 fratelli lega,-1 frattura ed integrità strutturale,1 fraunhofer verlag,-1 "fraunhofer-gesellschaft zur förderung der angewandten forschung e.v. fraunhofer ivv, außenstelle für verarbeitungsmaschinen und verpackungstechnik dresden",-1 fraunhofer-institut für zuverlässigkeit und mikrointegration,-1 fredsposten,-1 free & equal,1 free neuropathology,1 free radical biology and medicine,1 free radical research,1 freiburger zeitschrift fur philosophie und theologie,1 freie universität berlin,-1 freie universität berlin : institut für publizistik- und kommunikationswissenschaft,-1 freie universität berlin universitätsbibliothek,-1 fremdsprache deutsch: zeitschrift fur die praxis des deutschunterrichts,1 fremdsprachen lehren und lernen,-1 fremdsprachen und hochschule,1 french australian review,1 french colonial history,1 french cultural studies,1 french forum,1 french historical studies,1 french history,2 french journal for media research,1 french politics,1 "french politics, culture and society",1 french review,2 french studies,3 frequenz,-1 fresenius environmental bulletin,-1 fresh produce journal,-1 freshwater biology,2 freshwater crayfish,1 freshwater reviews,1 freshwater science,1 fri tanke,-1 friction,1 friedrich-alexander-universität erlangen-nürnberg,-1 friedrich-ebert-stiftung,-1 fritzes,1 frodskaparrit: annales societatis scientiarum faeroensis,1 from science to policy,-1 from the european south,1 fromm-forum,-1 frommann-holzboog,1 fronesis,-1 fronteiras,1 frontiers for young minds,-1 frontiers in aging,-1 frontiers in aging neuroscience,1 frontiers in agronomy,-1 frontiers in allergy,1 frontiers in animal science,-1 frontiers in applied mathematics and statistics,-1 frontiers in artificial intelligence,1 frontiers in artificial intelligence and applications,1 frontiers in astronomy and space sciences,-1 frontiers in bee science,-1 frontiers in behavioral neuroscience,-1 frontiers in big data,1 frontiers in bioengineering and biotechnology,-1 frontiers in bioinformatics,1 frontiers in bioscience,1 frontiers in bioscience - elite,-1 frontiers in bioscience - scholar,-1 frontiers in blockchain,-1 frontiers in built environment,-1 frontiers in cancer control and society,-1 frontiers in cardiovascular medicine,1 frontiers in cell and developmental biology,-1 frontiers in cellular and infection microbiology,-1 frontiers in cellular neuroscience,-1 frontiers in chemical engineering,-1 frontiers in chemistry,-1 frontiers in child and adolescent psychiatry,-1 frontiers in climate,1 frontiers in clinical diabetes and healthcare,-1 frontiers in communication,-1 frontiers in communications and networks,-1 frontiers in computational neuroscience,1 frontiers in computer science,1 frontiers in conservation science,-1 frontiers in control engineering,-1 frontiers in dementia,-1 frontiers in dental medicine,1 frontiers in dentistry,-1 frontiers in digital health,-1 frontiers in drug delivery,-1 frontiers in earth science,1 frontiers in ecology and evolution,1 frontiers in ecology and the environment,2 frontiers in education,-1 frontiers in electronics,-1 frontiers in endocrinology,-1 frontiers in energy,1 frontiers in energy research,-1 frontiers in environmental archaeology,-1 frontiers in environmental chemistry,-1 frontiers in environmental economics,-1 frontiers in environmental science,1 frontiers in finance and economics,-1 frontiers in fish science,-1 frontiers in food science and technology,-1 frontiers in forests and global change,-1 frontiers in fungal biology,-1 frontiers in gastroenterology,-1 frontiers in genetics,1 frontiers in genome editing,-1 frontiers in global women’s health,-1 frontiers in health informatics,-1 frontiers in health services,-1 frontiers in heat and mass transfer,1 frontiers in hematology,-1 frontiers in human dynamics,-1 frontiers in human neuroscience,-1 frontiers in ict,-1 frontiers in immunology,1 frontiers in insect science,-1 frontiers in integrative neuroscience,-1 frontiers in lab on a chip technologies,-1 frontiers in manufacturing technology,-1 frontiers in marine science,-1 frontiers in materials,-1 frontiers in mechanical engineering,-1 frontiers in medical technology,-1 frontiers in medicine,-1 frontiers in microbiology,1 frontiers in molecular biosciences,-1 frontiers in molecular medicine,-1 frontiers in molecular neuroscience,-1 frontiers in nanotechnology,-1 frontiers in nephrology,-1 frontiers in network physiology,-1 frontiers in neural circuits,-1 frontiers in neuroanatomy,-1 frontiers in neuroendocrinology,1 frontiers in neuroengineering,-1 frontiers in neuroergonomics,-1 frontiers in neuroinformatics,-1 frontiers in neurology,1 frontiers in neurorobotics,-1 frontiers in neuroscience,1 frontiers in nuclear engineering,-1 frontiers in nutrition,-1 frontiers in oncology,-1 frontiers in ophthalmology,-1 frontiers in oral health,1 frontiers in organizational psychology,-1 frontiers in pain research,-1 frontiers in pediatrics,-1 frontiers in pharmacology,-1 frontiers in physics,-1 frontiers in physiology,-1 frontiers in plant science,-1 frontiers in political science,1 frontiers in psychiatry,-1 frontiers in psychology,1 frontiers in public health,-1 frontiers in radiology,-1 frontiers in rehabilitation sciences,1 frontiers in remote sensing,1 frontiers in reproductive health,-1 frontiers in research metrics and analytics,-1 frontiers in robotics and ai,1 frontiers in sensors,-1 frontiers in signal processing,1 frontiers in sleep,-1 frontiers in smart grids,-1 frontiers in social psychology,-1 frontiers in sociology,-1 frontiers in soil science,1 frontiers in sports and active living,-1 frontiers in stroke,-1 frontiers in surgery,-1 frontiers in sustainability,-1 frontiers in sustainable cities,-1 frontiers in sustainable food systems,1 frontiers in synaptic neuroscience,-1 frontiers in systems neuroscience,1 frontiers in the internet of things,-1 frontiers in toxicology,-1 frontiers in transplantation,-1 frontiers in urology,-1 frontiers in veterinary science,1 frontiers in virology,-1 frontiers in virtual reality,1 frontiers in zoology,1 frontiers media,-1 frontiers of architectural research,2 frontiers of biogeography,1 frontiers of chemical science and engineering,1 frontiers of computer science,-1 frontiers of digital education,-1 frontiers of earth science,1 frontiers of education in china,1 frontiers of engineering management,-1 frontiers of environmental science & engineering,1 frontiers of gastrointestinal research,1 frontiers of hormone research,1 frontiers of information technology & electronic engineering,1 frontiers of law in china,1 frontiers of materials science,1 frontiers of mathematics in china,1 frontiers of mechanical engineering,1 frontiers of medicine,-1 frontiers of narrative studies,2 frontiers of neurology and neuroscience,1 frontiers of optoelectronics,1 frontiers of physics,1 frontiers of radiation therapy and oncology,1 frontiers of socio-legal studies,-1 frontiers of structural and civil engineering,1 frontiers: a journal of women studies,-1 frontline gastroenterology,1 frontline learning research,1 fruct oy,-1 fruhmittelalterliche studien,1 fruhneuzeit-info,1 fruits,1 fródskapur,1 fs (forest and society),-1 fteval journal for research and technology policy evaluation,-1 fu jen studies: literature and linguistics,1 fudan journal of the humanities and social sciences,1 fudan university press,1 fuel,2 fuel and energy abstracts,-1 fuel cells,1 fuel cells bulletin,1 fuel communications,1 fuel processing technology,1 fuels,-1 fuels & lubes international,-1 fujitsu scientific & technical journal,-1 fukui kenritsu kyouryuu hakubutsukan kiyou,1 fulbright finland news,-1 "fullerenes, nanotubes, and carbon nanostructures",1 functional analysis and its applications,1 functional and integrative genomics,1 functional differential equations,1 functional ecology,3 functional linguistics,1 functional materials,1 functional materials letters,1 functional neurology,1 functional plant biology,1 functiones et approximatio: commentarii mathematici,1 functions of language,2 fund og forskning i det kongelige biblioteks samlinger,1 fundacion infancia y aprendizaje,1 fundación arquitectura coam,-1 fundación cidob,-1 fundación española de historia moderna,-1 fundación p.i.e.b.,-1 fundacja interdisciplinary research foundation,-1 fundacja rozwoju systemu edukacji,-1 fundamenta informaticae,1 fundamenta mathematicae,1 fundamental and applied limnology,1 fundamental and clinical pharmacology,1 fundamental research,1 fundamina,1 funde und ausgrabungen im bezirk trier,1 fungal biology,1 fungal biology and biotechnology,1 fungal biology reviews,1 fungal diversity,3 fungal ecology,1 fungal genetics and biology,1 fungal systematics and evolution,1 fungi,-1 funkcialaj ekvacioj : serio internacia,1 furniture history,1 fusion engineering and design,1 fusion science and technology,1 futura,1 future anterior: journal of historic preservation history theory and criticism,2 future batteries,-1 future cities and environment,1 future energy,1 future farming,-1 future foods,1 future generation computer systems: the international journal of grid computing: theory methods and applications,3 future in educational research,-1 future internet,-1 future internet assembly,-1 future journal of social sciences,-1 future medicinal chemistry,1 future medicine ltd,-1 future microbiology,1 future neurology,-1 future of children,2 "future of food : journal on food, agriculture and society",-1 future oncology,1 future pharmacology,-1 future rare diseases,-1 future science oa,-1 future sustainability,-1 future technology,-1 future transportation,-1 future virology,1 futures,2 futures & foresight science,1 futuri,-1 futuribles,1 futurist,1 futurum,-1 futuuri,-1 futy journal of the environment,-1 fuzzy economic review,1 fuzzy information and engineering,1 fuzzy optimization and decision making,1 fuzzy sets and systems,1 fysi,-1 fysioterapeuten,1 fysioterapia,-1 fédération internationale des professeurs de français,-1 fìlologìčnì studìï,-1 fìnansovo-kreditna dìâlʹnìstʹ : problemi teorìì̈ ta praktiki,-1 fìzika ì hìmìâ tverdogo tìla,-1 fólio,-1 fórum társadalomtudományi szemle,1 földtani közlöny,1 fördervereinigung fluidtechnik,1 föreningen brage,-1 föreningen för nordisk filologi,-1 föreningen mediehistoriskt arkiv,1 företagare,-1 företagsnyckeln,-1 förlaget m ab oy,-1 förlagsaktiebolaget scriptum,-1 förskoletidningen,-1 försvarshögskolan,-1 förvaltningshögskolan vid göteborgs universitet,-1 føroya fródskaparfelag,1 g. giappichelli editore,-1 g.b. palumbo & c. editore,1 "g3: genes, genomes, genetics",2 gabi journal,-1 gaceta medica de mexico,1 gad,1 gaia: ecological perspectives for science and society,1 gait and posture,1 gakko kaizen kenkyu kiyo,-1 galaad edizioni,-1 galaktika media : žurnal media issledovanij,1 galaxies,-1 galenos yayinevi,-1 galerie,-1 galileana: journal of galilean studies,1 gallaudet university press,1 gallen-kallelan museo,-1 gallia prehistoire,1 gallia: fouille et monuments en france metropolitaine,1 gallimard,2 galpin society journal,1 galvanotechnik,1 gambling research,-1 game & puzzle design,1 game studies: the international journal of computer game research,2 game: the italian journal of game studies,-1 games,-1 games,1 games and culture: a journal of interactive media,3 games and economic behavior,2 games for health,1 gamevironments,1 gamtamokslinis ugdymas,-1 gangemi editore,-1 ganhanqu dili,-1 gaodeng gongcheng jiaoyu yanjiu,-1 gaoxiao jiaoyu guanli,-1 gapa press,-1 garamond,-1 garant,1 garden history,1 garland science publishing,1 garnet education,-1 gas for energy,-1 gastric cancer,2 gastro hep advances,1 gastroenterologiahoitajat,-1 gastroenterology,3 gastroenterology and hepatology from bed to bench,1 gastroenterology clinics of north america,1 gastroenterology nursing,1 gastroenterology report,1 gastroenterology research,-1 gastroenterology research and practice,1 gastrohep,1 gastrointestinal endoscopy,1 gastrointestinal tumors,1 gates open research,-1 gatherings: the heidegger circle annual,1 gaudeamus,2 gay and lesbian issues and psychology review,1 gayana,1 gayana botanica,1 "gaz, woda i technika sanitarna",-1 gazeta wyborcza,-1 gazi mühendislik bilimleri dergisi,-1 gazzetta medica italiana : archivio per le scienze mediche,1 gazō fugōka shinpojiumu,-1 gdańskie studia prawnicze,-1 gdmb verlag,-1 gea college,-1 geburtshilfe und frauenheilkunde,1 gedisa,-1 gedrag and organisatie,1 geenivarat,-1 gefahrstoffe reinhaltung der luft,1 gefasschirurgie,1 gegenwartsliteratur,1 gels,-1 gem,1 gema online,-1 gematologiya i transfuziologiya,1 gemmae,1 gems and gemology,1 gender,1 gender a výzkum,-1 gender and development,1 gender and education,3 gender and history,3 gender and language,2 gender and politics,3 gender and society,3 gender in management: an international journal,1 gender issues,1 gender medicine,1 gender studies and policy review,-1 "gender, place and culture",2 "gender, technology and development",1 "gender, work and organization",3 genders,1 gene,1 gene conserve,1 gene expression,1 gene expression patterns,1 gene regulation and systems biology,1 gene reports,1 gene technology,-1 gene therapy,1 gene therapy and molecular biology,1 gene therapy and regulation,1 gene x,1 genealogy,-1 genealogy+critique,1 general and comparative endocrinology,1 general chemistry,-1 general hospital psychiatry,1 general medicine open,-1 general physiology and biophysics,1 general psychiatry,1 general relativity and gravitation,1 general systems bulletin,-1 generalitat de catalunya,-1 generations: journal of the american society on aging,1 genereviews,1 genes,-1 genes and development,3 genes and environment,1 genes and genetic systems,1 genes and genomics,1 genes and immunity,1 genes and nutrition,1 genes brain and behavior,1 genes chromosomes and cancer,1 genes to cells,1 genesis,1 genesis: revue internationale de critique genetique,1 genetic counseling,1 genetic engineering and biotechnology news,1 genetic epidemiology,1 genetic programming and evolvable machines,1 genetic resources,1 genetic resources and crop evolution,1 genetic testing and molecular biomarkers,1 genetica,1 genetics,2 genetics and molecular biology,1 genetics and molecular research,-1 genetics in medicine,3 genetics in medicine open,1 genetics research,1 genetics selection evolution,2 genetika,1 geneva centre for security policy,-1 geneva risk and insurance review,1 gengo bunka to nihongo ky?iku,-1 genocide studies international,1 genome,1 genome biology,3 genome biology and evolution,2 genome medicine,3 genome research,3 genomics,1 genomics data,1 genomics society and policy,1 "genomics, proteomics and bioinformatics",1 genos,1 genova university press,-1 genre,1 genshōgaku nempō,-1 genueve ediciones,-1 genus,1 genusstudier vid mittuniversitetet,-1 geo,1 geo-marine letters,1 geo-spatial information science,1 geoacta,1 geoarabia,1 geoarchaeology: an international journal,2 geobiology,2 geobios,1 geocarto international,-1 geochemical journal,1 geochemical perspectives letters,2 geochemical transactions,1 geochemistry geophysics geosystems,2 geochemistry international,1 geochemistry: exploration environment analysis,1 geochimica et cosmochimica acta,2 geochronology,1 geochronometria,1 geoderma,2 geoderma regional,1 geodesy and cartography,1 geodetski list,1 geodetski vestnik,1 geodinamika i tektonofizika,1 geodiversitas,1 geoenergy,-1 geoenergy science and engineering,1 geofisica internacional,1 geofizika,1 geofizičeskie issledovaniâ,-1 geofluids,1 geofoor,-1 geofoorumi,-1 geoforum,3 geoforum perspektiv,-1 geofysiikan päivät,-1 geografia fisica e dinamica quaternaria,1 geograficidade,-1 geografie,-1 geografie,1 geografisk tidsskrift: danish journal of geography,1 geografiska annaler series a : physical geography,1 geografiska annaler series b: human geography,2 geografiska notiser,1 geographia antiqua,1 geographia polonica,1 geographica bernensia,1 geographica helvetica,1 geographica pannonica,-1 geographical analysis,2 geographical journal,1 geographical research,1 geographical review,1 geographie economie societe,1 geographie physique et quaternaire,1 geographies,-1 geographische rundschau,1 geographische zeitschrift,1 geography,1 geography and sustainability,1 geography compass,2 "geography, environment and sustainability",1 geohealth,1 geoheritage,1 geohumanities,1 geoinformatica,1 geojournal,1 geojournal of tourism and geosites,1 geokhimiya,1 geologi,-1 geologia croatica,1 geologian tutkimuskeskus,-1 geologica acta,1 geologica belgica,1 geologica carpathica,1 geological association of canada,1 geological association of canada: special paper,1 geological journal,1 geological magazine,1 geological quarterly,1 geological society,1 geological society of america,1 geological society of america bulletin,2 geological society special publication,1 geological survey of finland : bulletin,1 geology,3 geology of ore deposits,1 geology today,1 "geology, ecology, and landscapes",1 "geology, geophysics & environment",-1 geomagnetism and aeronomy,1 geomatica,1 geomatics natural hazards & risk,1 geombinatorics,1 geomechanics and engineering,1 geomechanics and geoengineering,1 geomechanics and geophysics for geo-energy and geo-resources,1 geomechanics for energy and the environment,1 geometriae dedicata,2 geometric and functional analysis,3 geometry and topology,3 geometry and topology monographs,1 geomicrobiology journal,1 geomorphologie: relief processus environnement,1 geomorphology,1 geophysica,1 geophysical and astrophysical fluid dynamics,1 geophysical journal international,1 geophysical monographs,1 geophysical prospecting,1 geophysical research letters,3 geophysics,1 geopolitica (dublin),-1 geopolitics,3 geopolitics under globalization,1 "geopolitics, history, and international relations",1 georg,-1 georg editeur,1 georg olms verlag,1 georg thieme verlag,1 georg-eckert-insitut für internationale schulbuchforschung,1 george mason university press,1 george washington law review,1 georgetown immigration law journal,1 georgetown journal of international affairs,-1 georgetown journal of international law,1 georgetown journal of legal ethics,1 georgetown law journal,2 georgetown university press,1 georgia review,1 georgia tech school of interactive computing,-1 georgian mathematical journal,1 "georgica: zeitschrift fur kultur, sprache und geschichte georgiens und kaukasiens",1 georisk,1 geoscience canada,1 geoscience communication,1 geoscience data journal,-1 geoscience frontiers,1 geoscience letters,1 geosciences,-1 geosciences and engineering,-1 geosciences journal,1 "geoscientific instrumentation, methods and data systems",-1 "geoscientific instrumentation, methods and data systems discussions",-1 geoscientific model development,3 geoscientific model development discussions,-1 geospatial health,1 geosphere,1 geostandards and geoanalytical research,1 geosynthetics international,1 geosystem engineering,1 geosystems and geoenvironment,1 geotechnical and geological engineering,1 geotechnical engineering,1 geotechnical report,-1 geotechnical testing journal,1 geotechnik,1 geotechnique,3 geotectonics,1 geotema,1 geotextiles and geomembranes,2 geothermal energy,1 geothermal energy science,1 geothermics,1 geotropico,1 geoturystyka,-1 geowissenschaftliche mitteilungen,-1 geriatric care,1 geriatric nursing,1 geriatric orthopaedic surgery & rehabilitation,1 geriatrics,-1 geriatrics and aging,1 geriatrics and gerontology international,1 gerion,1 german as a foreign language,2 german economic review,1 german history,2 german journal of human resource management,1 german journal of psychiatry,1 german law journal,2 german life and letters,2 german medical science,1 german microwave conference,1 german monitor,1 german politics,1 german politics and society,1 german quarterly,2 german studies review,1 german yearbook of international law,1 germania,2 germanic review,3 germanisch-romanische monatsschrift,3 germanistik : deutsche sprach- und literaturwissenschaft,1 germanistik : internationales referatenorgan mit bibliographischen hinweisen,1 germanistika i skandinavistika,-1 germanistische linguistik,1 germanistische mitteilungen,1 germanoslavica,1 gerodontology,1 geronomi,-1 gerontechnology,1 gerontologi,-1 gerontologia,1 gerontologist,3 gerontology,1 gerontology & geriatric medicine,1 gerontology & geriatrics education,1 geroscience,1 gerundium,-1 gerōn,-1 geschichte der pharmazie,1 geschichte in wissenschaft und unterricht,1 geschichte lernen,1 geschichte und gegenwart,1 geschichte und gesellschaft,3 geschichte.transnational,-1 gesprächsforschung,2 gesta: international center of medieval art,2 gestalt review,1 gestalt theory: an international multidisciplinary journal,-1 gestion y politica publica,1 gesture,2 gesture studies,1 gestão & produção,-1 gesundheitsokonomie und qualitatsmanagement,1 gesundheitswesen,1 get it published verlag,-1 getmobile,1 getsemania - kalervo palsan ystävät ry,-1 getty conservation institute,1 getty research journal,1 geus bulletin,1 gewerblicher rechtsschutz und urheberrecht,1 gezelliana,1 gezinstherapie wereldwijd,-1 géotechnique letters,1 gff,1 ghana journal of linguistics,-1 ghana studies,-1 ghana universities press,1 gi cancer,1 gi forum,-1 gia publications,-1 giannini editore,-1 giannone edizioni,-1 gibb memorial trust,1 gidlunds,1 gifted and talented international,1 gifted child quarterly,2 gifted education international,1 gigantum humeris,-1 gigascience,1 gim international,1 gimtoji kalba,-1 gineco ro,1 ginecologia y obstetricia clinica,1 ginekologia polska,1 giorgio bretschneider editore,1 giornale critico della filosofia italiana,1 giornale di diritto amministrativo,1 giornale di diritto del lavoro e di relazioni industriali,-1 giornale di gerontologia,1 giornale di metafisica,1 giornale di storia costituzionale,1 giornale italiano della ricerca educativa,1 giornale italiano di cardiologia,-1 giornale italiano di dermatologia e venereologia,-1 giornale italiano di filologia,1 giornale italiano di medicina del lavoro ed ergonomia,1 giornale storico della letteratura italiana,1 girlhood studies,1 giroskopiya i navigatsiya,-1 gis business: geoinformationstechnologie fur die praxis,1 giscience and remote sensing,1 gito gesellschaft für industrielle informationstechnik und organisation mbh,-1 giuffre,1 giunti editore spa,1 giurisprudenza costituzionale,1 giuseppe t. cirella,-1 giustizia,1 giustizia amministrativa,1 glad!,1 gladius,1 glalia,-1 gland surgery,1 glasgow mathematical journal,1 glasnik matematicki,1 glasnik sed,1 glass and ceramics,1 glass physics and chemistry,1 glass structures and engineering,1 glass technology: european journal of glass science and technology part a,1 glasshouse press,1 glaube und denken,1 gleerups,-1 gli spazi della musica,1 glia,2 glimpse,-1 global academic publishing,1 global academic society journal,-1 global affairs,1 global and planetary change,3 global anesthesia and perioperative medicine,-1 global bioethics,2 global biogeochemical cycles,3 global built environment review,1 global business and economics anthology,-1 global business and economics research journal,-1 global business and management research,-1 global business and organizational excellence,1 global business conference,-1 global business languages,-1 global business review,1 global challenges,1 global change biology,3 global change biology bioenergy,2 global change research institute of the czech academy of sciences,-1 "global change, peace and security",1 global china pulse,-1 global chinese,1 global competition litigation review,-1 global conference on business & finance proceedings,-1 global congress on intelligent systems,-1 global constitutionalism,1 global crime,1 global dialogue,-1 global discourse,1 global ecology and biogeography,3 global ecology and conservation,1 global economic review,1 global economy journal,1 global education review,-1 global energy interconnection,1 global energy law and sustainability,1 global environment,1 global environmental change advances,1 global environmental change: human and policy dimensions,3 global environmental politics,3 global epidemiology,1 global fashion management conference proceeding,-1 global finance journal,1 global food history,1 global food security,2 global governance,1 global health action,-1 global health journal,-1 global health promotion,1 global health science and practice,-1 global heart,1 global hip hop studies,1 global innovation index,-1 global intellectual history,2 global journal of animal law,1 global journal of arts education,1 "global journal of biology, agriculture and health sciences",-1 global journal of business disciplines,-1 global journal of business pedagogy,1 global journal of business research,-1 "global journal of business, economics and management",-1 global journal of comparative law,1 global journal of computer science,-1 global journal of computer science and technology,-1 global journal of engineering education,-1 global journal of flexible systems management,1 global journal of foreign language teaching,-1 global journal of guidance & counselling,-1 global journal of health science,-1 global journal of human social science,-1 global journal of information technology,-1 global journal of management and business research,-1 global journal of psychology research,-1 global journal of pure and applied mathematics,1 global journal of research in engineering,-1 global journal of sociology,-1 "global journal of tourism, leisure and hospitality management.",-1 global journal of transformative education,-1 global jurist,1 global justice,1 "global knowledge, memory and communication",1 global labour journal,1 global marketing conference proceeding,-1 global media and china,1 global media and communication,1 global media journal,-1 global media journal : canadian edition,-1 global media journal australia,-1 global mental health,1 global nest international conference on environmental science & technology,-1 global nest journal,1 global networks: a journal of transnational affairs,2 global oriental,1 global partnership management journal,-1 global pediatric health,-1 global pediatrics,1 global performance studies,-1 global perspective on engineering management,-1 global perspectives,1 global perspectives on geography,-1 global philosophy,1 global policy,1 global political economy,1 global public health,1 global public policy and governance,1 global qualitative nursing research,2 global reproductive health,1 global responsibility,-1 global responsibility to protect,1 global science books,1 global security,1 global social policy,1 global society,1 global solutions journal,-1 global sourcing workshop,-1 global south development magazine,-1 global spine journal,1 global strategy journal,2 global studies of childhood,1 global sustainability,1 global telecoms business,1 global telemedicine and ehealth updates: knowledge resources,-1 global trade and customs journal,-1 global transitions,1 globalbiz research,-1 "globalisation, societies and education",1 globalisti,-1 globalization and health,1 globalization and its socio-economic consequences,-1 globalizations,2 globe law and business,1 glorian koti,-1 glorian ruoka & viini,-1 glosas,1 glossa,-1 glossa,1 glossa,2 glossa psycholinguistics,-1 glossae,-1 glossae,1 glossos,1 glot international,1 glotodidactica,-1 glotta: zeitschrift fur griechische und lateinische sprache,2 glottodidactica,1 glottopol,1 glottotheory,1 glq: a journal of lesbian and gay studies,2 gluteeniton elämä,-1 glycobiology,1 glycoconjugate journal,1 gms health technology assessment,1 gms medizin-bibliothek-information,1 gnomon: kritische zeitschrift fur die gesamte klassische altertumswissenschaft,2 god tid,-1 godel editorial,-1 goethe jahrbuch,1 goethe yearbook,1 gold bulletin,1 goldsmiths press,1 gompel & svacina,-1 gondolat,-1 gondwana research,3 gongcheng kexue xuebao,-1 good society,-1 goodfellow publishers limited,-1 gorbachev foundation,1 gordon & breach publishing group,1 gorgias press,1 gornyj žurnal,-1 gospodarka surowcami mineralnymi-mineral resources management,1 gosudarstvennaya polyarnaya akademiya,-1 gosudarstvennoe i munitsipal´noe upravlenija,1 gosudarstvennoe upravlenie,-1 gosudarstvenny`j institut russkogo yazy`ka im. a.s.pushkina,-1 gosudarstvo i pravo,1 "gosudarstvo, religiâ, cerkovʹ v rossii i za rubežom",-1 goteborg studies in conservation,1 gothenburg papers in theoretical linguistics,1 gothic studies,1 gotland university press,-1 gottinger forum fur altertumswissenschaft,1 gottingische gelehrte anzeigen,1 governance: an international journal of policy administration and institutions,3 government and opposition,2 government gazette,-1 government information quarterly,2 government population council,-1 gower,1 goya,1 gozdarski inštitut slovenije : silva slovenica,-1 göç dergisi,1 göttingen journal of international law,-1 gps solutions,2 gps world,1 gracewing,-1 grada publishing,-1 gradiva,1 graduate faculty philosophy journal,1 graduate institute publications,-1 graduate journal of asia-pacific studies,1 graeco-latina brunensia,1 graecolatina et orientalia,1 graefes archive for clinical and experimental ophthalmology,1 graellsia,1 grafia,-1 grafica composer,-1 grafisches zentrum htu gmbh,-1 gramarye,-1 gramma: journal of theory and criticism,1 grammateion,-1 grammatica e didattica,-1 grana,1 granular computing,1 granular matter,1 graphical models,1 graphics interface,1 graphis scripta,1 graphs and combinatorics,2 grasas y aceites,1 grass and forage science,1 grassland research,1 grassland science,1 gravitation and cosmology,1 grayling,-1 grazer beitrage,1 grazer linguistische studien,-1 grazer philosophische studien,2 građevinski fakultet sveučilišta u rijeci,-1 great lakes entomologist,1 great plains quarterly,1 greece and rome,2 "greek, roman and byzantine studies",2 "greek, roman, and byzantine studies: scholarly aids",-1 green analytical chemistry,1 green and smart mining engineering,-1 green and sustainable chemistry,-1 green chemical engineering,1 green chemistry,3 green chemistry letters and reviews,1 green energy & environment,1 green energy and sustainability,1 green finance,1 green letters,1 green lines instituto para o desenvolvimento sustentável,-1 green materials,-1 green processing and synthesis,1 green technologies and sustainability,1 "green technology, resilience, and sustainability",-1 "green, blue and digital economy journal",-1 greenhouse gases: science and technology,1 greenleaf publishing ltd,1 greenwood press,1 gregorianum,1 grenzgange: beitrage zu einer modernen romanistik,1 grey room,2 grey systems,-1 grif i k,-1 griffith law review,1 grifos,-1 gripla,1 grodnenskij gosudarstvennyj universitet imeni janki kupaly,-1 groniek,-1 groningen journal of international law,1 grotiana,1 ground water monitoring and remediation,1 groundwater,1 groundwater for sustainable development,1 group,1 group analysis,1 group and organization management,2 group decision and negotiation,1 group dynamics: theory research and practice,1 group processes and intergroup relations,2 groups geometry and dynamics,1 groupwork,1 growth and change,1 growth factors,1 growth hormone and igf research,1 grundlagen der germanistik,1 grundwasser,1 grupa vern,-1 grupo editorial kipus,-1 gruppendynamik und organisationsberatung,1 gruppenpsychotherapie und gruppendynamik,-1 gruppo di pisa,1 grur international,2 gränsløs,-1 gsa today,1 gsdi association,-1 gsi helmholtzzentrum für schwerionenforschung,-1 gstf international journal on computing,1 gstf journal of engineering technology,-1 gta verlag,1 guandong xuekan,-1 guangxi normal university press,-1 guangzi xuebao,-1 gudrun schröder verlag,-1 guerra,-1 guerres & histoire,-1 guerres mondiales et conflits contemporains,1 guide (national institute for health and welfare),-1 guidebook of the new mexico geological society,1 guidelines,-1 guidi paolo,-1 guilford publications,1 guillermo escolar editor,-1 guisuanyan xuebao,-1 gujizhui dongwu xuebao,1 gulf professional publishing,1 gumanitarnaja mysl juga rossii,-1 gumanitarnye i social’nye nauki,1 gumanitarnye nauki i obrazovanie,-1 gummerus,-1 gunneria,1 gunter narr verlag,1 guo jia jiao yu xing zheng xue yuan xue bao,1 guofang keji daxue xuebao,-1 gut,3 gut and liver,1 gut microbes,1 gut pathogens,1 guójì hànxué lùncóng,-1 gv executivo,-1 gvcasos,-1 gyancity journal of electronics and computer science,-1 gyancity journal of engineering and technology,-1 gyldendal,1 gyldendal akademisk,1 gyldendal juridisk,-1 gyldendal norsk forlag,1 gymnasium,-1 gymnasium,1 gynaecology forum,1 gynakologisch-geburtshilfliche rundschau,1 gynakologische endokrinologie,1 gynecologic and obstetric investigation,1 gynecologic oncology,2 gynecologic oncology research and practice,-1 gynecological endocrinology,1 gynecological surgery,1 gynecologie obstetrique et fertilite,1 gynecology & obstetrics case reports,-1 gyosa gyo-yug yeon-gu,-1 gyroscopy and navigation,1 gävle university press,-1 géneros,1 géolinguistique,-1 gériatrie et psychologie neuropsychiatrie du vieillissement,1 görres-druckerei und verlag,-1 göteborgs universitet,-1 göteborgs universitet institutionen för svenska språket,-1 göttinger miszellen,-1 gütersloher verlagshaus,1 h-net reviews,-1 h-soz-u-kult,-1 h:ström,-1 haaga-helia ammattikorkeakoulu,-1 haaga-helian julkaisut,-1 haagalainen,-1 haapavesi-lehti,-1 haapsalu ja läänemaa muuseumid,-1 haaste,-1 haava,-1 habaršy - a̋l-farabi atyndag̣y k̦azak̦ memlekettik ụlttyk̦ universiteti : himiâ seriâsy,-1 habaršy : zan̦ seriâsy,-1 habaršysy - a̋l-farabi atyndaġy k̦azak̦ memlekettik u̇lttyk̦ universitetì. fizika seriâsy,-1 habaršysy : èkonomika seriâsy,-1 habelt,1 habis,1 habitat international,1 hacettepe journal of mathematics and statistics,-1 hacettepe universitesi egitim fakultesi dergisi-hacettepe university journal of education,-1 hacettepe üniversitesi,-1 hackett publishing company,1 hacquetia,1 hadašwt `arke` wlwgiywt,1 hadronic journal,-1 hadtortenelmi kozlemenyek,1 hadtudomany,1 haematologica: the hematology journal,2 haemophilia,1 haeoe han-gukak doseogwan donghyang bogoseo,-1 haerbin gongcheng daxue xuebao,-1 haften for kritiska studier,1 hagiographica,1 hague journal on the rule of law,1 hahr: hispanic american historical review,3 hai-kustannus,-1 hakastarolainen,-1 hakehila,-1 hakkert,1 haksul daehoe nonmunjip,-1 halduskultuur - administrative culture,1 hallgren & fallgren,1 hallinnon tutkimuksen seura,-1 hallinnon tutkimus,2 hallym international journal of aging,1 halmstad university press,-1 ham - helsingin taidemuseon julkaisuja,-1 hamburg studies on multilingualism,1 hamburger edition his verlagsges,1 hamburger jahrbuch fur musikwissenschaft,1 hamburger journal für kulturanthropologie,-1 hamdard islamicus,1 hamk ammatillisen opettajakorkeakoulun julkaisuja,-1 hamk beat,-1 hamk unlimited : journal,-1 hamk unlimited : professional,-1 hamk unlimited : scientific,-1 hamkin e-julkaisuja,-1 hamkin julkaisuja,-1 hammaslääketieteen historian seura aurora,-1 hammasteknikko,-1 hamostaseologie,1 hampton press,1 hamsun-selskapets skriftserie,1 hamuli,-1 han'gug ga'jeong'gwa gyoyug haghoeji,-1 han'gug yangbong haghoeji,-1 han-guk cheoldo hakoe nonmunjip,-1 han-guk chojeondo jeoon-gonghakoe nonmunji,-1 han-guk eumseong hakoe ... haksul daehoe balpyo nonmunjip,-1 han-gukjawon-gonghakoeji,-1 hanagället,-1 hand,1 hand and microsurgery,-1 hand clinics,1 hand surgery & rehabilitation,1 hand therapy,1 handbook of experimental pharmacology,1 handbook of metal physics,1 handbook of oriental studies: section 1 the near and middle east,2 handbook of oriental studies: section 2 south asia,1 handbook of oriental studies: section 5 japan,1 handbook of oriental studies: section 8 uralic and central asian studies,1 handbook of pragmatics,-1 handbook of thermal analysis and calorimetry,1 handbook of translation studies,1 handbook on the physics and chemistry of rare earths,1 handbooks of management accounting research,1 "handbuch der orientalistiek. 3. abt., südost asien",1 "handbuch der orientalistik : 4. abt., china",1 handbuecher zur sprach- und kommunikationswissenschaft,1 handchirurgie mikrochirurgie plastische chirurgie,1 handelingen,1 handelingen van de koninklijke commissie voor toponymie en dialectologie,1 handelshøjskolens forlag,1 handelshøyskolen,-1 hang up,-1 hannaharendt.net,1 hans reitzels forlag,1 hansische geschichtsblatter,1 hapsc policy briefs series,-1 haramaya law review,1 harbin institute of technology,-1 harbour,-1 harbours review,-1 harcourt trade publishers,1 hardwarex,1 hardwood conference proceedings,-1 hardy-ramanujan journal,1 harjavallan kaupunki,-1 harm reduction journal,1 harmful algae,1 harpercollins publishers,1 harrassowitz verlag,2 hart publishing,2 hartung-gorre,-1 harvard business review,1 harvard business review türkiye,-1 harvard civil rights-civil liberties law review,2 harvard data science review,-1 harvard design magazine,1 harvard educational review,3 harvard environmental law review,1 harvard human rights journal,1 harvard international law journal,3 harvard international review,1 harvard journal of asiatic studies,2 harvard journal of law and gender,1 harvard journal of law and public policy,1 harvard journal of law and technology,1 harvard journal on legislation,1 harvard kennedy school misinformation review,-1 harvard law review,3 harvard library bulletin,1 harvard negotiation law review,1 harvard oriental series,1 harvard review of psychiatry,1 harvard studies in classical philology,3 harvard theological review,3 harvard ukrainian research institute,-1 harvard ukrainian studies,1 harvard university press,3 harvey miller publishers,1 harvey whitney books,1 haseltonia,1 haser,1 hashi,-1 haskins society journa l: studies in medieval history,1 hastings center report,1 hastings law journal,1 hatje cantz,1 hattoria,1 hau: journal of ethnographic theory,2 haupt verlag,1 hautarzt,1 hawaii international conference on system sciences,1 haworth press,1 hawwa,1 haymarket books,-1 haz es ember,1 hazardous waste consultant,1 hbl junior,-1 hbrc journal,-1 hci korea,-1 head & face medicine,1 head and neck pathology,1 head and neck: journal for the sciences and specialties of the head and neck,3 headache,2 health,-1 health,1 health affairs,2 health and environment,-1 health and human rights,1 health and place,2 health and population: perspectives and issues,1 health and quality of life outcomes,1 health and social care chaplaincy,1 health and social care delivery research,-1 health and social care in the community,1 health and social work,1 health and technology,1 health behavior and policy review,1 health care analysis,2 health care for women international,1 health care management review,2 health care management science,3 health communication,1 health economics,2 health economics review,1 "health economics, policy and law",2 health education,1 health education and behavior,1 health education journal,1 health education research,1 health equity,-1 health expectations,1 health informatics journal,1 health information and libraries journal,1 health information management journal,1 health information science and systems,1 health literacy research and practice,1 health marketing quarterly,1 health physics,1 health policy,2 health policy and development,1 health policy and planning,2 health policy and technology,1 health professions education,1 health promotion & physical activity,-1 health promotion international,1 health promotion journal of australia,1 health promotion practice,1 health psychology,3 health psychology and behavioral medicine,1 health psychology bulletin,1 health psychology open,1 health psychology research,1 health psychology review,2 health reports,-1 health research policy and systems,2 health risk and society,1 health science reports,1 health sciences investigations journal,-1 health sciences review,-1 health services and outcomes research methodology,1 health services insights,1 health services management research,1 health services research,3 health services research and managerial epidemiology,1 health sociology review issn,1 health systems,1 health systems in transition,-1 health technology assessment,1 "health, interprofessional practice and education",-1 "health, technology and society",3 healthcare,-1 healthcare analytics,1 healthcare design,-1 healthcare informatics research,1 healthcare technology letters,1 healthmanagement.org : the journal,-1 healthmed,-1 healthy aging & clinical care in the elderly,1 hearing research,2 "hearing, balance and communication",1 heart,2 heart and lung,1 heart and mind,-1 heart and vessels,1 heart failure reviews,1 heart lung and circulation,1 heart rhythm,1 heart rhythm o2,1 heart surgery forum,1 "heart, lung and vessels",-1 heartrhythm case reports,-1 hearts,-1 heat and mass transfer,1 heat transfer engineering,1 heat transfer research,1 heat transfer: asian research,1 hebrew bible and ancient israel,2 hebrew language and literature series,1 hebrew studies,1 hebrew union college annual,1 hebrew union college press,-1 hec forum,1 hedmark fylkeskommune,-1 hefte des archaologischen seminars bern,1 hegel bulletin,1 hegel-jahrbuch,1 hegel-studien,2 hegesztéstechnika,-1 hehkuva hiillos,-1 heibonsha,-1 heidegger studies,1 heidegger-jahrbuch,1 heidelberg press,1 heidelberg university,-1 heidelberger akademie der wissenschaften,1 heijnenkoelink,-1 heilongjiang daxue ziran kexue xuebao,-1 heimen,1 heine-jahrbuch,1 heinemann,1 hejubian yu dengliziti wuli,-1 helbing lichtenhahn,-1 helbling verlagsgesellschaft,-1 helen hamlyn centre for design,1 helgoland marine research,1 helicobacter,1 helikon,-1 helikon,1 helion & company,-1 helios,1 helix,-1 heliyon,-1 hellas: a journal of poetry and the humanities,1 hellenic centre,-1 hellenic folkore research centre,-1 hellenic journal of cardiology,1 "hellenic journal of music, education and culture",1 hellenic journal of nuclear medicine,1 hellenic journal of psychology,1 hellenic maintenance society,-1 hellenic open university,-1 hellenic open university journal of informatics,-1 helmi,-1 helminthologia,1 helsingin ekonomi,-1 helsingin hovioikeus,-1 helsingin ja uudenmaan sairaanhoitopiiri,-1 helsingin kaupungin keskushallinnon julkaisuja,-1 helsingin kaupungin pelastuslaitoksen julkaisuja,-1 helsingin kaupunginmuseo,-1 helsingin kaupunki,-1 helsingin pitäjä - vantaa,-1 helsingin psykoterapiayhdistys ry,-1 helsingin reservin sanomat,-1 helsingin sanomat,-1 helsingin seudun kauppakamari,-1 helsingin seudun liikenne -kuntayhtymä,-1 helsingin seudun sotaveteraani,-1 helsingin uutiset,-1 helsingin yliopisto,-1 helsingin yliopiston hallinnon julkaisuja : raportit ja selvitykset,-1 helsingin yliopiston koulutuksen arviointikeskus hean raportit,-1 helsingin yliopiston maantieteen laitoksen julkaisuja ja raportteja,-1 helsingin yliopiston metsätieteiden laitoksen julkaisuja,-1 helsingin yliopiston slavistiikan ja baltologian laitoksen opetusmonisteita,-1 helsinki law review,-1 helsinki review of global governance,-1 helsinki university press,1 helsinki yearbook of intellectual history,1 helsinki-kirjat oy,-1 helsus policy brief,-1 helvetica chimica acta,1 hem och skola,-1 hemasphere,1 hematological oncology,1 hematologie,1 hematology,1 hematology reports,-1 hematology-oncology clinics of north america,1 hemecht : zeitschrift für luxemburger geschichte,1 hemijska industrija,1 hemingway review,1 hemodialysis international,1 hemoglobin,1 hempen verlag,1 hemåt,-1 hendrickson publishers,1 hengitys,-1 henki,-1 henki & elämä,-1 henoch,1 henry james review,1 hepatitis monthly,-1 hepato-gastro et oncologie digestive,1 hepato-gastroenterology,1 hepatobiliary and pancreatic diseases international,1 hepatobiliary surgery and nutrition,1 hepatology,3 hepatology communications,1 hepatology international,1 hepatology research,1 hephaistos,1 herald of the russian academy of sciences,1 heraldisk tidsskrift,1 herbert von halem verlag,1 herd: health environments research and design journal,1 herder editrice e libreria,1 herder verlag,1 herder-institut e.v.,1 hereditary cancer in clinical practice,1 hereditas,1 heredity,2 heriot-watt university,-1 heritage,-1 heritage & society,1 heritage language journal,1 herito,-1 hermann,1 hermathena,1 hermeneus: revista de traduccion,1 hermes,-1 hermes,1 hermes academic publishing and bookshop a/s,1 hermes science publications,1 hermes: journal of language and communication in business,1 hermes: zeitschrift fur klassische philologie,3 hermolla,-1 herne,-1 hernia,1 heroin addiction and related clinical problems,1 heroism science,-1 heros,-1 herpetologica,1 herpetological conservation and biology,1 herpetological journal,1 herpetological monographs,1 herpetological review,1 herpetology notes,-1 herpetozoa,1 hertervig forlag,-1 hertfordshire archaeology and history,1 hervormde teologiese studies,1 herz,1 herzog august bibliothek,-1 herzogia,1 herzogiella,-1 herzschrittmachertherapie und elektrophysiologie,1 hesperia,2 hessische blatter fur volks- und kulturforschung,1 heteroatom chemistry,1 heterocycles,1 heterocyclic communications,1 hethitica,1 heti journal : international research and practice,-1 hetkinen raamatun lukemiseen,-1 hevosenomistaja,-1 hevosmaailma,-1 hevosurheilu,-1 heythrop journal: a quarterly review of philosophy and theology,1 hidrobiologica,1 hieroja,-1 hieronymus complutensis,1 hiersemann,-1 hifimaailma,-1 high ability studies,1 high altitude medicine and biology,1 high blood pressure and cardiovascular prevention,1 high energy chemistry,1 high energy density physics,1 high frequency,1 high performance polymers,1 high power laser and particle beams,-1 high power laser science and engineering,1 high pressure research,1 high temperature,1 high temperature corrosion of materials,1 high temperature material processes,1 high temperature materials and processes,1 high temperatures - high pressures,1 high voltage,1 higher education,1 higher education,3 higher education abstracts,-1 higher education dynamics,1 higher education for the future,1 higher education forum,-1 higher education governance and policy,-1 higher education in europe,1 higher education policy,1 higher education press,-1 higher education quarterly,1 higher education research and development,2 higher education review,1 higher education studies,-1 "higher education, skills and work-based learning",-1 higher school of economics,-1 higher-order and symbolic computation,1 highlights & insights on european taxation,-1 highlights of sustainability,1 hightech and innovation journal,1 hiihto,-1 hiisi,-1 hiiskuttua,-1 hikaku h?gaku,-1 hikuin,-1 hiljainen seurakunta,-1 hiljaisuuden ystävät,-1 himalayan discoveries,-1 himalayan geology,1 himalayan linguistics,1 hindawi publishing corporation,1 hinterland,-1 hip international,1 hiperboreea,1 hipertext.net,1 hiphil novum,-1 hipo tesis,-1 hipotesis,1 hippiäinen,-1 hippocampus,1 hippokrates,1 hippokratia,-1 hippos,-1 hipputeos oy,-1 hiroshima journal of mathematics education,1 hiroshima mathematical journal,1 hirundo,-1 hispamerica: revista de literatura,1 hispania antiqua,1 hispania sacra,1 hispania: a journal devoted to the teaching of spanish and portuguese,1 hispania: revista espanola de historia,1 hispanic journal,1 hispanic journal of behavioral sciences,-1 hispanic research journal: iberian and latin american studies,1 hispanic review,3 hispanofila,1 histochemistry and cell biology,1 histoire culturelle de l'europe,-1 histoire de lart,1 histoire des sciences medicales,1 histoire epistemologie langage,1 histoire et civilisation du livre,1 histoire et mesure,1 histoire et societes,1 histoire et societes rurales,1 histoire medievale et archeologie,1 histoire sociale-social history,2 histoire urbaine,1 "histoire, economie et societe",1 histoires litteraires,1 histology and histopathology,1 histopathology,2 historein,1 historia,1 historia agraria,1 historia ciencias saude-manguinhos,1 historia constitucional,1 historia contemporanea,1 historia critica,2 historia de la educación,-1 historia et ius,1 historia mathematica,3 historia mexicana,2 historia mirabilis,1 historia national geographic,-1 historia nyt!,-1 historia scientiarum,1 historia social,1 historia y comunicacion social,1 historia y politica,2 "historia, antropologia y fuentes orales",1 historia: santiago,2 historia: zeitschrift fur alte geschichte,2 historiallinen aikakauskirja,2 historiallinen arkisto,1 historiallis-yhteiskuntatiedollisen kasvatuksen tutkimus- ja kehittämiskeskuksen julkaisuja,-1 historiallis-yhteiskuntatiedollisen kasvatuksen tutkimus- ja kehittämiskeskuksen tutkimuksia,-1 historiallisia tutkimuksia,2 historian,1 historic brass society journal,1 historic environment,1 historica,1 historical archaeology,2 historical biology,1 historical encounters,2 historical journal,3 historical journal of film radio and television,2 historical journal of japan,1 historical life course studies,1 historical materialism: research in critical marxist theory,1 historical metallurgy,1 historical methods,3 historical records of australian science,1 historical reflections-reflexions historiques,1 historical research,2 historical review : la revue historique,1 historical social research-historische sozialforschung,1 historical sociolinguistics and sociohistorical linguistics,1 historical studies in industrial relations,1 historical studies in the natural sciences,2 historicky casopis,1 historická demografie,1 historická sociologie,-1 histories,-1 histories of people and place,1 historiographia linguistica,2 "historische anthropologie: kultur, gesellschaft, alltag",1 historische sozialforschung,1 historische sprachforschung,3 historische zeitschrift,3 historisches jahrbuch,2 historisk tidskrift (denmark),2 historisk tidskrift (sweden),2 historisk tidskrift för finland,2 historisk tidsskrift (norway),2 historiska media,1 historiska museets förlag,1 historiska och litteraturhistoriska studier,1 historiskan,-1 history,3 history and anthropology,3 history and memory: studies in representation of the past,3 history and philosophy of logic,2 history and philosophy of the life sciences,1 history and technology,2 history and theory,3 history australia,1 history compass,1 history education research journal,1 history in africa,2 history in flux,1 history journal: researches,1 history of computing conference,-1 history of economic ideas,1 history of economics review,1 history of education,2 history of education and childrens literature,1 history of education quarterly,1 history of education review,1 history of european ideas,2 history of geo- and space sciences,1 history of humanities,1 history of intellectual culture,1 history of pharmacy and pharmaceuticals,1 history of philosophy & logical analysis,1 history of philosophy quarterly,2 history of photography,3 history of political economy,1 history of political thought,2 history of psychiatry,1 history of psychology,1 history of religions,3 history of retailing & consumption,1 history of science,2 history of technology,1 history of the family,3 history of the human sciences,2 history of the present,1 history of universities,1 history of warfare,2 history teacher,1 history today,-1 history workshop journal,3 histos,1 histórica,1 histria archaeologica,1 história da historiografia,1 hitachi review,1 hito to shizen,-1 hitotsubashi journal of economics,1 hitsaustekniikka,-1 hiv clinical trials,1 hiv medicine,1 hið íslenska bókmenntafélag,1 hla,1 hlife,-1 hm studies and publishing,-1 hno,1 hnps advances in nuclear physics,-1 hobbes studies,1 hochparterre,-1 hochschule anhalt,-1 hochschule für angewandte wissenschaften münchen,-1 hochschule für technik und wirtschaft des saarlandes,-1 hodder & stoughton,1 hofmannsthal jahrbuch zur europaeischen moderne,1 hogeschool utrecht kenniscentrum technologie,-1 hogrefe,1 hoitotiede,1 hoitotieteen laitoksen julkaisusarja,-1 hokkaido mathematical journal,1 hokkaido university,-1 hokkaidou daigaku kyoushoku katei nempou,-1 holistic archive,-1 holistic nursing practice,1 holistic science publications,-1 holkki,-1 hollitzer wissenschaftsverlag,-1 hollolan kunta,-1 hollolan sanomat,-1 holmi,-1 holocaust and genocide studies,2 holocaust studies,1 holocaust studies series,1 holocene,1 holzforschung,1 home cultures,1 home health care management and practice,1 home health care services quarterly,1 homeopathy,1 homicide studies,1 homme: revue francaise d'anthropologie,2 homme: zeitschrift fur feministische geschichtswissenschaft,1 homo ludens,-1 homo oeconomicus,1 homo: journal of comparative human biology,1 homology homotopy and applications,1 homonoia,1 hona il lil nashr wal tawzi,-1 hong duc publishing house,-1 hong kong journal of dermatology & venereology,-1 hong kong journal of emergency medicine,1 hong kong journal of mental health,-1 hong kong journal of occupational therapy,1 hong kong journal of paediatrics,1 hong kong journal of social work,1 hong kong law journal,1 hong kong polytechnic university,-1 hong kong society for transportation studies,-1 hong kong university press,1 hongwai yu jiguang gongcheng,-1 honoré champion,2 hopkins quarterly,1 hopos,1 hoppo gengo kenkyu,-1 hoppou jimbun kenkyuu,-1 horisont,-1 horizon : fenomenologiceskie issledovaniâ,1 horizons,1 horizons in biblical theology,1 hormone and metabolic research,1 hormone molecular biology and clinical investigation,1 hormone research in paediatrics,1 hormones,1 hormones and behavior,1 horn of africa bulletin,-1 horos,1 horticultura brasileira,1 horticulturae,-1 horticultural reviews,1 horticultural science,1 horticulture environment and biotechnology,1 horticulture research,2 hortscience,1 horttechnology,1 hortus artium mediaevalium,1 horyzonty polityki,1 horyzonty wychowania,-1 hospital healthcare europe,-1 hospital imaging & radiology europe,-1 hospital pediatrics,1 hospital pharmacy,1 hospital pharmacy europe,-1 hospitality and society,1 hotus-hoitosuositus,1 houille blanche: revue internationale de l'eau,1 housing finance international,-1 housing policy debate,1 housing studies,2 "housing, care and support",1 "housing, theory and society",1 houston journal of international law,1 houston journal of mathematics,1 howard journal of communications,1 howard journal of criminal justice,1 hpb,1 hpb surgery,1 hr viesti,-1 hrb open research,-1 hrvatska i komparativna javna uprava,-1 hrvatska revija za rehabilitacijska istrazivanja,1 hrvatska sveucilisna naklada,1 hrvatski casopis za odgoj i obrazovanje,-1 hrvatski filmski ljetopis,-1 hrvatsko nuklearno društvo,-1 hs teema,-1 hsoa journal of aquaculture & fisheries,-1 hssh reports and working papers,-1 hsy,-1 huagang yingyu qikan,-1 huanan nongye daxue xuebao,-1 huanjing kexue,-1 huanjing kexue xuebao,-1 huaxia publishing house,-1 huazhong university of science and technology press,-1 hub,-1 hubei meishu xueyuan xuebao,-1 hucitec editora,-1 hudebni veda,1 hudson review,1 hufvudstadsbladet,-1 hugo valentin-centrum,-1 hugoye: journal of syriac studies,1 hugur,1 huimapyörä,-1 huippu-urheilu-uutiset,-1 human affairs,1 human and ecological risk assessment,1 human and experimental toxicology,1 human antibodies,1 human arenas,1 human behavior and emerging technologies,1 human biology,1 human brain mapping,2 human cell,1 human communication & technology,1 human communication research,3 human communication: a journal of the pacific and asian communication association,-1 human computation,1 human development,1 human dimensions of wildlife,1 human ecology,1 human ecology review,1 human ecology: an interdisciplinary journal,2 human evolution,1 human factors,2 human factors and ergonomics in manufacturing and service industries,1 human factors and ergonomics journal,-1 human factors in design,1 human fertility,1 human gene,1 human gene therapy,1 human gene therapy : methods,1 human gene therapy. clinical development,1 human genetics,1 human genetics and genomics advances,1 human genomics,1 human geography,1 human heredity,1 human immunology,1 human it: tidskrift för studier av it ur ett humanvetenskapligt perspektiv,1 human kinetics publishers,1 human microbiome journal,-1 human molecular genetics,2 human movement,1 human movement science,1 human mutation,2 human nature: an interdisciplinary biosocial perspective,1 human organization,2 human pathology,1 human performance,1 human physiology,1 human psychopharmacology: clinical and experimental,1 human relations,3 human reproduction,3 human reproduction open,-1 human reproduction update,3 human resource development international,1 human resource development quarterly,1 human resource development review,1 human resource management,3 human resource management journal,2 human resource management review,2 human resources for health,3 human rights education review,1 human rights in development,1 human rights law journal,1 human rights law review,2 human rights quarterly,2 human rights review,1 human security,-1 "human service organizations : management, leadership & governance",1 human studies,2 human systems,1 human systems management,1 human technology,1 human vaccines & immunotherapeutics,1 human-centric computing and information sciences,1 human-computer interaction,3 human-intelligent systems integration,1 human-machine communication journal,1 human-wildlife interactions,1 humana press,1 humana.mente,1 humanetten,1 humanimalia,1 humanisti,-1 humanistic management journal,1 humanistica,1 humanistica lovaniensia: journal of neo-latin studies,2 humanistilehti,-1 humanistinen ammattikorkeakoulu : julkaisuja,-1 humanities,-1 humanities & social sciences communications,1 humanities and social sciences,-1 humanities and social sciences letters,-1 humanities and social sciences review,-1 humanities australia,-1 humanity,1 humanity & society,1 humanity books,1 humanity in action press,-1 hume studies,2 humor,1 hunan daxue xuebao,-1 hunar-i zabān,1 hungarian academy of sciences centre for energy research,-1 hungarian educational research journal,1 hungarian geographical bulletin,1 hungarian historical review,1 hungarian journal of english and american studies,1 hungarian journal of industrial chemistry,1 hungarian journal of legal studies,1 hungarian quarterly,1 hungarian studies,1 hungarian studies yearbook,1 hungarian yearbook of international law and european law,1 hungarologiai közlemenyek,1 hunter gatherer research,1 huoltaja-säätiö,-1 hupo kexue,-1 hurst publishers,1 husserl studies,3 hvmanitas,1 hybrid,-1 hybrid advances,1 hybrid coe research report,-1 hybrid coe strategic analysis,-1 hybrida,1 hybris,-1 hybris : revista de filosofía,1 hydro review: the magazine of the north american hydroelectric industry,1 hydrobiologia,2 hydrobiology,-1 hydrocarbon processing,1 hydrogen,-1 hydrogeology journal,1 hydrological processes,1 hydrological sciences journal-journal des sciences hydrologiques,1 hydrologie und wasserbewirtschaftung,1 hydrology,-1 hydrology and earth system sciences,2 hydrology and earth system sciences discussions,-1 hydrology research,1 hydrometallurgy,2 hyean publishing,1 hygiea internationalis,1 hygiene,-1 hygiene and environmental health advances,-1 hyle,1 hymnologi,1 hymnologian ja liturgiikan seura,-1 hymnos,1 hypatia,3 hyperboreus,1 hyperfine interactions,1 hyperion international journal of econophysics and new economy,-1 hypertension,2 hypertension in pregnancy,1 hypertension research,1 hyphen press,1 hypoxia,1 hystrix: italian journal of mammalogy,1 hyte-toimintamalli,-1 hyvä selkä,-1 hyvä terveys,-1 hyönteistarvike tibiale oy,-1 hànxué yánjiu,-1 háskólaútgáfan,-1 háskóli íslands,-1 hämeen ammattikorkeakoulu,-1 hämeen heimoliitto ry,-1 hämeen sanomat,-1 hämeenlinnan kaupunki,-1 hämeenlinnan kaupunkiuutiset,-1 högre utbildning,1 högskolan dalarna,-1 högskolan i borås,-1 högskolan kristianstad,-1 högskolan väst,-1 høgskolen i oslo og akershus,-1 høyskoleforlaget,1 i quaderni del m.ae.s,1 i rågens och fjärdarnas rike,-1 i tatti studies,1 i-com,-1 i-land journal,-1 i-managers journal of education technology,-1 i-manager’s journal on management,-1 i-perception,1 i-tech education and publishing kg,1 i.b. tauris,1 i/c,1 "i2ads : instituto de investigação em arte, design e sociedade",-1 i6doc.com,-1 iab workshop on internet technology adoption and transition,-1 iab/irtf workshop on congestion control for interactive real-time communication,-1 "iac online journal, cio and digital innovation",-1 iacr communications in cryptology,1 iacr transactions on cryptographic hardware and embedded systems,1 iacr transactions on symmetric cryptology,1 iadis international journal on computer science and information system,-1 iadis international journal on www/internet,1 iadis press,-1 iaee energy forum,-1 iaee international conference,-1 iaes international journal of artificial intelligence,1 iafor international conference on education : official conference proceedings,-1 iafor journal of arts and humanities,-1 iah bulletin,-1 iahr international symposium on ice,1 iahs press,1 iaq conference,-1 iara,1 iarc scientific publications,-1 iaria xps press,-1 iartem,1 iartem journal,-1 iasa journal,-1 iaspm@journal,1 iassist quarterly,1 iasted international conference on computers and advanced technology in education,-1 iasted international conference on modelling and simulation,-1 "iasted international conference on signal processing, pattern recognition and applications",-1 iasted international conference on web-based education,-1 iated academy,-1 iatefl,-1 iatefl slovenia newsletter,-1 iatefl voices,-1 iatss research,1 iawa journal,1 ibadan journal of english studies,-1 ibai-publishing,-1 ibd,-1 iberia,1 iberialais-amerikkalainen säätiö,-1 iberica,2 ibero-american symposium on project approaches in engineering education,-1 iberoamericana,1 iberoamericana vervuert,1 iberoromania,2 ibfd,1 ibidem-verlag,1 ibima business review,-1 ibis,-1 ibis,1 ibm journal of research and development,1 ibro neuroscience reports,1 ibsen studies,2 ibunka komyunikeshon,-1 ibusiness,-1 icaart,-1 icame journal,1 icar technical series,-1 icaria editorial,-1 icarus,1 icas proceedings,-1 icccbe2016 organizing committee,1 ice publishing,1 iceis,-1 iceland's arctic council chairmanship,-1 icelandic agricultural sciences,1 icelandic geotechnical society,-1 iceri proceedings,-1 ices cooperative research report,-1 ices journal of marine science,1 icfai university press,1 icga journal,1 ichnos,1 ichthyological exploration of freshwaters,1 ichthyological research,1 ichthyology & herpetology,1 icic express letters,1 icic express letters part b : applications,1 icinco,-1 icissp,-1 icmsa,-1 ico iconographisk post,1 icoana credinţei,-1 icofom study series,1 icom-cc newsletter working group textiles,-1 icomosin suomen osasto ry,-1 icon,1 icon : the institute of conservation,1 icon: international journal of constitutional law,3 icon: journal of the international committee for the history of technology,1 iconcept press,1 iconference,1 iconographica : rivista di iconografia medievale e moderna,1 iconos : revista de ciencias sociales,1 icse workshop on cooperative and human aspects on software engineering,1 icsid review,1 icst transaction on security and safety,-1 icst transactions on ambient systems,-1 icst transactions on energy web,-1 icst transactions on mobile communications and applications,1 icst transactions on ubiquitous environments,-1 ict express,-1 ict4awe,-1 ictact journal on communication technology,-1 ictact journal on image and video processing,-1 ictact journal on management studies,-1 ictact journal on microelectronics,-1 ictact journal on soft computing,-1 icu management,-1 id&a interaction design & architecture(s),1 idea,1 idealistic studies,1 ideas in ecology and evolution,1 ideas in history,1 ideas sónicas / sonic ideas,-1 ideas y valores,1 ideação,-1 ideggyogyaszati szemle-clinical neuroscience,1 ideias,-1 "idensitat, associació d'art contemporani",-1 identities,-1 identities: global studies in culture and power,2 identity,1 ideology and politics journal,1 idiootti,-1 idojaras,1 idrc books,1 "idrott, historia och samhälle",1 idrottsforum.org,1 idrugs,1 idryma onasi : stegi grammaton kai technon,-1 ids bulletin: institute of development studies,1 idäntutkimus,1 iee control engineering series,1 ieee,1 ieee 5g world forum,1 ieee access,1 ieee aerospace and electronic systems magazine,1 ieee aerospace conference,-1 ieee annals of the history of computing,1 ieee antennas and propagation magazine,2 ieee antennas and wireless propagation letters,2 ieee asia-pacific conference on antennas and propagation,1 ieee bits,1 ieee circuits and systems magazine,2 ieee cloud computing,1 ieee communications letters,2 ieee communications magazine,2 ieee communications society,1 ieee communications standards magazine,1 ieee communications surveys and tutorials,2 ieee computational intelligence magazine,1 ieee computer architecture letters,-1 ieee computer graphics and applications,2 ieee computer society annual symposium on vlsi,1 ieee computer society conference on computer vision and pattern recognition,2 ieee computer society conference on computer vision and pattern recognition workshops,1 ieee computer society press,1 ieee conference on business informatics,-1 ieee conference on computer communications,2 ieee conference on computer communications workshops,1 ieee conference on games,1 ieee conference on industrial electronics and applications,1 ieee conference on norbert wiener in the 21st century,-1 "ieee conference on robotics, automation and mechatronics",1 ieee conference on standards for communications and networking,1 ieee conference on virtual reality and 3d user interfaces,1 ieee conference publication,1 ieee consumer communications and networking conference,1 ieee consumer electronics magazine,2 ieee control systems letters,1 ieee control systems magazine,2 ieee data descriptions,1 ieee design and test,2 ieee distributed systems online,1 ieee electrical insulation conference,-1 ieee electrical insulation magazine,2 ieee electrification magazine,1 ieee electromagnetic compatibility magazine,1 ieee electron device letters,2 ieee embedded systems letters,1 ieee energy conversion congress and exposition,1 ieee engineering management review,1 ieee european symposium on security and privacy workshops,1 ieee forum on integrated and sustainable transportation systems,-1 "ieee games, entertainment, media conference",1 ieee geoscience and remote sensing letters,1 ieee geoscience and remote sensing magazine,2 ieee global communications conference,1 ieee global engineering education conference,1 ieee globecom workshops,1 ieee green technologies conference,-1 ieee haptics symposium,1 ieee industrial electronics magazine,2 ieee industry applications magazine,1 ieee instrumentation and measurement magazine,1 ieee intelligent systems,2 ieee intelligent transportation systems magazine,2 ieee international conference of electron devices and solid-state circuits,-1 ieee international conference on advanced learning technologies,1 ieee international conference on antenna measurements and applications,-1 "ieee international conference on application-specific systems, architectures, and processors",1 ieee international conference on automated software engineering,2 ieee international conference on automatic face & gesture recognition and workshops,1 ieee international conference on automation science and engineering,1 ieee international conference on blockchain,-1 ieee international conference on broadband network and multimedia technology,-1 ieee international conference on circuits and systems,1 ieee international conference on cloud computing,1 ieee international conference on cluster computing,1 ieee international conference on cognitive infocommunications,-1 ieee international conference on communication systems,-1 ieee international conference on communication technology,-1 ieee international conference on communications,1 ieee international conference on communications workshops,-1 ieee international conference on computational photography,1 ieee international conference on computer as a tool,-1 ieee international conference on computer vision,3 ieee international conference on computer vision workshops,1 ieee international conference on condition monitoring and diagnosis,1 ieee international conference on consumer electronics - berlin,-1 ieee international conference on control and automation,-1 "ieee international conference on control system, computing and engineering",-1 ieee international conference on cyber-physical-social computing,-1 ieee international conference on data engineering workshop,-1 ieee international conference on data mining,2 ieee international conference on data mining workshops,-1 ieee international conference on dc microgrids,-1 "ieee international conference on dependable, autonomic and secure computing",1 ieee international conference on development and learning,-1 ieee international conference on dielectrics,1 ieee international conference on digital ecosystems and technologies,-1 ieee international conference on digital game and intelligent toy enhanced learning,1 ieee international conference on e-science,-1 ieee international conference on edge computing,1 ieee international conference on emerging elearning technologies and applications,-1 "ieee international conference on engineering, technology and innovation",1 ieee international conference on flexible and printable sensors and systems,1 ieee international conference on global software engineering workshops,1 ieee international conference on high performance switching and routing,1 ieee international conference on ic design and technology,-1 ieee international conference on industrial cyber physical systems,1 ieee international conference on industrial engineering and engineering management,-1 ieee international conference on industrial informatics,1 ieee international conference on industrial technology,1 ieee international conference on information science and technology,-1 ieee international conference on intelligent computer communication and processing,-1 "ieee international conference on internet of things and ieee green computing and communications and ieee cyber, physical and social computing and ieee smart data",1 ieee international conference on internet of things and intelligence system,1 ieee international conference on mechatronics,-1 ieee international conference on microelectronic systems education,-1 ieee international conference on mobile ad-hoc and sensor systems,1 ieee international conference on multimedia and expo,1 ieee international conference on multimedia and expo workshops,1 ieee international conference on nano/micro engineered and molecular systems,-1 ieee international conference on network infrastructure and digital content,-1 ieee international conference on networks,1 "ieee international conference on numerical electromagnetic modeling and optimization for rf, microwave, and terahertz applications",-1 ieee international conference on opensource systems and technologies,-1 ieee international conference on pervasive computing and communications,2 ieee international conference on pervasive computing and communications workshops,1 ieee international conference on photonics,1 ieee international conference on power system technology,-1 ieee international conference on rehabilitation robotics,1 ieee international conference on rfid-technologies and applications,-1 ieee international conference on robotics and automation,2 ieee international conference on robotics and biomimetics,1 ieee international conference on serious games and applications for health,1 ieee international conference on service-oriented computing and applications,1 ieee international conference on signal and image processing applications,-1 "ieee international conference on signal processing, computing and control",-1 ieee international conference on smart communities,1 ieee international conference on smart computing,1 ieee international conference on smart energy grid engineering,-1 ieee international conference on smart grid and smart cities,1 ieee international conference on software architecture,2 "ieee international conference on software quality, reliability and security",1 "ieee international conference on software testing, verification and validation workshops",1 ieee international conference on standardisation and innovation in information technology,-1 ieee international conference on system engineering and technology,-1 "ieee international conference on systems, man, and cybernetics",1 "ieee international conference on thermal, mechanical and multi-physics simulation and experiments in microelectronics and microsystems",-1 "ieee international conference on trust, security and privacy in computing and communications",1 "ieee international conference on wireless and mobile computing, networking, and communications",1 ieee international conference on wireless for space and extreme environments conference digest,1 ieee international energy conference,-1 ieee international enterprise distributed object computing conference workshops,-1 ieee international frequency control symposium,-1 ieee international fuzzy systems conference proceedings,1 ieee international geoscience and remote sensing symposium proceedings,1 ieee international instrumentation and measurement technology conference,1 ieee international inter-disciplinary conference on cognitive methods in situation awareness and decision support,-1 ieee international microwave workshop series on rf and wireless technologies for biomedical and healthcare applications,-1 ieee international multitopic conference,-1 ieee international new circuits and systems conference,1 ieee international requirements engineering conference workshops,-1 ieee international smart cities conference,-1 ieee international solid-state circuits conference,2 ieee international symposium on applied machine intelligence and informatics,-1 ieee international symposium on broadband multimedia systems and broadcasting,1 ieee international symposium on circuits and systems proceedings,1 ieee international symposium on computational intelligence and informatics,-1 ieee international symposium on electromagnetic compatibility,-1 ieee international symposium on information theory,1 ieee international symposium on nanoscale architectures,-1 "ieee international symposium on personal, indoor, and mobile radio communications workshops",1 ieee international symposium on power electronics for distributed generation systems,-1 "ieee international symposium on precision clock synchronization for measurement, control, and communication",-1 ieee international symposium on sensorless control for electrical drives,-1 ieee international symposium on sustainable systems and technology,-1 ieee international symposium on wearable computers,1 ieee international symposium on web systems evolution,1 ieee international symposium on wireless pervasive computing,1 ieee international ultrasonics symposium,1 ieee international working conference on mining software repositories,1 ieee international workshop on genomic signal processing and statistics,-1 ieee international workshop on intelligent data acquisition and advanced computing systems,-1 ieee international workshop on machine learning for signal processing,1 ieee international workshop on measurements and networking,-1 ieee international workshop on multimedia signal processing,1 ieee international workshop on signal processing advances in wireless communications,1 ieee international workshop on signal processing systems,1 "ieee international workshop on trust and identity in mobile internet, computing and communications",-1 ieee internet computing,3 ieee internet of things journal,2 ieee internet of things magazine,1 ieee iranian conference on electrical engineering,-1 ieee ismar joint workshop on tracking methods and applications and trakmark,-1 ieee joint intelligence and security informatics conference,-1 ieee jordan conference on applied electrical engineering and computing technologies,-1 ieee journal of biomedical and health informatics,2 "ieee journal of electromagnetics, rf and microwaves in medicine and biology",1 ieee journal of emerging and selected topics in industrial electronics,1 ieee journal of emerging and selected topics in power electronics,2 ieee journal of indoor and seamless positioning and navigation,1 ieee journal of microwaves,1 ieee journal of oceanic engineering,1 ieee journal of photovoltaics,2 ieee journal of quantum electronics,2 ieee journal of radio frequency identification,1 ieee journal of selected areas in sensors,1 ieee journal of selected topics in applied earth observations and remote sensing,1 ieee journal of selected topics in quantum electronics,2 ieee journal of selected topics in signal processing,3 ieee journal of solid-state circuits,3 ieee journal of the electron devices society,2 ieee journal of translational engineering in health and medicine,1 ieee journal on emerging and selected topics in circuits and systems,2 ieee journal on flexible electronics,1 ieee journal on miniaturization for air and space systems,1 ieee journal on selected areas in communications,2 ieee journal on selected areas in information theory,1 ieee latin america transactions,1 ieee latin american symposium on circuits and systems,-1 ieee latin-american conference on communications,-1 ieee magnetics letters,1 ieee mediterranean electrotechnical conference,-1 ieee metrology for aerospace,1 ieee micro,3 ieee microwave and wireless technology letters,2 ieee microwave magazine,1 ieee military communications conference proceedings,1 ieee mtt-s international microwave symposium digest,1 ieee mtt-s international microwave workshop series on advanced materials and processes for rf and thz applications,-1 ieee multidisciplinary engineering education magazine,1 ieee multimedia,1 ieee nanotechnology magazine,1 ieee nanotechnology materials and devices conference,1 ieee network,3 ieee networking letters,1 ieee non-volatile memory systems and applications symposium,1 ieee nordic-mediterranean workshop on time-to-digital converters,-1 ieee nuclear science symposium conference record,1 ieee online conference on green communications,-1 ieee open access journal of power and energy,1 ieee open journal of antennas and propagation,1 ieee open journal of control systems,1 ieee open journal of engineering in medicine and biology,1 ieee open journal of industry applications,1 ieee open journal of intelligent transportation systems,1 ieee open journal of nanotechnology,1 ieee open journal of power electronics,1 ieee open journal of signal processing,1 ieee open journal of the communications society,1 ieee open journal of the computer society,1 ieee open journal of the industrial electronics society,1 ieee open journal of the solid-state circuits society,1 ieee open journal of vehicular technology,1 ieee pacific visualization symposium,1 ieee packet video workshop,-1 ieee pervasive computing,2 ieee pes innovative smart grid technologies conference europe,1 ieee photonics journal,1 ieee photonics technology letters,2 ieee potentials,1 ieee power & energy society general meeting,1 ieee power and energy magazine,2 ieee power electronics letters,1 ieee pulse,1 ieee pulsed power conference,1 ieee radiation effects data workshop record,1 ieee radio and wireless symposium,1 ieee radio frequency integrated circuits symposium digest of papers,1 ieee reviews in biomedical engineering,1 ieee revista iberoamericana de tecnologias de aprendizagem,-1 ieee ro-man,1 ieee robotics and automation letters,2 ieee robotics and automation magazine,2 ieee sarnoff symposium,-1 ieee security & privacy,2 ieee sensors journal,2 ieee sensors letters,1 ieee sensors reviews,-1 ieee signal processing letters,2 ieee signal processing magazine,3 ieee software,2 ieee software defined networks for future networks and services,-1 ieee soi-3d-subthreshold microelectronics technology unified conference,-1 ieee solid-state circuits letters,1 ieee solid-state circuits magazine,1 ieee spectrum,1 ieee statistical signal processing workshop,1 ieee student conference on electrical machines and systems,-1 ieee subthreshold microelectronics conference,1 ieee symposium on artificial life,1 ieee symposium on computational intelligence for security and defense applications,1 ieee symposium on computational intelligence in control and automation,1 ieee symposium on computational intelligence in cyber security,1 ieee symposium on computational intelligence in multi-criteria decision making,1 "ieee symposium on computational intelligence, cognitive algorithms, mind, and brain",-1 ieee symposium on design and diagnostics of electronic circuits and systems,1 ieee symposium on security and privacy,3 ieee symposium on technologies for homeland security,-1 ieee symposium on visual languages and human-centric computing,1 ieee systems journal,2 "ieee systems, man, and cybernetics magazine",1 ieee technology and society magazine,1 "ieee topical conference on biomedical wireless technologies, networks, and sensing systems",-1 ieee transactions on aerospace and electronic systems,3 ieee transactions on affective computing,3 ieee transactions on antennas and propagation,3 ieee transactions on applied superconductivity,1 ieee transactions on artificial intelligence,1 "ieee transactions on audio, speech, and language processing",3 ieee transactions on automatic control,3 ieee transactions on automation science and engineering,2 ieee transactions on big data,1 ieee transactions on biomedical circuits and systems,1 ieee transactions on biomedical engineering,2 "ieee transactions on biometrics, behavior, and identity science",1 ieee transactions on broadcasting,1 ieee transactions on circuits and systems for artificial intelligence,1 ieee transactions on circuits and systems for video technology,2 ieee transactions on circuits and systems i-regular papers,2 ieee transactions on circuits and systems ii-express briefs,2 ieee transactions on cloud computing,1 ieee transactions on cognitive and developmental systems,1 ieee transactions on cognitive communications and networking,1 ieee transactions on communications,3 "ieee transactions on components, packaging and manufacturing technology",1 ieee transactions on computational biology and bioinformatics,2 ieee transactions on computational imaging,2 ieee transactions on computational social systems,1 ieee transactions on computer-aided design of integrated circuits and systems,2 ieee transactions on computers,3 ieee transactions on consumer electronics,1 ieee transactions on control of network systems,2 ieee transactions on control systems technology,2 ieee transactions on cybernetics,3 ieee transactions on dependable and secure computing,3 ieee transactions on device and materials reliability,1 ieee transactions on dielectrics and electrical insulation,2 ieee transactions on education,1 ieee transactions on electromagnetic compatibility,1 ieee transactions on electron devices,3 ieee transactions on emerging topics in computational intelligence,1 ieee transactions on emerging topics in computing,1 ieee transactions on energy conversion,2 "ieee transactions on energy markets, policy and regulation",1 ieee transactions on engineering management,1 ieee transactions on evolutionary computation,3 ieee transactions on fuzzy systems,3 ieee transactions on games,1 ieee transactions on geoscience and remote sensing,3 ieee transactions on green communications and networking.,1 ieee transactions on haptics,2 ieee transactions on human-machine systems,1 ieee transactions on image processing,3 ieee transactions on industrial electronics,3 ieee transactions on industrial informatics,3 ieee transactions on industry applications,2 ieee transactions on information forensics and security,2 ieee transactions on information theory,3 ieee transactions on instrumentation and measurement,3 ieee transactions on intelligent transportation systems,2 ieee transactions on intelligent vehicles,2 ieee transactions on knowledge and data engineering,3 ieee transactions on learning technologies,2 ieee transactions on machine learning in communications and networking,1 ieee transactions on magnetics,2 ieee transactions on medical imaging,3 ieee transactions on medical robotics and bionics,1 ieee transactions on microwave theory and techniques,2 ieee transactions on mobile computing,3 "ieee transactions on molecular, biological, and multi-scale communications",1 ieee transactions on multi-scale computing systems,1 ieee transactions on multimedia,3 ieee transactions on nanobioscience,1 ieee transactions on nanotechnology,1 ieee transactions on network and service management,1 ieee transactions on network science and engineering,1 ieee transactions on neural networks and learning systems,3 ieee transactions on neural systems and rehabilitation engineering,2 ieee transactions on nuclear science,1 ieee transactions on parallel and distributed systems,2 ieee transactions on pattern analysis and machine intelligence,3 ieee transactions on plasma science,1 ieee transactions on power delivery,2 ieee transactions on power electronics,3 ieee transactions on power systems,2 ieee transactions on professional communication,1 ieee transactions on quantum engineering,1 ieee transactions on radiation and plasma medical sciences,-1 ieee transactions on reliability,2 ieee transactions on robotics,3 ieee transactions on semiconductor manufacturing,1 ieee transactions on services computing,2 ieee transactions on signal and information processing over networks,1 ieee transactions on signal processing,3 ieee transactions on smart grid,3 ieee transactions on software engineering,3 ieee transactions on sustainable computing,1 ieee transactions on sustainable energy,2 "ieee transactions on systems, man, and cybernetics : systems",2 ieee transactions on technology and society,1 ieee transactions on terahertz science and technology,2 ieee transactions on transportation electrification,1 ieee transactions on ultrasonics ferroelectrics and frequency control,2 ieee transactions on vehicular technology,3 ieee transactions on very large scale integration (vlsi) systems,2 ieee transactions on visualization and computer graphics,3 ieee transactions on wireless communications,3 ieee transportation electrification conference and expo,-1 ieee tsinghua international design management symposium,-1 ieee vehicle power and propulsion conference,-1 ieee vehicular networking conference,1 ieee vehicular technology conference,1 ieee vehicular technology magazine,2 ieee winter conference on applications of computer vision,1 ieee wireless and microwave technology conference,-1 ieee wireless communications,2 ieee wireless communications and networking conference,1 ieee wireless communications letters,2 ieee workshop on advanced robotics and its social impacts,1 ieee workshop on applications of signal processing to audio and acoustics,1 ieee workshop on autonomic and opportunistic networks,-1 ieee workshop on control and modeling for power electronics,1 ieee workshop on developing applications for pervasive display networks,-1 ieee workshop on electrical machines design control and diagnosis,-1 ieee workshop on managing ubiquitous communications and services,-1 ieee workshop on modeling and simulation of cyber-physical energy systems,-1 ieee world conference on factory communication systems,-1 ieee world congress on services,1 ieee world forum on internet of things,1 ieee world symposium on web applications and networking,-1 ieee-acm transactions on networking,2 ieee-asme transactions on mechatronics,3 ieee-embs international conference on biomedical and health informatics,-1 ieee-ras international conference on humanoid robots,1 ieee/acm international conference on computer-aided design,1 ieee/acm international workshop on the twin peaks of requirements and architecture,-1 ieee/asme international conference on advanced intelligent mechatronics,1 ieee/caa journal of automatica sinica,2 ieee/cic international conference on communications in china,-1 ieee/cic international conference on communications in china - workshops,-1 ieee/ifip international conference on vlsi and system-on-chip,1 ieee/ifip international symposium on rapid system prototyping,1 ieee/ifip network operations and management symposium,1 ieee/ion position location and navigation symposium,-1 ieee/npss symposium on fusion engineering,1 ieee/sice international symposium on system integration,-1 ieej journal of industry applications,1 ieej transactions on electrical and electronic engineering,1 ieej transactions on industry applications,1 ieice communications express,1 ieice electronics express,1 ieice technical report,-1 ieice transactions on communications,1 ieice transactions on electronics,1 ieice transactions on fundamentals of electronics communications and computer sciences,1 ieice transactions on information and systems,1 iesus aboensis,-1 iet biometrics,1 iet blockchain,1 "iet circuits, devices & systems",1 iet collaborative intelligent manufacturing,1 iet communications,1 iet computer vision,1 iet computers & digital techniques,1 iet conference proceedings,1 iet control theory and applications,1 iet cyber-physical systems,1 iet cyber-systems and robotics,1 iet electric power applications,1 iet electrical systems in transportation,1 iet energy systems integration,-1 iet generation transmission and distribution,2 iet image processing,1 iet information security,1 iet intelligent transport systems,1 "iet international conference on power electronics, machines and drives",-1 iet microwaves antennas and propagation,1 iet nanobiotechnology,1 iet optoelectronics,1 iet power electronics,2 iet radar sonar and navigation,1 iet reliability of transmission and distribution networks conference,-1 iet renewable power generation,2 iet science measurement and technology,1 iet signal processing,1 iet smart cities,1 iet smart grid,1 iet software,1 iet systems biology,1 iet wireless sensor systems,1 iete journal of research,1 iete technical review,1 if,-1 ifac journal of systems and control,1 "ifac workshop on research, education and development of unmanned aerial systems",-1 ifac-papersonline,1 ifcn dairy report,-1 ifip advances in information and communication technology,1 ifip international conference on network and parallel computing,-1 ifip wg 9.7 working conference on history of nordic computing,-1 ifip wireless days,-1 ifip working group 5.7 international workshop on experimental interactive learning in industrial management,-1 ifla journal,-1 ifla metadata newsletter,-1 ifla publications,-1 ifmbe proceedings,1 iforest-biogeosciences and forestry,1 ifri,-1 ifsa publishing,-1 igaku shoin,-1 igi global,1 iheringia. série zoologia,-1 ihmisoikeuskeskuksen julkaisuja,-1 ihmisoikeuskeskus,-1 ihmisyyden monet puolet- blogi,-1 ihon aika,-1 iic-international review of intellectual property and competition law,3 iie transactions,1 iimc international information management corporation ltd,-1 iipc publication series,1 iisalmen sanomat,-1 iise transactions on occupational ergonomics and human factors,1 iitinseutu,-1 iiw collection,-1 ij-forlaget,1 ijab - fachstelle für internationale jugendarbeit der bundesrepublik deutschland,-1 ijcol,-1 ijid regions,-1 ijrdo - journal of educational research,-1 ijred (international journal of renewable energy development),1 ijrw: international journal of waste resources,-1 ijs studies in judaica,1 ijtld open,-1 ijtte,-1 ikala,1 ikam - institute of knowledge asset management,-1 ikaros,-1 ikastaria,-1 ikat,1 ikiliikkuja,-1 ikkunapaikka,-1 iko-verlag,1 ikoni & kulttuuri,-1 ikonomičeska misʺl,-1 ikä nyt!,-1 ikäinstituutti,-1 ikääntyneen väestön palvelut,-1 il calamo,-1 il centro di eccellenza per la cultura e la ricerca infermieristica,-1 il cerchio,-1 il diritto marittimo,1 il fisioterapista,-1 il giornale dellarchitettura,-1 il giornale di chirurgia,1 il mar nero,1 il mulino,-1 il naturalista siciliano,-1 il nome nel testo: rivista internazionale di onomastica letteraria,1 il nuovo cimento c,1 il polo,-1 il saggiatore musicale,1 il veltro,1 ilar journal,1 ilha do desterro,-1 ilias oy,-1 ilkka-pohjalainen,-1 illinois classical studies,1 illinois journal of mathematics,1 illness crisis and loss,1 illusioni,-1 ilmailu,-1 ilmajoki-lehti,-1 ilmamaa,-1 ilmansuojelu,-1 ilmapress oü,-1 ilmastokatsaus,-1 ilmatieteen laitos,-1 ilmatorjunta,-1 ilmiö,-1 ilsienna,-1 ilta-sanomat,-1 iltalehti,-1 ilu: revista de ciencias de las religiones,1 iluminace,1 im publications,1 im@go,1 ima fungus,1 ima journal of applied mathematics,1 ima journal of management mathematics,1 ima journal of mathematical control and information,1 ima journal of numerical analysis,2 imag,1 image,-1 image analysis and stereology,1 image and narrative,1 image and vision computing,2 images,1 images en dermatologie,-1 images re-vues,1 imagetext,1 "imagination, cognition and personality",1 imaginations,1 imaging,1 imaging & microscopy,-1 imaging decisions mri,1 imaging neuroscience,1 imaging science in dentistry,1 imaging science journal,1 imagining the impossible,1 imago mundi: the international journal for the history of cartography,1 imago musicae,1 imago temporis-medium aevum,-1 imaps nordic,-1 imaps other content,-1 imaps-europe,-1 imatran kaupunki,-1 imcsm proceedings,-1 imdc,-1 imeko tc events series,1 imerides endymasiologias - praktika,1 imeta,-1 imex,-1 imf economic review,1 immersion foundation,-1 immigrants and minorities,2 immigration and asylum law and policy in europe,1 immigration and nationality law review,1 immunity,3 immunity and ageing,1 "immunity, inflammation and disease",1 immuno-oncology technology,1 immunobiology,1 immunogenetics,1 immunohorizons,1 immunologic research,1 immunological investigations,1 immunological medicine,-1 immunological reviews,2 immunology,1 immunology and allergy clinics of north america,1 immunology and cell biology,1 immunology letters,1 "immunology, endocrine and metabolic agents in medicinal chemistry",1 immunometabolism,-1 immunometabolism,1 immunopharmacology and immunotoxicology,1 immunotherapy,1 impact,-1 impact assessment and project appraisal,1 impact: studies in language and society,1 impakti,-1 imperial college press,1 imperiumi,-1 impilahtelainen,-1 implant dentistry,1 implementation science,1 implementation science communications,1 implicit religion,2 imprensa nacional - casa da moeda,1 imprensa universidade de coimbra,-1 impressions nouvelles,-1 imprint academic,1 imprint publishing,-1 improving schools,1 imt-rapport,-1 imvi open mathematical education notes,-1 in bo,-1 in die skriflig,1 in education,-1 in esse : english studies in albania,-1 in practice,1 in silico biology,1 in silico pharmacology,1 in situ archeologica,1 in vitro cellular and developmental biology: animal,1 in vitro cellular and developmental biology: plant,1 in vitro models,-1 in vivo,1 in-visibilidades,-1 inarilainen,-1 incantatio,1 incarceration,1 incas buletin,-1 incontri linguistici,1 incose international symposium,1 indagationes mathematicae: new series,1 indeksi,-1 independence,-1 independent publisher,-1 independent publishing network,-1 independent review,1 inderscience publishers,1 indes,-1 index journal,1 index of middle english prose,1 index on censorship,1 index: international survey of roman law,1 india hci conference on human computer interaction,-1 india review,1 indialogs,1 indian chemical engineer,-1 indian economic and social history review,2 indian economic journal,1 indian fern journal,-1 indian geotechnical journal,1 indian growth and development review,1 indian heart journal,1 indian historical review,1 indian institute of advanced study,1 indian journal of agricultural sciences,1 indian journal of agronomy,1 indian journal of animal research,1 indian journal of animal sciences,1 indian journal of applied linguistics,-1 indian journal of arachnology,-1 indian journal of biochemistry and biophysics,1 indian journal of biotechnology,1 indian journal of cancer,1 indian journal of chemical technology,1 indian journal of chest diseases and allied sciences,1 indian journal of commerce and management studies,-1 indian journal of community medicine,1 indian journal of dermatology venereology and leprology,1 indian journal of endocrinology and metabolism,-1 indian journal of engineering and materials sciences,1 indian journal of environmental protection,-1 indian journal of experimental biology,-1 indian journal of fibre and textile research,1 indian journal of fisheries,-1 indian journal of gastroenterology,1 indian journal of gender studies,1 indian journal of genetics and plant breeding,1 indian journal of health and wellbeing,-1 indian journal of hematology and blood transfusion,-1 indian journal of heterocyclic chemistry,-1 indian journal of history of science,1 indian journal of horticulture,1 indian journal of human genetics,1 indian journal of international economic law,1 indian journal of labour economics,1 indian journal of marine sciences,1 indian journal of marketing,1 indian journal of medical microbiology,-1 indian journal of medical research,1 indian journal of medical sciences,-1 indian journal of microbiology,1 indian journal of natural products and resources,-1 indian journal of nephrology,1 indian journal of ophthalmology,1 indian journal of orthopaedics,1 indian journal of otolaryngology and head and neck surgery,1 indian journal of palliative care,-1 indian journal of pathology and microbiology,-1 indian journal of pediatrics,1 indian journal of pharmaceutical education and research,-1 indian journal of pharmaceutical sciences,-1 indian journal of pharmacology,1 indian journal of physics,1 indian journal of psychological medicine,1 indian journal of public health,-1 indian journal of pure and applied mathematics,1 indian journal of pure and applied physics,1 indian journal of science and technology,-1 indian journal of scientific research and technology,-1 indian journal of social work,1 indian journal of surgery,1 indian journal of surgical oncology,-1 indian journal of theoretical physics,-1 indian journal of traditional knowledge,-1 indian national science academy,1 indian pacing and electrophysiology journal,1 indian pediatrics,1 indian society for promoting christian knowledge,-1 indian veterinary journal,1 indiana,1 indiana journal of global legal studies,1 indiana law journal,1 indiana theory review,1 indiana university mathematics journal,2 indiana university press,1 indiana university uralic and altaic series,1 indigena,-1 indigenous affairs,1 indigenous law journal,1 indigenous policy,1 indilinga : african journal of indigenous knowledge systems,1 individual-based ecology,-1 indo-european linguistics,-1 indo-iranian journal,2 indo-pacific journal of phenomenology,1 indogermanische forschungen,2 indologica taurinensia,-1 indonesia,1 indonesia and the malay world,1 indonesian journal of electrical engineering and computer science,1 indonesian journal of electrical engineering and informatics,-1 indonesian journal of international and comparative law,-1 indonesian journal of social research,1 indonesian journal of sustainability accounting and management,-1 indoor air,2 indoor and built environment,1 indoor environments,1 industria textila,1 industrial and commercial training,1 industrial and corporate change,2 industrial and engineering chemistry research,1 industrial and labor relations review,2 industrial and organizational psychology-perspectives on science and practice,1 industrial archaeology news,1 industrial archaeology review,1 industrial archaeology: the journal of the society for industrial archeology,1 industrial biotechnology,1 industrial ceramics,1 industrial combustion,1 industrial crops and products,2 industrial diamond review,1 industrial engineer,1 industrial engineering and management systems,1 industrial health,1 industrial law journal,2 industrial lubrication and tribology,1 industrial management and data systems,1 industrial marketing management,3 industrial relations,1 industrial relations journal,1 industrial robot: an international journal,1 industrie 4,-1 industrie alimentari,1 industrielle beziehungen,1 industry and higher education,1 industry and innovation,2 infancia y aprendizaje,-1 infancy,1 infant and child development,1 infant behavior and development,1 infant mental health journal,1 infants and young children,1 infection,1 infection and drug resistance,1 infection and immunity,1 infection control and hospital epidemiology,1 infection ecology & epidemiology,1 infection genetics and evolution,1 infection prevention in practice,1 infectious agents and cancer,1 infectious disease clinics of north america,1 infectious disease modelling,1 infectious diseases,1 infectious diseases & immunity,-1 infectious diseases and therapy,1 infectious diseases diagnosis & treatment,-1 infectious diseases in clinical practice,1 infectious diseases now,1 infectious diseases of poverty,2 infectious disorders : drug targets,1 infektioidentorjunta,-1 infini,1 infinite dimensional analysis quantum probability and related topics,1 infinity,-1 infinity publishing,-1 inflammasome,-1 inflammation,1 inflammation and allergy: drug targets,1 inflammation and cell signaling,-1 inflammation research,1 inflammatory bowel diseases,2 inflammopharmacology,1 inflexions: a journal for research creation,1 influenza and other respiratory viruses,1 info,1 infobase creation sdn bhd,-1 infocommunications journal,1 infomat,1 infonomics society,1 infor,-1 infor,1 inforegio panorama,-1 informa healthcare,1 informa law,1 informaatioteknologian tiedekunnan julkaisuja,-1 informaatiotieteiden yksikön raportteja,-1 informaatiotutkimus,1 informacao e sociedade: estudos,1 informacije midem: journal of microelectronics electronic components and materials,1 informacionno-upravlâûŝie sistemy,1 informacios tarsadalom,1 informal logic,1 informatica,1 informatics,1 informatics for health and social care,1 informatics in education,1 informatics in medicine unlocked,1 informatics in primary care,1 informatică economică,-1 informatik-spektrum,-1 informatika,-1 informatika i avtomatizaciâ,1 informatika i ee primeneniâ,-1 information,-1 information & computer security,1 information & media,1 information & security,-1 information age publishing,1 information and communication sciences research,-1 information and communications technology law,2 information and computation,2 information and culture,1 information and inference,2 information and learning sciences,1 information and management,2 information and organization,3 information and software technology,3 information assurance and security letters,1 information bulletin on variable stars,1 information communication and society,2 information design journal,1 information development,1 information discovery and delivery,1 information economics and policy,1 information engineering research institute,-1 information fusion,3 information geometry,1 information grammaticale,2 information management international inc.,1 information matters,-1 information polity,1 information processing and management,3 information processing in agriculture,-1 information processing letters,1 information research,2 information resources management journal,1 information science reference,1 information sciences,3 information sciences for decision making,1 information security journal : a global perspective,1 information services and use,1 information society,2 information systems,2 information systems and e-business management,1 information systems education journal,1 information systems frontiers,2 information systems journal,3 information systems management,1 information systems research,3 information technologies and control,-1 information technologies and international development,1 information technology and control,1 information technology and disabilities,1 information technology and libraries,1 information technology and management,2 information technology and people,2 information technology and tourism,1 information technology for development,1 information technology journal,-1 "information technology, education and society",1 information theory and applications,1 information today,1 information visualization,1 "information, knowledge, systems management",1 information: wissenschaft und praxis,1 informationen aus orthodontie und kieferorthopädie,-1 informationen deutsch als fremdsprache,1 informationen zur raumentwicklung,1 informationes theologiae europae: internationales okumenisches jahrbuch fur theologie,1 informations forlag,1 informations sociales,-1 informes de la construccion,1 informing science,1 informing science institute,1 informing science press,1 informreklama,-1 informs journal on applied analytics,1 informs journal on computing,1 informs journal on data science,1 informs transactions on education,1 infra,-1 infrared physics and technology,1 infrastructure asset management,1 infrastructures,-1 ingenere newsletter,-1 ingeniare : revista chilena de ingeniería,-1 ingenieria hidraulica en mexico,1 ingenieria quimica,1 ingenierie des systemes dinformation,1 ingineria illuminatului,1 inhalation toxicology,1 injury epidemiology,1 injury prevention,1 injury: international journal of the care of the injured,1 inkeriläisten viesti,-1 inklings: jahrbuch fur literatur and asthetik,1 inkoma,-1 inks,1 inland water biology,1 inland waters,1 inmedia,-1 innate immunity,1 inner asia,1 inner mongolia people's publishing house,-1 innes review,1 innovacionnye proekty i programmy v obrazovanii,-1 innovar: revista de ciencias administrativas y sociales,1 innovare journal of education,-1 innovation & management review,-1 innovation : organization & management,2 innovation and development,1 innovation and green development,1 innovation and product development management conference,-1 innovation and supply chain management,-1 innovation in aging,1 innovation in language learning and teaching,1 innovation in the social sciences,1 innovation journal,1 innovation journalism,1 innovation policy and the economy,1 innovation: the european journal of social science research,1 innovations,-1 innovations,1 innovations in education and teaching international,1 innovations in pharmacy,-1 innovations in systems and software engineering,1 innovative biosystems and bioengineering,-1 innovative food science and emerging technologies,1 innovative higher education,1 "innovative infotechnologies for science, business and education",-1 innovative infrastructure solutions,1 innovative marketing,-1 innovative practice in breast health,-1 innovative smart grid technologies,1 innsbrucker beitrage zur sprachwissenschaft,1 inocula,-1 inorganic chemistry,2 inorganic chemistry communications,1 inorganic chemistry frontiers,2 inorganic materials,-1 inorganic materials: applied research,-1 inorganic reaction mechanisms,1 inorganic syntheses,1 inorganica chimica acta,1 inorganics,-1 inostrannye jazyki v škole,1 inovacije u nastavi,-1 inquiry in education,-1 inquiry: an interdisciplinary journal of philosophy,2 inquiry: the journal of health care organization provision and financing,1 inra editions,1 inroads,-1 insciencepress,-1 inscriptions,1 insea publications,1 insect biochemistry and molecular biology,1 insect conservation and diversity,1 insect molecular biology,1 insect science,1 insect systematics and diversity,1 insect systematics and evolution,1 insecta mundi,-1 insectes sociaux,1 insects,-1 insert - artistic practices as cultural inquiries,-1 inside gnss,1 inside the internet,1 insider,-1 insight,1 insight: journal of the american society of ophthalmic registered nurses,1 insights,-1 insights into imaging,1 insights on learning disabilities,1 insinööri,-1 insolvensrättslig tidskrift,1 insticc press,1 institución fernando el católico,-1 institut,-1 institut de france,1 institut de papyrologie et degyptologie de lille: cahiers de recherche,1 institut de recherche et coordination acoustique/musique,1 "institut društvenih nauka, izdavačka delatnost",-1 institut d´études slaves,-1 "institut français des sciences et technologies des transports, de l’aménagement et des réseaux",-1 institut für werkstoffwissenschaft und werkstofftechnologie,1 institut jozef stefan,-1 institut kajian etnik ukm (kita),-1 institut lingvisticheskix issledovanij rossijskoj akademii nauk,-1 institut lingvisticheskix issledovanij rossijskoj akademii nauk,1 institut national de recherche en informatique et en automatique,1 institut razvitiya obrazovaniya,-1 institut russkogo âzyka im. v.v. vinogradova,1 institut teknologi sepuluh nopember,-1 institut umění - divadelní ústav,1 institut universitaire varenne,-1 "institut yazy`ka, literatury` i istorii komi nauchnogo centra ural`skogo otdeleniya rossijskoj akademii nauk",-1 institut za kriminološka i sociološkaistraživanja,-1 institut za uporedno pravo,-1 institute for adult learning,-1 institute for operations research and the management sciences,1 institute for small business affairs,-1 institute of acoustics,-1 institute of archaeology at jerusalem university,-1 institute of economic affairs,-1 institute of education press,1 institute of educational sciences,-1 institute of logistics and transport,-1 "institute of marine engineering, science and technology",1 institute of mathematical statistics,1 institute of mediæval music,1 institute of physics and engineering in medicine,1 institute of physics conference series,1 institute of physics publishing,1 institute of research engineers & doctors,-1 institute-museum of the armenian genocide,-1 institutet för pentekostala studier,-1 institutet för rättshistorisk forskning,1 institutet för språk och folkminnen,1 instituti albanologjik,-1 institution of chemical engineers,1 institution of engineering and technology,1 institution of mechanical engineers,1 institution of occupational safety and health,1 institution of structural engineers,1 "institutionen för nordiska språk, uppsala universitet",1 instituto camões,1 instituto de estudios judiciales,1 instituto de literatura comparada margarida losa,-1 instituto nacional de pesquisas da amazônia,-1 "instituto politécnico de lisboa, escola superior de educação",-1 "instituto politécnico de santarém, escola superior de educação",-1 instituto superior da maia,-1 instituto superior engenharia do porto,-1 institutul european,-1 instructed second language acquisition,-1 instructional course lectures,1 instructional science,3 "instrumentation engineering, electronics and telecommunications",-1 instrumentation science and technology,1 instruments,-1 instruments and experimental techniques,1 instytut filozofii i socjologii pan,-1 instytut kultury regionalnej i badań literackich franciszka karpińskiego,1 instytut maszyn przepływowych pan,-1 instytut nauk prawnych polskiej akademii nauk,-1 instytut pamięci narodowej,-1 instytut technologii eksploatacji,-1 instytut w?ókien naturalnych i ro?lin zielarskich,-1 insu,-1 insula: revista de letras y ciencias humanas,1 insurance markets and companies,-1 insurance mathematics and economics,1 intangible capital,-1 intech open,-1 inted proceedings,-1 integers,1 integraciâ obrazovaniâ,1 integral,1 integral equations and operator theory,1 integral review,1 integral transforms and special functions,1 integrated assessment,1 integrated blood pressure control,-1 integrated computer-aided engineering,1 integrated environmental assessment and management,1 integrated ferroelectrics,1 integrated pharmacy research and practice,1 integrating materials and manufacturing innovation,1 integration,-1 integration: the vlsi journal,1 integrative and comparative biology,1 integrative biology,1 integrative cancer therapies,1 integrative conservation,1 integrative medicine,1 integrative psychological and behavioral science,1 integrative systematics,1 integrative zoology,1 intelektinė ekonomika,-1 inteligencia artificial,-1 intellect,2 intellectual and developmental disabilities,1 intellectual history archive,-1 intellectual history review,2 intellectual property law library,1 intellectual property publishing house,-1 intellectual property quarterly,-1 intelligence,3 intelligence and national security,1 intelligence-based medicine,-1 intelligent and converged networks,1 intelligent and sustainable manufacturing,1 intelligent automation and soft computing,1 intelligent buildings international,1 intelligent control and automation,-1 intelligent data analysis,1 intelligent decision technologies,1 intelligent information management,-1 intelligent service robotics,1 "intelligent systems in accounting, finance and management",1 intelligent systems with applications,1 intelligenza artificiale,-1 intensities: the journal of cult media,1 intensive and critical care nursing,1 intensive care medicine,3 intensive care medicine experimental,1 inter,-1 inter faculty,1 inter-asia cultural studies,1 inter-disciplinary press,1 inter-nord,-1 interaccões,1 interact,-1 interacting with computers,2 interaction between compilers and computer architectures,1 interaction of mechanics and mathematics,1 interaction studies,1 interactional linguistics,1 interactions,1 interactions: studies in communication and culture,1 interactive journal of medical research,1 interactive learning environments,1 interactive technology and smart education,1 interacções,-1 interakciâ intervʹû interpretaciâ,1 interarchaeologia,1 intercarto. intergis,1 interchange,1 interciencia,1 intercom,-1 interconnections,1 intercoop,-1 intercultural communication education,-1 intercultural communication studies,1 intercultural education,1 intercultural pragmatics,3 interculturality and translation,1 interdisciplinary cardiovascular and thoracic surgery,1 interdisciplinary discourses,-1 interdisciplinary environmental review,1 interdisciplinary journal for germanic linguistics and semiotic analysis,1 interdisciplinary journal for religion and transformation in contemporary society,1 interdisciplinary journal of contemporary research in business,-1 interdisciplinary journal of environmental and science education,1 "interdisciplinary journal of information, knowledge, and management",-1 interdisciplinary journal of portuguese diaspora studies,1 interdisciplinary journal of problem-based learning,1 interdisciplinary literary studies,1 interdisciplinary neurosurgery,1 interdisciplinary perspectives on infectious diseases,1 interdisciplinary research foundation,-1 interdisciplinary science reviews,1 interdisciplinary studies in ancient culture and religion,1 interdisciplinary studies in literature and environment,2 interdisciplinary studies in musicology,1 interdisciplines,1 intereconomics: review of european economic policy,1 interesource group publishing,-1 interest groups & advocacy,1 interethnic@,1 interface focus,1 interface: a journal for and about social movements,1 interfaces,1 interfaces and free boundaries,1 interfaces científicas : educação,1 intergovernmental panel on climate change,-1 "interiors: design, architecture, culture",1 interjournal,1 interkulturelle theologie,-1 interlitteraria,1 intermedialites,1 intermetallics,1 internal and emergency medicine,1 internal auditing & risk management,-1 internal medicine,1 internal medicine journal,1 internasjonal politikk,1 international academic conference proceedings,-1 international academy for production engineering,1 international academy of practical theology conference series,-1 "international academy of technology, education and development",1 international acm sigir conference on research and development in information retrieval,2 international advances in economic research,1 international affairs,3 international agency for research on cancer,1 international agrophysics,1 international airport review,-1 international ambient media association,-1 international and comparative corporate law journal,2 international and comparative criminal law series,1 international and comparative law quarterly,3 international and comparative law review,-1 international anesthesiology clinics,1 international angiology,1 international applied mechanics,1 international aquatic research,1 international arab journal of information technology,1 international arbitration law review,1 international archives of allergy and immunology,1 international archives of occupational and environmental health,1 "international archives of the photogrammetry, remote sensing and spatial information sciences",1 international aset,-1 "international asia conference on informatics in control, automation, and robotics",-1 international association for aesthetics,-1 international association for automation and robotics in construction,-1 international association for bridge and structural engineering,1 international association for computer information systems,1 international association for escience,-1 international association for fire safety science,1 international association for hungarian studies,-1 international association for hydro-environment engineering and research,1 international association for the study of attachment,-1 international association for tourism policy,-1 international association for universal design,1 international association of engineers,1 international association of geodesy symposia,1 international association of it lawyers,-1 international association of maritime universities,-1 international astronomical union,1 international atomic energy agency,1 international bali institute of tourism,-1 international bear news,-1 international bibliography of military history,1 international biodeterioration and biodegradation,1 international black sea conference on communications and networking,-1 international braz j urol: official journal of the brazilian society of urology,1 international breastfeeding journal,1 international building performance simulation association,-1 international business & education conferences proceedings,-1 international business and global economy,-1 international business information management association,-1 international business research,-1 international business review,2 international cartographic association,1 international center for numerical methods in engineering cimne,1 international chamber of commerce,1 international changing cities conference,-1 international clil research journal,1 international clinical psychopharmacology,1 international coaching psychology review,1 "international colloquium on automata, languages and programming",2 international comission on illumination centenary conference,-1 international communication gazette,1 international communications in heat and mass transfer,1 international community law review,1 international company and commercial law review,1 international comparative jurisprudence,1 international comparative social studies,1 international computer music association,1 international computer music conference proceedings,1 international computer science and engineering conference,-1 international computer science symposium in russia,-1 international conceive design implement operate academy conference,-1 international conference an enterprise odyssey,-1 international conference and workshops on networked systems,-1 "international conference for entrepreneurship, innovation & regional development",-1 "international conference for high performance computing, networking, storage and analysis",1 international conference image and vision computing new zealand,1 international conference laser optics,-1 international conference nuclear energy for new europe,-1 international conference of advanced research methods and analytics,-1 international conference on advances in information mining and management,-1 international conference on artificial intelligence and statistics,2 international conference on 3d vision proceedings,1 international conference on active media technology,-1 international conference on ad hoc networks,-1 international conference on ad hoc networks and wireless,-1 international conference on adaptive and self-adaptive systems and applications,-1 international conference on advanced applied informatics,-1 international conference on advanced cognitive technologies and applications,-1 "international conference on advanced collaborative networks, systems and applications",-1 international conference on advanced communication technology,-1 international conference on advanced computational methods in engineering,-1 international conference on advanced computer science and information systems,-1 "international conference on advanced geographic information systems, applications, and services",-1 international conference on advanced ict for education,1 international conference on advanced information networking and applications,1 "international conference on advanced mechatronics, intelligent manufacture, and industrial automation",-1 international conference on advances in cognitive radio,-1 international conference on advances in computer-human interactions,-1 "international conference on advances in human-oriented and personalized mechanisms, technologies, and services",-1 international conference on advances in information technology,-1 international conference on advances in mechanical and robotics engineering,-1 international conference on advances in satellite and space communications,-1 international conference on advances in system testing and validation lifecycle,-1 international conference on affective computing and intelligent interaction and workshops,1 international conference on algorithms and architectures for parallel processing,1 international conference on analytical and stochastic modelling techniques and applications,-1 international conference on antenna theory and techniques,-1 international conference on application of fuzzy systems and soft computing,-1 international conference on applications of time-frequency processing in audio,-1 international conference on applied parallel and scientific computing,-1 international conference on artificial intelligence and pattern recognition,-1 international conference on artificial intelligence in information and communication,1 international conference on auditory-visual speech processing,1 international conference on autonomous agents and multiagent systems,2 "international conference on autonomous infrastructure, management, and security",-1 international conference on barkhausen noise and micromagnetic testing,-1 international conference on bio-inspired systems and signal processing,-1 "international conference on bioinformatics, biocomputational systems and biotechnologies",1 international conference on bioinspired optimization methods and their applications,1 international conference on biometrics,1 "international conference on broadband and wireless computing, communication and applications",-1 international conference on building and exploring web based environments,-1 international conference on cartography and gis proceedings,-1 international conference on clean electrical power,-1 international conference on climbing and walking robots,1 international conference on cloud and green computing,-1 international conference on cloud and service computing,1 international conference on cloud security management,-1 international conference on collaborative innovation networks,-1 international conference on communication systems and networks,1 international conference on communication technology and system design,-1 "international conference on communication theory, reliability, and quality of service",-1 "international conference on communication, media, technology and design",-1 international conference on communications and electronic systems,-1 international conference on communications and information technology,-1 "international conference on communications, signal processing and their applications",-1 international conference on computational and information sciences,-1 "international conference on computational intelligence, communication systems and networks",-1 international conference on computational linguistics,1 international conference on computational science and computational intelligence,-1 international conference on computational social networks,-1 international conference on computer aided systems theory,-1 international conference on computer applications technology,-1 international conference on computer graphics theory and applications,1 international conference on computer modeling and simulation,-1 international conference on computer modelling and simulation,-1 international conference on computer science and communication technology,-1 "international conference on computer science, applied mathematics, and applications",-1 "international conference on computer science, computer engineering, and social media",-1 international conference on computer systems and industrial informatics,-1 "international conference on computer, control, informatics and its application",-1 international conference on computers helping people with special needs,-1 international conference on connected vehicles and expo,1 "international conference on control, automation and systems",1 "international conference on control, automation and systems engineering",-1 "international conference on control, decision and information technologies",1 "international conference on creating, connecting, and collaborating through computing",1 international conference on creative content technologies,-1 international conference on cyber and it service management,-1 international conference on cyber conflict,1 international conference on data analytics,-1 international conference on data engineering,2 "international conference on design, user experience and usability",-1 international conference on digital image processing,-1 international conference on digital information and communication technology and its applications,-1 international conference on digital signal processing proceedings,1 international conference on digital society,-1 international conference on digital telecommunications,-1 international conference on distributed computer and communications networks,-1 international conference on distributed computing in sensor systems and workshops,1 international conference on distributed computing systems,2 international conference on e-infrastructure and e-services for developing countries,-1 international conference on e-learning,-1 international conference on educational data mining,1 international conference on electric power and energy conversion systems,-1 international conference on electrical and computer engineering,-1 international conference on electrical and electronics engineering,-1 international conference on electrical engineering and control applications,-1 "international conference on electrical engineering, computing science, and automatic control",1 "international conference on electrical engineering/electronics, computer, telecommunications and information technology",-1 international conference on electronic properties of two-dimensional systems /international conference on modulated semiconductor structures,-1 international conference on electronics packaging,-1 "international conference on emerging internetworking, data and web technologies",-1 "international conference on emerging research in computing, information, communication and applications",-1 "international conference on energy, environment, devices, systems, communications, computers",-1 international conference on enterprise systems,-1 international conference on entertainment computing,1 international conference on environment and electrical engineering,1 international conference on evaluation of novel approaches to software engineering,-1 international conference on field and service robotics,1 international conference on field programmable logic and applications,1 international conference on field programmable technology,-1 international conference on frontiers of information technology,-1 international conference on future internet of things and cloud,-1 international conference on future networks and communications,-1 international conference on games and virtual worlds for serious applications,-1 international conference on global health challenges,-1 international conference on green computing and engineering technologies,-1 international conference on green it solutions,1 international conference on ground penetrating radar,-1 international conference on high voltage engineering and application,1 international conference on higher education advances,-1 international conference on human aspects of it for the aged population,-1 international conference on human-computer interaction,-1 "international conference on humanoid, nanotechnology, information technology, communication and control, environment and management",-1 international conference on ict and knowledge engineering,-1 international conference on ict convergence,-1 "international conference on ict in education, research, and industrial applications",-1 "international conference on image processing, computer vision, and pattern recognition",-1 international conference on indoor positioning and indoor navigation,1 international conference on industrial and hazardous waste management : executive summaries,-1 international conference on industrial mechatronics and automation,1 international conference on informatics in school,-1 international conference on information and automation for sustainability,-1 international conference on information and communication systems,-1 international conference on information and communication technology convergence,-1 international conference on information and communication technology research,-1 international conference on information and communications technologies,-1 international conference on information and multimedia technology,1 international conference on information and software technologies,-1 international conference on information assurance and security,1 international conference on information communication technologies in education,-1 international conference on information modelling and knowledge bases,-1 international conference on information processing in sensor networks,2 international conference on information security and cryptology iscturkey,-1 international conference on information systems,2 international conference on information systems development,1 international conference on information systems engineering,1 international conference on information technology interfaces,-1 international conference on information technology: new generations,-1 international conference on information visualization theory and applications,1 "international conference on information, intelligence, systems and applications",-1 "international conference on infrared, millimeter, and terahertz waves",1 international conference on innovation and management,-1 international conference on innovative computing technology,-1 international conference on innovative mobile and internet services in ubiquitous computing,-1 international conference on integrated power electronics systems,-1 international conference on intelligence in next generation networks,1 international conference on intelligent and advanced systems,-1 international conference on intelligent decision technologies,1 international conference on intelligent human-machine systems and cybernetics,-1 international conference on intelligent systems design and applications,1 international conference on intelligent user interfaces,2 international conference on internet and web applications and services,-1 international conference on knowledge and systems engineering,1 international conference on knowledge engineering and ontology development,1 international conference on knowledge management and information systems,1 international conference on lead-acid batteries,-1 international conference on learning representations,1 international conference on life cycle assessment of food,-1 international conference on localization and gnss,1 "international conference on logic, rationality and interaction",-1 international conference on machine learning,3 international conference on machine vision,1 international conference on manufacturing research,-1 international conference on maritime transport,-1 international conference on mathematical and computational methods in science and engineering proceedings,-1 international conference on mathematical methods in electromagnetic theory conference proceedings,1 international conference on measurement and control engineering,-1 international conference on measuring technology and mechatronics automation,-1 international conference on membrane computing,-1 international conference on methods and models in automation and robotics,-1 international conference on microwave and millimeter wave technology,-1 international conference on military communications and information systems,1 international conference on mixed design of integrated circuits and systems,-1 "international conference on mobile and ubiquitous systems : computing, networking and services",1 international conference on mobile business,1 international conference on mobile computing and ubiquitous networking,-1 international conference on mobile networks and management,-1 "international conference on mobile services, resources, and users",-1 "international conference on mobile ubiquitous computing, systems, services and technologies",-1 "international conference on mobile, hybrid, and on-line learning",-1 international conference on modeling and applied simulation,-1 "international conference on modeling and simulation of electric machines, converters and systems",-1 "international conference on modeling, simulation and applied optimization",-1 "international conference on modeling, simulation and visualization methods",-1 international conference on natural computation,-1 international conference on network and service management,1 international conference on network of the future,-1 international conference on network protocols,2 international conference on networking and services,-1 international conference on networks,-1 "international conference on next generation mobile applications, services and technologies",1 international conference on online communities and social computing,-1 international conference on onomastics: name and naming,-1 international conference on operations research abstract book,-1 international conference on operations research and enterprise systems,1 international conference on optical internet,-1 international conference on optical mems and nanophotonics,1 international conference on optimization and control with applications,-1 international conference on parallel computing technologies,-1 international conference on pattern recognition,1 international conference on peer-to-peer computing,1 international conference on performance evaluation methodologies and tools,-1 international conference on personal satellite services,-1 international conference on pervasive and embedded computing and communication systems,-1 international conference on pervasive embedded computing and communication systems,-1 international conference on physics of reactors,1 international conference on power electronics,1 "international conference on power engineering, energy and electrical drives",-1 international conference on principles and practice of constraint programming,2 international conference on principles of knowledge representation and reasoning,-1 international conference on probabilistic methods applied to power systems,1 international conference on quality software,1 international conference on quantitative and qualitative methodologies in the economic and administrative sciences,-1 international conference on quantum interaction,-1 international conference on queueing theory and network applications,-1 international conference on recent trends in computer science and electronics,-1 international conference on remote engineering and virtual instrumentation,-1 international conference on renewable energy research and applications,1 international conference on robotics and mechatronics,-1 "international conference on robotics, biomimetics & intelligent computational systems",-1 international conference on self-adaptive and self-organizing systems,1 international conference on sensor network security technology and privacy communication system,-1 international conference on sensor technologies and applications,-1 international conference on signal and information processing,-1 international conference on signal processing,-1 international conference on signal processing and multimedia applications,1 "international conference on signal processing, communication and networking",-1 international conference on smart communications in network technologies,-1 international conference on smart energy systems and technologies,1 "international conference on smart grid technology, economics and policies",-1 "international conference on smart grids, green communications and it energy-aware technologies",-1 international conference on social computing and social media,-1 international conference on society and information technologies,-1 international conference on soft computing models in industrial and environmental applications,-1 international conference on software architecture companion,1 international conference on software engineering,3 international conference on software engineering advances,1 international conference on software engineering and knowledge engineering,1 international conference on systems,-1 international conference on systems and informatics,-1 international conference on systems science,-1 "international conference on systems, signals, and image processing",1 "international conference on telecommunication systems, services, and applications",-1 international conference on the applications of computer science and mathematics in architecture and civil engineering,-1 international conference on the design of cooperative systems,1 international conference on the european energy market,1 international conference on the human side of service engineering,-1 international conference on the synthesis and simulation of living systems,1 international conference on thermoelectrics,1 international conference on tools and algorithms for the construction and analysis of systems,2 international conference on tourism management and tourism relates issues,-1 international conference on ubiquitous and future networks,-1 international conference on ultra modern telecommunications & workshops,1 international conference on user science and engineering,-1 international conference on very large data bases,2 "international conference on virtual, augmented and mixed reality",-1 "international conference on wireless algorithms, systems, and applications",-1 international conference on wireless and mobile communications,-1 "international conference on wireless communication, vehicular technology, information theory and aerospace & electronic systems technology",-1 international conference on wireless communications and signal processing,-1 international conference physics teaching in engineering education,-1 international conference radioelektronika,-1 international conference series : world marketing congress,-1 international conference surveillance,-1 international conference the experience of designing and application of cad systems in microelectronics,-1 international congress of metrology,-1 international congress on acoustics,-1 international congress on advanced electromagnetic materials in microwaves and optics,-1 international congress on environmental modelling and software,-1 international construction law review,1 "international convention on information and communication technology, electronics and microelectronics",1 international corrosion conference series,-1 international council for research and innovation in building and construction,-1 international council for research in agro-forestry,-1 international council for small business,-1 international council of museums,1 international council of sport science and physical education,-1 international criminal justice review,1 international criminal law review,1 international criminology,1 international critical childhood policy studies journal,-1 international critical thought,1 international cryptology conference,3 international cybersecurity law review,1 international dairy journal,1 international data privacy law,2 international debate education association,-1 international dental journal,1 international development planning review,1 international development policy,1 international diabetes nursing,1 international e-journal of advances in education,-1 international economic journal,1 international economic review,3 international economics,1 international economics and economic policy,1 international economics letters,-1 international education journal,1 international education studies,-1 international ejournal of engineering mathematics: theory and application,1 international electric propulsion conference,-1 international electronic journal for leadership in learning,1 international electronic journal of algebra,1 international electronic journal of elementary education,1 international electronic journal of environmental education,1 international electronic journal of mathematics education,1 international electronic journal of nuclear safety and simulation,-1 international emergency nursing,1 international endodontic journal,3 "international energy agency, photovoltaic power systems programme",-1 international energy law review,1 international entrepreneurship and management journal,1 international environmental agreements: politics law and economics,1 international environmental history group,-1 international environmental technology,-1 international family law,1 "international family law, policy and practice",1 international federation for information processing,-1 international federation of surveyors,-1 international feminist journal of politics,2 international fiction review,1 international finance,1 international food and agribusiness management review,1 international ford madox ford studies,1 international forestry review,1 international forum of allergy and rhinology,1 international forum of psychoanalysis,1 international forum of teaching and studies,1 international gambling studies,1 international game theory review,1 international geology review,1 international grassland congress,-1 international health,-1 international heart and vascular disease journal,1 international heart journal,1 international heat transfer conference,-1 international heat treatment and surface engineering,1 international higher education,-1 international history review,3 international hl7 interoperability conference,1 international human rights law review,1 international humanitarian law series,1 international hydrographic review,1 international icst conference on cognitive radio oriented wireless networks and communications,1 international ieee/embs conference on neural engineering,-1 international igte symposium on numerical field calculation in electrical engineering,-1 international immunology,1 international immunopharmacology,1 international in-house counsel journal,-1 international indigenous policy journal,1 international information and library review,1 international insolvency review,1 international institute for advanced studies in systems research and cybernetics,-1 international institute for conservation of historic and artistic works,1 international institute for environment and development,1 international institute of informatics and systemics,-1 international institute of refrigeration,1 international institute of social and economic sciences,-1 international insurance law review,1 international interactions,1 international joint conference on artificial intelligence,3 international joint conference on awareness science and technology and ubi-media computing,-1 international joint conference on computational sciences and optimization,-1 international joint conference on computer science and software engineering,-1 international joint conference on software technologies,-1 international journal,1 international journal about parents in education,1 international journal bioautomation,-1 international journal emerging technology and advanced engineering,-1 international journal for academic development,1 international journal for applied management science and global developments,-1 international journal for computational methods in engineering science and mechanics,1 international journal for construction marketing,-1 international journal for court administration,1 "international journal for crime, justice and social democracy",1 international journal for cross-displinary subjects in education,-1 international journal for dialogical science,1 international journal for educational and vocational guidance,1 international journal for educational integrity,1 international journal for educational media and technology,-1 international journal for equity in health,1 international journal for history and social sciences education,-1 "international journal for history, culture and modernity",2 international journal for housing science and its applications,-1 international journal for human caring,1 international journal for infonomics,-1 international journal for information security research,1 international journal for innovation and quality in learning innoqual,1 international journal for ion mobility spectrometry,1 international journal for lesson and learning studies,1 international journal for mathematics teaching and learning,1 international journal for multiscale computational engineering,1 international journal for numerical and analytical methods in geomechanics,2 international journal for numerical methods in biomedical engineering,1 international journal for numerical methods in engineering,2 international journal for numerical methods in fluids,1 international journal for parasitology,1 international journal for philosophy of religion,2 international journal for quality in health care,1 international journal for quality research,1 international journal for religious freedom,-1 international journal for research in vocational education and training,1 international journal for research on extended education,1 international journal for responsible tourism,-1 international journal for rural law and policy,-1 international journal for talent development and creativity,1 international journal for technology in mathematics education,1 international journal for the advancement of counselling,1 international journal for the psychology of religion,3 international journal for the scholarship of teaching and learning,1 international journal for the semiotics of law,1 international journal for the study of new religions,1 international journal for the study of skepticism,1 international journal for the study of the christian church,1 international journal for uncertainty quantification,1 international journal for vitamin and nutrition research,1 international journal of power and energy systems,-1 international journal of 3-d information modeling,1 international journal of 3d printing technologies and digital industry,-1 international journal of abdominal wall and hernia surgery,1 international journal of academic research in business and social sciences,-1 international journal of academic research in progressive education and development,-1 international journal of acarology,1 international journal of accounting,1 international journal of accounting and finance,1 international journal of accounting and information management,1 international journal of accounting information systems,1 "international journal of accounting, auditing and performance evaluation",1 international journal of acoustics and vibration,-1 international journal of action research,1 international journal of ad hoc and ubiquitous computing,1 international journal of adaptive control and signal processing,1 "international journal of adaptive, resilient and autonomic systems",1 international journal of adhesion and adhesives,1 international journal of adolescence and youth,1 international journal of adolescent medicine and health,1 international journal of adult education and technology,1 "international journal of adult, community and professional learning",-1 international journal of advanced and applied sciences,-1 international journal of advanced biotechnology and research,-1 international journal of advanced computer science,-1 international journal of advanced computer science and applications,-1 international journal of advanced computer technology,-1 international journal of advanced corporate learning,1 international journal of advanced engineering research and sciences,-1 "international journal of advanced engineering, management and science",-1 international journal of advanced intelligence paradigms,1 international journal of advanced logistics,1 international journal of advanced manufacturing systems,-1 international journal of advanced manufacturing technology,1 international journal of advanced materials manufacturing and characterization,-1 international journal of advanced mechatronic systems,1 international journal of advanced media and communication,1 international journal of advanced renewable energy research,-1 international journal of advanced research in artificial intelligence,-1 international journal of advanced science and technology,-1 "international journal of advanced science, engineering and information technology",1 international journal of advanced trends in computer science and engineering,-1 international journal of advancements in computing technology,-1 international journal of advancements in mechanical and aeronautical engineering,1 international journal of advances in engineering sciences and applied mathematics,-1 international journal of advances in management and economics,-1 international journal of advances in psychology,1 international journal of advances in science engineering and technology,-1 international journal of advertising,1 international journal of aeroacoustics,1 international journal of aerospace engineering,1 international journal of africa nursing sciences,1 international journal of african historical studies,2 international journal of ageing and later life,1 international journal of agent-oriented software engineering,1 international journal of agile and extreme software development,1 international journal of agile systems and management,1 international journal of aging and human development,1 international journal of agricultural and environmental information systems,-1 international journal of agricultural and food research,-1 international journal of agricultural and statistical sciences,1 international journal of agricultural management,-1 international journal of agricultural policy and research,-1 "international journal of agricultural resources, governance and ecology",1 international journal of agricultural sustainability,1 international journal of agricultural technology,-1 international journal of agriculture and biology,-1 international journal of agriculture and biosciences,-1 international journal of agriculture and crop sciences,-1 international journal of agriculture and forestry,-1 international journal of agriculture innovation and research,-1 "international journal of agriculture innovation, technology and globalisation",1 international journal of alcohol and drug research,1 international journal of algebra,-1 international journal of algebra and computation,1 international journal of alternative propulsion,1 international journal of ambient computing and intelligence,1 international journal of ambient energy,-1 international journal of american linguistics,2 international journal of analysis and applications,1 international journal of analytical chemistry,-1 international journal of angiology,1 international journal of antennas and propagation,1 international journal of antimicrobial agents,1 international journal of applied and computational mathematics,1 international journal of applied behavioral economics,-1 international journal of applied ceramic technology,1 international journal of applied earth observation and geoinformation,2 international journal of applied electromagnetics and mechanics,1 international journal of applied engineering and technology,-1 international journal of applied engineering research,-1 international journal of applied environmental sciences,-1 international journal of applied glass science,1 international journal of applied industrial engineering,1 international journal of applied linguistics,2 international journal of applied linguistics and english literature,-1 international journal of applied logistics,1 international journal of applied management science,1 international journal of applied mathematics,-1 international journal of applied mathematics and computer science,1 international journal of applied mathematics and mechanics,1 international journal of applied mechanics,1 international journal of applied mechanics and engineering,1 international journal of applied philosophy,1 international journal of applied positive psychology,1 international journal of applied psychoanalytic studies,1 international journal of applied research in veterinary medicine,1 international journal of applied sciences: current and future research trends,-1 international journal of applied sports sciences,1 international journal of applied systemic studies,1 international journal of approximate reasoning,2 international journal of aquatic biology,1 international journal of aquatic research and education,1 international journal of arabic linguistics,1 international journal of arabic-english studies,1 international journal of architectural computing,2 international journal of architectural engineering technology,-1 international journal of architectural heritage,2 international journal of armenian genocide studies,1 international journal of aromatherapy,1 international journal of art and design education,2 international journal of art therapy,1 "international journal of art, culture and design technologies",1 international journal of artificial intelligence,-1 international journal of artificial intelligence in education,1 international journal of artificial organs,1 international journal of arts & sciences,1 international journal of arts and technology,1 international journal of arts education,-1 international journal of arts management,2 "international journal of arts, humanities & social science",-1 international journal of asian christianity,1 international journal of asian social science,-1 international journal of assessment and evaluation,-1 international journal of astrobiology,1 international journal of astronomy and astrophysics,-1 international journal of athletic therapy & training,1 international journal of audiology,1 international journal of auditing,1 international journal of automotive technology,1 international journal of automotive technology and management,-1 international journal of autonomous and adaptive communications systems,1 "international journal of aviation, aeronautics, and aerospace",-1 international journal of badiou studies,1 international journal of bank marketing,1 "international journal of banking, accounting and finance",1 international journal of behavioral development,2 international journal of behavioral medicine,1 international journal of behavioral nutrition and physical activity,3 international journal of behavioural accounting and finance,-1 international journal of behavioural and healthcare research,-1 "international journal of bias, identity and diversities in education",1 international journal of bifurcation and chaos,1 international journal of bilingual education and bilingualism,2 international journal of bilingualism,3 international journal of bio-inspired computation,-1 international journal of biochemistry and cell biology,1 international journal of biodiversity and conservation,-1 international journal of bioelectromagnetism,1 international journal of bioinformatics research and applications,1 international journal of biological macromolecules,1 international journal of biological markers,1 international journal of biological sciences,1 international journal of biology and biomedicine,-1 international journal of biomaterials,1 international journal of biomathematics,1 international journal of biomedical and clinical engineering,-1 international journal of biomedical engineering and technology,1 international journal of biomedical imaging,1 international journal of biomedical laboratory science,1 international journal of biomedical science,-1 international journal of biomedical sciences,-1 international journal of biometeorology,1 international journal of biometrics,1 international journal of bioprinting,1 "international journal of bioscience, biochemistry, bioinformatics",-1 international journal of biostatistics,1 international journal of bipolar disorders,1 international journal of blockchains and cryptocurrencies,-1 international journal of border security and immigration policy,1 international journal of botany,-1 international journal of breast cancer,-1 international journal of bridge engineering,-1 international journal of buddhist thought and culture,1 international journal of building pathology and adaptation,1 international journal of bullying prevention,1 international journal of business & cyber security,-1 international journal of business administration,-1 international journal of business and administrative studies,1 international journal of business and applied social science,-1 international journal of business and data analytics,-1 international journal of business and economics,1 international journal of business and emerging markets,1 international journal of business and finance research,-1 international journal of business and globalisation,1 international journal of business and management,-1 international journal of business and management,1 international journal of business and management invention,-1 international journal of business and management studies,-1 international journal of business and social research,-1 international journal of business and social science,-1 international journal of business and society,-1 international journal of business and systems research,1 international journal of business communication,1 international journal of business competition and growth,-1 international journal of business continuity and risk management,-1 international journal of business data communications and networking,1 international journal of business development and research,1 international journal of business environment,1 international journal of business excellence,1 international journal of business forecasting and marketing intelligence,1 international journal of business governance and ethics,1 international journal of business information systems,1 international journal of business innovation and research,1 international journal of business insights and transformation,-1 international journal of business management and economic review,-1 international journal of business performance and supply chain modelling,1 international journal of business performance management,1 international journal of business process integration and management,1 international journal of business research management,-1 international journal of business research papers,-1 international journal of business science and applied management,1 "international journal of business, humanities and technology",-1 international journal of canadian studies,1 international journal of cancer,2 international journal of cancer management,-1 international journal of cancer research,-1 international journal of cancer therapy and oncology,-1 international journal of cardiology,1 international journal of cardiology : heart & vasculature,1 international journal of cardiology: cardiovascular risk and prevention,1 international journal of cardiovascular imaging,1 international journal of cardiovascular research,-1 international journal of cardiovascular sciences,-1 international journal of care and caring,1 international journal of care coordination,1 international journal of caring sciences,1 international journal of cartography,1 international journal of case method research & application,1 international journal of case reports in medicine,-1 international journal of cast metals research,1 international journal of cell biology,1 international journal of central banking,1 international journal of ceramic engineering & science,1 international journal of changes in education,-1 international journal of chemical and biomolecular science,-1 international journal of chemical engineering,-1 international journal of chemical engineering,1 international journal of chemical engineering and applications,-1 international journal of chemical kinetics,1 international journal of chemical reactor engineering,1 international journal of chemistry and chemical engineering systems,-1 international journal of child and family welfare,1 international journal of child care and education,1 international journal of child health and nutrition,1 "international journal of child, youth and family studies",1 international journal of child-computer interaction,1 international journal of childbirth,1 international journal of children's spirituality,1 international journal of childrens rights,2 international journal of chinese culture and management,1 international journal of chinese education,1 international journal of chinese linguistics,1 international journal of christianity & english language teaching,-1 international journal of chronic obstructive pulmonary disease,1 international journal of cinema,-1 international journal of circuit theory and applications,1 "international journal of circuits, systems and signal processing",-1 international journal of circumpolar health,1 international journal of civil engineering,1 international journal of civil engineering and technology,-1 international journal of climate change strategies and management,1 international journal of climatology,1 international journal of clinical and experimental hypnosis,1 international journal of clinical and experimental medical sciences,-1 international journal of clinical and experimental medicine,-1 international journal of clinical and experimental pathology,1 international journal of clinical and health psychology,1 international journal of clinical medicine,-1 international journal of clinical oncology,1 international journal of clinical pharmacology and therapeutics,1 international journal of clinical pharmacy,1 international journal of clinical practice,1 international journal of clinical psychiatry and mental health,-1 international journal of clinical rheumatology,-1 international journal of clinical trials,-1 international journal of clothing science and technology,1 international journal of co-operative accounting & management,-1 international journal of coaching science,1 international journal of coal geology,2 international journal of coal preparation and utilization,1 international journal of coal science & technology,1 international journal of cognitive behavioral therapy,1 international journal of cognitive biometrics,-1 international journal of cognitive informatics and natural intelligence,1 international journal of cognitive linguistics,1 "international journal of cognitive research in science, engineering and education",-1 international journal of collaborative enterprise,1 international journal of collaborative practices,1 international journal of colorectal disease,1 international journal of comadem,1 international journal of comic art,1 international journal of commerce and contracting,1 international journal of communication,2 international journal of communication networks and distributed systems,1 international journal of communication networks and information security,-1 international journal of communication systems,1 international journal of communications,-1 international journal of communications law and policy,1 international journal of community currency research,-1 international journal of community diversity,-1 international journal of community music,1 international journal of community well-being,1 international journal of comparative and applied criminal justice,1 international journal of comparative labour law and industrial relations,2 international journal of comparative management,1 international journal of comparative psychology,1 international journal of comparative sociology,1 international journal of complementary & alternative medicine,-1 international journal of complexity in education,1 international journal of complexity in leadership and management,1 international journal of composite materials,-1 international journal of computational cognition,1 international journal of computational economics and econometrics,1 international journal of computational fluid dynamics,1 international journal of computational geometry and applications,1 international journal of computational intelligence,-1 international journal of computational intelligence and applications,1 international journal of computational intelligence in control,-1 international journal of computational intelligence systems,1 international journal of computational linguistics and applications,-1 international journal of computational linguistics and chinese language processing,1 international journal of computational materials science and surface engineering,1 international journal of computational methods,1 international journal of computational methods and experimental measurements,-1 international journal of computational science and engineering,1 international journal of computer aided engineering and technology,1 international journal of computer and communication engineering,-1 international journal of computer and electrical engineering,-1 international journal of computer and information technology,-1 international journal of computer applications,-1 international journal of computer applications in technology,1 international journal of computer assisted radiology and surgery,1 international journal of computer games technology,1 international journal of computer information systems and industrial management applications,1 international journal of computer integrated manufacturing,2 international journal of computer mathematics,1 international journal of computer network and information security,-1 international journal of computer networks and applications,1 international journal of computer networks and communications,-1 international journal of computer processing of oriental languages,1 international journal of computer science and applications,1 international journal of computer science and engineering survey,-1 international journal of computer science and its application,-1 international journal of computer science and network security,-1 international journal of computer science in sport,1 international journal of computer systems science and engineering,-1 international journal of computer theory and engineering,-1 international journal of computer vision,3 international journal of computer-assisted language learning and teaching,1 international journal of computer-integrated design and construction,1 international journal of computer-supported collaborative learning,3 international journal of computerized dentistry,1 international journal of computers,-1 international journal of computers and applications,1 international journal of computers and communications,-1 international journal of computers and their applications,1 international journal of computers communications and control,1 international journal of concrete structures and materials,1 international journal of conflict and violence,1 international journal of conflict engagement and resolution,-1 international journal of conflict management,1 international journal of construction education and research,1 international journal of construction management,1 international journal of construction project management,-1 international journal of construction supply chain management,-1 international journal of consumer studies,1 international journal of contemporary economics and administrative sciences,-1 international journal of contemporary educational research,-1 international journal of contemporary energy,1 international journal of contemporary hospitality management,1 international journal of contemporary mathematical sciences,-1 international journal of contemporary sociology,-1 international journal of continuing education and lifelong learning,1 international journal of continuing engineering education and life-long learning,1 international journal of control,1 international journal of control automation and systems,1 international journal of cooperative information systems,1 international journal of cooperative studies,-1 international journal of corporate governance,1 international journal of corpus linguistics,3 international journal of corrosion and scale inhibition,1 international journal of cosmetic science,1 international journal of crashworthiness,1 international journal of criminal justice,1 international journal of critical accounting,1 international journal of critical computer-based systems,1 international journal of critical illness and injury science,1 international journal of critical indigenous studies,-1 international journal of critical infrastructure protection,1 international journal of cross cultural management,1 international journal of cultural property,2 international journal of cultural research,-1 international journal of cultural studies,3 international journal of culture and mental health,1 international journal of culture and religious studies,-1 international journal of current research,-1 international journal of current research and academic review,-1 "international journal of cyber behavior, psychology and learning",-1 international journal of cyber criminology,1 international journal of cyber ethics in education,-1 international journal of cyber warfare and terrorism,1 international journal of cybernetics and informatics,-1 international journal of dairy technology,1 international journal of damage mechanics,1 international journal of data analytics and smart education,-1 international journal of data and network science,1 international journal of data mining and bioinformatics,1 "international journal of data mining, modelling and management",1 international journal of data science,1 international journal of data science and analytics,1 international journal of data warehousing and mining,1 "international journal of decision sciences, risk and management",1 international journal of decision support systems,-1 international journal of dental hygiene,1 international journal of dentistry,1 international journal of dependable and trustworthy information systems,-1 international journal of dermatology,1 international journal of design,3 international journal of design & nature and ecodynamics,-1 international journal of design and innovation research,-1 international journal of design creativity and innovation,1 international journal of design engineering,-1 international journal of design management and professional practice,-1 "international journal of design, analysis and tools for integrated circuits and systems",1 international journal of designed objects,-1 international journal of designs for learning,-1 international journal of development and conflict,-1 international journal of development and sustainability,-1 international journal of development education and global learning,1 international journal of development issues,1 international journal of developmental biology,1 international journal of developmental disabilities,1 international journal of developmental neuroscience,1 international journal of developmental science,1 international journal of diabetes in developing countries,1 international journal of diary science,-1 international journal of differential equations,-1 international journal of digital content technology and its applications,-1 international journal of digital curation,1 international journal of digital earth,1 international journal of digital humanities,1 international journal of digital information and wireless communications,-1 international journal of digital literacy and digital competence,1 international journal of digital multimedia broadcasting,1 international journal of disabilities sports & health sciences,-1 international journal of disability development and education,1 international journal of disability management research,1 international journal of disaster resilience in the built environment,1 international journal of disaster risk reduction,2 international journal of disaster risk science,1 international journal of disclosure and governance,1 international journal of discrimination and the law,1 international journal of distance education technologies,1 international journal of distributed sensor networks,1 "international journal of diversity in organisations, communities and nations",1 international journal of doctoral studies,1 international journal of dravidian linguistics,-1 international journal of drug discovery and pharmacology,-1 international journal of drug policy,2 international journal of dynamical systems and differential equations,1 international journal of dynamics and control,1 international journal of e-adoption,1 international journal of e-business research,1 international journal of e-collaboration,1 "international journal of e-education, e-business, e-management and e-learning",-1 international journal of e-health and medical communications,1 international journal of e-learning & distance education,1 international journal of e-learning and educational technologies in the digital media,-1 international journal of e-planning research,1 international journal of e-politics,1 international journal of e-services and mobile applications,1 international journal of early childhood,1 international journal of early childhood environmental education,1 international journal of early childhood learning,-1 international journal of early childhood special education,-1 international journal of early years education,1 international journal of earth sciences,1 international journal of eating disorders,2 international journal of ecology and development,1 international journal of economic behavior,-1 international journal of economic development,1 international journal of economic sciences and applied research,-1 international journal of economic theory,1 international journal of economics and business research,-1 international journal of economics and finance,-1 international journal of economics and financial issues,-1 international journal of economics and management engineering,-1 international journal of economics and management systems,-1 "international journal of economics, commerce and management",-1 "international journal of economy, management and social sciences",-1 "international journal of economy,energy and environment",-1 international journal of education,-1 international journal of education administration and policy studies,-1 international journal of education and development using information and communication technology,1 international journal of education and information technologies,1 international journal of education and literacy studies,1 international journal of education and social science,-1 international journal of education and the arts,1 "international journal of education in mathematics, science and technology",1 international journal of education technology and science,-1 international journal of education through art,3 international journal of educational development,2 international journal of educational excellence,1 international journal of educational management,1 international journal of educational methodology,1 international journal of educational organization and leadership,1 international journal of educational psychology,1 international journal of educational reform,1 international journal of educational research,2 international journal of educational research and innovation,-1 international journal of educational research open,-1 international journal of educational technology in higher education,2 international journal of electric and hybrid vehicles,1 international journal of electrical and computer engineering,1 international journal of electrical and computer engineering research,-1 international journal of electrical engineering and technology,-1 international journal of electrical engineering education,1 international journal of electrical power and energy systems,2 international journal of electrochemical science,1 international journal of electrochemistry,-1 international journal of electronic business,1 international journal of electronic business management,1 international journal of electronic commerce,2 international journal of electronic finance,1 international journal of electronic governance,1 international journal of electronic government research,1 international journal of electronic healthcare,1 international journal of electronic security and digital forensics,1 international journal of electronic transport,-1 international journal of electronics,1 international journal of electronics and electrical engineering,-1 international journal of electronics and telecommunications,1 international journal of embedded and real-time communication systems,1 international journal of embedded systems,1 international journal of embedded systems and applications,-1 international journal of emergency management,1 international journal of emergency medicine,1 international journal of emergency mental health,1 international journal of emergency services,1 international journal of emerging electric power systems,-1 international journal of emerging markets,1 international journal of emerging technologies and society,1 international journal of emerging technologies in learning,-1 international journal of emerging trends in engineering research,-1 "international journal of emerging trends in engineering, science & technology (ijetest-12)",-1 international journal of emotional education,1 international journal of endocrinology,1 international journal of energy and environmental engineering,1 international journal of energy and environment,1 international journal of energy and power engineering,-1 international journal of energy and statistics,-1 international journal of energy economics and policy,-1 international journal of energy engineering,-1 international journal of energy for a clean environment,1 international journal of energy optimization and engineering,-1 international journal of energy production and management,1 international journal of energy research,1 international journal of energy sector management,1 international journal of energy technology and policy,1 international journal of engine research,1 international journal of engineering & technology,1 international journal of engineering : transactions a basics,-1 "international journal of engineering : transactions b, applications",-1 international journal of engineering and computer science,-1 international journal of engineering and geosciences,-1 international journal of engineering and industries,-1 international journal of engineering and science,-1 international journal of engineering business management,1 international journal of engineering education,1 international journal of engineering management and economics,-1 international journal of engineering pedagogy,1 international journal of engineering practical research,-1 international journal of engineering research and applications,-1 international journal of engineering research and development,-1 international journal of engineering research and technology,-1 international journal of engineering research in africa,1 international journal of engineering research in computer science engineering,1 international journal of engineering science,2 international journal of engineering science and technology,-1 international journal of engineering systems modelling and simulation,-1 international journal of engineering works,-1 international journal of english language teaching,-1 "international journal of english language, literature in humanities",-1 international journal of english linguistics,-1 international journal of english studies,1 international journal of enhanced research in science technology and engineering,-1 international journal of enterprise information systems,1 international journal of entrepreneurial behaviour and research,1 international journal of entrepreneurial venturing,1 international journal of entrepreneurship,-1 international journal of entrepreneurship and innovation,1 international journal of entrepreneurship and innovation management,1 international journal of entrepreneurship and small business,1 international journal of environment & sustainability,-1 international journal of environment and bioenergy,-1 international journal of environment and health,-1 international journal of environment and pollution,1 international journal of environment and resource,-1 international journal of environment and sustainable development,1 international journal of environment and waste management,1 "international journal of environment, agriculture and biotechnology",-1 international journal of environmental analytical chemistry,1 international journal of environmental health research,1 international journal of environmental impacts,-1 international journal of environmental monitoring and analysis,-1 international journal of environmental policy and decision making,1 international journal of environmental research,1 international journal of environmental research and public health,-1 international journal of environmental resources research,-1 international journal of environmental science,-1 international journal of environmental science and development,-1 international journal of environmental science and technology,1 international journal of environmental sciences,-1 international journal of environmental studies,1 international journal of environmental technology and management,1 "international journal of environmental, cultural, economic and social sustainability",1 international journal of epidemiology,3 international journal of eportfolio,-1 international journal of esports,1 international journal of ethics education,1 international journal of eurasian linguistics,-1 international journal of european studies,-1 international journal of evaluation and research in education,1 international journal of event and festival management,1 international journal of event management research,1 international journal of evidence and proof,1 international journal of evidence based coaching and mentoring,1 international journal of evolution equations,1 international journal of excellence in education,1 international journal of exercise science,-1 international journal of exergy,1 international journal of experimental pathology,1 international journal of export marketing,1 international journal of extreme automation and connectivity in healthcare,-1 "international journal of fashion design, technology and education",1 international journal of fashion studies,1 international journal of fatigue,2 international journal of feminist approaches to bioethics,1 international journal of fertility and sterility,1 international journal of fertility and womens medicine,1 international journal of film and media arts,1 international journal of finance and accounting,-1 international journal of finance and banking,-1 international journal of finance and economics,1 international journal of financial innovation in banking,1 international journal of financial studies,-1 international journal of fluid mechanics research,1 international journal of fluid power,1 international journal of food design,1 international journal of food engineering,1 international journal of food microbiology,3 international journal of food properties,1 international journal of food science,1 international journal of food science and technology,1 international journal of food sciences and nutrition,1 international journal of food studies,1 international journal of forecasting,2 international journal of foreign language teaching and research,-1 international journal of forensic mental health,1 international journal of foresight and innovation policy,1 international journal of forest engineering,1 international journal of forestry research,1 international journal of foundations of computer science,1 international journal of fracture,1 international journal of fracture fatigue and wear,-1 international journal of francophone studies,1 international journal of fruit science,1 international journal of fuzzy systems,1 international journal of game theory,1 international journal of game-based learning,1 international journal of gaming and computer-mediated simulations,1 international journal of gastronomy and food science,1 international journal of gender and entrepreneurship,1 international journal of gender and women's studies,-1 "international journal of gender, science and technology",1 international journal of general medicine,-1 international journal of general systems,1 international journal of genetics and molecular biology,-1 international journal of genomics,-1 international journal of genomics and proteomics,-1 international journal of geo-engineering,1 international journal of geographical information science,2 "international journal of geography, geology and environment",-1 international journal of geoheritage and parks,1 international journal of geomechanics,1 international journal of geometric methods in modern physics,1 international journal of geophysics,1 international journal of geosciences,-1 international journal of geosynthetics and ground engineering,1 international journal of geotechnical engineering,1 international journal of geriatric psychiatry,1 international journal of gerontology,1 international journal of global energy issues,1 international journal of global environmental issues,1 international journal of global warming,1 international journal of globalisation and small business,1 international journal of green computing,-1 international journal of green economics,1 international journal of green energy,1 international journal of green technology,-1 international journal of greenhouse gas control,2 international journal of grid and high performance computing,1 international journal of grid and utility computing,1 international journal of group psychotherapy,1 international journal of gynecological and obstetrical research,-1 international journal of gynecological cancer,1 international journal of gynecological pathology,1 international journal of gynecology and obstetrics,1 international journal of handheld computing research,-1 international journal of happiness and development,1 international journal of health care finance and economics,1 international journal of health care quality assurance,1 international journal of health economics and management,1 international journal of health geographics,1 international journal of health governance,1 international journal of health planning and management,1 international journal of health policy and management,1 international journal of health professions,-1 international journal of health promotion and education,1 international journal of health research and innovation,-1 international journal of health sciences,1 international journal of health sciences and research,-1 international journal of health system and disaster management,-1 international journal of healthcare,-1 international journal of healthcare information systems and informatics,1 international journal of healthcare management,1 international journal of healthcare technology and management,1 international journal of heart failure,1 international journal of heat and fluid flow,1 international journal of heat and mass transfer,2 international journal of heavy vehicle systems,1 international journal of hematology,1 international journal of hematology- oncology and stem cell research,-1 international journal of heritage architecture,-1 international journal of heritage studies,3 international journal of high performance computing and networking,1 international journal of high performance computing applications,2 international journal of high speed computing,1 international journal of high speed electronics and systems,1 international journal of high-rise buildings,-1 international journal of higher education,-1 international journal of higher education management,-1 international journal of higher education pedagogies,-1 international journal of hindu studies,2 international journal of historical archaeology,2 international journal of home economics,1 international journal of hospitality and event management,-1 international journal of hospitality and tourism,1 international journal of hospitality and tourism administration,1 international journal of hospitality and tourism systems,1 international journal of hospitality management,2 international journal of housing markets and analysis,1 international journal of housing policy,1 international journal of human capital and information technology professionals,1 international journal of human computer interactions,-1 international journal of human culture studies,1 international journal of human factors and ergonomics,1 international journal of human genetics,-1 international journal of human resource management,2 international journal of human resources development and management,1 international journal of human rights,1 international journal of human rights and constitutional studies,-1 international journal of human rights education,1 international journal of human rights in healthcare,1 international journal of human sciences,-1 international journal of human-computer interaction,2 international journal of human-computer studies,3 international journal of humanities and arts computing,2 international journal of humanities and cultural studies,-1 international journal of humanities and management sciences,-1 international journal of humanities and social science,-1 international journal of humanoid robotics,1 international journal of hybrid information technology,-1 international journal of hybrid innovation technologies,1 international journal of hybrid intelligent systems,1 international journal of hydrogen energy,1 international journal of hydrology science and technology,1 international journal of hydromechatronics,-1 international journal of hygiene and environmental health,2 international journal of hypertension,1 international journal of hyperthermia,1 international journal of iberian studies,1 international journal of ict research in africa and the middle east,-1 international journal of image and graphics,1 international journal of imaging systems and technology,1 international journal of immunogenetics,1 international journal of immunology,-1 international journal of immunopathology and pharmacology,1 international journal of impact engineering,2 international journal of impotence research,1 international journal of inclusive democracy,1 international journal of inclusive education,2 international journal of indigenous health,-1 international journal of industrial and operations research,1 international journal of industrial and systems engineering,1 international journal of industrial chemistry,1 international journal of industrial engineering,-1 international journal of industrial engineering and management,1 international journal of industrial engineering and operations management,1 international journal of industrial ergonomics,1 international journal of industrial organization,2 international journal of infection control,-1 international journal of infectious diseases,1 international journal of inflammation,1 international journal of information and communication technology education,1 international journal of information and computer security,1 international journal of information and decision sciences,1 international journal of information and education technology,-1 international journal of information and electronics engineering,-1 international journal of information and management sciences,-1 international journal of information communication technologies and human development,1 international journal of information ethics,1 international journal of information management,3 international journal of information management data insights,1 international journal of information policy and law,1 international journal of information processing and management,-1 international journal of information quality,1 international journal of information security,1 international journal of information security and cybercrime,1 international journal of information security and privacy,1 international journal of information system modeling and design,1 international journal of information systems and change management,1 international journal of information systems and project management,1 international journal of information systems and social change,1 international journal of information systems for crisis response and management,1 international journal of information systems in the service sector,1 international journal of information technologies and systems approach,-1 international journal of information technology,-1 international journal of information technology,1 international journal of information technology & computer science,-1 international journal of information technology and business management,-1 international journal of information technology and decision making,1 international journal of information technology and management,1 international journal of information technology project management,1 international journal of injury control and safety promotion,1 international journal of innovation,1 international journal of innovation and economic development,-1 international journal of innovation and learning,1 international journal of innovation and regional development,1 international journal of innovation and research in educational sciences,1 international journal of innovation and sustainable development,1 international journal of innovation and technology management,1 international journal of innovation in education,1 international journal of innovation in the digital economy,1 international journal of innovation management,1 international journal of innovation science,1 international journal of innovation studies,1 "international journal of innovation, creativity and change",-1 "international journal of innovation, management and technology",-1 international journal of innovations in engineering and science,-1 international journal of innovative computing and applications,1 international journal of innovative computing information and control,1 "international journal of innovative computing, information and control",-1 international journal of innovative research and development,-1 "international journal of innovative research in science, engineering and technology",-1 international journal of innovative research in technology and science,-1 "international journal of innovative science, engineering and technology",-1 international journal of innovative studies in sciences and engineering technology,-1 international journal of innovative technology and exploring engineering,-1 "international journal of inspired education, science and technology",-1 international journal of instruction,-1 international journal of instructional technology & distance learning,1 international journal of intangible heritage,1 international journal of integrated care,2 international journal of integrated engineering,-1 international journal of integrated supply management,1 international journal of integrating technology in education,-1 international journal of intellectual property management,1 international journal of intelligence and counterintelligence,1 international journal of intelligent computing and cybernetics,1 international journal of intelligent computing research,-1 international journal of intelligent enterprise,1 international journal of intelligent information and database systems,1 international journal of intelligent information technologies,1 international journal of intelligent robotics and applications,1 international journal of intelligent systems,1 international journal of intelligent systems technologies and applications,1 international journal of intelligent transport systems research,1 international journal of intelligent unmanned systems,-1 international journal of intensive short-term dynamic psychotherapy,1 international journal of interactive communication systems and technologies,1 international journal of interactive mobile technologies,1 international journal of interactive multimedia and artificial intelligence,-1 international journal of interactive worlds,-1 international journal of intercultural information management,1 international journal of intercultural relations,2 international journal of interdisciplinary educational studies,-1 international journal of interdisciplinary organizational studies,-1 international journal of interdisciplinary research and innovations,-1 international journal of interdisciplinary telecommunications and networking,-1 international journal of internet and enterprise management,1 international journal of internet marketing and advertising,1 international journal of internet of things and web services,-1 international journal of internet protocol technology,1 international journal of internet science,1 international journal of interoperability in business information systems,1 international journal of interpreter education,1 international journal of inventory research,1 international journal of islamic and middle eastern finance and management,1 international journal of islamic architecture,-1 international journal of islamic banking and finance research,-1 "international journal of it in architecture, engineering and construction",-1 international journal of it/business alignment and governance,1 international journal of japanese sociology,1 international journal of kinesiology and sports science,-1 international journal of knowledge and learning,1 international journal of knowledge and systems science,-1 international journal of knowledge based and intelligent engineering systems,1 international journal of knowledge discovery in bioinformatics,1 international journal of knowledge engineering and data mining,-1 international journal of knowledge engineering and soft data paradigms,-1 international journal of knowledge management,1 international journal of knowledge management in tourism and hospitality,1 international journal of knowledge management studies,1 "international journal of knowledge, culture and change management",1 international journal of knowledge-based development,1 international journal of knowledge-based organizations,1 international journal of laboratory hematology,1 international journal of language & linguistics,-1 international journal of language and applied linguistics,-1 international journal of language and communication disorders,3 international journal of language and culture,1 international journal of language studies,1 international journal of language testing,1 "international journal of language, translation and intercultural communication",-1 international journal of languages and literatures,-1 international journal of languange education and applied linguistics,-1 international journal of latest research in science & technology,-1 international journal of latest trends in computing,-1 international journal of law and information technology,2 international journal of law and management,1 international journal of law and psychiatry,1 international journal of law crime and justice,1 international journal of law in context,1 "international journal of law, policy and the family",2 international journal of leadership in education,1 international journal of leadership studies,1 international journal of lean six sigma,1 international journal of learner corpus research,1 international journal of learner diversity and identities,-1 international journal of learning,1 international journal of learning & teaching,-1 international journal of learning analytics and artificial intelligence for education,1 international journal of learning and change,1 international journal of learning and intellectual capital,1 international journal of learning and media,1 international journal of learning and teaching,1 international journal of learning in higher education,-1 international journal of learning technologies and learning environments,-1 international journal of learning technology,1 "international journal of learning, teaching and educational research",-1 international journal of legal discourse,1 international journal of legal information,1 international journal of legal medicine,2 international journal of leisure and tourism marketing,1 international journal of leprosy and other mycobacterial diseases,1 international journal of lexicography,2 international journal of liability and scientific enquiry,1 international journal of life cycle assessment,2 international journal of lifelong education,1 international journal of lightweight materials and manufacture,1 international journal of limnology,1 international journal of linguistics & communication,-1 "international journal of linguistics, literature and culture",-1 international journal of listening,1 international journal of literacies,-1 international journal of literary linguistics,1 international journal of literature and arts,-1 international journal of logistics management,1 international journal of logistics systems and management,1 international journal of logistics: research and applications,1 international journal of low radiation,1 international journal of low-carbon technologies,1 international journal of lower extremity wounds,1 international journal of machine consciousness,1 international journal of machine learning and computing,-1 international journal of machine learning and cybernetics,1 international journal of machine tools and manufacture,3 international journal of machining and machinability of materials,1 international journal of magazine studies,-1 international journal of management accounting research,1 international journal of management and applied research,-1 international journal of management and decision making,1 international journal of management and economics,-1 international journal of management and enterprise development,1 international journal of management and network economics,1 international journal of management and sustainability,1 international journal of management cases,-1 international journal of management concepts and philosophy,1 international journal of management development,-1 international journal of management excellence,-1 international journal of management in education,1 international journal of management practice,1 international journal of management reviews,2 international journal of management science and engineering management,-1 "international journal of management, economics & social sciences",-1 "international journal of management, knowledge and learning",1 international journal of managerial and financial accounting,1 international journal of managerial finance,1 international journal of managerial studies and research,-1 international journal of managing information technology,-1 international journal of managing projects in business,1 international journal of manpower,1 international journal of manufacturing research,1 international journal of manufacturing technology and management,1 international journal of marine and coastal law,1 international journal of marine design,1 international journal of maritime engineering,1 international journal of maritime history,2 international journal of market research,1 international journal of marketing studies,-1 international journal of mass customisation,-1 international journal of mass emergencies and disasters,1 international journal of mass spectrometry,1 international journal of material forming,1 international journal of material science,-1 international journal of materials and product technology,1 international journal of materials and structural integrity,1 international journal of materials and structural reliability,1 international journal of materials engineering innovation,1 international journal of materials research,1 international journal of materials science,-1 international journal of mathematical analysis,-1 international journal of mathematical and statistical sciences,-1 international journal of mathematical education in science and technology,1 "international journal of mathematical modeling, simulation and applications",1 international journal of mathematical modelling and numerical optimization,-1 international journal of mathematical models and methods in applied sciences,-1 "international journal of mathematical, engineering and management sciences",1 international journal of mathematics,1 international journal of mathematics and computer science,1 international journal of mathematics and computers in simulation,-1 international journal of mathematics and mathematical sciences,-1 international journal of mathematics and statistics,-1 international journal of mathematics for industry,1 international journal of mathematics in operational research,-1 "international journal of mathematics, game theory and algebra",1 international journal of mechanic systems engineering,-1 international journal of mechanical engineering and applications,-1 international journal of mechanical engineering and robotics research,-1 international journal of mechanical engineering education,1 international journal of mechanical sciences,1 international journal of mechanics and materials in design,1 international journal of mechatronics and manufacturing systems,1 international journal of media and cultural politics,1 international journal of media and information literacy,1 "international journal of media, journalism and mass communications",-1 international journal of medical and health sciences,-1 international journal of medical education,-1 international journal of medical engineering and informatics,1 international journal of medical informatics,3 international journal of medical microbiology,1 international journal of medical pharmaceutical and health sciences,-1 international journal of medical research and health sciences,-1 international journal of medical robotics and computer assisted surgery,1 international journal of medical sciences,1 "international journal of medical, health, biomedical, bioengineering and pharmaceutical engineering",-1 international journal of medicinal mushrooms,1 international journal of medicine and biomedical research,-1 international journal of mens health,1 international journal of mental health,1 international journal of mental health and addiction,1 international journal of mental health nursing,2 international journal of mental health promotion,1 international journal of mental health systems,-1 international journal of mentoring and coaching in education.,1 "international journal of metadata, semantics and ontologies",1 international journal of metaheuristics,1 international journal of metalcasting,1 international journal of metallurgical engineering,-1 international journal of methods in psychiatric research,1 international journal of micro air vehicles,1 international journal of microbiology,1 international journal of microsimulation,1 international journal of microstructure and materials properties,1 international journal of microwave and optical technology,1 international journal of microwave and wireless technologies,1 international journal of middle east studies,2 "international journal of migration, health and social care",1 international journal of military history and historiography,1 international journal of mineral processing,1 international journal of minerals metallurgy and materials,1 international journal of mining and mineral engineering,1 international journal of mining engineering and mineral processing,-1 international journal of mining science and technology,2 "international journal of mining, reclamation and environment",1 international journal of mobile and blended learning,1 international journal of mobile communications,1 international journal of mobile human computer interaction,1 international journal of mobile learning and organisation,1 "international journal of modeling, simulation, and scientific computing",1 international journal of modelling & simulation,1 international journal of modelling in operations management,-1 "international journal of modelling, identification and control",1 international journal of modern education and computer science,-1 international journal of modern engineering research,-1 international journal of modern physics : conference series,-1 international journal of modern physics a,1 international journal of modern physics b,1 international journal of modern physics c,1 international journal of modern physics d,1 international journal of modern physics e: nuclear physics,1 international journal of modern sciences and engineering technology,-1 international journal of molecular epidemiology and genetics,1 international journal of molecular medicine,1 international journal of molecular sciences,-1 international journal of monitoring and surveillance technologies research,-1 international journal of morphology,1 international journal of ms care,1 international journal of multicriteria decision making,1 international journal of multicultural education,1 international journal of multidisciplinary perspectives in higher education,1 international journal of multidisciplinary research configuration,-1 international journal of multilingual education,-1 international journal of multilingualism,2 international journal of multimedia and ubiquitous engineering,-1 international journal of multimedia data engineering & management,1 international journal of multimedia intelligence and security,1 international journal of multimedia technology,1 international journal of multinational corporation strategy,1 international journal of multiphase flow,2 international journal of multiple research approaches,1 international journal of multivariate data analysis,1 international journal of music and performing arts,-1 international journal of music business research,-1 international journal of music education,2 international journal of music in early childhood,-1 "international journal of music science, technology and art",1 international journal of nano and biomaterials,1 international journal of nanomanufacturing,1 international journal of nanomedicine,1 international journal of nanoparticles,1 international journal of nanoscience,1 international journal of nanotechnology,1 international journal of nautical archaeology,2 international journal of naval architecture and ocean engineering,1 international journal of nematology,1 international journal of neonatal screening,-1 international journal of nephrology,1 international journal of network dynamics and intelligence,-1 international journal of network management,1 international journal of networking and computing,-1 international journal of networking and virtual organisations,1 international journal of neural systems,1 international journal of neuropsychopharmacology,1 international journal of neurorehabilitation,-1 international journal of neuroscience,1 "international journal of new media, technology and the arts",1 international journal of non-linear mechanics,1 international journal of nonlinear analysis and applications,-1 international journal of nonlinear sciences and numerical simulation,1 international journal of not-for-profit law,-1 "international journal of nuclear energy, science and technology",-1 "international journal of nuclear governance, economy and ecology",1 international journal of nuclear knowledge management,1 international journal of number theory,1 international journal of numerical analysis and modeling,1 international journal of numerical methods for heat and fluid flow,1 international journal of numerical modelling: electronic networks devices and fields,1 international journal of nursing & care,-1 international journal of nursing and health care research,-1 international journal of nursing education,-1 international journal of nursing education scholarship,1 international journal of nursing knowledge,1 international journal of nursing practice,1 international journal of nursing sciences,1 international journal of nursing studies,3 international journal of nursing studies advances,1 international journal of nutrition sciences,-1 international journal of obesity,3 international journal of obesity supplements,1 international journal of obstetric anesthesia,1 international journal of occupational and environmental health,1 international journal of occupational and environmental medicine,1 international journal of occupational and environmental safety,1 international journal of occupational health and public health nursing,1 international journal of occupational medicine and environmental health,1 international journal of occupational safety and ergonomics,1 international journal of ocean systems management,-1 international journal of oceanography & aquaculture,-1 international journal of odonatology,1 international journal of offender therapy and comparative criminology,1 international journal of offshore and polar engineering,1 "international journal of oil, gas and coal technology",1 international journal of older people nursing,1 international journal of oncology,1 international journal of online and biomedical engineering,1 international journal of online dispute resolution,-1 international journal of online marketing,-1 international journal of online pedagogy and course design,1 international journal of open source software and processes,1 international journal of operational research,1 international journal of operations and production management,3 international journal of ophthalmology,1 international journal of optomechatronics,1 international journal of oral and maxillofacial implants,1 international journal of oral and maxillofacial surgery,1 international journal of oral implantology,1 international journal of oral science,3 international journal of oral-medical sciences,1 international journal of organisational behaviour,1 international journal of organisational design and engineering,1 international journal of organization theory and behavior,1 international journal of organizational analysis,1 international journal of organizational leadership,-1 international journal of orthodox theology,1 international journal of orthopaedic and trauma nursing,1 international journal of osteoarchaeology,2 international journal of osteopathic medicine,1 international journal of paediatric dentistry,2 international journal of paleopathology,1 international journal of palliative nursing,1 international journal of parallel programming,2 "international journal of parallel, emergent and distributed systems",1 international journal of parliamentary studies,1 international journal of pattern recognition and artificial intelligence,1 international journal of pavement engineering,1 international journal of peace studies,1 international journal of pedagogy and curriculum,-1 international journal of pediatric otorhinolaryngology,1 international journal of pediatrics,-1 international journal of peptide research and therapeutics,1 international journal of peptides,1 international journal of performability engineering,1 international journal of performance analysis in sport,1 international journal of performance arts and digital media,1 international journal of performance measurement,-1 international journal of periodontics and restorative dentistry,1 international journal of person centered medicine,1 international journal of personality psychology,-1 international journal of pervasive computing and communications,1 international journal of pest management,1 international journal of pharma medicine and biological sciences,-1 international journal of pharmaceutical and healthcare marketing,1 international journal of pharmaceutical and phytopharmacological research,-1 international journal of pharmaceutical compounding,1 international journal of pharmaceutical research and allied sciences,-1 international journal of pharmaceutics,2 international journal of pharmaceutics & pharmacology,-1 international journal of pharmaceutics x,1 international journal of pharmacology,-1 "international journal of pharmacology, phytochemistry and ethnomedicine",-1 international journal of pharmacy practice,1 international journal of philosophical studies,2 international journal of philosophy & theology,1 international journal of philosophy study,-1 international journal of photoenergy,1 international journal of physical distribution and logistics management,2 international journal of physical education: a review publication,1 international journal of physical medicine and rehabilitation,-1 international journal of physical modelling in geotechnics,1 international journal of physical sciences,-1 international journal of physics,-1 "international journal of physiology, pathophysiology and pharmacology",1 international journal of phytoremediation,1 international journal of plant biology,-1 international journal of plant production,1 international journal of plant science and ecology,-1 international journal of plant sciences,1 international journal of plasticity,3 international journal of play,1 international journal of play therapy,1 international journal of police science & management.,1 international journal of politic and security,-1 international journal of political economy: a journal of translations,1 international journal of politics and good governance,-1 international journal of politics and law research,1 "international journal of politics, culture and society",1 international journal of polymer analysis and characterization,1 international journal of polymer science,-1 international journal of polymeric materials and polymeric biomaterials,1 international journal of population data science,1 international journal of population geography,1 international journal of population studies,1 international journal of portfolio analysis and management,-1 international journal of powder metallurgy,1 international journal of power electronics and drive systems,1 international journal of powertrains,1 international journal of practical theology,2 international journal of precision engineering and manufacturing,1 international journal of precision engineering and manufacturing green technology,1 international journal of press-politics,3 international journal of pressure vessels and piping,1 international journal of primatology,1 international journal of prisoner health,1 international journal of private law,1 international journal of probiotics & prebiotics,1 international journal of procedural law,1 international journal of process management and benchmarking,1 international journal of procurement management,1 international journal of product development,1 international journal of product lifecycle management,1 international journal of production economics,2 international journal of production management and engineering,-1 international journal of production research,2 international journal of productivity and performance management,1 international journal of productivity and quality management,1 international journal of professional business review,-1 international journal of progressive education,1 international journal of project management,3 international journal of project organisation and management,1 international journal of prosthodontics,1 international journal of psychiatry in clinical practice,1 international journal of psychiatry in medicine,1 international journal of psychoanalysis,1 international journal of psychological studies,-1 international journal of psychology,1 international journal of psychology and psychological therapy,1 international journal of psychophysiology,1 international journal of psychotherapy practice and research,1 international journal of public administration,1 international journal of public administration in the digital age,1 international journal of public and private health care management and economics,1 "international journal of public and private perspectives on healthcare, culture, and the environment",-1 international journal of public health,1 international journal of public leadership,1 international journal of public opinion research,2 international journal of public policy,1 international journal of public sector management,2 international journal of public sector performance management,1 international journal of public theology,1 international journal of pure and applied mathematical sciences,1 international journal of pure and applied mathematics,-1 international journal of qualitative methods,1 international journal of qualitative studies in education,1 international journal of qualitative studies on health and well-being,1 international journal of quality and reliability management,1 international journal of quality and service sciences,1 international journal of quality assurance in engineering and technology education,-1 international journal of quantitative and qualitative research methods,-1 international journal of quantitative research in education,1 international journal of quantum chemistry,1 international journal of quantum information,1 international journal of radiation biology,1 international journal of radiation oncology biology physics,2 international journal of radio frequency identification technology and applications (ijrfita),1 international journal of railway,1 international journal of rapid manufacturing,1 international journal of rapid solidification,1 international journal of reality therapy,1 international journal of reasoning-based intelligent systems,1 international journal of recent technology and engineering,-1 international journal of refractory metals and hard materials,1 international journal of refrigeration-revue internationale du froid,1 international journal of refugee law,3 international journal of rehabilitation research,1 "international journal of reliability, quality and safety engineering",1 international journal of religion and spirituality in society,1 international journal of religious tourism and pilgrimage,-1 international journal of remote sensing,1 international journal of renewable and sustainable energy,-1 international journal of renewable energy and biofuels,-1 international journal of renewable energy research,-1 international journal of renewable energy technology,-1 international journal of reproductive biomedicine,-1 international journal of research and method in education,1 international journal of research in education and science,-1 international journal of research in education methodology,-1 international journal of research in marketing,3 international journal of research in social science and humanities,-1 international journal of research in social sciences,-1 international journal of research in undergraduate mathematics education,1 international journal of research studies in education,-1 international journal of research studies in management,-1 international journal of research studies in psychology,1 "international journal of research, innovation and commercialisation",-1 international journal of retail and distribution management,1 international journal of revenue management,1 international journal of rf and microwave computer-aided engineering,1 international journal of rf technologies,-1 international journal of rheumatic diseases,1 international journal of risk and safety in medicine,1 international journal of risk assessment and management,1 international journal of river basin management,1 international journal of robotics and automation,1 international journal of robotics and control systems,1 international journal of robotics research,3 international journal of robust and nonlinear control,2 international journal of rock mechanics and mining sciences,3 international journal of role-playing,1 international journal of rotating machinery,1 international journal of rural management,1 international journal of russian studies,-1 international journal of safety and security engineering,-1 international journal of safety and security in tourism / hospitality,1 international journal of satellite communications and networking,1 international journal of school and educational psychology,1 international journal of science and mathematics education,1 international journal of science education,3 international journal of science education part b communication and public engagement,1 international journal of science technology and society,-1 "international journal of science, commerce and humanities",-1 "international journal of science, mathematics and technology learning",1 international journal of sciences,-1 international journal of scientific and research publications,-1 international journal of scientific and technological research,-1 international journal of scientific research in inventions and new ideas,-1 international journal of scottish theatre and screen,1 international journal of secure software engineering,1 international journal of security and networks,1 international journal of sediment research,1 international journal of selection and assessment,1 international journal of self help and self care,1 international journal of semantic computing,1 international journal of sensor networks,1 international journal of serious games,1 "international journal of service science, management, engineering, and technology",-1 international journal of services and operations management,1 international journal of services and standards,1 international journal of services operations and informatics,1 international journal of services sciences,1 "international journal of services, economics and management",1 "international journal of services, technology and management",1 international journal of sexual health,1 international journal of shape modeling,1 international journal of sheep and wool science,1 international journal of shipping and transport logistics,1 "international journal of simulation : systems, science and technology",-1 international journal of simulation and process modelling,1 international journal of simulation modelling,-1 international journal of sino-western studies,1 international journal of six sigma and competitive advantage,1 international journal of small business and entrepreneurship research,-1 international journal of smart and nano materials,1 international journal of smart education and urban society,1 international journal of smart grid and clean energy,-1 international journal of smart home,-1 international journal of smart sensing and intelligent systems,1 international journal of social and humanistic computing,1 international journal of social and organizational dynamics in it,1 international journal of social computing and cyber-physical systems,-1 international journal of social determinants of health and health services,1 international journal of social ecology and sustainable development,1 international journal of social economics,1 international journal of social entrepreneurship and innovation,1 international journal of social forestry,1 international journal of social imaginaries,1 international journal of social media and interactive learning environments,1 international journal of social media and online communities,1 international journal of social network mining,-1 international journal of social pedagogy,1 international journal of social policy and education,-1 international journal of social psychiatry,2 international journal of social quality,1 international journal of social research methodology,1 international journal of social robotics,2 international journal of social science and economic research,-1 international journal of social science research,-1 international journal of social science studies,-1 international journal of social sciences,-1 international journal of social sciences and humanities invention,-1 "international journal of social sustainability in economic, social and cultural context",-1 international journal of social welfare,2 international journal of society systems science,1 "international journal of society, culture and language",1 international journal of sociology,1 international journal of sociology and social policy,1 international journal of sociology of agriculture and food,1 international journal of sociology study,1 international journal of sociotechnology and knowledge development,1 international journal of software engineering and its applications,-1 international journal of software engineering and knowledge engineering,1 international journal of software engineering and soft computing,-1 international journal of solids and structures,2 international journal of spa and wellness,1 international journal of space structures,1 international journal of space-based and situated computing,-1 international journal of spatial data infrastructures research,1 international journal of special education,1 international journal of speech language and the law,1 international journal of speech technology,1 international journal of speech-language pathology,1 international journal of speleology,1 international journal of sport and exercise psychology,1 international journal of sport communication,1 international journal of sport culture and science,-1 international journal of sport finance,1 international journal of sport management,1 international journal of sport management and marketing,1 "international journal of sport management, recreation & tourism",1 international journal of sport nutrition and exercise metabolism,1 international journal of sport policy and politics,1 international journal of sport psychology,1 international journal of sports marketing and sponsorship,1 international journal of sports medicine,1 international journal of sports physical therapy,-1 international journal of sports physiology and performance,1 international journal of sports science and coaching,1 international journal of spray and combustion dynamics,-1 international journal of standardization research,1 international journal of statistical sciences,1 international journal of statistics and management systems,-1 international journal of std and aids,1 international journal of steel structures,1 international journal of stem cell research & therapeutics,-1 international journal of stem cells,1 international journal of stem education,1 international journal of strategic change management,1 international journal of strategic communication,1 international journal of strategic decision sciences,-1 international journal of strategic engineering asset management,1 international journal of strategic information technology and applications,-1 international journal of strategic management,-1 international journal of strategic property management,1 international journal of strength and conditioning,-1 international journal of stress management,1 international journal of stroke,1 international journal of structural integrity,1 international journal of structural stability and dynamics,1 international journal of studies in education and science,1 international journal of supply chain and inventory management,1 international journal of supply chain and operations resilience,-1 international journal of supply chain management,-1 international journal of surface science and engineering,1 international journal of surgery,3 international journal of surgery protocols,-1 international journal of surgical pathology,1 international journal of sustainability in higher education,1 international journal of sustainability policy and practice,-1 international journal of sustainable agricultural technology,1 international journal of sustainable building technology and urban development,1 international journal of sustainable built environment,1 international journal of sustainable construction engineering and technology,-1 international journal of sustainable design,-1 international journal of sustainable development,1 international journal of sustainable development and planning,-1 international journal of sustainable development and world ecology,1 international journal of sustainable economy,1 international journal of sustainable energy,1 international journal of sustainable energy planning and management,1 international journal of sustainable engineering,1 international journal of sustainable fashion and textiles,1 international journal of sustainable lighting,1 international journal of sustainable materials and structural systems,1 international journal of sustainable society,1 international journal of sustainable strategic management,-1 international journal of sustainable strategy and research,-1 international journal of sustainable transportation,1 international journal of sustainable water and environmental systems,-1 international journal of synergy and research,-1 international journal of systematic and evolutionary microbiology,1 international journal of systematic theology,3 international journal of systemic therapy,1 international journal of systems and service-oriented engineering,1 international journal of systems and society,1 international journal of systems and software security and protection,1 "international journal of systems applications, engineering & development",-1 international journal of systems assurance engineering and management,1 international journal of systems science,1 international journal of systems science : operations & logistics,1 international journal of taiwan studies,1 international journal of teaching and learning in higher education,1 international journal of technoentrepreneurship,1 international journal of technoethics,1 international journal of technologies in learning,-1 international journal of technology,1 international journal of technology and design education,2 international journal of technology and globalisation,1 international journal of technology and human interaction,1 international journal of technology and inclusive education,1 international journal of technology assessment in health care,1 international journal of technology diffusion,-1 international journal of technology enhanced learning,1 international journal of technology in education,1 international journal of technology in education and science,1 international journal of technology in teaching and learning,-1 international journal of technology intelligence and planning,1 international journal of technology management,1 international journal of technology management & sustainable development,1 international journal of technology marketing,1 international journal of technology transfer and commercialisation,1 "international journal of technology, innovation and management",-1 "international journal of technology, knowledge and society",1 "international journal of technology, policy and management",1 international journal of telemedicine and applications,1 international journal of telemedicine and clinical practices,1 international journal of testing,1 international journal of the analytic hierarchy process,1 international journal of the arts in society,1 international journal of the book,1 international journal of the classical tradition,2 international journal of the economics of business,1 international journal of the history of sport,2 international journal of the humanities,1 international journal of the legal profession,1 international journal of the linguistic association of the southwest,-1 international journal of the platonic tradition,1 international journal of the society of materials engineering for resources,1 international journal of the sociology of language,3 international journal of the sociology of leisure,1 international journal of theoretical and applied finance,1 international journal of theoretical and applied nanotechnology,1 international journal of theoretical and mathematical physics,-1 international journal of theoretical physics,1 "international journal of theoretical physics, group theory and nonlinear optics",1 international journal of therapy and rehabilitation,1 international journal of thermal & environmental engineering,-1 international journal of thermal sciences,1 international journal of thermodynamics,1 international journal of thermofluids,1 international journal of thermophysics,1 international journal of tomography and simulation,-1 international journal of tourism anthropology,1 international journal of tourism cities,1 international journal of tourism policy,1 international journal of tourism research,1 international journal of tourism sciences,1 international journal of toxicology,1 international journal of trade and global markets,1 international journal of training and development,1 international journal of transgender health,1 international journal of transitional justice,1 international journal of transitions and innovation systems,-1 international journal of transitions in childhood,1 international journal of translational science,1 international journal of transmedia literacy,-1 international journal of transport development and integration,-1 international journal of transport economics,1 international journal of transport phenomena,1 international journal of trends in medicine,-1 international journal of trichology,-1 international journal of tropical insect science,1 international journal of tuberculosis and lung disease,1 international journal of turbo and jet-engines,1 "international journal of turbomachinery, propulsion and power",-1 international journal of ultra wideband communications and systems (ijuwbcs),-1 international journal of uncertainty fuzziness and knowledge-based systems,1 international journal of unconventional computing,1 international journal of urban and regional research,3 international journal of urban sciences,1 international journal of urban sustainable development,1 international journal of urological nursing,1 international journal of urology,1 international journal of user-system interaction,-1 international journal of value chain management,1 international journal of vascular medicine,1 international journal of vehicle autonomous systems,1 international journal of vehicle design,1 international journal of vehicle performance,1 international journal of vehicle systems modelling and testing,1 international journal of ventilation,1 international journal of veterinary medicine,-1 international journal of veterinary sciences and medicine,-1 international journal of virtual and personal learning environments,1 international journal of virtual worlds and human computer interaction,-1 international journal of water governance,1 international journal of water resources development,1 international journal of wavelets multiresolution and information processing,1 international journal of web and grid services,1 international journal of web and semantic technology,-1 international journal of web based communities,1 international journal of web engineering and technology,1 international journal of web information systems,1 international journal of web portals,1 international journal of web services practices,1 international journal of web services research,1 international journal of web-based learning and teaching technologies,1 international journal of wellbeing,1 international journal of wettability science & technology,1 international journal of whole schooling,1 international journal of wildland fire,1 international journal of wine business research,1 international journal of wine research,-1 international journal of wireless and mobile computing,-1 international journal of wireless and mobile networks,-1 international journal of wireless information networks,1 international journal of wireless networks and broadband technologies,-1 international journal of women's health,1 international journal of wood culture,1 international journal of work innovation,1 international journal of work organisation and emotion,1 international journal of workplace health management,1 international journal of young adult literature,1 international journal of zizek studies,1 international journal of zoology,-1 international journal on advances in intelligent systems,-1 international journal on advances in internet technology,-1 international journal on advances in life sciences,-1 international journal on advances in networks and services,-1 international journal on advances in security,1 international journal on advances in software,-1 international journal on advances in systems and measurements,-1 international journal on advances in telecommunications,-1 international journal on applied physics and engineering,-1 international journal on artificial intelligence tools,1 international journal on biomedicine and healthcare,-1 international journal on child maltreatment,1 international journal on digital libraries,1 international journal on disability and human development,1 international journal on document analysis and recognition,1 international journal on e-learning,1 international journal on engineering applications,-1 "international journal on engineering, science and technology",1 international journal on food system dynamics,1 international journal on hydropower and dams,1 international journal on information technologies and security,1 international journal on interactive design and manufacturing,1 "international journal on language, literature and culture in education",1 international journal on measurement technologies and instrumentation engineering,-1 international journal on mental health and deafness,1 international journal on minority and group rights,2 international journal on recent and innovation trends in computing and communication,-1 international journal on semantic web and information systems,1 international journal on social and education sciences,1 international journal on software tools for technology transfer,1 international journal on studies in education,1 international journal  of logistics economics and globalisation,1 international keystone conference,1 international labor and working-class history,2 international labor rights case law,-1 international labour organisation,-1 international labour review,1 international legal materials,1 "international letters of chemistry, physics and astronomy",-1 international letters of natural sciences,-1 international letters of social and humanistic sciences,-1 international lichenological newsletter,-1 international litigation in practice,1 international m3 semantic interoperability workshop,-1 international management development association,-1 international maritime health,1 international marketing review,2 international materials reviews,2 international mathematical forum,-1 international mathematics research notices,2 international medical education,-1 international medical journal,-1 international microbiology,1 international microelectronics and packaging society uk,-1 international migration,1 international migration review,2 international mobile machine control conference,-1 international monetary fund,-1 international multi-conference on computing in the global information technology,-1 "international multi-conference on systems, signals and devices",-1 international multidisciplinary scientific geoconference sgem,-1 international multilingual research journal,1 international negotiation,1 international negotiation series,1 international network for engineering education and research,-1 international neurourology journal,-1 international nursing review,2 international oil spill conference proceedings,-1 international online journal of education and teaching,-1 international ophthalmology,1 international ophthalmology clinics,1 international organization,3 international organization center of academic research,-1 international organizations law review,1 international orthopaedics,1 international peace studies centre,-1 international peacekeeping,1 international perspectives in psychology,1 international perspectives on inclusive education,1 international perspectives on sexual and reproductive health,1 international philosophical quarterly,1 international planning studies,1 international platform of jurists for east timor,-1 international political science review,2 international political sociology,2 international politics,1 international politics reviews,1 international polymer processing,1 international power electronics and motion control conference,1 international practice development journal,1 international pragmatics association,1 "international proceedings of chemical, biological and environmental engineering",-1 international proceedings of computer science and information technology,-1 international proceedings of economics development and research,-1 international productivity monitor,-1 international psychogeriatrics,1 international public management journal,2 international public management review,1 international pulp bleaching conference,-1 international quarterly for asian studies,1 international quarterly of community health education,1 international reading association,1 international real estate review,-1 international refereed journal of engineering and science,-1 international regional science review,1 international relations,1 international relations of the asia-pacific,1 international relations studies series,1 international reports on socio-informatics,-1 international research in childrens literature,1 international research in early childhood education,-1 international research in geographical and environmental education,1 international research journal of engineering and technology,-1 international research journal of finance and economics,-1 international research journal of public and environmental health,-1 international review for the sociology of sport,1 international review of administrative sciences,2 international review of aerospace engineering,1 international review of african american art,1 international review of applied economics,1 international review of automatic control,-1 international review of business and social sciences,-1 international review of cell and molecular biology,1 international review of chemical engineering,-1 international review of civil engineering,-1 international review of economics,1 international review of economics and finance,1 international review of economics education,1 international review of education,1 international review of electrical engineering: iree,1 international review of entrepreneurship,1 international review of environmental and resource economics,1 international review of finance,1 international review of financial analysis,1 international review of hydrobiology,1 international review of law and economics,3 "international review of law, computers and technology",1 international review of mechanical engineering,1 international review of mission,1 international review of neurobiology,1 international review of pragmatics,1 international review of psychiatry,1 international review of public administration,1 international review of public policy,1 international review of qualitative research,1 international review of research in developmental disabilities,1 international review of research in open and distance learning,1 "international review of retail, distribution and consumer research",1 international review of scottish studies,1 international review of social history,3 international review of social research,1 international review of social sciences and humanities,-1 international review of sociology,1 international review of sport and exercise psychology,3 international review of the aesthetics and sociology of music,1 international review of the red cross,1 international review of victimology,1 international review on modelling and simulations,1 international review on public and nonprofit marketing,1 international reviews in physical chemistry,1 international reviews of immunology,1 international road weather conference,-1 international science and technology conference : modern networking technologies,-1 international scientific conference electric power engineering,-1 international scientific conference management and engineering,-1 "international scientific conference on information, communication and energy systems and technologies",1 international scientific conference on power and electrical engineering of riga technical university,-1 "international scientific conference theory, research and education in nursing",-1 international scientific journal of computing,1 international scientific-practical conference problems of infocommunications science and technology,-1 international security,3 international semantic web conference,2 international seminar on orc power systems,1 international seminars in pediatric gastroenterology and nutrition,1 international series in operations research and management science,-1 international series in software engineering,1 international series on information systems and management in creative e-media,1 international shipbuilding progress,1 international small business journal,2 international soc design conference,-1 international social science journal,1 international social security review,1 international social work,2 international society for asphalt pavements,1 international society for computers and their applications,-1 international society for indoor air quality and climate,-1 international society for music education,-1 international society for music information retrieval,1 international society for productivity enhancement,1 international society for professiornal innovation management,-1 international society for the study of work & organizational values,-1 international society of arboriculture,-1 international society of automation,-1 international society of information fusion,-1 international society of offshore and polar engineers,1 international society of the learning sciences,-1 international sociology,2 international soil and water conservation research,1 international solar energy society,1 "international solid-state sensors, actuators and microsystems conference",-1 international sport coaching journal,1 international sportmed journal,1 international statistical institute,1 international statistical review,1 international studies,1 international studies in educational administration,1 international studies in human rights,1 international studies in humour,-1 international studies in philosophy,1 international studies in sociology and social anthropology,1 international studies in sociology of education,1 international studies in the philosophy of science,2 international studies of management and organization,1 international studies perspectives,1 international studies quarterly,3 international studies review,1 international sugar journal,1 international summer school “advanced course on petri nets”,-1 international surgery,1 international symposium on advanced networks and telecommunication systems,1 international symposium on antennas and propagation,-1 "international symposium on artificial intelligence, robotics and automation in space",-1 international symposium on biomechanics in sports,-1 international symposium on biomedical imaging,1 international symposium on business modeling and software design,1 international symposium on communications and information technologies,1 international symposium on computational geometry,2 international symposium on computer architecture,3 international symposium on computers in education,-1 "international symposium on dependable software engineering: theories, tools, and applications",-1 international symposium on empirical software engineering and measurement,2 international symposium on forestry mechanization,-1 international symposium on fundamentals of electrical engineering,-1 international symposium on image and signal processing and analysis,1 international symposium on magnetic bearings,1 international symposium on medical information and communication technology,1 international symposium on networks-on-chip,-1 international symposium on parallel computing in electrical engineering,-1 international symposium on performance evaluation of computer and telecommunication systems,-1 international symposium on quality electronic design proceedings,-1 international symposium on robotics,-1 international symposium on robotics and intelligent sensors,-1 international symposium on robotics research,-1 international symposium on semantic mining in biomedicine,-1 international symposium on semiconductor light emitting devices,-1 international symposium on software testing and analysis,2 international symposium on telecommunications,-1 international symposium on the science and technology of light sources,1 international symposium on topical problems in field of electrical and power engineering,-1 "international symposium on vehicle, mechanical and electrical engineering",-1 international symposium on wireless communication systems,1 international system safety conference,-1 international tax and public finance,2 international teacher education conference,-1 international telecommunication union,-1 international telecommunications energy conference,-1 international telecommunications network strategy and planning symposium,-1 international telecommunications symposium,-1 international telework workshop,-1 international theory,3 international topical meeting on optical sensing and artificial vision,-1 international trade journal,1 international trade law & regulation,-1 "international transaction journal of engineering, management, & applied sciences & technologies",-1 international transactions in operational research,1 international transactions on electrical energy systems,1 international transfer pricing journal,-1 international transport law review,1 international turfgrass society research journal,-1 international union for conservation of nature,-1 international union of forest research organizations,-1 international union of radio science,-1 international union rights,-1 international universities power engineering conference,-1 international universities press,1 international urogynecology journal,1 international urology and nephrology,1 international vat monitor,-1 international wireless communications and mobile computing conference,1 international women's news,-1 international wood products journal,1 international work-conference on bioinformatics and biomedical engineering,-1 international workshop on acoustic signal enhancement,1 international workshop on advanced ground penetrating radar,-1 international workshop on advanced motion control,-1 international workshop on advanced optical imaging and metrology,-1 "international workshop on advances in regularization, optimization, kernel methods and support vector machines: theory and applications",-1 international workshop on advances in sensors and interfaces,1 international workshop on antenna technology,-1 international workshop on automated specification and verification of web systems,-1 international workshop on automation of software test,-1 international workshop on behavior change support systems,1 international workshop on biomedical engineering,-1 international workshop on biometrics,-1 international workshop on boolean problems,-1 international workshop on business models for mobile platforms,-1 international workshop on cellular nanoscale networks and their applications,1 international workshop on collaboration teaching of globally distributed software development,-1 international workshop on communication technologies for vehicles,-1 international workshop on content-based multimedia indexing. print,-1 international workshop on cooperative robots and sensor networks,-1 international workshop on cross layer design,-1 international workshop on cyber-physical networking systems,-1 international workshop on dependable and secure industrial and embedded systems,-1 international workshop on dynamic analysis,-1 international workshop on electromagnetic metamaterials,-1 international workshop on evaluating information access,1 international workshop on green and sustainable software,-1 international workshop on haptic and audio interaction design,-1 international workshop on image analysis for multimedia interactive services,-1 international workshop on integrated nonlinear microwave and millimetre-wave circuits,-1 international workshop on intelligent exploration of semantic data,-1 "international workshop on interconnection network architecture: on-chip, multi-chip",-1 international workshop on knowledge management,-1 international workshop on linked data in architecture and construction,-1 international workshop on many-core embedded systems,-1 international workshop on micropiles,-1 international workshop on mining urban data,-1 international workshop on mobile cloud computing and services,-1 international workshop on multiple access communications,-1 international workshop on nanocarbon photonics and optoelectronics,-1 international workshop on network on chip architectures,-1 international workshop on nonlinear photonics,-1 "international workshop on power and timing modeling, optimization and simulation",-1 international workshop on power grid-friendly computing,-1 international workshop on quality-aware devops,-1 international workshop on radiation imaging detectors,-1 international workshop on recent advances in broadband access networks,-1 international workshop on reconfigurable communication-centric systems-on-chip,1 international workshop on requirements engineering for social computing,1 international workshop on security in information systems,-1 international workshop on selected topics in mobile and wireless computing,-1 international workshop on semantic ambient media experiences,-1 international workshop on semantic evaluation,-1 international workshop on semantic technologies,-1 international workshop on small cell wireless networks,-1 international workshop on software engineering education based on real-world experiences,-1 international workshop on software engineering for sensor network applications,-1 international workshop on software engineering research and industrial practice,-1 international workshop on the practical application of stochastic modelling,-1 international workshop on theory and applications of formal argument,-1 international workshop on thermal investigations of ics and systems,-1 international workshop on traffic monitoring and analysis,-1 international workshop on value-based software traceability,-1 international workshop on variability in software architecture,-1 "international workshops on image processing theory, tools, and applications",1 international workshops on matrices and statistics,-1 international world wide web conference,3 international wound journal,1 international yearbook of nephrology,1 international yeats studies,1 internationale kirchliche zeitschrift,1 internationale neerlandstiek,1 internationale politik,1 internationale psychoanalyse,-1 internationaler wissenschaftliche korrespondenz zur geschichte der deutschen arbeiterbewegung,1 internationales archiv für sozialgeschichte der deutschen literatur,3 internationales jahrbuch fur hermeneutik,1 internationales steuerrecht,1 internationalisation of higher education,-1 internet and higher education,3 internet archaeology,1 internet encyclopedia of philosophy,1 internet interventions,1 internet journal of allied health sciences and practice,1 internet journal of geriatrics and gerontology,-1 internet journal of medical technology,-1 internet journal of pathology,-1 internet journal of rheumatology,-1 internet journal of vibrational spectroscopy,1 internet mathematics,1 internet of things,-1 internet of things,1 internet of things and cyber-physical systems,1 internet policy review,1 internet pragmatics,1 internet protocol journal,-1 internet research,2 internet society,-1 internet technology letters,1 internetowy kwartalnik antymonopolowy i regulacyjny,-1 internist,1 interpersona : an international journal on personal relationships,1 "interplay: a journal of languages, linguistics, and literature",-1 interpres: rivista di studi quattrocenteschi,1 interpretation : a journal of subsurface characterization,1 interpretation: a journal of bible and theology,1 interpreter and translator trainer,2 interpreters newsletter,1 interpreting,2 interreligious studies and intercultural theology,1 interscience communications,1 intersecciones en antropologia,1 intersections,1 intersections,2 intersections: gender and sexuality in asia and the pacific,1 intersentia,1 intersezioni,1 interspeech,1 intertax: international tax review,2 intertexts,1 intervalli,-1 intervention in school and clinic,1 intervention press,1 interventional cardiology,-1 interventional neurology,1 interventional neuroradiology,1 interventional pain medicine,1 interventions: international journal of postcolonial studies,2 intervirology,1 intestinal research,1 inti,1 into,1 intonations,-1 intralinea,1 invalidiliiton julkaisuja,-1 invalidisäätiö,-1 invasive plant science and management,1 inventiones mathematicae,3 inventions,-1 inverbis,-1 inverse problems,3 inverse problems and imaging,2 invertebrate biology,1 invertebrate neuroscience,1 invertebrate reproduction and development,1 invertebrate systematics,1 invest working papers,-1 investigacion bibliotecologica,1 investigacion de historia economica,2 investigaciones feministas,-1 investigaciones geográficas,1 investigaciones historicas: epoca moderna y contemporanea,1 investigación clínica,-1 investigational new drugs,1 investigations in mathematics learning,1 investigative and clinical urology,1 investigative genetics,1 investigative interviewing : research and practice,1 investigative ophthalmology and visual science,2 investigative radiology,3 investigações,1 investment analysts journal,1 investment management and financial innovations,-1 invigilata lucernis,1 invisible culture,1 involve,1 inzinerine ekonomika-engineering economics,-1 inzynieria mineralna,-1 inštitut za lokalno samoupravo maribor,-1 inštitut za novejšo zgodovino,-1 iob discussion papers,-1 ionia publications,-1 ionics,1 ionio panepistimio,-1 iop conference series : materials science and engineering,1 iop conference series earth and environmental science,-1 iop scinotes,1 ios press,1 iot,-1 iotbds,1 iowa journal of communication,1 iowa law review,1 iowa research online,-1 iowa state university press,1 ip rax: praxis de internationalen privat- und verfahrensrechts,1 ipem-translation,-1 iperstoria,-1 ippologia,1 ippr progressive review,1 ipr university center,-1 ipsera conference proceedings,-1 ir,-1 iral: international review of applied linguistics in language teaching,1 iran and the caucasus,1 iran: journal of the british institute of persian studies,2 iranian conference on machine vision and image processing,-1 iranian journal of allergy asthma and immunology,-1 iranian journal of animal biosystematics,1 iranian journal of applied animal science,-1 iranian journal of applied language studies,-1 iranian journal of basic medical sciences,-1 iranian journal of biotechnology,-1 iranian journal of cancer prevention,-1 iranian journal of chemistry and chemical engineering: international english edition,1 iranian journal of electrical and electronic engineering,-1 iranian journal of environmental health science and engineering,1 iranian journal of fisheries sciences,1 iranian journal of fuzzy systems,1 iranian journal of immunology,-1 iranian journal of kidney diseases,-1 iranian journal of language teaching research,1 iranian journal of materials science and engineering,1 iranian journal of nursing and midwifery research,-1 iranian journal of parasitology,-1 iranian journal of pediatrics,-1 iranian journal of pharmaceutical research,1 iranian journal of public health,1 iranian journal of radiology,-1 iranian journal of reproductive medicine,1 iranian journal of science and technology : transactions of civil engineering,-1 iranian journal of science and technology transaction a: science,1 iranian journal of science and technology-transactions of electrical engineering,-1 iranian journal of science and technology-transactions of mechanical engineering,-1 iranian journal of veterinary research,1 iranian polymer journal,-1 iranian studies,1 iranica antiqua,1 iraq,1 iraqi bulletin of geology and mining,-1 iraqi geological journal,1 iraqi journal for computer science and mathematics,-1 irbm,1 irem küçükoğlu,-1 irenikon,1 iride: filosofia e discussione pubblica,1 iris,-1 iris,1 iris group,-1 irish academic press,1 irish accounting review,1 irish economic and social history,1 irish educational studies,-1 irish feminist review,1 irish geography,1 irish historical studies,1 irish journal of agricultural and food research,1 irish journal of anthropology,1 irish journal of medical science,1 irish journal of paramedicine,1 irish journal of psychology,1 irish journal of sociology,1 irish naturalists' journal,-1 irish political studies,1 irish slavonic studies,1 irish studies review,1 irish sword,1 irish theological quarterly,1 irish university review,1 irish veterinary journal,1 irlanninsetteri,-1 irodalmi szemle,-1 irodalomismeret,-1 irodalomtorteneti kozlemenyek,-1 iron and steel technology,1 ironmaking and steelmaking,1 irrigation and drainage,1 irrigation and drainage systems,1 irrigation science,1 irstea bordeaux,-1 iryo keizai kenkyu,-1 irz,-1 is&t international symposium on electronic imaging,1 "is&t/spie electronic imaging / 3d imaging, interaction, and metrology / stereoscopic displays and applications",1 is&t/spie electronic imaging / image processing: algorithms and systems,1 isa transactions,2 isaidat law review,1 isbt science series,1 isca international workshop on speech and language technology in education,-1 isca-livres,-1 iscience,1 isegoria,1 "isel academic journal of electronics, telecommunications and computers",-1 isfnr newsletter,-1 ishara press,-1 ishraq,1 isi bilimi ve teknigi dergisi-journal of thermal science and technology,1 isij international,1 isimu,1 isis,3 isis reports,-1 isj-invertebrate survival journal,-1 iskos,1 islam and christian-muslim relations,2 islam and the modern age,1 islam in africa,1 islam: zeitschrift fur geschichte und kultur des islamischen orients,3 islamic africa,1 islamic history and civilization,2 islamic law and society,2 islamic perspective,-1 "islamic philosophy, theology and science",2 islamic quarterly,1 islamic studies review,1 islamochristiana,1 island arc,1 island press,1 island studies journal,1 islenskt mal og almenn malfraedi,1 islets,1 isme communications,1 isme journal,3 iso numero,-1 isogloss,1 isokinetics and exercise science,1 isonomia,1 isotopes in environmental and health studies,1 ispi dossier,-1 ispim oy,-1 "isprs annals of the photogrammetry, remote sensing and spatial information sciences",1 isprs international journal of geo-information,1 isprs journal of photogrammetry and remote sensing,2 isprs open journal of photogrammetry and remote sensing,1 israel affairs,1 israel exploration journal,2 israel exploration society,-1 israel journal of chemistry,1 israel journal of earth sciences,1 israel journal of ecology and evolution,1 israel journal of entomology,-1 israel journal of mathematics,2 israel journal of plant sciences,-1 israel journal of psychiatry and related sciences,1 israel journal of veterinary medicine,1 israel medical association journal,1 israeli journal of aquaculture-bamidgeh,1 israeli journal of humor research,1 isres publishing,-1 issi newsletter,-1 issues and studies,1 issues in accounting education,1 issues in applied linguistics,-1 issues in business management and economics,-1 issues in comprehensive pediatric nursing,1 issues in educational research,1 issues in forensic psychology,1 issues in information systems,1 issues in informing science and information technology,-1 issues in law and medicine,1 issues in mathematics education,1 issues in mental health nursing,1 issues in psychoanalytic psychology,1 issues in science and technology,1 issues in science and technology librarianship,1 issues of analysis,-1 issuex,-1 ist press,1 ist-africa,-1 istanbuler mitteilungen,1 iste,1 iste editions,-1 istes organization,-1 istina,1 istituto affari internazionali,-1 istituto della enciclopedia italiana,-1 istituto italiano di studi germanici,-1 istituto nazionale di fisica nucleare,-1 istituto papirologico g. vitelli,1 istituto poligraficio e zecca dello stato,1 istor,1 istoricheskaya pamyat`,-1 istorija peterburga,-1 istorijos instituto leidykla,-1 istoriko-astronomicheskie issledovaniya,1 istoriko-filosofskij ežegodnik,-1 istoriko-matematicheskie issledovania,1 istoriâ,1 istoričeskij kurʹer,1 istraživanja i projektovanja za privredu,-1 istros,1 it,-1 it professional,1 it-universitetet i københavn,1 it. information technology,1 itaca,1 italia dialettale,1 italia medioevale e umanistica,1 italian americana,-1 italian botanist,1 italian economic journal,1 italian journal of agronomy,1 italian journal of animal science,1 italian journal of biochemistry,1 italian journal of educational technology,-1 italian journal of food safety,1 italian journal of food science,1 italian journal of medicine,1 italian journal of pediatrics,1 italian journal of public law,1 italian journal of sociology of education,1 italian journal of vascular and endovascular surgery,-1 italian labour law e-journal,1 italian poetry review,1 italian sociological review,1 italian studies,3 italian yearbook of international law,1 italianist,2 italianistica,2 italianistica debreceniensis,1 italica,1 italienisch: zeitschrift fur italienische sprache und literatur,1 italienische studien,1 italique: poesie italienne de la renaissance,1 itc press,1 itc specialist seminar on energy efficient and green networking,-1 ite journal: institute of transportation engineers,1 ite transactions on media technology and applications,-1 itea: informacion tecnica economica agraria,1 iterations,1 itherm,-1 itinera,1 "itineraires: litterature, textes, cultures",1 itinerari,1 itineraria,-1 itinerario: international journal on the history of european expansion and global interaction,1 itk - interaktiivinen tekniikka koulutuksessa,-1 itl : international journal of applied linguistics,1 itla research,-1 itlan raportit ja selvitykset,-1 itm web of conferences,-1 itu journal,1 itua,-1 itä-häme,-1 itä-savo,-1 itä-suomen sosiaalialan osaamiskeskuksen julkaisuja,-1 itä-suomen yliopisto,-1 itä-suomen yliopiston oikeustieteellisiä julkaisuja,-1 itäsuomalainen,-1 itäväylä,-1 iubmb life,1 iucrj,1 iudicium verlag,1 iufro world congress,-1 iufro world series,-1 iui workshop on interacting with smart objects,-1 iuniverse publication,-1 iuorio edizioni,-1 iuphar/bps guide to pharmacology cite,-1 iustitia,-1 iustus förlag,1 ivanovskij gosudarstvennyj universitet,-1 ivi,-1 ivp academic,-1 "iwa conference on instrumentation, control and automation",-1 iwa publishing,1 iwh-diskussionspapiere,-1 ixe editions,-1 iyyun: the jerusalem philosophical quarterly,1 iza discussion papers,-1 iza journal of development and migration,1 iza journal of european labor studies,1 iza journal of labor economics,1 iza journal of labor policy,1 iza world of labor,1 izdatel stvo delo,-1 izdatel'skii dom yask,-1 izdatel'stvo kuzbassvuzizdat,-1 izdatel`skie resheniya,-1 "izdatel`skij centr ""azbukovnik""",-1 "izdatel`stvo ""artist. rezhisser. teatr""",-1 "izdatel`stvo ""chisty`j list""",-1 "izdatel`stvo ""e`kon-inform""",-1 "izdatel`stvo ""forum""",-1 "izdatel`stvo ""lema""",-1 "izdatel`stvo ""triada""",-1 "izdatel`stvo ""ves` mir""",-1 izdatel`stvo lan`,-1 izdatel`stvo pushkinskij dom,-1 izdatel`stvo tomskogo universiteta,-1 izdatelskij dom azhur,-1 "izdatelstvo ""veles""",-1 izdatelstvo ja,-1 izdatelstvo uralskogo universiteta,-1 izhevskij institut komp`yuterny`x issledovanij,-1 izvestiia russkogo geograficheskogo obshchestva,-1 izvestiya atmospheric and oceanic physics,1 izvestiya mathematics,1 izvestiya: physics of the solid earth,1 izvestiâ nacionalʹnoj akademii nauk respubliki kazahstan : seriâ himii i tehnologii,-1 izvestiâ nacionalʹnoj akademii nauk respubliki kazahstan. seriâ geologii i tehničeskih nauk,-1 izvestiâ nacionalʹnoj akademii nauk respubliki kazahstan. seriâ obŝestvennyh i gumanitarnyh nauk,-1 izvestiâ sankt-peterburgskoj lesotehni?eskoj akademii,-1 izvestiâ saratovskogo universiteta. novaâ seriâ. seriâ sociologiâ. politologiâ,1 izvestiâ uralʹskogo federalʹnogo universiteta : gumanitarnye nauki,1 izvestiâ vuzov : prikladnaâ himiâ i biotehnologiâ,-1 izvestiâ vysših u?ebnyh zavedenij : himiâ i himi?eskaâ tehnologiâ,-1 izvestiâ vysših učebnyh zavedenij : lesnoj žurnal,-1 iéseg éditions,-1 i̇dil dergisi,-1 i̇stanbul teknik üniversitesi,-1 i̇stanbul tıp fakültesi dergisi,-1 i̇stanbul üniversitesi sosyoloji dergisi,-1 j multidisciplinary scientific journal,1 j ross publishing,-1 j-reading,1 j. b. metzler,2 j?v?d?n khirad,-1 j@rgonia,1 ja clinical reports,1 jaacap open,1 jaarboek van de maatschappij der nederlandse letterkunde te leiden,1 jaarboek van het genootschap amstelodanum,1 jaarboek van het stijn streuvels genootschap,1 jaarboek voor nederlandse boekgeschiedenis,1 jaarboek voor vrouwengeschiedenis,1 jaarboek: thomas instituut,1 jac-antimicrobial resistance,1 jacc : advances,1 jacc : asia,1 jacc : basic to translational science,1 jacc : cardiooncology,1 jacc : cardiovascular imaging,3 jacc : cardiovascular interventions,2 jacc : case reports,1 jacc : clinical electrophysiology,1 jacc heart failure,2 jacet language teacher cognition research bulletin,-1 jacobin,-1 jacobs journal of pulmonology,-1 jacobs journal of veterinary science and research,-1 jacs au,1 jadavpur university journal of sociology,-1 jagiellonian library,-1 jagiellonian university press,1 jahrbuch archaeologie schweiz,1 jahrbuch der berliner museen,1 jahrbuch der deutschen schillergesellschaft,1 jahrbuch der europäischen integration,-1 jahrbuch der historischen forschung in der bundesrepublik deutschland,1 jahrbuch der osterreichischen byzantinistik,2 jahrbuch der religionspädagogik,1 jahrbuch des deutschen archaeologischen instituts,2 jahrbuch des freien deutschen hochstifts,1 jahrbuch des instituts für deutsche sprache,1 jahrbuch des kunsthistorischen museums wien,1 jahrbuch des romisch-germanischen zentralmuseums mainz,-1 jahrbuch des vereins für niederdeutsche sprachforschung,1 jahrbuch deutsch als fremdsprache,2 jahrbuch extremismus und demokratie,1 jahrbuch fur antike und christentum,1 jahrbuch fur antisemitismusforschung,1 jahrbuch fur die geschichte mittel- und ostdeutschlands,1 jahrbuch fur europaische geschichte,1 jahrbuch fur europaische uberseegeschichte,1 jahrbuch fur europaische verwaltungsgeschichte,1 jahrbuch fur finnisch-deutsche literaturbeziehungen,1 jahrbuch fur geschichte lateinamerikas,1 jahrbuch fur hegelforschung,1 jahrbuch fur historische kommunismusforschung,1 jahrbuch fur internationale germanistik,1 jahrbuch fur internationale germanistik: reihe c forschungsberichte,1 jahrbuch fur numismatik und geldgeschichte,-1 jahrbuch fur religionsphilosophie,1 jahrbuch fur universitatsgeschichte,1 jahrbuch fur westdeutsche landesgeschichte,1 jahrbuch fur wirtschaftsgeschichte,2 jahrbuch für biblische theologie,1 jahrbuch für europäische ethnologie,1 jahrbuch für germanistische sprachgeschichte,-1 jahrbuch für regionalgeschichte,1 jahrbuch für regionalwissenschaft,1 jahrbucher fur nationalokonomie und statistik,1 jahrbücher für geschichte osteuropas,3 jahreshefte des osterreichischen archaologischen institutes in wien,2 jahti,-1 jai press,1 jaids: journal of acquired immune deficiency syndromes,1 jakajima,-1 jalkaväen vuosikirja,-1 jama : journal of the american medical association,3 jama cardiology,3 jama dermatology,2 jama internal medicine,3 jama network open,1 jama neurology,3 jama oncology,3 jama ophthalmology,3 jama otolaryngology : head and neck surgery,3 jama pediatrics,3 jama psychiatry,3 jama surgery,3 james currey,2 james joyce literary supplement,1 james joyce quarterly,1 jamia open,-1 jamk arena pro,-1 jamk arena public,-1 jamtli,-1 jan van eyck academie,-1 janac: journal of the association of nurses in aids care,1 jane&paulo,-1 jano,-1 janus head,1 janus: sosiaalipolitiikan ja sosiaalityön tutkimuksen aikakauslehti,1 japan and the world economy,1 japan forum,1 japan institute of navigation,1 japan journal of industrial and applied mathematics,1 japan journal of nursing science,1 japan military review,-1 japan scientific societies press,1 japan society of applied physics,-1 japan society of mechanical engineers,-1 japanese economic review,1 japanese geotechnical society special publication,-1 japanese journal of applied entomology and zoology,1 japanese journal of applied physics,1 japanese journal of clinical oncology,1 japanese journal of crop science,1 japanese journal of educational psychology,-1 japanese journal of hygiene,1 japanese journal of infectious diseases,-1 japanese journal of lactic acid bacteria,-1 japanese journal of learning disabilities,1 japanese journal of mathematics,1 japanese journal of ophthalmology,1 japanese journal of physical fitness and sports medicine,1 japanese journal of physiological anthropology,1 japanese journal of political science,1 japanese journal of radiology,1 japanese journal of religious studies,2 japanese journal of systematic entomology,1 japanese journal of veterinary research,1 japanese language and literature,1 japanese magazine of mineralogical and petrological sciences,-1 japanese psychological research,1 japanese religions,1 japanese studies,1 jar: journal for artistic research,2 jarcp,1 jaro: journal of the association for research in otolaryngology,2 jarq: japan agricultural research quarterly,1 jasa express letters,1 jasesoi journal,-1 jasss: the journal of artificial societies and social simulation,1 javma: journal of the american veterinary medical association,2 javni sklad republike slovenije za kulturne dejavnosti,-1 javnost : the public,1 jazyk i kultura,1 jazyk i recevaja dejatelnost,1 jazykovedny casopis,1 jazz education in research and practice,1 jazz perspectives,1 jazz research journal,1 jazzforschung,1 jb & js open access,1 jbi evidence implementation,1 jbi evidence synthesis,2 jbis: journal of the british interplanetary society,1 jbjs case connector,-1 jbjs reviews,1 jbmr plus,1 jbr-btr,1 jbuon,-1 jcac: journal of the canadian association for conservation,1 jcem case reports,-1 jci insight,2 jcmcc,1 jcms: journal of common market studies,2 jco clinical cancer informatics,1 jco oncology practice,1 jco precision oncology,1 jcp: biochemical physics,1 jcpp advances,1 jcpsp: journal of the college of physicians and surgeons pakistan,1 jcr: journal of clinical rheumatology,1 jct coatingstech,1 jdr clinical and translational research,1 jds communications,1 jeadv clinical practice,1 jedidut,-1 jednak książki,-1 jelenkor,-1 jelenkor kiadó,-1 "jem, journal of educational measurement",1 jenaer arbeiten zur lehrwerkforschung und materialentwicklung.,-1 jenda : a journal of culture and african women studies,1 jenny stanford publishing,1 "jentzsch-cuvillier, annette",-1 jeongbo beobhag,-1 jeremy mills publishing,1 jerusalem studies in arabic and islam,1 jerusalem studies in religion and culture,1 jessica kingsley publishers,1 jeten,1 jetp letters,1 "jeunesse: young people, texts, cultures",1 jewish and christian perspectives series,2 jewish art,-1 jewish bible quarterly,1 jewish culture and history,1 jewish history,2 jewish identities in a changing world,1 jewish quarterly review,1 jewish social studies,1 "jewish studies, an internet journal",1 jezik,1 jezik in slovstvo,1 jezikoslovlje,1 jezikoslovni zapiski,1 jezyk i metoda,-1 jezyk polski,1 jfps international journal of fluid power system,-1 jgh open,1 jhep reports,1 jhlt open,1 jianghan shiyou xueyuan xuebao,-1 jiangsu education publishing house,1 jiangsu gao-jiao,-1 jianzhushi,-1 jiaotong yunshu gongcheng xuebao,-1 jiaoyu celiang yu pingjia,-1 jiaoyu xueshu uuekan,-1 jid innovations,1 jihočeská univerzita v českých budějovicích,-1 jilin daxue xuebao,-1 jilin shifan daxue xuebao,-1 jim : jornal de investigação médica,1 jimd reports,1 jimoondang,1 jindal global law review,1 jinkou chinou gakkai rombunshi,-1 jinkou chinou gakkai zenkoku taikai rombunshuu,-1 jinshu xuebao,1 jisuanji gongcheng,-1 jisuanji jicheng zhizao xitong,-1 jisuanji xuebao,-1 jisuanji yingyong,-1 jitta: journal of information technology theory and application,1 jk science,1 jlis.it,-1 jme practical bioethics,-1 jmir aging,-1 jmir ai,1 jmir cancer,1 jmir cardio,-1 jmir diabetes,1 jmir formative research,-1 jmir human factors,1 jmir infodemiology,1 jmir medical education,1 jmir medical informatics,1 jmir mental health,1 jmir mhealth and uhealth,2 jmir nursing,2 jmir pediatrics and parenting,1 jmir public health and surveillance,1 jmir rehabilitation and assistive technologies,2 jmir research protocols,1 jmir serious games,1 jmir xr and spatial computing,-1 jmm case reports,1 jmm international journal on media management,1 jnci cancer spectrum,1 jnt: journal of narrative theory,1 joelho,1 joensuun taidemuseo,-1 "johan de villiers, jacques van wyk",-1 johannes gutenberg-universität,-1 john benjamins,2 john clare society journal,1 john donne journal,1 john libbey publishing,1 john wiley & sons,2 johnny kniga,-1 johns hopkins university press,2 johnson matthey technology review,1 johtamistaidon opisto,-1 joint bone spine,1 joint commission journal on quality and patient safety,1 joint force quarterly,1 joint ifip wireless and mobile networking conference,-1 joint urban remote sensing event,-1 joint workshop on hands-free speech communication and microphone arrays,-1 "joint workshop on language technology for closely related languages, varieties and dialects",1 joiv : international journal on informatics visualization,-1 jokka,-1 jolma,1 jom,1 jomec journal,1 jonares,-1 jones and bartlett publishers,1 joornaalii seeraa oromiyaa,-1 jor spine,1 jordan journal of biological sciences,-1 jordan journal of physics,-1 jordanian journal of engineering and chemical industries,-1 jordemodern,-1 jornal brasileiro de pneumologia,1 jornal de pediatria,1 joroisten lehti,-1 josette lyon,-1 josip juraj strossmayer university of osijek,-1 jossey-bass,1 joto afrika,-1 joule,3 joulukannel,-1 journ@l electronique dhistoire des probabilites et de la statistique,1 journal advances in higher education,1 journal american water works association,-1 journal asiatique,1 journal culinaire,-1 journal d analyse mathematique,2 journal de chirurgie viscerale,1 journal de gynecologie obstetrique et biologie de la reproduction,1 journal de l'école polytechnique : mathématiques,1 journal de la societe des americanistes,1 journal de la societe des oceanistes,1 journal de mathematiques pures et appliquees,3 journal de pediatrie et de puericulture,1 journal de radiologie diagnostique et interventionnelle,1 journal de theorie des nombres de bordeaux,1 journal de therapie comportementale et cognitive,1 journal de traumatologie du sport,1 journal der deutschen dermatologischen gesellschaft,1 journal des africanistes,1 journal des anthropologues,1 journal des savants,1 journal du droit international,1 journal europäischer orchideen,-1 journal européen des systèmes automatisés,-1 journal européen des urgences et de réanimation,1 journal for algebra and number theory academia,1 journal for crime conflict and media culture,1 journal for critical animal studies,-1 journal for critical education policy studies,1 journal for cultural and religious theory,1 journal for cultural research,2 journal for deradicalization,1 journal for digital legal history,1 journal for drama in education,1 journal for dramatic theory and criticism,1 journal for early modern cultural studies,1 journal for east european management studies,1 journal for educational research online,1 "journal for educators, teachers and trainers",-1 journal for eighteenth-century studies,2 journal for ethics in antiquity and christianity,-1 journal for european environmental and planning law,1 journal for general philosophy of science,1 journal for geometry and graphics,1 journal for global business advancement,1 journal for healthcare quality,1 journal for higher education management,-1 journal for immunotherapy of cancer,2 journal for international business and entrepreneurship development,1 journal for islamic studies,-1 journal for labour market research,1 journal for language technology and computational linguistics,1 journal for late antique religion and culture,1 journal for literary and intermedial crossings,1 journal for manufacturing science and production,1 journal for multicultural education,1 journal for nature conservation,1 journal for nurses in professional development,-1 journal for patient compliance,-1 journal for person-oriented research,-1 journal for reattach therapy and developmental diversities,-1 "journal for religion, film and media",1 journal for reproducibility in neuroscience,-1 journal for research in arts and sports education,1 journal for research in mathematics education,3 journal for specialists in group work,1 journal for specialists in pediatric nursing,1 journal for stem education research,1 journal for studies in humanities and social sciences,-1 journal for the academic study of religion,1 journal for the anthropological study of human movement,-1 journal for the cognitive science of religion,1 journal for the education of the gifted,1 journal for the history of astronomy,1 journal for the history of knowledge,1 journal for the history of reformed pietism,1 journal for the measurement of physical behaviour,1 journal for the psychology of language learning.,-1 journal for the scientific study of religion,3 journal for the study of british cultures,1 journal for the study of judaism,3 journal for the study of postsecondary and tertiary education,-1 "journal for the study of religion, nature and culture",1 journal for the study of religions and ideologies,1 journal for the study of spirituality,1 journal for the study of the historical jesus,1 journal for the study of the new testament,3 journal for the study of the old testament,3 journal for the study of the pseudepigrapha,2 journal for the theory of social behaviour,2 journal francais d ophtalmologie,1 journal fur die reine und angewandte mathematik,3 journal fur mathematik-didaktik,1 journal fur verbraucherschutz und lebensmittelsicherheit-journal of consumer protection and food safety,1 journal für lehrerinnenbildung,-1 journal für medienlinguistik,1 journal für entwicklungspolitik,1 journal für ernährungsmedizin,-1 journal für kulturpflanzen,1 journal international de bioethique,1 journal international des sciences de la vigne et du vin,1 journal nano science and technology,-1 journal of 3d printing in medicine,-1 journal of aapos,1 journal of abdominal wall surgery,-1 journal of academic ethics,1 journal of academic language and learning,1 journal of academic librarianship,1 journal of academic perspectives,-1 journal of access services,1 journal of accountancy,1 journal of accounting & organizational change,1 journal of accounting and auditing: research and practice,-1 journal of accounting and economics,3 journal of accounting and finance,-1 journal of accounting and management information systems,-1 journal of accounting and public policy,2 journal of accounting education,1 journal of accounting in emerging economies,1 journal of accounting literature,1 journal of accounting research,3 "journal of accounting, auditing and finance",1 "journal of accounting, finance and auditing studies",-1 journal of active and passive electronic devices,1 "journal of activity, sedentary and sleep behaviors",1 journal of actuarial practice,1 journal of acute disease,-1 journal of adaptation in film & performance,1 journal of addiction medicine,1 journal of addiction medicine and therapy,-1 journal of addiction research and therapy,-1 journal of addictions and offender counseling,1 journal of addictions nursing,1 journal of addictive diseases,1 journal of adhesion,1 journal of adhesion science and technology,1 journal of adhesive dentistry,1 journal of administrative and business studies,-1 journal of administrative sciences and technology,-1 journal of adolescence,1 journal of adolescent and adult literacy,2 journal of adolescent and young adult oncology,1 journal of adolescent health,1 journal of adolescent research,1 journal of adult and continuing education,1 journal of adult development,1 journal of adult education,-1 journal of adult protection,1 journal of advanced academics,1 journal of advanced agricultural technologies,-1 journal of advanced ceramics,2 journal of advanced computational intelligence and intelligent informatics,1 journal of advanced concrete technology,1 journal of advanced dielectrics,1 journal of advanced instrumentation in science,-1 journal of advanced joining processes,1 journal of advanced linguistic studies,-1 journal of advanced management science,-1 journal of advanced manufacturing systems,1 journal of advanced materials,1 journal of advanced mechanical design systems and manufacturing,-1 journal of advanced nursing,3 journal of advanced oxidation technologies,-1 journal of advanced perioperative care,1 journal of advanced research,1 journal of advanced research in applied sciences and engineering technology,1 journal of advanced research in dynamical and control systems,-1 journal of advanced research in fluid mechanics and thermal sciences,1 journal of advanced research in humanities and social sciences,-1 journal of advanced research in micro and nano engineering,-1 "journal of advanced studies on borders, cooperation and development",-1 journal of advanced transportation,1 journal of advanced zoology,-1 journal of advances in dairy research,-1 journal of advances in humanities,-1 journal of advances in information and industrial technology,-1 journal of advances in information fusion,1 journal of advances in information technology,-1 journal of advances in management research,1 journal of advances in medical education and professionalism,-1 journal of advances in modeling earth systems,2 journal of adventure education and outdoor learning,1 journal of advertising,2 journal of advertising research,1 journal of aeronautics and aerospace engineering,-1 journal of aeronautics astronautics and aviation,-1 journal of aerosol medicine and pulmonary drug delivery,1 journal of aerosol science,1 journal of aerospace computing information and communication,1 journal of aerospace engineering,1 journal of aerospace technology and management,-1 journal of aesthetic education,2 journal of aesthetics and art criticism,3 journal of aesthetics and culture,1 journal of aesthetics and phenomenology,1 journal of affective disorders,1 journal of affective disorders reports,1 journal of african american studies,1 journal of african and asian local goverment studies,1 journal of african and international law,1 journal of african archaeology,2 journal of african business,1 journal of african cinemas,1 journal of african cultural studies,2 journal of african diaspora archaeology and heritage,-1 journal of african earth sciences,1 journal of african economies,1 journal of african elections,1 journal of african history,3 journal of african languages and linguistics,3 journal of african languages and literatures,1 journal of african law,1 journal of african media studies,1 journal of african research in business and technology,-1 journal of african zoology,1 journal of ageing and longevity,-1 "journal of aggression, conflict and peace research",1 "journal of aggression, maltreatment and trauma",1 journal of aging and environment,1 journal of aging and health,2 journal of aging and physical activity,1 journal of aging and social policy,1 journal of aging research,1 journal of aging studies,1 journal of agrarian change,2 journal of agribusiness and rural development,-1 journal of agricultural and applied economics,1 journal of agricultural and environmental ethics,1 journal of agricultural and food chemistry,3 journal of agricultural and food industrial organization,1 journal of agricultural and food information,1 journal of agricultural and practice,-1 journal of agricultural and resource economics,1 journal of agricultural economics,1 journal of agricultural education and extension,1 journal of agricultural engineering,1 journal of agricultural safety and health,1 journal of agricultural science,-1 journal of agricultural science,2 journal of agricultural science and technology,1 journal of agricultural science and technology a,-1 journal of agricultural sciences,-1 "journal of agricultural, biological, and environmental statistics",1 journal of agriculture and food research,1 journal of agriculture and life sciences,-1 journal of agriculture and rural development in the tropics and subtropics,1 journal of agriculture and sustainability,-1 journal of agriculture food and development,-1 journal of agriculture of the university of puerto rico,1 journal of agro crop science,1 journal of agromedicine,1 journal of agrometeorology,1 journal of agronomy and crop science,1 journal of ai law and regulation,1 "journal of ai, robotics & workplace automation",-1 journal of air law and commerce,1 journal of air transport management,1 journal of air transport studies,-1 journal of aircraft,1 journal of airline and airport management,1 journal of airport management,-1 journal of alcohol and drug education,1 journal of alcohol drug dependence,-1 journal of algebra,2 journal of algebra and its applications,1 journal of algebraic combinatorics,1 journal of algebraic geometry,2 journal of algebraic hyperstructures and logical algebras,-1 journal of algebraic statistics,1 journal of algorithms and computational technology,1 journal of algorithms-cognition informatics and logic,2 journal of aligner orthodontics,-1 journal of allergy and clinical immunology,3 journal of allergy and clinical immunology : global,1 journal of allergy and clinical immunology : in practice,2 journal of allied health,1 journal of alloys and compounds,1 journal of alternative and community media,1 journal of alternative and complementary medicine,1 journal of alternative finance,1 journal of alternative investments,1 journal of alzheimer's disease,1 journal of alzheimer's disease & parkinsonism,-1 journal of alzheimer's disease reports,1 journal of ambient intelligence and humanized computing,1 journal of ambient intelligence and smart environments,1 journal of ambulatory care management,1 journal of american college health,1 journal of american culture,1 journal of american drama and theatre,1 journal of american ethnic history,2 journal of american folklore,3 journal of american history,3 journal of american studies,2 journal of american studies of turkey,1 journal of american-east asian relations,-1 journal of analysis,-1 journal of analysis and applications,1 journal of analytic theology,1 journal of analytical & bioanalytical techniques,-1 journal of analytical and applied pyrolysis,1 journal of analytical atomic spectrometry,1 journal of analytical chemistry,-1 journal of analytical methods in chemistry,-1 journal of analytical oncology,-1 journal of analytical psychology,1 journal of analytical science & technology,-1 journal of analytical toxicology,1 journal of anatomy,2 journal of ancient civilizations,1 journal of ancient egyptian interconnections,1 journal of ancient history,1 journal of ancient judaism,1 journal of ancient near eastern history,1 journal of ancient near eastern religions,2 journal of ancient topography,1 journal of anesthesia,1 journal of anesthesia and clinical research,-1 journal of anglican studies,1 journal of anglo-italian studies,1 journal of animal and feed sciences,1 journal of animal and plant sciences,1 journal of animal and veterinary advances,-1 journal of animal breeding and genetics,2 journal of animal ecology,3 journal of animal ethics,1 "journal of animal law, ethics and one health",1 journal of animal physiology and animal nutrition,1 journal of animal science,2 journal of animal science and biotechnology,1 journal of animal science and technology,-1 journal of anime and manga studies,1 journal of anthropological archaeology,3 journal of anthropological research,2 journal of anthropological sciences,1 journal of antibiotics,1 journal of antimicrobial chemotherapy,2 journal of antitrust enforcement,1 journal of antivirals & antiretrovirals,-1 journal of anxiety disorders,2 journal of aoac international,1 journal of apicultural research,1 journal of apicultural science,1 journal of apiproduct and apimedical science,1 journal of applied accounting research,1 journal of applied analysis,1 journal of applied and computational mechanics,1 journal of applied and industrial mathematics,1 journal of applied animal research,1 journal of applied animal welfare science,1 journal of applied aquaculture,1 journal of applied artificial intelligence,-1 journal of applied arts and health,-1 journal of applied behavior analysis,1 journal of applied behavioral science,1 journal of applied biobehavioral research,1 journal of applied biology and biotechnology,1 journal of applied biomaterials & functional materials,1 journal of applied biomechanics,1 journal of applied biomedicine,1 journal of applied botany and food quality,1 journal of applied business research,-1 journal of applied clinical medical physics,1 journal of applied communication research,1 journal of applied computing and information technology,-1 journal of applied corporate finance,1 journal of applied crystallography,1 journal of applied developmental psychology,1 journal of applied ecology,3 journal of applied econometrics,2 journal of applied economic research,-1 journal of applied economics,1 journal of applied electrochemistry,1 journal of applied engineering sciences,-1 journal of applied entomology,1 journal of applied finance and economic policy,-1 journal of applied fire science,1 journal of applied fluid mechanics,-1 journal of applied genetics,1 journal of applied geodesy,1 journal of applied geophysics,1 journal of applied gerontology,1 journal of applied glycoscience,-1 journal of applied horticulture,1 journal of applied ichthyology,1 journal of applied journalism and media studies,1 journal of applied learning and teaching,1 journal of applied linguistics and applied literature : dynamics and advances,1 journal of applied linguistics and language research,1 journal of applied linguistics and lexicography,-1 journal of applied linguistics and professional practice,1 journal of applied logic,1 journal of applied management accounting research,-1 journal of applied management and entrepreneurship,1 journal of applied mathematics,1 journal of applied mathematics and computing,1 journal of applied mathematics and physics,-1 journal of applied mechanics and technical physics,1 journal of applied mechanics: transactions of the asme,1 journal of applied meteorology and climatology,1 journal of applied microbiology,1 journal of applied non-classical logics,1 journal of applied nonlinear dynamics,-1 journal of applied operational research,1 journal of applied oral science,1 journal of applied packaging research,1 journal of applied philosophy,2 journal of applied phycology,1 journal of applied physics,1 journal of applied physiology,2 journal of applied polymer science,1 journal of applied poultry research,1 journal of applied probability,1 journal of applied probability and statistics,1 journal of applied psychology,3 journal of applied remote sensing,1 journal of applied research,1 journal of applied research and technology,-1 journal of applied research in higher education,1 journal of applied research in intellectual disabilities,1 journal of applied research in memory and cognition,1 journal of applied sciences research,-1 journal of applied security research,1 journal of applied social psychology,1 journal of applied spectroscopy,1 journal of applied sport psychology,1 journal of applied statistical science,1 journal of applied statistics,1 journal of applied toxicology,1 journal of applied youth studies,1 journal of approximation theory,1 journal of aquaculture & marine biology,-1 journal of aquatic animal health,1 journal of aquatic food product technology,1 journal of arabic and islamic studies,1 journal of arabic linguistics tradition,-1 journal of arabic literature,2 journal of arachnology,1 journal of archaeological method and theory,3 journal of archaeological research,3 journal of archaeological science,3 journal of archaeological science : reports,1 journal of archaeology and education,-1 journal of architectural and planning research,2 journal of architectural conservation,2 journal of architectural education,1 journal of architectural engineering,1 journal of architecture,3 journal of architecture and urbanism,1 journal of archival organization,1 journal of argumentation in context,1 journal of arid environments,1 journal of arid land,1 journal of arizona history,-1 journal of arrhythmia,1 journal of art historiography,1 journal of art writing by students,-1 journal of arthroplasty,2 journal of arthropod-borne diseases,1 journal of articles in support of the null hypothesis,1 journal of artificial general intelligence,1 journal of artificial intelligence and soft computing research,-1 journal of artificial intelligence research,3 journal of artificial organs,1 journal of arts and communities,1 journal of arts and humanities,-1 "journal of arts management, law, and society",3 "journal of arts, design, and music",-1 journal of asia business studies,1 journal of asia entrepreneurship and sustainability,1 journal of asia pacific studies,1 journal of asia tefl,1 journal of asia-pacific biodiversity,1 journal of asia-pacific business,1 journal of asia-pacific entomology,1 journal of asia-pacific pop culture,-1 journal of asia-pacific studies,-1 journal of asian american studies,1 journal of asian and african studies,1 journal of asian architecture and building engineering,1 journal of asian ceramic societies,-1 journal of asian earth sciences,1 journal of asian earth sciences x,1 journal of asian economics,1 journal of asian electric vehicles,-1 journal of asian history,3 journal of asian natural products research,1 journal of asian pacific communication,1 journal of asian politics and history,1 journal of asian public policy,1 journal of asian scientific research,-1 journal of asian studies,3 journal of asset management,1 journal of assisted reproduction and genetics,1 journal of asthma,1 journal of asthma and allergy,1 journal of astronomical history and heritage,1 "journal of astronomical telescopes, instruments, and systems",1 journal of astronomy and space sciences,1 journal of astrophysics and astronomy,1 journal of atherosclerosis and thrombosis,1 journal of athletic enhancement,-1 journal of athletic training,1 journal of atmospheric and oceanic technology,1 journal of atmospheric and solar-terrestrial physics,1 journal of atmospheric chemistry,1 journal of atrial fibrillation,1 journal of attention disorders,2 journal of audiovisual translation,1 journal of australian political economy,1 journal of australian studies,1 journal of austrian studies,2 journal of autism,1 journal of autism and developmental disorders,2 journal of autoethnography,1 journal of autoimmunity,2 "journal of automata, languages and combinatorics",1 journal of automated methods and management in chemistry,1 journal of automated reasoning,2 journal of automatic control,-1 journal of automation and control engineering,-1 journal of automation and information sciences,1 "journal of automation, electronics and electrical engineering",-1 journal of autonomy and security studies,1 journal of avant-garde studies,1 journal of avian biology,2 journal of avian medicine and surgery,1 journal of aviation technology and engineering,1 journal of awareness-based systems change,-1 journal of ayn rand studies,-1 journal of ayurveda and integrative medicine,1 journal of back and musculoskeletal rehabilitation,1 journal of bacteriology,1 journal of balkan and near eastern studies,1 journal of baltic science education,-1 journal of baltic studies,2 journal of bamboo and rattan,1 journal of band research,1 journal of banking and finance,2 journal of banking and financial economics,1 journal of banking regulation,1 journal of basic & clinical physiology & pharmacology,-1 journal of basic and applied sciences,-1 journal of basic and applied scientific research,-1 journal of basic microbiology,1 journal of beckett studies,2 journal of behavior therapy and experimental psychiatry,1 journal of behavioral addictions,1 journal of behavioral and applied management,1 journal of behavioral and brain science,-1 journal of behavioral and experimental economics,1 journal of behavioral and experimental finance,1 journal of behavioral and social sciences,-1 journal of behavioral decision making,2 journal of behavioral economics for policy,1 journal of behavioral education,1 journal of behavioral finance,1 journal of behavioral health services and research,1 journal of behavioral medicine,1 journal of beijing college of politics and law,1 journal of beliefs and values,1 journal of benefit-cost analysis,1 journal of berry research,1 journal of bhutan studies,1 journal of biblical literature,3 journal of big data,1 journal of big history,-1 journal of binocular vision and ocular motility,1 journal of bio- and tribo-corrosion,1 journal of bioactive and compatible polymers,1 journal of biobased materials and bioenergy,-1 journal of biochemical and molecular toxicology,1 journal of biochemical and pharmacological research,-1 journal of biochemistry,1 journal of biodiversity management & forestry,-1 journal of bioeconomics,1 journal of bioenergetics and biomembranes,1 journal of bioengineering and biomedical science,-1 journal of bioethical inquiry,1 journal of biogeography,2 journal of bioinformatics and computational biology,1 journal of biological chemistry,2 journal of biological dynamics,1 journal of biological education,1 journal of biological engineering,1 journal of biological inorganic chemistry,1 journal of biological physics,1 journal of biological regulators and homeostatic agents,-1 journal of biological research: thessaloniki,1 journal of biological rhythms,1 journal of biological systems,1 journal of biologically active products from nature,1 journal of biomaterials and nanobiotechnology,-1 journal of biomaterials and tissue engineering,-1 journal of biomaterials applications,1 journal of biomaterials science: polymer edition,1 journal of biomechanical engineering: transactions of the asme,1 journal of biomechanics,2 journal of biomedical engineering and biosciences,-1 journal of biomedical informatics,1 journal of biomedical informatics x,-1 journal of biomedical materials research part a,1 journal of biomedical materials research part b: applied biomaterials,1 journal of biomedical nanotechnology,-1 journal of biomedical optics,2 journal of biomedical photonics & engineering,-1 journal of biomedical physics and engineering,-1 journal of biomedical research & environmental sciences,-1 journal of biomedical science,2 journal of biomedical science and engineering,-1 journal of biomedical semantics,1 journal of biometrics & biostatistics,-1 "journal of biomimetics, biomaterials and biomedical engineering",-1 journal of biomolecular nmr,1 journal of biomolecular structure and dynamics,1 journal of biomolecular techniques,1 journal of bionic engineering,1 journal of biopharmaceutical statistics,1 journal of biophotonics,1 journal of bioremediation & biodegradation,-1 journal of bioresources and bioproducts,-1 journal of bioscience and bioengineering,1 journal of biosciences,1 journal of biosensors and bioelectronics,-1 journal of biosocial science,1 journal of biotech research,-1 journal of biotechnology,1 journal of biotechnology & biomaterials,-1 journal of biotechnology x,1 journal of biourbanism,1 journal of bisexuality,1 journal of black psychology,1 journal of black sexuality and relationships,-1 journal of black studies,1 journal of bodywork and movement therapies,1 journal of bone and joint surgery : american volume,3 journal of bone and mineral metabolism,1 journal of bone and mineral research,3 journal of bone metabolism,1 journal of bone oncology,1 journal of borderlands studies,1 journal of brand management,1 journal of brand strategy,-1 journal of breast cancer,1 journal of breath research,1 journal of bridge engineering,1 journal of british and irish innovative poetry,1 journal of british cinema and television,1 journal of british studies,2 journal of broadcasting and electronic media,2 journal of bryology,1 journal of buddhist ethics,1 journal of building acoustics,1 journal of building construction and planning research,-1 journal of building engineering,1 journal of building material science,1 journal of building pathology and rehabilitation,1 journal of building performance simulation,1 journal of building physics,2 "journal of building survey, appraisal and valuation",-1 journal of burn care and research,1 journal of business administration,-1 journal of business and behavioral sciences,-1 journal of business and economic statistics,3 journal of business and economics,-1 journal of business and finance librarianship,1 journal of business and industrial marketing,1 journal of business and policy research,-1 journal of business and psychology,1 journal of business and technical communication,1 journal of business anthropology,1 journal of business chemistry,1 journal of business continuity and emergency planning,-1 journal of business cycle research,1 journal of business economics,1 journal of business economics and management,1 journal of business ecosystems,1 journal of business ethics,2 journal of business ethics education,1 journal of business finance and accounting,2 journal of business law,2 journal of business logistics,1 journal of business management and economics,-1 journal of business market management,1 journal of business models,1 journal of business research,2 journal of business strategy,1 journal of business studies quarterly,-1 "journal of business systems, governance and ethics",1 journal of business venturing,3 journal of business venturing design,1 journal of business venturing insights,1 "journal of business, communication and technology",1 journal of business-to-business marketing,1 "journal of cachexia, sarcopenia and muscle",2 journal of camel practice and research,1 journal of canadian petroleum technology,1 journal of canadian studies : revue d'etudes canadiennes,2 journal of cancer,1 journal of cancer education,1 journal of cancer epidemiology & prevention,1 journal of cancer policy,1 journal of cancer research & therapy,-1 journal of cancer research and clinical oncology,1 journal of cancer research and therapeutics,1 journal of cancer science & therapy,-1 journal of cancer science and clinical therapeutics,-1 journal of cancer survivorship,1 journal of cancer therapeutics & research,-1 journal of cancer therapy,-1 journal of cannabis research,1 journal of carbohydrate chemistry,1 journal of carcinogenesis,1 journal of carcinogenesis and mutagenesis,-1 journal of cardiac failure,1 journal of cardiac surgery,1 journal of cardiology,1 journal of cardiology & clinical research,-1 journal of cardiology cases,-1 journal of cardiopulmonary rehabilitation and prevention,1 journal of cardiothoracic and vascular anesthesia,1 journal of cardiothoracic surgery,1 journal of cardiovascular computed tomography,1 journal of cardiovascular development and disease,-1 journal of cardiovascular electrophysiology,1 journal of cardiovascular magnetic resonance,2 journal of cardiovascular medicine,1 journal of cardiovascular nursing,2 journal of cardiovascular pharmacology,1 journal of cardiovascular pharmacology and therapeutics,1 journal of cardiovascular surgery,1 journal of cardiovascular translational research,1 journal of career assessment,2 journal of career development,1 journal of caribbean archaeology,1 journal of case reports and medical images,-1 journal of case reports and studies,-1 journal of case reports in medicine,-1 journal of cases on information technology,1 journal of casting & materials engineering,-1 journal of catalysis,3 journal of cataract and refractive surgery,1 journal of causal inference,1 journal of cave and karst studies,1 journal of cell biology,3 journal of cell communication and signaling,1 journal of cell death,1 journal of cell science,2 journal of cellular and molecular medicine,1 journal of cellular automata,1 journal of cellular biochemistry,1 journal of cellular physiology,1 journal of cellular plastics,1 journal of celtic linguistics,2 journal of central banking theory and practice,1 journal of central nervous system disease,1 journal of central south university,1 journal of ceramic processing research,1 journal of ceramic science and technology,-1 journal of cereal science,1 journal of cerebral blood flow and metabolism,3 journal of cetacean research and management,1 journal of change management,1 journal of chemical and engineering data,1 journal of chemical biology,1 journal of chemical crystallography,1 journal of chemical ecology,1 journal of chemical education,1 journal of chemical engineering & process technology,-1 journal of chemical engineering of japan,1 journal of chemical information and modeling,1 journal of chemical metrology,-1 journal of chemical neuroanatomy,1 journal of chemical physics,1 journal of chemical research,1 journal of chemical sciences,-1 journal of chemical technology and biotechnology,1 journal of chemical technology and metallurgy,-1 journal of chemical theory and computation,2 journal of chemical thermodynamics,1 journal of cheminformatics,1 journal of chemistry,1 journal of chemistry and chemical engineering,-1 journal of chemistry and technologies,-1 journal of chemometrics,1 journal of chemotherapy,1 journal of child & adolescent trauma,1 journal of child and adolescent behavior,-1 journal of child and adolescent mental health,1 journal of child and adolescent psychiatric nursing,1 journal of child and adolescent psychopharmacology,1 journal of child and adolescent substance abuse,1 journal of child and family studies,1 journal of child health care,1 journal of child language,3 journal of child language acquisition and development,1 journal of child neurology,1 journal of child psychology and psychiatry,3 journal of child psychotherapy,1 journal of child sexual abuse,1 journal of childhood studies,1 "journal of childhood, education & society",1 journal of children and media,1 journal of children and poverty,1 journal of childrens services,1 journal of children´s orthopaedics,1 journal of china and international relations,1 journal of china tourism research,1 journal of china universities of posts and telecommunications,-1 journal of chinese cinemas,1 journal of chinese economics and business studies,1 journal of chinese humanities,1 journal of chinese linguistics,2 journal of chinese linguistics : monograph series,-1 journal of chinese literature and culture,1 journal of chinese overseas,1 journal of chinese philosophy,1 journal of chinese political science,1 journal of chinese social and economic history,1 journal of choice modelling,1 journal of christian education,1 journal of chromatographic science,1 journal of chromatography a,1 journal of chromatography b: analytical technologies in the biomedical and life sciences,1 journal of chromatography open,1 journal of church and state,2 journal of cinema and media studies,3 journal of circadian rhythms,1 journal of circuits systems and computers,1 journal of circulating biomarkers,-1 journal of civil & environmental engineering,-1 journal of civil engineering and architecture,-1 journal of civil engineering and construction technology,-1 journal of civil engineering and management,1 journal of civil engineering and materials application,-1 journal of civil engineering research,-1 journal of civil society,1 journal of civil structural health monitoring,-1 journal of classical analysis,-1 journal of classical sociology,1 journal of classics teaching,1 journal of classification,1 journal of classroom interaction,1 journal of clean energy technologies,-1 journal of cleaner production,2 journal of climate,2 journal of clinical & cellular immunology,-1 journal of clinical & experimental cardiology,-1 journal of clinical & experimental dermatology research,-1 journal of clinical & experimental ophthalmology,-1 journal of clinical & experimental pathology,-1 journal of clinical & translational endocrinology,1 journal of clinical and diagnostic research,-1 journal of clinical and experimental dentistry,1 journal of clinical and experimental neuropsychology,1 journal of clinical and medical images case reports,-1 journal of clinical and translational pathology,-1 journal of clinical anesthesia,1 journal of clinical apheresis,1 journal of clinical biochemistry and nutrition,1 journal of clinical case reports,-1 journal of clinical case reports and images,-1 journal of clinical child and adolescent psychology,2 journal of clinical densitometry,1 journal of clinical dentistry,1 journal of clinical endocrinology and metabolism,3 journal of clinical engineering,1 journal of clinical epidemiology,3 journal of clinical ethics,1 journal of clinical gastroenterology,1 journal of clinical gerontology and geriatrics,1 journal of clinical gynecology and obstetrics,-1 journal of clinical hypertension,1 journal of clinical immunology,2 journal of clinical investigation,3 journal of clinical laboratory analysis,1 journal of clinical lipidology,1 journal of clinical medicine,-1 journal of clinical microbiology,1 journal of clinical monitoring and computing,1 journal of clinical neurology,1 journal of clinical neuromuscular disease,1 journal of clinical neurophysiology,1 journal of clinical neuroscience,1 journal of clinical nursing,3 journal of clinical oncology,3 journal of clinical oncology and research,-1 journal of clinical orthodontics,1 journal of clinical orthopaedics and trauma,-1 journal of clinical outcomes management,1 journal of clinical pathology,1 journal of clinical pediatric dentistry,1 journal of clinical periodontology,3 journal of clinical pharmacology,1 journal of clinical pharmacy and therapeutics,1 journal of clinical psychiatry,1 journal of clinical psychology,1 journal of clinical psychology in medical settings,1 journal of clinical psychopharmacology,1 journal of clinical research & bioethics,-1 journal of clinical respiratory diseases and care,-1 journal of clinical sleep medicine,1 journal of clinical sport psychology,1 journal of clinical trials,-1 journal of clinical ultrasound,1 journal of clinical virology,1 journal of cloud computing,1 journal of cluster science,1 journal of cme,1 journal of co-operative organization and management,1 journal of co-operative studies,-1 journal of co2 utilization,1 journal of coastal conservation,1 journal of coastal research,-1 journal of coatings technology and research,1 journal of cognition,1 journal of cognition and culture,1 journal of cognition and development,1 journal of cognitive and behavioral psychotherapies,1 journal of cognitive education and psychology,1 journal of cognitive engineering and decision making,1 journal of cognitive enhancement,-1 journal of cognitive neuroscience,2 journal of cognitive psychology,1 journal of cognitive psychotherapy: an international quarterly,1 journal of cognitive science,1 journal of cold regions engineering,1 journal of cold war studies,2 journal of collective negotiations,1 journal of college student development,1 journal of college student mental health,1 "journal of college student retention: research, theory and practice",1 journal of colloid and interface science,1 journal of colonialism and colonial history,1 journal of combat sports and martial arts,-1 journal of combinatorial designs,1 journal of combinatorial optimization,1 journal of combinatorial theory series a,3 journal of combinatorial theory series b,2 journal of combinatorics and number theory,1 journal of commodity markets,1 journal of commonwealth and comparative politics,1 journal of commonwealth and postcolonial studies,1 journal of communication,3 journal of communication and computer,-1 journal of communication and religion,1 journal of communication disorders,2 "journal of communication disorders, deaf studies & hearing aids",-1 journal of communication in healthcare,1 journal of communication inquiry,1 journal of communication management,1 journal of communication technology,1 journal of communications,1 journal of communications and information networks,-1 journal of communications and information sciences,1 journal of communications and networks,1 journal of communications software and systems,1 journal of communications technology and electronics,1 journal of community and applied social psychology,2 journal of community archaeology and heritage,1 journal of community genetics,1 journal of community health,1 journal of community health nursing,1 journal of community informatics,1 journal of community medicine & public health,-1 journal of community practice,1 journal of community psychology,1 journal of community safety & well-being,1 journal of commutative algebra,1 journal of comparative asian development,1 journal of comparative economics,2 journal of comparative effectiveness research,-1 journal of comparative family studies,1 journal of comparative germanic linguistics,2 journal of comparative law,1 journal of comparative literature and aesthetics,-1 journal of comparative neurology,1 journal of comparative pathology,1 journal of comparative physiology a: neuroethology sensory neural and behavioral physiology,1 "journal of comparative physiology b : biochemical, systemic, and environmental physiology",1 journal of comparative policy analysis: research and practice,1 journal of comparative politics,1 journal of comparative psychology,1 journal of comparative research in anthropology and sociology,1 journal of comparative social work,1 journal of competition law and economics,2 journal of competitiveness,1 journal of complementary & integrative medicine,1 journal of complex networks,1 journal of complexity,1 journal of complexity in health sciences,1 journal of composite materials,1 journal of composites for construction,2 journal of composites science,-1 journal of computational acoustics,1 journal of computational analysis and applications,1 journal of computational and applied mathematics,1 journal of computational and graphical statistics,3 journal of computational and nonlinear dynamics,1 journal of computational and theoretical nanoscience,-1 journal of computational and theoretical transport,1 journal of computational biology,1 journal of computational chemistry,1 journal of computational design and engineering,1 journal of computational electronics,1 journal of computational finance,1 journal of computational geometry,1 journal of computational information systems,1 journal of computational interdisciplinary sciences,1 journal of computational literary studies,1 journal of computational mathematics,1 journal of computational methods in sciences and engineering,1 journal of computational neuroscience,1 journal of computational physics,2 journal of computational physics x,1 journal of computational science,1 journal of computational social science,1 journal of computer and communications,-1 journal of computer and system sciences,3 journal of computer and systems sciences international,1 journal of computer applications in archaeology,1 journal of computer assisted learning,2 journal of computer assisted tomography,1 "journal of computer chemistry, japan",-1 journal of computer engineering & information technology,-1 journal of computer graphics techniques,1 journal of computer information systems,1 journal of computer languages,1 journal of computer networks and communications,1 journal of computer science and technology,1 journal of computer security,2 journal of computer virology and hacking techniques,1 journal of computer-aided design & computer graphics,-1 journal of computer-aided molecular design,1 journal of computer-mediated communication,3 journal of computerized adaptive testing,-1 journal of computers,-1 journal of computers in education,1 journal of computers in mathematics and science teaching,1 journal of computing and information science in engineering,1 journal of computing and information technology,1 journal of computing in civil engineering,1 journal of computing in higher education,1 journal of conchology,1 journal of concrete and applicable mathematics,1 journal of condensed matter nuclear science,-1 journal of conflict and integration,1 journal of conflict and security law,1 journal of conflict archaeology,1 journal of conflict resolution,3 journal of conflict transformation,-1 journal of consciousness studies,1 journal of conservation and museum studies,1 journal of construction,-1 journal of construction engineering and management: asce,2 "journal of construction engineering, technology and management",-1 journal of construction in developing countries,1 journal of construction management,-1 journal of construction project management and innovation,-1 journal of constructional steel research,2 journal of constructivist psychology,1 journal of consulting and clinical psychology,3 journal of consumer affairs,1 journal of consumer behaviour,1 journal of consumer culture,1 journal of consumer ethics,1 journal of consumer health on the internet,1 journal of consumer marketing,1 journal of consumer policy,1 journal of consumer psychology,2 journal of consumer research,3 journal of contaminant hydrology,1 journal of contemplative inquiry,1 journal of contemporary accounting and economics,1 journal of contemporary african studies,1 journal of contemporary archaeology,1 journal of contemporary asia,2 journal of contemporary brachytherapy,1 journal of contemporary central and eastern europe,1 journal of contemporary china,1 "journal of contemporary crime, harm, and ethics",1 journal of contemporary criminal justice,1 journal of contemporary dental practice,1 journal of contemporary education theory & research,1 journal of contemporary ethnography,2 journal of contemporary european research,1 journal of contemporary european studies,1 journal of contemporary history,3 journal of contemporary issues in education,-1 journal of contemporary management,-1 journal of contemporary management issues,1 journal of contemporary marketing science,-1 journal of contemporary mathematical analysis: armenian academy of sciences,1 journal of contemporary medicine,-1 journal of contemporary philology,1 journal of contemporary physics: armenian academy of sciences,1 journal of contemporary psychotherapy,1 journal of contemporary religion,3 journal of contemporary thought,1 journal of contemporary water research and education,1 journal of contextual behavioral science,1 journal of contingencies and crisis management,1 journal of continuing education in nursing,-1 journal of continuing education in the health professions,1 journal of continuing higher education,1 journal of contract law,1 journal of contract management,-1 journal of control science and engineering,1 "journal of control, automation and electrical systems",1 journal of controlled release,3 journal of controversial ideas,1 journal of convention and event tourism,1 journal of convex analysis,1 journal of coordination chemistry,1 journal of coptic studies,1 journal of corpora and discourse studies,1 journal of corporate citizenship,1 journal of corporate finance,3 journal of corporate law studies,2 journal of corporate real estate,1 journal of correctional education,1 journal of corrosion science and engineering,1 journal of cosmetic and laser therapy,1 journal of cosmetic dermatology,1 journal of cosmetic science,1 journal of cosmology,-1 journal of cosmology and astroparticle physics,2 journal of cost management,-1 journal of cotton science,1 journal of counseling and development,2 journal of counseling psychology,3 journal of couple and relationship therapy,1 journal of coupled systems and multiscale dynamics,-1 journal of cranio-maxillofacial surgery,1 journal of craniofacial surgery,1 journal of craniomandibular function,1 journal of creating value,1 journal of creative behavior,1 journal of creative communications,1 journal of creative industries and cultural studies,1 journal of creative practices in language learning and teaching,1 journal of creativity,1 journal of credit risk,1 journal of crime & justice,1 journal of criminal justice,2 journal of criminal justice and popular culture,1 journal of criminal law,-1 journal of criminal law and criminology,1 journal of criminal psychology,1 "journal of criminological research, policy and practice",1 journal of criminology,1 journal of critical care,1 journal of critical incident analysis,-1 journal of critical infrastructure policy,1 journal of critical mixed race studies,-1 journal of critical realism,1 journal of critical thought & praxis,-1 journal of crohns and colitis,2 journal of crop health,1 journal of crop improvement,1 journal of cross-cultural gerontology,1 journal of cross-cultural psychology,2 journal of crustacean biology,1 journal of cryptographic engineering,1 journal of cryptology,3 journal of crystal growth,1 journal of culinary science and technology,1 journal of cultural analysis and social change,-1 journal of cultural analytics,1 journal of cultural cognitive science,1 journal of cultural economics,2 journal of cultural economy,1 journal of cultural geography,1 journal of cultural heritage,3 journal of cultural heritage management and sustainable development,1 journal of cultural property conservation,1 journal of cultural research in art education,-1 "journal of culture, society and development",-1 journal of cuneiform studies,1 journal of current chinese affairs,1 journal of current issues and research in advertising,1 journal of curriculum & instruction,1 journal of curriculum and pedagogy,1 journal of curriculum and teaching,-1 journal of curriculum studies,3 journal of curriculum theorizing,1 journal of customer behaviour,1 journal of cutaneous medicine and surgery,1 journal of cutaneous pathology,1 journal of cyber policy,1 journal of cyber security and mobility,1 journal of cyber security technology,1 journal of cybersecurity,1 journal of cybersecurity and privacy,-1 "journal of cybersecurity education, research & practice",-1 journal of cycling and micromobility research,-1 journal of cystic fibrosis,1 journal of cytology,1 journal of dairy research,1 journal of dairy science,3 journal of dance & somatic practices,1 journal of dance education,2 journal of dance medicine & science,-1 journal of data analysis and information processing,-1 journal of data and information science,1 journal of data mining and digital humanities,1 journal of data protection & privacy,1 journal of data science,-1 journal of data science and intelligent systems,-1 "journal of data science, statistics, and visualisation",1 journal of database management,1 journal of deaf studies and deaf education,1 journal of deafblind studies on communication,-1 journal of decision systems,1 journal of defence studies,-1 journal of defense analytics and logistics,1 journal of defense modeling and simulation,1 journal of defense resources management,-1 journal of defense studies and resource management,-1 journal of deliberative democracy,1 journal of democracy,-1 journal of democratic theory,-1 journal of demographic economics,1 journal of dental education,1 journal of dental hygiene,1 journal of dental research,3 "journal of dental science, oral and maxillofacial research",-1 journal of dental sciences,1 journal of dentistry,2 journal of dentistry and oral biology,-1 journal of dentistry and oral health (jdoh),-1 journal of dentistry for children,1 journal of dentistry research,-1 journal of derivatives,1 journal of derivatives and hedge funds,1 journal of dermatological science,1 journal of dermatological treatment,1 journal of dermatology,1 journal of design and textiles,-1 journal of design for resilience in architecture and planning,1 journal of design for sustainable and environment,-1 journal of design history,3 journal of design research,1 journal of design strategies,-1 journal of design thinking,1 "journal of design, business and society",1 journal of destination marketing and management,1 journal of developing areas,1 journal of developing societies,1 journal of development economics,3 journal of development economics and finance,-1 journal of development effectiveness,1 journal of development studies,2 journal of developmental and behavioral pediatrics,1 journal of developmental and life course criminology,1 journal of developmental and physical disabilities,1 journal of developmental biology,-1 journal of developmental biology and tissue engineering,-1 journal of developmental entrepreneurship,1 journal of developmental origins of health and disease,1 journal of dharma,-1 journal of diabetes,1 journal of diabetes and its complications,1 journal of diabetes and metabolic disorders,1 journal of diabetes and metabolism,-1 journal of diabetes investigation,1 journal of diabetes mellitus,-1 journal of diabetes research,1 journal of diabetes science and technology,1 journal of diagnostic medical sonography,1 journal of dialogue studies,1 journal of didactics of philosophy,1 journal of dietary supplements,1 journal of difference equations and applications,1 journal of differential equations,2 journal of differential geometry,3 journal of digestive diseases,1 journal of digital humanities,-1 journal of digital information management,1 journal of digital landscape architecture,1 journal of digital learning in teacher education,1 journal of digital media & interaction,1 journal of digital media & policy,1 journal of digital social research,1 journal of disability & religion,1 journal of disability policy studies,1 journal of disaster research,1 journal of discrete algorithms,1 journal of discrete mathematical sciences & cryptography,1 journal of dispersion science and technology,1 journal of display technology,1 journal of distributed systems and technologies,-1 journal of diversity in higher education,1 journal of documentation,3 journal of drug and alcohol research,-1 journal of drug assessment,1 journal of drug delivery science and technology,1 journal of drug education,1 journal of drug issues,1 journal of drug targeting,1 journal of drugs in dermatology,1 journal of dual diagnosis,1 journal of dynamic behavior of materials,1 journal of dynamic systems measurement and control: transactions of the asme,1 journal of dynamical and control systems,1 journal of dynamical systems and geometric theories,1 journal of dynamics and differential equations,2 journal of dynamics and games,1 journal of e-business,-1 journal of e-government studies and best practices,-1 journal of e-health management,-1 journal of e-learning and higher education,-1 journal of e-learning and knowledge society,1 journal of e.commerce and psychology,1 journal of early adolescence,1 journal of early childhood education research,1 journal of early childhood literacy,2 journal of early childhood research,1 journal of early childhood teacher education,1 journal of early christian history,1 journal of early christian studies,3 journal of early intervention,1 journal of early modern christianity,1 journal of early modern history,3 journal of early modern studies,1 journal of early modern studies,2 journal of earth science,1 journal of earth science and engineering,-1 journal of earth sciences and geotechnical engineering,1 journal of earth system science,1 journal of earthquake and tsunami,1 journal of earthquake engineering,1 journal of east asia and international law,1 journal of east asian archaeology,1 journal of east asian linguistics,2 journal of east asian philosophy,1 journal of east asian studies,1 journal of east-european and asian studies,-1 journal of east-west business,1 journal of east-west thought,1 journal of eastern african studies,1 journal of eastern caribbean studies,1 journal of eastern christian studies,1 journal of eastern europe research in business and economics,-1 journal of eastern mediterranean archaeology and heritage studies,1 journal of eating disorders,1 journal of ecclesiastical history,3 journal of ecohumanism,1 journal of ecohydraulics,1 journal of ecological anthropology,1 journal of ecological engineering,1 journal of ecology,3 journal of ecology and environment,1 journal of econometric methods,1 journal of econometrics,3 journal of economic analysis,-1 journal of economic and administrative sciences,1 journal of economic and social measurement,1 journal of economic and social policy,1 journal of economic asymmetries,1 journal of economic behavior and organization,2 journal of economic dynamics and control,2 journal of economic education,1 journal of economic entomology,1 journal of economic geography,3 journal of economic growth,2 journal of economic history,3 journal of economic inequality,2 journal of economic interaction and coordination,1 journal of economic issues,1 journal of economic literature,3 journal of economic methodology,1 journal of economic perspectives,2 journal of economic policy reform,1 journal of economic psychology,1 journal of economic research,-1 journal of economic sciences,-1 journal of economic structures,1 journal of economic studies,1 journal of economic surveys,1 journal of economic theory,3 journal of economics,1 journal of economics and business,1 journal of economics and finance,1 journal of economics and management strategy,2 journal of economics studies and research,-1 "journal of economics, business and management",-1 "journal of economics, race, and policy",-1 "journal of economics, theology and religion",1 journal of ecotourism,1 journal of ect,1 journal of ecumenical studies,1 journal of education,1 journal of education advancement & marketing,-1 journal of education and christian belief,1 journal of education and development,-1 journal of education and health promotion,-1 journal of education and human development,-1 journal of education and learning,-1 journal of education and practice,-1 journal of education and research,1 journal of education and training,-1 journal of education and training studies,-1 journal of education and work,2 journal of education finance,1 journal of education for business,1 journal of education for international development,1 journal of education for library and information science,1 journal of education for life,1 journal of education for multilingualism,-1 journal of education for students placed at risk,1 journal of education for sustainable development,1 journal of education for teaching,1 journal of education in museums,1 "journal of education in science, environment and health",1 journal of education policy,3 "journal of education policy, planning and administration",1 "journal of education, culture and society",1 "journal of education, language, and ideology",-1 "journal of education, psychology and social sciences",-1 "journal of education, society and behavioural science",-1 journal of educational administration,1 journal of educational administration and history,1 journal of educational and behavioral statistics,2 journal of educational and developmental psychology,-1 journal of educational and psychological consultation,1 journal of educational and social research,-1 journal of educational change,2 journal of educational computing research,1 journal of educational data mining,1 journal of educational evaluation for health professions,1 journal of educational issues,-1 "journal of educational media, memory, and society",1 journal of educational multimedia and hypermedia,1 journal of educational psychology,3 journal of educational research,2 journal of educational technology systems,1 "journal of educational, health and community psychology",-1 journal of egyptian archaeology,3 journal of elasticity,1 journal of elastomers and plastics,1 journal of elder abuse and neglect,1 "journal of elections, public opinion, and parties",2 journal of electrical and computer engineering,1 journal of electrical engineering,-1 journal of electrical engineering and technology,1 journal of electrical systems,-1 journal of electroanalytical chemistry,1 journal of electrocardiology,1 journal of electroceramics,1 journal of electrochemical science and engineering,1 journal of electrochemical science and technology,1 journal of electromagnetic analysis and applications,-1 journal of electromagnetic engineering and science,-1 journal of electromagnetic waves and applications,1 journal of electromyography and kinesiology,2 journal of electron spectroscopy and related phenomena,1 journal of electronic banking systems,-1 journal of electronic commerce in organizations,1 journal of electronic commerce research,1 journal of electronic gaming and esports,-1 journal of electronic imaging,1 journal of electronic materials,1 journal of electronic packaging,1 journal of electronic publishing,1 journal of electronic research and application,-1 journal of electronic science and technology,-1 journal of electronic testing: theory and applications,1 journal of electronics and electrical engineering,-1 journal of electronics and information technology,1 journal of electrostatics,1 journal of elementology,1 journal of embeded computing,1 journal of embodied research,1 journal of emergency medicine,1 journal of emergency nursing,1 journal of emerging and rare diseases,-1 journal of emerging market finance,1 journal of emerging sport studies,-1 journal of emerging technologies in accounting,1 journal of emerging technologies in web intelligence,-1 journal of emerging trends in computing and information sciences,-1 journal of emerging trends in marketing and management,-1 journal of emotional and behavioral disorders,1 journal of empirical finance,2 journal of empirical generalisations in marketing science,1 journal of empirical legal studies,1 journal of empirical research on human research ethics,1 journal of empirical theology,2 journal of employment counseling,1 journal of enabling technologies,1 journal of endocrinological investigation,1 journal of endocrinology,1 journal of endodontics,2 journal of endometriosis and pelvic pain disorders,1 journal of endourology,1 journal of endovascular resuscitation and trauma management,1 journal of endovascular therapy,1 journal of energetic materials,1 journal of energy and development,1 journal of energy and natural resource,-1 journal of energy and natural resources law,2 journal of energy and power engineering,-1 journal of energy and power technology,-1 journal of energy chemistry,1 journal of energy engineering: asce,1 journal of energy history,1 journal of energy in southern africa,1 journal of energy markets,1 journal of energy resources technology: transactions of the asme,1 journal of energy storage,2 journal of engineered fibers and fabrics,1 journal of engineering,1 journal of engineering and applied science,-1 journal of engineering and applied sciences,-1 journal of engineering and science research,-1 journal of engineering and technology management,1 journal of engineering design,1 journal of engineering education,2 journal of engineering for gas turbines and power: transactions of the asme,1 journal of engineering materials and technology: transactions of the asme,1 journal of engineering mathematics,1 journal of engineering mechanics: asce,1 journal of engineering physics and thermophysics,1 journal of engineering science & technology,1 journal of engineering science and technology review,1 journal of engineering thermophysics,-1 "journal of engineering, design and technology",1 journal of english and germanic philology,3 journal of english as a lingua franca,1 journal of english for academic purposes,2 journal of english for research publication purposes,1 journal of english linguistics,3 journal of english phonetic society of japan,1 journal of english studies,1 journal of english-medium instruction,-1 journal of enhanced heat transfer,1 journal of enterprise architecture,-1 journal of enterprise information management,1 journal of enterprise resource planning studies,-1 journal of enterprise transformation,1 journal of enterprising communities,1 journal of enterprising culture,1 journal of entomological science,1 journal of entrepreneurial and organizational diversity,-1 journal of entrepreneurship,1 journal of entrepreneurship and public policy,1 journal of entrepreneurship education,-1 journal of entrepreneurship in emerging economies,1 "journal of entrepreneurship, business and economics",-1 "journal of entrepreneurship, management and innovation",1 journal of entrepreneurship: research & practice,-1 journal of environment and development,1 journal of environmental & earth sciences,1 journal of environmental accounting and management,1 journal of environmental and analytical toxicology,-1 journal of environmental and engineering geophysics,1 journal of environmental and occupational science,1 journal of environmental assessment policy and management,1 journal of environmental biology,1 journal of environmental chemical engineering,1 journal of environmental economics and management,3 journal of environmental economics and policy,1 journal of environmental education,2 journal of environmental engineering and landscape management,1 journal of environmental engineering and science,1 journal of environmental engineering: asce,1 journal of environmental health,1 journal of environmental health research,1 journal of environmental health science & engineering,-1 journal of environmental hydrology,-1 journal of environmental informatics,1 journal of environmental informatics letters,1 journal of environmental law,3 journal of environmental law & policy,1 journal of environmental management,2 journal of environmental media,-1 journal of environmental pathology toxicology and oncology,1 journal of environmental planning and management,1 journal of environmental policy and planning,2 journal of environmental protection,-1 journal of environmental protection and ecology,-1 journal of environmental psychology,3 journal of environmental quality,1 journal of environmental radioactivity,1 journal of environmental science and engineering,-1 journal of environmental science and health part a: toxic/hazardous substances and environmental engineering,1 journal of environmental science and health part b: pesticides food contaminants and agricultural wastes,1 journal of environmental science and health part c: environmental carcinogenesis and ecotoxicology reviews,1 journal of environmental science and management,1 journal of environmental sciences: china,1 journal of environmental studies and sciences,1 journal of environmental systems,1 journal of enzyme inhibition and medicinal chemistry,1 journal of epidemiological research,-1 journal of epidemiology,1 journal of epidemiology and community health,3 journal of epidemiology and global health,1 journal of epileptology,1 journal of equine science,1 journal of equine veterinary science,1 journal of equity,1 journal of ergonomics,-1 journal of escience librarianship,1 journal of essential oil research,1 journal of essential oil-bearing plants,1 journal of esthetic and restorative dentistry,1 journal of ethics,2 journal of ethics and legal technologies,1 journal of ethics and social philosophy,2 journal of ethics in entrepreneurship and technology,1 journal of ethiopian law,-1 "journal of ethnic and cultural diversity in social work: innovations in theory, research and practice",1 journal of ethnic and cultural studies,1 journal of ethnic and migration studies,3 journal of ethnic foods,1 journal of ethnicity in criminal justice,1 journal of ethnicity in substance abuse,1 journal of ethnobiology,1 journal of ethnobiology and ethnomedicine,2 journal of ethnopharmacology,1 journal of ethology,1 journal of eu research in business,-1 journal of eukaryotic microbiology,1 journal of eurasian research,1 journal of eurasian studies,1 journal of euromarketing,1 journal of european competition law and practice,2 journal of european economic history,1 journal of european integration,1 journal of european integration history,2 journal of european periodical studies,1 journal of european popular culture,1 journal of european psychology students,1 journal of european public policy,3 journal of european real estate research,1 journal of european social policy,3 journal of european studies,1 journal of european television history and culture,1 journal of european tort law,1 journal of evaluation in clinical practice,1 journal of evidence-based dental practice,1 journal of evidence-based medicine,1 journal of evidence-based social work,1 journal of evolution and technology,1 journal of evolution equations,1 journal of evolutionary biochemistry and physiology,1 journal of evolutionary biology,2 journal of evolutionary economics,1 journal of evolutionary psychology,1 journal of evolutionary studies in business,1 journal of excellence in sales,-1 journal of excipients and food chemicals,-1 journal of exercise physiology online,1 journal of exercise rehabilitation,1 journal of exercise science and fitness,1 journal of exotic pet medicine,1 journal of experimental agriculture international,1 journal of experimental and clinical cancer research,2 journal of experimental and theoretical artificial intelligence,1 journal of experimental and theoretical physics,1 journal of experimental biology,2 journal of experimental botany,2 journal of experimental child psychology,1 journal of experimental criminology,1 journal of experimental education,2 journal of experimental marine biology and ecology,1 journal of experimental medicine,3 journal of experimental nanoscience,1 journal of experimental orthopaedics,1 journal of experimental pharmacology,1 journal of experimental political science,1 journal of experimental psychology: animal behavior processes,1 journal of experimental psychology: applied,1 journal of experimental psychology: general,3 journal of experimental psychology: human perception and performance,2 journal of experimental psychology: learning memory and cognition,2 journal of experimental social psychology,2 journal of experimental therapeutics and oncology,1 journal of experimental zoology a,1 journal of experimental zoology part b: molecular and developmental evolution,1 journal of expertise,1 journal of exposure science and environmental epidemiology,1 journal of extension,1 journal of extracellular biology,1 journal of extracellular vesicles,2 journal of extreme anthropology,1 journal of extreme events,1 journal of eye movement research,1 journal of facade design and engineering,-1 journal of facilities management,1 journal of faculty and staff development in higher education,-1 journal of family and community medicine,-1 journal of family and consumer sciences,1 journal of family and consumer sciences education,1 journal of family and economic issues,1 journal of family business management,1 journal of family business strategy,1 journal of family communication,1 journal of family history,2 journal of family issues,1 journal of family medicine and primary care,1 journal of family nursing,2 journal of family planning and reproductive health care,1 journal of family practice,1 journal of family psychology,2 journal of family research,1 journal of family social work,1 journal of family studies,1 journal of family theory & review,1 journal of family therapy,1 journal of family violence,1 journal of fashion marketing and management,1 journal of fashion technology & textile engineering,-1 journal of feline medicine and surgery,1 journal of feline medicine and surgery open reports,1 journal of feminist family therapy,1 journal of feminist studies in religion,2 journal of field archaeology,2 journal of field ornithology,1 journal of field robotics,2 journal of film and video,1 journal of film music,1 journal of finance,3 journal of finance and data science,1 journal of finance and economics,-1 journal of finance and management in public services,1 journal of finance case research,1 journal of financial and quantitative analysis,3 journal of financial crime,1 journal of financial econometrics,1 journal of financial economic policy,1 journal of financial economics,3 journal of financial education,-1 journal of financial intermediation,3 journal of financial literacy and wellbeing,-1 journal of financial management and accounting,-1 journal of financial management markets and institutions,1 journal of financial management of property and construction,-1 journal of financial markets,2 journal of financial planning,-1 journal of financial regulation,1 journal of financial regulation and compliance,1 journal of financial reporting & accounting,1 journal of financial research,1 journal of financial services marketing,1 journal of financial services research,2 journal of financial stability,2 journal of financial studies,-1 journal of financial studies and research,-1 journal of financial therapy,1 journal of finnish studies,2 journal of fire protection engineering,1 journal of fire sciences,1 journal of fish and wildlife management,-1 journal of fish biology,1 journal of fish diseases,1 journal of fitness research,-1 journal of fixed income,1 journal of fixed point theory and applications,-1 journal of flood risk management,1 journal of florida studies,-1 journal of flow chemistry,1 journal of fluency disorders,2 "journal of fluid flow, heat and mass transfer",-1 journal of fluid mechanics,3 journal of fluids and structures,1 journal of fluids engineering: transactions of the asme,1 journal of fluorescence,1 journal of fluorine chemistry,1 journal of folklore research,3 journal of food & nutritional disorders,-1 journal of food agriculture and environment,-1 journal of food and drug analysis,-1 journal of food and nutrition research,1 journal of food bioactives,-1 journal of food biochemistry,1 journal of food chemistry & nanotechnology,-1 journal of food composition and analysis,1 journal of food engineering,1 journal of food lipids,1 journal of food measurement and characterization,1 journal of food process engineering,1 journal of food processing and beverages,-1 journal of food processing and preservation,1 journal of food products marketing,1 journal of food protection,1 journal of food quality,1 journal of food safety,1 journal of food safety and hygiene,-1 journal of food science,1 journal of food science and technology: mysore,1 journal of food technology,-1 journal of food technology in africa,1 journal of foodservice business research,1 journal of foodservice management and education,1 journal of foot and ankle research,1 journal of foot and ankle surgery,1 journal of foraminiferal research,1 journal of forecasting,1 journal of foreign language education and technology,-1 journal of foreign language teaching and translation studies,-1 "journal of foreign languages, cultures & civilizations",-1 journal of forensic accounting research,1 journal of forensic and legal medicine,1 journal of forensic nursing,1 journal of forensic practice,1 journal of forensic psychiatry and psychology,1 journal of forensic psychology research and practice,1 journal of forensic research,-1 journal of forensic sciences,1 journal of forest business research,-1 journal of forest economics,1 journal of forest planning,-1 journal of forest research,1 journal of forest science,1 journal of forestry,1 journal of forestry research,1 journal of fourier analysis and applications,2 journal of fractal geometry,1 journal of fractional calculus and application,-1 journal of frailty and aging,1 "journal of frailty, sarcopenia and falls",-1 journal of french language studies,3 journal of freshwater ecology,1 journal of friction and wear,1 journal of frontiers in construction engineering,-1 journal of fuel cell science and technology,1 journal of function spaces,-1 journal of functional analysis,2 journal of functional and logic programming,1 journal of functional biomaterials,-1 journal of functional foods,2 journal of functional morphology and kinesiology,-1 journal of functional programming,2 journal of fundamentals of renewable energy and applications,-1 journal of fungi,-1 journal of further and higher education,1 journal of fusion energy,1 journal of futures markets,2 "journal of futures studies: epistemology, methods, applied and alternative futures",1 journal of gambling issues,1 journal of gambling studies,1 journal of games criticism,1 journal of gaming and virtual worlds,1 journal of gang research,1 journal of gastroenterology,2 journal of gastroenterology and hepatology,1 journal of gastrointestinal and liver diseases,1 journal of gastrointestinal cancer,-1 journal of gastrointestinal oncology,1 journal of gastrointestinal surgery,1 journal of gastronomy and tourism,1 journal of gay and lesbian politics,1 journal of gay and lesbian social services,1 journal of gemmology,1 journal of gender studies,2 journal of gender-based violence,1 journal of gene medicine,1 journal of general and applied microbiology,1 journal of general education,1 journal of general internal medicine,1 journal of general management,1 journal of general physiology,2 journal of general plant pathology,1 journal of general practice,-1 journal of general psychology,1 journal of general virology,1 journal of genetic counseling,1 journal of genetic engineering and biotechnology,-1 journal of genetic psychology,1 journal of genetic syndromes & gene therapy,-1 journal of genetics,1 journal of genetics and cell biology,-1 journal of genetics and genome research,1 journal of genetics and genomics,1 journal of genocide research,1 journal of geochemical exploration,1 journal of geodesy,2 journal of geodetic science,1 journal of geodynamics,1 journal of geographic information system,-1 journal of geographical sciences,1 journal of geographical systems,1 journal of geography,1 journal of geography in higher education,1 "journal of geography, environment and earth science international",1 "journal of geography, politics and society",1 journal of geology,1 journal of geometric analysis,2 journal of geometric mechanics,1 journal of geometry,1 journal of geometry and physics,1 journal of geophysical research : atmospheres,2 journal of geophysical research : biogeosciences,2 journal of geophysical research : earth surface,2 journal of geophysical research : oceans,1 journal of geophysical research : planets,1 journal of geophysical research : solid earth,2 journal of geophysical research : space physics,2 journal of geophysics and engineering,1 journal of geoscience education,1 journal of geosciences,1 journal of geosciences and geomatics,-1 journal of geotechnical and geoenvironmental engineering,2 journal of geotechnical and transportation engineering,-1 journal of geriatric cardiology,1 journal of geriatric oncology,-1 journal of geriatric physical therapy,1 journal of geriatric psychiatry and neurology,1 journal of germanic linguistics,1 journal of gerontological nursing,1 journal of gerontological social work,1 journal of gerontology & geriatric research,-1 journal of ginseng research,1 journal of glaciology,1 journal of glass studies,2 journal of glaucoma,1 journal of global academic institute education & social sciences,-1 journal of global ageing,1 journal of global antimicrobial resistance,1 journal of global buddhism,1 journal of global business and technology,-1 journal of global business insights,1 journal of global catholicism,1 journal of global education and research,-1 journal of global entrepreneurship research,1 journal of global ethics,1 journal of global fashion marketing,-1 journal of global health,1 journal of global history,3 journal of global information management,1 journal of global information technology management,1 journal of global marketing,1 journal of global mass communication,1 journal of global mobility,1 journal of global operations and strategic sourcing,1 journal of global optimization,3 journal of global resarch of computer science,-1 journal of global research in education and social science,-1 journal of global resources,-1 journal of global responsibility,1 journal of global scholars of marketing science,-1 journal of global security studies,1 journal of global slavery,1 journal of global sport management,1 journal of global strategic management,-1 journal of governance and regulation,-1 journal of government and civil society,1 journal of governmental & nonprofit accounting,1 journal of graph algorithms and applications,1 journal of graph theory,1 journal of graphic novels and comics,1 journal of graphic technology,1 journal of great lakes research,1 journal of greco-roman christianity and judaism,-1 journal of greco-roman studies,1 journal of greek archaeology,1 journal of greek linguistics,2 journal of green building,1 journal of grey system,-1 journal of grid computing,1 journal of groundwork cases and faculty of judgement,-1 journal of group theory,1 journal of groups in addiction & recovery,1 journal of guangxi normal university : philosophy and social sciences edition,-1 journal of guidance control and dynamics,2 journal of gulf studies,1 journal of gynecologic oncology,1 journal of gynecologic surgery,1 journal of gynecology obstetrics and human reproduction,1 journal of hand and microsurgery,-1 journal of hand surgery global online,1 journal of hand surgery: american volume,1 journal of hand surgery: european volume,1 journal of hand therapy,1 journal of happiness studies,2 journal of harbin institute of technology,-1 journal of hard tissue biology,1 journal of hazardous materials,3 journal of hazardous materials advances,1 "journal of hazardous, toxic and radioactive waste",1 journal of head and neck surgery,1 journal of head trauma rehabilitation,2 journal of headache and pain,2 journal of health administration education,1 journal of health and social behavior,2 journal of health and social sciences,1 journal of health care chaplaincy,1 journal of health care for the poor and underserved,1 journal of health communication,2 journal of health development,-1 journal of health economics,3 journal of health informatics in africa,-1 journal of health informatics in developing countries,1 journal of health management,1 journal of health organization and management,1 journal of health politics policy and law,1 journal of health population and nutrition,1 journal of health psychology,1 journal of health science,-1 journal of health science,1 journal of health services research and policy,1 journal of healthcare informatics research,1 journal of healthcare information management,1 journal of healthcare management,1 journal of healthcare quality research,1 journal of healthcare risk management,-1 journal of heart and lung transplantation,2 journal of heart valve disease,1 journal of hebrew scriptures,2 journal of hellenic studies,3 journal of helminthology,1 journal of hematology,-1 journal of hematology and oncology,2 journal of hepato-biliary-pancreatic sciences,1 journal of hepatocellular carcinoma,1 journal of hepatology,3 "journal of herbs, spices and medicinal plants",1 journal of heredity,1 journal of heritage tourism,1 journal of herpetology,1 journal of heterocyclic chemistry,1 journal of heuristics,2 journal of high energy astrophysics,1 journal of high energy physics,3 "journal of high energy physics, gravitation and cosmology",-1 journal of high speed networks,1 journal of high technology law,-1 journal of high technology management research,1 journal of higher education,3 journal of higher education outreach and engagement,-1 journal of higher education policy and management,1 journal of higher education theory and practice,-1 journal of hindu studies,1 journal of histochemistry and cytochemistry,1 journal of historical geography,1 journal of historical linguistics,2 journal of historical network research,1 journal of historical political economy,1 journal of historical pragmatics,2 journal of historical research in marketing,1 journal of historical sociolinguistics,2 journal of historical sociology,-1 journal of historical studies,1 journal of histotechnology,1 journal of hiv/aids and social services,1 journal of holistic nursing: official journal of the american holistic nurses association,1 journal of holy land and palestine studies,-1 journal of home economics research,1 journal of home language research,1 journal of homeland security and emergency management,1 journal of homosexuality,1 journal of horticultural research,-1 journal of horticultural science and biotechnology,1 journal of horticultural science and research,-1 journal of hospice and palliative nursing,1 journal of hospital administration,-1 journal of hospital infection,1 journal of hospital librarianship,1 journal of hospital medicine,1 journal of hospitality and tourism,-1 journal of hospitality and tourism cases,-1 journal of hospitality and tourism education,1 journal of hospitality and tourism insights,-1 journal of hospitality and tourism management,1 journal of hospitality and tourism research,1 journal of hospitality and tourism technology,1 journal of hospitality application and research,1 journal of hospitality financial management,1 journal of hospitality leisure sport and tourism education,1 journal of hospitality management and tourism,-1 journal of hospitality marketing and management,1 journal of hotel and business management,-1 journal of housing and the built environment,1 journal of housing economics,1 journal of housing research,1 journal of huazhong university of science and technology-medical sciences,1 journal of human and work management,-1 journal of human behavior in the social environment,1 journal of human capital,2 journal of human development and capabilities,1 journal of human ergology,1 journal of human evolution,2 journal of human genetics,1 journal of human growth and development,-1 journal of human hypertension,1 journal of human kinetics,1 journal of human lactation,1 journal of human movement studies,1 journal of human nutrition and dietetics,1 journal of human performance in extreme environments,1 journal of human reproductive sciences,1 journal of human resources,2 journal of human resources in hospitality and tourism,1 journal of human resources management research,-1 journal of human rights,1 journal of human rights and social work,-1 journal of human rights and the environment,1 journal of human rights practice,1 journal of human security,1 journal of human sport and exercise,1 journal of human subjectivity,1 journal of human trafficking,1 "journal of human trafficking, enslavement and conflict-related sexual violence",1 journal of human values,1 journal of human-robot interaction,1 journal of human-technology relations,-1 journal of humanistic counseling,1 journal of humanistic mathematics,1 journal of humanistic psychology,1 journal of humanitarian affairs,1 journal of humanitarian logistics and supply chain management,1 journal of hunger & environmental nutrition,-1 journal of huntington's disease,1 journal of hydraulic engineering: asce,2 journal of hydraulic research,1 journal of hydro-environment research,1 journal of hydrodynamics,1 journal of hydroinformatics,1 journal of hydrologic engineering,1 journal of hydrology,3 journal of hydrology : regional studies,1 journal of hydrology and hydromechanics,1 journal of hydrology new zealand,-1 journal of hydrology x,1 journal of hydrometeorology,1 journal of hygienic engineering and design,-1 journal of hymenoptera research,1 journal of hyperbolic differential equations,1 journal of hypertension,1 journal of iberian and latin american studies,1 journal of iberian archaeology,1 journal of iberian geology,1 journal of ibero-romance creoles,1 journal of ichthyology,1 journal of ict standardisation,1 journal of illustration,1 journal of image and graphics,1 journal of imagery research in sport and physical activity,1 journal of imaging,-1 journal of imaging informatics in medicine,1 journal of imaging science and technology,1 journal of immersion and content-based language education,1 journal of immigrant and minority health,1 journal of immigrant and refugee studies,1 journal of immune based therapies and vaccines,1 journal of immunoassay and immunochemistry,1 journal of immunological methods,1 journal of immunology,2 journal of immunology research,1 journal of immunotherapy,1 journal of immunotoxicology,1 journal of impact and esg investing,-1 journal of imperial and commonwealth history,2 journal of inclusion phenomena and macrocyclic chemistry,1 journal of inclusive cities and built environment,1 journal of income distribution,1 journal of indian association of pediatric surgeons,-1 journal of indian business research,1 journal of indian philosophy,1 journal of indian philosophy and religion,2 journal of indian society of pedodontics and preventive dentistry,-1 journal of individual differences,1 journal of indo-european studies,2 journal of industrial and engineering chemistry,1 journal of industrial and management optimization,1 journal of industrial and production engineering,1 journal of industrial ecology,2 journal of industrial economics,2 journal of industrial engineering and management,1 journal of industrial engineering international,1 journal of industrial history,1 journal of industrial information integration,2 journal of industrial microbiology and biotechnology,1 journal of industrial relations,1 journal of industrial textiles,1 "journal of industry, competition and trade",1 journal of inequalities and applications,1 journal of inequalities in pure and applied mathematics,1 "journal of infant, child, and adolescent psychotherapy",1 journal of infection,2 journal of infection and chemotherapy,1 journal of infection and public health,1 journal of infection in developing countries,-1 journal of infectious diseases,2 journal of inflammation research,1 journal of inflammation: london,1 journal of information and computational science,1 journal of information and knowledge,-1 journal of information and knowledge management,1 journal of information and optimization sciences,1 journal of information and organizational sciences,-1 journal of information and telecommunication,1 journal of information assurance and cybersecurity,-1 journal of information communication and ethics in society,1 journal of information ethics,1 journal of information literacy,1 journal of information policy,1 journal of information privacy and security,1 journal of information processing,-1 journal of information science,3 journal of information science and engineering,1 journal of information science theory and practice,1 journal of information security,-1 journal of information security and applications,1 journal of information system and technology management,-1 journal of information systems,1 journal of information systems and technology management,1 journal of information systems education,1 journal of information technology,3 journal of information technology & software engineering,-1 journal of information technology and politics,1 journal of information technology cases and applications,1 journal of information technology education: innovations in practice,1 journal of information technology education: research,1 journal of information technology in construction,1 journal of information technology management,1 journal of information technology research,-1 journal of information technology teaching cases,1 journal of information warfare,1 "journal of information, information technology and organizations",-1 "journal of information, intelligence and knowledge",-1 journal of informetrics,3 journal of infrared and millimeter waves,1 "journal of infrared, millimeter, and terahertz waves",1 journal of infrastructure development,-1 journal of infrastructure preservation and resilience,1 journal of infrastructure systems,1 journal of infusion nursing,1 journal of inherited metabolic disease,1 journal of injury and violence research,-1 journal of inklings studies,1 journal of innate immunity,1 journal of inner asian art and archaeology,1 journal of innovation and business best practices,-1 journal of innovation and entrepreneurship,1 journal of innovation and knowledge,1 journal of innovation economics,1 journal of innovation in digital ecosystems,-1 journal of innovation management,1 journal of innovation management in small and medium enterprise,-1 journal of innovative optical health sciences,1 journal of inorganic and organometallic polymers and materials,1 journal of inorganic biochemistry,1 journal of inorganic materials,1 journal of insect behavior,1 journal of insect biodiversity and systematics,1 journal of insect biotechnology and sericology,1 journal of insect conservation,1 journal of insect physiology,1 journal of insect science,1 journal of insects as food and feed,1 journal of inspiration economy,-1 journal of institutional and theoretical economics-zeitschrift fur die gesamte staatswissenschaft,1 journal of institutional economics,1 journal of instructional psychology,1 journal of instrumentation,1 journal of insulin resistance,-1 journal of insurance and financial management,-1 journal of integer sequences,1 journal of integral equations and applications,1 journal of integrated care,1 journal of integrated design and process science,1 journal of integrated omics,1 journal of integrative agriculture,1 journal of integrative environmental sciences,1 journal of integrative neuroscience,1 journal of integrative plant biology,1 journal of intellectual and developmental disability,1 journal of intellectual capital,1 journal of intellectual disabilities,1 journal of intellectual disability research,2 journal of intellectual property law and practice,1 journal of intellectual property rights,1 "journal of intellectual property, information technology and electronic commerce law",2 journal of intelligence,-1 journal of intelligence history,1 journal of intelligence studies in business,1 journal of intelligent and fuzzy systems,-1 journal of intelligent and robotic systems,2 journal of intelligent computing,-1 journal of intelligent information systems,1 journal of intelligent manufacturing,2 journal of intelligent material systems and structures,1 journal of intelligent systems,1 journal of intelligent systems and internet of things,1 journal of intelligent transportation systems,1 journal of intensive care,1 journal of intensive care medicine,1 journal of intensive medicine,1 journal of interaction science,1 journal of interactional research in communication disorders,1 journal of interactive advertising,1 journal of interactive learning research,1 journal of interactive marketing,2 journal of interactive media in education,1 journal of interactive online learning,1 journal of interconnection networks,1 journal of intercultural communication,1 journal of intercultural communication research,1 journal of intercultural management,-1 journal of intercultural studies,2 journal of interdisciplinary history,3 journal of interdisciplinary history of ideas,1 journal of interdisciplinary mathematics,1 journal of interdisciplinary music studies,1 journal of interdisciplinary sciences,1 journal of interdisciplinary voice studies,1 journal of interferon and cytokine research,1 journal of intergenerational relationships,1 journal of interior design,1 journal of internal medicine,2 journal of international accounting research,1 "journal of international accounting, auditing and taxation",1 journal of international affairs,-1 journal of international and comparative law,1 journal of international and comparative social policy,1 journal of international and global studies,1 journal of international and intercultural communication,1 journal of international arbitration,1 journal of international banking law and regulation,1 journal of international business and economy,-1 journal of international business management and research,-1 journal of international business policy,1 journal of international business studies,3 journal of international commercial law and technology,1 journal of international communication,1 journal of international conference on electrical machines and systems,1 journal of international consumer marketing,1 journal of international cooperation in education,1 journal of international criminal justice,2 journal of international development,1 journal of international dispute settlement,1 journal of international economic law,3 journal of international economics,3 journal of international education in business,1 journal of international entrepreneurship,1 journal of international environmental application and science,-1 journal of international farm management,1 journal of international financial management and accounting,1 "journal of international financial markets, institutions and money",2 journal of international food and agribusiness marketing,1 journal of international forum of researchers in education,1 journal of international higher education,-1 "journal of international hospitality, leisure and tourism management",-1 journal of international humanitarian action,1 journal of international humanitarian legal studies,1 journal of international logistics and trade,1 journal of international management,1 journal of international maritime law,1 "journal of international maritime safety, environmental affairs, and shipping",1 journal of international marketing,2 journal of international medical research,1 journal of international migration and integration,2 journal of international money and finance,2 journal of international oral health,1 journal of international organization studies,1 journal of international peacekeeping,1 journal of international political theory,1 journal of international relations and development,1 journal of international scientific publications: ecology & safety,-1 journal of international social studies,-1 journal of international society of preventive and community dentistry,1 journal of international special need education,1 journal of international students,1 journal of international studies,1 journal of international taxation,1 journal of international technology and information management,1 journal of international trade and economic development,1 journal of international wildlife law and policy,1 journal of international womens studies,1 journal of internet and e-business studies,-1 journal of internet banking and commerce,-1 journal of internet commerce,1 journal of internet engineering,-1 journal of internet law,-1 journal of internet services and applications,1 journal of internet social networking and virtual communities,-1 journal of internet technology,1 journal of interpersonal violence,2 journal of interpolation and approximation in scientific computing,-1 journal of interpretation research,1 journal of interprofessional care,1 journal of interprofessional education & practice,-1 journal of intervention and statebuilding,1 journal of interventional cardiac electrophysiology,1 journal of interventional cardiology,1 journal of invasive cardiology,1 journal of inverse and ill-posed problems,1 journal of invertebrate pathology,1 journal of investigational allergology and clinical immunology,1 journal of investigative and clinical dentistry,-1 journal of investigative dermatology,3 journal of investigative dermatology symposium proceedings,1 journal of investigative medicine,1 journal of investigative psychology and offender profiling,1 journal of investigative surgery,1 journal of investing,1 journal of investment management,1 journal of irish and scottish studies,1 journal of irish archaeology,1 journal of iron and steel research international,1 journal of irrigation and drainage engineering: asce,1 journal of isakos,1 journal of islamic accounting and business research,1 journal of islamic banking and business research,-1 journal of islamic economic laws,1 journal of islamic ethics,1 journal of islamic marketing,1 journal of islamic studies,2 journal of islamic thought and civilization,1 journal of island and coastal archaeology,1 journal of israeli history,1 journal of italian philosophy,1 journal of i̇stanbul university faculty of dentistry,-1 journal of japanese botany,-1 journal of japanese philosophy,1 journal of japanese society of tribologists,1 journal of japanese studies,2 journal of jesuit studies,1 journal of jewish languages,1 journal of jewish studies,3 journal of jewish thought and philosophy,1 journal of juristic papyrology,1 journal of k-theory,1 journal of king saud university : computer and information sciences,1 journal of king saud university : engineering sciences,-1 journal of king saud university : science,-1 journal of knot theory and its ramifications,1 journal of knowledge economy,1 journal of knowledge management,1 journal of knowledge management practice,1 "journal of knowledge management, economics and information technology",-1 journal of korea trade,-1 journal of korean academy of nursing,1 journal of korean medical science,1 journal of korean neurosurgical society,1 journal of korean studies,1 journal of l.m. montgomery studies,1 journal of labelled compounds and radiopharmaceuticals,1 journal of labor and society,1 journal of labor economics,3 journal of labor research,1 journal of laboratory and precision medicine,1 journal of laboratory physicians,-1 journal of land use science,1 journal of landscape architecture,2 journal of landscape ecology,1 journal of language aggression and conflict,1 journal of language and aging research,-1 journal of language and cultural education,1 journal of language and culture,1 journal of language and discrimination,-1 journal of language and education,1 journal of language and politics,2 journal of language and popular culture in africa,1 journal of language and sexuality,1 journal of language and social psychology,3 "journal of language contact: evolution of languages, contact and discourse",2 journal of language evolution,1 journal of language identity and education,2 journal of language literature and culture,1 journal of language modelling,1 journal of language teaching and research,1 journal of languages for specific purposes,-1 journal of laparoendoscopic and advanced surgical techniques,1 journal of large-scale research facilities,-1 journal of laryngology and otology,1 journal of laser applications,1 journal of laser micro nanoengineering,1 "journal of late antique, islamic and byzantine studies",-1 journal of late antiquity,1 journal of latin american and caribbean anthropology,1 journal of latin american cultural studies,1 journal of latin american geography,1 journal of latin american studies,3 journal of latin linguistics,1 journal of law and economics,2 journal of law and medicine,1 journal of law and public policy,1 journal of law and social deviance,-1 journal of law and social work,1 journal of law and society,3 journal of law and the biosciences,1 journal of law economics and organization,2 journal of law medicine and ethics,1 "journal of law, business and ethics",1 "journal of law, technology & policy",1 journal of leadership and organizational studies,1 journal of leadership education,-1 journal of leadership studies,1 "journal of leadership, accountability and ethics",-1 journal of lean systems,-1 journal of learning analytics,2 journal of learning design,1 journal of learning development in higher education,-1 journal of learning disabilities,3 journal of learning for development,-1 journal of learning spaces,1 journal of learning through the arts,-1 journal of lecture notes on software engineering,-1 journal of legal analysis,1 journal of legal anthropology,1 journal of legal education,1 journal of legal history,2 journal of legal medicine,1 journal of legal philosophy,1 journal of legal research methodology,1 journal of legal studies,2 journal of legal technology risk management,1 journal of legislative studies,1 journal of leisure research,2 journal of lesbian studies,1 journal of leukocyte biology,1 journal of lgbt youth,1 journal of librarianship and information science,1 journal of librarianship and scholarly communication,1 journal of library administration,1 journal of library and information services in distance learning,1 journal of library metadata,1 journal of lie theory,1 journal of life economics,-1 journal of life medicine,-1 journal of lifestyle and sdgs review,1 journal of light and visual environment,1 journal of lightwave technology,3 journal of limnology,1 journal of linear and topological algebra,1 journal of linguistic and intercultural education,1 journal of linguistic anthropology,3 journal of linguistic geography,1 journal of linguistics,3 journal of linguistics and language teaching,-1 journal of lipid research,1 journal of liposome research,1 journal of liquid chromatography and related technologies,1 journal of literacy research,2 journal of literary and cultural disability studies,1 journal of literary education,-1 journal of literary multilingualism,1 journal of literary semantics,2 journal of literary studies,1 journal of literary theory,2 journal of literature and art studies,-1 journal of literature and trauma studies,1 "journal of literature, history and philosophy",1 journal of lithic studies,1 journal of livestock science,-1 journal of location based services,1 journal of logic and analysis,1 journal of logic and computation,2 "journal of logic, language and information",2 journal of logical and algebraic methods in programming,2 journal of long-term effects of medical implants,1 journal of loss and trauma,1 journal of loss prevention in the process industries,1 journal of low frequency noise vibration and active control,1 journal of low power electronics,-1 journal of low power electronics and applications,-1 journal of low temperature physics,1 journal of lower genital tract disease,1 journal of luminescence,1 journal of lutheran ethics,1 journal of machine learning research,3 journal of macroeconomics,1 journal of macromarketing,1 journal of macromolecular science part a: pure and applied chemistry,1 journal of macromolecular science part b: physics,1 journal of magnesium and alloys,1 journal of magnetic resonance,1 journal of magnetic resonance imaging,2 journal of magnetic resonance open,1 journal of magnetics,1 journal of magnetism and magnetic materials,1 journal of maltese education research,-1 journal of mammalian evolution,1 journal of mammalogy,1 journal of mammary gland biology and neoplasia,1 journal of managed care pharmacy,1 journal of management,3 journal of management accounting research,1 journal of management and change,-1 journal of management and governance,1 journal of management and marketing research,-1 journal of management and organization,1 journal of management and strategy,-1 journal of management control,1 journal of management development,1 journal of management education,1 journal of management for global sustainability,1 journal of management history,1 journal of management in engineering,1 journal of management information systems,3 journal of management inquiry,2 journal of management policy and practice,-1 journal of management science and engineering,1 journal of management studies,3 "journal of management, spirituality & religion",1 journal of managerial psychology,1 journal of manipulative and physiological therapeutics,1 journal of manufacturing and materials processing,-1 journal of manufacturing processes,1 journal of manufacturing science and engineering: transactions of the asme,1 journal of manufacturing systems,3 journal of manufacturing technology management,1 journal of maps,1 journal of marine engineering and technology,1 journal of marine environmental engineering,1 journal of marine research,1 journal of marine science and application,1 journal of marine science and engineering,-1 journal of marine science and technology,1 journal of marine systems,1 journal of marital and family therapy,1 journal of maritime archaeology,2 journal of maritime law and commerce,1 journal of maritime research,1 journal of market access & health policy,1 journal of marketing,3 journal of marketing analytics,1 journal of marketing and management,-1 journal of marketing behavior,1 journal of marketing channels,1 journal of marketing communications,1 journal of marketing development and competitiveness,-1 journal of marketing education,1 journal of marketing for higher education,1 journal of marketing management,1 journal of marketing perspectives,-1 journal of marketing research,3 journal of marketing research and case studies,-1 journal of marketing theory and practice,1 journal of markets and morality,1 journal of marriage and the family,3 journal of mass spectrometry,1 journal of mass violence research,-1 journal of material culture,3 journal of material cycles and waste management,1 journal of materials chemistry c,1 journal of materials chemistry. a,2 journal of materials chemistry. b,1 journal of materials education,-1 journal of materials engineering and performance,1 journal of materials in civil engineering,1 journal of materials processing technology,2 journal of materials research,1 journal of materials research and technology,1 journal of materials science,1 journal of materials science : materials in engineering,1 journal of materials science : materials theory,1 journal of materials science : metallurgy,-1 journal of materials science and engineering b,-1 journal of materials science and nanotechnology,-1 journal of materials science and technology,2 journal of materials science research,-1 journal of materials science: materials in electronics,1 journal of materials science: materials in medicine,1 journal of maternal-fetal and neonatal medicine,1 journal of mathematical analysis,-1 journal of mathematical analysis and applications,1 journal of mathematical behavior,1 journal of mathematical biology,3 journal of mathematical chemistry,1 journal of mathematical cryptology,1 journal of mathematical economics,1 journal of mathematical finance,-1 journal of mathematical fluid mechanics,1 journal of mathematical imaging and vision,2 journal of mathematical inequalities,-1 journal of mathematical logic,1 journal of mathematical neuroscience,-1 journal of mathematical physics,1 journal of mathematical physics analysis geometry,1 journal of mathematical psychology,1 journal of mathematical sciences,1 journal of mathematical sciences: the university of tokyo,1 journal of mathematical sociology,1 journal of mathematical study,-1 journal of mathematics,-1 journal of mathematics and culture,1 journal of mathematics and modeling in finance,-1 journal of mathematics and music,1 journal of mathematics and statistical science,-1 journal of mathematics and statistics,-1 journal of mathematics and the arts,1 journal of mathematics in industry,1 journal of mathematics teacher education,1 journal of measurements in engineering,-1 journal of mechanical behaviour of materials,1 journal of mechanical design,2 journal of mechanical engineering,-1 journal of mechanical science and technology,1 journal of mechanics,1 journal of mechanics engineering and automation,-1 journal of mechanics in medicine and biology,1 journal of mechanics of materials and structures,1 journal of mechanisms and robotics,2 journal of media & mass communication,-1 journal of media and religion,1 journal of media business studies,1 journal of media critiques,1 journal of media economics,1 journal of media ethics,1 journal of media management and entrepreneurship,1 journal of media psychology,1 journal of medical and biological engineering,1 journal of medical artificial intelligence,1 journal of medical biochemistry,1 journal of medical biography,1 journal of medical case reports,1 journal of medical cases,-1 journal of medical devices-transactions of the asme,1 journal of medical diagnostic methods,-1 journal of medical economics,1 journal of medical education,-1 journal of medical education and curricular development,1 journal of medical engineering and technology,1 journal of medical entomology,1 journal of medical ethics,3 journal of medical genetics,2 journal of medical humanities,1 journal of medical imaging,1 journal of medical imaging and health informatics,1 journal of medical imaging and radiation oncology,1 journal of medical imaging and radiation sciences,1 journal of medical internet research,2 "journal of medical marketing: device, diagnostic and pharmaceutical marketing",1 journal of medical microbiology,1 journal of medical microbiology & diagnosis,-1 journal of medical mycology,1 journal of medical primatology,1 journal of medical radiation sciences,1 journal of medical science,1 journal of medical screening,1 journal of medical systems,1 journal of medical toxicology: official journal of the american college of medical toxicology,1 journal of medical ultrasonics,1 journal of medical virology,1 journal of medicinal and aromatic plant sciences,1 journal of medicinal chemistry,3 journal of medicinal food,1 journal of medicinal plants research,-1 journal of medicine,1 journal of medicine and medical sciences,-1 journal of medicine and philosophy,2 journal of medieval and early modern studies,3 journal of medieval history,3 journal of medieval iberian studies,1 journal of medieval latin,1 journal of medieval religious cultures,1 journal of mediterranean archaeology,2 journal of mediterranean studies,1 journal of membrane biology,1 journal of membrane computing,1 journal of membrane science,2 journal of membrane science & technology,-1 journal of membrane science and research,1 journal of memory and language,2 journal of mennonite studies,-1 journal of mens health,-1 journal of mens studies: a scholarly journal about men and masculinities,1 journal of mental health,1 journal of mental health policy and economics,1 journal of metallurgy and materials science,1 journal of metamorphic geology,2 journal of metastable and nanocrystalline materials,-1 journal of micro- and nano-manufacturing,1 journal of micro-bio robotics,-1 journal of micro-nanolithography mems and moems,1 journal of microbial and biochemical technology,-1 journal of microbiological methods,1 journal of microbiology,1 journal of microbiology and biology education,1 journal of microbiology and biotechnology,1 journal of microbiology immunology and infection,1 "journal of microbiology, biotechnology and food sciences",-1 journal of microelectromechanical systems,1 journal of microelectronics and electronic packaging,-1 journal of microencapsulation,1 journal of micromechanics and microengineering,1 journal of micromechanics and molecular physics,1 journal of micropalaeontology,1 journal of microscopy: oxford,1 journal of microwave power and electromagnetic energy,1 journal of middle east womens studies,1 journal of midwifery and womens health,1 journal of migration and health,1 journal of migration history,1 journal of military ethics: normative aspects of the use of military force,1 journal of military history,1 journal of military social work and behavioral health services,-1 journal of military studies,1 journal of mind and behavior,1 journal of mineralogical and petrological sciences,1 journal of minerals and materials characterization and engineering,-1 journal of mines and geosciences,-1 journal of minimally invasive gynecology,1 journal of mining and metallurgy section b: metallurgy,1 journal of mining science,1 journal of mixed methods research,2 journal of mobile multimedia,1 "journal of mobile technologies, knowledge, and society",-1 journal of modelling in management,1 journal of modern accounting and auditing,-1 journal of modern african studies,2 journal of modern applied statistical methods,1 journal of modern craft,1 journal of modern dynamics,1 journal of modern education review,-1 journal of modern european history,2 journal of modern greek studies,2 journal of modern history,3 journal of modern italian studies,2 journal of modern jewish studies,1 journal of modern literature,3 journal of modern optics,1 journal of modern philosophy,1 journal of modern physics,-1 journal of modern power systems and clean energy,1 journal of modern project management,1 journal of modern textile science and engineering,-1 journal of molecular and cellular cardiology,2 journal of molecular and cellular cardiology plus,1 journal of molecular and cellular pathology,-1 journal of molecular and clinical medicine,-1 journal of molecular and engineering materials,1 journal of molecular biochemistry,-1 journal of molecular biology,2 journal of molecular biomarkers and diagnosis,-1 journal of molecular cell biology,1 journal of molecular diagnostics,1 journal of molecular endocrinology,1 journal of molecular evolution,1 journal of molecular graphics and modelling,1 journal of molecular histology,1 journal of molecular liquids,1 journal of molecular medicine: jmm,2 journal of molecular microbiology and biotechnology,1 journal of molecular modeling,1 journal of molecular neuroscience,1 journal of molecular recognition,1 journal of molecular spectroscopy,1 journal of molecular structure,1 journal of molluscan studies,1 journal of monetary economics,3 journal of money credit and banking,2 journal of money laundering control,1 journal of monolingual and bilingual speech,1 journal of moral education,2 journal of moral philosophy,2 journal of moral theology,1 journal of morphology,1 journal of motor behavior,1 journal of motor learning and development,1 journal of mountain ecology,1 journal of mountain science,1 journal of movement disorders,1 journal of multi business model innovation and technology,-1 journal of multi-criteria decision analysis,1 journal of multicultural counseling and development,1 journal of multicultural discourses,1 journal of multidisciplinary engineering science and technology,-1 journal of multidisciplinary healthcare,1 journal of multidisciplinary research,-1 journal of multilingual and multicultural development,3 journal of multilingual theories and practices,1 journal of multimedia education research,1 journal of multimorbidity and comorbidity,1 journal of multinational financial management,1 journal of multiple sclerosis,-1 journal of multiple-valued logic and soft computing,1 journal of multiscale modelling,1 journal of multiscale neuroscience,-1 journal of multivariate analysis,2 journal of muscle foods,1 journal of muscle research and cell motility,1 journal of musculoskeletal and neuronal interactions,1 journal of musculoskeletal pain,1 journal of musculoskeletal research,1 journal of museum education,1 journal of music and meaning,1 journal of music teacher education,1 journal of music theory,2 journal of music theory pedagogy,1 journal of music therapy,2 "journal of music, health, and wellbeing",1 "journal of music, technology and education",1 journal of musicological research,2 journal of musicology,3 journal of muslim minority affairs,1 journal of muslims in europe,1 journal of namibian studies: history politics culture,-1 journal of nano education,1 journal of nano research,1 journal of nanobiotechnology,1 journal of nanoelectronics and optoelectronics,-1 journal of nanoparticle research,1 journal of nanophotonics,1 journal of nanoscience and nanotechnology,1 journal of nanoscience with advanced technology,-1 journal of nanostructure in chemistry,-1 journal of nanotechnology,1 journal of nanotheranostics,-1 journal of narrative politics,1 journal of natural fibers,2 journal of natural history,1 journal of natural medicines,1 journal of natural products,1 journal of natural resources policy research,1 journal of nature and science,-1 journal of navigation,1 journal of near eastern studies,1 journal of near infrared spectroscopy,1 journal of negative results in biomedicine,1 journal of negro education,1 journal of nematology,1 journal of neonatal nursing,1 journal of nepal health research council,-1 journal of nepal medical association,-1 journal of nepal paediatric society,-1 journal of nephrology,1 journal of nervous and mental disease,1 journal of network and computer applications,1 journal of network and systems management,1 journal of networks,-1 journal of neural engineering,1 journal of neural transmission,1 journal of neuro-oncology,1 journal of neuro-ophthalmology,1 journal of neurochemistry,2 journal of neurodevelopmental disorders,1 journal of neuroendocrinology,1 journal of neuroengineering and rehabilitation,1 journal of neurogastroenterology and motility,1 journal of neurogenetics,1 journal of neuroimaging,1 journal of neuroimmune pharmacology,1 journal of neuroimmunology,1 journal of neuroinflammation,1 journal of neurointerventional surgery,2 journal of neurolinguistics,2 journal of neurologic physical therapy,1 journal of neurological sciences: turkish,1 journal of neurological surgery,1 "journal of neurological surgery. part b, skull base",1 journal of neurology,2 journal of neurology and neurophysiology,-1 journal of neurology neurosurgery and psychiatry,3 journal of neurology research,-1 journal of neuromuscular diseases,1 journal of neuropathology and experimental neurology,1 journal of neurophilosophy,1 journal of neurophysiology,2 journal of neuropsychiatry and clinical neurosciences,1 journal of neuropsychology,1 journal of neuroradiology,1 journal of neurorestoratology,-1 journal of neuroscience,3 journal of neuroscience methods,1 journal of neuroscience nursing,1 journal of neuroscience research,1 "journal of neuroscience, psychology, and economics",1 journal of neurosurgery,2 journal of neurosurgery : case lessons,-1 journal of neurosurgery: pediatrics,1 journal of neurosurgery: spine,1 journal of neurosurgical anesthesiology,1 journal of neurosurgical sciences,1 journal of neurotherapy,1 journal of neurotrauma,2 journal of neurovirology,1 journal of neutron research,1 journal of new approaches in educational research,1 journal of new materials for electrochemical systems,1 journal of new music research,3 journal of new seeds,1 journal of new zealand & pacific studies,1 journal of next generation information technology,-1 journal of nietzsche studies,1 journal of non-crystalline solids,1 journal of non-crystalline solids : x,1 journal of non-equilibrium thermodynamics,1 journal of non-newtonian fluid mechanics,1 journal of noncommutative geometry,1 journal of nondestructive evaluation,1 journal of nonlinear and convex analysis,1 journal of nonlinear mathematical physics,1 journal of nonlinear optical physics and materials,1 journal of nonlinear science,2 journal of nonparametric statistics,1 journal of nonprofit and public sector marketing,1 journal of nonsmooth analysis and optimization,1 journal of nonverbal behavior,1 journal of nordic archaeological science,1 journal of north african research in business,-1 journal of north african studies,1 journal of northern studies,1 journal of northwest atlantic fishery science,1 journal of northwest semitic languages,1 journal of novel physiotherapies,-1 journal of nuclear cardiology,1 journal of nuclear energy science & power generation technology,-1 journal of nuclear engineering,-1 journal of nuclear engineering and radiation science,1 journal of nuclear materials,2 journal of nuclear materials management,-1 journal of nuclear medicine,3 journal of nuclear medicine technology,1 journal of nuclear science and technology,1 journal of nucleic acids,-1 journal of number theory,2 journal of numerical analysis and approximation theory,1 journal of numerical cognition,1 journal of numerical mathematics,1 journal of nursing,-1 journal of nursing administration,1 journal of nursing and care,-1 journal of nursing and health studies,-1 journal of nursing and healthcare of chronic illness,1 journal of nursing and practice,-1 journal of nursing care quality,1 journal of nursing education,2 journal of nursing education and practice,-1 journal of nursing home research,-1 journal of nursing management,3 journal of nursing measurement,1 journal of nursing research,-1 journal of nursing scholarship,2 journal of nutrition,2 journal of nutrition and food security,-1 journal of nutrition and metabolism,1 journal of nutrition education and behavior,1 journal of nutrition health and aging,1 journal of nutrition in gerontology and geriatrics,1 journal of nutritional biochemistry,3 journal of nutritional health and food science,-1 journal of nutritional science,1 journal of nutritional science and vitaminology,1 journal of obesity,1 journal of obesity & weight loss therapy,-1 journal of object technology,1 "journal of obstetric, gynecologic, and neonatal nursing",1 journal of obstetrics and gynaecology,1 journal of obstetrics and gynaecology canada,1 journal of obstetrics and gynaecology research,1 journal of occupational and environmental hygiene,1 journal of occupational and environmental medicine,1 journal of occupational and organizational psychology,2 journal of occupational health,1 journal of occupational health psychology,3 journal of occupational medicine and toxicology,1 journal of occupational rehabilitation,2 journal of occupational science,1 "journal of occupational therapy, schools & early intervention",-1 journal of ocean and coastal economics,-1 journal of ocean engineering and marine energy,1 journal of oceanography,1 journal of ocular pharmacology and therapeutics,1 journal of offender rehabilitation,1 journal of official statistics,1 journal of offshore mechanics and arctic engineering,1 journal of oil palm research,1 journal of oleo science,-1 journal of olympic history,-1 journal of oman studies,1 journal of oncology pharmacy practice,1 journal of online learning and teaching,1 journal of online learning research,1 journal of online trust & safety,1 journal of open archaeology data,-1 journal of open aviation science,-1 journal of open educational resources in higher education,-1 journal of open humanities data,1 journal of open innovation,1 journal of open psychology data,-1 journal of open research software,1 journal of open source software,1 "journal of open, flexible, and distance learning",1 journal of openness commons & organizing,-1 journal of operational oceanography,1 journal of operational risk,1 journal of operations management,3 journal of operator theory,1 journal of ophthalmic and vision research,1 journal of ophthalmic inflammation and infection,1 journal of ophthalmic surgery,-1 journal of ophthalmology,1 journal of opioid management,1 journal of optical communications,1 journal of optical communications and networking,2 journal of optical microsystems,1 journal of optical technology,1 journal of optics,1 journal of optics a: pure and applied optics,1 journal of optimization theory and applications,1 journal of optoelectronics and advanced materials,1 journal of optometry,1 journal of oral and facial pain and headache,1 journal of oral and maxillofacial surgery,1 "journal of oral and maxillofacial surgery, medicine, and pathology",-1 journal of oral biosciences,1 journal of oral health and biosciences,-1 journal of oral implantology,1 journal of oral microbiology,2 journal of oral pathology and medicine,2 journal of oral rehabilitation,2 journal of oral research,-1 journal of oral science,1 journal of organic chemistry,2 journal of organization design,1 journal of organizational and end user computing,1 journal of organizational behavior,3 journal of organizational behavior management,1 journal of organizational change management,1 journal of organizational computing and electronic commerce,1 journal of organizational effectiveness,1 journal of organizational ethnography,1 journal of organizational knowledge management,-1 journal of organizational management studies,-1 journal of organizational psychology,-1 journal of organizational sociology,1 journal of organometallic chemistry,1 journal of ornithology,1 journal of orofacial orthopedics-fortschritte der kieferorthopadie,1 journal of orofacial pain,1 journal of orthodontics,1 journal of orthodox christian studies,1 journal of orthopaedic and sports physical therapy,1 journal of orthopaedic case reports,-1 journal of orthopaedic research,2 journal of orthopaedic science,1 journal of orthopaedic surgery,1 journal of orthopaedic surgery and research,1 journal of orthopaedic translation,-1 journal of orthopaedic trauma,1 journal of orthopaedics,1 journal of orthopaedics and traumatology,1 journal of osteopathic medicine,1 journal of osteoporosis,1 journal of osteoporosis and physical activity,-1 journal of otolaryngology and neurotology research,-1 journal of otolaryngology-head and neck surgery,1 journal of otology,1 journal of outdoor and environmental education,1 journal of outdoor recreation and tourism,1 journal of outsourcing and organizational information management,-1 journal of ovarian research,1 journal of ovonic research,1 journal of pacific archaeology,1 journal of pacific history,2 journal of pacific rim psychology,1 journal of pacifism and nonviolence,1 journal of packaging technology and research,1 journal of paediatrics and child health,1 journal of pain,2 journal of pain and palliative care pharmacotherapy,1 journal of pain and symptom management,1 journal of pain research,1 journal of paleolimnology,1 journal of paleolithic archaeology,1 journal of paleontology,1 journal of palestine studies,1 journal of palliative care,1 journal of palliative medicine,1 journal of parallel and distributed computing,2 journal of parapsychology,1 journal of parasitic diseases,-1 journal of parasitology,1 journal of parenteral and enteral nutrition,1 journal of park and recreation administration,1 journal of parkinsons disease,1 journal of partial differential equations,1 journal of participation and employee ownership,1 journal of participatory research methods,1 journal of pastoral care and counseling: jpcc,1 journal of pastoral theology,-1 journal of pathology,3 journal of pathology informatics,1 journal of patient care,-1 journal of patient experience,1 journal of patient safety,1 journal of patient safety and risk management,1 journal of patient-reported outcomes,1 journal of pattern recognition and intelligent systems,-1 journal of pattern recognition research,1 journal of payments strategy & systems,-1 journal of peace education,1 journal of peace research,3 journal of peacebuilding and development,1 journal of peasant studies,3 journal of pedagogical research,1 journal of pediatric and adolescent gynecology,1 journal of pediatric endocrinology and metabolism,1 journal of pediatric gastroenterology and nutrition,1 journal of pediatric genetics,1 journal of pediatric health care,1 journal of pediatric hematology oncology,1 journal of pediatric neurology,1 journal of pediatric nursing,1 journal of pediatric oncology nursing,1 journal of pediatric ophthalmology and strabismus,1 journal of pediatric orthopaedics,1 journal of pediatric orthopaedics: part b,1 journal of pediatric psychology,1 journal of pediatric rehabilitation medicine,-1 journal of pediatric surgery,1 journal of pediatric surgery case reports,1 journal of pediatric urology,1 journal of pediatrics,2 journal of pediatrics : clinical practice,1 journal of peer learning,1 journal of pension economics and finance,1 journal of pentecostal and charismatic christianity,1 journal of pentecostal theology,1 journal of peptide science,1 journal of perceptual imaging,1 journal of performance of constructed facilities,1 journal of perianesthesia nursing,1 journal of perinatal and neonatal nursing,1 journal of perinatal education,1 journal of perinatal medicine,1 journal of perinatology,1 journal of periodontal research,1 journal of periodontology,2 journal of perioperative practice,1 journal of persianate studies,1 journal of personal selling and sales management,2 journal of personality,3 journal of personality and social psychology,3 journal of personality assessment,1 journal of personality disorders,2 journal of personalized medicine,-1 journal of personnel psychology,1 journal of perspectives in applied academic practice,-1 journal of perspectives in management,-1 journal of pest science,1 journal of pesticide science,1 journal of petroleum geology,1 journal of petrology,2 journal of pharmaceutical analysis,1 journal of pharmaceutical and biomedical analysis,1 journal of pharmaceutical and biomedical analysis open,1 journal of pharmaceutical health services research,1 journal of pharmaceutical innovation,1 journal of pharmaceutical policy and practice,1 journal of pharmaceutical sciences,2 journal of pharmaceutics & drug delivery research,-1 journal of pharmacokinetics and pharmacodynamics,1 journal of pharmacological and toxicological methods,1 journal of pharmacological sciences,1 journal of pharmacology and experimental therapeutics,2 journal of pharmacy and bioallied sciences,-1 journal of pharmacy and pharmaceutical sciences,1 journal of pharmacy and pharmacology,1 journal of pharmacy and pharmacology research,-1 journal of pharmacy practice,1 journal of phase equilibria and diffusion,1 journal of phenomenological psychology,1 journal of philanthropy and marketing,1 journal of philosophical logic,3 journal of philosophical research,1 journal of philosophy,3 journal of philosophy in schools,1 journal of philosophy of education,3 journal of philosophy of life,1 journal of phonetics,3 journal of photochemistry and photobiology a: chemistry,1 journal of photochemistry and photobiology b: biology,1 journal of photochemistry and photobiology c: photochemistry reviews,1 "journal of photogrammetry, remote sensing and geoinformation science",1 journal of photonics for energy,1 journal of photopolymer science and technology,1 journal of phycology,1 journal of physical activity and health,1 journal of physical and chemical reference data,1 journal of physical chemistry a,1 journal of physical chemistry b,1 journal of physical chemistry c,2 journal of physical chemistry letters,3 journal of physical education and sport,-1 journal of physical education and sports management,-1 "journal of physical education, recreation & dance",-1 journal of physical oceanography,2 journal of physical organic chemistry,1 journal of physical science and application,-1 journal of physical studies,1 journal of physical therapy science,-1 journal of physics : complexity,1 journal of physics : conference series,1 journal of physics a: mathematical and theoretical,2 journal of physics and chemistry of solids,1 journal of physics b: atomic molecular and optical physics,1 journal of physics communications,1 journal of physics d: applied physics,1 journal of physics g: nuclear and particle physics,2 journal of physics: condensed matter,2 journal of physiological anthropology,1 journal of physiological sciences,1 journal of physiology and biochemistry,1 journal of physiology and pharmacology,1 journal of physiology: london,2 journal of physiology: paris,1 journal of physiotherapy,2 journal of phytopathology,1 journal of pidgin and creole languages,2 journal of pineal research,2 journal of pipeline science and engineering,1 journal of pipeline systems engineering and practice,1 journal of place management and development,1 journal of plankton research,1 journal of planning and environmental law,1 journal of planning education and research,2 journal of planning history,1 journal of planning literature,2 journal of plant biochemistry & physiology,-1 journal of plant biochemistry and biotechnology,1 journal of plant biology,1 journal of plant development,1 journal of plant diseases and protection,1 journal of plant ecology: uk,1 journal of plant growth regulation,2 journal of plant interactions,1 journal of plant nutrition,1 journal of plant nutrition and soil science,1 journal of plant pathology,1 journal of plant pathology & microbiology,-1 journal of plant physiology,1 journal of plant protection research,-1 journal of plant registrations,1 journal of plant research,1 journal of plant sciences,-1 journal of plasma physics,1 journal of plastic film and sheeting,1 journal of plastic reconstructive and aesthetic surgery,1 journal of plastic surgery and hand surgery,1 journal of poetry therapy,1 journal of police and criminal psychology,1 journal of police crisis negotiations,1 journal of policy analysis and management,3 journal of policy and practice in intellectual disabilities,1 journal of policy history,2 journal of policy modeling,1 "journal of policy research in tourism, leisure and events",1 journal of polish safety and reliability association,-1 journal of politeness research: language behaviour culture,2 journal of political and military sociology,1 journal of political ecology: case studies in history and society,1 journal of political economy,3 journal of political economy macroeconomics,1 journal of political economy microeconomics,1 journal of political ideologies,1 journal of political institutions and political economy,1 journal of political marketing,1 journal of political philosophy,-1 journal of political power,1 journal of political science and public affairs,-1 journal of political science education,1 journal of politics,3 journal of politics and law,-1 journal of pollination ecology,1 journal of pollution effects & control,-1 journal of polymer engineering,1 journal of polymer materials,1 journal of polymer research,1 journal of polymer science,1 journal of polymers and the environment,1 journal of popular culture,2 journal of popular film and television,1 journal of popular music education,1 journal of popular music studies,2 journal of popular romance studies,1 journal of popular television,1 journal of population ageing,1 journal of population and social studies,1 journal of population economics,2 journal of porous materials,1 journal of porous media,1 journal of porphyrins and phthalocyanines,1 journal of portfolio management,1 journal of portuguese linguistics,2 journal of positive behavior interventions,2 journal of positive management,-1 journal of positive psychology,2 journal of positive school psychology,1 journal of post keynesian economics,1 journal of postcolonial linguistics,1 journal of postcolonial writing,2 journal of postgraduate medicine,1 journal of posthuman studies,1 journal of postsecondary education and disability,1 journal of poultry science,1 journal of poverty,1 journal of poverty and social justice,1 journal of power electronics,1 journal of power sources,2 journal of power sources advances,1 journal of practice teaching and learning,-1 journal of pragmatic constructivism,1 journal of pragmatics,3 journal of praxis in higher education,1 journal of pre-college engineering education research,1 journal of pre-raphaelite studies: new series,1 journal of prediction markets,1 journal of pregnancy,1 journal of prehistoric religion,1 journal of prenatal & perinatal psychology & health,-1 journal of presbyterian history,1 journal of pressure vessel technology: transactions of the asme,1 journal of prevention,1 journal of prevention and intervention in the community,1 journal of preventive medicine and hygiene,-1 journal of preventive medicine and public health,1 journal of primary care and community health,1 journal of print and media technology research,1 journal of prison education research,1 journal of private equity,1 journal of private international law,3 journal of probability and statistical science,1 journal of probability and statistics,-1 journal of probiotics & health,-1 journal of problem based learning in higher education,1 journal of process control,2 journal of product and brand management,1 journal of product innovation management,3 journal of productivity analysis,2 journal of professional issues in engineering education and practice,1 journal of professional nursing,1 journal of professions and organization,1 journal of progressive human services,1 journal of promotion management,1 journal of property investment and finance,1 journal of property research,1 "journal of property, planning and environmental law",1 journal of propulsion and power,1 journal of prosthetic dentistry,1 journal of prosthetics and orthotics,1 journal of prosthodontic research,2 journal of prosthodontics,1 journal of proteome research,1 journal of proteomics,1 journal of proteomics and bioinformatics,-1 journal of pseudo-differential operators and applications,1 journal of psychedelic studies,-1 journal of psychiatric and mental health nursing,2 journal of psychiatric practice,1 journal of psychiatric research,1 journal of psychiatry,-1 journal of psychiatry and neuroscience,2 journal of psychiatry studies,-1 journal of psycho-social studies,1 journal of psychoactive drugs,1 journal of psychoeducational assessment,1 journal of psychohistory,1 journal of psycholinguistic research,1 journal of psychological and educational research,1 journal of psychological type,-1 journal of psychologists and counsellors in schools,1 journal of psychology,1 journal of psychology & psychotherapy,-1 journal of psychology and ai,-1 journal of psychology and theology,1 journal of psychology in africa,-1 journal of psychopathology and behavioral assessment,1 journal of psychopathology and clinical science,3 journal of psychopharmacology,1 journal of psychophysiology,1 journal of psychosocial nursing and mental health services,1 journal of psychosocial oncology,1 journal of psychosocial rehabilitation and mental health,1 journal of psychosomatic obstetrics and gynecology,1 journal of psychosomatic research,1 journal of psychotherapy integration,1 journal of public administration and governance,-1 journal of public administration research and theory,3 journal of public affairs,1 "journal of public budgeting, accounting and financial management",1 journal of public child welfare,1 journal of public diplomacy,1 journal of public economic theory,1 journal of public economics,3 journal of public finance and public choice,-1 journal of public health,1 journal of public health and emergency,1 journal of public health dentistry,1 journal of public health in africa,-1 journal of public health management and practice,1 journal of public health policy,1 journal of public health research,1 journal of public mental health,1 journal of public pedagogies,-1 journal of public policy,2 journal of public policy and marketing,2 journal of public procurement,2 journal of public relations research,1 journal of pulp and paper science,1 journal of purchasing and supply management,2 journal of pure and applied algebra,1 journal of pure and applied microbiology,1 journal of qualitative criminal justice and criminology,1 journal of qualitative research in sports studies,-1 journal of qualitative research in tourism,1 journal of quality assurance in hospitality and tourism,1 journal of quality in maintenance engineering,1 journal of quality management,1 journal of quality technology,1 journal of quantitative analysis in sports,1 journal of quantitative criminology,3 journal of quantitative linguistics,1 journal of quantitative methods,1 journal of quantitative spectroscopy and radiative transfer,1 journal of quaternary science,1 journal of quranic studies,2 "journal of race, ethnicity and the city",1 "journal of race, ethnicity, and politics",1 journal of racial and ethnic health disparities,1 journal of radiation research,1 journal of radiation research and applied sciences,-1 journal of radio and audio media,1 journal of radioanalytical and nuclear chemistry,1 journal of radiological protection,1 journal of radiology nursing,1 journal of radiotherapy in practice,1 journal of raman spectroscopy,1 journal of raptor research,1 journal of rare diseases,-1 journal of rare earths,1 journal of rational - emotive and cognitive - behavior therapy,1 journal of real estate finance and economics,1 journal of real estate literature,1 journal of real estate portfolio management,1 journal of real estate practice and education,1 journal of real estate research,1 journal of real-time image processing,1 journal of receptors and signal transduction,1 journal of reconstructive microsurgery,1 journal of reconstructive microsurgery open,1 journal of refractive surgery,1 journal of refugee studies,2 journal of regional analysis and policy,1 journal of regional science,2 journal of regulatory economics,1 journal of rehabilitation,1 journal of rehabilitation medicine,2 journal of rehabilitation medicine : clinical communications,-1 journal of rehabilitation research and development,1 journal of reinforced plastics and composites,1 journal of relationship marketing,1 journal of reliability and statistical studies,-1 journal of reliable intelligent environments,-1 journal of religion,2 journal of religion and film,1 journal of religion and health,1 journal of religion and popular culture,1 journal of religion and society,1 journal of religion and spirituality in social work: social thought,1 journal of religion and violence,1 journal of religion in africa,1 journal of religion in europe,2 "journal of religion, disability and health",1 "journal of religion, media and digital culture",1 "journal of religion, spirituality and aging",1 journal of religious education,1 journal of religious ethics,3 journal of religious history,2 journal of remanufacturing,1 journal of remote sensing,1 journal of renal care,1 journal of renal nutrition,1 journal of renewable and sustainable energy,1 journal of renewable materials,-1 journal of reproduction & infertility,-1 journal of reproduction and development,1 journal of reproductive and infant psychology,1 journal of reproductive immunology,1 journal of reproductive medicine,1 journal of research administration,1 journal of research and practice in information technology,1 journal of research design and statistics in linguistics and communication science,1 journal of research for consumers,-1 journal of research in architecture and planning,1 journal of research in childhood education,1 journal of research in crime and delinquency,3 journal of research in gender studies,1 journal of research in health sciences,-1 journal of research in industrial organization,-1 journal of research in innovative teaching & learning,1 journal of research in interactive marketing,1 journal of research in international education,1 journal of research in interprofessional practice and education,1 journal of research in marketing and entrepreneurship,1 journal of research in medical sciences,1 journal of research in music education,2 journal of research in music performance,1 journal of research in nursing,1 journal of research in obesity,-1 journal of research in personality,2 journal of research in pharmacy,1 journal of research in reading,2 journal of research in rural education,1 journal of research in science teaching,3 journal of research in social sciences,-1 journal of research in special educational needs,1 journal of research in stem education,1 journal of research in technical careers,-1 journal of research management and administration,-1 journal of research of the national institute of standards and technology,1 journal of research on adolescence,2 journal of research on character education,1 journal of research on educational effectiveness,2 journal of research on leadership education,-1 journal of research on technology in education,1 "journal of research on trade, management and economic development",-1 journal of research practice,1 journal of resistance studies,1 journal of resources and ecology,1 journal of responsible innovation,1 journal of responsible production and consumption,1 journal of retailing,3 journal of retailing and consumer services,1 journal of revenue and pricing management,1 journal of reviews on global economics,-1 journal of rheology,2 journal of rheumatology,1 journal of risk,1 journal of risk and financial management,-1 journal of risk and insurance,2 journal of risk and uncertainty,2 journal of risk model validation,1 journal of risk research,1 journal of ritual studies,1 journal of road engineering,1 journal of road safety,1 journal of robotic surgery,1 journal of robotics and mechatronics,1 journal of rock mechanics and geotechnical engineering,1 journal of roman archaeology,3 journal of roman archaeology : supplementary series,2 journal of roman military equipment studies,1 journal of roman pottery studies,1 journal of roman studies,3 journal of romance studies,1 journal of romanticism,1 journal of rubber research,1 journal of rural and community development,1 journal of rural cooperation,1 journal of rural health,1 journal of rural studies,2 journal of russian laser research,1 journal of safety and sustainability,-1 journal of safety research,2 journal of sandwich structures and materials,1 "journal of satisfiability, boolean modeling and computation",1 journal of saudi chemical society,-1 journal of scandinavian cinema,2 journal of scheduling,1 journal of schenkerian studies,1 journal of scholarly publishing,1 journal of school choice,1 journal of school health,1 journal of school nursing,1 journal of school psychology,1 journal of school violence,1 journal of science,-1 journal of science and cycling,-1 journal of science and medicine in sport,2 journal of science and technology for forest products and processes,1 journal of science and technology of the arts,1 journal of science and technology policy management,1 journal of science communication,1 journal of science education and technology,1 journal of science in sport and exercise,1 journal of science teacher education,2 "journal of sciences, islamic republic of iran",-1 journal of scientific computing,1 journal of scientometric research,1 journal of scottish historical studies,1 journal of scottish philosophy,1 journal of scottish thought,-1 journal of screenwriting,2 journal of sea research,1 journal of second and multiple language acquisition,-1 journal of second language pronunciation,1 journal of second language writing,2 journal of securities operations & custody,-1 journal of sedimentary environments,1 journal of sedimentary research,1 journal of seismic exploration,1 journal of seismology,1 journal of self-assembly and molecular electronics,1 journal of semantics,3 journal of semiconductor technology and science,-1 journal of semiconductors,1 journal of semitic studies,2 journal of sensor and actuator networks,-1 journal of sensors,1 journal of sensors and sensor systems,-1 journal of sensory studies,1 journal of separation science,1 journal of septuagint and cognate studies,1 journal of service management,2 journal of service research,3 journal of service science,-1 journal of service science and management,-1 journal of service science research,1 journal of service theory and practice,1 journal of services marketing,1 journal of services research,-1 journal of settlements and spatial planning,-1 journal of seventeenth century music,1 journal of sex and marital therapy,1 journal of sex research,2 journal of sexual aggression,1 journal of sexual medicine,1 journal of shanghai jiaotong university,-1 journal of shellfish research,1 journal of shia islamic studies,1 journal of ship mechanics,-1 journal of ship production and design,1 journal of ship research,2 journal of shipping and trade,1 journal of shoulder and elbow surgery,1 journal of siberian federal university : humanities and social sciences,1 journal of signal and information processing,-1 journal of signal processing systems for signal image and video technology,1 journal of simulation,1 journal of singing,1 journal of slavic linguistics,2 journal of slavic military studies,1 journal of sleep disorders : treatment & care,-1 journal of sleep research,1 journal of small animal practice,1 journal of small business and enterprise development,1 journal of small business and entrepreneurship,1 journal of small business management,2 journal of small business strategy,-1 journal of small satellites,1 journal of smart tourism,1 journal of social and clinical psychology,1 journal of social and economic development,1 journal of social and personal relationships,1 journal of social and political philosophy,1 journal of social and political psychology,2 journal of social and political studies,-1 journal of social archaeology,3 journal of social computing,1 journal of social distress and the homeless,1 journal of social entrepreneurship,1 journal of social history,3 journal of social inclusion,-1 journal of social issues,2 journal of social marketing,1 journal of social ontology,2 journal of social philosophy,2 journal of social policy,3 journal of social psychology,1 journal of social psychology research,-1 journal of social research & policy,1 journal of social science education,2 journal of social science for policy implications,-1 journal of social sciences,-1 journal of social sciences and humanities,-1 journal of social sciences research,-1 journal of social security law,1 journal of social service research,1 journal of social structure,1 journal of social studies research,1 journal of social welfare and family law,2 journal of social work,1 journal of social work education,1 journal of social work in disability and rehabilitation,1 journal of social work in end-of-life and palliative care,1 journal of social work practice,2 journal of social work practice in the addictions,1 journal of social work values and ethics,1 "journal of social, political and economic studies",1 journal of sociolinguistics,3 journal of sociology,1 journal of sociology and social welfare,1 journal of soft computing and data mining,-1 journal of software,-1 journal of software,1 journal of software and systems development,-1 journal of software engineering and applications,-1 journal of software engineering research and development,1 journal of soil and water conservation,1 journal of soil science and plant nutrition,1 journal of soils and sediments,1 journal of sol-gel science and technology,1 journal of solar energy engineering: transactions of the asme,1 journal of solar energy research,-1 journal of solid state chemistry,1 journal of solid state electrochemistry,1 journal of solid waste technology and management,1 journal of solution chemistry,1 journal of somaesthetics,1 journal of song-yuan studies,1 journal of sonic studies,1 journal of sound and music in games,1 journal of sound and vibration,2 journal of south american earth sciences,1 journal of south asia women studies,1 journal of south asian and middle eastern studies,1 journal of south asian development,1 journal of south asian languages and linguistics,1 journal of south asian linguistics,1 journal of southeast asian american education & advancement,-1 journal of southeast asian architecture,1 journal of southeast asian research,-1 journal of southeast asian studies,2 journal of southeast university,-1 journal of southern african studies,2 journal of southern history,1 journal of southern religion,1 journal of soviet and post-soviet politics and society,1 journal of space safety engineering,1 journal of space syntax,1 journal of space weather and space climate,1 journal of spacecraft and rockets,1 journal of spacecraft technology,1 journal of spanish cultural studies,2 journal of spatial and organizational dynamics,-1 journal of spatial hydrology,1 journal of spatial information science,1 journal of spatial science,1 journal of special education,3 journal of special education technology,1 journal of special operations medicine,-1 journal of specialized translation,1 journal of spectral imaging,1 journal of spectral theory,1 journal of spectroscopy,-1 "journal of speculative philosophy: a quarterly journal of history, criticism, and imagination",1 journal of speech sciences,-1 "journal of speech, language, and hearing research",3 journal of spinal cord medicine,1 journal of spirituality in mental health,1 journal of sport and exercise psychology,2 journal of sport and health science,1 journal of sport and social issues,1 journal of sport behavior,1 journal of sport for development,1 journal of sport history,1 journal of sport management,1 journal of sport psychology in action,1 journal of sport rehabilitation,1 journal of sport tourism,1 journal of sports economics,1 journal of sports medicine and physical fitness,1 journal of sports science and medicine,1 journal of sports sciences,1 journal of stained glass,1 journal of standardisation,1 journal of statistical and econometric methods,-1 journal of statistical computation and simulation,1 journal of statistical mechanics: theory and experiment,1 journal of statistical physics,2 journal of statistical planning and inference,1 journal of statistical research,1 journal of statistical software,2 journal of statistical theory and applications,1 journal of statistical theory and practice,1 journal of statistics and applications,1 journal of statistics and management systems,1 journal of statistics education,1 journal of statistics: advances in theory and applications,-1 journal of stem cell research and therapy,-1 journal of stem education: innovations and research,1 journal of steroid biochemistry and molecular biology,1 journal of stomatology oral & maxillofacial surgery,1 journal of stored products research,1 journal of strain analysis for engineering design,1 journal of strategic information systems,3 journal of strategic innovation and sustainability,-1 journal of strategic marketing,1 journal of strategic studies,1 journal of strategy and management,1 journal of strength and conditioning research,1 journal of stroke,2 journal of stroke and cerebrovascular diseases,1 journal of structural and functional genomics,1 journal of structural biology,1 journal of structural biology x,1 journal of structural chemistry,1 journal of structural engineering: asce,2 journal of structural fire engineering,1 journal of structural geology,1 journal of structural integrity and maintenance,1 journal of studies in education,-1 journal of studies in international education,2 journal of studies on alcohol and drugs,1 journal of subatomic particles and cosmology,1 journal of submicroscopic cytology and pathology,1 journal of substance abuse treatment,1 journal of substance use,1 journal of sufi studies,1 journal of sulfur chemistry,1 journal of supercomputing,1 journal of superconductivity and novel magnetism,1 journal of supercritical fluids,1 journal of superhard materials,1 journal of supply chain and customer relationship management,-1 journal of supply chain management,3 journal of supply chain management : research and practice,-1 journal of supreme court history,1 journal of surfactants and detergents,1 journal of surgery,-1 journal of surgery and research,-1 journal of surgical case reports,1 journal of surgical education,1 journal of surgical oncology,1 journal of surgical research,1 "journal of surveillance, security and safety",1 journal of survey statistics and methodology,1 journal of surveying engineering: asce,1 journal of sustainability research,1 journal of sustainable agriculture and environment,1 journal of sustainable architecture and civil engineering,1 journal of sustainable bioenergy systems,-1 journal of sustainable cement-based materials,1 journal of sustainable development,-1 "journal of sustainable development of energy, water and environment systems",1 journal of sustainable finance and investment,1 journal of sustainable forestry,1 journal of sustainable marketing,1 journal of sustainable metallurgy,1 journal of sustainable mining,1 journal of sustainable mobility,-1 journal of sustainable real estate,-1 journal of sustainable research in engineering,-1 journal of sustainable tourism,3 journal of swine health and production,1 journal of symbolic computation,1 journal of symbolic logic,2 journal of symplectic geometry,1 journal of synchrotron radiation,2 journal of synthetic crystals,-1 journal of synthetic organic chemistry japan,-1 journal of system and management sciences,1 journal of system design and dynamics,1 journal of systematic investing,1 journal of systematic palaeontology,1 journal of systematics and evolution,1 journal of systemic therapies,1 "journal of systemics, cybernetics and informatics",-1 journal of systems and information technology,1 journal of systems and software,3 journal of systems architecture,2 journal of systems engineering and electronics,1 journal of systems research,1 journal of systems science and complexity,1 journal of systems science and systems engineering,1 journal of taibah university for science,-1 journal of taphonomy,1 "journal of targeting, measurement and analysis for marketing",1 journal of tax administration,1 journal of taxation,1 journal of teacher action research,-1 journal of teacher education,3 journal of teacher education and educators,1 journal of teacher education for sustainability,1 journal of teaching and education,-1 journal of teaching and learning,1 journal of teaching english for specific and academic purposes.,1 journal of teaching in international business,1 journal of teaching in physical education,2 journal of teaching in social work,1 journal of teaching in travel and tourism,1 journal of technical education and training,1 journal of technical writing and communication,1 journal of technology and science education,1 journal of technology and teacher education,1 journal of technology education,1 journal of technology in behavioral science,1 journal of technology in human services,1 journal of technology innovations in renewable energy,-1 journal of technology law & policy,-1 journal of technology management and innovation,1 journal of technology management for growing economies,-1 journal of technology transfer,2 "journal of technology, learning, and assessment",1 "journal of telecommunication, electronic and computer engineering",-1 journal of telecommunications and information technology,1 journal of telemedicine and telecare,1 journal of terramechanics,1 journal of territorial and maritime studies,1 journal of testing and evaluation,1 "journal of textile design, research and practice",1 journal of textile science & fashion technology,-1 journal of texture studies,1 journal of the academy of marketing science,3 journal of the academy of nutrition and dietetics,1 journal of the acm,3 journal of the acoustical society of america,3 journal of the african literature association,1 journal of the air and waste management association,1 journal of the american academy of audiology,1 journal of the american academy of child and adolescent psychiatry,3 journal of the american academy of dermatology,2 journal of the american academy of nurse practitioners,1 journal of the american academy of orthopaedic surgeons,1 journal of the american academy of orthopaedic surgeons : global research & reviews,1 journal of the american academy of psychiatry and the law,1 journal of the american academy of religion,3 journal of the american animal hospital association,1 journal of the american association for laboratory animal science,1 journal of the american board of family medicine,1 journal of the american ceramic society,2 journal of the american chemical society,3 journal of the american chiropractic association,1 journal of the american college of cardiology,3 journal of the american college of emergency physicians open,1 journal of the american college of nutrition,1 journal of the american college of radiology,1 journal of the american college of surgeons,3 journal of the american dental association,1 journal of the american geriatrics society,3 journal of the american heart association: cardiovascular and cerebrovascular disease,2 journal of the american helicopter society,1 journal of the american institute for conservation,2 journal of the american leather chemists association,1 journal of the american liszt society,1 journal of the american mathematical society,3 journal of the american medical directors association,2 journal of the american medical informatics association,2 journal of the american mosquito control association,-1 journal of the american musical instrument society,1 journal of the american musicological society,3 journal of the american oil chemists society,1 journal of the american oriental society,1 journal of the american pharmacists association,1 journal of the american philosophical association,2 journal of the american planning association,2 journal of the american podiatric medical association,1 journal of the american pomological society,1 journal of the american psychiatric nurses association,1 journal of the american psychoanalytic association,1 journal of the american research center in egypt,1 journal of the american society for horticultural science,1 journal of the american society for mass spectrometry,1 journal of the american society for physical research,1 journal of the american society of brewing chemists,1 journal of the american society of cytopathology,1 journal of the american society of echocardiography,1 journal of the american society of nephrology,3 journal of the american statistical association,3 journal of the american water resources association,1 journal of the anatomical society of india,1 journal of the anthropological society of oxford,1 journal of the argentine chemical society,-1 journal of the asia pacific economy,1 journal of the association for consumer research,1 journal of the association for information science and technology,3 journal of the association for information systems,3 journal of the association for the study of australian literature,1 journal of the association of environmental and resource economists,2 journal of the astronautical sciences,1 journal of the atmospheric sciences,1 journal of the audio engineering society,2 journal of the australasian ceramic society,-1 journal of the australian ceramic society,1 journal of the australian mathematical society,1 journal of the australian war memorial,1 journal of the balkan tribological association,1 journal of the beijing institute of technology,-1 journal of the bible and its reception,1 journal of the brazilian chemical society,-1 journal of the brazilian computer society,1 journal of the brazilian society of mechanical sciences and engineering,1 journal of the british academy,-1 journal of the british association for chinese studies,1 journal of the british society for phenomenology,3 journal of the canadian dental association,1 journal of the canadian society of forensic science,1 journal of the ceramic society of japan,1 journal of the chemical society of pakistan,-1 journal of the chester archaeological society,-1 journal of the chilean chemical society,-1 journal of the chinese chemical society,-1 journal of the chinese institute of engineers,1 journal of the chinese medical association,1 journal of the chinese society of mechanical engineers,1 journal of the conductors' guild,-1 journal of the copyright society of the usa,1 journal of the cork historical and archaeological society,1 journal of the david collection,1 journal of the early book society,1 journal of the early republic,1 journal of the economic and social history of the orient,2 journal of the economic science association,1 journal of the economics of ageing,1 journal of the edinburgh bibliographical society,-1 journal of the electrochemical society,1 journal of the electrochemical society of india,-1 journal of the endocrine society,1 journal of the energy institute,1 journal of the entomological research society,1 journal of the european academy of dermatology and venereology,2 journal of the european association for chinese studies,1 journal of the european association for health information and libraries,-1 journal of the european ceramic society,2 journal of the european economic association,3 journal of the european mathematical society,3 journal of the european mosquito control association,1 journal of the european optical society: rapid publications,1 journal of the european second language association,1 journal of the european society of women in theological research,1 journal of the evangelical theological society,1 journal of the experimental analysis of behavior,1 journal of the faculty of agriculture kyushu university,1 journal of the fantastic in the arts,1 journal of the finnish economic association,1 journal of the formosan medical association,1 journal of the franklin institute: engineering and applied mathematics,1 journal of the galway archaeological and history society,-1 journal of the geological society,1 journal of the geological society of india,1 journal of the geological society of japan,1 journal of the gilded age and progressive era,2 journal of the harbin institute of technology,-1 journal of the historical society,-1 journal of the history of biology,2 journal of the history of childhood and youth,2 journal of the history of collections,1 journal of the history of economic thought,1 journal of the history of ideas,3 journal of the history of international law,1 journal of the history of medicine and allied sciences,2 journal of the history of philosophy,3 journal of the history of sexuality,1 journal of the history of the behavioral sciences,1 journal of the history of the neurosciences,1 journal of the iest,1 journal of the indian chemical society,-1 journal of the indian mathematical society,1 journal of the indian ocean region,1 journal of the indian society of agricultural statistics,1 journal of the indian society of remote sensing,1 journal of the indian statistical association,1 journal of the institute of asian studies,1 journal of the institute of brewing,1 journal of the institute of conservation,1 "journal of the institute of engineers, malaysia",-1 journal of the institute of mathematics of jussieu,2 journal of the institute of telecommunications professionals,1 journal of the institution of engineers (india) : series c,1 journal of the international aids society,1 journal of the international association for shell and spatial structures,1 journal of the international association of buddhist studies,1 journal of the international association of tibetan studies,1 journal of the international colour association,1 journal of the international council for small business,-1 journal of the international neuropsychological society,2 journal of the international phonetic association,2 journal of the international qur'anic studies association,1 journal of the international society for orthodox church music,1 journal of the international society for respiratory protection,1 journal of the international society for teacher education,-1 journal of the international society for telemedicine and ehealth,-1 journal of the international society of sports nutrition,1 journal of the iranian chemical society,1 journal of the iranian statistical society,1 journal of the israel dental association,-1 journal of the japan institute of metals,1 journal of the japan petroleum institute,1 journal of the japan statistical society,1 journal of the japanese and international economies,1 journal of the japanese physical therapy association,1 journal of the japanese society for engineering education,-1 journal of the japanese society for food science and technology-nippon shokuhin kagaku kogaku kaishi,1 journal of the japanese society for horticultural science,1 journal of the kansas entomological society,1 journal of the korean astronomical society,1 journal of the korean ceramic society,1 journal of the korean mathematical society,1 journal of the korean physical society,1 journal of the korean regional development association,1 journal of the korean society of clothing and textiles,1 journal of the korean statistical society,1 journal of the learning sciences,3 journal of the lepidopterists society,1 journal of the linguistic association of nigeria,-1 journal of the london mathematical society: second series,3 journal of the lute society of america,1 journal of the marine biological association of the united kingdom,1 journal of the mass spectrometry society of japan,-1 journal of the mathematical society of japan,1 journal of the mechanical behavior of biomedical materials,1 journal of the mechanics and physics of solids,3 journal of the medical library association,1 journal of the meteorological society of japan,1 journal of the mexican chemical society,-1 journal of the midwest association for information systems,-1 journal of the midwest modern language association,1 journal of the motherhood initiative for research and community involvement,1 journal of the musical arts in africa,1 journal of the national cancer institute,3 journal of the national cancer institute: monographs,1 journal of the national comprehensive cancer network,2 journal of the national institute for career education and counselling,-1 journal of the national medical association,1 journal of the neurological sciences,1 journal of the north atlantic,1 journal of the operational research society,2 journal of the operations research society of japan,1 journal of the optical society of america a: optics image science and vision,1 journal of the optical society of america b: optical physics,1 journal of the optical society of korea,1 journal of the ottoman and turkish studies association,-1 journal of the oxford centre for buddhist studies,1 journal of the oxford graduate theological society,-1 journal of the pakistan medical association,-1 journal of the pancreas,-1 journal of the patent and trademark office society,1 journal of the pediatric infectious diseases society,1 journal of the peripheral nervous system,1 journal of the philosophy of games,1 journal of the philosophy of history,2 journal of the philosophy of sport,2 journal of the physical society of japan,1 journal of the polynesian society,1 journal of the professional association for cactus development,1 journal of the renin-angiotensin-aldosterone system,1 journal of the royal anthropological institute,3 journal of the royal asiatic society,1 journal of the royal college of physicians of edinburgh,-1 journal of the royal musical association,3 journal of the royal new zealand air force,-1 journal of the royal society interface,1 journal of the royal society of antiquaries of ireland,1 journal of the royal society of medicine,1 journal of the royal society of new zealand,1 journal of the royal statistical society series a: statistics in society,2 journal of the royal statistical society series b: statistical methodology,3 journal of the royal statistical society series c: applied statistics,2 journal of the saudi heart association,-1 journal of the science of food and agriculture,1 journal of the serbian chemical society,-1 journal of the short story in english,1 journal of the society for american music,1 journal of the society for armenian studies,1 journal of the society for cardiovascular angiography & interventions,1 journal of the society for information display,1 journal of the society for musicology in ireland,1 journal of the society of architectural historians,3 journal of the society of christian ethics,1 journal of the society of leather technologists and chemists,1 journal of the south african institute of mining and metallurgy,1 journal of the south african institution of civil engineering,1 journal of the south african veterinary association,1 journal of the southeast asian linguistics society,1 journal of the southwest,1 journal of the taiwan institute of chemical engineers,1 journal of the technical university at plovdiv : fundamental sciences and applications,-1 journal of the text encoding initiative,1 journal of the textile institute,1 journal of the turkish chemical society section a : chemistry,-1 journal of the warburg and courtauld institutes,3 journal of the west,1 journal of the world aquaculture society,1 journal of the world federation of orthodontists,1 journal of theological interpretation,1 journal of theological studies,3 journal of theology for southern africa,1 journal of theoretical and applied electronic commerce research,-1 journal of theoretical and applied mechanics,1 journal of theoretical and computational chemistry,1 journal of theoretical and philosophical psychology,1 journal of theoretical archaeology,1 journal of theoretical biology,2 journal of theoretical politics,2 journal of theoretical probability,1 journal of therapeutic horticulture,1 journal of therapeutic ultrasound,1 journal of thermal analysis and calorimetry,1 journal of thermal biology,1 journal of thermal science,1 journal of thermal science and engineering applications,1 journal of thermal science and technology issn,1 journal of thermal spray technology,1 journal of thermal stresses,1 journal of thermodynamics & catalysis,-1 journal of thermophysics and heat transfer,1 journal of thermoplastic composite materials,1 journal of thoracic and cardiovascular surgery,2 journal of thoracic disease,1 journal of thoracic imaging,1 journal of thoracic oncology,2 journal of threat assessment and management,1 journal of threatened taxa,1 journal of thrombosis and haemostasis,1 journal of thrombosis and thrombolysis,1 journal of time series analysis,2 journal of time series econometrics,1 journal of tissue engineering,2 journal of tissue engineering and regenerative medicine,1 journal of tissue science and engineering,-1 journal of tissue viability,1 journal of topology,2 journal of topology and analysis,1 journal of tourism and cultural change,1 journal of tourism and hospitality,-1 journal of tourism and hospitality management,-1 journal of tourism challenges and trends,-1 journal of tourism consumption and practice,1 journal of tourism futures,1 journal of tourism history,2 journal of tourism insights,-1 "journal of tourism, heritage & services marketing",1 journal of toxicologic pathology,1 journal of toxicological sciences,1 journal of toxicology,1 journal of toxicology and environmental health. part a,1 journal of toxicology and environmental health: part b: critical reviews,1 journal of trace elements in medicine and biology,1 journal of traditional and complementary medicine,1 journal of traditional chinese medicine,-1 journal of traditional medicines,1 journal of traffic and transportation engineering,1 journal of transatlantic studies,2 journal of transcendental philosophy,1 journal of transcultural nursing,1 journal of transdisciplinary environmental studies,1 journal of transformative education,1 journal of transformative learning,-1 journal of translation,1 journal of translational autoimmunity,1 journal of translational genetics and genomics,-1 journal of translational internal medicine,-1 journal of translational medicine,1 journal of transnational american studies,1 journal of transnational management,1 journal of transport and health,1 journal of transport and land use,1 journal of transport and supply chain management,-1 journal of transport economics and policy,1 journal of transport geography,2 journal of transport history,1 journal of transportation engineering : part a. systems,1 journal of transportation engineering : part b. pavements,1 "journal of transportation law, logistics, and policy",-1 journal of transportation security,1 journal of transportation systems engineering and information technology,1 journal of transportation technologies,-1 journal of trauma and acute care surgery,1 journal of trauma and dissociation,1 journal of trauma and injury,1 journal of trauma management and outcomes,1 journal of traumatic stress,1 journal of travel and tourism marketing,1 journal of travel and tourism research,1 journal of travel medicine,2 journal of travel research,3 journal of trial and error,-1 journal of tribology: transactions of the asme,1 journal of tropical biology and conservation,1 journal of tropical ecology,1 journal of tropical forest science,1 journal of tropical meteorology,1 journal of tropical pediatrics,1 journal of trust research,1 journal of turbomachinery: transactions of the asme,1 journal of turbulence,1 journal of ultrasound in medicine,1 journal of uncertainty analysis and applications,1 "journal of unconventional parks, tourism and recreation research",-1 journal of universal computer science,1 journal of universal language,1 journal of university teaching and learning practice,1 journal of uoeh,-1 journal of uralic linguistics,-1 journal of urban affairs,2 journal of urban and environmental engineering,1 journal of urban cultural studies,1 journal of urban design,2 journal of urban design and mental health,-1 journal of urban ecology,1 journal of urban economics,3 journal of urban ethnology,1 journal of urban health: bulletin of the new york academy of medicine,1 journal of urban history,2 journal of urban management,1 journal of urban mathematics education,1 journal of urban mobility,1 journal of urban planning and development: asce,1 journal of urban regeneration and renewal,1 journal of urban technology,1 journal of urbanism,2 journal of urology,2 journal of us-china public administration,-1 journal of user experience,1 journal of vacation marketing,1 journal of vaccines and vaccination,-1 journal of vacuum science and technology a,1 "journal of vacuum science and technology. b, nanotechnology & microelectronics",1 journal of vaishnava studies,-1 journal of value inquiry,2 journal of vascular access,1 journal of vascular and interventional radiology,1 journal of vascular nursing,1 journal of vascular research,1 journal of vascular surgery,2 journal of vascular surgery cases and innovative techniques,-1 journal of vascular surgery: venous and lymphatic disorders,1 journal of vasyl stefanyk precarpathian national university,-1 journal of vector borne diseases,1 journal of vector ecology,1 journal of vegetation science,1 journal of venomous animals and toxins including tropical diseases,1 journal of vertebral subluxation research,1 journal of vertebrate biology,1 journal of vertebrate paleontology,1 journal of vestibular research: equilibrium and orientation,1 journal of veterinary anatomy,-1 journal of veterinary behavior: clinical applications and research,1 journal of veterinary cardiology,1 journal of veterinary dentistry,1 journal of veterinary diagnostic investigation,1 journal of veterinary emergency and critical care,1 journal of veterinary internal medicine,2 journal of veterinary medical education,1 journal of veterinary medical science,1 journal of veterinary pharmacology and therapeutics,2 journal of veterinary science,1 journal of veterinary science & technology,-1 journal of vibration and acoustics: transactions of the asme,1 journal of vibration and control,1 journal of vibration engineering & technologies,1 journal of vibroengineering,1 journal of victorian culture,1 journal of vinyl and additive technology,1 journal of viral hepatitis,1 journal of virological methods,1 journal of virology,2 journal of virology and microbiology,-1 journal of virtual exchange,-1 journal of virtual reality and broadcasting,1 journal of virtual studies,-1 journal of virtual worlds research,1 journal of visceral surgery,1 journal of vision,2 journal of visual art and design,1 journal of visual art practice,1 journal of visual communication and image representation,2 journal of visual culture,3 journal of visual impairment and blindness,1 journal of visual literacy,1 journal of visual political communication,1 journal of visualization,1 journal of visualized experiments,1 journal of vocational behavior,2 journal of vocational education and training,2 journal of vocational rehabilitation,1 journal of voice,2 journal of volcanology and geothermal research,1 journal of volcanology and seismology,1 journal of war and culture studies,1 journal of water and climate change,1 journal of water and environment technology,1 journal of water and health,1 journal of water and land development,1 journal of water chemistry and technology,1 journal of water law,1 journal of water management modeling,1 journal of water process engineering,1 journal of water resource and protection,-1 journal of water resources planning and management: asce,1 journal of water security,1 journal of water technology and treatment methods,-1 "journal of water, sanitation and hygiene for development",1 journal of waterway port coastal and ocean engineering: asce,1 journal of wealth management,1 journal of web engineering,1 journal of web semantics,1 journal of west indian literature,1 journal of wetland archaeology,2 journal of white collar and corporate crime,1 journal of wildlife and biodiversity,1 journal of wildlife diseases,1 journal of wildlife management,1 journal of william morris studies,1 journal of wind engineering and industrial aerodynamics,1 journal of wine economics,1 journal of wine research,1 "journal of wireless mobile networks, ubiquitous computing and dependable applications",-1 journal of women and aging,1 journal of women politics and policy,1 journal of women's health care,-1 "journal of women's health, issues & care",-1 journal of women's history,3 journal of womens health,1 journal of wood chemistry and technology,1 journal of wood science,1 journal of work-applied management,1 journal of workplace learning,1 journal of workplace rights,-1 journal of world business,3 journal of world energy law and business,2 journal of world history,3 journal of world intellectual property,1 journal of world investment and trade,1 journal of world languages,1 journal of world popular music,1 journal of world prehistory,3 journal of world trade,2 journal of world-systems research,1 journal of wound care,1 journal of wound management,1 journal of wound ostomy and continence nursing,1 journal of wrist surgery,1 journal of wscg,1 journal of wuhan university of technology: materials science edition,1 journal of x-ray science and technology,1 journal of yoga and physiotherapy,-1 journal of young pharmacists,-1 journal of youth and adolescence,2 journal of youth and theology,1 journal of youth development,-1 journal of youth studies,2 journal of zhejiang university-science b,1 journal of zhejiang university. science c: computers and electronics,1 journal of zhejiang university: science a,1 journal of zoo and wildlife medicine,1 journal of zoological systematics and evolutionary research,1 journal of zoology,1 journal on baltic security,1 journal on chain and network science,1 journal on computing and cultural heritage,2 journal on data semantics,1 journal on education in emergencies,-1 journal on efficiency and responsibility in education and science,1 journal on ethnopolitics and minority issues in europe,1 journal on interactive systems,-1 journal on mathematics education,1 journal on migration and human security,1 journal on multimodal user interfaces,1 journal on selected topics in nano electronics and computing,-1 journal on the art of record production,1 journal on the use of force and international law,1 journal on tourism & sustainability,-1 journal on vehicle routing algorithms,1 journalipp,-1 journalism,3 journalism and communication monographs,1 journalism and mass communication educator,1 journalism and mass communication quarterly,2 journalism and media,-1 journalism education,1 journalism history,1 journalism practice,2 journalism research review quarterly,-1 journalism studies,3 journalisti,-1 journalistica,1 journals of gerontology series a: biological sciences and medical sciences,3 journals of gerontology series b: psychological sciences and social sciences,2 journeys: the international journal of travel and travel writing,1 joutsan seutu,-1 joutsen,1 joutsen : erikoisjulkaisuja,1 jovene editore,-1 jovis verlag,-1 joyce studies annual,1 jōetsu kyōiku daigaku kenkyū kiyō,-1 "jp journal of algebra, number theory and applications",1 jp journal of biostatistics,-1 jp kunnallissanomat,-1 jpc: journal of planar chromatography: modern tlc,1 jphys energy,1 jphys materials,1 jphys photonics,1 jpras open,1 jpt: journal of petroleum technology,1 jramathedu : journal of research and advances in mathematics education,1 jrsm open,-1 jsams plus,-1 jses international,1 jsfa reports,1 jsls: journal of the society of laparoendoscopic surgeons,1 "jsme international journal, series a: solid mechanics and material engineering",1 "jsme international journal, series b: fluids and thermal engineering",1 "jsme international journal, series c: mechanical systems, machine elements and manufacturing",1 jsrp paper,-1 jtcvs open,1 jtcvs techniques,1 judaica,1 judaica bohemiae,1 judgment and decision making,1 judicature,1 julglädje,-1 julgrisen,-1 julius-kühn-archiv,-1 julkaisu,-1 julkaisu : keski-suomen liitto b,-1 julkaisu : länsi-uudenmaan vesi ja ympäristö,-1 julkaisu : vantaanjoen ja helsingin seudun vesiensuojeluyhdistys,-1 julkaisuja,-1 julkaisuja (jyväskylän yliopiston kauppakorkeakoulu),-1 julkaisuja : siirtolaisuusinstituutti,-1 julkaisuja : terveyden edistämisen tutkimuskeskus,-1 julkaisusarja,-1 julkaisusarja - helsingin yliopisto. tietojenkäsittelytieteen laitos. b. raportti,-1 "julkaisusarja - turun yliopiston kasvatustieteiden tiedekunta. b, selosteita",-1 julkaisusarja 1 maanpuolustuskorkeakoulun tutkimuksia,-1 julkaisusarja 2 : tutkimusselosteita,-1 "julkaisusarja 3. työpapereita, maanpuolustuskorkeakoulu : sotataidon laitos",-1 julkaisut,-1 julkisten ja hyvinvointialojen liitto,-1 juminkeko-säätiö,-1 juminkeon julkaisuja,-1 junction publishing,-1 junctures: the journal for thematic dialogue,1 jundishapur journal of microbiology,1 jung journal: culture and psyche,1 junge welt,-1 junior researcher workshop on real-time computing,-1 junius verlag,-1 juoksija,-1 jure,1 jure förlag,-1 juridica,1 juridica international,-1 juridica lapponica,-1 juridica-kirjasarja,-1 juridisk tidskrift,1 jurimetrics,1 juris europensis scientia,-1 jurisprudence,1 jurisprudencija,-1 jurist: studies in church law and ministry,1 juriste d'entreprise magazine,-1 juristen,1 juristenzeitung,1 juristförlaget i lund,-1 juristiuutiset,-1 jurnal gramatika : jurnal penelitian pendidikan bahasa dan sastra indonesia,-1 jurnal hubungan internasional,-1 jurnal infotel,-1 jurnal kependidikan,-1 jurnal manajemen indonesia,-1 jurnal pendidikan sains indonesia,-1 jurnal perencanaan pembangunan,-1 jurnal perspektif manajerial dan kewirausahaan,-1 jurnal sosioteknologi,-1 jurnal teknologi,1 jurnal teknologi hasil pertanian,-1 jurnal undang-undang dan masyarakat,-1 jurvan sanomat,-1 jus cogens,1 jusletter it,-1 jussens venner,1 just,1 just labor,1 justice quarterly,3 justice spatiale - spatial justice,1 "justice, power and resistance",1 justus-liebig-universität gießen : universitätsbibliothek,-1 juurikassarka,-1 juuso salokoski,-1 juvan lehti,-1 juvenes print,-1 juvenile and family court journal,1 juventa verlag,1 juznoslovenski filolog,1 jvs-vascular insights,1 jyllands-posten,-1 jysk arkaeologisk selskabs skrifter,1 jysk arkæologisk selskab,1 jyu reports,-1 jyu studies,-1 jyväskylä,-1 jyväskylä studies in biological and environmental science,-1 "jyväskylä studies in education, psychology and social research",-1 jyväskylä studies in humanities,-1 jyväskylän ammattikorkeakoulu,-1 jyväskylän ammattikorkeakoulun julkaisuja,-1 jyväskylän historiallinen arkisto,-1 jyväskylän kaupunki,-1 jyväskylän koulutuskuntayhtymä gradian julkaisuja,-1 jyväskylän normaalikoulun julkaisuja,-1 jyväskylän piha- ja puutarhasanomat,-1 jyväskylän taidemuseon julkaisuja,-1 jyväskylän yliopisto,-1 jyväskylän yliopiston avoimen yliopiston verkko-julkaisuja,-1 jyväskylän yliopiston bio- ja ympäristötieteiden laitoksen tiedonantoja,-1 jyväskylän yliopiston kirjaston julkaisuja,-1 jyväskylän yliopiston liikuntakasvatuksen laitoksen tutkimuksia,-1 jyväskylän yliopiston psykologian laitoksen julkaisuja,-1 jyväskylän yliopiston tiedemuseon julkaisuja,-1 jàmbá,1 jägaren,-1 jäkkärä,-1 jänkä,-1 järjestöbarometri,-1 jäsenlehti,-1 jäsentiedote : westermarck society,-1 jäteplus,-1 jökull,1 "k og k: kultur og klasse, kritik og kulturanalyse",1 k&h-kustannus,-1 k-12 stem education,1 k-theory,1 k. j. ståhlbergin säätiö,-1 k.i.t. group gmbh dresden,-1 k:on,-1 kaakkois-suomen ammattikorkeakoulu,-1 kaakkois-suomen sosiaalialan osaamiskeskuksen julkaisuja,-1 kaarina,-1 kabbalah: journal for the study of jewish mystical texts,1 kabinetnyj uchenyj,-1 kachere series publications,1 kacike: journal of caribbean amerindian history and anthropology,1 kadmos: zeitschrift fur vor- und fruhgriechische epigraphik,1 kafkas universitesi veteriner fakultesi dergisi,1 kagaku gijutsu komyunikeshon,-1 kagaku kogaku ronbunshu,1 kagakushi kenkyū,-1 kahramanmaraş sütçü i̇mam üniversitesi tarım ve doğa dergisi,-1 kaifeng jiaoyu xueyuan xuebao,-1 kainuun joulu,-1 kainuun liitto,-1 kainuun sanomat,-1 kainuun sosiaali- ja terveydenhuollon kuntayhtymä,-1 kairos,1 kajaanin ammattikorkeakoulu,-1 kajaanin ammattikorkeakoulun julkaisusarja,-1 kajaanin ammattikorkeakoulun julkaisusarja a tutkimuksia,-1 kajo ́,-1 kakkoskieli,-1 kaku igaku,-1 kalajokilaakso,-1 kalajokiseutu,-1 kalatalouden keskusliiton julkaisu,-1 kalbotyra,1 kalbu studijos,1 kaleida forma,-1 kaleidoscope learning,-1 kalenterimaailma,-1 kaleva,-1 kalevalaseuran vuosikirja,1 kalevi sorsa -säätiö,-1 kalevi sorsa säätiön julkaisuja,-1 kalligram,-1 kalmistopiiri,-1 kalpa publications in computing,-1 kaltio,-1 kamchatka,1 kameralehti,-1 kami pa gikyoshi,-1 kampus kustannus,-1 kanadan sanomat,-1 kanava,-1 kanbrief,-1 kandidaattikustannus oy,-1 kangasalan luonto,-1 kangasalan sanomat,-1 kankaanpään seutu,-1 kanon,-1 kansainvälinen etelä-pohjanmaa,-1 kansainvälisen liikkuvuuden ja yhteistyön keskus cimo,-1 kansalaisareenan julkaisuja,-1 kansalaisuuden kuilut ja kuplat,-1 kansalaisyhteiskunta,-1 kansallinen itämeri-tutkijoiden foorumi,-1 kansallinen koulutuksen arviointikeskus,-1 kansallinen sivistysliitto ry,-1 kansallisarkiston toimituksia,-1 kansallisbiografia,-1 kansallisen audiovisuaalisen instituutin julkaisuja,-1 kansalliskirjaston gallerian julkaisuja,-1 kansalliskirjaston julkaisuja,-1 kansan tahto,-1 kansan uutiset,-1 kansaneläkelaitos,-1 kansanmusiikki,-1 kansanmusiikki-instituutin julkaisuja,-1 kansantaloudellinen aikakauskirja,1 kansanvalistusseura,1 kansatieteellinen arkisto,1 kant e-prints,1 kant yearbook,1 kant-studien,3 kantele,-1 kantian review,2 kantovskij sbornik,1 kantri,-1 kaohsiung journal of medical sciences,-1 kapitaali,-1 kaposvári egyetem,-1 karadeniz teknik üniversitesi,-1 karaite archives,-1 karas-sana oy,-1 kardiologia polska,1 kardiologiya,1 kardiologiâ v belarusi,-1 karel`skij nauchny`j centr ran,-1 karelia,-1 karelia-ammattikorkeakoulun julkaisuja,-1 karelia-ammattikorkeakoulun julkaisuja : raportteja,-1 karelia-ammattikorkeakoulun julkaisuja a : tutkimuksia,-1 karhunhammas,-1 karikyuramu kenkyu,-1 karisto oy,-1 karjal žurnualu,-1 karjala,-1 karjalainen,-1 karjalan heili,-1 karjalan heimo,-1 karjalan kielen seura ry,-1 karjalan kunnaat,-1 karjalan kuvalehti,-1 karjalan sivistysseura ry,-1 karjalan teologisen seuran julkaisuja,1 karlstad university press,1 karlstads universitet,-1 karnac books,-1 karnov group denmark,1 karnov group norge,-1 karolinska förbundets årsskrift,1 karolinum,1 karpatsʹkì matematičnì publìkacìï,1 karstenia: the mycological journal,1 kart og plan,1 kart- & bildteknik,-1 karthago,1 karthala,1 kartographische nachrichten,1 karttakeskus oy,-1 kasama shoin,-1 kask conservatorium,-1 kaskal,-1 kasparek verlag,1 kassel university press,1 kasvatus,2 kasvatus & aika,1 kasvatus mitmekultuurilises keskkonnas,-1 kasvatusalan tutkimuksia,1 kasvinsuojelulehti,-1 kasvu,-1 kasvun tuki -aikakauslehti,1 katajanokan kaiku,-1 katalysnytt,-1 katedra,-1 "katedra pedagogiki społecznej i andragogiki - wydział pedagogiczny, uniwersytet pedagogiczny w krakowie",-1 katedra technologii i urządzeń zagospodarowania odpadów politechnika śląska,-1 katharos oy,-1 kathmandu university medical journal,-1 katsauksia,-1 kaunis grani,-1 kauppakamari,-1 kauppalehti,-1 kauppapolitiikka,-1 kauppatieteellinen yhdistys ry,-1 kaupunkilainen,-1 kaupunkiympäristön julkaisuja,-1 kaustisen lukio,-1 kava-pech,-1 kavkazskij èntomologičeskij bûlletenʹ,1 kazahskij universitet mezhdunarodnyh otnoshenij i mirovyh yazykov im. abylaj hana,-1 kazanskij pedagogiceskij zhurnal,-1 kārā/fan,-1 keats-shelley journal,1 keats-shelley review,1 kebikec,-1 kedi journal of educational policy,1 keel ja kirjandus,1 kegan paul,1 kehittyvä elintarvike,-1 kehittyvä kauppa,-1 kehitys,-1 kehitysvammaliiton selvityksiä,-1 kehitysvammaliiton tutkimuksia,-1 kehitysvammaliitto ry,-1 kehotus,-1 kehrämedia oy,-1 kehrääjä,-1 keiei jitsumuho kenkyu,-1 keizaigaku ronsan,-1 keizaigakushi kenkyu,-1 keiō gijuku daigaku hiyoshi kiyō : jinbun kagaku,-1 kello & kulta,-1 kemanusiaan the asian journal of humanities,1 kemi-tornion ammattikorkeakoulu,-1 kemia,-1 kemiauutiset,-1 kemiläinen,-1 kenchreai: eastern port of corinth,1 kendall hunt publishing,-1 kennedy institute of ethics journal,1 kent ltd : doszhan,-1 kent state university press,1 kentron: revue du monde antique et de psychologie historique,1 kenttäpostia,-1 kenyon review,-1 keompyuteo eumak jeoneol emille,1 kerber verlag,-1 keresztény magvetö,-1 kerhokeskus - koulutyön tuki ry,-1 kermes: arte e tecnica del restauro,1 kernos,1 kerns verlag,-1 kerntechnik,1 kervan,-1 kerygma und dogma: zeitschrift fur theologische forschung und kirchliche lehre,3 keräilyuutiset,-1 keski-espoon sanomat,-1 keski-pohjanmaan ammattikorkeakoulu,-1 keski-suomen insinööri,-1 keski-suomen kiinteistöviesti,-1 keski-suomen linnut,-1 keski-suomen sairaanhoitopiirin kuntayhtymän julkaisuja,-1 keski-suomen sotaveteraanin joulu,-1 keski-suomen sukututkijat,-1 keski-suomen sukututkijat ry,-1 keskipohjalaiset kylät,-1 keskipohjanmaa,-1 keskisuomalainen,-1 keskusrikospoliisi,-1 ketju,-1 ketonoidanlukko,-1 kew bulletin,1 kew publishing,1 kexue tongbao,-1 key engineering materials,1 key issues in cultural heritage,3 kgk: kautschuk gummi kunststoffe,1 "khalifa international award for date, palm and agricultural innovation",-1 khimiya rastitelnogo syrya,-1 khozjajstvo i pravo,1 kht-media,-1 kide,-1 kidney and blood pressure research,1 kidney cancer,1 kidney diseases,1 kidney international,3 kidney international reports,1 kidney360,1 kiekaus,-1 kiel computer science series,-1 kieleke,-1 kieler bletter zur volkskunde,1 kieli,-1 "kieli, koulutus ja yhteiskunta",-1 kielikello,-1 kielikeskuksen julkaisuja,-1 kielikeskus tutkii,-1 kielikukko,-1 kierkegaard studies,1 kihun julkaisusarja,-1 kiiltomato,-1 kiina sanoin ja kuvin,-1 kiinteistö ja energia,-1 kiinteistöposti,-1 kiinteistöviesti,-1 kiipeily,-1 kijárat kiadó,-1 kikimora publications,1 kilpailuoikeudellinen vuosikirja,1 kilpi,-1 kilpisjärvi notes,-1 kinder- und jugendliteraturforschung,1 kindheit - bildung - erziehung : philosophische perspektiven,3 kindheit und entwicklung,-1 kinema: a journal for film and audiovisual media,1 kinematics and physics of celestial bodies,1 kinephanos,1 kinesiologia slovenica,1 kinesiology,1 kinesis,-1 kinestetiikka,-1 kinetic and related models,1 kinetics and catalysis,1 king's law journal,1 kings college london medieval studies,1 kings college publications,1 kingston business school,-1 kingston conference on international security series,-1 kio daigaku kiyo,-1 kipinä,-1 kippari,-1 kipupuomi,-1 kipuviesti,-1 kirche und recht,-1 kirchenmusikalisches jahrbuch,1 kirchliche zeitgeschichte,2 kirik & teoloogia,-1 kirjallisuudentutkijain seura,-1 kirjallisuudentutkimuksen aikakauslehti avain,2 kirjallisuus- ja kulttuuriyhdistys särö ry,-1 kirjallisuusterapia,-1 kirjapaja,-1 kirjastolehti,-1 kirjastus juura,-1 kirjokansi,-1 kirjuri,-1 kirke og kultur,1 kirkhakkinen,-1 kirkko ja islam -julkaisuja,-1 kirkko ja kaupunki,-1 kirkko ja koti,-1 kirkkohallitus,-1 kirkkomme lähetys,-1 kirkkomusiikki,-1 kirkkotie,-1 kirkon tutkimuskeskus,-1 kirkon töissä,-1 kirkon ulkomaanapu,-1 kirkonkellari,-1 kisebbségi szemle,-1 kismet press,1 kit scientific working papers,-1 kita kiinteistö & talotekniikka,-1 kittilälehti,-1 kiukaisten joulu,-1 kiuruvesi,-1 kivennapalainen,-1 kivi,-1 kiviteollisuusliitto ry,-1 kko:n ratkaisut kommentein,-1 klaip?dos universiteto leidykla,-1 klartext verlagsgesellschaft mbh,-1 klass,-1 klassekampen,-1 klassika-xxi,-1 klassisk forum,1 klaus schwarz verlag,1 kleintierpraxis,1 kleio,-1 kleist-jahrbuch,1 klett-cotta,1 kliin lab,-1 kliininen radiografiatiede,1 klim,1 klinická onkologie,-1 klinik psikofarmakoloji bulteni-bulletin of clinical psychopharmacology,1 klinische monatsblatter fur augenheilkunde,1 klinische neurophysiologie,1 klinische padiatrie,1 klinisk sygepleje,1 kliničeskaâ i specialʹnaâ psihologiâ,-1 kliničeskaâ medicina,-1 klio,1 klog éditions,-1 klubilehti,-1 kluwer academic publishers,2 kluwer law international,2 klēsis,-1 km vet,-1 kmi international journal of maritime affairs and fisheries,1 kmk scientific press,-1 knack magazine,-1 kne energy,-1 kne life sciences,-1 knee,1 knee surgery & related research,1 knee surgery sports traumatology arthroscopy,1 knjizevna smotra,1 knnv publishers,1 know,1 knowledge & performance management,-1 knowledge and information systems,2 knowledge and management of aquatic ecosystems,1 knowledge and process management,1 knowledge cultures,-1 knowledge engineering review,2 knowledge management & e-learning: an international journal,1 knowledge management research and practice,1 knowledge organization,2 knowledge systems institute,-1 knowledge-based systems,2 knygotyra,1 kobe hogaku zassi,-1 kobundo,-1 kobunshi ronbunshu,-1 kochi daigaku kyoiku gakubu kenkyu hokoku,-1 kodai mathematical journal,1 kodansha,-1 kodikas/code: ars semeiotica,1 kodin pellervo,-1 kodomogaku kenkyu,-1 koedoe,1 kogan page,-1 kognitiivinen psykoterapia: tieteellinen verkkolehti,1 kognitiivis-analyyttisen psykoterapiayhdistyksen julkaisuja,-1 kognition & pædagogik,-1 kohlhammer,1 kohtaamisia,-1 koillis-helsingin lähitieto,-1 koillissanomat,-1 koiramme,-1 koiviston viesti,-1 koivu,-1 kok,-1 kokalos,1 kokemäkeläinen,-1 kokkola,-1 kokkolan kaupunki,-1 kokoro,-1 kokos julkaisuja,-1 kokshetauskij gosudarstvennyj universitet im. sh. ualihanova,-1 kol`skij nauchny`j centr ran,-1 koleopterologische rundschau,-1 kollesis editrice,-1 kolner jahrbuch,1 kolner zeitschrift fur soziologie und sozialpsychologie,1 kolon,1 kome,1 komi respublikanskaya akademiya gosudarstvennoj sluzhby` i upravleniya,-1 komiat,-1 kommentár,-1 kommunal ekonomi,-1 kommunikativnye issledovaniâ,1 kommuntorget,-1 komparatistik,1 kompjuternaja lingvistika i intellektualnye tehnologii,1 kompositio,-1 kompʹûternaâ optika,-1 kompʹûternye instrumenty v obrazovanii,-1 kon acad wetenschappen letteren,-1 kona powder and particle journal,1 koneyrittäjä,-1 konferenser / kungl. vitterhets historie och antikvitets akademien,1 kongelige danske videnskabernes selskab,1 kongzhi lilun yu yingyong,-1 konińskie studia językowe katedry filologii pwsz w koninie,1 konkurentnoe pravo,-1 konneveden joulu,-1 konrad theiss verlag,1 konrad-adenauer-stiftung,-1 konsepti,-1 konservaattori,-1 konsthistorisk tidskrift,3 konsulʹtativnaâ psihologiâ i psihoterapiâ,1 kontakt,1 konteksty: polska sztuka ludowa,1 kontur,-1 "kontury globalʹnyh transformacij: politika, èkonomika, pravo",1 konya teknik üniversitesi,-1 kopaed,1 kopijyvä,-1 kopp mária intézet a népesedésért és a családokért,-1 korall,-1 korea europe review,1 korea institute for health and social affairs publishing,-1 korea journal,1 korea maritime institute,-1 korea national open university press,-1 korea observer,1 korea-australia rheology journal,1 korea-forum,-1 korean circulation journal,1 korean geotechnical society,-1 korean institute of bridge and structural engineers,-1 korean institute of chemical engineers,-1 korean institute of ciriminology,-1 korean journal for food science of animal resources,1 korean journal of anesthesiology,1 korean journal of chemical engineering,1 korean journal of defense analysis,1 korean journal of horticultural science and technology,1 korean journal of medical history,1 korean journal of metals and materials,1 korean journal of parasitology,-1 korean journal of physiology & pharmacology,-1 korean journal of radiology,1 korean journal of teacher education,-1 korean language education,-1 korean linguistics,1 korean society for rock mechanics,-1 korean society of aesthetics,-1 korean studies,1 korean women´s development institute,-1 korjaamo ja varaosaviesti,-1 korkeakoulujen arviointineuvoston julkaisuja,-1 korpilahti,-1 korporativnoe upravlenie i innovacionnoe razvitie èkonomiki severa,-1 korporativnye finansy,-1 korrozios figyelo,1 kortesjärven joulu,-1 korunk,-1 "koseisha koseikaku co., ltd.",-1 kosmetologi sky,-1 kosmopolis,1 kosmorama,1 kosmoskynä,-1 koti ja maaseutu,-1 koti-kajaani,-1 kotikielen seura,-1 kotikulmilta,-1 kotilääkäri,-1 kotimaa,-1 kotimaisten kielten keskuksen verkkojulkaisuja,-1 kotimaisten kielten keskus,1 kotipuutarha,-1 kotiseudun kasvot,-1 kotiseudun sanomat,-1 kotiseutu,-1 kotiseutu-uutiset,-1 kotiseutuposti,-1 kotitilalta,-1 koulu ja menneisyys,1 koululainen,-1 koulutuksen arviointineuvosto,-1 koulutuksen arviointineuvoston julkaisuja,-1 koulutuksen tutkimuslaitos,-1 kouvola,-1 kouvolan kaupunginmuseon julkaisuja,-1 kouvolan sanomat,-1 kovac,-1 kovove materialy-metallic materials,1 kragujevac filološko-umetnički fakultet,-1 krakowski instytut prawa karnego fundacja,-1 krasnodarskij gosudarstvenny`j universitet kul`tury` i iskusstv,-1 kratylos: kritisches berichts- und rezensionsorgan fur indogermanische und allgemeine sprachwissenschaft,1 kreativnaâ hirurgiâ i onkologiâ,-1 kregel publications,-1 kreodi,-1 kriminalistik,1 kriminologia,1 kriminologian ja oikeuspolitiikan instituutin tutkimuksia,-1 kriminologija & socijalna integracija,-1 kriminologijos studijos,1 kriminologisches journal,1 kriosfera zemli,-1 kris och kritik,-1 krisis: tijdschrift voor actuele filosofie,1 kristeligt dagblad,-1 kriterion: revista de filosofia,1 kriterion: zeitschrift fur philosophie,1 kritiikin uutiset,-1 kritiikki,-1 kritik,1 kritika kultura,1 kritika: explorations in russian and eurasian history,2 kritische berichte,1 kritisk forum for praktisk teologi,1 kritisk juss,1 kronika,1 kronikka,-1 kronoscope: journal for the study of time,1 krītika chronika,1 ksce journal of civil engineering,1 ksii transactions on internet and information systems,1 księgarnia akademicka,-1 ksoidin,-1 "ktema: civilisations de l orient, de la grece et de rome antiques",1 ku leuven,-1 ku leuven soc onderzoekinstituut,-1 kuckuck,-1 kuenstliche intelligenz,1 kuhmoisten sanomat,-1 kuhmolainen,-1 kuidas korraldada kultuuri?,-1 kuivike,-1 kul`t-inform-press,-1 kula,-1 kuljetus ja logistiikka,-1 kuljetusyrittäjä,-1 kultaneito,1 kulttuurihistoria nyt,-1 kulttuurihistorian seura,-1 kulttuuriklubi,-1 kulttuurintutkimus,2 kulttuuripoliittisen tutkimuksen edistämissäätiö,-1 kulttuuripolitiikan tutkimuksen vuosikirja,1 kulttuurista perinnöksi,-1 kulttuurivihkot,-1 kultur.region.niederösterreich,-1 kultura,-1 kultura bezpieczeństwa,1 kultura i społeczeństwo,1 kultura slova,1 "kultura, społeczeństwo, edukacja",-1 kultura. historia. globalizacja,1 kulturella perspektiv: svensk etnologisk tidsskrift,1 kulturens frontlinjer,1 kulturhistoriske studier i centralitet,-1 kulturstiftung sibirien,1 kulturstudier,1 kuluttaja,-1 kuluttajatutkimuskeskus,-1 kulutustutkimus.nyt,1 kuml: arbog for jysk arkaeologisk selskab,1 kummi,-1 kummin,-1 kunde: zeitschrift fur ur- und fruhgeschichte,-1 kungl. gustav adolfs akademien för svensk folkkultur,1 kungl. samfundet för utgivandet av handskrifter rörande skandinaviens historia,1 kungl. tekniska högskolan i stockholm (kth),-1 kungl. vitterhets historie och antikvitets akademien,1 kungliga krigsvetenskapsakademiens handlingar och tidskrift,1 kungliga musikhögskolan,-1 kungliga skogs- och lantbruksakademien,1 kungliga skogs- och lantbruksakademiens tidskrift,1 kunnallisalan kehittämissäätiö,-1 kunnallisalan kehittämissäätiön julkaisu,-1 kunnallisalan kehittämissäätiön polemia-sarja,-1 kunnallisalan kehittämissäätiön tutkimusjulkaisut,-1 kunnallislehti,-1 kunnon perhetila,-1 kunnossapitoyhdistys promaint ry,-1 kunst,-1 kunst og kultur,1 kunst und kirche,-1 kunst und politik,1 kunstakademiets arkitektskoles forlag,1 kunstchronik,1 kunsten,-1 kunsthåndverk,1 kunsthøgskolen i oslo,-1 kunstiteaduslikke uurimusi,1 kunstkritikk,-1 kuntalehti,-1 kuntatekniikka,-1 kuntoutus,1 kuntoutussäätiö,-1 kuntoutusta kehittämässä,-1 kuoriti edyukeshon,-1 kuortaneen kunta,-1 kupoli,-1 kuram ve uygulamada egitim bilimleri,-1 kuramdan uygulama eğitim yönetimi,-1 kurdish studies,-1 kurdish studies journal,1 kurikan kaupunki,-1 kurikka-lehti,-1 kuriositeettikabi,-1 kuriren,-1 kurjenpolvet,-1 kurosio publishers,1 kustannus oy duodecim,-1 kustannus oy maamerkki,-1 kustannus oy rajalla,-1 kustannus oy uusi tie,-1 kustannus-puntsi,-1 kustannusliike parkko,-1 kustannusosakeyhtiö atlasart,-1 kustannusosakeyhtiö auditorium,-1 kustannusosakeyhtiö medicina oy,-1 kustannusosakeyhtiö taide,-1 kustannusyhtiö ta-tieto oy,-1 kutadgubilig: felsefe - bilim arastirmalari dergisi,1 kutafin university law review,1 kuti,-1 kuurojen lehti,-1 kuurojen liitto ry.,-1 kuurtanes-seuran joulu,-1 kuvataideakatemia,-1 kuvittaja,-1 kuwait conference on e-services and e-systems,-1 kuwait medical journal,-1 kvan,1 kvartti,-1 "kvinder, kon og forskning",1 kwartalnik historii nauki i techniki - kwartalnyi zhurnal istorii nauki i tekhniki -,1 kwartalnik historyczny,1 kwartalnik nauk o przedsiębiorstwie,-1 kwartalnik neofilologiczny,1 kybernetes,1 kybernetika,1 kyklos,1 kylkirauta,-1 kylmäextra,-1 kylväjä,-1 kymen sanomat,-1 kymenlaakson ammattikorkeakoulu,-1 kymenlaakson luonto,-1 kynnys ry,-1 kyoto journal of mathematics,1 kyoto sangyo daigaku,-1 kyrkohistorisk årsskrift,1 kyrkpressen,-1 kytösavut,-1 kyungpook mathematical journal,1 kyushu journal of mathematics,1 kyvyt käyttöön,-1 káñina,1 källan,-1 käpy-lehti,-1 käpylä-lehti,-1 kätilölehti,-1 käypä hoito,1 käyttäytymisanalyysi ja -terapia,1 käytännön maamies,-1 käännöstieteen tutkimus,1 kääntäjä,-1 kåkenhus-kirjat,-1 königshausen & neumann,1 københavns universitet,-1 kültür ve turizm bakanlığı,-1 künnimees,-1 kōdō kagaku,-1 k̦araġandy universitetinin̦ habaršysy : filologiâ seriâsy,-1 k̦azu̇u habaršysy,-1 ķaraġandy universitetìnìn̦ habaršysy : himiâ seriâsy,-1 l alighieri : rassegna bibliografica dantesca,1 l'analisi linguistica e letteraria,-1 l'atelier du crh,-1 l'europe en formation,1 l'information psychiatrique,-1 l'ircocervo,1 l'obs,-1 l'universo,-1 l.n. gumilev atyndaġy euraziâ u̇lttyk̦ universitetìnìn̦ habaršysy : tehnikalyk̦ ġylymdar ža̋ne tehnologiâlar seriâsy,-1 l1 educational studies in languages and literature,1 l2 journal,1 l3 soluções em tecnologia ltda,-1 la bibliofilia: rivista di storia del libro e di bibliografia,1 la clinica terapeutica,1 "la corónica: a journal of medieval hispanic languages, literatures, and cultures",1 la documentation francaise,1 la ergástula,-1 la faute à rousseau,-1 la fundación para el desarrollo económico y social hispano-marroquí,-1 la ley,-1 la librairie vuibert,1 la matematica,1 la matematica e la sua didattica,-1 la metallurgia italiana,-1 la musa talìa,-1 la nouvelle revue de l’adaptation et de la scolarisation,-1 la nuova critica,1 la nuova critica: rivista di scienze dell uomo e di filosofia delle scienze,1 la parola del testo,1 la pieve poligrafica editore,-1 la prensa médica argentina,-1 la provincia sannita,-1 la razón digit@l,-1 la revista icono 14,1 la revolution francaise,1 la revue des lettres modernes : gustave flaubert,1 la revue internationale et stratégique,-1 la revue lisa,1 la ricerca folklorica,1 laari,-1 lab animal,1 lab on a chip,2 lab pro,-1 lab world magazine,-1 lab-ammattikorkeakoulun julkaisusarja,-1 labirint,-1 labmedicine,1 labor et fides,-1 labor history,3 labor studies journal,1 labor: studies in the working class history of the americas,1 laboratoire de recherche historique rhône-alpes,-1 "laboratorio dell'ispf, rivista elettronica di testi, saggi e strumenti",1 laboratorium,1 laboratorium för folk och kultur,-1 laboratoriumsmedizin-journal of laboratory medicine,1 laboratory animals,1 laboratory hematology,1 laboratory investigation,1 laboratory phonology,1 labour,1 labour and industry: a journal of the social and economic relations of work,1 labour economics,2 labour history,1 labour history review,1 labour publishing house,-1 labour-le travail,1 labyrinth : teorii i praktiki kulʹtury,-1 labyrinth press,1 labyrintti,-1 ladan,-1 lafrica romana,1 lag och bok,-1 lahden ammattikorkeakoulu,-1 lahden diakoniasäätiön julkaisuja,-1 lahden historiallisen museon julkaisuja,-1 lahden kaupunginmuseon tutkimuksia,-1 lahden kaupunki,-1 lahden taidemuseon julkaisuja,-1 lahti venture capitals,-1 laitilan sanomat,-1 lajiluettelo,-1 lake and reservoir management,1 lakehead university centre for northern studies,-1 lakes and reservoirs: research and management,1 lakeuren lairalla,-1 lakiasiainhuone oy,-1 lakimies,2 lakimiesliiton kustannus,1 lambda nordica: tidskrift om homosexualitet,1 lambert-lucas,1 lammas ja vuohi,-1 lammin kotiseutulehti,-1 lampas: tijdschrift voor nederlandse classici,1 lampin raitti,-1 lamy,1 lan,1 lancaster university,-1 lancet : child & adolescent health,3 lancet microbe,3 land,-1 land degradation and development,1 land economics,1 land use policy,2 landbauforschung,-1 landbohistorisk tidskrift,1 landesamt für denkmalpflege und archäologie sachsen-anhalt,-1 landesverteidigungsakademie,-1 landfall,1 landing,-1 "landolt-bornstein: group i elementary particles, nuclei and atoms",1 landolt-bornstein: group ii molecules and radicals,1 landolt-bornstein: group iii condensed matter,1 landolt-bornstein: group iv physical chemistry,1 landolt-bornstein: group vi astronomy and astrophysics,1 landolt-bornstein: group vii biophysics,1 landolt-bornstein: group viii advanced materials and technologies,1 landsbygdens folk,-1 landscape and ecological engineering,1 landscape and urban planning,3 landscape architecture and art,1 landscape architecture frontiers,1 landscape architecture magazine,-1 landscape ecology,2 landscape history,2 landscape journal,1 landscape online,1 landscape research,2 landscape review,1 landscapes,1 landsforeningen af læsepædagoger,-1 landskab,-1 landslides,2 landwirtschaftliche forschung,1 langaa research and publishing common initiative group,-1 langage et societe,1 langages,3 langenbecks archives of surgery,1 langmuir,2 language,3 language & ecology,-1 language acquisition,2 language acquisition and language disorders,1 language and cognition,2 language and communication,3 language and computers,1 language and dialogue,1 language and education,2 language and health,1 language and history,1 language and intercultural communication,2 language and law,-1 language and linguistics,1 language and linguistics compass,1 language and linguistics in melanesia,-1 language and literacy,1 language and literature,3 language and psychoanalysis,1 language and semiotic studies,-1 language and sociocultural theory,1 language and speech,3 language arts,1 language assessment quarterly,1 language awareness,1 language culture and curriculum,1 language development research,1 language discourse & society,1 language documentation and conservation,2 language documentation and description,2 language dynamics and change,2 language ecology.,-1 language education and multilingualism,-1 language education and technology (let journal),-1 language forum,-1 language in africa,-1 language in society,3 language learning,3 language learning and development,1 language learning and language teaching,1 language learning and teaching conference,-1 language learning and technology,2 language learning in higher education,1 language learning journal,1 language matters,1 language on the move,-1 language policy,3 language problems and language planning,1 language research,1 language resources,-1 language resources and evaluation,3 language science press,2 language sciences,3 language speech and hearing services in schools,1 language teaching,3 language teaching for young learners,1 language teaching research,3 language teaching tomorrow,-1 language testing,2 language testing in asia,1 language typology and universals,2 language under discussion,1 language value,1 language variation and change,3 "language, cognition and neuroscience",1 "language, context and cognition",1 "language, context and text",1 "language, culture and society",1 "language, individual and society",-1 "language, interaction and aquisition",1 "language: codification, competence, communication",-1 language@internet,1 languages,-1 languages in contrast: international journal for contrastive linguistics:,1 languages of the caucasus,-1 languages of the world,1 "languages, society & policy",-1 langue francaise,3 langue(s) & parole,-1 langues et linguistique,-1 langues modernes,-1 lannee stendhalienne,1 lannoo,-1 lannée épigraphique,1 lantbrukskalender,-1 lap lambert academic publishing,-1 lapillinen,-1 lapin ammattikorkeakoulu,-1 lapin ammattikorkeakoulun julkaisuja : muut julkaisut,-1 lapin kansa,-1 lapin nuija,-1 lapin tutkimusseura ry,-1 lapin yliopisto,-1 lapin yliopiston kasvatustieteellisiä julkaisuja,-1 lapin yliopiston oikeustieteellisiä julkaisuja,-1 lapin yliopiston taiteiden tiedekunnan julkaisuja c : katsauksia ja puheenvuoroja,-1 lapin yliopiston yhteiskuntatieteellisiä julkaisuja,-1 lapin yliopiston yhteiskuntatieteellisiä julkaisuja b : tutkimusraportteja ja selvityksiä,-1 lapinkoira,-1 lapland university press,1 lappajärven joulu,-1 lappeenrannan kaupunki,-1 lappeenrannan teknillinen yliopisto,-1 lapsen maailma,-1 lapsiasiavaltuutetun toimiston julkaisuja,-1 lapuan joulu,-1 lapuan sanomat,-1 larcier,-1 large animal review,1 large-scale assessments in education,1 larhyss journal,-1 lars müller publishers,-1 laryngo-rhino-otologie,1 laryngoscope,2 laryngoscope investigative otolaryngology,1 las torres de lucca,1 laser and particle beams,1 laser and photonics reviews,3 laser chemistry,1 laser focus world,-1 laser institute of america,-1 laser physics,1 laser physics letters,1 lasers in dental science,1 lasers in engineering,1 lasers in manufacturing and materials processing,1 lasers in medical science,1 lasers in surgery and medicine,1 lasin maailma,-1 lasirakentaja,-1 lasten asialla,-1 lasten keskus,-1 lastenkirjainstituutin julkaisuja,-1 lastenkirjainstituutti,-1 lastensuojelun keskusliiton verkkojulkaisu,-1 lastronomie,-1 late antique archaeology,1 late imperial china,1 later medieval europe,1 laterality,1 laterza,-1 latest trends in textile and fashion designing,-1 latin american and caribbean ethnic studies,1 latin american antiquity,2 latin american applied research,1 latin american computing conference,-1 latin american indian literatures journal,1 latin american journal of aquatic research,1 latin american journal of content and language integrated learning,1 latin american journal of management for sustainable development,1 latin american journal of solids and structures,1 latin american literary review,1 latin american music review,1 latin american perspectives,1 latin american politics and society,1 latin american research review,1 latin american theatre review,1 latin trade,1 latin-american journal of physics education,1 latino studies,1 latinoamerica: anuario de estudios latinoamericanos,1 latissimus,-1 latium,-1 latomus,2 latvian journal of physics and technical sciences,-1 latviešu valodas agentura,-1 latvijas arhivi,1 latvijas arpolitikas instituts,-1 latvijas kara muzejs,-1 latvijas kristīgā akadēmija,-1 latvijas lauksaimniecības universitāte,-1 latvijas universitate,-1 latvijas universitates latvijas vestures instituts,-1 latvijas universitetes raksti,1 "latvijas zinātn̦u akadēmijas vēstis. a dal̦a, humanitārās zinātnes",1 latšo diives,-1 laulupedagogi,-1 laurea journal,-1 laurea julkaisut,-1 laurea long,-1 laurea-ammattikorkeakoulu,-1 lauttakylä,-1 laval theologique et philosophique,1 lavenc,1 law & history,1 law and business review of the americas,1 law and contemporary problems,2 law and critique,2 law and history review,2 law and human behavior,2 law and literature,2 law and philosophy,3 law and policy,2 law and practice of international courts and tribunals,1 law and social inquiry: journal of the american bar foundation,1 law and society review,3 law business research,-1 law in context,1 law in eastern europe,1 law library journal,1 law of ukraine,-1 law press china,1 law quarterly review,2 law text culture,1 "law, culture and the humanities",1 "law, democracy & development",-1 "law, environment and development journal",1 "law, ethics and philosophy",1 "law, innovation and technology",2 "law, probability and risk: a journal of reasoning under uncertainty",1 "law, social justice and global development",1 "law, technology and humans",1 lawrence and wishart,1 lawrence erlbaum associates,2 laws,-1 länsi-savo,-1 lc gc europe,-1 lc gc north america,-1 le courrier de la nature,-1 le courrier de la transplantation,-1 le discours et la langue,1 le droit maritime francais,1 le forme e la storia,1 le français aujourd´hui,1 le français dans le monde,-1 le français dans le monde. recherches et applications,1 le français à l'université,-1 le grand continent,-1 le infezioni in medicina,-1 le langage et lhomme,1 le mauricien,-1 le monde diplomatique,-1 le monde diplomatique & novaja gazeta,-1 le monnier università,-1 le sans-visage,-1 lea,1 leadec leadership development center oy,-1 leadership,1 leadership and management in engineering,1 leadership and organization development journal,1 leadership and policy in schools,1 leadership and the humanities,1 leadership in health services,1 leadership quarterly,3 lean construction journal,1 learned publishing,1 learner development journal,1 learning,1 learning and behavior,1 learning and individual differences,3 learning and instruction,3 learning and memory,2 learning and motivation,1 learning and teaching in higher education,1 learning and teaching journal,-1 learning and teaching: the international journal of higher education in the social sciences,1 learning disabilities research and practice,2 learning disability quarterly,2 learning environments research,2 learning in context,1 learning inquiry,1 learning landscapes,1 learning letters,-1 learning organization,1 learning tech,-1 "learning, culture and social interaction",1 "learning, media and technology",1 leaves,1 lebende sprachen,1 lectio difficilior,1 lecture notes,-1 lecture notes in bioinformatics,1 lecture notes in business information processing,1 lecture notes in civil engineering,1 lecture notes in computational science and engineering,1 lecture notes in computational vision and biomechanics,-1 lecture notes in computer science,1 lecture notes in control and information sciences,1 lecture notes in control and information sciences - proceedings,-1 lecture notes in economics and mathematical systems,1 lecture notes in educational technology,1 lecture notes in electrical engineering,1 lecture notes in engineering and computer science,-1 lecture notes in geoinformation and cartography,1 lecture notes in informatics,1 lecture notes in information systems and organisation,1 lecture notes in intelligent transportation and infrastructure,-1 lecture notes in logistics,-1 lecture notes in management science,-1 lecture notes in mathematics,1 lecture notes in mechanical engineering,1 lecture notes in mobility,1 lecture notes in networks and systems,1 lecture notes in physics,1 lecture notes in production engineering,1 lecture notes in pure and applied mathematics,1 "lecture notes of the institute for computer sciences, social informatics and telecommunications engineering",1 lecture notes on data engineering and communications technologies,1 lecture notes on multidisciplinary industrial engineering,-1 led edizioni universitarie,-1 led professional review,-1 ledger,1 ledizioni,1 leeds international classical studies,1 leeds studies in english,1 leeds university press,-1 left coast press,1 leftword books,-1 legacy,1 legal and criminological psychology,2 legal aspects of international organization,1 legal education review,1 legal ethics,1 legal information management,1 legal issues of economic integration,1 legal medicine,1 legal pluralism and critical social analysis,1 legal roots,-1 legal studies,2 legal theory,3 legalities,1 legatio,1 lege artis,-1 lege artis medicinae,-1 legenda,1 legislative studies quarterly,3 legon journal of sociology,1 legume perspectives,-1 legume research,1 legume science,1 lehtimäen joulu,-1 leia,-1 leibniz international proceedings in informatics,1 leibniz online,-1 leibniz review,1 leibniz-institut für deutsche sprache,1 leiden journal of international law,2 leiden university press,1 leija,-1 leipuri,-1 leipziger universitätsverlag gmbh,-1 leipä leveämmäksi,-1 leirikoulu,-1 leisure,1 leisure sciences,2 leisure studies,1 leitura,-1 lejand yayincilik,-1 leksrus,-1 lelkipásztor: evangélikus lelkészi szakfolyóirat,1 lempäälän joulu,-1 lempäälän-vesilahden sanomat,-1 lenand,-1 lendemains: etudes comparees sur la france,1 lengas: revue sociolinguistique,1 lengua y migración,1 lenguaje y textos,1 lenguas modernas,1 lenninsiipi,-1 lenseignement mathematique,1 lentoratas,-1 leo s. olschki,1 leonardo,3 leonardo electronic almanac,1 leonardo libri,-1 leonardo reviews,-1 lepakot,-1 leprosy review,1 ler historia,1 lernen und lernströrungen,1 les ateliers de l'éthique,1 les belles lettres,1 les cahiers d`épilepsie,1 les cahiers de champs visuels,1 les cahiers de framespa,1 les cahiers de la sécurité et de la justice,-1 les cahiers du gerad,-1 les cahiers du rifal,1 les cahiers forellis,-1 les cahiers irice,-1 les cahiers jean-marie gustave le clézio,-1 les carnets de l'acost,-1 les champs de mars,1 les dossiers d'archéologie,-1 les houches,1 les liens qui libèrent,-1 les politiques sociales,-1 les presses du réel,-1 les éditions du prism,-1 leshonenu,1 leslla symposium proceedings,-1 lesnoe hozâjstvo,-1 lesovedenie,-1 lesprominform,-1 lessing yearbook,1 lestadiolainen uusheräys ry,-1 lestijoki,-1 lestin mutti,-1 lethaia,1 letonica,1 letra e voz,1 letras,-1 letras & letras,-1 letras (santa maria),-1 letras cubanas,1 letras de hoje,-1 letras femeninas,1 letrônica,-1 letteratura italiana antica,1 letterature d america,1 lettere italiane,2 letters in applied microbiology,1 letters in biomathematics,1 letters in drug design and discovery,1 letters in high energy physics,1 letters in mathematical physics,1 letters in organic chemistry,1 lettres modernes minard,1 leukemia,3 leukemia & lymphoma,1 leukemia research,1 leukemia research reports,-1 leukos,1 leuven university press,1 leuvense bijdragen: tijdschrift voor germaanse filologie,1 levant,2 levende talen magazine,-1 levende talen tijdschrift,-1 levi,-1 leviathan: a journal of melville studies,1 leviathan: zeitschrift fur sozialwissenschaft,1 levéltári szemle,-1 levón-instituutin julkaisut,-1 lex electronica,-1 lex localis: journal of local self: government,1 "lex nova, s.a.u.",-1 lex portus,1 lex russica,-1 lex scientia law review,1 lexia,1 lexicographica: internationales jahrbuch fur lexikographie,1 lexicographica: series maior: supplementbände zum internationalen jahrbuch für lexikographie,1 lexicometrica,1 lexiconordica,1 lexikos,-1 lexington books,1 lexique,1 lexis,1 lexis: revista de linguistica y literatura,1 lexisnexis butterworths,1 lexonomica,1 lexpress,-1 lexxion verlagsgesellschaft,-1 leykam buchverlag,-1 lfe,-1 lgbt health,1 lgbtq + family,1 lhistoire,1 lhumaine,-1 liames,1 lianes,1 lias: journal of early modern intellectual culture and its sources,1 liber,1 liber quarterly,1 libera università di bolzano,-1 libera-säätiö,-1 libero,-1 libertarian papers,1 liberte,1 liberà università maria ss. assunta : lumsa,-1 libraccio editore,-1 libraries unlimited,-1 library,1 library and archival security,1 library and information research,1 library and information science,1 library and information science research,3 library hi tech,1 library journal,1 library management,1 library philosophy and practice,-1 library quarterly,1 library resources and technical services,1 library trends,1 libreria editrice vaticana,1 libreriauniversitaria.it,-1 libres,1 libri,1 libri & documenti,-1 libri et liberi,1 libri publishing,-1 libri shkollor,-1 libya antiqua: annual of the department of antiuities of libya,1 libyan journal of medicine,-1 libyan studies,1 lidel,-1 lidil,1 lied und populare kultur-song and popular culture,1 liekki,-1 lienart éditions,-1 liettua lehti,-1 lietuvos archaeologija,1 lietuvos edukologijos universitetas,-1 lietuvos edukologijos universiteto leidykla,-1 lietuvos etnologija: socialines antropologija i etnologija studijos,1 lietuvos istorijos studijos,1 lietuvos kompiuterininkų sąjunga,-1 life,-1 life medicine,1 life science alliance,1 life science journal: acta zhengzhou university overseas edition,-1 life sciences,1 "life sciences, society and policy",1 life writing,2 lifespans & styles,-1 lifestyle genomics,1 lifestyle medicine,1 lifetime data analysis,1 lifewriting annual,-1 ligeia: dossiers sur lart,1 light and engineering,1 light: advanced manufacturing,1 light: science & applications,3 lighting research and technology,2 lignes,-1 liha ja ruoka,-1 liikejuridiikka,1 liikekieli,-1 liikenne,1 liikenne- ja viestintäministeriön julkaisuja,-1 liikenne/kaupunki,-1 liikenneturvan selvityksiä,-1 liikennevilkku,-1 liikkeessä yli rajojen,-1 liikunnan ammattilainen,-1 liikunnan ja kansanterveyden edistämissäätiö,-1 liikunta ja tiede,1 liikuntatieteellinen seura,1 liikuntatieteellisen seuran julkaisuja,-1 liikuntatieteellisen seuran tutkimuksia ja selvityksiä,-1 liito,-1 liiton arkki,-1 liitos,-1 like,-1 lilith: a feminist history journal,1 lilja,-1 lilloa,-1 lilun yuekan,-1 lim editrice,-1 limba romana,1 limes plus,-1 liminalities,1 limnetica,1 limnologica,1 limnological review,-1 limnology,1 limnology and freshwater biology,-1 limnology and oceanography,3 limnology and oceanography letters,1 limnology and oceanography: methods,1 limor kustannus,-1 lincom,1 lindbergia,1 linde verlag,1 linear algebra and its applications,2 linear and multilinear algebra,1 linformation litteraire,1 lingua,1 lingua aegyptia,1 lingua americana,1 lingua e stile,1 lingua et linguistica,1 lingua nostra,1 lingua posnaniesia,1 lingua sinica,1 linguamática,1 linguas e literaturas: revista da faculdade de letras,1 lingue antiche e moderne,-1 lingue culture mediazioni,-1 lingue e linguaggi,1 lingue e linguaggio,1 linguistic analysis,1 linguistic and philosophical investigations,1 linguistic approaches to bilingualism,1 linguistic approaches to literature,1 linguistic association of korea journal,1 linguistic discovery,1 linguistic frontiers,1 linguistic inquiry,3 linguistic insights: studies in language and communication,1 linguistic issues in language technology,1 linguistic landscape,1 linguistic minorities in europe online,-1 linguistic review,3 linguistic typology,3 linguistic typology at the crossroads,-1 linguistic variation,1 linguistica,1 linguistica anverpiensia new series,1 linguistica e filologia,1 linguistica espanola actual,1 linguistica lettica,1 linguistica occitana,-1 linguistica online,1 linguistica palatina,1 linguistica pragensia,1 linguistica silesiana,1 linguistica uralica,1 linguistica y literatura,1 linguistica zero,1 linguistics,3 linguistics and education,2 linguistics and philology,1 linguistics and philosophy,3 linguistics and the human sciences,1 linguistics applied,1 linguistics in the netherlands,1 linguistics of the tibeto-burman area,1 linguistics vanguard,1 "linguistics, archaeology and the human past",-1 "linguistics, culture & education",-1 linguistik aktuell,1 linguistik online,1 linguistique,1 linguistique et langues africaines,1 linguistische arbeiten,2 linguistische berichte,1 lingvisticae investigationes,1 lingvisticae investigationes supplementa,1 lingvistik',-1 lingwistyka stosowana,1 lingüística en la red,-1 linha d'agua,1 linköping electronic conference proceedings,1 linköping university electronic press,-1 linköpings universitet,-1 linnaeus university press,-1 linnut,-1 linnut-vuosikirja,-1 linquistique africaine,1 linux journal,-1 linux symposium,-1 linx,1 linye kexue,-1 lion and the unicorn,1 lipetsk state pedagogical university,-1 lipid insights,-1 lipids,2 lipids in health and disease,1 lippincott williams & wilkins,1 liquid crystals,1 liquid crystals reviews,1 lir.journal,-1 liric,-1 lishi yanjiu,-1 listos,-1 listy cukrovarnicke a reparske,1 listy filologicke,1 lit verlag,2 lit: literature interpretation theory,1 literacy,1 literacy education and second language learning for adults,1 literacy information and computer education journal,-1 literacy research and instruction,1 literacy today,-1 literarus-literaturnoje slovo,-1 literary geographies,1 literary imagination,1 literary journalism studies,1 literary research,1 literatur fur leser,1 literatur und kritik,1 literatura,1 literatura mexicana,1 literatura y linguistica,1 literature and aesthetics,1 literature and arts review,-1 literature and history: third series,2 literature and medicine,2 literature and theology,3 "literature, critique, and empire today",2 literaturkritik.de,-1 literaturnyj fakt,-1 lithic technology,1 lithics,1 lithology and mineral resources,1 lithos,-1 lithos,2 lithosphere,1 lithuanian annual strategic review,1 lithuanian historical studies,1 lithuanian journal of physics,1 lithuanian mathematical journal,1 lithuanian national museum of art,-1 litnet,-1 litteraria copernicana,1 litteraria pragensia: studies in literature and culture,1 litterature,2 litteratures,1 litteratures classiques,1 lituanus,1 liturgical press,-1 liturgy,1 livenarch+ journal,-1 liver cancer,1 liver international,1 liver transplantation,2 liverpool university press,1 livers,-1 livestock research for rural development,1 livestock science,1 living journal of computational molecular science,-1 living reviews in computational astrophysics,1 living reviews in relativity,3 living reviews in solar physics,3 livraria almedina,-1 ljetopis socijalnog rada,1 llen cymru,1 lletres asturianes,1 lloyds maritime and commercial law quarterly,2 llull: boletin de la sociedad espanola de historia de las ciencias,1 lms journal of computation and mathematics,1 lncs transactions on aspect-oriented software development,1 lncs transactions on edutainment,1 lo sguardo,1 lo squaderno,1 loa,-1 loading...,-1 lobachevskii journal of mathematics,1 lobachevsky state university of nizhni novgorod,-1 local and regional anesthesia,1 local development & society,1 local economy,1 local environment,1 local government studies,2 local population studies,1 loccumer pelikan,-1 locke studies: an annual journal of locke research,1 lodz papers in pragmatics,1 lodz studies in language,1 lodz university press,-1 log,1 logforum,-1 logic and logical philosophy,1 logic journal of the igpl,2 logica universalis,1 logical methods in computer science,1 logique et analyse,1 logisma editore,-1 logistics,-1 logistics & sustainable transport,1 logistics and transport focus,-1 logistics europe,-1 logistics research,1 logistique et management,-1 logistyka,-1 logičeskie issledovaniâ,1 logopedics phoniatrics vocology,1 logos,1 logos (yorkton),1 logos and pneuma: chinese journal of theology,1 logos pljus,-1 logos verlag berlin,1 logos-ensyklopedia,1 logos: a journal of catholic thought and culture,1 logos: anales del seminario de metafisica,1 logos: vilnius,1 lohjan saaristo,-1 loimu,-1 loisir et societe,1 lokalhistorisk magasin,-1 lombardo accademia di scienze e lettere,-1 lommen,-1 london journal,1 "london journal of tourism, sport and creative industries",-1 london mathematical society,2 london mathematical society lecture notes,1 london metropolitan university,-1 london oriental and african language library,1 london review of education,1 london review of international law,1 long play,-1 long range planning,3 longhua chinese medicine,-1 longitudinal and life course studies,1 longman,1 looking glass,1 looming,-1 loquens,1 lorenzo de medici press,-1 lotta,-1 lotus international,-1 louisiana state university press,1 lounais-lappi,-1 lousi,-1 louvain studies,1 lov og rett: norsk juridisk tidsskrift,1 low carbon economy,-1 low temperature physics,1 low-carbon materials and green construction,1 lrec proceedings,1 lse press,-1 lse public policy review,-1 lsp journal,1 ltd publishing house universal,-1 lu latviešu valodas institūt,-1 lubricants,-1 lubrication science,1 lucentum,1 luchterhand,1 lucius und lucius,1 lud,1 ludus: medieval and early renaissance theatre and drama,1 ludwig múzeum,-1 ludwig-maximilians-universität münchen : universitätsbibliothek,-1 luglio editore,-1 lugymedia,-1 luigi pellegrini editore,-1 luiss university press,1 luksitko,-1 luleå tekniska universitet,1 lulu.com,-1 luma,-1 lumat,1 lumat-b,-1 lumen,-1 luminescence,1 lumooja,-1 lunar & planetary institute,-1 lund archaeological review,1 lund university press,1 lunds universitet,-1 lunds universitet : arkeologiska institutionen och historiska museet,-1 lunds universitet : sociologiska institutionen,-1 lunds universitets kyrkohistoriska arkiv,-1 lung,1 lung cancer,1 lunula: archaeologia protohistorica,1 luokanopettaja,-1 luomulehti,-1 luonnon tutkija,-1 luonnon varassa,-1 luonnonvara- ja biotalouden tutkimus,-1 luonnonvarakeskus,-1 luonnosta sinulle,-1 luontokuva,-1 luontosäde,-1 lupus,1 lurra editions,-1 luso: brazilian review,2 luston julkaisuja,-1 lustrum,1 lut scientific and expertise publications,-1 lut scientific and expertise publications : tutkimusraportit,-1 luterisma mantojuma fonds,-1 luther,1 luther-agricola-seura,1 luther-kirjat,-1 lutheran quarterly,1 lutheran theological journal,-1 lutherjahrbuch,2 luthersk kirketidende,-1 luts-lower urinary tract symptoms,-1 lutukka,-1 luustotieto,-1 luuvalo,-1 lux veritatis,-1 luxemburg,-1 luxury,1 luyou xuekan,-1 lva,-1 lwt: food science and technology,1 lychnos: lardomshistoriska samfundets arsbok = annual of the swedish history of science society,1 lykia,1 lymphatic research and biology,1 lymphologie in forschung und praxis,1 lymphology,1 lynne rienner publishers,1 lyrikvännen,-1 lysa publishers,-1 lyubavich,-1 l´erma di bretschneider,1 l´harmattan,1 lähde,-1 lähde : historiatieteellinen aikakauskirja,1 lähellä,-1 lähetysteologinen aikakauskirja,1 lähihistoria,1 lähikuva,2 lähikuva-yhdistys,-1 lähilehti,-1 lähivõrdlusi-lähivertailuja,1 läkartidningen,-1 länsi-saimaan sanomat,-1 länsi-uusimaa,-1 länsiväylä,-1 läraren,-1 läs- och skrivsvårigheter & dyslexi,-1 lääkealan turvallisuus- ja kehittämiskeskus fimea,-1 lääketietokeskus oy,-1 lääkkeiden luokitus,-1 lääkärilehti,1 læring og medier,1 lìtasfera,-1 líbero,1 lönnströmin taidemuseo,-1 lûboslovie,1 l’ ellisse,1 m.e. sharpe,2 m/c journal,1 m@gm@,-1 m@n@gement,1 maa- ja elintarviketalouden tutkimuskeskus,-1 maa- ja metsätalous,-1 maa- ja metsätalousministeriö,-1 maahenki,-1 maailman kuvalehti,-1 maailmankirjat,-1 maal og minne,1 maan suola,-1 maandblad voor accountancy en bedrijfseconomie,-1 maankäyttö,-1 maanmittauslaitoksen julkaisuja,-1 maanomistaja,-1 maanpuolustus,-1 maanpuolustuskorkeakoulu,-1 maarav: a journal for the study of the northwest semitic languages and literatures,1 maaseudun tulevaisuus,-1 maaseudun uusi aika ry,-1 maaseutu plus,-1 maaseutututkimus,1 maastricht journal of european and comparative law,3 maatalouskalenteri,-1 maatalousmuseon tutkimuksia,-1 maatiainen,-1 maatila-pellervo,-1 maatilalla,-1 mabs,1 mac keith press,-1 macat international,-1 macedonian journal of chemistry and chemical engineering,-1 machine intelligence research,1 machine learning,3 machine learning and knowledge extraction,1 machine learning reports,-1 machine learning with applications,1 machine learning: science and technology,1 machine vision and applications,2 machines,-1 machining science and technology,1 maciej kanert pro jezeli p to q,-1 maciej oczak,-1 macmillan,1 macquarie university,-1 macroeconomic dynamics,1 macroeconomics and finance in emerging market economies,1 macrolinguistics,1 macromarketing society,1 macromol,-1 macromolecular bioscience,1 macromolecular chemistry and physics,1 macromolecular materials and engineering,1 macromolecular rapid communications,1 macromolecular reaction engineering,1 macromolecular research,1 macromolecular symposia,1 macromolecular theory and simulations,1 macromolecules,3 macrotheme review,-1 madagascar conservation and development,1 made in china,-1 madera y bosques,1 maderas: ciencia y tecnologia,1 madoc: tijdschrift over de middel eeuwen,1 maejo international journal of science and technology,1 magallania,1 magazine antiques,-1 magazine house,-1 magazine of civil engineering,-1 magazine of concrete research,1 magazyn polonia,-1 maggioli editore,1 maghreb-machrek,1 "magic, ritual, and witchcraft",1 magma,1 magma studie,-1 magma-pamflett,-1 "magna graecia: rassegna di archeologia, storia, arte, attualita",1 magnesium research,1 magnetic resonance,1 magnetic resonance imaging,1 magnetic resonance imaging clinics of north america,1 magnetic resonance in chemistry,1 magnetic resonance in medical sciences,1 magnetic resonance in medicine,1 magnetic resonance materials in physics biology and medicine,1 magnetochemistry,-1 magnetohydrodynamics,1 magnolia press,1 magnus publications,-1 magyar allatorvosok lapja,1 magyar egyhazzene,1 magyar filozofiai szemle,1 "magyar kemiai folyoirat, kemiai kozlemenyek",-1 magyar nepmuveszet,1 magyar nyelv,1 magyar nyelvjarasok,1 magyar nyelvor,1 magyar sporttudomanyi szemle,-1 magyar tudomany,-1 magyar tudományos akadémia,-1 magyar zene,1 magyar zsidó múzeum és levéltár,-1 magyarországi zsidó hitközségek szövetsége,-1 mahkuscript,1 mahkuzine: journal of artistic research,-1 mai,-1 maia: rivista di letterature classiche,1 maik nauka/interperiodica,1 main group chemistry,1 main group metal chemistry,1 main school of fire service,-1 mains libres,-1 maintworld,-1 mainz,-1 mairie de beaune,-1 maito ja me,-1 maitotalous,-1 majallah-i āmūzish-i muhandisī-i īrān,-1 majallah-i ̒ilmī-i dānishgāh-i ̒ulūm-i pizishkī-i kurdistān,-1 makadam,1 make,1 makedonika,1 makedonski jazik,1 makelearn series,-1 makerere journal of higher education,-1 making futures,-1 maks press,-1 makumira publications,1 mal-lehti,-1 malacologia,1 malaria journal,1 malawi medical journal,1 malaysian applied biology,-1 malaysian journal of computer science,-1 malaysian journal of elt research,-1 malaysian journal of learning & instruction,1 malaysian journal of library and information science,1 malice,-1 malmö universitet,-1 maloca,-1 malta classics association,-1 malta medical journal,-1 mamatov,-1 mamluk studies review,1 mammal research,1 mammal review,2 mammal study,1 mammalia,1 mammalian biology,1 mammalian genome,1 man and environment,1 man in india,-1 mana: estudos de antropologia social,1 management,1 management & marketing,-1 management accounting research,3 management and organization review,1 management and organizational history,2 management and organizational studies,-1 management and production engineering review,1 management communication quarterly,2 management decision,1 management development network entrepreneurship conference,-1 management dynamics,-1 management dynamics in the knowledge economy,-1 management et avenir,-1 management in education,1 management international review,1 management learning,2 management of biological invasions,1 management of environmental quality,1 management of innovation and technology,-1 management of sustainable development,1 management research,1 management research and practice,-1 management research review,1 management review quarterly,1 management revue,1 management science,3 management studies,-1 management systems in production engineering,-1 management teaching review,1 management theory and studies for rural business and infrastructure development,-1 managerial and decision economics,1 managerial auditing journal,1 managerial finance,1 managing global transitions,1 managing leisure,1 managing sport and leisure,1 manchester metropolitan university,-1 manchester school,1 manchester university press,2 mande studies,1 mandelbaum verlag,-1 mandenkan,2 mandragora,-1 maney publishing,1 manifestolibri,-1 mankind quarterly,-1 manoa: a pacific journal of international writing,1 manohar publishers & distributors,1 mantu,-1 manuaali,-1 manual therapy,1 manucius,-1 manuelle medizin,1 manuelle therapie,1 manufacturing accounting research conference,-1 manufacturing and service operations management,3 manufacturing chemist,1 manufacturing engineering,-1 manufacturing letters,1 manufacturing review,-1 manufacturing technology,1 manuscript studies,1 manuscripta,1 manuscripta mathematica,1 manuscripta orientalia,1 manuscrito: revista internacional de filosofia,1 manuskripte,1 manusya,1 many-core applications research community symposium,-1 mapan-journal of metrology society of india,-1 mapryal,-1 marang,1 marburg journal of religion,1 "marburger beiträge zur antiken handels-, wirtschafts- und sozialgeschichte",1 marburger jahrbuch fur kunstwissenschaft,1 marcel dekker,1 marcello messina,-1 marche romane,1 marcial pons ediciones de historia,-1 marcianum press,-1 marcus förlag,-1 mare & martin,-1 mare nostrum,-1 marhaba,-1 marie curie sklodowska university press,1 marietti,-1 marin drinov academic publishing house,1 marine and coastal fisheries,1 marine and freshwater behaviour and physiology,1 marine and freshwater research,1 marine and petroleum geology,1 marine biodiversity,1 marine biodiversity records,1 marine biology,1 marine biology research,1 marine biotechnology,1 marine chemistry,1 marine drugs,-1 marine ecology: an evolutionary perspective,1 marine ecology: progress series,2 marine environmental research,1 marine genomics,1 marine geodesy,1 marine geology,2 marine geophysical researches,1 marine georesources and geotechnology,1 marine life science & technology,1 marine mammal science,1 marine micropaleontology,1 marine ornithology,1 marine policy,2 marine pollution bulletin,1 marine resource economics,1 marine structures,3 marine systems & ocean technology,1 marine technology society journal,1 mariners mirror,1 mario congedo editore,1 maritime business review,1 maritime economics and logistics,1 maritime policy and management,1 maritime studies,1 maritime transport research,1 marius,1 market and competition law review,1 marketing,1 marketing education review,1 marketing health services,1 marketing intelligence and planning,1 marketing intelligence review,-1 marketing intelligence review (english ed.),-1 marketing letters,1 marketing management association ... educators' conference proceedings,-1 marketing management journal,-1 marketing review,1 marketing review st. gallen,-1 marketing science,3 marketing theory,2 marketing ì menedžment ìnnovacìj,-1 "markets, globalization & development review",-1 markov processes and related fields,1 markus wiener publishers,-1 marmara iktisat dergisi,-1 marquette university press,1 marriage and family review,1 martat,-1 martial arts studies,1 martin dunitz,1 martin-luther-verlag,-1 maruzen,1 marvell studies,1 marvels and tales: journal of fairy-tale studies,1 "marxism & sciences : a journal of nature, culture, human and society",1 mary ann liebert,1 masaryk university journal of law and technology,1 masarykova univerzita,-1 masculinidades y cambio social,1 masculinities,1 maske und kothurn,1 mass communication and society,1 mass spectrometry letters,1 mass spectrometry reviews,1 massachusetts review,1 massey university press,-1 mast,1 master drawings,-1 mastozoología neotropical,-1 mat og helse i skolen,-1 matatu,1 match: communications in mathematical and in computer chemistry,1 mate ltd.,-1 matec web of conferences,-1 matematicheskii sbornik,-1 matematicki vesnik,1 matematičeskie zametki svfu,1 materia,-1 materia socio medica,-1 materia: rio de janeiro,1 material culture review,1 material design & processing communications,1 material religion,2 "material science, engineering and applications",-1 materiale plastice,1 materiales de construccion,1 materiali e contributi per la storia della narrativa greco-latina,1 materiali e discussioni per lanalisi dei testi classici,2 materiali in tehnologije,1 materiali per una storia della cultura giuridica,1 materialia,1 "materialisten: tidsskrift for forskning, fagkritikk og teoretisk debatt",1 materials,-1 materials & design,3 materials advances,1 materials and corrosion-werkstoffe und korrosion,1 materials and manufacturing processes,1 materials and structures,1 materials at high temperatures,1 materials characterization,1 materials chemistry and physics,1 materials chemistry frontiers,1 materials circular economy,1 materials evaluation,1 materials express,-1 materials for quantum technology,1 materials for renewable and sustainable energy,1 materials futures,1 materials genome engineering advances,-1 materials horizons,2 materials letters,1 materials letters x,1 materials open research,-1 materials performance,1 materials performance and characterization,1 materials physics and mechanics,1 materials proceedings,-1 materials research bulletin,1 materials research express,1 materials research innovations,1 materials research letters,1 materials research proceedings,-1 materials research society,1 materials research society symposia proceedings,1 materials research: ibero-american journal of materials,1 materials science,1 materials science and engineering a: structural materials properties microstructure and processing,2 materials science and engineering b: advanced functional solid-state materials,1 materials science and engineering r: reports,2 materials science and technology,1 materials science forum,1 materials science in additive manufacturing,1 materials science in semiconductor processing,1 materials science poland,1 materials science: medziagotyra,1 materials sciences and applications,-1 materials technology,1 materials testing: materials and components technology and application,1 materials today,3 materials today : proceedings,1 materials today advances,1 materials today bio,1 materials today chemistry,1 materials today communications,1 materials today electronics,1 materials today energy,1 materials today nano,1 materials today physics,1 materials today sustainability,1 materials transactions,1 materials world,1 materialwissenschaft und werkstofftechnik,1 materialy archeologiczne,1 materiały ceramiczne,-1 maternal and child health journal,1 maternal and child nutrition,1 matfyzpress,-1 mathematica aeterna,-1 mathematica balkanica,1 mathematica bohemica,1 mathematica pannonica,1 mathematica scandinavica,2 mathematica slovaca,1 mathematical and computational applications,-1 mathematical and computational forestry and natural resource sciences,1 mathematical and computer modelling,1 mathematical and computer modelling of dynamical systems,1 mathematical and software engineering,-1 mathematical association of america,1 mathematical biosciences,1 mathematical biosciences and engineering,1 mathematical communications,1 mathematical control and related fields,1 mathematical finance,2 mathematical geosciences,1 mathematical inequalities and applications,1 mathematical intelligencer,1 mathematical inverse problems,-1 mathematical logic quarterly,1 mathematical medicine and biology: a journal of the ima,1 mathematical methods in the applied sciences,1 mathematical methods of operations research,1 mathematical methods of statistics,1 mathematical modelling and analysis,1 mathematical modelling of natural phenomena,1 mathematical modelling of weld phenomena,-1 mathematical models and computer simulations,1 mathematical models and methods in applied sciences,2 mathematical models in engineering,1 mathematical notes,1 mathematical physics analysis and geometry,1 mathematical physics electronic journal,1 mathematical population studies,1 mathematical proceedings of the cambridge philosophical society,2 mathematical proceedings of the royal irish academy,1 mathematical programming,3 mathematical programming computation.,1 mathematical reports,-1 mathematical reports of the academy of science,1 mathematical research letters,2 mathematical sciences letters,-1 mathematical social sciences,1 mathematical statistics and learning,1 mathematical structures in computer science,1 mathematical thinking and learning,2 mathematics,-1 mathematics and computer education,1 mathematics and computers in science and engineering series,-1 mathematics and computers in simulation,1 mathematics and financial economics,1 mathematics and mechanics of complex systems,1 mathematics and mechanics of solids,1 mathematics and statistics,-1 mathematics education research journal,1 mathematics education review,1 mathematics for applications,-1 mathematics in computer science,1 mathematics in engineering,1 "mathematics in engineering, science and aerospace",1 mathematics in industry,1 mathematics interdisciplinary research,-1 mathematics magazine,1 mathematics of computation,3 mathematics of control signals and systems,1 mathematics of operations research,3 mathematics student,-1 mathematik lehren,1 mathematika,1 mathematische annalen,3 mathematische nachrichten,1 mathematische semesterberichte,1 mathematische zeitschrift,2 mathsport international,-1 matkailualan tutkimus- ja koulutusinstituutti,-1 matkailututkimus,1 matrix,-1 matrix biology,2 matrix biology plus,1 matter,1 matter : international journal of science and technology,-1 matter and radiation at extremes,1 mattering press,-1 matters,-1 mattes verlag,1 maturitas,1 matériaux & techniques,-1 maunulan sanomat,-1 mausam,1 mauss international,-1 max niemeyer,2 max planck commentaries on world trade law,1 max planck encyclopedia of public international law,1 max planck yearbook of united nations law,1 max weber studies,1 max-lab,-1 max-planck-gesellschaft zur förderung der wissenschaften e.v.. bibliothek,-1 max-planck-institut für europäische rechtsgeschichte,-1 mayfly,-1 mayo clinic proceedings,2 mayo clinic proceedings : digital health,1 mayéutica,-1 mazharov roman aleksandrovich,-1 mağallaẗ al-mağmaʿ,-1 mağallaẗ al-buḥūṯ al-taqniyyaẗ,-1 mağallaẗ al-kūfaẗ al-handasiyyaẗ,-1 mağallaẗ al-muqadimaẗ li-l-dirāsāt al-insāniyaẗ wa al-iğtimāՙiyaẗ,-1 mağallaẗ ğāmiʿaẗ al-zaytūnaẗ al-urdunniyyaẗ li-l-dirāsāt al-qānūniyyaẗ,-1 "mašinski fakultet, izdavačka delatnost",-1 maǧallaẗ al-abḥāṯ al-handasiyyaẗ,-1 maǧallaẗ al-kuwayt li-l-ʿulūm,1 maǧallaẗ al-ǧam'iyyaẗ al-ʿarabiyyaẗ lil milāḥaẗ,-1 mbio,2 mcc agentur für kommunikation,-1 mcdonald institute for archaeological research,1 mcfarland,1 mcgill international journal of sustainable development law and policy,1 mcgill law journal,1 mcgill-queen's university press,1 mcgraw-hill,1 mcn: the american journal of maternal-child nursing,1 mdim journal of management review and practice,-1 mdm policy & practice,1 mdpi,-1 mds,-1 mean streets,-1 meander,1 meandros medical and dental journal,-1 meanjin,-1 measurement,2 measurement : sensors,1 measurement and control,1 measurement and evaluation in counseling and development,1 measurement in physical education and exercise science,1 measurement instruments for the social sciences,1 measurement science and technology,2 measurement science review,1 measurement techniques,1 measurement: interdisciplinary research and perspectives,1 measuring behavior,-1 measuring business excellence,1 meat and muscle biology,1 meat science,2 meccanica,1 mechademia,-1 mechanical engineering,1 mechanical engineering institute,-1 mechanical engineering research,-1 mechanical sciences,1 mechanical systems and signal processing,3 mechanics & industry,1 mechanics based design of structures and machines,1 mechanics of advanced materials and structures,1 mechanics of composite materials,1 mechanics of materials,2 mechanics of solids,1 mechanics of time-dependent materials,1 mechanics research communications,1 "mechanics, materials science & engineering",-1 mechanik,-1 mechanika,-1 mechanika,1 mechanism and machine theory,2 mechanisms and machine science,1 mechanisms of ageing and development,1 mechatronic systems and control,-1 mechatronica & machinebouw,-1 mechatronics,2 mechatronics forum international conference,-1 mecánica computacional,-1 med,2 med andra ord,-1 meddelanden : kyrkohistoriska arkivet vid åbo akademi,-1 meddelanden : åbo akademi litteraturvetenskapliga institutionen,-1 meddelanden från sjöhistoriska institutet vid åbo akademi,1 meddelanden från svenska handelshögskolan,-1 meddelelser fra ny carlsberg glyptotek,1 "meddelelser om groenland, man and society",1 meddelelser om konservering,1 medecine et chirurgie du pied,1 medecine et droit,1 medecine therapeutique pediatrie,1 meded publish,-1 mededelingen van het cyriel buysse genootschap,1 mededelingen vanwege het spinozahuis,1 medi@lmanah,1 medi@ções,1 media and communication,1 media and intercultural communication : a multidisciplinary journal,1 media asia,1 media culture and society,3 media development,1 media education,1 media education research journal,1 media fields journal,-1 media history,2 media history monographs,1 media industries,1 media international australia,1 media ja viestintä,2 media practice and education,1 media psychology,2 media theory,1 media transformations,1 "media, war and conflict",1 media-xolding yakutiya,-1 mediaevalia,1 mediaevalia historica bohemica,1 mediaevalia: textos e estudos,1 mediaevistik: internationale zeitschrift fur interdisziplinare mittelalterforschung,1 mediakasvatuskeskus metka,-1 mediakasvatusseura,-1 mediakasvatusseuran julkaisuja,-1 medialingvistika,1 medialni studia,1 mediamir,-1 mediamuseo rupriikin julkaisuja,-1 mediapinta,-1 mediapolis,-1 mediaskop,1 mediataito,-1 mediations,1 mediatization studies,1 mediators of inflammation,1 mediaxxi,-1 medical & clinical case reports journal,-1 medical and biological engineering and computing,1 medical and veterinary entomology,1 medical anthropology,3 medical anthropology quarterly,2 medical cannabis and cannabinoids,-1 medical care,2 medical care research and review,1 medical clinics of north america,2 medical decision making,3 medical devices,1 medical dosimetry,1 medical education,3 medical education online: an electronic journal,1 medical engineering and physics,1 medical future verlag,-1 medical history,2 medical humanities,1 medical hypotheses,1 medical image analysis,3 medical informatics europe,1 medical journal of australia,1 medical journal of the islamic republic of iran,-1 medical laser application,1 medical law international,2 medical law review,2 medical letter on drugs and therapeutics,1 medical microbiology and immunology,1 medical molecular morphology,1 medical mycology,1 medical mycology case reports,-1 medical oncology,1 medical physics,1 medical physics in the baltic states,-1 medical physics international,-1 medical principles and practice,1 medical problems of performing artists,1 medical research archives,-1 medical science and discovery,-1 medical science educator,1 medical science monitor,1 medical sciences,-1 medical sciences forum,-1 medical teacher,1 medical technologies journal,-1 medical writing,-1 medicc review,1 medicina,-1 medicina clinica,1 medicina del lavoro,1 medicina dello sport,1 medicina intensiva,1 medicina nei secoli,1 medicina oral patologia oral y cirugia bucal,1 medicina veterinaria: recife,1 medicina: buenos aires,1 medicinal chemistry,1 medicinal chemistry research,1 medicinal research reviews,2 medicine,1 medicine and clinical science,-1 medicine and law,-1 medicine and science in sports and exercise,3 medicine anthropology theory,1 medicine health care and philosophy,1 medicine in drug discovery,1 medicine research,-1 medicine science and the law,1 "medicine, conflict, and survival",1 medicines,-1 medicinski arhiv,-1 medicinski glasnik,1 medico e bambino,-1 medicographia,-1 mediehistorisk tidsskrift,1 mediekultur,1 medien & altern,-1 medien journal,1 medien und kommunikationswissenschaft,1 medien und zeit,-1 medieval and early modern science,1 medieval and renaissance drama in england,1 medieval archaeology,2 medieval ceramics: journal of the medieval pottery research group,-1 medieval clothing and textiles,1 medieval encounters,1 medieval english theatre,1 medieval feminist forum,1 medieval history journal,1 medieval institute publications,1 medieval low countries : an annual review,1 medieval perspectives,1 medieval philosophy and theology,1 medieval prosopography: history and collective biography,1 medieval scandinavia,1 medieval sermon studies,1 medieval studies,1 medieval worlds,1 medievales,1 medievalia,1 medievalia et humanistica,2 medievalismo,1 medijska istraživanja,1 medijske studije,1 medioevo,1 medioevo e rinascimento,1 medioevo greco,1 medioevo romanzo,1 meditari accountancy research,1 mediterranea: ricerche storiche,1 mediterranean archaeology,1 mediterranean archaeology & archaeometry,1 mediterranean chronicle,1 mediterranean conference on embedded computing,1 mediterranean conference on information systems,1 mediterranean historical review,2 mediterranean journal of chemistry,-1 mediterranean journal of mathematics,1 mediterranean journal of social sciences,-1 mediterranean language review,1 mediterranean marine science,1 mediterranean politics,1 mediterranean quarterly,1 mediterranean studies,1 "mediterraneo antico: economie, societa, culture",1 medium aevum,1 medium aevum quotidianum,1 mediuutiset,-1 "medizin, gesellschaft und geschichte",1 medizinethnologie,-1 medizinhistorisches journal,1 medizinische genetik,-1 medpharm networks,1 medströms bokförlag,-1 medusa,1 medusa-software,-1 medusa: svensk tidsskrift for antiken,1 medycyna nowozytna: studia nad historia medycyny,1 medycyna ogólna i nauki o zdrowiu,-1 medycyna pracy,1 medycyna weterynaryjna,1 meeting abstracts,-1 meeting of the minds journal,-1 mefisto,1 mehiläinen,-1 mehmet akif ezan,-1 mehran university research journal of engineering and technology,-1 mehrwertsteuerrecht,-1 meidän apteekki,-1 meidän suomi,-1 meidän talo,-1 meie kirik,-1 meie maa,-1 meiner verlag,1 meitian dizhi yu kantan,-1 melanges de l'ecole francaise de rome: italie et mediterranee,1 melanges de la casa de velazquez,1 melanges de linstitut dominicain detudes orientales du caire,1 melanoma research,1 melbourne journal of international law,1 melbourne university law review,1 melus,2 membrana,1 membrane technology,1 membrane water treatment,1 membranes,-1 memetic computing,1 "memini, travaux et documents",-1 memo,-1 memoire de la societe eduenne,1 memoires de lacademie des inscriptions et belles lettres,1 memoires du museum national dhistoire naturelle,1 memoirs of the american academy in rome,1 memoirs of the american mathematical society,3 memoranda societatis pro fauna et flora fennica,1 memorandum,-1 memoria,-1 memoria e ricerca: rivista di storia contemporanea,1 memorial university of newfoundland,-1 memoriamedia,1 memorias ciie,-1 memorias del instituto de investigaciones en ciencias de la salud,-1 memorias do instituto oswaldo cruz,-1 memorie della societa astronomica italiana,-1 memorie domenicane,-1 memory,1 memory and cognition,2 memory studies,3 "memory, mind & media",1 memristor and memristive systems symposium,-1 men and masculinities,2 menadžment u hotelijerstvu i turizmu,1 mendel university in brno,-1 mendeleev communications,1 mene & tiedä,-1 mennonite quarterly review,1 meno istorija ir kritika,1 menopause international,1 menopause: the journal of the north american menopause society,1 mensalainen,-1 mental health & prevention,1 mental health and physical activity,1 mental health in family medicine,-1 mental health practice,-1 mental health review journal,1 "mental health, religion and culture",1 mental illness,1 mental lexicon,1 mentis verlag,1 mentoring and tutoring,1 menu,-1 mercator european research centre,-1 mercatorfonds,-1 mercer university press,1 mercurius,-1 mercury series,1 merenkulkualan koulutus- ja tutkimuskeskuksen julkaisuja,-1 "meridians: feminism, race, transnationalism",1 merikarhu,-1 merikarvia-lehti,-1 merits,-1 merkur: deutsche zeitschrift fur europaisches denken,-1 merrill-palmer quarterly,1 merve verlag,1 mesenaatti,-1 meson press,1 mesoporous biomaterials,-1 mesopotamia,1 meta,3 "meta : research in hermeneutics, phenomenology and practical philosophy",1 meta h,1 meta proceedings,-1 meta-psychology,1 meta-radiology,1 meta4books vzw,-1 metabarcoding and metagenomics,1 metabolic brain disease,1 metabolic engineering,2 metabolic engineering communications,1 metabolic syndrome and related disorders,1 metabolism open,1 metabolism: clinical and experimental,2 metabolites,-1 metabolomics,1 metabolomics: open access,-1 metacognition and learning,2 metagis-systems,-1 metaixmio,-1 metal finishing,1 metal ions in life sciences,1 metal music studies,1 metal powder industries federation,-1 metal powder report,1 metal science and heat treatment,1 metall,1 metallitekniikka,-1 metallofizika i noveishie tekhnologii,1 "metallography, microstructure and analysis",1 metallomics,1 metallovedenie i termicheskaya obrabotka metallov,-1 metallurgical and materials transactions a: physical metallurgy and materials science,1 metallurgical and materials transactions b : process metallurgy and materials processing science,2 metallurgical and mining industry,-1 metallurgical research & technology,1 metallurgist,1 metals,-1 metals and materials international,1 metalurgia international,1 metalurgija,1 metamaterials,1 metamorphosis,-1 metanoia instituutti,-1 metaphilosophy,2 metaphor and symbol,3 metaphor and the social world,1 metaphorik.de,1 metaphysica,1 metaphysics,1 metascience,1 metatheoria,1 metaverse,-1 meteli,-1 meteoritics and planetary science,1 meteorological applications,1 meteorologische zeitschrift,1 meteorology,-1 meteorology and atmospheric physics,1 methane,-1 methis: studia humaniora estonica,1 method and theory in the study of religion,3 "methoden, daten, analysen",1 methodological innovations,1 methodology and computing in applied probability,1 methodology: european journal of research methods for the behavioral and social sciences,1 methods,1 methods and applications in fluorescence,1 methods and applications of analysis,1 methods and findings in experimental and clinical pharmacology,1 methods and protocols,1 methods in cell biology,1 methods in ecology and evolution,3 methods in enzymology,1 methods in microbiology,1 methods in molecular biology,1 methods in psychology,1 methods of biochemical analysis,1 methods of functional analysis and topology,1 methods of information in medicine,3 methodsx,-1 methuen,1 metis,1 metis presses,-1 metodo,2 metodologia,1 metrika,1 metroeconomica: international review of economics,1 metrologia,2 metrology,1 metron,1 metropol verlag,1 metropolia ammattikorkeakoulu,-1 metropolia ammattikorkeakoulun julkaisuja,-1 metropolia ammattikorkeakoulun julkaisuja : taito-sarja,-1 metropolis,-1 metropolis m,-1 metropolitan museum journal,-1 metropolitan museum of art bulletin,-1 metrospektiivi pop,-1 metrospektiivi pro,-1 metroverlag,-1 metsä,-1 metsä groupin viesti,-1 metsäalan ammattilehti,-1 metsähallituksen luonnonsuojelujulkaisuja,-1 metsähallituksen luonnonsuojelujulkaisuja : sarja a,-1 metsähallitus,-1 metsäkustannus,-1 metsälehti,-1 metsälehti makasiini,-1 metsän henki,-1 metsänomistajat keski-suomi,-1 metsäntutkimuslaitos,-1 metsäpäijänne,-1 metsäsanoma,-1 metsästys ja kalastus,-1 metsästäjä,-1 metsätehon raportti,-1 metsätieteen aikakauskirja,1 metsään,-1 metu journal of the faculty of architecture,1 mevlana international journal of education,-1 mexican international conference on artificial intelligence,-1 mexican studies-estudios mexicanos,1 mexicon,-1 meyer & meyer sport,1 mezhdunarodnoe publichnoe i chastnoe pravo,-1 mezinárodní a srovnávací právní revue,1 mezinárodní vztahy,1 meän tornionlaakso,-1 meždunarodnaâ èkonomika,-1 mfs: modern fiction studies,3 mfåa,-1 mi?dzy orygina?em a przek?adem,1 mi`gug`hag nonjib,-1 mibes transactions,-1 miccai workshop on mesh processing in medical image analysis,-1 michael imhof verlag,-1 michigan journal of gender and law,1 michigan journal of international law,2 michigan law review,2 michigan mathematical journal,1 michigan publishing,1 michigan quarterly review,1 michigan state university press,1 michigan telecommunications and technology law review,1 micro,-1 micro & macro marketing,-1 micro and nano engineering,1 micro and nano letters,1 micro and nanosystems,1 micro total analysis systems,-1 "micro, macro & mezzo geoinformation",-1 microbes and environments,1 microbes and infection,1 microbial biotechnology,1 microbial cell factories,1 microbial drug resistance,1 microbial ecology,2 microbial genomics,1 microbial pathogenesis,1 microbiological research,1 microbiologist,-1 microbiology,1 microbiology and immunology,1 microbiology and molecular biology reviews,2 microbiology australia,-1 microbiology insights,-1 microbiology research,-1 microbiology resource announcements,-1 microbiology spectrum,2 microbiology today,-1 microbiology-sgm,1 microbiologyopen,1 microbiome,3 microbiome research reports,-1 microchemical journal,1 microchimica acta,1 microcirculation,1 microelectronic engineering,1 microelectronics international,1 microelectronics journal,1 microelectronics reliability,1 microfluidics and nanofluidics,1 microgravity science and technology,1 microlife,1 micrologus,1 micromachines,-1 micromechanics and microsystems europe conference,-1 micron,1 microoptics conference,-1 microorganisms,-1 micropaleontology,1 microplastics,-1 microplastics and nanoplastics,1 microporous and mesoporous materials,2 microprocessors and microsystems,1 micropublication biology,-1 microrna,1 microscopy,1 microscopy and microanalysis,1 microscopy research and technique,1 microstructures,1 microsurgery,1 microsystem technologies: micro-and nanosystems-information storage and processing systems,1 microsystems & nanoengineering,2 microvascular research,1 microwave and optical technology letters,1 microwave journal,1 microwave technologies and techniques workshop,-1 microwaves & rf,-1 middle east - topics & arguments,1 middle east african journal of ophthalmology,1 middle east critique,1 middle east journal,2 middle east journal of cancer,-1 middle east journal of culture and communication,1 middle east law and governance,1 middle east policy,1 middle east report,1 middle eastern literatures,1 middle eastern studies,1 middle ground journal,-1 middle-east journal of scientific research,-1 middlesex university,-1 middlesex university press,1 midland history,2 midwest quarterly: a journal of contemporary thought,1 midwest studies in philosophy,2 midwifery,2 mieroszewski centre,-1 migration,-1 migration & diversity,1 migration and development,1 migration and society,1 migration information source,-1 migration letters,-1 migration policy practice,-1 migration studies,1 migration: a european journal of international migration and ethnic relation,1 migrations société,-1 miikkulainen,-1 miilu,-1 miina sillanpään säätiö,-1 miina sillanpään säätiön julkaisusarja,-1 mikael : kääntämisen ja tulkkauksen tutkimuksen aikakauslehti,1 mikael agricola -seura,-1 mikkelin ammattikorkeakoulu,-1 mikkelin valokuvakeskus,-1 mikologiya i fitopatologiya,1 mikrobiyoloji ve enfeksiyon hastalıkları dergisi,-1 mikrotalasna revija,1 milan journal of mathematics,1 milan law review,1 milbank quarterly,3 miles-verlag,-1 militargeschichtliche zeitschrift,1 military balance,1 military law review,1 military medical research,1 military medicine,1 military operations research,1 military psychology,1 militärhistorisk tidskrift,1 millenium,-1 millennium film journal,1 millennium: journal of international studies,2 milli folklor,1 milli mála,1 milli savunma üniversitesi rektörlüğü,-1 milton quarterly,2 milton studies,1 mimarist,-1 mimbar ilmu,-1 mimesis international,-1 mimesis journal,1 min-ad: israel studies in musicology online,1 mina fagrapport,-1 minard,1 mind,3 mind and language,3 mind and matter,1 mind and society,1 mind brain and education,-1 "mind, culture, and activity",2 mindbrained bulletin,-1 mindfulness,2 minds and machines,1 mine water and the environment,1 mineral economics,1 mineral processing and extractive metallurgy,1 mineral processing and extractive metallurgy review,1 mineralia,-1 mineralium deposita,1 mineralogical magazine,1 mineralogical society of america,1 mineralogy and petrology,1 minerals,-1 minerals and metallurgical processing,1 minerals engineering,3 "minerals, metals & materials society",1 minerva,-1 minerva,3 minerva anestesiologica,1 minerva biotecnologica,1 minerva cardiology and angiology,1 minerva endocrinology,1 minerva gastroenterologica e dietologica,-1 minerva ginecologica,1 minerva medica,1 minerva ortopedica e traumatologica,1 minerva pediatrica,1 minerva psichiatrica,-1 minerva shobo,1 minerva surgery,1 minerva urologica e nefrologica,1 minerva: an internet journal of philosophy,1 minería,-1 mini-reviews in medicinal chemistry,1 mini: reviews in organic chemistry,1 minima epigraphica et papyrologica,1 minimally invasive neurosurgery,1 minimally invasive therapy and allied technologies,1 mining engineering,-1 mining report,-1 mining science,1 "mining, metallurgy & exploration",1 ministerio de educación de la provincia de santa fe,-1 "ministerio de educación, cultura y deporte. área de cultura",-1 ministerstwo spraw zagranicznych,-1 minnesota historical society press,1 minnesota journal of international law,1 minnesota law review,1 minnesota review,1 minnesota symposia on child psychology,1 minorités linguistiques et société,1 minos,1 mintis,-1 minzu yuwen,1 mir i politika,1 mir rossii,2 mir russkogo slova,-1 mir russkogo slova,1 mirator,1 mires and peat,1 mirovaâ èkonomika i meždunarodnye otnošeniâ,1 mirovni institut,-1 mis quarterly,3 mis quarterly executive,2 miscelanea geographica,-1 miscelanea: a journal of english and american studies,1 miscellanea di storia delle esplorazioni,-1 miscellanea francescana: rivista trimestrale di scienze teologiche e di studi francescani,1 mise au point,1 mishkan,-1 mision juridica,1 misjonshøgskolens forlag,1 miskolc mathematical notes,1 missiology: an international review,1 mission studies,2 missionalia,1 mississippi quarterly,1 missouri botanical garden press,-1 missouri journal of mathematical sciences,1 mistra urban futures,-1 mit electronic journal for middle east studies,1 mit press,3 mit sloan management review,2 miteinander,-1 mitigation and adaptation strategies for global change,1 mitkufat haeven: journal of the israel prehistoric society,1 mitmekeelne haridus,-1 mitochondrial dna : part a,-1 mitochondrial dna part b : resources,-1 mitochondrion,1 mittari,-1 "mitteilungen der berliner gesellschaft fur anthropologie, ethnologie und urgeschichte",1 mitteilungen der deutschen gesellschaft für allgemeine und angewandte entomologie,-1 mitteilungen der osterreichischen geographischen gesellschaft,1 mitteilungen der paul-sacher-stiftung,-1 mitteilungen der schweizerischen entomologischen gesellschaft,1 mitteilungen des deutschen archaologischen instituts : athenische abteilung,2 mitteilungen des deutschen archaologischen instituts: abteilung kairo,1 mitteilungen des deutschen archaologischen instituts: abteilung madrid,1 mitteilungen des deutschen archaologischen instituts: romische abteilung,2 mitteilungen des instituts fur osterreichische geschichtsforschung,1 mitteilungen des kunsthistorischen institutes in florenz,2 mitteilungen des regensburger verbunds für werbeforschung,-1 mitteilungen klosterneuburg,1 mitteilungen zur christlichen archaologie,1 mitteilungen zur kirchlichen zeitgeschichte,-1 mittellateinische studien und texte,2 mittellateinisches jahrbuch,1 mittuniversitetet,-1 mitä-missä-milloin,-1 mizan law review,1 międzynarodowego centrum kultury,-1 miškininkystė ir kraštotvarka,-1 mk nambyar saarclaw review,-1 mla news,1 mlife,-1 mljekarstvo,1 mln,2 "mltj : muscles, ligaments and tendons journal",-1 mmm:n julkaisuja,-1 mnemosyne,2 "mnemosyne, supplements",2 mnimon,1 moara,1 mobile computing and networking,3 mobile culture studies. the journal,1 mobile dna,1 mobile genetic elements,1 mobile media and communication,2 mobile networks and applications,1 mobilities,2 mobility humanities,1 mobility in history,1 mobilization,2 moda documenta,-1 modapalavra e-periódico,1 model assisted statistics and applications,1 modeles linguistiques,1 modeling earth systems and environment,1 modeling identification and control,1 modelling,-1 modelling & simulation society of australia & new zealand,-1 modelling and simulation in engineering,1 modelling and simulation in materials science and engineering,1 "modelling, identification and control",-1 "modelling, measurement & control. c, energetics, chemistry, earth, environmental & biomedical problems",-1 modern africa,1 modern american history,1 modern and contemporary france,2 modern asian studies,2 modern behavioral science,-1 modern chemistry,-1 modern china,2 modern chinese literature and culture,1 modern concepts & developments in agronomy,-1 modern drama,2 modern economy,-1 modern english teacher,1 modern environmental science and engineering,-1 modern greek studies,1 modern humanities research association,1 modern intellectual history,2 modern italy,1 modern judaism,1 modern language association of america,1 modern language journal,3 modern language quarterly,3 modern language review,1 modern language studies,1 modern law science,1 modern mechanical engineering,-1 modern nyelvoktatás,1 modern pathology,2 modern philology,2 modern physics letters a,1 modern physics letters b,1 modern rheumatology,1 modern stochastics : theory and applications,1 modern theology,3 modern trends in psychiatry,-1 moderna språk,1 moderna: semestrale di teoria e critica della letteratura,1 moderne sprachen,1 moderne stadtgeschichte,1 modernism-modernity,2 modernist cultures,1 modernités russes,-1 "modernizaciâ, innovaciâ, razvitie",-1 modus 3d journal,-1 moenia: revista lucense de lingustica and literatura,1 mohr siebeck,2 moj orthopedics & rheumatology,-1 mokslinės leidybos deimantas,-1 mokslo taikomieji tyrimai lietuvos kolegijose,-1 mokuzai gakkaishi,1 molbank,-1 molecular & cellular oncology,-1 molecular and biochemical parasitology,1 molecular and cellular biochemistry,1 molecular and cellular biology,2 molecular and cellular biomechanics,1 molecular and cellular endocrinology,1 molecular and cellular neuroscience,1 molecular and cellular probes,1 molecular and cellular proteomics,2 molecular and cellular therapies,1 molecular and cellular toxicology,1 molecular and clinical oncology,-1 molecular aspects of medicine,3 molecular autism,1 molecular biology,1 molecular biology and evolution,3 molecular biology of the cell,2 molecular biology reports,1 molecular biomedicine,1 molecular biosystems,1 molecular biotechnology,1 molecular brain,1 molecular breeding,1 molecular cancer,3 molecular cancer research,1 molecular cancer therapeutics,1 molecular carcinogenesis,1 molecular catalysis,1 molecular cell,3 molecular crystals and liquid crystals,1 molecular cytogenetics,1 molecular diagnosis and therapy,1 molecular diversity,1 molecular ecology,3 molecular ecology resources,2 molecular genetics & genomic medicine,1 molecular genetics and genomics,1 molecular genetics and metabolism,1 molecular genetics and metabolism reports,-1 molecular genetics microbiology and virology,1 molecular human reproduction,1 molecular imaging,1 molecular imaging and biology,1 molecular immunology,1 molecular informatics,1 molecular medicine,1 molecular medicine reports,1 molecular membrane biology,1 molecular metabolism,2 molecular microbiology,2 molecular neurobiology,1 molecular neurodegeneration,3 molecular nutrition and food research,3 molecular oncology,1 molecular oral microbiology,1 molecular pain,1 molecular pharmaceutics,2 molecular pharmacology,2 molecular phylogenetics and evolution,2 molecular physics,1 molecular plant,3 molecular plant pathology,1 molecular plant-microbe interactions,1 molecular psychiatry,3 molecular reproduction and development,1 molecular sieves: science and technology,1 molecular simulation,1 molecular syndromology,1 molecular systems biology,3 molecular therapy,3 molecular therapy : oncology,1 molecular therapy nucleic acids,1 molecular therapy. methods & clinical development,1 molecular vision,1 molecules,-1 molecules and cells,1 molin & sorgenfrei förlag,-1 mollusc world,-1 molluscan research,1 momentti,-1 monash bioethics review,1 monash university law review,1 monash university publishing,1 monatshefte fur chemie,1 monatshefte fur deutschsprachige literatur und kultur,1 monatshefte fur mathematik,1 monatsschrift fur kriminologie und strafrechtsreform,1 monatsschrift kinderheilkunde,1 monde(s),1 mondes en developpement,1 mondi migranti,1 mondial,-1 monetary and economic research center,-1 money matters,-1 mongolian academy of sciences : the institute of language and literature,-1 mongolian studies,1 mongolica,-1 monikkoperheet,-1 monist,2 monitoring obshestvennogo mnenija : ekonomicheskie i socialnye peremeny,1 monograf,1 monographs of the archaeological society of finland,1 monographs of the boreal environment research,-1 monographs of the society for research in child development,1 mons days of theoretical computer science,-1 montage av: zeitschift fuer theorie und geschichte audiovisueller kommunikation,1 montana math enthusiast,1 montana-the magazine of western history,-1 monte carlo methods and applications,1 montenegrin journal for social sciences,1 montenegrin journal of sports science and medicine,1 montenegrin sports academy,1 monthly labor review,1 monthly notices of the royal astronomical society,2 monthly notices of the royal astronomical society: letters,3 monthly review press,-1 monthly review: an independent socialist magazine,1 monthly weather review,1 monti: monographs in translation and interpretation,1 monumenta graeca et romana,1 monumenta nipponica,2 monumenta serica,1 monumental,1 monuments et mémoires de la fondation eugene piot,1 moottori,-1 moral philosophy and politics,1 moravian geographical reports,1 mordovskij gosudarstvenny`j universitet im. n.p.ogareva,-1 moreana,1 morfem,-1 morgan & claypool publishers,1 morgan kaufmann publishers,1 morgenbladet,-1 morlacchi editore,-1 morning watch,-1 moro,-1 moroccan journal of chemistry,-1 morphologie,-1 morphology,2 mortality,1 mosaic press,-1 mosaic: a journal for the interdisciplinary study of literature,3 mosaico produção editorial,-1 moscow mathematical journal,1 moscow state institute of international relations,-1 moscow university biological sciences bulletin,-1 moscow university physics bulletin,-1 moscow university press,-1 moskovskij pedagogicheskij gosudarstvenny`j universitet,-1 motiivi,-1 motilal banarsidass,-1 motivation and emotion,1 motivation science,1 motivational interviewing,1 motor control,1 motricite cerebrale: readaptation neurologie du developpement,1 motriz: revista de educacao fisica,1 mots: les langages du politique,1 motto books,-1 mountain research and development,1 mouseion,1 mousikos logos,-1 mousse publishing,-1 moussons,1 mouton de gruyter,2 mouvement social,2 movement and sport sciences,1 movement disorders,3 movement disorders clinical practice,1 movement ecology,1 movie,1 movimento,1 moving image,1 moving the social,-1 movoznavstvo,-1 moyen age,1 moyen francais,1 mrktng,-1 mrs advances,1 mrs bulletin,2 mrs communications,1 mrs energy & sustainability,1 mrs internet journal of nitride semiconductor research,1 msor connections,1 msphere,1 msystems,1 mt metsä,-1 mta matematikai kutatóintézet,-1 mtm journal,1 mucai gongye,-1 mucchi editore,1 mucosal immunology,1 mudīriyyat va barnāmah/rīzī dar niẓām/hā-yi āmūzishī,-1 mudīriyyat-i madrisah,-1 muinaistutkija,1 muinasaja teadus,1 muisti,-1 multi-science publishing,1 multi: the journal of plurality and diversity in design,1 multibody system dynamics,2 multicultural education review,1 multicultural perspectives,1 multicultural shakespeare,1 multidimensional systems and signal processing,1 "multidisciplinary journal for education, social and technological sciences",-1 multidisciplinary respiratory medicine,1 multidiscipline modeling in materials and structures,1 multiethnica,1 multifunctional materials,1 multilingua: journal of cross-cultural and interlanguage communication,2 multilingual,-1 multilingual margins,1 multilingual matters,2 multimedia systems,1 multimedia tools and applications,1 multimodal communication,1 multimodal technologies and interaction,1 multimodal transportation,1 multimodality & society,-1 multinational business review,1 multinational finance journal,1 multiphase science and technology,1 multiple sclerosis,2 multiple sclerosis and demyelinating disorders,1 multiple sclerosis and related disorders,1 "multiple sclerosis journal, experimental, translational and clinical",1 multiple voices for ethnically diverse exceptional learners,1 multiscale modeling and simulation,1 multisensory research,1 multitudes,1 multivariate behavioral research,1 multivers,1 multunk,-1 mun oulu,-1 munchener jahrbuch der bildenden kunst,1 munchener studien zur sprachwissenschaft,1 munchener theologische zeitschrift,1 mundo eslavo,1 mundorama,-1 munhwa gwan'gwang yeon'gu,-1 munhwayesulgyeong-yeonghagyeon-gu,-1 munich social science review,-1 municipalnoe obrazovanie : innovacii i èksperiment,-1 município santo tirso,-1 munksgaard,1 munshiram manoharlal,1 munster: zeitschrift fur christliche kunst und kunstwissenschaft,1 munuaissairaanhoitaja-päivät,-1 muotialan asuin- ja toimintakeskus,-1 muotimaailma,-1 muova design research,-1 muova education,-1 muovaaja,-1 muovi,-1 muqarnas,1 muravei publishers,1 murmansk state humanities university,1 murmursunds allehanda,-1 muscle and nerve,1 musculoskeletal care,1 musculoskeletal science & practice,1 musculoskeletal surgery,-1 museo,-1 museokello,-1 museologia,-1 museologia scientifica: rivista dell a.n.m.s.,1 museologian julkaisuja,-1 museon,1 museopro,-1 museovirasto,-1 museoviraston julkaisuja,-1 museu marítim de barcelona,-1 museum and society,2 museum anthropology,1 museum anthropology review,1 museum für völkerkunde hamburg,-1 museum helveticum,2 museum history journal,1 museum international,2 museum management and curatorship,2 "museum of evolution, uppsala",-1 museum of modern art,1 museum tusculanum,1 museums & the web,-1 museums and social issues,1 museumsetc,-1 music & science,1 music + practice,1 music analysis,3 music and anthropology: journal of mediterranean musical anthropology,1 music and arts in action,1 music and letters,2 music and medicine,1 music and politics,1 music and the moving image,1 music business journal,-1 music education research,3 music in art,1 music perception,2 music performance research,1 music reference services quarterly,1 music research annual,1 music technology group,-1 music theory and analysis,1 music theory online,1 music theory spectrum,3 music therapy perspectives,2 music therapy today,1 "music, sound, and the moving image",-1 musica & figura,1 musica e storia,1 musica humana,1 musicae scientiae,3 musical quarterly,2 musicoguía magazine,-1 musicologica austriaca,1 musicologica slovaca,-1 musicology australia,1 musicology today,1 musicultures,1 musiikin suunta,-1 "musiikin, kulttuurin ja taiteen edistämisyhdistys ry",-1 musiikki,2 musiikkiarkiston kannatusyhdistys,-1 musiikkikasvatus,1 musiikkiterapia,-1 musik in bayern,1 musik und asthetik,1 musik und kirche,-1 musikeon books,-1 musikforschung,2 musikk og tradisjon,1 musikkterapi,1 musikpedagogik,1 musikpsychologie,1 musiktheorie,1 musiktherapeutische umschau,1 musil-forum: beitrage zur literatur der klassischen moderne,1 musings,-1 "musique, images, instruments",1 muslim education quarterly,-1 muslim minorities,1 muslim world,1 musta taide,-1 mustarinda,-1 mustasaari tiedottaa,-1 mustekala.info,-1 mustemaalari,-1 mutagenesis,1 mutation research,1 mutation research: fundamental and molecular mechanisms of mutagenesis,1 mutation research: genetic toxicology and environmental mutagenesis,1 mutation research: reviews in mutation research,1 muttersprache,1 muusikko,-1 muutos,-1 muzealnictwo,-1 muzej antropologii i e`tnografii im. petra velikogo (kunstkamera) ran,1 muzeum narodowe w szczecinie,-1 muzeum sopotu,-1 muziki,1 muzikologija,-1 muzikoloski zbornik,1 muzyka: kwartalnik poswiecony historii i teorii muzyki,1 muṭāli̒āt-i barnāmah/rīzī-yi āmūzishī,-1 mycobiology,1 mycobiota,-1 mycokeys,1 mycologia,2 mycological progress,1 mycological research,1 mycology,-1 mycopathologia,1 mycorrhiza,1 mycoscience,1 mycoses,1 mycosphere,1 mycosystema,1 mycotaxon,1 mycotoxin research,1 myers education press,1 myndigheten för kulturanalys,-1 myntstudier,-1 myrmecological news,1 myrtia: revista de filologia clasica,1 myynti & markkinointi,-1 myötätuulta merimaskussa,-1 mzuni press,-1 mäetagused,-1 mälardalens högskola,-1 mäntykustannus,-1 mäyräkoiramme,-1 määräykset ja ohjeet,-1 mål + mæle,-1 médecine sciences,1 médica panamericana,-1 mélanges de l'ecole francaise de rome: antiquité,2 mélanges de l'ecole francaise de rome: moyen-age,1 mémoires de la société mathématique de france,1 mémoires de la société néophilologique,1 mìkrobìologìčnij žurnal,-1 mówią wieki,-1 møde om udforskningen af dansk sprog,-1 mùzeum,1 música hodie,1 mühendislik bilimleri ve tasarım dergisi,-1 müürileht,-1 mūzikas akadēmijas raksti,-1 n a b u: nouvelles assyriologiques breves et utilitaires,1 n-1 publications,-1 n-iussp,-1 n:paradoxa: international feminist art journal,1 naamkunde,1 nabi press,-1 nachrichten aus der chemie,-1 nachrichten der arl,-1 nacional`ny`j issledovatel`skij nizhegorodskij gosudarstvenny`j universitet,-1 nacrazvitie,-1 nacta journal,1 naea news,-1 nafems,-1 nagoya journal of medical science,-1 nagoya mathematical journal,1 naharaim,1 nai010 uitgevers/publishers,-1 nais,1 naisit publishers,-1 "nakanishi print co., ltd. shoukado shoten",-1 nakanishiya shuppan,-1 naklada jesenski i turk,1 nalans,1 namenkundliche informationen,1 names,2 namibia journal of social justice,-1 nammco scientific publications,1 nammo lapua oy,-1 nammo vihtavuori oy,-1 namn och bygd,1 namn og nemne: tidsskrift for norsk namnegransking,1 "nan nu: men, women and gender in early and imperial china",1 nanjing linye daxue xuebao,-1 nanjing theological review,-1 nanjing university press,-1 nankai business review international,1 nano,1 nano communication networks,1 nano energy,3 nano energy systems,-1 nano express,1 nano futures,1 nano hybrids and composites,-1 nano letters,3 nano research,2 nano research energy,1 nano select,1 nano today,3 nano-micro letters,2 nano-structures & nano-objects,1 nanoethics,1 nanofabrication,1 nanoimpact,1 nanomaterials,1 nanomedicine,1 nanomedicine: nanotechnology biology and medicine,2 nanophotonics,2 nanoscale,3 nanoscale advances,1 nanoscale and microscale thermophysical engineering,1 nanoscale horizons,1 "nanoscale systems : mathematical modeling, theory and applications",1 nanoscience and nanotechnology letters,-1 "nanosistemy : fizika, himia, matematika",1 nanotechnologies in russia,-1 nanotechnology,2 nanotechnology and precision engineering,1 nanotechnology for environmental engineering,1 nanotechnology reviews,1 "nanotechnology, science and applications",1 nanotheranostics,1 nanotoxicology,2 napakaira,-1 napis: tom poswiecony literaturze okolicznosciowej i uzytkowej,1 napkút kiadó,-1 nappi,-1 napvilág kiadó,-1 nar cancer,1 nar genomics and bioinformatics,1 narcea,-1 narcissus self publishing,-1 narodna umjetnost,1 narodowy instytut fryderyka chopina,-1 narr francke attempto verlag,1 narra j,-1 narratio,-1 narrative,2 narrative culture,2 narrative inquiry,2 narrative works,1 narva muuseum,-1 nasa/dod conference on evolvable hardware,1 nasa/esa conference on adaptive hardware and systems,-1 nasarre: revista aragonesa de musicologia,1 nase rec,1 nashboro press,1 nashim: a journal of jewish womens studies,1 nasjonalbiblioteket,-1 nasleđe,1 nassauische annalen,1 nassp bulletin,1 nathaniel hawthorne review,1 nation,1 nationaal informatiecentrum leermiddelen,-1 national academies press,1 national accounting review,1 national art education association,-1 national bank of poland working paper,-1 national center for radio and television studies,1 national central university,-1 national chengchi university,-1 national conference on information assurance,-1 national congress of bioengineering : proceedings,-1 national forensic journal,-1 national gallery technical bulletin,1 national identities,2 national institute economic review,1 national institute of adult continuing education,1 national institute of informatics,-1 national institute of information and communications technology,-1 national institute of technology sendai college,-1 national medical journal of india,1 national metallurgical academy of ukraine,-1 national science review,1 national tax journal,1 national technical university of athens,-1 national trust,1 national university of tucumán,-1 nationalism and ethnic politics,1 nationalities papers,1 nationalmuseets arbejdsmark,1 nationalmuseum,-1 nations and nationalism,3 native plants journal,-1 native studies review,-1 nato cooperative cyber defence centre of excellence,-1 nato science and technology organization (sto),-1 "nato science series: sub series i, life and behavioural sciences",1 natopoll,-1 natur och kultur,1 natur und landschaft,-1 natur und recht,1 natura,-1 natura optima dux foundation,-1 natural areas journal,1 natural computing,1 natural hazards,1 natural hazards and earth system sciences,1 natural hazards review,1 natural history,1 natural history sciences,-1 natural language and linguistic theory,3 natural language engineering,3 natural language processing journal,-1 natural language semantics,2 natural product communications,1 natural product reports,1 natural product research,1 natural resource modeling,1 natural resources,-1 natural resources forum,1 natural resources journal,1 natural resources research,1 natural science,-1 natural sciences,1 nature,3 nature aging,1 nature and culture,1 nature and resources,1 nature and science of sleep,1 nature astronomy,3 nature biomedical engineering,3 nature biotechnology,3 nature cancer,3 nature cardiovascular research,1 nature catalysis,2 nature cell biology,3 nature chemical biology,3 nature chemistry,3 nature cities,-1 nature climate change,3 nature communications,3 nature computational science,1 nature conservation,1 nature conservation research,-1 nature ecology & evolution,3 nature electronics,3 nature energy,3 nature food,3 nature genetics,3 nature geoscience,3 nature human behaviour,3 nature immunology,3 nature machine intelligence,2 nature materials,3 nature medicine,3 nature mental health,1 nature metabolism,2 nature methods,3 nature microbiology,3 nature nanotechnology,3 nature neuroscience,3 nature photonics,3 nature physics,3 nature plants,3 nature protocols,1 nature publishing group,-1 nature reviews : chemistry,2 nature reviews : clean technology,-1 nature reviews : disease primers,3 nature reviews : earth & environment,1 nature reviews : materials,1 nature reviews bioengineering,1 nature reviews cancer,2 nature reviews cardiology,2 nature reviews clinical oncology,2 nature reviews drug discovery,3 nature reviews electrical engineering,-1 nature reviews endocrinology,2 nature reviews gastroenterology and hepatology,2 nature reviews genetics,2 nature reviews immunology,3 nature reviews methods primers,1 nature reviews microbiology,3 nature reviews molecular cell biology,2 nature reviews nephrology,2 nature reviews neurology,3 nature reviews neuroscience,3 nature reviews physics,2 nature reviews psychology,1 nature reviews rheumatology,2 nature reviews urology,2 nature structural and molecular biology,3 nature sustainability,3 nature synthesis,1 nature water,1 nature-based solutions,1 naturen,-1 natures sciences societes,1 natureza and conservacao,1 nau?no-tehni?eskij vestnik povolž?â,-1 nauchno-innovacionny`j centr,1 nauchno-izdatel`skij centr infra-m,-1 nauchno-izdatelskij centr indrik,-1 nauchno-prakticheskaja konferencii privolzhsky federalnogo okruga s mezhdunarodnyj uchastiem,-1 nauchnyj zhurnal niu itmo : seria ekonomika i ekologicheskij menedzhment,-1 naukovij vìsnik nacìonalʹnogo gìrničogo unìversitetu,1 naunyn-schmiedebergs archives of pharmacology,1 nauta,-1 nautic,-1 nautica fennica,1 nautilus,1 naučno-tehničeskie vedomosti sankt-peterburgskogo gosudarstvennogo politehničeskogo universiteta,-1 "naučno-tehničeskij vestnik informacionnyh tehnologij, mehaniki i optiki",-1 naučnoe obozrenie : teoriâ i praktika,-1 naučnyj rezulʹtat : seriâ sociologiâ i upravlenie,1 naučnyj žurnal kubanskogo gosudarstvennogo agrarnogo universiteta,-1 naval engineers journal,1 naval institute press,1 naval research logistics,1 naval war college review,-1 navigation,2 navigationen,-1 navigator magazine,-1 nawa,-1 nazariyat islam felsefe bilim tarihi araştırmaları dergisi,1 naša žiznʹ,-1 nber macroeconomics annual,1 ncar technical note,-1 nceub,-1 ncge news,-1 ncsl international measure,-1 ndc policy brief,-1 nds,-1 ndt,-1 ndt & e international,2 nea ygeia,-1 nealt monograph series,-1 nealt proceedings series,1 near eastern archaeology,1 near surface geophysics,1 nebraska symposium on motivation,1 nebrija procedia,-1 necatibey eğitim fakültesi elektronik fen ve matematik eğitimi dergisi,-1 necsus,1 ned geref teologiese tydskrif,1 nederlands instituut voor het nabije oosten,1 nederlands juristenblad,-1 nederlands kunsthistorisch jaarboek,1 nederlands theologisch tijdschrift,1 nederlands tijdschrift voor geneeskunde,1 nederlands tijdschrift voor tandheelkunde,1 nederlandse letterkunde,1 nederlandse taalkunde,1 neerlandistiek.nl,1 nefrologia,1 neftyanoe khozyaistvo - oil industry,1 negah-e moaser,-1 negotiation journal,1 nejm ai,-1 nejm evidence,1 nelinijni kolivannâ,1 nelumbo : bulletin of the botanical survey of india,-1 nematology,1 nemo,-1 neo-assyrian text corpus project,1 neobiota,1 neofilologiâ,-1 neograeca bohemica,1 neohelicon,2 neonataalihoitaja,-1 neonatal and pediatric medicine,-1 neonatal network,-1 neonatology,2 neonatology today,-1 neophilologus,2 neoplasia,2 neoplasma,1 neoreviews,-1 neos,1 neotestamentica,2 neotropical biodiversity,1 neotropical biology and conservation,1 neotropical entomology,1 neotropical ichthyology,1 nep era : soviet russia 1921-1928,-1 nepal journal of biotechnology,-1 nephrologie et therapeutique,1 nephrology,1 nephrology dialysis transplantation,2 nephrology nursing journal,1 nephron extra,1 neprajzi ertesito,1 nepreryvnoe obrazovanie: xxi vek,1 nervenarzt,1 nervenheilkunde,1 nestor-istorija,1 net journal of agricultural science,-1 netbiblo,-1 netcom,-1 netherlands heart journal,1 netherlands international law review,1 netherlands journal of geosciences-geologie en mijnbouw,1 netherlands journal of medicine,-1 netherlands quarterly of human rights,2 netherlands yearbook of international law,1 netla,-1 netnomics: economic research and electronic networking,1 network,-1 network and distributed system security symposium,2 network modeling analysis in health informatics and bioinformatics,1 network neuroscience,1 network science,1 network: computation in neural systems,1 networker: association for computing machinery,1 networks,2 networks and heterogeneous media,1 networks and spatial economics,1 neue gesellschaft für bildende kunst e.v.,-1 neue paläontologische abhandlungen,1 neue politische literatur,1 "neue praxis: zeitschrift für sozialarbeit, sozialpädagogik und sozialpolitik",1 neue rundschau,1 neue zeitschrift fur systematische theologie und religionsphilosophie,3 neue zeitschrift für arbeitsrecht,1 neue zeitschrift für musik,-1 neues jahrbuch fur geologie und palaontologie: abhandlungen,1 neues jahrbuch fur mineralogie: abhandlungen,1 neukirchener verlag,1 neulateinisches jahrbuch: journal of neo-latin language and literature,1 neuphilologische mitteilungen,2 neural computation,3 neural computing and applications,1 neural development,1 neural network world,1 neural networks,3 neural plasticity,1 neural processing letters,1 neural regeneration research,1 neuro-oncology,2 neuro-oncology advances,1 neuro-oncology practice,1 neuro-ophthalmology,1 neuroanatomy and behaviour,-1 neurobiology of aging,2 neurobiology of disease,2 neurobiology of language,1 neurobiology of learning and memory,1 neurobiology of lipids,1 neurobiology of stress,1 neurocase,1 neurochemical journal,1 neurochemical research,1 neurochemistry international,1 neurochirurgie,1 neurocirugia,1 neurocomputing,2 neurocritical care,1 neurodegenerative disease management,1 neurodegenerative diseases,1 neurodiversity,-1 neuroendocrinology,1 neuroendocrinology letters,1 neuroepidemiology,1 neuroethics,2 neuroforum,1 neurogastroenterology and motility,1 neurogenetics,1 neurohoitaja,-1 neuroimage,3 neuroimage : clinical,2 neuroimage : reports,1 neuroimaging clinics of north america,1 neuroimmunomodulation,1 neuroinformatics,2 neurologia,1 neurologia croatica,1 neurologia i neurochirurgia polska,1 neurologia medico-chirurgica,1 neurologic clinics,1 neurological research,1 neurological research and practice,1 neurological sciences,1 neurological surgery,1 neurologist,1 neurology,3 neurology : genetics,1 neurology : neuroimmunology & neuroinflammation,1 neurology and neurobiology,-1 neurology and therapy,2 neurology asia,1 neurology india,1 neurology international,-1 neurology open access,-1 neurology psychiatry and brain research,1 neurology research international,1 "neurology, neurophysiology and neuroscience",1 neurology. clinical practice,-1 neuromethods,1 neuromodulation,1 neuromolecular medicine,1 neuromorphic computing and engineering,1 neuromuscular disorders,1 neuron,3 neuron glia biology,1 neuronal signaling,1 "neurons, behavior, data analysis, and theory",-1 neuropathology,1 neuropathology and applied neurobiology,1 neuropediatrics,1 neuropeptides,1 neuropharmacology,3 neurophotonics,1 neurophysiologie clinique-clinical neurophysiology,1 neurophysiology,1 neurophysiology and rehabilitation,-1 neuroprotection,-1 neuropsy open,-1 neuropsychiatric disease and treatment,1 neuropsychiatry,-1 neuropsychobiology,1 neuropsychologia,2 neuropsychological rehabilitation,1 neuropsychology,2 neuropsychology review,2 neuropsychopharmacologia hungarica,-1 neuropsychopharmacology,3 neuropsychopharmacology reports,-1 neuroquantology,-1 neuroradiology,1 neurorehabilitation,1 neurorehabilitation and neural repair,2 neuroreport,1 neurosci,-1 neuroscience,2 neuroscience and behavioral physiology,1 neuroscience and biobehavioral reviews,3 neuroscience applied,1 neuroscience bulletin,1 neuroscience letters,1 neuroscience of consciousness,1 neuroscience research,1 neuroscience research communications,1 neurosciences,1 neuroscientist,1 neurosignals,1 neurospine,1 neurosurgery,2 neurosurgery clinics of north america,1 neurosurgery practice,1 neurosurgery quarterly,1 neurosurgical focus,-1 neurosurgical focus : video,-1 neurosurgical review,1 neurotherapeutics,1 neurotoxicity research,1 neurotoxicology,1 neurotoxicology and teratology,1 neurotrauma reports,1 neurourology and urodynamics,1 neusis: the greek journal for the history and philosophy of science and technology,1 neuvola & kouluterveys,-1 nevelestudomany,-1 nevtani ertesito,1 new academic press,-1 new age books,-1 new age in russia,-1 new american studies journal,1 new and rare for lithuania insect species: records and descriptions,-1 new angle,-1 "new apps: art, politics, philosophy, science",-1 new astronomy,1 new astronomy reviews,1 new balkan politics,1 new biotechnology,1 new blackfriars,-1 new carbon materials,-1 new cinemas: journal of contemporary film,1 new concepts in polymer science,1 new contree,1 new criminal law review,1 new directions for adult and continuing education,1 new directions for child and adolescent development,1 new directions for evaluation,1 new directions for higher education,1 new directions for institutional research,1 new directions for student services,-1 new directions for teaching and learning,1 new directions for youth development,1 new disease reports,1 new diversities,1 new educational review,1 new electronics,1 new england journal of entrepreneurship,1 new england quarterly: a historical review of new england life and letters,1 new england review: middlebury series,1 new england theatre journal,1 new europe college yearbook,-1 new forests,1 new formations: a journal of culture/theory/politics,1 new generation computing,1 new genetics and society,1 new german critique,3 new german review,1 new global studies,-1 new hibernia review,1 new history,1 new horizons in adult education and human resource development,1 new horizons in translational medicine,-1 new ideas in psychology,1 new journal of chemistry,1 new journal of european criminal law,1 new journal of physics,2 new left review,2 new literary history,3 new mathematics and natural computation,1 new media and society,3 new medit,1 new mexico geological society,-1 new mexico historical review,1 new microbes and new infections,1 new microbiologica,1 new orleans review,1 new perspectives,1 new perspectives in science education : conference proceedings,-1 new perspectives on learning and instruction,3 new perspectives on turkey,1 new perspectives quarterly,1 new phytologist,3 new political economy,3 new political science: a journal of politics and culture,1 new problems of philosophy,3 new republic,1 new review of academic librarianship,1 new review of childrens literature and librarianship,1 new review of film and television studies,2 new review of hypermedia and multimedia,1 new review of information networking,1 new sociological perspectives,-1 new solutions: a journal of environmental and occupational health policy: ns:,1 new south wales public health bulletin,1 new space,1 new technology work and employment,1 new testament studies,3 "new testament tools, studies and documents",1 new theatre quarterly,2 new trends and issues proceedings on humanities and social sciences,-1 new trends in qualitative research,1 new voices in classical reception studies,1 new voices in translation studies,1 new waves in philosophy,3 new world choreographies,3 new writing: the international journal for the practice and theory of creative writing,1 new yearbook for phenomenology and phenomenological philosophy,2 new york academy of sciences,1 new york journal of mathematics,1 new york review of books,-1 new york times book review,-1 new york university journal of international law and politics,1 new york university law review,2 new york university press,2 new zealand aquatic environment and biodiversity report,-1 new zealand entomologist,1 new zealand geographer,1 new zealand journal of agricultural research,1 new zealand journal of botany,1 new zealand journal of crop and horticultural science,1 new zealand journal of ecology,1 new zealand journal of educational studies,1 new zealand journal of environmental law,1 new zealand journal of forestry science,-1 new zealand journal of geology and geophysics,1 new zealand journal of history,1 new zealand journal of marine and freshwater research,1 new zealand journal of mathematics,1 new zealand journal of music therapy,1 new zealand journal of psychology,1 new zealand journal of public and international law,1 new zealand journal of teachers' work,-1 new zealand journal of zoology,1 new zealand law review,1 new zealand population review,1 new zealand slavonic journal,1 new zealand sociology,1 new zealand studies in applied linguistics,1 new zealand universities law review,1 new zealand veterinary journal,1 newborn and infant nursing review,1 news & science,-1 news and views,-1 newsbrief,-1 newsletter,-1 newsletter - australian centre for maritime studies,1 newsletter of the international network of gelechioid aficionados,-1 "newsletter on the results of scholarly work in sociology, criminology, philosophy and political science",-1 newsletters on stratigraphy,1 newspaper research journal,1 newswood limited,-1 newton,1 newton´s bulletin,-1 next,-1 next energy,1 next materials,1 next research,-1 next sustainability,1 nexus network journal,1 nhri symposium,1 nias press,1 nibio,-1 nibio bok,-1 nibr-notat,-1 nic series : publication series of the john von neumann institute for computing,1 nichibunken japan review,-1 nicotine and tobacco research,1 nieren- und hochdruckkrankheiten,1 nietzsche-studien,1 nifu,1 nigata daigaku koto kyoiku kenkyu,-1 nigeria dental journal,1 nigerian journal of clinical practice,-1 nigerian journal of construction technology and management,-1 nihon kagaku kyoiku gakkai nenkai ronbunshu,-1 nihon onsen kiko butsuri igakkai zasshi,-1 nihon reoroji gakkaishi,1 nihon shokuhin k?gakkaishi,-1 nihon terewaku gakkaishi,-1 nihon zaidan pararinpikku sapoto senta pararinpikku kenkyukai kiyo,-1 nihr open research,-1 niilo mäki instituutti,-1 niin & näin,1 nijhoff law specials,1 nikephoros: zeitschrift fur sport und kultur im altertum,1 nikola vaptsarov naval academy,-1 nineteenth century art worldwide,1 nineteenth century gender studies,1 nineteenth century music,2 nineteenth century prose,2 nineteenth century theatre and film,1 nineteenth-century contexts,1 nineteenth-century french studies,2 nineteenth-century literature,3 nineteenth-century music review,1 nineteenth-century studies,1 ningen kankyogaku kenkyu,-1 ningen kōgaku,-1 nino aragno editore,1 nippi,-1 nippon hyoron,-1 nippon jozo kyokaishi,-1 nippon suisan gakkaishi,1 nir : nordiskt immateriellt rättsskydd,2 nispacee journal of public administration and policy,1 nitric oxide-biology and chemistry,1 nitrogen,-1 nivala,-1 nivel,-1 nivelposti,-1 niveltieto,-1 nizhegorodskij gosudarstvenny`j lingvisticheskij universitet im. n.a.dobrolyubova,-1 nj drama australia journal,1 njar publishers,-1 njas: wageningen journal of life sciences,1 njf report,-1 nmediac: the journal of new media and culture,1 nmh-publikasjoner,1 nmims management review,-1 nmr in biomedicine,1 no foundations: journal of extreme legal positivism,1 no niin,-1 no to hattatsu,-1 noa: norsk som andrespråk,1 nobel bilimsel eserler,-1 "nobilta: rivista di araldica, genealogia, ordini cavallereschi",-1 nobuko,-1 nodea: nonlinear differential equations and applications,1 nodus publikationen,1 noema,1 noise & vibration worldwide,-1 noise and health,1 noise and vibration in industry,-1 nokia ennen ja nyt,-1 nokturno,-1 nomad: nordisk matematikkdidaktikk,1 nomadic peoples,1 nomerta kustannus oy,-1 nomina,1 nomina africana,1 nomos,2 non fighting generation ry,-1 non-coding rna,-1 non-fiction,-1 non-genetic inheritance,1 nonautonomous dynamical systems,1 nondestructive testing and evaluation,1 nongchon jido wa gaebal,-1 nongye jixie xuebao,-1 nonlinear analysis-hybrid systems,-1 nonlinear analysis: modelling and control,1 nonlinear analysis: real world applications,1 nonlinear analysis: theory methods and applications,1 nonlinear dynamics,2 nonlinear dynamics and systems theory,1 "nonlinear dynamics, psychology, and life sciences",1 "nonlinear optics, quantum optics",1 nonlinear phenomena in complex systems,1 nonlinear processes in geophysics,1 nonlinear studies,1 nonlinearity,1 nonprofit and voluntary sector quarterly,2 nonprofit digest,-1 nonprofit management and leadership,1 nonproliferation review,1 nora: nordic journal of feminist and gender research,2 nordand: nordisk tidsskrift for andrespråksforskning,2 norden,-1 nordens välfärdscenter,-1 nordenskiöld-samfundets tidskrift,-1 nordeuropaforum,1 nordfo,-1 nordia geographical publications,1 nordia tiedonantoja,-1 nordic academic press,1 nordic academic press of architectural research,1 nordic acoustics association,-1 nordic and baltic journal of information and communications technologies,1 nordic association for canadian studies text series,1 nordic centre in shanghai,-1 nordic concrete research,1 nordic conference on pattern languages of programs,-1 nordic council of ministers,-1 nordic design research conference,1 nordic economic policy review,1 nordic innovation,-1 nordic irish studies,1 nordic journal of aesthetics,1 nordic journal of african studies,1 nordic journal of architectural research,2 nordic journal of art and research,1 "nordic journal of arts, culture and health",1 nordic journal of botany,1 nordic journal of business,1 nordic journal of commercial law,1 nordic journal of comparative and international education,1 nordic journal of criminology,1 "nordic journal of dance : practice, education and research",1 nordic journal of digital literacy,1 nordic journal of educational history,1 nordic journal of english studies,1 nordic journal of european law,1 nordic journal of health economics,1 nordic journal of human rights,2 nordic journal of information literacy in higher education,1 nordic journal of innovation in the public sector,-1 nordic journal of international law,2 nordic journal of legal studies,-1 nordic journal of library and information studies,1 nordic journal of linguistics,3 nordic journal of literacy research,1 nordic journal of media management,1 nordic journal of media studies,1 nordic journal of migration research,2 nordic journal of music therapy,2 nordic journal of nursing research,1 nordic journal of political economy,1 nordic journal of psychiatry,1 nordic journal of rehabilitation,-1 nordic journal of religion and society,3 nordic journal of renaissance studies,1 nordic journal of science and technology studies,1 nordic journal of social research,1 nordic journal of stem education,1 nordic journal of studies in educational policy,1 nordic journal of studies in policing,1 nordic journal of surveying and real estate research,1 nordic journal of surveying and real estate research : special series,1 "nordic journal of transitions, careers and guidance",1 nordic journal of urban studies,1 nordic journal of vocational education and training,1 nordic journal of wellbeing and sustainable welfare development,1 nordic journal of working life studies,1 nordic journal on law and society,1 nordic notes,1 nordic perspectives on open science,-1 nordic psychology,1 nordic pulp and paper research journal,1 nordic research in music education,1 nordic review of international studies,1 nordic road and transport research,-1 nordic social work research,1 nordic studies in education,1 nordic studies in pragmatism,1 nordic studies on alcohol and drugs,1 nordic symposium on cloud computing and internet technology,-1 nordic symposium on multimodal communication,-1 nordic tax journal,1 nordic theatre studies,2 nordic wittgenstein review,1 nordic working papers,-1 nordic workshop on programming theory,-1 nordic yearbook of population research,1 nordic: journal of architecture,1 nordica,1 nordica helsingiensia,1 nordicom,1 nordicom review,2 nordicum-mediterraneum,1 nordidactica: journal of humanities and social science education,1 nordina,1 nordiques,1 nordisk administrativt tidsskrift,1 nordisk arkivnyt,-1 nordisk barnehageforskning,1 nordisk judaistik / scandinavian jewish studies,2 nordisk konservatorforbund : danske afdeling,-1 nordisk kulturpolitisk tidsskrift,1 nordisk miljörättslig tidskrift,1 nordisk museologi,1 nordisk numismatisk unions medlemsblad,-1 nordisk numismatisk årsskrift - scandinavian numismatic journal,1 nordisk oestforum,1 nordisk pappershistorisk tidskrift,-1 nordisk poesi,1 nordisk samhällsgeografisk tidskrift,1 nordisk socialrättslig tidskrift,1 nordisk sygeplejeforskning,-1 "nordisk tidskrift for vetenskap, konst och industri",1 nordisk tidskrift för socioonomastik,1 nordisk tidskrift för allmän didaktik,1 nordisk tidsskrift for helseforskning,1 nordisk tidsskrift for kriminalvidenskab,1 nordisk tidsskrift for pedagogikk & kritikk,1 nordisk tidsskrift for selskabsret,1 nordisk tidsskrift for ungdomsforskning,1 nordisk tidsskrift for utdanning og praksis,1 nordisk välfärdsforskning,1 nordiska afrikainstitutet,1 nordiska museets förlag,-1 "nordiske fortidsminder, serie b",1 nordiske organisasjonsstudier,1 nordiske studier i leksikografi,-1 nordiske udkast,1 nordlit,1 nordlyd,1 nordmetric news,-1 nordost-archiv,-1 nordregio,-1 nordregio news,-1 nordrhein-westfälische akademie der wissenschaften und der künste,1 nordwel studies in historical welfare state research,1 noreddine hanini,-1 norges geologiske undersøkelse,1 norges miljø- og biovitenskapelige universitet,-1 norges musikkhøgskole,-1 norma : international journal for masculinity studies,2 normal,-1 normas,1 normat: nordisk matematisk tidskrift,1 norna-rapporter,1 norrbotten,-1 norrlinia,-1 norsk antropologisk tidsskrift,1 norsk arkitekturforlag,1 norsk betongforening,-1 norsk epidemiologi,1 "norsk epidemiologi, supplement",1 norsk filosofisk tidsskrift,1 norsk geografisk tidsskrift-norwegian journal of geography,1 norsk kulturråd,-1 norsk lingvistisk tidsskrift,1 norsk litteraer årbok,1 norsk litteraturvitenskapelig tidsskrift,1 norsk medietidsskrift,1 norsk pedagogisk tidsskrift,1 norsk sosiologisk tidsskrift,1 norsk statsvitenskapelig tidsskrift,1 norsk tidsskrift for logopedi,1 norsk tidsskrift for misjonsvitenskap,1 norsk utenrikspolitisk institutt,-1 norsk veterinaertidsskrift,1 norske samlaget,1 norstedts,1 norstedts juridik,1 north american actuarial journal,1 north american archaeologist,1 north american fungi,1 north american journal of aquaculture,1 north american journal of celtic studies,1 north american journal of economics and finance,1 north american journal of fisheries management,1 north american review,-1 north american spine society journal,1 north carolina journal of law & technology,1 north korean review,1 north pinehurst press,-1 north star,1 north-east asia academic forum,-1 north-west passage,1 north-western journal of zoology,1 northamptonshire archaeology,1 northeast african studies,-1 northeast journal of complex systems,-1 northeastern naturalist,-1 northern contemporary,1 northern earth,-1 northern european journal of language technology,1 northern history,1 northern illinois university press,1 northern ireland legal quarterly,1 northern lights: film and media studies yearbook,1 northern mariner,1 northern review,1 northern studies: the journal of the scottish society for northern studies,1 northwest lichenologists,-1 northwest science,-1 northwestern journal of law and social policy,1 northwestern university law review,2 northwestern university libraries,-1 northwestern university press,1 norvik press,1 norwegian archaeological review,2 "norwegian journal of agricultural sciences, supplement",1 norwegian journal of entomology,1 norwegian journal of geology,1 norwegian petroleum society: special publications,1 norwegian university of science and technology,-1 norwegian-american historical association,1 noste,-1 nosīleia kai ereuna,-1 nota,-1 nota bene yayinlari,-1 nota lepidopterologica,1 notae praehistoricae,1 notes,1 notes and queries,1 notes and records of the royal society,1 notes on ifs,-1 notes on number theory and discrete mathematics,1 notfall und rettungsmedizin,1 notices of the american mathematical society,-1 notitia,-1 notizie di politeia,1 notre dame journal of formal logic,2 notre dame law review,1 notre dame philosophical reviews,-1 nottingham french studies,2 nottingham insolvency and business law e-journal,1 nottingham trent university,-1 nottingham university press,1 notulae botanicae horti agrobotanici cluj-napoca,-1 nous,3 nouvelle revue d'esthetique,1 nouvelle revue d'onomastique,1 nouvelle revue francaise,1 nouvelle revue theologique,1 nouvelles de l archeologie,1 nouvelles etudes francophones,1 nouvelles perspectives en sciences sociales,-1 nouvelles questions feministes,1 nova et vetera,1 nova hedwigia,1 nova hedwigia beihefte,1 nova md,-1 nova religio: journal of alternative and emergent religions,2 nova sandek,-1 nova science publishers,1 nova srpska politicka misao,1 nova tellus,1 nova univerza,-1 novartis foundation symposia,1 novaâ i novejsaâ istoriâ,1 novejšaâ istoriâ rossii,-1 novel techniques in nutrition & food science,-1 novel: a forum on fiction,3 novenytermeles,1 novgorodskij gosudarstvenny`j universitet imeni yaroslava mudrogo,-1 novia publications and productions,-1 novia publikation och produktion,-1 novia publikations and productions,-1 novissima,-1 novitas-royal (research on youth and language),1 novitates caribaea,1 novoe izdatel`stvo,-1 novoe literaturnoe obozrenie,1 novoe literaturnoe obozrenie,2 novon,1 novos olhares,-1 novosibirskij gosudarstvenny`j pedagogicheskij universitet,-1 novosti sistematiki nizsich rastenij,-1 novum publishing,-1 novum testamentum,3 novus forlag,1 novus studies in literature,1 novyi filologicheskii vestnik,1 novyi mir,-1 nová tiskárna pelhřimov,-1 now publishers,-1 nowele: north western european language evolution,1 noēma,-1 npg,-1 npg asia materials,2 npj sustainable mobility and transport,-1 npj 2d materials and applications,1 npj aging,1 npj antimicrobials and resistance,1 npj biodiversity,1 npj biofilms and microbiomes,1 npj breast cancer,1 npj clean air,-1 npj clean water,1 npj climate action,1 npj climate and atmospheric science,2 npj computational materials,1 npj digital medicine,2 npj flexible electronics,3 npj genomic medicine,1 npj gut and liver,1 npj heritage science,2 npj materials degradation,1 npj materials sustainability,1 npj mental health research,1 npj metabolic health and disease,1 npj microgravity,1 npj nanophotonics,1 npj ocean sustainability,-1 npj parkinson's disease,2 npj precision oncology,1 npj primary care respiratory medicine,1 npj quantum information,3 npj quantum materials,3 npj regenerative medicine,1 npj science of food,2 npj science of learning,1 npj sustainable agriculture,1 npj systems biology and applications,-1 npj urban sustainability,1 npj vaccines,1 npj viruses,-1 npj women's health,1 nrc handelsblad,-1 nrc research press,1 nriag journal of astronomy and geophysics,-1 nss space settlement journal,-1 nsu press,-1 nt klasika,-1 ntamo,-1 "ntm journal of history of sciences, technology, and medicine",1 nuance: the international journal of family policy and related issues,1 nuart journal,1 nuclear and particle physics proceedings,1 nuclear data sheets,1 nuclear education and training,-1 nuclear engineering and design,3 nuclear engineering and technology,1 nuclear engineering international,1 nuclear fusion,2 "nuclear instruments and methods in physics research section a: accelerators, spectrometers, detectors and associated equipment",1 nuclear instruments and methods in physics research section b: beam interactions with materials and atoms,2 nuclear materials and energy,1 nuclear medicine and biology,1 nuclear medicine and molecular imaging,1 nuclear medicine communications,1 nuclear physics a,1 nuclear physics b,2 nuclear physics news,-1 nuclear plant journal,1 nuclear receptor research,1 nuclear receptor signaling,1 nuclear science and engineering,1 nuclear science and techniques,1 nuclear technology,1 nuclear technology and radiation protection,1 nucleic acid therapeutics,1 nucleic acids research,3 nucleosides nucleotides and nucleic acids,1 nucleus,1 nueva antropologia,1 nueva revista de filologia hispanica,1 nueva sociedad,1 nuevo texto critico,1 nuf-bulletinen,-1 nukketeatteri,-1 nuklearmedizin-nuclear medicine,1 nukleonika,1 numen,3 numen: revista de estudos e pesquisa da religiao,1 "numerical algebra, control and optimization",1 numerical algorithms,2 numerical functional analysis and optimization,1 numerical heat transfer part a: applications,1 numerical heat transfer part b: fundamentals,1 numerical linear algebra with applications,1 numerical mathematics: theory methods and applications,1 numerical methods for partial differential equations,1 numerische mathematik,3 numismaatikko,-1 numismaattinen aikakauslehti,-1 numismatiska meddelanden,1 numl international journal of engineering and computer sciences,-1 nuncius hamburgensis,-1 nuncius: journal of the history of science,2 nuori lääkäri,-1 nuori suomi ry,-1 nuori voima,-1 nuorisopsykoterapia-säätiön julkaisuja,-1 nuorisoseurat,-1 nuorisotutkimus,1 nuorisotutkimusverkoston julkaisuja,1 nuorisotutkimusverkoston verkkojulkaisuja,1 nuorisotyö,-1 nuorten elinolot -vuosikirja,1 nuova corvina,-1 nuova rivista musicale italiana,1 nuova rivista storica,1 nuova secondaria,-1 nuova storia contemporanea,1 nuovi annali della scuola speciale per archivisti e bibliotecari,-1 nurmeksen kaupunki,-1 nurse author & editor,-1 nurse education in practice,1 nurse education today,2 nurse educator,1 nurse researcher,1 nursery world,-1 nursing administration quarterly,1 nursing and health sciences,1 nursing and palliative care,-1 nursing children and young people,-1 nursing clinics of north america,1 nursing economics,1 nursing education perspectives,1 "nursing education, research, & practice",1 nursing ethics,3 nursing forum,1 nursing history review,1 nursing in critical care,1 nursing inquiry,1 nursing leadership,1 nursing management,1 nursing older people,-1 nursing open,1 nursing outlook,2 nursing philosophy,1 nursing praxis in new zealand,1 nursing reports,-1 nursing research,3 nursing research and practice,1 nursing science quarterly,1 nurture: research journal of pakistan home economics association,-1 nusa,1 nutricion hospitalaria,1 nutrient cycling in agroecosystems,1 nutrients,-1 nutrire,-1 nutrition,1 nutrition & food science international journal,-1 nutrition and cancer: an international journal,1 nutrition and diabetes,1 nutrition and dietetics,1 nutrition and food science,1 nutrition and health,1 nutrition and metabolic insights,1 nutrition and metabolism,1 nutrition bulletin,1 nutrition clinique et metabolisme,1 nutrition in clinical practice,1 nutrition journal,1 nutrition metabolism and cardiovascular diseases,1 nutrition research,1 nutrition research and practice,1 nutrition research reviews,1 nutrition reviews,1 nutritional neuroscience,1 nwig-new west indian guide-nieuwe west-indische gids,1 ny tid,-1 nya argus,-1 nya åland,-1 nya östis,-1 nyame akuma: bulletin of the society of african archaeologists,1 nyckeln,-1 nyctalus,-1 nydanske studier,1 nyelv- es irodalomtudomanyi kozlemenyek,1 nyelvtudomanyi kozlemenyek,1 nyhedsbrev,-1 nykykielten laitoksen oppimateriaalia,-1 nykykulttuurin tutkimuskeskuksen julkaisuja,1 nykypäivä,-1 nykytaiteen museon julkaisuja,-1 nytt norsk tidsskrift,1 nytt om namn,-1 nyugat-magyarországi egyetem kiadó,-1 nyugat-magyarországi egyetem savaria egyetemi központ,-1 národní muzeum,-1 národní technická knihovna,-1 näkökulma,-1 nätverket,-1 näyttämö ja tutkimus,2 näyttövinkki,-1 növényvédelem,-1 nünnerich-asmus verlag,-1 nāmah-i anjuman-i ḥasharah/shināsī-i īrān,-1 o papel,-1 o-bib,-1 oa anaesthetics,-1 oa-natur,-1 oaj lappi,-1 oalib,-1 oamk journal,-1 oamk_kone with passion,-1 oar,-1 oase: tijdschrift voor architectuur,1 ob edinenie otechestvo,-1 ob``edinennoe gumanitarnoe izdatel`stvo,1 oberwolfach reports,-1 obesities,-1 obesity,1 obesity facts,1 obesity medicine,1 obesity research and clinical practice,1 obesity reviews,1 obesity science & practice,1 obesity surgery,2 obm genetics,-1 obrazovanie i nauka,-1 obrazovanie i samorazvitie,-1 observa science in society,-1 observational studies,1 observatorio (obs*),1 observatorio del desarrollo,-1 observatory,1 observer research foundation,-1 "obshchestvo: filosofija, istorija, kultura",-1 obshestvennye nauki i sovremennost,-1 obstetric anesthesia digest,-1 obstetric medicine,1 obstetrical and gynecological survey,1 obstetrics and gynecology,3 obstetrics and gynecology clinics of north america,1 obstetrics and gynecology international,1 obzornik zdravstvene nege,-1 "obŝestvo : sociologiâ, psihologiâ, pedagogika",-1 ocas,-1 occasional papers in archaeology,1 occasional papers on religion in eastern europe,-1 occhialì,1 occupational and environmental medicine,3 occupational ergonomics,1 occupational health science,1 occupational medicine & health affairs,-1 occupational medicine: oxford,1 occupational therapy in health care,1 occupational therapy in mental health,1 occupational therapy international,-1 ocean,-1 ocean and coastal management,1 ocean and coastal research,1 ocean and polar research,1 ocean and society,1 ocean development and international law,2 ocean dynamics,1 ocean engineering,2 ocean modelling,1 ocean press,-1 ocean science,1 ocean science journal,1 ocean yearbook,1 oceania,2 oceanic linguistics,2 oceanography,2 oceanography and marine biology,1 oceanologia,1 oceanological and hydrobiological studies,-1 oceanology,1 oceanside publications,1 oceanus,1 ochanomizu shobo,-1 ochrona srodowiska,-1 ocl. oilseeds & fats crops and lipids,-1 oclc systems and services,1 octares,-1 october,3 ocula,1 ocular immunology and inflammation,1 ocular oncology and pathology,1 ocular surface,3 oculi: studies in the arts of the low countries,1 od practitioner,-1 od teorije do prakse u jeziku struke,-1 odonatologica,1 odontology,1 odyssey : the speaker and language recognition workshop,1 oebalus: studi campania antichità,-1 oecd,-1 "oecd science, technology and industry working papers",-1 oecologia,2 oecologia australis,1 oeconomia,-1 oeconomia - history/methodology/philosophy,-1 oeconomia copernicana,1 oeil,1 oekom verlag,1 offa,1 offa-bucher,1 offentlig foervaltning: scandinavian journal of public administration,1 official publication of the european organization for experimental photogrammetric research,-1 officina di studi medievali,-1 officinaventuno,-1 officyna,-1 oficyna naukowa,-1 oficyna wydawnicza politechniki warszawskiej,-1 oficyna wydawnicza politechniki wrocławskiej,-1 ofioliti,1 ogólnopolskie warsztaty pracy projektanta konstrukcji,-1 ohio journal of science,-1 ohio state university press,1 ohio university press,2 ohjaus,-1 ohmsha,1 ohutlevy,-1 oida international journal of sustainable development,1 oikeuden perusteet,-1 oikeus,2 oikeusministeriö,-1 oikeusministeriön julkaisuja,-1 oikeuspoliittinen tutkimuslaitos,-1 oikeustiede : jurisprudentia,1 oikos,2 oil and energy trends,1 oil and energy trends annual statistical review,1 oil and gas journal,1 oil and gas science and technology : revue de l'institut francais du petrole,1 oil shale,1 "oil, gas and energy law",1 oj,-1 okayama-daigaku-keizai-gakkai-zasshi,-1 okinawan journal of island studies,-1 oknytt: tidskrift for johan nordlander-sallskapet,1 olba,-1 old english newsletter,-1 old testament essays,1 old testament society of south africa,1 olhares & trilhas,-1 olimpianos,-1 oliviana,-1 olympiads in informatics,-1 olympika: the international journal of olympic studies,1 olé,-1 oma keel,-1 oma polku,-1 omakustanteet,-1 omega: international journal of management science,2 omega: journal of death and dying,1 omep hrvatska,-1 omics: a journal of integrative biology,1 omnes,1 omniascience,-1 omniscriptum,-1 omphalina,-1 omskblankizdat,-1 omskij gosudarstvenny`j universitet im. f.m.dostoevskogo,-1 omslaget,-1 omsorg: nordisk tidsskrift for palliativ medisin,1 on education,-1 on line förlag ab,-1 on the horizon,1 on_culture,1 onati socio-legal series,1 onco,-1 oncogene,2 oncogenesis,2 oncoimmunology,2 oncologie,1 oncologist,1 oncology,1 oncology and therapy,1 oncology letters,1 oncology nursing forum,1 oncology reports,1 oncology research,1 oncology research and treatment,1 oncology: new york,1 oncoscience,-1 oncotarget,-1 oncotargets and therapy,-1 oncurating,-1 onderstepoort journal of veterinary research,1 one earth,2 one ecosystem,1 one health,1 one health cases,-1 one in christ,-1 oneworld publications,-1 online - heidelberg journal of religions on the internet,1 online brazilian journal of nursing,1 online dictionary of intercultural philosophy,-1 online information review,1 online journal of analytic combinatorics,1 online journal of art and design,1 online journal of communication and media technologies,-1 online journal of complementary & alternative medicine,-1 online journal of dentistry & oral health,1 online journal of ecology & environment sciences,-1 online journal of health and allied sciences,1 online journal of immunology,1 online journal of issues in nursing,2 online journal of new horizons in education,-1 online journal of nursing informatics,1 online journal of public health informatics,1 online journal of space communication,1 online learning,1 online social networks and media,1 onnimanni,-1 onoma: journal of the international council of onomastic sciences,2 onomastica,1 onomastica canadiana,1 onomastica slavogermanica,1 onomastica uralica,1 onomatoloski prilozi,1 onomazein,1 onomástica desde américa latina,-1 ons geestelijk erf,1 onsei gengo igaku,-1 op. cit.,1 opas,-1 opd restauro: rivista dell opificio delle pietre dure e laboratori di restauro di firenze,1 ope journal,-1 opec energy review,-1 open acces journal of forensic psychology,1 open access government,-1 open access journal of environmental & soil sciences,-1 open access journal of sports medicine,1 open access macedonian journal of medical sciences,-1 open access series in informatics,-1 open agriculture,1 open agriculture journal,-1 open archaeology,1 open arts journal,1 open astronomy,1 open biology,1 open book publishers,1 open ceramics,1 open chemistry,1 open communications in nonlinear mathematical physics,1 open complementary medicine journal,-1 open computer science,1 open court publishing company,1 open cultural studies,1 open data journal for agricultural research,-1 open dentistry journal,-1 open diabetes journal,-1 open economies review,1 open education studies,1 open engineering,1 open epidemiology journal,-1 open ethics journal,-1 open forest science journal,-1 open forum infectious diseases,1 open gender journal,1 open geosciences,1 open heart,1 open house international,1 open humanities press,1 open information science,1 open inquiry archive,-1 open journal for sociological studies,-1 open journal of air pollution,-1 open journal of anesthesiology,-1 open journal of animal sciences,-1 open journal of astrophysics,1 open journal of business and management,-1 open journal of clinical diagnostics,-1 open journal of databases,-1 open journal of depression,-1 open journal of discrete mathematics,-1 open journal of ecology,-1 open journal of education,1 open journal of forestry,-1 open journal of genetics,-1 open journal of information systems,1 open journal of leadership,-1 open journal of mathematical sciences,1 open journal of modern hydrology,-1 open journal of modern linguistics,-1 open journal of neuroscience,-1 open journal of nursing,-1 open journal of obstetrics and gynecology,-1 open journal of pediatrics,-1 open journal of political science,-1 open journal of preventive medicine,-1 open journal of psychiatry,-1 open journal of psychiatry & allied sciences,-1 open journal of radiology,-1 open journal of safety science and technology,-1 open journal of social sciences,-1 open journal of statistics,-1 open journal of stomatology,-1 open journal of therapy and rehabilitation,-1 open journal of veterinary medicine,-1 open learning,1 open library of humanities,1 open life sciences,1 open linguistics,1 open mathematics,1 open medical informatics journal,-1 open medicine,1 open mind,1 open museum journal,1 open nuclear medicine journal,1 open nursing journal,-1 open ophtalmology journal,-1 open philosophy,1 open physics,1 open political science,1 open praxis,-1 open psychology,-1 open research europe,1 open review of educational research,1 open rheumatology,-1 open science journal,-1 open science publishers,-1 open screens,1 open society foundations,-1 open systems and information dynamics,1 open theology,1 open university press,1 open up! -blogi,-1 opendemocracy,-1 openfoam journal,-1 opennano,1 openphysio,1 openword,-1 opeopiskelija,-1 opera,-1 opera historica,-1 opera news,-1 opera quarterly,2 operant subjectivity,-1 operating systems review,1 operational research,1 operations and supply chain management: an international journal,1 operations management research,1 operations research,3 operations research and decisions,-1 operations research letters,1 operations research perspectives,1 operative dentistry,1 operative neurosurgery,1 operative orthopadie und traumatologie,1 operative techniques in otolaryngology-head and neck surgery,1 operative techniques in sports medicine,1 operative techniques in thoracic and cardiovascular surgery,1 operators and matrices,1 opettaja,-1 opetus- ja kulttuuriministeriö,-1 opetus- ja kulttuuriministeriön julkaisuja,-1 "opetus-, kasvatus- ja koulutusalojen säätiö",-1 opetushallitus,-1 ophrys,1 ophthalmic and physiological optics,1 ophthalmic epidemiology,1 ophthalmic genetics,1 ophthalmic plastic and reconstructive surgery,1 ophthalmic research,1 ophthalmic surgery lasers and imaging,1 ophthalmologe,1 ophthalmologica,1 ophthalmology,3 ophthalmology @ point of care,1 ophthalmology and therapy,1 ophthalmology glaucoma,1 ophthalmology retina,1 ophthalmology science,-1 opinpaja,-1 opinto-ohjaaja,-1 opiskelijatutkimuksen vuosikirja,1 oplandske bokforlag,1 opolskie studia administracyjno-prawne,1 oppaat ja käsikirjat,-1 oppimisen ja oppimisvaikeuksien erityislehti,1 optica,3 optica applicata,1 optical and quantum electronics,1 optical engineering,1 optical fiber technology,1 optical materials,1 optical materials express,2 optical materials x,1 "optical molecular probes, imaging and drug delivery",-1 optical nanoscopy,1 optical review,1 optical society of america,1 optical switching and networking,1 optics,-1 optics and laser technology,1 optics and lasers in engineering,1 optics and photonics journal,-1 optics and photonics news,1 optics and spectroscopy,1 optics communications,1 optics continuum,1 optics express,1 optics letters,2 optik,1 optik-verlag,-1 optika i spektroskopiya,-1 optimal control applications and methods,1 optimization,1 optimization and engineering,1 optimization letters,1 optimization methods and software,1 optimum,-1 opto: electronics review,1 optoelectronics and advanced materials: rapid communications,1 optoelectronics and communications conference,1 "optoelectronics, instrumentation, and data processing",-1 optometry and vision science,1 opus et educatio,-1 opuscula,1 opuscula historica upsaliensia,-1 opuscula mathematica,1 opuscula philolichenum,1 opuscula: bibliotheca arnamagnaeana,1 or spectrum,1 orages,-1 oral,-1 oral and maxillofacial surgery,1 oral and maxillofacial surgery clinics of north america,1 oral diseases,2 oral health and preventive dentistry,1 oral history,1 oral history review,2 oral oncology,2 oral radiology,1 oral surgery,1 "oral surgery, oral medicine, oral pathology and oral radiology",1 oral tradition,2 oralia,1 oras,-1 orbis,1 orbis biblicus et orientalis,2 orbis books,1 orbis litterarum,3 orbis scholae,-1 orbis terrarum,1 orbis tertius,1 orbis: bulletin international de documentation linguistique,1 orbit,1 orbit journal,-1 ord og tunga,1 ordena druzhby` narodov institut e`tnologii i antropologii im. n.n.mikluxo-maklaya rossijskoj akademii nauk,-1 order: a journal on the theory of ordered sets and its applications,1 ordfront förlag,1 ordines,1 ore and energy resource geology,1 ore geology reviews,1 oregon historical quarterly,1 oregon state university press,1 orff-schulwerk international,-1 organic agriculture,1 organic and biomolecular chemistry,2 organic chemistry frontiers,1 organic electronics,2 organic farming,1 organic geochemistry,2 organic letters,2 organic materials,1 organic preparations and procedures international,1 organic process research and development,1 organic syntheses,1 organics,-1 organisational studies and innovation review,-1 organised sound,3 organisms diversity and evolution,1 organist-bladet,-1 organizacija,-1 organization,3 organization and environment,2 organization leadership and development quarterly,-1 organization management journal,1 organization science,3 organization studies,3 organization theory,2 "organization, technology and management in construction: an international journal",-1 organizational aesthetics,1 organizational behavior and human decision processes,3 organizational cultures,-1 organizational dynamics,1 organizational psychology review,1 organizational research methods,3 organizatsionnaja psihologija,-1 organogenesis,-1 organometallics,1 organon f,1 organum,-1 organìzacìjna psihologìâ : ekonomìčna psihologìâ,-1 orgelforum,-1 ori press,-1 oriens,1 oriens christianus,1 "oriens extremus: zeitschrift fur sprache, kunst und kultur der laender des fernen ostens",1 orient blackswan,1 "orient: deutsche zeitschrift fur politik, wirtschaft und kultur des orients",1 orient: reports of the society for near eastern studies in japan,1 oriental art,1 oriental insects,1 oriental institute of the university of chicago,1 oriental pharmacy and experimental medicine,-1 orientalia,1 orientalia christiana cracoviensia,-1 orientalia christiana periodica,2 orientalia lovaniensia analecta,1 orientalia lovaniensia periodica,1 orientalia suecana,1 orientaliska studier,-1 orientalistica,1 orientalistische literaturzeitung,1 oriente moderno: nuova series,1 origins of life and evolution of biospheres,1 orillas rivista d'ispanistica,1 orimattilan aluelehti,-1 orimattilan sanomat,-1 orion pharma,-1 orizons,-1 orizonturi teologice,-1 orizzonte cina,1 orizzonti: rassegna di archeologia,1 orkana forlag,1 orkidealehti,-1 orl: journal for oto: rhino: laryngology and its related specialties,1 ornis fennica,1 ornis norvegica,1 ornis svecica,1 ornithological applications,2 ornithological science,1 ornithology,1 ornithology research,1 ornitologia neotropical,1 orphanet journal of rare diseases,1 orpheus : rivista de umanità classica e cristiana,1 orquestra editora,-1 országház könyvkiadó,-1 országos rabbiképző : zsidó egyetem,-1 orthodontics,1 orthodontics and craniofacial research,1 orthopade,1 orthopaedic journal of sports medicine,1 orthopaedic nursing,1 orthopaedic surgery,1 orthopaedics and trauma,1 orthopaedics and traumatology-surgery and research,1 orthopedic clinics of north america,1 orthopedic research and reviews,1 orthopedics,1 ortnamnssällskapets i uppsala årsskrift,1 ortodoksia,1 ortodoksinen opettaja,-1 "oruen, the cns journal",-1 orvas,-1 orvosi hetilap,1 oryx,1 osa trends in optics and photonics,1 osaka books,-1 osaka journal of mathematics,1 osaka kyoiku tosho,-1 osder publications,-1 osgeo journal,-1 osgoode hall law journal,1 osiris,3 oslo law review,1 oslo studies in language,1 osloer beitrage zur germanistik,1 osmanl? ara?t?rmalar?,-1 osmanli bilimi arastirmalari,1 osnabrucker beitrage zur sprachtheorie,1 osservatorio linguistico della svizzera italiana,-1 osteoarthritis and cartilage,2 osteoarthritis and cartilage open,1 osteoarthritis imaging,1 osteologie,1 osteology,-1 osteoporosis international,2 osterreichische musikzeitschrift,1 osterreichische namenforschung,1 osterreichische zeitschrift fur geschichtswissenschaften,1 osterreichische zeitschrift fur politikwissenschaft,1 osterreichische zeitschrift fur volkskunde,1 osterreichisches archiv fur recht und religion,1 osteuropa,1 osteuropa-recht,-1 ostkirchliche studien,1 osto & logistiikka,-1 ostraka,1 ostravská univerzita,-1 ostrich,1 osuuskunta poesia,-1 osviitta,-1 ot,-1 ota international,1 otago law review,1 otatieto,1 otava,-1 otessa journal,-1 otetchestvennaja i zarubezhnaja pedagogika,-1 other education,-1 other voices,1 otherness,-1 otium,1 otjr: occupation participation and health,1 oto open,1 otolaryngologic clinics of north america,1 otolaryngology: head and neck surgery,1 otology and neurotology,1 ottar,-1 ottawa law review,1 otto-friedrich-universität bamberg : university of bamberg press,-1 otto-novecento,1 otázky žurnalistiky,1 oud holland,1 oudtestamentische studien,1 ought,1 oulun ammattikorkeakoulu,-1 oulun ammattikorkeakoulun tekniikan ja luonnonvara-alan lehti,-1 oulun historiaseura ry,-1 oulun kaupunkisuunnittelu,-1 oulun yliopisto,-1 oulun yliopiston kerttu saalasti instituutin julkaisuja,-1 oulun yliopiston oppimateriaalia,-1 oulun yliopiston tuotantotalouden tutkimusraportteja,-1 oulun ylioppilaslehti,-1 outlines,1 outlook on agriculture,1 outokummun seutu,-1 outras expressões,-1 outre-mers,1 outskirts: feminisms along the edge,1 outsourcing journal,-1 over multatuli,1 overland,1 owl of minerva,1 ox bow press,2 oxbow books,1 oxford art journal,3 oxford bulletin of economics and statistics,2 oxford development studies,1 oxford economic papers: new series,2 oxford german studies,3 oxford journal of archaeology,2 oxford journal of law and religion,1 oxford journal of legal studies,3 oxford literary review,1 oxford medical case reports,1 oxford open energy,1 oxford research,-1 oxford review of economic policy,1 oxford review of education,2 oxford studies in ancient philosophy,1 oxford studies in comparative education,1 oxford university press,3 oxidants and antioxidants in medical science,1 oxidation communications,-1 oxidative medicine and cellular longevity,-1 oy turun sanomat,-1 oy valitut palat - readers digest ab,-1 oyo tokeigaku,1 ozone-science and engineering,1 p n a,1 p&o,-1 "p-adic numbers, ultrametric analysis and applications",1 p-e-r-f-o-r-m-a-n-c-e,1 paasilinna,-1 pabst science publishers,1 pace international law review,1 pace university press,1 pace: pacing and clinical electrophysiology,1 pachyderm,1 pacific accounting review,1 pacific affairs,1 pacific asia conference language information and computation,-1 pacific asia conference on information systems,1 pacific asia journal of the association for information systems,1 pacific coast philology,1 pacific conference on computer graphics and applications,1 pacific conservation biology,1 pacific economic bulletin,1 pacific economic review,1 pacific field corn association,-1 pacific focus,1 pacific historical review,1 pacific journal of mathematics,1 pacific journal of optimization,1 pacific northwest quarterly,1 pacific philosophical quarterly,2 pacific review,2 pacific rim international journal of nursing research,1 pacific rim property research journal,1 pacific science,1 pacific science review,-1 pacific studies,1 pacific-basin finance journal,1 pacifica: australasian theological studies,1 pacini editore,-1 packaging technology and science,2 pad,1 padasjoen sanomat,-1 paddy and water environment,1 padise vallavalitsus,-1 padova university press,-1 padusa,1 paedagogica historica,2 paediatria croatica,1 paediatric & neonatal pain,1 paediatric and perinatal epidemiology,1 paediatric drugs,1 paediatric respiratory reviews,1 paediatrics & child health,1 paediatrics and international child health,1 paesaggio urbano,-1 pagine giovani,-1 paideia,-1 paideuma,1 paideuma: mitteilungen zur kulturkunde,1 paidia,-1 paikallisliikenne,-1 pain,3 pain : clinical updates,-1 pain and therapy,1 pain clinic,1 pain management,1 pain management nursing,1 pain medicine,1 pain physician,1 pain practice,1 pain reports,1 pain research and management,1 paj : a journal of performance and art,2 pajouhesh va sazandegi,-1 pakistan journal of agricultural sciences,1 pakistan journal of botany,1 pakistan journal of commerce and social sciences,-1 pakistan journal of engineering technology & science,-1 pakistan journal of medical sciences,1 pakistan journal of pharmaceutical sciences,-1 pakistan journal of statistics,-1 pakistan journal of zoology,1 pakistan veterinary journal,-1 pakkaus,-1 paladyn,1 palaeobiodiversity and palaeoenvironments,1 palaeoentomology,1 palaeogeography palaeoclimatology palaeoecology,2 palaeohistoria,1 palaeontographia italica,1 palaeontographica abteilung a: palaozoologie: stratigraphie,1 palaeontographica abteilung b: palaophytologie,1 palaeontologia electronica,1 palaeontologia polonica,1 palaeontologische zeitschrift,1 palaeontology,2 palaeoslavica,1 palaeoworld,1 palaestina antiqua,1 palaestra (macomb ill.),-1 palaios,1 palarchs journal of archaeology of egypt/egyptology,1 paleo,1 paleo-aktueel,1 paleoanthropology,1 paleobiology,2 paleobios,1 paleoceanography and paleoclimatology,2 paleontological journal,1 paleontological research,1 paleorient,1 palestine exploration quarterly,1 palet yayınları,-1 palgrave macmillan,2 palgrave macmillan memory studies,3 palgrave macmillan transnational history series,3 palgrave pivot,1 palgrave studies in cultural and intellectual history,3 palgrave studies in economic history,3 palgrave studies in gender and education,1 palgrave studies in life writing,3 palgrave studies in modern european literature,3 palgrave studies in political history,3 palgrave studies in the history of childhood,3 palgrave studies in the history of emotions,3 palgrave studies in the history of social movements,3 palgrave studies in theatre and performance history,3 palgrave studies in world environmental history,3 palimpsestes: textes de reference,1 palkansaajien tutkimuslaitoksen raportteja,-1 palladio,-1 pallas: revue d'etudes antiques,1 palliatiivinen hoito,-1 palliativ vård,-1 palliative and supportive care,1 palliative care and social practice,1 palliative medicine,2 palliative medicine in practice,-1 palliative medicine reports,1 palliative-ch,-1 palmkrons förlag,-1 palokka-lehti,-1 palokuntalainen,-1 palombi editori,-1 palopäällystö,-1 "palvelualojen ammattiliitto pam ry, julkaisuja",-1 palveluesimies,-1 palveluskoirat,-1 palvelututkimus,-1 palynology,1 pamatky archeologicke,-1 pami?? i sprawiedliwo??,-1 pamiela argitaletxea,-1 pamietnik literacki,1 pamietnik teatralny,1 pampaedia,-1 pan,1 pan american health organization,1 pan pacific microelectronics symposium,-1 pan-pacific entomologist,1 panama-verlag,1 pancasila international journal of applied social science,1 pancreapedia,-1 pancreas,1 pancreatology,1 panellīnio synedrio didaktikīs fysikōn epistīmōn kai nees technologies stīn ekpaideusī,-1 panepistimio patron,-1 panepistimio peiraios,-1 panhellenic conference on informatics,-1 panminerva medica,1 panoeconomicus,1 panorama (makati city),-1 panozzo editore,1 panssari,-1 pantheon,1 paper age,-1 paper and biomaterials,-1 paper technology,1 "paper, film and foil converter",1 paperbark,-1 paperi ja puu oy,-1 paperiliitto,-1 papers and monographs of the finnish institute at athens,1 papers and records : thunder bay historical museum society,1 papers from the norwegian institute at athens,1 papers in arts and humanities,-1 papers in historical phonology,-1 papers in mediaeval studies,1 papers in palaeontology,1 papers in regional science,1 papers of surrealism,1 papers of the bibliographical society of america,1 papers of the british school at rome,3 papers on joyce,1 papers on labour history,-1 papers on language and literature,1 papers on social representations : threads of discussion,1 papers presented at the bhra fluid engineering international conference on energy storage,-1 papers: explorations into childrens literature,1 papersiemed,-1 papéis avulsos de zoologia,1 parabol,-1 parabola,-1 paradigm publishers,1 paradigma,-1 paradigma : i̇ktisadi ve idari araştırmalar dergisi,-1 paradigma akademi yayınevi,-1 paradigmi,1 paragone: arte,1 paragraph,3 parallax,1 parallel and cloud computing research,-1 parallel computing,2 parallel processing letters,1 parallèles,1 parameters,-1 paraninfo digital,1 parasite,1 parasite epidemiology and control,1 parasite immunology,1 parasites and vectors,1 parasitology,1 parasitology international,1 parasitology research,1 parekbolai,1 parenting: science and practice,1 parerga,-1 parergon,1 parikanniemen kontti,-1 parikkalan-rautjarven sanomat,-1 paris review,-1 park & anlegg,-1 park science,1 parkinson's disease,1 parkinsonism and related disorders,1 parks,1 parlando,-1 parliamentary affairs,1 parliamentary history,2 "parliaments, estates and representation",2 parlor press,1 parnasso,-1 parnassus: poetry in review,1 parola del passato,1 parole,-1 parole de l'orient,1 parrhesia,1 parse journal,1 partake,-1 partecipazione e conflitto,1 partial answers: journal of literature and the history of ideas,3 participations,1 participations : journal of audience and reception studies,1 participatory design conference,2 particle and fibre toxicology,2 particle and particle systems characterization,1 particulate science and technology,1 particuology,1 partio,-1 partner abuse,1 partuuna,-1 party politics,3 parvs publishing,-1 pasado y memoria: revista de historia contemporanea,1 pasos,-1 passage: tidskrift for litteratur og kritik,1 passagen verlag,1 passato e presente,1 passepartout,1 passerelles entre le commerce et le developpement durable,-1 passive house +,-1 past and present,3 past global changes magazine,-1 "pastoral care in education: an international journal of personal, social and emotional development",1 pastoral psychology,1 pastoralism,1 pastoraltheologie: monatsschrift fur wissenschaft und praxis in kirche und gesellschaft,1 pastoraltheologische informationen,1 patents & licensing,-1 paternoster press,-1 pathobiology,1 pathogens,-1 pathogens & immunity,-1 pathogens and disease,1 pathogens and global health,1 pathology,1 pathology and oncology research,-1 pathology case reviews,1 pathology international,1 pathology research and practice,1 pathophysiology,-1 pathophysiology of haemostasis and thrombosis,1 patient education and counseling,2 patient experience journal,1 patient preference and adherence,1 patient safety & quality improvement journal,1 patient safety in surgery,1 patient-patient centered outcomes research,1 patina,-1 paton welding journal,-1 patrimônio e memória,1 patristica et mediaevalia,1 patristica nordica annuaria,1 patron,-1 patt : proceedings,-1 patt40 liverpool 2023,-1 pattern analysis and applications,1 pattern recognition,3 pattern recognition and image analysis,-1 pattern recognition letters,2 patterns,1 patterns of prejudice,2 paul scherrer institut,-1 paul åström forlag,1 paulist press,1 pax forlag,1 payel yayinlari,-1 payot,-1 pci journal,1 pct international applications,-1 pda journal of pharmaceutical science and technology,1 peabody journal of education,1 peace and change: a journal of peace research,1 peace and conflict,1 peace and conflict studies,1 "peace economics, peace science, and public policy",1 peace research: the canadian journal of peace and conflict studies,1 peace review,1 peace tourism journal,-1 peacebuilding,1 pearson,-1 pearson education,1 pearson ft press,1 pearson higher education,1 peatlands international,-1 pec innovation,-1 pechatny`j mir g. xanty`-mansijsk,-1 pechoro-ily`chskij gosudarstvenny`j prirodny`j biosferny`j zapovednik,-1 pedagogia oggi,-1 pedagogia più didattica,1 pedagogical linguistics,-1 pedagogický časopis,1 pedagogiek,-1 pedagogies,1 pedagogika,-1 pedagogika,1 pedagogische studiën,1 pedagogisk forskning i sverige,1 "pedagogy : critical approaches to teaching literature, language, composition, and culture",1 pedagogy : theory and praxis,-1 pedagogy and the human sciences,-1 "pedagogy, culture and society",1 pedagogía social,1 pedagógusképzés,-1 pedanssi,-1 pedersöre info,-1 pediatric allergy and immunology,2 pediatric allergy immunology and pulmonology,1 pediatric and developmental pathology,1 pediatric anesthesia,1 pediatric annals,1 pediatric blood and cancer,1 pediatric cardiology,1 pediatric clinics of north america,1 pediatric critical care medicine,1 pediatric dentistry,1 pediatric dermatology,1 pediatric diabetes,2 pediatric emergency care,1 pediatric endocrinology review,-1 pediatric exercise science,1 "pediatric gastroenterology, hepatology & nutrition",1 "pediatric health, medicine and therapeutics",-1 pediatric hematology and oncology,1 pediatric infectious disease journal,1 pediatric investigation,1 pediatric medicine,1 pediatric nephrology,2 pediatric neurology,1 pediatric neurosurgery,1 pediatric nursing,1 pediatric obesity,1 pediatric physical therapy,1 pediatric pulmonology,1 pediatric radiology,1 pediatric reports,-1 pediatric research,2 pediatric rheumatology,1 pediatric surgery international,1 pediatric transplantation,1 pediatrics,3 pediatrics and neonatology,1 pediatrics and therapeutics,-1 pediatrics in review,1 pediatrics international,1 pediatrics research international journal,-1 pedobiologia,1 pedosphere,1 peer community in evolutionary biology,-1 peer community in genomics,-1 peer community journal,1 peer j preprints,-1 peer-reviewed c-crcs volume,-1 peer-to-peer networking and applications,1 peerj,1 peerj analytical chemistry,1 peerj computer science,1 peeters,2 pegasus,-1 pegem akademi,-1 peking university law journal,1 peking university press,-1 pelastus- ja turvallisuusalan tutkimus,1 pelastusopiston julkaisu,-1 pelastusopiston julkaisu : d-sarja,-1 pelastustieto,-1 pelckmans pro,-1 pelitutkimuksen vuosikirja,1 pellervon julkaisupalvelu oy,-1 peloponnīsiaka,-1 pen & sword,-1 pendragon press,2 penerbit universiti sains malaysia,-1 penguin books,-1 peniope verlag anja urbanek,1 penn state university press,1 pennsylvania magazine of history and biography,1 pennsylvania state university press,1 pennwell books,1 pensa multimedia,-1 pensamiento,1 pensamiento critico: revista electrònica de historia,1 pensar enfermagem,-1 pensee,1 pensoft publishers,1 pentagon press,-1 penzenskij gosudarstvenny`j universitet,1 people : international journal of social sciences,1 people and nature,1 peptides,1 per aspera ad astra,-1 per la filosofia,-1 per leggere,1 perception,1 perceptual and motor skills,1 percursos linguísticos,-1 percussive notes,-1 peregrinations,-1 perfect beat: the pacific journal of research into contemporary music and popular culture,1 perfiles latinoamericanos,1 performance enhancement & health,1 performance evaluation,2 performance matters,1 performance measurement and metrics,1 performance paradigm,1 performance philosophy,1 performance research,3 performance research books,1 performing ethos: an international journal of ethics in theatre & performance,1 perfusion: kreislauferkrankungen in klinik und praxis,1 perfusion: uk,1 pergamon press,1 perhe- ja pariterapialehti,-1 perhehoito,-1 perheyritysten liitto,-1 perhokalastus,-1 perichoresis,1 pericope,1 periférica,-1 perinatal journal,1 perinola-revista de investigacion quevediana,1 periodica mathematica hungarica,1 periodica polytechnica : mechanical engineering,-1 periodica polytechnica : social and management sciences,-1 periodica polytechnica : transportation engineering,-1 periodica polytechnica electrical engineering and computer science,-1 periodica polytechnica: chemical engineering,1 periodica polytechnica: civil engineering,1 periodico di mineralogia,1 periodicum biologorum,1 periodika,-1 periodontology 2000,2 perioperative medicine,1 peripeti,1 peripheral histories?,-1 periskop,1 peritia,1 peritoneal dialysis international,1 permafrost and periglacial processes,1 person-centered & experiential psychotherapies,1 persona grata,-1 persona studies,1 personal and ubiquitous computing,1 personal relationships,1 personal- und organisationsentwicklung in einrichtungen der lehre und forschung,1 personality and individual differences,2 personality and mental health,1 personality and social psychology bulletin,3 personality and social psychology review,3 personality disorders-theory research and treatment,1 personality science,1 personalized medicine,1 personalized medicine in psychiatry,1 personhistorisk tidskrift,1 personnel psychology,2 personnel review,1 persoonia,2 perspecta: the yale architectural journal,1 perspectivas,-1 perspectivas contemporâneas,-1 perspectivas em ciencia da informacao,1 perspective on public management and governance,1 perspective-la revue de l inha,-1 perspectives : policy and practice in higher education,1 perspectives in biology and medicine,1 perspectives in ecology and conservation,1 perspectives in education,1 perspectives in plant ecology evolution and systematics,1 perspectives in psychiatric care,1 perspectives in public health,1 perspectives in vascular surgery and endovascular therapy,1 perspectives missionnaires,-1 perspectives médiévales,1 perspectives of earth and space scientists,1 perspectives of new music,1 perspectives on global development and technology,1 perspectives on history,-1 perspectives on performance,-1 perspectives on politics,3 perspectives on psychological science,3 perspectives on science,1 perspectives on sexual and reproductive health,1 perspectives on terrorism,1 perspectives: studies in translation theory and practice,3 perspektiv,-1 perspektiven der wirtschaftspolitik,1 persuasions,1 perséides,-1 pertanika journal of science & technology,-1 pertubuhan cired malaysia electricity distribution conference,-1 perussanoma,-1 perussuomalainen,-1 perusta,-1 peruste,-1 perustuslakiblogi,-1 peruvian journal of epistemology,1 pervasive and mobile computing,2 perviytom,-1 pesquisa agropecuaria brasileira,1 pesquisa veterinaria brasileira,1 pest management science,2 pesticide biochemistry and physiology,1 pet clinics,1 peter lang,1 "peter-weiss-jahrbuch fur literatur, kunst und politik im 20. jahrhundert",1 peterburgskij istoritsheskij zhurnal,-1 peterburgskij èkonomičeskij žurnal,-1 petra,-1 petroleum and coal,-1 petroleum chemistry,1 petroleum geology conference series,1 petroleum geoscience,1 petroleum research,-1 petroleum science,1 petroleum science and technology,1 petrology,1 petrophysics,1 petropolis,-1 petrozavodskij gosudarstvenny`j universitet,-1 petsamolaista,-1 petäjävesi,-1 pferdeheilkunde,1 pflege,-1 pflege professionell,-1 pflugers archiv: european journal of physiology,1 ph-status,-1 phaenex,-1 phage,1 phaidon press,1 phanomenologische forschungen,1 pharmaca fennica,-1 pharmaceutical biology,1 pharmaceutical chemistry journal,1 pharmaceutical development and technology,1 pharmaceutical journal,1 pharmaceutical medicine,1 pharmaceutical patent analyst,-1 pharmaceutical press,1 pharmaceutical regulatory affairs,-1 pharmaceutical research,2 pharmaceutical statistics,1 pharmaceutical technology,1 pharmaceutical technology europe,1 pharmaceutical technology in hospital pharmacy,-1 pharmaceuticals,-1 pharmaceuticals policy and law,1 pharmaceutics,-1 pharmacoeconomics,2 pharmacoeconomics and outcomes news,1 pharmacoepidemiology and drug safety,1 pharmacogenetics and genomics,1 pharmacogenomics,1 pharmacogenomics and personalized medicine,1 pharmacogenomics journal,1 pharmacognosy magazine,-1 pharmacological reports,1 pharmacological research,3 pharmacological research : natural products,-1 pharmacological research : reports,1 pharmacological reviews,3 pharmacology,1 pharmacology and therapeutics,2 pharmacology biochemistry and behavior,1 pharmacology research & perspectives,1 pharmacopsychiatry,1 pharmacotherapy,1 pharmacy,-1 pharmacy education,1 pharmacy practice,1 pharmanutrition,1 pharmazie,1 pharos : journal of the netherlands institute at athens,1 phase transitions,1 phenomenological inquiry,-1 phenomenology and mind,2 phenomenology and practice,1 phenomenology and the cognitive sciences,3 phenomics,-1 phi,1 phi delta kappan,1 phile,-1 philip wilson publishers,1 philippine agricultural scientist,1 philippine journal of crop science,1 philippine journal of linguistics,1 philippine journal of psychology,-1 philippine journal of veterinary medicine,1 philippine political science journal,-1 philologia classica,1 philologia estonica tallinnensis,1 philologia hispalensis,1 philologica canariensia,1 philologica jassyensia,1 philological encounters,-1 philological quarterly,3 philologie im netz,1 philologus,3 philosophers imprint,3 philosophia,1 philosophia africana,1 philosophia antiqua,1 philosophia christi,1 philosophia mathematica,2 philosophia reformata,1 philosophia scientiae: studies in history and philosophy of science,1 philosophia verlag,-1 philosophica,1 philosophical explorations,2 philosophical forum,1 philosophical inquiries,1 philosophical inquiry in education,1 philosophical inquiry: international quarterly,1 philosophical investigations,1 philosophical issues: a supplement to nous,2 philosophical journal of conflict and violence,1 philosophical magazine,1 philosophical magazine letters,1 philosophical news,1 philosophical papers,1 philosophical perspectives,2 philosophical practice,1 philosophical psychology,2 philosophical quarterly,3 philosophical readings,-1 philosophical review,3 philosophical society of turkey,1 philosophical studies,3 philosophical topics,2 philosophical transactions of the royal society a : mathematical physical and engineering sciences,2 philosophical transactions of the royal society b: biological sciences,2 philosophical writings,1 philosophie antique,1 philosophies,-1 philosophiques,1 philosophische rundschau,1 philosophisches jahrbuch,1 philosophy,2 philosophy & technology,2 philosophy and geography,1 philosophy and literature,3 philosophy and phenomenological research,3 philosophy and politics,3 philosophy and public affairs,3 philosophy and rhetoric,1 philosophy and social criticism,2 philosophy and the mind sciences,1 philosophy and theology,1 philosophy and theory in biology,1 philosophy and theory in higher education,1 philosophy compass,2 philosophy east and west,1 philosophy in review,1 philosophy of coaching,-1 philosophy of education,1 philosophy of history and culture,1 philosophy of humor yearbook,1 philosophy of management,1 philosophy of mathematics education journal,-1 philosophy of music education review,1 philosophy of photography,1 philosophy of physics,1 philosophy of science,3 philosophy of the city journal,1 philosophy of the social sciences,2 philosophy pathways,-1 philosophy study,-1 philosophy today,1 "philosophy, culture & traditions",-1 "philosophy, ethics and humanities in medicine",1 "philosophy, politics and critique",-1 "philosophy, psychiatry, and psychology",1 "philosophy, theology and the sciences",1 "philosophy, theory, and practice in biology",1 phlebologie,1 phlebology,1 phoenix: the journal of the classical association of canada,2 phoibos verlag,1 phoneix yayınevi,-1 phonetica,3 phonetics teaching & learning conference,1 phonology,3 phosphorus sulfur and silicon and the related elements,1 photoacoustics,2 "photobiomodulation, photomedicine, and laser surgery",1 photochem,-1 photochemical and photobiological sciences,1 photochemistry and photobiology,1 photodermatology photoimmunology and photomedicine,1 photodiagnosis and photodynamic therapy,1 photogrammetric engineering and remote sensing,1 photogrammetric journal of finland,-1 photogrammetric record,1 "photogrammetrie, fernerkundung, geoinformation",1 photographies,1 photography and culture,1 photonic network communications,1 photonic sensors,1 photonics,-1 photonics & lasers in medicine,-1 photonics and nanostructures: fundamentals and applications,1 photonics letters of poland,-1 photonics research,2 photonics spectra,-1 photoresearcher (croydon),-1 photosynthesis research,1 photosynthetica,1 phrasis,1 phronema,1 phronesis,3 phronésis,-1 phycologia,1 phycological research,1 physica a: statistical mechanics and its applications,1 physica b: condensed matter,1 physica c: superconductivity and its applications,1 physica d: nonlinear phenomena,1 physica e: low: dimensional systems and nanostructures,1 physica medica,1 physica scripta,1 physica scripta: topical issues,1 physica status solidi a: applications and materials science,1 physica status solidi b : basic research,1 physica status solidi: rapid research letters,1 physica verlag,1 physical acoustics,1 physical activity and health,1 physical and engineering sciences in medicine,1 physical and occupational therapy in geriatrics,1 physical and occupational therapy in pediatrics,1 physical biology,1 physical chemistry chemical physics,3 physical chemistry research,-1 physical communication,1 physical culture and sport studies and research,1 physical education and sport pedagogy,1 physical geography,1 physical medicine and rehabilitation clinics of north america,1 physical mesomechanics,1 physical review a,2 physical review applied,2 physical review b,2 physical review c,2 physical review d,2 physical review e,2 physical review fluids,1 physical review letters,3 physical review materials,2 physical review physics education research,2 physical review research,1 physical review x,3 physical review. accelerators and beams,1 physical sciences reviews,1 physical separation in science and engineering,1 physical society of japan,1 physical therapy,2 physical therapy in sport,1 physical therapy reviews,1 physician and sportsmedicine,1 physicochemical problems of mineral processing,1 physics,-1 physics and chemistry of glasses: european journal of glass science and technology part b,1 physics and chemistry of liquids,1 physics and chemistry of minerals,1 physics and chemistry of the earth,1 physics and imaging in radiation oncology,1 physics education,1 physics essays,1 physics in medicine and biology,2 physics in perspective,1 physics letters a,1 physics letters b,3 physics of atomic nuclei,1 physics of fluids,1 physics of life reviews,2 physics of low-dimensional structures,1 physics of metals and metallography,1 physics of particles and nuclei,1 physics of particles and nuclei letters,1 physics of plasmas,1 physics of the dark universe,1 physics of the earth and planetary interiors,1 physics of the solid state,1 physics of wave phenomena,1 physics open,1 physics procedia,1 physics reports : review section of physics letters,3 physics teacher,1 physics today,1 physics world,-1 physics-uspekhi,1 physikalische medizin rehabilitationsmedizin kurortmedizin,1 physio-géo,1 physiologia,-1 physiologia plantarum,1 physiological and molecular plant pathology,1 physiological chemistry and physics and medical nmr,1 physiological entomology,1 physiological genomics,1 physiological measurement,1 physiological reports,1 physiological research,1 physiological reviews,3 physiology,1 physiology and behavior,1 physiology and molecular biology of plants,1 physiology international,1 physiotherapy,2 physiotherapy canada,1 physiotherapy research international,1 physiotherapy theory and practice,1 physis,1 phytobiomes journal,-1 phytochemical analysis,1 phytochemistry,1 phytochemistry letters,1 phytochemistry reviews,1 phytocoenologia,1 phytofrontiers,1 phytokeys,1 phytomedicine,1 phytomedicine plus,1 phyton: annales rei botanicae,1 phyton: international journal of experimental botany,1 phytoparasitica,1 phytopathologia mediterranea,1 phytopathology,1 phytopathology research,1 phytoprotection,1 phytotaxa,1 phytotherapie,1 phytotherapy research,1 pianisti,-1 piccola impresa,-1 pickering & chatto,1 pickwick publications,-1 pieksämäen lehti,-1 pielavesi-keitele,-1 pielęgniarstwo polskie,-1 pielęgniarstwo xxi wieku,-1 pieni on suurin,-1 pietarsaaren kaupunki,-1 pietarsaaren sanomat,-1 pig progress,-1 pigment and resin technology,1 pigment cell and melanoma research,2 pihvikarja,-1 pikkutrilli,-1 pilares d'elegância lda,-1 pilot and feasibility studies,1 pilven veikko,-1 pimenta cultural,-1 pimpinella,-1 pinni,-1 pinsetti,-1 pioni-jäsenlehti,-1 pipeline and gas journal,1 piplia,-1 pirandelliana: rivista internazionale di studi e documenti,1 pirkanmaan alta,-1 pirkanmaan pääasiat,-1 pirotski zbornik,-1 pirta,-1 pisa university press,1 pisamat,-1 pisma v zhurnal tekhnicheskoi fiziki,-1 pitagora editrice,-1 pitchstone publishing,-1 pittsburgh journal of technology law & policy,-1 pituitary,1 pitäjäläinen,-1 pitäjänuutiset,-1 pizhūhishhā-yi iqtiṣādī,-1 pizhūhish/hā-yi falsafī,1 pizhūhish/hā-yi zabān/shināsī,-1 pk ank,-1 pk ank : viikonvaihde ankkuri,-1 plaani,-1 place branding and public diplomacy,1 placenta,2 placenta and reproductive medicine,-1 places: forum of design for the public realm,1 plains anthropologist,1 plainsong and medieval music,2 planet@risk,-1 planetary and space science,1 planext,1 planning and environmental law,1 planning education,-1 planning perspectives,2 planning practice and research,1 planning theory,2 planning theory and practice,2 plant and cell physiology,2 plant and fungal systematics,1 plant and soil,2 plant archives,-1 plant biology,1 plant biosystems,1 plant biotechnology,1 plant biotechnology journal,3 plant biotechnology reports,1 plant breeding,1 plant cell,3 plant cell and environment,3 plant cell biotechnology and molecular biology,-1 plant cell reports,1 plant cell tissue and organ culture,1 plant communications,1 plant direct,1 plant disease,1 plant diversity,-1 "plant diversity and evolution: phylogeny, biogeography, structure and function",1 plant diversity of central asia,-1 plant ecology,1 plant ecology and diversity,1 plant ecology and evolution,1 plant engineering,1 plant foods for human nutrition,2 plant genetic resources,1 plant genome,1 plant growth regulation,1 plant health progress,1 plant journal,2 plant methods,1 plant molecular biology,1 plant molecular biology reporter,1 plant omics,1 plant pathology,2 plant pathology journal,-1 plant perspectives,-1 plant phenomics,1 plant physiology,3 plant physiology and biochemistry,1 plant production science,1 plant science,1 plant signaling and behavior,1 plant soil and environment,1 plant species biology,1 plant stress,1 plant systematics and evolution,1 plant-environment interactions,1 planta,1 planta medica,1 plants,-1 "plants, people, planet",1 plari,-1 plasma,-1 plasma and fusion research,1 plasma chemistry and plasma processing,1 plasma devices and operations,1 plasma physics and controlled fusion,2 plasma physics reports,1 plasma processes and polymers,1 plasma research express,1 plasma science & technology,1 plasma sources science and technology,1 plasmid,1 plasmonics,1 plastic and aesthetic research,-1 plastic and reconstructive surgery,2 plastic and reconstructive surgery : global open,1 plastic surgery: an international journal,-1 plastic surgical nursing,1 plastics engineering,1 plastics research online,-1 plastics rubber and composites,1 plastičeskaâ hirurgiâ i èstetičeskaâ medicina,-1 platelets,1 platforma obwatelska,-1 platforms & society,1 plating and surface finishing,1 playspace,-1 plaza y valdes,1 plos biology,3 plos climate,1 plos complex systems,1 plos computational biology,3 plos digital health,1 plos genetics,2 plos global public health,1 plos medicine,3 plos mental health,-1 plos neglected tropical diseases,2 plos one,1 plos pathogens,3 plos sustainability and transformation,1 plos water,1 ploughshares,-1 plural editores,1 plural publishing,1 pluralist,1 pluteus,-1 pluto press,1 plys,1 pm press,-1 pm&r,-1 pmla: publications of the modern language association of america,3 pmm journal of applied mathematics and mechanics,1 pmsa publishing,-1 pnas,3 pnas nexus,1 pneuma: the journal of the society for pentecostal studies,1 pneumologie,1 pneumonia,1 po&sie,-1 podoprintti,-1 poe studies,1 poesiavihkot,-1 poetica: zeitschrift fur sprach: und literaturwissenschaft,3 poetiche: letteratura e altro,1 poetics,3 poetics today,3 poetique,3 poetry,1 poetry review,1 poetry wales,-1 pohjalainen yrittäjä,-1 pohjankyrö-lehti,-1 pohjanmaan opettaja,-1 pohjanmaan terveystieteiden päivät,-1 pohjois-karjalan ammattikorkeakoulu,-1 pohjois-karjalan historiallinen yhdistys ry,-1 pohjois-karjalan historiallisen yhdistyksen vuosikirja,1 pohjois-savon sairaanhoitopiirin julkaisuja,-1 pohjois-savon sotaveteraanipiirin jouluviesti,-1 pohjois-suomen historiallinen yhdistys,-1 pohjois-suomen sosiaalialan osaamiskeskuksen julkaisusarja,-1 pohjoisen tekijät : lapin amkin asiantuntijablogi,-1 pohjoisen tekijät : lapin ammattikorkeakoulun julkaisuja,-1 pohjola-norden,-1 pohjolan historiankirjoitus,-1 pohto oy,-1 poiesis und praxis,1 point of care,-1 pokroky matematiky : fyziky a astronomie,-1 polanyiana,1 polar biology,1 polar geography,1 polar libraries bulletin,-1 polar record,1 polar research,1 polar science,1 poleemi,-1 polemos,-1 polhem,1 police practice and research,1 police quarterly,1 policing,1 policing and society,2 policing: an international journal of police strategies and management,1 policy & practice,-1 policy and internet,1 policy and politics,2 policy and practice in health and safety,1 policy and society,1 policy brief,-1 policy brief,1 policy brief (unesco institute for information technologies in education),-1 policy design and practice,1 policy futures in education,1 policy options,-1 policy press,1 policy reviews in higher education,1 policy sciences,2 policy studies,1 policy studies journal,3 "policy, politics, and nursing practice",1 polifonia,1 poligrafi,-1 poliisiammattikorkeakoulu,-1 poliisiammattikorkeakoulun katsauksia,-1 poliisiammattikorkeakoulun oppikirjat,-1 poliisiammattikorkeakoulun raportteja,-1 poliisiammattikorkeakoulun tutkimuksia,1 poliisikoira,-1 poliittinen talous,1 poliittisen historian julkaisuja,-1 poliittiset kuplat,-1 poliklinikka,-1 polilingvialʹnostʹ i transkulʹturnye praktiki,1 polimax,-1 polimeros: ciencia e tecnologia,-1 polimery,-1 poliolehti,-1 polis,1 polis: politicheskie issledovaniya,1 polish botanical society,-1 polish cartographical review,-1 polish journal for american studies,1 polish journal of chemical technology,1 polish journal of ecology,1 polish journal of english studies,1 polish journal of environmental studies,1 polish journal of food and nutrition sciences,1 polish journal of microbiology,1 polish journal of natural sciences. supplement,-1 polish journal of pathology,-1 polish journal of sport and tourism,-1 polish journal of veterinary sciences,1 polish maritime research,1 polish music journal,1 polish polar research,1 polish political science,1 polish review,1 polish sociological review,1 polish yearbook of international law,1 polistampa,-1 politechnika gdanska wydawnictwo,-1 politechnika lubelska,-1 politecnico di milano,-1 politeija,-1 politeja,1 politex: political expertise journal,1 politica,-1 politica antica,1 politica del diritto,1 politica y cultura,1 politica y gobierno,-1 politica: tidsskrift for politisk videnskab,1 political analysis,3 political and legal anthropology review,1 political behavior,3 political communication,3 political geography,3 political philosophy,1 political psychology,2 political quarterly,1 political research exchange,1 political research quarterly,3 political science,1 political science quarterly,1 political science research and methods,2 political studies,3 political studies review,1 political theology,1 political theory,3 politicheskaja lingvistika,1 politicka ekonomie,1 politicka misao,1 politické vedy,1 politics,1 politics & policy,1 politics and animals,-1 politics and gender,2 politics and governance,1 politics and religion,1 politics and society,3 politics and the life sciences,1 politics in central europe,1 politics of the low countries,1 politics philosophy and economics,2 "politics, groups, and identities",1 "politics, religion & ideology",1 politiikan ja talouden tutkimuksen laitoksen julkaisuja,-1 politiikasta.fi,-1 politiikka,2 politiken,-1 politikon,1 politique africaine,1 politique etrangere,1 politique europeenne,1 politische vierteljahresschrift,1 politisches lernen,-1 politisk revy,1 politix,1 političeskaâ nauka,-1 političke analize,-1 politologický časopis,1 polity,1 polity press,3 poljarnyj vestnik,1 poljin,-1 pollack periodica,1 pollution engineering,1 polonica,1 polska akademia nauk,-1 polski proces cywilny,-1 polski przeglad dyplomatyczny-polish diplomatic review,1 polskie archiwum medycyny wewnetrznej,1 polskie towarzystwo bezpieczeństwa i niezawodności,-1 polskie towarzystwo informatyczne,-1 polycyclic aromatic compounds,1 polyhedron,1 polymer,1 polymer bulletin,1 polymer chemistry,2 polymer composites,1 polymer degradation and stability,1 polymer engineering and science,1 polymer international,1 polymer journal,1 polymer reviews,1 polymer science series a,1 polymer science series b,1 polymer science series c,1 polymer testing,1 polymer-plastics technology and engineering,1 polymer: korea,-1 polymers,-1 polymers and polymer composites,1 polymers for advanced technologies,1 polymers from renewable resources,1 polymorfi,-1 polyolefins journal,-1 polyphenols communication,-1 polyteknisk forlag,1 política común,1 pomegranate,1 pomorania antiqua,-1 ponta de lança,1 ponte,1 pontes,-1 pontifical institute of mediaeval studies,-1 "pontificia universidad católica del perú, fondo editorial",-1 pontificia università gregoriana editrice,-1 pontificium institutum biblicum,1 ponto-baltica,1 poppis,-1 popular communication,1 popular culture review,1 popular inquiry,1 popular music,3 popular music and society,3 popular music history,1 popular musicology online,1 population,1 population & sociétés,-1 population and development review,3 population and environment,1 population bulletin,1 population ecology,1 population health management,1 population health metrics,1 population medicine,1 population research and policy review,1 population space and place,1 population studies,1 population studies : a journal of demography,2 populism,1 populär arkeologi,-1 poradnik jezykowy,1 poratek uutiset,-1 porcine health management,1 porilaine,-1 porin kirkkosanomat,-1 porin taidemuseo,-1 porin taidemuseon julkaisuja,-1 porn studies,1 poromies,-1 porras,-1 porrassalmi,-1 port technology international,-1 porta linguarum,1 porta linguarum orientalium,1 portal forlag,1 portal: journal of multidisciplinary international studies,1 portal: libraries and the academy,1 portland international conference on management of engineering and technology,-1 portland press,1 porto biomedical journal,-1 portti,-1 portugalia,1 portugaliae mathematica,1 portugese journal of sport sciences-revista portuguesa de ciências do desporto,1 portugese studies review,1 portuguese economic journal,1 portuguese literary and cultural studies,1 portuguese studies,1 pos proceedings of science,-1 poseidon förlag,-1 positif,1 positio,-1 positioning,-1 positions: east asia cultures critique,2 positivity,1 posiva oy,-1 possibility studies and society,1 post classical archaeologies,1 post script,1 post-communist economies,1 post-medieval archaeology,2 post-soviet affairs,2 post: a review of poetry studies,-1 postcolonial directions in education,1 postcolonial studies,2 postcolonial text,1 postdigital science and education,1 postepy w kardiologii interwencyjnej,1 postgraduate medical journal,1 postgraduate medicine,1 postharvest biology and technology,2 postimees,-1 postmedieval-a journal of medieval cultural studies,-1 postmetropolis editorial,-1 postmodern culture,1 postępy dermatologii i alergologii,1 potato research,1 potential analysis,2 potilaan lääkärilehti,-1 potschefstroom electronic law journal,1 potsdam universitätsverlag,1 poultry science,1 pouvoirs,-1 poveri,-1 poverty and development working papers,-1 powder diffraction,1 powder metallurgy,1 powder metallurgy and metal ceramics,1 powder technology,2 powders,-1 power,1 power and education,1 power conversion intelligent motion europe international exhibition and conference,-1 power electronic devices and components,1 power engineering,1 power engineering and optimization conference,-1 power institutions in post-soviet societies,1 power technology and engineering,1 powerplant chemistry,-1 poznan studies in contemporary linguistics,1 poznan studies in the philosophy of the sciences and the humanities,1 ppar research,-1 pqr-kultur,-1 prabandhan : indian journal of management,-1 prace i materialy muzeum archeologicznego i etnograficznego w lodzi: seria archeologiczna,1 prace naukowe - politechnika warszawska. transport,-1 prace naukowe uniwersytetu ekonomicznego we wroclawiu,-1 prace polonistyczne,1 prace z dejin techniky a prirodnich ved,1 practical action publishing,1 practical assessment research and evaluation,1 practical laboratory medicine,1 practical matters,1 practical neurology,1 practical papers for the bible translator,1 practical theology,1 practice,1 practice periodical on structural design and construction,1 practicing anthropology,-1 practicus,-1 practitioner,1 praeger,2 praehistorische zeitschrift,2 praesens verlag,1 pragmalinguistica,1 pragmatic and observational research,1 pragmatic case studies in psychotherapy,1 pragmatics,2 pragmatics and cognition,2 pragmatics and society,2 pragmatism today,1 pragmática sociocultural,1 prague economic papers,1 prague medical report,-1 prague stringology conference,1 prakseologia,1 praktika tes en athenais archaiologikes etaireais,1 praktische metallographie-practical metallography,1 praktische theologie,1 praktische tierarzt,1 praktiske grunde: tidsskrift for kultur og samfunnsvitenskab,1 praktyka teoretyczna,1 pram?na,1 prasad balan iyer,-1 pratique vétérinaire équine,-1 pratiques,1 pratiques psychologiques,1 pravda severa,1 pravna fakulteta ljubljana,-1 pravni fakultet sveučilišta u zagrebu,-1 pravo,-1 pravo i politika,-1 pravo ta ìnnovacìĭne suspìlʹstvo,1 pravoslavnaya e`nciklopediya,-1 pravoslavny`j svyato-tixonovskij gumanitarny`j universitet,-1 praxis der kinderpsychologie und kinderpsychiatrie,-1 precambrian research,3 precision agriculture,1 precision chemistry,1 precision engineering: journal of the international societies for precisionengineering and nanotechnology,1 precision nanomedicine,-1 precollege philosophy and public practice,1 "predpriyatie ""novaya texnika""",-1 "preferred meeting management, incorporated",-1 pregnancy hypertension,1 prehistoire anthropologie mediterraneennes,1 prehled vyzkumi,1 prehospital and disaster medicine,1 prehospital emergency care,1 preistoria alpina,1 premiss förlag,-1 prenatal diagnosis,1 prensas de la universidad de zaragoza,1 preparative biochemistry and biotechnology,1 prescrire international,1 presence : virtual and augmented reality,1 presence africaine,1 presence francophone,1 present environment and sustainable development,1 preservation,1 presidential studies quarterly,1 preslia,1 press start,-1 presse medicale,1 presses de l'ifpo,-1 presses de l'inalco,1 presses de l`université de montréal,1 presses de l`université du québec,1 presses de l`université laval,1 presses de sciences po,1 presses des mines,-1 presses sorbonne nouvelle,1 presses universitaires blaise pascal,1 presses universitaires d`aix-marseille,1 presses universitaires de bordeaux,1 presses universitaires de caen,1 presses universitaires de france,2 presses universitaires de franche-comté,1 presses universitaires de grenoble,-1 presses universitaires de liège,1 presses universitaires de louvain,1 presses universitaires de lyon,1 presses universitaires de paris ouest,-1 presses universitaires de reims,1 presses universitaires de rennes,1 presses universitaires de sainte gemme,-1 presses universitaires de strasbourg,1 presses universitaires du mirail,1 presses universitaires du septentrion,1 presses universitaires paris sorbonne,1 preternature,-1 preventing chronic disease,1 preventing school failure,1 prevention science,1 preventive cardiology,1 preventive medicine,2 preventive medicine reports,1 preventive veterinary medicine,3 prezidentskaya biblioteka imeni b.n.el`cina,-1 prešovská univerzita,-1 prilozi instituta za arheologiju,1 prilozi povijesti umjetnosti u dalmaciji,1 prilozi: instituta za istoriju,1 primary care,1 primary care diabetes,1 primary care psychiatry,1 primary dental journal,-1 primary health care research and development,1 primary health care: open access,-1 primates,1 prime research on education,-1 primenjena psihologija,-1 primer: peer-review reports in medical education research,-1 primerjalna knjizevnost,1 primitive tider,1 primum verbum,-1 primus,1 prince of songkla university,-1 princeton architectural press,1 princeton university press,3 principia: revista internacional de epistemologia,1 "principles, systems and applications of ip telecommunications conference",-1 principy èkologii,-1 print pro,-1 print quarterly,2 print&media,-1 printing media technology,-1 prion,1 priroda,-1 priscilla papers,-1 prism,-1 prism,1 prison journal,1 prispevki za novejso zgodovino,1 privacy studies journal,1 privatrettsfondet,-1 prm+,-1 pro civitate austriae,1 pro ecclesia,1 pro et contra,-1 pro et contra,1 pro houtskär,-1 pro interior,-1 pro ligno,1 pro publico bono – magyar közigazgatás,-1 pro resto,-1 pro terra,-1 pro terveys,-1 pro universitaria,-1 pro-ed,1 proagria itä-suomi,-1 proagria keski-pohjanmaa,-1 proagria keskusten liiton julkaisuja,-1 proagrian hankejulkaisut,-1 probabilistic engineering mechanics,1 probability and mathematical physics,1 probability and mathematical statistics,1 probability in the engineering and informational sciences,1 probability surveys,1 probability theory and related fields,3 "probability, uncertainty and quantitative risk",1 probation journal: the journal of community and criminal justice,1 probiotics and antimicrobial proteins,1 problema: anuario de filosofía y teoría del derecho,1 probleme der aegyptologie,1 problemi di critica goldoniana,1 problemi ohoroni pracì v ukraïnì,-1 problemnyj analiz i gosudarstvenno-upravlen?eskoe proektirovanie,-1 problemos,1 problems and perspectives in management,-1 problems in music pedagogy,1 problems of economics,1 problems of education in the 21st century,-1 problems of information transmission,1 problems of management in the 21st century,-1 problems of nonlinear analysis in enginerring systems,1 "problems of physics, mathematics and technics",-1 problems of post-communism,2 problemy ekorozwoju,1 problemy matematičeskogo analiza,-1 problemy muzykalʹnoj nauki,1 problemy polityki społecznej,-1 problemy razvitiâ territorii,1 problemy sovremennogo obrazovanija,-1 problemy teorii i praktiki upravleniâ,1 problemy zarządzania,-1 probus,1 procedia cirp,1 procedia computer science,1 procedia economics and finance,-1 procedia engineering,1 "procedia environmental science, engineering and management",1 procedia environmental sciences,-1 procedia iutam,1 procedia manufacturing,1 procedia materials science,-1 procedia structural integrity,1 procedia technology,-1 procedia: social and behavioral sciences,1 procedural aspects of international law,1 proceeding of inss,1 proceeding of international conference on entrepreneurship and business management,-1 proceeding of the institute of applied mathematics,-1 proceedings,-1 proceedings,1 proceedings (conference on design and semantics of form and movement),1 proceedings (eu pvsec),1 proceedings (fig international congress),-1 proceedings (ieee international conference on bioinformatics and biomedicine),1 proceedings (ieee international conference on healthcare informatics),1 proceedings (ieee international conference on mobile data management),1 proceedings (ieee international symposium on computer-based medical systems),1 proceedings (ieee international symposium on service-oriented system engineering),1 proceedings (ieee/acm international conference on mining software repositories),1 proceedings (international conference on electrical machines),1 proceedings (international congress on project management and engineering),-1 proceedings - air & waste management association. meeting,-1 proceedings - electrochemical society,1 proceedings : annual ias-sts conference,-1 proceedings : annual meeting of the international society of the learning sciences,-1 proceedings : annual new zealand built environment research symposium,-1 proceedings : annual reliability and maintainability symposium,1 proceedings : asia pacific software engineering conference,1 proceedings : australasian database conference,-1 proceedings : computer graphics international,1 "proceedings : design, automation, and test in europe conference and exhibition",1 proceedings : euromicro conference on digital system design,1 proceedings : euromicro conference on software engineering and advanced applications,1 proceedings : euromicro workshop on parallel and distributed processing,-1 proceedings : european academy of sciences and arts,1 proceedings : european conference for modelling and simulation,1 proceedings : european conference on noise control,-1 proceedings : fig working week,-1 proceedings : genome informatics workshop,1 proceedings : grid conference,1 proceedings : ieee asia-pacific conference on circuits and systems,1 proceedings : ieee computer security foundations symposium,1 proceedings : ieee conference on computational complexity,1 proceedings : ieee international conference on cloud computing technology and science,1 proceedings : ieee international conference on computer design,1 proceedings : ieee international conference on intelligent engineering systems,-1 proceedings : ieee international conference on program comprehension,1 proceedings : ieee international conference on the properties and applications of dielectric materials,1 proceedings : ieee international electric machines and drives conference,1 proceedings : ieee international parallel and distributed processing symposium,2 proceedings : ieee international symposium for design and technology in electronic packaging,1 proceedings : ieee international symposium on defect and fault tolerance in vlsi systems,1 proceedings : ieee international symposium on high-assurance systems engineering,-1 proceedings : ieee international working conference on source code analysis and manipulation,1 proceedings : ieee international workshop on metrology for industry 4.0 and iot,1 proceedings : ieee real-time and embedded technology and applications symposium,1 proceedings : ieee symposium on computers and communications,1 proceedings : ieee vlsi test symposium,1 proceedings : ieee/acm international conference on software engineering companion,1 proceedings : ieee/acm international symposium on distributed simulation and real time applications,1 proceedings : ifcis international conference on cooperative information systems,1 proceedings : information theory workshop,-1 proceedings : international computer software & applications conference,1 proceedings : international conference of the learning sciences,1 proceedings : international conference on 3-d digital imaging and modeling,1 proceedings : international conference on advanced technologies for communications,-1 proceedings : international conference on computer communications and networks,1 proceedings : international conference on dependable systems and networks,1 proceedings : international conference on image processing,1 proceedings : international conference on industrial & mechanical engineering and operations management,-1 proceedings : international conference on industrial engineering and operations management,-1 proceedings : international conference on information visualisation,1 proceedings : international conference on port and ocean engineering under arctic conditions,-1 proceedings : international conference on tools with artificial intelligence,1 "proceedings : international congress of food technologists, biotechnologists and nutritionists",-1 proceedings : international congress of meat science and technology,-1 proceedings : international congress on modelling and simulation,-1 proceedings : international coral reef symposium,-1 proceedings : international database engineering and applications symposium,1 proceedings : international enterprise distributed object computing conference,1 proceedings : international forum on design languages,-1 proceedings : international network for didactic research in university mathematics,-1 proceedings : international symposium on discharges and electrical insulation in vacuum,1 proceedings : international symposium on high-performance computer architecture,1 proceedings : international symposium on low power electronics and design,1 proceedings : international symposium on mixed and augmented reality,1 "proceedings : international symposium on modeling, analysis, and simulation of computer and telecommunication systems",1 proceedings : international symposium on multiple-valued logic,1 proceedings : international symposium on software reliability engineering,1 proceedings : international workshop on database and expert systems applications,1 proceedings : international workshop on temporal representation and reasoning,1 proceedings : international workshops on parallel processing,1 proceedings : real-time systems symposium,1 proceedings : simulation symposium,1 proceedings : symposium on computer arithmetic,1 proceedings : symposium on reliable distributed systems,1 proceedings : thermal performance of the exterior envelopes of whole buildings,-1 proceedings : winter simulation conference,-1 proceedings : workshop on hot topics in operating systems,1 proceedings cscs,-1 proceedings elmar,1 proceedings from the document academy,-1 proceedings gsp,-1 proceedings icil,-1 proceedings ieee international conference on emerging technologies and factory automation,1 proceedings ifkad,-1 "proceedings in adaptation, learning and optimization",1 proceedings in applied mathematics and mechanics : pamm,1 proceedings in conference of informatics and management sciences,-1 proceedings in electronic international interdisciplinary conference,-1 proceedings in food system dynamics,-1 proceedings in global virtual conference,-1 proceedings in international virtual research conference in technical disciplines,-1 proceedings in radiochemistry,-1 proceedings international network on timber engineering research,-1 proceedings international radar symposium,-1 proceedings mea meeting,-1 proceedings of acm on programming languages,1 proceedings of caol,-1 proceedings of coling,1 proceedings of conference of open innovations association fruct,1 proceedings of drs,1 proceedings of esscirc,1 proceedings of forum acusticum,-1 proceedings of iahs,1 proceedings of icsssm,1 "proceedings of ieee international conference on teaching, assessment, and learning for engineering",-1 proceedings of ieee sensors,1 proceedings of international agriculture innovation conference,-1 proceedings of international conference on asia pacific business innovation technology,-1 proceedings of international conference on computational thinking education,-1 proceedings of international conference on the advancement of steam,-1 proceedings of international conference on virtual systems and multimedia,1 proceedings of international joint conference on neural networks,1 proceedings of machine learning research,1 proceedings of meetings on acoustics,-1 proceedings of peerage of science,-1 proceedings of smart learning excellence conference,-1 proceedings of spie : the international society for optical engineering,-1 proceedings of the ... annual conference on research in undergraduate mathematics education,-1 proceedings of the ... connected learning summit,-1 proceedings of the ... dmi: academic design management conference,-1 proceedings of the ... international conference on auditory display,1 proceedings of the ... international conference on economics and social sciences.,-1 "proceedings of the ... international conference on intellectual capital, knowledge management & organisational learning",-1 proceedings of the ... international symposium on marine propulsors,-1 proceedings of the ... isarc,-1 proceedings of the ... multidisciplinary international conference on scheduling: theory and applications,1 proceedings of the ... physics education research conference,-1 "proceedings of the ... workshop on mathematics, computer science and technical education",-1 proceedings of the aaai conference on artificial intelligence,2 proceedings of the academy of natural sciences of philadelphia,1 proceedings of the acm conference on electronic commerce,1 proceedings of the acm in computer graphics and interactive techniques,1 proceedings of the acm international symposium on mobility management and wireless access,1 proceedings of the acm on human-computer interaction,2 "proceedings of the acm on interactive, mobile, wearable and ubiquitous technologies",2 proceedings of the acm on software engineering,1 proceedings of the acm sigchi symposium on engineering interactive computing systems,1 proceedings of the acm sigcomm internet measurement conference,1 proceedings of the acm sigplan symposium on principles & practice of parallel programming,1 proceedings of the acm workshop on embedded sensing systems for energy-efficiency in buildings,1 proceedings of the american catholic philosophical association,1 proceedings of the american control conference,1 proceedings of the american mathematical society,2 proceedings of the american mathematical society series b,2 proceedings of the american philosophical society,1 proceedings of the american society of international law annual meeting,-1 proceedings of the annual boston university conference on language development,-1 proceedings of the annual cad conference,-1 proceedings of the annual conference of cais,-1 proceedings of the annual conference of the ieee industrial electronics society,1 proceedings of the annual global sales science institute conference,-1 proceedings of the annual hawaii international conference on system sciences,1 proceedings of the annual international conference on architecture and civil engineering,-1 "proceedings of the annual international conference on control, automation and robotics",-1 proceedings of the annual macromarketing conference,-1 proceedings of the annual meeting of the academy of international business,-1 proceedings of the annual meeting of the berkeley linguistics society,1 proceedings of the annual meeting of the isss,-1 proceedings of the annual pronunciation in second language learning and teaching conference,-1 proceedings of the aristotelian society,2 proceedings of the asia and south pacific design automation conference,-1 proceedings of the asiacall international conference,-1 proceedings of the asian technology conference in mathematics,-1 proceedings of the association for information science and technology,1 proceedings of the association for library and information science education annual conference,-1 proceedings of the australasian language technology workshop,1 proceedings of the australian software engineering conference,1 proceedings of the balkan conference in informatics,-1 proceedings of the biennial baltic electronics conference,-1 proceedings of the biological society of washington,1 proceedings of the boston area colloquium in ancient philosophy,1 proceedings of the british academy,1 proceedings of the cirp seminars on manufacturing systems,1 proceedings of the combustion institute,2 proceedings of the conference new trends in translation and technology,-1 proceedings of the custom integrated circuits conference,1 proceedings of the danish institute of athens,1 proceedings of the design society,1 proceedings of the edinburgh mathematical society,1 proceedings of the engineering education for sustainable development conference,-1 proceedings of the entomological society of washington,1 proceedings of the estonian academy of sciences,1 proceedings of the european conference on antennas and propagation,1 proceedings of the european conference on cyber warfare and security,1 proceedings of the european conference on e-government,-1 proceedings of the european conference on e-learning,-1 proceedings of the european conference on entrepreneurship and innovation,-1 proceedings of the european conference on games-based learning,-1 proceedings of the european conference on information management and evaluation,-1 proceedings of the european conference on intellectual capital,-1 proceedings of the european conference on knowledge management,-1 "proceedings of the european conference on management, leadership and governance",-1 proceedings of the european conference on research methods in business and management,-1 proceedings of the european marketing academy,-1 proceedings of the european society for aesthetics,-1 proceedings of the european solid state device research conference,1 proceedings of the european test workshop,1 proceedings of the european turbomachinery conference,1 proceedings of the geologists association,1 proceedings of the hamburg international conference of logistics,-1 proceedings of the human factors and ergonomics society annual meeting,-1 proceedings of the human factors and ergonomics society europe chapter annual conference,-1 proceedings of the iahr world congress,-1 proceedings of the iass annual symposium,-1 proceedings of the ica,-1 proceedings of the ice: urban design and planning,1 proceedings of the ieee,3 proceedings of the ieee international conference on intelligent transportation systems,-1 proceedings of the ieee conference on decision & control,1 proceedings of the ieee conference on nanotechnology,1 "proceedings of the ieee international conference on acoustics, speech, and signal processing",2 proceedings of the ieee international conference on services computing,1 proceedings of the ieee international symposium on consumer electronics,1 proceedings of the ieee international symposium on hardware-oriented security and trust,1 proceedings of the ieee international symposium on high performance distributed computing,1 proceedings of the ieee international symposium on industrial electronics,1 proceedings of the ieee radar conference,1 proceedings of the ieee sensor array and multichannel signal processing workshop,1 proceedings of the ieee/ras-embs international conference on biomedical robotics and biomechatronics,1 proceedings of the ieee/rsj international conference on intelligent robots and systems,1 proceedings of the indian academy of sciences : mathematical sciences,1 proceedings of the innovative applications of artificial intelligence conference,1 proceedings of the institute of navigation : international technical meeting,1 proceedings of the institution of civil engineers : construction materials,1 proceedings of the institution of civil engineers : energy,1 proceedings of the institution of civil engineers : waste and resource management,1 "proceedings of the institution of civil engineers. management, procurement and law",1 proceedings of the institution of civil engineers: bridge engineering,1 proceedings of the institution of civil engineers: civil engineering,1 proceedings of the institution of civil engineers: engineering sustainability,1 proceedings of the institution of civil engineers: geotechnical engineering,1 proceedings of the institution of civil engineers: ground improvement,1 proceedings of the institution of civil engineers: maritime engineering,1 proceedings of the institution of civil engineers: municipal engineer,1 proceedings of the institution of civil engineers: structures and buildings,1 proceedings of the institution of civil engineers: transport,1 proceedings of the institution of civil engineers: water management,1 proceedings of the institution of mechanical engineers : part p,1 proceedings of the institution of mechanical engineers part a: journal of power and energy,1 proceedings of the institution of mechanical engineers part b: journal of engineering manufacture,1 proceedings of the institution of mechanical engineers part c: journal of mechanical engineering science,1 proceedings of the institution of mechanical engineers part d: journal of automobile engineering,1 proceedings of the institution of mechanical engineers part e: journal of process mechanical engineering,1 proceedings of the institution of mechanical engineers part f: journal of rail and rapid transit,1 proceedings of the institution of mechanical engineers part g: journal of aerospace engineering,1 proceedings of the institution of mechanical engineers part h: journal of engineering in medicine,1 proceedings of the institution of mechanical engineers part i: journal of systems and control engineering,1 proceedings of the institution of mechanical engineers part j: journal of engineering tribology,1 proceedings of the institution of mechanical engineers part k: journal of multi-body dynamics,1 proceedings of the institution of mechanical engineers part l: journal of materials-design and applications,1 proceedings of the institution of mechanical engineers part m: journal of engineering for the maritime environment,1 proceedings of the institution of mechanical engineers part o: journal of risk and reliability,1 proceedings of the intellectbase international consortium,-1 proceedings of the international aaai conference on weblogs and social media,1 proceedings of the international association for business and society,-1 proceedings of the international association of maritime universities conference,-1 proceedings of the international astronautical congress,-1 proceedings of the international astronomical union,1 proceedings of the international business information management association conference,-1 proceedings of the international cdio conference,1 proceedings of the international colour association (aic) conference,-1 proceedings of the international conference egov-cedem-epart,1 proceedings of the international conference of contemporary affairs in architecture and urbanism,1 proceedings of the international conference of daaam baltic,-1 proceedings of the international conference on ai research,-1 proceedings of the international conference on automated planning and scheduling,1 proceedings of the international conference on business excellence,-1 "proceedings of the international conference on civil, structural and transportation engineering",-1 proceedings of the international conference on computer-aided architectural design research in asia,1 proceedings of the international conference on condition monitoring and asset management,-1 proceedings of the international conference on digital audio effects,1 proceedings of the international conference on document analysis and recognition,1 "proceedings of the international conference on e-commerce, e-administration, e-society, e-education, and e-technology",-1 proceedings of the international conference on education research,-1 "proceedings of the international conference on efficiency, cost, optimization, simulation and environmental impact of energy systems",1 proceedings of the international conference on electronic business,-1 proceedings of the international conference on engineering design,1 proceedings of the international conference on european association for education in elect rial and information engineering.,-1 "proceedings of the international conference on fluid flow, heat and mass transfer",-1 proceedings of the international conference on gender research,-1 proceedings of the international conference on image analysis and signal processing,1 "proceedings of the international conference on information management, innovation management and industrial engineering",-1 proceedings of the international conference on information quality,1 proceedings of the international conference on innovations in information technology,1 proceedings of the international conference on innovative technologies,-1 proceedings of the international conference on knowledge capture,1 proceedings of the international conference on logistics and transport,-1 proceedings of the international conference on networking and distributed computing,1 proceedings of the international conference on new interfaces for musical expression,-1 proceedings of the international conference on numerical simulation of optoelectronic devices,-1 proceedings of the international conference on optimisation of electrical and electronic equipment,-1 proceedings of the international conference on parallel processing,1 proceedings of the international conference on progress in additive manufacturing,-1 proceedings of the international conference on research challenges in information science,1 proceedings of the international conference on scientometrics and informetrics,1 proceedings of the international conference on solid waste technology and management,-1 proceedings of the international conference on tourism research,-1 proceedings of the international conference on web information systems engineering,1 proceedings of the international congress of phonetic sciences,1 proceedings of the international congress on sound and vibration,-1 proceedings of the international display workshops,-1 proceedings of the international institute of space law,-1 proceedings of the international interdisciplinary business-economics advancement conference,-1 proceedings of the international iscram conference,-1 proceedings of the international peat congress,-1 "proceedings of the international scientific conference ""economic science for rural development""",-1 "proceedings of the international scientific conference ""strategies xxi""",-1 "proceedings of the international society for magnetic resonance in medicine, scientific meeting and exhibition",-1 proceedings of the international symposium for health information management research,-1 proceedings of the international symposium on business and management,-1 "proceedings of the international symposium on modeling and optimization in mobile, ad hoc, and wireless networks",1 proceedings of the international symposium on parallel and distributed processing with applications,1 proceedings of the international symposium on symbolic and algebraic computation,1 proceedings of the international symposium on technology and society,1 proceedings of the international thermal spray conference,1 proceedings of the international topical meeting on high temperature reactor technology,1 proceedings of the japan academy series a: mathematical sciences,1 proceedings of the japan academy series b: physical and biological sciences,1 proceedings of the karlsruhe workshop on software radios,-1 "proceedings of the latvian academy of sciences : section b, natural, exact and applied sciences",-1 proceedings of the lfg conference,1 proceedings of the linnean society of new south wales,1 proceedings of the london mathematical society,3 proceedings of the manitoba conference on numerical mathematics,1 proceedings of the national academy of sciences,3 proceedings of the national academy of sciences india section b: biologicalsciences,1 proceedings of the national academy of sciences of the united states of america,3 proceedings of the nordic insulation symposium,1 proceedings of the north american academy of liturgy annual meeting,1 proceedings of the northern lights deep learning workshop,1 proceedings of the nutrition society,1 proceedings of the pme conference,1 proceedings of the prehistoric society,2 proceedings of the risø international symposium on materials science,1 proceedings of the royal irish academy section c : archaeology celtic studies history linguistics literature,1 proceedings of the royal society a : mathematical physical and engineering sciences,2 proceedings of the royal society b : biological sciences,3 proceedings of the royal society of edinburgh section a: mathematics,1 proceedings of the satellite division's international technical meeting,1 proceedings of the seminar for arabian studies,1 proceedings of the siam international conference on data mining,1 proceedings of the society for computation in linguistics,-1 proceedings of the society of antiquaries in scotland,1 proceedings of the sound and music computing conferences,1 proceedings of the steklov institute of mathematics,1 proceedings of the symposium on operating systems principles,1 proceedings of the teaching and education conferences,-1 proceedings of the upi international conference on technical and vocational education and training,-1 proceedings of the virgil society,1 proceedings of the western pharmacology society,1 proceedings of the working conference on reverse engineering,1 proceedings of the world congress of the international association for semiotic studies,-1 "proceedings of the world congress on civil, structural, and environmental engineering",-1 proceedings of the world congress on electrical engineering and computer systems and science,-1 "proceedings of the world congress on mechanical, chemical, and material engineering",-1 "proceedings of the world congress on momentum, heat and mass transfer.",-1 proceedings of the world congress on new technologies,-1 proceedings of the yorkshire geological society,1 proceedings of the zoological society,1 proceedings on privacy enhancing technologies,1 proceedings quality in research,-1 "proceedings, the international symposium on combinatorial search",1 proceedings: international conference on application of concurrency to system design,1 procesamiento del lenguaje natural,1 process biochemistry,1 process integration and optimization for sustainability,1 process safety and environmental protection,1 process safety progress,1 process science,-1 process studies,1 processeng engineering,-1 processes,-1 procomma academic,1 procompal publicaciones,1 producciones cima,-1 production,-1 production & manufacturing research,1 production & operations management society,-1 production and inventory management journal,1 production and operations management,3 production engineering,1 production engineering archives,1 production planning and control,1 productions animales,1 productivity press,-1 proekt baltiâ,-1 profese online,-1 profesional de la informacion,1 profesorado: revista de curriculum y formacion de profesorado,-1 professional development in education,1 professional engineering,1 professional engineering publishing,1 professional geographer,2 professional psychology: research and practice,1 professional safety,-1 professioni infermieristiche,1 professions and professionalism,1 professor ian clarke,-1 profi-tisk group,-1 profiitti,-1 profil verlag,1 profilaktičeskaâ i kliničeskaâ medicina,-1 prognostics & health management society,-1 program visualization workshop,-1 program: electronic library and information systems,1 programa final e livro de resumos congresso brasileiro de engenharia química,-1 programme & abstract book : international conference on engineering design,-1 programming and computer software,1 programmnye produkty i sistemy,-1 progres en urologie,1 progress in additive manufacturing,1 progress in aerospace sciences,1 progress in artificial intelligence,1 progress in biochemistry and biophysics,1 progress in biomedical engineering,1 progress in biomedical optics and imaging,1 progress in biophysics and molecular biology,1 progress in brain research,1 progress in business innovation and technology management,-1 progress in cardiovascular diseases,1 progress in chemistry,-1 progress in colloid and polymer science,1 "progress in color, colorants and coatings",1 progress in computational fluid dynamics,1 progress in crystal growth and characterization of materials,2 progress in development studies,1 progress in disaster science,1 progress in drug research,1 progress in earth and planetary science,1 progress in electromagnetics research,2 progress in electromagnetics research : letters,1 progress in electromagnetics research b,1 progress in electromagnetics research c,1 progress in electromagnetics research m,1 progress in electromagnetics research symposium,1 progress in energy,-1 progress in energy and combustion science,2 progress in experimental tumor research,1 progress in health sciences,-1 progress in histochemistry and cytochemistry,1 progress in human geography,3 progress in industrial ecology: an international journal,1 progress in inorganic chemistry,1 progress in lipid research,1 progress in materials science,2 progress in medicinal chemistry,1 progress in molecular biology and translational science,1 progress in natural science-materials international,1 progress in neuro-psychopharmacology and biological psychiatry,1 progress in neurobiology,2 progress in nuclear energy,1 progress in nuclear magnetic resonance spectroscopy,1 progress in nuclear science and technology,1 progress in nutrition,-1 progress in oceanography,1 progress in optics,1 progress in organic coatings,1 progress in orthodontics,1 progress in palliative care,1 progress in particle and nuclear physics,3 progress in pediatric cardiology,1 progress in photovoltaics,2 progress in physical geography,1 progress in physics,-1 progress in planning,2 progress in polymer science,2 progress in preventive medicine,1 progress in quantum electronics,3 progress in reaction kinetics and mechanism,1 progress in responsible tourism,-1 progress in retinal and eye research,3 progress in rubber plastics and recycling technology,1 progress in solid state chemistry,1 progress in surface science,1 progress in transplantation,-1 progress of theoretical and experimental physics,1 progressus,1 proinflow,-1 project leadership and society,1 project management journal,1 project management research and practice,-1 project-based education and other activating strategies in science education,-1 projectics,-1 projections,-1 projections: the journal for movies and mind,2 projektimaailma,-1 projektiuutiset,-1 projektverlag,1 prokla,1 prolegomena,1 prologi : viestinnän ja vuorovaikutuksen tieteellinen aikakauslehti,1 prologos ry,-1 promaint,-1 promet: traffic and transportation,1 prometeica,1 prometeo libros,-1 prometheus,-1 prometheus,1 prooftexts: a journal of jewish literary history,1 propagation of ornamental plants,1 propellants explosives pyrotechnics,1 propelli,-1 property management,1 propo,-1 prora,-1 proscholiki & scholiki ekpaideusi,-1 prose studies,2 prospectiva,-1 prospects,1 prospettiva: rivista di storia dell arte antica e moderna,1 prospäkkäri,-1 prostaglandins and other lipid mediators,1 prostaglandins leukotrienes and essential fatty acids,1 prostate,1 prostate cancer and prostatic diseases,1 prosthetics and orthotics international,1 prostor,1 prosveshcheniye publishing,1 protection and control of modern power systems,2 protection of metals and physical chemistry of surfaces,1 "protection, automation and control world conference",-1 protecţia socială a copilului,-1 protee: theories et pratiques semiotiques,1 protein & cell,1 protein and peptide letters,1 protein engineering design and selection,1 protein expression and purification,1 protein journal,1 protein science,1 proteins: structure function and bioinformatics,1 proteoglycan research,-1 proteome science,1 proteomes,-1 proteomics,1 proteomics clinical applications,1 proteus,1 protist,1 proto-indo-european linguistics,-1 protoplasma,1 protosociology: an international journal of interdisciplinary research,1 proud pen limited,-1 proverbium,1 proviisori,-1 provincia,-1 proxima thule,1 proyecciones,1 prudentia,1 prx energy,1 prx quantum,2 pryvatne bahatoprofilne pidpryyemstvo ekonomika,-1 przeglad archeologiczny,1 przeglad elektrotechniczny,-1 przeglad epidemiologiczny,1 przeglad humanistyczny,1 przeglad menopauzalny,1 przeglad orientalistyczny,1 przeglad papierniczy,-1 przegląd historyczno-wojskowy,1 przegląd filozoficzny,-1 przegląd gastroenterologiczny,-1 przegląd geopolityczny,1 przegląd rusycystyczny,1 przegląd statystyczny,-1 przemysl chemiczny,-1 przestrzen spoleczna,-1 ps: political science and politics,1 psichologija,1 psicologia-reflexao e critica,-1 psicologica,-1 psicología educativa,1 psicothema,-1 psiholingvisticheskie aspekty izuchenia rechevoj deatelnosti,-1 psihologia xxi veka,-1 psihologija,-1 psihologija i ekonomika,-1 psihologiya,-1 psihologičeskaâ nauka i obrazovanie,1 psihološka obzorja,1 psiholìngvìstika,1 psike art,-1 psikhologicheskii zhurnal,-1 pskovskii gosudarstvenny`i pedagogicheskii universitet imeni s. m. kirova,-1 pskovskij gosudarstvenny`j universitet,-1 pskovskij regionologičeskij žurnal,-1 psyart,1 psych,-1 psych journal,1 psyche : a journal of entomology,-1 psyche-zeitschrift fur psychoanalyse und ihre anwendungen,-1 psychiatria danubina,-1 psychiatria fennica,1 psychiatria fennica oy,-1 psychiatria polska,-1 psychiatric annals,1 psychiatric clinics of north america,1 psychiatric genetics,1 psychiatric quarterly,1 psychiatric rehabilitation journal,1 psychiatric services,1 psychiatric times,1 psychiatrie de l'enfant,1 psychiatrikī,1 psychiatrische praxis,1 psychiatry and clinical neurosciences,2 psychiatry investigation,1 psychiatry psychology and law,1 psychiatry research,1 psychiatry research communications,1 psychiatry research: neuroimaging,1 psychiatry: interpersonal and biological processes,1 psychnology journal,1 psycho-educational research reviews,-1 psycho-oncologie,1 psycho-oncology,1 psychoanalysis and history,2 "psychoanalysis, culture and society",1 psychoanalytic dialogues,1 psychoanalytic inquiry,1 psychoanalytic psychology,1 psychoanalytic psychotherapy,1 psychoanalytic quarterly,1 psychoanalytic review,1 psychoanalytic social work,1 psychoanalytic study of the child,1 psychodynamic practice,1 psychodynamic psychiatry,1 psychogeriatrics,1 psychologia,1 psychologica belgica,-1 psychological assessment,3 psychological bulletin,3 psychological inquiry,2 psychological medicine,3 psychological methods,3 psychological record,1 psychological reports,1 psychological research-psychologische forschung,1 psychological review,3 psychological science,3 psychological science in the public interest,3 psychological services,-1 psychological test adaptation and development,1 psychological test and assessment modeling,1 psychological trauma,1 psychologie du travail et des organisations,1 psychologie francaise,-1 psychologie in erziehung und unterricht,1 psychologische rundschau,1 psychologist,1 psychology,-1 psychology & sexuality,1 psychology and aging,3 psychology and behavioral sciences,-1 psychology and cognitive sciences,-1 psychology and developing societies,1 psychology and education,-1 psychology and health,2 psychology and marketing,1 psychology and psychotherapy,1 psychology and society,1 psychology crime and law,1 psychology health and medicine,1 psychology in russia : state of the art,1 psychology in the schools,1 psychology of addictive behaviors,2 psychology of aesthetics creativity and the arts,1 psychology of consciousness,1 psychology of language and communication,1 psychology of learning and motivation,2 psychology of men and masculinity,1 psychology of music,3 psychology of popular media,1 psychology of programming interest group newsletter,-1 psychology of religion and spirituality,1 psychology of sexual orientation and gender diversity,1 psychology of sexualities review,-1 psychology of sport and exercise,1 psychology of violence,1 psychology of well-being,1 psychology of women quarterly,1 psychology press,1 psychology public policy and law,1 psychology research,-1 psychology research and applications,-1 psychology research and behavior management,1 "psychology, community and health",1 "psychology, learning & teaching",1 "psychology, society & education",1 psychometrika,2 psychomusicology,1 psychoneuroendocrinology,2 psychonomic bulletin and review,3 psychopathology,1 psychopharmacology,1 psychopharmakotherapie,1 psychophysiology,2 psychosis,1 psychosomatic medicine,2 psychosomatics,1 psychosozial-verlag,1 psychotherapeut,1 psychotherapie psychosomatik medizinische psychologie,1 psychotherapy,2 psychotherapy and psychosomatics,3 psychotherapy research,2 psychreg journal of psychology,1 psyecology,1 psyke and logos,1 psykoanalyyttinen psykoterapia,1 psykologi,-1 psykologia,2 psykologian opetus- ja tutkimusklinikan julkaisuja,-1 psykoterapia,1 pteridines,1 ptetis publishers,-1 ptr,-1 ptt raportteja,-1 ptt työpapereita,-1 pubblicazioni cassinesi,-1 pubblicazioni di lingua e cultura italiana,-1 public,1 public administration,3 public administration and development,1 public administration and management,1 public administration quarterly,1 public administration research,-1 public administration review,3 public affairs quarterly,1 public and municipal finance,-1 public archaeology,2 public budgeting and finance,1 public choice,1 public culture,3 public finance review,1 public health,1 public health challenges,1 public health ethics,1 public health frontier,-1 public health genomics,1 public health in practice,1 public health nursing,1 public health nutrition,1 public health panorama,1 public health reports,1 public health reviews,1 public historian,2 public history review,1 public history weekly,-1 public infrastructure bulletin,-1 public integrity,1 public law review,1 public law: the constitutional and administrative law of the commonwealth,2 public library quarterly,-1 public management review,3 public money and management,1 public opinion quarterly,3 public organization review,1 public performance and management review,2 public personnel management,1 public policy and administration,1 public procurement law review,2 public reason,1 public relations inquiry,1 public relations journal,1 public relations review,1 public sector economics,-1 public service review,-1 public service review: health and social care,-1 public services quarterly,1 public understanding of science,2 public works management and policy,1 publicacions de la universitat de valència,1 publicacions de l´abadia de montserrat,-1 publicacions i edicions de la universitat de barcelona,-1 publicacions institucionals ua,-1 publicacions matematiques,1 publicar en antropología y ciencias sociales,-1 publication,-1 publication : tampere university of technology,-1 publication cie,1 publicationes mathematicae: debrecen,1 publications,-1 publications de l institut mathematique-beograd,-1 publications de l'observatoire astronomique de belgrade,-1 publications du crahm,1 publications du lma,-1 publications from the national museum: studies in archaeology and history,1 publications issued by the royal swedish academy of music,1 publications mathematiques de l ihes,3 publications of the astronomical society of australia,1 publications of the astronomical society of japan,1 publications of the astronomical society of the pacific,1 publications of the austrian ludwig wittgenstein society,1 publications of the department of social research,-1 publications of the english goethe society,-1 publications of the finnish dendrological society,-1 publications of the finnish exegetical society,1 publications of the foundation for finnish assyriological research,-1 publications of the giellagas institute,-1 publications of the ictm study group on music archaeology,1 publications of the international society for orthodox church music,-1 publications of the research institute for mathematical sciences,1 publications of the university of eastern finland : dissertations in social sciences and business studies,-1 publications of the university of eastern finland : general series,-1 "publications of the university of eastern finland : reports and studies in education, humanities, and theology",-1 publications of the university of eastern finland : reports and studies in health sciences,-1 publications of the university of eastern finland : reports and studies in social sciences and business studies,-1 publications on ocean development,1 publicum,-1 "publikation (arcada, nylands svenska yrkeshögskola)",-1 publikation från pedagogiska fakulteten vid åbo akademi,-1 publikon,-1 publishing history,-1 publishing house of central university of nationalitics,-1 publishing house of marine,-1 publishing research quarterly,1 publius: the journal of federalism,1 publizistik,1 pudasjärveläinen,-1 pudasjärven kaupunki,-1 puerto rico health sciences journal,1 puhe ja kieli,2 puheen ja kielen tutkimuksen yhdistyksen julkaisuja,1 puheterapeutti,-1 puhtausala,-1 puhtaustieto,-1 pula,-1 pulim,1 pulloposti,-1 pulmonary circulation,1 pulmonary medicine,1 pulmonary pharmacology and therapeutics,1 pulmonary therapy,1 pulmonology,1 pulmonology and respiratory research,-1 pulp & paper fundamental research society,1 pulp and paper canada,1 pulp and paper international,1 pulp and paper technical association of canada,-1 puls,1 pulse,1 pulso: revista de educacion,-1 pulssi-portaali,-1 pump journal of undergraduate research,-1 pun - editions universitaires de lorraine,1 puncta,1 punctum : international journal of semiotics,-1 punctum books,1 punishment and society: international journal of penology,2 punk & post-punk,1 punkalaitumen sanomat,-1 puntoorg,1 puolustusministeriö,-1 puolustusministeriön julkaisuja,-1 puolustustutkimuksen vuosikirja,-1 puolustusvoimien tutkimuslaitoksen julkaisuja,-1 puppa,-1 purdue university press,1 pure and applied analysis,1 pure and applied biology,-1 pure and applied chemistry,1 pure and applied functional analysis,1 pure and applied geophysics,1 pure and applied mathematics quarterly,1 purinergic signalling,1 purkamouutiset,-1 purushartha,1 puruvesi,-1 put i saobraćaj,-1 puti rossii,-1 putkeen!,-1 puu,-1 puumala,-1 puumies,-1 puumieskalenteri,-1 puutarha & kauppa,-1 puutarha-sanomat,-1 puutarhakalenteri,-1 puuviesti.fi,-1 pyatigorsk state linguistic university publishing house,1 pyhäjokiseutu,-1 pyhäjärven sanomat,-1 pyhäjärvi-instituutti,-1 pylon,-1 pyne,-1 pyrenae,1 pyrex journal of african studies and development,-1 pythagoras,1 pyöräily+triathlon,-1 pähkylä,-1 päihdetilastollinen vuosikirja,-1 päijät-hämeen liitto,-1 päijät-hämeen linnut,-1 päijät-hämeen sosiaali-ja terveysyhtymän julkaisuja,-1 päijät-hämeen tutkimusseura ry,-1 päijät-hämeen tutkimusseuran vuosikirja,-1 pälstidskrift,-1 pässinrata,-1 pääkaupunkiseudun sosiaalialan osaamiskeskus socca,-1 päätösten tueksi,-1 pécsi tudományegyetem,-1 pólay elemér alapítvány könyvtára,-1 pós-limiar,-1 półrocznik językoznawczy tertium,-1 pööning,-1 pāygāh-i markaz-i iṭṭilā̒āt-i ̒ilmī-i jihād-i dānishgāhī,-1 q open,1 qatar medical journal,-1 qazaq historical review,1 qed,-1 qeios,-1 qfemzine,-1 qinghua daxue jiaoyu yanjiu,-1 qinghua daxue xuebao,-1 qingming,-1 qirt journal,1 qjm: an international journal of medicine,1 qme: quantitative marketing and economics,1 quaderni costituzionali,1 quaderni d italianistica,1 "quaderni dellistituto di lingua e letteratura latina, roma",1 quaderni di archeologia della libia,1 quaderni di classiconorroena,1 quaderni di comunità,-1 quaderni di lavoro asit,-1 quaderni di storia,1 quaderni di studi arabi,1 quaderni lupiensi di storia e diritto,1 quaderni petrarcheschi,1 quaderni storici,1 quaderni urbinati di cultura classica,2 quaderns d arquitectura i urbanisme,1 quaderns d historia de l enginyeria,1 quaderns de filologia,-1 quaderns de l institut catala d antropologia,1 quae,-1 quaerendo,1 quaestio rossica,1 quaestio: the yearbook of the history of metaphysics,1 quaestiones disputatae,1 quaestiones geographicae,1 quaestiones mathematicae,1 quaker studies,1 qualitative and quantitative methods in libraries,1 qualitative communication research,1 qualitative health communication,-1 qualitative health research,3 qualitative inquiry,3 qualitative market research,1 qualitative psychology,1 qualitative psychology nexus,-1 qualitative report,1 qualitative research,3 qualitative research in accounting and management,1 qualitative research in education,1 qualitative research in financial markets,1 qualitative research in medicine & healthcare,1 qualitative research in organizations and management,1 qualitative research in psychology,2 "qualitative research in sport, exercise and health",1 qualitative research journal,1 qualitative research reports in communication,1 qualitative social work: research and practice,2 qualitative sociology,1 qualitative sociology review,1 qualitative studies,1 qualitative theory of dynamical systems,1 quality and quantity,1 quality and reliability engineering international,1 quality and user experience,1 quality assurance and safety of crops & foods,1 quality assurance in education,1 quality assurance journal,1 quality assurance review,-1 quality education for all,-1 quality engineering,1 quality in ageing and older adults,1 quality in higher education,1 quality in primary care,-1 quality management in health care,1 quality management journal,1 quality of life research,3 quality press,1 quality progress,1 quality technology and quantitative management,1 "quality, innovation, prosperity",-1 quanqiu chengshi yanjiu,-1 quantitative and qualitative analysis in social sciences,1 quantitative economics,3 quantitative finance,2 quantitative finance letters,1 quantitative imaging in medicine and surgery,1 quantitative methods in economics,-1 quantitative plant biology,1 quantitative science studies,2 quantum,2 quantum electronics,1 quantum information and computation,1 quantum information processing,1 quantum machine intelligence,1 quantum measurements and quantum metrology,1 quantum science and technology,2 quantum studies,1 quantum topology,1 quartar,1 quarterly journal of austrian economics,1 quarterly journal of chinese studies,-1 quarterly journal of economics,3 quarterly journal of education,-1 quarterly journal of engineering geology and hydrogeology,1 quarterly journal of experimental psychology,1 quarterly journal of experimental psychology section b: comparative and physiological psychology,1 quarterly journal of finance and accounting,1 quarterly journal of mathematics,1 quarterly journal of mechanics and applied mathematics,1 quarterly journal of nuclear medicine and molecular imaging,1 quarterly journal of political science,2 quarterly journal of speech,2 quarterly journal of the royal meteorological society,2 quarterly of applied mathematics,1 quarterly review of biology,2 quarterly review of economics and finance,1 quarterly review of film and video,1 quarterly reviews of biophysics,1 quasar,1 quasigroups and related systems,1 quaternaire,1 quaternary,-1 quaternary environments and humans,1 quaternary geochronology,1 quaternary international,1 quaternary research,1 quaternary science advances,1 quaternary science reviews,3 quaternary sciences,-1 quebec studies,1 queen mary journal of intellectual property,1 queen's university,-1 queens law journal,1 queens quarterly,-1 queensland review,1 queensland university of technology : library resource services,-1 queeste,1 quest,1 quest : issues in contemporary jewish history,1 questiones medii aevi novae,1 questions and answers in linguistics,1 questions de communication,1 questions liturgiques-studies on liturgy,1 questions of international law,1 queueing systems,1 "qui parle: literature, philosophy, visual arts, history",1 quiedit,-1 quimica nova,-1 quinnipiac university,-1 quintessence international,1 quintessence publishing co ltd,-1 quintú quimün,-1 quivirr,-1 qumran chronicle,1 quodlibet,-1 quêtes littéraires,1 qvintensen,-1 "qwerty: rivista interdisciplinare di tecnologia, cultura e formazione",-1 r & d magazine,1 r&d management,2 r&e source,-1 r&t. religion & theology,1 r-economy,1 ra-revista de arquitectura,-1 raabe,-1 raabe-gesellschaft jahrbuch,1 raamat õppimisest,1 rab-rab,-1 rabel journal of comparative and international private law,2 rabies bulletin europe,-1 race and class,2 race equality teaching,1 race ethnicity and education,2 racine,-1 radcliffe publishing,1 radiation and environmental biophysics,1 radiation effects and defects in solids,1 radiation measurements,1 radiation oncology,1 radiation physics and chemistry,1 radiation protection dosimetry,1 radiation research,1 radical criminology,1 radical history review,1 radical housing journal,-1 radical musicology,1 radical orthodoxy,1 radical pedagogy,1 radical philosophy,1 radical philosophy review,1 radio,-1 radio journal: international studies in broadcast and audio media,1 radio science,1 radio science letters,1 radiocarbon,1 radiochemistry,-1 radiochimica acta,1 radioengineering,1 radiografia,-1 radiographics,2 radiography,1 radiologe,1 radiologia medica,1 radiologic clinics of north america,1 radiologic technology,1 radiology,3 radiology : artificial intelligence,1 radiology : cardiothoracic imaging,1 radiology and oncology,1 radiology case reports,-1 radiomaailma,-1 radiophysics and quantum electronics,1 radioprotection,1 radiotherapy and oncology,1 radovi zavoda za povijesne znanosti hazu u zadru,1 raduga,-1 rae,-1 raffles bulletin of zoology,1 raha-automaattiyhdistys,-1 rahtarit,-1 rahvusvaheline kaitseuuringute keskus,-1 railway engineering science,1 rainer hampp verlag,1 rairo: operations research,1 rairo: theoretical informatics and applications,1 rais conference proceedings,-1 raisio tiedottaa,-1 raisons politiques,1 raito,-1 raja- ja merivartiokoulun julkaisut,-1 rajamme vartijat,-1 rajansiirtäjä,-1 rajapinta,-1 rajshahi university law journal,-1 rakennusinsinööri ja -arkkitehti,-1 rakennuslehti,-1 rakennussanomat,-1 rakennustaito,-1 rakennustekniikka,-1 rakennustieto oy,-1 rakentaja,-1 rakentajain kalenteri,-1 rakenteiden mekaniikka,1 ram-verlag,-1 ramanujan journal,1 ramanujan mathematical society,1 rambam: tidsskrift for joedisk kultur og forskning,1 ramus virens,-1 ramus: critical studies in greek and roman literature,2 ranam recherches anglaises et nord-americaines,1 rand corporation,1 rand journal of economics,3 random house,-1 random matrices : theory and applications,1 random operators and stochastic equations,1 random structures and algorithms,2 range management and agroforestry,-1 rangeland ecology and management,1 rangeland journal,1 rangifer,1 rannikkoseutu,-1 rannikon puolustaja,-1 ranstakka,-1 rantalakeus,-1 rantapohja,-1 rantasalmen lehti,-1 rantasalmen ympäristökasvatusinstituutti,-1 rapid communications in mass spectrometry,1 rapid prototyping journal,1 raportit,-1 raportit ja selvitykset,-1 raportteja,-1 raportteja ja selvityksiä,-1 raportteja ja työpapereita (koulutuksen tutkimuslaitos),-1 raportti,-1 raportti (terveyden ja hyvinvoinnin laitos),-1 rapport,-1 rapport från fakulteten för pedagogik och välfärdsstudier,-1 rapporter,-1 rare metal materials and engineering,1 rare metals,1 raritan: a quarterly review,1 ras techniques and instruments,1 rasal lingüística,-1 rasananda barik,-1 rask,1 rasprave instituta za hrvatski jezik i jezikoslovlje,1 rassegna della letteratura italiana,1 rassegna europea di letteratura italiana,1 rassegna italiana di sociologia,1 rassegna storica del risorgimento,1 rassegna storica toscana,-1 raster förlag,1 rastitelʹnye resursy,-1 ratio,2 ratio juris,3 ratio.ru,-1 rationality and society,1 ratkes,-1 rauhanpuolustaja,-1 rauhanturvaaja,-1 raumalainen,-1 raumforschung und raumordnung,1 rautatietekniikka,-1 ravensbourne publications,-1 ravitsemusasiantuntija,-1 ravitsemuskatsaus,-1 rawat,1 razon y palabra: revista electronica en america latina especializada en topicos de comunicacion,1 razprave in gradivo,1 razprave: dissertationes,1 rb grafica,-1 rbk,-1 rchd: creación y pensamiento,1 rcra international workshop on experimental evaluation of algorithms for solving problems with combinatorial explosion,-1 re-thinking technology in museums,-1 re-visiones,1 re:think,-1 "reabilitacijos mokslai : slauga, kineziterapija, ergoterapija",-1 reaction chemistry & engineering,1 reaction kinetics mechanisms and catalysis,1 reactions weekly,1 reactive and functional polymers,1 read,-1 readerly/writerly texts,1 reading and writing,2 reading and writing quarterly,1 reading in a foreign language,1 reading matrix: an international online journal,1 reading medieval studies,1 reading online,1 reading psychology,1 reading religion,-1 reading research quarterly,3 reading room: a journal of art and culture,1 reading teacher,1 readings book,-1 reaktion books,1 real academia de ciencias,1 real analysis exchange,1 real estate economics,2 real estate taxation,1 real instituto elcano,-1 real-time systems,2 reales sitios,1 recall,3 recent advances in anti-infective drug discovery,-1 recent advances in computer science and communications,1 recent advances in dna & gene sequencing,1 recent advances in natural language processing,1 recent patents on anti-cancer drug discovery,1 recent patents on cardiovascular drug discovery,1 recent patents on nanotechnology,-1 recent progress in materials,-1 recent progress in nutrition,-1 recent researches in american music,-1 recenti progressi in medicina,-1 recercare: rivista per lo studio e la pratica della musica antica,1 recherche et applications en marketing,1 recherche et pratiques pédagogiques en langues de spécialité,-1 recherches augustiniennes et patristiques,1 recherches de science religieuse,1 recherches de theologie et philosophie medievales,2 recherches en communication,-1 recherches en didactique des langues et des cultures,1 recherches en didactique des mathematiques,1 recherches en langue francaise,-1 recherches en éducation,-1 recherches et rencontres,-1 recherches germaniques,1 recherches husserliennes,1 recherches linguistiques,1 recherches linguistiques de vincennes,1 recherches sociologiques et anthropologiques,-1 recherches sur diderot et sur lencyclopedie,1 recherches sur la philosophie et le langage,1 recht der internationalen wirtschaft,1 recht der transportwirtschaft,-1 recht und psychiatrie,1 rechtsgeschichte,2 rechtsmedizin,1 rechtstheorie,2 recit,-1 reclam verlag,1 reconceptualizing educational research methodology,1 record of conference papers : petroleum and chemical industry conference,1 records management journal,2 records of natural products,1 records of the australian museum,1 "records of the ieee international workshop on memory technology, design, and testing",1 records of the western australian museum,-1 recreational mathematics magazine,1 recueil des cours - académie de droit international de la haye,1 recycling,-1 red dot,1 red española de filosofía - laboratorio filosófico de la pandemia y el antropoceno,-1 red globe press,-1 red sea press,1 red. revista de educación a distancia,-1 redescriptions,1 redia-giornale di zoologia,-1 redimat,1 redleaf press,-1 redox biology,2 redox report,1 refereed proceedings : tcc worldwide online conference,-1 reference and user services quarterly,1 reference librarian,1 reference services review,1 referencia pedagógica,-1 reflecting education,1 reflections on english language teaching,-1 reflections: the sol journal,1 reflective practice,1 reformation and renaissance review,1 refractories and industrial ceramics,1 refugee survey quarterly,1 refugee watch : a south asian journal on forced migration,-1 refugees and human rights,1 regard sur l´est,-1 regenerative biomaterials,1 regenerative medicine,1 regio,1 region,1 region: ekonomika i sotsiologija,-1 regional and federal studies,1 regional anesthesia and pain medicine,2 regional environmental change,1 regional science and urban economics,2 regional science policy & practice,1 regional studies,3 regional studies in marine science,1 "regional studies, regional science",1 regions and cohesion,1 regionális kutatások intézete,-1 register studies,1 regnum,-1 regnum books,1 regular and chaotic dynamics,1 regulation and governance,3 regulatory toxicology and pharmacology,1 rehabilitación,-1 rehabilitation,1 rehabilitation counseling bulletin,1 rehabilitation nursing,1 rehabilitation psychology,1 rehva journal,-1 reichert verlag,1 reihe forschungen zum ostseeraum,1 reihe germanistische linguistik,1 reihe geschichte,1 reihe politikwissenschaft,-1 reilua energiaa,-1 reimagining ireland,1 reinardus,1 reinforced plastics,1 reinhardt,1 reisimaailm,-1 reisjärvi-lehti,-1 rejuvenation research,1 relaciones internacionales,1 relacult,-1 relating systems thinking and design ... symposium proceedings,-1 relational social work,1 relations,1 relations industrielles-industrial relations,1 relations internationales,1 relay journal,-1 relc journal,2 relegere,1 reliability engineering and system safety,3 reliable computing,1 relief: revue electronique de litterature francaise,1 religio: revue pro religionistiku,1 religiographies,1 religiologiques: sciences humaines et religion,1 religion,3 religion & development,1 religion & education,1 religion & gesellschaft in ost und west,-1 religion and american culture: a journal of interpretation,1 religion and gender,1 religion and human rights,1 religion and literature,2 religion and reason,1 religion and society,1 religion and society,2 religion and society in central and eastern europe,-1 religion and the arts,1 religion and the social order,1 religion compass,1 "religion, brain and behavior",2 "religion, staat, gesellschaft",1 "religion, state and society",2 religions,-1 religions in the graeco-roman world,2 religionspädagogische beiträge,1 religionsvetenskapliga skrifter,1 religionsvidenskabeligt tidsskrift,1 religious education,2 religious education journal of australia,-1 religious humanism,-1 religious studies,2 religious studies and theology,1 religious studies review,1 religiski-filozofiski raksti,-1 religiâ cerkovʹ obŝestvo,-1 relp: a journal of renewable energy law and policy,1 rem: research on education and media,-1 rem: revista escola de minas,1 remark : revista brasileira de marketing,-1 remedial and special education,2 remediation journal,1 remetallica,-1 remittances review,-1 remote sensing,1 remote sensing applications,1 remote sensing in ecology and conservation,1 remote sensing letters,1 remote sensing of environment,3 renaissance and reformation,1 renaissance drama,1 renaissance forum: an electronic journal of early modern literary and historical studies,1 renaissance papers,1 renaissance quarterly,2 renaissance studies: journal of the society for renaissance studies,3 renal failure,1 renascence: essays on values in literature,1 rencontres de moriond,-1 rendiconti del circolo matematico di palermo,1 rendiconti del seminario matematico,1 rendiconti del seminario matematico della universita di padova,1 rendiconti dell'istituto di matematica dell'universita di trieste,1 rendiconti della accademia di archeologia lettere e belle arti,1 rendiconti lincei: matematica e applicazioni,1 renewable agriculture and food systems,1 renewable and sustainable energy,-1 renewable and sustainable energy reviews,2 renewable and sustainable energy transition,1 renewable energies,-1 renewable energy,2 renewable energy & power quality journal,1 renewable energy focus,1 "renewables : wind, water, and solar",-1 "rengas-, varaosa- ja korjaamouutiset",-1 rengastajan vuosikirja,-1 renhetsteknik,-1 renmin jiaoyu,-1 renome,-1 renote,-1 rent,-1 renvall-instituutin julkaisu,-1 reorient,-1 replay,1 replaying japan,1 replik,-1 replika,-1 report,-1 report no,-1 report of the department of antiquities of cyprus,1 report series in aerosol science,-1 report series in astronomy,-1 reporting and accountability review,-1 reports from the kevo subarctic research station,-1 reports from the school of business and economics,-1 reports in advances of physical sciences,1 reports of biochemistry and molecular biology,-1 reports of practical oncology and radiotherapy,-1 reports of the european society for socially embedded technologies,-1 reports on mathematical logic,1 reports on mathematical physics,1 reports on progress in physics,3 reports on scientific computing and optimization,-1 representation,2 representation theory,1 representations,3 reproduction,1 reproduction & fertility,1 reproduction fertility and development,1 reproduction in domestic animals,1 reproductive biology,1 reproductive biology and endocrinology,1 reproductive biomedicine & society online,1 reproductive biomedicine online,1 reproductive health,1 reproductive health matters,1 reproductive medicine and biology,1 reproductive sciences,1 reproductive toxicology,1 repronor,-1 republic of letters,1 repères-dorif,1 requirements engineering,2 reric international energy,-1 res cogitans,1 res diachronicae virtual,1 res futurae,-1 res humanitariae,1 res medica: journal of the royal medical society,-1 res militaris,-1 res musica,1 res philosophica,1 res publica,-1 "res publica: a journal of moral, legal and social philosophy",2 res terrae,-1 res: anthropology and aesthetics,1 research,-1 research,1 research & politics,2 research (national institute for health and welfare),-1 research about ecec,-1 research and practice for persons with severe disabilities,1 research and practice in technology enhanced learning,1 research and practice in thrombosis and haemostasis,1 research and publishing institute for security and defence studies at university of public and individual security apeiron in krakow,1 research and reports in neonatology,-1 research and reports in urology,-1 research and reports of medicine,-1 research and review journal of nondestructive testing,-1 research and reviews : journal of material sciences,-1 research and science today supplement,-1 research and theory for nursing practice: an international journal,1 research communications in molecular pathology and pharmacology,1 "research conference on communication, information and internet policy",-1 research cultures,-1 research data journal for the humanities and social sciences,1 research dialogue in learning and instruction,1 research ethics review,1 research evaluation,2 research ideas and outcomes,-1 research in accounting regulation,1 research in african literatures,2 research in arts and education,1 research in astronomy and astrophysics,1 research in autism spectrum disorders,1 research in comparative and international education,1 research in consumer behavior,-1 research in corpus linguistics,1 research in dance education,3 research in developmental disabilities,1 research in drama education: the journal of applied theatre and performance,3 research in economic anthropology,2 research in economic history,-1 research in economics,1 research in economics and business: central and eastern europe,-1 research in education,1 research in education and learning innovation archives,-1 research in educational administration & leadership,1 research in endocrinology,-1 research in engineering design,3 research in english language pedagogy,1 research in experimental economics,1 research in finance,-1 research in gerontological nursing,-1 research in higher education,2 research in hospitality management,-1 research in human capital and development,1 research in human development,1 research in immunology,-1 research in international business and finance,1 research in labor economics,1 research in language,1 research in law and economics,1 research in learning technology,1 research in maritime history,1 research in mathematics,1 research in mathematics education,1 research in microbiology,1 research in middle east economics,1 research in neurology,-1 research in neuroscience,-1 research in nondestructive evaluation,1 research in number theory,1 research in nursing and health,2 research in organizational behavior,1 research in personnel and human resources management,1 research in phenomenology,1 research in political economy,1 research in post-compulsory education,1 research in public policy analysis and management,1 research in rural sociology and development,1 research in science & technological education,1 research in science education,2 research in social and administrative pharmacy,2 "research in social movements, conflicts and change",1 research in social stratification and mobility,2 research in sports medicine,1 research in statistics,1 research in the history of economic thought and methodology,1 research in the mathematical sciences,1 research in the social scientific study of religion,2 research in the sociology of organizations,1 research in the teaching of english,2 research in transportation business & management,1 research in transportation economics,1 research in veterinary science,1 research in world economy,-1 research institute for a tobacco free society (riftfs),-1 research institute for humanity and nature,-1 research institute for linguistics of the hungarian academy of sciences,-1 research institute of sweden (rise),-1 research integrity and peer review,1 research involvement and engagement,1 research journal in organisational psychology and educational studies,-1 "research journal of applied science, engineering and technology",-1 research journal of biotechnology,-1 research journal of chemistry and environment,-1 research journal of microbiology,-1 "research journal of pharmaceutical, biological and chemical sciences",-1 research journal of textile and apparel,1 research methods in applied linguistics,-1 research notes of the aas,-1 research on ageing and social policy,1 research on aging,1 research on biomedical engineering,-1 research on chemical intermediates,1 research on child and adolescent psychopathology,2 research on children and social interaction,1 research on crops,1 research on emotion in organizations,1 research on engineering structures and materials,1 research on language and social interaction,3 research on social work practice,2 research on steiner education,-1 "research on technological innovation, management and policy",1 research on world agricultural economy,-1 research outreach,-1 research papers in economic sociology,-1 research papers in education,1 research papers in language teaching and learning,-1 research policy,3 research policy x,-1 research publishing services,1 research quarterly for exercise and sport,1 research report,-1 research report : department of chemistry,-1 research report : winter navigation research board,-1 research reports,-1 research signpost,1 research strategies,1 research studies in music education,3 "research, society and development",-1 research-publishing.net,-1 research-technology management,1 researching and teaching chinese as a foreign language,-1 reseaux,1 reseaux: french journal of communication,1 reseptio : kirkon ulkoasiain osaston teologisten asiain tiedotuslehti,-1 residential treatment for children and youth,1 resilience,1 resonans,-1 resource,-1 resource and energy economics,1 resource development and market,-1 resource ets,-1 resource geology,1 resources,-1 resources and technology,-1 resources conservation and recycling,2 resources for american literary study,1 resources for feminist research,1 resources policy,1 "resources, conservation & recycling advances",1 "resources, environment and sustainability",1 respectus philologicus,1 respiration,1 respiratory care,1 respiratory medicine,1 respiratory medicine and research,1 respiratory medicine cme,1 respiratory medicine x,1 respiratory physiology and neurobiology,1 respiratory research,2 respirology,2 respons,-1 respublikanskaya tipografiya krasny`j oktyabr`,-1 restaurator: international journal for the preservation of library and archival material,1 restauratorenblatter,1 restauro archeologico,1 "restauro: forum fur restauratoren, konservatoren und denkmalpfleger",1 restitution law review,1 restoration ecology,2 "restoration: studies in english literary culture, 1660-1700",1 restorative neurology and neuroscience,1 results in applied mathematics,1 results in chemistry,1 results in engineering,1 results in materials,-1 results in mathematics,1 results in optics,1 results in physics,1 resuscitation,3 resuscitation plus,1 retfaerd: nordisk juridisk tidsskrift,2 rethinking ecology,1 rethinking history,3 rethinking marxism,1 rethinking mission,-1 reti medievali rivista,1 retina,-1 retina: the journal of retinal and vitreous diseases,2 retinal cases & brief reports,1 retorik magasinet,-1 retorika,-1 retorika a,-1 retos,-1 retrovirology,1 reumahoitajat,-1 revanssi,-1 review,1 review in business and economics,-1 review journal of autism and developmental disorders,1 review of accounting and finance,1 review of accounting studies,3 review of african political economy,1 review of agricultural economics,1 "review of agricultural, food and environmental studies",-1 review of aromatic and medicinal plants,1 review of asset pricing studies,2 review of austrian economics,1 review of behavioral economics,1 review of behavioral finance,1 review of biblical literature,1 review of black political economy,1 review of business & finance case studies,-1 review of central and east european law,2 review of cognitive linguistics,2 review of communication,1 review of communication research,1 review of contemporary business research,-1 review of corporate finance,1 review of corporate finance studies,1 review of derivatives research,1 review of development and change,-1 review of development economics,1 review of economic and business studies,-1 review of economic design,1 review of economic dynamics,3 review of economic studies,3 review of economic studies and research virgil madgearu,-1 review of economics,1 review of economics & finance,-1 review of economics and statistics,3 review of economics of the household,1 review of ecumenical studies,1 review of education,1 "review of education, pedagogy, and cultural studies",1 review of educational research,3 review of english studies,2 review of environmental economics and policy,1 review of european administrative law,1 review of european studies,-1 "review of european, comparative & international environmental law",2 review of evolutionary political economy,1 review of faith and international affairs,1 review of finance,3 review of financial economics,1 review of financial studies,3 review of general psychology,1 review of higher education,2 review of income and wealth,2 review of industrial organization,1 review of innovation and competitiveness,-1 review of international affairs,-1 review of international business and strategy,1 review of international economics,1 review of international organizations,3 review of international political economy,3 review of international studies,2 review of keynesian economics,1 review of knowledge management,-1 review of korean studies,1 review of law and economics,1 review of management and economic engineering,-1 review of managerial science,1 review of market integration,1 review of metaphysics,2 review of middle east economics and finance,1 review of network economics,1 review of pacific basin financial markets and policies,1 review of palaeobotany and palynology,1 review of philosophy and psychology,1 review of policy research,1 review of political economy,1 review of politics,2 review of public administration and management,-1 review of public personnel administration,1 review of quantitative finance and accounting,1 review of rabbinic judaism,1 review of radical political economics,1 review of religious research,3 review of research in education,2 review of scientific instruments,1 review of scottish culture,1 review of social economy,1 review of sociology of the hungarian sociological association,-1 review of symbolic logic,1 review of the history of economic thought and methodology,-1 review of urban and regional development studies,1 review of world economics,1 review on agriculture and rural development,-1 review-literature and arts of the americas,1 reviews in american history,-1 reviews in analytical chemistry,1 reviews in anthropology,1 reviews in aquaculture,2 reviews in cardiovascular medicine,1 reviews in chemical engineering,1 reviews in clinical gerontology,1 reviews in computational chemistry,1 reviews in conservation,1 reviews in economic geology,1 reviews in endocrine and metabolic disorders,1 reviews in environmental science and bio-technology,1 reviews in fish biology and fisheries,2 reviews in fisheries science & aquaculture,1 reviews in fluorescence,-1 reviews in gastroenterological disorders,1 reviews in inorganic chemistry,1 reviews in mathematical physics,1 reviews in medical microbiology,1 reviews in medical virology,1 reviews in mineralogy and geochemistry,2 reviews in physics,1 "reviews in science, religion and theology",-1 reviews in the neurosciences,1 reviews of accelerator science and technology,-1 reviews of adhesion and adhesives,-1 reviews of environmental contamination and toxicology,1 reviews of geophysics,3 reviews of modern physics,3 reviews of physiology biochemistry and pharmacology,1 reviews on advanced materials science,1 reviews on environmental health,1 reviews on recent clinical trials,1 revija za kriminalistiko in kriminologijo,1 revija za socijalnu politiku,1 revija za sociologiju,1 revista 180,-1 revista abya yala,1 revista alicantina de estudios ingleses,1 revista amazonía investiga,-1 revista andina,1 revista argentina de clinica psicologica,1 revista arvore,1 revista bioética,-1 revista brasileira de botânica,-1 revista brasileira de ciencia do solo,1 revista brasileira de cirurgia cardiovascular,1 revista brasileira de ciências ambientais,1 revista brasileira de direito processual penal,1 revista brasileira de educação ambiental,-1 revista brasileira de enfermagem,-1 revista brasileira de ensino de fisica,-1 revista brasileira de entomologia,1 revista brasileira de epidemiologia,-1 revista brasileira de farmacognosia,1 revista brasileira de fruticultura,1 revista brasileira de física médica,-1 revista brasileira de historia,2 revista brasileira de informática na educação,-1 revista brasileira de lingüística aplicada,1 revista brasileira de literatura comparada,1 revista brasileira de medicina do esporte,-1 revista brasileira de medicina veterinaria,1 revista brasileira de oftalmologia,1 revista brasileira de paleontologia,1 revista brasileira de parasitologia veterinaria,1 revista brasileira de pesquisa (auto)biográfica,-1 revista brasileira de politica internacional,1 revista brasileira de politicas publicas,1 revista brasileira de psiquiatria,1 revista brasileira de reumatologia,-1 revista brasileira de zootecnia-brazilian journal of animal science,1 revista bíblica,1 revista caatinga,1 revista canadiense de estudios hispanicos,1 revista canaria de estudios ingleses,1 revista catalana d'ornitologia,-1 revista catalana de teologia,1 revista chilena de cirugia,1 revista chilena de historia natural,1 revista chilena de literatura,1 revista cidob d'afers internacionals,1 revista ciencia agronomica,1 revista ciencias de la salud,-1 revista cientifica-facultad de ciencias veterinarias,1 revista científica de ingeniería energética,-1 revista científica general josé maría córdova,1 revista clinica espanola,1 "revista clínica de periodoncia, implantología y rehabilitación oral",-1 revista colombiana de antropologia,1 revista colombiana de ciencias pecuarias,1 revista colombiana de entomologia,1 revista colombiana de estadistica,1 revista colombiana de matematicas,-1 revista colombiana de quimica,-1 revista complutense de educación,-1 revista complutense de historia de america,1 revista conhecimento online,1 revista crítica de ciências sociais,1 revista d,1 revista d`estudis autonòmics i federals,1 revista da associação médica brasileira,-1 revista da escola de enfermagem da usp,1 revista da faculdade de direito da universidade federal de minas gerais.,-1 revista da faeeba,-1 revista da universidade de aveiro: letras,1 revista de administracion publica,1 revista de administração imed,-1 revista de administração pública,1 revista de antropologia social,1 revista de antropología,1 revista de antropología experimental,1 revista de aracnologia,-1 "revista de arheologie, antropologie şi studii interdisciplinare",1 revista de artes marciales asiáticas,-1 revista de biologia marina y oceanografia,1 revista de biologia tropical,1 revista de cercetare si interventie sociala,1 revista de chimie,1 revista de ciencia politica,1 revista de ciencias humanas,1 revista de ciencias sociales,1 revista de ciências militares,1 revista de comunicação dialógica,1 revista de contabilidad,1 revista de critica literaria latinoamericana,1 revista de demografia historica,1 revista de derecho comunitario europeo,1 revista de derecho concursal y paraconcursal,-1 revista de derecho constitucional europeo,1 revista de derecho de sociedades,-1 revista de derecho del estado,1 revista de derecho penal y criminologia,-1 revista de derecho privado,-1 revista de derecho y nuevas tecnologias,-1 "revista de design, tecnologia e sociedade",1 revista de direito internacional,1 revista de economia del rosario,-1 revista de educacion,-1 revista de educacion de las ciencias,-1 revista de educación y derecho,-1 revista de educação musical,-1 "revista de ensino em artes, moda e design",1 revista de estudios andaluces,-1 revista de estudios clasicos,1 revista de estudios colombianos,1 revista de estudios hispanicos,1 revista de estudios politicos,1 revista de estudios sociales,1 revista de estudos anglo-portugueses,1 revista de estudos da linguagem,1 revista de etnografie si folclor,1 revista de filologia espanola,2 revista de filologia romanica,1 revista de filologia y linguistica,1 revista de filología de la universidad de la laguna,1 revista de filosofia,1 revista de filosofia aurora,1 revista de geografia norte grande,1 revista de hispanismo filosofico,1 revista de historia actual,1 revista de historia da sociedade e da cultura,1 revista de historia das ideias,1 revista de historia de la lengua española,1 revista de historia economica,1 revista de historia economica e social,1 revista de historia industrial,-1 revista de historia jeronimo zurita,1 revista de historia moderna,1 revista de indias,1 "revista de internet, derecho y política",1 revista de interpretación bíblica latinoamericana,1 revista de investigacion clinica,1 revista de investigaciones sobre fronteras,-1 revista de investigación en educación,-1 revista de la academia puertorriqueña de jurisprudencia y legislación,-1 revista de la construccion,1 revista de la facultad de agronomia de la universidad del zulia,1 revista de la facultad de ciencias agrarias,1 revista de la facultad de derecho de mexico,1 revista de la real academia de ciencias exactas fisicas y naturales serie a: matematicas,1 revista de la union matematica argentina,1 revista de letras,1 revista de lexicografia,1 revista de linguistica y lenguas aplicadas,1 revista de literatura,1 revista de llengua i dret,1 "revista de logopedia, foniatria y audiologia",1 revista de medicina y cine,1 revista de metalurgia,1 revista de musicologia,1 revista de neurologia,1 revista de nutricao-brazilian journal of nutrition,1 revista de occidente,-1 revista de paz y conflictos,1 revista de psicodidactica,-1 revista de psicologia del deporte,-1 revista de psicologia social,1 revista de psicología del trabajo y de las organizaciones,-1 revista de psicopatología y salud mental del niño y del adolescente,-1 revista de psicoterapia,-1 revista de psiquiatria y salud mental,-1 revista de salud animal,-1 revista de saude publica,1 revista de studii financiare,-1 revista de teledetección,-1 revista de teoria da história,1 revista de toxicología,-1 revista de turism,-1 revista del centro de investigación del flamenco telethusa,1 revista del cesla,1 revista del clad reforma y democracia,1 revista del convenio andres bello,1 revista digital de políticas lingüísticas,-1 revista direito mackenzie,-1 revista diálogos,-1 revista diálogos,1 revista do caap,-1 revista do instituto de medicina tropical de sao paulo,-1 revista economica,-1 revista ecumenica sibiu,-1 revista electronica complutense de investigacion en educacion musical,1 revista electrónica de lingüística aplicada,-1 revista espanola de antropologia americana,1 revista espanola de cardiologia,1 revista espanola de derecho constitucional,1 revista espanola de documentacion cientifica,1 revista espanola de enfermedades digestivas,1 revista espanola de investigaciones sociologicas,1 revista espanola de linguistica,2 revista espanola de linguistica aplicada,1 revista espanola de medicina nuclear e imagen molecular,1 revista espanola de nutricion comunitaria-spanish journal of community nutrition,-1 revista espanola de pedagogia,-1 revista espanola de teologia,1 revista española de cirugía oral y maxilofacial,1 revista española de financiación y contabilidad,1 revista española de antropología física,-1 revista española de cardiología,-1 revista española de educación comparada,1 revista española de empresas y derechos humanos,1 revista española de filosofía medieval,1 revista española de geriatría y gerontología,1 revista española de salud pública,-1 revista española de sociología,1 revista estudio,1 revista estudios,1 revista facultad nacional de agronomía medellín,1 revista filipina,-1 revista fitotecnia mexicana,1 revista forense,-1 revista guillermo de ockham,1 revista ibero-americana de estudos em educacao,-1 revista iberoamericana,2 revista iberoamericana de ciencias de la actividad física y el deporte,-1 revista ingenieria de construccion,-1 revista internacional de ciencias del deporte,-1 revista internacional de contaminacion ambiental,1 revista internacional de linguistica iberoamericana,2 revista internacional de medicina y ciencias de la actividad fisica y del deporte,1 revista internacional de metodos numericos para calculo y diseno en ingenieria,1 revista internacional de organizaciones,-1 revista internacional de sociologia,1 revista internacional dhumanitats,-1 revista internacional em lingua portuguesa,1 revista istorica,1 revista latina de comunicación social,1 revista latino-americana de enfermagem,-1 revista latinoamericana de educación inclusiva,1 revista latinoamericana de investigacion en matematica educativa-relime,-1 revista latinoamericana de psicologia,-1 revista latinoamericana de psicopatologia fundamental,-1 revista lusitana,1 revista lusófona de educação,-1 revista matematica complutense,1 revista matematica iberoamericana,2 revista medica de chile,1 revista medico-chirurgicala a societatii de medici si naturalisti din iasi,-1 revista mexicana de astronomia y astrofisica,1 revista mexicana de biodiversidad,1 revista mexicana de ciencias geologicas,1 revista mexicana de ciencias pecuarias,1 revista mexicana de fisica e,1 revista mexicana de ingenieria quimica,1 revista mexicana de psicologia,-1 revista musical chilena,1 revista mvz cordoba,1 revista nebrija,1 revista nera,-1 revista odeere,-1 revista odisséia,-1 revista panamericana de salud publica-pan american journal of public health,1 revista peruana de biologia,-1 revista portuguesa de arqueologia,1 revista portuguesa de cardiologia,-1 revista portuguesa de enfermagem de reabilitação,-1 revista portuguesa de engenharia de estruturas,-1 revista portuguesa de filologia,1 revista portuguesa de filosofia,1 revista portuguesa de historia,1 revista portuguesa de imunoalergologia,-1 revista portuguesa de marketing,1 revista portuguesa de musicologia,1 "revista proyecto, progreso, arquitectura",1 revista prâksis,1 revista publicando,-1 revista romana de bioetica,1 revista romana de jurnalism si comunicare,1 revista romana de medicina de laborator,-1 revista româna de sociologie,1 revista românească pentru educaţie multidimensională,-1 revista română de materiale,-1 revista română de studii baltice şi nordice,1 revista signos,-1 revista stultifera,-1 revista teknokultura,1 revista tempos e espaços em educação,1 revista teologica,1 revista tradumàtica,-1 revista turismo & desenvolvimento,1 revista unisci,1 revista vagalumear,-1 revista vasca de gestión de personas y organizaciones públicas,1 revista virtual de estudos da linguagem: revel,1 revista virtual redesma,-1 revista x,-1 revistia,-1 revolutionary russia,1 revsalus,-1 revstat statistical journal,1 revue africaine de theologie,1 revue archeologique,1 revue archeologique de l'est,1 revue archeologique de l'ouest,1 revue archeologique de narbonnaise,1 revue archeologique de picardie,1 revue archeologique du centre de la france,1 revue belge d'archeologie et d'histoire de l'art,1 revue belge de droit international,1 revue belge de musicologie,1 revue belge de philologie et d'histoire,1 revue benedictine,1 revue biblique,2 revue d'archeometrie,1 revue d'assyriologie et d'archeologie orientale,1 revue d'ecologie: la terre et la vie,1 revue d'economie politique,1 revue d'epidemiologie et de sante publique,1 revue d'ethique et de theologie morale,1 revue d'etudes augustiniennes et patristiques,1 revue d'histoire contemporaine de l'afrique,1 revue d'histoire de l amerique francaise,1 revue d'histoire de l'eglise de france,1 revue d'histoire de la pharmacie,1 revue d'histoire des mathematiques,1 revue d'histoire des sciences,1 revue d'histoire des sciences humaines,1 revue d'histoire des textes,2 revue d'histoire diplomatique,1 revue d'histoire du protestantisme,-1 revue d'histoire du theatre,1 revue d'histoire du xixe siecle,1 revue d'histoire ecclesiastique,1 revue d'histoire litteraire de la france,3 revue d'histoire moderne et contemporaine,2 revue d'histoire nordique,1 revue d'études autochtones,1 revue d'études comparatives est-ouest,-1 revue d'études tibétaines,1 revue de chirurgie orthopédique et traumatologique,1 revue de droit canonique,1 revue de droit comparé du travail et de la sécurité sociale,1 revue de geographie alpine,1 revue de l'art,2 revue de l'entrepreneuriat,1 revue de l'histoire des religions,3 revue de l'université de moncton,-1 revue de la pratique avancée,-1 revue de la régulation,1 revue de linguistique latine du centre alfred ernout,1 revue de linguistique romane,1 revue de litterature comparee,2 revue de l´ofce,1 revue de l´union européenne,-1 revue de medecine interne,1 revue de metallurgie: cahiers d'informations techniques,1 revue de metaphysique et de morale,1 revue de musicologie,2 revue de paléobiologie,-1 revue de philologie de litterature et d histoire anciennes,3 revue de philosophie ancienne,1 revue de qumran,1 revue de semantique et pragmatique,1 revue de synthese,1 revue de theologie et de philosophie,1 revue degyptologie,1 revue des affaires européennes,-1 revue des etudes anciennes,2 revue des etudes armeniennes,1 revue des etudes byzantines,2 revue des etudes grecques,1 revue des etudes italiennes,1 revue des etudes juives,1 revue des etudes latines,2 revue des etudes slaves,1 revue des langues romanes,1 revue des lettres modernes : albert camus,1 revue des litteratures de l'union europeenne,1 revue des maladies respiratoires,1 revue des musees de france: revue du louvre,1 revue des nouvelles technologies de l'information,-1 revue des sciences philosophiques et theologiques,1 revue des sciences religieuses,1 revue du droit public et de la science politique en france et à létranger,1 revue du monde musulman et de la mediterranee,1 revue du nord,1 revue du nord: archeologie,1 revue du praticien,1 revue du rhumatisme,-1 revue d´économie financière,1 revue d´études françaises,-1 revue d’histoire et de philosophie religieuses,1 revue economique,1 revue europeenne formation professionnelle,1 revue européenne des migrations internationales,1 revue forestière française,-1 revue francaise d'administration publique,1 revue francaise d'allergologie et dimmunologie clinique,1 revue francaise d'etudes americaines,1 revue francaise d'histoire du livre,1 revue francaise de droit administratif,1 revue francaise de droit constitutionnel,1 revue francaise de linguistique appliquee,1 revue francaise de psychanalyse,1 revue francaise de science politique,2 revue francaise de sociologie,2 revue francophone des sciences de l'information et de la communication,1 revue française d'histoire économique,-1 revue française de gestion,1 revue française de pédagogie,1 revue française de socio-économie,1 revue historique,2 revue historique de droit francais et etranger,1 revue international de droit compare,2 revue internationale d'histoire militaire,1 revue internationale de cas en gestion,-1 revue internationale de droit economique,1 revue internationale de droit pénal,1 revue internationale de philosophie,2 revue internationale de politique comparée,1 revue internationale de psychologie sociale-international review of socialpsychology,1 revue internationale de pédagogie de l'enseignement supérieur,-1 revue internationale deducation de sevres,-1 revue internationale des droits de l'antiquite,1 revue internationale des études du développement,1 revue internationale des sciences administratives,-1 revue internationale des technologies en pédagogie universitaire,1 revue internationale du crires,1 revue japonaise de didactique du francais,-1 revue mabillon: revue internationale d'histoire et de litterature religieuses,1 revue neurologique,1 revue nordique des études francophones,1 revue numismatique,1 revue organisations et territoires,-1 revue parole,1 revue philosophique de la france et de l'etranger,1 revue philosophique de louvain,1 revue quetelet : quetelet journal,-1 revue romane,3 revue roumaine de chimie,-1 revue roumaine de linguistique,1 revue roumaine de mathématiques pures et appliquées,1 revue roumaine de philosophie,1 revue roumaine de psychanalyse,-1 revue roumaine des sciences techniques-serie electrotechnique et energetique,-1 revue scientifique et technique: office international des epizooties,1 revue suisse de zoologie,1 revue theologique de louvain,1 revue thomiste,1 revue théologique des bernardins,-1 revue économique et sociale,-1 revus : journal for constitutional theory and philosophy of law,1 reîntregirea,-1 réflexions en gynécologie-obstétrique,-1 rfc series,1 rff press,1 rg - press,-1 rheinisches museum fur philologie,2 rheologica acta,1 rhesis,1 rhetoric and public affairs,1 rhetoric review,1 rhetoric society quarterly,2 "rhetoric, professional communication and globalization",1 rhetorica scandinavica,1 rhetorica: a journal of the history of rhetoric,3 rhetorik: ein internationales jahrbuch,1 rheumatic disease clinics of north america,1 rheumatology,1 rheumatology advances in practice,1 rheumatology and therapy,1 rheumatology international,1 rhinology,2 rhinology online,-1 rhizai: a journal for ancient philosophy and science,1 rhizomata,1 rhizomes,1 rhizosphere,1 rhode island school of design,-1 rhododendronlehti,-1 rhodora,1 rhodos,1 "riact revista de investigação artística, criação, e tecnologia",1 riba publishing,1 ricardian: journal of the richard iii society,1 rice,1 ricerche di matematica,1 ricerche di pedagogia e didattica,-1 ricerche di storia dell arte,1 ricerche di storia economica e sociale,1 ricerche di storia politica,1 ricerche storiche,1 richard-strauss-jahrbuch,-1 ricognizioni,1 rie,1 riffi,-1 riffs,-1 riforma e movimenti religiosi,-1 rig: kulturhistorisk tidskrift,1 rigakuryoho kagaku,1 riggisberger berichte,1 riha journal,-1 rihveli,-1 riihimäen kaupunki,-1 riista- ja kalatalouden tutkimuslaitos,-1 rijksmuseum bulletin,-1 rikkyo daigaku syuppankai,-1 rikosseuraamuslaitoksen julkaisuja,-1 rikosseuraamuslaitoksen monisteita,-1 riksantikvarieämbetet,1 riksarkivet,-1 ril,-1 ril editores,-1 rilce: revista de filologia hispanica,2 rilem bookseries,-1 rilem publications,1 rilem technical letters,1 rima: review of indonesian and malaysian affairs,1 rims kokyuroku bessatsu,1 rinascimento,2 ringing and migration,1 rinnakkain,-1 rinshou tetsugaku,-1 rio book´s,-1 rio kulturlandskapet,-1 riocht na midhe,1 risk analysis,1 risk governance & control : financial markets & institutions,1 risk management and healthcare policy,1 risk management and insurance review,1 risk management: an international journal,1 "risk, hazards and crisis in public policy",1 riskbook,-1 risks,-1 risorgimento,1 riss (trondheim),-1 ristal,1 risteys,-1 risteysasema,-1 ristiinalainen,-1 ristin voitto,-1 risto ryti -seuran julkaisuja,-1 risto willamo,-1 risus - revista de inovação e sustentabilidade,1 rit press,1 rita devi,-1 riti,-1 riveneuve,-1 river publishers,1 river research and applications,1 rivista biblica: organo dell associazione biblica italiana,1 rivista degli studi orientali,1 rivista del nuovo cimento,1 rivista dell istituto nazionale d archeologia e storia dell arte,1 rivista di analisi e teoria musicale,1 rivista di archeologia,1 rivista di archeologia cristiana,1 rivista di cultura classica e medioevale,2 rivista di digital politics,1 rivista di diritti comparati,1 rivista di diritto civile,1 rivista di diritto internazionale,1 rivista di diritto internazionale privato e processuale,1 rivista di estetica,1 rivista di filologia e di istruzione classica,1 rivista di filosofia,1 rivista di filosofia del diritto,1 rivista di filosofia neo-scolastica,1 rivista di grammatica generativa,1 rivista di letteratura italiana,1 rivista di letterature moderne e comparate,1 rivista di linguistica,1 rivista di psichiatria,1 rivista di psicoanalisi,-1 rivista di scienze prehistoriche,1 rivista di storia del cristianesimo,1 rivista di storia della chiesa in italia,1 rivista di storia della filosofia,1 rivista di storia e letteratura religiosa,1 rivista di storia economica,1 rivista di studi bizanti e neocellini,1 rivista di studi italiani,1 rivista di studi liguri,1 rivista di studi pompeiani,1 rivista geografica italiana,-1 rivista internazionale di scienze sociali,1 rivista italiana delle sostanze grasse,1 rivista italiana di dialettologia,1 rivista italiana di diritto del lavoro,1 rivista italiana di diritto e procedura penale,1 rivista italiana di diritto pubblico comunitario,1 "rivista italiana di economia, demografia e statistica",-1 rivista italiana di filosofia del linguaggio,1 rivista italiana di musicologia,1 rivista italiana di onomastica,1 rivista italiana di ornitologia,1 rivista italiana di paleontologia e stratigrafia,1 rivista italiana di scienza política,1 rivista penale,1 rivista storica dell antichita,1 rivista storica italiana,1 rivista trimestrale di diritto pubblico,1 rla: revista de linguistica teorica y aplicada,1 rma research chronicle,1 rmd open,1 rmn newsletter,1 rms : research in mathematics & statistics,1 rna,2 rna biology,1 road materials and pavement design,2 roadrunner,-1 roadsides,-1 robert hamm,-1 robert schuman centre for advanced studies policy briefs,-1 robotica,1 robotics,-1 robotics and autonomous systems,2 robotics and biomimetics,1 robotics and computer-integrated manufacturing,3 robotics reports,-1 robotics: science and systems,1 rocambole,1 rock art research,1 rock mechanics and rock engineering,2 rock mechanics bulletin,1 rock music studies,1 rockefeller university press,1 rocky mountain geology,1 rocky mountain journal of mathematics,1 rocky mountain modern language association,1 rocky mountain review,1 rocznik instytutu europy ?rodkowo-wschodniej,-1 rocznik komparatystyczny,1 rocznik ochrona srodowiska,1 rocznik orientaliczny,1 roczniki biblioteczne,-1 roczniki filozoficzne,1 roczniki humanistyczne,1 roczniki nauk społecznych,-1 roczniki naukowe polskiego towarzystwa zootechnicznego,-1 rodnoj âzyk,-1 rodriguésia,1 roeper review,1 roihuvuoren kylälehti,-1 rollespilsakademiet,-1 roma,-1 roma nel rinascimento,-1 roma tre law review,1 roman 20-50: revue d etude du roman du 20 siecle,1 roman books,-1 roman legal tradition,1 romance notes,1 romance philology,2 romance quarterly,2 romance studies,1 romani studies,1 romania,1 romania literara,1 romanian agricultural research,1 romanian astronomical journal,1 romanian biotechnological letters,-1 romanian journal of anaesthesia and intensive care,-1 romanian journal of communication and public relations,-1 romanian journal of economic forecasting,-1 romanian journal of english studies,1 romanian journal of information science and technology,-1 romanian journal of legal medicine,1 romanian journal of morphology and embryology,1 romanian journal of physics,1 romanian journal of political science,1 romanian journal of population studies,1 romanian journal of regional science,-1 romanian reports in physics,1 romanic review,1 romanica cracoviensia,1 romanica gothoburgensia,1 romanica silesiana,-1 romanica stockholmiensia,1 romanica wratislawiensia,1 "romanica, revista de literatura",1 romanische forschungen,3 romanistische zeitschrift fur literaturgeschichte-cahiers d histoire des litteratures romanes,1 romanistisches jahrbuch,1 romano džaniben,-1 romantic circles praxis series,1 romantic textualities,1 romanticism,1 romanticism on the net,1 romantisme,2 rombach druck- und verlagshaus,1 rombach wissenschaft,-1 romchip,-1 romhorisont,-1 romische historische mitteilungen,1 romische quartalschrift fur christliche altertumskunde und kirchengeschichte,1 romisches jahrbuch der bibliotheca hertziana,1 rondo,-1 rongorongo studies: a forum for polynesian philology,1 room,-1 rootroo oy,-1 ropecon ry,-1 rorschachiana,-1 rosa dos ventos,-1 rosebud books,-1 rosenlarv,-1 roshia touou kenkyuu,-1 roskilde universitetsforlag,1 rossica antiqua,-1 rossiiskaya politicheskaya enciklopediya,-1 rossijskaja akademija nauk,1 rossijskaja arheologija,1 rossijskaja nacionalnaja biblioteka,1 rossijskaya gosudarstvennaya biblioteka iskusstv,-1 rossijskaya pravovaya akademiya ministerstva yusticii rossijskoj federacii,-1 rossijski juriditsheskij zhjurnal,1 rossijskij fiziologičeskij žurnal im. i.m. sečenova,-1 rossijskij gosudarstvenny`j gumanitarny`j universitet,-1 rossijskij gosudarstvennyj pedagogicheskij universitet im. a.i. gercena,-1 rossijskij nevrologičeskij žurnal,-1 rossijskij zhurnal menedzhmenta,1 rossijskij zhurnal pravovyh issledovanij,-1 rossijskij žurnal nauk o zemle,-1 rossiya i sovremennyi mir,1 rossiâ i amerika v xxi veke,1 rostok,-1 rottenburger jahrbuch für kirchengeschichte,1 rotunda,-1 round table,1 routledge,2 routledge advances in feminist studies and intersectionality,3 routledge advances in sociology,3 routledge explorations in economic history,3 routledge focus in tourism,1 routledge focus on accounting and auditing,1 routledge focus on business and management,1 routledge focus on philosophy,1 routledge handbooks in philosophy,3 routledge mental health,1 routledge open research,-1 routledge research in gender and society,3 routledge studies in archaeology,3 routledge studies in contemporary philosophy,3 routledge studies in critical realism,3 routledge studies in metaphysics,3 routledge studies in renaissance and early modern worlds of knowledge,3 routledge studies in seventeenth-century philosophy,3 routledgecurzon,1 routledgefalmer,2 rovaniemen ammattikorkeakoulu,-1 rovaniemen kaupunki,-1 rovaniemen taidemuseo,-1 rowman & littlefield publishers,2 royal college of art,-1 royal institute of philosophy supplement,-1 royal institution of naval architects,1 royal meteorological society,1 royal society of chemistry,2 royal society of medicine press,1 royal society open science,1 royal studies journal,1 rozenberg publishers,1 rsa journal,-1 rsa journal,1 rsc,1 rsc advances,1 rsc applied interfaces,-1 rsc chemical biology,1 rsc medicinal chemistry,1 rsc pharmaceutics,-1 rsc sustainability,1 rssi recherches semiotiques: semiotic inquiry,1 rsu rivista di studi ungheresi,-1 ru-science,-1 rubber chemistry and technology,1 rubbettino,-1 ruch filozoficzny,1 rudiae,1 rudn university,-1 rudy i metale niezelazne,-1 rug bibliotheek,-1 ruminants,-1 run nijmegen school of management,-1 runas : journal of education and culture,1 "rundbrief fotografie: zeitschrift fur fotografische sammlungen in archiven, bibliotheken und museen",1 rundfunk und geschichte,1 runrön: runologiska bidrag,1 ruokaviraston julkaisuja,-1 ruokaviraston tutkimuksia,-1 ruotuväki,-1 rural development,-1 rural history: economy society culture,1 rural landscapes,1 rural society,1 rural sociology,2 rural theology journal,1 ruralia,-1 ruralia,1 ruralia-instituutti julkaisuja,-1 rusi,1 rusistika,1 rusistika bez granici,-1 ruslania books oy,-1 russell house publishing,-1 russell sage foundation,1 russell: the journal of the bertrand russell studies,1 russian agricultural sciences,-1 russian analytical digest,-1 russian and east european studies indexed journal reference guide,-1 russian chemical bulletin,1 russian chemical reviews,-1 russian education and society,1 russian entomological journal,1 russian geology and geophysics,1 russian history,2 russian journal of applied chemistry,-1 russian journal of bioorganic chemistry,-1 russian journal of communication,1 russian journal of comparative law,1 russian journal of coordination chemistry,-1 russian journal of developmental biology,1 russian journal of ecology,1 russian journal of electrochemistry,-1 russian journal of general chemistry,-1 russian journal of genetics,-1 russian journal of genetics : applied research,-1 russian journal of inorganic chemistry,-1 russian journal of linguistics,1 russian journal of logistics and transport management,-1 russian journal of marine biology,-1 russian journal of mathematical physics,1 russian journal of money and finance,1 russian journal of nematology,1 russian journal of non-ferrous metals,1 russian journal of nondestructive testing,1 russian journal of numerical analysis and mathematical modelling,1 russian journal of organic chemistry,-1 russian journal of ornithology,1 russian journal of pacific geology,1 russian journal of physical chemistry a,-1 russian journal of physical chemistry b,-1 russian journal of plant physiology,1 russian language journal,1 russian linguistic bulletin,-1 russian linguistics,3 russian literature,3 russian mathematical surveys,1 russian metallurgy,1 russian meteorology and hydrology,1 russian microelectronics,-1 russian parasitological journal,-1 russian philology,-1 russian physics journal,1 russian politics,1 russian politics and law,1 russian review,2 russian social science review,1 russian state university of justice,-1 russian studies in history,-1 russian studies in literature,-1 russian studies in philosophy,1 russian summer school in information retrieval,-1 russianstudieshu,-1 russkaia literatura,1 russkaâ filologiâ,-1 russkaâ rečʹ,-1 russkii yazyk za rubezhom,-1 russkij jazyk v naucnom osvescenii,2 russkij jazyk v škole,1 russkij jazyk za rubežom,1 russkij sbornik: issledovania? po istorii rossii xix-xx vv,-1 russlandanalysen,-1 rutgers business review,-1 rutgers computer & technology law journal,-1 rutgers law review,1 rutgers university press,1 ruudinsavu,-1 ruukku,1 ruumiin kulttuuri,-1 ruusunlehti,-1 ry,-1 rynek energii,1 ryynäset,-1 räisäläinen,-1 rättshistoriska skrifter,1 rättshistoriska studier,-1 rättshistoriskt bibliotek,-1 réforme,-1 röfo : fortschritte auf dem gebiet der röntgenstrahlen und der bildgebenden verfahren,1 röhrig universitätsverlag,-1 "röll, j.h.",-1 röstläget,-1 rüdiger köppe verlag,1 rāhburd-i farhangī va ijtimā̒ī.,-1 rīgas tehniskās universitātes zinātniskie raksti : vides un klimata tehnoloģijas,-1 s & f online,-1 s + f,1 s b editori,-1 s. hirzel verlag,-1 s. karger,1 s/n korean humanities,1 s: i. m. o. n.,1 sa journal of human resource management,-1 saalburg jahrbuch,1 saaremaa ülikoolide keskus,-1 saarijärveläinen,-1 saarijärvi-seura r.y.,-1 saariselän sanomat,-1 saarmste,-1 sabah ülkesi,-1 sabrao journal of breeding and genetics,1 sacra scripta,1 sacrasage press,-1 sacred music,1 sacris erudiri,1 sadhana,1 sae international,1 sae international journal of aerospace,1 sae international journal of commercial vehicles,1 sae international journal of connected and automated vehicles,1 sae international journal of electrified vehicles,-1 sae international journal of engines,1 sae international journal of fuels and lubricants,1 "sae international journal of vehicle dynamics, stability, and nvh",1 sae technical papers,1 saeculum,1 safer communities,1 safety,-1 safety & reliability,1 safety and health at work,1 safety of technogenic environment,-1 safety science,2 safety science monitor,-1 safundi: the journal of south african and american comparative studies,1 saga,1 saga och sed: kungliga gustav adolfs akadeniens aarsbok,1 saga-book of the viking society for northern research,1 sagamore publishing,-1 sage open,1 sage open medical case reports,1 sage open medicine,-1 sage open nursing,1 sage publications,3 saguntum,1 sahara j: journal of social aspects of hiv: aids,1 sahim,-1 sahlbergia,-1 sahoegwasueobyeongu,-1 saima,-1 saint anselm journal,1 saint petersburg center for the history of ideas,-1 saint vladimir's seminary press,1 sairaanhoitaja,-1 saj serbian architectural journal,-1 sajog: south african journal of obstetrics and gynaecology,1 sakkoulas publishers,1 sakprosa,1 saksalainen kirjastoyhdistys ry,-1 saksanpaimenkoira,-1 salamandra,1 salaojituksen tutkimusyhdistys ry:n tiedote,-1 salem press,-1 salerno editrice,1 sales and marketing management,1 salesianum,-1 sall data,1 salmagundi: a quarterly of the humanities and social sciences,1 salmand,1 salon seudun sanomat,-1 salon verlag,-1 salón bienal de investigación creación,-1 salt - alas,-1 salud colectiva,1 salud i ciencia,1 salud mental,1 salud publica de mexico,1 salute e societá,1 salāmat va varzish : rūykard/hā-yi nuvīn,-1 sam magazine,-1 samfundslitteratur,1 samfunnsøkonomen,-1 samj south african medical journal,1 samlaren,1 sammakko,-1 sampe europe,-1 sampe journal,1 sampsa,-1 samtidshistoriska frågor,-1 samu,-1 samuel beckett today: aujourd hui,1 san diego international law journal,-1 san francisco estuary and watershed science,1 sana,-1 sanalla sanoen,-1 sananjalka,2 sanansaattaja,-1 sanasato,-1 sanat duenyamiz,-1 sanct olof,-1 sanctorum,1 sandalion,1 sane journal,1 sanelma,-1 sangen-sha,-1 sanitation,1 sankei-sha,-1 sankhya series a,1 sankhya series b,1 sanoma magazines,-1 sanoma pro,-1 santa barbara portuguese studies,1 santa casa da misericórdia lisboa,-1 santa clara high technology law journal,1 santalahti-kustannus,1 santander art & culture law review,1 sante publique,1 santérus academic press,1 sao paulo medical journal,-1 saobraćajno-tehnički fakultet,-1 saothar,-1 sapere aude,-1 sapere aude,1 saqi books,-1 sar and qsar in environmental research,1 sar press,1 sara hildénin taidemuseo,-1 sara hildénin taidemuseon julkaisuja,-1 sarajevo journal of mathematics,1 saratov state university,-1 sarawak museum journal,1 sarcoidosis vasculitis and diffuse lung diseases,1 sardinia... international waste management and landfill symposia proceedings,-1 sargon editrice,1 sarhad journal of agriculture,-1 sarjainfo,-1 sartoniana,1 sartre studies international: an interdisciplinary journal of existentialism and contemporary culture,1 sas julkaisusarja,-1 sasi,-1 sastamalan joulu,-1 satakieliseminaari,-1 satakunnan ammattikorkeakoulu,-1 satakunnan ammattikorkeakoulu : muut julkaisut,-1 satakunnan ammattikorkeakoulu : oppimateriaalit,-1 satakunnan ammattikorkeakoulu : raportit,-1 satakunnan historiallinen seura ry,-1 satakunnan kauppakamari,-1 satakunnan linnut,-1 satakunnan museo,-1 satakunnan viikko,-1 satakuntaliitto,-1 satama,-1 satasarvi,-1 sateenkaarihistorian ystävien kirjoituksia,-1 satelliitti,-1 satellite navigation,1 satikka,-1 sats: northern european journal of philosophy,1 saude e sociedade,1 saudi commission for tourism and antiquities,-1 saudi journal of biological sciences,1 saudi journal of ophthalmology,-1 saudi medical journal,1 saudi pharmaceutical journal,-1 sauna,-1 sauramps médical,-1 savaria university press,1 saviseudun joulu,-1 savon koulutuskuntayhtymä,-1 savon sanomat,-1 savon sotilasperinneyhdistys porrassalmi r.y.,-1 savon yrittäjä,-1 savonia-ammattikorkeakoulu,-1 savonia-ammattikorkeakoulun julkaisusarja,-1 savonian sanomat,-1 savot,-1 savukeidas,-1 saxa verlag,-1 sayyab translation journal,-1 sbl: writings from the greco-roman world,1 sbornik mathematics,1 scalable computing. practice and experience,-1 scan: journal of media arts culture,1 scandia,1 scandia,2 scandinavian - canadian studies,1 scandinavian academic press,1 scandinavian actuarial journal,1 scandinavian cardiovascular journal,1 "scandinavian cardiovascular journal, supplement",1 scandinavian conference on artificial intelligence,-1 scandinavian economic history review,2 scandinavian forest economics,1 scandinavian journal for leadership and theology,-1 scandinavian journal of caring sciences,1 scandinavian journal of child and adolescent psychiatry and psychology,1 scandinavian journal of clinical and laboratory investigation,1 scandinavian journal of comic art,1 scandinavian journal of disability research,2 scandinavian journal of economics,2 scandinavian journal of educational research,2 scandinavian journal of forensic science,1 scandinavian journal of forest research,1 scandinavian journal of gastroenterology,1 "scandinavian journal of gastroenterology, supplement",1 scandinavian journal of history,3 scandinavian journal of hospitality and tourism,2 scandinavian journal of immunology,1 "scandinavian journal of infectious diseases, supplement",1 scandinavian journal of information systems,1 scandinavian journal of laboratory animal science,1 scandinavian journal of management,1 scandinavian journal of medicine and science in sports,2 scandinavian journal of military studies,1 scandinavian journal of occupational therapy,1 scandinavian journal of pain,1 scandinavian journal of primary health care,2 scandinavian journal of psychology,1 "scandinavian journal of psychology, supplementum",1 scandinavian journal of public administration,1 scandinavian journal of public health,1 scandinavian journal of rheumatology,1 "scandinavian journal of rheumatology, supplement",1 scandinavian journal of sport and exercise psychology,-1 scandinavian journal of statistics,2 scandinavian journal of surgery,1 scandinavian journal of the old testament,3 "scandinavian journal of trauma, resuscitation and emergency medicine",1 scandinavian journal of urology,1 scandinavian journal of vocations in development,1 scandinavian journal of work and organizational psychology,1 scandinavian journal of work environment and health,2 scandinavian political studies,2 scandinavian psychoanalytic review,1 scandinavian psychologist,-1 scandinavian sport studies forum,1 scandinavian studies,2 scandinavian studies in language,1 scandinavian studies in law,2 scandinavian veterinary press,1 scandinavica,2 scando-slavica,2 scarecrow press,1 "scars, burns & healing",1 scenari,1 scenario,-1 scene,1 schattauer,1 schede medievali,1 schede umanistiche,-1 schelling-studien,-1 schibri-verlag,1 schifanoia,1 schildts & söderströms,-1 schizophrenia,1 schizophrenia bulletin,3 schizophrenia bulletin open,1 schizophrenia research,2 schizophrenia research : cognition,1 schloss dagstuhl - leibniz zentrum für informatik,-1 schmalenbach business review,1 schmerz,1 schneider verlag hohengehren,1 schnittstelle germanistik,-1 scholarpedia journal,-1 scholars academic journal of pharmacy,-1 scholars journal of applied medical sciences,-1 scholars´ press,-1 scholia: studies in classical antiquity,1 scholé,-1 school education gateway,-1 school effectiveness and school improvement,2 school leadership and management,1 school libraries worldwide,1 school library research,1 school mental health,1 school of oriental and african studies,1 school psychology,1 school psychology international,1 school psychology review,1 school science and mathematics: journal for all science and mathematics teachers,1 schools,1 schopenhauer-jahrbuch,1 schriften der luther-agricola-gesellschaft,1 schriften des forschungszentrums julich,1 schriften des instituts für deutsche sprache,1 schriften zur geistesgeschichte des östlichen europa,1 schriftenreihe der isa lohmann-siems stiftung,-1 "schriftenreihe des instituts für landschaft und freiraum, hsr hochschule für technik rapperswil",-1 schubert: perspektiven,1 schuman papers,-1 schwabe verlag,-1 schweizer archiv fur tierheilkunde,1 schweizer jahrbuch fur musikwissenschaft,1 schweizerische zeitschrift fur forstwesen,1 schweizerische zeitschrift fur geschichte,1 schweizerische zeitschrift fur volkswirtschaft und statistik,1 schweizerische zeitschrift für bildungswissenschaften,1 schweizerische zeitschrift für religions- und kulturgeschichte,1 schweizerische zeitschrift für soziale arbeit,-1 schweizerisches archiv fur volkskunde,1 schüren verlag,-1 sci,-1 sciamvs: sources and commentaries in exact sciences,1 scieconf,-1 science,3 science & medicine in football,1 science & technology for the built environment,1 science advances,3 science and children,-1 science and culture,-1 science and education,1 science and engineering ethics,2 science and engineering of composite materials,1 science and global security,1 science and justice,1 science and public policy,2 science and society,1 science and sports,1 science and technology,-1 science and technology for cultural heritage,1 science and technology libraries,1 science and technology of advanced materials,1 science and technology of advanced materials : methods,1 science and technology of energetic materials,-1 science and technology of nuclear installations,1 science and technology of welding and joining,1 science and technology studies,1 science as culture,2 science bulletin,1 science china : information sciences,1 science china chemistry,-1 science china materials,1 science china: earth sciences,1 science china: life sciences,1 science china: mathematics,1 science china: physics mechanics and astronomy,1 science china: technological sciences,1 science communication,2 science education,3 science education international,1 science education review,1 science et technique du froid,1 science fiction film and television,1 science immunology,3 science in context,2 science in one health,-1 science journal of education,-1 science journal of public health,-1 science museum group journal,1 science of advanced materials,-1 science of computer programming,2 science of gymnastics journal,1 science of religion,1 science of remote sensing,1 science of sintering,1 science of the total environment,2 science press,-1 science progress,-1 science publishers inc.,1 science robotics,3 science signaling,2 science talks,-1 science technology and human values,3 science translational medicine,3 "science, technology and innovation studies",1 "science, technology and society",1 science-fiction studies,3 science-to-business marketing conference,-1 sciencerise : pharmaceutical science,-1 sciencerise. pedagogical education,1 sciences des aliments,1 sciences du jeu,1 sciences et techniques en perspective,1 sciences in cold and arid regions,1 sciences sociales et sante,1 sciendo,-1 scientia,-1 scientia agricola,1 scientia agriculturae bohemica,-1 scientia agropecuaria,-1 scientia forestalis,-1 scientia horticulturae,1 scientia in educatione,-1 scientia iranica,1 scientia marina,1 scientia moralitas,1 scientia paedagogica experimentalis,1 scientia pharmaceutica,-1 scientia socialis,1 scientiae mathematicae japonicae,1 scientiarum historia: tijdschrift voor de geschiedenis van de wetenschappen en de geneeskunde,1 scientific african,1 scientific american,-1 scientific and academic publishing,-1 scientific annals of computer science,-1 scientific association for infocommunications,1 scientific bulletin of the university politechnica of bucharest: series a applied mathematics and physics,1 scientific conference on electrical engineering in aait,-1 scientific data,1 scientific drilling,1 scientific journal of gdynia maritime university,-1 scientific journal of riga technical university: computer sciences,-1 scientific journal of rtu: sustainable spatial development,-1 scientific journal of silesian university of technology : series transport,-1 scientific journals of the maritime university of szczecin,-1 scientific modeling and simulation,1 "scientific papers : series management, economic, engineering in agriculture and rural development",1 scientific papers series d : animal science,1 scientific reports,-1 scientific reports,1 scientific research and essays,-1 scientific research publishing,-1 scientific studies of reading,3 scientific technical report (deutsches geoforschungszentrum),-1 scientific world journal,1 scientifica,1 scientifur,1 scientometrics,2 scienza & politica,1 "scienze dell antichita: storia, archeologia, antropologia",1 scipost physics,1 scipost physics codebases,-1 scipost physics core,1 scipost physics lecture notes,1 scipost physics proceedings,-1 scitepress science and technology publications,-1 scm press,1 scms journal of indian management,-1 scolia,1 scoliosis and spinal disorders,-1 scope: an on-line journal of film studies,1 scottish affairs,-1 scottish anti-poverty review,-1 scottish archaeological journal,1 scottish archives,1 scottish gaelic studies,1 scottish geographical journal,1 scottish historical review,2 scottish journal of geology,1 scottish journal of political economy,1 scottish journal of theology,2 scottish languages review,-1 scottish literary review,1 scottish medical journal,1 scottish place-name society,1 scottish studies,-1 screen,3 screen sound,1 screening the past,1 screenworks,1 scriblerian and the kit-cats,1 scrinium,1 script and print: bulletin of the bibliographical society of australia and new zealand,1 script-ed,1 scripta,1 scripta & e-scripta,-1 scripta abonesia,-1 scripta classica israelica,1 scripta ethnologica,1 scripta geologica,1 scripta historica,1 scripta instituti donneriani aboensis,1 scripta islandica: islandska sallskapets årsbok,1 scripta materialia,3 scripta mediterranea,1 scripta mercaturae: zeitschrift fur wirtschafts- und sozialgeschichte,1 scripta nova: revista electronica de geografia y ciencias sociales,1 scripta theologica,1 scriptorium,3 scriptum,1 scriptum digital,1 "scriptura: international journal of bible, religion and theology in southern africa",1 scrivener publishing,-1 scroope,-1 scrutiny2,1 sculpture journal,-1 sculpture review,-1 scuola democratica,-1 "scuola vaticana di paleografia, diplomatica e archivistica",-1 sdrp journal of earth sciences & environmental studies,-1 sdrp journal of food science & technology,-1 sdvig press,1 sea technology,1 sealing technology,1 seamk journal,-1 seamk news,-1 sean kingston publishing,1 sebu forlag,1 second language research,3 second language teacher education,-1 "secretariat of the convention on biological diversity, implementation and outreach division",-1 secrypt,1 secular studies,1 secularism and nonreligion,1 securities regulation law journal,1 securitologia,-1 security and communication networks,-1 security and defence quarterly,1 security and human rights,1 security and privacy,1 security dialogue,3 security dimensions,1 security informatics,1 security journal,1 security spectrum : journal of advanced security research,-1 security studies,1 sederi: journal of the spanish society for english renaissance studies,1 sedimentary geology,1 sedimentology,2 seed science and technology,1 seed science research,1 seers books,-1 sefarad,1 sefi journal of engineering education advancement,-1 segle xx,1 sehepunkte,-1 sehnsucht,1 sei working paper,-1 seibutsu-kogaku kaishi,1 seikagaku,1 seikokai,-1 seili archipelago research institute publications,-1 seinen shinrigaku kenkyū,-1 seinäjoen ammattikorkeakoulu,-1 seinäjoen ammattikorkeakoulun julkaisusarja,-1 "seinäjoen ammattikorkeakoulun julkaisusarja. a, tutkimuksia",-1 seinäjoen kaupunki,-1 seishin igaku,-1 seismic instruments,1 seismica,1 seismograf/dmt,1 seismological research letters,1 seismopolite,-1 seitai ikougaku,-1 seiyo koten ronshu,1 seizieme siecle,1 seizure: european journal of epilepsy,1 seksologinen aikakauskirja,1 sekvoiya,-1 selecta mathematica: new series,2 selected papers from uk-cla meetings,-1 selected papers of internet research,-1 self and identity,1 self xx-xxi,-1 selkälehti,-1 selkäydinvamma,-1 sellier,1 sellier european law publishers,-1 selskabet for skole- og uddannelseshistorie,-1 selvedge,-1 selvityksiä,-1 selänne,-1 selʹskohozâjstvennaâ biologiâ,-1 selʹskohozâjstvennye mašiny i tehnologii,-1 semantic fieldwork methods,1 semantic web,2 semantics and pragmatics,1 semeia studies,2 semen,1 sementtisanomat,-1 semico,-1 semiconductor science and technology,1 semiconductors,1 semiconductors and semimetals,1 semigroup forum,1 semina: ciencias agrarias,1 seminaire de probabilites,1 seminaire lotharingien de combinatoire,1 seminar.net,1 seminar: a journal of germanic studies,2 seminari romani di cultura greca,1 seminars in arthritis and rheumatism,1 seminars in cancer biology,1 seminars in cell and developmental biology,1 seminars in cutaneous medicine and surgery,1 seminars in diagnostic pathology,1 seminars in dialysis,1 seminars in fetal and neonatal medicine,2 seminars in hearing,1 seminars in hematology,1 seminars in immunology,1 seminars in immunopathology,2 seminars in interventional radiology,1 seminars in liver disease,1 seminars in musculoskeletal radiology,1 seminars in nephrology,1 seminars in neurology,1 seminars in nuclear medicine,1 seminars in oncology,1 seminars in oncology nursing,-1 seminars in ophthalmology,1 seminars in orthodontics,-1 seminars in pediatric neurology.,1 seminars in pediatric surgery,1 seminars in perinatology,2 seminars in plastic surgery,1 seminars in radiation oncology,1 seminars in reproductive medicine,1 seminars in respiratory and critical care medicine,1 seminars in roentgenology,1 seminars in speech and language,1 seminars in thoracic and cardiovascular surgery,-1 seminars in thoracic and cardiovascular surgery,1 seminars in thrombosis and hemostasis,1 seminars in ultrasound ct and mri,1 seminars in vascular surgery,1 semiotexte,1 semiotica,3 semiotika,1 semiotique et bible,1 semitica,1 sen-i gakkaishi,1 seniorilääkäri,-1 senioriopettaja,-1 seniors housing and care journal,-1 senri ethnological studies,1 sens public,-1 sensing and bio-sensing research,1 sensing and imaging,1 sensor letters,1 sensor review,1 sensors,1 sensors & diagnostics,1 sensors and actuators a: physical,1 sensors and actuators b: chemical,1 sensors and actuators reports,1 sensors and materials,1 sensors and transducers,1 sensors international,-1 sente-julkaisuja,-1 sentio,-1 seoppi,-1 seoul journal of korean studies,1 separation and purification reviews,1 separation and purification technology,2 separation science and technology,1 separations,-1 septentrion,1 sequential analysis,1 serbian journal of electrical engineering,-1 serbian journal of management,1 serbian studies research,1 sereco ab,-1 serials librarian,1 serials review,1 serie haina,-1 serie orientale roma,1 series : international journal of tv serial narratives,1 series on advances in bioinformatics and computational biology,1 series: journal of the spanish economic association,1 serlachius-museoiden julkaisuja,-1 serus oy,-1 service business: an international journal,1 service industries journal,1 service oriented computing and applications,1 service science,-1 service science,1 services marketing quarterly,1 servizo de publicacións da universidade de vigo,1 ses,-1 sesar innovation days,-1 sesko vuosikirja,-1 sess report,1 set-valued and variational analysis,1 setac lca case study symposium,-1 setlementtijulkaisuja,-1 settentrione : nuova serie,-1 settler colonial studies,1 seura,-1 seurantauutiset,-1 seutulehti uutisoiva,-1 sevasmaailma,-1 seventeenth century,2 seventeenth-century french studies,1 seventeenth-century news,-1 sever,-1 severnorusskie govory,-1 severny`j (arkticheskij) federal`ny`j universitet,-1 severo-zapadnaya akademiya gosudarstvennoj sluzhby`,-1 sewanee review,1 sewanee theological review,1 sex education,1 sex roles,2 sexes,-1 sexologies,1 sexual & reproductive healthcare,1 sexual abuse: a journal of research and treatment,2 sexual addiction and compulsivity,1 sexual and relationship therapy,1 sexual development,1 sexual health,-1 sexual medicine,1 sexual medicine reviews,1 sexualities,2 sexuality and culture,1 sexuality and disability,1 sexuality research and social policy,1 sexually transmitted diseases,1 sexually transmitted infections,1 sexuologie,-1 seychelles research journal,-1 sfinx,1 sfk-ofis,-1 sfra review,-1 sfv magasinet,-1 sgem international multidisciplinary scientific conferences on social sciences and arts,-1 sgf rapport,-1 sh traveledu,-1 shakai gengo kagaku,1 shaker,-1 shaker verlag,1 shakespeare,1 shakespeare bulletin,1 shakespeare quarterly,3 shakespeare studies,2 shakespeare survey,1 shakespeare yearbook,1 shakespearean international yearbook,1 shakki,-1 shaman: journal of the international society for shamanistic research,1 shamrock,-1 shandean,1 shanghai chest,-1 shanghai foreign language education press,-1 shanghai jiaotong daxue xuebao,-1 shanghai jiaotong daxue xuebao : yixue ban,-1 shanghai normal university,-1 shanghai people's publishing house,1 shanghai scientific & technical publishers,-1 shareholder activism & engagement,-1 shaw: the annual of bernard shaw studies,1 she ji,1 sheffield hallam university press,-1 sheffield phoenix press,1 shehui gongzuo yu guanli,-1 shenandoah,-1 shengli xuebao,-1 shengxue xuebao,-1 shidai faxue,-1 shiga daigaku kyoiku gakubu kiyo,-1 shijie jianzhu,-1 shijie linye yanjiu,-1 shijie lishi pinglun,-1 shilap: revista de lepidopterologia,1 shima,1 shinhyoron,-1 shinkenchiku,-1 shinpojiumu,-1 shinrin kumiai,-1 shinyosha,-1 ship technology research,1 shipin gongye ke-ji,-1 shipin yu fajiao gongye,-1 shipra publications,-1 ships and offshore structures,1 shock,2 shock and vibration,1 shock waves,1 shofa: an interdisciplinary journal of jewish studies,1 shojihomu.co,-1 shonika rinsho,1 shougai gakushuu kyaria kyouiku kenkyuu,-1 shoulder & elbow,1 shoulei xuebao,-1 showado,-1 showing theory press,-1 shs web of conferences,1 shu-te university,-1 shui kexue jinzhan,-1 shuili shuidian kuaibao,-1 shumpusha,-1 shuxue xuebao,-1 shy plumber,-1 shìdnij svìt,1 si somos americanos,-1 siam journal on applied algebra and geometry,1 siam journal on applied dynamical systems,1 siam journal on applied mathematics,3 siam journal on computing,3 siam journal on control and optimization,3 siam journal on discrete mathematics,2 siam journal on financial mathematics,1 siam journal on imaging sciences,2 siam journal on mathematical analysis,3 siam journal on mathematics of data science,1 siam journal on matrix analysis and applications,3 siam journal on numerical analysis,3 siam journal on optimization,3 siam journal on scientific computing,3 siam review,3 siam/asa journal on uncertainty quantification,1 siaures atenai,-1 sibbaldia,-1 sibelius-akatemia,-1 sibelius-akatemian julkaisuja,-1 sibelius-akatemian selvityksiä ja raportteja,-1 siberian mathematical journal,1 "sibgrapi conference on graphics, patterns and images",-1 sibirica: the journal of siberian studies,1 sibirskie istoricheskie issledovaniya,1 sibirskie èlektronnye matematičeskie izvestiâ,-1 sibirskii matematicheskii zhurnal,1 sibirskij federal`ny`j universitet,-1 sibirskij filologicheskij zhurnal,1 sibirskij filologičeskij forum,-1 sibirskij gosudarstvennyj aerokosmitsheskij universitet,-1 sibirskij lesnoj žurnal,-1 sibirskoe medicinskoe obozrenie,-1 sic,1 sic!,-1 sichuan daxue xuebao : zhexue shehui kexue ban,-1 sichuan shifan daxue xuebao : ziran kexue ban,-1 sicilia antiqua,1 sicilia archeologica,1 side effects of drugs annual,1 side view press,-1 sidestone press,-1 sidney da silva facundes,-1 siedlungsforschung: archaologie geschichte geographie,1 sief newsletter,-1 sielunhoidon aikakauskirja,-1 siemenpuun teemajulkaisu,-1 sienet ja terveys,-1 sienilehti,-1 sievin kunta,-1 sigact news,-1 sight and sound,1 sigila,1 sigillum,-1 sigir forum,1 sigkdd explorations,-1 sigmetrics performance evaluation review,-1 sigmm records,-1 sigmod record,1 sign language and linguistics,3 sign language studies,1 sign systems studies,2 signa vitae,1 signa: revista de la asociacion espanola de semiotica,1 signal,-1 signal + draht,-1 signal processing,2 "signal processing algorithms, architectures, arrangements, and applications conference proceedings",1 signal processing and applied mathematics for electronics and communications workshop,-1 signal processing and communications applications conference,-1 signal processing: image communication,1 signal transduction,1 signal transduction and targeted therapy,1 "signal, image and video processing",1 signaling and communication in plants,-1 signals,-1 signals (english ed.),-1 signata : annales des sémiotiques,1 "signes, discours et sociétés",1 significação,1 signo et sena,1 signs,3 signs and society,1 signum,-1 signum temporis,1 siikajokilaakso,-1 siipirikko,-1 siirtolaisuusinstituutti,-1 siirtolapuutarha,-1 siivet,-1 sikh formations,1 sileno: rivista di studi classici e cristiani,1 silesia antiqua,1 silicates industriels,1 silicon,1 silicon chemistry,1 silmähoitaja,-1 silniki spalinowe,-1 silta,-1 siltala,-1 silva fennica,2 silvae genetica,1 sim(o) mediestudier,-1 simile,1 simiolus: netherlands quarterly for the history of art,2 simmel studies,1 simone de beauvoir studies,1 simpliciana: schriften der grimmelshausen-gesellschaft,1 simpukka,-1 simpósio brasileiro de telecomunicações,-1 simulation and gaming,1 simulation in healthcare,1 simulation modelling practice and theory,1 simulation notes europe,1 simulation: transactions of the society for modeling and simulation international,1 "simultech international conference on simulation and modeling methodologies, technologies and applications",1 sin saneop gyeongyeong jeoneol,-1 sinapinsiemen,-1 sincronia,1 "sincronie: rivista semestrale di letterature, teatro e sistemi di pensiero",1 "sindikat vzgoje, izobraževanja, znanosti in kulture slovenije",-1 sinebrychoffin taidemuseon julkaisuja,-1 sinergi : jurnal ilmiah fakultas teknik,-1 sinergia académica,1 sinergie,-1 sinet : an ethiopian journal of science,-1 singapore architect,-1 singapore economic review,1 singapore journal of legal studies,1 singapore journal of tropical geography,1 singapore medical journal,-1 singapore nursing journal,-1 singapore university press,1 sinn und form,2 "sino-christian studies: an international journal of bible, theology and philosophy",1 sino-us english teaching,-1 sintagma,1 sintef proceedings,-1 sions missionstidning,-1 sipoon sanomat,-1 sir henry wellcome asian series,1 sirp,-1 sis journal of projective psychology and mental health,1 sisekaitseakadeemia,-1 sismel - edizioni del galluzzo,-1 sissisanomat,-1 sistema solar,-1 sistemas & gestão,-1 sistemnyj analiz i logistika,-1 sisu idrottsböcker,-1 sisu-line,-1 sisyphus,1 sisä-suomen lehti,-1 sisäasiainministeriö,-1 sisäministeriön julkaisuja,-1 sitra,-1 sitra muistio,-1 sitra työpaperi,-1 sitran selvityksiä,-1 siun soten julkaisuja,-1 sivuosa,-1 sixteenth century journal,2 siy raportti,-1 siy sisäilmatieto oy,-1 sjuttonhundratal,1 sjöfartstidningen,-1 sjögrenlehti,-1 sk24,-1 skas,1 skase journal of theoretical linguistics,1 skase journal of translation and interpretation,1 skattenytt,1 skatterett,1 skb rapport,-1 skeletal muscle,1 skeletal radiology,1 skeptikko,-1 skholion,-1 skifiya-print,-1 skin appendage disorders,1 skin health and disease,1 skin pharmacology and physiology,1 skin research and technology,1 skira,1 skirnir,1 skogs- och träforskningsinstitutet,-1 skogsbruket,-1 skogsägaren,-1 skolhistoriskt arkiv,-1 skolska knjiga,1 skootteri,-1 skope,-1 skrifter från centrum for samisk forskning,1 skrifter från juridiska institutionen vid umeå universitet,-1 skrifter från svensk förening för matematikdidaktisk forskning,1 skrifter från svenska institutionen vid åbo akademi,-1 skrifter utgivna av historiska samfundet i åbo,-1 skrifter utgivna av svensk-österbottniska samfundet,-1 skrifter utgivna av svenska barnboksinstitutet,-1 skrifter utgivna av svenska folkskolans vänner,-1 "skrifter utgivna av svenska institutet i athen, 4¡",1 "skrifter utgivna av svenska institutet i athen, 8¡",1 skrifter utgivna av svenska institutet i rom. 4¡,1 skrifter utgivna av svenska institutet i rom. 8¡,1 skrifter utgivna av svenska litteratursällskapet i finland,2 skrifter: nordisk forening for leksikografi,1 skriveopplæring og skriveforskning,-1 skrolli,-1 skvortsovia,1 skyline business journal,-1 skyllis,1 skärgård,-1 slagmark,1 slalli,-1 slas discovery,1 slas technology,1 slaskie studia historyczno-teologiczne,1 slatkine,-1 slavery and abolition,1 slavia,1 slavia antiqua,1 slavia occidentalis,1 slavia orientalis,1 slavic and east european information resources,1 slavic and east european journal,3 slavic language education,-1 slavic review,2 slavic studies,-1 slavica,1 slavica bergensia,1 slavica helsingiensia,-1 slavica helsingiensia,1 slavica occitania,1 slavica publishers,1 slavica revalensia,-1 slavica slovaca,1 slavisticna revija,1 slavistika,1 slavjanovedenie,1 slavonic and east european review,2 slavonica,1 släktforskarnas årsbok,-1 släkthistoria,-1 sleep,2 sleep advances,1 sleep and biological rhythms,1 sleep and breathing,1 sleep epidemiology,1 sleep health,1 sleep medicine,1 sleep medicine and disorders : international journal,-1 sleep medicine clinics,1 sleep medicine reviews,2 sleep science,1 sleep science and practice,1 sley-media oy,-1 slezsky sbornik,1 slf,-1 slovak journal of civil engineering,1 "slovansky prehled: review for central, eastern and southeastern european history",1 slovart publishing,-1 slovene,1 slovene linguistic studies,1 slovene studies,1 slovenian veterinary research,1 slovenscina 2.0,1 slovenska akademija znanosti in umetnosti,-1 slovenska archeologia,2 slovenska literatura,1 slovenska rec,1 slovensko društvo za razsvetljavo,-1 slovensko zdravniško združenje,-1 slovensky narodopis,2 slovenská národná knižnica,-1 slovenská politologická revue,1 slovenská vedecká spoločnosť pre telesnú výchovu a šport,-1 slovenský archeologický a historický inštitút,-1 slovo,-1 slovo a slovesnost,1 slovo a smysl,1 slovo.ru: baltijskij akcent,1 slowo / obraz terytoria,1 sls varia,-1 släkt och hävd,-1 släkt och hävd: tidskrift,-1 small,3 small axe,1 small business economics,2 small enterprises research,1 small group research,1 small gtpases,1 small methods,2 small ruminant research,1 small science,1 small states & territories,-1 small structures,1 small wars and insurgencies,1 small-scale forestry,1 smart accessibility,-1 smart agricultural technology,1 smart and sustainable built environment,1 smart and sustainable manufacturing systems,1 smart cities,-1 smart cities and regional development journal,-1 smart cities symposium prague,1 smart energy,1 smart grid and renewable energy,-1 smart health,-1 "smart innovation, systems and technologies",1 smart learning environments,1 smart materials and structures,1 smart materials in medicine,-1 smart medicine,1 smart structures and systems,1 smartmat,-1 smhi oceanografi,-1 smith college studies in social work,1 smithsonian,-1 smithsonian institution scholarly press,1 smpte motion imaging journal,1 smt-v,1 smu law review: a publication of southern methodist university school of law,1 sn business & economics,1 sn comprehensive clinical medicine,1 sn computer science,1 sn operations research forum,1 sn partial differential equations and applications,1 sn social sciences,1 snippets,1 snorrastofa,1 snow,-1 sns förlag,1 sobornost,1 sobre prácticas artísticas y políticas de la edición,1 soccer and society,1 social analysis,3 social and critical theory,1 social and cultural geography,2 social and cultural research,-1 social and environmental accountability journal,1 social and legal studies,2 social and personality psychology compass,1 social anthropology,3 social behavior and personality,1 social change,1 social choice and welfare,2 social cognition,1 social cognitive and affective neuroscience,2 social compass,2 social construction,-1 social development,1 social dynamics: a journal of the centre for african studies university of cape town,1 social enterprise journal,1 social entrepreneurship review,-1 social epistemology,2 social epistemology review and reply collective,1 social europe,-1 social evolution and history,1 social forces,3 social history,3 social history of medicine,3 social identities,1 social inclusion,1 social indicators research,2 social influence,1 social inquiry into well-being,-1 social interaction,1 social justice research,1 "social justice: a journal of crime, conflict and world order",1 social kritik: tidsskrift for social analyse og debat,1 social marketing quarterly,1 social media + society,2 "social movement studies: journal of social, cultural and political protest",2 social network analysis and mining,1 social networking,-1 social networks,3 social neuroscience,1 social philosophy and policy,2 social policy and administration,2 social policy and society,1 social politics,3 social problems,3 social psychiatry and psychiatric epidemiology,2 social psychological and personality science,2 social psychological bulletin,1 social psychological review,-1 social psychology,1 social psychology of education,1 social psychology quarterly,2 social research,1 social responsibility journal,1 social science and medicine,3 social science computer review,1 social science history,2 social science information sur les sciences sociales,1 social science japan journal,1 social science journal,1 social science protocols,-1 social science quarterly,1 social science research,2 social science research network,-1 social science review,1 social science spectrum,1 social sciences,-1 social sciences & humanities open,1 social sciences - socialiniai,1 social sciences academic press,1 social sciences and missions,1 social sciences directory,-1 social sciences in asia,1 social scientist,1 social security bulletin,1 social semiotics,1 social service review,1 social studies of science,3 social studies research & practice,1 social text,2 social theory and health,1 social theory and practice,2 social welfare : interdisciplinary approach,-1 social work,2 social work and social sciences review,1 social work and society,1 social work education,1 social work in health care,1 social work in mental health,1 social work in public health,1 social work research,2 social work with groups,1 socialiniai tyrimai,-1 socialinis darbas. patirtis ir metodai,-1 socialinis ugdymas,-1 socialism and democracy,1 socialist studies,1 socialmedicinsk tidskrift,1 socialnet international,-1 socialvetenskaplig tidskrift,1 socialʹno-političeskie issledovaniâ,-1 social’naâ politika i social’noe partnerstvo,1 social’naâ politika i sociologiâ,1 social’no-gumanitarnye znaniâ,1 social’no-èkonomi?eskie âvleniâ i processy,1 social’nye aspekty zdorov’â naseleniâ,1 social’nye i gumanitarnye nauki na dal’nem vostoke,1 sociální pedagogika,-1 sociedad de etnomusicología,1 sociedad de la información,-1 sociedad española de acústica,-1 sociedad española de ciencias forestales,1 sociedad española de paleopatología,-1 sociedad iberoamericana de gráfica digital,-1 sociedad mexicana de entomología,1 sociedade e cultura,1 societas sanctae birgittae,-1 societas scientiarum olomucensis ii,-1 societes,1 societes et representations,1 societies,-1 society,1 society and animals,1 society and business review,1 society and natural resources,2 society antiquaries of scotland,1 society for global business & economic development,-1 society for imaging science and technology,-1 society for industrial and applied mathematics,1 "society for mining, metallurgy and exploration",1 society for modeling and simulation international,-1 society for underwater technology,1 society of automotive engineers,1 society of biblical literature,2 society of digital information & wireless communications,-1 society of environmental toxicology and chemistry,1 society of mathematics education,-1 society of motion picture and television engineers,-1 society of naval architects and marine engineers,1 society of petroleum engineers,1 society of plastics engineers,1 society of sedimentary geology,1 society register,1 "society, health and vulnerability",1 society. integration. education,1 società di studi geografici,-1 società italiana marketing,-1 società romana di storia patria,-1 societàmutamentopolitica,1 socio-ecological practice research,1 socio-economic planning sciences,1 socio-economic review,1 socio-environmental systems modelling,-1 socio.hu,-1 sociobiology,1 sociocriticism,1 sociodinamika,-1 socioeconomic challenges,-1 socioekonomické a humanitnì studie,-1 sociolinguistic studies,1 sociolinguistica: internationales jahrbuch fur europäische soziolinguistik,1 sociolingvistika,-1 sociologi?eskij žurnal,1 sociologi?eskoe obozrenie,-1 sociologia,1 sociologia del diritto,1 sociologia del lavoro,1 sociologia e ricerca sociale,-1 sociologia internationalis,-1 sociologia on line,-1 sociologia ruralis,2 sociologias,-1 sociologica,1 sociological focus,1 sociological forum,1 sociological inquiry,2 sociological methodology,2 sociological methods and research,3 sociological perspectives,1 sociological quarterly,2 sociological research online,1 sociological review,3 sociological science,1 sociological spectrum,1 sociological studies of children and youth,1 sociological theory,3 sociological theory and methods,1 sociologicky casopis-czech sociological review,1 sociologie,1 sociologie du travail,1 sociologies pratiques,-1 sociologija,1 sociologija i prostor,1 sociologija: mintis ir veiksmas,1 sociologisk forskning,1 sociologiâ goroda,1 sociologiâ mediciny,1 sociologiâ nauki i tehnologij,1 sociologiâ obrazovaniâ,1 sociologiâ vlasti,1 "sociologiâ: metodologiâ, metody, matemati?eskoe modelirovanie",1 sociologus,1 sociology compass,1 sociology of education,3 sociology of health and illness,3 sociology of islam,1 sociology of religion,3 sociology of sport journal,2 sociology study,-1 sociology: the journal of the british sociological association,3 sociopedia.isa,-1 socium i vlast’,1 socius,1 sociální práce,1 sociální studia,-1 "société de l`electricité, de l`electronique et des technologies de l`information et de la communication",1 société de législation comparée,1 société européenne pour la formation des ingénieurs,1 société française de littérature générale et comparée,-1 société française de radioprotection,-1 société pour l`étude du proche-orient ancien,1 société royale de numismatique de belgique,1 socìologìčnì studìï,-1 soekelys på arbeidslivet,1 soft computing,1 soft materials,1 soft matter,2 soft power,1 soft robotics,2 softcom,1 softeng ...,1 software and systems modeling,3 software engineering and applications,1 software engineering notes,-1 software impacts,1 software quality journal,2 software quality management conference,-1 software testing verification and reliability,1 software-intensive cyber-physical systems,1 software: practice and experience,2 softwarex,1 sohag journal of sciences,-1 soil,1 soil & environmental health,1 soil and sediment contamination,1 soil and tillage research,2 soil and water research,1 soil biology,1 soil biology and biochemistry,3 soil dynamics and earthquake engineering,1 soil ecology letters,1 soil mechanics and foundation engineering,1 soil organisms,-1 soil research,1 soil science,1 soil science and plant nutrition,1 soil science annual,1 soil science society of america journal,2 soil systems,-1 soil use and management,1 soils and foundations,1 soils for europe,-1 soinin joulu,-1 sola,1 solar compass,1 solar energy,2 solar energy materials and solar cells,2 solar physics,2 solar rrl,1 solar system research,1 solar-terrestrial physics,-1 solas news,-1 soldering and surface mount technology,1 soletras,1 solfanelli editore,-1 solid earth,1 solid earth discussions,-1 solid fuel chemistry,1 solid mechanics and its applications,1 solid state communications,1 solid state ionics,1 solid state nuclear magnetic resonance,1 solid state phenomena,1 solid state physics,1 solid state sciences,1 solid-state electronics,1 solmu,-1 solombal`skaya tipografiya,-1 solomonoff memorial conference,-1 solubiologi,-1 solum,1 solvent extraction and ion exchange,1 solvent extraction research and development: japan,1 somatechnics,1 somatosensory and motor research,1 somnologie,1 somogy éditions d´art,-1 sompio,-1 songklanakarin journal of science and technology,-1 soochow journal of mathematics,1 soome-ugri sõlmed,-1 sophi,1 sophia,2 sophia centre press,-1 sophia journal of european studies,-1 sorbcionnye i hromatograficheskie processy,-1 sorbifolia,-1 sorites: digital journal of analytical philosophy,1 sort: statistics and operations research transactions,1 sos-lapsikylä ry,-1 sosiaali- ja kuntatalous,-1 sosiaali- ja terveysalan tilastollinen vuosikirja,-1 sosiaali- ja terveysministeriö,-1 sosiaali- ja terveysministeriön esitteitä,-1 sosiaali- ja terveysministeriön julkaisuja,-1 sosiaali- ja terveysministeriön raportteja ja muistioita,-1 sosiaali- ja terveysturvan keskusliitto,-1 sosiaali- ja terveysturvan raportteja,-1 sosiaalibarometri,-1 sosiaalilääketieteellinen aikakauslehti,2 sosiaalipedagogiikka,1 sosiaalipoliittisen yhdistyksen tutkimuksia,-1 sosiaalitieteiden laitoksen julkaisuja,-1 sosiaalityön tutkimuksen seura,-1 sosiaalivakuutus,-1 sosiohumanika,-1 sosiologi i dag,1 sosiologia,2 sosnet julkaisuja,-1 soste suomen sosiaali ja terveys ry,-1 sosten julkaisuja,-1 sosyal bilimler,1 sosyoloji notları,1 sotahistoriallinen aikakauskirja,1 sotahuuto,-1 sotainvaliidi,-1 sotamuseon julkaisuja,-1 sotilasaikakauslehti,-1 sotilaskoti,-1 sotilaslääketieteen aikakauslehti,1 sotilasperinteen seuran julkaisusarja,-1 sotilaspoika,-1 sotsiaaltöö,-1 sotsialnaia psikhologiia i obshchestvo,1 sotsiologicheski problemi,1 sotsiologicheskie issledovaniya,1 "sotsiologija: teorija, metody, marketing",-1 sotsyal`naya i klinicheskaya psikhyatriya,-1 soudobe dejiny,1 souls,1 sound and vibration,1 sound studies,2 soundeffects,1 soundings,-1 soundscape: the journal of acoustic ecology,1 source code for biology and medicine,1 source: notes in the history of art,2 sources and studies in the history of mathematics and physical sciences,1 sources for african history,1 south african archaeological bulletin,1 south african family practice,-1 south african geographical journal,1 south african historical journal,2 south african institute of mining and metallurgy,1 south african journal for research in sport physical education and recreation,1 south african journal of african languages,1 south african journal of animal science,1 south african journal of botany,1 south african journal of business management,1 south african journal of chemistry,-1 south african journal of childhood education,1 south african journal of economic and management sciences,1 south african journal of economics,1 south african journal of education,1 south african journal of enology and viticulture,1 south african journal of geology,1 south african journal of industrial engineering,1 south african journal of information management,1 south african journal of philosophy,1 south african journal of psychiatry,1 south african journal of psychology,-1 south african journal of science,1 south african journal of surgery,1 south african journal of wildlife research,1 south african journal on human rights,1 south african law journal,1 south african music studies,1 south african statistical journal,1 south american journal of herpetology,1 south asia economic journal,1 south asia multidisciplinary academic journal,-1 south asia research,1 south asia-journal of south asian studies,1 south asian diaspora,1 south asian journal of business and management cases,1 south asian journal of business studies,1 south asian journal of management,-1 south asian journal of tourism and heritage,-1 south asian popular culture,1 south asian review,1 south atlantic quarterly,3 south atlantic review,1 south central review,-1 south dakota review,1 south east asia research,1 south east european research center,-1 south european society and politics,1 south-east european forestry,-1 southampton solent university,-1 southeast asia,-1 southeast asia early childhood journal,1 southeast asian bulletin of mathematics,1 southeast asian journal of stem education,-1 southeast asian journal of tropical medicine and public health,1 southeast asian studies,-1 southeast european and black sea studies,1 southeast university press,-1 southeastern europe,-1 southeastern naturalist,1 southerly: a review of australian literature,1 southern african humanities,-1 southern african institute of mining and metallurgy,-1 southern african journal of hiv medicine,1 southern african linguistics and applied language studies,1 southern african public law,1 southern african-nordic centre,-1 southern california interdisciplinary law journal,1 southern california law review,1 southern cultures,1 southern economic journal,1 southern forests,1 southern humanities review,1 southern illinois university press,1 southern journal of applied forestry,1 southern journal of philosophy,3 southern literary journal,1 southern medical journal,1 southern methodist university press,1 southern quarterly: a journal of the arts in the south,1 southwest review of international business research,-1 southwestern entomologist,1 southwestern historical quarterly,-1 southwestern mass communication journal,1 southwestern naturalist,1 soveli,-1 soveltavan kielentutkimuksen keskus,-1 sovet rektorov,-1 soviet and post soviet review,2 sovremennaja evropa,1 sovremennaâ zarubežnaâ psihologiâ,1 sovremennaâ èlektrometallurgiâ,-1 sovremennoe doškolʹnoe obrazovanie : teoriâ i praktika,-1 sovremennye issledovaniâ social?nyh problem,1 sovremennye problemy distancionnogo zondirovaniya zemli iz kosmosa,-1 sovremennye tehnologii v medicine,1 soziale arbeit,-1 soziale systeme: zeitschrift fur soziologische theorie,1 soziale welt: zeitschrift fur sozialwissenschaftliche forschung und praxis,1 sozialer fortschritt,1 sozialpolitik.ch,-1 soziologische revue,-1 södertörn academic studies,1 sp rapport,-1 space,-1 space and culture,2 space and polity,1 space communications,1 space policy,1 space science reviews,3 space technology centre,-1 space weather: the international journal of research and applications,1 spaces & flows,-1 spafa journal,1 spal,1 spandugino,-1 spanish in context,2 spanish journal of agricultural research,1 spanish journal of marketing - esic,1 spanish journal of psychology,1 spartacus,1 spatia,-1 spatial and spatio-temporal epidemiology,1 spatial cognition and computation,1 spatial economic analysis,1 spatial statistics,1 spazio filosofico,-1 spck publishing,-1 spe drilling & completion,1 spe journal,2 spe polymers,1 spe production and operations,1 spe reservoir evaluation and engineering,1 speak out!,-1 special care in dentistry,1 special conference series : academy of marketing science,-1 special matrices,1 special papers in palaeontology series,1 special papers of the geological society of america,1 special publication: royal numismatic society,1 special workshop of stochastic programming community,-1 specializzazione,-1 specialpedagogiska skolmyndigheten,-1 specialusis ugdymas,-1 specimina fennica,-1 spector books,-1 spectral analysis review,-1 spectrochimica acta part a: molecular and biomolecular spectroscopy,1 spectrochimica acta part b: atomic spectroscopy,1 spectroscopy,1 spectroscopy and spectral analysis,1 spectroscopy europe,-1 spectroscopy journal,-1 spectroscopy letters,1 spectroscopy: an international journal,1 spectrum hungarologicum,1 speculum: a journal of medieval studies,3 speech communication,2 speech prosody,1 "speech, language and hearing",1 speedway-sanomat,-1 spek tutkii,-1 speki : nordic philosophy and education review,-1 spektrum der augenheilkunde,1 spell : swiss papers in english language and literature,1 spenser studies,1 spermatogenesis,1 sphera pública,-1 sphinx,-1 spie,1 spiegel der letteren,2 spiel: siegener periodicum zur internationalen empirischen literaturwissenschaft,1 spill science and technology bulletin,1 spin,-1 spinal cord,1 spinal cord series and cases,1 spine,3 spine deformity,1 spine journal,2 spinifex press,-1 spirale,-1 spirit,-1 spiritus: a journal of christian spirituality,1 spirium,-1 spisanie na bʺlgarskoto geologičesko družestvo,-1 spixiana,1 spon press,1 spor bilimleri dergisi,-1 spor hekimliği dergisi,-1 sport education and society,2 sport history review,1 sport in history,2 sport in society,1 sport management review,1 sport marketing quarterly,1 sport psychologist,1 sport sciences for health,1 sport supplement,-1 "sport und gesellschaft: zeitschrift fur sportsoziologie, sportphilosophie, sportokonomie, sportgeschichte",1 "sport, business and management",1 "sport, ethics and philosophy",1 "sport, exercise, and performance psychology",1 sporto mokslas,-1 sportpadagogik,1 sports,-1 sports biomechanics,1 sports coaching review,1 sports engineering,1 sports health,1 "sports law, policy & diplomacy journal",1 sports medicine,3 sports medicine - open,1 sports medicine and arthroscopy review,1 sports medicine and health science,-1 sports medicine bulletin,-1 sports medicine standards and malpractice reporter,1 sportscience,1 sportunterricht,1 sportverletzung-sportschaden,1 sportwissenschaft,1 sportzeit,1 sprache im technischen zeitalter,1 sprache-stimme-gehor,1 sprache: zeitschrift fur sprachwissenschaft,1 sprachkunst: beitrage zur literaturwissenschaft,1 sprachreport,-1 sprachtheorie und germanistische linguistik,1 sprachwissenschaft,1 sprawozdania archeologiczne,1 språktidningen,-1 spreadsheets in education,1 spring,-1 spring : tidskrift for moderne dansk litteratur,1 spring university: changing education in a changing society,1 springer,2 springer gabler,1 springer monographs in mathematics,1 springer proceedings in advanced robotics,1 springer proceedings in business and economics,-1 springer proceedings in complexity,-1 springer proceedings in earth and environmental sciences,1 springer proceedings in materials,-1 springer proceedings in mathematics & statistics,1 springer proceedings in physics,-1 springer publishing company,1 springer science+business media,2 springer series in materials science,1 springer series in optical sciences,1 springer spektrum,1 springer tracts in advanced robotics,1 springer tracts in modern physics,1 springer vs,1 springerbriefs in applied sciences and technology,1 springerbriefs in archaeology,1 springerbriefs in astronomy,1 springerbriefs in business,1 springerbriefs in complexity,1 springerbriefs in computer science,1 springerbriefs in criminology,1 springerbriefs in economics,1 springerbriefs in education,1 springerbriefs in electrical and computer engineering,1 springerbriefs in mathematical physics,1 springerbriefs in molecular science,1 springerbriefs in philosophy,1 springerbriefs in physics,1 springerbriefs in political science,1 springerbriefs in religious studies,1 springerbriefs in statistics,1 springerbriefs in well-being and quality of life research,1 springerbriefs on pdes and data science,1 springerplus,1 sprogforum,1 språk i norden,1 språk och interaktion,1 språk och stil: tidskrift för svensk språkforskning,2 språkbruk,-1 spurbuchverlag,-1 spurensuche,-1 sqs : suomen queer-tutkimuksen seuran lehti,1 sravnitel'naya politika,-1 sredneje professionalnoe obrazovanie,-1 srpska revija za evropske studije,1 sskh meddelanden,-1 sskh notat,-1 sskh skrifter,-1 ssm : mental health,1 ssm : population health,1 ssm : qualitative research in health,1 st andrews encyclopaedia of theology,1 st petersburg mathematical journal,1 st!chwort,-1 st. antony's international review,1 st. jerome publishing,1 st. martins press,1 st. nersess theological review,1 st. petersburg center for the history of ideas,-1 st. petersburg state university of economics,-1 st. petersburg university press,1 st. petersburgskij gosudarstvenny`j politexnicheskij universitet,-1 st. petersburgskij gosudarstvenny`j universitet,-1 st. petersburgskij gumanitarny`j universitet profsoyuzov,-1 st. sunniva,-1 stability,1 stadion,1 stadsgeschiedenis,1 stahl und eisen,1 stal: sciences et techniques de lanimal de laboratoire,1 stand,1 standort,1 standpunkt : sozial,-1 stanford encyclopedia of philosophy,2 stanford journal of international law,1 stanford law review,3 stanford slavic studies,-1 stanford university press,3 stapp car crash journal,1 staps : sciences et techniques des activités physiques et sportives,1 star protocols,1 star-dundee,-1 starch-starke,1 starickaya tipografiya,-1 staryj sad,-1 stasis,1 stat,1 stata journal,1 state archives of assyria bulletin,1 state crime,1 state of the planet,-1 state politics and policy quarterly,1 state research center of the russian federation,-1 state university of new york press,2 statelessness & citizenship review,1 statens offentliga utredningar,-1 statistica,1 statistica applicata,1 statistica e applicazioni,1 statistica neerlandica,1 statistica sinica,2 statistical analysis and data mining,1 statistical applications in genetics and molecular biology,1 statistical inference for stochastic processes,1 statistical journal of the iaos,1 statistical methodology,1 statistical methods and applications,1 statistical methods in medical research,3 statistical modelling,1 statistical papers,1 statistical science,2 statistics,1 statistics and applications,1 statistics and computing,2 statistics and its interface,1 statistics and probability letters,1 statistics and public policy,1 statistics and risk modeling,1 statistics education research journal,1 statistics in biopharmaceutical research,1 statistics in biosciences,1 statistics in medicine,2 statistics in transition new series,1 statistics lithuania,-1 statistics surveys,1 "statistics, optimization & information computing",-1 stato e mercato,1 stats,1 statsbiblioteket,-1 statsvetenskaplig tidskrift,1 statute law review,1 stauffenburg verlag,-1 steel and composite structures,1 steel construction - design and research,1 steel grips journal of steel and related materials,1 steel in translation,1 steel research international,1 stefania guerra,-1 steiner schools fellowship publications,-1 steinerkasvatus,-1 stellenbosch papers in linguistics,1 stellenbosch papers in linguistics plus,1 stem cell discovery,-1 stem cell reports,2 stem cell research,1 stem cell research & therapy,1 stem cell reviews and reports,1 stem cell studies,1 stem cells,3 stem cells and development,1 stem cells international,1 stem cells translational medicine,2 stem education,-1 stemma: sciences techniques et methodologies modernes appliquees à lantiquite,1 "stepp: socialinė teorija, empirija, politika ir praktika",1 stereotactic and functional neurosurgery,1 sternberg press,-1 steroids,1 steuer und wirtschaft,1 stewart postharvest review,-1 sti policy review,-1 stichting lezen reeks,-1 stichting werkgroep adelsgeschiednis,-1 stiftelsen marknadstekniskt centrum,-1 stiftelsen pro artibus,-1 stigma and health,1 stiiknafuulia,-1 stochastic analysis and applications,1 stochastic environmental research and risk assessment,1 stochastic modelling and applications,1 stochastic models,1 stochastic processes and their applications,2 stochastic systems,1 stochastics and dynamics,1 stochastics and partial differential equations,1 stochastics: an international journal of probability and stochastic processes,1 stockholm centre for commercial law: skriftserien,-1 stockholm contributions in military-technology,-1 stockholm institute for scandinavian law,-1 stockholm slavic studies,1 stockholm university press,1 stockholmer germanistische forschungen,-1 stockholmia förlag,-1 stockholms konstnärliga högskola,-1 stockholms universitet,-1 stofnun árna magnússonar í íslenskum fræðum,-1 stomatologija,1 stoori,-1 storia del pensiero politico,1 storia dell arte,1 storia della storiografia,1 storica,1 storicamente,1 storyworlds,2 stowarzyszenie pro cultura litteraria,-1 stowarzyszenie techniczne odlewnikow polskich,-1 stoà,1 strabismus,1 strad,-1 strahlentherapie und onkologie,1 strain,1 strandberg publishing,-1 strani jezici,1 strani pravni život,1 strata,1 strategic analysis of the institute for defence studies and analysis,2 strategic behavior and the environment,1 strategic change,1 strategic design research journal,1 strategic direction,-1 strategic entrepreneurship journal,3 strategic management journal,3 strategic management review,1 strategic organization,2 strategic survey,1 strategy and leadership,1 strategy science,1 strathmore law journal,1 stratigraphy,1 stratigraphy and geological correlation,1 stratum plus,1 street art & urban creativity,1 strength and conditioning journal,1 strength of materials,1 "strength, fracture and complexity",1 stress and health,1 stress: the international journal on the biology of stress,1 streven,-1 strides in development of medical education,-1 stridon,1 stroemfeld verlag,1 stroitel´stvo unikalnyh zdanij i sooruženij,-1 strojarstvo,1 strojniski vestnik-journal of mechanical engineering,1 stroke,3 stroke : vascular and interventional neurology,1 stroke and vascular neurology,1 stroke research and treatment,1 strokovna in znanstvena dela,-1 structural and multidisciplinary optimization,2 structural change and economic dynamics,1 structural chemistry,1 structural concrete,1 structural control and health monitoring,1 structural design of tall and special buildings,1 structural dynamics,2 structural engineer,1 structural engineering and mechanics,1 structural engineering international: journal of the international association for bridge and structural engineering,1 structural equation modeling: a multidisciplinary journal,1 structural health monitoring: an international journal,1 structural heart,1 structural safety,3 structure,2 structure and bonding,1 structure and infrastructure engineering,1 structures,1 structures and functions,-1 strumenti critici,1 strzemiński academy of art,-1 strålsäkerhetsmyndigheten,-1 sts encounters,1 student engagement in higher education journal,1 studentlitteratur,1 studera press,-1 studi cassinati,-1 studi classici e orientali,1 studi culturali,-1 studi danteschi,1 studi di erudizione e di filologia italiana,1 studi di estetica,-1 studi di filologia italiana,1 studi di grammatica italiana,1 studi di lessicografia italiana,1 studi di sociologia,1 studi di storia medioevale e di diplomatica,1 studi e materiali di storia delle religioni,1 studi e problemi di critica testuale,1 studi e saggi linguistici,1 studi ecumenici,-1 studi emigrazione,1 studi epigrafici e linguistici sul vicino oriente antico,1 studi etruschi,1 studi finno-ugrici,1 studi francesi,1 studi italiani,-1 studi italiani di filologia classica,1 studi italiani di linguistica teorica e applicata,1 studi kantiani,1 studi linguistici italiani,1 studi medievali,2 studi medievali e umanistici,1 studi melitensi,-1 studi micenei ed egeo anatolici,1 studi musicali,1 studi novecenteschi: rivista semestrale di storia della letteratura italiana contemporanea,1 studi petrarcheschi,1 studi piemontesi,1 studi rinascimentali,1 studi romani,1 studi secenteschi,1 studi storici,1 studi sul boccaccio,1 studi sul settecento e lottocento,1 studi sull'aristotelismo medievale (secoli vi-xvi),1 studi sulla questione criminale,1 studi tassiani,1 studi verdiani,1 studia academica slovaca,-1 studia anglica posnaniensia: an international review of english studies,1 studia antiqua et archeologica,1 studia archaeologica brunensia,1 studia archaeologica ostrobotniensia,1 studia biographica,1 studia canonica,1 studia celtica,1 studia celtica fennica,1 studia ceranea,-1 studia classica et neolatina,-1 studia comeniana et historica,1 studia diplomatica,-1 studia dipterologica,1 studia et documenta historiae et iuris,1 studia etymologica cracoviensia,1 studia europejskie,1 studia fennica anthropologica,2 studia fennica ethnologica,2 studia fennica folkloristica,2 studia fennica historica,2 studia fennica linguistica,2 studia fennica litteraria,2 studia geophysica et geodaetica,1 studia geotechnica et mechanica,-1 studia grammatica,1 studia hegeliana,1 studia heideggeriana,1 studia hibernica,1 studia historica lundensia,1 studia historica septentrionalia,1 studia historica slovenica,1 "studia historica, historia medieval",1 "studia historica, historia moderna",1 studia humana,1 studia humaniora ouluensia,1 studia humanitatis asiatica,-1 studia humanitatis borealis,1 studia in veteris testamenti pseudepigrapha,1 studia iranica,1 studia islamica,3 studia islandica,1 studia judaica,1 studia leibnitiana,1 studia linguistica,2 studia linguistica germanica,1 studia linguistica romanica,1 studia litteraria et historica,1 studia litterarum,1 studia liturgica,2 studia logica,1 studia lusitanica,1 studia mathematica,1 studia metrica et poetica,1 studia migracyjne przegląd polonijny,1 studia missiologica et oecumenica fennica,1 studia missionalia,1 studia monastica,1 studia moralia,1 studia multiethnica upsaliensia,1 studia musica,-1 studia musicologica,1 studia musicologica norvegica,1 studia neoaristotelica,1 studia neophilologica,1 studia nordica,1 studia oeconomica posnaniensia,-1 studia oecumenica,1 studia orientalia,1 studia orientalia electronica,1 studia paedagogica,1 studia patristica,2 studia patristica fennica,1 studia periegetica,-1 studia phaenomenologica,1 studia philonica annual,1 studia philosophiae christianae,1 studia philosophica estonica,1 studia poradoznawcze,-1 studia prawa publicznego,-1 studia psychologica,1 studia quaternaria,-1 studia regionalne i lokalne,-1 studia religiosa rossica: naučnyj žurnal o religii,-1 studia rhetorica lundensia,-1 studia romanica et anglica zagrabiensia,1 studia romanica posnaniensia,1 studia romanica upsaliensia,1 studia rosenthaliana,1 studia russica helsingiensia et tartuensia,1 studia scandinavica,1 studia scientiarum mathematicarum hungarica,1 studia semiotica: series practica,1 studia semiotyczne,1 studia slavica,1 studia slavica et balcanica petropolitana,1 studia socjologiczne,1 studia spinozana,1 studia theologica,1 studia theologica : nordic journal of theology,3 studia translatorica,-1 studia turcologica cracoviensia,1 studia turistica,-1 "studia universitatis ""babeş-bolyai"" : digitalia",1 studia universitatis babeş-bolyai : bioethica,-1 studia universitatis babeş-bolyai : chemia,-1 studia universitatis babeş-bolyai : mathematica,-1 studia universitatis babeş-bolyai : philologia,1 studia universitatis babeş-bolyai : philosophia,-1 studia universitatis babeş-bolyai : theologia catholica latina,1 studia universitatis babeş-bolyai historia,-1 studia uralica upsaliensia,1 studia uralo-altaica,1 studia vernacula,-1 studia z filologii polskiej i slowiaoskiej,1 studia z historii filozofii,1 studia z polityki publicznej,1 studia z prawa wyznaniowego,1 studia zródłoznawcze,1 studica historica upsaliensis: underserie av: acta universitatis upsaliensis,1 studie z aplikované lingvistiky,1 studiecentrum voor kernenergie,-1 studiehäfte till årsboken horisont,-1 studien und texte zu antike und christentum,2 studien zur altagyptischen kultur,1 studien zur aussereuropaischen christentumsgeschichte,1 studien zur deutschen grammatik,1 studien zur osterreichischen philosophie,1 studien zur sachsenforschung,1 studientexte zur sprachkommunikation,-1 studienverlag,1 studier fra sprog- og oldtidsforskning,1 studier i de samhällsvetenskapliga ämnenas didaktik,-1 studier i nordisk filologi,1 studies for the learning society,1 studies in 20th and 21th century,1 studies in african languages and cultures,1 studies in african linguistics,2 studies in agricultural economics,1 studies in american fiction,2 studies in american indian literatures,2 studies in american jewish literature,1 studies in american naturalism,1 studies in american political development,1 studies in ancient magic and divination,2 studies in applied mathematics,1 studies in art education,2 studies in asian art and archaeology,1 studies in bibliography,1 studies in bilingualism,1 studies in canadian literature-etudes en litterature canadienne,1 studies in central european histories,1 studies in chinese learning and teaching,-1 studies in chinese linguistics,1 studies in christian ethics,2 studies in christian mission,1 studies in church history,1 studies in comics,1 studies in communication sciences,1 studies in comparative and international education,1 studies in comparative international development,2 studies in computational intelligence,1 studies in conflict and terrorism,1 studies in conservation,2 studies in contemporary islam,1 studies in contemporary phenomenology,1 studies in continuing education,1 studies in corpus linguistics,1 studies in costume & performance,2 studies in critical social sciences,1 studies in documentary film,2 studies in east european thought,1 studies in eastern european cinema,1 studies in economics and finance,-1 studies in educational evaluation,1 studies in eighteenth century culture,1 studies in english literature 1500-1900,2 studies in ethics,3 "studies in ethics, law, and technology",1 studies in ethnicity and nationalism,1 studies in eu external relations,1 studies in european cinema,2 studies in family planning,1 studies in french cinema,1 studies in functional and structural linguistics,1 studies in gender and sexuality,1 studies in generative grammar,1 studies in gothic fiction,1 studies in graduate and postdoctoral education,1 studies in health technology and informatics,1 studies in higher education,3 studies in hispanic and lusophone linguistics,2 studies in history,1 studies in history and philosophy of biological and biomedical sciences,2 studies in history and philosophy of modern physics,2 studies in history and philosophy of science,3 studies in hogg and his world,1 studies in iconography,1 studies in informatics and control,1 studies in interactional sociolinguistics,1 studies in international institutional dynamics,1 studies in interreligious dialogue,1 studies in jewish history and culture,1 studies in language,3 studies in language assessment,1 studies in language variation,1 studies in late antiquity,1 studies in latin american popular culture,1 "studies in law, politics, and society",1 studies in linguistics of the volga region,1 "studies in logic, grammar and rhetoric",1 studies in material thinking,-1 studies in media and communication,-1 studies in musical theatre,1 studies in mycology,3 studies in nonlinear dynamics and econometrics,1 studies in philology,2 studies in philosophy,3 studies in philosophy and education,2 studies in popular culture,1 studies in qing history,1 studies in reformed theology,2 "studies in religion, secular beliefs and human rights",1 studies in religion-sciences religieuses,1 studies in romanticism,3 studies in russian and soviet cinema,1 studies in science education,3 studies in second language acquisition,3 studies in second language learning and teaching,1 studies in semitic languages and linguistics,1 studies in short fiction,1 studies in slavic and general linguistics,1 studies in social and political thought,-1 studies in social justice,1 studies in south asian film and media,1 studies in spanish & latin-american cinemas,1 studies in spirituality,1 studies in surface science and catalysis,1 studies in symbolic interaction,1 studies in textile and costume history,1 studies in the age of chaucer,2 studies in the aramaic interpretation of scripture,1 studies in the education of adults,1 studies in the history of art,1 studies in the history of christian traditions,2 studies in the history of gardens and designed landscapes,1 studies in the history of the language sciences,1 studies in the humanities,1 studies in the literary imagination,2 studies in the maternal,1 studies in the novel,3 studies in the reception history of the bible,1 studies in theatre and performance,2 studies in travel writing,2 "studies in variation, contacts and change in english",1 studies in visual arts and communication,1 studies in world christianity,1 studies in world language problems,1 studies of psychology and behavior,-1 studies of religion in africa,1 studies of the netherlands institute for war documentation,1 studies of transition states and societies,1 studies on contemporary asia,-1 studies on ethno-medicine,-1 studies on language acquisition,1 studies on national movements,1 studies on neotropical fauna and environment,1 studies on religion and memory,-1 studies on russian economic development,1 studies on the children of abraham,1 studies on the inner asian languages,1 studies on the law of treaties,1 studies on the texts of the desert of juda,1 "studii de limbă, literatură şi metodică",-1 studii de lingvistica,1 studii si cercetari de istorie veche si arheologie,1 studii si cercetari de onomastica si lexicologie,-1 studii si cercetari filologice: seria limbi romanice,-1 studii si cercetari lingvistice,1 studii şi cercetări ştiinţifice,1 studio publication,-1 studium,-1 studium educationis,-1 studium: tijdschrift voor wetenschaps- en universiteitsgeschiedenis,1 study abroad research in second language acquisition and international education,1 studying teacher education,1 stuk-a,-1 style,2 stylus,-1 styria multi media men gmbh & co kg thomas findler,-1 stämpfli verlag,-1 su ürünleri dergisi,-1 "sub lupa, wydawnictwo naukowe",-1 sub-saharan publishers,1 subaru,-1 subjectivity: international journal of critical psychology,1 substance,3 substance abuse,1 "substance abuse treatment, prevention, and policy",1 substance use and addiction journal,1 substance use and misuse,1 subterranean biology,1 suchttherapie,-1 sud-ouest europeen,1 sudan journal of agricultural research,-1 sudhoffs archiv,1 sudura,-1 sued management oy,-1 suek ry,-1 suffolk institute of archaeology and history,1 sugar tech,1 sugia sprache und geschichte in afrika,1 suhayl,1 suhrkamp,2 suicide and life-threatening behavior,1 suicidology online,1 sukeltaja,-1 sukujotos,-1 sukupuolentutkimus,1 sukuri,-1 sukuset,-1 sukuside,-1 sulasol,-1 sulkava,-1 sumer,1 summa,-1 summary of proceedings,-1 summary of the bulletin of the international seismological centre,-1 sumo conference proceedings,-1 sun and geosphere,-1 sungkyun journal of east asian studies,1 suo,-1 suojärven pitäjäseura,-1 suomalainen espanjassa,-1 suomalainen kivi,-1 suomalainen lakimiesyhdistys,1 suomalainen metodologiayhdistys,-1 suomalainen tiedeakatemia,2 suomalais-ugrilainen seura,1 suomalais-ugrilaisen seuran aikakauskirja,1 suomalais-ugrilaisen seuran kansatieteellisiä julkaisuja,-1 suomalais-ugrilaisen seuran toimituksia,2 suomalaisen elokuvan festivaali,-1 suomalaisen kirjallisuuden seura,2 suomalaisen kirjallisuuden seuran toimituksia,2 suomalaisen lakimiesyhdistyksen julkaisuja : b-sarja,-1 suomalaisen lakimiesyhdistyksen julkaisuja : c-sarja,-1 suomalaisen lakimiesyhdistyksen julkaisuja : e-sarja,-1 suomalaisen lakimiesyhdistyksen julkaisuja a-sarja,1 suomalaisen lasin vuosikirja,-1 suomalaisen teologisen kirjallisuusseuran julkaisuja,1 suomalaisen tiedeakatemian vuosikirja,-1 suomalaisen työn liitto,-1 suomalaiset euroopassa,-1 suomen ainedidaktinen tutkimusseura,-1 suomen akatemia,-1 suomen antropologi,2 suomen antropologinen seura,-1 suomen apteekkarilehti,-1 suomen arkeoastronomisen seuran julkaisuja,-1 suomen arkeologinen seura,-1 suomen arvostelijain liitto ry,-1 suomen asiakkuusmarkkinointiliitto,-1 suomen audiologian yhdistys ry,-1 suomen autolehti,-1 suomen automaatioseura,-1 suomen avantgarden ja modernismin seuran julkaisuja,-1 suomen bioenergiayhdistys ry,-1 suomen biologian seura vanamo ry,-1 suomen briard,-1 suomen bysanttikomitea ry,-1 suomen egyptologinen seura ry,-1 suomen eläinlääkärilehti,1 suomen eläinlääkäriliiton luentokokoelma,-1 suomen etnomusikologisen seuran julkaisuja,-1 suomen ev.-lut. kirkon julkaisuja : kirkko ja toiminta,-1 suomen ev.-lut. kirkon tutkimusjulkaisuja,1 suomen filosofinen yhdistys ry,1 suomen geoteknillinen yhdistys ry,-1 suomen haavanhoitoyhdistys ry,-1 suomen hammaslääkärilehti,1 suomen harjoittelukoulujen julkaisu,-1 suomen historiallinen seura ry,-1 suomen humanistiliitto,-1 suomen ilmastopaneelin julkaisuja,-1 suomen itämaisen seuran suomenkielisiä julkaisuja,1 suomen jazz & pop arkisto,-1 suomen joogalehti,-1 suomen kalastuslehti,-1 suomen kansantietouden tutkijain seura ry,-1 suomen kasvatuksen ja koulutuksen historian seura,-1 suomen kasvatus- ja perheneuvontaliitto,-1 suomen keskiajan arkeologian seura ry,-1 suomen kielen seura,-1 suomen kiinteistölehti,-1 suomen kilpailuoikeudellinen yhdistys,-1 suomen kirkkohistoriallisen seuran toimituksia,1 suomen kirkkohistoriallisen seuran vuosikirja,1 suomen kotiseutuliiton julkaisusarja,-1 suomen kulttuuriperintökasvatuksen seura,-1 suomen kuntaliitto,-1 suomen kuvalehti,-1 suomen käsityön museo,-1 suomen käyttäytymistieteellinen tutkimuslaitos,-1 suomen kääntäjien ja tulkkien liitto ry,-1 suomen lastenneurologinen yhdistys ry,-1 suomen lehdistö,-1 suomen luonto,-1 suomen luontopaneelin julkaisuja,-1 suomen lähetysseura ry,-1 suomen lääketilasto,-1 suomen lääkärilehti. eripainos,1 suomen lääkäriliitto,-1 suomen maantieteellinen seura,-1 suomen maatalousmuseo sarka,-1 suomen maataloustieteellinen seura,-1 suomen maataloustieteellisen seuran tiedote,-1 suomen metsästysmuseon julkaisuja,-1 suomen muinaismuistoyhdistyksen aikakauskirja,1 suomen muinaismuistoyhdistys,1 suomen museo - finskt museum,1 suomen museoliiton julkaisuja,-1 suomen museoliitto ry,-1 suomen musiikkikirjastoyhdistyksen julkaisusarja,-1 suomen oppihistoriallinen seura,1 suomen ortodoksisen kulttuurikeskuksen säätiö,-1 suomen ortopedia ja traumatologia,-1 suomen pankin keskustelualoitteita,-1 suomen pankki,-1 suomen patristinen seura,-1 suomen pelastusalan keskusjärjestö ry,-1 suomen perusta,-1 suomen pipliaseura ry.,-1 suomen poliisilehti & poliisiurheilu,-1 suomen rahahistoria,-1 suomen rakennusinsinöörien liitto ry.,-1 suomen rakennusmedia oy,-1 suomen rakennustaiteen museo,-1 suomen rauhantutkimusyhdistys ry,-1 suomen riista,1 suomen sahayrittäjät,-1 suomen sairaanhoitajaliitto ry,-1 suomen sammalseura ry,-1 suomen siipikarja,-1 suomen silta,-1 suomen sotatieteellinen seura ry,-1 suomen sotilas,-1 suomen sukututkimusseuran julkaisuja,-1 suomen sukututkimusseuran vuosikirja,1 suomen syöpäyhdistys ry,-1 suomen taideyhdistys,-1 suomen tekniikan historia,1 suomen telelääketieteen ja e-health seura ry,-1 suomen teologinen instituutti,-1 suomen tiedeseura,1 suomen tieteellisen kirjastoseuran julkaisuja,-1 suomen tietokirjailijat ry,-1 suomen tilastoseura ry,-1 suomen tilastoseuran julkaisuja,-1 suomen tilastoseuran vuosikirja,-1 suomen toimikunta euroopan turvallisuuden edistämiseksi,-1 suomen toivo -ajatuspaja,-1 suomen turku,-1 suomen urheiluhistoriallisen seuran julkaisusarja,-1 suomen urheiluhistoriallisen seuran vuosikirja,1 suomen urheilumuseosäätiön tutkimuksia,-1 suomen valokuvataiteen museon julkaisuja,-1 suomen valokuvataiteen museon säätiö,-1 suomen valtio,-1 suomen vanhan kirjallisuuden päivät,-1 suomen varhaiskasvatus,-1 suomen vesilaitosyhdistyksen monistesarja,-1 suomen virallinen tilasto,-1 suomen yk-liitto ry,-1 suomen ylioppilaskuntien liitto ry,-1 suomen ympäristökeskuksen raportteja,-1 suomen ympäristökeskus,-1 suomen ympäristöoikeustieteen seura ry,-1 suomen ympäristöoikeustieteen seuran julkaisuja,-1 suomenhevonen,-1 suomenmaa,-1 suomenopettajat,-1 suomenselän sanomat,-1 suomi,1 suomi merellä,-1 suomi-mongolia-seuran jäsenlehti,-1 suomi-puola,-1 suomi-ranska yhdistysten liiton nuorisotoimikunta ry,-1 suomi-unkari,-1 suomi-venäjä-seura,-1 suoseura ry,-1 super,-1 superconductivity,1 superconductor science and technology,1 superlattices and microstructures,1 supplementary volume - aristotelian society,1 supplements to novum testamentum,2 supplements to the journal for the study of judaism,3 supply chain analytics,1 supply chain effect,-1 supply chain forum: an international journal,1 supply chain management: an international journal,2 support for learning,1 supportive care in cancer,1 supra arcadiam aurora,-1 supramolecular chemistry,1 suprema gráfica e editora,-1 supreme court economic review,1 supreme court review,1 supsi scuola universitaria professionale,-1 sur le journalisme,1 surdus historicus,-1 surface and coatings technology,2 surface and interface analysis,1 surface engineering,1 surface engineering and applied electrochemistry,1 surface innovations,1 "surface investigation : x-ray, synchrotron and neutron techniques",1 surface review and letters,1 surface science,1 surface science reports,3 surface science spectra,1 surface topography,1 surfaces,-1 surfaces and interfaces,1 surgeon: journal of the royal colleges of surgeons of edinburgh and ireland,1 surgeries,-1 surgery,-1 surgery,2 surgery for obesity and related diseases,2 surgery in practice and science,1 surgery journal,1 surgery today,1 surgery: current research,-1 surgical and radiologic anatomy,1 surgical case reports,-1 surgical clinics of north america,1 surgical endoscopy and other interventional techniques,2 surgical infections,1 surgical innovation,1 surgical laparoscopy endoscopy and percutaneous techniques,1 surgical neurology international,1 surgical oncology,1 surgical oncology clinics of north america,1 surgical practice,1 surrey archaeological collections,1 surveillance and society,2 survey methodology,1 survey of ophthalmology,1 survey practice,-1 survey research methods,1 survey review,1 surveying and built environment,-1 surveys in geophysics,2 surveys in operations research and management science,1 survival,1 survive & thrive,-1 susikko,-1 susj,-1 susmat,1 sussex academic press,1 sussex archaeological collections,1 sustainability,-1 sustainability : the journal of record,-1 "sustainability accounting, management and policy",1 sustainability analytics and modeling,1 sustainability and climate change,-1 sustainability of water quality and ecology,1 sustainability science,1 "sustainability: science, practice, and policy",1 sustainable agriculture research,-1 sustainable agriculture reviews,1 sustainable chemical processes,-1 sustainable chemistry,-1 sustainable chemistry and pharmacy,1 sustainable chemistry for the environment,-1 sustainable cities and society,1 sustainable computing,1 sustainable construction materials and technologies,-1 sustainable development,2 sustainable development law and policy,-1 sustainable earth,1 sustainable energy & fuels,1 sustainable energy technologies and assessments,1 "sustainable energy, grids and networks",1 sustainable environment,1 sustainable environment research,-1 sustainable food technology,1 sustainable futures,1 sustainable horizons,1 sustainable manufacturing and service economics,-1 sustainable materials and technologies,1 sustainable production and consumption,2 sustainable technology and entrepreneurship,1 sustainable water resources management,1 sutisanomat,-1 suuhygienisti,-1 suun terveydeksi,-1 suur-jyväskylän lehti,-1 suur-keuruu,-1 suvremena lingvistika,1 suvustaja,-1 svarka i diagnostika,-1 svarochnoe proizvodstvo,-1 sveikatos mokslai,-1 svensk botanisk tidskrift,1 svensk exegetisk aarsbok,1 svensk förening för matematikdidaktisk forskning,-1 svensk idrottsforskning,1 svensk juristtidning,1 svensk kyrkotidning,-1 svensk missionstidskrift,1 svensk mykologisk tidskrift,-1 svensk pastoraltidskrift,-1 svensk religionshistorisk arsskrift,1 svensk teologisk kvartalskrift,1 svensk tidskrift för musikforskning,2 svensk-österbottniska samfundet r.f.,-1 svenska bildningsförbundet r.f.,-1 svenska dagbladet,-1 svenska folkskolans vänner,-1 svenska folkskolans vänners kalender,-1 svenska fornskriftsällskapet,1 svenska handelshögskolan,-1 svenska institutet för europapolitiska studier,-1 svenska kulturfonden,-1 svenska kyrkan,-1 svenska kyrkohistoriska föreningen,-1 svenska landsmål och svenskt folkliv,1 svenska linnesallskapets årsskrift,1 svenska litteratursällskapet i finland,2 svenska missionsrådet,-1 svenskan i finland,1 svenskans beskrivning,1 svenska skolhistoriska föreningen i finland rf.,-1 svenskt gudstjänstliv,1 svenskt kvinnobiografiskt lexikon,-1 sveriges lantbruksuniversitet,-1 svetovi,1 sveučilište u zagrebu,-1 sviluppo e organizzazione,-1 svmma,1 svoe izdatel`stvo,-1 svu-international journal of agricultural sciences,-1 svu-international journal of engineering sciences and applications,-1 svängrum,-1 svētdienas rīts,-1 swara,-1 swarm and evolutionary computation,2 swarm intelligence,1 swedenborg foundation press,1 swedish book review,-1 swedish communication technologies workshop,-1 swedish dental journal,1 swedish design research journal,-1 swedish national computer networking workshop,-1 swedish radio and microwave days,-1 swedish science press,1 swedish workshop on multicore computing,-1 sweet & maxwell,1 swets & zeitlinger,1 swi. steuer & wirtschaft international,-1 swift studies,1 swiss journal of geosciences,1 swiss journal of palaeontology,1 swiss medical weekly,1 swiss political science review,1 swiss psychology open,-1 swp comment,-1 sws-rundschau,1 syddansk universitet,-1 syddansk universitetsforlag,1 sydney law review,1 sydney series in celtic studies,-1 sydney university press,1 sydowia,1 sydsvenska medicinhistoriska sallskapets arsskrift,1 sydsvenskan,-1 sydän,-1 sydän-hämeen lehti,-1 sydän-satakunta,-1 sydänääni,-1 syken julkaisuja,-1 sykepleien forskning,1 syllecta classica,1 syllogos,1 sylva,-1 sylva ry,-1 sylvi,-1 sylwan,1 symbiosis,1 symbiosis: a journal of anglo-american literary relations,1 symbolae botanicae upsalienses,1 symbolae osloenses,1 symbolic interaction,2 symbolism: an international annual of critical aesthetics,1 symmetry,-1 symmetry : art and science,-1 symmetry : culture and science,-1 symmetry integrability and geometry: methods and applications,1 symphonya,-1 symploke,1 symposium,1 symposium books,-1 "symposium of image, signal processing, and artificial vision",-1 symposium of the international astronomical union,1 symposium on advanced space technologies in robotics and automation,-1 "symposium on design, test, integration and packaging of mems/moems",-1 symposium on embedded systems for real-time multimedia,-1 symposium on lift and escalator technologies,-1 symposium on theoretical aspects of computer science,2 symposium on vlsi circuits,1 symposium: a quarterly journal in modern literatures,1 syn-thèses,-1 synapse,1 synapsi,-1 synchron,1 synchrotron radiation news,1 synergies europe,-1 synergies france,-1 synergies pays riverains de la baltique,1 synergies pays scandinaves,1 synergies pologne,-1 synkooppi,-1 synlett,1 synopen,1 synsygus,-1 syntactic theory and research,-1 syntax,2 syntax and semantics,1 syntaxe & sémantique,1 synteesi,1 synthese,3 synthesis,-1 synthesis,1 synthesis and reactivity in inorganic metal-organic and nano-metal chemistry,1 synthesis lectures on the semantic web: theory and technology,-1 synthesis philosophica,1 synthesis: la plata,1 synthesis: stuttgart,1 synthetic and systems biotechnology,-1 synthetic biology,1 synthetic communications,1 synthetic metals,1 sypress forlag,1 syracuse journal of international law and commerce,1 syracuse university press,2 syria,1 system,2 system dynamics review,1 system dynamics society,1 systema,-1 systematic and applied microbiology,1 systematic biology,3 systematic botany,1 systematic entomology,2 systematic parasitology,1 systematic reviews,1 systematics and biodiversity,1 systemes de pensee en afrique noire,1 systemic practice and action research,1 systems,-1 systems & control transactions,1 systems and control letters,2 systems biology in reproductive medicine,1 systems biomedicine,1 systems engineering,1 systems research and behavioral science,1 "systems, signs and actions",1 systime academic,1 sytyke,-1 syzetesis,-1 syöpäsairaanhoitaja,-1 szazadveg,1 szczecin university press,1 szent istván university,-1 szkola glowna turystyki i rekreacji,-1 "szkoła główna handlowa, oficyna wydawnicza",-1 szociologiai szemle,1 szombat,-1 sámi dieđalaš áigečála,1 sámis,-1 sächsischen akademie der wissenschaften zu leipzig,1 sähkö-tele,-1 sähkömaailma,-1 sähkömaailma extra,-1 sällskapet moas vänner,-1 sällskapet runica et mediaevalia,-1 sändebudet,-1 särö,-1 säteilyturvakeskus,-1 sårjournalen,-1 sílex ediciones,-1 södertörns högskola,-1 súmula,-1 südosteuropa mitteilungen,-1 südosteuropäische hefte,-1 südostservice gmbh,-1 "sša-èkonomika, politika, ideologiâ",1 t + d,1 t&t clark,1 t.a.s.k. quarterly,-1 ta istorika,1 ta plats i raseborg,-1 taal- en tongval,1 taapeli,-1 taboo,1 tabularia,1 tadrīs/pizhūhī,-1 tafter journal,-1 tahiti,1 taide,-1 taidehistoria,-1 taidehistoriallisia tutkimuksia,2 taidehistorian seura,1 taideteoreettisia kirjoituksia kuvataideakatemiasta,-1 taidetutka,-1 taikomoji kalbotyra,1 taiteiden tiedekunnan julkaisuja b : tutkimusraportteja,-1 taito,-1 taiwan gongshang guanli xuebao,-1 taiwan journal of democracy,-1 taiwan journal of linguistics,1 taiwan journal of tesol,1 taiwan xuezhi,1 taiwanese journal of mathematics,1 taiwanese journal of obstetrics and gynecology,1 taiwania,-1 taiyangneng xuebao,-1 takoja,-1 taksvärkki ry,-1 taku-tiedote,-1 talanta,1 talanta open,1 talent development and excellence,1 talentia,-1 talk,-1 talk by students,-1 talk magazine,-1 taller de letras,-1 tallinn creative hub,-1 tallinna tehnikakõrgkool,-1 tallinna tehnikaülikool,-1 tallinna tehnikaülikooli kirjastus,-1 tallinna tervishoiu kõrgkooli väljaanded,-1 tallinna ülikool,-1 tallinna ülikooli kirjastus,1 talotekniikka,-1 taloudellinen tiedotustoimisto,-1 talous & yhteiskunta,-1 talouselämä,-1 talouselämän raportti suuryrityksistä,-1 taloustaito,-1 taloustieto oy,-1 taltech journal of european studies,1 talvikukkia,-1 tamara journal for critical organization inquiry,1 tambovskij gosudarstvennyj universitet im. g.r.derzhavina,-1 tamga-türkiye göstergebilim araştırmaları dergisi,-1 tamk.nyt,-1 tamk.today,-1 tamkang journal of mathematics,1 tamkang university,-1 tamkjournal,-1 tamkjournal (english ed.),-1 tammenlastuja,-1 tammerkoski,-1 tammi,-1 tampere economic working papers net series,-1 "tampere studies in language, translation and literature",-1 tampere university press,1 tampereen ammattikorkeakoulu,-1 "tampereen ammattikorkeakoulun julkaisuja : sarja a, tutkimuksia",-1 "tampereen ammattikorkeakoulun julkaisuja : sarja b, raportteja",-1 "tampereen ammattikorkeakoulun julkaisuja : sarja c, oppimateriaaleja",-1 tampereen dosenttiyhdistyksen julkaisuja,-1 tampereen dosenttiyhdistys,-1 tampereen historiallisen seuran julkaisuja,-1 tampereen kaupungin julkaisuja,-1 tampereen kaupunki,-1 tampereen museoiden julkaisuja,-1 tampereen rakennusmestari,-1 tampereen taidemuseon julkaisuja,-1 tampereen teknillinen yliopisto,-1 tampereen yliopisto,-1 "tampereen yliopisto, rakennustekniikka",-1 tampereen yliopiston porin yksikön julkaisuja,-1 tamperelainen,-1 tanap monographs on the history of asian-european interaction,1 tandlaegebladet,1 tandläkartidningen,1 tane-julkaisuja,-1 tangence,1 tanger,-1 tanhuviesti,-1 tankesmedjan magma,-1 tannlæknablaðið,-1 tansuo yu zhengming,-1 tanz,-1 tanzania journal of forestry and nature conservation,-1 tanzania journal of health research,1 tanzanian journal of agricultural sciences,1 tapaturmavakuutuskeskuksen julkaisuja,-1 tapion raportteja,-1 tapir akademisk forlag,1 tappi journal,1 tappi press,-1 tapri studies in peace and conflict research,-1 tapuya,1 tarbiyat badanī va ̒ulūm-i varzishī,-1 tarbiyat modarres university,-1 tarbiz,1 target: international journal of translation studies,3 targeted oncology,1 targum,-1 tarim bilimleri dergisi-journal of agricultural sciences,1 tartu historical studies,-1 tartu tervishoiu kõrgkooli uurimistööde kogumik,-1 tartu ülikool,-1 tartu ülikooli kirjastus,1 tartu ülikooli raamatukogu,-1 taschen,1 task,-1 tatarskaia arkheologiia,1 tate papers,1 tatra mountains mathematical publications,1 tautosakos darbai-folklore studies,1 tavričeskij vestnik informatiki i matematiki,-1 tax law review,1 tax notes international,1 tax policy and the economy,1 taxon,2 taxonomic databases working group annual conference,-1 taxonomy,-1 taylor & francis,2 taylor's university,-1 tbilisi mathematical journal,1 tbs research centre,-1 tc: a journal of biblical textual criticism,1 tce,1 tcworld,-1 td & t,-1 tdr,3 te reo,1 teacher development,1 teacher education and special education,1 teacher education quarterly,1 teacher training and education newsletter,-1 teachers and teaching: theory and practice,3 teachers college press,1 teachers college record,1 teaching and learning,1 teaching and learning in medicine,1 teaching and learning in nursing,1 teaching and teacher education,1 teaching and teacher education,3 teaching anthropology,1 teaching artist journal,1 teaching education,1 teaching english language,1 teaching english with technology,1 teaching ethics,1 teaching exceptional children,-1 teaching history,1 teaching in higher education,3 teaching in life sciences,-1 teaching journalism and mass communication,-1 teaching mathematics and computer science,1 teaching mathematics and its applications,1 teaching of psychology,1 teaching philosophy,1 teaching public administration,1 teaching sociology,1 teaching statistics,1 teaching theology and religion,1 teagasc,-1 team journal of hospitality and tourism,-1 team performance management,-1 teanga: journal of the irish association,1 teatteri&tanssi+sirkus,-1 teatterikorkeakoulu,-1 teatterikorkeakoulun julkaisusarja,-1 teatterimuseo,-1 teatterintutkimuksen seura ry,-1 teca,-1 teccogs : revista digital de tecnologias cognitivas,-1 techconnect,-1 technai,1 techne,1 techne press,1 techne series,1 techne: la science au service de lhistoire de lart et des civilisations,1 techne: research in philosophy and technology,1 technical analysis of stocks and commodities,-1 technical annals,-1 technical bulletin: canadian conservation institute,1 technical communication,1 technical communication quarterly,1 technical digest - international electron devices meeting,-1 technical innovations & patient support in radiation oncology,-1 technical physics,1 technical physics letters,1 technical program and proceedings,-1 technical program expanded abstracts,-1 technical report,-1 technical reports in language technology,-1 technická univerzita v liberci,-1 technikatorteneti szemle,1 technikgeschichte,1 techniques and culture,1 techniques in coloproctology,1 techniques in foot and ankle surgery,1 techniques in hand and upper extremity surgery,1 techniques in knee surgery,1 techniques in orthopaedics,1 techniques in shoulder and elbow surgery,1 technische akademie esslingen,-1 technische mechanik,1 technische universitaet wien universitaetsbibliothek,-1 technische universität bergakademie freiberg,-1 technische universität dresden. slub,-1 technische universität hamburg-harburg,-1 technische universität wien,-1 technisches messen,-1 technium biochemmed,-1 technium social sciences journal,-1 technoetic arts,1 technological and economic development of economy,1 technological forecasting and social change,3 technologies,-1 technology analysis and strategic management,1 technology and change in history,1 technology and conservation,1 technology and culture,3 technology and disability,1 technology and economics of smart grids and sustainable energy,1 technology and health care,1 technology and investment,-1 technology and language,1 technology and regulation,1 technology architecture + design,1 technology audit and production reserves,-1 technology in cancer research and treatment,1 technology in society,1 technology innovation management review,1 "technology, innovation, entrepreneurship and competitive strategy",1 "technology, instruction, cognition and learning",1 "technology, knowledge and learning",1 "technology, mind, and behavior",1 "technology, pedagogy and education",1 technometrics,2 technopharm,-1 technovation,3 techtrends,1 tecnica molitoria,-1 tecnoscienza,1 tectonics,2 tectonophysics,1 teema,-1 teemakirjoja,1 teflin journal,1 tehnicki vjesnik,-1 tehnika,-1 tehnički glasnik,1 tehnologii i tehničeskie sredstva mehanizirovannogo proizvodstva produkcii rastenievodstva i životnovodstva,-1 teho,-1 tehohoito,-1 tehy,-1 tehy ry,-1 teis,1 teisės apžvalga,-1 tejuka,-1 tek - tekniikan akateemiset,-1 tekes,-1 tekes programme report,-1 tekesin katsaus,-1 tekhne: revista de estudos politécnicos,-1 tekijä,-1 tekniikan historian seura ths ry,-1 tekniikan museon julkaisuja,-1 tekniikan waiheita: teknik i tiden,1 tekniikka & talous,-1 tekninen opettaja,-1 tekninen tiedote,-1 teknologiainfo teknova oy,-1 teknologiateollisuus ry,-1 tekst i dyskurs,-1 tekstiilikulttuuriseura ry,-1 tekstiilikulttuuriseuran julkaisuja,-1 tekstiililehti,-1 tekstiiliopettaja,-1 tekstil,1 tekstil ve konfeksiyon,1 tekstualia,1 teksty drugie,2 tektonika,1 tel aviv university,1 tel aviv: journal of the institute of archaeology of tel aviv,2 telecom,-1 telecom business review,-1 telecommunication systems,1 telecommunications and radio engineering,1 telecommunications forum,1 telecommunications policy,2 telekinet,-1 telematics and informatics,2 telematics and informatics reports,1 telemedicine and e-health,1 teletraffic science and engineering,1 television and new media,3 television quarterly,1 tellus series a: dynamic meteorology and oceanography,1 tellus series b: chemical and physical meteorology,1 telma,-1 telma,1 telopea,1 telos,1 telos: revista iberoamericana de estudios utilitaristas,-1 tem oppaat ja muut julkaisut,-1 tem toimialaraportit,-1 tema,-1 temanord,-1 temas americanistas,1 temat monográficos,-1 teme,-1 temenos,3 temes de disseny,1 temperature,1 temple international and comparative law journal,1 temple university press,1 templeton press,-1 tempo,1 tempo social,1 tempo-niteroi,-1 temps modernes,1 tempus,-1 tencon ieee region ten conference,-1 tenen,-1 tenside surfactants detergents,1 tenzone,1 teollisuuden näytelehti,-1 teollisuus-suomi,-1 teologia y vida,1 teologia.fi,-1 teologinen aikakauskirja,2 teologisk tidsskrift,1 teologiska fakulteten vid åbo akademi,-1 teološki pogledi,1 teorema,1 teoretičeskaâ i prikladnaâ ûrisprudenciâ,1 teoretičeskaâ i èksperimentalʹnaâ himiâ,-1 teoria de la educacion,-1 teoria e prática em administração,-1 teoria muzyki,1 teoria politica,1 teoria polityki,1 teoria u’vikoret,-1 teoria: rivista di filosofia,1 teorie vedy,1 teorija in praksa,1 teoriya i praktika fizicheskoy kultury,1 teoriâ i praktika ob?estvennogo razvitiâ,1 teoriâ mody,1 teoros: revue de recherche en tourisme,1 teos,1 terapevticheskii arkhiv,1 terapia psicologica,-1 terceira margem,1 terminologie et traduction,1 terminologija,1 terminology,2 terminology and lexicography research and practice,1 terminology science & research,1 természet világa,-1 terra,-1 terra aestheticae,-1 terra economicus,-1 terra nova,1 terra: maantieteellinen aikakauskirja,2 terrain,1 terrestres,-1 terrestrial arthropod reviews,-1 terrestrial atmospheric and oceanic sciences,1 territorios : revista de estudios regionales y urbanos,1 "territory, politics, governance",2 terrorism and political violence,2 tertiary education and management,1 tertium comparationis,1 tervareitti,-1 terveyden ja hyvinvoinnin laitos,-1 terveydenhoitaja,-1 terveydenhoitoviesti,-1 terveys ja talous,-1 terveysliikuntauutiset,-1 teräsrakenne,-1 tesela,-1 tesl-ej,1 tesol in context,1 tesol journal,1 tesol quarterly,2 tessellations,-1 test,1 "testing, evaluation and assessment today",-1 testo a fronte,1 testo: studi di teoria della letteratura e della critica,1 tetrahedron,1 tetrahedron : asymmetry,1 tetrahedron green chem,1 tetrahedron letters,1 tetsu to hagane: journal of the iron and steel institute of japan,1 texas a&m university press,1 texas christian university press,1 texas education review,-1 texas heart institute journal,1 texas international law journal,1 texas journal of science,1 texas law review,2 texas studies in literature and language,1 texas tech university press,1 texas western press,1 texmat,-1 text,1 text and performance quarterly,1 text and talk,3 text matters,1 text technology: a journal of computer text processing,1 text und kontext,1 text und kontext: sonderreihe,1 text und kritik,1 text: kritische beitrage,1 texte und untersuchungen zur geschichte der altchristlichen literatur,1 texte zur kunst,1 texte: revue de critique et de theorie litteraire,1 texter om våld,-1 textile history,2 textile research journal,1 textile: the journal of cloth and culture,1 textiles,-1 textiles and clothing sustainability,-1 texto digital,-1 texto y contexto enfermagem,1 texto!: textes et cultures,1 textual & visual media,1 textual cultures,1 textual practice,3 textus,-1 textus,1 tfms: tidskrift for mellanosternstudier,1 th open,1 thai journal of mathematics,1 thai journal of veterinary medicine,1 thaiszia,-1 thalamus and related systems,1 thalassas,1 thales,1 thames & hudson,1 thammasat university,-1 "thamyris/intersecting: place, sex and race",1 thanatos,1 the academy of global business research and practice,-1 the adam smith review,1 the adhd report,1 the adriatic report,-1 the agenda setting journal,1 the american banker,-1 the american economic review : insights,3 the american journal of case reports,-1 the american journal of chinese medicine,1 the american sociologist,1 the american surveyor,-1 the anatolian journal of cardiology,-1 the anatolian journal of family medicine,-1 the anthropocene review,1 the appea journal and conference proceedings,1 the arab economics and business journal,1 the arabic language academy,-1 the arabidopsis book,1 the arabist,1 the architecture observer,-1 the arkansas international,-1 the art of discrete and applied mathematics,1 "the art, science, and engineering of programming",1 the asian journal of applied linguistics,1 the asian journal of shipping and logistics,1 the astronomer's telegram,-1 the ata journal of legal tax research,1 the atlantic world,1 the australian journal of indigenous education,1 the avery review,-1 the aviation & space journal,1 the baltic journal of road and bridge engineering,1 "the barcelona conference on arts, media & culture official conference proceedings",-1 the beethoven journal,-1 the berlin journal,-1 the berlin review of books,-1 the bible and interpretation,-1 the bible in ancient christianity,2 the bible translator,1 the bone and joint journal,3 the bottom line,1 the brill reference library of judaism,2 the british council,-1 the bryggen papers,1 the bryological times,-1 the built and human environment review,1 the bulletin of bismis,-1 the bulletin of the international association of forensic toxicologists,-1 the business & management review,-1 the business review : cambridge,-1 "the cambridge journal of law, politics, and art",-1 the canadian journal of infection control,-1 the case journal,1 the catholic social science review,-1 the centre for sustainable design,-1 the changing face of music and art education,1 the china monitor,-1 the chinese journal of comparative law,1 the choir press,-1 the circle,-1 the classical outlook: journal of the american classical league,1 the clinical teacher,1 the cochrane library,1 the cognitive behaviour therapist,1 the columbia journal of european law,2 the comics grid,1 the commens encyclopedia,1 the commens working papers,-1 the communication review,1 the communicator,-1 the computer games journal,1 the conversation,-1 the crop journal,1 the cryosphere discussions,-1 the daily star,-1 the defence horizon journal,-1 the denning law journal,1 the dhaka university journal of earth and environmental sciences,-1 the digital press at the university of north dakota,-1 the diplomat,-1 the double reed,-1 the eanm journal,-1 the economist,-1 the economists' voice,-1 the edgar allan poe review,1 "the education review, usa",-1 the education university of hong kong,-1 the egyptian journal of medical human genetics,1 the egyptian journal of neurosurgery,-1 the egyptian journal of radiology and nuclear medicine,-1 the eighteenth-century novel,1 the electronic british library journal,1 the encyclopedia of china publishing house,-1 the eriskay connection,-1 the esse messenger,1 the eurasia proceedings of educational & social sciences,-1 "the eurasia proceedings of science, technology, engineering & mathematics",-1 the european archaeologist,-1 the european business review,-1 the european educational researcher,-1 the european journal of applied linguistics and tefl,-1 the european journal of dentistry,1 the european journal of philosophy in arts education,1 the european research journal,-1 the european union review,1 the evolutionary review,-1 the evolving scholar,-1 the extractive industries and society,2 the finnish american reporter,-1 the florida communication journal,1 the forensic examiner,1 the forensic of pi kappa delta,1 the funambulist,-1 the gaskell society journal,1 the geneva papers on risk and insurance : issues and practice,1 the georgia journal of international and comparative law,-1 the gissing journal,-1 the global journal of health and physical education pedagogy,-1 the global south,-1 the gradient,-1 the greek orthodox theological review,-1 the gstf business review,-1 the hague journal of diplomacy,1 the harry s. truman research institute for the advancement of peace,-1 the harvard review of philosophy,-1 the health care manager,1 the helsinki notebooks,-1 "the heppsinki working papers on emotions, populism and polarisation",-1 the highlander,1 the history of christian-muslim relations,2 the hong kong university of science and technology,-1 the horticulture journal,1 the humanistic psychologist,1 the huntington library quarterly,2 the iafor journal of education,1 the icfai journal of derivatives markets,1 the ifcolog journal of logics and their applications,1 the imp journal,1 the indexer: journal of the society of indexers,1 the indian forester,-1 the industrial geographer,1 the information management journal,-1 the innovation,1 the innovation geoscience,1 the innovation medicine,-1 the institute of electrical engineers of japan,-1 the integrated review in context,-1 the international conference of applied research in textile,-1 the international conference on information networking,1 the international journal for the history of engineering & technology,1 the international journal of aerospace psychology,1 the international journal of community and social development,1 the international journal of critical pedagogy,1 the international journal of cuban studies,1 the international journal of cultural policy,3 the international journal of design education,1 the international journal of design in society,1 the international journal of environmental sustainability,-1 the international journal of gastroenterology and hepatology diseases,-1 the international journal of information and learning technology,1 "the international journal of intelligence, security, and public affairs",1 the international journal of interdisciplinary social and community studies,-1 the international journal of james bond studies,1 the international journal of management education,1 the international journal of management science and information technology,-1 the international journal of railway technology,1 "the international journal of social, political and community agendas in the arts",1 the international journal of spine surgery,1 the international journal of sport and society,1 the international journal of the academic business world,-1 the international journal of the commons,1 the international journal of the image,-1 the international journal of the inclusive museum,1 the international journal of training research,1 the international journal of transpersonal studies,-1 the international journal of virtual reality,1 the international society for orthodox church music,-1 the international spectator,1 the international sports law journal,1 the international year book and statesmens whos who,1 the iranian yearbook of phenomenology,-1 the irish journal of management,1 the italian american review,1 the iucn red list of threatened species,-1 the iup journal of supply chain management,-1 the jalt call journal,1 the japanese political economy,1 the jordan journal of earth and environmental sciences,1 the journal for history of analytical philosophy,1 the journal for transdisciplinary research in southern africa,1 the journal of advanced prosthodontics,1 the journal of aging and social change,1 the journal of altmetrics,1 "the journal of american business review, cambridge",-1 the journal of applied business and economics,-1 the journal of applied laboratory medicine,1 "the journal of asian finance, economics and business",-1 the journal of astronomical data,-1 the journal of aviation/aerospace education & research,-1 the journal of business and retail management research,-1 the journal of chinese sociology,1 the journal of climate change and health,1 the journal of communication and media studies,1 the journal of comparative economic studies,-1 the journal of continental philosophy,1 the journal of cross border studies in ireland,-1 the journal of cross-disciplinary research in computational law,1 "the journal of digital forensics, security and law",1 the journal of drama and theatre education in asia,1 the journal of dress history,1 the journal of ecocriticism,1 the journal of economic concern,-1 the journal of educators online,-1 the journal of engineering,1 the journal of engineering research,-1 the journal of entrepreneurial finance,1 the journal of ethnology and folkloristics,2 the journal of experiential education,1 the journal of financial data science,1 the journal of fintech,1 the journal of gambling business and economics,-1 the journal of global business issues,-1 the journal of hand surgery : asian-pacific volume,1 the journal of happiness and well-being,1 the journal of hip hop studies,1 the journal of historical fictions,1 the journal of holocaust research,1 the journal of humanities in rehabilitation,1 the journal of inclusive practice in further and higher education,-1 the journal of international advanced otology,1 the journal of interreligious studies,1 the journal of law enforcement,-1 the journal of law teaching and learning,-1 the journal of literacy and technology,1 the journal of literary onomastics,-1 the journal of machine learning for biomedical imaging,1 the journal of manual & manipulative therapy,1 the journal of media innovations,1 the journal of media law,1 the journal of media literacy education,1 the journal of medical practice management,-1 the journal of medieval military history,-1 the journal of medieval monastic studies,1 "the journal of mental health training, education and practice",1 the journal of network theory in finance,1 the journal of oromo studies,1 the journal of pan african studies,1 the journal of pathology : clinical research,1 the journal of peer production,1 the journal of pharmacy technology,1 the journal of philosophical economics,1 the journal of philosophy of disability,1 the journal of physical fitness and sports medicine,-1 the journal of play in adulthood,-1 the journal of practice theory,-1 the journal of prevention of alzheimer's disease,1 the journal of problem solving,1 the journal of risk finance,1 the journal of social media in society,1 the journal of social theory in art education,-1 "the journal of social, evolutionary, and cultural psychology",1 the journal of software for algebra and geometry,-1 the journal of the american taxation association,1 the journal of the european pentecostal theological association,1 the journal of the intensive care society,1 the journal of web science,1 the journal of world christianity,1 the journal of writing research,1 the journal of zoo and aquarium research,-1 the kapralova society,-1 the kathmandu post,-1 the kemco review,-1 the kodály envoy,-1 the korean journal of internal medicine,1 the lancet,3 the lancet : digital health,3 the lancet : rheumatology,1 the lancet diabetes & endocrinology,3 the lancet gastroenterology & hepatology,2 the lancet global health,3 the lancet haematology,3 the lancet healthy longevity,1 the lancet hiv,2 the lancet infectious diseases,3 the lancet neurology,3 the lancet oncology,3 the lancet primary care,-1 the lancet psychiatry,3 the lancet regional health : americas,1 the lancet regional health : europe,1 the lancet regional health : southeast asia,-1 the lancet regional health : western pacific,1 the lancet respiratory medicine,3 the lancet. planetary health,3 the lancet. public health,3 the latin american journal of aquatic mammals,1 the law teacher,1 the learning teacher journal,-1 the lichenologist,1 the literary encyclopedia,-1 the liverpool law review,1 the london journal of canadian studies,1 the lsp magazine,-1 the malaysian journal of nursing,-1 the mathematica journal,1 the mathematical gazette,-1 the mathematical scientist,1 the mayanist,-1 the mcneese review,1 the medieval and early modern iberian world,1 the medieval franciscans,1 the medieval mediterranean,1 the mena journal of business case studies,-1 the merlin press ltd,-1 the messenger,-1 the michigan historical review,1 the microbe,-1 "the minerals, metals & materials series",-1 the modern higher education review,1 the modern law review,3 the museum review,-1 the musical times,1 the naar proceedings series,1 the national interest,-1 the natural products journal,-1 the nephron journals,1 the neurodiagnostic journal,1 the neuroradiology journal,1 the new bioethics,1 the new educator,1 the new england journal of medicine,3 the new international relations,-1 the new rambler,-1 the newsletter,-1 the nordic africa days biennial conference,-1 the nordic atlas of language structures journal,-1 the nordic journal of language teaching and learning,1 the nordic psychiatrist,-1 the nordic textile journal,1 the northern world,1 the online journal of distance education and e-learning,1 the online journal of quality in higher education,-1 the open allergy journal,-1 the open astronomy journal,-1 the open atmospheric science journal,-1 the open chemical engineering journal,-1 the open clinical trials journal,-1 the open construction and building technology journal,-1 the open education journal,-1 the open environmental pollution and toxicology journal,-1 the open fish science journal,-1 the open industrial and manufacturing engineering journal,-1 the open information science journal,-1 the open management journal,-1 the open medical imaging journal,-1 the open neuroimaging journal,-1 the open neurology journal,-1 the open occupational health and safety journal,-1 the open petroleum engineering journal,-1 the open psychology journal,-1 the open public health journal,-1 the open renewable energy journal,-1 the open respiratory medicine journal,-1 the open software engineering journal,-1 the open source business resource,-1 the open tissue engineering and regenerative medicine journal,-1 the open waste management journal,-1 the ottoman empire and its heritage,1 the pan african medical journal,-1 the parliament magazine,-1 the pastoral review,-1 the philosophers' web magazine,-1 the philosophical age,-1 the philosophical society review,-1 the phonetician,1 the physical educator,-1 the plan journal,1 the planetary science journal,1 the polar journal,1 the police journal,1 the polish journal of aesthetics,1 the poznań university of economics review,-1 the prague bulletin of mathematical linguistics,1 the primary care companion for cns disorders,-1 the princeton theological review,-1 the proceedings of the ... international conference on cyber warfare and security,1 the proceedings of the acm on networking,-1 "the proceedings of the international academic conference on teaching, learning and education",-1 "the proceedings of the international conference ""marketing - from information to decision""",-1 "the proceedings of the international conference on research in business, management and finance",-1 the proceedings of the international offshore and polar engineering conference,1 the progressive post,-1 the provincial institute for the protection of cultural monuments,-1 the psychiatrist,1 the public journal of semiotics,1 the quarterly,-1 the quarterly journal of finance,1 the r journal,1 the radio science bulletin,1 the readers designist magazine,1 the rescience journal,1 the rest,1 the review of business information systems,-1 the review of diabetic studies,1 the review of disability studies,1 the review of socionetwork strategies,-1 the sais review of international affairs,1 the sankalpa: international journal of management decisions,-1 the saudi dental journal,1 the science of nature,1 the scientific press,-1 the semiotic review of books,1 the senses and society,1 the silesian university of technology,-1 "the sixties: a journal of history, politics, and culture",1 the smai journal of computational mathematics,1 the social history of alcohol and drugs,1 the society for east sea,-1 the society for geology applied to mineral deposits,-1 the society of naval architects of korea,-1 the soundtrack,1 the south african journal of clinical nutrition,-1 the south asianist,1 the southern communication journal,1 the space between,1 the spaces of creation,-1 the sport journal,1 the state hermitage museum,1 the steam journal,-1 the systematist,-1 the teacher educator,1 the teaching of mathematics,-1 the theory and practice of legislation,2 the times higher education supplement,-1 the tqm journal,1 the transactions of the korean institute of electrical engineers,-1 the transportation law journal,-1 the turkish online journal of educational technology,1 the ulkopolitist,-1 the ultrasound journal,1 the unfamiliar,-1 the urban review,1 the velvet light trap,1 the versatile image: photography in the era of web 2.0,-1 the veterinary clinics of north america : exotic animal practice,-1 the wac clearinghouse,-1 the wall street journal : eastern edition,-1 the washington post,-1 the water wheel,-1 the westermarck society ry,-1 the wipo journal,1 the world allergy organization journal,1 the world journal of men's health,1 the year's work in modern language studies,-1 the yearbook of polar law,1 the yearbook of south asian languages and linguistics,-1 the yearbook of the national society for the study of education,1 the yearbook of the sief working group on the ritual year,-1 the yearbook on history and interpretation of phenomenology,1 theater,-1 theater der zeit,-1 theater heute,-1 theatralia,1 theatre and performance design,2 theatre arts journal: studies in scenography and performance,2 theatre forum,1 theatre history studies,1 theatre journal,3 theatre notebook,1 theatre research international,3 theatre survey,3 theatre symposium,-1 theatre topics,1 "theatre, dance and performance training",1 thelem,-1 thematicon: wissenschaftliche reihe des collegium polonicum,-1 themes in biblical narrative,1 themes in islamic studies,2 theo-web,1 theofilos,-1 theologia,-1 theologia viatorum,1 theologica,1 theological research,-1 theological studies,2 theologie und philosophie,1 theologisch-praktische quartalschrift,1 theologische beitrage,1 theologische literaturzeitung,1 theologische quartalschrift,1 theologische revue,1 theologische rundschau,1 theologische zeitschrift,1 theology,1 theology and science,1 theology and sexuality,1 theology today,1 theoretical and applied climatology,1 theoretical and applied fracture mechanics,1 theoretical and applied genetics,2 theoretical and applied mechanics,-1 theoretical and computational fluid dynamics,1 theoretical and empirical researches in urban management,1 theoretical and experimental chemistry,1 theoretical and experimental plant physiology,1 theoretical and mathematical physics,1 theoretical and practical research in economic fields,-1 theoretical aspects of rationality and knowledge,1 theoretical biology and medical modelling,1 theoretical biology forum,1 theoretical chemistry accounts,1 theoretical computer science,2 theoretical criminology,3 theoretical ecology,1 theoretical economics,3 theoretical economics letters,-1 theoretical foundations of chemical engineering,1 theoretical inquiries in law,2 theoretical issues in ergonomics science,1 theoretical issues in sign language research conference,-1 theoretical linguistics,2 theoretical medicine and bioethics,1 theoretical population biology,1 theoretical roman archaeology journal,1 theoria et historia scientiarum,1 theoria: a journal of social and political theory,1 theoria: a swedish journal of philosophy,2 theoria: historical aspects of music theory,1 theoria: revista de teoria historia y fundamentos de la ciencia,1 theory and applications of categories,1 theory and decision,1 theory and event: an online journal of political theory,1 theory and practice in language studies,-1 theory and practice of logic programming,2 theory and practice: journal of the music theory society of new york state,1 theory and psychology,2 theory and research in education,1 theory and research in social education,1 theory and society,3 theory culture and society,2 theory in biosciences,1 theory into practice,1 theory of computing,2 theory of computing systems,2 theory of probability and its applications,1 theory of probability and mathematical statistics,1 theory of stochastic processes,1 theranostics,2 therapeia-säätiö,-1 therapeutic advances in cardiovascular disease,1 therapeutic advances in chronic disease,1 therapeutic advances in drug safety,1 therapeutic advances in gastroenterology,1 therapeutic advances in hematology,1 therapeutic advances in medical oncology,1 therapeutic advances in musculoskeletal disease,1 therapeutic advances in neurological disorders,1 therapeutic advances in ophthalmology,1 therapeutic advances in psychopharmacology,1 therapeutic advances in urology,1 therapeutic apheresis and dialysis,1 therapeutic communities: the international journal for therapeutic and supportive organizations,1 therapeutic delivery,1 therapeutic drug monitoring,1 therapeutic hypothermia and temperature management,1 therapeutic innovation & regulatory science,1 therapeutic recreation journal,1 therapeutics and clinical risk management,1 therapeutische umschau: revue therapeutique,1 therapeutisches reiten,-1 therapie,1 therapie familiale,1 theriogenology,2 theriogenology wild,1 thermal and fluids engineering summer conference,-1 thermal science,1 thermal science and engineering progress,1 thermal spray bulletin,1 thermochimica acta,1 thermology international,1 thermophysics and aeromechanics,1 therya,1 thesaurismata,1 "thesaurus: boletin del instituto caro y cuervo, bogota",1 thesis eleven,1 thesis: teorija i istorija ekonomitsheskih i sotsialnyh institutov i sistem,-1 thieme medical publishers,1 thin solid films,1 thin-walled structures,2 thinking and reasoning,1 thinking highways,-1 thinking skills and creativity,1 third text,2 third world approaches to international law review,1 third world quarterly,2 third world thematics,1 thl2,-1 thomas hardy journal,1 thomas mann jahrbuch,1 thomas telford,1 thomas wolfe review,1 thomist,1 thompson educational publishing,-1 thomson reuters,-1 thomé-kozmiensky verlag,1 thoracic and cardiovascular surgeon,1 thoracic cancer,-1 thorax,2 thought: a journal of philosophy,2 thresholds,1 thrombosis and haemostasis,2 thrombosis journal,1 thrombosis research,1 thule,-1 thunderbird international business review,1 thyroid,1 thélème,-1 thông báo khoa học,-1 tianjin ifengspace,-1 tianjin journal of nursing,-1 tianjin keji daxue xuebao,-1 tianjin shi jiao-ke-yuan xuebao,-1 ticks and tick-borne diseases,1 tidningen skogsteknik,-1 tidningen utemiljö,-1 tidningen åland,-1 tidskrift for politisk filosofi,1 tidskrift för genusvetenskap,1 tidskrift för litteraturvetenskap,1 tidskrift utgiven av juridiska föreningen finland,1 tidskriften stad,-1 tidskriftet antropologi,1 tidsskrift for arbejdsliv,1 tidsskrift for boligforskning,-1 tidsskrift for børne- & ungdomskultur,1 tidsskrift for den norske legeforening,1 tidsskrift for eiendomsrett,1 "tidsskrift for erstatningsrett, forsikringsrett og trygderett",1 "tidsskrift for familierett, arverett og barnevernrettslige spoersmål",1 tidsskrift for forretningsjus,-1 tidsskrift for forskning i sygdom og samfund,1 tidsskrift for islamforskning,1 tidsskrift for kjonnsforskning,1 tidsskrift for kulturforskning,1 tidsskrift for omsorgsforskning,1 tidsskrift for praktisk teologi,1 tidsskrift for professionsstudier,-1 tidsskrift for psykisk helsearbeid,1 tidsskrift for rettsvitenskap,2 tidsskrift for samfunnsforskning,1 tidsskrift for sjelesorg,1 tidsskrift for strafferett,1 tidsskrift for velferdsforskning,1 tidsskriftet arkiv,1 tie & liikenne,-1 tiede,-1 tiede ja ase,1 tiede ja edistys,1 tiedebarometri,-1 tiedeblogi,-1 tiedepolitiikka,1 tiedetoimittaja,-1 tiedonantaja,-1 tiedosta,-1 tiems workshop on smart environments and ict system living lab for societal security,-1 tieraerztliche praxis ausgabe grosstiere nutztiere,1 tieraerztliche praxis ausgabe kleintiere heimtiere,1 tieraerztliche umschau,1 tierra firme,-1 tieteellinen tutkimus ortonin julkaisusarja a,-1 tieteellisten seurain valtuuskunnan verkkojulkaisuja,-1 tieteen termipankki,-1 tieteentekijöiden liitto,-1 tieteessä tapahtuu,-1 tieto & trendit,-1 tieto tuottamaan,-1 tieto- ja viestintätekniikan ammattilaiset ry,-1 tietoa,-1 tietoasiantuntija,-1 tietoisku,-1 tietolinja,-1 tietolipas,1 tietosanoma,-1 tiimalasi,-1 tiimi,-1 tiivistelmät : kansallinen koulutuksen arviointikeskus,-1 tijd-schrift,-1 tijdschrift van de koninklijke vereniging voor nederlandse muziekgeschiedenis,1 tijdschrift voor bedrijfs- en verzekeringsgeneeskunde,-1 tijdschrift voor communicatiewetenschap,1 tijdschrift voor diergeneeskunde,1 tijdschrift voor economische en sociale geografie,2 tijdschrift voor filosofie,1 tijdschrift voor genderstudies,1 tijdschrift voor geschiedenis,2 tijdschrift voor hoger onderwijs,-1 tijdschrift voor nederlandse taal-en letterkunde,2 tijdschrift voor onderwijsrecht en onderwijsbeleid,1 tijdschrift voor rechtsgeschiedenis,2 tijdschrift voor skandinavistiek,1 tijdschrift voor sociale en economische geschiedenis,1 tijdschrift voor sociologie,1 tijdschrift voor taalbeheersing,1 tijdschrift voor tijdschriftstudies,1 tijdschrift voor verslaving,-1 tijdschrift voor waterstaatsgeschiedenis,1 tijdschrift voor zeegeschiedenis,1 tilastokatsaus,-1 tilastokeskus,-1 tilastoraportti,-1 tilburg law review,1 tilde university press,-1 tilde-skriftserie,-1 tiliposti & palkka,-1 tilisanomat,-1 tilitoimistossa,-1 till liv,-1 tiltai,-1 "time and mind: the journal of archaeology, consciousness and culture:",1 time and society,2 timing & time perception,1 timisoara medical journal,1 timss & pirls international study center,-1 tinta könyvkiadó,-1 tip.le.co,-1 tipograf,-1 tirant humanidades,-1 tire science and technology,1 tissue and cell,1 tissue barriers,1 tissue engineering and regenerative medicine,1 tissue engineering part a,1 tissue engineering part b: reviews,1 tissue engineering part c: methods,1 titanik-gallerian julkaisu,-1 tivi,-1 tivit,-1 tizard learning disability review,1 tímarit um uppeldi og menntun,-1 tjs opintokeskus,-1 tkh. teorija koja hoda,-1 tlalocan: revista de fuentes para el conocimiento de las culturas indígenas de méxico,1 tls : the times literary supplement,-1 tm : tekniikan maailma,-1 tm rakennusmaailma,-1 tmg tijdschrift voor mediageschiedenis,1 tobacco control,3 tobacco induced diseases,1 tobacco prevention and cessation,1 tocher: scottish and celtic studies,1 todomodo,-1 tohoku journal of experimental medicine,1 tohoku mathematical journal,1 toiminta soi,-1 toimintaterapeutti,-1 toinen näytös,-1 toivo,-1 tokai university press,-1 token,1 tolle lege,-1 tolstoy studies journal,-1 tomo,-1 tomography of materials and structures,-1 tomorrow people,-1 tomskij žurnal lingvističeskih i antropologičeskih issledovanij,1 tongxin xuebao,-1 tonos digital: revista electronica de estudios filologicos,1 toolilainen,-1 top,1 topia-canadian journal of cultural studies,-1 topical meeting on silicon monolithic integrated circuits in rf systems,-1 topics in advanced practice nursing,1 topics in applied physics,1 topics in catalysis,1 topics in clinical nutrition,1 topics in cognitive science,1 topics in companion animal medicine,1 topics in current chemistry,1 topics in current genetics,1 topics in early childhood special education,3 topics in geriatric rehabilitation,1 topics in language disorders,1 topics in linguistics,1 topics in magnetic resonance imaging,1 topics in organometallic chemistry,1 topics in spinal cord injury rehabilitation,1 topics in stereochemistry,1 topics in stroke rehabilitation,1 topoi orient occident,1 topoi: an international review of philosophy,1 topological methods in nonlinear analysis,1 topologik,-1 topology,1 topology and its applications,1 topology proceedings,1 topos,1 toraks dergisi,-1 tored,1 torkel opsahl academic epublisher,-1 torniolaakson neuvosto,-1 tornionlaakson maakuntamuseo,-1 tornionlaakson vuosikirja,-1 toronto journal of theology,1 tos forum,-1 toshi jōhōgaku kenkyū,-1 total art,1 total quality management and business excellence,1 totto,-1 touchpoint: the journal of service design,-1 toung pao,2 tourism,1 tourism & travelling,-1 tourism analysis,1 tourism and hospitality,-1 tourism and hospitality industry,-1 tourism and hospitality management,-1 tourism and hospitality research,1 tourism and management studies,-1 tourism cases,-1 tourism economics,1 tourism geographies,2 tourism in marine environments,1 tourism management,3 tourism management perspectives,1 tourism planning and development,1 tourism recreation research,1 tourism review,1 tourism review international: an international journal,1 tourism today,1 "tourism, culture and communication",1 tourisme et territoires,1 tourismos: an international multidisciplinary journal of tourism,1 tourist studies,1 "tovarystvo z obmezhenoiu vidpovidalnistiu ""try k""",-1 toward a science of consciousness,-1 town and country planning,1 town planning review,1 toxichem krimtech,-1 toxicologic pathology,1 toxicological and environmental chemistry,1 toxicological sciences,2 toxicology,1 toxicology and applied pharmacology,3 toxicology and environmental health sciences,1 toxicology and industrial health,1 toxicology in vitro,1 toxicology letters,1 toxicology mechanisms and methods,1 toxicology reports,1 toxicon,1 toxicon x,1 toxics,-1 toxin reviews,1 toxins,-1 trabajos de prehistoria,1 trac-trends in analytical chemistry,2 trace,1 trace elements and electrolytes,1 "trade, law and development",-1 traditio: studies in ancient and medieval history thought and religion,2 tradition: a journal of orthodox jewish thought,1 traditional dwellings and settlements review,1 traditional south asian medicine,1 "traditiones, slovenian journal of ethnography and folklore",1 tradterm,1 tradulex,-1 traektorija nauki,-1 traffic,1 traffic injury prevention,1 traffic safety research,1 traficomin tutkimuksia ja selvityksiä,-1 training and education in professional psychology,1 "training, language and culture",1 traitement automatique des langues,1 traitement du signal,1 trakl-studien,1 trakya university journal of natural sciences,-1 trames: journal of the humanities and social sciences,1 tranel,-1 trans tech publications,1 trans-form-acao,1 trans-kom: journal of translation and technical communication,1 trans: revista de traductologia,1 trans: transcultural music review,1 transaction publishers,1 transactional analysis journal,1 transactions : geothermal resources council,-1 transactions historic society of lancashire and cheshire,1 transactions in gis,1 transactions of famena,1 transactions of mathematics and its applications,1 transactions of nonferrous metals society of china,1 transactions of s.h.a.s.e.,-1 transactions of the american entomological society,1 transactions of the american fisheries society,1 transactions of the american mathematical society,3 transactions of the american mathematical society : series b,3 transactions of the american nuclear society,1 transactions of the american ophthalmological society,-1 transactions of the american philological association,3 transactions of the american philosophical society,1 transactions of the american society of agricultural and biological engineers,1 transactions of the annual meeting of the orthopaedic research society,-1 transactions of the association for computational linguistics,1 transactions of the association of european schools of planning,1 transactions of the cambridge bibliographical society,1 transactions of the canadian society for mechanical engineering,1 transactions of the charles s peirce society,1 transactions of the digital games research association,1 transactions of the historical society of ghana,-1 transactions of the historical society of ghana,1 transactions of the indian ceramic society,1 transactions of the indian institute of metals,1 transactions of the institute of british geographers,3 transactions of the institute of mathematics of the national academy of sciences of ukraine,-1 transactions of the institute of measurement and control,1 transactions of the institute of metal finishing,1 "transactions of the institution of mining and metallurgy, section a: mining technology",1 "transactions of the institutions of mining and metallurgy, section b: applied earth science",1 transactions of the international conference on structural mechanics in reactor technology,-1 transactions of the international society for music information retrieval,1 transactions of the japan society for aeronautical and space sciences,1 transactions of the london and middlesex archaeological society,1 transactions of the london mathematical society,2 transactions of the oriental ceramic society,1 transactions of the philological society,3 transactions of the royal historical society,3 transactions of the royal society of south africa,-1 transactions of the royal society of south australia,1 transactions of the royal society of tropical medicine and hygiene,1 transactions on advanced research,1 transactions on computational collective intelligence,1 transactions on computational systems biology,1 transactions on data privacy,1 transactions on emerging telecommunications technologies,1 transactions on high-performance embedded architectures and compilers,-1 transactions on internet research,1 transactions on large-scale data- and knowledge-centered systems,1 transactions on machine learning and data mining,-1 transactions on machine learning research,1 transactions on pattern languages of programming,1 transactions: society of naval architects and marine engineers,1 transatlantica,1 transboundary and emerging diseases,3 transcience,-1 transcript verlag,1 transcription,1 transcultural psychiatry,1 transcultural studies,1 transeuphratene,1 transfer: european review of labour and research,1 transfers,1 transfiguration: nordisk tidsskrift for kunst og kristendom,1 transformacje,-1 transformation,1 transformation groups,1 transformation: critical perspectives on southern africa,1 transformations,-1 transformations,1 transformations in business and economics,1 transformative works and cultures,1 transforming anthropology,2 "transforming government: people, process and policy",1 transfusion,1 transfusion and apheresis science,1 transfusion clinique et biologique,1 transfusion medicine,1 transfusion medicine and hemotherapy,1 transfusion medicine reviews,1 transgender health,1 transgender studies quarterly,1 transgenic research,1 transgenics,1 transilvania,1 transinformacao,1 transit,-1 transit : europäische revue,-1 transition,1 transition metal chemistry,1 translatio,1 translation and interpreting,1 translation and interpreting studies,1 translation and literature,1 translation and translanguaging in multilingual contexts,1 translation in society,-1 translation journal,-1 translation matters,-1 translation review,1 translation spaces,1 translation studies,2 "translation, cognition & behavior",1 translational andrology and urology,1 translational animal science,-1 translational behavioral medicine,1 translational cancer research,-1 translational exercise biomedicine,-1 translational gastroenterology and hepatology,1 translational journal of the american college of sports medicine,1 translational lung cancer research,1 translational medicine @ unisa,-1 translational medicine communications,-1 translational neurodegeneration,2 translational neuroscience,1 translational oncology,1 translational pediatrics,1 translational proteomics,1 translational psychiatry,1 translational research,2 translational sports medicine,1 translational stroke research,1 translational vision science & technology,1 translator,2 transletters,-1 translit,-1 translocal,-1 translogos translation studies journal,1 transnational cinemas,1 transnational corporations,1 transnational curriculum inquiry,1 transnational dispute management,-1 transnational education review,1 transnational environmental law,3 transnational law & contemporary problems,-1 transnational legal theory,1 transnational literature,1 transnational marketing journal,-1 transnational press london,-1 transnational publishers,1 transnav,-1 transplant immunology,1 transplant infectious disease,1 transplant international,1 transplantation,1 transplantation and cellular therapy,1 transplantation direct,1 transplantation proceedings,1 transplantation reviews,1 transport,1 transport & logistics,-1 transport and telecommunication,1 transport and telecommunication institute,-1 transport in porous media,1 transport manager,-1 transport policy,2 transport problems,-1 transport reviews,2 transportation,2 transportation engineering,1 transportation geotechnics,1 transportation infrastructure geotechnology,1 transportation journal,1 transportation letters-the international journal of transportation research,1 transportation planning and technology,1 transportation research interdisciplinary perspectives,1 transportation research part a: policy and practice,2 transportation research part b: methodological,3 transportation research part c: emerging technologies,3 transportation research part d: transport and environment,1 transportation research part e: logistics and transportation review,2 transportation research part f: traffic psychology and behaviour,1 transportation research procedia,1 transportation research record,1 transportation science,2 "transportmetrica : b, transport dynamics",1 "transportmetrica. a, transport science",1 transportrecht,1 transposition,1 transtext(e)s transcultures,1 transworld research network,1 transylvanian review,1 transylvanian review of administrative sciences,-1 trash culture journal,-1 trauma,1 trauma case reports,-1 trauma monthly,-1 trauma violence and abuse,2 traumatology,1 trauner verlag,1 travail genre et societes,1 travail humain,1 travaux de la renaissance et de lhumanisme,1 travaux de linguistique: revue internationale de linguistique francaise,1 travaux de litterature,1 "travaux du muséum national d'histoire naturelle ""grigore antipa""",-1 travaux et memoires,1 travaux interdisciplinaires du laboratoire parole et langage d aix-en-provence,1 travel and tourism research association annual international conference,-1 travel behaviour & society,1 travel medicine and infectious disease,1 "traverse: zeitschrift fur geschichte, zurich",1 treballs de la societat catalana de geografia,-1 treballs de sociolinguistica catalana,1 tredition,-1 tree genetics and genomes,1 tree physiology,2 tree-ring research,1 "trees, forests and people",1 trees-structure and function,1 tremor and other hyperkinetic movements,1 trends in amplification,-1 trends in anaesthesia and critical care,1 trends in applied sciences research,-1 trends in applied spectroscopy,-1 trends in biochemical sciences,2 trends in biomaterials and artificial organs,1 trends in biotechnology,2 trends in cancer,1 trends in cardiovascular medicine,1 trends in cell biology,2 trends in chemical engineering,-1 trends in chemistry,1 trends in cognitive sciences,3 trends in ecology and evolution,3 trends in endocrinology and metabolism,2 trends in food science and technology,2 trends in genetics,2 trends in glycoscience and glycotechnology,1 trends in hearing,1 trends in immunology,2 trends in language acquisition research,1 trends in linguistics : studies and monographs,1 trends in mathematics,1 trends in microbiology,2 trends in molecular medicine,2 trends in neuroscience and education,1 trends in neurosciences,3 trends in organized crime,1 trends in parasitology,2 trends in pharmacological sciences,3 trends in plant science,2 trends in psychology,1 trends in sport science,-1 trends of recent researches on the history of china,1 trentham books,1 tresearch,-1 treća,-1 tria,-1 trialba ediciones,-1 trials,1 trials in vaccinology,-1 "triangulum : germanistisches jahrbuch für estland, lettland und litauen",-1 triarchy press,-1 tribologia,1 tribologie und schmierungstechnik,-1 tribology and interface engineering series,1 tribology and lubrication technology,1 tribology international,2 tribology letters,1 tribology online,1 tribology transactions,1 "tribology: materials, surfaces and interfaces",1 triennial conference of the dlm forum,-1 trierer theologische zeitschrift,1 trierer zeitschrift fur geschichte und kunst des trierer landes und seiner nachbargebiete,1 trim research notes,-1 trim research reports,-1 tringa,-1 trinity college law review,-1 trio,1 trioli,-1 triple helix,1 triplec,1 trita-ark. forskningspublikation,-1 tritoniana,-1 tritonic books,-1 trivent publishing,1 trivium,-1 trivium,1 trondheim studies on eastern european cultures and societies,1 tropenbos,-1 tropical agriculture,1 tropical and subtropical agroecosystems,-1 tropical animal health and production,1 tropical biomedicine,-1 tropical conservation science,1 tropical doctor,1 tropical ecology,1 tropical grasslands,1 tropical journal of pharmaceutical research,1 tropical medicine and health,-1 tropical medicine and infectious disease,-1 tropical medicine and international health,1 tropical plant pathology,1 tropical zoology,1 tropicultura,1 troubador publishing,1 trovant,-1 trudy akademenergo,-1 trudy instituta matematiki,-1 trudy instituta matematiki i mekhaniki uro ran,1 trudy instituta russkogo âzyka im. v.v. vinogradova,-1 trudy kafedry istorii novogo i novejshego vremeni sankt-peterburgskogo gosdarstvennogo universiteta,-1 trudy karelʹskogo naučnogo centra rossijskoj akademii nauk,-1 "trudy meždunarodnoj konferencii ""korpusnaâ lingvistika-..."".",-1 trudy otdela drevnerusskoj literatury,1 truman state university press,1 trust quarterly review,-1 trädgårdsnytt,-1 tròpos,1 tržište,-1 tsantsa,1 tsilari,-1 tsinghua science and technology,-1 tsukuba daigaku kyōikugaku-kei ronshū,-1 "ttr: traduction, terminologie et redaction",1 tts:n julkaisuja,-1 ttt-digi,-1 tu delft open,-1 tuba-ar-turkish academy of sciences journal of archaeology,-1 tuba-ked: turkiye bilimler akademisi kultur envanteri dergisi,1 tuberculosis,1 tubinger beitrage zur linguistik,1 tudpress,-1 tufnell press,1 tugboat,-1 tuiran suuralueen kuohut,-1 tukiviesti,-1 tulane law review,1 tulevaisuussarja,-1 tuli&savu,-1 tullis journal - the journal of turkic language and literature surveys,-1 tuloskalvosarja,-1 tulsa studies in womens literature,2 tulva,-1 tulʹskij naučnyj vestnik,-1 tumor biology,1 tumordiagnostik und therapie,1 tumori,1 tumour virus research,1 tuna-ajalookultuuri ajakiri,1 tunguso sibirica,1 tuning journal for higher education,-1 tunnelling and underground space technology,1 tunnuslukuja ja tutkimuksia,-1 tuottava peruna,-1 "turcica: revue detudes turques: peuples, langues, cultures, etats",1 turcologica,1 turczaninowia,1 turgut ozal education,-1 turia + kant,1 turizam,-1 turjuman,-1 turk arkeoloji ve etnografya dergisi,1 turk dili arastirmalari yillgi: belleten,1 turk dilleri arastirmalari,1 turk kulturu ve haci bektas veli-arastirma dergisi,-1 turk pediatri arsivi-turkish archives of pediatrics,1 turk psikiyatri dergisi,-1 turk psikoloji dergisi,-1 turkbilig: turkoloji arastirmalari,1 turkic languages,1 turkish journal of agriculture and forestry,1 turkish journal of biology,1 turkish journal of botany,1 turkish journal of business ethics,1 turkish journal of chemistry,1 turkish journal of earth sciences,1 turkish journal of education,-1 turkish journal of electrical engineering and computer sciences,-1 turkish journal of field crops,1 turkish journal of fisheries and aquatic sciences,1 turkish journal of gastroenterology,1 turkish journal of geriatrics-turk geriatri dergisi,1 turkish journal of hematology,-1 turkish journal of mathematics,1 turkish journal of medical sciences,-1 turkish journal of pediatrics,1 turkish journal of politics,-1 turkish journal of veterinary and animal sciences,1 turkish journal of zoology,1 turkish neurosurgery,1 turkish online journal of english language teaching,1 turkish studies,1 turkistalous,-1 turkiye entomoloji dergisi-turkish journal of entomology,1 turkiye fiziksel tip ve rehabilitasyon dergisi-turkish journal of physicalmedicine and rehabilitation,1 turku 2011 -säätiö,-1 turku centre for computer science,-1 turkuposti,-1 turkuseuran julkaisuja,-1 turun a-kilta,-1 turun ammattikorkeakoulu,-1 turun ammattikorkeakoulun oppimateriaaleja,-1 turun ammattikorkeakoulun puheenvuoroja,-1 turun ammattikorkeakoulun raportteja,-1 turun ammattikorkeakoulun tutkimuksia,-1 turun historiallinen arkisto,1 turun historiallinen yhdistys ry,1 turun kauppakorkeakoulu,-1 turun kauppakorkeakoulun julkaisuja,-1 turun kauppakorkeakoulun julkaisuja : sarja c,-1 turun kauppakorkeakoulun julkaisujasarja ae,-1 turun kauppakorkeakoulun julkaisusarja : keskustelua ja raportteja,-1 turun kaupungin ympäristöjulkaisuja,-1 turun kaupunki,-1 turun lapsi- ja nuorisotutkimuskeskuksen julkaisuja,-1 turun museokeskuksen raportteja,-1 turun museokeskus,-1 turun normaalikoulun julkaisuja,-1 turun sanomat,-1 turun sanomat : makasiini,-1 turun seudun ekonomit,-1 turun taidemuseo,-1 turun yliopisto,-1 turun yliopiston brahea-keskuksen julkaisuja,-1 turun yliopiston dosenttiyhdistyksen julkaisuja,-1 turun yliopiston julkaisuja : sarja b humaniora,-1 turun yliopiston julkaisuja sarja c : scripta lingua fennica edita,-1 turun yliopiston julkaisuja sarja d : medica-odontologica,-1 turun yliopiston kasvatustieteiden tiedekunta: julkaisusarja a tutkimuksia,-1 turun yliopiston maantieteen ja geologian laitoksen julkaisuja,-1 "turun yliopiston oikeustieteellisen tiedekunnan julkaisuja : a, yksityisoikeuden sarja",-1 turun yliopiston oikeustieteellisen tiedekunnan julkaisuja: a juhlajulkaisut,-1 turun yliopiston poliittisen historian raportteja,-1 turun yliopiston suomen kielen ja suomalais-ugrilaisen kielentutkimuksen oppiaineen julkaisuja,-1 turun ylioppilaslehti,-1 turvallisuus & riskienhallinta,-1 turvallisuustieteellinen yhdistys,-1 turāṯ,-1 turība university,-1 tushuguanxue yu zixun kexue,-1 tutkijaliiton julkaisusarja,-1 tutkijaliitto,1 tutkimuksesta tiiviisti,-1 tutkimukset,-1 tutkimuksia,-1 tutkimuksia,1 tutkimuksia - eläketurvakeskus,-1 tutkimuksia - kuntoutussäätiö,-1 "tutkimuksia : jyväskylän yliopisto, opettajankoulutuslaitos",-1 tutkimuksia : koulutuksen tutkimuslaitos,-1 tutkimuksia ja selvityksiä,-1 tutkimus & kritiikki,1 tutkimus (siirtolaisuusinstituutti),1 tutkimuseettisen neuvottelukunnan julkaisuja,-1 tutkimuskatsauksia,-1 tutkimusraportteja,-1 tutkimusraportti (lappeenrannan teknillinen yliopisto : tuotantotalouden laitos),-1 tutkimusraportti : lappeenrannan teknillinen yliopisto lut energia,-1 tutkimusselosteita,-1 tutkittua varhaiskasvatuksesta,-1 tutkiva hoitotyö,1 tutkiva sosiaalityö,-1 tutu e-julkaisuja,-1 tutu-julkaisuja,-1 tutulus,-1 tuuletus,-1 tuuli jylhä,-1 tuulilasi,-1 tuulivoima,-1 tuuloksen joulu,-1 tuuma,-1 tva-julkaisuja,-1 tvcr,-1 tvergastein,-1 tverskoj gosudarstvenny`j universitet,-1 tvz theologischer verlag,-1 twentieth century architecture,1 twentieth century british history,2 twentieth century communism: a journal of international history,1 twentieth century literature,2 twentieth-century china,1 twentieth-century literary criticism,-1 twentieth-century music,1 twi,-1 twin research and human genetics,1 "tyche : beitrage zur alten geschichte, papyrologie und epigraphik",2 tydskrif vir geesteswetenskappe,1 tydskrif vir letterkunde,1 tyndale bulletin,1 tyrrhenian international workshop on digital communications,-1 tyumen state university herald,-1 työ- ja elinkeinoministeriö,-1 työ- ja elinkeinoministeriön julkaisuja,-1 työelämän tutkimus,1 työelämän tutkimuspäivien konferenssijulkaisuja,-1 työn tuuli,-1 työoikeudellinen yhdistys ry,-1 työoikeudellisen yhdistyksen vuosikirja,1 työpapereita,-1 työpaperi,-1 työpoliittinen aikakauskirja,-1 työraportteja,-1 työtehoseura ry,-1 työterveyshoitaja,-1 työterveyslaitos,-1 työterveyslääkäri,-1 työväen historian ja perinteen tutkimuksen seura,1 työväenperinne - arbetartradition ry,-1 työväentutkimus,1 tzintzun : revista de estudios históricos,1 tájökológiai lapok,-1 társadalmi nemek tudománya interdiszciplináris efolyóirat,-1 társadalomtudományi kutatóközpont,-1 tähdet ja avaruus,-1 tähdistö,-1 tähtivaeltaja,-1 tärppi,-1 täydellinen ympyrä,-1 témoigner : entre histoire et mémoire,-1 tér és társadalom,1 történelmi szemle,1 töölöläinen,-1 tûrkologičeskie issledovaniâ,-1 türk mühendys ve mymar odalari byrlydy,-1 türkiye klinikleri diş hekimliği bilimleri,-1 türkiye klinikleri tıp bilimleri dergisi,-1 türük uluslararası dil edebiyat halkbilimi araştırmaları dergisi,1 tāyvīṭu,-1 tạp chí giáo dục kỹ thuật,-1 tạp chí khoa học pháp lý,-1 tạp chí luật học,-1 t’inkazos,-1 u press,1 u.porto journal of engineering,-1 ua editora,-1 ubc press,1 ubiquitous learning,1 "ubiquitous positioning, indoor navigation and location-based services",1 ubiquity press,-1 ubiquity proceedings,-1 uc irvine law review,-1 ucjc business and society review,1 ucl press,1 ucla encyclopedia of egyptology,1 ucla law review,2 ucopress,-1 ucs,-1 uddannelsehistorie,1 udenrigs,-1 udmurtskij gosudarstvenny`j universitet,-1 udruženje hrvatskih arhitekata,-1 udruženje za pravo osiguranja srbije,-1 uefdsa newspaper,-1 uga éditions,1 ugarit-forschungen: internationales jahrbuch fur die altertumskunde syrien-palaestinas,1 ugarit-verlag,-1 ugent,-1 ugeskrift for laeger,1 ugeskrift for retsvaesen,1 ugglan,1 ugo mursia editore,1 uhod-uluslararasi hematoloji-onkoloji dergisi,-1 uitgeverij boom,1 ukk-seuran vuosikirja,-1 uknowledge,-1 ukraine-analysen,-1 ukrainian biochemical journal,-1 ukrainian journal of ecology,1 ukrainian journal of physical optics,-1 ukrainian journal of physics,-1 ukrainian mathematical bulletin,1 ukrainian mathematical journal,1 ukraïnsʹkij botanìčnij žurnal,1 ukraì̈nsʹkiĭ antarktičniĭ žurnal,1 ukraïnsʹka akademìâ mistectva,-1 ukraïnsʹkij matematičnij žurnal,1 ukuli,-1 ulevaade haridussusteemi valishindamisest,-1 ulkoasiainministeriö,-1 ulkomaanlehtoriyhdistys ry,-1 ulkoministeriön julkaisuja,-1 ulkopoliittinen instituutti,-1 ulkopolitiikka,-1 ulmus,-1 ulrike helmer verlag,-1 ulster folklife,1 ulster institute for social research,-1 ultimate reality and meaning,1 ultramicroscopy,1 ultraschall in der medizin,1 ultrasonic imaging,1 ultrasonics,1 ultrasonics sonochemistry,1 ultrasound in medicine and biology,1 ultrasound in obstetrics and gynecology,2 ultrasound quarterly,1 ultrastructural pathology,1 ulusal travma ve acil cerrahi dergisi-turkish journal of trauma and emergency surgery,1 uluslararasi iliskiler-international relations,1 uluslararası tarım araştırmalarında yenilikçi yaklaşımlar dergisi,-1 uluslararası öğrenen toplum dergisi,-1 umanistica digitale,1 umeni-art,1 umeå universitet,-1 umeå universitet. institutionen för nordiska språk,-1 umjetnost rijeci,1 umweltpsychologie,-1 uncertain supply chain management,-1 unconventional resources,1 underground space,1 undersea and hyperbaric medicine,1 underwater acoustics conference and exhibition,-1 underwater technology,1 unep course series,1 unesco,-1 unesco chair on gender equality and women's empowerment - university of cyprus,-1 unfallchirurg,1 unge pædagoger,-1 unholan aitta,-1 uni-med verlag ag,-1 uni-press graz verlag,-1 unifepress,-1 uniform distribution theory,1 uniform law review,1 unigrafia oy,-1 union académique internationale,1 union of scientists in bulgaria,-1 union of the baltic cities commission on environment,-1 union seminary quarterly review,1 unipa press,-1 uniped,-1 unipress,-1 unisa press,1 unisono,-1 unit,-1 unitas fratrum,-1 united academics journal of social sciences,-1 united european gastroenterology journal,1 united nations,-1 united nations environment programme and the world health organization,-1 united nations university press,1 united press global,-1 united states department of agriculture forest service,-1 united states institute of peace press,1 uniuutiset,-1 univers enciclopedic,1 universal access in the information society,1 universal journal of accounting and finance,1 universal journal of agricultural research,-1 universal journal of applied science,-1 universal journal of educational research,1 universal journal of management,-1 universal journal of psychology,-1 universal journal of public health,1 universe,-1 universidad autónoma de barcelona,-1 universidad católica andrés bello,-1 universidad complutense de madrid,-1 universidad de buenos aires,1 universidad de burgos,-1 universidad de cantabria,-1 universidad de deusto,-1 universidad de guadalajara,-1 universidad de las artes,-1 universidad de las palmas de gran canaria,-1 universidad de los andes,-1 universidad de murcia,-1 universidad de nariño,-1 universidad de tarapacá,-1 universidad de valladolid,-1 universidad del azuay,-1 universidad externado de colombia,-1 universidad iberoamericana,-1 universidad jorge tadeo lozano,-1 universidad nacional autónoma de méxico,-1 universidad sergio arboleda,-1 universidad y empresa,-1 universidade catolica portuguesa do porto,-1 universidade da coruña,-1 universidade de brasília,-1 universidade de coimbra,-1 universidade de lisboa,-1 universidade de passo fundo,-1 universidade de santiago de compostela,-1 universidade do minho,-1 universidade do porto - reitoria,-1 universidade federal de santa catarina editora,1 universidade federal do amazonas,-1 universidade trás-os-montes e alto douro,-1 universita degli studi di salerno,-1 universita degli studi di torino,-1 universitas,1 universitas malikussaleh press,-1 universitas psychologica,-1 universitas studiorum,1 universitas: monthly review of philosophy and culture,1 universitat politècnica de catalunya,-1 universitatea babes-bolyai,1 universitatsverlag ilmenau,-1 universite de lorraine,-1 universiteit antwerpen,-1 universiteit utrecht,-1 universitetet i tromsø,-1 "universiteti ""polis""",-1 universitetsforlaget,1 "universitetsko izdatelstvo ""paisij hilendarski"" plovdiv",-1 universitetskoe upravlenie: praktika i analiz,-1 universiti putra malaysia press,-1 university college cork,-1 university college dublin,-1 university for peace,-1 university industry innovation network,-1 university museums and collections journal,1 university of akron press,1 university of alabama press,1 university of alaska press,1 university of alberta press,1 university of algarve,-1 university of arizona press,1 university of arkansas press,1 university of asia pacific journal of law & policy,1 university of aston,-1 university of bath,-1 university of belgrade,-1 university of birmingham press,1 university of bologna law review,-1 university of british columbia law review,1 university of british columbia press,1 university of calgary,-1 university of calgary press,1 university of california press,2 university of cambridge,-1 university of campinas,-1 university of cape town,-1 university of central lancashire,-1 university of chicago law review,2 university of chicago press,3 university of cincinnati law review,1 university of delaware press,1 university of dubrovnic,-1 university of exeter press,1 university of georgia press,1 university of glasgow,-1 university of greenwich department of architecture and landscape,-1 university of hawaii press,1 university of helsinki department of computer science: series of publications c,-1 university of hong kong,-1 university of hong kong : comparative education research centre,1 university of huddersfield,-1 university of iceland,-1 university of iceland press,1 university of illinois law review,1 university of illinois press,1 university of iowa press,1 university of kragujevac,-1 university of latvia press,1 university of ljubljana,-1 university of london press,1 university of macedonia,-1 university of madeira,-1 university of maine press,1 university of malta,-1 university of manitoba,-1 university of massachusetts press,1 university of michigan journal of law reform,1 university of michigan press,2 university of minnesota press,2 university of miskolc,-1 university of missouri press,1 university of namibia press,1 university of nebraska press,1 university of nevada press,1 university of new mexico press,1 university of new south wales law journal,1 university of new south wales press,1 university of newcastle upon tyne,-1 university of north carolina press,2 university of north texas press,1 university of notre dame press,1 university of nottingham,-1 university of novi sad,-1 university of oklahoma press,1 university of ottawa press,1 university of pennsylvania journal of international law,1 university of pennsylvania law review,2 university of pennsylvania press,2 university of pittsburgh law review,1 university of pittsburgh press,1 university of plymouth press,1 university of portsmouth,-1 university of pretoria,-1 university of primorska press,-1 university of puerto rico press,1 university of reading,-1 university of regina press,1 university of rochester press,1 university of salford,1 university of saskatchewan,-1 university of skövde,-1 "university of south australia - faculty of art, architecture & design",-1 university of south carolina press,1 university of split,-1 university of strathclyde publishing,-1 university of surrey : surrey business school,-1 university of szeged,-1 university of technology sydney,-1 university of tennessee press,1 university of texas press,1 university of the free state,-1 university of the west indies press,1 university of thessaly,-1 university of tokyo,-1 university of toronto law journal,1 university of toronto press,1 university of toronto quarterly,1 university of turku technical reports,-1 university of tyumen,-1 university of utah press,1 university of virginia press,1 university of wales press,1 university of warsaw journal of comparative law,-1 university of warsaw press,1 university of warwick,-1 university of washington press,1 university of waterloo,-1 university of western ontario,-1 university of western sydney,-1 university of westminster press,-1 university of wisconsin press,1 university of wollongong,-1 university of wolverhampton,-1 university of zadar,-1 university press bologna,-1 university press of america,1 university press of colorado,1 university press of eastern finland,-1 university press of florida,1 university press of kansas,1 university press of kentucky,1 university press of maryland,1 university press of mississippi,1 university press of new england,1 università degli studi di bergamo,-1 università degli studi di firenze,-1 università degli studi di messina,-1 università degli studi di modena e reggio emilia,-1 università degli studi di napoli l´orientale,-1 università degli studi roma tre,-1 università degli studi suor orsola benincasa,-1 università del salento,-1 università della svizzera italiana,-1 università di bologna,-1 universität bayreuth,-1 universität flensburg,-1 universität für bodenkultur wien universitätsbibliothek,-1 universität greifswald,-1 universität hamburg,-1 universität innsbruck,-1 universität osnabrück,-1 universität rostock,-1 universitäts-verlag webler,-1 universitätsbibliothek paderborn,-1 universitätsverlag der tu berlin,1 universitätsverlag göttingen,-1 universitätsverlag winter,2 université de liège,-1 université de nantes,-1 université des sciences et de la technologie houari boumedienne,-1 université du québec à montréal,-1 universum,-1 universus academic press,1 univerza na primorskem,-1 univerza v mariboru,-1 univerzita j. selyeho,-1 univerzita karlova,-1 univerzita konštantína filozofa,-1 univerzita mateja bela v banskej bystrici,-1 univerzita palackého v olomouci,-1 univerzitet u banjoj luci,-1 univerzitetni rehabilitacijski inštitut republike slovenije - soča,-1 "uniwersytet technologiczno-humanistyczny im. kazimierza pulaskiego w radomiu, wydawnictwo",-1 uniwersytet warmińsko-mazurski w olsztynie,-1 uniwersytet warszwski,-1 uniwersytet śląski,-1 uniwersytetu im. adama mickiewicza w poznaniu,-1 uniwersytetu mikolaja kopernika,1 unlikely,-1 unlv gaming research and review journal,1 unmanned systems,1 unterrichtswissenschaft,1 update: applications of research in music education,1 updates in surgery,-1 upes law review,-1 upgrade: the european journal for the informatics professional,1 upi briefing paper,-1 upi working papers,-1 upphandlingsrättslig tidskrift,-1 uppsala universitet,-1 upptecknaren,-1 upravlenec,-1 upravlenie zdravoohraneniem,1 upsala journal of medical sciences,1 upsala nya tidning,-1 ura,-1 ural'skii filologicheskii vestnik,-1 ural-altaische jahrbücher,2 ural`skij gosudarstvenny`j pedagogicheskij universitet,-1 uralica helsingiensia,1 uralisztikai tanulmányok,1 uralo-altajskie issledovanija,1 uralʹskij istoričeskij vestnik,1 urban & fischer,1 urban affairs review,2 urban anthropology and studies of cultural systems and world economic development,1 urban climate,1 urban design international,2 urban development issues,1 urban ecosystems,1 urban education,1 urban forestry and urban greening,2 urban forum,1 urban geography,2 urban history,3 urban history review-revue d histoire urbaine,1 urban informatics,1 urban lawyer,1 urban matters,-1 urban morphology,1 urban planning,1 urban planning and design research,1 urban policy and research,1 urban rail transit,1 urban research and practice,2 urban science,-1 urban studies,3 urban transcripts,1 urban transformations,1 urban water journal,1 "urban, planning and transport research",1 urbani izziv,1 urbanismisäätiö,-1 urbanistica,1 urbanities,1 urbanomic media,-1 urbaria summaries series,-1 urbe: brazilian journal of urban management,1 urheilu ja oikeus : urheiluoikeuden yhdistyksen jäsenlehti,-1 urisa journal,1 urjalan sanomat,-1 urogynecology,1 urolithiasis,1 urologe: ausgabe a,1 urologia fennica,-1 urologia internationalis,1 urologic clinics of north america,1 urologic oncology: seminars and original investigations,1 urologiia,-1 urology,1 urology annals,-1 urology journal,1 ursa,-1 ursan julkaisuja,-1 ursi general assembly and scientific symposium,1 ursi international symposium on electromagnetic theory,1 ursus,1 us wurk,1 us-china education review. a,-1 "us-china education review. b, education theory",-1 us-china foreign language,-1 us-china law review,-1 usa-china business review,-1 usage-based linguistic informatics,1 usda forest service: research papers pnw-rp,1 usenix : the advanced computing systems association,1 usenix security symposium,2 user experience & urban creativity,-1 user modeling and user-adapted interaction,3 ushus journal of business management,-1 uskonnontutkija,1 "uskonto, katsomus ja kasvatus",1 uskontotiede,-1 uspehi gerontologii,-1 uspìhi ì dosâgnennâ u naucì,-1 ustav pro ceskou literaturu,1 usuteaduslik ajakiri,1 utah state university press,1 utajärven kunta,-1 utb verlag,1 utbildning & lärande,1 utbildning och demokrati,1 utciencia,-1 utet,-1 utet libreria,-1 utilitas,2 utilitas mathematica,1 utilities law review,1 utilities policy,1 utopian studies,1 utrecht law review,1 utrip,-1 utukirjat,1 utzverlag gmbh,-1 uudenkaupungin merihistoriallisen yhdistyksen vuosikirja,-1 uudenmaan liiton julkaisuja e,-1 uudenmaan liitto,-1 uusi lahti,-1 uusi rovaniemi,-1 uusi suomi,-1 uusi teknologia,-1 uusi tie,-1 uusikirkko kanneljärvi,-1 uusimetsä,-1 uusio-uutiset,-1 uutis-jousi,-1 uutis-urho,-1 uutiset,-1 uutisjyvät,-1 uutisluotsi,-1 uutismedia verkossa,-1 uutisvuoksi,-1 uutta kunnista,-1 uutta vanhaa kulttuuriperinnöstä,-1 uv4plants bulletin,1 uvk verlagsgesellschaft,1 uvp-report,-1 uvsor,-1 uwm law review,1 uzbekistan journal of polymers,-1 učenye zapiski rossijskogo gosudarstvennogo socialʹnogo universiteta,1 učënye zapiski kazanskogo universiteta : seriâ estestvennye nauki,-1 učënye zapiski petrozavodskogo gosudarstvennogo universiteta,1 v & r unipress,1 v8-magazine,-1 vaarojen sanomat,-1 vaasan ammattikorkeakoulu,-1 "vaasan ammattikorkeakoulu, university of applied sciences publications : research reports",-1 "vaasan ammattikorkeakoulu, university of applied sciences publications c : other publications",-1 vaasan tiedekirjasto,-1 vaasan yliopisto,-1 vaasan yliopiston raportteja,-1 vaasan yliopiston tutkimuksia,-1 vaasan yritysinformaatio oy,-1 vaccimonitor,-1 vaccine,1 vaccine x,1 vaccines,-1 vacuum,1 vadose zone journal,1 vaikutuksessa-media,-1 vajra books,-1 vakgr maatsch gezondh,-1 vakki publications,1 valahian journal of historical studies,1 valamon luostari,-1 valamon luostarin julkaisuja,-1 valdaj,-1 valiz,-1 valkeakosken sanomat,-1 valkonauha,-1 valmentaja,-1 valo,-1 valoda: nozīme un forma,-1 valodas prakse: verojumi un ieteikumi,1 valokuvakeskus peri,-1 valokynä,-1 valtakunnallisen ohjausalan osaamiskeskuksen työpapereita,-1 valterin julkaisusarja,-1 valtion liikuntaneuvoston julkaisuja,-1 valtion nuorisoneuvoston julkaisuja,-1 valtion taloudellinen tutkimuskeskus,-1 valtioneuvoston julkaisuja,-1 valtioneuvoston kanslia,-1 valtioneuvoston kanslian julkaisuja,-1 valtioneuvoston selvitys- ja tutkimustoiminnan julkaisusarja,-1 valtiontalouden tarkastusviraston selvitykset,-1 valtiotieteellinen yhdistys,1 valtiotieteellisen tiedekunnan julkaisuja,-1 valtiovarainministeriö,-1 valtiovarainministeriön julkaisuja,-1 valtra team,-1 valuation studies,1 value in health,2 value in health regional issues,-1 van schaik publishers,-1 van schools tot scriptie,-1 vanavaravedaja,-1 vanden broele,1 vandenhoeck & ruprecht,2 vanderbilt journal of transnational law,2 vanderbilt law review,2 vanderbilt university press,1 vanhustyö,-1 vanhustyön keskusliitto,-1 vann,1 vantaa-seura : vandasällskapet ry,-1 vantaan kaupunki,-1 vapaa ajattelija,-1 vapaa-ajan kalastaja,-1 vapaan sivistystyön yhteisjärjestö,-1 vapaasanakirja,-1 vapaussoturi,-1 varhaiskasvatuksen erityisopettaja,-1 varia história,1 variaciones borges,1 variants: the journal of the european society for textual scholarship,1 varrak as,-1 varsinais-suomen sotaveteraanin joulu,-1 varsinais-suomen yrittäjä,-1 vartija-aikakauslehden kannatusyhdistys r.y.,-1 varðin,-1 vasa: european journal of vascular medicine,1 vascular,1 vascular and endovascular surgery,1 vascular biology,-1 vascular cell,1 vascular health and risk management,1 vascular medicine,1 vascular pharmacology,1 vasi szemle,-1 vasomed,-1 vastapaino,2 vasto,-1 vastuullinen tiede,-1 vastuullisen tieteen julkaisusarja,-1 vatt muistiot,-1 vatt working papers,-1 vatt-tutkimuksia,-1 vavilovskoe obsestvo genetikov i selekcionerov,-1 värmland förr och nu,-1 vcot open,-1 vde verlag,1 vdf hochschulverlag ag an der eth zürich,1 vdi verlag gmbh,-1 vdi-berichte,-1 vdm verlag dr. müller,-1 vdr beitrage zur erhaltung von kunst- und kulturgut,1 vecchiarelli,-1 vector,-1 vector-borne and zoonotic diseases,1 veda,-1 vedams books,1 vegetation history and archaeobotany,2 vegetos,-1 vehicle system dynamics,1 vehicles,-1 vehicular communications,1 vehits,-1 veikko,-1 veins and lymphatics,-1 veleia,1 veleučilište velika gorica,-1 vellikuppi,-1 vene,-1 venngeist,-1 "ventil - journal for hydraulics, automation and mechatronics",-1 ventspils augstskola,-1 venture capital,1 ventus publishing,-1 verba: anuario galega de filoloxia,2 verbrecher verlag,-1 verbum,1 verbum et ecclesia,1 verbum vitae,1 verde,-1 verdier,-1 verein für betriebswirtschaftlichen wissenstransfer des fachbereichs betriebswirtschaft e.v.,-1 verfassung und recht in übersee,-1 verfassungsblog,-1 vergentis,-1 vergilius,1 verhaltenstherapie,1 verifiche,1 veritas,-1 verkkari,-1 verkkolehti lahtinen,-1 verkkouutiset,-1 verkundigung und forschung,1 verlag anton saurwein,1 verlag barbara budrich,1 verlag bauer & raspe,-1 verlag bertelsmann stiftung,-1 verlag der carl friedrich von wiezsäcker stiftung,-1 verlag der technischen universität graz universitätsbibliothek,-1 verlag der österreichischen akademie der wissenschaften,1 verlag des römisch-germanischen zentralmuseums,1 verlag dr. köster,1 verlag empirische pädagogik,1 verlag fassbaender,1 verlag für geschichte und kultur,-1 verlag für gesprächsforschung,-1 verlag für polizeiwissenschaft,1 verlag hans huber,1 verlag holler,-1 verlag julius klinkhardt,1 verlag karl alber,1 verlag marie leidorf,1 verlag otto sagner,1 verlag philipp von zabern,1 verlag rüegger zürich,1 verlag schnell und steiner,1 verlag vorwerk 8,1 verlag wissenschaftliche scripten,-1 verlagsgruppe beltz,1 vernacular architecture,1 vernon press,1 vero?ffentlichungen des instituts fu?r europa?ische geschichte mainz : abteilung universalgeschichte : beiheft,1 veroffentlichungen des instituts fur europaische geschichte mainz: abteilung universalgeschichte und abteilung für abendlaendische religionsgeschichte,1 verotus,1 versants: revue suisse des littératures romanes,1 verslagen en mededelingen van de koninklije academie voor nederlandse taal- en letterkunde,1 verslagen van het centrum voor genderstudies - u gent,-1 verso,-1 verso,2 versus,-1 vertebrate zoology,1 vertice,1 vertimo studijos,1 vervuert verlag,1 veröffentlichungen der universität duisburg-essen,1 vesi- ja viemärilaitosyhdistyksen monistesarja,-1 vesi- ja viemärilaitosyhdistys ry,-1 vesilaitosyhdistys ry.,-1 vesiposti,-1 vesitalous,-1 vesnik grodzenskaga dzâržaǔnaga unìversìtèta ìmâ ânkì kupaly,-1 vest-agder-museet kristiansand,-1 vestnik ?elâbinskogo gosudarstvennogo universiteta. seriâ filosofiâ. sociologiâ. kul’turologiâ,1 vestnik arhivista,-1 vestnik burâtskogo gosudarstvennogo universiteta,-1 vestnik drevnij istorii,1 vestnik evropy,-1 vestnik mezhdunarodnih organizatsii,1 vestnik moskovskogo gosudarstvennogo lingvisticheskogo universiteta serija jazykoznanie,1 vestnik moskovskogo gosudarstvennogo tehničeskogo universiteta imeni n.è. baumana. seriâ estestvennye nauki,-1 vestnik moskovskogo universiteta : seria 22 : teorija perevoda,1 vestnik moskovskogo universiteta : seriâ 2 himiâ,-1 vestnik moskovskogo universiteta : seriâ 5 geografiâ,-1 vestnik moskovskogo universiteta. serija 10 zhurnalistika,1 vestnik moskovskogo universiteta. serija 9. filologija,1 vestnik moskovskogo universiteta. seriâ 19. lingvistika i mežkulʹturnaâ kommunikaciâ,1 "vestnik moskovskogo universiteta: seriâ, filosofiâ",-1 vestnik moskovskovo universiteta. serija 21. upravlenija,1 vestnik novosibirskogo gosudarstvennogo pedagogi?eskogo universiteta,-1 vestnik novosibirskogo gosudarstvennogo universiteta,1 vestnik obshestvennogo mnenija,-1 vestnik ohotovedeniâ,-1 vestnik omskogo gosudarstvennogo pedagogičeskogo universiteta.,-1 vestnik permskogo universiteta : politologiâ,-1 vestnik permskogo universiteta. istoriâ,1 vestnik permskogo universiteta. rossijskaâ i zarubežnaâ filologiâ,1 vestnik polesskogo gosudarstvennogo universiteta : seriâ prirodovedčeskih nauk,-1 vestnik pravoslavnogo svâto-tihonovskogo gumanitarnogo universiteta. seriâ v. voprosy istorii i teorii hristianskogo iskusstva,1 vestnik rggu,1 vestnik rossiiskoi akademii nauk,1 vestnik rossijskij fond fundamentalnyh issledovanij,-1 vestnik rossijskogo universiteta družby narodov,-1 vestnik rossijskogo universiteta družby narodov,1 vestnik rossijskogo universiteta družby narodov. seriâ èkonomika,1 vestnik rudn,-1 vestnik samarskogo gosudarstvennogo tehničeskogo universiteta. seriâ: fiziko-matematičeskie nauki,-1 vestnik sankt-peterburgskogo universiteta : meždunarodnye otnošeniâ,1 vestnik sankt-peterburgskogo universiteta : seriâ 8 : menedzment,-1 vestnik sankt-peterburgskogo universiteta : seriâ istoriâ,1 vestnik sankt-peterburgskogo universiteta : vostokovedenie i afrikanistika,-1 vestnik sankt-peterburgskogo universiteta kulʹtury i iskusstv,-1 "vestnik sankt-peterburgskogo universiteta. seriâ 5, èkonomika",1 "vestnik sankt-peterburgskogo universiteta. seriâ 6. filosofiâ, kulturologiâ, politologiâ, pravo, meždunarodnye otnošeniâ",-1 "vestnik sankt-peterburgskogo universiteta. seriâ 7, geologiâ, geografiâ",-1 vestnik sankt-peterburgskogo universiteta. âzyk i literatura,1 vestnik saratovskoj gosudarstvennoj ûridi?eskoj akademii,-1 "vestnik severo-vostočnogo federalʹnogo universiteta imeni m.k. ammosova seriâ ""nauki o zemle""",-1 vestnik slavânskih kulʹtur,1 vestnik st. petersburg university: mathematics,-1 vestnik syktyvkarskogo universiteta : seriâ gumanitarnyh nauk,-1 vestnik tomskogo gosudarstvennogo universiteta,-1 vestnik tomskogo gosudarstvennogo universiteta : filologija,1 "vestnik tomskogo gosudarstvennogo universiteta. filosofiâ, sociologiâ, politologiâ",1 vestnik tverskogo gosudarstvenngo universiteta. seriia: istoriia,-1 "vestnik tverskogo gosudarstvennogo universiteta. seriâ, pedagogika i psihologiâ",-1 "vestnik udmurtskogo universiteta : sociologiâ, politologiâ, meždunarodnye otnošeniâ",1 vestnik volgogradskogo gosudarstvennogo universiteta,-1 "vestnik volgogradskogo gosudarstvennogo universiteta. seriâ 4. istoriâ, regionovedenie, meždunarodnye otnošeniâ",1 vestnik vâtskogo gosudarstvennogo universiteta,-1 vestnik èkonomičeskoj teorii,-1 vestnik ûžno-uralʹskogo gosudarstvennogo universiteta : seriâ pravo,-1 vestnik čerepoveckogo gosudarstvennogo universiteta,-1 vesuviana,1 vetenskapssocieteten i lund,-1 veterinaria,-1 veterinaria,1 veterinaria italiana,1 veterinarija ir zootechnika,1 veterinariâ segodnâ,-1 veterinarni medicina,1 veterinarska stanica,-1 veterinarski arhiv,1 veterinary anaesthesia and analgesia,2 veterinary and animal science,1 veterinary and comparative oncology,1 veterinary and comparative orthopaedics and traumatology,1 veterinary clinical pathology,1 veterinary clinics of north america: equine practice,1 veterinary clinics of north america: food animal practice,1 veterinary clinics of north america: small animal practice,1 veterinary dermatology,1 veterinary economics,1 veterinary immunology and immunopathology,2 veterinary journal,3 veterinary medicine,-1 veterinary medicine,1 veterinary medicine and science,1 veterinary microbiology,3 veterinary ophthalmology,1 veterinary parasitology,2 veterinary parasitology x,1 veterinary parasitology. regional studies and reports,1 veterinary pathology,2 veterinary practitioner,1 veterinary quarterly,2 veterinary radiology and ultrasound,1 veterinary record,1 veterinary record case reports,1 veterinary record open,1 veterinary research,3 veterinary research communications,1 veterinary sciences,-1 veterinary sciences tomorrow,1 veterinary surgery,1 vetnet conference series,1 vetus testamentum,3 vetus testamentum et hellas,1 vgb powertech,-1 vi hörs,-1 via latgalica,1 via university college,-1 via@,-1 viaggiatori,-1 vial: vigo international journal of applied linguistics,1 viator : medieval and renaissance studies,3 vibration,-1 vibrational spectroscopy,1 vibroengineering procedia,1 viceversa,-1 vichiana,1 victims and offenders,1 victoria business school,-1 victorian journal of home economics,-1 victorian literature and culture,2 victorian periodicals review,1 victorian poetry,3 victorian review,1 victorian studies,1 victorians,1 victorians institute journal,1 victorina press,-1 vidarforlaget as,1 vide. tehnoloģija. resursi,-1 video journal of education and pedagogy,-1 videosurgery and other miniinvasive techniques,1 vidyodaya journal of management,-1 vidzemes augstskola,-1 vie et milieu-life and environment,1 viella,1 vienna academic press,-1 vienna circle institute yearbook,1 vienna online journal on international constitutional law,1 vienna university press,1 vienna yearbook of population research,-1 viento sur,-1 vierteljahresschrift fur sozial und wirtschaftsgeschichte,1 vierteljahresschrift für heilpädagogik und ihre nachbargebiete,1 vierteljahrshefte fur zeitgeschichte,3 vierteljahrsschrift für wissenschaftliche pädagogik,1 viesoji politika ir administravimas,1 viesti,-1 viesti-vesti,-1 viestimies : viestiupseeriyhdistyksen julkaisu,-1 viestin,-1 viestinnän tutkimusraportteja,-1 viestintätoimisto kirjokansi,-1 vietnam journal of computer science,1 vietnam journal of earth sciences,1 vietnam journal of mathematics,1 vietnam journal of science and technology,-1 vietnamese journal of legal sciences,1 view,-1 viewz,-1 vigiliae christianae,3 viherpiha,-1 viherympäristö,-1 vihreä lanka,-1 vihreä sivistysliitto ry,-1 viinikkala,-1 viinilehti,-1 viipurin pitäjäläinen,-1 viipurin suomalaisen kirjallisuusseuran toimitteita,1 viisari,-1 viisas raha,-1 viiskunta,-1 viispiikkinen,-1 viitasaaren joulu,-1 viitasaaren seutu,-1 vikalpa,-1 vikerkaar,-1 viking,1 viking and medieval scandinavia,1 vikingeskibsmuseet,-1 villa lanten ystävät ry,-1 villi,-1 vilniaus dailės akademijos leidykla,-1 vilniaus kolegija,-1 vilnius university,-1 vimpelin joulu,-1 vindobona journal of international commercial law and arbitration,1 vindögat,-1 vine journal of information and knowledge management systems,1 vingtieme siecle-revue d'histoire,1 vinnova,-1 violence against women,2 violence and victims,1 viral immunology,1 virchows archiv,1 virginia journal of international law,1 virginia journal of law and technology,-1 virginia law review,2 virginia quarterly review,1 virginia tax review,1 virginia tech publishing,-1 virikkeitä,-1 virittäjä,2 virke,-1 viro,-1 virologica sinica,1 virologie,1 virology,1 virology journal,1 virtain joulu,-1 virtual and physical prototyping,1 virtual conference human and social sciences at the common conference,-1 virtual creativity,1 virtual reality,2 virtual worlds,-1 virtus,1 virtus interpress,1 virulence,1 virus evolution,1 virus genes,1 virus research,1 viruses,-1 vis,1 visceral medicine,1 visible language,1 visigrapp,1 visio: la revue de l association internationale de semiotique visuelle,1 vision,1 vision research,1 vision tecnologica,1 visions for sustainability,1 visions of research in music education,1 visionääri,-1 visitor studies,1 visnik dnipropetrovskogo universitetu : seria menedzment innovacij,-1 visoka šola za zdravstvene vede slovenj gradec,-1 visor,-1 visual anthropology,2 visual anthropology review,1 visual arts research,1 visual cognition,1 visual communication,2 visual communication quarterly,1 visual communications and image processing,1 visual computer,1 "visual computing for industry, biomedicine, and art",1 visual culture and gender,1 visual culture in britain,1 visual ethnography,1 visual impairment research,1 visual informatics,1 visual inquiry,-1 visual intelligence,1 visual methodologies,1 visual neuroscience,1 visual resources: an international journal of documentation,1 visual studies,2 visual:design:scholarship,1 viszeralmedizin,1 vita e pensiero,1 vita traductiva,1 vitamins and hormones series,1 vitark: acta archaeologica nidrosiensia,1 vitis,1 vitriini,-1 vittorio klostermann,2 vivarium: an international journal for the philosophy and intellectual life of the middle ages and renaissance,2 vivlīoḟika,1 vizantiski vremennik,1 viðskiptafræðideild hí,-1 vjesnik za arheologiju i povijest dalmatinsku,1 vk-kustannus oy,-1 vlaams diergeneeskundig tijdschrift,1 vladimirskij gosudarstvenny`j universitet,-1 vlast,1 vlc arquitectura,1 vldb journal,3 vlsi design,1 vocations and learning,2 vocifuoriscena,-1 vodenje v vzgoji in izobraževanju,-1 voenno-istoricheskii zhurnal,1 voices,1 voima,-1 voima ja käyttö,-1 voimaa ruuasta,-1 voimistelu,-1 voix et images,1 vojenské rozhledy,-1 volcanica,1 volgogradskij gosudarstvenny`j universitet,-1 volkskunde,1 volta review,1 voltaire foundation,1 volumina.pl daniel krzanowski,-1 voluntary sector review,1 voluntas,1 volupté,1 von gunten & co. ag buch & netz,-1 voprosy atomnoj nauki i tehniki : seriâ âderno-fizičeskie issledovaniâ,1 voprosy ekonomiki i prava,-1 voprosy filologii,1 voprosy filologii i mežkulʹturnoj kommunikacii: naučnye issledovaniâ i praktičeskie rešeniâ,-1 voprosy filosofii,1 voprosy istorii,2 voprosy kognitivnoj lingvistiki,1 voprosy kul?turologii,1 voprosy literatury,2 voprosy materialovedeniâ,-1 voprosy obrazovanija,-1 voprosy onomastiki,1 voprosy psikholingvistiki,1 voprosy psikhologii,1 voprosy shkolnoj i universitetskoj mediciny i zdorovja,-1 voprosy teatra,-1 voprosy yazykoznaniya,3 voprosy âzykovogo rodstva,1 vorgange,1 voronezh state university,-1 vostochnaja literatura,-1 vostochnaya literatura,1 vox,1 vox latina,-1 vox patrum,1 vox romanica,1 vox sanguinis,1 völkerrechtsblog,-1 vrin,1 vs,1 vsb - technical university of ostrava,-1 vsp international science publishers,1 vtt,-1 vtt research highlights,-1 vtt science,-1 vtt technology,-1 vtt visions,-1 vu uitgeverij,-1 vulkan,-1 vulnerable children and youth studies,1 vulnerable groups and inclusion,1 vuorimiesyhdistys ry,-1 vuosi,-1 vuosikirja,-1 vuosilusto,1 vuzf review,-1 vvm,-1 vvs : värme- och sanitetsteknikern,-1 vysoká škola ekonomická - nakladatelství oeconomica,-1 vysoká škola výtvarných umení,-1 vytauto didžiojo universitetas,-1 vzdělávání dospělých ....,-1 väestöliitto,-1 väestöntutkimuslaitoksen julkaisusarja d,-1 vähähaaran vuosikirja,-1 vähäisiä lisiä,-1 väkevä,-1 väki voimakas,1 värillä,-1 värt att veta,-1 västra nyland,-1 väyläkirjat,-1 väyläviraston julkaisuja,-1 väyläviraston tutkimuksia,-1 vård i fokus,-1 vårt försvar,-1 vårt riddarhus,-1 vìsnik dnìpropetrovsʹkogo unìversitetu. serìâ socìalʹnì komunìkacìï,-1 "vìsnik harkìvs?kogo nacìonal?nogo unìversitetu ìmenì v.n. karazìna. serìâ fìzi?na âdra, ?astinki, polâ",-1 vìsnik lvìvskogo unìversitetu : serìâ mìžnarodnì vìdnosini,-1 vìsnik lʹvìvsʹkogo unìversitetu : serìâ ekonomična,-1 vìsnik unìversitetu ìm. a. nobelâ. serìâ fìlologìčnì nauki,1 võro instituudi toimõtisõq,1 võru instituut,-1 w-album,-1 w. bertelsmann verlag,-1 w.w. norton,1 waanders,1 wacana,1 wachholtz verlag,-1 wader study,1 waffen-und kostumkunde,1 wagadu: a journal of transnational womens and gender studies,1 wageningen academic publishers,1 wageningen university,-1 wagneriaani,-1 wagnerspectrum,1 waikato law review,1 wakayama tourism review,-1 wallflower press,1 wallstein verlag,2 walt whitman quarterly review,1 walter & duncan gordon foundation,-1 war and society,1 war in history,2 warasan phasa lae wattanatam kaoli sueksa,-1 warasan prachakron lae sangkhom,-1 warasan technology suranaree,-1 warasan wichai sahawitthayakan thai,-1 "warasan witsawakammasat, chulalongkorn university",-1 warburg institute,-1 warelia,-1 warkauden lehti,-1 wasabladet,-1 wasafiri,-1 waseda working papers in elf,-1 washington law review,1 washington quarterly,1 washington state university press,1 wasmuth,1 wasserwirtschaft,1 waste and biomass valorization,1 waste management,3 waste management and research,1 waste management bulletin,1 water,-1 water air and soil pollution,1 water alternatives,1 water and environment journal,1 water asset management international,-1 water biology and security,1 water economics and policy,1 water emerging contaminants & nanoplastics,1 water environment research,1 water history,1 water international,1 water policy,1 water practice and technology,1 water quality research journal of canada,1 water research,3 water research x,1 water resources,1 water resources and economics,1 water resources and industry,1 water resources management,1 water resources research,3 water reuse,1 water sa,1 water science,1 water science and engineering,1 water science and technology,1 water science and technology: water supply,1 water security,1 waterbirds,1 waterhill publishing,-1 waterlat-gobacit network working papers,-1 waterlines,1 watershed ecology and the environment,1 watson publishing international,1 wave motion,1 wavelets and sparsity conference,-1 waves in random and complex media,1 waxmann,1 wayeb,-1 wayne state university press,1 wear,3 wearable technologies,1 weather,1 weather and climate dynamics,1 weather and climate extremes,1 weather and forecasting,1 "weather, climate, and society",1 weaver press,1 web ecology,1 web intelligence,1 webist,-1 weblaw,-1 webology,1 wedge entomological research foundation,-1 weed biology and management,1 weed research,1 weed science,1 weed technology,1 weekendavisen,-1 weekly epidemiological record,-1 wehrhahn verlag,1 weidler buchverlag,1 weimarer beitrage,2 welding and cutting,1 welding in the world,2 welding international,1 welding journal,1 welhoja verkossa,-1 well played,-1 "wellbeing, space and society",1 wellcome open research,-1 welsh academic press,1 welsh history review,1 welsh writing in english: a yearbook of critical essays,1 welttrends,-1 wenyi lilun yanjiu,-1 werkstatt geschichte,-1 werkstattreihe deutsch als fremdsprache,1 werner hülsbusch,-1 wesleyan university presss,1 wessmans musikförlag,-1 west 86th,2 west africa review,1 west asian journal of speech and language pathology,-1 west european politics,3 west indian medical journal,1 west virginia university press,1 westarp verlagsservicegesellschaft,1 westburn publishers,1 westend,-1 westensee-verlag,-1 westerly,-1 western american literature,1 western europe,-1 western folklore,2 western historical quarterly,1 western humanities review,1 western journal of communication,1 western journal of emergency medicine,1 western journal of nursing research,1 western north american naturalist,1 western pacific surveillance response journal,1 westfälisches dampfboot,1 westminster john knox press,1 westminster papers in communication and culture,1 westphalia press,1 westview press,1 wetlands,1 wetlands ecology and management,1 wfb wirtschaftsförderung bremen gmbh,-1 wgn,-1 whatever,1 white horse press,1 whiteness and education,1 whiting & birch,-1 whittles publishing,1 who regional office for europe,-1 who south-east asia journal of public health,-1 who technical report series,1 wi : journal of mobile media,-1 wiadomo?ci konserwatorskie,-1 wiadomosci archeologiczne,1 wiadomosci chemiczne,-1 wiborgs nyheter,-1 wicazo sa review: a journal of native american studies,1 widening participation and lifelong learning,1 widerscreen,1 widmaier verlag,-1 widok,1 wiener beiträge zur alten geschichte online,-1 wiener humanistische blätter,1 wiener jahrbuch fur philosophie,1 wiener klinische wochenschrift,1 wiener medizinische wochenschrift,-1 wiener slawistischer almanach,1 wiener studien,3 wiener studien zur skandinavistik,1 wiener zeitschrift fur die kunde des morgenlandes,1 wiener zeitschrift für interdisziplinäre islamforschung,-1 wiener zeitschrift zur geschichte der neuzeit,1 wies i rolnictwo,-1 wil proceedings,-1 wilderness and environmental medicine,1 wildfowl,1 wildlife biology,1 wildlife monographs,2 wildlife research,1 wildlife society bulletin,1 wiley interdisciplinary reviews : data mining and knowledge discovery,1 wiley interdisciplinary reviews-computational molecular science,1 wiley interdisciplinary reviews. developmental biology,1 wiley interdisciplinary reviews. membrane transport and signaling,-1 wiley interdisciplinary reviews. rna,1 wiley interdisciplinary reviews: climate change,1 wiley interdisciplinary reviews: cognitive science,1 wiley interdisciplinary reviews: energy and environment,1 wiley interdisciplinary reviews: nanomedicine and nanobiotechnology,1 wiley-blackwell,2 wiley-ieee press,1 wiley-iste,2 wiley-vch verlag,2 wilfrid laurier university press,1 wilhelm fink verlag,2 wilkie collins society journal,1 "will-zocholl, mascha, prof. und annette kämpf-dern",-1 willan publishing,1 willdenowia,1 william & mary policy review,-1 william and mary quarterly,2 william carey library,1 william james studies,1 wilson journal of ornithology,1 wiltshire archaeological and narural history magazine,1 wind and structures,1 wind energy,2 wind energy science,1 wind engineering,1 windsor review of legal and social issues,1 winterblommor,-1 winterthur portfolio : a journal of american material culture,2 wip wirtschaft und infrastruktur gmbh & co. planungs kg,-1 wipf & stock publishers,-1 wire journal international,-1 wired,-1 wireless advanced,-1 wireless communication and applications,-1 wireless engineering and technology,-1 wireless innovation forum european conference on communications technologies and software defined radio,-1 wireless networks,1 wireless personal communications,1 wireless sensor network,-1 wireless telecommunications symposium,-1 wireless world research forum meeting,-1 wires : forensic science,-1 wires computational statistics,1 wires. water,1 wirkendes wort,2 wirtschaft und management,-1 wirtschaft und wettbewerb,1 wisconsin international law journal,1 wisconsin law review,1 wisdom letters,1 wissenschaftliche buchgesellschaft,1 wissenschaftliche untersuchungen zum neuen testament,3 wissenschaftliche untersuchungen zum neuen testament : reihe 2,3 wissenschaftlicher kommissionsverlag,-1 wissenschaftlicher verlag trier,1 wissenschaftsverlag vauk kiel,1 wit press,1 wit transactions on ecology and the environment,-1 wit transactions on engineering sciences,1 wit transactions on the built environment,-1 witherby publishing group,1 wits university press,1 wittgenstein-studien,1 witwatersrand university press,1 więź,-1 wmu journal of maritime affairs,1 wochenblatt fur papierfabrikation,1 wochenschau,-1 wohlers associates,-1 wolfenbuetteler abhandlungen zur renaissanceforschung,1 wolfenbutteler barock-nachrichten,1 wolfenbutteler renaissance mitteilungen,1 "wolkersdorfer, karoline : wolke events",-1 wolkowicz editores,-1 wolters kluwer,1 wolters kluwer čr,-1 womans art journal,1 women and birth,1 women and children nursing,-1 women and criminal justice,1 women and health,1 women and language,1 women and music: a journal of gender and culture,1 women and performance: a journal of feminist theory,1 women and therapy,1 women in french studies,1 women in judaism: a multidisciplinary journal,1 women in sport and physical activity journal,1 women's health,1 women's history review,2 women's midlife health,1 women's reproductive health,1 women's studies in communication,1 women: a cultural review,1 women`s history magazine,1 womens health issues,1 womens philosophy review,1 womens rights law reporter,1 womens studies,1 womens studies international forum,1 womens studies quarterly,1 womens writing,1 wonca europe,-1 wood and fiber science,1 wood flooring asia,-1 wood material science and engineering,1 wood research,1 wood science and technology,1 woodema,-1 woodhead publishing,1 word,1 word and image,2 word and music studies,1 word structure,2 wordsworth circle,1 work and occupations,3 work and stress,3 work based learning in primary care,1 work employment and society,3 work in the global economy,1 "work organisation, labour and globalisation",1 "work, aging and retirement",2 work: a journal of prevention assessment and rehabilitation,1 workforce education forum,-1 working conference on human work interaction design,-1 working paper,-1 working paper series,-1 working papers,-1 "working papers : lund university, department of linguistics",-1 working papers in european language diversity,-1 working papers in language pedagogy,-1 working with older people,-1 workplace,1 workplace health and safety,1 "workshop on bytecode semantics, verification, analysis and transformation",-1 workshop on circuits and systems for medical and environmental applications,-1 workshop on corporate governance : eiasm,-1 workshop on cyclostationary systems and their applications,-1 workshop on detection and classification of acoustic scenes and events,1 workshop on eye tracking and visualization,-1 workshop on field-coupled nanocomputing,-1 workshop on geographic information observatories,-1 "workshop on hyperspectral image and signal processing, evolution in remote sensing",-1 workshop on information processing and control,-1 workshop on information theoretic methods in science and engineering,-1 workshop on mobile software engineering,-1 workshop on non-classical models of automata and applications,1 workshop on planning and robotics,-1 "workshop on positioning, navigation, and communication",1 workshop on power-aware computing and systems,-1 workshop on privacy enhancing tools,-1 workshop on research in the large,-1 workshop on securing and trusting internet names,-1 workshop on strategic human resource management,-1 workshop on the experience of and advances in developing dependable systems in event-b,-1 world,-1 "world academy of science, engineering and technology",-1 "world academy of science, engineering and technology proceedings",-1 world affairs,-1 world affairs,1 world affairs press,-1 world animal review,1 world applied sciences journal,-1 world archaeology,3 world art,1 world bank economic review,1 world bank research observer,1 world competition: law and economics review,1 world congress in industrial process tomography,-1 world congress on computer applications and information systems,-1 world congress on engineering and computer science,-1 world congress on information and communication technologies,-1 world congress on intelligent control and automation,-1 world congress on internet security,-1 world congress on medical and health informatics,1 world congress on multimedia and computer science,-1 world congress on nature and biologically inspired computing,1 world council of churches publications,-1 world development,3 world development perspectives,1 world development sustainability,1 world economic review,1 world economics: the journal of current economic analysis and policy,1 world economy,1 world electric vehicle journal,-1 world engineering education flash week,-1 world englishes,2 world federation of occupational therapists bulletin,1 world film locations,-1 world financial review,-1 world forestry congress,-1 world futures review,1 world futures: the journal of general evolution,1 world health,-1 world health organization,-1 world history connected,1 world journal for pediatric and congenital heart surgery,-1 world journal of biological psychiatry,1 world journal of cardiology,-1 world journal of cardiovascular diseases,-1 world journal of clinical cases,-1 world journal of clinical oncology,-1 world journal of computer application and technology,-1 world journal of diabetes,1 world journal of education,-1 world journal of emergency surgery,2 world journal of engineering,1 world journal of engineering and technology,-1 world journal of english language,-1 "world journal of entrepreneurship, management and sustainable development",1 world journal of environmental research,-1 world journal of experimental medicine,1 world journal of gastroenterology,-1 world journal of gastrointestinal surgery,-1 world journal of mechanics,-1 world journal of methodology,-1 world journal of microbiology and biotechnology,1 world journal of neuroscience,-1 world journal of nuclear medicine,1 world journal of nuclear science and technology,-1 world journal of ophthalmology,-1 world journal of orthopedics,1 world journal of otorhinolaryngology,-1 world journal of otorhinolaryngology-head and neck surgery,-1 world journal of pediatric surgery,1 world journal of pediatrics,1 world journal of pharmacology,1 world journal of psychiatry,-1 world journal of radiology,-1 world journal of social sciences,-1 world journal of surgery,1 world journal of surgical oncology,1 world journal of urology,2 world journal of vat/gst law,1 world journal on educational technology,-1 world leisure journal,1 world literature studies,-1 world literature today,2 world medical & health policy,1 world mycotoxin journal,1 world neurosurgery,1 world neurosurgery x,-1 world of media,-1 "world of metallurgy, erzmetall",-1 "world of mining, surface, underground",-1 world of music,2 world of the news,-1 world oil,-1 world oil trade,1 world patent information,1 world pipelines,-1 world policy journal,1 world political science review,1 world politics,3 world psychiatry,3 world publishing audio-video & electronic press,1 world publishing corporation,-1 world rabbit science,1 world resources,1 "world review of entrepreneurship, management and sustainable development",1 world review of intermodal transportation research,1 world review of political economy,1 world science,-1 world scientific,1 world scientific proceedings series on computer engingeering and information science,1 world social psychiatry,1 world social sciences exchange,-1 world studies in education,1 world sustainable energy days,-1 world symposium on computer networks and information security,-1 world tax journal,3 world today,1 world trade and arbitration materials,1 world trade review,1 world transactions on engineering and technology education,1 world transport policy and practice,1 world water policy,1 world wide web-internet and web information systems,1 world yearbook of education,1 worlds poultry science journal,1 worldviews on evidence-based nursing,2 "worldviews: environment, culture, religion",1 worldwide hospitality and tourism themes,1 worldwide microsoft dynamics academic preconference,-1 worldwide waste,1 worms verlag,-1 worship,1 wound management & prevention,1 wound repair and regeneration,1 wounds: a compendium of clinical research and practice,1 wörterbücher zur sprach- und kommunikationswissenschaft online,-1 writing & pedagogy,1 writing in education,-1 writing systems research,1 writing technologies,1 writingplace,1 writings from the finnish academy of fine arts,-1 writings on dance,1 written communication,3 written language and literacy,1 "wroclaw review of law, administration & economics",-1 wseas international conference on computer engineering and applications,-1 wseas press,-1 wseas transactions on advances in engineering education,-1 wseas transactions on biology and biomedicine,1 wseas transactions on communications,-1 wseas transactions on computer research,-1 wseas transactions on computers,-1 wseas transactions on environment and development,1 wseas transactions on heat and mass transfer,-1 wseas transactions on information science and applications,-1 wseas transactions on mathematics,-1 wseas transactions on signal processing,-1 wseas transactions on systems,-1 wseas transactions on systems and control,-1 wsi-mitteilungen,1 wsoy,-1 wspolczesna onkologia-contemporary oncology,1 wtm-verlag,1 wuhan university press,-1 wulfenia,-1 wunderkammer press,-1 wurzburger jahrbucher fur die altertumswissenschaft,1 wydawnictwa uniwersytetu warszawskiego,-1 wydawnictwo attyka,-1 wydawnictwo c.h.beck spółka z o.o.,-1 wydawnictwo diecezjalne i drukarnia sandomierz,-1 wydawnictwo dig,-1 wydawnictwo libron,-1 wydawnictwo naukowe akapit,-1 wydawnictwo naukowe pwn,-1 wydawnictwo naukowe scholar,-1 wydawnictwo naukowe uniwersytetu im. adama mickiewicza,1 wydawnictwo naukowe uniwersytetu pedagogicznego im. komisji edukacji narodowej,-1 wydawnictwo politechniki poznańskiej,-1 wydawnictwo politechniki łódzkiej,-1 wydawnictwo politechniki śląskiej,-1 wydawnictwo sejmowe,-1 wydawnictwo universytetu wroclawskiego,1 wydawnictwo uniwersytetu ekonomicznego w katowicach,-1 wydawnictwo uniwersytetu gdańskiego,-1 wydawnictwo uniwersytetu lodzkiego,-1 wydawnictwo uniwersytetu rzeszowskiego,-1 wydawnictwo uniwersytetu w białymstoku,1 wydawnictwo via nova,1 wydawnictwo werset,-1 wydawnictwu adam marszalek,1 wydawnnictwo poznanskiego towarzystwa przyjaciol nauk,-1 wyższa szkoła ekonomiczna w białymstoku,-1 wékwos,-1 x-ray spectrometry,1 xamk inspiroi,-1 xamk kehittää,-1 xamk oppimateriaalit,-1 xamk tutkii,-1 "xcoax proceedings of the conference on computation, communication, aesthetics & x",1 xenobiotica,1 xenotransplantation,1 xiandai chuanbo,-1 xiandai tushu qingbao jishu,-1 xiandai yuancheng jiaoyu yanjiu,-1 xiandai zhexue,-1 xiangtan daxue xuebao : ziran kexue ban,-1 xibei gongye daxue xuebao,-1 xibei mingzu,1 xin li xue jin zhan,-1 xitong gongcheng lilun yu shijian,-1 xitong gongcheng yu dianzi jishu,-1 xrds: crossroads,-1 xuewei yu yanjiusheng jiaoyu,-1 xviie siecle,1 "y?xué g?ngchéng. applications, basis, communications",1 yad vashem studies,1 yakugaku zasshi,-1 yale classical studies,1 yale french studies,2 "yale journal of health policy, law, and ethics",1 yale journal of international law,2 yale journal of law & the humanities,-1 yale journal of law and feminism,1 yale journal of music & religion,1 yale journal on regulation,1 yale law and policy review,1 yale law journal,3 yale review,-1 yale university press,3 yanshi lixue yu gongcheng xuebao,-1 yantu lixue,-1 yaogan xuebao,-1 yapı,-1 yazy`ki slavyanskoj kul`tury`,-1 yazyki slavyanskoj kultury,1 ydin,-1 year book of the leo baeck institute,1 yearbook for traditional music,3 yearbook of antitrust and regulatory studies,1 yearbook of balkan and baltic studies,1 yearbook of english studies,1 yearbook of european law,2 yearbook of international disaster law,1 yearbook of international environmental law,1 yearbook of international humanitarian law,1 yearbook of medical informatics,1 yearbook of muslims in europe,-1 yearbook of phraseology,1 yearbook of physical anthropology,1 yearbook of the german cognitive linguistics association,1 yearbook of the international society for the didactics of history,1 yearbook of the international tribunal for the law of the sea,1 yearbook of the research centre for german and austrian exile studies,1 "yearbook of the unesco international clearinghouse on children, youth and media",1 years work in english studies,1 yeast,1 yeditepe university,-1 yejing yu xianshi,-1 yeol-sang journal of classical studies,1 yerevan state university of architecture and construction,-1 yesterday and today,-1 yfi julkaisuja,-1 yhdyskuntasuunnittelu,1 yhteiset lapsemme,-1 yhteiset lapsemme ry,-1 yhteiskuntapolitiikka,2 yhteiskuntatieteellisen tietoarkiston julkaisuja,-1 yhteiskuntatieteellisen ympäristötutkimuksen seura,-1 yhys tiedotuslehti,-1 yiddish: modern jewish studies,1 yingyong xinlixue,-1 ykköslohja,-1 yksityistieuutiset : yksityistieasioiden tiedotuslehti,-1 yle,-1 yleinen teollisuusliitto ry,-1 yleislääkäri,1 yleisradio,-1 yleistajuiset selvitykset,-1 yliopisto,-1 yliopiston nimipäiväalmanakka,-1 yliopistopedagogiikka,1 ylioppilaslehti,-1 ylä-kainuu,-1 ylä-satakunta,-1 ympyriäinen,-1 ympäristö & yritys tänään,-1 ympäristö ja terveys,-1 ympäristöhistoria : finnish journal of environmental history,-1 ympäristöjuridiikka,1 ympäristökasvatus,-1 ympäristökustannus oy,-1 ympäristöministeriö,-1 ympäristöministeriön julkaisuja,-1 ympäristöpolitiikan ja -oikeuden vuosikirja,1 yokohama publishers,1 yonago acta medica,-1 yonsei medical journal,1 york papers in linguistics,-1 yorkshire archaeological journal,1 yorkshire sculpture park,-1 young,2 young children,1 young consumers,1 yours truly,-1 youth,-1 youth and globalization,1 youth and society,2 youth justice,1 youth studies australia,1 youth theatre journal,1 youth violence and juvenile justice,2 "youth, young adulthood and society",3 yōroppa nihongo kyōiku,-1 yritteliäs auranmaa,-1 yrittäjyyskasvatuksen aikakauskirja,-1 yrittäjä,-1 yrittäjän lappi,-1 yrittävä lakeus,-1 yritysetiikka,1 ysec yearbook of socio-economic constitutions,1 yuanzihe wuli pinglun,-1 yuanzineng kexue jishu,-1 yuhang xuebao,-1 yunghapgyoyuk yeon-gu,-1 yükseköğretim dergisi,-1 yíqì yíbi?o xuébào,-1 yıldız teknik üniversitesi,-1 z dejin hutnictvi,1 zacht lawijd,1 zagadnienia ekonomiki rolnej,-1 zagadnienia naukoznawstwa,-1 zagadnienia rodzajow literackich,1 zaglossus,-1 zakład wydawniczy nomos,-1 zamm: zeitschrift fur angewandte mathematik und mechanik,1 zaozhi kexue yu jishu,-1 zaphon,1 zapiski gornogo instituta,1 zapiski historyczne,1 zapiski instituta istorii materialʹnoj kulʹtury ran,-1 zapiski nauchnyh seminarov pomi,1 zarch,1 zarzdadzanie przedsiebiorstwem,-1 zavarivanje i zavarene konstrukcije,-1 zbornik matice srpske za filologiju i lingvistiku,1 "zbornik radova - geografski institut ""jovan cvijić""",1 zbornik radova ekonomskog fakulteta u rijeci-proceedings of rijeka facultyof economics,-1 zdm,1 "zdorov'â, sport, reabìlìtacìâ",-1 zdravniski vestnik,1 zdravotnícke listy,-1 zdravstveno varstvo,1 zebrafish,1 zed books,2 zef discussion papers on development policy,-1 zei discussion paper,-1 zeit germany : study & research,-1 zeit germany : work & start up,-1 zeit-magazin,-1 zeitgeschichte,1 zeithistorische forschungen,2 zeitmagazin,-1 zeitschrift der deutschen gesellschaft fur geowissenschaften,1 zeitschrift der deutschen morgenlandischen gesellschaft,1 zeitschrift der gesellschaft für musiktheorie,1 zeitschrift der savigny-stiftung fur rechtsgeschichte: germanistische abteilung,2 zeitschrift der savigny-stiftung fur rechtsgeschichte: kanonistische abteilung,1 zeitschrift der savigny-stiftung fur rechtsgeschichte: romanistische abteilung,2 zeitschrift des deutschen palastina-vereins,1 zeitschrift des deutschen vereins fur kunstwissenschaft,1 zeitschrift des verbandes polnischer germanisten,1 zeitschrift fuer kritische musikpaedagogik,1 zeitschrift fur agrargeschichte und agrarsoziologie,1 zeitschrift fur agyptische sprache und altertumskunde,2 zeitschrift fur althebraistik,1 zeitschrift fur altorientalische und biblische rechtsgeschichte,1 zeitschrift fur analysis und ihre anwendungen,1 zeitschrift fur angewandte linguistik,2 zeitschrift fur angewandte mathematik und physik,1 zeitschrift fur anglistik und amerikanistik,2 zeitschrift fur anorganische und allgemeine chemie,1 zeitschrift fur antikes christentum,2 zeitschrift fur arabische linguistik,1 zeitschrift fur arbeits-und organisationspsychologie,1 zeitschrift fur arznei- und gewurzpflanzen,1 zeitschrift fur assyriologie und vorderasiatische archaologie,2 zeitschrift fur asthetik und allgemeine kunstwissenschaft,2 zeitschrift fur auslaendisches oeffentliches recht und voelkerrecht,1 zeitschrift fur auslandische und internationales arbeits- und sozialrecht,1 zeitschrift fur balkanologie,1 zeitschrift fur bayerische landesgeschichte,1 zeitschrift fur bibliothekswesen und bibliographie,1 zeitschrift fur celtische philologie,2 zeitschrift fur deutsche philologie,3 zeitschrift fur deutsches altertum und deutsche literatur,2 zeitschrift fur dialektische theologie,1 zeitschrift fur dialektologie und linguistik,2 zeitschrift fur dialektologie und linguistik: beihefte,1 zeitschrift fur didaktik der philosophie und ethik,1 zeitschrift fur die alttestamentliche wissenschaft,3 zeitschrift fur die gesamte strafrechtswissenschaft,1 zeitschrift fur die neutestamentliche wissenschaft und die kunde der alteren kirche,3 zeitschrift fur erziehungswissenschaft,1 zeitschrift fur ethnologie,1 zeitschrift fur europaeisches privatrecht,2 "zeitschrift fur europarecht, internationales privatrecht und rechtsvergleichung",1 zeitschrift fur evaluation,1 zeitschrift fur evangelische ethik,2 zeitschrift fur evangelisches kirchenrecht,1 zeitschrift fur franzosische sprache und literatur,2 zeitschrift fur fremdsprachenforschung,1 zeitschrift fur gastroenterologie,1 zeitschrift fur geburtshilfe und neonatologie,1 zeitschrift fur geomorphologie,1 zeitschrift fur germanistik,2 zeitschrift fur germanistische linguistik,2 zeitschrift fur gerontologie und geriatrie,1 zeitschrift fur geschichte der arabisch-islamischen wissenschaften,1 zeitschrift fur geschichtswissenschaft,1 zeitschrift fur gesundheitspsychologie,-1 zeitschrift fur heilpadagogik,1 zeitschrift fur historische forschung,2 zeitschrift fur interkulturelle germanistik,1 zeitschrift fur internationale beziehungen,1 zeitschrift fur kanada-studien,1 zeitschrift fur katalanistik,1 zeitschrift fur katholische theologie,1 zeitschrift fur kinder-und jugendpsychiatrie und psychotherapie,-1 zeitschrift fur kirchengeschichte,2 zeitschrift fur klinische psychologie und psychotherapie,-1 zeitschrift fur kmu und entrepreneurship,1 zeitschrift fur kristallographie,1 zeitschrift fur kristallographie supplements,-1 zeitschrift fur kritische theorie,1 zeitschrift fur kunstgeschichte,3 zeitschrift fur kunsttechnologie und konservierung,1 zeitschrift fur medizinische physik,1 zeitschrift fur missionswissenschaft und religionswissenschaft,1 zeitschrift fur naturforschung section a: a journal of physical sciences,1 zeitschrift fur naturforschung section b: a journal of chemical sciences,1 zeitschrift fur naturforschung section c: a journal of biosciences,1 zeitschrift fur neuere rechtsgeschichte,1 zeitschrift fur neuere theologiegeschichte,1 zeitschrift fur orthopadie und unfallchirurgie,1 zeitschrift fur ostmitteleuropa-forschung,2 zeitschrift fur padagogik,1 zeitschrift fur padagogik und theologie,1 zeitschrift fur papyrologie und epigraphik,2 zeitschrift fur parlamentsfragen,1 zeitschrift fur philosophische forschung,2 zeitschrift fur physikalische chemie-international journal of research in physical chemistry and chemical physics,1 zeitschrift fur phytotherapie: offizielles organ der ges. f. phytotherapie e.v,1 zeitschrift fur politik,1 zeitschrift fur politikwissenschaft,1 zeitschrift fur politische theorie,-1 zeitschrift fur psychiatrie psychologie und psychotherapie,1 zeitschrift fur psychologie-journal of psychology,1 zeitschrift fur psychosomatische medizin und psychotherapie,1 zeitschrift fur rechtssoziologie,1 zeitschrift fur religions-und geistesgeschichte,1 zeitschrift fur religionswissenschaft,2 zeitschrift fur rheumatologie,1 zeitschrift fur romanische philologie,3 zeitschrift fur schweizerische archaologie und kunstgeschichte,1 zeitschrift fur semiotik,1 zeitschrift fur sexualforschung,1 zeitschrift fur slavische philologie,1 zeitschrift fur slawistik,3 zeitschrift fur soziologie,2 zeitschrift fur soziologie der erziehung und sozialisation,1 zeitschrift fur sportpsychologie,1 zeitschrift fur sprachwissenschaft,1 zeitschrift fur theologie und kirche,3 zeitschrift fur unternehmensgeschichte,1 zeitschrift fur volkskunde,1 zeitschrift fur weltgeschichte,1 zeitschrift für digitale geisteswissenschaften,1 zeitschrift für hochschulentwicklung,-1 zeitschrift für interaktionsforschung in dafz,-1 zeitschrift für kristallographie : crystalline materials,1 "zeitschrift für religion, gesellschaft und politik",1 zeitschrift für sozialreform,1 zeitschrift für archäologie des mittelalters,2 zeitschrift für aussen- und sicherheitspolitik,1 zeitschrift für diskursforschung,1 zeitschrift für diversitätsforschung und -management,1 zeitschrift für entwicklungspsychologie und pädagogische psychologie,1 zeitschrift für epileptologie,-1 zeitschrift für erziehungswissenschaftliche migrationsforschung,-1 zeitschrift für ethik und moralphilosophie,1 "zeitschrift für evidenz, fortbildung und qualität im gesundheitswesen",1 zeitschrift für geographiedidaktik,1 zeitschrift für interkulturellen fremdsprachenunterricht,2 zeitschrift für japanisches recht,1 zeitschrift für kristallographie : proceedings,-1 zeitschrift für kulturphilosophie,1 zeitschrift für lebensrecht,1 zeitschrift für literaturwissenschaft und linguistik,2 zeitschrift für luft- und weltraumrecht,-1 zeitschrift für mykologie,-1 zeitschrift für orient-archaologie,1 zeitschrift für praktische philosophie,1 zeitschrift für religion und gesellschaft,1 zeitschrift für sozialpädagogik,1 zeitschrift für technikfolgenabschätzung in theorie und praxis,1 zeitschrift für tourismuswissenschaft,-1 zeitschrift für vergleichende politikwissenschaft,1 zeitschrift für öffentliches recht,1 zeitschrift korpora deutsch als fremdsprache,1 zeitsprunge: forschungen zur freuhen neuzeit,1 zeitzeichen,-1 zeki sistemler teori ve uygulamaları dergisi,-1 zemdirbyste-agriculture,1 zenetudomanyi dolgozatok,1 zenith,-1 zentralasiatische studien,1 zentralblatt fur chirurgie,1 zep,1 zephyrus,1 zeszyty naukowe politechnika slaska : organizacja i zarzadzanie,-1 zeszyty naukowe politechniki poznańskiej. organizacja i zarza̧dz anie,-1 zeszyty naukowe uniwersytetu gdańskiego. ekonomika transportu i logistyka,-1 zeszyty teoretyczne rachunkowosci,-1 zeta books,1 zeventiende eeuw,1 zfo : zeitschrift führung + organisation,-1 "zfv: zeitschrift fur geodasie, geoinformation und landmanagement",1 zfw - advances in economic geography,1 zgodovinski casopis-historical review,1 zhaoming gongcheng xuebao,-1 zhejiang shuren daxue xuebao,-1 zhendong yu chongji,-1 zhexue fenxi,-1 zhishi wenku,-1 zhongcaoyao,-1 zhongguo anquan kexue xuebao,-1 zhongguo dianhua jiaoyu,-1 zhongguo gaodeng yixue jiaoyu,-1 zhongguo gonglu xuebao,-1 zhongguo jiaoshi,-1 zhongguo kexueyuan daxue xuebao.,-1 zhongguo liang-you xuebao,-1 zhongguo quanke yixue,-1 zhongguo shiyong huli zazhi,-1 zhongguo tuxiang tuxing xuebao,-1 zhongguo weisheng zhiliang guanli,-1 zhongguo xueshu qikan,-1 zhongguo yuwen,1 zhongguo zhongyao zazhi,-1 zhonghua erkexue zazhi,-1 zhonghua weichan yixue zazhi,-1 zhonghua weishengwuxue he mianyixue zazhi,-1 zhongnan daxue xuebao. ziran kexue ban,-1 zhongyang yinyue xueyuan xuebao,-1 zhuangshi,-1 zhurnal institutsionalnyh issledovanij,-1 zhurnal issledovanij sotsialnoj politiki,1 zhurnal nauchnoi i prikladnoi fotografii,1 zhurnal nevrologii i psikhiatrii imeni s s korsakova,1 zhurnal novoj ekonomitsheskoj assotsiatsii,-1 zhurnal obshchei biologii,1 zhurnal voprosy neirokhirurgii im. nn burdenko,-1 zhurnalist sotsialjnye kommunikatsii,-1 zhōnghuá mínguó xīnzàngxué huì zázhì,-1 zidonghua xuebao,-1 zielsprache deutsch,1 zimbabwe veterinary journal,-1 zinatnes vestnesis,1 ziran bianzhengfa yanjiu,-1 zitteliana reihe a: mitteilungen der bayerischen staatssammlung fur palaontologie und geologie,1 zitteliana reihe b: abhandlungen der bayerischen staatssammlung fur palaontologie und geologie,1 zivot umjetnosti,1 zkg international,1 zlatoust,-1 znanstvena založba filozofske fakultete univerze v ljubljani,-1 znanstvenoraziskovalni center sazu,-1 zograf,1 zolotoordynskaâ civilizaciâ,-1 zolotoordynskoe obozrenie,-1 zondervan,-1 zonemoda journal,1 zoo biology,1 zoodiversity,1 zookeys,1 zoologica scripta,1 zoological journal of the linnean society,1 zoological letters,1 zoological science,1 zoological studies,1 zoological systematics,-1 zoologichesky zhurnal,1 zoologischer anzeiger,1 zoology,1 zoology and ecology,1 zoology in the middle east,1 zoomorphology,1 zoonoses and public health,2 zoonotic diseases,-1 zoosystema,1 zoosystematica rossica,1 zoosystematics and evolution,1 zootaxa,1 zootecnia tropical,1 zouhdi,1 zprávy lesnického výzkumu,-1 zte communications,-1 zu guo,-1 zuchtungskunde,1 zuckerindustrie,1 zunamen: zeitschrift für namenforschung,1 zutot,1 zwingliana,1 zygon,1 zygote,1 zywnosc-nauka technologia jakosc,1 zürcher beiträge zur sicherheitspolitik,1 ágora,-1 "ámbar diseño, s.c.",-1 ámbitos,1 ápeiron,-1 âderna ta radìacìjna bezpeka,-1 âzyk i social?naâ dinamika,-1 "âzyk, kommunikaciâ i social?naâ sreda",1 ägypten und levante: internationale zeitschrift für ägyptische archäologie,1 ähtärinjärven uutisnuotta,-1 äidinkielen opettajain liiton vuosikirja,-1 äidinkielen opettajain liitto ry,-1 äidinkielen opetustieteen seura,-1 äldre i centrum,-1 äripäev,-1 ääretön,-1 åbo akademi,-1 åbo akademis förlag,1 ålands fredsinstitut,-1 ålands landskapsregering,-1 ålands sjöfart,-1 åländsk odling,-1 årbok (norsk maritimt museum),1 årbok: fortidsminneforeningen,1 årsbok,-1 çanakkale kitaplığı,-1 çukurova araştırmaları.,-1 èkologiâ âzyka i kommunikativnaâ praktika,-1 èkonomika i upravlenie,-1 èkonomika regiona,-1 èkonomičeskaâ istoriâ,1 èkonomičeskaâ politika,-1 èkonomičeskij žurnal vysšej školy èkonomiki,-1 ètnografiâ (sankt-peterburg),1 échanges linguistiques en sorbonne,-1 écho des études romanes,-1 éditions de la société internationale d’études yourcenariennes,-1 éditions de la sorbonne,-1 éditions de linguistique et de philologie,1 éditions de l´université de savoie,1 éditions du seuil,1 éditions ifrikiya,-1 éditions kimé,1 éditions klincksieck,1 éditions la découverte,-1 éditions nouvelles cécile defaut,-1 éditions passage(s),-1 éditions québécoises de l´oeuvre,-1 éditions science et bien commun,-1 éditions yvon blais,-1 éditions érès,-1 égalité,-1 élet és irodalom,-1 études de communication,-1 études en didactique des langues,-1 études et documents berbères,1 études finno-ougriennes,1 études kurdes,-1 études littéraires africaines,-1 études romanes de brno,1 ìnformacìjnì tehnologìï ì zasobi navčannâ,-1 ìnozemnì movi,-1 óbudai egyetem,-1 õpetatud eesti seltsi aastaraamat,-1 ökumenische rundschau,1 örebro universitet,-1 östbulletinen,-1 österbottens tidning,-1 österreichische computer gesellschaft,-1 österreichische computer-gesellschaft,-1 österreichische gesellschaft für geomechanik,-1 östlings bokförlag symposion,1 öt kontinens,-1 økonomi & politik,1 ýawpa pacha,1 āb va tusi̒ah-i pāydār,-1 časopis za kritiko znanosti,-1 "čelovek, kulʹtura i obrazovanie",1 čelâbinskij fiziko-matematičeskij žurnal,-1 česká andragogická společnost,-1 česká zemědělská univerzita v praze,-1 čornomorsʹkij botanìčnij žurnal,-1 šagi,1 ša̋ka̋rìm universitetìnìn̦ habaršysy,-1 žanry reči,1 železnodorožnyj transport,-1 žurnal nano- ta elektronnoï fìziki,1 žurnal novoj èkonomičeskoj associacii,-1 žurnal organìčnoï ta farmacevtičnoï hìmìï,-1 žurnal sibirskogo federalʹnogo universiteta : himiâ,-1 žurnal sociologii i socialnoj antropologii,-1 žurnal zarubežnogo zakonodatelʹstva i sravnitelʹnogo pravovedeniâ,-1 известия санкт-петербургского государственного экономического университета,-1 невский альманах,-1 социодиггер,-1 тomsk state university,-1 ================================================ FILE: src/paperqa/clients/client_models.py ================================================ from __future__ import annotations import logging from abc import ABC, abstractmethod from collections.abc import Collection from typing import Any, Generic, TypeVar import httpx from pydantic import ( BaseModel, ConfigDict, Field, ValidationError, ValidationInfo, field_validator, model_validator, ) from tenacity import RetryError from paperqa.types import DocDetails from .exceptions import DOINotFoundError logger = logging.getLogger(__name__) # ClientQuery is a base class for all queries to the client_models class ClientQuery(BaseModel): model_config = ConfigDict(arbitrary_types_allowed=True) client: httpx.AsyncClient class TitleAuthorQuery(ClientQuery): title: str authors: list[str] = Field(default_factory=list) title_similarity_threshold: float = 0.75 fields: Collection[str] | None = None @model_validator(mode="before") @classmethod def ensure_fields_are_present(cls, data: dict[str, Any]) -> dict[str, Any]: if fields := data.get("fields"): if "doi" not in fields: fields.append("doi") if "title" not in fields: fields.append("title") if data.get("authors") is not None and "authors" not in fields: fields.append("authors") # ensure these are ranked the same for caching purposes data["fields"] = sorted(fields) return data @field_validator("title_similarity_threshold") @classmethod def zero_and_one(cls, v: float, info: ValidationInfo) -> float: # noqa: ARG003 if v < 0.0 or v > 1.0: raise ValueError( "title_similarity_threshold must be between 0 and 1. (inclusive)" ) return v class DOIQuery(ClientQuery): doi: str fields: Collection[str] | None = None @model_validator(mode="before") @classmethod def add_doi_to_fields_and_validate(cls, data: dict[str, Any]) -> dict[str, Any]: if (fields := data.get("fields")) and "doi" not in fields: fields.append("doi") # sometimes the DOI has a URL prefix, remove it remove_urls = ["https://doi.org/", "http://dx.doi.org/"] for url in remove_urls: if data["doi"].startswith(url): data["doi"] = data["doi"].replace(url, "") return data class JournalQuery(ClientQuery): journal: str ClientQueryType = TypeVar("ClientQueryType", bound=ClientQuery) class MetadataProvider(ABC, Generic[ClientQueryType]): """Provide metadata from a query by any means necessary. An example is going from a DOI to full paper metadata using Semantic Scholar. """ async def query(self, query: dict) -> DocDetails | None: return await self._query(self.query_factory(query)) @abstractmethod async def _query(self, query: ClientQueryType) -> DocDetails | None: """Run a query against the provider.""" @abstractmethod def query_factory(self, query: dict) -> ClientQueryType: """Create a query object from unstructured query data.""" class DOIOrTitleBasedProvider(MetadataProvider[DOIQuery | TitleAuthorQuery]): async def query(self, query: dict) -> DocDetails | None: try: client_query = self.query_factory(query) return await self._query(client_query) # We allow graceful failures, i.e. return "None" for both DOI errors and timeout errors # DOINotFoundError means the paper doesn't exist in the source, the timeout is to prevent # this service from failing us when it's down or slow. except DOINotFoundError: logger.warning( "Metadata not found for" f" {client_query.doi if isinstance(client_query, DOIQuery) else client_query.title} in" f" {self.__class__.__name__}." ) # we're suppressing this error to not fail on 403 or 500 errors from providers except httpx.RequestError: logger.warning( "Client error for" f" {client_query.doi if isinstance(client_query, DOIQuery) else client_query.title} in" f" {self.__class__.__name__}." ) except RetryError: logger.warning( "Metadata service is down for" f" {client_query.doi if isinstance(client_query, DOIQuery) else client_query.title} in" f" {self.__class__.__name__}." ) except TimeoutError: logger.warning( f"Request to {self.__class__.__name__} for" f" {client_query.doi if isinstance(client_query, DOIQuery) else client_query.title} timed" " out." ) return None @abstractmethod async def _query(self, query: DOIQuery | TitleAuthorQuery) -> DocDetails | None: """ Query the source using either a DOI or title/author search. None should be returned if the DOI or title is not a good match. Raises: DOINotFoundError: This is when the DOI or title is not found in the sources TimeoutError: When the request takes too long on the client side """ def query_factory(self, query: dict) -> DOIQuery | TitleAuthorQuery: try: if "doi" in query: return DOIQuery(**query) if "title" in query: return TitleAuthorQuery(**query) except ValidationError as e: raise ValueError( f"Query {query} format not supported by {self.__class__.__name__}." ) from e raise ValueError("Provider query missing 'doi' or 'title' field.") class MetadataPostProcessor(ABC, Generic[ClientQueryType]): """Post-process metadata from a query. MetadataPostProcessor should be idempotent and not order-dependent, i.e. all MetadataPostProcessor instances should be able to run in parallel. """ async def process(self, doc_details: DocDetails, **kwargs) -> DocDetails: if query := self.query_creator(doc_details, **kwargs): return await self._process(query, doc_details) return doc_details @abstractmethod async def _process( self, query: ClientQueryType, doc_details: DocDetails ) -> DocDetails: pass @abstractmethod def query_creator( self, doc_details: DocDetails, **kwargs ) -> ClientQueryType | None: pass ================================================ FILE: src/paperqa/clients/crossref.py ================================================ from __future__ import annotations import contextlib import copy import json import logging import os from collections.abc import Collection, Mapping from datetime import datetime from typing import Any from urllib.parse import quote import httpx import httpx_aiohttp from anyio import open_file from lmi.utils import CROSSREF_KEY_HEADER from tenacity import ( before_sleep_log, retry, retry_if_exception, stop_after_attempt, wait_exponential, ) from paperqa.types import CITATION_FALLBACK_DATA, BibTeXSource, DocDetails from paperqa.utils import BIBTEX_MAPPING as CROSSREF_CONTENT_TYPE_TO_BIBTEX_MAPPING from paperqa.utils import ( bibtex_field_extract, create_bibtex_key, remove_substrings, strings_similarity, union_collections_to_ordered_list, ) from .client_models import DOIOrTitleBasedProvider, DOIQuery, TitleAuthorQuery from .exceptions import DOINotFoundError, make_flaky_ssl_error_predicate logger = logging.getLogger(__name__) CROSSREF_HOST = "api.crossref.org" CROSSREF_BASE_URL = f"https://{CROSSREF_HOST}" CROSSREF_API_REQUEST_TIMEOUT = float( os.environ.get("CROSSREF_API_REQUEST_TIMEOUT", "10.0") ) # seconds CROSSREF_API_MAPPING: dict[str, Collection[str]] = { "title": {"title"}, "doi": {"DOI"}, "authors": {"author"}, "publication_date": {"published"}, "year": {"published"}, "volume": {"volume"}, "issue": {"issue"}, "publisher": {"publisher"}, "issn": {"ISSN"}, "pages": {"page"}, "journal": {"container-title"}, "doi_url": {"URL"}, "url": {"URL"}, "bibtex": {"bibtex", "type"}, "citation_count": {"is-referenced-by-count"}, "bibtex_type": {"type"}, "citation": { "title", "DOI", "published", "volume", "issue", "publisher", "ISSN", "page", "container-title", "is-referenced-by-count", "type", }, "source_quality": {"container-title"}, "doc_id": {"DOI"}, } _ISSUED_WARNINGS = [False, False] # 0 is API key, 1 is email def crossref_headers() -> dict[str, str]: """Crossref API key if available, otherwise nothing.""" try: return {CROSSREF_KEY_HEADER: f"Bearer {os.environ['CROSSREF_API_KEY']}"} except KeyError: if not _ISSUED_WARNINGS[0]: _ISSUED_WARNINGS[0] = True logger.warning( "CROSSREF_API_KEY environment variable not set." " Crossref API rate limits may apply." ) return {} def get_crossref_mailto() -> str: """Crossref mailto if available, otherwise a default.""" try: return os.environ["CROSSREF_MAILTO"] except KeyError: if not _ISSUED_WARNINGS[1]: logger.warning( "CROSSREF_MAILTO environment variable not set." " Crossref API rate limits may apply." ) _ISSUED_WARNINGS[1] = True return "example@papercrow.ai" @retry( retry=retry_if_exception(make_flaky_ssl_error_predicate(CROSSREF_HOST)), before_sleep=before_sleep_log(logger, logging.WARNING), stop=stop_after_attempt(5), ) async def doi_to_bibtex( doi: str, client: httpx.AsyncClient, missing_replacements: Mapping[str, str | list[str]] | None = None, ) -> str: """Get a bibtex entry from a DOI via Crossref, replacing the key if possible. `missing_replacements` can optionally be used to fill missing fields in the bibtex key. these fields are NOT replaced or inserted into the bibtex string otherwise. """ if missing_replacements is None: missing_replacements = {} FORBIDDEN_KEY_CHARACTERS = {"_", " ", "-", "/"} # get DOI via crossref r = await client.get( f"https://api.crossref.org/works/{quote(doi, safe='')}/transform/application/x-bibtex", headers=crossref_headers(), ) if not r.is_success: raise DOINotFoundError( f"Per HTTP status code {r.status_code}, could not resolve DOI {doi}." ) data = r.text # must make new key key = data.split("{")[1].split(",")[0] new_key = remove_substrings(key, FORBIDDEN_KEY_CHARACTERS) substrings_to_remove_per_field = {"author": [" and ", ","]} fragments = [] for field in ("author", "year", "title"): bibtex_field = bibtex_field_extract( data, field, missing_replacements=missing_replacements ) if isinstance(bibtex_field, list): raise NotImplementedError( f"Didn't yet handle bibtex field {field!r} being a list." ) fragments.append( remove_substrings( target=bibtex_field, substr_removal_list=substrings_to_remove_per_field.get(field, []), ) ) # replace the key if all the fragments are present if all(fragments): new_key = create_bibtex_key( author=fragments[0].split(), year=fragments[1], title=fragments[2] ) # we use the count parameter below to ensure only the 1st entry is replaced return data.replace(key, new_key, 1) async def parse_crossref_to_doc_details( message: dict[str, Any], client: httpx.AsyncClient, query_bibtex: bool = False, ) -> DocDetails: bibtex_source = BibTeXSource.SELF_GENERATED.value bibtex = None with contextlib.suppress(DOINotFoundError): # get the title from the message, if it exists # rare circumstance, but bibtex may not have a title fallback_data = copy.copy(CITATION_FALLBACK_DATA) if title := ( None if not message.get("title") else message.get("title", [None])[0] ): fallback_data["title"] = title # TODO: we keep this for robustness, but likely not needed anymore, # since we now create the bibtex from scratch if query_bibtex: bibtex = await doi_to_bibtex( message["DOI"], client, missing_replacements=fallback_data ) # track the origin of the bibtex entry for debugging bibtex_source = BibTeXSource.CROSSREF.value authors = [ f"{author.get('given', '')} {author.get('family', '')}".strip() for author in message.get("author", []) ] publication_date = None if "published" in message and "date-parts" in message["published"]: date_parts = message["published"]["date-parts"][0] if len(date_parts) >= 3: # noqa: PLR2004 publication_date = datetime(date_parts[0], date_parts[1], date_parts[2]) elif len(date_parts) == 2: # noqa: PLR2004 publication_date = datetime(date_parts[0], date_parts[1], 1) elif len(date_parts) == 1: publication_date = datetime(date_parts[0], 1, 1) doc_details = DocDetails( key=None if not bibtex else bibtex.split("{")[1].split(",")[0], bibtex_type=CROSSREF_CONTENT_TYPE_TO_BIBTEX_MAPPING.get( message.get("type", "other"), "misc" ), bibtex=bibtex, authors=authors, publication_date=publication_date, year=message.get("published", {}).get("date-parts", [[None]])[0][0], volume=message.get("volume"), issue=message.get("issue"), publisher=message.get("publisher"), issn=message.get("ISSN", [None])[0], pages=message.get("page"), journal=( None if not message.get("container-title") else message["container-title"][0] ), url=message.get("URL"), title=None if not message.get("title") else message.get("title", [None])[0], citation_count=message.get("is-referenced-by-count"), doi=message.get("DOI"), other={}, # Initialize empty dict for other fields ) # Add any additional fields to the 'other' dict for key, value in ( message | {"client_source": ["crossref"], "bibtex_source": [bibtex_source]} ).items(): if key not in type(doc_details).model_fields: if key in doc_details.other: doc_details.other[key] = [doc_details.other[key], value] else: doc_details.other[key] = value return doc_details @retry( retry=retry_if_exception(make_flaky_ssl_error_predicate(CROSSREF_HOST)), before_sleep=before_sleep_log(logger, logging.WARNING), stop=stop_after_attempt(5), ) async def get_doc_details_from_crossref( # noqa: PLR0912 client: httpx.AsyncClient, doi: str | None = None, authors: list[str] | None = None, title: str | None = None, title_similarity_threshold: float = 0.75, fields: Collection[str] | None = None, ) -> DocDetails | None: """ Get paper details from Crossref given a DOI or paper title. SEE: https://api.crossref.org/swagger-ui/index.html#/Works """ authors = authors or [] if doi is title is None: raise ValueError("Either a DOI or title must be provided.") if doi is not None and title is not None: title = None # Prefer DOI over title inputs_msg = f"DOI {doi}" if doi is not None else f"title {title}" url = f"{CROSSREF_BASE_URL}/works" if doi: url += f"/{quote(doi, safe='')}" params = {"mailto": get_crossref_mailto()} if title: params.update({"query.title": title, "rows": "1"}) if authors: params.update( {"query.author": " ".join([a.strip() for a in authors if len(a) > 1])} ) query_bibtex = True # note we only do field selection if querying on title if fields and title: # crossref has a special endpoint for bibtex, so we don't need to request it here if "bibtex" not in fields: query_bibtex = False params.update( { "select": ",".join( union_collections_to_ordered_list( [ CROSSREF_API_MAPPING[field] for field in fields if field in CROSSREF_API_MAPPING and field != "bibtex" ] ) ) } ) response = await client.get( url, params=params, headers=crossref_headers(), timeout=CROSSREF_API_REQUEST_TIMEOUT, ) try: response.raise_for_status() except httpx.HTTPStatusError as exc: raise DOINotFoundError(f"Could not find paper given {inputs_msg}.") from exc try: response_data = response.json() except json.JSONDecodeError as exc: # JSONDecodeError: Crossref didn't answer with JSON, perhaps HTML raise DOINotFoundError( # Use DOINotFoundError so we fall back to Google Scholar f"Crossref API did not return JSON for {inputs_msg}, instead it" f" responded with text: {response.text}" ) from exc if response_data["status"] == "failed": raise DOINotFoundError( f"Crossref API returned a failed status for {inputs_msg}." ) message: dict[str, Any] = response_data["message"] # restructure data if it comes back as a list result # it'll also be a list if we searched by title and it's empty if "items" in message: try: message = message["items"][0] except IndexError as e: raise DOINotFoundError( f"Crossref API did not return any items for {inputs_msg}." ) from e # since score is not consistent between queries, we need to rely on our own criteria # title similarity must be > title_similarity_threshold if ( doi is None and title and strings_similarity(message["title"][0], title) < title_similarity_threshold ): raise DOINotFoundError(f"Crossref results did not match for title {title!r}.") if doi is not None and message["DOI"] != doi: raise DOINotFoundError(f"DOI ({inputs_msg}) not found in Crossref") return await parse_crossref_to_doc_details(message, client, query_bibtex) @retry( stop=stop_after_attempt(3), before_sleep=before_sleep_log(logger, logging.WARNING), wait=wait_exponential(multiplier=5, min=5), reraise=True, ) async def download_retracted_dataset( retraction_data_path: os.PathLike | str, ) -> None: """ Download the retraction dataset from Crossref. Saves the retraction dataset to `retraction_data_path`. """ url = f"https://api.labs.crossref.org/data/retractionwatch?{get_crossref_mailto()}" async with httpx_aiohttp.HttpxAiohttpClient(timeout=300) as client: response = await client.get(url) response.raise_for_status() logger.info( f"Retraction data was not cashed. Downloading retraction data from {url}..." ) async with await open_file(str(retraction_data_path), "wb") as f: async for chunk in response.aiter_bytes(chunk_size=1024): await f.write(chunk) if os.path.getsize(str(retraction_data_path)) == 0: # noqa: ASYNC240 raise RuntimeError("Retraction data is empty") class CrossrefProvider(DOIOrTitleBasedProvider): async def _query(self, query: TitleAuthorQuery | DOIQuery) -> DocDetails | None: if isinstance(query, DOIQuery): return await get_doc_details_from_crossref( doi=query.doi, client=query.client, fields=query.fields ) return await get_doc_details_from_crossref( title=query.title, authors=query.authors, client=query.client, title_similarity_threshold=query.title_similarity_threshold, fields=query.fields, ) ================================================ FILE: src/paperqa/clients/exceptions.py ================================================ from collections.abc import Callable import httpx class DOINotFoundError(Exception): def __init__(self, message="DOI not found") -> None: self.message = message super().__init__(self.message) def make_flaky_ssl_error_predicate(host: str) -> Callable[[BaseException], bool]: def predicate(exc: BaseException) -> bool: # > aiohttp.client_exceptions.ClientConnectorError: # > Cannot connect to host api.host.org:443 ssl:default # > [nodename nor servname provided, or not known] # SEE: https://github.com/aio-libs/aiohttp/blob/v3.10.5/aiohttp/client_exceptions.py#L193-L196 # Then we migrated to httpx return isinstance(exc, httpx.ConnectError) and exc.request.url.host == host return predicate ================================================ FILE: src/paperqa/clients/journal_quality.py ================================================ from __future__ import annotations import asyncio import csv import logging import os import tempfile from collections.abc import Awaitable, Callable, Sequence from pathlib import Path from typing import Any, ClassVar import anyio import httpx import httpx_aiohttp from pydantic import ValidationError from rich.progress import ( BarColumn, MofNCompleteColumn, Progress, TextColumn, TimeElapsedColumn, ) from paperqa.types import DocDetails from .client_models import JournalQuery, MetadataPostProcessor logger = logging.getLogger(__name__) DEFAULT_JOURNAL_QUALITY_CSV_PATH = ( Path(__file__).parent / "client_data" / "journal_quality.csv" ) # TODO: refresh script for journal quality data class JournalQualityPostProcessor(MetadataPostProcessor[JournalQuery]): # these will be deleted from any journal names before querying CASEFOLD_PHRASES_TO_REMOVE: ClassVar[list[str]] = ["amp;"] def __init__(self, journal_quality_path: os.PathLike | str | None = None) -> None: if journal_quality_path is None: # Construct the path relative to module self.journal_quality_path: str | os.PathLike = ( DEFAULT_JOURNAL_QUALITY_CSV_PATH ) else: self.journal_quality_path = journal_quality_path self.data: dict[str, Any] | None = None def load_data(self) -> None: self.data = {} with open(self.journal_quality_path, newline="", encoding="utf-8") as csvfile: for row in csv.DictReader(csvfile): self.data[row["clean_name"]] = int(row["quality"]) async def _process( self, query: JournalQuery, doc_details: DocDetails ) -> DocDetails: if not self.data: self.load_data() # TODO: not super scalable, but unless we need more than this we can just grugbrain journal_query = query.journal.casefold() for phrase in self.CASEFOLD_PHRASES_TO_REMOVE: journal_query = journal_query.replace(phrase, "") # docname can be blank since the validation will add it # remember, if both have docnames (i.e. key) they are # wiped and re-generated with resultant data return doc_details + DocDetails( doc_id=doc_details.doc_id, # ensure doc_id is preserved dockey=doc_details.dockey, # ensure dockey is preserved source_quality=max( self.data.get(journal_query, DocDetails.UNDEFINED_JOURNAL_QUALITY), # type: ignore[union-attr] self.data.get("the " + journal_query, DocDetails.UNDEFINED_JOURNAL_QUALITY), # type: ignore[union-attr] self.data.get(journal_query.replace("&", "and"), DocDetails.UNDEFINED_JOURNAL_QUALITY), # type: ignore[union-attr] ), ) def query_creator(self, doc_details: DocDetails, **kwargs) -> JournalQuery | None: try: return JournalQuery(journal=doc_details.journal, **kwargs) except ValidationError: logger.debug( "Must have a valid journal name to query journal quality data." ) return None # SEE: https://en.wikipedia.org/wiki/JUFO JUFO_PORTAL_DOWNLOAD_QUALITY_URL = ( "https://jfp.csc.fi/jufoportal_base/api/download?query=&isActive=true&col=Jufo_ID" "&col=Name&col=Abbreviation&col=Level&col=ISSNL&col=ISSN1&col=ISSN2&col=ISBN" "&col=Other_Title&col=Title_details&col=Continues&col=Continued_by&col=Website" "&col=Country&col=country_code&col=Publisher&col=Language&col=lang_code3" "&col=lang_code2&col=Year_Start&col=Year_End&col=isScientific&col=isProfessional" "&col=isGeneral&col=Type_fi&col=Type_sv&col=Type_en&col=Jufo_History" ) # Sometime in between 8/25/2025 and 1/27/2026, JUFO seemingly started using level 4 # for undefined journal quality. So let's map 4 to be our undefined JUFO_LEVEL_ALIASES = {4: DocDetails.UNDEFINED_JOURNAL_QUALITY} async def download_file( dest_path: str | os.PathLike, url: str = JUFO_PORTAL_DOWNLOAD_QUALITY_URL, client: httpx.AsyncClient | None = None, ) -> Path: dest_path = Path(dest_path) async def download(client_: httpx.AsyncClient) -> None: progress = Progress( TextColumn("[progress.description]{task.description}"), BarColumn(), TimeElapsedColumn(), ) async with client_.stream("GET", url, timeout=60) as response: response.raise_for_status() task_id = progress.add_task( f"Downloading {dest_path.name}", total=int(response.headers.get("Content-Length", 0)) or None, ) with progress: async with await anyio.open_file(dest_path, "wb") as f: async for chunk in response.aiter_bytes(chunk_size=2048): if not chunk: continue await f.write(chunk) progress.update(task_id, advance=len(chunk)) if client is None: async with httpx_aiohttp.HttpxAiohttpClient() as client: # noqa: PLR1704 await download(client) else: await download(client) return dest_path async def process_csv( file_path: str | os.PathLike, override_allowlist: Sequence[tuple[str, int]] | None = ( ("annual review of pathology", 2), ("annual review of pathology: mechanisms of disease", 2), ("biochimica et biophysica acta (bba) - bioenergetics", 1), ("biochimica et biophysica acta (bba) - biomembranes", 1), ("biochimica et biophysica acta (bba) - gene regulatory mechanisms", 1), ("biochimica et biophysica acta (bba) - general subjects", 1), ( "biochimica et biophysica acta (bba) - molecular and cell biology of lipids", 1, ), ("biochimica et biophysica acta (bba) - molecular basis of disease", 1), ("biochimica et biophysica acta (bba) - molecular cell research", 1), ("biochimica et biophysica acta (bba) - proteins and proteomics", 1), ("biochimica et biophysica acta (bba) - reviews on cancer", 1), ("bmc evolutionary biology", 2), ("pnas", 3), ("proceedings of the national academy of sciences", 3), ), override_blocklist: Sequence[tuple[str, int]] | None = (("scientific reports", 0),), records_callback: Callable[[Sequence[tuple[str, int]]], Awaitable] | None = None, ) -> list[tuple[str, int]]: async with await anyio.open_file(file_path, encoding="utf-8") as f: content = await f.read() lines = content.splitlines() progress = Progress( TextColumn("[progress.description]{task.description}"), BarColumn(), TimeElapsedColumn(), MofNCompleteColumn(), ) task_id = progress.add_task("Processing", total=len(lines) - 1) # Keys are case-insensitive, values are case-sensitive records: dict[tuple[str, int], tuple[str, int]] = {} with progress: for row in csv.DictReader(lines): level = ( int(row["Level"]) if str(row.get("Level", "")).isdigit() else DocDetails.UNDEFINED_JOURNAL_QUALITY ) data = (row["Name"], JUFO_LEVEL_ALIASES.get(level, level)) records[data[0].lower(), data[1]] = data progress.update(task_id, advance=1) for row_override in override_allowlist or []: records[row_override[0].lower(), row_override[1]] = row_override for row_override in override_blocklist or []: records.pop((row_override[0].lower(), row_override[1]), None) records_list = [records[key] for key in sorted(records)] if records_callback is not None: await records_callback(records_list) return records_list async def main() -> None: with tempfile.TemporaryDirectory() as tmpdir: downloaded_path = await download_file( dest_path=Path(tmpdir) / "journal_quality.csv" ) records = await process_csv(downloaded_path) with DEFAULT_JOURNAL_QUALITY_CSV_PATH.open("w", encoding="utf-8") as csvfile: writer = csv.writer(csvfile) writer.writerow(["clean_name", "quality"]) for name, quality in records: writer.writerow([name.lower(), quality]) if __name__ == "__main__": asyncio.run(main()) ================================================ FILE: src/paperqa/clients/openalex.py ================================================ from __future__ import annotations import logging import os from collections.abc import Collection from datetime import datetime from functools import cache from typing import Any from urllib.parse import quote import httpx from tenacity import ( AsyncRetrying, before_sleep_log, retry_if_exception, stop_after_attempt, ) from paperqa.types import DocDetails from paperqa.utils import BIBTEX_MAPPING, mutate_acute_accents, strings_similarity from .client_models import DOIOrTitleBasedProvider, DOIQuery, TitleAuthorQuery from .exceptions import DOINotFoundError OPENALEX_HOST = "api.openalex.org" OPENALEX_BASE_URL = f"https://{OPENALEX_HOST}" OPENALEX_API_REQUEST_TIMEOUT = float( os.environ.get("OPENALEX_API_REQUEST_TIMEOUT", "10.0") ) # seconds logger = logging.getLogger(__name__) # author_name will be FamilyName, GivenName Middle initial. (if available) # there is no standalone "FamilyName" or "GivenName" fields # this manually constructs the name into the format the other clients use def reformat_name(name: str) -> str: if "," not in name: return name family, given_names = (x.strip() for x in name.split(",", maxsplit=1)) # Return the reformatted name return f"{given_names} {family}" @cache def get_openalex_mailto() -> str | None: """Get the OpenAlex mailto address, if available.""" mailto_address = os.getenv("OPENALEX_MAILTO") if mailto_address is None: logger.warning( "OPENALEX_MAILTO environment variable not set." " your request may be deprioritized by OpenAlex." ) return mailto_address @cache def get_openalex_api_key() -> str | None: """ Get the OpenAlex API key from 'OPENALEX_API_KEY' if available, for premium features. SEE: https://github.com/ourresearch/openalex-api-tutorials/blob/main/notebooks/getting-started/premium.ipynb """ return os.getenv("OPENALEX_API_KEY") async def get_doc_details_from_openalex( # noqa: PLR0912 client: httpx.AsyncClient, doi: str | None = None, title: str | None = None, fields: Collection[str] | None = None, title_similarity_threshold: float = 0.75, ) -> DocDetails | None: """Get paper details from OpenAlex given a DOI or paper title. Args: client: Async HTTP client for any requests. doi: The DOI of the paper. title: The title of the paper. fields: Specific fields to include in the request. title_similarity_threshold: The threshold for title similarity. Returns: The details of the document if found, otherwise None. Raises: ValueError: If neither DOI nor title is provided. DOINotFoundError: If the paper cannot be found. """ mailto = get_openalex_mailto() params = {"mailto": mailto} if mailto else {} api_key = get_openalex_api_key() headers = {"api_key": api_key} if api_key else {} if doi is title is None: raise ValueError("Either a DOI or title must be provided.") url = f"{OPENALEX_BASE_URL}/works" if doi: # this looks wrong but it's now # will compile to a relative url similar to: # https://api.openalex.org/works/https://doi.org/10.7717/peerj.4375 url += f"/https://doi.org/{quote(doi, safe='')}" elif title: params["filter"] = f"title.search:{title}" if fields: params["select"] = ",".join(fields) try: # Seen on 11/4/2025 with OpenAlex and both a client-level timeout of 15-sec # and API request timeout of 15-sec, we repeatedly saw httpx.ConnectTimeout # being thrown for DOIs 10.1046/j.1365-2699.2003.00795 and 10.2147/cia.s3785, # even with up to 3 retries async for attempt in AsyncRetrying( retry=retry_if_exception( lambda exc: ( isinstance(exc, httpx.ReadTimeout) or ( isinstance(exc, httpx.HTTPStatusError) and exc.response.status_code == httpx.codes.INTERNAL_SERVER_ERROR ) ) ), before_sleep=before_sleep_log(logger, logging.WARNING), stop=stop_after_attempt(3), ): with attempt: response = await client.get( url, params=params, headers=headers, timeout=OPENALEX_API_REQUEST_TIMEOUT, ) response.raise_for_status() except httpx.HTTPStatusError as exc: if response.status_code == httpx.codes.NOT_FOUND: raise DOINotFoundError( f"Could not find paper given DOI/title," f" response text was {response.text!r}." ) from exc raise # Can get 429'd by OpenAlex response_data = response.json() if response_data.get("status") == "failed": raise DOINotFoundError("OpenAlex API returned a failed status for the query.") results_data = response_data if params.get("filter") is not None: results_data = results_data["results"] if len(results_data) == 0: raise DOINotFoundError( "OpenAlex API did not return any items for the query." ) results_data = results_data[0] # openalex keeps the DOI prefix on (we remove) if results_data.get("doi"): results_data["doi"] = results_data["doi"].removeprefix("https://doi.org/") if ( doi is None and title and strings_similarity(results_data.get("title", ""), title) < title_similarity_threshold ): raise DOINotFoundError(f"OpenAlex results did not match for title {title!r}.") if doi and results_data.get("doi") != doi: raise DOINotFoundError(f"DOI {doi!r} not found in OpenAlex.") return parse_openalex_to_doc_details(results_data) def parse_openalex_to_doc_details(message: dict[str, Any]) -> DocDetails: """Parse OpenAlex API response to DocDetails. Args: message: The OpenAlex API response message. Returns: Parsed document details. """ raw_author_names = [ authorship.get("raw_author_name", "") for authorship in message.get("authorships") or [] # Handle None authorships if authorship ] sanitized_authors = [ mutate_acute_accents(text=reformat_name(author), replace=True) for author in raw_author_names ] primary_location = message.get("primary_location") or {} source = primary_location.get("source") or {} publisher = source.get("host_organization_name", None) journal = source.get("display_name", None) issn = source.get("issn_l", None) volume = message.get("biblio", {}).get("volume", None) issue = message.get("biblio", {}).get("issue", None) pages = message.get("biblio", {}).get("last_page", None) doi = message.get("doi") title = message.get("title") citation_count = message.get("cited_by_count") publication_year = message.get("publication_year") best_oa_location = message.get("best_oa_location") or {} pdf_url = best_oa_location.get("pdf_url", None) oa_license = best_oa_location.get("license", None) publication_date_str = message.get("publication_date", "") try: publication_date = ( datetime.fromisoformat(publication_date_str) if publication_date_str else None ) except ValueError: publication_date = None bibtex_type = BIBTEX_MAPPING.get(message.get("type") or "other", "misc") return DocDetails( key=None, bibtex_type=bibtex_type, bibtex=None, authors=sanitized_authors, publication_date=publication_date, year=publication_year, volume=volume, issue=issue, publisher=publisher, issn=issn, pages=pages, journal=journal, url=doi, title=title, citation_count=citation_count, doi=doi, license=oa_license, pdf_url=pdf_url, other=message, ) class OpenAlexProvider(DOIOrTitleBasedProvider): """An open source provider of scholarly documents. Includes information on work, researchers, institutions, journals, and research topics. """ async def get_doc_details( self, doi: str, client: httpx.AsyncClient, fields: Collection[str] | None = None ) -> DocDetails | None: """Get document details by DOI. Args: doi: The DOI of the document. client: Async HTTP client for any requests. fields: Specific fields to include in the request. Returns: The document details if found, otherwise None. """ return await get_doc_details_from_openalex( doi=doi, client=client, fields=fields ) async def search_by_title( self, query: str, client: httpx.AsyncClient, title_similarity_threshold: float = 0.75, fields: Collection[str] | None = None, ) -> DocDetails | None: """Search for document details by title. Args: query: The title query for the document. client: Async HTTP client for any requests. title_similarity_threshold: Threshold for title similarity. fields: Specific fields to include in the request. Returns: The document details if found, otherwise None. """ return await get_doc_details_from_openalex( title=query, client=client, title_similarity_threshold=title_similarity_threshold, fields=fields, ) async def _query(self, query: TitleAuthorQuery | DOIQuery) -> DocDetails | None: """Query the OpenAlex API via the provided DOI or title. Args: query: The query containing either a DOI or title. DOI is prioritized over title. Returns: The document details if found, otherwise None. """ if isinstance(query, DOIQuery): return await self.get_doc_details( doi=query.doi, client=query.client, fields=query.fields ) return await self.search_by_title( query=query.title, client=query.client, title_similarity_threshold=query.title_similarity_threshold, fields=query.fields, ) ================================================ FILE: src/paperqa/clients/retractions.py ================================================ from __future__ import annotations import csv import datetime import logging import os from pydantic import ValidationError from paperqa.types import DocDetails from .client_models import DOIQuery, MetadataPostProcessor from .crossref import download_retracted_dataset logger = logging.getLogger(__name__) class RetractionDataPostProcessor(MetadataPostProcessor[DOIQuery]): RETRACTION_CACHE_DAYS: int = -1 # Number of days to cache, -1 is keep forever def __init__(self, retraction_data_path: os.PathLike | str | None = None) -> None: if retraction_data_path is None: # Construct the path relative to module self.retraction_data_path = str( os.path.join( os.path.dirname(__file__), "client_data", "retractions.csv" ) ) else: self.retraction_data_path = str(retraction_data_path) self.retraction_filter: str = "Retraction" self.doi_set: set[str] = set() self.columns: list[str] = [ "RetractionDOI", "OriginalPaperDOI", "RetractionNature", ] def _has_cache_expired(self) -> bool: if self.RETRACTION_CACHE_DAYS < 0: return False creation_time = os.path.getctime(self.retraction_data_path) file_creation_date = datetime.datetime.fromtimestamp(creation_time).replace( tzinfo=datetime.UTC ) current_time = datetime.datetime.now(datetime.UTC) time_difference = current_time - file_creation_date return time_difference > datetime.timedelta(days=self.RETRACTION_CACHE_DAYS) def _is_csv_cached(self) -> bool: return os.path.exists(self.retraction_data_path) def _filter_dois(self) -> None: with open(self.retraction_data_path, newline="", encoding="utf-8") as csvfile: reader = csv.DictReader(csvfile) for row in reader: if row[self.columns[2]] == self.retraction_filter: self.doi_set.add(row[self.columns[0]]) self.doi_set.add(row[self.columns[1]]) async def load_data(self) -> None: if not self._is_csv_cached() or self._has_cache_expired(): await download_retracted_dataset(self.retraction_data_path) self._filter_dois() if not self.doi_set: raise RuntimeError("Retraction data was not found.") async def _process(self, query: DOIQuery, doc_details: DocDetails) -> DocDetails: if not self.doi_set: await self.load_data() return doc_details + DocDetails( doc_id=doc_details.doc_id, # ensure doc_id is preserved dockey=doc_details.dockey, # ensure dockey is preserved is_retracted=query.doi in self.doi_set, ) def query_creator(self, doc_details: DocDetails, **kwargs) -> DOIQuery | None: try: return DOIQuery(doi=doc_details.doi, **kwargs) except ValidationError: logger.debug( f"Must have a valid DOI to query retraction data:{doc_details.doi} " ) return None ================================================ FILE: src/paperqa/clients/semantic_scholar.py ================================================ from __future__ import annotations import logging import os from collections.abc import Collection from datetime import datetime from enum import IntEnum, auto from functools import partial from http import HTTPStatus from itertools import starmap from typing import Any import httpx from lmi.utils import SEMANTIC_SCHOLAR_KEY_HEADER from tenacity import before_sleep_log, retry, retry_if_exception, stop_after_attempt from paperqa.types import BibTeXSource, DocDetails from paperqa.utils import ( _get_with_retrying, clean_upbibtex, is_retryable, strings_similarity, union_collections_to_ordered_list, ) from .client_models import DOIOrTitleBasedProvider, DOIQuery, TitleAuthorQuery from .crossref import doi_to_bibtex from .exceptions import DOINotFoundError, make_flaky_ssl_error_predicate logger = logging.getLogger(__name__) # map from S2 fields to those in the DocDetails model # allows users to specify which fields to include in the response SEMANTIC_SCHOLAR_API_MAPPING: dict[str, Collection[str]] = { "title": {"title"}, "doi": {"externalIds"}, "authors": {"authors"}, "publication_date": {"publicationDate"}, "year": {"year"}, "volume": {"journal"}, "pages": {"journal"}, "journal": {"journal"}, "url": {"url"}, "pdf_url": {"openAccessPdf"}, "bibtex": {"citationStyles"}, "doi_url": {"url"}, "other": {"isOpenAccess", "influentialCitationCount", "publicationTypes", "venue"}, "citation_count": {"citationCount"}, "source_quality": {"journal"}, } SEMANTIC_SCHOLAR_API_REQUEST_TIMEOUT = float( os.environ.get("SEMANTIC_SCHOLAR_API_REQUEST_TIMEOUT", "10.0") ) # seconds SEMANTIC_SCHOLAR_API_FIELDS: str = ",".join( union_collections_to_ordered_list(SEMANTIC_SCHOLAR_API_MAPPING.values()) ) SEMANTIC_SCHOLAR_HOST = "api.semanticscholar.org" SEMANTIC_SCHOLAR_BASE_URL = f"https://{SEMANTIC_SCHOLAR_HOST}" class SemanticScholarSearchType(IntEnum): DEFAULT = auto() PAPER = auto() PAPER_RECOMMENDATIONS = auto() DOI = auto() FUTURE_CITATIONS = auto() PAST_REFERENCES = auto() GOOGLE = auto() MATCH = auto() def make_url_params( # noqa: PLR0911 self, params: dict[str, Any], query: str = "", offset: int = 0, limit: int = 1, include_base_url: bool = True, ) -> tuple[str, dict[str, Any]]: """ Make the target URL and in-place update the input URL parameters. Args: params: URL parameters to in-place update. query: Either a search query or a Semantic Scholar paper ID. offset: Offset to place in the URL parameters for the default search type. limit: Limit to place in the URL parameters for some search types. include_base_url: Set True (default) to include the base URL. Returns: Two-tuple of URL and URL parameters. """ base = SEMANTIC_SCHOLAR_BASE_URL if include_base_url else "" if self == SemanticScholarSearchType.DEFAULT: params["query"] = query.replace("-", " ") params["offset"] = offset params["limit"] = limit return f"{base}/graph/v1/paper/search", params if self == SemanticScholarSearchType.PAPER: return f"{base}/graph/v1/paper/{query}", params if self == SemanticScholarSearchType.PAPER_RECOMMENDATIONS: return f"{base}/recommendations/v1/papers/forpaper/{query}", params if self == SemanticScholarSearchType.DOI: return f"{base}/graph/v1/paper/DOI:{query}", params if self == SemanticScholarSearchType.FUTURE_CITATIONS: params["limit"] = limit return f"{base}/graph/v1/paper/{query}/citations", params if self == SemanticScholarSearchType.PAST_REFERENCES: params["limit"] = limit return f"{base}/graph/v1/paper/{query}/references", params if self == SemanticScholarSearchType.GOOGLE: params["limit"] = 1 return f"{base}/graph/v1/paper/search", params if self == SemanticScholarSearchType.MATCH: return f"{base}/graph/v1/paper/search/match", params raise NotImplementedError @retry( retry=retry_if_exception(make_flaky_ssl_error_predicate(SEMANTIC_SCHOLAR_HOST)), before_sleep=before_sleep_log(logger, logging.WARNING), stop=stop_after_attempt(5), ) async def _s2_get_with_retrying(url: str, **get_kwargs) -> dict[str, Any]: return await _get_with_retrying( url=url, headers=get_kwargs.pop("headers", {}) or semantic_scholar_headers(), timeout=get_kwargs.pop("timeout", SEMANTIC_SCHOLAR_API_REQUEST_TIMEOUT), # On 7/21/2025, flaky ClientResponseError was seen with 'citations' traversals on # paper ID 3516396ffa1fd32d4327e199d9b97ec67dc0439a with DOI 10.1126/science.2821624 # > aiohttp.client_exceptions.ClientResponseError: 403, message='Forbidden' retry_predicate=partial( is_retryable, additional_status_codes={HTTPStatus.FORBIDDEN} ), **get_kwargs, ) def s2_authors_match(authors: list[str], data: dict) -> bool: """Check if the authors in the data match the authors in the paper.""" AUTHOR_NAME_MIN_LENGTH = 2 s2_authors_noinit = [ " ".join([w for w in a["name"].split() if len(w) > AUTHOR_NAME_MIN_LENGTH]) for a in data["authors"] ] authors_noinit = [ " ".join([w for w in a.split() if len(w) > AUTHOR_NAME_MIN_LENGTH]) for a in authors ] # Note: we expect the number of authors to be possibly different return any( starmap( lambda x, y: x in y or y in x, zip(s2_authors_noinit, authors_noinit, strict=False), # noqa: FURB120 ) ) async def parse_s2_to_doc_details( paper_data: dict[str, Any], client: httpx.AsyncClient ) -> DocDetails: bibtex_source = BibTeXSource.SELF_GENERATED.value if "data" in paper_data: paper_data = paper_data["data"][0] # ArXiV check goes 1st to override another DOI if "ArXiv" in paper_data["externalIds"]: doi = "10.48550/arXiv." + paper_data["externalIds"]["ArXiv"] elif "DOI" in paper_data["externalIds"]: doi = paper_data["externalIds"]["DOI"] else: raise DOINotFoundError(f"Could not find DOI for {paper_data}.") # Should we give preference to auto-generation? if not ( bibtex := clean_upbibtex(paper_data.get("citationStyles", {}).get("bibtex", "")) ): try: bibtex = await doi_to_bibtex(doi, client) bibtex_source = BibTeXSource.CROSSREF.value except DOINotFoundError: bibtex = None else: bibtex_source = BibTeXSource.SEMANTIC_SCHOLAR.value publication_date = None if paper_data.get("publicationDate"): publication_date = datetime.strptime(paper_data["publicationDate"], "%Y-%m-%d") journal_data = paper_data.get("journal") or {} maybe_pdf_url = (paper_data.get("openAccessPdf") or {}).get("url") doc_details = DocDetails( key=None if not bibtex else bibtex.split("{")[1].split(",")[0], bibtex_type="article", # s2 should be basically all articles bibtex=bibtex, authors=[author["name"] for author in paper_data.get("authors", [])], publication_date=publication_date, year=paper_data.get("year"), volume=journal_data.get("volume"), pages=journal_data.get("pages"), journal=journal_data.get("name"), url=maybe_pdf_url, pdf_url=maybe_pdf_url, title=paper_data.get("title"), citation_count=paper_data.get("citationCount"), doi=doi, other={}, # Initialize empty dict for other fields ) # Add any additional fields to the 'other' dict for key, value in ( paper_data | {"client_source": ["semantic_scholar"], "bibtex_source": [bibtex_source]} ).items(): if key not in type(doc_details).model_fields: doc_details.other[key] = value return doc_details def semantic_scholar_headers() -> dict[str, str]: """Semantic Scholar API key if available, otherwise nothing.""" if api_key := os.environ.get("SEMANTIC_SCHOLAR_API_KEY"): return {SEMANTIC_SCHOLAR_KEY_HEADER: api_key} logger.warning( "SEMANTIC_SCHOLAR_API_KEY environment variable not set. Semantic Scholar API" " rate limits may apply." ) return {} HIGH_TITLE_SIMILARITY_THRESHOLD = 1.0 async def s2_title_search( title: str, client: httpx.AsyncClient, authors: list[str] | None = None, title_similarity_threshold: float = 0.75, fields: str = SEMANTIC_SCHOLAR_API_FIELDS, ) -> DocDetails: """Reconcile DOI from Semantic Scholar - which only checks title. So we manually check authors.""" if authors is None: authors = [] endpoint, params = SemanticScholarSearchType.MATCH.make_url_params( params={"query": title, "fields": fields} ) data = await _s2_get_with_retrying( url=endpoint, params=params, client=client, http_exception_mappings={ HTTPStatus.NOT_FOUND: DOINotFoundError(f"Could not find DOI for {title}.") }, ) # In case we matched >1, sort by similarity of title try: title_similarity, result = max( # need to check if nested under a 'data' key or not (depends on filtering) (strings_similarity(entry["title"], title), entry) for entry in data.get("data", data) ) except ValueError as exc: # ValueError: S2 may return {"data": []} causing max() on an empty iterable to # throw a ValueError raise DOINotFoundError(f"No results found for title {title}.") from exc except (KeyError, IndexError) as exc: raise DOINotFoundError( f"Unexpected Semantic Scholar search/match endpoint shape for title {title}" f" given data {data}." ) from exc if authors: if title_similarity < HIGH_TITLE_SIMILARITY_THRESHOLD and not s2_authors_match( authors, data=result ): raise DOINotFoundError( f"Semantic scholar results did not match for {title!r} - author and title disagreement." ) if title_similarity < title_similarity_threshold: raise DOINotFoundError( f"Semantic scholar results did not match for {title!r} - title disagreement." ) elif title_similarity < HIGH_TITLE_SIMILARITY_THRESHOLD: raise DOINotFoundError( f"Semantic scholar results did not match for {title!r} - title disagreement and no authors provided." ) return await parse_s2_to_doc_details(data, client) @retry( retry=retry_if_exception(make_flaky_ssl_error_predicate(SEMANTIC_SCHOLAR_HOST)), before_sleep=before_sleep_log(logger, logging.WARNING), stop=stop_after_attempt(5), ) async def get_s2_doc_details_from_doi( doi: str | None, client: httpx.AsyncClient, fields: Collection[str] | None = None, ) -> DocDetails: """Get paper details from Semantic Scholar given a DOI.""" # should always be string, runtime error catch if doi is None: raise ValueError("Valid DOI must be provided.") if fields: s2_fields = ",".join( union_collections_to_ordered_list( SEMANTIC_SCHOLAR_API_MAPPING[f] for f in fields if f in SEMANTIC_SCHOLAR_API_MAPPING ) ) else: s2_fields = SEMANTIC_SCHOLAR_API_FIELDS return await parse_s2_to_doc_details( paper_data=await _s2_get_with_retrying( url=f"{SEMANTIC_SCHOLAR_BASE_URL}/graph/v1/paper/DOI:{doi}", params={"fields": s2_fields}, client=client, http_exception_mappings={ HTTPStatus.NOT_FOUND: DOINotFoundError(f"Could not find DOI for {doi}.") }, ), client=client, ) async def get_s2_doc_details_from_title( title: str | None, client: httpx.AsyncClient, authors: list[str] | None = None, fields: Collection[str] | None = None, title_similarity_threshold: float = 0.75, ) -> DocDetails: """Get paper details from Semantic Scholar given a title. Optionally match against authors if provided. """ if title is None: raise ValueError("Valid title must be provided.") if authors is None: authors = [] if fields: s2_fields = ",".join( union_collections_to_ordered_list( SEMANTIC_SCHOLAR_API_MAPPING[f] for f in fields if f in SEMANTIC_SCHOLAR_API_MAPPING ) ) else: s2_fields = SEMANTIC_SCHOLAR_API_FIELDS return await s2_title_search( title, authors=authors, client=client, title_similarity_threshold=title_similarity_threshold, fields=s2_fields, ) class SemanticScholarProvider(DOIOrTitleBasedProvider): async def _query(self, query: TitleAuthorQuery | DOIQuery) -> DocDetails | None: if isinstance(query, DOIQuery): return await get_s2_doc_details_from_doi( doi=query.doi, client=query.client, fields=query.fields ) return await get_s2_doc_details_from_title( title=query.title, authors=query.authors, client=query.client, title_similarity_threshold=query.title_similarity_threshold, fields=query.fields, ) ================================================ FILE: src/paperqa/clients/unpaywall.py ================================================ from __future__ import annotations import os from datetime import datetime from http import HTTPStatus from typing import Literal from urllib.parse import quote import httpx from pydantic import BaseModel, ConfigDict, ValidationError from paperqa.types import DocDetails from paperqa.utils import _get_with_retrying, strings_similarity from .client_models import DOIOrTitleBasedProvider, DOIQuery, TitleAuthorQuery from .exceptions import DOINotFoundError UNPAYWALL_BASE_URL = "https://api.unpaywall.org/v2/" UNPAYWALL_TIMEOUT = float(os.environ.get("UNPAYWALL_TIMEOUT", "10.0")) # seconds class Author(BaseModel): model_config = ConfigDict(extra="allow") family: str | None = None given: str | None = None sequence: str | None = None affiliation: list[dict[str, str]] | None = None class BestOaLocation(BaseModel): model_config = ConfigDict(extra="allow") updated: datetime | Literal["deprecated"] | None = None url: str | None = None url_for_pdf: str | None = None url_for_landing_page: str | None = None evidence: str | Literal["deprecated"] | None = None # noqa: PYI051 license: str | None = None version: str | None = None host_type: str | None = None is_best: bool | None = None pmh_id: str | None = None endpoint_id: str | None = None repository_institution: str | None = None oa_date: str | None = None class UnpaywallResponse(BaseModel): doi: str doi_url: str | None = None title: str | None = None genre: str | None = None is_paratext: bool | None = None published_date: str | None = None year: int | None = None journal_name: str | None = None journal_issns: str | None = None journal_issn_l: str | None = None journal_is_oa: bool | None = None journal_is_in_doaj: bool | None = None publisher: str | None = None is_oa: bool oa_status: str | None = None has_repository_copy: bool | None = None best_oa_location: BestOaLocation | None = None updated: datetime | None = None z_authors: list[Author] | None = None class SearchResponse(BaseModel): response: UnpaywallResponse score: float snippet: str class SearchResults(BaseModel): results: list[SearchResponse] elapsed_seconds: float class UnpaywallProvider(DOIOrTitleBasedProvider): async def get_doc_details(self, doi: str, client: httpx.AsyncClient) -> DocDetails: try: results = UnpaywallResponse( **( await _get_with_retrying( url=( f"{UNPAYWALL_BASE_URL}{doi}" f"?email={os.environ.get('UNPAYWALL_EMAIL', 'example@papercrow.ai')}" ), client=client, timeout=UNPAYWALL_TIMEOUT, http_exception_mappings={ HTTPStatus.NOT_FOUND: DOINotFoundError( f"Unpaywall not find DOI for {doi}." ) }, ) ) ) except ValidationError as e: raise DOINotFoundError( f"Unpaywall results returned with a bad schema for DOI {doi!r}." ) from e return self._create_doc_details(results) async def search_by_title( self, query: str, client: httpx.AsyncClient, title_similarity_threshold: float = 0.75, ) -> DocDetails: try: results = SearchResults( **( await _get_with_retrying( url=( f"{UNPAYWALL_BASE_URL}search?query={quote(query)}" f"&email={os.environ.get('UNPAYWALL_EMAIL', 'example@papercrow.ai')}" ), client=client, timeout=UNPAYWALL_TIMEOUT, http_exception_mappings={ HTTPStatus.NOT_FOUND: DOINotFoundError( f"Could not find DOI for {query}." ) }, ) ) ).results except ValidationError as e: raise DOINotFoundError( f"Unpaywall results returned with a bad schema for title {query!r}." ) from e if not results: raise DOINotFoundError( f"Unpaywall results did not match for title {query!r}." ) details = self._create_doc_details(results[0].response) if ( strings_similarity( details.title or "", query, ) < title_similarity_threshold ): raise DOINotFoundError( f"Unpaywall results did not match for title {query!r}." ) return details def _create_doc_details(self, data: UnpaywallResponse) -> DocDetails: # extract pdf location if present pdf_url: str | None = None license: str | None = None # noqa: A001 if data.best_oa_location: pdf_url = data.best_oa_location.url_for_pdf license = data.best_oa_location.license # noqa: A001 return DocDetails( authors=[ f"{author.given} {author.family}" for author in data.z_authors or [] ], publication_date=( None if not data.published_date else datetime.strptime(data.published_date, "%Y-%m-%d") ), year=data.year, journal=data.journal_name, publisher=data.publisher, url=None if not data.best_oa_location else data.best_oa_location.url, title=data.title, doi=data.doi, doi_url=data.doi_url, license=license, pdf_url=pdf_url, other={ "genre": data.genre, "is_paratext": data.is_paratext, "journal_issns": data.journal_issns, "journal_issn_l": data.journal_issn_l, "journal_is_oa": data.journal_is_oa, "journal_is_in_doaj": data.journal_is_in_doaj, "is_oa": data.is_oa, "oa_status": data.oa_status, "has_repository_copy": data.has_repository_copy, "best_oa_location": ( None if not data.best_oa_location else data.best_oa_location.model_dump() ), }, ) async def _query(self, query: TitleAuthorQuery | DOIQuery) -> DocDetails | None: if isinstance(query, DOIQuery): return await self.get_doc_details(doi=query.doi, client=query.client) return await self.search_by_title( query=query.title, client=query.client, title_similarity_threshold=query.title_similarity_threshold, ) ================================================ FILE: src/paperqa/configs/clinical_trials.json ================================================ { "answer": { "evidence_k": 15, "answer_max_sources": 5, "max_concurrent_requests": 10 }, "agent": { "tool_names": [ "gather_evidence", "paper_search", "gen_answer", "clinical_trials_search", "complete" ] }, "parsing": { "use_doc_details": true, "reader_config": { "chunk_chars": 9000, "overlap": 750 } } } ================================================ FILE: src/paperqa/configs/contracrow.json ================================================ { "llm": "claude-3-5-sonnet-20240620", "llm_config": null, "summary_llm": "claude-3-5-sonnet-20240620", "summary_llm_config": null, "embedding": "hybrid-text-embedding-3-large", "embedding_config": null, "temperature": 0.0, "batch_size": 1, "texts_index_mmr_lambda": 1.0, "verbosity": 0, "answer": { "evidence_k": 30, "evidence_retrieval": true, "evidence_summary_length": "about 300 words", "evidence_skip_summary": false, "answer_max_sources": 15, "answer_length": "about 200 words, but can be longer", "max_concurrent_requests": 4, "answer_filter_extra_background": false }, "parsing": { "use_doc_details": true, "reader_config": { "chunk_chars": 7000, "overlap": 250 }, "citation_prompt": "Provide the citation for the following text in MLA Format. Do not write an introductory sentence. If reporting date accessed, the current year is 2024\n\n{text}\n\nCitation:", "structured_citation_prompt": "Extract the title, authors, and doi as a JSON from this MLA citation. If any field can not be found, return it as null. Use title, authors, and doi as keys, author's value should be a list of authors. {citation}\n\nCitation JSON:", "disable_doc_valid_check": false }, "prompts": { "summary": "Summarize the excerpt below to help answer a question.\n\nExcerpt from {citation}\n\n----\n\n{text}\n\n----\n\nQuestion: {question}\n\nDo not directly answer the question, instead summarize to give evidence to help answer the question. Stay detailed; report specific numbers, equations, or direct quotes (marked with quotation marks). Reply \"Not applicable\" if the excerpt is irrelevant. At the end of your response, provide an integer score from 1-10 on a newline indicating relevance to question. Do not explain your score.\n\nRelevant Information Summary ({summary_length}):", "qa": "Determine if the claim below is contradicted by the context below\n\n\n{context}\n\n----\n\nClaim: {question}\n\n\nDetermine if the claim is contradicted by the context. For each part of your response, indicate which sources most support it via citation keys at the end of sentences, like (pqac-1234abcd). Only cite from the context below and only use the valid keys.\n\nRespond with the following XML format:\n\n\n ...\n \n\n\n\nwhere `reasoning` is your reasoning ({answer_length}) about if the claim is being contradicted. `label` is one of the following (must match exactly): \n\nexplicit contradiction\nstrong contradiction\ncontradiction\nnuanced contradiction\npossibly a contradiction\nlack of evidence\npossibly an agreement\nnuanced agreement\nagreement\nstrong agreement\nexplicit agreement\n\nDon't worry about other contradictions or agreements in the context, only focus on the specific claim. If there is no evidence for the claim, you should choose lack of evidence.", "select": "Select papers that may help answer the question below. Papers are listed as $KEY: $PAPER_INFO. Return a list of keys, separated by commas. Return \"None\", if no papers are applicable. Choose papers that are relevant, from reputable sources, and timely (if the question requires timely information).\n\nQuestion: {question}\n\nPapers: {papers}\n\nSelected keys:", "pre": null, "post": null, "system": "Answer in a direct and concise tone. Your audience is an expert, so be highly specific. If there are ambiguous terms or acronyms, first define them.", "use_json": true, "summary_json": "Excerpt from {citation}\n\n----\n\n{text}\n\n----\n\nQuestion: {question}\n\n", "summary_json_system": "Provide a summary of the relevant information that could help determine if a claim is contradicted or supported by this excerpt. The excerpt may be irrelevant. Do not directly answer if it is contradicted - only summarize relevant information. Respond with the following JSON format:\n\n{{\n \"summary\": \"...\",\n \"relevance_score\": \"...\"\n}}\n\nwhere `summary` is relevant information from excerpt ({summary_length}) and `relevance_score` is the relevance of `summary` to support or contradict the claim (integer out of 10). If any string entry in the JSON has newlines, be sure to escape them. " }, "agent": { "agent_llm": "gpt-4o-2024-08-06", "agent_type": "ToolSelector", "agent_system_prompt": "You are a helpful AI assistant.", "agent_prompt": "Answer question: {question}\n\nSearch for papers, gather evidence, collect papers cited in evidence then re-gather evidence, answer, and complete. Gathering evidence will do nothing if you have not done a new search or collected new papers. If you do not have enough evidence to generate a good answer, you can:\n- Search for more papers (preferred)\n- Collect papers cited by previous evidence (preferred)\n- Gather more evidence using a different phrase\nIf you search for more papers or collect new papers cited by previous evidence, remember to gather evidence again. Once you have five or more pieces of evidence from multiple sources, or you have tried a few times, call the {complete_tool_name} tool to terminate. The current status of evidence/papers/cost is {status}", "search_count": 12, "timeout": 500.0, "tool_names": null } } ================================================ FILE: src/paperqa/configs/debug.json ================================================ { "llm": "claude-3-haiku-20240307", "summary_llm": "claude-3-haiku-20240307", "answer": { "evidence_k": 2, "evidence_summary_length": "25 to 50 words", "answer_max_sources": 2, "answer_length": "50 to 100 words", "max_concurrent_requests": 5 }, "parsing": { "use_doc_details": false, "defer_embedding": true }, "prompts": { "use_json": false, "context_inner": "{name}: {text}" } } ================================================ FILE: src/paperqa/configs/fast.json ================================================ { "answer": { "evidence_k": 5, "evidence_summary_length": "25 to 50 words", "answer_max_sources": 3, "answer_length": "50 to 100 words", "max_concurrent_requests": 5 }, "parsing": { "use_doc_details": false }, "prompts": { "use_json": false, "context_inner": "{name}: {text}" }, "agent": { "agent_type": "fake" } } ================================================ FILE: src/paperqa/configs/high_quality.json ================================================ { "answer": { "evidence_k": 20, "answer_max_sources": 5, "max_concurrent_requests": 10 }, "parsing": { "use_doc_details": true, "reader_config": { "chunk_chars": 7000, "overlap": 250 } } } ================================================ FILE: src/paperqa/configs/openreview.json ================================================ { "llm": "gemini/gemini-2.0-flash-exp", "llm_config": { "model_name": "gemini/gemini-2.0-flash-exp", "litellm_params": { "model": "gemini/gemini-2.0-flash-exp", "api_key": null } }, "summary_llm": "gemini/gemini-2.0-flash-exp", "summary_llm_config": { "model_name": "gemini/gemini-2.0-flash-exp", "litellm_params": { "model": "gemini/gemini-2.0-flash-exp", "api_key": null } }, "embedding": "ollama/granite3-dense", "paper_directory": "my_papers", "verbosity": 3, "agent": { "agent_llm": "gemini/gemini-2.0-flash-exp", "agent_llm_config": { "model_name": "gemini/gemini-2.0-flash-exp", "litellm_params": { "model": "gemini/gemini-2.0-flash-exp", "api_key": null } }, "return_paper_metadata": false }, "parsing": { "use_doc_details": false, "reader_config": { "chunk_chars": 3000000 } } } ================================================ FILE: src/paperqa/configs/search_only_clinical_trials.json ================================================ { "answer": { "evidence_k": 15, "answer_max_sources": 5, "max_concurrent_requests": 10 }, "agent": { "tool_names": [ "gather_evidence", "gen_answer", "clinical_trials_search", "complete" ] }, "parsing": { "use_doc_details": true, "reader_config": { "chunk_chars": 9000, "overlap": 750 } } } ================================================ FILE: src/paperqa/configs/tier1_limits.json ================================================ { "answer": { "evidence_k": 5, "evidence_summary_length": "25 to 50 words", "answer_max_sources": 3, "answer_length": "50 to 100 words", "max_concurrent_requests": 5 }, "parsing": { "use_doc_details": false }, "prompts": { "use_json": true, "context_inner": "{name}: {text}" }, "llm_config": { "rate_limit": { "gpt-4o": "30000 per 1 minute", "gpt-4o-2024-08-06": "30000 per 1 minute", "gpt-4o-2024-05-13": "30000 per 1 minute", "gpt-4o-mini": "200000 per 1 minute", "gpt-4o-mini-2024-07-18": "200000 per 1 minute", "gpt-4-turbo": "30000 per 1 minute", "gpt-4-turbo-2024-04-09": "30000 per 1 minute", "gpt-4-0613": "10000 per 1 minute", "gpt-4-0314": "10000 per 1 minute", "gpt-4": "10000 per 1 minute", "gpt-3.5-turbo-0125": "200000 per 1 minute", "gpt-3.5-turbo": "200000 per 1 minute", "gpt-3.5-turbo-1106": "200000 per 1 minute" } }, "summary_llm_config": { "rate_limit": { "gpt-4o": "30000 per 1 minute", "gpt-4o-2024-08-06": "30000 per 1 minute", "gpt-4o-2024-05-13": "30000 per 1 minute", "gpt-4o-mini": "200000 per 1 minute", "gpt-4o-mini-2024-07-18": "200000 per 1 minute", "gpt-4-turbo": "30000 per 1 minute", "gpt-4-turbo-2024-04-09": "30000 per 1 minute", "gpt-4-0613": "10000 per 1 minute", "gpt-4-0314": "10000 per 1 minute", "gpt-4": "10000 per 1 minute", "gpt-3.5-turbo-0125": "200000 per 1 minute", "gpt-3.5-turbo": "200000 per 1 minute", "gpt-3.5-turbo-1106": "200000 per 1 minute" } }, "embedding_config": { "rate_limit": "1000000 per 1 minute" } } ================================================ FILE: src/paperqa/configs/tier2_limits.json ================================================ { "answer": { "evidence_k": 8, "answer_max_sources": 3, "max_concurrent_requests": 8 }, "parsing": { "use_doc_details": true, "reader_config": { "chunk_chars": 7000, "overlap": 250 } }, "prompts": { "use_json": true }, "llm_config": { "rate_limit": { "gpt-4o": "450000 per 1 minute", "gpt-4o-2024-08-06": "450000 per 1 minute", "gpt-4o-2024-05-13": "450000 per 1 minute", "gpt-4o-mini": "2000000 per 1 minute", "gpt-4o-mini-2024-07-18": "2000000 per 1 minute", "gpt-4-turbo": "450000 per 1 minute", "gpt-4-turbo-2024-04-09": "450000 per 1 minute", "gpt-4-0613": "40000 per 1 minute", "gpt-4-0314": "40000 per 1 minute", "gpt-4": "40000 per 1 minute", "gpt-3.5-turbo-0125": "2000000 per 1 minute", "gpt-3.5-turbo": "2000000 per 1 minute", "gpt-3.5-turbo-1106": "2000000 per 1 minute" } }, "summary_llm_config": { "rate_limit": { "gpt-4o": "450000 per 1 minute", "gpt-4o-2024-08-06": "450000 per 1 minute", "gpt-4o-2024-05-13": "450000 per 1 minute", "gpt-4o-mini": "2000000 per 1 minute", "gpt-4o-mini-2024-07-18": "2000000 per 1 minute", "gpt-4-turbo": "450000 per 1 minute", "gpt-4-turbo-2024-04-09": "450000 per 1 minute", "gpt-4-0613": "40000 per 1 minute", "gpt-4-0314": "40000 per 1 minute", "gpt-4": "40000 per 1 minute", "gpt-3.5-turbo-0125": "2000000 per 1 minute", "gpt-3.5-turbo": "2000000 per 1 minute", "gpt-3.5-turbo-1106": "2000000 per 1 minute" } }, "embedding_config": { "rate_limit": "1000000 per 1 minute" } } ================================================ FILE: src/paperqa/configs/tier3_limits.json ================================================ { "answer": { "evidence_k": 8, "answer_max_sources": 3, "max_concurrent_requests": 8 }, "parsing": { "use_doc_details": true, "reader_config": { "chunk_chars": 7000, "overlap": 250 } }, "prompts": { "use_json": true }, "llm_config": { "rate_limit": { "gpt-4o": "800000 per 1 minute", "gpt-4o-2024-08-06": "800000 per 1 minute", "gpt-4o-2024-05-13": "800000 per 1 minute", "gpt-4o-mini": "4000000 per 1 minute", "gpt-4o-mini-2024-07-18": "4000000 per 1 minute", "gpt-4-turbo": "600000 per 1 minute", "gpt-4-turbo-2024-04-09": "600000 per 1 minute", "gpt-4-0613": "80000 per 1 minute", "gpt-4-0314": "80000 per 1 minute", "gpt-4": "80000 per 1 minute", "gpt-3.5-turbo-0125": "4000000 per 1 minute", "gpt-3.5-turbo": "4000000 per 1 minute", "gpt-3.5-turbo-1106": "4000000 per 1 minute" } }, "summary_llm_config": { "rate_limit": { "gpt-4o": "800000 per 1 minute", "gpt-4o-2024-08-06": "800000 per 1 minute", "gpt-4o-2024-05-13": "800000 per 1 minute", "gpt-4o-mini": "4000000 per 1 minute", "gpt-4o-mini-2024-07-18": "4000000 per 1 minute", "gpt-4-turbo": "600000 per 1 minute", "gpt-4-turbo-2024-04-09": "600000 per 1 minute", "gpt-4-0613": "80000 per 1 minute", "gpt-4-0314": "80000 per 1 minute", "gpt-4": "80000 per 1 minute", "gpt-3.5-turbo-0125": "4000000 per 1 minute", "gpt-3.5-turbo": "4000000 per 1 minute", "gpt-3.5-turbo-1106": "4000000 per 1 minute" } }, "embedding_config": { "rate_limit": "5000000 per 1 minute" } } ================================================ FILE: src/paperqa/configs/tier4_limits.json ================================================ { "answer": { "evidence_k": 10, "answer_max_sources": 5, "max_concurrent_requests": 8 }, "parsing": { "use_doc_details": true, "reader_config": { "chunk_chars": 7000, "overlap": 250 } }, "prompts": { "use_json": true }, "llm_config": { "rate_limit": { "gpt-4o": "2000000 per 1 minute", "gpt-4o-2024-08-06": "2000000 per 1 minute", "gpt-4o-2024-05-13": "2000000 per 1 minute", "gpt-4o-mini": "10000000 per 1 minute", "gpt-4o-mini-2024-07-18": "10000000 per 1 minute", "gpt-4-turbo": "800000 per 1 minute", "gpt-4-turbo-2024-04-09": "800000 per 1 minute", "gpt-4-0613": "300000 per 1 minute", "gpt-4-0314": "300000 per 1 minute", "gpt-4": "300000 per 1 minute", "gpt-3.5-turbo-0125": "10000000 per 1 minute", "gpt-3.5-turbo": "10000000 per 1 minute", "gpt-3.5-turbo-1106": "10000000 per 1 minute" } }, "summary_llm_config": { "rate_limit": { "gpt-4o": "2000000 per 1 minute", "gpt-4o-2024-08-06": "2000000 per 1 minute", "gpt-4o-2024-05-13": "2000000 per 1 minute", "gpt-4o-mini": "10000000 per 1 minute", "gpt-4o-mini-2024-07-18": "10000000 per 1 minute", "gpt-4-turbo": "800000 per 1 minute", "gpt-4-turbo-2024-04-09": "800000 per 1 minute", "gpt-4-0613": "300000 per 1 minute", "gpt-4-0314": "300000 per 1 minute", "gpt-4": "300000 per 1 minute", "gpt-3.5-turbo-0125": "10000000 per 1 minute", "gpt-3.5-turbo": "10000000 per 1 minute", "gpt-3.5-turbo-1106": "10000000 per 1 minute" } }, "embedding_config": { "rate_limit": "5000000 per 1 minute" } } ================================================ FILE: src/paperqa/configs/tier5_limits.json ================================================ { "answer": { "evidence_k": 15, "answer_max_sources": 5, "max_concurrent_requests": 8 }, "parsing": { "use_doc_details": true, "reader_config": { "chunk_chars": 7000, "overlap": 250 } }, "prompts": { "use_json": true }, "llm_config": { "rate_limit": { "gpt-4o": "30000000 per 1 minute", "gpt-4o-2024-08-06": "30000000 per 1 minute", "gpt-4o-2024-05-13": "30000000 per 1 minute", "gpt-4o-mini": "150000000 per 1 minute", "gpt-4o-mini-2024-07-18": "150000000 per 1 minute", "gpt-4-turbo": "2000000 per 1 minute", "gpt-4-turbo-2024-04-09": "2000000 per 1 minute", "gpt-4-0613": "1000000 per 1 minute", "gpt-4-0314": "1000000 per 1 minute", "gpt-4": "1000000 per 1 minute", "gpt-3.5-turbo-0125": "50000000 per 1 minute", "gpt-3.5-turbo": "50000000 per 1 minute", "gpt-3.5-turbo-1106": "50000000 per 1 minute" } }, "summary_llm_config": { "rate_limit": { "gpt-4o": "30000000 per 1 minute", "gpt-4o-2024-08-06": "30000000 per 1 minute", "gpt-4o-2024-05-13": "30000000 per 1 minute", "gpt-4o-mini": "150000000 per 1 minute", "gpt-4o-mini-2024-07-18": "150000000 per 1 minute", "gpt-4-turbo": "2000000 per 1 minute", "gpt-4-turbo-2024-04-09": "2000000 per 1 minute", "gpt-4-0613": "1000000 per 1 minute", "gpt-4-0314": "1000000 per 1 minute", "gpt-4": "1000000 per 1 minute", "gpt-3.5-turbo-0125": "50000000 per 1 minute", "gpt-3.5-turbo": "50000000 per 1 minute", "gpt-3.5-turbo-1106": "50000000 per 1 minute" } }, "embedding_config": { "rate_limit": "10000000 per 1 minute" } } ================================================ FILE: src/paperqa/configs/wikicrow.json ================================================ { "llm": "gpt-4-turbo-2024-04-09", "llm_config": null, "summary_llm": "gpt-4-turbo-2024-04-09", "summary_llm_config": null, "embedding": "hybrid-text-embedding-3-small", "embedding_config": null, "temperature": 0.0, "batch_size": 1, "texts_index_mmr_lambda": 1.0, "verbosity": 0, "answer": { "evidence_k": 25, "evidence_retrieval": true, "evidence_summary_length": "about 300 words", "evidence_skip_summary": false, "answer_max_sources": 12, "answer_length": "about 200 words, but can be longer", "max_concurrent_requests": 4, "answer_filter_extra_background": false }, "parsing": { "use_doc_details": true, "reader_config": { "chunk_chars": 7000, "overlap": 1750 }, "citation_prompt": "Provide the citation for the following text in MLA Format. Do not write an introductory sentence. If reporting date accessed, the current year is 2024\n\n{text}\n\nCitation:", "structured_citation_prompt": "Extract the title, authors, and doi as a JSON from this MLA citation. If any field can not be found, return it as null. Use title, authors, and doi as keys, author's value should be a list of authors. {citation}\n\nCitation JSON:", "disable_doc_valid_check": false }, "prompts": { "summary": "Summarize the excerpt below to help answer a question.\n\nExcerpt from {citation}\n\n----\n\n{text}\n\n----\n\nQuestion: {question}\n\nDo not directly answer the question, instead summarize to give evidence to help answer the question. Stay detailed; report specific numbers, equations, or direct quotes (marked with quotation marks). Reply \"Not applicable\" if the excerpt is irrelevant. At the end of your response, provide an integer score from 1-10 on a newline indicating relevance to question. Do not explain your score.\n\nRelevant Information Summary ({summary_length}):", "qa": "Answer the question below with the context.\n\nContext (with relevance scores):\n\n{context}\n\n----\n\nQuestion: {question}\n\nWrite an answer based on the context. If the context provides insufficient information and the question cannot be directly answered, reply \"I cannot answer.\" For each part of your answer, indicate which sources most support it via citation keys at the end of sentences, like (pqac-1234abcd). Only cite from the context below and only use the valid keys. Write in the style of a Wikipedia article, with concise sentences and coherent paragraphs. The context comes from a variety of sources and is only a summary, so there may inaccuracies or ambiguities. Make sure the gene_names exactly match the gene name in the question before using a context. If quotes are present and relevant, use them in the answer. This answer will go directly onto Wikipedia, so do not add any extraneous information. Do not reference this prompt or your context. Do not include general summary information, it will be provided in an \"Overview\" section. Do not include the section title in your output. Avoid using adverb phrases like \"furthermore\", \"additionally\", and \"moreover\".\n\nAnswer ({answer_length}):", "select": "Select papers that may help answer the question below. Papers are listed as $KEY: $PAPER_INFO. Return a list of keys, separated by commas. Return \"None\", if no papers are applicable. Choose papers that are relevant, from reputable sources, and timely (if the question requires timely information).\n\nQuestion: {question}\n\nPapers: {papers}\n\nSelected keys:", "pre": null, "post": null, "system": "Answer in a direct and concise tone.", "use_json": true, "summary_json": "Excerpt from {citation}\n\n----\n\n{text}\n\n----\n\nQuestion: {question}\n\n", "summary_json_system": "Provide a summary of the relevant information that could help answer the question based on the excerpt. The excerpt may be irrelevant. Do not directly answer the question - only summarize relevant information. \n\nRespond with the following JSON format:\n\n{{\n \"summary\": \"...\",\n \"relevance_score\": \"...\",\n \"gene_name: \"...\"\n}}\n\nwhere `summary` is relevant information from text - {summary_length}, \n`gene_name` is the gene discussed in the excerpt (may be different than query), and `relevance_score` is the relevance of `summary` to answer the question (integer out of 10)" }, "agent": { "agent_llm": "gpt-4-turbo-2024-04-09", "agent_type": "ToolSelector", "agent_system_prompt": "You are a helpful AI assistant.", "agent_prompt": "Answer question: {question}\n\nSearch for papers, gather evidence, collect papers cited in evidence then re-gather evidence, answer, and complete. Gathering evidence will do nothing if you have not done a new search or collected new papers. If you do not have enough evidence to generate a good answer, you can:\n- Search for more papers (preferred)\n- Collect papers cited by previous evidence (preferred)\n- Gather more evidence using a different phrase\nIf you search for more papers or collect new papers cited by previous evidence, remember to gather evidence again. Once you have five or more pieces of evidence from multiple sources, or you have tried a few times, call the {complete_tool_name} tool to terminate. The current status of evidence/papers/cost is {status}", "search_count": 12, "timeout": 500.0, "tool_names": null } } ================================================ FILE: src/paperqa/contrib/__init__.py ================================================ from .zotero import ZoteroDB __all__ = ["ZoteroDB"] ================================================ FILE: src/paperqa/contrib/openreview_paper_helper.py ================================================ import json import logging import os from pathlib import Path from typing import Any import anyio import httpx import httpx_aiohttp from aviary.core import Message from lmi import LiteLLMModel from pydantic import BaseModel, Field from paperqa import Docs, Settings try: import openreview except ImportError: openreview = None logger = logging.getLogger(__name__) class PaperSuggestion(BaseModel): submission_id: str = Field(description="The ID of the submission") explanation: str = Field(description="Reasoning for why this paper is relevant") class RelevantPapersResponse(BaseModel): suggested_papers: list[PaperSuggestion] = Field( description="List of suggested papers with their IDs and explanations" ) reasoning_step_by_step: str = Field( description="Step-by-step reasoning for the selection" ) RELEVANT_PAPERS_SCHEMA = RelevantPapersResponse.model_json_schema() class OpenReviewPaperHelper: def __init__( self, settings: Settings, venue_id: str | None = "ICLR.cc/2025/Conference", username: str | None = None, password: str | None = None, ) -> None: self.settings = settings Path(settings.agent.index.paper_directory).mkdir(parents=True, exist_ok=True) if openreview is None: raise ImportError( "openreview requires the 'openreview-py' extra. Please run: `pip" " install paper-qa[openreview]`." ) self.client = openreview.api.OpenReviewClient( baseurl="https://api2.openreview.net", username=username or os.getenv("OPENREVIEW_USERNAME"), password=password or os.getenv("OPENREVIEW_PASSWORD"), ) self.venue_id = venue_id self.llm_model = LiteLLMModel( name=self.settings.llm, config=self.settings.llm_config ) def get_venues(self) -> list[str]: """Get list of available venues.""" return self.client.get_group(id="venues").members def get_submissions(self) -> list[Any]: """Get all submissions for the current venue.""" logger.info(f"Fetching submissions for venue {self.venue_id}") return self.client.get_all_notes(content={"venueid": self.venue_id}) def create_submission_string(self, submissions: list[Any]) -> str: """Creates a string containing the id, title, and abstract of all submissions.""" submission_info_string = "" for submission in submissions: paper = { "submission_id": submission.id, "title": submission.content["title"]["value"], "abstract": submission.content["abstract"]["value"], } submission_info_string += f"{paper}\n" return submission_info_string async def fetch_relevant_papers(self, question: str) -> dict[str, Any]: """Get relevant papers for a given question using LLM.""" submissions = self.get_submissions() submission_string = self.create_submission_string(submissions) chunk_size = self.settings.parsing.reader_config["chunk_chars"] if len(submission_string) > chunk_size: chunks = [ submission_string[i : i + chunk_size] for i in range(0, len(submission_string), chunk_size) ] else: chunks = [submission_string] relevant_papers = [] for chunk in chunks: logger.info(f"Fetching relevant papers for question: {question}") relevant_papers += await self._get_relevant_papers_chunk(question, chunk) subs = [s for s in submissions if s.id in set(relevant_papers)] await self.download_papers(subs) return {sub.id: sub for sub in subs} async def _get_relevant_papers_chunk(self, question: str, chunk: str) -> list[Any]: prompt = ( chunk + "You are the helper model that aims to get up to 20 most relevant papers" " for the user's question. " + "User's question:\n" ) response = await self.llm_model.call_single( messages=[Message(role="user", content=prompt + question)], output_type=RELEVANT_PAPERS_SCHEMA, ) content = json.loads(str(response.text)) return [p["submission_id"] for p in content["suggested_papers"]] async def download_papers(self, submissions: list[Any]) -> None: """Download PDFs for given submissions.""" downloaded_papers = Path( # noqa: ASYNC240 self.settings.agent.index.paper_directory ).rglob("*.pdf") downloaded_ids = [p.stem for p in downloaded_papers] logger.info("Downloading PDFs for relevant papers.") for submission in submissions: if submission.id not in downloaded_ids: await self._download_pdf(submission) async def _download_pdf(self, submission: Any) -> bool: """Download a single PDF.""" pdf_link = f"https://openreview.net/{submission.content['pdf']['value']}" async with httpx_aiohttp.HttpxAiohttpClient() as client: response = await client.get(pdf_link) if response.status_code == httpx.codes.OK.value: async with await anyio.open_file( f"{self.settings.agent.index.paper_directory}/{submission.id}.pdf", "wb" ) as f: await f.write(response.content) return True logger.warning( f"Failed to download the PDF. Status code: {response.status_code}, text:" f" {response.text}" ) return False async def aadd_docs( self, subs: dict[str, Any] | None = None, docs: Docs | None = None ) -> Docs: if docs is None: docs = Docs() for doc_path in Path( # noqa: ASYNC240 self.settings.agent.index.paper_directory ).rglob("*.pdf"): sub = subs.get(doc_path.stem) if subs is not None else None if sub: await docs.aadd( doc_path, settings=self.settings, citation=sub.content["_bibtex"]["value"], title=sub.content["title"]["value"], doi="None", authors=sub.content["authors"]["value"], ) else: await docs.aadd(doc_path, settings=self.settings) return docs ================================================ FILE: src/paperqa/contrib/zotero.py ================================================ """This module gets PDF files from the user's Zotero library.""" import asyncio import logging import os from collections.abc import Awaitable from pathlib import Path from typing import cast from paperqa_pymupdf import parse_pdf_to_pages from pydantic import BaseModel try: from pyzotero import zotero except ImportError as e: raise ImportError( "zotero requires the 'zotero' extra for 'pyzotero'. Please:" " `pip install paper-qa[zotero]`." ) from e from paperqa.paths import PAPERQA_DIR from paperqa.readers import PDFParserFn class ZoteroPaper(BaseModel): """A paper from Zotero. Attributes: ---------- key : str The citation key. title : str The title of the item. pdf : Path The path to the PDF for the item (pass to `paperqa.Docs`) num_pages : int The number of pages in the PDF. zotero_key : str The Zotero key for the item. details : dict The full item details from Zotero. """ key: str title: str pdf: Path num_pages: int zotero_key: str details: dict def __str__(self) -> str: """Return the title of the paper.""" return ( f'ZoteroPaper(\n key = "{self.key}",\ntitle = "{self.title}",\n pdf =' f' "{self.pdf}",\n num_pages = {self.num_pages},\n zotero_key =' f' "{self.zotero_key}",\n details = ...\n)' ) class ZoteroDB(zotero.Zotero): """An extension of pyzotero.zotero.Zotero to interface with paperqa. This class automatically reads in your `ZOTERO_USER_ID` and `ZOTERO_API_KEY` from your environment variables. If you do not have these, see step 2 of https://github.com/urschrei/pyzotero#quickstart. This class will download PDFs from your Zotero library and store them in `~/.paperqa/zotero` by default. To use this class, call the `iterate` method, which returns a `paperqa.Docs` object. """ def __init__( self, *, library_type: str = "user", library_id: str | None = None, api_key: str | None = None, storage: str | os.PathLike | None = None, parse_pdf: PDFParserFn = parse_pdf_to_pages, **kwargs, ): self.logger = logging.getLogger("ZoteroDB") if library_id is None: self.logger.info("Attempting to get ZOTERO_USER_ID from `os.environ`...") if "ZOTERO_USER_ID" not in os.environ: raise ValueError( "ZOTERO_USER_ID not set. Please navigate to" " https://www.zotero.org/settings/keys and get your user ID" " from the text 'Your userID for use in API calls is [XXXXXX]'." " Then, set the environment variable ZOTERO_USER_ID to this value." ) library_id = os.environ["ZOTERO_USER_ID"] if api_key is None: self.logger.info("Attempting to get ZOTERO_API_KEY from `os.environ`...") if "ZOTERO_API_KEY" not in os.environ: raise ValueError( "ZOTERO_API_KEY not set. Please navigate to" " https://www.zotero.org/settings/keys and create a new API key" " with access to your library." " Then, set the environment variable ZOTERO_API_KEY to this value." ) api_key = os.environ["ZOTERO_API_KEY"] self.logger.info(f"Using library ID: {library_id} with type: {library_type}.") if storage is None: storage = PAPERQA_DIR / "zotero" self.logger.info(f"Using cache location: {storage}") self.storage = Path(storage) self._parse_pdf = parse_pdf super().__init__( library_type=library_type, library_id=library_id, api_key=api_key, **kwargs ) def get_pdf(self, item: dict) -> Path | None: """Gets a filename for a given Zotero key for a PDF. If the PDF is not found locally, the PDF will be downloaded to a local file at the correct key. If no PDF exists for the file, None is returned. Parameters ---------- item : dict An item from `pyzotero`. Should have a `key` field, and also have an entry `links->attachment->attachmentType == application/pdf`. """ if not isinstance(item, dict): raise TypeError("Pass the full item of the paper. The item must be a dict.") pdf_key = _extract_pdf_key(item) if pdf_key is None: return None pdf_path = self.storage / (pdf_key + ".pdf") if not pdf_path.exists(): pdf_path.parent.mkdir(parents=True, exist_ok=True) self.logger.info(f"| Downloading PDF for: {_get_citation_key(item)}") self.dump(pdf_key, pdf_path) return pdf_path def iterate( # noqa: PLR0912 self, limit: int = 25, start: int = 0, q: str | None = None, qmode: str | None = None, since: str | None = None, tag: str | None = None, sort: str | None = None, direction: str | None = None, collection_name: str | None = None, ): """Given a search query, this will lazily iterate over papers in a Zotero library, downloading PDFs as needed. This will download all PDFs in the query. For information on parameters, see https://pyzotero.readthedocs.io/en/latest/?badge=latest#zotero.Zotero.add_parameters For extra information on the query, see https://www.zotero.org/support/dev/web_api/v3/basics#search_syntax. For each item, it will return a `ZoteroPaper` object, which has the following fields: - `pdf`: The path to the PDF for the item (pass to `paperqa.Docs`) - `key`: The citation key. - `title`: The title of the item. - `details`: The full item details from Zotero. Parameters ---------- q : str, optional Quick search query. Searches only titles and creator fields by default. Control with `qmode`. qmode : str, optional Quick search mode. One of `titleCreatorYear` or `everything`. since : int, optional Only return objects modified after the specified library version. tag : str, optional Tag search. Can use `AND` or `OR` to combine tags. sort : str, optional The name of the field to sort by. One of dateAdded, dateModified, title, creator, itemType, date, publisher, publicationTitle, journalAbbreviation, language, accessDate, libraryCatalog, callNumber, rights, addedBy, numItems (tags). direction : str, optional asc or desc. limit : int, optional The maximum number of items to return. Default is 25. You may use the `start` parameter to continue where you left off. start : int, optional The index of the first item to return. Default is 0. """ query_kwargs = {} if q is not None: query_kwargs["q"] = q if qmode is not None: query_kwargs["qmode"] = qmode if since is not None: query_kwargs["since"] = since if tag is not None: query_kwargs["tag"] = tag if sort is not None: query_kwargs["sort"] = sort if direction is not None: query_kwargs["direction"] = direction if collection_name is not None and query_kwargs: raise ValueError( "You cannot specify a `collection_name` and search query" " simultaneously!" ) max_limit = 100 items: list = [] pdfs: list[Path] = [] i = 0 actual_i = 0 num_remaining = limit collection_id = None if collection_name: collection_id = self._get_collection_id( collection_name ) # raise error if not found while num_remaining > 0: cur_limit = min(max_limit, num_remaining) self.logger.info(f"Downloading new batch of up to {cur_limit} papers.") if collection_id: _items = self._sliced_collection_items( collection_id, limit=cur_limit, start=i ) else: _items = self.top(**query_kwargs, limit=cur_limit, start=i) if len(_items) == 0: break i += cur_limit self.logger.info("Downloading PDFs.") _pdfs = [self.get_pdf(item) for item in _items] # Filter: for item, pdf in zip(_items, _pdfs, strict=True): no_pdf = item is None or pdf is None is_duplicate = pdf in pdfs if no_pdf or is_duplicate: continue pdf = cast("Path", pdf) title = item["data"].get("title", "") if len(items) >= start: parsed_text = self._parse_pdf(pdf) if isinstance(parsed_text, Awaitable): parsed_text = asyncio.run(parsed_text) if not isinstance(parsed_text.content, dict): raise ValueError( "The content type coming from the PDF parser" f" should be a dict, not {type(parsed_text.content)}," " did you misspecify the PDF parsing function?" ) yield ZoteroPaper( key=_get_citation_key(item), title=title, pdf=pdf, num_pages=len(parsed_text.content), details=item, zotero_key=item["key"], ) actual_i += 1 items.append(item) pdfs.append(pdf) num_remaining = limit - actual_i self.logger.info("Finished downloading papers. Now creating Docs object.") def _sliced_collection_items(self, collection_id, limit, start): items = self.collection_items(collection_id) items = items[start:] if len(items) < limit: return items return items[:limit] def _get_collection_id(self, collection_name: str) -> str: """Get the collection id for a given collection name Raises ValueError if collection not found Args: collection_name (str): The name of the collection. Returns: str: collection id """ # noqa: D205 # specific collection collections = self.collections() collection_id = "" for collection in collections: name = collection["data"]["name"] if name == collection_name: collection_id = collection["data"]["key"] break if collection_id: coll_items = self.collection_items(collection_id) self.logger.info( f"Collection '{collection_name}' found: {len(coll_items)} items" ) else: raise ValueError(f"Collection '{collection_name}' not found") return collection_id def _get_citation_key(item: dict) -> str: if ( "creators" not in item.get("data", {}) or len(item["data"]["creators"]) == 0 or "lastName" not in item["data"]["creators"][0] or "title" not in item["data"] or "date" not in item["data"] ): return item["key"] last_name = item["data"]["creators"][0]["lastName"] short_title = "".join(item["data"]["title"].split(" ")[:3]) date = item["data"]["date"] # Delete non-alphanumeric characters: short_title = "".join([c for c in short_title if c.isalnum()]) last_name = "".join([c for c in last_name if c.isalnum()]) date = "".join([c for c in date if c.isalnum()]) return f"{last_name}_{short_title}_{date}_{item['key']}".replace(" ", "") def _extract_pdf_key(item: dict) -> str | None: """Extract the PDF key from a Zotero item.""" if "links" not in item: return None if "attachment" not in item["links"]: return None attachments = item["links"]["attachment"] if not isinstance(attachments, dict): # Find first attachment with attachmentType == application/pdf: for attachment in attachments: # TODO: This assumes there's only one PDF attachment. if attachment["attachmentType"] == "application/pdf": break else: attachment = attachments if "attachmentType" not in attachment: return None if attachment["attachmentType"] != "application/pdf": return None return attachment["href"].split("/")[-1] ================================================ FILE: src/paperqa/core.py ================================================ import json import logging import re from collections.abc import Callable, Sequence from typing import Any, ClassVar import litellm from aviary.core import Message from lmi import LLMModel, LLMResult from pydantic import JsonValue from paperqa.prompts import text_with_tables_prompt_template from paperqa.types import Context, Text, create_multimodal_message from paperqa.utils import extract_score, strip_citations logger = logging.getLogger(__name__) def llm_parse_json(text: str) -> dict[str, JsonValue]: """Read LLM output and extract JSON data from it.""" # Removing tags for reasoning models ptext = re.sub(r".*?", "", text, flags=re.DOTALL).strip() # fetches from markdown ```json if present ptext = ptext.split("```json")[-1].split("```")[0] # Fix specific case with raw fractions in relevance_score ptext = re.sub( r'"relevance_score"\s*:\s*(\d+)/(\d+)', lambda m: f'"relevance_score": {round(int(m.group(1)) / int(m.group(2)) * 10)}', ptext, ) # Wrap non-JSON text in a dictionary if "{" not in ptext and "}" not in ptext: ptext = json.dumps({"summary": ptext}) # Remove any introductory/closing text and ensure {} to make it a valid JSON ptext = ("{" + ptext.split("{", 1)[-1]).rsplit("}", 1)[0] + "}" def escape_newlines(match: re.Match) -> str: return match.group(0).replace("\n", "\\n") # Match anything between double quotes # including escaped quotes and other escaped characters. # https://regex101.com/r/VFcDmB/1 ptext = re.sub(r'"(?:[^"\\]|\\.)*"', escape_newlines, ptext) # Ensure that any backslashes in the string that are not part # of a valid escape sequence are properly escaped # https://regex101.com/r/IzMDlI/1 ptext = re.sub(r'\\([^"\\/bfnrtu])', r"\\\\\1", ptext) def fraction_replacer(match: re.Match) -> str: key = match.group(1) # The key (unchanged) # Case 1: If quoted fraction `"5/10"` if match.group(2) and match.group(3): numerator = int(match.group(2)) denominator = int(match.group(3)) # Case 2: If unquoted fraction `5/10` elif match.group(4) and match.group(5): numerator = int(match.group(4)) denominator = int(match.group(5)) else: return match.group(0) # No change if no fraction is found fraction_value = round(numerator / denominator * 10) # Convert to integer return f"{key}{fraction_value}" # Replace X/Y scores with integer value from 0-10 # e.g. "relevance_score": "8/10" -> "relevance_score": 8 # e.g. "relevance_score": 3/5 -> "relevance_score": 6 ptext = re.sub( r'("\s*(?:relevance|score)[\w\s\-]*"\s*:\s*)(?:"(\d+)\s*/\s*(\d+)"|(\d+)\s*/\s*(\d+))', fraction_replacer, ptext, ) # Add missing commas after fields where another key follows ptext = re.sub(r'(?<=[}\]0-9"])\s*(?="[^"\\]*"\s*:)', ", ", ptext) # Remove extra commas ptext = re.sub(r",\s*,+", ",", ptext) # Remove multiple consecutive commas ptext = re.sub(r",\s*}", "}", ptext) # Remove trailing commas before closing brace ptext = re.sub(r"\{\s*,", "{", ptext) # Remove leading commas inside object # Try to parse the JSON normally first try: data = json.loads(ptext) except json.JSONDecodeError as e: # If normal parsing fails, try to handle nested quotes case if "summary" in ptext and '"relevance_score"' in ptext: # Extract summary and relevance_score directly using regex summary_match = re.search( r'"summary"\s*:\s*"(.*?)",\s*"relevance_score"', ptext, re.DOTALL ) score_match = re.search(r'"relevance_score"\s*:\s*"?(\d+)"?', ptext) if summary_match and score_match: return { "summary": summary_match.group(1).replace(r"\'", "'"), "relevance_score": int(score_match.group(1)), } raise ValueError(f"Failed to load JSON from text {text!r}.") from e # Handling incorrect key names for "relevance_score" for key in list(data): # List is here to copy keys, since we're in-place mutating if re.search(r"relevance|score", key, re.IGNORECASE): data["relevance_score"] = data.pop(key) # Renaming key # Handling float, str values for relevance_score if "relevance_score" in data and not isinstance(data["relevance_score"], int): try: data["relevance_score"] = round(float(data["relevance_score"])) except ValueError as exc: raise ValueError( f"Failed to extract 'relevance_score' of {data['relevance_score']!r}" " to an integer." ) from exc return data class LLMContextError(ValueError): retryable: ClassVar[bool] help_message: ClassVar[str] # Eventually passed to logger.exception def __init__(self, message: str, llm_results: list[LLMResult]) -> None: super().__init__(message) self.llm_results = llm_results # House so we can cost track across retries class LLMBadContextJSONError(LLMContextError): """Retryable exception for when the LLM gives back bad JSON.""" retryable = True help_message = ( "Abandoning this context creation." " Your model may not be capable of supporting JSON output" " or our parsing technique could use some work. Try" " a different model or specify `Settings(prompts={'use_json': False})`." " Or, feel free to just ignore this message, as many contexts are" " concurrently made and we're not attached to any one given context." ) class LLMContextTimeoutError(LLMContextError): """Non-retryable exception for when the LLM call times out.""" retryable = False help_message = ( "Timeout when creating a context, abandoning it." " If you see this error frequently, consider increasing the timeout in" " Settings(summary_llm_config=...). Or, feel free to just ignore this message," " as many contexts are concurrently made and we're not attached to any one" " given context." ) class LLMContextRequestFailedError(LLMContextError): """Non-retryable exception for when the LLM provider fails to respond. Kind of a catch-all for intermittent failures, safety refusals, etc. Catches all litellm.BadRequestErrors and litellm.MidStreamFallbackErrors. """ retryable = False help_message = ( "Response error when creating a context, abandoning it." " If you see this error frequently, the summary_llm endpoint is either" " misconfigured or is having issues." ) async def _map_fxn_summary( # noqa: PLR0912 text: Text, question: str, summary_llm_model: LLMModel | None, prompt_templates: tuple[str, str] | None, extra_prompt_data: dict[str, str] | None = None, parser: Callable[[str], dict[str, Any]] | None = None, callbacks: Sequence[Callable[[str], None]] | None = None, skip_citation_strip: bool = False, evidence_text_only_fallback: bool = False, _prior_attempt: LLMContextError | None = None, ) -> tuple[Context, list[LLMResult]]: """Parses the given text and returns a context object with the parser and prompt runner. The parser should at least return a dict with `summary`. A `relevant_score` will be used and any extra fields except `question` will be added to the context object. `question` is stripped because it can be incorrectly parsed from LLM outputs when parsing them as JSON. Args: text: The text to parse. question: The question to use for summarization. summary_llm_model: The LLM model to use for generating summaries. prompt_templates: Optional two-elements tuple containing templates for the user and system prompts. prompt_templates = (user_prompt_template, system_prompt_template) extra_prompt_data: Optional extra data to pass to the prompt template. parser: Optional parser function to parse LLM output into structured data. Should return dict with at least 'summary' field. callbacks: Optional sequence of callback functions to execute during LLM calls. skip_citation_strip: Optional skipping of citation stripping, if you want to keep in the context. evidence_text_only_fallback: Opt-in flag to allow retrying context creation without media in the completion. _prior_attempt: Optional failure from a prior attempt, for LLM result tracking. Returns: A two-tuple of the made Context, and any LLM results made along the way. """ if _prior_attempt is not None: llm_results = _prior_attempt.llm_results append_msgs = [ Message( content=( "In a prior attempt, we failed with this failure message:" f" {_prior_attempt!s}." ) ) ] else: llm_results, append_msgs = [], [] extras: dict[str, Any] = {} citation = text.name + ": " + text.doc.formatted_citation used_text_only_fallback = False # Strip newlines in case chunking led to blank lines, # but not spaces, to preserve text alignment cleaned_text = text.text.strip("\n") or "(no text)" if summary_llm_model and prompt_templates: unique_media = list(dict.fromkeys(text.media)) # Preserve order table_texts: list[str] = [ m.text for m in unique_media if m.info.get("type") == "table" and m.text ] data = { "question": question, "citation": citation, "text": ( text_with_tables_prompt_template.format( text=cleaned_text, citation=citation, tables="\n\n".join(table_texts), ) if table_texts else cleaned_text ), } | (extra_prompt_data or {}) message_prompt, system_prompt = (pt.format(**data) for pt in prompt_templates) try: try: llm_result = await summary_llm_model.call_single( messages=[ Message(role="system", content=system_prompt), ( create_multimodal_message( text=message_prompt, image_urls=[i.to_image_url() for i in unique_media], ) if unique_media else Message.create_message(text=message_prompt) ), *append_msgs, ], callbacks=callbacks, name="evidence:" + text.name, ) except litellm.BadRequestError as exc: if not evidence_text_only_fallback: raise logger.warning( f"LLM call to create a context failed with exception {exc!r}" f" on text named {text.name!r}" f" with doc name {text.doc.docname!r} and doc key {text.doc.dockey!r}." f" Retrying without media." ) llm_result = await summary_llm_model.call_single( messages=[ Message(role="system", content=system_prompt), Message(content=message_prompt), *append_msgs, ], callbacks=callbacks, name="evidence:" + text.name, ) used_text_only_fallback = True except litellm.Timeout as exc: raise LLMContextTimeoutError( f"LLM call to create a context timed out on text named {text.name!r}.", llm_results=llm_results, ) from exc except ( litellm.exceptions.MidStreamFallbackError, litellm.BadRequestError, ) as exc: # BadRequestError: what is thrown if you directly call an LLM with a bad request # MidStreamFallbackError: what litellm throws if there are fallbacks configured raise LLMContextRequestFailedError( f"LLM call to create a context failed on text named {text.name!r}.", llm_results=llm_results, ) from exc llm_results.append(llm_result) context = llm_result.text or "" if parser: try: result_data = parser(context) except ValueError as exc: raise LLMBadContextJSONError( f"Failed to parse JSON from context {context!r} due to: {exc}", llm_results=llm_results, ) from exc try: context = result_data.pop("summary") try: score = ( result_data.pop("relevance_score") if "relevance_score" in result_data else extract_score(context) ) except ValueError as exc: raise LLMBadContextJSONError( f"Successfully parsed JSON and extracted 'summary' key," f" but then failed to extract score from context {context!r} due to: {exc}", llm_results=llm_results, ) from exc # just in case question was present result_data.pop("question", None) extras = result_data except KeyError: # No summary key, so extract from LLM result try: score = extract_score(context) except ValueError as exc: raise LLMBadContextJSONError( f"Successfully parsed JSON but it had no 'summary' key." f" Then, the failover to extract score from raw context {context!r}" f" failed due to: {exc}", llm_results=llm_results, ) from exc else: try: score = extract_score(context) except ValueError as exc: raise LLMBadContextJSONError( f"Extracting score from raw context {context!r} failed due to: {exc}", llm_results=llm_results, ) from exc else: llm_results.append(LLMResult(model="", date="")) context = cleaned_text # If we don't assign scores, just default to 5. # why 5? Because we filter out 0s in another place # and 5/10 is the only default I could come up with score = 5 # remove citations that collide with our grounded citations (for the answer LLM) if not skip_citation_strip: context = strip_citations(context) if used_text_only_fallback: extras["used_images"] = False return ( Context( context=context, question=question, text=Text( # Embeddings enable the retrieval of Texts to make Contexts. # Once we already have Contexts, we filter them by score # (and not the underlying Text's embeddings), # so embeddings can be safely dropped from the deepcopy doc=text.doc.model_dump(exclude={"embedding"}), **text.model_dump(exclude={"embedding", "doc"}), ), score=score, **extras, ), llm_results, ) async def map_fxn_summary(**kwargs) -> tuple[Context | None, list[LLMResult]]: if "_prior_attempt" in kwargs: raise ValueError( "_prior_attempt is reserved for internal use only, don't specify it." ) try: return await _map_fxn_summary(**kwargs) except LLMContextError as exc: if not exc.retryable: logger.exception( "Non-retryable failure creating a context. %s", exc.help_message ) return None, exc.llm_results try: return await _map_fxn_summary(**kwargs, _prior_attempt=exc) except LLMContextError as exc2: logger.exception("Failed twice to create a context. %s", exc2.help_message) return None, exc2.llm_results ================================================ FILE: src/paperqa/docs.py ================================================ from __future__ import annotations import asyncio import json import logging import os import re import tempfile import urllib.request import warnings from collections.abc import Callable, Sequence from datetime import datetime from io import BytesIO from pathlib import Path from typing import Any, BinaryIO, cast from uuid import UUID, uuid4 from aviary.core import Message from lmi import Embeddable, EmbeddingModel, LLMModel from lmi.types import set_llm_session_ids from lmi.utils import gather_with_concurrency from pydantic import BaseModel, ConfigDict, Field from paperqa.clients import DEFAULT_CLIENTS, DocMetadataClient from paperqa.core import llm_parse_json, map_fxn_summary from paperqa.llms import ( NumpyVectorStore, VectorStore, ) from paperqa.prompts import CANNOT_ANSWER_PHRASE, EMPTY_CONTEXTS from paperqa.readers import read_doc from paperqa.settings import MaybeSettings, get_settings from paperqa.types import Doc, DocDetails, DocKey, PQASession, Text from paperqa.utils import ( citation_to_docname, maybe_is_html, maybe_is_pdf, maybe_is_text, md5sum, ) logger = logging.getLogger(__name__) class Docs(BaseModel): # noqa: PLW1641 # TODO: add __hash__ """A collection of documents to be used for answering questions.""" model_config = ConfigDict(extra="forbid") id: UUID = Field(default_factory=uuid4) docs: dict[DocKey, Doc | DocDetails] = Field(default_factory=dict) texts: list[Text] = Field(default_factory=list) docnames: set[str] = Field(default_factory=set) texts_index: VectorStore = Field(default_factory=NumpyVectorStore) name: str = Field(default="default", description="Name of this docs collection") deleted_dockeys: set[DocKey] = Field(default_factory=set) def __eq__(self, other) -> bool: if ( not isinstance(other, type(self)) or not isinstance(self.texts_index, NumpyVectorStore) or not isinstance(other.texts_index, NumpyVectorStore) ): return NotImplemented return ( self.docs == other.docs and len(self.texts) == len(other.texts) and all( self_text == other_text for self_text, other_text in zip(self.texts, other.texts, strict=True) ) and self.docnames == other.docnames and self.texts_index == other.texts_index and self.name == other.name # NOTE: ignoring deleted_dockeys ) def clear_docs(self) -> None: self.texts = [] self.docs = {} self.docnames = set() self.texts_index.clear() def _get_unique_name(self, docname: str) -> str: """Create a unique name given proposed name.""" suffix = "" while docname + suffix in self.docnames: # move suffix to next letter suffix = "a" if not suffix else chr(ord(suffix) + 1) docname += suffix return docname async def aadd_file( self, file: BinaryIO, citation: str | None = None, docname: str | None = None, dockey: DocKey | None = None, title: str | None = None, doi: str | None = None, authors: list[str] | None = None, settings: MaybeSettings = None, llm_model: LLMModel | None = None, embedding_model: EmbeddingModel | None = None, **kwargs, ) -> str | None: """Add a document to the collection.""" # just put in temp file and use existing method suffix = ".txt" if maybe_is_pdf(file): suffix = ".pdf" elif maybe_is_html(file): suffix = ".html" with tempfile.NamedTemporaryFile(suffix=suffix) as f: f.write(file.read()) f.seek(0) return await self.aadd( Path(f.name), citation=citation, docname=docname, dockey=dockey, title=title, doi=doi, authors=authors, settings=settings, llm_model=llm_model, embedding_model=embedding_model, **kwargs, ) async def aadd_url( self, url: str, citation: str | None = None, docname: str | None = None, dockey: DocKey | None = None, settings: MaybeSettings = None, llm_model: LLMModel | None = None, embedding_model: EmbeddingModel | None = None, ) -> str | None: """Add a document to the collection.""" with urllib.request.urlopen(url) as f: # noqa: ASYNC210, S310 # need to wrap to enable seek file = BytesIO(f.read()) return await self.aadd_file( file, citation=citation, docname=docname, dockey=dockey, settings=settings, llm_model=llm_model, embedding_model=embedding_model, ) async def aadd( # noqa: PLR0912 self, path: str | os.PathLike, citation: str | None = None, docname: str | None = None, dockey: DocKey | None = None, title: str | None = None, doi: str | None = None, authors: list[str] | None = None, settings: MaybeSettings = None, llm_model: LLMModel | None = None, embedding_model: EmbeddingModel | None = None, **kwargs, ) -> str | None: """Add a document to the collection.""" all_settings = get_settings(settings) parse_config = all_settings.parsing content_hash = md5sum(path) dockey_is_content_hash = False if dockey is None: dockey = content_hash dockey_is_content_hash = True if llm_model is None: llm_model = all_settings.get_llm() if citation is None: # Peek first chunk texts = await read_doc( path, Doc( # Fake doc docname="", citation="", dockey=dockey, content_hash=content_hash ), page_size_limit=parse_config.page_size_limit, parse_media=False, # Peeking is text only # We only use the first chunk, so let's peek just enough pages for that. # Usually pages 1 - 2 give that, # but in the event page 2 is blank (true for some PDFs), # we read pages 1 - 3 to be safe page_range=(1, 3), parse_pdf=parse_config.parse_pdf, **parse_config.reader_config, ) if not texts or not texts[0].text.strip(): raise ValueError(f"Could not read document {path}. Is it empty?") result = await llm_model.call_single( messages=[ Message( content=parse_config.citation_prompt.format(text=texts[0].text) ), ], ) citation = cast("str", result.text) if ( len(citation) < 3 # noqa: PLR2004 or "Unknown" in citation or "insufficient" in citation ): citation = f"Unknown, {os.path.basename(path)}, {datetime.now().year}" del result, texts # Ensure we don't reuse doc = Doc( docname=self._get_unique_name( citation_to_docname(citation) if docname is None else docname ), citation=citation, dockey=dockey, content_hash=content_hash, ) # try to extract DOI / title from the citation if (doi is title is None) and parse_config.use_doc_details: # TODO: specify a JSON schema here when many LLM providers support this messages = [ Message( content=parse_config.structured_citation_prompt.format( citation=citation ), ), ] result = await llm_model.call_single( messages=messages, ) # This code below tries to isolate the JSON # based on observed messages from LLMs # it does so by isolating the content between # the first { and last } in the response. # Since the anticipated structure should not be nested, # we don't have to worry about nested curlies. clean_text = cast("str", result.text).split("{", 1)[-1].split("}", 1)[0] clean_text = "{" + clean_text + "}" try: citation_json = json.loads(clean_text) if citation_title := citation_json.get("title"): title = citation_title if citation_doi := citation_json.get("doi"): doi = citation_doi if citation_author := citation_json.get("authors"): authors = citation_author except (json.JSONDecodeError, AttributeError): # json.JSONDecodeError: clean_text was not actually JSON # AttributeError: citation_json was not a dict (e.g. a list) logger.warning( "Failed to parse all of title, DOI, and authors from the" " ParsingSettings.structured_citation_prompt's response" f" {clean_text}, consider using a manifest file or specifying a" " different citation prompt." ) # see if we can upgrade to DocDetails # if not, we can progress with a normal Doc # if "fields_to_overwrite_from_metadata" is used: # will map "docname" to "key", and "dockey" to "doc_id" if (title or doi) and parse_config.use_doc_details: if kwargs.get("metadata_client"): metadata_client = kwargs["metadata_client"] else: metadata_client = DocMetadataClient( http_client=kwargs.pop("http_client", None), metadata_clients=kwargs.pop("clients", DEFAULT_CLIENTS), ) # Query here means a query to a metadata provider query_kwargs: dict[str, Any] = {} if doi: query_kwargs["doi"] = doi if authors: query_kwargs["authors"] = authors if title: query_kwargs["title"] = title if dockey_is_content_hash: # if we had an autogenerated dockey, we would like our # metadata to be able to overwrite it if possible doc.fields_to_overwrite_from_metadata = { d for d in doc.fields_to_overwrite_from_metadata if d not in {"dockey", "doc_id"} } doc = await metadata_client.upgrade_doc_to_doc_details( doc, **(query_kwargs | kwargs) ) parse_media, enrich_media = parse_config.should_parse_and_enrich_media multimodal_kwargs: dict[str, Any] = {"parse_media": parse_media} if enrich_media: multimodal_kwargs["multimodal_enricher"] = ( all_settings.make_media_enricher() ) texts, metadata = await read_doc( path, doc, page_size_limit=parse_config.page_size_limit, parse_pdf=parse_config.parse_pdf, include_metadata=True, **multimodal_kwargs, **parse_config.reader_config, ) # loose check to see if document was loaded if metadata.name != "image" and ( not texts or len(texts[0].text) < 10 # noqa: PLR2004 or ( not parse_config.disable_doc_valid_check and ( ( # Quick sanity check the text is not just some terse one-page # 404 message interspersed with newlines. Check here # instead of maybe_is_text because a 404 HTML page is text sum(len(t.text.replace("\n", "")) for t in texts[:2]) < 20 # noqa: PLR2004 ) # Use the first few text chunks to avoid potential issues with # title page parsing in the first chunk or not maybe_is_text("".join(t.text for t in texts[:5])) ) ) ): raise ValueError( f"This does not look like a text document: {path}. Pass disable_check" " to ignore this error." ) if await self.aadd_texts(texts, doc, all_settings, embedding_model): return doc.docname return None async def aadd_texts( self, texts: list[Text], doc: Doc, settings: MaybeSettings = None, embedding_model: EmbeddingModel | None = None, ) -> bool: """ Add chunked texts to the collection. This is useful to use if you have already chunked the texts yourself. Returns: True if the doc was added, otherwise False if already in the collection. """ if doc.dockey in self.docs: return False if not texts: raise ValueError("No texts to add.") all_settings = get_settings(settings) if not all_settings.parsing.defer_embedding and not embedding_model: # want to embed now! embedding_model = all_settings.get_embedding_model() # 0. Short-circuit if it is caught by a filter for doc_filter in all_settings.parsing.doc_filters or []: if not doc.matches_filter_criteria(doc_filter): return False # 1. Calculate text embeddings if not already present if embedding_model and texts[0].embedding is None: for t, t_embedding in zip( texts, await embedding_model.embed_documents( texts=await asyncio.gather( *( t.get_embeddable_text( all_settings.parsing.should_parse_and_enrich_media[1] ) for t in texts ) ) ), strict=True, ): t.embedding = t_embedding # 2. Update texts' and Doc's name if doc.docname in self.docnames: new_docname = self._get_unique_name(doc.docname) for t in texts: t.name = t.name.replace(doc.docname, new_docname) doc.docname = new_docname # 3. Update self # NOTE: we defer adding texts to the texts index to retrieval time # (e.g. `self.texts_index.add_texts_and_embeddings(texts)`) if doc.docname and doc.dockey: self.docs[doc.dockey] = doc self.texts += texts self.docnames.add(doc.docname) return True return False def delete( self, name: str | None = None, docname: str | None = None, dockey: DocKey | None = None, ) -> None: """Delete a document from the collection.""" # name is an alias for docname if name and docname and name != docname: raise ValueError( "When specifying both name and docname for deletion," f" they need to match. The inputs were {name=} and {docname=}." ) if name is not None: warnings.warn( "The 'name' argument is deprecated in favor of 'docname'," " this deprecation will conclude in version 6.", category=DeprecationWarning, stacklevel=2, ) else: name = docname if name is not None: doc = next((doc for doc in self.docs.values() if doc.docname == name), None) if doc is None: return if doc.docname and doc.dockey: self.docnames.remove(doc.docname) dockey = doc.dockey del self.docs[dockey] self.deleted_dockeys.add(dockey) self.texts = list(filter(lambda x: x.doc.dockey != dockey, self.texts)) async def _build_texts_index( self, embedding_model: EmbeddingModel, with_enrichment: bool = False ) -> None: texts = [t for t in self.texts if t not in self.texts_index] # For any embeddings we are supposed to lazily embed, embed them now to_embed = [t for t in texts if t.embedding is None] if to_embed: for t, t_embedding in zip( to_embed, await embedding_model.embed_documents( texts=await asyncio.gather( *(t.get_embeddable_text(with_enrichment) for t in to_embed) ) ), strict=True, ): t.embedding = t_embedding await self.texts_index.add_texts_and_embeddings(texts) async def retrieve_texts( self, query: str, k: int, settings: MaybeSettings = None, embedding_model: EmbeddingModel | None = None, partitioning_fn: Callable[[Embeddable], int] | None = None, ) -> list[Text]: """Perform MMR search with the input query on the internal index.""" settings = get_settings(settings) if embedding_model is None: embedding_model = settings.get_embedding_model() # TODO: should probably happen elsewhere self.texts_index.mmr_lambda = settings.texts_index_mmr_lambda await self._build_texts_index( embedding_model, with_enrichment=settings.parsing.should_parse_and_enrich_media[1], ) _k = k + len(self.deleted_dockeys) matches: list[Text] = cast( "list[Text]", ( await self.texts_index.max_marginal_relevance_search( query, k=_k, fetch_k=2 * _k, embedding_model=embedding_model, partitioning_fn=partitioning_fn, ) )[0], ) matches = [m for m in matches if m.doc.dockey not in self.deleted_dockeys] return matches[:k] async def aget_evidence( self, query: PQASession | str, settings: MaybeSettings = None, callbacks: Sequence[Callable] | None = None, embedding_model: EmbeddingModel | None = None, summary_llm_model: LLMModel | None = None, partitioning_fn: Callable[[Embeddable], int] | None = None, ) -> PQASession: evidence_settings = get_settings(settings) answer_config = evidence_settings.answer prompt_config = evidence_settings.prompts session = ( PQASession(question=query, config_md5=evidence_settings.md5) if isinstance(query, str) else query ) if not self.docs and len(self.texts_index) == 0: return session if embedding_model is None: embedding_model = evidence_settings.get_embedding_model() if summary_llm_model is None: summary_llm_model = evidence_settings.get_summary_llm() if answer_config.evidence_retrieval: matches = await self.retrieve_texts( session.question, answer_config.evidence_k, evidence_settings, embedding_model, partitioning_fn=partitioning_fn, ) else: matches = self.texts matches = ( matches[: answer_config.evidence_k] if answer_config.evidence_retrieval else matches ) prompt_templates = None if not answer_config.evidence_skip_summary: if prompt_config.use_json: prompt_templates = ( prompt_config.summary_json, prompt_config.summary_json_system, ) else: prompt_templates = ( prompt_config.summary, prompt_config.system, ) with set_llm_session_ids(session.id): results = await gather_with_concurrency( answer_config.max_concurrent_requests, [ map_fxn_summary( text=m, question=session.question, summary_llm_model=summary_llm_model, prompt_templates=prompt_templates, extra_prompt_data={ "summary_length": answer_config.evidence_summary_length, "citation": f"{m.name}: {m.doc.formatted_citation}", }, parser=llm_parse_json if prompt_config.use_json else None, callbacks=callbacks, skip_citation_strip=answer_config.skip_evidence_citation_strip, evidence_text_only_fallback=answer_config.evidence_text_only_fallback, ) for m in matches ], ) for _, llm_results in results: for r in llm_results: session.add_tokens(r) # Filter out failed context creations or irrelevant contexts, # and don't add duplicate contexts session.contexts += list( { c for c, _ in results if c is not None and c.score > 0 and c not in session.contexts } ) return session async def aquery( self, query: PQASession | str, settings: MaybeSettings = None, callbacks: Sequence[Callable] | None = None, llm_model: LLMModel | None = None, summary_llm_model: LLMModel | None = None, embedding_model: EmbeddingModel | None = None, partitioning_fn: Callable[[Embeddable], int] | None = None, ) -> PQASession: query_settings = get_settings(settings) answer_config = query_settings.answer prompt_config = query_settings.prompts if llm_model is None: llm_model = query_settings.get_llm() if summary_llm_model is None: summary_llm_model = query_settings.get_summary_llm() if embedding_model is None: embedding_model = query_settings.get_embedding_model() session = ( PQASession(question=query, config_md5=query_settings.md5) if isinstance(query, str) else query ) contexts = session.contexts if answer_config.get_evidence_if_no_contexts and not contexts: session = await self.aget_evidence( session, callbacks=callbacks, settings=settings, embedding_model=embedding_model, summary_llm_model=summary_llm_model, partitioning_fn=partitioning_fn, ) contexts = session.contexts pre_str = None if prompt_config.pre is not None: with set_llm_session_ids(session.id): messages = [ Message(role="system", content=prompt_config.system), Message( role="user", content=prompt_config.pre.format(question=session.question), ), ] pre = await llm_model.call_single( messages=messages, callbacks=callbacks, name="pre", ) session.add_tokens(pre) pre_str = pre.text context_str = await query_settings.context_serializer( contexts=contexts, question=session.question, pre_str=pre_str, ) if len(context_str.strip()) <= EMPTY_CONTEXTS: answer_text = ( f"{CANNOT_ANSWER_PHRASE} this question due to" f" {'having no papers' if not self.docs else 'insufficient information.'}." ) answer_reasoning = None else: with set_llm_session_ids(session.id): prior_answer_prompt = "" if prompt_config.answer_iteration_prompt and session.answer: prior_answer_prompt = prompt_config.answer_iteration_prompt.format( prior_answer=session.answer ) messages = [ Message(role="system", content=prompt_config.system), Message( role="user", content=prompt_config.qa.format( context=context_str, answer_length=answer_config.answer_length, question=session.question, example_citation=prompt_config.EXAMPLE_CITATION, prior_answer_prompt=prior_answer_prompt, ), ), ] answer_result = await llm_model.call_single( messages=messages, callbacks=callbacks, name="answer", ) answer_text = cast("str", answer_result.text) answer_reasoning = answer_result.reasoning_content session.add_tokens(answer_result) # it still happens if (ex_citation := prompt_config.EXAMPLE_CITATION) in answer_text: answer_text = answer_text.replace(ex_citation, "") if answer_config.answer_filter_extra_background: answer_text = re.sub( r"\([Ee]xtra [Bb]ackground [Ii]nformation\)", # spellchecker: disable-line "", answer_text, ) if prompt_config.post is not None: with set_llm_session_ids(session.id): messages = [ Message(role="system", content=prompt_config.system), Message( role="user", content=prompt_config.post.format(question=session.question), ), ] post = await llm_model.call_single( messages=messages, callbacks=callbacks, name="post", ) answer_text = cast("str", post.text) answer_reasoning = post.reasoning_content session.add_tokens(post) answer_text = f"{answer_text}\n\n{post.text}" # now at end we modify, so we could have retried earlier session.raw_answer = answer_text session.answer_reasoning = answer_reasoning session.contexts = contexts session.context = context_str session.populate_formatted_answers_and_bib_from_raw_answer() return session ================================================ FILE: src/paperqa/llms.py ================================================ import asyncio import itertools import logging import threading import uuid from abc import ABC, abstractmethod from collections.abc import ( Callable, Iterable, Sequence, Sized, ) from typing import TYPE_CHECKING, Any, cast import numpy as np from lmi import ( Embeddable, EmbeddingModel, EmbeddingModes, HybridEmbeddingModel, LiteLLMEmbeddingModel, SentenceTransformerEmbeddingModel, SparseEmbeddingModel, ) from pydantic import ( BaseModel, ConfigDict, Field, model_validator, ) from typing_extensions import override from paperqa.types import AUTOPOPULATE_VALUE, Doc, Text if TYPE_CHECKING: from qdrant_client.http.models import Record from paperqa.docs import Docs try: from qdrant_client import AsyncQdrantClient, models qdrant_installed = True except ImportError: qdrant_installed = False logger = logging.getLogger(__name__) def cosine_similarity(a, b): norm_product = np.linalg.norm(a, axis=1) * np.linalg.norm(b, axis=1) return a @ b.T / norm_product class VectorStore(BaseModel, ABC): """Interface for vector store - very similar to LangChain's VectorStore to be compatible.""" model_config = ConfigDict(extra="forbid") # can be tuned for different tasks mmr_lambda: float = Field( default=1.0, ge=0.0, description="MMR lambda value, a value above 1 disables MMR search.", ) texts_hashes: set[int] = Field(default_factory=set) def __contains__(self, item) -> bool: return hash(item) in self.texts_hashes def __len__(self) -> int: return len(self.texts_hashes) @abstractmethod async def add_texts_and_embeddings(self, texts: Iterable[Embeddable]) -> None: """Add texts and their embeddings to the store.""" self.texts_hashes.update(hash(t) for t in texts) @abstractmethod async def similarity_search( self, query: str, k: int, embedding_model: EmbeddingModel ) -> tuple[Sequence[Embeddable], list[float]]: pass @abstractmethod def clear(self) -> None: self.texts_hashes = set() async def partitioned_similarity_search( self, query: str, k: int, embedding_model: EmbeddingModel, partitioning_fn: Callable[[Embeddable], int], ) -> tuple[Sequence[Embeddable], list[float]]: """Partition the documents into different groups and perform similarity search. Args: query: query string k: Number of results to return embedding_model: model used to embed the query partitioning_fn: function to partition the documents into different groups. Returns: Tuple of lists of Embeddables and scores of length k. """ raise NotImplementedError( "partitioned_similarity_search is not implemented for this VectorStore." ) async def max_marginal_relevance_search( self, query: str, k: int, fetch_k: int, embedding_model: EmbeddingModel, partitioning_fn: Callable[[Embeddable], int] | None = None, ) -> tuple[Sequence[Embeddable], list[float]]: """Vectorized implementation of Maximal Marginal Relevance (MMR) search. Args: query: Query vector. k: Number of results to return. fetch_k: Number of results to fetch from the vector store. embedding_model: model used to embed the query partitioning_fn: optional function to partition the documents into different groups, performing MMR within each group. Returns: List of tuples (doc, score) of length k. """ if fetch_k < k: raise ValueError("fetch_k must be greater or equal to k") if partitioning_fn is None: texts, scores = await self.similarity_search( query, fetch_k, embedding_model ) else: texts, scores = await self.partitioned_similarity_search( query, fetch_k, embedding_model, partitioning_fn ) if len(texts) <= k or self.mmr_lambda >= 1.0: return texts, scores embeddings = np.array([t.embedding for t in texts]) np_scores = np.array(scores) similarity_matrix = cosine_similarity(embeddings, embeddings) selected_indices = [0] remaining_indices = list(range(1, len(texts))) while len(selected_indices) < k: selected_similarities = similarity_matrix[:, selected_indices] max_sim_to_selected = selected_similarities.max(axis=1) mmr_scores = ( self.mmr_lambda * np_scores - (1 - self.mmr_lambda) * max_sim_to_selected ) mmr_scores[selected_indices] = -np.inf # Exclude already selected documents max_mmr_index = mmr_scores.argmax() selected_indices.append(max_mmr_index) remaining_indices.remove(max_mmr_index) return [texts[i] for i in selected_indices], [ scores[i] for i in selected_indices ] class NumpyVectorStore(VectorStore): # noqa: PLW1641 # TODO: add __hash__ texts: list[Embeddable] = Field(default_factory=list) _embeddings_matrix: np.ndarray | None = None _texts_filter: np.ndarray | None = None def __eq__(self, other) -> bool: if not isinstance(other, type(self)): return NotImplemented return ( self.texts == other.texts and self.texts_hashes == other.texts_hashes and self.mmr_lambda == other.mmr_lambda and ( other._embeddings_matrix is None if self._embeddings_matrix is None else ( False if other._embeddings_matrix is None else np.allclose(self._embeddings_matrix, other._embeddings_matrix) ) ) ) def clear(self) -> None: super().clear() self.texts = [] self._embeddings_matrix = None self._texts_filter = None async def add_texts_and_embeddings(self, texts: Iterable[Embeddable]) -> None: await super().add_texts_and_embeddings(texts) self.texts.extend(texts) self._embeddings_matrix = np.array([t.embedding for t in self.texts]) async def partitioned_similarity_search( self, query: str, k: int, embedding_model: EmbeddingModel, partitioning_fn: Callable[[Embeddable], int], ) -> tuple[Sequence[Embeddable], list[float]]: scores: list[list[float]] = [] texts: list[Sequence[Embeddable]] = [] text_partitions = np.array([partitioning_fn(t) for t in self.texts]) # CPU bound so replacing w a gather wouldn't get us anything # plus we need to reset self._texts_filter each iteration for partition in np.unique(text_partitions): self._texts_filter = text_partitions == partition _texts, _scores = await self.similarity_search(query, k, embedding_model) texts.append(_texts) scores.append(_scores) # reset the filter after running self._texts_filter = None return ( [ t for t in itertools.chain.from_iterable(itertools.zip_longest(*texts)) if t is not None ][:k], [ s for s in itertools.chain.from_iterable(itertools.zip_longest(*scores)) if s is not None ][:k], ) async def similarity_search( self, query: str, k: int, embedding_model: EmbeddingModel ) -> tuple[Sequence[Embeddable], list[float]]: k = min(k, len(self.texts)) if k == 0: return [], [] # this will only affect models that embedding prompts embedding_model.set_mode(EmbeddingModes.QUERY) np_query = np.array((await embedding_model.embed_documents([query]))[0]) embedding_model.set_mode(EmbeddingModes.DOCUMENT) embedding_matrix = self._embeddings_matrix if self._texts_filter is not None: original_indices = np.where(self._texts_filter)[0] embedding_matrix = embedding_matrix[self._texts_filter] # type: ignore[index] else: original_indices = np.arange(len(self.texts)) similarity_scores = cosine_similarity( np_query.reshape(1, -1), embedding_matrix )[0] similarity_scores = np.nan_to_num(similarity_scores, nan=-np.inf) # minus so descending # we could use arg-partition here # but a lot of algorithms expect a sorted list sorted_indices = np.argsort(-similarity_scores) return ( [self.texts[i] for i in original_indices[sorted_indices][:k]], [similarity_scores[i] for i in sorted_indices[:k]], ) class QdrantVectorStore(VectorStore): # noqa: PLW1641 # TODO: add __hash__ client: Any = Field( default=None, description=( "Instance of `qdrant_client.AsyncQdrantClient`. Defaults to an in-memory" " instance." ), ) collection_name: str = Field(default_factory=lambda: f"paper-qa-{uuid.uuid4().hex}") vector_name: str | None = Field(default=None) _point_ids: set[str] | None = None def __del__(self): """Cleanup async client connection.""" try: loop = asyncio.get_event_loop() if loop.is_running(): _ = loop.create_task(self.aclose()) # noqa: RUF006 else: loop.run_until_complete(self.aclose()) except Exception as e: logger.warning(f"Error closing client connection: {e}") async def aclose(self): """Explicitly close async client.""" await self.client.close() def __eq__(self, other) -> bool: if not isinstance(other, type(self)): return NotImplemented return ( self.texts_hashes == other.texts_hashes and self.mmr_lambda == other.mmr_lambda and self.collection_name == other.collection_name and self.vector_name == other.vector_name and self.client.init_options == other.client.init_options and self._point_ids == other._point_ids ) @model_validator(mode="after") def validate_client(self): if not qdrant_installed: msg = ( "`QdrantVectorStore` requires the `qdrant-client` package. " "Install it with `pip install paper-qa[qdrant]`" ) raise ImportError(msg) if self.client and not isinstance(self.client, AsyncQdrantClient): raise TypeError( "'client' should be an instance of AsyncQdrantClient. Got" f" `{type(self.client)}`" ) if not self.client: # Defaults to the Python based in-memory implementation. self.client = AsyncQdrantClient(location=":memory:") return self async def _collection_exists(self) -> bool: return await self.client.collection_exists(self.collection_name) @override def clear(self) -> None: """Synchronous clear method that matches parent class.""" super().clear() # Clear the base class attributes first # Create a new event loop in a new thread to avoid nested loop issues def run_async(): new_loop = asyncio.new_event_loop() asyncio.set_event_loop(new_loop) try: new_loop.run_until_complete(self.aclear()) finally: new_loop.close() thread = threading.Thread(target=run_async) thread.start() thread.join() async def aclear(self) -> None: """Asynchronous clear implementation.""" if not await self._collection_exists(): return await self.client.delete_collection(collection_name=self.collection_name) self._point_ids = None async def add_texts_and_embeddings(self, texts: Iterable[Embeddable]) -> None: await super().add_texts_and_embeddings(texts) texts_list = list(texts) if texts_list and not await self._collection_exists(): params = models.VectorParams( size=len(cast("Sized", texts_list[0].embedding)), distance=models.Distance.COSINE, ) await self.client.create_collection( self.collection_name, vectors_config=( {self.vector_name: params} if self.vector_name else params ), ) ids, payloads, vectors = [], [], [] for text in texts_list: ids.append(uuid.uuid5(uuid.NAMESPACE_URL, str(text.embedding)).hex) payloads.append(text.model_dump(exclude={"embedding"})) vectors.append( {self.vector_name: text.embedding} if self.vector_name else text.embedding ) await self.client.upsert( collection_name=self.collection_name, points=[ models.PointStruct( id=some_id, payload=some_payload, vector=some_vector, ) for some_id, some_payload, some_vector in zip( ids, payloads, vectors, strict=True ) ], ) self._point_ids = set(ids) async def similarity_search( self, query: str, k: int, embedding_model: EmbeddingModel ) -> tuple[Sequence[Embeddable], list[float]]: if not await self._collection_exists(): return ([], []) embedding_model.set_mode(EmbeddingModes.QUERY) np_query = np.array((await embedding_model.embed_documents([query]))[0]) embedding_model.set_mode(EmbeddingModes.DOCUMENT) points = ( await self.client.query_points( collection_name=self.collection_name, query=np_query, using=self.vector_name, limit=k, with_vectors=True, with_payload=True, ) ).points return ( [ Text( **p.payload, embedding=( p.vector[self.vector_name] if self.vector_name else p.vector ), ) for p in points ], [p.score for p in points], ) @classmethod async def load_docs( cls, client: "AsyncQdrantClient", collection_name: str, vector_name: str | None = None, batch_size: int = 100, max_concurrent_requests: int = 5, ) -> "Docs": from paperqa.docs import Docs # Avoid circular imports vectorstore = cls( client=client, collection_name=collection_name, vector_name=vector_name ) docs = Docs(texts_index=vectorstore) collection_info = await client.get_collection(collection_name) total_points = collection_info.points_count or 0 semaphore = asyncio.Semaphore(max_concurrent_requests) all_points: list[Record] = [] async def fetch_batch_with_semaphore(offset: int) -> None: async with semaphore: points = await client.scroll( collection_name=collection_name, limit=batch_size, offset=offset, with_payload=True, # noqa: FURB120 with_vectors=True, ) all_points.extend(points[0]) tasks = [ fetch_batch_with_semaphore(offset) for offset in range(0, total_points, batch_size) ] await asyncio.gather(*tasks) for point in all_points: try: if point.payload is None: continue payload = point.payload doc_data = payload.get("doc", {}) if not isinstance(doc_data, dict): continue if doc_data.get("dockey") not in docs.docs: docs.docs[doc_data["dockey"]] = Doc( docname=doc_data.get("docname", ""), citation=doc_data.get("citation", ""), dockey=doc_data["dockey"], content_hash=doc_data.get("content_hash", AUTOPOPULATE_VALUE), ) docs.docnames.add(doc_data.get("docname", "")) if point.vector is None: continue vector_value = ( point.vector.get(vector_name) if vector_name and isinstance(point.vector, dict) else point.vector ) text = Text( text=payload.get("text", ""), name=payload.get("name", ""), doc=docs.docs[doc_data["dockey"]], embedding=vector_value, ) docs.texts.append(text) except KeyError as e: logger.warning(f"Skipping invalid point due to missing field: {e!s}") continue return docs def embedding_model_factory(embedding: str, **kwargs) -> EmbeddingModel: """ Factory function to create an appropriate EmbeddingModel based on the embedding string. Supports: - SentenceTransformer models prefixed with "st-" (e.g., "st-multi-qa-MiniLM-L6-cos-v1") - LiteLLM models (default if no prefix is provided) - Hybrid embeddings prefixed with "hybrid-", contains a sparse and a dense model Args: embedding: The embedding model identifier. Supports prefixes like "st-" for SentenceTransformer and "hybrid-" for combining multiple embedding models. **kwargs: Additional keyword arguments for the embedding model. """ embedding = embedding.strip() # Remove any leading/trailing whitespace if embedding.startswith("hybrid-"): # Extract the component embedding identifiers after "hybrid-" dense_name = embedding[len("hybrid-") :] if not dense_name: raise ValueError( "Hybrid embedding must contain at least one component embedding." ) # Recursively create each component embedding model dense_model = embedding_model_factory(dense_name, **kwargs) sparse_model = SparseEmbeddingModel(**kwargs) return HybridEmbeddingModel(models=[dense_model, sparse_model]) if embedding.startswith("st-"): # Extract the SentenceTransformer model name after "st-" model_name = embedding[len("st-") :].strip() if not model_name: raise ValueError( "SentenceTransformer model name must be specified after 'st-'." ) return SentenceTransformerEmbeddingModel( name=model_name, config=kwargs, ) if embedding.startswith("litellm-"): # Extract the LiteLLM model name after "litellm-" model_name = embedding[len("litellm-") :].strip() if not model_name: raise ValueError("model name must be specified after 'litellm-'.") return LiteLLMEmbeddingModel( name=model_name, config=kwargs, ) if embedding == "sparse": return SparseEmbeddingModel(**kwargs) # Default to LiteLLMEmbeddingModel if no special prefix is found return LiteLLMEmbeddingModel(name=embedding, config=kwargs) ================================================ FILE: src/paperqa/paths.py ================================================ from pathlib import Path PAPERQA_DIR = Path.home() / ".paperqa" ================================================ FILE: src/paperqa/prompts.py ================================================ from datetime import datetime summary_json_prompt = ( "Excerpt from {citation}\n\n---\n\n{text}\n\n---\n\nQuestion: {question}" ) summary_prompt = ( "Summarize the excerpt below to help answer a question." f"\n\n{summary_json_prompt}\n\n" "Do not directly answer the question," " instead summarize to give evidence to help answer the question." " Stay detailed; report specific numbers, equations, or direct quotes" ' (marked with quotation marks). Reply "Not applicable" if the excerpt is' " irrelevant. At the end of your response," " provide an integer score from 1-10 on a newline indicating relevance to question." # Don't use 0-10 since we mention "not applicable" instead # noqa: E501 " Do not explain your score." "\n\nRelevant Information Summary ({summary_length}):" ) # This prompt template integrates with `text` variable of the above `summary_prompt` text_with_tables_prompt_template = ( "{text}\n\n---\n\nMarkdown tables from {citation}." " If the markdown is poorly formatted, defer to the images." "\n\n{tables}" ) # The below "cannot answer" sentinel phrase should: # 1. Lead to complete tool being called with has_successful_answer=False # 2. Can be used for unit testing CANNOT_ANSWER_PHRASE = "I cannot answer" answer_iteration_prompt_template = ( "You are iterating on a prior answer, with a potentially different context:\n\n" "{prior_answer}\n\n" "Create a new answer only using context keys and data from the included context." " You can not use context keys from the prior answer which are not " "also included in the above context.\n\n" ) CITATION_KEY_CONSTRAINTS = ( "## Valid citation examples, only use comma/space delimited parentheticals:\n" "- (pqac-d79ef6fa, pqac-0f650d59)\n" "- (pqac-d79ef6fa)\n" "## Invalid citation examples:\n" "- (pqac-d79ef6fa and pqac-0f650d59)\n" "- (pqac-d79ef6fa;pqac-0f650d59)\n" "- (pqac-d79ef6fa-pqac-0f650d59)\n" "- pqac-d79ef6fa and pqac-0f650d59\n" "- Example's work (pqac-d79ef6fa)\n" "- (pages pqac-d79ef6fa)\n" "- Author et al. (2023)" ) qa_prompt = ( "Answer the question below with the context.\n\n" "Context:\n\n{context}\n\n---\n\n" "Question: {question}\n\n" "Write an answer based on the context. " "If the context provides insufficient information reply " f'"{CANNOT_ANSWER_PHRASE}." ' "For each part of your answer, indicate which sources most support " "it via citation keys at the end of sentences, like {example_citation}. " "Only cite from the context above and only use the citation keys from the context." f"\n\n{CITATION_KEY_CONSTRAINTS}\n\n" "Do not concatenate citation keys, just use them as is. " "Write in the style of a scientific article, with concise sentences and " "coherent paragraphs. This answer will be used directly, " "so do not add any extraneous information.\n\n" "{prior_answer_prompt}" "Answer ({answer_length}):" ) select_paper_prompt = ( "Select papers that may help answer the question below. " "Papers are listed as $KEY: $PAPER_INFO. " "Return a list of keys, separated by commas. " 'Return "None", if no papers are applicable. ' "Choose papers that are relevant, from reputable sources, and timely " "(if the question requires timely information).\n\n" "Question: {question}\n\n" "Papers: {papers}\n\n" "Selected keys:" ) citation_prompt = ( "Provide the citation for the following text in MLA Format. " "Do not write an introductory sentence. " "Do not fabricate a DOI such as '10.xxxx' if one cannot be found," " just leave it out of the citation. " f"If reporting date accessed, the current year is {datetime.now().year}\n\n" "{text}\n\n" "Citation:" ) structured_citation_prompt = ( "Extract the title, authors, and doi as a JSON from this MLA citation. " "If any field can not be found, return it as null. " "Use title, authors, and doi as keys, author's value should be a list of authors. " "{citation}\n\n" "Citation JSON:" ) default_system_prompt = ( "Answer in a direct and concise tone. " "Your audience is an expert, so be highly specific. " "If there are ambiguous terms or acronyms, first define them." ) # NOTE: we use double curly braces here so it's not considered an f-string template summary_json_system_prompt = ( "Provide a summary of the relevant information" " that could help answer the question based on the excerpt." " Your summary, combined with many others," " will be given to the model to generate an answer." " Respond with the following JSON format:" '\n\n{{\n "summary": "...",\n "relevance_score": 0-10\n}}' "\n\nwhere `summary` is relevant information from the text - {summary_length} words." " `relevance_score` is an integer 0-10 for the relevance of `summary` to the question." "\n\nThe excerpt may or may not contain relevant information." " If not, leave `summary` empty, and make `relevance_score` be 0." ) summary_json_multimodal_system_prompt = ( "Provide a summary of the relevant information" " that could help answer the question based on the excerpt." " Your summary, combined with many others," " will be given to the model to generate an answer." " Respond with the following JSON format:" '\n\n{{\n "summary": "...",\n "relevance_score": 0-10,\n "used_images": "..."\n}}' "\n\nwhere `summary` is relevant information from the text - {summary_length} words." " `relevance_score` is an integer 0-10 for the relevance of `summary` to the question." " `used_images` is a boolean flag indicating" " if any images present in a multimodal message were used," " and if no images were present it should be false." "\n\nThe excerpt may or may not contain relevant information." # Don't instruct setting `used_images` to false, because if images # are used to determine irrelevance, then `used_images` should be true " If not, leave `summary` empty, and make `relevance_score` be 0." ) env_system_prompt = ( # Matching https://github.com/langchain-ai/langchain/blob/langchain%3D%3D0.2.3/libs/langchain/langchain/agents/openai_functions_agent/base.py#L213-L215 "You are a helpful AI assistant." ) env_reset_prompt = ( "Use the tools to answer the question: {question}" "\n\nWhen the answer looks sufficient," " you can terminate by calling the {complete_tool_name} tool." " If the answer does not look sufficient," " and you have already tried to answer several times with different evidence," " terminate by calling the {complete_tool_name} tool." " The current status of evidence/papers/cost is {status}" ) # Prompt templates for use with LitQA QA_PROMPT_TEMPLATE = "Q: {question}\n\nOptions:\n{options}" EVAL_PROMPT_TEMPLATE = ( "Given the following question and a proposed answer to the question, return the" " single-letter choice in the question that matches the proposed answer." " If the proposed answer is blank or an empty string," " or multiple options are matched, respond with '0'." "\n\nQuestion: {qa_prompt}" "\n\nProposed Answer: {qa_answer}" "\n\nSingle Letter Answer:" ) CONTEXT_OUTER_PROMPT = "{context_str}\n\nValid Keys: {valid_keys}" EMPTY_CONTEXTS = len(CONTEXT_OUTER_PROMPT.format(context_str="", valid_keys="").strip()) CONTEXT_INNER_PROMPT_NOT_DETAILED = "{name}: {text}" CONTEXT_INNER_PROMPT = f"{CONTEXT_INNER_PROMPT_NOT_DETAILED}\nFrom {{citation}}" # For reference, here's Docling's image description prompt: # https://github.com/docling-project/docling/blob/v2.55.1/docling/datamodel/pipeline_options.py#L214-L216 individual_media_enrichment_prompt_template = ( "You are analyzing an image, formula, or table from a scientific document." " Provide a detailed description that will be used to answer questions about its content." " Focus on key elements, data, relationships, variables," " and scientific insights visible in the image." " It's especially important to document referential information such as" " figure/table numbers, labels, plot colors, or legends." "\n\nText co-located with the media may be associated with" " other media or unrelated content," " so do not just blindly quote referential information." " The smaller the image, the more likely co-located text is unrelated." " To restate, often the co-located text is several pages of content," " so only use aspects relevant to accompanying image, formula, or table." "\n\nHere's a few failure modes with possible resolutions:" "\n- The media was a logo or icon, so the text is unrelated." " In this case, briefly describe the media as a logo or icon," " and do not mention other unrelated surrounding text." "\n- The media was display type, so the text is probably unrelated." " The display type can be spread over several lines." " In this case, briefly describe the media as display type," " and do not mention other unrelated surrounding text." "\n- The media is a margin box or design element, so the text is unrelated." " In this case, briefly describe the media as decorative," " and do not mention other unrelated surrounding text." "\n- The media came from a bad PDF read, so it's garbled." " In this case, describe the media as garbled, state why it's considered garbled," " and do not mention other unrelated surrounding text." "\n- The media is a subfigure or a subtable." " In this case, make sure to only detail the subfigure or subtable," " not the entire figure or table." " Do not mention other unrelated surrounding text." "\n\nIMPORTANT: Start your response with exactly one of these labels:" "\n- 'RELEVANT:' if the media contains scientific content" " (e.g. figures, charts, tables, equations, diagrams, data visualizations)" " that could help answer scientific questions," " or if you're unsure of relevance (e.g. garbled/corrupted content)." "\n- 'IRRELEVANT:' if the media content is not useful for scientific question-answer" " (e.g. journal logo, icon, display type/typography, decorative element," " design element, margin box, is blank)." "\n\nAfter the label, provide your description." "\n\n{context_text}Label relevance, describe the media," # Allow for empty context_text " and if uncertain on a description please state why:" ) full_page_enrichment_prompt_template = ( "You are analyzing a screenshot of a page from a scientific document." " Provide a detailed description that will be used to answer questions about its content." " Focus on key elements, data, relationships, variables," " and scientific insights visible in the image." " It's especially important to document referential information such as" " figure/table numbers, labels, plot colors, or legends." "\n\nText co-located with the screenshot may be associated with" " other pages' content and unrelated," " so do not just blindly quote referential information." " To restate, the co-located text is several pages of content," " so only use aspects relevant to the accompanying screenshot." " Do not feel the need to extensively document entities in the margins" " such as journal logos, display type, margin boxes, or PDF design elements." " If the screenshot is garbled due to a bad screenshot," " describe the screenshot as garbled, state why it's considered garbled." "\n\nIMPORTANT: Start your response with exactly one of these labels:" "\n- 'RELEVANT:' if the screenshot contains scientific content" " (e.g. figures, charts, tables, equations, diagrams, data visualizations)" " that could help answer scientific questions," " or if you're unsure of relevance (e.g. garbled/corrupted content)." "\n- 'IRRELEVANT:' if the screenshot content is not useful for scientific question-answer" " (e.g. journal logo, icon, display type/typography, decorative element," " design element, margin box, is blank)." "\n\nAfter the label, provide your description." "\n\n{context_text}Label relevance, describe the screenshot," # Allow for empty context_text " and if uncertain on a description please state why:" ) ================================================ FILE: src/paperqa/py.typed ================================================ ================================================ FILE: src/paperqa/readers.py ================================================ from __future__ import annotations import asyncio import os from collections.abc import Awaitable, Callable from importlib.metadata import version from math import ceil from pathlib import Path from typing import Literal, Protocol, TypeAlias, cast, overload, runtime_checkable import anyio import tiktoken from aviary.core import is_coroutine_callable from html2text import __version__ as html2text_version from html2text import html2text from paperqa.types import ( ChunkMetadata, Doc, ParsedMedia, ParsedMetadata, ParsedText, Text, ) from paperqa.utils import ImpossibleParsingError from paperqa.version import __version__ as pqa_version @runtime_checkable class SyncPDFParserFn(Protocol): """Protocol for synchronously parsing a PDF.""" def __call__( self, path: str | os.PathLike, page_size_limit: int | None = None, page_range: int | tuple[int, int] | None = None, **kwargs, ) -> ParsedText: ... @runtime_checkable class AsyncPDFParserFn(Protocol): """Protocol for asynchronously parsing a PDF.""" async def __call__( self, path: str | os.PathLike, page_size_limit: int | None = None, page_range: int | tuple[int, int] | None = None, **kwargs, ) -> ParsedText: ... PDFParserFn: TypeAlias = SyncPDFParserFn | AsyncPDFParserFn def resolve_page_range( page_range: int | tuple[int, int] | None, page_count: int ) -> range: """Convert a 1-indexed page_range into a 0-indexed range object.""" if page_range is None: return range(page_count) if isinstance(page_range, int): return range(page_range - 1, min(page_range, page_count)) return range(page_range[0] - 1, min(page_range[1], page_count)) async def parse_image( path: str | os.PathLike, validator: Callable[[bytes], Awaitable] | None = None, **_ ) -> ParsedText: apath = anyio.Path(path) image_data = await anyio.Path(path).read_bytes() if validator: try: await validator(image_data) except Exception as exc: raise ImpossibleParsingError( f"Image validation failed for the image at path {path}." ) from exc parsed_media = ParsedMedia(index=0, data=image_data, info={"suffix": apath.suffix}) metadata = ParsedMetadata( parsing_libraries=[], paperqa_version=pqa_version, total_parsed_text_length=0, # No text, just an image count_parsed_media=1, name="image", ) return ParsedText(content={"1": ("", [parsed_media])}, metadata=metadata) def _make_chunk( parsed_text: ParsedText, doc: Doc, text: str, lower_page: str, upper_page: str ) -> Text: media: list[ParsedMedia] = [] for pg_num in range(int(lower_page), int(upper_page) + 1): pg_contents = cast(dict, parsed_text.content).get(str(pg_num)) if isinstance(pg_contents, tuple): media.extend(pg_contents[1]) # pretty formatting of pages (e.g. 1-3, 4, 5-7) name = "-".join([lower_page, upper_page]) return Text(text=text, name=f"{doc.docname} pages {name}", media=media, doc=doc) def chunk_pdf( parsed_text: ParsedText, doc: Doc, chunk_chars: int, overlap: int ) -> list[Text]: pages: list[str] = [] texts: list[Text] = [] split: str = "" if not isinstance(parsed_text.content, dict): raise NotImplementedError( f"ParsedText.content must be a `dict`, not {type(parsed_text.content)}." ) if not parsed_text.content: raise ImpossibleParsingError( f"No text was parsed from the document named {doc.docname!r} with ID" f" {doc.dockey}, either empty or corrupted." ) for page_num, page_contents in parsed_text.content.items(): page_text = ( page_contents if isinstance(page_contents, str) else page_contents[0] ) split += page_text pages.append(page_num) # split could be so long it needs to be split # into multiple chunks. Or it could be so short # that it needs to be combined with the next chunk. while len(split) > chunk_chars: texts.append( _make_chunk(parsed_text, doc, split[:chunk_chars], pages[0], pages[-1]) ) split = split[chunk_chars - overlap :] pages = [page_num] if len(split) > overlap or not texts: texts.append( _make_chunk(parsed_text, doc, split[:chunk_chars], pages[0], pages[-1]) ) return texts def parse_text( path: str | os.PathLike, html: bool = False, split_lines: bool = False, page_size_limit: int | None = None, **_, ) -> ParsedText: """Simple text splitter, can parse html or split into newlines. Args: path: path to file. html: flag to use html2text library for parsing. split_lines: flag to split lines into a list. page_size_limit: optional limit on the number of characters per page. Only relevant when split_lines is True. """ path = Path(path) try: with path.open() as f: text = list(f) if split_lines else f.read() except UnicodeDecodeError: with path.open(encoding="utf-8", errors="ignore") as f: text = f.read() parsing_libraries: list[str] = [] if html: if not isinstance(text, str): raise NotImplementedError( "HTML parsing is not yet set up to work with split_lines." ) parse_summary: str = "html" text = html2text(text) parsing_libraries.append(f"html2text ({html2text_version})") else: parse_summary = "txt" if isinstance(text, str): total_length: int = len(text) else: total_length = sum(len(t) for t in text) for i, t in enumerate(text): if page_size_limit and len(text) > page_size_limit: raise ImpossibleParsingError( f"The {parse_summary} on page {i} of {len(text)} was {len(t)} chars" f" long, which exceeds the {page_size_limit} char limit at path" f" {path}." ) return ParsedText( content=text, metadata=ParsedMetadata( parsing_libraries=parsing_libraries, paperqa_version=pqa_version, total_parsed_text_length=total_length, name=f"{parse_summary}|split-lines={split_lines}", ), ) def parse_office_doc( path: str | os.PathLike, **kwargs, ) -> ParsedText: """Parse office documents (.docx, .xlsx, .pptx) using unstructured, extracting text and images.""" try: import unstructured from unstructured.documents.elements import Image, Table from unstructured.partition.auto import partition except ImportError as exc: raise ImportError( "Could not import `unstructured` dependencies. " "Please install with `pip install paper-qa[office]`." ) from exc UNSTRUCTURED_VERSION = version(unstructured.__name__) elements = partition(str(path), **kwargs) content_dict = {} media_list: list[ParsedMedia] = [] current_text = "" media_index = 0 for el in elements: if isinstance(el, Image): image_data = el.metadata.image_data # Create a ParsedMedia object parsed_media = ParsedMedia( index=media_index, data=image_data, info={"suffix": el.metadata.image_mime_type}, ) media_list.append(parsed_media) media_index += 1 elif isinstance(el, Table): # For tables, we could get the HTML representation for better structure if el.metadata.text_as_html: current_text += el.metadata.text_as_html + "\n\n" else: current_text += str(el) + "\n\n" # For office docs, we can treat the whole document as a single "page" content_dict["1"] = (current_text, media_list) return ParsedText( content=content_dict, metadata=ParsedMetadata( parsing_libraries=[f"{unstructured.__name__} ({UNSTRUCTURED_VERSION})"], paperqa_version=pqa_version, total_parsed_text_length=len(current_text), count_parsed_media=len(media_list), name=f"office_doc|path={path}", ), ) def chunk_text( parsed_text: ParsedText, doc: Doc, chunk_chars: int, overlap: int, use_tiktoken: bool = True, ) -> list[Text]: """Parse a document into chunks, based on tiktoken encoding. NOTE: We get some byte continuation errors. Currently ignored, but should explore more to make sure we don't miss anything. """ texts: list[Text] = [] enc = tiktoken.get_encoding("cl100k_base") if not isinstance(parsed_text.content, str): raise NotImplementedError( f"ParsedText.content must be a `str`, not {type(parsed_text.content)}." ) content: str | list[int] = ( parsed_text.content if not use_tiktoken # we tokenize using tiktoken so cuts are in reasonable places else cast(list[int], parsed_text.encode_content(enc)) ) if not content: # Avoid div0 in token calculations raise ImpossibleParsingError( f"No text was parsed from the document named {doc.docname!r} with ID" f" {doc.dockey}, either empty or corrupted." ) # convert from characters to chunks char_count = parsed_text.metadata.total_parsed_text_length # e.g., 25,000 token_count = len(content) # e.g., 4,500 chars_per_token = char_count / token_count # e.g., 5.5 chunk_tokens = chunk_chars / chars_per_token # e.g., 3000 / 5.5 = 545 overlap_tokens = overlap / chars_per_token # e.g., 100 / 5.5 = 18 chunk_count = ceil(token_count / chunk_tokens) # e.g., 4500 / 545 = 9 for i in range(chunk_count): split = content[ max(int(i * chunk_tokens - overlap_tokens), 0) : int( (i + 1) * chunk_tokens + overlap_tokens ) ] texts.append( Text( text=( enc.decode(cast("list[int]", split)) if use_tiktoken else cast("str", split) ), name=f"{doc.docname} chunk {i + 1}", doc=doc, ) ) return texts def chunk_code_text( parsed_text: ParsedText, doc: Doc, chunk_chars: int, overlap: int ) -> list[Text]: """Parse a document into chunks, based on line numbers (for code).""" text_buffer = "" texts: list[Text] = [] line_i = last_line_i = 0 if not isinstance(parsed_text.content, str | list): raise NotImplementedError( f"Didn't yet handle ParsedText.content of type {type(parsed_text.content)}." ) for line_i, line in enumerate( [parsed_text.content] if isinstance(parsed_text.content, str) else parsed_text.content ): text_buffer += line while len(text_buffer) > chunk_chars: texts.append( Text( text=text_buffer[:chunk_chars], name=f"{doc.docname} lines {last_line_i}-{line_i}", doc=doc, ) ) text_buffer = text_buffer[chunk_chars - overlap :] last_line_i = line_i if ( len(text_buffer) > overlap # Save meaningful amount of content as a final text or not texts # Contents were smaller than one chunk, save it anyways ): texts.append( Text( text=text_buffer[:chunk_chars], name=f"{doc.docname} lines {last_line_i}-{line_i}", doc=doc, ) ) return texts IMAGE_EXTENSIONS = tuple({".png", ".jpg", ".jpeg"}) # When HTML reader supports images, add here ENRICHMENT_EXTENSIONS = tuple({".pdf", ".docx", ".xlsx", ".pptx", *IMAGE_EXTENSIONS}) @overload async def read_doc( path: str | os.PathLike, doc: Doc, parsed_text_only: Literal[True], include_metadata: Literal[True], chunk_chars: int = ..., overlap: int = ..., multimodal_enricher: Callable[[ParsedText], Awaitable] | None = ..., parse_pdf: PDFParserFn | None = ..., **parser_kwargs, ) -> ParsedText: ... @overload async def read_doc( path: str | os.PathLike, doc: Doc, parsed_text_only: Literal[True], include_metadata: Literal[False] = ..., chunk_chars: int = ..., overlap: int = ..., multimodal_enricher: Callable[[ParsedText], Awaitable] | None = ..., parse_pdf: PDFParserFn | None = ..., **parser_kwargs, ) -> ParsedText: ... @overload async def read_doc( path: str | os.PathLike, doc: Doc, parsed_text_only: Literal[False], include_metadata: Literal[True], chunk_chars: int = ..., overlap: int = ..., multimodal_enricher: Callable[[ParsedText], Awaitable] | None = ..., parse_pdf: PDFParserFn | None = ..., **parser_kwargs, ) -> tuple[list[Text], ParsedMetadata]: ... @overload async def read_doc( path: str | os.PathLike, doc: Doc, parsed_text_only: Literal[False] = ..., include_metadata: Literal[False] = ..., chunk_chars: int = ..., overlap: int = ..., multimodal_enricher: Callable[[ParsedText], Awaitable] | None = ..., parse_pdf: PDFParserFn | None = ..., **parser_kwargs, ) -> list[Text]: ... @overload async def read_doc( path: str | os.PathLike, doc: Doc, *, include_metadata: Literal[True], chunk_chars: int = ..., overlap: int = ..., multimodal_enricher: Callable[[ParsedText], Awaitable] | None = ..., parse_pdf: PDFParserFn | None = ..., **parser_kwargs, ) -> tuple[list[Text], ParsedMetadata]: ... async def read_doc( # noqa: PLR0912 path: str | os.PathLike, doc: Doc, parsed_text_only: bool = False, include_metadata: bool = False, chunk_chars: int = 5000, overlap: int = 250, multimodal_enricher: Callable[[ParsedText], Awaitable[str]] | None = None, parse_pdf: PDFParserFn | None = None, **parser_kwargs, ) -> list[Text] | ParsedText | tuple[list[Text], ParsedMetadata]: """Parse a document and split into chunks. Args: path: local document path doc: object with document metadata parsed_text_only: return parsed text without chunking include_metadata: Opt-in flag to include metadata about the chunking algorithm. chunk_chars: size of chunks overlap: size of overlap between chunks multimodal_enricher: Optional function to enrich the parsed text and return a hashable string summary before chunking. parse_pdf: Optional function to parse PDF files (if you're parsing a PDF). parser_kwargs: Keyword arguments to pass to the used parsing function. """ str_path = str(path) # start with parsing -- users may want to store this separately if str_path.endswith(".pdf"): if parse_pdf is None: raise ValueError("When parsing a PDF, a parsing function must be provided.") # Some PDF parsers are not thread-safe, # so can't use multithreading via `asyncio.to_thread` here if is_coroutine_callable(parse_pdf): parsed_text: ParsedText = await cast(AsyncPDFParserFn, parse_pdf)( path, **parser_kwargs ) else: parsed_text = cast(SyncPDFParserFn, parse_pdf)(path, **parser_kwargs) elif str_path.endswith(".txt"): # TODO: Make parse_text async parsed_text = await asyncio.to_thread(parse_text, path, **parser_kwargs) elif str_path.endswith(".html"): parsed_text = await asyncio.to_thread( parse_text, path, html=True, **parser_kwargs ) elif str_path.endswith(IMAGE_EXTENSIONS): parsed_text = await parse_image(path, **parser_kwargs) elif str_path.endswith((".docx", ".xlsx", ".pptx")): # TODO: Make parse_office_doc async parsed_text = await asyncio.to_thread(parse_office_doc, path, **parser_kwargs) else: parsed_text = await asyncio.to_thread( parse_text, path, split_lines=True, **parser_kwargs ) if parsed_text_only: return parsed_text # Enrich upon full parsed text before chunking, since enrichment # may view adjacent pages (and not getting cut off on chunk boundaries) if str_path.endswith(ENRICHMENT_EXTENSIONS) and multimodal_enricher: enrichment_summary: str = f"|{await multimodal_enricher(parsed_text)}" else: enrichment_summary = "" # next chunk the parsed text if chunk_chars == 0: chunked_text = [ Text(text=parsed_text.reduce_content(), name=doc.docname, doc=doc) ] chunk_metadata = ChunkMetadata( size=0, overlap=0, name=( f"paper-qa={pqa_version}|algorithm=none" f"|reduction=cl100k_base{enrichment_summary}" ), ) elif str_path.endswith((".pdf", ".docx", ".xlsx", ".pptx")): chunked_text = chunk_pdf( parsed_text, doc, chunk_chars=chunk_chars, overlap=overlap ) chunk_metadata = ChunkMetadata( size=chunk_chars, overlap=overlap, name=( f"paper-qa={pqa_version}|algorithm=overlap-document" f"|size={chunk_chars}|overlap={overlap}{enrichment_summary}" ), ) elif str_path.endswith(IMAGE_EXTENSIONS): chunked_text = chunk_pdf( parsed_text, doc, chunk_chars=chunk_chars, overlap=overlap ) chunk_metadata = ChunkMetadata( size=0, overlap=0, name=f"paper-qa={pqa_version}|algorithm=none{enrichment_summary}", ) elif str_path.endswith((".txt", ".html")): chunked_text = chunk_text( parsed_text, doc, chunk_chars=chunk_chars, overlap=overlap ) chunk_metadata = ChunkMetadata( size=chunk_chars, overlap=overlap, name=( f"paper-qa={pqa_version}|algorithm=overlap-text|reduction=cl100k_base" f"|size={chunk_chars}|overlap={overlap}{enrichment_summary}" ), ) else: chunked_text = chunk_code_text( parsed_text, doc, chunk_chars=chunk_chars, overlap=overlap ) chunk_metadata = ChunkMetadata( size=chunk_chars, overlap=overlap, name=( f"paper-qa={pqa_version}|algorithm=overlap-code|reduction=cl100k_base" f"|size={chunk_chars}|overlap={overlap}{enrichment_summary}" ), ) if include_metadata: parsed_text.metadata.chunk_metadata = chunk_metadata return chunked_text, parsed_text.metadata return chunked_text ================================================ FILE: src/paperqa/settings.py ================================================ import asyncio import importlib.resources import logging import os import pathlib import re import warnings from collections import defaultdict from collections.abc import Awaitable, Callable, Mapping, Sequence from contextlib import suppress from enum import IntEnum, StrEnum from itertools import starmap from pydoc import locate from typing import ( Any, ClassVar, Protocol, Self, TypeAlias, assert_never, cast, runtime_checkable, ) import anyio import litellm from aviary.core import Message, Tool, ToolSelector from lmi import ( CommonLLMNames, EmbeddingModel, LiteLLMModel, embedding_model_factory, ) from pydantic import ( BaseModel, ConfigDict, Field, SerializerFunctionWrapHandler, computed_field, field_validator, model_serializer, model_validator, ) from pydantic.json_schema import SkipJsonSchema from pydantic_core.core_schema import SerializationInfo from pydantic_settings import BaseSettings, CliSettingsSource, SettingsConfigDict import paperqa.configs from paperqa._ldp_shims import ( HAS_LDP_INSTALLED, Agent, HTTPAgentClient, MemoryAgent, ReActAgent, SimpleAgent, SimpleAgentState, UIndexMemoryModel, _Memories, set_training_mode, ) from paperqa.prompts import ( CONTEXT_INNER_PROMPT, CONTEXT_OUTER_PROMPT, answer_iteration_prompt_template, citation_prompt, default_system_prompt, env_reset_prompt, env_system_prompt, individual_media_enrichment_prompt_template, qa_prompt, select_paper_prompt, structured_citation_prompt, summary_json_prompt, summary_json_system_prompt, summary_prompt, ) from paperqa.readers import PDFParserFn from paperqa.types import Context, ParsedMedia, ParsedText from paperqa.utils import ( get_stable_str, hexdigest, parse_enrichment_irrelevance, pqa_directory, ) logger = logging.getLogger(__name__) # TODO: move to actual EnvironmentState # when we can do so without a circular import _EnvironmentState: TypeAlias = Any @runtime_checkable class AsyncContextSerializer(Protocol): """Protocol for generating a context string from settings and context.""" async def __call__( self, settings: "Settings", contexts: Sequence[Context], question: str, pre_str: str | None, ) -> str: ... class AnswerSettings(BaseModel): model_config = ConfigDict(extra="forbid", arbitrary_types_allowed=True) evidence_k: int = Field( default=10, description="Number of evidence pieces to retrieve." ) evidence_retrieval: bool = Field( default=True, description="Whether to use retrieval instead of processing all docs.", ) # no validator because you can set the range in a prompt evidence_relevance_score_cutoff: int = Field( default=1, ge=0, description=( "Relevance score cutoff for evidence retrieval, default is 1, meaning" " only evidence with relevance score >= 1 will be used." ), ) evidence_summary_length: str = Field( default="about 100 words", description="Length of evidence summary." ) evidence_skip_summary: bool = Field( default=False, description="Whether to summarization." ) evidence_text_only_fallback: bool = Field( default=False, description=( "Opt-in flag to allow creating contexts without media (just text)," " if the media is problematic for the LLM provider or network." ), ) answer_max_sources: int = Field( default=5, description="Max number of sources to use for an answer." ) max_answer_attempts: int | None = Field( default=None, description=( "Optional (exclusive) max number (default is no max) of attempts to" " generate an answer before declaring done (without a complete tool call). " ), ) answer_length: str = Field( default="about 200 words, but can be longer", description="Length of final answer.", ) max_concurrent_requests: int = Field( default=4, description="Max concurrent requests to LLMs." ) answer_filter_extra_background: bool = Field( default=False, description="Whether to cite background information provided by model.", ) get_evidence_if_no_contexts: bool = Field( default=True, description=( "Opt-out flag for allowing answer generation to lazily gather evidence if" " called before evidence was gathered." ), ) group_contexts_by_question: bool = Field( default=False, description="Whether to group contexts by question when generating answers.", ) skip_evidence_citation_strip: bool = Field( default=False, description="Whether to skip stripping citations from evidence.", ) class ChunkingOptions(StrEnum): SIMPLE_OVERLAP = "simple_overlap" def get_default_pdf_parser() -> PDFParserFn: parse_pdf_to_pages: PDFParserFn try: from paperqa_pymupdf import parse_pdf_to_pages except ImportError: try: from paperqa_pypdf import parse_pdf_to_pages # type: ignore[no-redef,unused-ignore] except ImportError as exc: raise ImportError( "To parse PDFs we need a parsing function. Please install either:" " (1) paper-qa-pypdf via `pip install paper-qa[pypdf]` or" " (2) paper-qa-pymupdf via `pip install paper-qa[pymupdf]`." ) from exc return parse_pdf_to_pages def default_pdf_parser_configurator() -> None: try: from paperqa_pymupdf import setup_pymupdf_python_logging except ImportError: return setup_pymupdf_python_logging() class MultimodalOptions(IntEnum): # Text-only PDF reads OFF = 0 # Falsey ON_WITH_ENRICHMENT = 1 # Default # Without image enrichment, multimodal will miss retrieval of certain images, # but it costs less money (no enrichment LLM calls) ON_WITHOUT_ENRICHMENT = 2 @classmethod def from_value(cls, value: "bool | MultimodalOptions") -> "MultimodalOptions": if isinstance(value, bool): return cls(int(value)) return value @property def should_parse_and_enrich_media(self) -> tuple[bool, bool]: """Get if the settings indicate to parse and also enrich media.""" if self == MultimodalOptions.OFF: return False, False if self == MultimodalOptions.ON_WITHOUT_ENRICHMENT: return True, False if self == MultimodalOptions.ON_WITH_ENRICHMENT: return True, True assert_never(self) class ParsingSettings(BaseModel): """Settings relevant for parsing and chunking documents.""" model_config = ConfigDict(extra="forbid", arbitrary_types_allowed=True) page_size_limit: int | None = Field( default=1_280_000, description=( "Optional limit on the number of characters to parse in one 'page', default" " is 1.28 million chars, 10X larger than a 128k tokens context limit" " (ignoring chars vs tokens difference)." ), ) use_doc_details: bool = Field( default=True, description="Whether to try to get metadata details for a Doc." ) reader_config: dict[str, Any] = Field( default_factory=lambda: {"chunk_chars": 5000, "overlap": 250}, description="Optional keyword arguments for the document reader.", examples=[{"dpi": 300}], ) multimodal: bool | MultimodalOptions = Field( default=MultimodalOptions.ON_WITH_ENRICHMENT, description=( "Controls on parsing images/tables (if applicable to a given document)." " Setting false or off will parse only text," " setting true or 'on with enrichment' will parse media and use" " the enrichment LLM to generate descriptions of the media," " setting 'on without enrichment' will parse media without enrichment." ), ) citation_prompt: str = Field( default=citation_prompt, description="Prompt that tries to create citation from peeking one chunk.", ) structured_citation_prompt: str = Field( default=structured_citation_prompt, description=( "Prompt that tries to creates a citation in JSON from peeking one chunk." ), ) disable_doc_valid_check: bool = Field( default=False, description=( "Whether to disable checking if a document looks like text (was parsed" " correctly)." ), ) defer_embedding: bool = Field( default=False, description=( "Whether to embed documents immediately as they are added, or defer until" " summarization." ), ) parse_pdf: SkipJsonSchema[PDFParserFn] = Field( default_factory=get_default_pdf_parser, description="Function to parse PDF, or a fully qualified name to import.", examples=["paperqa_docling.parse_pdf_to_pages"], exclude=True, # NOTE: a custom serializer is used below, so it's not excluded ) configure_pdf_parser: SkipJsonSchema[Callable[[], Any]] = Field( default=default_pdf_parser_configurator, description=( "Callable to configure the PDF parser within parse_pdf," " useful for behaviors such as enabling logging." ), exclude=True, ) @field_validator("parse_pdf", mode="before") @classmethod def _resolve_parse_pdf(cls, v: str | PDFParserFn) -> PDFParserFn: """Resolve a fully qualified name to a parser function.""" if isinstance(v, str): resolved = locate(v) if resolved is None: raise ValueError(f"Failed to locate PDF parser function {v!r}.") if not isinstance(resolved, PDFParserFn): raise TypeError(f"Value {v!r} is not a PDF parser function.") return resolved return v @model_serializer(mode="wrap") def _custom_serializer( self, serializer: SerializerFunctionWrapHandler, info: SerializationInfo ) -> dict[str, Any]: data = serializer(self) # NOTE: due to parse_pdf's exclude=True flag, it's not yet in this data. # Let's now add it back if we can safely deserialize "over the network" if isinstance(self.parse_pdf, str): # Already JSON-compliant, so let's un-exclude data["parse_pdf"] = self.parse_pdf elif info.mode == "json": # If going to JSON, and we can get a FQN, do so for JSON compliance with suppress(ValueError): # Suppress when not serialization-safe data["parse_pdf"] = get_stable_str(self.parse_pdf) return data doc_filters: Sequence[Mapping[str, Any]] | None = Field( default=None, description=( "Optional filters to only allow documents that match this filter. This is a" " dictionary where the keys are the fields from DocDetails or Docs to" " filter on, and the values are the values to filter for. To invert filter," " prefix the key with a '!'. If the key is not found, by default the Doc is" " rejected. To change this behavior, prefix the key with a '?' to allow the" " Doc to pass if the key is not found. For example, {'!title': 'bad title'," " '?year': '2022'} would only allow Docs with a title that is not 'bad" " title' and a year of 2022 or no year at all." ), ) use_human_readable_clinical_trials: bool = Field( default=False, description="Parse clinical trial JSONs into human readable text.", ) enrichment_llm: str = Field( # NOTE: from CapArena (https://arxiv.org/abs/2503.12329), # GPT-4o was the best image captioning model as of spring 2025 # NOTE: claude-haiku-4-5-20251001 recurringly failed to describe display type # to be display type, so its captioning ability isn't good enough yet default=CommonLLMNames.GPT_4O.value, description="LLM for media enrichment (e.g. generating descriptions).", ) enrichment_llm_config: dict | None = Field( default=None, description=( "Optional configuration for the enrichment_llm model. More specifically, it's" " a LiteLLM Router configuration to pass to LiteLLMModel, must have" " `model_list` key (corresponding to model_list inputs here:" " https://docs.litellm.ai/docs/routing), and can optionally include a" " router_kwargs key with router kwargs as values." ), ) enrichment_page_radius: int = Field( default=1, # Default is 1 because figures are usually +/- 1 page in LaTeX ge=-1, description=( "Page radius for context text in enrichment. " "-1 means all pages, 0 means current page only, " "1+ means a radius of pages around the current page." ), ) enrichment_prompt: str = Field( default=individual_media_enrichment_prompt_template, description="Prompt template for enriching media.", ) @property def should_parse_and_enrich_media(self) -> tuple[bool, bool]: """Get if the settings indicate to parse and also enrich media.""" mm_enum = MultimodalOptions.from_value(self.multimodal) return mm_enum.should_parse_and_enrich_media class _FormatDict(dict): # noqa: FURB189 """Mock a dictionary and store any missing items.""" def __init__(self) -> None: self.key_set: set[str] = set() def __missing__(self, key: str) -> str: self.key_set.add(key) return key def get_formatted_variables(s: str) -> set[str]: """Returns the set of variables implied by the format string.""" format_dict = _FormatDict() s.format_map(format_dict) return format_dict.key_set class PromptSettings(BaseModel): model_config = ConfigDict(extra="forbid", validate_assignment=True) # citations are inserted with Context.id as follows, # these are translated to MLA parenthetical in-text citation styling # SEE: https://nwtc.libguides.com/citations/MLA#s-lg-box-707489 EXAMPLE_CITATION: ClassVar[str] = "(pqac-0f650d59)" summary: str = summary_prompt qa: str = qa_prompt answer_iteration_prompt: str | None = Field( default=answer_iteration_prompt_template, description=( "Prompt to inject existing prior answers into the qa prompt to allow the model to iterate. " "If None, then no prior answers will be injected." ), ) select: str = select_paper_prompt pre: str | None = Field( default=None, description=( "Opt-in pre-prompt (templated with just the original question) to append" " information before a qa prompt. For example:" " 'Summarize all scientific terms in the following question:\n{question}'." " This pre-prompt can enable injection of question-specific guidance later" " used by the qa prompt, without changing the qa prompt's template." ), ) post: str | None = None system: str = default_system_prompt use_json: bool = True # Not thrilled about this model, # but need to split out the system/summary # to get JSON summary_json: str = summary_json_prompt summary_json_system: str = summary_json_system_prompt context_outer: str = Field( default=CONTEXT_OUTER_PROMPT, description="Prompt for how to format all contexts in generate answer.", ) context_inner: str = Field( default=CONTEXT_INNER_PROMPT, description=( "Prompt for how to format a single context in generate answer. " "This should at least contain key and name." ), ) @field_validator("summary") @classmethod def check_summary(cls, v: str) -> str: if not get_formatted_variables(v).issubset( get_formatted_variables(summary_prompt) ): raise ValueError( "Summary prompt can only have variables:" f" {get_formatted_variables(summary_prompt)}" ) return v @field_validator("qa") @classmethod def check_qa(cls, v: str) -> str: if not get_formatted_variables(v).issubset(get_formatted_variables(qa_prompt)): raise ValueError( "QA prompt can only have variables:" f" {get_formatted_variables(qa_prompt)}" ) return v @field_validator("select") @classmethod def check_select(cls, v: str) -> str: if not get_formatted_variables(v).issubset( get_formatted_variables(select_paper_prompt) ): raise ValueError( "Select prompt can only have variables:" f" {get_formatted_variables(select_paper_prompt)}" ) return v @field_validator("post") @classmethod def check_post(cls, v: str | None) -> str | None: if v is not None: # kind of a hack to get list of attributes in answer from paperqa.types import PQASession attrs = set(PQASession.model_fields.keys()) if not get_formatted_variables(v).issubset(attrs): raise ValueError(f"Post prompt must have input variables: {attrs}") return v @field_validator("context_outer") @classmethod def check_context_outer(cls, v: str) -> str: if not get_formatted_variables(v).issubset( get_formatted_variables(CONTEXT_OUTER_PROMPT) ): raise ValueError( "Context outer prompt can only have variables:" f" {get_formatted_variables(CONTEXT_OUTER_PROMPT)}" ) return v @field_validator("context_inner") @classmethod def check_context_inner(cls, v: str) -> str: fvars = get_formatted_variables(v) if "name" not in fvars or "text" not in fvars: raise ValueError("Context inner prompt must have name and text") return v class IndexSettings(BaseModel): model_config = ConfigDict(extra="forbid") name: str | None = Field( default=None, description=( "Optional name of the index. If unspecified, the name should be generated." ), ) paper_directory: str | os.PathLike = Field( default=pathlib.Path.cwd(), description=( "Local directory which contains the papers to be indexed and searched." ), ) manifest_file: str | os.PathLike | None = Field( default=None, description=( "Optional absolute path to a manifest CSV, or a relative path from the" " paper_directory to a manifest CSV. A manifest CSV contains columns which" " are attributes for a DocDetails object. Only 'file_location', 'doi', and" " 'title' will be used when indexing, others are discarded." ), ) index_directory: str | os.PathLike = Field( default_factory=lambda: pqa_directory("indexes"), description=( "Directory to store the PQA built search index, configuration, and" " answer indexes." ), ) use_absolute_paper_directory: bool = Field( default=False, description=( "Opt-in flag to convert the paper_directory to an absolute path. Setting" " this to True will make the index user-specific, defeating sharing." ), ) recurse_subdirectories: bool = Field( default=True, description="Whether to recurse into subdirectories when indexing sources.", ) concurrency: int = Field( default=5, # low default for folks without S2/Crossref keys description="Number of concurrent filesystem reads for indexing", ) batch_size: int = Field( default=1, ge=1, description="Number of files to process before committing to the index.", ) sync_with_paper_directory: bool = Field( default=True, description=( "Whether to sync the index with the paper directory when loading an index." " Setting to True will add or delete index files to match the source paper" " directory." ), ) files_filter: SkipJsonSchema[Callable[[anyio.Path | pathlib.Path], bool]] = Field( default=lambda f: ( f.suffix # TODO: add images after embeddings are supported in {".txt", ".pdf", ".html", ".md", ".xlsx", ".docx", ".pptx"} ), exclude=True, description=( "Filter function to apply to files in the paper directory." " When the function returns True, the file will be indexed." ), ) def get_named_index_directory(self) -> anyio.Path: """Get the directory where the index, when named, will be located. Raises: ValueError: If the index name was unset, because otherwise the name is autogenerated. """ if self.name is None: raise ValueError( "Getting a named index directory requires an index name to have been" " specified, please specify a name." ) return anyio.Path(self.index_directory) / self.name async def finalize_manifest_file(self) -> anyio.Path | None: manifest_file = anyio.Path(self.manifest_file) if self.manifest_file else None if manifest_file and not await manifest_file.exists(): # If the manifest file was specified but doesn't exist, # perhaps it was specified as a relative path from the paper_directory manifest_file = anyio.Path(self.paper_directory) / manifest_file return manifest_file class AgentSettings(BaseModel): model_config = ConfigDict(extra="forbid") agent_llm: str = Field( default=CommonLLMNames.GPT_4O.value, description="LLM inside the agent making tool selections.", ) agent_llm_config: dict | None = Field( default=None, description=( "Optional configuration for the agent_llm model. More specifically, it's" " a LiteLLM Router configuration to pass to LiteLLMModel, must have" " `model_list` key (corresponding to model_list inputs here:" " https://docs.litellm.ai/docs/routing), and can optionally include a" " router_kwargs key with router kwargs as values." ), ) agent_type: str = Field( default="ToolSelector", description="Type of agent to use", ) agent_config: dict[str, Any] | None = Field( default=None, description="Optional kwarg for AGENT constructor.", ) agent_system_prompt: str | None = Field( default=env_system_prompt, description="Optional system prompt message to precede the below agent_prompt.", ) agent_prompt: str = env_reset_prompt return_paper_metadata: bool = Field( default=False, description=( "Set True to have the search tool include paper title/year information as" " part of its return." ), ) search_count: int = 8 agent_evidence_n: int = Field( default=1, ge=1, description=( "Top n ranked evidences shown to the agent after the GatherEvidence tool." ), ) timeout: float = Field( default=500.0, description=( "Matches LangChain AgentExecutor.max_execution_time (seconds), the timeout" " on agent execution." ), ) tool_names: set[str] | Sequence[str] | None = Field( default=None, description=( "Optional override on the tools to provide the agent. Leaving as the" " default of None will use a minimal toolset of the paper search, gather" " evidence, collect cited papers from evidence, and gen answer. If passing" " tool names (non-default route), at least the gen answer tool must be" " supplied." ), ) max_timesteps: int | None = Field( default=None, description="Optional upper limit on the number of environment steps.", ) index: IndexSettings = Field(default_factory=IndexSettings) rebuild_index: bool = Field( default=True, description=( "Flag to rebuild the index at the start of agent runners, default is True" " for CLI users to ensure all source PDFs are pulled in." ), ) callbacks: SkipJsonSchema[ Mapping[str, Sequence[Callable[[_EnvironmentState], Any]]] ] = Field( default_factory=dict, description=""" A mapping that associates callback names with lists of corresponding callable functions. Each callback list contains functions that will be called with an instance of `EnvironmentState`, representing the current state context. Accepted callback names: - 'gen_answer_initialized': Triggered when `GenerateAnswer.gen_answer` is initialized. - 'gen_answer_aget_query': LLM callbacks to execute in the prompt runner as part of `GenerateAnswer.gen_answer`. - 'gen_answer_completed': Triggered after `GenerateAnswer.gen_answer` successfully generates an answer. - 'gather_evidence_initialized': Triggered when `GatherEvidence.gather_evidence` is initialized. - 'gather_evidence_aget_evidence: LLM callbacks to execute in the prompt runner as part of `GatherEvidence.gather_evidence`. - 'gather_evidence_completed': Triggered after `GatherEvidence.gather_evidence` completes evidence gathering. """, exclude=True, ) def make_default_litellm_model_list_settings( llm: str, temperature: float = 0.0 ) -> dict: """Settings matching "model_list" schema here: https://docs.litellm.ai/docs/routing.""" return { "name": llm, "model_list": [ { "model_name": llm, "litellm_params": { "model": llm, "temperature": temperature, # SEE: https://docs.litellm.ai/docs/tutorials/prompt_caching#litellm-python-sdk-usage "cache_control_injection_points": [ {"location": "message", "role": "system"} ], }, } ], } class Settings(BaseSettings): model_config = SettingsConfigDict(extra="ignore") llm: str = Field( default=CommonLLMNames.GPT_4O.value, description=( "LLM for general use including metadata inference (see Docs.aadd)" " and answer generation (see Docs.aquery and gen_answer tool)." " Should be 'best' LLM. Uses include:" " 1. Inferring citation information from documents when left unspecified," " 2. Extracting title, DOI, and authors from citation information when left unspecified," " 3. Optionally injecting pre-answer information (see PromptSettings.pre)," " 4. Generating an answer given evidence (see PromptSettings.qa)," " 5. Optionally injecting post-answer information (see PromptSettings.post)," " 6. If using the 'fake' agent, proposing search queries." ), ) llm_config: dict | None = Field( default=None, description=( "Optional configuration for the llm model. More specifically, it's" " a LiteLLM Router configuration to pass to LiteLLMModel, must have" " `model_list` key (corresponding to model_list inputs here:" " https://docs.litellm.ai/docs/routing), and can optionally include a" " router_kwargs key with router kwargs as values." ), ) summary_llm: str = Field( default=CommonLLMNames.GPT_4O.value, description=( "LLM for creating contextual summaries" " (see Docs.aget_evidence and gather_evidence tool)." ), ) summary_llm_config: dict | None = Field( default=None, description=( "Optional configuration for the summary_llm model. More specifically, it's" " a LiteLLM Router configuration to pass to LiteLLMModel, must have" " `model_list` key (corresponding to model_list inputs here:" " https://docs.litellm.ai/docs/routing), and can optionally include a" " router_kwargs key with router kwargs as values." ), ) embedding: str = Field( default="text-embedding-3-small", description="Embedding model for embedding text chunks when adding papers.", ) embedding_config: dict | None = Field( default=None, description="Optional configuration for the embedding model.", ) temperature: float = Field(default=0.0, description="Temperature for LLMs.") batch_size: int = Field(default=1, description="Batch size for calling LLMs.") texts_index_mmr_lambda: float = Field( default=1.0, description="Lambda for MMR in text index." ) verbosity: int = Field( default=0, description=( "Integer verbosity level for logging (0-3). 3 = all LLM/Embeddings calls" " logged." ), ) custom_context_serializer: SkipJsonSchema[AsyncContextSerializer | None] = Field( default=None, description=( "Function to turn settings and contexts into an answer context str." " If not populated, the default context serializer will be used." ), exclude=True, ) @model_validator(mode="after") def _update_temperature(self) -> Self: """Ensures temperature is 1 if the LLM requires it. o1 reasoning models only support temperature = 1. SEE: https://platform.openai.com/docs/guides/reasoning/quickstart """ for model_prefix in ("o1", "gpt-5"): if self.llm.startswith(model_prefix) and self.temperature != 1: warnings.warn( f"When dealing with OpenAI {model_prefix} models," " the temperature must be set to 1," f" so the specified temperature {self.temperature}" " has been overridden to 1.", category=UserWarning, stacklevel=2, ) self.temperature = 1 return self @computed_field # type: ignore[prop-decorator] @property def md5(self) -> str: return hexdigest(self.model_dump_json(exclude={"md5"})) answer: AnswerSettings = Field(default_factory=AnswerSettings) parsing: ParsingSettings = Field(default_factory=ParsingSettings) prompts: PromptSettings = Field(default_factory=PromptSettings) agent: AgentSettings = Field(default_factory=AgentSettings) def get_index_name(self) -> str: """Get programmatically generated index name. This index is where parsings are stored based on parsing/embedding strategy. """ if isinstance(self.agent.index.paper_directory, pathlib.Path): # Here we use an absolute path so that where the user locally # uses '.', two different folders will make different indexes first_segment: str = str(self.agent.index.paper_directory.absolute()) else: first_segment = str(self.agent.index.paper_directory) segments = [ first_segment, str(self.agent.index.use_absolute_paper_directory), self.embedding, get_stable_str(self.parsing.parse_pdf, for_hash=True), str(self.parsing.reader_config["chunk_chars"]), str(self.parsing.reader_config["overlap"]), str(self.parsing.reader_config.get("full_page", False)), str(self.parsing.multimodal), ] return f"pqa_index_{hexdigest('|'.join(segments))}" @classmethod def from_name( cls, config_name: str = "default", cli_source: CliSettingsSource | None = None ) -> "Settings": json_path: pathlib.Path | None = None # quick exit for default settings if config_name == "default": if not cli_source: raise NotImplementedError( f"For config_name {config_name!r}, we require cli_source." ) return Settings(_cli_settings_source=cli_source(args=True)) user_config_path = pqa_directory("settings") / f"{config_name}.json" pkg_config_path = ( # Use importlib.resources.files() which is recommended for Python 3.9+ importlib.resources.files(paperqa.configs) / f"{config_name}.json" ) if user_config_path.exists(): # First, try to find the config file in the user's .config directory json_path = user_config_path else: # If not found, fall back to the package's default config try: if pkg_config_path.is_file(): json_path = cast("pathlib.Path", pkg_config_path) except FileNotFoundError as e: raise FileNotFoundError( f"No configuration file {config_name!r} found at user config path" f" {user_config_path} or bundled config path {pkg_config_path}." ) from e if json_path: # we do the ole switcheroo # json - validate to deserialize knowing the types # then dump it # going json.loads directly will not get types correct tmp = Settings.model_validate_json(json_path.read_text()) return Settings( **(tmp.model_dump()), _cli_settings_source=cli_source(args=True) if cli_source else None, ) raise FileNotFoundError( f"No configuration file {config_name!r} found at user config path" f" {user_config_path} or bundled config path {pkg_config_path}." ) def get_llm(self) -> LiteLLMModel: return LiteLLMModel( name=self.llm, config=self.llm_config or make_default_litellm_model_list_settings(self.llm, self.temperature), ) def get_summary_llm(self) -> LiteLLMModel: return LiteLLMModel( name=self.summary_llm, config=self.summary_llm_config or make_default_litellm_model_list_settings( self.summary_llm, self.temperature ), ) def get_agent_llm(self) -> LiteLLMModel: return LiteLLMModel( name=self.agent.agent_llm, config=self.agent.agent_llm_config or make_default_litellm_model_list_settings( self.agent.agent_llm, self.temperature ), ) def get_embedding_model(self) -> EmbeddingModel: return embedding_model_factory(self.embedding, **(self.embedding_config or {})) def get_enrichment_llm(self) -> LiteLLMModel: return LiteLLMModel( name=self.parsing.enrichment_llm, config=self.parsing.enrichment_llm_config or make_default_litellm_model_list_settings( self.parsing.enrichment_llm, self.temperature ), ) def make_aviary_tool_selector(self, agent_type: str | type) -> ToolSelector | None: """Attempt to convert the input agent type to an aviary ToolSelector.""" if agent_type is ToolSelector or ( isinstance(agent_type, str) and ( agent_type == ToolSelector.__name__ or ( agent_type.startswith( ToolSelector.__module__.split(".", maxsplit=1)[0] ) and locate(agent_type) is ToolSelector ) ) ): return ToolSelector( model_name=self.agent.agent_llm, acompletion=self.get_agent_llm().get_router().acompletion, **(self.agent.agent_config or {}), ) return None async def make_ldp_agent( self, agent_type: str | type ) -> "Agent[SimpleAgentState] | None": """Attempt to convert the input agent type to an ldp Agent.""" if not isinstance(agent_type, str): # Convert to fully qualified name agent_type = f"{agent_type.__module__}.{agent_type.__name__}" if not agent_type.startswith("ldp"): return None if not HAS_LDP_INSTALLED: raise ImportError( "ldp agents requires the 'ldp' extra for 'ldp'. Please:" " `pip install paper-qa[ldp]`." ) # TODO: support general agents agent_cls = cast("type[Agent]", locate(agent_type)) agent_settings = self.agent agent_llm, config = agent_settings.agent_llm, agent_settings.agent_config or {} if issubclass(agent_cls, ReActAgent | MemoryAgent): if ( issubclass(agent_cls, MemoryAgent) and "memory_model" in config and "memories" in config ): if "embedding_model" in config["memory_model"]: config["memory_model"]["embedding_model"] = ( EmbeddingModel.from_name( embedding=config["memory_model"].pop("embedding_model")[ "name" ] ) ) try: config["memory_model"] = UIndexMemoryModel(**config["memory_model"]) except ImportError as exc: raise ImportError( "Memory agents require the 'usearch' package," " which is part of the 'memory' extra." " Please: `pip install paper-qa[memory]`." ) from exc memories = _Memories.validate_python(config.pop("memories")) await asyncio.gather( *( config["memory_model"].add_memory(memory) for memory in ( memories.values() if isinstance(memories, dict) else memories ) ) ) return agent_cls( llm_model={"name": agent_llm, "temperature": self.temperature}, **config, ) if issubclass(agent_cls, SimpleAgent): return agent_cls( llm_model={"name": agent_llm, "temperature": self.temperature}, sys_prompt=agent_settings.agent_system_prompt, **config, ) if issubclass(agent_cls, HTTPAgentClient): set_training_mode(False) return HTTPAgentClient[SimpleAgentState]( agent_state_type=SimpleAgentState, **config ) raise NotImplementedError(f"Didn't yet handle agent type {agent_type}.") def make_media_enricher(self) -> Callable[[ParsedText], Awaitable[str]]: """Create an enricher function from settings.""" async def enrich_media_with_llm(parsed_text: ParsedText) -> str: """Enrich media in parsed text with LLM-generated descriptions and then filter irrelevant media. Returns: A summary string of the enrichment. """ if not isinstance(parsed_text.content, dict) or not any( isinstance(c, tuple) for c in parsed_text.content.values() ): raise ValueError( "Media enrichment requires media to be in the parsed text." ) text_content = cast( dict[str, str | tuple[str, list[ParsedMedia]]], parsed_text.content ) # Collect all media with their page numbers # NOTE: we could deduplicate media here across pages, # but this introduces a bunch of complexity: # - Do we enrich using on text surrounding the earlier or later image? # - Or do we enrich using text surrounding all images, # and risk confusing the LLM if the texts aren't similar? # Given these risks, we just enrich extra times media_to_enrich: list[tuple[str, ParsedMedia]] = [ (page_num, media) for page_num, page_contents in text_content.items() if isinstance(page_contents, tuple) for media in page_contents[1] if not media.info.get("enriched_description") # Don't clobber prior ] llm = self.get_enrichment_llm() radius = self.parsing.enrichment_page_radius async def enrich_single_media( page_num: int | str, media: ParsedMedia ) -> None: """Enrich a single media item with LLM-generated description.""" if radius == -1: # All pages context_text: str = "\n\n".join( ( ( pg_contents if isinstance(pg_contents, str) else pg_contents[0] ) for _, pg_contents in sorted( text_content.items(), key=lambda x: int(x[0]) ) ) ) radius_msg: str = "all pages" else: # Specific page radius page_texts: list[str] = [] for pg_int in range( max(1, int(page_num) - radius), min(len(text_content), int(page_num) + radius) + 1, ): # Use get so we're tolerant to missing pages here page_content = text_content.get(str(pg_int)) if page_content: page_texts.append( page_content if isinstance(page_content, str) else page_content[0] ) context_text = "\n\n".join(page_texts) radius_msg = ( f"a radius of {'1 page' if radius == 1 else f'{radius} pages'}" ) prompt = self.parsing.enrichment_prompt.format( context_text=( f"Here is the co-located text from {radius_msg}:\n\n{context_text}\n\n" if context_text else "" ) ) try: result = await llm.call_single( messages=[ Message.create_message( text=prompt, images=[media.to_image_url()] ) ] ) if result.text: ( media.info["is_irrelevant"], media.info["enriched_description"], ) = parse_enrichment_irrelevance(result.text) except (litellm.InternalServerError, litellm.BadRequestError) as exc: # Handle image > 5-MB failure mode 1: # > litellm.BadRequestError: AnthropicException - # > {"type":"error","error":{"type":"invalid_request_error", # > "message":"messages.0.content.0.image.source.base64: image exceeds 5 MB maximum: 6229564 bytes > 5242880 bytes"}, # noqa: E501, W505 # > "request_id":"req_abc123"}. # and image > 5-MB failure mode 2: # > litellm.InternalServerError: AnthropicException - # > {"type":"error","error":{"type":"invalid_request_error", # > "message":"messages.0.content.0.image.source.base64: image exceeds 5 MB maximum: 5690780 bytes > 5242880 bytes"}, # noqa: E501, W505 # > "request_id":"req_abc123"}. # And the image being corrupt (but a reasonable size) if ( isinstance(exc, litellm.InternalServerError) and re.search( r"image exceeds .+ maximum", str(exc), re.IGNORECASE ) ) or isinstance(exc, litellm.BadRequestError): logger.warning( f"Skipping enrichment for media index {media.index}" f" on page {page_num} with metadata {media.info} because" f" it was rejected by the LLM provider for {llm.name!r}." f" Full error message: {exc!r}" ) else: raise await asyncio.gather(*list(starmap(enrich_single_media, media_to_enrich))) # Filter out irrelevant media from parsed_text.content in-place, # while counting enrichments and filtration count_enriched = count_filtered = 0 for page_num, page_contents in text_content.items(): if isinstance(page_contents, tuple): page_text, media_list = page_contents count_enriched += sum( bool(m.info.get("enriched_description")) for m in media_list ) filtered_media = [ m for m in media_list if not m.info.get("is_irrelevant", False) ] count_filtered += len(media_list) - len(filtered_media) # In-place update the content for the filtered media text_content[page_num] = (page_text, filtered_media) return ( f"enriched={count_enriched}|filtered={count_filtered}|radius={radius}" ) return enrich_media_with_llm def adjust_tools_for_agent_llm(self, tools: list[Tool]) -> None: """In-place adjust tool attributes or schemae to match agent LLM-specifics.""" # This was originally made for Gemini 1.5 Flash not supporting empty tool args # in February 2025 (https://github.com/BerriAI/litellm/issues/7634), but then # Gemini fixed this server-side by mid-April 2025, # so this method is now just available for use async def context_serializer( self, contexts: Sequence[Context], question: str, pre_str: str | None ) -> str: """Default function for sorting ranked contexts and inserting into a context string.""" if self.custom_context_serializer: return await self.custom_context_serializer( settings=self, contexts=contexts, question=question, pre_str=pre_str ) answer_config = self.answer prompt_config = self.prompts # sort by first score, then name filtered_contexts = sorted( contexts, key=lambda x: (-x.score, x.text.name), )[: answer_config.answer_max_sources] # remove any contexts with a score below the cutoff filtered_contexts = [ c for c in filtered_contexts if c.score >= answer_config.evidence_relevance_score_cutoff ] context_inner_prompt = prompt_config.context_inner context_str_body = "" if answer_config.group_contexts_by_question: contexts_by_question: dict[str, list[Context]] = defaultdict(list) for c in filtered_contexts: # Fallback to the main session question if not available. # question attribute is optional, so if a user # sets contexts externally, it may not have a question. context_question = getattr(c, "question", question) contexts_by_question[context_question].append(c) context_sections = [] for context_question, contexts_in_group in contexts_by_question.items(): inner_strs = [ context_inner_prompt.format( name=c.id, text=c.context, citation=c.text.doc.formatted_citation, **(c.model_extra or {}), ) for c in contexts_in_group ] # Create a section with a question heading section_header = ( f'Contexts related to the question: "{context_question}"' ) section = f"{section_header}\n\n" + "\n\n".join(inner_strs) context_sections.append(section) context_str_body = "\n\n---\n\n".join(context_sections) else: inner_context_strs = [ context_inner_prompt.format( name=c.id, text=c.context, citation=c.text.doc.formatted_citation, **(c.model_extra or {}), ) for c in filtered_contexts ] context_str_body = "\n\n".join(inner_context_strs) if pre_str: context_str_body += f"\n\nExtra background information: {pre_str}" return prompt_config.context_outer.format( context_str=context_str_body, valid_keys=", ".join([c.id for c in filtered_contexts]), ) # Settings: already Settings # dict[str, Any]: serialized Settings # str: named Settings # None: defaulted Settings MaybeSettings = Settings | dict[str, Any] | str | None def get_settings(config_or_name: MaybeSettings = None) -> Settings: if isinstance(config_or_name, Settings): return config_or_name if isinstance(config_or_name, dict): return Settings.model_validate(config_or_name) if config_or_name is None: return Settings() return Settings.from_name(config_name=config_or_name) ================================================ FILE: src/paperqa/sources/__init__.py ================================================ ================================================ FILE: src/paperqa/sources/clinical_trials.py ================================================ import json import logging import ssl from contextlib import suppress from datetime import datetime from typing import Any import httpx import httpx_aiohttp from lmi.utils import gather_with_concurrency from tenacity import ( before_sleep_log, retry, retry_if_exception_type, stop_after_attempt, wait_incrementing, ) from paperqa.docs import Docs from paperqa.settings import Settings from paperqa.types import DocDetails, Embeddable, Text logger = logging.getLogger(__name__) CLINICAL_TRIALS_BASE = "clinicaltrials.gov" CLINICAL_TRIALS_URL = f"https://{CLINICAL_TRIALS_BASE}" STUDIES_API_URL = CLINICAL_TRIALS_URL + "/api/v2/studies" SEARCH_API_FIELDS = "NCTId,OfficialTitle" SEARCH_PAGE_SIZE = 1000 TRIAL_API_FIELDS = "protocolSection,derivedSection" DOWNLOAD_CONCURRENCY = 20 TRIAL_CHAR_TRUNCATION_SIZE = 28_000 # stay under 8k tokens for embeddings context limit MALFORMATTED_QUERY_STATUS: int = 400 @retry( stop=stop_after_attempt(3), wait=wait_incrementing(0.1, 0.1), retry=retry_if_exception_type(httpx.HTTPStatusError), before_sleep=before_sleep_log(logger, logging.WARNING), reraise=True, ) async def api_search_clinical_trials(query: str, client: httpx.AsyncClient) -> dict: response = await client.get( STUDIES_API_URL, params={ "query.term": query, "fields": SEARCH_API_FIELDS, "pageSize": SEARCH_PAGE_SIZE, "countTotal": "true", "sort": "@relevance", }, ) if response.status_code == MALFORMATTED_QUERY_STATUS: # the 400s from clinicaltrials.gov are not JSON, here's an example text: # > Error parsing query in Other terms: # > Allowed values for enum field `protocolSection.statusModule.overallStatus` # > are `ACTIVE_NOT_RECRUITING`, `COMPLETED`, `ENROLLING_BY_INVITATION`, # > `NOT_YET_RECRUITING`, `RECRUITING`, `SUSPENDED`, `TERMINATED`, `WITHDRAWN`, # > `AVAILABLE`, `NO_LONGER_AVAILABLE`, `TEMPORARILY_NOT_AVAILABLE`, # > `APPROVED_FOR_MARKETING`, `WITHHELD`, `UNKNOWN` raise httpx.HTTPStatusError( message=response.text, request=response.request, response=response ) response.raise_for_status() return response.json() @retry( stop=stop_after_attempt(3), wait=wait_incrementing(0.1, 0.1), before_sleep=before_sleep_log(logger, logging.WARNING), reraise=True, ) async def api_get_clinical_trial(nct_id: str, client: httpx.AsyncClient) -> dict | None: with suppress(httpx.HTTPStatusError): response = await client.get( f"{STUDIES_API_URL}/{nct_id}", params={"fields": TRIAL_API_FIELDS} ) response.raise_for_status() return response.json() return None async def search_retrieve_clinical_trials( query: str, client: httpx.AsyncClient, limit: int = 10, offset: int = 0, ) -> tuple[list[dict], int]: search_results = await api_search_clinical_trials(query, client=client) return ( [ trial for trial in await gather_with_concurrency( DOWNLOAD_CONCURRENCY, [ api_get_clinical_trial( result["protocolSection"]["identificationModule"]["nctId"], client, ) for result in search_results.get("studies", [])[ offset : offset + limit ] ], ) if trial ], search_results.get("totalCount", 0), ) def format_to_doc_details(trial_data: dict) -> DocDetails: """ Format clinical trial data into ICMJE citation style. Args: trial_data (dict): Clinical trial data in ClinicalTrials.gov JSON format """ protocol = trial_data.get("protocolSection", {}) investigator = ( protocol.get("sponsorCollaboratorsModule", {}) .get("responsibleParty", {}) .get("investigatorFullName", "") ) title = protocol.get("identificationModule", {}).get("briefTitle", "") organization = ( protocol.get("sponsorCollaboratorsModule", {}) .get("leadSponsor", {}) .get("name", "") ) start_date = ( protocol.get("statusModule", {}).get("startDateStruct", {}).get("date", "") ) nct_id = protocol.get("identificationModule", {}).get("nctId", "") # Extract year from date (assuming YYYY-MM format) year = start_date.split("-")[0] if start_date else "" citation_parts = [] if investigator: citation_parts.append(f"{investigator}.") if title: citation_parts.append(f" {title}.") if organization: citation_parts.append(f" {organization}.") if year: citation_parts.append(f" {year}.") if nct_id: citation_parts.append(f" ClinicalTrials.gov Identifier: {nct_id}") citation = "".join(citation_parts) return DocDetails( title=title, docname=nct_id, dockey=nct_id, authors=[investigator], year=year or None, citation=citation, other={"client_source": [CLINICAL_TRIALS_BASE]}, fields_to_overwrite_from_metadata=set(), ) def parse_clinical_trial(json_data: dict[str, Any]) -> str: """Convert clinical trial JSON data into human readable format.""" protocol = json_data.get("protocolSection", {}) # Get different sections identification = protocol.get("identificationModule", {}) status = protocol.get("statusModule", {}) description = protocol.get("descriptionModule", {}) eligibility = protocol.get("eligibilityModule", {}) design = protocol.get("designModule", {}) # Build all sections at once sections = [ # Title and Basic Information "CLINICAL TRIAL INFORMATION", "=" * 25, f"NCT Number: {identification.get('nctId', 'Not provided')}", f"Title: {identification.get('briefTitle', 'Not provided')}", ( "Organization:" f" {identification.get('organization', {}).get('fullName', 'Not provided')}" ), # Status Information "\nSTUDY STATUS", "=" * 13, f"Overall Status: {status.get('overallStatus', 'Not provided')}", f"Start Date: {status.get('startDateStruct', {}).get('date', 'Not provided')}", ( "Completion Date:" f" {status.get('completionDateStruct', {}).get('date', 'Not provided')}" ), # Study Description "\nSTUDY DESCRIPTION", "=" * 17, description.get("briefSummary", "Not provided"), # Study Design "\nSTUDY DESIGN", "=" * 13, f"Study Type: {design.get('studyType', 'Not provided')}", f"Phase: {', '.join(design.get('phases', ['Not provided']))}", ( "Enrollment:" f" {design.get('enrollmentInfo', {}).get('count', 'Not provided')} participants" ), # Eligibility "\nELIGIBILITY CRITERIA", "=" * 19, eligibility.get("eligibilityCriteria", "Not provided"), ] # Add detailed description if available if description.get("detailedDescription"): detailed_section = [ "\nDETAILED DESCRIPTION", "=" * 20, description.get("detailedDescription", "Not provided"), ] # Insert detailed description after brief summary sections[13:13] = detailed_section # Format the final text return "\n".join(sections) async def add_clinical_trials_to_docs( query: str, docs: Docs, settings: Settings, limit: int = 10, offset: int = 0, client: httpx.AsyncClient | None = None, ) -> tuple[int, int, str | None]: """Add clinical trials to the docs state. Args: query: Query to search for. docs: Docs state to add the trials to. settings: Query settings. limit: Number of trials to add. offset: Offset for the search results. client: Async HTTP client for any requests. Returns: tuple[int, int, str | None]: Total number of trials found, number of trials added, and error message if any. """ ssl_context = ssl.create_default_context() # clinicaltrials.gov throws 403's in GitHub Actions if TLS 1.3 is used with httpx ssl_context.maximum_version = ssl.TLSVersion.TLSv1_2 # Cookies are not needed _client = ( httpx_aiohttp.HttpxAiohttpClient(timeout=10.0, verify=ssl_context) if client is None else client ) logger.info(f"Querying clinical trials for: {query}.") try: trials, total_result_count = await search_retrieve_clinical_trials( query, _client, limit, offset ) except Exception as e: logger.warning(f"Failed to retrieve clinical trials for query: {query}.") # close client if it was ephemeral if client is None: await _client.aclose() # TODO: move to context manager return (0, 0, str(e)) logger.info(f"Successfully found {len(trials)} trials.") initial_docs_size = len(docs.texts) for trial in trials: trial_text = ( parse_clinical_trial(trial) if settings.parsing.use_human_readable_clinical_trials else json.dumps(trial) ) doc_details = format_to_doc_details(trial) # always uses full object, no chunking for clinical trials # for embedding model context windows, we truncate at TRIAL_CHAR_TRUNCATION_SIZE await docs.aadd_texts( texts=[ Text( text=trial_text[:TRIAL_CHAR_TRUNCATION_SIZE], name=doc_details.docname, doc=doc_details, ) ], doc=doc_details, settings=settings, ) logger.info(f"Added {len(docs.texts) - initial_docs_size} trials to docs state.") # we add a final context stub representing the metadata surrounding this search # it can be used to answer questions about the search results meta_details = DocDetails( title="Clinical Trials Search Result", docname=f"Clinical Trial Search: {query}", dockey=f"Clinical Trial Search: {query}", authors=["PaperQA"], year=datetime.now().year, citation=f"Clinical Trials Search via ClinicalTrials.gov: {query}", other={"client_source": [CLINICAL_TRIALS_BASE]}, fields_to_overwrite_from_metadata=set(), ) await docs.aadd_texts( texts=[ Text( text=( f"After querying the ClinicalTrials.gov API for '{query}'," f" {total_result_count} trials were found." ), name=meta_details.docname, doc=meta_details, ) ], doc=meta_details, settings=settings, ) # close client if it was ephemeral if client is None: await _client.aclose() return (total_result_count, len(docs.texts) - initial_docs_size, None) def partition_clinical_trials_by_source(text: Embeddable) -> int: if ( hasattr(text, "doc") and isinstance(text.doc, DocDetails) and CLINICAL_TRIALS_BASE in text.doc.other.get("client_source", []) ): return 1 return 0 ================================================ FILE: src/paperqa/types.py ================================================ from __future__ import annotations import ast import contextlib import csv import hashlib import json import logging import os import re from collections.abc import Collection, Container, Hashable, Iterable, Mapping, Sequence from copy import deepcopy from datetime import UTC, datetime from enum import StrEnum from pathlib import Path from random import Random from typing import Annotated, Any, ClassVar, Self, cast from uuid import UUID, uuid4 import tiktoken from aviary.core import Message from lmi import Embeddable, LLMResult from lmi.utils import bytes_to_string, encode_image_as_url, string_to_bytes from pybtex.database import BibliographyData, Entry, InvalidNameString, Person from pybtex.database.input.bibtex import Parser from pybtex.scanner import PybtexSyntaxError from pydantic import ( BaseModel, BeforeValidator, ConfigDict, Field, JsonValue, PlainSerializer, StringConstraints, computed_field, field_validator, model_validator, ) from paperqa.utils import ( compute_unique_doc_id, create_bibtex_key, encode_id, format_bibtex, get_citation_ids, get_parenthetical_substrings, maybe_get_date, md5sum, ) from paperqa.version import __version__ as pqa_version # Just for clarity # also in case one day we want to narrow # the type DocKey = Any logger = logging.getLogger(__name__) # These probably should be promoted to be on DocDetails # but this will take a larger refactor. VAR_MATCH_LOOKUP: Collection[str] = {"1", "true"} VAR_MISMATCH_LOOKUP: Collection[str] = {"0", "false"} DEFAULT_FIELDS_TO_OVERWRITE_FROM_METADATA: Collection[str] = { "key", "doc_id", "docname", "dockey", "citation", "content_hash", # Metadata providers won't give this } # Sentinel to autopopulate a field within model_validator AUTOPOPULATE_VALUE = "" # NOTE: this is falsy by design class Doc(Embeddable): model_config = ConfigDict(extra="forbid") docname: str dockey: DocKey citation: str content_hash: str | None = Field( default=AUTOPOPULATE_VALUE, description=( "Optional hash of the document's contents (to reiterate, not a file path to" " the document, but the document's contents itself)." ), ) # Sort the serialization to minimize the diff of serialized objects fields_to_overwrite_from_metadata: Annotated[set[str], PlainSerializer(sorted)] = ( Field( default_factory=lambda: set(DEFAULT_FIELDS_TO_OVERWRITE_FROM_METADATA), description="fields from metadata to overwrite when upgrading to a DocDetails", ) ) @model_validator(mode="before") @classmethod def remove_computed_fields(cls, data: Mapping[str, Any]) -> dict[str, Any]: return {k: v for k, v in data.items() if k != "formatted_citation"} def __hash__(self) -> int: return hash((self.docname, self.dockey)) @computed_field # type: ignore[prop-decorator] @property def formatted_citation(self) -> str: return self.citation def matches_filter_criteria(self, filter_criteria: Mapping[str, Any]) -> bool: """Returns True if the doc matches the filter criteria, False otherwise.""" data_dict = self.model_dump() for key, value in filter_criteria.items(): invert = key.startswith("!") relaxed = key.startswith("?") key = key.lstrip("!?") # we check if missing or sentinel/unset if relaxed and (key not in data_dict or data_dict[key] is None): continue if key not in data_dict: return False if invert and data_dict[key] == value: return False if not invert and data_dict[key] != value: return False return True FIELDS_TO_EXCLUDE_FROM_CSV: ClassVar[set[str]] = { "embedding", # Don't store to allow for configuration of embedding models } CSV_FIELDS_UP_FRONT: ClassVar[Sequence[str]] = () @classmethod def to_csv(cls, values: Iterable[Self], target_csv_path: str | os.PathLike) -> None: """Dump many instances into a CSV, for later use as a manifest.""" headers = set(cls.model_fields) - cls.FIELDS_TO_EXCLUDE_FROM_CSV with open(target_csv_path, "w", encoding="utf-8") as f: writer = csv.DictWriter( f, fieldnames=[ *sorted(cls.CSV_FIELDS_UP_FRONT), # Make easy reading *sorted(headers - set(cls.CSV_FIELDS_UP_FRONT)), ], ) writer.writeheader() writer.writerows( [ v.model_dump( exclude={"formatted_citation"} | cls.FIELDS_TO_EXCLUDE_FROM_CSV ) for v in values ] ) class Text(Embeddable): """A text chunk ready for use in retrieval with a linked document.""" # We allow extras so one can introduce chunk-specific metadata model_config = ConfigDict(extra="allow") text: str = Field(description="Processed text content of the chunk.") name: str = Field( description=( "Human-readable identifier for the chunk" " (e.g., 'Wiki2023 chunk 1', 'sentence1')." ) ) media: list[ParsedMedia] = Field( default_factory=list, description="Optional list of associated media." ) doc: Doc | DocDetails = Field( union_mode="left_to_right", description="Source document this text chunk originates from.", ) def __eq__(self, other) -> bool: if not isinstance(other, type(self)): return NotImplemented # We ignore the embedding since the embedding can: # - Be lazily acquired, or not used (depending on settings) # - Get ditched when serializing a text for an HTTP request return ( self.name == other.name and self.text == other.text and self.media == other.media and self.doc == other.doc and self.__pydantic_extra__ == other.__pydantic_extra__ ) def __hash__(self) -> int: if self.__pydantic_extra__: unhashable = [ k for k, v in self.__pydantic_extra__.items() if not isinstance(v, Hashable) ] if unhashable: raise NotImplementedError( f"Hashing a {type(self).__name__} with unhashable extras" " is not yet supported." ) # As Python dict equality (used in __eq__) is order independent, # let's go ahead and be order independent in __hash__ too for consistency extras = tuple(sorted(self.__pydantic_extra__.items())) return hash((self.name, self.text, tuple(self.media), extras)) return hash((self.name, self.text, tuple(self.media))) async def get_embeddable_text(self, with_enrichment: bool = False) -> str: """Get the text to embed, which may be different from the actual text content. This method, despite currently not involving any awaits, is async so subclassers can have custom just-in-time enrichment logic or fetch enrichments from an external service. Args: with_enrichment: Opt-in flag to include media enrichment in the return. Media enrichment can improve placement in embedding space, without affecting the text used for quotation. Returns: Content to embed. """ if not with_enrichment: return self.text # Media enrichment can improve placement in embedding space, # without affecting the text used for quotation enriched_media = ( ( f"Media {m.index} from page {m.info.get('page_num', 'unknown')!s}'s" f" enriched description:\n\n{m.info['enriched_description']!s}" ) for m in self.media if m.info.get("enriched_description") ) return "\n\n".join((self.text, *enriched_media)) class Context(BaseModel): """A class to hold the context of a question.""" # We allow extras so one can extend the summary JSON prompt # to have the LLM answer with more conclusions such as alternate scores # or useful excerpts of text model_config = ConfigDict(extra="allow") # Value was chosen to be below a 0-10 scale, making the 'unset' nature obvious UNSET_RELEVANCE: ClassVar[int] = -1 id: str = Field( default=AUTOPOPULATE_VALUE, description="Unique identifier for the context. Auto-generated if not provided.", ) context: Annotated[str, StringConstraints(strip_whitespace=True)] = Field( description=( "Summary of the text with respect to a question." " Can be an empty string if a summary is not useful/irrelevant" " (which should be paired with a score of 0)." ) ) question: str | None = Field( default=None, description=( "Question that the context is summarizing for. " "Note this can differ from the user query." ), ) text: Text score: int = Field( default=UNSET_RELEVANCE, description=( "Relevance score for this context to the question." " The range used here is 0-10, where 0 is 'irrelevant'," " 1 is barely relevant, and 10 is most relevant." " The default is -1 to have a 'sorting safe' default as sub-relevant." ), ) CONTEXT_ENCODING_LENGTH: ClassVar[int] = 500 # chars ID_HASH_LENGTH: ClassVar[int] = 8 # chars # pqac stands for "paper qa context" REFERENCE_TEMPLATE: ClassVar[str] = "pqac-{id}" def __str__(self) -> str: """Return the context as a string.""" return self.context def __hash__(self) -> int: extras = ( tuple( sorted( (k, v) for k, v in self.__pydantic_extra__.items() if isinstance(v, Hashable) # Don't consider unhashable extras ) ) if self.__pydantic_extra__ else () ) return hash( (self.id, self.question, self.context, self.text, self.score, extras) ) @model_validator(mode="before") @classmethod def populate_id(cls, data: dict[str, Any]) -> dict[str, Any]: if not data.get("id"): # NOTE: this includes missing or empty strings content = (data.get("question") or "") + data.get("context", "")[ : cls.CONTEXT_ENCODING_LENGTH ] return data | { # Avoid mutating input data "id": cls.REFERENCE_TEMPLATE.format( id=encode_id(content or str(uuid4()), maxsize=cls.ID_HASH_LENGTH) ) } return data class PQASession(BaseModel): """A class to hold session about researching/answering.""" # Keys in the other field to not remove when filtering for user display DOC_DETAILS_OTHERS_TO_KEEP: ClassVar[Collection[str]] = { "bibtex_source", "client_source", } model_config = ConfigDict(extra="ignore", populate_by_name=True) id: UUID = Field(default_factory=uuid4) question: str answer: str = "" raw_answer: str = Field( default="", description="Raw answer from the LLM, including context IDs.", ) answer_reasoning: str | None = Field( default=None, description=( "Optional reasoning from the LLM. If the LLM does not support reasoning," " it will be None." ), ) has_successful_answer: bool | None = Field( default=None, description=( "True if the agent was sure of the answer, False if the agent was unsure of" " the answer, and None if the agent hasn't yet completed." ), ) context: str = "" contexts: list[Context] = Field(default_factory=list) references: str = "" formatted_answer: str = Field( default="", description=( "Optional prettified answer that includes information like question and" " citations." ), ) graded_answer: str | None = Field( default=None, description=( "Optional graded answer, used for things like multiple choice questions." ), ) cost: float = 0.0 # Map model name to a two-item list of LLM prompt token counts # and LLM completion token counts token_counts: dict[str, list[int]] = Field(default_factory=dict) config_md5: str | None = Field( default=None, frozen=True, description=( "MD5 hash of the settings used to generate the answer. Cannot change" ), ) tool_history: list[list[str]] = Field( default_factory=list, description=( "History of tool names input to each Environment.step (regardless of being" " a typo or not), where the outer list is steps, and the inner list matches" " the order of tool calls at each step." ), ) def __str__(self) -> str: """Return the answer as a string.""" return self.formatted_answer @model_validator(mode="before") @classmethod def remove_computed(cls, data: Any) -> Any: if isinstance(data, dict): data.pop("used_contexts", None) return data @computed_field # type: ignore[prop-decorator] @property def used_contexts(self) -> set[str]: """Return the used contexts.""" return {c.id for c in self.contexts if c.id in self.raw_answer} def get_citation(self, name: str) -> str: """Return the formatted citation for the given docname.""" try: doc: Doc = next( filter(lambda x: x.text.name == name, self.contexts) ).text.doc except StopIteration as exc: raise ValueError(f"Could not find docname {name} in contexts.") from exc return doc.citation def add_tokens(self, result: LLMResult | Message) -> None: """Update the token counts for the given LLM result or message.""" if isinstance(result, Message): if not result.info or any(x not in result.info for x in ("model", "usage")): return result = LLMResult( model=result.info["model"], prompt_count=result.info["usage"][0], completion_count=result.info["usage"][1], ) prompt_count = result.prompt_count or 0 completion_count = result.completion_count or 0 if result.model not in self.token_counts: self.token_counts[result.model] = [prompt_count, completion_count] else: self.token_counts[result.model][0] += prompt_count self.token_counts[result.model][1] += completion_count self.cost += result.cost def get_unique_docs_from_contexts(self, score_threshold: int = 0) -> set[Doc]: """Parse contexts for docs with scores above the input threshold.""" return { c.text.doc for c in filter(lambda x: x.score >= score_threshold, self.contexts) } def filter_content_for_user(self) -> None: """ In-place filter/drop items that are irrelevant to the user. This is mainly done to keep HTTP requests reasonably sized. """ self.contexts = [ Context( # Dump all fields from the original context (including extras), # but exclude 'text' so we can replace it below. **c.model_dump(exclude={"text"}), text=Text( text="", # Similar to the explanation in `map_fxn_summary`'s internals # on why we drop embeddings, drop embeddings here too because # embeddings aren't displayed to front end users doc=c.text.doc.model_dump(exclude={"embedding"}), # We drop media since images can be quite large **c.text.model_dump(exclude={"text", "embedding", "doc", "media"}), ), ) for c in self.contexts ] # Now we drop extras from other fields for c in self.contexts: if isinstance(c.text.doc, DocDetails): c.text.doc.other = { k: v for k, v in c.text.doc.other.items() if k in self.DOC_DETAILS_OTHERS_TO_KEEP } def populate_formatted_answers_and_bib_from_raw_answer( self, ) -> None: """Format a raw answer for display, mutating the session in place.""" formatted_without_references = self.raw_answer id_to_name_map = {c.id: c.text.name for c in self.contexts} name_to_citation_map = { c.text.name: c.text.doc.formatted_citation for c in self.contexts } name_bib = {} for parenthetical in get_parenthetical_substrings(formatted_without_references): # now we replace eligible parentheticals with the deduped names # while we preserve order and deduplicate deduped_names: dict[str, None] = dict.fromkeys( id_to_name_map[key] for key in get_citation_ids(parenthetical) if id_to_name_map.get(key) ) if deduped_names: formatted_without_references = formatted_without_references.replace( parenthetical, f"({', '.join(deduped_names)})", ) for deduped_name in deduped_names: if ( deduped_name in name_to_citation_map and deduped_name not in name_bib ): name_bib[deduped_name] = name_to_citation_map[deduped_name] bib = "\n\n".join( [f"{i + 1}. ({k}): {c}" for i, (k, c) in enumerate(name_bib.items())] ) # strip out any leftover hallucinated citations included_keys = get_citation_ids(self.raw_answer) for hallucinated_key in set(included_keys) - set(id_to_name_map): formatted_without_references = formatted_without_references.replace( hallucinated_key, "" ) formatted_with_references = ( f"Question: {self.question}\n\n{formatted_without_references}" ) if bib: formatted_with_references += f"\n\nReferences\n\n{bib}" self.answer = formatted_without_references self.formatted_answer = formatted_with_references self.references = bib class ChunkMetadata(BaseModel): """Metadata for chunking algorithm.""" size: int = Field(description="Chunk size (chars), or 0 for no chunking.") overlap: int = Field(description="Chunk overlap (chars), or 0 for no overlap.") name: str | None = Field( default=None, description=( "Optional string summarizing the chunking parameters, embodying a hash." ), ) class ParsedMetadata(BaseModel): """Metadata for parsed text.""" parsing_libraries: list[str] = Field( description="Libraries used to generate the parsing." ) paperqa_version: str = Field( default=pqa_version, description="PaperQA version that invoked the parsing_libraries.", ) total_parsed_text_length: int = Field( ge=0, description="Length (chars) of the parsed text." ) count_parsed_media: int = Field(default=0, ge=0) name: str | None = Field( default=None, description=( "Optional string summarizing the parsing parameters, embodying a hash." ), ) chunk_metadata: ChunkMetadata | None = Field( default=None, description="Optional metadata from the chunking process." ) class ParsedMedia(BaseModel): """Raw image or table parsed from a document's page.""" index: int = Field( description="Index of the image in a given page, or 0 if solely an image." ) data: Annotated[ bytes, PlainSerializer(bytes_to_string), BeforeValidator(lambda x: x if isinstance(x, bytes) else string_to_bytes(x)), ] = Field( default=b"", description="Raw image, ideally directly savable to a PNG image.", ) url: str | None = Field( default=None, description="Optional HTTP(S) URL to the media (e.g. a signed GCS link).", ) text: str | None = Field( default=None, description=( "Optional associated text content (e.g. markdown export of a table)." " This should not be enriched/augmented text, but actual text." ), ) info: dict[str, JsonValue | tuple[float, ...] | bytes] = Field( default_factory=dict, description=( "Optional image metadata. This may come from image definitions sourced from" " the PDF, attributes of custom pixel maps, or what the PDF reader" " considered the media to be (e.g. table or image). It may also include" " model-generated description(s) of the image." ), ) @model_validator(mode="after") def _check_data_xor_url(self) -> Self: if not self.data and not self.url: raise ValueError("Setting one of 'data' (non-empty) or 'url' is required.") if self.data and self.url: raise ValueError( "Set 'data' or 'url', not both. Having both creates ambiguous" " state (e.g. which source is canonical for hashing/equality)." " Convert between them instead: upload bytes to get a signed" " URL, or download a URL to get bytes." ) return self def _get_info_hashable(self) -> Hashable: if info_hashable := self.info.get("info_hashable"): return cast(Hashable, info_hashable) # We know info_hashable_hash key isn't present, so no need to filter it return json.dumps(self.info, sort_keys=True) def __hash__(self) -> int: data_or_url = self.data or self.url return hash((self.index, data_or_url, self.text, self._get_info_hashable())) def to_id(self) -> UUID: """Convert this media to a UUID4 suitable for a database ID. Raises: ValueError: If ``data`` is empty (ID generation requires image bytes). """ if not self.data: raise ValueError( "Cannot generate an ID without image data bytes." " URL-only ParsedMedia instances do not support to_id()." ) # We only hash the image and text content, since we don't want # minor parsing details (e.g. inconsequentially-small decimal values # in bounding boxes) to change the resultant ID to_hash: bytes = ( self.data if not self.text else self.data + self.text.encode("utf-8") ) seed_hash = hashlib.sha256(to_hash).hexdigest() seed_uint32 = int(seed_hash, 16) % (2**32) # Convert uint32 to UUID4 uuid_int = Random(seed_uint32).getrandbits(128) uuid_int &= ~(0xF << 76) # Clear version bits uuid_int |= 0x4 << 76 # Then set version to 4 uuid_int &= ~(0x3 << 62) # Clear variant bits uuid_int |= 0x2 << 62 # Then set variant to 10 for RFC 4122 return UUID(int=uuid_int) def __eq__(self, other) -> bool: if not isinstance(other, ParsedMedia): return NotImplemented if bool(self.data) != bool(other.data): # We only compare bytes or URLs, we consider mixes incompatible. # If you need compatibility, resolve the URL to bytes or generate a URL return False if ( self.index != other.index or self.text != other.text or self._get_info_hashable() != other._get_info_hashable() ): return False if self.data: return self.data == other.data return self.url == other.url def to_image_url(self) -> str: """Get a URL suitable for LLM image content. Returns a signed/public HTTP URL when available, otherwise falls back to an RFC 2397 base64 data URL built from the raw bytes. """ if self.url: return self.url image_type = cast(str, self.info.get("suffix", "png")).removeprefix(".") if image_type == "jpg": # SEE: https://stackoverflow.com/a/54488403 image_type = "jpeg" return encode_image_as_url(image_type, self.data) def save(self, path: str | os.PathLike) -> None: """Save the image to the input file path.""" if not self.data: # We are forcing users to handle downloads themselves to local storage. # if they desire it. Also, developers should question the necessity # of local saving, as remotely-stored media is already 'saved' raise ValueError( "There's no need to save media when image data is stored via a URL," " as the media is already saved remotely." ) with Path(path).open("wb") as f: f.write(self.data) def create_multimodal_message( text: str | None, image_urls: list[str], role: str = "user", ) -> Message: """Build an OpenAI-format multimodal message, bypassing aviary's validation. aviary's Message.create_message passes images through base64 image validation, which rejects HTTP(S) URLs. So this helper constructs the same content list directly, allowing signed GCS links alongside RFC 2397 data URLs. """ content: list[dict[str, Any]] = [ {"type": "image_url", "image_url": {"url": url}} for url in image_urls ] if text is not None: content.append({"type": "text", "text": text}) return Message(role=role, content=content) class ParsedText(BaseModel): """All text from a document read, before chunking.""" content: ( dict[str, str] | str | list[str] | dict[str, tuple[str, list[ParsedMedia]]] ) = Field( description=( "All parsed but not further processed (e.g. not chunked) contents from a" " document. It may be structured, depending on the parser's implementation." " Thus it can take various shapes depending on the document type" " (e.g. PDF, HTML) and parser:" "\n- `dict[str, str]` (e.g. page number -> page text) for PDFs." "\n- `str` for text files." "\n- `list[str]` for line-by-line parsings." "\n- `dict[str, tuple[str, list[ParsedMedia]]]` (e.g. page number" " -> (page text, page images)) for PDFs." ) ) metadata: ParsedMetadata = Field( description="Metadata on the parsing process used." ) def encode_content( self, enc: tiktoken.Encoding | str = "cl100k_base" ) -> list[int] | list[list[int]]: if isinstance(enc, str): enc = tiktoken.get_encoding(enc) if isinstance(self.content, str): return enc.encode_ordinary(self.content) if isinstance(self.content, list): return [enc.encode_ordinary(c) for c in self.content] raise NotImplementedError( "Encoding only implemented for str and list[str] content," f" not {type(self.content)}." ) def reduce_content(self) -> str: """Reduce any content to a string.""" if isinstance(self.content, str): return self.content if isinstance(self.content, list): return "\n\n".join(self.content) return "\n\n".join( x[0] if not isinstance(x, str) else x for x in self.content.values() ) class BibTeXSource(StrEnum): """Possible BibTeX sources.""" # This source is used when the BibTeX is incomplete or missing, # and means we generated the BibTeX ourselves SELF_GENERATED = "self_generated" CROSSREF = "crossref" SEMANTIC_SCHOLAR = "semantic_scholar" def update_other(self, other: dict[str, Any] | None = None) -> dict[str, Any]: """Update an 'other' data dictionary to include this BibTeX source.""" if not other: return {"bibtex_source": [self.value]} if "bibtex_source" in other: if self.value not in other["bibtex_source"]: other["bibtex_source"].append(self.value) else: other["bibtex_source"] = [self.value] return other # We use these integer values # as defined in https://jfp.csc.fi/en/web/haku/kayttoohje # which is a recommended ranking system SOURCE_QUALITY_MESSAGES = { 0: "poor quality or predatory journal", 1: "peer-reviewed journal", 2: "domain leading peer-reviewed journal", 3: "highest quality peer-reviewed journal", } CITATION_FALLBACK_DATA: dict[str, str | list[str]] = { "authors": ["Unknown authors"], "author": "Unknown author(s)", "year": "Unknown year", "title": "Unknown title", "journal": "Unknown journal", } JOURNAL_EXPECTED_DOI_LENGTHS = { "BioRxiv": 25, "MedRxiv": 27, } class DocDetails(Doc): model_config = ConfigDict(validate_assignment=True, extra="ignore") docname: str = AUTOPOPULATE_VALUE dockey: DocKey = AUTOPOPULATE_VALUE citation: str = AUTOPOPULATE_VALUE key: str | None = None bibtex: str | None = Field( default=AUTOPOPULATE_VALUE, description="Autogenerated from other represented fields.", ) authors: list[str] | None = None publication_date: datetime | None = None year: int | None = None volume: str | None = None issue: str | None = None # TODO: in bibtex this may be "number" issn: str | None = None pages: str | None = None journal: str | None = None publisher: str | None = None url: str | None = Field( default=None, description=( "Optional URL to the paper, which can lead to a Semantic Scholar page," " arXiv abstract, etc. As of version 0.67 on 5/10/2024, we don't use this" " URL anywhere in the source code." ), ) title: str | None = None citation_count: int | None = None bibtex_type: str | None = None source_quality: int | None = Field( default=None, description=( "Quality of journal/venue of paper. We use None as a sentinel for unset" " values (like for determining hydration) So, we use -1 means unknown" " quality and None means it needs to be hydrated." ), ) is_retracted: bool | None = Field( default=None, description="Flag for whether the paper is retracted." ) doi: str | None = None doi_url: str | None = None doc_id: str | None = Field( default=None, description=( "Unique ID for this document. A simple and robust way to acquire one is" " hashing the paper content's hash concatenate with the lowercased DOI." ), ) file_location: str | os.PathLike | None = Field( default=None, description=( "Optional path to the stored paper (local file path" " or mountable cloud path), or a database ID for the storage location." ), ) license: str | None = Field( default=None, description=( "string indicating license. Should refer specifically to pdf_url (since" " that could be preprint). None means unknown/unset." ), ) pdf_url: str | None = Field( default=None, description="URL to the PDF of the paper, if known." ) other: dict[str, Any] = Field( default_factory=dict, description="Other metadata besides the above standardized fields.", ) UNDEFINED_JOURNAL_QUALITY: ClassVar[int] = -1 # NOTE: can use a regex starting from the pattern in https://regex101.com/r/lpF1up/1 DOI_URL_FORMATS: ClassVar[Collection[str]] = { "https://doi.org/", "http://dx.doi.org/", } AUTHOR_NAMES_TO_REMOVE: ClassVar[Collection[str]] = {"et al", "et al."} FIELDS_TO_EXCLUDE_FROM_CSV: ClassVar[set[str]] = { "bibtex", # Let this be autogenerated, to avoid dealing with newlines "embedding", # Don't store to allow for configuration of embedding models } CSV_FIELDS_UP_FRONT: ClassVar[Sequence[str]] = ("doi", "file_location") @field_validator("key") @classmethod def clean_key(cls, value: str) -> str: # Replace HTML tags with empty string return re.sub(pattern=r"<\/?\w{1,10}>", repl="", string=value) @field_validator("publication_date") @classmethod def add_tzinfo(cls, value: datetime | None) -> datetime | None: if value is None: return None if value.tzinfo is None or value.tzinfo.utcoffset(value) is None: return value.replace(tzinfo=UTC) # Assume UTC if unspecified return value.astimezone(UTC) # Convert to UTC @classmethod def lowercase_doi_and_populate_doc_id(cls, data: dict[str, Any]) -> dict[str, Any]: doi: str | list[str] | None = data.get("doi") if isinstance(doi, list): if len(doi) != 1: logger.warning( f"Discarding list of DOIs {doi} due to it not having one value," f" full data was {data}." ) doi = None else: doi = doi[0] if doi: for url_prefix_to_remove in cls.DOI_URL_FORMATS: if doi.startswith(url_prefix_to_remove): doi = doi.replace(url_prefix_to_remove, "") data["doi"] = doi.lower() if not data.get("doc_id"): # keep user defined doc_ids data["doc_id"] = compute_unique_doc_id(doi, data.get("content_hash")) elif not data.get("doc_id"): # keep user defined doc_ids data["doc_id"] = compute_unique_doc_id(doi, data.get("content_hash")) if "dockey" in data.get( "fields_to_overwrite_from_metadata", DEFAULT_FIELDS_TO_OVERWRITE_FROM_METADATA, ) and ("dockey" not in data or not data["dockey"]): data["dockey"] = data["doc_id"] return data @staticmethod def is_bibtex_complete(bibtex: str, fields: list[str] | None = None) -> bool: """Validate bibtex entries have certain fields.""" if fields is None: fields = ["doi", "title"] return all(field + "=" in bibtex for field in fields) @staticmethod def merge_bibtex_entries(entry1: Entry, entry2: Entry) -> Entry: """Merge two bibtex entries into one, preferring entry2 fields.""" merged_entry = Entry(entry1.type) for field, value in entry1.fields.items(): merged_entry.fields[field] = value for field, value in entry2.fields.items(): merged_entry.fields[field] = value return merged_entry @staticmethod def misc_string_cleaning(data: dict[str, Any]) -> dict[str, Any]: """Clean strings before the enter the validation process.""" if pages := data.get("pages"): data["pages"] = pages.replace("--", "-").replace(" ", "").strip() return data @staticmethod def inject_clean_doi_url_into_data(data: dict[str, Any]) -> dict[str, Any]: """Ensure doi_url is present in data (since non-default arguments are not included).""" doi_url, doi = data.get("doi_url"), data.get("doi") if doi and not doi_url: doi_url = "https://doi.org/" + doi # ensure the modern doi url is used if doi_url: data["doi_url"] = doi_url.replace( "http://dx.doi.org/", "https://doi.org/" ).lower() return data @staticmethod def add_preprint_journal_from_doi_if_missing( data: dict[str, Any], ) -> dict[str, Any]: if not data.get("journal"): doi = data.get("doi", "") or "" if "10.48550/" in doi or "ArXiv" in ( (data.get("other", {}) or {}).get("externalIds", {}) or {} ): data["journal"] = "ArXiv" elif "10.26434/" in doi: data["journal"] = "ChemRxiv" elif ( "10.1101/" in doi and len(data.get("doi", "")) == JOURNAL_EXPECTED_DOI_LENGTHS["BioRxiv"] ): data["journal"] = "BioRxiv" elif ( "10.1101/" in doi and len(data.get("doi", "")) == JOURNAL_EXPECTED_DOI_LENGTHS["MedRxiv"] ): data["journal"] = "MedRxiv" elif "10.31224/" in doi: data["journal"] = "EngRxiv" return data @classmethod def remove_invalid_authors(cls, data: dict[str, Any]) -> dict[str, Any]: """Capture and cull strange author names.""" if authors := data.get("authors"): # On 10/29/2024 while indexing 19k PDFs, a provider (unclear which one) # returned an author of None. The vast majority of the time authors are str authors = cast("list[str | None]", authors) data["authors"] = [ a for a in authors if a and a.lower() not in cls.AUTHOR_NAMES_TO_REMOVE ] return data @staticmethod def overwrite_docname_dockey_for_compatibility_w_doc( data: dict[str, Any], ) -> dict[str, Any]: """Overwrite fields from metadata if specified.""" overwrite_fields = {"key": "docname", "doc_id": "dockey"} fields_to_overwrite = data.get( "fields_to_overwrite_from_metadata", DEFAULT_FIELDS_TO_OVERWRITE_FROM_METADATA, ) for field in overwrite_fields.keys() & fields_to_overwrite: if data.get(field): data[overwrite_fields[field]] = data[field] return data @classmethod def populate_bibtex_key_citation(cls, data: dict[str, Any]) -> dict[str, Any]: """Add or modify bibtex, key, and citation fields. Missing values, 'unknown' keys, and incomplete bibtex entries are regenerated. When fields_to_overwrite_from_metadata: If bibtex is regenerated, the citation field is also regenerated. Otherwise we keep the citation field as is. """ # we try to regenerate the key if unknowns are present, maybe they have been found if not data.get("key") or "unknown" in data["key"].lower(): data["key"] = create_bibtex_key( data.get("authors") or CITATION_FALLBACK_DATA["authors"], # type: ignore[arg-type] data.get("year") or CITATION_FALLBACK_DATA["year"], # type: ignore[arg-type] data.get("title") or CITATION_FALLBACK_DATA["title"], # type: ignore[arg-type] ) if "docname" in data.get( "fields_to_overwrite_from_metadata", DEFAULT_FIELDS_TO_OVERWRITE_FROM_METADATA, ): data["docname"] = data["key"] # even if we have a bibtex, it may not be complete, thus we need to add to it if not data.get("bibtex") or not cls.is_bibtex_complete(data["bibtex"]): existing_entry = None # if our bibtex already exists, but is incomplete, we add self_generated to metadata if data.get("bibtex"): data["other"] = BibTeXSource.SELF_GENERATED.update_other( data.get("other") ) try: existing_entry = next( iter(Parser().parse_string(data["bibtex"]).entries.values()) ) except (PybtexSyntaxError, InvalidNameString) as exc: # InvalidNameString: names like "Kyriacos, Κυριάκος, Athanasiou, Αθανασίου" logger.warning( f"Failed to parse bibtex for DOI {data.get('doi')}," f" title {data.get('title')!r}, and bibtex {data['bibtex']}." f" Failure message: {exc!r}" ) existing_entry = None entry_data = { "title": data.get("title") or CITATION_FALLBACK_DATA["title"], "year": ( CITATION_FALLBACK_DATA["year"] if not data.get("year") else str(data["year"]) ), "journal": data.get("journal") or CITATION_FALLBACK_DATA["journal"], "volume": data.get("volume"), "pages": data.get("pages"), "month": ( None if not (maybe_date := maybe_get_date(data.get("publication_date"))) else maybe_date.strftime("%b") ), "doi": data.get("doi"), "url": data.get("doi_url"), "publisher": data.get("publisher"), "issue": data.get("issue"), "issn": data.get("issn"), } entry_data = {k: v for k, v in entry_data.items() if v} try: new_entry = Entry( data.get("bibtex_type", "article") or "article", fields=entry_data ) if existing_entry: new_entry = cls.merge_bibtex_entries(existing_entry, new_entry) # add in authors manually into the entry authors = [Person(a) for a in data.get("authors", ["Unknown authors"])] for a in authors: new_entry.add_person(a, "author") data["bibtex"] = BibliographyData( entries={data["key"]: new_entry} ).to_string("bibtex") # We consider the source self-generated because the 'key' gets # autogenerated above via `create_bibtex_key` if it wasn't present data["other"] = BibTeXSource.SELF_GENERATED.update_other( data.get("other") ) # clear out the citation, since it will be regenerated if "citation" in data.get( "fields_to_overwrite_from_metadata", DEFAULT_FIELDS_TO_OVERWRITE_FROM_METADATA, ): data["citation"] = None except Exception: logger.debug( "Failed to generate bibtex for" f" {data.get('docname') or data.get('citation')}" ) if data.get("citation") is None and data.get("bibtex") is not None: data["citation"] = format_bibtex( data["bibtex"], missing_replacements=CITATION_FALLBACK_DATA ) elif data.get("citation") is None: data["citation"] = data.get("title") or CITATION_FALLBACK_DATA["title"] return data @classmethod def populate_content_hash(cls, data: dict[str, Any]) -> dict[str, Any]: if ( # Check for missing or autopopulate value, but preserve `None` data.get("content_hash", AUTOPOPULATE_VALUE) == AUTOPOPULATE_VALUE ): data["content_hash"] = None # Assume we don't have it if data.get("file_location"): # Try to update it with contextlib.suppress(FileNotFoundError): data["content_hash"] = md5sum(data["file_location"]) return data @model_validator(mode="before") @classmethod def validate_all_fields(cls, data: Mapping[str, Any]) -> dict[str, Any]: data = deepcopy(data) # Avoid mutating input data = dict(data) if "fields_to_overwrite_from_metadata" in data: raw_value = data["fields_to_overwrite_from_metadata"] if isinstance(raw_value, str): if (raw_value[0], raw_value[-1]) in {("[", "]"), ("{", "}")}: # If string-ified set or list, remove brackets before split raw_value = raw_value[1:-1] data["fields_to_overwrite_from_metadata"] = { s.strip("\"' ") for s in raw_value.split(",") } if not isinstance(data["fields_to_overwrite_from_metadata"], Container): raise TypeError( "fields_to_overwrite_from_metadata should be a container," f" not {type(data['fields_to_overwrite_from_metadata'])}." ) for possibly_str_field in ("authors", "other"): if data.get(possibly_str_field) and isinstance( data[possibly_str_field], str ): data[possibly_str_field] = ast.literal_eval(data[possibly_str_field]) data = cls.populate_content_hash(data) data = cls.lowercase_doi_and_populate_doc_id(data) data = cls.remove_invalid_authors(data) data = cls.misc_string_cleaning(data) data = cls.inject_clean_doi_url_into_data(data) data = cls.add_preprint_journal_from_doi_if_missing(data) data = cls.populate_bibtex_key_citation(data) return cls.overwrite_docname_dockey_for_compatibility_w_doc(data) def __getitem__(self, item: str): """Allow for dictionary-like access, falling back on other.""" try: return getattr(self, item) except AttributeError: return self.other[item] def make_filename(self, title_limit: int | None = 48) -> str: """ Make a filesystem-safe filename that has the doc ID appended, but no extension. Args: title_limit: Character limit on the title. Returns: Filename that is filesystem safe (e.g. non-safe chars are replaced with dash). """ if not self.title or not self.doc_id: raise ValueError("Unable to create filename without both title and doc_id.") # SEE: https://stackoverflow.com/a/71199182 encoded_title = re.sub( r"[/\\?%*:|\"<>\x7F\x00-\x1F]", "-", self.title[:title_limit] ) # NOTE: we append the doc ID for a few reasons: # 1. Prevent collisions for identical titles # SEE: https://stackoverflow.com/a/71761675 # 2. Filenames shouldn't end in a period, # so append the doc ID to circumvent that gotcha return "_".join((encoded_title, self.doc_id)) @computed_field # type: ignore[prop-decorator] @property def formatted_citation(self) -> str: if self.is_retracted: base_message = "**RETRACTED ARTICLE**" retract_info = "Retrieved from http://retractiondatabase.org/." citation_message = ( f"Citation: {self.citation}" if self.citation else f"Original DOI: {self.doi}" ) return f"{base_message} {citation_message} {retract_info}" if self.citation_count is None or self.source_quality is None: logger.debug("citation_count and source_quality are not set.") return self.citation if self.source_quality_message: return ( f"{self.citation} This article has {self.citation_count} citations and" f" is from a {self.source_quality_message}." ) return f"{self.citation} This article has {self.citation_count} citations." @property def source_quality_message(self) -> str: return ( SOURCE_QUALITY_MESSAGES[self.source_quality] if self.source_quality is not None and self.source_quality != DocDetails.UNDEFINED_JOURNAL_QUALITY # note - zero is a valid value else "" ) OPTIONAL_HYDRATION_FIELDS: ClassVar[Collection[str]] = {"url"} def is_hydration_needed( self, exclusion: Collection[str] = OPTIONAL_HYDRATION_FIELDS, inclusion: Collection[str] = (), ) -> bool: """Determine if we have unfilled attributes.""" if inclusion: return any( v is None for k, v in self.model_dump().items() if k in inclusion ) return any( v is None for k, v in self.model_dump().items() if k not in exclusion ) def __add__(self, other: DocDetails | int) -> DocDetails: # noqa: PLR0912 """Merge two DocDetails objects together.""" # control for usage w. Python's sum() function if isinstance(other, int): return self # first see if one of the entries is newer, which we will prefer PREFER_OTHER = True if self.publication_date and other.publication_date: PREFER_OTHER = self.publication_date <= other.publication_date merged_data: dict[str, Any] = {} # pylint: disable-next=not-an-iterable # pylint bug: https://github.com/pylint-dev/pylint/issues/10144 for field in type(self).model_fields: self_value = getattr(self, field) other_value = getattr(other, field) if field == "other": # Merge 'other' dictionaries merged_data[field] = {**self.other, **other.other} # handle the bibtex / sources as special fields for field_to_combine in ("bibtex_source", "client_source"): # Ensure the fields are lists before combining if self.other.get(field_to_combine) and not isinstance( self.other[field_to_combine], list ): self.other[field_to_combine] = [self.other[field_to_combine]] if other.other.get(field_to_combine) and not isinstance( other.other[field_to_combine], list ): other.other[field_to_combine] = [other.other[field_to_combine]] if self.other.get(field_to_combine) and other.other.get( field_to_combine ): # Note: these should always be lists merged_data[field][field_to_combine] = ( self.other[field_to_combine] + other.other[field_to_combine] ) elif field == "authors" and self_value and other_value: # Combine authors lists, removing duplicates # Choose whichever author list is longer best_authors = ( self.authors if ( sum(len(a) for a in self.authors or []) >= sum(len(a) for a in other.authors or []) ) else other.authors ) merged_data[field] = best_authors or None elif field == "key" and self_value is not None and other_value is not None: # if we have multiple keys, we wipe them and allow regeneration merged_data[field] = None elif field in {"citation_count", "year", "publication_date"}: # get the latest data # this conditional is written in a way to handle if multiple doc objects # are provided, we'll use the highest value # if there's only one valid value, we'll use that regardless even if # that value is 0 if self_value is None or other_value is None: merged_data[field] = ( self_value if self_value is not None # Dance around 0 else other_value ) else: merged_data[field] = max(self_value, other_value) elif field == "content_hash" and ( # Hashes are both present but differ self_value and other_value and self_value != other_value ): # If hashes are both present but differ, # we don't know which to pick, so just discard the value merged_data[field] = None else: # Prefer non-null values, default preference for 'other' object. # Note: if PREFER_OTHER = False then even if 'other' data exists # we will use 'self' data. This is to control for when we have # pre-prints / arXiv versions of papers that are not as up-to-date merged_data[field] = ( other_value if ( (other_value is not None and other_value != []) and PREFER_OTHER ) else self_value ) if ( merged_data["doi"] != self.doi or merged_data["content_hash"] != self.content_hash ): # Recalculate doc_id if doi or content hash has changed merged_data["doc_id"] = compute_unique_doc_id( merged_data["doi"], merged_data.get("content_hash") ) # Create and return new DocDetails instance return DocDetails(**merged_data) def __radd__(self, other: DocDetails | int) -> DocDetails: # other == 0 captures the first call of sum() if isinstance(other, int) and other == 0: return self return self.__add__(other) def __iadd__(self, other: DocDetails | int) -> DocDetails: # noqa: PYI034 # only includes int to align with __radd__ and __add__ if isinstance(other, int): return self return self.__add__(other) ================================================ FILE: src/paperqa/utils.py ================================================ import asyncio import contextlib import hashlib import logging import logging.config import math import os import re import unicodedata from collections import Counter from collections.abc import Awaitable, Callable, Collection, Iterable, Iterator, Mapping from datetime import datetime from functools import partial, reduce from http import HTTPStatus from pathlib import Path from typing import Any, BinaryIO, ClassVar, TypeVar from uuid import UUID, uuid4 import httpx from lmi import configure_llm_logs from pybtex.database import Person, parse_string from pybtex.database.input.bibtex import Parser from pybtex.style.formatting import unsrtalpha from pybtex.style.template import FieldIsMissing from tenacity import ( AsyncRetrying, before_sleep_log, retry_if_exception, stop_after_attempt, wait_incrementing, ) logger = logging.getLogger(__name__) MAX_TEXT_ENTROPY = 8.0 T = TypeVar("T") class ImpossibleParsingError(Exception): """Error to throw when a parsing is impossible.""" LOG_METHOD_NAME: ClassVar[str] = "warning" # UTF-8 encoding-related failures can be caught using this regex INVALID_UNICODE_CHARS = re.compile(r"[\x00\uD800-\uDFFF]") REPLACEMENT_CHAR = "\ufffd" # � def clean_invalid_unicode(text: str, repl: str = REPLACEMENT_CHAR) -> str: r"""Clean invalid Unicode chars by replacing them with the replacement character. Handles the following characters: - Null bytes (\\x00): Invalid in UTF-8 encoded databases. - Orphaned surrogates (U+D800 to U+DFFF): Reserved for UTF-16 encoding and should not appear in Unicode strings. """ return INVALID_UNICODE_CHARS.sub(repl, text) def name_in_text(name: str, text: str) -> bool: sname = name.strip() pattern = rf"\b({re.escape(sname)})\b(?!\w)" return bool(re.search(pattern, text)) def maybe_is_text(s: str, thresh: float = 2.5) -> bool: """ Calculate the entropy of the string to discard files with excessively repeated symbols. PDF parsing sometimes represents horizontal distances between words on title pages and in tables with spaces, which should therefore not be included in this calculation. """ if not s: return False s_wo_spaces = s.replace(" ", "") if not s_wo_spaces: return False counts = Counter(s_wo_spaces) entropy = 0.0 length = len(s_wo_spaces) for count in counts.values(): p = count / length entropy += -p * math.log2(p) # Check if the entropy is within a reasonable range for text return MAX_TEXT_ENTROPY > entropy > thresh def maybe_is_pdf(file: BinaryIO) -> bool: magic_number = file.read(4) file.seek(0) return magic_number == b"%PDF" def maybe_is_html(file: BinaryIO) -> bool: magic_number = file.read(4) file.seek(0) return magic_number in {b" float: if not s1 or not s2: return 0 # break the strings into words ss1 = set(s1.lower().split()) if case_insensitive else set(s1.split()) ss2 = set(s2.lower().split()) if case_insensitive else set(s2.split()) # return the similarity ratio return len(ss1.intersection(ss2)) / len(ss1.union(ss2)) def hexdigest(data: str | bytes) -> str: if isinstance(data, str): data = data.encode("utf-8") return hashlib.md5(data).hexdigest() # noqa: S324 def md5sum(file_path: str | os.PathLike) -> str: return hexdigest(Path(file_path).read_bytes()) def strip_citations(text: str) -> str: # Combined regex for identifying citations (see unit tests for examples) citation_regex = r"\b[\w\-]+\set\sal\.\s\([0-9]{4}\)|\((?:[^\)]*?[a-zA-Z][^\)]*?[0-9]{4}[^\)]*?)\)" # Remove the citations from the text return re.sub(citation_regex, "", text, flags=re.MULTILINE) def extract_score(text: str) -> int: """ Extract an integer score from the text in 0 to 10. Note: score is 1-10, and we use 0 as a sentinel for not applicable. """ # Check for N/A, not applicable, not relevant. # Don't check for NA, as there can be genes containing "NA" last_line = text.rsplit("\n", maxsplit=1)[-1] if ( "n/a" in last_line.lower() or "not applicable" in text.lower() or "not relevant" in text.lower() ): return 0 score = re.search(r"[sS]core[:is\s]+([0-9]+)", text) if not score: score = re.search(r"\(([0-9])\w*\/", text) if not score: score = re.search(r"([0-9]+)\w*\/", text) if score: s = int(score.group(1)) if s > 10: # noqa: PLR2004 s = int(s / 10) # sometimes becomes out of 100 return s last_few = text[-15:] scores = re.findall(r"([0-9]+)", last_few) if scores: s = int(scores[-1]) if s > 10: # noqa: PLR2004 s = int(s / 10) # sometimes becomes out of 100 return s raise ValueError(f"Failed to extract score from text {text!r}.") def get_parenthetical_substrings(text: str) -> list[str]: """ Finds the all nested parenthetical substrings. Args: text: The input string to analyze. Returns: A list of parenthetical substrings. """ substrings = [] open_paren_indices = [] for i, char in enumerate(text): if char == "(": open_paren_indices.append(i) elif char == ")" and open_paren_indices: start_index = open_paren_indices.pop() substrings.append(text[start_index : i + 1]) return substrings def get_citation_ids(text: str) -> list[str]: matches = re.findall(r"\bpqac-[a-zA-Z0-9]{8}\b", text) # remove duplicates while preserving order return list(dict.fromkeys(matches)) def extract_doi(reference: str) -> str: """ Extracts DOI from the reference string using regex. :param reference: A string containing the reference. :return: A string containing the DOI link or a message if DOI is not found. """ # DOI regex pattern doi_pattern = r"10.\d{4,9}/[-._;()/:A-Z0-9]+" doi_match = re.search(doi_pattern, reference, re.IGNORECASE) # If DOI is found in the reference, return the DOI link if doi_match: return "https://doi.org/" + doi_match.group() return "" def batch_iter(iterable: list, n: int = 1) -> Iterator[list]: """ Batch an iterable into chunks of size n. :param iterable: The iterable to batch :param n: The size of the batches :return: A list of batches """ length = len(iterable) for ndx in range(0, length, n): yield iterable[ndx : min(ndx + n, length)] def get_loop() -> asyncio.AbstractEventLoop: try: loop = asyncio.get_running_loop() except RuntimeError: loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) return loop def run_or_ensure(coro: Awaitable[T]) -> T | asyncio.Task[T]: """Run a coroutine or convert to a future if an event loop is running.""" loop = get_loop() if loop.is_running(): # In async contexts (e.g., Jupyter notebook), return a Task return asyncio.ensure_future(coro) return loop.run_until_complete(coro) def encode_id(value: str | bytes | UUID, maxsize: int | None = 16) -> str: """Encode a value (e.g. a DOI) optionally with a max length.""" if isinstance(value, UUID): value = str(value) if isinstance(value, str): value = value.lower().encode() return hashlib.md5(value).hexdigest()[:maxsize] # noqa: S324 def compute_unique_doc_id(doi: str | None, content_hash: str | None) -> str: if doi: value_to_encode: str = doi.lower() + (content_hash or "") else: value_to_encode = content_hash or str(uuid4()) return encode_id(value_to_encode) def get_year(ts: datetime | None = None) -> str: """Get the year from the input datetime, otherwise using the current datetime.""" if ts is None: ts = datetime.now() return ts.strftime("%Y") class CitationConversionError(Exception): """Exception to throw when we can't process a citation from a BibTeX.""" def clean_upbibtex(bibtex: str) -> str: if not bibtex: return bibtex mapping = { "None": "article", "Article": "article", "JournalArticle": "article", "Review": "article", "Book": "book", "BookSection": "inbook", "ConferencePaper": "inproceedings", "Conference": "inproceedings", "Dataset": "misc", "Dissertation": "phdthesis", "Journal": "article", "Patent": "patent", "Preprint": "article", "Report": "techreport", "Thesis": "phdthesis", "WebPage": "misc", "Plain": "article", } if "@None" in bibtex: return bibtex.replace("@None", "@article") match = re.findall(r"@\['(.*)'\]", bibtex) if not match: match = re.findall(r"@(\w+)\{", bibtex) bib_type = match[0] current = f"@{match[0]}" else: bib_type = match[0] current = f"@['{bib_type}']" for k, v in mapping.items(): # can have multiple if k in bib_type: bibtex = bibtex.replace(current, f"@{v}") break return bibtex def format_bibtex( bibtex: str, key: str | None = None, clean: bool = True, missing_replacements: Mapping[str, str | list[str]] | None = None, ) -> str: """Transform bibtex entry into a citation, potentially adding missing fields.""" if missing_replacements is None: missing_replacements = {} if key is None: key = bibtex.split("{")[1].split(",")[0] style = unsrtalpha.Style() try: bd = parse_string(clean_upbibtex(bibtex) if clean else bibtex, "bibtex") except Exception: return "Ref " + key try: entry = bd.entries[key] except KeyError as exc: # Let's check if key is a non-empty prefix try: entry = next( iter(v for k, v in bd.entries.items() if k.startswith(key) and key) ) except StopIteration: raise CitationConversionError( f"Failed to process{' and clean up' if clean else ''} bibtex {bibtex}" f" due to failed lookup of key {key}." ) from exc try: # see if we can insert missing fields for field, replacement_value in missing_replacements.items(): # Deal with special case for author, since it needs to be parsed # into Person objects. This reorganizes the names automatically. if field == "author" and "author" not in entry.persons: tmp_author_bibtex = f"@misc{{tmpkey, author={{{replacement_value}}}}}" authors: list[Person] = ( Parser() .parse_string(tmp_author_bibtex) .entries["tmpkey"] .persons["author"] ) for a in authors: entry.add_person(a, "author") elif field not in entry.fields: entry.fields.update({field: replacement_value}) entry = style.format_entry(label="1", entry=entry) return entry.text.render_as("text") except (FieldIsMissing, UnicodeDecodeError): try: return entry.fields["title"] except KeyError as exc: raise CitationConversionError( f"Failed to process{' and clean up' if clean else ''} bibtex {bibtex}" " due to missing a 'title' field." ) from exc def remove_substrings(target: str, substr_removal_list: Collection[str]) -> str: """Remove substrings from a target string.""" if all(len(w) == 1 for w in substr_removal_list): return target.translate(str.maketrans("", "", "".join(substr_removal_list))) for substr in substr_removal_list: target = target.replace(substr, "") return target def mutate_acute_accents(text: str, replace: bool = False) -> str: """ Replaces or removes acute accents in a string based on the boolean flag. Args: text: The input string. replace: A flag to determine whether to replace (True) or remove (False) acute accents. If 'replace' is True, acute accents on vowels are replaced with an apostrophe (e.g., "á" becomes "'a"). If 'replace' is False, all acute accents are removed from the string. Returns: The modified string with acute accents either replaced or removed. """ if replace: def replace_acute(match): return f"'{match.group(1)}" nfd = unicodedata.normalize("NFD", text) converted = re.sub(r"([aeiouAEIOU])\u0301", replace_acute, nfd) return unicodedata.normalize("NFC", converted) return "".join( c for c in unicodedata.normalize("NFD", text) if unicodedata.category(c) != "Mn" ) def bibtex_field_extract( bibtex: str, field: str, missing_replacements: Mapping[str, str | list[str]] | None = None, ) -> str | list[str]: """Get a field from a bibtex entry. Args: bibtex: bibtex entry field: field to extract missing_replacements: replacement extract for field if not present in the bibtex string """ if missing_replacements is None: missing_replacements = {} try: pattern = rf"{field}\s*=\s*{{(.*?)}}," # note: we intentionally have an attribute error if no match return re.search(pattern, bibtex, re.IGNORECASE).group(1).strip() # type: ignore[union-attr] except AttributeError: return missing_replacements.get(field, "") UNKNOWN_AUTHOR_KEY: str = "unknownauthors" def create_bibtex_key(author: list[str], year: str | int, title: str) -> str: FORBIDDEN_KEY_CHARACTERS = {"_", " ", "-", "/", "'", "`", ":", ",", "\n"} try: author_rep = ( # casefold will not remove accutes mutate_acute_accents(text=author[0].split()[-1].casefold()) if "Unknown" not in author[0] else UNKNOWN_AUTHOR_KEY ) except IndexError: author_rep = UNKNOWN_AUTHOR_KEY # we don't want a bibtex-parsing induced line break in the key # so we cap it to 100+50+4 = 154 characters max # 50 for the author, 100 for the first three title words, 4 for the year # the first three title words are just emulating the s2 convention key = f"{author_rep[:50]}{year}{''.join([t.casefold() for t in title.split()[:3]])[:100]}" return remove_substrings(key, FORBIDDEN_KEY_CHARACTERS) def is_retryable( exc: BaseException, additional_status_codes: Collection[HTTPStatus | int] | None = None, ) -> bool: """Check if an exception is known to be a retryable HTTP issue.""" if isinstance(exc, httpx.ConnectError | httpx.ReadError): # Seen with Semantic Scholar: # > aiohttp.client_exceptions.ClientConnectionResetError: # > Cannot write to closing transport # Then we migrated to httpx return True retry_status_codes: set[int] = { httpx.codes.INTERNAL_SERVER_ERROR, httpx.codes.GATEWAY_TIMEOUT, } if additional_status_codes: retry_status_codes.update( status_code.value if isinstance(status_code, HTTPStatus) else status_code for status_code in additional_status_codes ) return ( isinstance(exc, httpx.HTTPStatusError) and exc.response.status_code in retry_status_codes ) async def _get_with_retrying( # type: ignore[return] # noqa: RET503 url: str, client: httpx.AsyncClient, http_exception_mappings: dict[HTTPStatus | int, Exception] | None = None, retry_predicate: Callable[[BaseException], bool] = is_retryable, **get_kwargs, ) -> dict[str, Any]: """Get from a URL with retrying protection. Args: url: Target URL for the GET request. client: Async HTTP client for the GET request. http_exception_mappings: Optional mapping of HTTP status codes to custom Exceptions to be thrown. retry_predicate: Optional predicate to dictate when to retry. **get_kwargs: Optional additional keyword arguments for the GET request. Returns: JSON result from the GET request. """ async for attempt in AsyncRetrying( retry=retry_if_exception(retry_predicate), before_sleep=before_sleep_log(logger, logging.WARNING), stop=stop_after_attempt(5), wait=wait_incrementing(0.1, 0.1), ): with attempt: response = await client.get(url, **get_kwargs) try: response.raise_for_status() except httpx.HTTPStatusError as e: if ( http_exception_mappings and e.response.status_code in http_exception_mappings ): raise http_exception_mappings[e.response.status_code] from e raise return response.json() def union_collections_to_ordered_list(collections: Iterable) -> list: return sorted(reduce(lambda x, y: set(x) | set(y), collections)) def pqa_directory(name: str) -> Path: if pqa_home := os.environ.get("PQA_HOME"): directory = Path(pqa_home) / ".pqa" / name else: directory = Path.home() / ".pqa" / name directory.mkdir(parents=True, exist_ok=True) return directory def setup_default_logs() -> None: """Configure logs to reasonable defaults.""" configure_llm_logs() logging.config.dictConfig( { "version": 1, "disable_existing_loggers": False, "loggers": { "openai._base_client": {"level": "WARNING"} # For OpenAI POSTs }, } ) def extract_thought(content: str | None) -> str: """Extract an Anthropic thought from a message's content.""" # SEE: https://regex101.com/r/bpJt05/1 return re.sub(r"<\/?thinking>", "", content or "") BIBTEX_MAPPING: dict[str, str] = { """Maps client bibtex types to pybtex types""" "journal-article": "article", "journal-issue": "misc", # No direct equivalent, so 'misc' is used "journal-volume": "misc", # No direct equivalent, so 'misc' is used "journal": "misc", # No direct equivalent, so 'misc' is used "proceedings-article": "inproceedings", "proceedings": "proceedings", "dataset": "misc", # No direct equivalent, so 'misc' is used "component": "misc", # No direct equivalent, so 'misc' is used "report": "techreport", "report-series": ( # 'series' implies multiple tech reports, but each is still a 'techreport' "techreport" ), "standard": "misc", # No direct equivalent, so 'misc' is used "standard-series": "misc", # No direct equivalent, so 'misc' is used "edited-book": "book", # Edited books are considered books in BibTeX "monograph": "book", # Monographs are considered books in BibTeX "reference-book": "book", # Reference books are considered books in BibTeX "book": "book", "book-series": "book", # Series of books can be considered as 'book' in BibTeX "book-set": "book", # Set of books can be considered as 'book' in BibTeX "book-chapter": "inbook", "book-section": "inbook", # Sections in books can be considered as 'inbook' "book-part": "inbook", # Parts of books can be considered as 'inbook' "book-track": "inbook", # Tracks in books can be considered as 'inbook' "reference-entry": ( # Entries in reference books can be considered as 'inbook' "inbook" ), "dissertation": "phdthesis", # Dissertations are usually PhD thesis "posted-content": "misc", # No direct equivalent, so 'misc' is used "peer-review": "misc", # No direct equivalent, so 'misc' is used "other": "article", # Assume an article if we don't know the type } @contextlib.contextmanager def logging_filters( loggers: Collection[str], filters: Collection[type[logging.Filter]] ): """Temporarily add a filter to each specified logger.""" filters_added: dict[str, list[logging.Filter]] = {} try: for logger_name in loggers: log_to_filter = logging.getLogger(logger_name) for log_filter in filters: _filter = log_filter() log_to_filter.addFilter(_filter) if logger_name not in filters_added: filters_added[logger_name] = [_filter] else: filters_added[logger_name] += [_filter] yield finally: for logger_name, log_filters_to_remove in filters_added.items(): log_with_filter = logging.getLogger(logger_name) for log_filter_to_remove in log_filters_to_remove: log_with_filter.removeFilter(log_filter_to_remove) def citation_to_docname(citation: str) -> str: """Create a docname that follows MLA parenthetical in-text citation.""" # Prefer title-case token first to preserve existing behavior. match = re.search(r"([A-Z][a-z]+)", citation) if match is not None: author = match.group(1) else: # Fall back to acronym/symbol-led starts like "CD47/SIRP-alpha ...". match = re.search(r"([A-Z0-9]{2,})", citation) # Final deterministic fallback for non-text-like citation strings. author = ( match.group(1) if match is not None else f"Doc{hexdigest(citation)[:8]}" ) year = "" match = re.search(r"(\d{4})", citation) if match is not None: year = match.group(1) return f"{author}{year}" def maybe_get_date(date: str | datetime | None) -> datetime | None: if not date: return None if isinstance(date, str): # Try common date formats in sequence formats = [ "%Y-%m-%dT%H:%M:%S%z", # ISO with timezone: 2023-01-31T14:30:00+0000 "%Y-%m-%d %H:%M:%S", # ISO with time: 2023-01-31 14:30:00 "%B %d, %Y", # Full month day, year: January 31, 2023 "%b %d, %Y", # Month day, year: Jan 31, 2023 "%Y-%m-%d", # ISO format: 2023-01-31 ] for fmt in formats: try: return datetime.strptime(date, fmt) except ValueError: continue return None return date def clean_possessives(text: str) -> str: """Remove possessive apostrophes from text (e.g. "X's Y" to "Xs Y").""" # Handle apostrophes after word characters # (possessive 's or trailing apostrophes) text = re.sub( r"(?<=\w)'(?:s\b|(?=\s|$))", lambda m: "s" if m.group().endswith("s") else "", text, ) # Remove standalone 's patterns text = re.sub(r"\s+'s\b", "", text) text = re.sub(r"^'s\s*", "", text) # Remove standalone apostrophes text = re.sub(r"\s+'\s+", " ", text) return re.sub(r"(? tuple[bool, str]: """Parse irrelevance label from enrichment. Returns: Two-tuple of (is irrelevant, enrichment without the label). """ # Handle optional Markdown formatting (e.g. **RELEVANT:** or *IRRELEVANT:*) normalized_start = enrichment.upper().lstrip("*").lstrip() if normalized_start.startswith("IRRELEVANT:"): label_match = re.match(r"^\**\s*IRRELEVANT:\**\s*", enrichment) is_irrelevant: bool = True elif normalized_start.startswith("RELEVANT:"): label_match = re.match(r"^\**\s*RELEVANT:\**\s*", enrichment) is_irrelevant = False else: # No explicit label matched, conservatively assume relevant return False, enrichment.strip() no_label_enrichment = enrichment[label_match.end() :] if label_match else enrichment return is_irrelevant, no_label_enrichment.strip() def get_stable_str(fn: Callable, for_hash: bool = False) -> str: """ Get a stable string from a function, for serialization (default) or hashing. It avoids common pitfalls such as: - All lambda functions having the same name ''. - IDs in normal string representation of functions breaking cache keys. """ if ( hasattr(fn, "__module__") and hasattr(fn, "__name__") and fn.__name__ != "" and not isinstance(fn, partial) ): # Named function: use fully qualified name return f"{fn.__module__}.{fn.__name__}" if not for_hash: raise ValueError( f"Cannot form serialization-safe string representation for {fn}." ) # Fallback to lower-quality hash name # NOTE: we could look into `fn.__code__`, but as `fn.__code__.co_code` # is not stable across Python minor versions, # this unfortunately makes the cache key incompatible across Python versions, # which is too brittle return type(fn).__name__ ================================================ FILE: tests/__init__.py ================================================ ================================================ FILE: tests/cassettes/test_arxiv_doi_is_used_when_available.yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example%40papercrow.ai&query.title=Attention+is+All+you+Need&rows=1&query.author=Ashish+Vaswani+Noam+Shazeer+Niki+Parmar+Jakob+Uszkoreit+Llion+Jones+Aidan+N.+Gomez+Lukasz+Kaiser+Illia+Polosukhin response: body: string: !!binary | H4sIAAAAAAAA/9VVTY/iOBD9K1FOO1IMDiQQckO9h91Rqwf1xxwGOJikQqx27IztNMMi/vuUTUNn PhjNak+LOCRl+7nq1XuVQ2gss50J81A9h1HYgDFsC8TuW8DYTulnIrixvaUX0IYriavxgA7o20qY H8KKFWAR7XCMQqssE0SD6YQLpclkEoXcQoMvy0PIZQlfoHSnSmaBtEy7bcvliI7SKIum63V0WrG8 ccm4OKEZodPHEc3HkzyZfcLb3SoW0bRhHk/TJJ3NKJ3RaYYZtN0Gk69BE6EKZk9ZP1itutJsOr2N gsU8Cp4e5gijoQINsgBSqE7aMKe983hsbowquAcJKqWDG9W0nfXvTAS3XG475IkXBrEKJS1IS0rV MC59ha9PS6yp0MqYhiGzyI3VvDglVjFhoJd0SVrNXSI/8hNn6zXu/PPD364LdBBnk3S8Gr7Eq6GM MzKi08QRc+phq1UBUGKChiAELwS4FDUg6E/Zj7Mojcb0R/oRmqZkTB8pzRP8x9/Tn46mk4RmSUwp xfyM6nThjt64ipFg3M4NuTBdks3+zHYcz6YOzGJ2+TJ8AFGRuXUsOsJ33NbBPQik+wWChTLch++h RQpxj2+DCTFjDFT8S48WvJN1tlbai26L550IFmCxqxHqteFi71RRsx2+G/jcudQwUnHtdc+qigv+ qp4l8v6G8p49q00f5cn886w0cPstFCtLfhLKr/HmpsbO9wE/MrNjkv8LuLXzY7Pxmo0niasfEN3r SDLfycWbIgJVBbaGwDUXJS1fO3MO3ymNxM8bQJUyGdzUrEXecHUlg8vPbfxtd+TBX12DULcMQzg0 +kCPUNRSCbXlYKLgoxJdg5kFfzxg92ywYC1OnndYT8/Md7ALPmgBTOKJW4WXcCaZo8uioK+oe+Ld A/Ka+t368eRiNC1Oj4ss/9/MOUND68zzX4wfo1evGH96Nn6BJsCJPx7MkiTN3HA9z4IDOpTj8Nu7 x6f7W8SvrW3z1XA1ZIXYwWag9BafJXoWC9qvhnfnkeaawo3prmXv23qZLqY3yN8uMv6mUvHTNVeH 52UKX73KOc1/zQiyi6vuAxhHIbr0VJxXIPFfOZ+DAaaLmqAK3AdQdkIcj8evBaw8WYAHAAA= headers: Connection: - keep-alive Content-Length: - "851" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:26 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=Attention+is+All+you+Need&fields=authors%2CcitationCount%2CcitationStyles%2CexternalIds%2CinfluentialCitationCount%2CisOpenAccess%2Cjournal%2CopenAccessPdf%2CpublicationDate%2CpublicationTypes%2Ctitle%2Curl%2Cvenue%2Cyear response: body: string: '{"data": [{"paperId": "204e3073870fae3d05bcbc2f6a8e263d9b72e776", "externalIds": {"DBLP": "journals/corr/VaswaniSPUJGKP17", "MAG": "2963403868", "ArXiv": "1706.03762", "CorpusId": 13756489}, "url": "https://www.semanticscholar.org/paper/204e3073870fae3d05bcbc2f6a8e263d9b72e776", "title": "Attention is All you Need", "venue": "Neural Information Processing Systems", "year": 2017, "citationCount": 136941, "influentialCitationCount": 17456, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": null, "license": null}, "publicationTypes": ["JournalArticle", "Conference"], "publicationDate": "2017-06-12", "journal": {"pages": "5998-6008"}, "citationStyles": {"bibtex": "@Article{Vaswani2017AttentionIA,\n author = {Ashish Vaswani and Noam M. Shazeer and Niki Parmar and Jakob Uszkoreit and Llion Jones and Aidan N. Gomez and Lukasz Kaiser and I. Polosukhin},\n booktitle = {Neural Information Processing Systems},\n pages = {5998-6008},\n title = {Attention is All you Need},\n year = {2017}\n}\n"}, "authors": [{"authorId": "40348417", "name": "Ashish Vaswani"}, {"authorId": "1846258", "name": "Noam M. Shazeer"}, {"authorId": "3877127", "name": "Niki Parmar"}, {"authorId": "39328010", "name": "Jakob Uszkoreit"}, {"authorId": "145024664", "name": "Llion Jones"}, {"authorId": "19177000", "name": "Aidan N. Gomez"}, {"authorId": "40527594", "name": "Lukasz Kaiser"}, {"authorId": "3443442", "name": "I. Polosukhin"}], "matchScore": 133.32033}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1458" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:27 GMT Via: - 1.1 b0ed8f5cd57ec24ce179421915a813d6.cloudfront.net (CloudFront) X-Amz-Cf-Id: - G-Fml-RwTHG7N0TKG_RqK4VY3P76qQNaa2X_hmnF0bwCNPx8N11G2A== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - PKejRGJMvHcEY_g= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1458" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:27 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 930eea85-a94f-4ae7-978b-bbf0edd6f7fd status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_author_matching.yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example%40papercrow.ai&query.title=Augmenting+large+language+models+with+chemistry+tools.&rows=1&query.author=Jack+NoScience&select=DOI%2Cauthor%2Ctitle response: body: string: !!binary | H4sIAAAAAAAA/8WTTXPTMBCG/4pGZyuRYxNIbm2TQwqlDKVcmh629trRVJaMtC6EjP87K8NAOQEn LprZD727+8zuSUYCGqJcS/8oM9lhjNCiomOP7Pvsw6OyJtKz0BOGaLzjaD7TM/0rItcn2UCFxGqn MZPkCawKGAebXGXxaplJQ9ixcXeSm+td0tCzoljp/Rz6Pn+RL5bLYsmSMNDBhynv+v3FbsOZB6I+ rvfz/dyHytQzH9r9XGu9UvwsVFnkhcoX5erHb3RkKiCs1ZQu1w3YiJlszROm5i+hSgM30Bl7ZPu1 t+geArgaA/sjfhrQVQlCY8IEAJrGWAM0Dc+NOehS+DxAbfEoNthDoI7rCt+IrcWKAndgBUuKC9/1 A2EQW9cahxiMazPx0QS2DIgPWB0ycW65p/gwhBQ6E4tSL/NM3N6cyfF+zP5MQicShVqUxUtVlLn+ SxJnFpy4nD2HcWWqA6CNv4OAujZperD/mUb2s9xb+N6QuMFqCIaOYuciGWL1f8N7z/tqyLLmnXzH G55Ek9y2G+xUQ9wSz/uVOxVvILTIr2sHXntx5euEatKY1lv1GFQ/XUSeScYXjuk2+NICKcML9kWu dSILoToo5pAuwg3WjuP4DZbpyjSRAwAA headers: Connection: - keep-alive Content-Length: - "480" Content-Type: - application/json Date: - Thu, 11 Sep 2025 17:38:04 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=Augmenting+large+language+models+with+chemistry+tools.&fields=authors%2CexternalIds%2Ctitle response: body: string: '{"data": [{"paperId": "354dcdebf3f8b5feeed5c62090e0bc1f0c28db06", "externalIds": {"DBLP": "journals/natmi/BranCSBWS24", "ArXiv": "2304.05376", "PubMedCentral": "11116106", "DOI": "10.1038/s42256-024-00832-8", "CorpusId": 258059792, "PubMed": "38799228"}, "title": "Augmenting large language models with chemistry tools", "authors": [{"authorId": "2216007369", "name": "Andr\u00e9s M Bran"}, {"authorId": "2161337138", "name": "Sam Cox"}, {"authorId": "1820929773", "name": "Oliver Schilter"}, {"authorId": "2251414370", "name": "Carlo Baldassari"}, {"authorId": "2150199535", "name": "Andrew D. White"}, {"authorId": "1379965853", "name": "P. Schwaller"}], "matchScore": 178.26385}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "684" Content-Type: - application/json Date: - Thu, 11 Sep 2025 17:38:04 GMT Via: - 1.1 0ac5a786563da4ae2e2a28a1fe210e04.cloudfront.net (CloudFront) X-Amz-Cf-Id: - 4ZJfDYGcp5wAyZUvLVGUBT3UKXCibwoF6zHc9nkigvXgYSm_5T1pVw== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - Qv5XdE5kPHcECpQ= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "684" x-amzn-Remapped-Date: - Thu, 11 Sep 2025 17:38:04 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 6f4e483e-c5ad-422d-91b4-cb69fec66841 status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=Augmenting+large+language+models+with+chemistry+tools.&fields=authors%2CexternalIds%2Ctitle response: body: string: '{"data": [{"paperId": "354dcdebf3f8b5feeed5c62090e0bc1f0c28db06", "externalIds": {"DBLP": "journals/natmi/BranCSBWS24", "ArXiv": "2304.05376", "PubMedCentral": "11116106", "DOI": "10.1038/s42256-024-00832-8", "CorpusId": 258059792, "PubMed": "38799228"}, "title": "Augmenting large language models with chemistry tools", "authors": [{"authorId": "2216007369", "name": "Andr\u00e9s M Bran"}, {"authorId": "2161337138", "name": "Sam Cox"}, {"authorId": "1820929773", "name": "Oliver Schilter"}, {"authorId": "2251414370", "name": "Carlo Baldassari"}, {"authorId": "2150199535", "name": "Andrew D. White"}, {"authorId": "1379965853", "name": "P. Schwaller"}], "matchScore": 178.26385}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "684" Content-Type: - application/json Date: - Thu, 11 Sep 2025 17:38:05 GMT Via: - 1.1 0ac5a786563da4ae2e2a28a1fe210e04.cloudfront.net (CloudFront) X-Amz-Cf-Id: - qb8P3yEIkzlBcgmB4QAzWYqjPwKBSCWxcDlV39KmGXVv8SwOJjAwCQ== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - Qv5XjG6uvHcEBfg= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "684" x-amzn-Remapped-Date: - Thu, 11 Sep 2025 17:38:05 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - c6d4913a-0f90-486e-8929-a21cccf0b180 status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=Augmenting+large+language+models+with+chemistry+tools.&fields=authors%2CexternalIds%2Ctitle response: body: string: '{"data": [{"paperId": "354dcdebf3f8b5feeed5c62090e0bc1f0c28db06", "externalIds": {"DBLP": "journals/natmi/BranCSBWS24", "ArXiv": "2304.05376", "PubMedCentral": "11116106", "DOI": "10.1038/s42256-024-00832-8", "CorpusId": 258059792, "PubMed": "38799228"}, "title": "Augmenting large language models with chemistry tools", "authors": [{"authorId": "2216007369", "name": "Andr\u00e9s M Bran"}, {"authorId": "2161337138", "name": "Sam Cox"}, {"authorId": "1820929773", "name": "Oliver Schilter"}, {"authorId": "2251414370", "name": "Carlo Baldassari"}, {"authorId": "2150199535", "name": "Andrew D. White"}, {"authorId": "1379965853", "name": "P. Schwaller"}], "matchScore": 178.26385}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "684" Content-Type: - application/json Date: - Thu, 11 Sep 2025 17:38:05 GMT Via: - 1.1 0ac5a786563da4ae2e2a28a1fe210e04.cloudfront.net (CloudFront) X-Amz-Cf-Id: - 1NlPpTre8eGbGtTOdMmQ47aUsZmE-8n7RVTtKJKQ7hN5iD8EnUtxBQ== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - Qv5XpGVNvHcEJgw= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "684" x-amzn-Remapped-Date: - Thu, 11 Sep 2025 17:38:05 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - da290116-3a4a-4800-88b3-f642c11bdb4b status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.48550%2FarXiv.2304.05376/transform/application/x-bibtex response: body: string: Resource not found. headers: Connection: - keep-alive Content-Type: - text/plain;charset=utf-8 Date: - Thu, 11 Sep 2025 17:38:06 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 404 message: Not Found version: 1 ================================================ FILE: tests/cassettes/test_bad_dois.yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=abs12032jsdafn&fields=authors%2CcitationCount%2CcitationStyles%2CexternalIds%2CinfluentialCitationCount%2CisOpenAccess%2Cjournal%2CopenAccessPdf%2CpublicationDate%2CpublicationTypes%2Ctitle%2Curl%2Cvenue%2Cyear response: body: string: '{"error":"Title match not found"} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "34" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:26 GMT Via: - 1.1 496003b8c4e3056a62dc655a8393be56.cloudfront.net (CloudFront) X-Amz-Cf-Id: - 5sYu5sIXnniR1TffJ7lDaygl_E-PKn5rc0wAHeMBrwFNh2FrkkOprQ== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Error from cloudfront x-amz-apigw-id: - PKejSEHsPHcEq9g= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "34" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:26 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - dc594903-f43d-46fc-9089-c26f43dfda62 status: code: 404 message: Not Found - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example%40papercrow.ai&query.title=abs12032jsdafn&rows=1 response: body: string: '{"status":"ok","message-type":"work-list","message-version":"1.0.0","message":{"facets":{},"total-results":0,"items":[],"items-per-page":1,"query":{"start-index":0,"search-terms":null}}}' headers: Connection: - keep-alive Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:26 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_bad_titles.yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example%40papercrow.ai&query.title=askldjrq3rjaw938h&rows=1 response: body: string: '{"status":"ok","message-type":"work-list","message-version":"1.0.0","message":{"facets":{},"total-results":0,"items":[],"items-per-page":1,"query":{"start-index":0,"search-terms":null}}}' headers: Connection: - keep-alive Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:22 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=askldjrq3rjaw938h&fields=authors%2CcitationCount%2CcitationStyles%2CexternalIds%2CinfluentialCitationCount%2CisOpenAccess%2Cjournal%2CopenAccessPdf%2CpublicationDate%2CpublicationTypes%2Ctitle%2Curl%2Cvenue%2Cyear response: body: string: '{"error":"Title match not found"} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "34" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:22 GMT Via: - 1.1 0cb53c06b4d3d66446893feb6331dc78.cloudfront.net (CloudFront) X-Amz-Cf-Id: - xscywnHjEcHmv_Z-EN6xbqWLmtzxYC94Pi5BUTKme3rto7S9MySVfA== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Error from cloudfront x-amz-apigw-id: - PKeiqFMvPHcEDLQ= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "34" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:22 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 418b8992-c40c-4dfb-825a-a667b0502c69 status: code: 404 message: Not Found - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=Effect+of+native+oxide+layers+on+copper+thin-film+tensile+properties%3A+A+study&fields=authors%2CcitationCount%2CcitationStyles%2CexternalIds%2CinfluentialCitationCount%2CisOpenAccess%2Cjournal%2CopenAccessPdf%2CpublicationDate%2CpublicationTypes%2Ctitle%2Curl%2Cvenue%2Cyear response: body: string: '{"data": [{"paperId": "4187800ac995ae172c88b83f8c2c4da990d02934", "externalIds": {"MAG": "2277923667", "DOI": "10.1063/1.4938384", "CorpusId": 124514389}, "url": "https://www.semanticscholar.org/paper/4187800ac995ae172c88b83f8c2c4da990d02934", "title": "Effect of native oxide layers on copper thin-film tensile properties: A reactive molecular dynamics study", "venue": "", "year": 2015, "citationCount": 8, "influentialCitationCount": 0, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": "CLOSED", "license": null}, "publicationTypes": null, "publicationDate": "2015-12-21", "journal": {"name": "Journal of Applied Physics", "pages": "235306", "volume": "118"}, "citationStyles": {"bibtex": "@Article{Skarlinski2015EffectON,\n author = {Michael Skarlinski and D. Quesnel},\n journal = {Journal of Applied Physics},\n pages = {235306},\n title = {Effect of native oxide layers on copper thin-film tensile properties: A reactive molecular dynamics study},\n volume = {118},\n year = {2015}\n}\n"}, "authors": [{"authorId": "9821934", "name": "Michael Skarlinski"}, {"authorId": "37723150", "name": "D. Quesnel"}], "matchScore": 210.5452}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1152" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:23 GMT Via: - 1.1 0cb53c06b4d3d66446893feb6331dc78.cloudfront.net (CloudFront) X-Amz-Cf-Id: - O4Wdc6jw0e9H8F1ef_EUg33mkx06-M5gii2Hs7IIrBywVoNh-eP3eQ== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - PKeiyGDoPHcEAkg= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1152" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:23 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - fc5b901b-2a02-47d4-b608-d06bf156d0e0 status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example%40papercrow.ai&query.title=Effect+of+native+oxide+layers+on+copper+thin-film+tensile+properties%3A+A+study&rows=1 response: body: string: !!binary | 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 headers: Connection: - keep-alive Content-Length: - "3966" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:24 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1063%2F1.4938384/transform/application/x-bibtex response: body: string: " @article{Skarlinski_2015, title={Effect of native oxide layers on copper thin-film tensile properties: A reactive molecular dynamics study}, volume={118}, ISSN={1089-7550}, url={http://dx.doi.org/10.1063/1.4938384}, DOI={10.1063/1.4938384}, number={23}, journal={Journal of Applied Physics}, publisher={AIP Publishing}, author={Skarlinski, Michael D. and Quesnel, David J.}, year={2015}, month=dec } " headers: Connection: - keep-alive Date: - Mon, 11 Aug 2025 23:07:24 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_bulk_doi_search.yaml ================================================ interactions: - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.1038/s42256-024-00832-8?fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"paperId": "354dcdebf3f8b5feeed5c62090e0bc1f0c28db06", "externalIds": {"DBLP": "journals/natmi/BranCSBWS24", "ArXiv": "2304.05376", "PubMedCentral": "11116106", "DOI": "10.1038/s42256-024-00832-8", "CorpusId": 258059792, "PubMed": "38799228"}, "url": "https://www.semanticscholar.org/paper/354dcdebf3f8b5feeed5c62090e0bc1f0c28db06", "title": "Augmenting large language models with chemistry tools", "venue": "Nat. Mac. Intell.", "year": 2023, "citationCount": 500, "influentialCitationCount": 20, "isOpenAccess": true, "openAccessPdf": {"url": "https://www.nature.com/articles/s42256-024-00832-8.pdf", "status": "HYBRID", "license": "CCBY"}, "publicationTypes": ["JournalArticle"], "publicationDate": "2023-04-11", "journal": {"name": "Nature Machine Intelligence", "pages": "525 - 535", "volume": "6"}, "citationStyles": {"bibtex": "@Article{Bran2023AugmentingLL,\n author = {Andr\u00e9s M Bran and Sam Cox and Oliver Schilter and Carlo Baldassari and Andrew D. White and P. Schwaller},\n booktitle = {Nat. Mac. Intell.},\n journal = {Nature Machine Intelligence},\n pages = {525 - 535},\n title = {Augmenting large language models with chemistry tools},\n volume = {6},\n year = {2023}\n}\n"}, "authors": [{"authorId": "2216007369", "name": "Andr\u00e9s M Bran"}, {"authorId": "2161337138", "name": "Sam Cox"}, {"authorId": "1820929773", "name": "Oliver Schilter"}, {"authorId": "2251414370", "name": "Carlo Baldassari"}, {"authorId": "2150199535", "name": "Andrew D. White"}, {"authorId": "1379965853", "name": "P. Schwaller"}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1533" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:19 GMT Via: - 1.1 2cb541f687a080afb4184dfb4c43940a.cloudfront.net (CloudFront) X-Amz-Cf-Id: - nvxUH_VBdLozmzLEH0-hE_vlYIo7wD-PTaH_WMoWpNI9mwxzOmAUyQ== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - RYL0iFZHvHcEpmQ= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1533" x-amzn-Remapped-Date: - Tue, 23 Sep 2025 23:00:19 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 6ef4e266-ef39-46ec-b4cc-b41c26578a56 status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.1007/s40278-023-41815-2?fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"paperId": "e0d2719e49ad216f98ed640864cdacd1c20f53e6", "externalIds": {"DOI": "10.1007/s40278-023-41815-2", "CorpusId": 259225376}, "url": "https://www.semanticscholar.org/paper/e0d2719e49ad216f98ed640864cdacd1c20f53e6", "title": "Convalescent-anti-sars-cov-2-plasma/immune-globulin", "venue": "Reactions weekly", "year": 2023, "citationCount": 0, "influentialCitationCount": 0, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": null, "license": null}, "publicationTypes": ["JournalArticle"], "publicationDate": "2023-06-01", "journal": {"name": "Reactions Weekly", "pages": "145 - 145", "volume": "1962"}, "citationStyles": {"bibtex": "@Article{None,\n booktitle = {Reactions weekly},\n journal = {Reactions Weekly},\n pages = {145 - 145},\n title = {Convalescent-anti-sars-cov-2-plasma/immune-globulin},\n volume = {1962},\n year = {2023}\n}\n"}, "authors": []} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "877" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:19 GMT Via: - 1.1 f36785ff79b1d07dbaa3721ed491b772.cloudfront.net (CloudFront) X-Amz-Cf-Id: - ejPTVBw1ecK5DUmxnxZ0yaTTsFkwmNKOnVx4aO2IGwdz6U5JdtVAgw== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - RYL0iGRgPHcEvvw= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "877" x-amzn-Remapped-Date: - Tue, 23 Sep 2025 23:00:19 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - abcefcfd-a62e-4120-9d87-36fa3a3e9e1c status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.1063/1.4938384?fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"paperId": "4187800ac995ae172c88b83f8c2c4da990d02934", "externalIds": {"MAG": "2277923667", "DOI": "10.1063/1.4938384", "CorpusId": 124514389}, "url": "https://www.semanticscholar.org/paper/4187800ac995ae172c88b83f8c2c4da990d02934", "title": "Effect of native oxide layers on copper thin-film tensile properties: A reactive molecular dynamics study", "venue": "", "year": 2015, "citationCount": 9, "influentialCitationCount": 0, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": "CLOSED", "license": null}, "publicationTypes": null, "publicationDate": "2015-12-21", "journal": {"name": "Journal of Applied Physics", "pages": "235306", "volume": "118"}, "citationStyles": {"bibtex": "@Article{Skarlinski2015EffectON,\n author = {Michael Skarlinski and D. Quesnel},\n journal = {Journal of Applied Physics},\n pages = {235306},\n title = {Effect of native oxide layers on copper thin-film tensile properties: A reactive molecular dynamics study},\n volume = {118},\n year = {2015}\n}\n"}, "authors": [{"authorId": "9821934", "name": "Michael Skarlinski"}, {"authorId": "37723150", "name": "D. Quesnel"}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1116" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:19 GMT Via: - 1.1 30dc54066252ce01682df0394718d89c.cloudfront.net (CloudFront) X-Amz-Cf-Id: - FVPvCfGv5VwDXTSnd_TBOEnX1vUkzNyJ40xziQqKuqNChOq4o0torQ== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - RYL0iGkwvHcEqJA= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1116" x-amzn-Remapped-Date: - Tue, 23 Sep 2025 23:00:19 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - fe120f7f-d308-4a76-a6be-ea8774ec87bb status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.1101/2024.04.01.587366?fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"error":"Paper with id DOI:10.1101/2024.04.01.587366 not found"} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "66" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:19 GMT Via: - 1.1 91d64e3146c8df0b14190aeddd0a2e66.cloudfront.net (CloudFront) X-Amz-Cf-Id: - N8CTWxDl2LbDS22vkZMS_1SL1WJoJTOVwu8okSzvzjwNRmjaHSrFmQ== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Error from cloudfront x-amz-apigw-id: - RYL0jFSSPHcErzQ= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "66" x-amzn-Remapped-Date: - Tue, 23 Sep 2025 23:00:19 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 6c62ec7d-c7c2-4365-a51c-8b9d78a98bb5 status: code: 404 message: Not Found - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.48550/arxiv.2312.07559?fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"paperId": "7e55d8701785818776323b4147cb13354c820469", "externalIds": {"ArXiv": "2312.07559", "DBLP": "journals/corr/abs-2312-07559", "DOI": "10.48550/arXiv.2312.07559", "CorpusId": 266191420}, "url": "https://www.semanticscholar.org/paper/7e55d8701785818776323b4147cb13354c820469", "title": "PaperQA: Retrieval-Augmented Generative Agent for Scientific Research", "venue": "arXiv.org", "year": 2023, "citationCount": 111, "influentialCitationCount": 2, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": null, "license": null}, "publicationTypes": ["JournalArticle"], "publicationDate": "2023-12-08", "journal": {"name": "ArXiv", "volume": "abs/2312.07559"}, "citationStyles": {"bibtex": "@Article{L''ala2023PaperQARG,\n author = {Jakub L''ala and Odhran O''Donoghue and Aleksandar Shtedritski and Sam Cox and Samuel G. Rodriques and Andrew D. White},\n booktitle = {arXiv.org},\n journal = {ArXiv},\n title = {PaperQA: Retrieval-Augmented Generative Agent for Scientific Research},\n volume = {abs/2312.07559},\n year = {2023}\n}\n"}, "authors": [{"authorId": "2219926382", "name": "Jakub L''ala"}, {"authorId": "2258961056", "name": "Odhran O''Donoghue"}, {"authorId": "2258961451", "name": "Aleksandar Shtedritski"}, {"authorId": "2161337138", "name": "Sam Cox"}, {"authorId": "2258964497", "name": "Samuel G. Rodriques"}, {"authorId": "2273941271", "name": "Andrew D. White"}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1390" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:19 GMT Via: - 1.1 30dc54066252ce01682df0394718d89c.cloudfront.net (CloudFront) X-Amz-Cf-Id: - OdJylCpLFdbOg4Qbw_umEneFK78DyBH8DGijgHRPqUw6CaSbi1PE7w== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - RYL0jFccvHcEtYg= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1390" x-amzn-Remapped-Date: - Tue, 23 Sep 2025 23:00:19 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - c70e385f-e29d-471d-b1ba-0657e7f777f2 status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.1023/a:1007154515475?fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"paperId": "19807da5b11f3e641535cb72e465001b49b48ee5", "externalIds": {"MAG": "1554322594", "DOI": "10.1023/A:1007154515475", "CorpusId": 22646521, "PubMed": "11330823"}, "url": "https://www.semanticscholar.org/paper/19807da5b11f3e641535cb72e465001b49b48ee5", "title": "An essential role of active site arginine residue in iodide binding and histidine residue in electron transfer for iodide oxidation by horseradish peroxidase", "venue": "Molecular and Cellular Biochemistry", "year": 2001, "citationCount": 7, "influentialCitationCount": 0, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": "CLOSED", "license": null}, "publicationTypes": ["JournalArticle", "Study"], "publicationDate": "2001-02-01", "journal": {"name": "Molecular and Cellular Biochemistry", "pages": "1-11", "volume": "218"}, "citationStyles": {"bibtex": "@Article{Adak2001AnER,\n author = {S. Adak and D. Bandyopadhyay and U. Bandyopadhyay and R. Banerjee},\n booktitle = {Molecular and Cellular Biochemistry},\n journal = {Molecular and Cellular Biochemistry},\n pages = {1-11},\n title = {An essential role of active site arginine residue in iodide binding and histidine residue in electron transfer for iodide oxidation by horseradish peroxidase},\n volume = {218},\n year = {2001}\n}\n"}, "authors": [{"authorId": "1940081", "name": "S. Adak"}, {"authorId": "1701389", "name": "D. Bandyopadhyay"}, {"authorId": "5343877", "name": "U. Bandyopadhyay"}, {"authorId": "32656528", "name": "R. Banerjee"}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1490" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:19 GMT Via: - 1.1 29474fd3a24c6552dfdc04ee03c03aa2.cloudfront.net (CloudFront) X-Amz-Cf-Id: - 2vh6nYBsl-37kUclFxKWKpkpXxWISajVYGP0daODx7dToYiIrvL3aA== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - RYL0jFpBPHcElXA= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1490" x-amzn-Remapped-Date: - Tue, 23 Sep 2025 23:00:19 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 2908aa8c-2ac4-45cf-b94f-c8951c016f08 status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1101%2F2024.04.01.587366?mailto=example@papercrow.ai response: body: string: !!binary | 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 fwAluQlTKy4AAA== headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "3259" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:19 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1063%2F1.4938384?mailto=example@papercrow.ai response: body: string: !!binary | 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 headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "3933" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:19 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1038%2Fs42256-024-00832-8?mailto=example@papercrow.ai response: body: string: !!binary | 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 headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "10528" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:19 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1023%2Fa:1007154515475?mailto=example@papercrow.ai response: body: string: !!binary | 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 W3j8+X9fE4SwoEUAAA== headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "5257" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:19 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1007%2Fs40278-023-41815-2?mailto=example@papercrow.ai response: body: string: !!binary | H4sIAAAAAAAA/8VW227jNhD9FULPpm6Rb3prnS4QINkFkrRFGwUFLY1txhQpkJQd1/C/d0j5tmnW CBZoN3BgmTMazhzOOcNtYCyzrQnyQC2DXlCDMWwO1G4awLW10uerK9CGK4mGJIzD+GQJ8m3AZQWv ULnHilmgDdMW4z49pXF61Rv00uz5udeZLK9ddGeg8YCm2WOc5ckQP39iTGfFrOomyJPBaNgfodsw zoa7XqBhBhpkCbRUrbTo0Auadiq4WYDGiA+N5nIOmjyU3LkRJivyc2u4xDzJHVSckdvbCW7CjWld Dgk+C16CNPjraevg0PY7a4hz/3mvhkE2it0f1lAqaUHaMzBtVeMrFQi2oVzSim1wz7gX/Hp/i9aF tY3Ji6iI1ut1aPYVSjw1DWGp6iKaN0WkwQDTJcJgisjCq6VYOoayjNZc4ivBrvdjqlsp/X9U93za u1I149KXuX96clatjKmZXlKMZjUvrc9vxoQBTNwslLbUhcA3QCMCVriWCO6BeVdDfgdYik2Asa6/ 3LjeicMkjodFZLI4HY6oAytLRkmfpg6kjkIvqsVyBEWseYkRXSKAEF8gytU3j+HqMRnlWZqn4/eO IesPs3F3DI0nZZBkfYr/6GswjdItTRwMyCPPAXokVEWnmwOpYhd6X/1EyRUTYEoHLJOWU8O0Qc8V TWkjGCJaRLyuWwl0LtS0FYg3pt9gZP56Agm3WynR+nKS8SD12lFPPWvTsTMfeFxRJTEIXGzTcy3w vF3CBiN59P+a3DtWV4pTZgxo64tDa3kqvZXYAm3pugwPIrgGMWeVop9c66GO/U3uegQsYSIkj+64 aiyfqBmZfPnt5pomY7LmdkHKM3BIBwbhkjTMovpY0zkt2lppJogHSVUIi9emDaHkcaEBXBQDZWv5 Cp+ZAeNVS8OKw9rtaRdABLegO1KQXyQWXkPFKnS9wR9lyZVhhvxB7jjWOOVKqDkq3QRh5CUjWVzI nPTjIe0ngx75rEIydl8rgoimIflpxbhgUwFkplWdE2RmTgp5oqYBXpeh0vMiCr5q/mRQRC+hs0KI sXAq4CceH9n4ASopzefcEeTghWuCyXnbdTBIL9By6U/5rWY4w1E0OrnYi0ARNdWsiC5QNESH4CQa e7qypsFxwFyWPkTwbUnjbrnC5jp7x6m5k6czzf1AznttuJhuEc1aIVzwcGFr8e/MnamI3tj+u5x/ OM6G19i1mlvUrQWUy8MUqKBRhn+/wI7z9CpPRu8K7CgZjzqBNaXS4O8fOE322rpF1eM4YTbu8QMQ XpofO7dHOz1S5xMgLF4YsOqKVOCmiAEnN1P8doJJ1OtmDpIYpxMeJTJTQqg1bok6MqPIcRCkNZCT K680KDKNctg8H+bfGQn9Denyde5chc3Zleww8/aXrO1Xt62P6jyGx/gMW95dB1AcKa8cEh4hl/Fb hFHwO426PJc13kS6Ftpi/JuHh88uapIMxzSN+0nQlS73jYqigxLfJX90OQ53EFBarVBlfevhgb3g Qoffsc7LEO52/wBSOnixhAsAAA== headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "1159" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:19 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.48550%2Farxiv.2312.07559?mailto=example@papercrow.ai response: body: string: Resource not found. headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Type: - text/plain Date: - Tue, 23 Sep 2025 23:00:19 GMT Server: - Jetty(9.4.40.v20210413) Transfer-Encoding: - chunked permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 404 message: Not Found - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1007%2Fs40278-023-41815-2/transform/application/x-bibtex response: body: string: " @article{2023, volume={1962}, ISSN={1179-2051}, url={http://dx.doi.org/10.1007/s40278-023-41815-2}, DOI={10.1007/s40278-023-41815-2}, number={1}, journal={Reactions Weekly}, publisher={Springer Science and Business Media LLC}, year={2023}, month=jun, pages={145\u2013145} }\n" headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Date: - Tue, 23 Sep 2025 23:00:19 GMT Server: - Jetty(9.4.40.v20210413) Transfer-Encoding: - chunked permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1038%2Fs42256-024-00832-8/transform/application/x-bibtex response: body: string: " @article{M_Bran_2024, title={Augmenting large language models with chemistry tools}, volume={6}, ISSN={2522-5839}, url={http://dx.doi.org/10.1038/s42256-024-00832-8}, DOI={10.1038/s42256-024-00832-8}, number={5}, journal={Nature Machine Intelligence}, publisher={Springer Science and Business Media LLC}, author={M. Bran, Andres and Cox, Sam and Schilter, Oliver and Baldassari, Carlo and White, Andrew D. and Schwaller, Philippe}, year={2024}, month=may, pages={525\u2013535} }\n" headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Date: - Tue, 23 Sep 2025 23:00:19 GMT Server: - Jetty(9.4.40.v20210413) Transfer-Encoding: - chunked permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1063%2F1.4938384/transform/application/x-bibtex response: body: string: " @article{Skarlinski_2015, title={Effect of native oxide layers on copper thin-film tensile properties: A reactive molecular dynamics study}, volume={118}, ISSN={1089-7550}, url={http://dx.doi.org/10.1063/1.4938384}, DOI={10.1063/1.4938384}, number={23}, journal={Journal of Applied Physics}, publisher={AIP Publishing}, author={Skarlinski, Michael D. and Quesnel, David J.}, year={2015}, month=dec } " headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Date: - Tue, 23 Sep 2025 23:00:19 GMT Server: - Jetty(9.4.40.v20210413) Transfer-Encoding: - chunked permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1101%2F2024.04.01.587366/transform/application/x-bibtex response: body: string: " @article{Herger_2024, title={High-throughput screening of human genetic variants by pooled prime editing}, url={http://dx.doi.org/10.1101/2024.04.01.587366}, DOI={10.1101/2024.04.01.587366}, publisher={Cold Spring Harbor Laboratory}, author={Herger, Michael and Kajba, Christina M. and Buckley, Megan and Cunha, Ana and Strom, Molly and Findlay, Gregory M.}, year={2024}, month=apr } " headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Date: - Tue, 23 Sep 2025 23:00:19 GMT Server: - Jetty(9.4.40.v20210413) Transfer-Encoding: - chunked permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1023%2Fa:1007154515475/transform/application/x-bibtex response: body: string: " @article{Adak_2001, title={An essential role of active site arginine residue in iodide binding and histidine residue in electron transfer for iodide oxidation by horseradish peroxidase}, volume={218}, ISSN={1573-4919}, url={http://dx.doi.org/10.1023/a:1007154515475}, DOI={10.1023/a:1007154515475}, number={1\u20132}, journal={Molecular and Cellular Biochemistry}, publisher={Springer Science and Business Media LLC}, author={Adak, Subrata and Bandyopadhyay, Debashis and Bandyopadhyay, Uday and Banerjee, Ranajit K.}, year={2001}, month=feb, pages={1\u201311} }\n" headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Date: - Tue, 23 Sep 2025 23:00:19 GMT Server: - Jetty(9.4.40.v20210413) Transfer-Encoding: - chunked permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_bulk_title_search.yaml ================================================ interactions: - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example@papercrow.ai&query.title=PaperQA:+Retrieval-Augmented+Generative+Agent+for+Scientific+Research&rows=1 response: body: string: !!binary | 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 headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "4535" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:21 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=Augmenting+large+language+models+with+chemistry+tools&fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"data": [{"paperId": "354dcdebf3f8b5feeed5c62090e0bc1f0c28db06", "externalIds": {"DBLP": "journals/natmi/BranCSBWS24", "ArXiv": "2304.05376", "PubMedCentral": "11116106", "DOI": "10.1038/s42256-024-00832-8", "CorpusId": 258059792, "PubMed": "38799228"}, "url": "https://www.semanticscholar.org/paper/354dcdebf3f8b5feeed5c62090e0bc1f0c28db06", "title": "Augmenting large language models with chemistry tools", "venue": "Nat. Mac. Intell.", "year": 2023, "citationCount": 500, "influentialCitationCount": 20, "isOpenAccess": true, "openAccessPdf": {"url": "https://www.nature.com/articles/s42256-024-00832-8.pdf", "status": "HYBRID", "license": "CCBY"}, "publicationTypes": ["JournalArticle"], "publicationDate": "2023-04-11", "journal": {"name": "Nature Machine Intelligence", "pages": "525 - 535", "volume": "6"}, "citationStyles": {"bibtex": "@Article{Bran2023AugmentingLL,\n author = {Andr\u00e9s M Bran and Sam Cox and Oliver Schilter and Carlo Baldassari and Andrew D. White and P. Schwaller},\n booktitle = {Nat. Mac. Intell.},\n journal = {Nature Machine Intelligence},\n pages = {525 - 535},\n title = {Augmenting large language models with chemistry tools},\n volume = {6},\n year = {2023}\n}\n"}, "authors": [{"authorId": "2216007369", "name": "Andr\u00e9s M Bran"}, {"authorId": "2161337138", "name": "Sam Cox"}, {"authorId": "1820929773", "name": "Oliver Schilter"}, {"authorId": "2251414370", "name": "Carlo Baldassari"}, {"authorId": "2150199535", "name": "Andrew D. White"}, {"authorId": "1379965853", "name": "P. Schwaller"}], "matchScore": 174.51831}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1570" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:21 GMT Via: - 1.1 1401c4844b3ea759244fef5091fc307a.cloudfront.net (CloudFront) X-Amz-Cf-Id: - JWjKQBS_yooC_GGck3WFK6K0Z3zTK1u6tPyCIfugtolcOkmE2tnXBw== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - RYL00E6WvHcEDew= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1570" x-amzn-Remapped-Date: - Tue, 23 Sep 2025 23:00:21 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 672a73ae-c97b-4009-aec1-0e5f73928d05 status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=Effect+of+native+oxide+layers+on+copper+thin-film+tensile+properties:+A+reactive+molecular+dynamics+study&fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"data": [{"paperId": "4187800ac995ae172c88b83f8c2c4da990d02934", "externalIds": {"MAG": "2277923667", "DOI": "10.1063/1.4938384", "CorpusId": 124514389}, "url": "https://www.semanticscholar.org/paper/4187800ac995ae172c88b83f8c2c4da990d02934", "title": "Effect of native oxide layers on copper thin-film tensile properties: A reactive molecular dynamics study", "venue": "", "year": 2015, "citationCount": 9, "influentialCitationCount": 0, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": "CLOSED", "license": null}, "publicationTypes": null, "publicationDate": "2015-12-21", "journal": {"name": "Journal of Applied Physics", "pages": "235306", "volume": "118"}, "citationStyles": {"bibtex": "@Article{Skarlinski2015EffectON,\n author = {Michael Skarlinski and D. Quesnel},\n journal = {Journal of Applied Physics},\n pages = {235306},\n title = {Effect of native oxide layers on copper thin-film tensile properties: A reactive molecular dynamics study},\n volume = {118},\n year = {2015}\n}\n"}, "authors": [{"authorId": "9821934", "name": "Michael Skarlinski"}, {"authorId": "37723150", "name": "D. Quesnel"}], "matchScore": 284.6143}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1152" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:21 GMT Via: - 1.1 6b175795d4c4b1909e08459648cd6214.cloudfront.net (CloudFront) X-Amz-Cf-Id: - A0dyLB5IR-4g2K1cP_XD_UV0yNSk4tYubKNPQE55fiMbHg7GJqt6ZA== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - RYL00HQ7vHcEMVA= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1152" x-amzn-Remapped-Date: - Tue, 23 Sep 2025 23:00:21 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 922ce141-f278-4ad0-be11-01716f1479ff status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example@papercrow.ai&query.title=Convalescent-anti-sars-cov-2-plasma/immune-globulin&rows=1 response: body: string: !!binary | H4sIAAAAAAAA/8VWbW/bNhD+K4Q+m3qL/KZvW7oCAdIWaNINWxQMtHS22VCkRlJ2vCD/fXeU47hd agQFtgYOLOuOx3se3j28h8h54XsXlZG5i0ZRC86JFXC/6wDfbY2940o6f2TagHXSaLRmcRqnz5ao fIiWogaP0R4eR5E3XihuwfWKXmWTdDbL5qNIemjx981DJHUD99DQwkZ44J2w5Hlzk6f52Wgyyovb 29Fg8rKlhMjA0wnPi+u0KLMpfv7ADMiKQNqOtplNxzN0m6bFFLOwsAQLugZem157dBhFXb9AUGuw GPGqs1KvwLKrWpIbE7phP/dOakTF3kEjBbu8PMdNpHM95ZDhs5I1aAcBBW5s/XdiSMvweQnDpJil 9IcYaqM9aH9EvW9aXNKAEjsuNW/EDvdMR9Gnj5doXXvfubJKqmS73cZuj1DjQVuIa9NWyaqrEjwZ ELZGGlyVeLj3HKFjKC94KzUuiR5HPwbdxtj/A93t896NaYXUAeb+6Yas1jjXCuwBjOatrH3IbymU A0zcrY31nELgCrDIgFdUEtFHEMHVsd8A7tQuwlhvPlxQ7aRxlqbTKnFFmk9nnMgqslk25jmRNHTd Z9MjHMWRa1ljREoEkOITjXL2zWM4u85mZZGX+fylYyjG02I+HEMXWjjKijHHf/R1mEZNr86JBuyj 0AP80FANX+yemiql0Hv050ZvhAJXE7FCe8mdsA49NzznnRLIaJXItu018JUyi14h35h+h5Hl/TNJ uN3GqD7AyeaTPChNuwhdm8/J/NTHDTcag8DJMj3WgtC3d7DDSIH9P88/Ulc3RnLhHFgfwKG1fobe ayyBvqYqw4OI3oBaicbwt1R6qGN/s3cjBp4JFbNrOq4W4TOzZOcffr14w7M520q/ZvUROWwgg0nN OuFRfbwbnNZ9a6xQLJBkGqQlaNOOcXa9tgAUxUHde7nBZ+HABdWysJGwpT39GphCnbVDU7BfNAJv oRENul7gj7qWxgnHfmfvJGJcSKPMCpXuHGmUtWBFWumSjdMpH2eTEXtvYjanrw1DRvOY/bQRUomF Ara0pi0ZdmbJKv3cmg5kW8fGrqok+qL4s0mVfI7JCjHGwjsEP+n80I2vaCUl9KofqhV0EGN9F070 a30gw0EgBmnYN3yVdM2ySk60Y4wO0bNA7FtTdB1Kv6CMQojo2/Il6XWDhXS0hpSbpOhIX1+R814H TqZbJcteKQoer32r/p05markK9t/l/MP59nJFivUSo8atYb67knxG+iMk98vpvMyPyuz2YtiiuPN bBBTVxuLK8ezeDydzIsJac+Tnj6g0km8VXb0+AoqT90Zj7RXvzi0y1tAeoIYIPqGNUA3hwOSmAV+ k0gyc79bgWaOtCGwxZZGKbPFLVE7lhz7GhTrHZTsLKgLCktniKPb/RB0emI7Flp3NHU9XWv7Oerh i4HqtVKO4TG+wEqnGx/1j8uGgAdCKMGvCUVNH2To9NV7cXX1nuJk2XTO83Sc7cHqfUWiuqBuD+ke XA43NiiovTUonaHGDmBO80SuYRjmHUrecP8iT3/1MNRGGL14GJLDDTsMNByh0/yssd8fHx//Acis +O3CCwAA headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "1203" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:21 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example@papercrow.ai&query.title=Augmenting+large+language+models+with+chemistry+tools&rows=1 response: body: string: !!binary | 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 headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "10581" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:21 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example@papercrow.ai&query.title=High-throughput+screening+of+human+genetic+variants+by+pooled+prime+editing&rows=1 response: body: string: !!binary | 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 headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "3302" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:21 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example@papercrow.ai&query.title=An+essential+role+of+active+site+arginine+residue+in+iodide+binding+and+histidine+residue+in+electron+transfer+for+iodide+oxidation+by+horseradish+peroxidase&rows=1 response: body: string: !!binary | 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 RQAA headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "5304" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:21 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example@papercrow.ai&query.title=Effect+of+native+oxide+layers+on+copper+thin-film+tensile+properties:+A+reactive+molecular+dynamics+study&rows=1 response: body: string: !!binary | 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 headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "3966" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:21 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=High-throughput+screening+of+human+genetic+variants+by+pooled+prime+editing&fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"data": [{"paperId": "7e5d4466c8b85f93775fe183e1a318a3e65ac8e4", "externalIds": {"PubMedCentral": "12008803", "DOI": "10.1016/j.xgen.2025.100814", "CorpusId": 268890006, "PubMed": "40120586"}, "url": "https://www.semanticscholar.org/paper/7e5d4466c8b85f93775fe183e1a318a3e65ac8e4", "title": "High-throughput screening of human genetic variants by pooled prime editing", "venue": "bioRxiv", "year": 2024, "citationCount": 5, "influentialCitationCount": 0, "isOpenAccess": true, "openAccessPdf": {"url": "https://doi.org/10.1016/j.xgen.2025.100814", "status": "GOLD", "license": "CCBY"}, "publicationTypes": ["JournalArticle"], "publicationDate": "2024-04-01", "journal": {"name": "Cell Genomics", "volume": "5"}, "citationStyles": {"bibtex": "@Article{Herger2024HighthroughputSO,\n author = {Michael Herger and Christina M. Kajba and Megan Buckley and Ana Cunha and Molly Strom and Gregory M. Findlay},\n booktitle = {bioRxiv},\n journal = {Cell Genomics},\n title = {High-throughput screening of human genetic variants by pooled prime editing},\n volume = {5},\n year = {2024}\n}\n"}, "authors": [{"authorId": "2294884120", "name": "Michael Herger"}, {"authorId": "2163800172", "name": "Christina M. Kajba"}, {"authorId": "2120283350", "name": "Megan Buckley"}, {"authorId": "2294861709", "name": "Ana Cunha"}, {"authorId": "2294881320", "name": "Molly Strom"}, {"authorId": "145686550", "name": "Gregory M. Findlay"}], "matchScore": 252.28352}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1448" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:21 GMT Via: - 1.1 28da7b50b2dbdddfb257605df1527026.cloudfront.net (CloudFront) X-Amz-Cf-Id: - VYrBbYNwplRl4Ft6hhdzQ6AfDrELbm8tCMIw7hlIGZOHgNw8MXtn0w== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - RYL00HZQPHcEe-g= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1448" x-amzn-Remapped-Date: - Tue, 23 Sep 2025 23:00:21 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 66ea595f-9f57-4aa8-b90a-02f532b088c7 status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=PaperQA:+Retrieval-Augmented+Generative+Agent+for+Scientific+Research&fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"data": [{"paperId": "7e55d8701785818776323b4147cb13354c820469", "externalIds": {"ArXiv": "2312.07559", "DBLP": "journals/corr/abs-2312-07559", "DOI": "10.48550/arXiv.2312.07559", "CorpusId": 266191420}, "url": "https://www.semanticscholar.org/paper/7e55d8701785818776323b4147cb13354c820469", "title": "PaperQA: Retrieval-Augmented Generative Agent for Scientific Research", "venue": "arXiv.org", "year": 2023, "citationCount": 111, "influentialCitationCount": 2, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": null, "license": null}, "publicationTypes": ["JournalArticle"], "publicationDate": "2023-12-08", "journal": {"name": "ArXiv", "volume": "abs/2312.07559"}, "citationStyles": {"bibtex": "@Article{L''ala2023PaperQARG,\n author = {Jakub L''ala and Odhran O''Donoghue and Aleksandar Shtedritski and Sam Cox and Samuel G. Rodriques and Andrew D. White},\n booktitle = {arXiv.org},\n journal = {ArXiv},\n title = {PaperQA: Retrieval-Augmented Generative Agent for Scientific Research},\n volume = {abs/2312.07559},\n year = {2023}\n}\n"}, "authors": [{"authorId": "2219926382", "name": "Jakub L''ala"}, {"authorId": "2258961056", "name": "Odhran O''Donoghue"}, {"authorId": "2258961451", "name": "Aleksandar Shtedritski"}, {"authorId": "2161337138", "name": "Sam Cox"}, {"authorId": "2258964497", "name": "Samuel G. Rodriques"}, {"authorId": "2273941271", "name": "Andrew D. White"}], "matchScore": 238.6861}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1426" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:21 GMT Via: - 1.1 97354ec70bdda7ac06cc29aed9bfdb3c.cloudfront.net (CloudFront) X-Amz-Cf-Id: - eOjVVVO0BrVQ2l5VQlrPAb-TRtz5guIKqrF7dN2BEoIoshbV50Ocgg== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - RYL00FrBvHcEahw= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1426" x-amzn-Remapped-Date: - Tue, 23 Sep 2025 23:00:21 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - d921f19d-e941-48fb-a6ad-b7aa5d89154d status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1007%2Fs40278-023-41815-2/transform/application/x-bibtex response: body: string: " @article{2023, volume={1962}, ISSN={1179-2051}, url={http://dx.doi.org/10.1007/s40278-023-41815-2}, DOI={10.1007/s40278-023-41815-2}, number={1}, journal={Reactions Weekly}, publisher={Springer Science and Business Media LLC}, year={2023}, month=jun, pages={145\u2013145} }\n" headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Date: - Tue, 23 Sep 2025 23:00:21 GMT Server: - Jetty(9.4.40.v20210413) Transfer-Encoding: - chunked permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=Convalescent-anti-sars-cov-2-plasma/immune-globulin&fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"data": [{"paperId": "762ceacc20db232d3f6bcda6e867eb8148848ced", "externalIds": {"DOI": "10.1007/s40278-023-33114-1", "CorpusId": 256742540}, "url": "https://www.semanticscholar.org/paper/762ceacc20db232d3f6bcda6e867eb8148848ced", "title": "Convalescent-anti-sars-cov-2-plasma/immune-globulin", "venue": "Reactions weekly", "year": 2023, "citationCount": 0, "influentialCitationCount": 0, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": null, "license": null}, "publicationTypes": null, "publicationDate": "2023-02-01", "journal": {"name": "Reactions Weekly", "pages": "229", "volume": "1943"}, "citationStyles": {"bibtex": "@Article{None,\n booktitle = {Reactions weekly},\n journal = {Reactions Weekly},\n pages = {229},\n title = {Convalescent-anti-sars-cov-2-plasma/immune-globulin},\n volume = {1943},\n year = {2023}\n}\n"}, "authors": [], "matchScore": 240.77946}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "888" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:21 GMT Via: - 1.1 0cb53c06b4d3d66446893feb6331dc78.cloudfront.net (CloudFront) X-Amz-Cf-Id: - UW5_Uuooe2iFRXQ58FKGcGJK-YtNAMQyIDTitW4_iM1cN2BBU8Xx1g== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - RYL00EUgvHcELdA= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "888" x-amzn-Remapped-Date: - Tue, 23 Sep 2025 23:00:21 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - d9abf7a3-63d3-472d-9eb4-fdc81c6df85b status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=An+essential+role+of+active+site+arginine+residue+in+iodide+binding+and+histidine+residue+in+electron+transfer+for+iodide+oxidation+by+horseradish+peroxidase&fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"data": [{"paperId": "19807da5b11f3e641535cb72e465001b49b48ee5", "externalIds": {"MAG": "1554322594", "DOI": "10.1023/A:1007154515475", "CorpusId": 22646521, "PubMed": "11330823"}, "url": "https://www.semanticscholar.org/paper/19807da5b11f3e641535cb72e465001b49b48ee5", "title": "An essential role of active site arginine residue in iodide binding and histidine residue in electron transfer for iodide oxidation by horseradish peroxidase", "venue": "Molecular and Cellular Biochemistry", "year": 2001, "citationCount": 7, "influentialCitationCount": 0, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": "CLOSED", "license": null}, "publicationTypes": ["JournalArticle", "Study"], "publicationDate": "2001-02-01", "journal": {"name": "Molecular and Cellular Biochemistry", "pages": "1-11", "volume": "218"}, "citationStyles": {"bibtex": "@Article{Adak2001AnER,\n author = {S. Adak and D. Bandyopadhyay and U. Bandyopadhyay and R. Banerjee},\n booktitle = {Molecular and Cellular Biochemistry},\n journal = {Molecular and Cellular Biochemistry},\n pages = {1-11},\n title = {An essential role of active site arginine residue in iodide binding and histidine residue in electron transfer for iodide oxidation by horseradish peroxidase},\n volume = {218},\n year = {2001}\n}\n"}, "authors": [{"authorId": "1940081", "name": "S. Adak"}, {"authorId": "1701389", "name": "D. Bandyopadhyay"}, {"authorId": "5343877", "name": "U. Bandyopadhyay"}, {"authorId": "32656528", "name": "R. Banerjee"}], "matchScore": 390.13876}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1527" Content-Type: - application/json Date: - Tue, 23 Sep 2025 23:00:21 GMT Via: - 1.1 2347835d64b95b688a16fb2618f2577a.cloudfront.net (CloudFront) X-Amz-Cf-Id: - TqsV1wPAAkJ9hjXsOPPi72HVG6UhEmmHeBbwH3A0EDoxupBxQT9ouw== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - RYL00HYFPHcEOAA= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1527" x-amzn-Remapped-Date: - Tue, 23 Sep 2025 23:00:21 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 1fb27c8a-ec10-4f9b-812d-9f48bbcb49e5 status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1101%2F2024.04.01.587366/transform/application/x-bibtex response: body: string: " @article{Herger_2024, title={High-throughput screening of human genetic variants by pooled prime editing}, url={http://dx.doi.org/10.1101/2024.04.01.587366}, DOI={10.1101/2024.04.01.587366}, publisher={Cold Spring Harbor Laboratory}, author={Herger, Michael and Kajba, Christina M. and Buckley, Megan and Cunha, Ana and Strom, Molly and Findlay, Gregory M.}, year={2024}, month=apr } " headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Date: - Tue, 23 Sep 2025 23:00:21 GMT Server: - Jetty(9.4.40.v20210413) Transfer-Encoding: - chunked permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1063%2F1.4938384/transform/application/x-bibtex response: body: string: " @article{Skarlinski_2015, title={Effect of native oxide layers on copper thin-film tensile properties: A reactive molecular dynamics study}, volume={118}, ISSN={1089-7550}, url={http://dx.doi.org/10.1063/1.4938384}, DOI={10.1063/1.4938384}, number={23}, journal={Journal of Applied Physics}, publisher={AIP Publishing}, author={Skarlinski, Michael D. and Quesnel, David J.}, year={2015}, month=dec } " headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Date: - Tue, 23 Sep 2025 23:00:21 GMT Server: - Jetty(9.4.40.v20210413) Transfer-Encoding: - chunked permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1023%2Fa:1007154515475/transform/application/x-bibtex response: body: string: " @article{Adak_2001, title={An essential role of active site arginine residue in iodide binding and histidine residue in electron transfer for iodide oxidation by horseradish peroxidase}, volume={218}, ISSN={1573-4919}, url={http://dx.doi.org/10.1023/a:1007154515475}, DOI={10.1023/a:1007154515475}, number={1\u20132}, journal={Molecular and Cellular Biochemistry}, publisher={Springer Science and Business Media LLC}, author={Adak, Subrata and Bandyopadhyay, Debashis and Bandyopadhyay, Uday and Banerjee, Ranajit K.}, year={2001}, month=feb, pages={1\u201311} }\n" headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Date: - Tue, 23 Sep 2025 23:00:21 GMT Server: - Jetty(9.4.40.v20210413) Transfer-Encoding: - chunked permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1038%2Fs42256-024-00832-8/transform/application/x-bibtex response: body: string: " @article{M_Bran_2024, title={Augmenting large language models with chemistry tools}, volume={6}, ISSN={2522-5839}, url={http://dx.doi.org/10.1038/s42256-024-00832-8}, DOI={10.1038/s42256-024-00832-8}, number={5}, journal={Nature Machine Intelligence}, publisher={Springer Science and Business Media LLC}, author={M. Bran, Andres and Cox, Sam and Schilter, Oliver and Baldassari, Carlo and White, Andrew D. and Schwaller, Philippe}, year={2024}, month=may, pages={525\u2013535} }\n" headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Date: - Tue, 23 Sep 2025 23:00:22 GMT Server: - Jetty(9.4.40.v20210413) Transfer-Encoding: - chunked permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_crossref_journalquality_fields_filtering.yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example%40papercrow.ai&query.title=Augmenting+large+language+models+with+chemistry+tools&rows=1&select=DOI%2Cauthor%2Ccontainer-title%2Ctitle response: body: string: !!binary | H4sIAAAAAAAA/7VTTXObMBD9K4zOCAuwieNbYl98SN1pDj3EOezAApoIiUpLHI/H/70L0yZOp4fk EA6M2I+3b3l6JxEIaAhiJdyTiEWHIUCDko49cuzg/JM0OtBF6hl90M5yNk1Uot4yYnUSNZRIjHY6 x4IcgZEew2DGULZQ12m6iIUm7Pj74SQ2u+0Io5JU5cv9LMyzbFFIlc2lUss8k0sGh4Fa56fyRj/j OPfGVozKuRo6bY4cuUuiWw+WQwF/DWjLkXyt/UQc6lobDTSRfng8x29I99Bdwqzdy3sIqCo99oH5 P87ux3q74bqWqA+r/Ww/c77UVeJ8s58pfngRlUuVp3xaLtI/+6AlXQJhJadysarBBIxfae0MH/wl s/uy1Yam2Cfo/cVbgzfuEu4WTAUsmtdfsG8mi2J+JfPrYvHBfSdBD9EmueT4s+WL8iVy5GpeyGJx VXyQ3nf+97rv8R9BDmDMpxR5jEXpLIG26CVpMtzxIL6x/zxGd8ASW4y2ltAY3UyA3PFadzM03cjU NpEB3yC/bTOw76LOVWhCdNDURmWLHfvVHyNyzgQxTZ0cJ3ue2k8+TWPBjP1xdCz735PUtsIXsVLj MuDLVvJdG01qB2PO5/NvweCJYycEAAA= headers: Connection: - keep-alive Content-Length: - "479" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:23 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example%40papercrow.ai&query.title=Beta-Blocker+Interruption+or+Continuation+after+Myocardial+Infarction&rows=1&query.author=Johanne+Silvain&select=DOI%2Cauthor%2Ccontainer-title%2Ctitle response: body: string: !!binary | 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 headers: Connection: - keep-alive Content-Length: - "1691" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:25 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_crossref_retraction_status.yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example%40papercrow.ai&query.title=The+Dilemma+and+Countermeasures+of+Music+Education+under+the+Background+of+Big+Data&rows=1&select=DOI%2Cauthor%2Ccontainer-title%2Ctitle response: body: string: '{"status":"ok","message-type":"work-list","message-version":"1.0.0","message":{"facets":{},"total-results":4664899,"items":[{"DOI":"10.1155\/2022\/8341966","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-3902-2613","authenticated-orcid":true,"given":"Jiaye","family":"Han","sequence":"first","affiliation":[{"name":"Pingdingshan Polytechnic College, PingDingShan, Henan 467001, China"},{"name":"National University of Life and Environmental Sciences of Ukraine, Kyiv 03041, Ukraine"}]}],"container-title":["Wireless Communications and Mobile Computing"],"title":["The Dilemma and Countermeasures of Music Education under the Background of Big Data"]}],"items-per-page":1,"query":{"start-index":0,"search-terms":null}}}' headers: Connection: - keep-alive Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:25 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_docs_lifecycle.yaml ================================================ interactions: - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=National+Flag+of+Canada+Day&fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"data": [{"paperId": "2825ef76fbc2d0001226a7b98d2f7e6d28d72f7f", "externalIds": {"MAG": "2891797987", "DOI": "10.3138/9781442621534-019", "CorpusId": 166149247}, "url": "https://www.semanticscholar.org/paper/2825ef76fbc2d0001226a7b98d2f7e6d28d72f7f", "title": "16. Marketing the Maple Leaf: The Curious Case of National Flag of Canada Day", "venue": "", "year": 2016, "citationCount": 0, "influentialCitationCount": 0, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": "CLOSED", "license": null}, "publicationTypes": null, "publicationDate": "2016-12-31", "journal": {"name": "", "pages": "405-436", "volume": ""}, "citationStyles": {"bibtex": "@Inproceedings{Nimijean201616MT,\n author = {Richard Nimijean and L. Rankin},\n pages = {405-436},\n title = {16. Marketing the Maple Leaf: The Curious Case of National Flag of Canada Day},\n year = {2016}\n}\n"}, "authors": [{"authorId": "118523421", "name": "Richard Nimijean"}, {"authorId": "144557636", "name": "L. Rankin"}], "matchScore": 107.656364}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1016" Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:43 GMT Via: - 1.1 22922394e3534f85930c1603d51f2156.cloudfront.net (CloudFront) X-Amz-Cf-Id: - WHrlWAgwRHZP7qqQ3Cnav-a_yS0MxrZwfjxqdNQZmzvmM5DlyG8rQQ== X-Amz-Cf-Pop: - SFO53-P10 X-Cache: - Miss from cloudfront x-amz-apigw-id: - ZDlfSHqUvHcErmA= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1016" x-amzn-Remapped-Date: - Fri, 20 Feb 2026 01:16:43 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 91cad09f-d413-4375-818a-466233336dbc status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example@papercrow.ai&query.title=National+Flag+of+Canada+Day&rows=1 response: body: string: !!binary | H4sIAAAAAAAA/61UTY/aMBD9K5HPcbBDEpJcWVWqtP1QRS8FDiYZwCKJU9tZQCj/veOwXSjsblWp OcXjj3nz3sw7EWOF7QzJidoRn9RgjNgAtccWMLZXekcraezV1hNoI1WDuzxgAbvskPxE1qIAi6+d ep9YZUVFNZiucqFszMYR84m0UONyfiKyKeEApbtXCgu0FdodnM9DFoZ+5IfLpX/esbJ2cFycsoiy cMaTnMV5HP/A/G4Xy6hbkvMkSjMe45dyhhg0rEFDUwAtVNdYkiOAtlthSVvQ+OL3Rg712KOn1t5M adVY5X1F0AYfLnAFjaWlqoVsBpzPf3NEVmhlTC2QITxutSzsQMtaVAb6S5qStlq61PdV8sTnoT/m yyWef/jy0XHKgjEfp4tRNkl5FIVJyOMxVswzV+hZlZVSO1psRWuxBocD8N1XaeSpn/k8ueeRp5Rl lCczxnKW5lFyy2M8nrA4icOEMcdjO+hLIhbTaJzgWaM6XbjQ1LGANGNMGvrCd0lXxyvOrbQVnp4T ngTeJ+QMrGw2nt0CrtoKvEcQ69yb4Xraaak6402FASfKZ+F4FZX3oRIbF5iKRpTCexBHgnW1mFIe LswN/VivBnV5kiXPMqJqoOkLjClUsNJiAHF+z71VyWY3dOb3b494fWtta/LFaDGy58YIStjo7oi0 B4WqF6MnCfvFyMlxo9di9LaOwaGurnrrWVMLB7sYbe0fe5dRe1JOaenCJXIr2raShTg33HCX1rLB Ykjv36Pf7/e3yEtVdDWmcH/yPbSLUVuu7+F2jWmhkGuJfffPeI2sZSU0Dh12MRS7AbdrUWgVjuIb jsCdI7xmCdxZQoiWgH4Q5ZzfWQLPOEvSmJ9b2RRK480wCbJkwtKJM4nf3XzCdpI40kf3+39pHKTt ezclpntjWq/t4GWSzNUY3ULCrIHSm/cykysn+ktSp8HgzrTFWTmPPPfJzw7OhCCh2tLBtQc0BoQu thTZcIbedFXV9/0vur07s1IGAAA= headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "761" Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:43 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "{\"input\":[\"Jump to content\\n\\nMain menu\\n\\nMain menu\\n\\nmove to sidebar hide\\n\\nNavigation\\n\\n * [Main page](/wiki/Main_Page \\\"Visit the main page \\\\[z\\\\]\\\")\\n * [Contents](/wiki/Wikipedia:Contents \\\"Guides to browsing Wikipedia\\\")\\n * [Current events](/wiki/Portal:Current_events \\\"Articles related to current events\\\")\\n * [Random article](/wiki/Special:Random \\\"Visit a randomly selected article \\\\[x\\\\]\\\")\\n * [About Wikipedia](/wiki/Wikipedia:About \\\"Learn about Wikipedia and how it works\\\")\\n * [Contact us](//en.wikipedia.org/wiki/Wikipedia:Contact_us \\\"How to contact Wikipedia\\\")\\n * [Donate](https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en \\\"Support us by donating to the Wikimedia Foundation\\\")\\n\\nContribute\\n\\n \ * [Help](/wiki/Help:Contents \\\"Guidance on how to use and edit Wikipedia\\\")\\n \ * [Learn to edit](/wiki/Help:Introduction \\\"Learn how to edit Wikipedia\\\")\\n \ * [Community portal](/wiki/Wikipedia:Community_portal \\\"The hub for editors\\\")\\n \ * [Recent changes](/wiki/Special:RecentChanges \\\"A list of recent changes to Wikipedia \\\\[r\\\\]\\\")\\n * [Upload file](/wiki/Wikipedia:File_upload_wizard \\\"Add images or other media for use on Wikipedia\\\")\\n\\n[ ![](/static/images/icons/wikipedia.png)\\n![Wikipedia](/static/images/mobile/copyright/wikipedia-wordmark-en.svg) ![The\\nFree Encyclopedia](/static/images/mobile/copyright/wikipedia-tagline-en.svg)\\n](/wiki/Main_Page)\\n\\n[ Search ](/wiki/Special:Search \\\"Search Wikipedia \\\\[f\\\\]\\\")\\n\\nSearch\\n\\nAppearance\\n\\n \ * [Create account](/w/index.php?title=Special:CreateAccount&returnto=National+Flag+of+Canada+Day \\\"You are encouraged to create an account and log in; however, it is not mandatory\\\")\\n \ * [Log in](/w/index.php?title=Special:UserLogin&returnto=National+Flag+of+Canada+Day \\\"You're encouraged to log in; however, it's not mandatory. \\\\[o\\\\]\\\")\\n\\nPersonal tools\\n\\n * [ Create account](/w/index.php?title=Special:CreateAccount&returnto=National+Flag+of+Canada+Day \\\"You are encouraged to create an account and log in; however, it is not mandatory\\\")\\n \ * [ Log in](/w/index.php?title=Special:UserLogin&returnto=National+Flag+of+Canada+Day \\\"You're encouraged to log in; however, it's not mandatory. \\\\[o\\\\]\\\")\\n\\nPages for logged out editors [learn more](/wiki/Help:Introduction)\\n\\n * [Contributions](/wiki/Special:MyContributions \\\"A list of edits made from this IP address \\\\[y\\\\]\\\")\\n * [Talk](/wiki/Special:MyTalk \\\"Discussion about edits from this IP address \\\\[n\\\\]\\\")\\n\\n## Contents\\n\\nmove to sidebar hide\\n\\n * (Top)\\n * 1 History Toggle History subsection\\n \ * 1.1 Background\\n * 1.2 Flag Day\\n * 2 See also\\n * 3 Footnotes\\n \ * 4 External links\\n\\nToggle the table of contents\\n\\n# National Flag of Canada Day\\n\\n7 languages\\n\\n * [\u0627\u0644\u0639\u0631\u0628\u064A\u0629](https://ar.wikipedia.org/wiki/%D9%8A%D9%88%D9%85_%D8%B9%D9%84%D9%85_%D9%83%D9%86%D8%AF%D8%A7_%D8%A7%D9%84%D9%88%D8%B7%D9%86%D9%8A \\\"\u064A\u0648\u0645 \u0639\u0644\u0645 \u0643\u0646\u062F\u0627 \u0627\u0644\u0648\u0637\u0646\u064A \u2013 Arabic\\\")\\n * [Espa\xF1ol](https://es.wikipedia.org/wiki/D%C3%ADa_de_la_Bandera_Nacional_de_Canad%C3%A1 \\\"D\xEDa de la Bandera Nacional de Canad\xE1 \u2013 Spanish\\\")\\n * [Fran\xE7ais](https://fr.wikipedia.org/wiki/Jour_du_drapeau_national_du_Canada \\\"Jour du drapeau national du Canada \u2013 French\\\")\\n * [\u0540\u0561\u0575\u0565\u0580\u0565\u0576](https://hy.wikipedia.org/wiki/%D4%BF%D5%A1%D5%B6%D5%A1%D5%A4%D5%A1%D5%B5%D5%AB_%D5%A1%D5%A6%D5%A3%D5%A1%D5%B5%D5%AB%D5%B6_%D5%A4%D6%80%D5%B8%D5%B7%D5%AB_%D6%85%D6%80 \\\"\u053F\u0561\u0576\u0561\u0564\u0561\u0575\u056B \u0561\u0566\u0563\u0561\u0575\u056B\u0576 \u0564\u0580\u0578\u0577\u056B \u0585\u0580 \u2013 Armenian\\\")\\n * [\u05E2\u05D1\u05E8\u05D9\u05EA](https://he.wikipedia.org/wiki/%D7%99%D7%95%D7%9D_%D7%94%D7%93%D7%92%D7%9C_%D7%94%D7%9C%D7%90%D7%95%D7%9E%D7%99_%D7%A9%D7%9C_%D7%A7%D7%A0%D7%93%D7%94 \\\"\u05D9\u05D5\u05DD \u05D4\u05D3\u05D2\u05DC \u05D4\u05DC\u05D0\u05D5\u05DE\u05D9 \u05E9\u05DC \u05E7\u05E0\u05D3\u05D4 \u2013 Hebrew\\\")\\n * [Bahasa Melayu](https://ms.wikipedia.org/wiki/Hari_Bendera_Kebangsaan_Kanada \\\"Hari Bendera Kebangsaan Kanada \u2013 Malay\\\")\\n * [Polski](https://pl.wikipedia.org/wiki/Narodowy_dzie%C5%84_flagi_Kanady \\\"Narodowy dzie\u0144 flagi Kanady \u2013 Polish\\\")\\n\\n[Edit\\nlinks](https://www.wikidata.org/wiki/Special:EntityPage/Q6972703#sitelinks-\\nwikipedia \\\"Edit interlanguage links\\\")\\n\\n * [Article](/wiki/National_Flag_of_Canada_Day \\\"View the content page \\\\[c\\\\]\\\")\\n * [Talk](/wiki/Talk:National_Flag_of_Canada_Day \\\"Discuss improvements to the content page \\\\[t\\\\]\\\")\\n\\nEnglish\\n\\n \ * [Read](/wiki/National_Flag_of_Canada_Day)\\n * [Edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit \\\"Edit this page \\\\[e\\\\]\\\")\\n * [View history](/w/index.php?title=National_Flag_of_Canada_Day&action=history \\\"Past revisions of this page \\\\[h\\\\]\\\")\\n\\nTools\\n\\nTools\\n\\nmove to sidebar hide\\n\\nActions\\n\\n * [Read](/wiki/National_Flag_of_Canada_Day)\\n \ * [Edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit \\\"Edit this page \\\\[e\\\\]\\\")\\n * [View history](/w/index.php?title\",\"_Flag_of_Canada_Day)\\n \ * [Edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit \\\"Edit this page \\\\[e\\\\]\\\")\\n * [View history](/w/index.php?title=National_Flag_of_Canada_Day&action=history \\\"Past revisions of this page \\\\[h\\\\]\\\")\\n\\nTools\\n\\nTools\\n\\nmove to sidebar hide\\n\\nActions\\n\\n * [Read](/wiki/National_Flag_of_Canada_Day)\\n \ * [Edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit \\\"Edit this page \\\\[e\\\\]\\\")\\n * [View history](/w/index.php?title=National_Flag_of_Canada_Day&action=history)\\n\\nGeneral\\n\\n \ * [What links here](/wiki/Special:WhatLinksHere/National_Flag_of_Canada_Day \\\"List of all English Wikipedia pages containing links to this page \\\\[j\\\\]\\\")\\n \ * [Related changes](/wiki/Special:RecentChangesLinked/National_Flag_of_Canada_Day \\\"Recent changes in pages linked from this page \\\\[k\\\\]\\\")\\n * [Upload file](/wiki/Wikipedia:File_Upload_Wizard \\\"Upload files \\\\[u\\\\]\\\")\\n \ * [Special pages](/wiki/Special:SpecialPages \\\"A list of all special pages \\\\[q\\\\]\\\")\\n * [Permanent link](/w/index.php?title=National_Flag_of_Canada_Day&oldid=1231946994 \\\"Permanent link to this revision of this page\\\")\\n * [Page information](/w/index.php?title=National_Flag_of_Canada_Day&action=info \\\"More information about this page\\\")\\n * [Cite this page](/w/index.php?title=Special:CiteThisPage&page=National_Flag_of_Canada_Day&id=1231946994&wpFormIdentifier=titleform \\\"Information on how to cite this page\\\")\\n * [Get shortened URL](/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FNational_Flag_of_Canada_Day)\\n \ * [Download QR code](/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FNational_Flag_of_Canada_Day)\\n \ * [Wikidata item](https://www.wikidata.org/wiki/Special:EntityPage/Q6972703 \\\"Structured data on this page hosted by Wikidata \\\\[g\\\\]\\\")\\n\\nPrint/export\\n\\n \ * [Download as PDF](/w/index.php?title=Special:DownloadAsPdf&page=National_Flag_of_Canada_Day&action=show-download-screen \\\"Download this page as a PDF file\\\")\\n * [Printable version](/w/index.php?title=National_Flag_of_Canada_Day&printable=yes \\\"Printable version of this page \\\\[p\\\\]\\\")\\n\\nIn other projects\\n\\n \ * [Wikimedia Commons](https://commons.wikimedia.org/wiki/Category:National_Flag_of_Canada_Day)\\n\\nAppearance\\n\\nmove to sidebar hide\\n\\nFrom Wikipedia, the free encyclopedia\\n\\nCanadian holiday\\n\\nNational Flag of Canada Day \\n--- \\n[![](//upload.wikimedia.org/wikipedia/commons/thumb/6/68/Canada_flag_halifax_9_-04.JPG/250px-\\nCanada_flag_halifax_9_-04.JPG)](/wiki/File:Canada_flag_halifax_9_-04.JPG) The\\nnational flag of Canada \\nObserved by | [Canada](/wiki/Canada \\\"Canada\\\") \ \\nDate | [February 15](/wiki/February_15 \\\"February 15\\\") \\nNext time \ | February 15, 2025 (2025-02-15) \\nFrequency | Annual \\n \\n**National Flag of Canada Day** ([French](/wiki/French_language \\\"French\\nlanguage\\\"): _Jour du drapeau national du Canada_), commonly shortened to\\n**Flag Day** , is observed annually on February 15 to commemorate the\\ninauguration of the [flag of Canada](/wiki/Flag_of_Canada \\\"Flag of Canada\\\") on\\nthat date in 1965.[1] The day is marked by flying the flag, occasional public\\nceremonies and educational programs in schools. It is not a [public\\nholiday](/wiki/Public_holidays_in_Canada \\\"Public holidays in Canada\\\"),\\nalthough there has been discussion about creating one.\\n\\n## History\\n\\n[[edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit§ion=1\\n\\\"Edit section: History\\\")]\\n\\n### Background\\n\\n[[edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit§ion=2\\n\\\"Edit section: Background\\\")]\\n\\nAmid [much controversy](/wiki/Great_Canadian_flag_debate \\\"Great Canadian flag\\ndebate\\\"), the [Parliament of Canada](/wiki/Parliament_of_Canada \\\"Parliament of\\nCanada\\\") in 1964 voted to adopt a new design for the [Canadian\\nflag](/wiki/Flag_of_Canada \\\"Flag of Canada\\\") and issued a call for\\nsubmissions.[2]\\n\\nThis flag would replace the [Canadian Red Ensign](/wiki/Canadian_Red_Ensign\\n\\\"Canadian Red Ensign\\\"), which had been, with various successive alterations,\\nin conventional use as the national flag of [Canada](/wiki/Canada \\\"Canada\\\")\\nsince 1868. Nearly 4,000 designs were submitted by Canadians.[2] On October\\n22, 1964, the [Maple Leaf flag](/wiki/Maple_Leaf_flag \\\"Maple Leaf\\nflag\\\")\u2014designed by historian [George Stanley](/wiki/George_Stanley \\\"George\\nStanley\\\")\u2014won with a unanimous vote.[3] Under the leadership of [Prime\\nMinister](/wiki/Prime_Minister_of_Canada \\\"Prime Minister of Canada\\\") [Lester\\nPearson](/wiki/Lester_B._Pearson \\\"Lester B. Pearson\\\"), resolutions\\nrecommending the new design were passed by the [House of\\nCommons](/wiki/House_of_Commons_of_Canada \\\"House of Commons of Canada\\\") on\\nDecember 15, 1964, and by the [Senate](/wiki/Senate_of_Canada \\\"Senate of\\nCanada\\\") two days later.[4]\\n\\nThe flag was proclaimed by [Elizabeth II](/wiki/Elizabeth_II \\\"Elizabeth II\\\"),\\n[Queen of Canada](/wiki/Monarchy_of_Canada \\\"Monarchy of Canada\\\"), on January\\n28, 1965,[3][5] and took effect \\\"upon, from and after\\\" February 15 that\\nyear.[6]\\n\\n### Flag Day\\n\\n[[edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit§ion=3\\n\\\"Edit section: Flag Day\\\")]\\n\\nNational Flag of Canada Day was instituted in 1996 by an [Order in\\nCouncil](/wiki/Order_in_Council \\\"Order in Council\\\") from [Governor\\nGeneral](/wiki/Governor_General_of_Canada \\\"Governor General of Canada\\\") [Rom\xE9o\\nLeBlanc](/wiki/Rom%C3%A9o_LeBlanc \\\"Rom\xE9o LeBlanc\\\"), on the initiative of Prime\\nMinister [Jean Chr\xE9tien](/wiki/Jean_Chr%C3%A9tien \\\"Jean Chr\xE9tien\\\").[7] At the\\nfirst Flag Day ceremony in [Hull, Quebec](/wiki/Hull,_Quebec \\\"Hull, Quebec\\\"),\\nChr\xE9tien was confronted by demonstrators against proposed cuts to the\\n[un\",\" an [Order in\\nCouncil](/wiki/Order_in_Council \\\"Order in Council\\\") from [Governor\\nGeneral](/wiki/Governor_General_of_Canada \\\"Governor General of Canada\\\") [Rom\xE9o\\nLeBlanc](/wiki/Rom%C3%A9o_LeBlanc \\\"Rom\xE9o LeBlanc\\\"), on the initiative of Prime\\nMinister [Jean Chr\xE9tien](/wiki/Jean_Chr%C3%A9tien \\\"Jean Chr\xE9tien\\\").[7] At the\\nfirst Flag Day ceremony in [Hull, Quebec](/wiki/Hull,_Quebec \\\"Hull, Quebec\\\"),\\nChr\xE9tien was confronted by demonstrators against proposed cuts to the\\n[unemployment insurance](/wiki/Unemployment_insurance \\\"Unemployment\\ninsurance\\\") system, and while walking through the crowd he was [grabbed by the\\nneck and pushed aside](/wiki/Shawinigan_Handshake \\\"Shawinigan Handshake\\\") a\\nprotester who had approached him.\\n\\nIn 2010, on the flag's 45th anniversary, federal ceremonies were held to mark\\nFlag Day at [Ottawa](/wiki/Ottawa \\\"Ottawa\\\"), [Winnipeg](/wiki/Winnipeg\\n\\\"Winnipeg\\\"), [St. John's](/wiki/St._John%27s,_Newfoundland_and_Labrador \\\"St.\\nJohn's, Newfoundland and Labrador\\\"), and at\\n[Whistler](/wiki/Whistler,_British_Columbia \\\"Whistler, British Columbia\\\") and\\n[Vancouver](/wiki/Vancouver \\\"Vancouver\\\") in conjunction with the [2010 Winter\\nOlympics](/wiki/2010_Winter_Olympics \\\"2010 Winter Olympics\\\") in Vancouver.[8]\\nIn 2011, Prime Minister [Stephen Harper](/wiki/Stephen_Harper \\\"Stephen\\nHarper\\\") observed Flag Day by presenting two citizens, whose work honoured the\\n[military](/wiki/Canadian_Armed_Forces \\\"Canadian Armed Forces\\\"), with Canadian\\nflags that had flown over the [Peace Tower](/wiki/Peace_Tower \\\"Peace Tower\\\").\\nIt was announced as inaugurating an annual recognition of patriotism.[9]\\n\\n## See also\\n\\n[[edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit§ion=4\\n\\\"Edit section: See also\\\")]\\n\\n * ![flag](//upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Maple_Leaf_%28from_roundel%29.svg/25px-Maple_Leaf_%28from_roundel%29.svg.png)[Canada portal](/wiki/Portal:Canada \\\"Portal:Canada\\\")\\n\\n * [Flag Day](/wiki/Flag_Day \\\"Flag Day\\\")\\n * [List of Canadian flags](/wiki/List_of_Canadian_flags \\\"List of Canadian flags\\\")\\n * [National flag](/wiki/National_flag \\\"National flag\\\")\\n\\n## Footnotes\\n\\n[[edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit§ion=5\\n\\\"Edit section: Footnotes\\\")]\\n\\n 1. **^** [Department of Canadian Heritage](/wiki/Department_of_Canadian_Heritage \\\"Department of Canadian Heritage\\\"). [\\\"Ceremonial and Canadian Symbols Promotion > The National Flag of Canada\\\"](https://web.archive.org/web/20100423114158/http://www.canadianheritage.gc.ca/progs/cpsc-ccsp/sc-cs/df1_e.cfm). Queen's Printer for Canada. Archived from [the original](http://www.canadianheritage.gc.ca/progs/cpsc-ccsp/sc-cs/df1_e.cfm) on April 23, 2010. Retrieved March 21, 2010.\\n 2. ^ _**a**_ _**b**_ Government of Canada, Public Services and Procurement Canada (July 31, 2015). [\\\"Infographic: National Flag of Canada Day \u2013 February 15 \u2013 Canada's Parliamentary Precinct \u2013 PWGSC\\\"](https://www.tpsgc-pwgsc.gc.ca/citeparlementaire-parliamentaryprecinct/decouvrez-discover/jour-drap-flag-day-eng.html). _www.tpsgc-pwgsc.gc.ca_. Retrieved February 5, 2022.\\n 3. ^ _**a**_ _**b**_ [\\\"What is the National Flag Day of Canada?\\\"](http://westernfinancialgroup.ca/What-is-the-National-Flag-of-Canada-Day). _westernfinancialgroup.ca_. Retrieved February 5, 2022.\\n 4. **^** [Department of Canadian Heritage](/wiki/Department_of_Canadian_Heritage \\\"Department of Canadian Heritage\\\"). [\\\"Ceremonial and Canadian Symbols Promotion > The National Flag of Canada > Birth of the Canadian flag\\\"](http://www.pch.gc.ca/pgm/ceem-cced/symbl/df3-eng.cfm). Queen's Printer for Canada. [Archived](https://web.archive.org/web/20100224005050/http://www.pch.gc.ca/pgm/ceem-cced/symbl/df3-eng.cfm) from the original on February 24, 2010. Retrieved March 21, 2010.\\n 5. **^** [\\\"Birth of the Canadian flag\\\"](http://www.pch.gc.ca/pgm/ceem-cced/symbl/df3-eng.cfm). [Department of Canadian Heritage](/wiki/Department_of_Canadian_Heritage \\\"Department of Canadian Heritage\\\"). [Archived](https://web.archive.org/web/20081220170253/http://www.pch.gc.ca/pgm/ceem-cced/symbl/df3-eng.cfm) from the original on December 20, 2008. Retrieved December 16, 2008.\\n 6. **^** [Conserving the Proclamation of the Canadian Flag](http://www.collectionscanada.gc.ca/publications/archivist-magazine/015002-2021-e.html) [Archived](https://web.archive.org/web/20121021133944/http://www.collectionscanada.gc.ca/publications/archivist-magazine/015002-2021-e.html) October 21, 2012, at the [Wayback Machine](/wiki/Wayback_Machine \\\"Wayback Machine\\\"), Library and Archives of Canada, from John Grace in The Archivist, National Archives, Ottawa, 1990. Retrieved February 15, 2011.\\n 7. **^** [Department of Canadian Heritage](/wiki/Department_of_Canadian_Heritage \\\"Department of Canadian Heritage\\\"). [\\\"National Flag of Canada Day\\\"](http://www.pch.gc.ca/special/jdn-nfd/index-eng.cfm). Queen's Printer for Canada. [Archived](https://web.archive.org/web/20100217042202/http://www.pch.gc.ca/special/jdn-nfd/index-eng.cfm) from the original on February 17, 2010. Retrieved March 21, 2010.\\n 8. **^** [Dept. of Canadian Heritage news release](http://www.pch.gc.ca/pc-ch/infoCntr/cdm-mc/index-eng.cfm?action=doc&DocIDCd=CJM092444) [Archived](https://web.archive.org/web/20110706182436/http://www.pch.gc.ca/pc-ch/infoCntr/cdm-mc/index-eng.cfm?action=doc&DocIDCd=CJM092444) July 6, 2011, at the [Wayback Machine](/wiki/Wayback_Machine \\\"Wayback Machine\\\"), February 15, 2010. Retrieved February 15, 2011.\\n \",\"2010.\\n 8. **^** [Dept. of Canadian Heritage news release](http://www.pch.gc.ca/pc-ch/infoCntr/cdm-mc/index-eng.cfm?action=doc&DocIDCd=CJM092444) [Archived](https://web.archive.org/web/20110706182436/http://www.pch.gc.ca/pc-ch/infoCntr/cdm-mc/index-eng.cfm?action=doc&DocIDCd=CJM092444) July 6, 2011, at the [Wayback Machine](/wiki/Wayback_Machine \\\"Wayback Machine\\\"), February 15, 2010. Retrieved February 15, 2011.\\n 9. **^** [PM pays tribute to outstanding Canadians on Flag Day](http://www.pm.gc.ca/eng/media.asp?category=1&id=3958&featureId=6&pageId=26) [Archived](https://web.archive.org/web/20110706181811/http://www.pm.gc.ca/eng/media.asp?category=1&id=3958&featureId=6&pageId=26) July 6, 2011, at the [Wayback Machine](/wiki/Wayback_Machine \\\"Wayback Machine\\\"), Prime Minister's Office news release. Retrieved February 16, 2011.\\n\\n## External links\\n\\n[[edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit§ion=6\\n\\\"Edit section: External links\\\")]\\n\\n![](//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/30px-\\nCommons-logo.svg.png)\\n\\nWikimedia Commons has media related to [National Flag of Canada\\nDay](https://commons.wikimedia.org/wiki/Category:National_Flag_of_Canada_Day\\n\\\"commons:Category:National Flag of Canada Day\\\").\\n\\n * [Flag of Canada Song (1965) Freddie Grant](https://www.youtube.com/watch?v=2IkqmkTK46E)\\n \ * [Flag Day](http://www.pch.gc.ca/special/jdn-nfd/index-eng.cfm), Dept. of Canadian Heritage \\n * [The famous Canadian Flag Collection, at Settlers, Rails & Trails Inc, Argyle, Manitoba](http://argylemuseum.wixsite.com/argylemuseum/canadian-flag-collection)\\n\\n![](https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1)\\n\\nRetrieved from\\n\\\"[https://en.wikipedia.org/w/index.php?title=National_Flag_of_Canada_Day&oldid=1231946994](https://en.wikipedia.org/w/index.php?title=National_Flag_of_Canada_Day&oldid=1231946994)\\\"\\n\\n[Categories](/wiki/Help:Category \\\"Help:Category\\\"):\\n\\n * [1996 establishments in Canada](/wiki/Category:1996_establishments_in_Canada \\\"Category:1996 establishments in Canada\\\")\\n * [Public holidays in Canada](/wiki/Category:Public_holidays_in_Canada \\\"Category:Public holidays in Canada\\\")\\n * [February observances](/wiki/Category:February_observances \\\"Category:February observances\\\")\\n * [Flag days](/wiki/Category:Flag_days \\\"Category:Flag days\\\")\\n * [Winter events in Canada](/wiki/Category:Winter_events_in_Canada \\\"Category:Winter events in Canada\\\")\\n\\nHidden categories:\\n\\n * [Webarchive template wayback links](/wiki/Category:Webarchive_template_wayback_links \\\"Category:Webarchive template wayback links\\\")\\n * [Articles with short description](/wiki/Category:Articles_with_short_description \\\"Category:Articles with short description\\\")\\n * [Short description matches Wikidata](/wiki/Category:Short_description_matches_Wikidata \\\"Category:Short description matches Wikidata\\\")\\n * [Use mdy dates from February 2018](/wiki/Category:Use_mdy_dates_from_February_2018 \\\"Category:Use mdy dates from February 2018\\\")\\n * [Infobox holiday with missing field](/wiki/Category:Infobox_holiday_with_missing_field \\\"Category:Infobox holiday with missing field\\\")\\n * [Infobox holiday fixed day](/wiki/Category:Infobox_holiday_fixed_day \\\"Category:Infobox holiday fixed day\\\")\\n * [Articles containing French-language text](/wiki/Category:Articles_containing_French-language_text \\\"Category:Articles containing French-language text\\\")\\n * [Commons category link is on Wikidata](/wiki/Category:Commons_category_link_is_on_Wikidata \\\"Category:Commons category link is on Wikidata\\\")\\n\\n * This page was last edited on 1 July 2024, at 03:41 (UTC). \\n * Text is available under the [Creative Commons Attribution-ShareAlike License 4.0](//en.wikipedia.org/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License)[](//en.wikipedia.org/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License); additional terms may apply. By using this site, you agree to the [Terms of Use](//foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use) and [Privacy Policy](//foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy). Wikipedia\xAE is a registered trademark of the [Wikimedia Foundation, Inc.](//wikimediafoundation.org/), a non-profit organization. \\n\\n * [Privacy policy](https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy)\\n \ * [About Wikipedia](/wiki/Wikipedia:About)\\n * [Disclaimers](/wiki/Wikipedia:General_disclaimer)\\n \ * [Contact Wikipedia](//en.wikipedia.org/wiki/Wikipedia:Contact_us)\\n * [Code of Conduct](https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct)\\n \ * [Developers](https://developer.wikimedia.org)\\n * [Statistics](https://stats.wikimedia.org/#/en.wikipedia.org)\\n \ * [Cookie statement](https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement)\\n \ * [Mobile view](//en.m.wikipedia.org/w/index.php?title=National_Flag_of_Canada_Day&mobileaction=toggle_view_mobile)\\n\\n \ * [![Wikimedia Foundation](/static/images/footer/wikimedia-button.svg)](https://wikimediafoundation.org/)\\n \ * [![Powered by MediaWiki](/w/resources/assets/poweredby_mediawiki.svg)](https://www.mediawiki.org/)\\n\\n \ * \\n\\n\"],\"model\":\"text-embedding-3-small\",\"dimensions\":1536,\"encoding_format\":null}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "21715" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a2908a890cce5-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:44 GMT Server: - cloudflare Set-Cookie: - __cf_bm=NFJAlIJ6_y6i9.RC3Q0rlgRpWaY2.mBfc5e14vLv1XE-1771550204.2689393-1.0.1.1-O.lzlz4WFRTP89j31b6W8tEs5N7q5wDIs32IsDjiNSY8qMZgA66EoNLoqfTCJwlP2NRsmmAeWReTcEOgpJpUY8UcZUmGbIFt53PeI4bKW56dkdt556Cm7NkYpWHAx957; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:46:44 GMT Transfer-Encoding: - chunked Via: - envoy-router-5b7db9b97b-bb2b8 X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "202" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199998" x-ratelimit-remaining-tokens: - "199994750" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 1ms x-request-id: - req_b2b10812f8ca4064b78911569ef08324 status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=Gravity+hill&fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"data": [{"paperId": "861b64e8235a5948aec2f2af8a295bae203b3d59", "externalIds": {"DOI": "10.52228/jrub.2025-38-1-6", "CorpusId": 279509683}, "url": "https://www.semanticscholar.org/paper/861b64e8235a5948aec2f2af8a295bae203b3d59", "title": "Explanation of Gravity Hill of Mainpat by using digital Elevation Modeling", "venue": "Journal of Ravishankar University (Part-B)", "year": 2025, "citationCount": 0, "influentialCitationCount": 0, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": null, "license": null}, "publicationTypes": ["JournalArticle"], "publicationDate": "2025-06-15", "journal": {"name": "Journal of Ravishankar University (PART-B)"}, "citationStyles": {"bibtex": "@Article{Rajwade2025ExplanationOG,\n author = {Dushyant Kumar Rajwade},\n booktitle = {Journal of Ravishankar University (Part-B)},\n journal = {Journal of Ravishankar University (PART-B)},\n title = {Explanation of Gravity Hill of Mainpat by using digital Elevation Modeling},\n year = {2025}\n}\n"}, "authors": [{"authorId": "2368036338", "name": "Dushyant Kumar Rajwade"}], "matchScore": 60.835304}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1098" Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:45 GMT Via: - 1.1 b17f8a118d57b4772c5ae067cb6b9686.cloudfront.net (CloudFront) X-Amz-Cf-Id: - AYWRPq9Cv_h9vfsfFAjf4DmDVHonxS0GO8z3FGUmwiWS-eQ8Ph0qHA== X-Amz-Cf-Pop: - SFO53-P10 X-Cache: - Miss from cloudfront x-amz-apigw-id: - ZDlfjGq9vHcEBmA= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1098" x-amzn-Remapped-Date: - Fri, 20 Feb 2026 01:16:45 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - dfa0a808-0c61-44b0-a44a-290a7945348f status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example@papercrow.ai&query.title=Gravity+hill&rows=1 response: body: string: !!binary | H4sIAAAAAAAA/3WT227bMAyGXyXQteVItlUf7ooN2AoUWFGkA9YkF47NNGpsy5PopkGQdx/ldG3Q A+ALmZTI//8oHZjDEgfHCma2LGAtOFc+AMd9DxTbGbvljXZ4lnoC67TpKCtDEYq3DCsObF1WgFTt cAwYGiwbbsENjQ/JJE9VHjCN0NLv/MB0V8Mz1P5cXSLwvrR+43weiSgKkiBZLoNTBnXr5fg4Fwl9 MyEKlRdS3FN/nyUbbU9NLpJcxHGuRJ5dkAYLa7DQVcArM3TIChGwfliRpQ1YqnjX6dEP7idmPbnR iG412IfN5IZ0O6pdmQ6hQ16bttTdKPVlNSdxlTXOtSVBou1odYUjmXXZOKDu339deUwijGKRLqaP YYWonrbrTRpK6YWfKK+M2fJqU/ZImnxRIM+fYpFpkAfpRywy5SLnIp3JtIiSQmXvsSiRZMJDEUKQ sH4cF5OKS0U7nRls5QPfvB9iRjHt+Cu8mq/2ZwBRY0O75+zH7eXvq9mfyc+r62tGono6oZ/fLI93 o12NpKWM5AtPwgeWv1a5MYB2P9Hd5LIFYlj6UjX0hsbyBYYsUEH+CYaMC0UkZiIrRFzE8QcMkcpU LGR8wuAqY+lkFIdKEJnU35f/LA7kRtNo9355d3tNDTaIvSsW08V0t9uFjw6NDY19WEyp/KqBxfSr SR+PnqcbPnPTDU2zXJ5fVXeG+n3j2uhTyy9bLV9eGO+J8WnOMmB/Bzg5IakW+fjyxgYOSlttON08 /yi9mOPx+A89dkFrFgQAAA== headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "586" Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:45 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.2307%2Fj.ctt5vkfh7.11/transform/application/x-bibtex response: body: string: " @inbook{1, url={http://dx.doi.org/10.2307/j.ctt5vkfh7.11}, DOI={10.2307/j.ctt5vkfh7.11}, booktitle={Poetry in America}, publisher={University of Pittsburgh Press}, pages={15\u201315} }\n" headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Date: - Fri, 20 Feb 2026 01:16:45 GMT Server: - Jetty(9.4.40.v20210413) Transfer-Encoding: - chunked permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "{\"input\":[\"# Gravity hill\\n\\n> \\\"Magnetic hill\\\" and \\\"Mystery hill\\\" redirect here. For other uses,\\n> see [Magnetic Hill (disambiguation)]()\\n> and [Mystery Hill (disambiguation)](https://en.wikipedia.org/wiki/Mystery_Hill).\\n\\nA **gravity hill**, also known as a\\n**magnetic hill**, **mystery hill**, **mystery spot**, **gravity road**, or **anti-gravity hill**,\\nis a place where the layout of the surrounding land produces an [illusion](https://en.wikipedia.org/wiki/Illusion),\\nmaking a slight downhill slope appear to be an uphill slope.\\nThus, a car left out of gear will appear to be rolling uphill against [gravity](https://en.wikipedia.org/wiki/Gravity).\\n\\nAlthough the slope of gravity hills is an illusion,\\nsites are often accompanied by claims that magnetic or supernatural forces are at work.\\nThe most important factor contributing to the illusion is a completely\\nor mostly obstructed horizon.\\nWithout a horizon,\\nit becomes difficult for a person to judge the slope of a surface,\\nas a reliable reference point is missing,\\nand misleading visual cues can adversely affect the sense of balance.\\nObjects which one would normally assume to be more or less perpendicular to the ground,\\nsuch as trees, may be leaning, offsetting the visual reference.\\n\\nA 2003 study looked into how the absence of a horizon can skew the perspective on gravity hills,\\nby recreating a number of antigravity places in the lab to see how volunteers would react.\\nIn conclusion, researchers from the Universities of Padua and Pavia in Italy\\nfound that without a true horizon in sight,\\nthe human brain could be tricked by common landmarks such as trees and signs.\\n\\nThe illusion is similar to the [Ames room](https://en.wikipedia.org/wiki/Ames_room),\\nin which objects can also appear to roll against gravity.\\n\\nThe opposite phenomenon\u2014an uphill road that appears flat\u2014is known in\\n[bicycle racing](https://en.wikipedia.org/wiki/Cycle_sport)\\nas a [\\\"false flat\\\"](https://en.wikipedia.org/wiki/Glossary_of_cycling#F).\\n\\n## See also\\n\\n- [List of gravity hills](https://en.wikipedia.org/wiki/List_of_gravity_hills)\\n- [The Crooked House](https://en.wikipedia.org/wiki/The_Crooked_House) \u2013\\n \ a pub (now demolished) with an internal gravity hill illusion.\\n\\n## References\\n\\n## External links\\n\"],\"model\":\"text-embedding-3-small\",\"dimensions\":1536,\"encoding_format\":null}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "2441" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 dyOCAAA= headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29142cb9cce5-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:46 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-canary-6bddd69c68-gnt5r X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "118" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999423" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_27e3f57f70b949eda2cfb3bb32007aa0 status: code: 200 message: OK - request: body: '{"input":["What is the national flag of Canada?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "124" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | H4sIAAAAAAAA/41d7a4lt3H876cQ9rc2INlsfvhVAiOQswtDiT6MaAMYMPzuqZo5cjJVvLnXBmRj dO45M2Szu6q7uufvf/juu0+//vk/vv77t09//O7TTz/+9u3T97z25YdvP+DKv+L/f/fd369/Pj75 9ec/f/3y5cdf/nJ9/PqXP/7y5evf8O/KP6/874d+/yb+p/xLqWO0lXV+/8+Ln3G1tRlR5/j+8dFo e83SHhdj1l5Xzeffl91XrtyPj5aZs7e9u/xWxurDrhZ8eI94Xq0b35D1eQdjlNlLPO91RMfv5eNi x6OubEvvtRb8K/n9UtvcWZtcjVpj7+dvtYU1kJvKMvoo4/nBju+Mlvr4rZdVuyx1r3Wm/HptkVH3 1sWONSceVp6gR99Rn3eAPd1zzOdd5YoR8rmZ+P095Faj9t50pdoc+I7nd5Zss7XytJ/YeIL2/GDg kzAr+SFc6VhUMcrce8455LOlr71HTnkAmMQOXamIwX2RVY3MfCzAdXXtgaf9gP1xSfsKuQiDSljh 01BaH7nH81T0FjDBKT+EjcK9lhSjxgLs3t7fZxjJXLB12amOxRq5nluFv8Vj6aHAw5eB8/78LOy8 4ylSjKWV6PYFwUPw/CR+LHAT+Ic8Aoyt2DfMjltQ06h9r17lYOFQ1mzqmeqaey0xouu8RaznZ2EV s48QfxW0gqbfELvVuWS7Gz8rh3jUnWU/v3PgAdrzt2EUvWO35TlrWz3kpOK2sbNLLK3ih/QmsVE7 hh7+WjdOtnyybBhQt6u1zBHqaRPGL0uHvW8P67/WaNTEhqijwh/j9pcdtcRKNbmKPYFnbXq54agP NWz8+cDJmHJjCw8xmtnP7r1rwMJ5pX9SY4nBTZjPFYcL37ttvTHsTLT6/ChjSDwc9nWxr6qHCBu+ 8Wn9JRzuJZZxPBYIojCkKSsQFZsuQRAmsKMs9SxtwV7Wez7wimzwTXXrztIHqWtu9Izy85lAEF3P ek348ce3Xr+0eVDjnYvXL+0GIxTPSp/ytLbLMgsdgNhwXQWmpgerT7gAc8w8089z0bHJAzuqcQXf kP3pE7CbEwf7ufUbERy2qgCoYfWmLDStd7Ya71kvV6oVnhZdqUh4II1riF8ry1QfhIPWhwQxmBos MLZcnW3XMYeeeITrgZDl1gqHqU4D+7XKlEjW+sI6KGgaOcoeig9g6uVhb/cZxr3qQ3RuVxEcV3ku U7cx1uWJBZ7hYHV12QXHF/e79RAgZO6yzOvirop8NuZq9PxyWwu/Jj6krI3jsvUY4h5mhedvQ6JO 7q5fAXwJnFWr+KYyi7qMAoBa1JmfLDng2uAd1LcCiCzdrAA+syMDhz/2LsoFKm4LGEOvEoqayc4V RWFf74OwX0EmlmrG8wEYNAEm5JdwuOBau3mC1lrtz5UmPu9LDXtF94t7RfqqAuEDERqYwokZU9wb 7qoXwdiwbESCIsEFsYlxIN7Zwc9Hr3ejwRxFXTn8VoMvzncZRkNkQCDT4DqJfOW405XhZsXpg+Ag XhbhSPjgWFPuCRgFaNoiGaBz9lRnCvcGjudGCEildwt0B+AneDY2sZuGvU70JJ9s4MmE5BI3Jgzg uYE4voAWEiB4VoHolY3CpuEeZQHh4MHdQ5EAzOoBkO4diBlrd/kovEJTMgmTYHw2GwZFMD619iL/ kGAKnwTka64Bzrmab4PPNbsucK6RFmMH/KuRJ7i61MAPiA4wqYYBkLjB/4S9jlkrIbRCTxzYBym/ nT72Vh0ZztrEPgzLaWAdBf4zS4C4JctFy3rgqbdvC1swQZafholjGeLax7w2XPYVsKdOIQoIrQtR SP1lwcUi7LECZMCRKiHElqhZYKHX7BKHay48pYDmjl9ybw/bAVeW25/gDuBEz+cERgrxFTgqWCQL l3CrayHsq2OHWVe7gYvkGZIBzQ/jLkAM/DnhiJvYSZMH8EFwAYr9cBHYW5FMZ5priKlcodmSAuSK aQceqANsU88AfgrYaWvYBvmA1xFXPmPjzInPaqSQQ6wVhk6urjwBXgynQ90Asx05PEDAvU2JsIC/ M4Vp9wpWr38NlD6z6Lrg52t2i3rkD6MrARgLONG4JnAbPKTijmR2ThA4fq6YJ6UrB3+cGrfg4HRn cgEmaRYQbmwzxOnVeHL7+xz3K3Zo2NgLoUxtgytjVwu2FYhMIj8ev+MrxGvgKLWpC06qifhv+eUg epMoD9gBS0olTMyFCfJJ8JK1xQgb6Z4YRnTYvABqeNdJ5CvEFJ4Ip1ZvFM9ZY+vxhm0UCQRgnzWn /NKuHRclwNIP6PY3rMay32F01sR2xZ6sJZEB55pZjanLxEyHsAk8fSi+QmwAy7JNBuBZClBzLuIb cfjJ5IMCqYYQDDie5hvnVHwC0LiyavoFXrSXYUkZ7EfW0BtDGMPzPj1T5cJiqzXVAoBAn6dPNmGn ig821rrW907gXTCAw6nDsH/rrWjYbVjxOcNdQ/LAK9fkWZH1IoEOxYMVP7YfGa9rXRBeUmNcY9L4 cYRulIdb3dXSax14sC9zpWNf/lli/0DMWBrmK09H13IQ3JOgoRo5UmFmAx4pOdRjIk6n4lwY8QOM XTFnYaXld8CzQH8ltMDasVip3CFg8H1qwoxp4P780klKlJK/AGgpqxihRrgZXR8omXCcH8kUYAPh bkdqcmsTEFvKs3JnxTPSrw8tsdCGVzfoBhdYrUhTK+t+24wFu1p3UQIK/xQeXHDmH492hYYBmCV/ nzgBoes1uViOJaJha7eu7WbKpsgjnLL+QGSDDET8EzY7qgEUshKth51YGXYL9z+WGiaLfNtKTFiA YQwwmRZQZwrIgRgvJ/6cIwTygWV0dWVWf7u3cEVRd94bkZ/xQvh9YKSlSTPudleUtcqcQzOqCTuy 4k9F4ELklXT4jCsTYigeWLlvrXUEk/QfQcXgb4Nw2xgvYI5aDHMZBcFSC1iNdTndXqZCLHYA4iiz wt6CCBXdBHCAkJoWoeuclkmB12vDIg/hSA0DqhWfFVeMP8bCWFYZfLNohgynnolizeZ1pgifz494 iihrOYdgrWtn1UfACQ1jPEBqZAFVDj6QmsEKfPE2blwnka5AoAxwnSXhuyMiwHFZEWrRfStd8ATD fbfwhlUDABNvVbaRqQSCc60DwM10K5rBb1TLx7Cws8J2DPSKR0yCzULsntVODVmIyx6A+Fnf0qww gIXAS5hGtOnuf8GpKpOC67F0+xvsm249LDARcVvZuAzCeyEM8LQrtDyBZTU1SIUVjykkvTAnuYoi EGYgexZLNlesotSSrHB7G8x044TbaqVYgWbD5vrSoLRHOAhgHTG0cIRvhPPsEkEQq+uakhIC0gPk UMQys7XQ26I3ZApTa+FAjCmkazNJpQQ54B6mLFUgoLVH8u2u7YCGdaWBFWyxhebeGu4oxG8OGorY BGvkXd2upy8vKsP0t3KODCxfF7gH6yVvUtKFYNJETtNgFFsNBf7mgnFSgEhWzBSWDeboqkoJVlci hvietccHaGCLzTybsX2wM03dsrJdukUXhMEldaZEcJ6an4JXhekoTEPI3/Q1Wi4PGq/Y/kHKMJmw kdLDmIjiojljQgFB3xgBGI1V+4F8x6pW1WOZphmSQHDjyiixZBW5W1lzFvMITH0z0ahSMv7XM2lz WLIEK0qfrPEKi7qqUSCcqcYSvSIvPLDygkXdllg6ji7LigoIgRimePpy1dQsYE58Z2jKqi/qnqy8 vC9cLQGE3KgsNVeQQniqVNwBRNmUGFaKZ0xixKLCiqI08Jh9hR3CW2q82BNcwUhQGSCyXT5rBcc7 gVyvDJf6mzYRc6eiTBxlA3SL8hsrVw2mM3dThjmiVZUq4nyppg0oF87WbbYBvG3J/tZFlDdVKQbY hvBo4BGYXvFJCxKL1HOHMwP0WjWzzeQdHLomSVgcsEoUswmhCPwtFSXAH2K08kZEQ9OxJhwqQJ0s w2Y00hIpAzect3zBYGpPeRCltBPraJQcZ9RcVV5CJoGweABV98H5bNOrFMYybPD4gGgXeA43oHQa ZsTjK2cMsEUfCt6QOrgwrRN5mHII1tKqSRYHLjbzyZQxSY31JU7sKk/LXc2fIcqlOU84tDp2U+gI d6Ca4T7hebalGEYdJoyaMO2q55tpecRfq2YuRBpXbU6st9aumFiuCuopIxqzWbIeobpqCAR0qZY8 SbD5XGFlBERWIdhURrqQE0d5AQLoaiNaLpENnvL64APUFolVnZPAwJItFb90Hgplhtj/stKlsMUw CQ5KerYX0IthZpqigIkXBX94hi6SBnwKjEg1PR1HYJi6vPBczA+A5Esm1C0gVsZp1XKXjVCkVDMo +bO0z2wKpxngdtHKkicMrh8CdNPAjcgEkCMXLSd+YT9w51oVz86xTMNJUt7sqDXmgYqmtAdV111l mRSAbbl9AG8WBQS9FnYBbIVkDBVYZzknr7sNlRES5w+rwYG8DVW5HDgmAGFuDc8I+YBjyzKHlDh4 3k8R2UtSsqaaL/4e+68l7saYq0llGNWKrgq6cUlWdWN622lhuDHLmuatC7PaVqCGcTQ1dniLuUqp ilSTajmtDQE+TyP1CBgDjEPsEEhkm8KYe+hpr0Z4EZrs4LKoyr/S4Iswq4AHwJpbgWxzEbaFvFFS kOqgEzTl+KJ+Rg5Sj7Ep9xIGCmKnXBNkKWfbWmyhhCw0jDLiZ+/vK2Qb4eiwUiTuNFPV0SA1IQ6D UXxZjw/8AomZZVPH3ohWlqvBgbEyGAB9cRjEWuxWyHZixqxquFKMH06hhqzhUdFr1JD5o6ViO4RW 02AuGMowkXync9cTC17NOGIJP9p6VROMCN3sY/PUQbdw5CS3HB/mpgo4UPPlbSKgwOyAGZpySKYC ZAVgMNM6zQBYq2kz4Z/p3Sw3CU/YTUc7q4W3OeAa1N/EhS8Exmgh72VrrGJZ79AC5tGDYQ0C90/B ht2TY68QNFz6LvDu3hZgtp2e3d0svm/tCIB31cATgS9omhrEonqlZMxBPKUZQzzW1I6EhpvappDu vVRL4y26FrNsVX7cJ561exVzkzxqZe8ScWpmYZOOvNOh8cquM72viTSqn7QfogXT5caJa+mmEQGQ 303B8diGLQnsEcWMYFnEvPusqFm2NDwOBeXNVrCFt9I7oFyyuuQZ4V0zuywAllkUCw4EeC14lkug 0DQOsJ2g27IAX1gWGpaO6Ny07L5wNK2BFAs7ra2U5D25BuJbYl6CemsL6axKKZypUUx3zFAEk1co QAFdV1C78Q0Wta0D5m73gMceJj8atVilirsIo9HcCnjX1AxZQ4gBo9I2xkjqdu1oxSha7iTGaH4L 2MdZrbuLst+tu8vAX5YhlwmMot+6mbYa+vcLTtZaA+Uk3QkIUl2Vz3RYjGnvcewrk4eqSrtUGUoq WRtV/npF+Z5iBAmXaZQYxn2lvTSrTaKv0YQC2SY+O9iWIhDr0BjHHtReLQwgvu1ZNMMZ7M4WU2El qqiSmr+dh8Y6eCej1DiukWJqpAPDl/QkRWhXsk1IpfUYvFrQ6CNVSE2PqzUerNUEbmu2/6B0EfJj jTB1WXMX+1FMZEw9VPGy8LwS6GIrMP/ZtEH41AuO096zFWv+GCJ2I3BEeNeW3Z5JXdNQPQojhyrJ r7ZP04SR/m3lWYTTSxVd1PL3YbBtP53N52NF7EYC2P+WljQ+6YzKAEZdYTXpQ1oIeBRMUTGeZRbv XAms24IOW32sWNb3oghrWYt5m0W7g3mOvO11UfKpKTCWDSxdOhh4tfLQJ75WyRdL0lb7AHKw9kIm e7ol3ZOUvIUfzR5W6SfAVuDEBL8xurGKajCpNMYp1vQBVRhNsyJU0qiAAiGcAkZX7reiafHKABIa F85VUbayG2pZABJKPZO9taZt4eZZtO5sO8n6ntr6FpBwRkJ9d0DGHZZ6nwZvWMFsqixktmxNFe1j 78rUuDQaC5iqWD5m4bzp+s5s76sN8L2u/dsJYK2bp8aBslWym0wXa9GH7eizm19gt5hWphsrs5mm oiSha4qp6zUTwdjj6NgGyfmxCL1sbgC8WK9hbf64360TVdbqKlY4Ea8+qUN2iRqC89gmzCWlC02Z B1udmhbfTt2xlZJhS5l3WDElu1Y26+RamixAMOmhBefOxihrGITNKmwG/VUcVkBdrCIKyEz2L/ZO jgr2HKqnY3eupqCCBQaNFxQrpdXxyRvKdIUYqHra8BVCAfNPi7jRBE9rFV9X1rXhjC1pCmea2h7Y riq0hQJijFSJs3HtV6PBWCpxPtZyGoWwJmfHB1ln1J4GPG7VsMvSA4eYbMtMJJW3psnHYdYv9lbM 2x1d8w4sizHGsv4PqhympW0nOEUYTjnETgppo07rJqOCMG0V4HotTr4hkwDOWj016TFgj9mthElJ hZUAwEDI/C0jWa7SrjLsq0L+Xs//3fEwyRrbe5LiF4sCubGNILeT5ONg4q1rnhB/DzPXYIPTsB/a +Lu4hMOnGUF2fDTTijTOXlrWMYGjgyMl3GpSCrQtp4q4Kv4bjJkNMXqrrVnXV8OPtOLdpwMgUjPN G2HNAgXHOXQn5xIA7xkA7HjZUbW+NihXW2bKEQYDAeEQwoxhIQR1K7BRft1ZczF8Bdvy+iz7Q5Q1 cfySdQoG6JU2LRROX2pLW6JOA5iOPSMICgAiynA6k5JdWYv1RN62DYKlDzD75rCrZcKeq2lZhIhM Dqtmiv3q1l7DFnSgYRHiks9bDpywkTZjvdEXElCH6J3BYM4wZO0Dp26vKxZNns3h2hkmDqaSTGYx jfW0vZxkgkd1hjBriGFndHwgpcVpHMOnaCXd2Vb5N0fdqOoTBq895/CkOJxLBwxcjd3av4bztne3 1NXqnO9lg13wzZaGHsQsqpCbnNohRmjz2l5ACH5vHvrjD19LPefQpAiTyKa7AzqEuW8dZXBol4Cp g7w5dYYz3JbbXxRAyeQNG95yeU04Mi/jcFjNru6HhmnTjGFc+TiAmhH9AyoLinrKSi1zsxGeqE+8 EGBNDhtFsFhRN03pqEyKKsJmqm27gorpqmW9lbA3RRUJxDnLoWFyMdRaUZwhRRW42JvtLh7AqpVQ AqkZhOMsr8viOR3IxC7kj02Iw7Hr5ZgEpKR2eTTCVY7sMSis0ncc7ZzW3BJ12Mg2qq9J4bv20WK7 NYduY0aOIyZe6avRvc/hKvNktalZ15TFZRZXWHkzoAKOoSwLQGfmlEIErBjAVPx+xTFYVlBFKMUB 00KGmebdr8h5fi5tizAZXCyqoxRdkwhYkZCl+rB5jBx+UFx02BZDomrwWZd3IaWSurt6N4bSqU4Q rF2g1HYBLRsViVZrtzQOFQBD+zooBLQKEzD8UFkASe3aRj+ZLtTBMuxByGr9wY16gbTuMXxv+qxR 1RC8RRPJV8B8hJ1QrhLO/Rrrp1qWpTChbLtXIKKudRt2bLg3ZXaHAputYqRsOquVymoKQpWd7Evl +c6Cv2rdM0NPeIeD1CoJ+xaKN00vzjyxLkqcomEjR7x6c7cVdspXDVeNUbOaxH4PU5Th6rS5mBX3 W/qy+uOoyyTrNkb0BSpYsbXeafhYOx/geMBGzcpPnChlPV4D4dfyIEQbPvQEMQ77aITspLKpXO6w UagAgap0w82Cdqg/JWZO1fMg+MIn6nAGSiD3YcoMAEOt1msz8QU64WXwgGwTqzZCDqWuudOq0GCf c1QVFNFHrfFu9HhluZLLZUePEo1dbQYVRUk+vBmMzCZ7IQLC+Sj5w/1um7Fq8osXjCieITqmpt9A k2zNNi0lE10IQlPHGpMAKXDGlgM1aMlkUTHWLeMd3hrnPuFCqZ3dNWGDckCpRMNkQ4lfYwNAtlX4 TygVqu8O0vdljWSbdQcV7HGusw6pMWxyzqHeZRtEQaUDHGqkE00aIbb1urCRDyTP6i7c1WqjWzSK vzler5I9dStRAkYUH4yca7DjRh9hMbRNb6hgj6Iqign8ZrEGZvZHrvZepfqYJnxNNho2PYKBcakg 4STyPw6oa5vdWLYLoIS1G+g6a9YI2hBGNRGzmPys75XkXhVNsHCbNUQxlRECFpq7KqVzaGQ/UzVX Wt9pnD2mNxA2cgcb4TvBtocNb0S0rctaNY4DChB/SAuqTgvh4G/pKtgjtxXE9gWmhKaBuohzYeeH KX0qTG372DUKLA2cgfvZ4BfEOJ0B5kfobl1IQDDDH42M1LKIuKed4wMZFGqM8Ag6d4Tjrae2HwwK XOO9ITOfD9Wp+9pIg9wIscU1CtjK0XUYK+x5jvcmw9+mH93am8H8EcttfsPcljP38WG3MQHOmNqT 0G96gyWnfTcTlICxWJIBYPdZMrx/i7oFSwEm2aCN0BiAlGmTlvC0OlHhnLM+a/EBA5rqm72I9pKN t5H6BFgsqsXUfay9+kd0yIUtHaqdCQrstX3wKJRikqimDY86zm6qiw+m38qkFvtyJH5Ub2iyDXyl jgZnIi8Nzrl1hMiVx7d0BgcMaK6tsKEqtTxBJBlpNWvqy5t3SICcajt95YOKTpDVyrRJXcl1svr4 uSuzscVfRycfE1IIgJQvCiDnrO1hOlobQn5bMAK9JTMqDcOIRpJ9eATr8OvWqZMNCPlUt75apnTS 7jVuTPLgOiz77YktlRNvxpzvyWBvjM2W1WLDh3AHRdOzzPlOY3CRljyCt2/iL96Yd2hv6Hi1OMPc p8pPwEHJdezVLZwC2LWeBUYS1oVYwQHTeJW9S+LOGeN4WA8mEPJQ90AJ7dYAwZYET8QTiVY5HXlJ //UdHQsQYppIvFpfo70I4JVqXtMotBV/z2f7zmcNKhSqlsjAcUz9AXRQfYi492sey793Zpd9kCai YjnPu6MHtbA2Xr4SijerquIMqUz9HPbgIWGJNtpMZe4vDw9XYvLgTZZhA51YbNahwDqh8vfHCuvk tqm2b/sRn+Lw+fcOBB9oGhz4tt3DsRvVBqLSQLSXmXNeR3jGGDHZytVU6Bb9AsCBns7A2cur1cdF 5brkYuJ6VsvPaDXn2pdWn7rv35v8sbqqpmWCpjuHbuT1Luu5JjcZBd45rQauo4ReNAsf9dIR3JZE NMQue1NEox+zTCWiEdMwW4MJ6yFhHWfkXpojs97jO/gOfwsVTQNETdv+6KGtIf4wC+l23PMaNGl9 qrNPbQCeyTktVeMBbsAKu/aqijtlQe3w1sbJ05uYmBOtVdEugbEm4vXdZOU0SfoWPMwSI1zSLS82 us0Y26J4gBN9tBTR2SGog1s4BXz5CNoAqFnWtzm7ZQoadeqpUI2n8HpXhHWAswTb/v/5KnebMke9 blX0djoCcc+TqWNLjYEBGteR6Q+vQfIAjzbTwwYAv5TfZTafnBaI/MumSqzWFSuf3s7XOK9bh6E1 jr3MZR3dJ7ZZmeyxkXKR1/Cg9pEhbfA13eBnXb35KJs35iBOkABtGRzA33nIS/gIZk4fWM1jKVWn BlSpbrS345RLSNLtbYKL7whUxsk5Y2tsfSUEx3T6cG3mkEwUdqxxkXCM6ZkEastTcy6UfRq7MGn4 qzfjqad6TWBly5QOUuE7a4oWzCljwNOlDaIgsq9mH5wDaCSZVZdtLDEa04+mWqj3hFetfrE/fh84 Tmk+nXRwyo1loVn2iO4v+7IZsberDmaiLeDtVcPGvOmQqbsYwu5Yq1Uh1AwvZQInszvP8kDsoVCc TurRbY4mLy7toEk2Wisc3Zxrpvnm09tDWArmqxMlNIDur2KM/9gRzUmF1DLZlCqK9bULhLlhc06w JXt5ZKM52gyaMwHijFl1Ldes6+rz2nTW7z3urk1No+ChdjWJoSZnbqLW0zodvB33DoNleRWUgwa2 6YXZccZhv3J6Yd6qkeSg7mKFn+T4NxuNE9cwepPiFTuMxzn8FFelix8aIlszn9Qp5Gs2HIvzOszP BMeMyRcgMjaj5YVtGqbVYONxWzYb/BqIr3Es+E7GeXhxw7Pl7VXGTXsfBpsIdTA5tYia6jiOQ1uk Xjqw5tiv5zqTuyTb+LIUH6vKPiarrmyOYdGC4mR6XdEhx+CoRILC0wzrqTi9l4oCUQ0Tk/XYbXJa jiieKrfC6Y2I9/q97tDOjnybqx3J1/forI3EGbDmC/q66tMGR2u9+hBahB3NATnNvOcK7lqXD9IZ bMTyuRYsuNsbEfBJe3vDvgauK/9kOlLHYcI39FTIgiUYNfp7JkwcbO/H4NvOVIt7HE7HLCJglAKY S3hZPvaWGLIOVnTXBwZV8Ab03XYFqApHw+s+o2iHh82iu88/62uSU2lsWLRBiSwwLn9BYOdLWnS+ GYvPSjCp61/Vx8AiBKhruEZZDQX+PkX+89vTUI9vZeX4huYvGASUmbWaUBs8xxwu812l24hUHDmb MGctUDcdLvDX0zpHAZzSZvlykAwASboA6fAibZcalTdeYwyeMVJ1QseR3nxRzDZtByLOlT3WbOqp cQXuvHOLFc5wbLOKd3y+xiunfXpj0VmElSGCnlsiw+5Ja2BvV9uB5HEa6/oGvoL6uKbagl60qtA4 wqGpxocNC8WS7/Q7WtjnsDltj2BepiP8p4kROQRPqcTrdQKmFd6TrwWU81ibyapOc7YqR6JXs6IC wqFv8+Zbu0jFPzJliY10o5lGB4ZoO3guBQ/ONvQxotc0IO2JPPaQnd3B+W2LnA3Syn5vDsirVzX4 Eg4941iFpYkwfRvSi+/UNUy8euwQaKyklfq69qfrf/+Bf/6JH/v0869fvv706Y/fffr29W/fPn/9 +c9fv3z58Ze/fI7Pv/38w08/fbo+9N+//fCXr/jQ368//vTX//r1579++7dvv/7n119+w+XXOnz6 9uu3H376P5f/wB/6xx/+B6FH/qXjgQAA headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a2915e93ccce5-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:46 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-canary-78648f6944-vhw6d X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "114" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999990" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_711a51ffa41248a4ace6c821a0561d3e status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from National2023 chunk 1: \\\"National Flag of Canada Day.\\\" WikiMedia Foundation, 2023, Accessed now\\n\\n---\\n\\nJump to content\\n\\nMain menu\\n\\nMain menu\\n\\nmove to sidebar hide\\n\\nNavigation\\n\\n * [Main page](/wiki/Main_Page \\\"Visit the main page \\\\[z\\\\]\\\")\\n * [Contents](/wiki/Wikipedia:Contents \\\"Guides to browsing Wikipedia\\\")\\n * [Current events](/wiki/Portal:Current_events \\\"Articles related to current events\\\")\\n * [Random article](/wiki/Special:Random \\\"Visit a randomly selected article \\\\[x\\\\]\\\")\\n * [About Wikipedia](/wiki/Wikipedia:About \\\"Learn about Wikipedia and how it works\\\")\\n * [Contact us](//en.wikipedia.org/wiki/Wikipedia:Contact_us \\\"How to contact Wikipedia\\\")\\n * [Donate](https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en \\\"Support us by donating to the Wikimedia Foundation\\\")\\n\\nContribute\\n\\n \ * [Help](/wiki/Help:Contents \\\"Guidance on how to use and edit Wikipedia\\\")\\n \ * [Learn to edit](/wiki/Help:Introduction \\\"Learn how to edit Wikipedia\\\")\\n \ * [Community portal](/wiki/Wikipedia:Community_portal \\\"The hub for editors\\\")\\n \ * [Recent changes](/wiki/Special:RecentChanges \\\"A list of recent changes to Wikipedia \\\\[r\\\\]\\\")\\n * [Upload file](/wiki/Wikipedia:File_upload_wizard \\\"Add images or other media for use on Wikipedia\\\")\\n\\n[ ![](/static/images/icons/wikipedia.png)\\n![Wikipedia](/static/images/mobile/copyright/wikipedia-wordmark-en.svg) ![The\\nFree Encyclopedia](/static/images/mobile/copyright/wikipedia-tagline-en.svg)\\n](/wiki/Main_Page)\\n\\n[ Search ](/wiki/Special:Search \\\"Search Wikipedia \\\\[f\\\\]\\\")\\n\\nSearch\\n\\nAppearance\\n\\n \ * [Create account](/w/index.php?title=Special:CreateAccount&returnto=National+Flag+of+Canada+Day \\\"You are encouraged to create an account and log in; however, it is not mandatory\\\")\\n \ * [Log in](/w/index.php?title=Special:UserLogin&returnto=National+Flag+of+Canada+Day \\\"You're encouraged to log in; however, it's not mandatory. \\\\[o\\\\]\\\")\\n\\nPersonal tools\\n\\n * [ Create account](/w/index.php?title=Special:CreateAccount&returnto=National+Flag+of+Canada+Day \\\"You are encouraged to create an account and log in; however, it is not mandatory\\\")\\n \ * [ Log in](/w/index.php?title=Special:UserLogin&returnto=National+Flag+of+Canada+Day \\\"You're encouraged to log in; however, it's not mandatory. \\\\[o\\\\]\\\")\\n\\nPages for logged out editors [learn more](/wiki/Help:Introduction)\\n\\n * [Contributions](/wiki/Special:MyContributions \\\"A list of edits made from this IP address \\\\[y\\\\]\\\")\\n * [Talk](/wiki/Special:MyTalk \\\"Discussion about edits from this IP address \\\\[n\\\\]\\\")\\n\\n## Contents\\n\\nmove to sidebar hide\\n\\n * (Top)\\n * 1 History Toggle History subsection\\n \ * 1.1 Background\\n * 1.2 Flag Day\\n * 2 See also\\n * 3 Footnotes\\n \ * 4 External links\\n\\nToggle the table of contents\\n\\n# National Flag of Canada Day\\n\\n7 languages\\n\\n * [\u0627\u0644\u0639\u0631\u0628\u064A\u0629](https://ar.wikipedia.org/wiki/%D9%8A%D9%88%D9%85_%D8%B9%D9%84%D9%85_%D9%83%D9%86%D8%AF%D8%A7_%D8%A7%D9%84%D9%88%D8%B7%D9%86%D9%8A \\\"\u064A\u0648\u0645 \u0639\u0644\u0645 \u0643\u0646\u062F\u0627 \u0627\u0644\u0648\u0637\u0646\u064A \u2013 Arabic\\\")\\n * [Espa\xF1ol](https://es.wikipedia.org/wiki/D%C3%ADa_de_la_Bandera_Nacional_de_Canad%C3%A1 \\\"D\xEDa de la Bandera Nacional de Canad\xE1 \u2013 Spanish\\\")\\n * [Fran\xE7ais](https://fr.wikipedia.org/wiki/Jour_du_drapeau_national_du_Canada \\\"Jour du drapeau national du Canada \u2013 French\\\")\\n * [\u0540\u0561\u0575\u0565\u0580\u0565\u0576](https://hy.wikipedia.org/wiki/%D4%BF%D5%A1%D5%B6%D5%A1%D5%A4%D5%A1%D5%B5%D5%AB_%D5%A1%D5%A6%D5%A3%D5%A1%D5%B5%D5%AB%D5%B6_%D5%A4%D6%80%D5%B8%D5%B7%D5%AB_%D6%85%D6%80 \\\"\u053F\u0561\u0576\u0561\u0564\u0561\u0575\u056B \u0561\u0566\u0563\u0561\u0575\u056B\u0576 \u0564\u0580\u0578\u0577\u056B \u0585\u0580 \u2013 Armenian\\\")\\n * [\u05E2\u05D1\u05E8\u05D9\u05EA](https://he.wikipedia.org/wiki/%D7%99%D7%95%D7%9D_%D7%94%D7%93%D7%92%D7%9C_%D7%94%D7%9C%D7%90%D7%95%D7%9E%D7%99_%D7%A9%D7%9C_%D7%A7%D7%A0%D7%93%D7%94 \\\"\u05D9\u05D5\u05DD \u05D4\u05D3\u05D2\u05DC \u05D4\u05DC\u05D0\u05D5\u05DE\u05D9 \u05E9\u05DC \u05E7\u05E0\u05D3\u05D4 \u2013 Hebrew\\\")\\n * [Bahasa Melayu](https://ms.wikipedia.org/wiki/Hari_Bendera_Kebangsaan_Kanada \\\"Hari Bendera Kebangsaan Kanada \u2013 Malay\\\")\\n * [Polski](https://pl.wikipedia.org/wiki/Narodowy_dzie%C5%84_flagi_Kanady \\\"Narodowy dzie\u0144 flagi Kanady \u2013 Polish\\\")\\n\\n[Edit\\nlinks](https://www.wikidata.org/wiki/Special:EntityPage/Q6972703#sitelinks-\\nwikipedia \\\"Edit interlanguage links\\\")\\n\\n * [Article](/wiki/National_Flag_of_Canada_Day \\\"View the content page \\\\[c\\\\]\\\")\\n * [Talk](/wiki/Talk:National_Flag_of_Canada_Day \\\"Discuss improvements to the content page \\\\[t\\\\]\\\")\\n\\nEnglish\\n\\n \ * [Read](/wiki/National_Flag_of_Canada_Day)\\n * [Edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit \\\"Edit this page \\\\[e\\\\]\\\")\\n * [View history](/w/index.php?title=National_Flag_of_Canada_Day&action=history \\\"Past revisions of this page \\\\[h\\\\]\\\")\\n\\nTools\\n\\nTools\\n\\nmove to sidebar hide\\n\\nActions\\n\\n * [Read](/wiki/National_Flag_of_Canada_Day)\\n \ * [Edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit \\\"Edit this page \\\\[e\\\\]\\\")\\n * [View history](/w/index.php?title\\n\\n---\\n\\nQuestion: What is the national flag of Canada?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "5775" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41SwW6jMBC95yuQz0kFKClhj1UP1Wr3UGl7KhVy7Alxa2zLM0TbRvn32pAU0t1K vYB4b95j5s0cZknClGQ/EiZ2nETr9OL2prz/nW/W95u7dvUm12sqf9m3h/2yuPnzk82jwm6eQdBZ dSVs0AEpawZaeOAE0TUrimy1SvP0uidaK0FHWeNosbSLPM2XiywL75NwZ5UADBWP4TNJDv0ztmgk /A1wOj8jLSDyBgJ2LgqgtzoijCMqJG6IzUdSWENg+q4PlUmSimHXtty/VgGqWMXmA+pBw54bATUK 6yGyaWWOUysP2w55nMR0Wk8IbowlHpPoh3g6McePtrVtnLcb/CRlW2UU7uoQHIYUQ4tI1rGePYbn Ux9PdzExC0ato5rsC/S/y65Xy8GQjRuZ0ieSQot6ihenWC8dawnElcZJxExwsQM5asd98E4qOyFm k7n/bed/3sPsyjTfsR8JIcCFY6udB6nE5chjmYd4sV+VfeTcN8wQ/D7cYU0KfNyFhC3v9HBMDF+R oK3DwhrwzqvhorauLspclDwti4LNjrN3UmEDS1oDAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a291768aede51-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:47 GMT Server: - cloudflare Set-Cookie: - __cf_bm=1KxhYXTJYZSnIl_PfhfutDKBaWTSkSycFLaUdFjgf30-1771550206.6268067-1.0.1.1-ika6lj0adysB3ie1XHCZmt7tPDed_vUIoXECtx2yEeT11XZ0gMGMMxFKf2.AU1CoSKnVhfdHw27w5LbN4UN0THbYY9kQsY3WipCpkW483HR0WUYzk.WPZ7_Tnkz84ILY; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:46:47 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "383" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998637" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 2ms x-request-id: - req_c4b117fe25ea4786a23bc61d7e03c6d3 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from National2023 chunk 4: \\\"National Flag of Canada Day.\\\" WikiMedia Foundation, 2023, Accessed now\\n\\n---\\n\\n2010.\\n 8. **^** [Dept. of Canadian Heritage news release](http://www.pch.gc.ca/pc-ch/infoCntr/cdm-mc/index-eng.cfm?action=doc&DocIDCd=CJM092444) [Archived](https://web.archive.org/web/20110706182436/http://www.pch.gc.ca/pc-ch/infoCntr/cdm-mc/index-eng.cfm?action=doc&DocIDCd=CJM092444) July 6, 2011, at the [Wayback Machine](/wiki/Wayback_Machine \\\"Wayback Machine\\\"), February 15, 2010. Retrieved February 15, 2011.\\n 9. **^** [PM pays tribute to outstanding Canadians on Flag Day](http://www.pm.gc.ca/eng/media.asp?category=1&id=3958&featureId=6&pageId=26) [Archived](https://web.archive.org/web/20110706181811/http://www.pm.gc.ca/eng/media.asp?category=1&id=3958&featureId=6&pageId=26) July 6, 2011, at the [Wayback Machine](/wiki/Wayback_Machine \\\"Wayback Machine\\\"), Prime Minister's Office news release. Retrieved February 16, 2011.\\n\\n## External links\\n\\n[[edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit§ion=6\\n\\\"Edit section: External links\\\")]\\n\\n![](//upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/30px-\\nCommons-logo.svg.png)\\n\\nWikimedia Commons has media related to [National Flag of Canada\\nDay](https://commons.wikimedia.org/wiki/Category:National_Flag_of_Canada_Day\\n\\\"commons:Category:National Flag of Canada Day\\\").\\n\\n * [Flag of Canada Song (1965) Freddie Grant](https://www.youtube.com/watch?v=2IkqmkTK46E)\\n \ * [Flag Day](http://www.pch.gc.ca/special/jdn-nfd/index-eng.cfm), Dept. of Canadian Heritage \\n * [The famous Canadian Flag Collection, at Settlers, Rails & Trails Inc, Argyle, Manitoba](http://argylemuseum.wixsite.com/argylemuseum/canadian-flag-collection)\\n\\n![](https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1)\\n\\nRetrieved from\\n\\\"[https://en.wikipedia.org/w/index.php?title=National_Flag_of_Canada_Day&oldid=1231946994](https://en.wikipedia.org/w/index.php?title=National_Flag_of_Canada_Day&oldid=1231946994)\\\"\\n\\n[Categories](/wiki/Help:Category \\\"Help:Category\\\"):\\n\\n * [1996 establishments in Canada](/wiki/Category:1996_establishments_in_Canada \\\"Category:1996 establishments in Canada\\\")\\n * [Public holidays in Canada](/wiki/Category:Public_holidays_in_Canada \\\"Category:Public holidays in Canada\\\")\\n * [February observances](/wiki/Category:February_observances \\\"Category:February observances\\\")\\n * [Flag days](/wiki/Category:Flag_days \\\"Category:Flag days\\\")\\n * [Winter events in Canada](/wiki/Category:Winter_events_in_Canada \\\"Category:Winter events in Canada\\\")\\n\\nHidden categories:\\n\\n * [Webarchive template wayback links](/wiki/Category:Webarchive_template_wayback_links \\\"Category:Webarchive template wayback links\\\")\\n * [Articles with short description](/wiki/Category:Articles_with_short_description \\\"Category:Articles with short description\\\")\\n * [Short description matches Wikidata](/wiki/Category:Short_description_matches_Wikidata \\\"Category:Short description matches Wikidata\\\")\\n * [Use mdy dates from February 2018](/wiki/Category:Use_mdy_dates_from_February_2018 \\\"Category:Use mdy dates from February 2018\\\")\\n * [Infobox holiday with missing field](/wiki/Category:Infobox_holiday_with_missing_field \\\"Category:Infobox holiday with missing field\\\")\\n * [Infobox holiday fixed day](/wiki/Category:Infobox_holiday_fixed_day \\\"Category:Infobox holiday fixed day\\\")\\n * [Articles containing French-language text](/wiki/Category:Articles_containing_French-language_text \\\"Category:Articles containing French-language text\\\")\\n * [Commons category link is on Wikidata](/wiki/Category:Commons_category_link_is_on_Wikidata \\\"Category:Commons category link is on Wikidata\\\")\\n\\n * This page was last edited on 1 July 2024, at 03:41 (UTC). \\n * Text is available under the [Creative Commons Attribution-ShareAlike License 4.0](//en.wikipedia.org/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License)[](//en.wikipedia.org/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License); additional terms may apply. By using this site, you agree to the [Terms of Use](//foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use) and [Privacy Policy](//foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy). Wikipedia\xAE is a registered trademark of the [Wikimedia Foundation, Inc.](//wikimediafoundation.org/), a non-profit organization. \\n\\n * [Privacy policy](https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy)\\n \ * [About Wikipedia](/wiki/Wikipedia:About)\\n * [Disclaimers](/wiki/Wikipedia:General_disclaimer)\\n \ * [Contact Wikipedia](//en.wikipedia.org/wiki/Wikipedia:Contact_us)\\n * [Code of Conduct](https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct)\\n \ * [Developers](https://developer.wikimedia.org)\\n * [Statistics](https://stats.wikimedia.org/#/en.wikipedia.org)\\n \ * [Cookie statement](https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement)\\n \ * [Mobile view](//en.m.wikipedia.org/w/index.php?title=National_Flag_of_Canada_Day&mobileaction=toggle_view_mobile)\\n\\n \ * [![Wikimedia Foundation](/static/images/footer/wikimedia-button.svg)](https://wikimediafoundation.org/)\\n \ * [![Powered by MediaWiki](/w/resources/assets/poweredby_mediawiki.svg)](https://www.mediawiki.org/)\\n\\n \ * \\n\\n---\\n\\nQuestion: What is the national flag of Canada?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6222" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41TTW8aMRC98ytGvuQCEaAESo9J+oGURKrUqIcSrQZ7dnHjtS3bS0kj/nvGC2Sh H1IvtjxvZvxm3sxLD0BoJd6DkCtMsvZmcHM1+3L38/Z6Xpn7zcXd508Pv749+Nt5+HDltejnCLf8 QTIdos6l4zhK2tkdLANhopx1NJ2OLi+H4+GkBWqnyOSwyqfBhRuMh+OLwWjE9z5w5bSkyB7f+Qnw 0p6ZolW0YfOwf7DUFCNWxLaDExuDM9kiMEYdE9ok+h0onU1kW9YvCwuwELGpawzPCzYtxNcVAW0k BZ9AOYpgXQIf3ForAgSlA5cMiqIM2udawZWQOMhifqGB0mCVjddoUeE5zBPU/CGDEc7uD14fT7zg Bp/PAK0CbaVpOD0YbZ8iJAeBTG4j39E1gfvSh2WTmBdET1KXWjKdhNpEwKVjJLNpSegUyZSAgQ4V qPOF6O+q5rS0RiupiNIFytUPF3Z73KpAZRMxK2UbY44AtNyVtpJWpMc9sn2TxbiKf1zG30JFqa2O q4IHI/KUsAQxOS9adMvnYyt/c6Ko4ES1T0VyT9R+N5qM9vqLbuI6+PLdHkxM0RyHTQ7IScZi37yj ERIS5YpUF9vNGzZKuyOgd1T3n3T+lntXu7bV/6TvACnJ8xQUPpDS8rTkzi1Q3sh/ub31uSUsIoU1 71mRNIWshaISG7NbFhGfY6K6YMEq3oWgdxtT+mI6G8sZDmfTqehte6/La0qNOgQAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29176f1f3c7d-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:47 GMT Server: - cloudflare Set-Cookie: - __cf_bm=f2uS_Ca1_rZKiqRP5.mI6dxpmuXkCiAGNuiOijX0FKc-1771550206.6263182-1.0.1.1-W.qQbEkBFkPUMtONB2FBrPBWDOaDUBlqkcvf1hSl13Jpmn7_KmCTgvNs0MRhALiKwDb9VoMpNM4clz7cAr30gkMfvifaGqwOeBbt97eHt1gZwjK.oehTgX4QB8sBuP.j; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:46:47 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "722" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998503" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 2ms x-request-id: - req_34b02a3adb1f409f9384755cb9caa496 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from National2023 chunk 3: \\\"National Flag of Canada Day.\\\" WikiMedia Foundation, 2023, Accessed now\\n\\n---\\n\\n an [Order in\\nCouncil](/wiki/Order_in_Council \\\"Order in Council\\\") from [Governor\\nGeneral](/wiki/Governor_General_of_Canada \\\"Governor General of Canada\\\") [Rom\xE9o\\nLeBlanc](/wiki/Rom%C3%A9o_LeBlanc \\\"Rom\xE9o LeBlanc\\\"), on the initiative of Prime\\nMinister [Jean Chr\xE9tien](/wiki/Jean_Chr%C3%A9tien \\\"Jean Chr\xE9tien\\\").[7] At the\\nfirst Flag Day ceremony in [Hull, Quebec](/wiki/Hull,_Quebec \\\"Hull, Quebec\\\"),\\nChr\xE9tien was confronted by demonstrators against proposed cuts to the\\n[unemployment insurance](/wiki/Unemployment_insurance \\\"Unemployment\\ninsurance\\\") system, and while walking through the crowd he was [grabbed by the\\nneck and pushed aside](/wiki/Shawinigan_Handshake \\\"Shawinigan Handshake\\\") a\\nprotester who had approached him.\\n\\nIn 2010, on the flag's 45th anniversary, federal ceremonies were held to mark\\nFlag Day at [Ottawa](/wiki/Ottawa \\\"Ottawa\\\"), [Winnipeg](/wiki/Winnipeg\\n\\\"Winnipeg\\\"), [St. John's](/wiki/St._John%27s,_Newfoundland_and_Labrador \\\"St.\\nJohn's, Newfoundland and Labrador\\\"), and at\\n[Whistler](/wiki/Whistler,_British_Columbia \\\"Whistler, British Columbia\\\") and\\n[Vancouver](/wiki/Vancouver \\\"Vancouver\\\") in conjunction with the [2010 Winter\\nOlympics](/wiki/2010_Winter_Olympics \\\"2010 Winter Olympics\\\") in Vancouver.[8]\\nIn 2011, Prime Minister [Stephen Harper](/wiki/Stephen_Harper \\\"Stephen\\nHarper\\\") observed Flag Day by presenting two citizens, whose work honoured the\\n[military](/wiki/Canadian_Armed_Forces \\\"Canadian Armed Forces\\\"), with Canadian\\nflags that had flown over the [Peace Tower](/wiki/Peace_Tower \\\"Peace Tower\\\").\\nIt was announced as inaugurating an annual recognition of patriotism.[9]\\n\\n## See also\\n\\n[[edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit§ion=4\\n\\\"Edit section: See also\\\")]\\n\\n * ![flag](//upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Maple_Leaf_%28from_roundel%29.svg/25px-Maple_Leaf_%28from_roundel%29.svg.png)[Canada portal](/wiki/Portal:Canada \\\"Portal:Canada\\\")\\n\\n * [Flag Day](/wiki/Flag_Day \\\"Flag Day\\\")\\n * [List of Canadian flags](/wiki/List_of_Canadian_flags \\\"List of Canadian flags\\\")\\n * [National flag](/wiki/National_flag \\\"National flag\\\")\\n\\n## Footnotes\\n\\n[[edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit§ion=5\\n\\\"Edit section: Footnotes\\\")]\\n\\n 1. **^** [Department of Canadian Heritage](/wiki/Department_of_Canadian_Heritage \\\"Department of Canadian Heritage\\\"). [\\\"Ceremonial and Canadian Symbols Promotion > The National Flag of Canada\\\"](https://web.archive.org/web/20100423114158/http://www.canadianheritage.gc.ca/progs/cpsc-ccsp/sc-cs/df1_e.cfm). Queen's Printer for Canada. Archived from [the original](http://www.canadianheritage.gc.ca/progs/cpsc-ccsp/sc-cs/df1_e.cfm) on April 23, 2010. Retrieved March 21, 2010.\\n 2. ^ _**a**_ _**b**_ Government of Canada, Public Services and Procurement Canada (July 31, 2015). [\\\"Infographic: National Flag of Canada Day \u2013 February 15 \u2013 Canada's Parliamentary Precinct \u2013 PWGSC\\\"](https://www.tpsgc-pwgsc.gc.ca/citeparlementaire-parliamentaryprecinct/decouvrez-discover/jour-drap-flag-day-eng.html). _www.tpsgc-pwgsc.gc.ca_. Retrieved February 5, 2022.\\n 3. ^ _**a**_ _**b**_ [\\\"What is the National Flag Day of Canada?\\\"](http://westernfinancialgroup.ca/What-is-the-National-Flag-of-Canada-Day). _westernfinancialgroup.ca_. Retrieved February 5, 2022.\\n 4. **^** [Department of Canadian Heritage](/wiki/Department_of_Canadian_Heritage \\\"Department of Canadian Heritage\\\"). [\\\"Ceremonial and Canadian Symbols Promotion > The National Flag of Canada > Birth of the Canadian flag\\\"](http://www.pch.gc.ca/pgm/ceem-cced/symbl/df3-eng.cfm). Queen's Printer for Canada. [Archived](https://web.archive.org/web/20100224005050/http://www.pch.gc.ca/pgm/ceem-cced/symbl/df3-eng.cfm) from the original on February 24, 2010. Retrieved March 21, 2010.\\n 5. **^** [\\\"Birth of the Canadian flag\\\"](http://www.pch.gc.ca/pgm/ceem-cced/symbl/df3-eng.cfm). [Department of Canadian Heritage](/wiki/Department_of_Canadian_Heritage \\\"Department of Canadian Heritage\\\"). [Archived](https://web.archive.org/web/20081220170253/http://www.pch.gc.ca/pgm/ceem-cced/symbl/df3-eng.cfm) from the original on December 20, 2008. Retrieved December 16, 2008.\\n 6. **^** [Conserving the Proclamation of the Canadian Flag](http://www.collectionscanada.gc.ca/publications/archivist-magazine/015002-2021-e.html) [Archived](https://web.archive.org/web/20121021133944/http://www.collectionscanada.gc.ca/publications/archivist-magazine/015002-2021-e.html) October 21, 2012, at the [Wayback Machine](/wiki/Wayback_Machine \\\"Wayback Machine\\\"), Library and Archives of Canada, from John Grace in The Archivist, National Archives, Ottawa, 1990. Retrieved February 15, 2011.\\n 7. **^** [Department of Canadian Heritage](/wiki/Department_of_Canadian_Heritage \\\"Department of Canadian Heritage\\\"). [\\\"National Flag of Canada Day\\\"](http://www.pch.gc.ca/special/jdn-nfd/index-eng.cfm). Queen's Printer for Canada. [Archived](https://web.archive.org/web/20100217042202/http://www.pch.gc.ca/special/jdn-nfd/index-eng.cfm) from the original on February 17, 2010. Retrieved March 21, 2010.\\n 8. **^** [Dept. of Canadian Heritage news release](http://www.pch.gc.ca/pc-ch/infoCntr/cdm-mc/index-eng.cfm?action=doc&DocIDCd=CJM092444) [Archived](https://web.archive.org/web/20110706182436/http://www.pch.gc.ca/pc-ch/infoCntr/cdm-mc/index-eng.cfm?action=doc&DocIDCd=CJM092444) July 6, 2011, at the [Wayback Machine](/wiki/Wayback_Machine \\\"Wayback Machine\\\"), February 15, 2010. Retrieved February 15, 2011.\\n \\n\\n---\\n\\nQuestion: What is the national flag of Canada?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6470" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41Ty27bMBC8+ysWPNuGZcRR3GMbFEGLFm2QWx0INLWSmFKkwKUcC4b/vUvJjuw+ gF702NkZDvdxmAAInYt3IFQlg6obM7t/v/7+5eHWLT4padL94121elqHR/fZfHtBMY0Mt31BFc6s uXLMw6CdHWDlUQaMqkmaJqvVYrm47YHa5WgirWzC7MbNlovlzSxJ+H0iVk4rJM74wb8Ah/4ZLdoc 9xxeTM+RGolkiRw7J3HQOxMjQhJpCtIGMR1B5WxA27s+bCzARlBb19J3Gw5txFOFgHuFvgmQa1It ERIEjn6V8WrSwEcjS3AFfJBW5hLuZQfS5qADQcXnOd9NQVtl2lzbElgKa2c1q8Qs3PHh/EnklI7l gVcdqv6AgnXn8OBeOcezBBtwzLIuOvFcadNBjqS83mJPsGdHxbUjdoKmmAK1quKTemdM1KUF54G6 euuMpnq+EdOhAh4N7qRVmJFyHmMllht7vCybx6IlGbtmW2MuAGnZYG+kb9jzCTm+tci4svFuS79R RaGtpirjISGeGG4Hl64RPXrk53M/Cu1VdwUL1U3IgvuJ/XHJXZIMgmKcvhFerU9gYIvmkpaeRuha McsxSG3oYpyEkqrCfOSOsye5we4CmFzc+087f9Me7s5T8j/yI6AUNjw5WeMx1+r6ymOax7id/0p7 q3NvWBD6He9cFjT62IscC9maYXEEdRSwzrhhJe+F18P2FE2WrpdqLRfrNBWT4+QXlL9wMEYEAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29176947ce4c-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:47 GMT Server: - cloudflare Set-Cookie: - __cf_bm=3ET2ivQtxBvIIHd1WdsH_ljoGk9cxv0D.J.PVEBkNKU-1771550206.6244879-1.0.1.1-kInT_8j5g_DYOi9yDhiKS4buvHrWm7iaNNOBcxlXKzRP1eVHk9tk7_fXf1Lv_7TW33AwJhIOKUX290UpLnZkDBPw8zViNQzMJA.q7xUcQMQV5JsDbchBxYm8g.0soHD8; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:46:47 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "836" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9998" x-ratelimit-remaining-tokens: - "29998446" x-ratelimit-reset-requests: - 7ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_19376f9df199467ca5c0cc45966272f1 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from unknownauthorsUnknownyeargravityhill lines 0-44: Unknown author(s). Gravity hill. Poetry in America, pages 15-15, Unknown year. URL: https://doi.org/10.2307/j.ctt5vkfh7.11, doi:10.2307/j.ctt5vkfh7.11. This article has 0 citations.\\n\\n---\\n\\n# Gravity hill\\n\\n> \\\"Magnetic hill\\\" and \\\"Mystery hill\\\" redirect here. For other uses,\\n> see [Magnetic Hill (disambiguation)]()\\n> and [Mystery Hill (disambiguation)](https://en.wikipedia.org/wiki/Mystery_Hill).\\n\\nA **gravity hill**, also known as a\\n**magnetic hill**, **mystery hill**, **mystery spot**, **gravity road**, or **anti-gravity hill**,\\nis a place where the layout of the surrounding land produces an [illusion](https://en.wikipedia.org/wiki/Illusion),\\nmaking a slight downhill slope appear to be an uphill slope.\\nThus, a car left out of gear will appear to be rolling uphill against [gravity](https://en.wikipedia.org/wiki/Gravity).\\n\\nAlthough the slope of gravity hills is an illusion,\\nsites are often accompanied by claims that magnetic or supernatural forces are at work.\\nThe most important factor contributing to the illusion is a completely\\nor mostly obstructed horizon.\\nWithout a horizon,\\nit becomes difficult for a person to judge the slope of a surface,\\nas a reliable reference point is missing,\\nand misleading visual cues can adversely affect the sense of balance.\\nObjects which one would normally assume to be more or less perpendicular to the ground,\\nsuch as trees, may be leaning, offsetting the visual reference.\\n\\nA 2003 study looked into how the absence of a horizon can skew the perspective on gravity hills,\\nby recreating a number of antigravity places in the lab to see how volunteers would react.\\nIn conclusion, researchers from the Universities of Padua and Pavia in Italy\\nfound that without a true horizon in sight,\\nthe human brain could be tricked by common landmarks such as trees and signs.\\n\\nThe illusion is similar to the [Ames room](https://en.wikipedia.org/wiki/Ames_room),\\nin which objects can also appear to roll against gravity.\\n\\nThe opposite phenomenon\u2014an uphill road that appears flat\u2014is known in\\n[bicycle racing](https://en.wikipedia.org/wiki/Cycle_sport)\\nas a [\\\"false flat\\\"](https://en.wikipedia.org/wiki/Glossary_of_cycling#F).\\n\\n## See also\\n\\n- [List of gravity hills](https://en.wikipedia.org/wiki/List_of_gravity_hills)\\n- [The Crooked House](https://en.wikipedia.org/wiki/The_Crooked_House) \u2013\\n \ a pub (now demolished) with an internal gravity hill illusion.\\n\\n## References\\n\\n## External links\\n\\n---\\n\\nQuestion: What is the national flag of Canada?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "3375" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41SwWrjMBC95yvMnJNimyQmeyxlT22hUEqXuhhVmtjaypKqkcuGkH9fyU5qp+3C Xmz83rznmTeznyUJSAE/EuAN87y1anF1ubm7vd/lj+vrtH1TP6+a5fouFQ831439BfOoMC+/kfuT 6oKboEMvjR5o7pB5jK5ZUWSrVZqnRU+0RqCKstr6xdIs8jRfLrIsvI/CxkiOFCqewmeS7PtnbFEL /BPgdH5CWiRiNQbsVBRAZ1REgBFJ8kx7mI8kN9qj7rvelzpJSqCubZnblQEqoYT5gDpU+M40x4q4 cRjZtNSHqZXDbUcsTqI7pSYE09p4FpPoh3g+MoePtpWprTMv9EkKW6klNVUIjkKKoUXyxkLPHsLz uY+nO5sYglFrfeXNK/a/K1bLwQ/GhYxstj6SPnSoJqriGOq5XyXQM6loEjBwxhsUo3TcBuuENBNi Npn6azffeQ+TS13/j/1IcI42nFplHQrJzyceyxzGe/1X2UfKfcNA6N7DFVZeooubELhlnRpOCWhH HtsqrKtGZ50c7mlrq2KT8w1LN0UBs8PsL4KdQ1ZYAwAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a291a7fa3de51-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:47 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "366" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29999203" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 1ms x-request-id: - req_3fe52395696f478cb82ffdfbf4c62b91 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from National2023 chunk 2: \\\"National Flag of Canada Day.\\\" WikiMedia Foundation, 2023, Accessed now\\n\\n---\\n\\n_Flag_of_Canada_Day)\\n * [Edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit \\\"Edit this page \\\\[e\\\\]\\\")\\n * [View history](/w/index.php?title=National_Flag_of_Canada_Day&action=history \\\"Past revisions of this page \\\\[h\\\\]\\\")\\n\\nTools\\n\\nTools\\n\\nmove to sidebar hide\\n\\nActions\\n\\n * [Read](/wiki/National_Flag_of_Canada_Day)\\n \ * [Edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit \\\"Edit this page \\\\[e\\\\]\\\")\\n * [View history](/w/index.php?title=National_Flag_of_Canada_Day&action=history)\\n\\nGeneral\\n\\n \ * [What links here](/wiki/Special:WhatLinksHere/National_Flag_of_Canada_Day \\\"List of all English Wikipedia pages containing links to this page \\\\[j\\\\]\\\")\\n \ * [Related changes](/wiki/Special:RecentChangesLinked/National_Flag_of_Canada_Day \\\"Recent changes in pages linked from this page \\\\[k\\\\]\\\")\\n * [Upload file](/wiki/Wikipedia:File_Upload_Wizard \\\"Upload files \\\\[u\\\\]\\\")\\n \ * [Special pages](/wiki/Special:SpecialPages \\\"A list of all special pages \\\\[q\\\\]\\\")\\n * [Permanent link](/w/index.php?title=National_Flag_of_Canada_Day&oldid=1231946994 \\\"Permanent link to this revision of this page\\\")\\n * [Page information](/w/index.php?title=National_Flag_of_Canada_Day&action=info \\\"More information about this page\\\")\\n * [Cite this page](/w/index.php?title=Special:CiteThisPage&page=National_Flag_of_Canada_Day&id=1231946994&wpFormIdentifier=titleform \\\"Information on how to cite this page\\\")\\n * [Get shortened URL](/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FNational_Flag_of_Canada_Day)\\n \ * [Download QR code](/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FNational_Flag_of_Canada_Day)\\n \ * [Wikidata item](https://www.wikidata.org/wiki/Special:EntityPage/Q6972703 \\\"Structured data on this page hosted by Wikidata \\\\[g\\\\]\\\")\\n\\nPrint/export\\n\\n \ * [Download as PDF](/w/index.php?title=Special:DownloadAsPdf&page=National_Flag_of_Canada_Day&action=show-download-screen \\\"Download this page as a PDF file\\\")\\n * [Printable version](/w/index.php?title=National_Flag_of_Canada_Day&printable=yes \\\"Printable version of this page \\\\[p\\\\]\\\")\\n\\nIn other projects\\n\\n \ * [Wikimedia Commons](https://commons.wikimedia.org/wiki/Category:National_Flag_of_Canada_Day)\\n\\nAppearance\\n\\nmove to sidebar hide\\n\\nFrom Wikipedia, the free encyclopedia\\n\\nCanadian holiday\\n\\nNational Flag of Canada Day \\n--- \\n[![](//upload.wikimedia.org/wikipedia/commons/thumb/6/68/Canada_flag_halifax_9_-04.JPG/250px-\\nCanada_flag_halifax_9_-04.JPG)](/wiki/File:Canada_flag_halifax_9_-04.JPG) The\\nnational flag of Canada \\nObserved by | [Canada](/wiki/Canada \\\"Canada\\\") \ \\nDate | [February 15](/wiki/February_15 \\\"February 15\\\") \\nNext time \ | February 15, 2025 (2025-02-15) \\nFrequency | Annual \\n \\n**National Flag of Canada Day** ([French](/wiki/French_language \\\"French\\nlanguage\\\"): _Jour du drapeau national du Canada_), commonly shortened to\\n**Flag Day** , is observed annually on February 15 to commemorate the\\ninauguration of the [flag of Canada](/wiki/Flag_of_Canada \\\"Flag of Canada\\\") on\\nthat date in 1965.[1] The day is marked by flying the flag, occasional public\\nceremonies and educational programs in schools. It is not a [public\\nholiday](/wiki/Public_holidays_in_Canada \\\"Public holidays in Canada\\\"),\\nalthough there has been discussion about creating one.\\n\\n## History\\n\\n[[edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit§ion=1\\n\\\"Edit section: History\\\")]\\n\\n### Background\\n\\n[[edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit§ion=2\\n\\\"Edit section: Background\\\")]\\n\\nAmid [much controversy](/wiki/Great_Canadian_flag_debate \\\"Great Canadian flag\\ndebate\\\"), the [Parliament of Canada](/wiki/Parliament_of_Canada \\\"Parliament of\\nCanada\\\") in 1964 voted to adopt a new design for the [Canadian\\nflag](/wiki/Flag_of_Canada \\\"Flag of Canada\\\") and issued a call for\\nsubmissions.[2]\\n\\nThis flag would replace the [Canadian Red Ensign](/wiki/Canadian_Red_Ensign\\n\\\"Canadian Red Ensign\\\"), which had been, with various successive alterations,\\nin conventional use as the national flag of [Canada](/wiki/Canada \\\"Canada\\\")\\nsince 1868. Nearly 4,000 designs were submitted by Canadians.[2] On October\\n22, 1964, the [Maple Leaf flag](/wiki/Maple_Leaf_flag \\\"Maple Leaf\\nflag\\\")\u2014designed by historian [George Stanley](/wiki/George_Stanley \\\"George\\nStanley\\\")\u2014won with a unanimous vote.[3] Under the leadership of [Prime\\nMinister](/wiki/Prime_Minister_of_Canada \\\"Prime Minister of Canada\\\") [Lester\\nPearson](/wiki/Lester_B._Pearson \\\"Lester B. Pearson\\\"), resolutions\\nrecommending the new design were passed by the [House of\\nCommons](/wiki/House_of_Commons_of_Canada \\\"House of Commons of Canada\\\") on\\nDecember 15, 1964, and by the [Senate](/wiki/Senate_of_Canada \\\"Senate of\\nCanada\\\") two days later.[4]\\n\\nThe flag was proclaimed by [Elizabeth II](/wiki/Elizabeth_II \\\"Elizabeth II\\\"),\\n[Queen of Canada](/wiki/Monarchy_of_Canada \\\"Monarchy of Canada\\\"), on January\\n28, 1965,[3][5] and took effect \\\"upon, from and after\\\" February 15 that\\nyear.[6]\\n\\n### Flag Day\\n\\n[[edit](/w/index.php?title=National_Flag_of_Canada_Day&action=edit§ion=3\\n\\\"Edit section: Flag Day\\\")]\\n\\nNational Flag of Canada Day was instituted in 1996 by an [Order in\\nCouncil](/wiki/Order_in_Council \\\"Order in Council\\\") from [Governor\\nGeneral](/wiki/Governor_General_of_Canada \\\"Governor General of Canada\\\") [Rom\xE9o\\nLeBlanc](/wiki/Rom%C3%A9o_LeBlanc \\\"Rom\xE9o LeBlanc\\\"), on the initiative of Prime\\nMinister [Jean Chr\xE9tien](/wiki/Jean_Chr%C3%A9tien \\\"Jean Chr\xE9tien\\\").[7] At the\\nfirst Flag Day ceremony in [Hull, Quebec](/wiki/Hull,_Quebec \\\"Hull, Quebec\\\"),\\nChr\xE9tien was confronted by demonstrators against proposed cuts to the\\n[un\\n\\n---\\n\\nQuestion: What is the national flag of Canada?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6703" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41UwW7bMAy95ysInZ0gzpKm2XHr0hVbB2wdethSGIxMO1plyZDktkGRfy+lJE3a dcAuNsxHPj2ST37sAQhVivcg5AqDbFrdP/sw+3752Z9fXzxYtXKnan6xvJ7/MmdfpuMrkcUKu/xD MuyrBtJyHQVlzRaWjjBQZM2n03wyGY6GJwlobEk6ltVt6I9tfzQcjft5zu9d4coqSZ4zfvMnwGN6 RommpAcOD7N9pCHvsSaO7ZM46KyOEYHeKx/QBJEdQGlNIJNUPy4MwEL4rmnQrRccWoifKwKDsQnU UGmswVbwEQ2WmAFqb+HW2HsD6CFw6iVyy/CVsErJGdwzYKtKSYVarwFL2/IMwBqY09J1fA7kkwzy 2clkABch5ZfkVW04a7mGFSu2TqGBc7KuJrjiBjQxkynBUatRcmI8OomKiT848MlEigFE+Ul1xbPv HHlAriqhSTp11IkBVPAgeQjkBvBt3+z8RbNwhusM7NKTu+N6NKZLDb1uhJfeUGMdb3o7EWWwqzuX WCNd2CkaLES2nbcjTXdoJBVeWkdx7vlwYTbHW3JUdR6jSUyn9RHAQmxI5MkfNztk8+wIbevWse5X paJSRvlVwZ70bFDePs+5FQnd8PMmOa97YSbBRE0bimBvKR2Xn45PtoTiYPYDfDrbgYEl6qOy2btJ 9gZjUVJApf2Re4VEuaLyUHuwOnalskdA76jvv+W8xb3tXZn6f+gPgJQUPVy0bCQlX7Z8SHMUfwb/ SnuecxIsoqv4ihdBkYu7KKnCTm/vqfBrH6gpeGE1udap7WWt2mI6G8kZDmfTqehtek8Ptsi3tQQA AA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29176f09b1ae-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:47 GMT Server: - cloudflare Set-Cookie: - __cf_bm=TCdT7JTHFsM3cMweM.5rzzLxERgKUHbcIIq_I4DK0pQ-1771550206.6225789-1.0.1.1-PYMonewrpL.5Es3NaLsJHYIiVpGlIPKzo9LxR.oAW6Um__GL18CqXsk8rEzweM5sUu0CX2m36v5GN_lZjm9esPrj3corIP6SeB9dPAaLRTCRtnk7u6ZLn2axm147m2td; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:46:47 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "939" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998411" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_7c2c55fc034349a4b8562cf44c36ef7c status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_does_openalex_work[not-in-openalex].yaml ================================================ interactions: - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.openalex.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.openalex.org/works/https://doi.org/10.1046%2Fj.1365-2699.2003.00795?select=open_access,doi response: body: string: !!binary | H4sIAAAAAAAA/03MPQ7CMAwF4L2neFygBaljyIiEhBgQHCBq3R+ROiFxQLk9iViYrPf82Wo3ukGy JyyyWd2oOmANz0fiEmUVS7rf97g6wcklHlX3K4s96L+2pEZ5fV8IgV6JotCIx+2Cj4ng4qbq4BhS SKTwptDiPCG7BGKhUHxd1ZvNcDLWZnhLJhKGhYZnlQHRk7UrzzDlm4QMM5uVW9V53XwBiYsC988A AAA= headers: Access-Control-Allow-Headers: - Accept, Accept-Language, Accept-Encoding, Authorization, Content-Type Access-Control-Allow-Methods: - GET, HEAD, POST, OPTIONS Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Cache-Control, RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, Retry-After CF-Cache-Status: - DYNAMIC CF-Ray: - 9997ff666e24cb83-LAX Connection: - keep-alive Content-Encoding: - gzip Content-Type: - text/html; charset=utf-8 Date: - Tue, 04 Nov 2025 23:47:38 GMT Nel: - '{"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}' RateLimit-Limit: - "5" RateLimit-Remaining: - "9" RateLimit-Reset: - "1" Report-To: - '{"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=5vYa7K3a7Rs8U5QK3EpboaxeMRCnLfqAuO%2BF9urv7QI%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1762300058"}],"max_age":3600}' Reporting-Endpoints: - heroku-nel="https://nel.heroku.com/reports?s=5vYa7K3a7Rs8U5QK3EpboaxeMRCnLfqAuO%2BF9urv7QI%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1762300058" Server: - cloudflare Transfer-Encoding: - chunked Vary: - accept-encoding Via: - 1.1 heroku-router status: code: 404 message: Not Found version: 1 ================================================ FILE: tests/cassettes/test_does_openalex_work[not-oa-in-openalex].yaml ================================================ interactions: - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.openalex.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.openalex.org/works/https://doi.org/10.1002%2Fwrna.1370?select=open_access,doi response: body: string: !!binary | H4sIAAAAAAAA/y2MywrDIBAA7/2MPQcf7aHgz8hiNo0grrgrbQj590rpcWZgTuBGNWJKJALhhCyR EcKGRWgBxiiKOmaCVFhohZ8cvUCoo5QFsB6xU2PJyv2IO0rcZlD66H9zLbBynoddtUmwdpLh/rLe Ge/c3b57ReMfTwfX7QuTj9BRkQAAAA== headers: Access-Control-Allow-Headers: - Accept, Accept-Language, Accept-Encoding, Authorization, Content-Type Access-Control-Allow-Methods: - GET, HEAD, POST, OPTIONS Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Cache-Control, RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, Retry-After CF-Cache-Status: - DYNAMIC CF-Ray: - 9997ff649e96566d-LAX Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Tue, 04 Nov 2025 23:47:38 GMT Nel: - '{"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}' RateLimit-Limit: - "5" RateLimit-Remaining: - "9" RateLimit-Reset: - "1" Report-To: - '{"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=5vYa7K3a7Rs8U5QK3EpboaxeMRCnLfqAuO%2BF9urv7QI%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1762300058"}],"max_age":3600}' Reporting-Endpoints: - heroku-nel="https://nel.heroku.com/reports?s=5vYa7K3a7Rs8U5QK3EpboaxeMRCnLfqAuO%2BF9urv7QI%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1762300058" Server: - cloudflare Transfer-Encoding: - chunked Vary: - accept-encoding Via: - 1.1 heroku-router status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_does_openalex_work[oa-in-openalex1].yaml ================================================ interactions: - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.openalex.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.openalex.org/works/https://doi.org/10.1021%2Facs.jctc.5b00178?select=open_access,doi response: body: string: !!binary | H4sIAAAAAAAA/02Myw6CMBBF937GrEkfGET7M02pBWoahnSmIiH8u40rl/fck3MArmGxzvtABOaA SBYdGM4lNIDOEjsu9YEph7DAj5WcKpiZVzJSbtsmkDiKCd9yiEOKKPW1fXT9repu2W0OK1JkzLud HdmxpMThw2BGlyicDTwx/gXrEpgnqZXQqtXSeRIvz150g1K6v8N5+QIP6QvitwAAAA== headers: Access-Control-Allow-Headers: - Accept, Accept-Language, Accept-Encoding, Authorization, Content-Type Access-Control-Allow-Methods: - GET, HEAD, POST, OPTIONS Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Cache-Control, RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, Retry-After CF-Cache-Status: - DYNAMIC CF-Ray: - 9997ff6049fd52cc-LAX Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Tue, 04 Nov 2025 23:47:37 GMT Nel: - '{"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}' RateLimit-Limit: - "5" RateLimit-Remaining: - "9" RateLimit-Reset: - "1" Report-To: - '{"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=kaTuDg%2FCM0TIzSf%2FTeRKVpeJFl1ssq%2BtKipfvU9jagk%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1762300057"}],"max_age":3600}' Reporting-Endpoints: - heroku-nel="https://nel.heroku.com/reports?s=kaTuDg%2FCM0TIzSf%2FTeRKVpeJFl1ssq%2BtKipfvU9jagk%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1762300057" Server: - cloudflare Transfer-Encoding: - chunked Vary: - accept-encoding Via: - 1.1 heroku-router status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_does_openalex_work[oa-in-openalex2].yaml ================================================ interactions: - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.openalex.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.openalex.org/works/https://doi.org/10.1093%2Fnar%2Fgkw1164?select=open_access,doi response: body: string: !!binary | H4sIAAAAAAAA/0yNQQ6CMBBF9x5j1tqxika4TDMpBRsL07TTKCHc3Ya4cPn/S95bgaObDVnrcoZu BZ8NE3SSijsCk8lCUiqBkUMP+1VSqPspEnOHSJZ6N3mruERlecKZElISb4M7xX7A5oYar1pje2na 5nHD8fXW+t6oCquQ5sUkFzl74bSYJ2UzlBDEfQS6gUJ22xF69n/JuhSnEfVZ6XN73Ys/KWyHLwAA AP//AwApDUOb0wAAAA== headers: Access-Control-Allow-Headers: - Accept, Accept-Language, Accept-Encoding, Authorization, Content-Type Access-Control-Allow-Methods: - GET, HEAD, POST, OPTIONS Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Cache-Control, RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, Retry-After CF-Cache-Status: - DYNAMIC CF-Ray: - 9997ff622eed6e62-LAX Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Tue, 04 Nov 2025 23:47:38 GMT Nel: - '{"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}' RateLimit-Limit: - "5" RateLimit-Remaining: - "9" RateLimit-Reset: - "1" Report-To: - '{"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=5vYa7K3a7Rs8U5QK3EpboaxeMRCnLfqAuO%2BF9urv7QI%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1762300058"}],"max_age":3600}' Reporting-Endpoints: - heroku-nel="https://nel.heroku.com/reports?s=5vYa7K3a7Rs8U5QK3EpboaxeMRCnLfqAuO%2BF9urv7QI%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1762300058" Server: - cloudflare Transfer-Encoding: - chunked Vary: - accept-encoding Via: - 1.1 heroku-router status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_doi_search[paper_attributes0].yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.1016/j.xgen.2025.100814?fields=authors%2CcitationCount%2CcitationStyles%2CexternalIds%2CinfluentialCitationCount%2CisOpenAccess%2Cjournal%2CopenAccessPdf%2CpublicationDate%2CpublicationTypes%2Ctitle%2Curl%2Cvenue%2Cyear response: body: string: '{"paperId": "7e5d4466c8b85f93775fe183e1a318a3e65ac8e4", "externalIds": {"PubMedCentral": "12008803", "DOI": "10.1016/j.xgen.2025.100814", "CorpusId": 268890006, "PubMed": "40120586"}, "url": "https://www.semanticscholar.org/paper/7e5d4466c8b85f93775fe183e1a318a3e65ac8e4", "title": "High-throughput screening of human genetic variants by pooled prime editing", "venue": "bioRxiv", "year": 2024, "citationCount": 5, "influentialCitationCount": 0, "isOpenAccess": true, "openAccessPdf": {"url": "https://doi.org/10.1016/j.xgen.2025.100814", "status": "GOLD", "license": "CCBY"}, "publicationTypes": ["JournalArticle"], "publicationDate": "2024-04-01", "journal": {"name": "Cell Genomics", "volume": "5"}, "citationStyles": {"bibtex": "@Article{Herger2024HighthroughputSO,\n author = {Michael Herger and Christina M. Kajba and Megan Buckley and Ana Cunha and Molly Strom and Gregory M. Findlay},\n booktitle = {bioRxiv},\n journal = {Cell Genomics},\n title = {High-throughput screening of human genetic variants by pooled prime editing},\n volume = {5},\n year = {2024}\n}\n"}, "authors": [{"authorId": "2294884120", "name": "Michael Herger"}, {"authorId": "2163800172", "name": "Christina M. Kajba"}, {"authorId": "2120283350", "name": "Megan Buckley"}, {"authorId": "2294861709", "name": "Ana Cunha"}, {"authorId": "2294881320", "name": "Molly Strom"}, {"authorId": "145686550", "name": "Gregory M. Findlay"}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1411" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:27 GMT Via: - 1.1 fb1699c4cb8ff04b39762e99ca06e3d2.cloudfront.net (CloudFront) X-Amz-Cf-Id: - ztVQD3mqEaMiN-lqlAPcv92BIUWdCm1LdzidZzDPqVwrGmHR6hpAxw== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - PKejeF4QPHcEY5Q= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1411" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:27 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - edd000ba-a1a5-4a9c-b94f-f73e3ba67b78 status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.unpaywall.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.unpaywall.org/v2/10.1016/j.xgen.2025.100814?email=example@papercrow.ai response: body: string: !!binary | H4sIAK93mmgA/+1X227cNhB971cQfNZqV2vHdvSUeBHHQeKiQF23SGAIFDmSaFOkwIsdNci/dyit unISt7AfcgHytpgbzzkzHGo/UGEkzWm2SrNVdrC8St/XoNP1av0EDaujbJ8mMaQIVmFY433n8uUS Lamx9fI/07z0CjDpVNbNwjfWhLrpgieOWwAtdU1MRZrQMk0wGbzk5IZZybR3pOxJZ4wCQTorWyAg pMcMrIqhNla9MsFqphbMYiKek1Dpio5Z5uG9p3nFlIOEdqFU0jUgCoEOTIsQF6u9xXqNGT0wS/No SqZ6hWZtjNuAUuQlaNNK7ujOLZ3TLtY5ODhYPD18+tcnvkLd6ywMo7m3Ae4YpS6EYVeTZwKMuOgL pHAjwZLji5HeroBhhfPMhwilNkqgv2GusNAZJ72xfcFN10/RJTiPyYUynHlpNM0/0Ec0FFOKytii ExXNdVBqZ1JMC+wPNqCGh5ZFjgI0j3kCOguIESIhJTloF82cL8oeLTdg3QB/19eLrQn5GyTp+w5m bjvqFvn/K3DbFFJM+EGLzkjtZ6aZhlI7HOIwSjZ6UcUvTVLoxID6DoWPCa2k/Sn9t5F+Jjreknc/ Zf8qsn8q8+3tbap5KVOt2lTLJq3NzbJr+XK7t90yW6MsR6u9R8n9oPL/L7vxqOAC1+xceRfKVnp/ n/I79ebST+/PVntUUebYoxYEnuUtUxPafA5w3hsqGKsOD4Fx/uQIgO9lZUnvbxb9LZRn+F5uxvL0 gY27vHthCmhLZmsT496hD1OGF0cLZtG0TujfBQu+MXa8W+PvYoA2whk2X8TLbreR09N6JnnDQJFT sPU0r9xYC64zQ5OnwR1Sq0oqOYDC8y1644H0vIHxdQZyEjSPbvKGlQaff1QmIdF/Ypnm0pGNlfya vNqKBQl5g8dg/K9/ZiR7fp6QP16n9DKO7ucsmBDDz0HQz6lsGiuxrGbkLCWv2VXJvkhnOwzfP58z qPFr7DjwawX9j03lOTZlE3Tz2I5cSLxF5AI4oiYbYxHc6fCteiyNMnVPThjHPP8Vm2OU6snv3pr2 x+Gk2D1b4KWFGuchXpwTqYVi38u8kRcKBbJG4/8R7AiCcTmpEW1ajTif8VglZTwN15H35Xynjqv2 aLHaP8/282yV7+2/pR9/+Qfo6APpaA0AAA== headers: Access-Control-Allow-Headers: - origin, content-type, accept, x-requested-with Access-Control-Allow-Methods: - POST, GET, OPTIONS, PUT, DELETE, PATCH Access-Control-Allow-Origin: - "*" Content-Encoding: - gzip Content-Length: - "880" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:27 GMT Nel: - '{"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}' Report-To: - '{"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=W4U9rVeUNPd0XqsVd0cB%2FQ5kwPN%2BS58lU4wsklw%2Bhbg%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1754953647"}],"max_age":3600}' Reporting-Endpoints: - heroku-nel="https://nel.heroku.com/reports?s=W4U9rVeUNPd0XqsVd0cB%2FQ5kwPN%2BS58lU4wsklw%2Bhbg%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1754953647" Server: - Heroku Vary: - Accept-Encoding Via: - 1.1 heroku-router status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.openalex.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.openalex.org/works/https://doi.org/10.1016%2Fj.xgen.2025.100814 response: body: string: !!binary | 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 headers: Access-Control-Allow-Credentials: - "true" Access-Control-Allow-Headers: - Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Authorization, Cache-Control Access-Control-Allow-Methods: - POST, GET, OPTIONS, PUT, DELETE, PATCH Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Authorization, Cache-Control Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "2958" Content-Security-Policy: - default-src 'self'; object-src 'none' Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:27 GMT Nel: - '{"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]}' Referrer-Policy: - strict-origin-when-cross-origin Report-To: - '{"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1754953647&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&s=XluHWvReD9YUTUc5KSyfiDN5JJLrJUyWNLYushBFcI4%3D"}]}' Reporting-Endpoints: - heroku-nel=https://nel.heroku.com/reports?ts=1754953647&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&s=XluHWvReD9YUTUc5KSyfiDN5JJLrJUyWNLYushBFcI4%3D Server: - gunicorn Strict-Transport-Security: - max-age=31556926; includeSubDomains Vary: - Accept-Encoding Via: - 1.1 vegur X-Api-Pool: - common X-Content-Type-Options: - nosniff X-Frame-Options: - SAMEORIGIN X-Xss-Protection: - 1; mode=block status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1016%2Fj.xgen.2025.100814?mailto=example%40papercrow.ai response: body: string: !!binary | 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 headers: Connection: - keep-alive Content-Length: - "5787" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:27 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1016%2Fj.xgen.2025.100814/transform/application/x-bibtex response: body: string: " @article{Herger_2025, title={High-throughput screening of human genetic variants by pooled prime editing}, volume={5}, ISSN={2666-979X}, url={http://dx.doi.org/10.1016/j.xgen.2025.100814}, DOI={10.1016/j.xgen.2025.100814}, number={4}, journal={Cell Genomics}, publisher={Elsevier BV}, author={Herger, Michael and Kajba, Christina M. and Buckley, Megan and Cunha, Ana and Strom, Molly and Findlay, Gregory M.}, year={2025}, month=apr, pages={100814} } " headers: Connection: - keep-alive Date: - Mon, 11 Aug 2025 23:07:27 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_doi_search[paper_attributes1].yaml ================================================ interactions: - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.1023/a:1007154515475?fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"paperId": "19807da5b11f3e641535cb72e465001b49b48ee5", "externalIds": {"MAG": "1554322594", "DOI": "10.1023/A:1007154515475", "CorpusId": 22646521, "PubMed": "11330823"}, "url": "https://www.semanticscholar.org/paper/19807da5b11f3e641535cb72e465001b49b48ee5", "title": "An essential role of active site arginine residue in iodide binding and histidine residue in electron transfer for iodide oxidation by horseradish peroxidase", "venue": "Molecular and Cellular Biochemistry", "year": 2001, "citationCount": 7, "influentialCitationCount": 0, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": "CLOSED", "license": null}, "publicationTypes": ["JournalArticle", "Study"], "publicationDate": "2001-02-01", "journal": {"name": "Molecular and Cellular Biochemistry", "pages": "1-11", "volume": "218"}, "citationStyles": {"bibtex": "@Article{Adak2001AnER,\n author = {S. Adak and D. Bandyopadhyay and U. Bandyopadhyay and R. Banerjee},\n booktitle = {Molecular and Cellular Biochemistry},\n journal = {Molecular and Cellular Biochemistry},\n pages = {1-11},\n title = {An essential role of active site arginine residue in iodide binding and histidine residue in electron transfer for iodide oxidation by horseradish peroxidase},\n volume = {218},\n year = {2001}\n}\n"}, "authors": [{"authorId": "1940081", "name": "S. Adak"}, {"authorId": "1701389", "name": "D. Bandyopadhyay"}, {"authorId": "5343877", "name": "U. Bandyopadhyay"}, {"authorId": "32656528", "name": "R. Banerjee"}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1490" Content-Type: - application/json Date: - Tue, 23 Sep 2025 21:41:03 GMT Via: - 1.1 fb1699c4cb8ff04b39762e99ca06e3d2.cloudfront.net (CloudFront) X-Amz-Cf-Id: - 50yEa0DTihVic5xsQPPi6lUSX9HWwDWS8-AcfRaZALa9agXruf7-iw== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - RYANdHZEvHcEcvg= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1490" x-amzn-Remapped-Date: - Tue, 23 Sep 2025 21:41:03 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 1d420054-5afb-4c43-836d-a2425b1067c9 status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.unpaywall.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.unpaywall.org/v2/10.1023/a:1007154515475?email=example@papercrow.ai response: body: string: !!binary | H4sIAO8T02gA/91UTW/aQBC991es9mxgbUA0vgVyqZpIVWgvrSJr8A54yLJr7a7buFH+e8cGUpKS H9AcEPZ8vjfzxo9SO5K5TNUwVdl4BHmq1CydTqb8m01l0vmLxhuOqWKsQz4asWXo/Gb0dk6kaJAz Lq3AENBGAiO8MyjcWkAZ6SeKQBEF+A1Zsig8BtINCrKCnCaNYkVWk90IsFpUFCLpV3FosIzeWRE9 2LBGL9bOH7PdA2mIxN5VKyrnA3rQFCpRo+99ARnnBq3vcG5d4y2YAfhIpek8FIoaPER8iDJfgwmY yLpZGS6BuuDSXVqmVDpQ2UClnNEieJl3puRYr7Cw6+JumHnZGPA9mQUa07/MyZUV7pibb+XfJArB Bs5SY6UGH9PZLEmns/FgcpFevIoqzGnYC2fh4Bn3iZVsoR1s/6HEyOWy9jxvHuOyJLQl9mDnTeCx hyBuUBOI6+vFfjgn5R0UIUJsOsylcQE1h1QQCo+14y073xalq9vnhBWGyAUK48p+RTK3jTGJXJM/ 7zgxcZMfdy8tBe5WrCPHfXsfL6dHZDV4NmWJ/F1AEzsRcMCj3D8XPba+yb4xg/bw6xB53NyyWbEI QFxquN8TL51nDdauF6fMo2/wkLhek6EeEnfvRtm1k1fIOoo7voFO+1+qNpAzbtMm4hOXAMt/rO3Y xP42Fp0eSj6W+TFqIm5hC2I5XAzFDU+Dyntx60AnYgGmbGKERMyUEmqcHUrKu6fkHEvQun8Ec5bq Fa4g8KGJOU+udTXoqoX2LOnDHt8D628a2nfG2MAbYr4FC1uK4vOwY4x+i/g/keXTburuy6v7T282 HajpIJt8VVk+Hufjj9/l04c/ZfMgw88GAAA= headers: Access-Control-Allow-Headers: - origin, content-type, accept, x-requested-with Access-Control-Allow-Methods: - POST, GET, OPTIONS, PUT, DELETE, PATCH Access-Control-Allow-Origin: - "*" Content-Encoding: - gzip Content-Length: - "653" Content-Type: - application/json Date: - Tue, 23 Sep 2025 21:41:03 GMT Nel: - '{"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}' Report-To: - '{"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=Nr%2FrEVmPGBksY1ZF2S5JvtC2g%2FlSHhWkxlrLmANAMPA%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1758663663"}],"max_age":3600}' Reporting-Endpoints: - heroku-nel="https://nel.heroku.com/reports?s=Nr%2FrEVmPGBksY1ZF2S5JvtC2g%2FlSHhWkxlrLmANAMPA%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1758663663" Server: - Heroku Vary: - Accept-Encoding Via: - 1.1 heroku-router status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.openalex.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.openalex.org/works/https://doi.org/10.1023%2Fa:1007154515475 response: body: string: !!binary | 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 4QhC7/1f/geI8DnYz0EAAA== headers: Access-Control-Allow-Credentials: - "true" Access-Control-Allow-Headers: - Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Authorization, Cache-Control Access-Control-Allow-Methods: - POST, GET, OPTIONS, PUT, DELETE, PATCH Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Authorization, Cache-Control Content-Encoding: - gzip Content-Length: - "3151" Content-Security-Policy: - default-src 'self'; object-src 'none' Content-Type: - application/json Date: - Tue, 23 Sep 2025 21:41:03 GMT Nel: - '{"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}' Referrer-Policy: - strict-origin-when-cross-origin Report-To: - '{"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=7K5QaqyCFV3%2Bk3i3ERwCR%2BLxC%2FQZV6ClkSpuHX4kIGM%3D\u0026sid=1b10b0ff-8a76-4548-befa-353fc6c6c045\u0026ts=1758663663"}],"max_age":3600}' Reporting-Endpoints: - heroku-nel="https://nel.heroku.com/reports?s=7K5QaqyCFV3%2Bk3i3ERwCR%2BLxC%2FQZV6ClkSpuHX4kIGM%3D&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&ts=1758663663" Server: - Heroku Strict-Transport-Security: - max-age=31556926; includeSubDomains Vary: - Accept-Encoding Via: - 1.1 heroku-router X-Api-Pool: - common X-Content-Type-Options: - nosniff X-Frame-Options: - SAMEORIGIN X-Xss-Protection: - 1; mode=block status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1023%2Fa:1007154515475?mailto=example@papercrow.ai response: body: string: !!binary | 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 W3j8+X9fE4SwoEUAAA== headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "5257" Content-Type: - application/json Date: - Tue, 23 Sep 2025 21:41:03 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1023%2Fa:1007154515475/transform/application/x-bibtex response: body: string: " @article{Adak_2001, title={An essential role of active site arginine residue in iodide binding and histidine residue in electron transfer for iodide oxidation by horseradish peroxidase}, volume={218}, ISSN={1573-4919}, url={http://dx.doi.org/10.1023/a:1007154515475}, DOI={10.1023/a:1007154515475}, number={1\u20132}, journal={Molecular and Cellular Biochemistry}, publisher={Springer Science and Business Media LLC}, author={Adak, Subrata and Bandyopadhyay, Debashis and Bandyopadhyay, Uday and Banerjee, Ranajit K.}, year={2001}, month=feb, pages={1\u201311} }\n" headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Date: - Tue, 23 Sep 2025 21:41:03 GMT Server: - Jetty(9.4.40.v20210413) Transfer-Encoding: - chunked permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_doi_search[paper_attributes2].yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.1007/s40278-023-41815-2?fields=authors%2CcitationCount%2CcitationStyles%2CexternalIds%2CinfluentialCitationCount%2CisOpenAccess%2Cjournal%2CopenAccessPdf%2CpublicationDate%2CpublicationTypes%2Ctitle%2Curl%2Cvenue%2Cyear response: body: string: '{"paperId": "e0d2719e49ad216f98ed640864cdacd1c20f53e6", "externalIds": {"DOI": "10.1007/s40278-023-41815-2", "CorpusId": 259225376}, "url": "https://www.semanticscholar.org/paper/e0d2719e49ad216f98ed640864cdacd1c20f53e6", "title": "Convalescent-anti-sars-cov-2-plasma/immune-globulin", "venue": "Reactions weekly", "year": 2023, "citationCount": 0, "influentialCitationCount": 0, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": null, "license": null}, "publicationTypes": ["JournalArticle"], "publicationDate": "2023-06-01", "journal": {"name": "Reactions Weekly", "pages": "145 - 145", "volume": "1962"}, "citationStyles": {"bibtex": "@Article{None,\n booktitle = {Reactions weekly},\n journal = {Reactions Weekly},\n pages = {145 - 145},\n title = {Convalescent-anti-sars-cov-2-plasma/immune-globulin},\n volume = {1962},\n year = {2023}\n}\n"}, "authors": []} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "877" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:22 GMT Via: - 1.1 2347835d64b95b688a16fb2618f2577a.cloudfront.net (CloudFront) X-Amz-Cf-Id: - bNMVoRKlF45whub5ZQ4-YBxs8mw8DYAKzJ8QbC1Iq6-EDycu0kp1Dw== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - PKeiqGqWvHcEffw= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "877" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:22 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 3a7b9d2a-d346-481d-be17-553a5cec5842 status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.unpaywall.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.unpaywall.org/v2/10.1007/s40278-023-41815-2?email=example@papercrow.ai response: body: string: !!binary | H4sIAKp3mmgA/32SQU/cMBCF7/yKyOeY2CbL7uZYrvRSKiGBkDVrD1lTx448NuqC+t/rgIClrXp9 873npxk/MxsdG5gUp1KIdUe9UOsNF+qM93IjV1yxdkF0Sb5i+5xnGrquKqcxjd1/bdllj9V0EcMj eCSDIXMI2XGCRNzER6747IEm6Nw0lYB89HFXvAvVPWJIi/shlhTAc0jZmZrXMkd6hgQZf2Y23IMn bNlcdt7RHq22dVBtaukizrk6q44DQmLDIrVveTrAtHDfEEx2MVBzjfjDH9gH4YgCVURI2fPtdtW3 Uq63XImV/IPS/hj7NNQR3kseqS5oG+Hhr/61JruakwsjpubKOAwGGwi2+VLIBSRqvqJ10FxeXrxu 4ig+gqYMuSydjY+EtiJ7IJ1wjuRyTAdt4nx4N+yQcg3QPhpYdsCGULxv2b1L/x4cSfWR27vPisZp B2mM9d2XWb3ES6NgIVVJtexJQ8n7mOgtsMzLuezrvVZc1I+jvsvN0KtBqRv26+Q3UuGsPKACAAA= headers: Access-Control-Allow-Headers: - origin, content-type, accept, x-requested-with Access-Control-Allow-Methods: - POST, GET, OPTIONS, PUT, DELETE, PATCH Access-Control-Allow-Origin: - "*" Content-Encoding: - gzip Content-Length: - "398" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:22 GMT Nel: - '{"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}' Report-To: - '{"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=0fQUj4u79VZaKOEm%2FDWxYU0NsO9QMZ%2BBagjVmE1BzAQ%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1754953642"}],"max_age":3600}' Reporting-Endpoints: - heroku-nel="https://nel.heroku.com/reports?s=0fQUj4u79VZaKOEm%2FDWxYU0NsO9QMZ%2BBagjVmE1BzAQ%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1754953642" Server: - Heroku Vary: - Accept-Encoding Via: - 1.1 heroku-router status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.openalex.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.openalex.org/works/https://doi.org/10.1007%2Fs40278-023-41815-2 response: body: string: !!binary | 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 FI4jcu2scevh5NuX7f5SoP7ql38Bs0NXB2sZAAA= headers: Access-Control-Allow-Credentials: - "true" Access-Control-Allow-Headers: - Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Authorization, Cache-Control Access-Control-Allow-Methods: - POST, GET, OPTIONS, PUT, DELETE, PATCH Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Authorization, Cache-Control Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "1739" Content-Security-Policy: - default-src 'self'; object-src 'none' Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:22 GMT Nel: - '{"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]}' Referrer-Policy: - strict-origin-when-cross-origin Report-To: - '{"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1754953642&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&s=YLTVXYqHZ2%2BDgcdzOdB07Dw1KAXkK8UoJXnq77RKnYA%3D"}]}' Reporting-Endpoints: - heroku-nel=https://nel.heroku.com/reports?ts=1754953642&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&s=YLTVXYqHZ2%2BDgcdzOdB07Dw1KAXkK8UoJXnq77RKnYA%3D Server: - gunicorn Strict-Transport-Security: - max-age=31556926; includeSubDomains Vary: - Accept-Encoding Via: - 1.1 vegur X-Api-Pool: - common X-Content-Type-Options: - nosniff X-Frame-Options: - SAMEORIGIN X-Xss-Protection: - 1; mode=block status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1007%2Fs40278-023-41815-2?mailto=example%40papercrow.ai response: body: string: !!binary | H4sIAAAAAAAA/8VW227jNhD9FULPpm6Rb3prnS4QINkFkrRFGwUFLY1txhQpkJQd1/C/d0j5tmnW CBZoN3BgmTMazhzOOcNtYCyzrQnyQC2DXlCDMWwO1G4awLW10uerK9CGK4mGJIzD+GQJ8m3AZQWv ULnHilmgDdMW4z49pXF61Rv00uz5udeZLK9ddGeg8YCm2WOc5ckQP39iTGfFrOomyJPBaNgfodsw zoa7XqBhBhpkCbRUrbTo0Auadiq4WYDGiA+N5nIOmjyU3LkRJivyc2u4xDzJHVSckdvbCW7CjWld Dgk+C16CNPjraevg0PY7a4hz/3mvhkE2it0f1lAqaUHaMzBtVeMrFQi2oVzSim1wz7gX/Hp/i9aF tY3Ji6iI1ut1aPYVSjw1DWGp6iKaN0WkwQDTJcJgisjCq6VYOoayjNZc4ivBrvdjqlsp/X9U93za u1I149KXuX96clatjKmZXlKMZjUvrc9vxoQBTNwslLbUhcA3QCMCVriWCO6BeVdDfgdYik2Asa6/ 3LjeicMkjodFZLI4HY6oAytLRkmfpg6kjkIvqsVyBEWseYkRXSKAEF8gytU3j+HqMRnlWZqn4/eO IesPs3F3DI0nZZBkfYr/6GswjdItTRwMyCPPAXokVEWnmwOpYhd6X/1EyRUTYEoHLJOWU8O0Qc8V TWkjGCJaRLyuWwl0LtS0FYg3pt9gZP56Agm3WynR+nKS8SD12lFPPWvTsTMfeFxRJTEIXGzTcy3w vF3CBiN59P+a3DtWV4pTZgxo64tDa3kqvZXYAm3pugwPIrgGMWeVop9c66GO/U3uegQsYSIkj+64 aiyfqBmZfPnt5pomY7LmdkHKM3BIBwbhkjTMovpY0zkt2lppJogHSVUIi9emDaHkcaEBXBQDZWv5 Cp+ZAeNVS8OKw9rtaRdABLegO1KQXyQWXkPFKnS9wR9lyZVhhvxB7jjWOOVKqDkq3QRh5CUjWVzI nPTjIe0ngx75rEIydl8rgoimIflpxbhgUwFkplWdE2RmTgp5oqYBXpeh0vMiCr5q/mRQRC+hs0KI sXAq4CceH9n4ASopzefcEeTghWuCyXnbdTBIL9By6U/5rWY4w1E0OrnYi0ARNdWsiC5QNESH4CQa e7qypsFxwFyWPkTwbUnjbrnC5jp7x6m5k6czzf1AznttuJhuEc1aIVzwcGFr8e/MnamI3tj+u5x/ OM6G19i1mlvUrQWUy8MUqKBRhn+/wI7z9CpPRu8K7CgZjzqBNaXS4O8fOE322rpF1eM4YTbu8QMQ XpofO7dHOz1S5xMgLF4YsOqKVOCmiAEnN1P8doJJ1OtmDpIYpxMeJTJTQqg1bok6MqPIcRCkNZCT K680KDKNctg8H+bfGQn9Denyde5chc3Zleww8/aXrO1Xt62P6jyGx/gMW95dB1AcKa8cEh4hl/Fb hFHwO426PJc13kS6Ftpi/JuHh88uapIMxzSN+0nQlS73jYqigxLfJX90OQ53EFBarVBlfevhgb3g Qoffsc7LEO52/wBSOnixhAsAAA== headers: Connection: - keep-alive Content-Length: - "1159" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:22 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1007%2Fs40278-023-41815-2/transform/application/x-bibtex response: body: string: " @article{2023, volume={1962}, ISSN={1179-2051}, url={http://dx.doi.org/10.1007/s40278-023-41815-2}, DOI={10.1007/s40278-023-41815-2}, number={1}, journal={Reactions Weekly}, publisher={Springer Science and Business Media LLC}, year={2023}, month=jun, pages={145\u2013145} }\n" headers: Connection: - keep-alive Date: - Mon, 11 Aug 2025 23:07:22 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_doi_search[paper_attributes3].yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.1016/j.addr.2015.01.008?fields=authors%2CcitationCount%2CcitationStyles%2CexternalIds%2CinfluentialCitationCount%2CisOpenAccess%2Cjournal%2CopenAccessPdf%2CpublicationDate%2CpublicationTypes%2Ctitle%2Curl%2Cvenue%2Cyear response: body: string: '{"paperId": "b6c4e9f285bd1b0b69b98daa47fea3d29d50c658", "externalIds": {"MAG": "2033425827", "DOI": "10.1016/j.addr.2015.01.008", "CorpusId": 205284104, "PubMed": "25666165"}, "url": "https://www.semanticscholar.org/paper/b6c4e9f285bd1b0b69b98daa47fea3d29d50c658", "title": "Pharmacokinetics, biodistribution and cell uptake of antisense oligonucleotides.", "venue": "Advanced Drug Delivery Reviews", "year": 2015, "citationCount": 689, "influentialCitationCount": 29, "isOpenAccess": true, "openAccessPdf": {"url": "https://doi.org/10.1016/j.addr.2015.01.008", "status": "HYBRID", "license": "CCBYNCND"}, "publicationTypes": ["Review", "JournalArticle"], "publicationDate": "2015-06-29", "journal": {"name": "Advanced drug delivery reviews", "pages": "\n 46-51\n ", "volume": "87"}, "citationStyles": {"bibtex": "@Article{Geary2015PharmacokineticsBA,\n author = {R. Geary and D. Norris and R. Yu and C. Bennett},\n booktitle = {Advanced Drug Delivery Reviews},\n journal = {Advanced drug delivery reviews},\n pages = {\n 46-51\n },\n title = {Pharmacokinetics, biodistribution and cell uptake of antisense oligonucleotides.},\n volume = {87},\n year = {2015}\n}\n"}, "authors": [{"authorId": "4084271", "name": "R. Geary"}, {"authorId": "2764740", "name": "D. Norris"}, {"authorId": "6086943", "name": "R. Yu"}, {"authorId": "145182233", "name": "C. Bennett"}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1395" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:23 GMT Via: - 1.1 496003b8c4e3056a62dc655a8393be56.cloudfront.net (CloudFront) X-Amz-Cf-Id: - ZFdQH8A2S8B5-Ntej_-bJtWZHzVN-vitgYizBPabUCldRk62JawaqQ== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - PKeizFuGPHcEXDA= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1395" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:23 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 3a7a57d0-7a3e-42da-a7ff-a8e1ae2ad4b4 status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.unpaywall.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.unpaywall.org/v2/10.1016/j.addr.2015.01.008?email=example@papercrow.ai response: body: string: !!binary | H4sIAKt3mmgA/+1WTVPbMBC991dodLYdx0NK4hsfLcOl04GWacswGlnaOAJF8kgy1DD8967sBEKb dqY9FA7cnKfd1XtvpVXuqLSKlnScZ+N8/HZ0mXEpXVbk40mWj7M8n9IkhrDWaQxbhND4cjRCJLOu Hv0xLaigAZM+LrhbcmGvlIGghE9IpaxUPjhVtUFZQ7iRRIDWpG0CvwJi5wgF5cF4/KFVbU0rNNig JHisXINxsfKlbZ3hOuUO6+JeCVWeNdzxAN8DLedce0ho01Za+QVIJnEB0yLNNC/SfBczOuCOlhFK 1vWY4csYtyevuREgyaFra3IIWl2D68gJXCu4iTzW8cp74zEBrZilO/nsSzKe7hbptJjt/BTF9GbY k0Vm+QPlDVQZJi2//EUNkqbvEEEujuyfDdpjieBaDLOc+cBDG2ktusopiREL7pmDxnoVrOuYsE33 ULcCHzCfaSt4bAot7+g/NB1T2Nw61sg5LU2r9SOksc3K1NigGv62LMqUgL3APAmNA+QIUZFWIh4S hIVIqy41IjURx0b5XsRj989WENpgUWroGthYdoOB0YW1hc1ywdC2lQowsrHKhA1ow0plPB73djBu WEUvt523tpE99ydC7hM6V+61Ac/ZgA3r8dKcv5r//8y/eOo+g2XFXW1j3DmuYUo/zYzkDqEiobeM t2Fh3dCo4Zv1dAbZ/WXC7Ry/WUWuZ/qJEvgcSXKakSOc/N0gXFjnwDe2b9HagT55Plda9bRYfLBM Hbekx155snrXAHULnKEJOTYiS0gxnUzIEb/F9wzIAQ7ykJAD7rSvuMSvPTJDR/KEfD7doxf3yTb6 eAT6T663ajjkRoEmH5C08lsFrGb6i1VwgpFAvrYvk7zmvzk8Bxl577i5Ivtg8L9MeHb6F5s3qsgL vGiTtCg+jaflTlEWxTd6/+YHIVrr2OMJAAA= headers: Access-Control-Allow-Headers: - origin, content-type, accept, x-requested-with Access-Control-Allow-Methods: - POST, GET, OPTIONS, PUT, DELETE, PATCH Access-Control-Allow-Origin: - "*" Content-Encoding: - gzip Content-Length: - "710" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:23 GMT Nel: - '{"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}' Report-To: - '{"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=xxl3wKuXJ12%2FYAQyI6bgcm1m5wx1yUMTciev1NIVp2o%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1754953643"}],"max_age":3600}' Reporting-Endpoints: - heroku-nel="https://nel.heroku.com/reports?s=xxl3wKuXJ12%2FYAQyI6bgcm1m5wx1yUMTciev1NIVp2o%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1754953643" Server: - Heroku Vary: - Accept-Encoding Via: - 1.1 heroku-router status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.openalex.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.openalex.org/works/https://doi.org/10.1016%2Fj.addr.2015.01.008 response: body: string: !!binary | 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 headers: Access-Control-Allow-Credentials: - "true" Access-Control-Allow-Headers: - Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Authorization, Cache-Control Access-Control-Allow-Methods: - POST, GET, OPTIONS, PUT, DELETE, PATCH Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Authorization, Cache-Control Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "4325" Content-Security-Policy: - default-src 'self'; object-src 'none' Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:23 GMT Nel: - '{"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]}' Referrer-Policy: - strict-origin-when-cross-origin Report-To: - '{"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1754953643&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&s=%2FTPZH%2FbjF2YReYcYQRQDfXU%2F%2F93YYUmQq9SBio39i5M%3D"}]}' Reporting-Endpoints: - heroku-nel=https://nel.heroku.com/reports?ts=1754953643&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&s=%2FTPZH%2FbjF2YReYcYQRQDfXU%2F%2F93YYUmQq9SBio39i5M%3D Server: - gunicorn Strict-Transport-Security: - max-age=31556926; includeSubDomains Vary: - Accept-Encoding Via: - 1.1 vegur X-Api-Pool: - common X-Content-Type-Options: - nosniff X-Frame-Options: - SAMEORIGIN X-Xss-Protection: - 1; mode=block status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1016%2Fj.addr.2015.01.008?mailto=example%40papercrow.ai response: body: string: !!binary | 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 headers: Connection: - keep-alive Content-Length: - "5118" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:23 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1016%2Fj.addr.2015.01.008/transform/application/x-bibtex response: body: string: " @article{Geary_2015, title={Pharmacokinetics, biodistribution and cell uptake of antisense oligonucleotides}, volume={87}, ISSN={0169-409X}, url={http://dx.doi.org/10.1016/j.addr.2015.01.008}, DOI={10.1016/j.addr.2015.01.008}, journal={Advanced Drug Delivery Reviews}, publisher={Elsevier BV}, author={Geary, Richard S. and Norris, Daniel and Yu, Rosie and Bennett, C. Frank}, year={2015}, month=jun, pages={46\u201351} }\n" headers: Connection: - keep-alive Date: - Mon, 11 Aug 2025 23:07:23 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_doi_search[paper_attributes4].yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.1073/pnas.1414271111?fields=authors%2CcitationCount%2CcitationStyles%2CexternalIds%2CinfluentialCitationCount%2CisOpenAccess%2Cjournal%2CopenAccessPdf%2CpublicationDate%2CpublicationTypes%2Ctitle%2Curl%2Cvenue%2Cyear response: body: string: '{"paperId": "db3720c812a462ef955d5654b65ca9189d4b8372", "externalIds": {"MAG": "2109415576", "DOI": "10.1073/pnas.1414271111", "CorpusId": 10888161, "PubMed": "25349395"}, "url": "https://www.semanticscholar.org/paper/db3720c812a462ef955d5654b65ca9189d4b8372", "title": "Developing functional musculoskeletal tissues through hypoxia and lysyl oxidase-induced collagen cross-linking", "venue": "Proceedings of the National Academy of Sciences of the United States of America", "year": 2014, "citationCount": 136, "influentialCitationCount": 4, "isOpenAccess": true, "openAccessPdf": {"url": "https://www.pnas.org/content/pnas/111/45/E4832.full.pdf", "status": "BRONZE", "license": null}, "publicationTypes": ["JournalArticle"], "publicationDate": "2014-10-27", "journal": {"name": "Proceedings of the National Academy of Sciences", "pages": "E4832 - E4841", "volume": "111"}, "citationStyles": {"bibtex": "@Article{Makris2014DevelopingFM,\n author = {Eleftherios Makris and D. Responte and N. Paschos and Jerry C. Hu and Kyriacos, \u039a\u03c5\u03c1\u03b9\u03ac\u03ba\u03bf\u03c2, Athanasiou, \u0391\u03b8\u03b1\u03bd\u03b1\u03c3\u03af\u03bf\u03c5},\n booktitle = {Proceedings of the National Academy of Sciences of the United States of America},\n journal = {Proceedings of the National Academy of Sciences},\n pages = {E4832 - E4841},\n title = {Developing functional musculoskeletal tissues through hypoxia and lysyl oxidase-induced collagen cross-linking},\n volume = {111},\n year = {2014}\n}\n"}, "authors": [{"authorId": "50040319", "name": "Eleftherios Makris"}, {"authorId": "5165779", "name": "D. Responte"}, {"authorId": "3776061", "name": "N. Paschos"}, {"authorId": "32210454", "name": "Jerry C. Hu"}, {"authorId": "2541052", "name": "Kyriacos, \u039a\u03c5\u03c1\u03b9\u03ac\u03ba\u03bf\u03c2, Athanasiou, \u0391\u03b8\u03b1\u03bd\u03b1\u03c3\u03af\u03bf\u03c5"}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1878" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:24 GMT Via: - 1.1 b0797f10be715dcb685d992d17347df4.cloudfront.net (CloudFront) X-Amz-Cf-Id: - xrRimOsbzDP7C6jxHu1sccEtOvUpeRb5XcvawOZjAh7b-5SWcy6Cew== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - PKei-GAxvHcErAg= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1878" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:24 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 90588ce6-0596-4718-872c-a2243f3797fa status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.unpaywall.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.unpaywall.org/v2/10.1073/pnas.1414271111?email=example@papercrow.ai response: body: string: !!binary | H4sIAKx3mmgA/+1W32/bNhB+319B8FmWJVmOE79lSYCiRdtg3fawIhDO5MliQ5MCSTlVi/7vO0r2 YrfJsA7t2gH1k3U/v/vuSN57Lq3iS55naZ4tZtPWgE/zMi+LRU4/nkR91TlNNk0IrV9OpyRJrVtP H/cJKmgkj0vcoratMmtWd0YEZQ1otum86LT1t6gx0HdQ3nfoWWic7dYNa/rWvlXAwEime99rRp8S PE6UkZ1AyYTVGtZomHDW+4lW5pZyUGKSuZj4je0cpZqAC0oQlIQrX7XgIODbwJc1aI8Jb7uVVr5B WUlSkFuR5eUkzybFgjx6BMeXUZTs41UGNtHu2lmBKCmnZ7Ym4MhewK66cwESN32UvxIKjUDP7wNQ qcZThCwrFpPTsiiTPDvLJyflWfaRVaUPzY6UlYW/ajiQKlNJC28+Kc/9K8S7NMF1FMpC5QOELkJf OWveRUob8JXD1noVrOsrYdt+b79CH8i90lYMWfjyPT8eoru7u3QYnDhJwpqAJgyTNKURmpbz6VV5 OivSutM6bWVN6ci/qq2r4teXiKNpvogPGos1ftZ041bJyBI5SWwdUokoSa6VQONJbChZwrfo/FD6 /Zz9vhMRd5YICn2LB2o3sh652/PYbppKyX1ENLK1yoQD0QH/yng6d91I96ilDjw02V0rB8hH+D8k vFbuR9v+f207aBidz9c/Wvbdt+ywRf+IiKOOjBn/htyvw63vVhsVwmPc3vNzSO7+KdqxSzypJXVh g5KyBAc6NapJ13a7LItZOV+c8Y/I5xKgXiwQhJifIopZvlrxx7vBr7vVc9oQLsbo/DM7c3N8mirc rMCtbbR7TTpyGR5CI8GRqEj4uwq60Fg3HrzxfzVAG+EMV2rEC3c7y/0OcaWxpmfYKevZecqew61T u3dXWOfQt3Zo7H5Ahwh1rbQasBEMF19zyktrFq02YUMlD487/KwsEawEve1XZq0MYjSN+xS/icP3 KUyQUo3bwINYL6NGsqcp+2XAFfBBoLtmf0ukL9St1UCUPkvZNXhBE/q9Qn2KzvXsImVPum8GUcMj 0/msdwrEOJrnoQG6PpT9D3Am/KUjHG1Us1edW6PrE/abUcM9FIYl9QK0opvPKEjYJWyVT9jFOTub n+QnVOfN4dkusmI+yRaTWfZrXi6LGa3zf/APP/0J4SrGgvYMAAA= headers: Access-Control-Allow-Headers: - origin, content-type, accept, x-requested-with Access-Control-Allow-Methods: - POST, GET, OPTIONS, PUT, DELETE, PATCH Access-Control-Allow-Origin: - "*" Content-Encoding: - gzip Content-Length: - "893" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:24 GMT Nel: - '{"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}' Report-To: - '{"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=8LYgfJX%2BG3oiVIkwP9OvW4M5fq%2BaGRoiaE0IylRExOA%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1754953644"}],"max_age":3600}' Reporting-Endpoints: - heroku-nel="https://nel.heroku.com/reports?s=8LYgfJX%2BG3oiVIkwP9OvW4M5fq%2BaGRoiaE0IylRExOA%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1754953644" Server: - Heroku Vary: - Accept-Encoding Via: - 1.1 heroku-router status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.openalex.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.openalex.org/works/https://doi.org/10.1073%2Fpnas.1414271111 response: body: string: !!binary | H4sIAKx3mmgA/+1cW4/byLF+z68Q9LQBpJm+X+ZgsXDsRbLJeteJnZOHOYbAoVqjXlOklqRmrDX8 31PVpG5Wi5LGY8d74gFsiM1iV3XVV9VVzW6+6/tx/6o/ret5dXV5WcxdnmTu7UVR3l7+i1FiBZVS q/6gPy78FiFcBRpKLijR/HKeJ9UFFVQwTeEP6GtfZw6eeObuXFbMfX7bmyzytPYFcOjNFlW6yIrq jctcDde1r6qFq3r1tCwWt9PedDkv3vqkl+TjXrasllkPLsdJ5YY+Hy9SN+6lRZYlty7vpWVRVcPM 52+ABwrqq3mWLEd5MvuP8J8vbjKfJshotHRJ2b9ihIrd9nFSo2x4Y0jJkGl4zo+r/tW7/soEn8Yq s+QW+W53MZ/tQADEnLnxRZ7e+Is8m13kfnpxW9xdMsmF5VaGJ9KdR+7v7/fpgegyKWufZq66FIwL qW3//aCfJfntAhQHz7scOyv9LCmXo6xodIM68NWoSPpXdblw4YExaHY0h4dGizI7a7zz8aR5Jl9k 2aBfFYsydYHFQdi/pExqKUA/+2B6URapcyhO1SsmgBbX+ylpIfUkTcZutsT2l6l3eeoqtGpV5SOU mRCmh0Yw0Tb2r6532sAkdKiEJf3Xg5UCJklWuXDlATNF8stu09i9dWO8VaXFfFGtFAb30qJ0q8tp UdUjGFiS+99aDccH/kJwSjgjRLJ+5LGVDo4MeP85cA0XDH59nO/rjg6CABV20ykCdFEv5yjpL2Bt oAqo86nLK7fCQXs5QhQ0LXeurBrdBD+tpm78v21T0GiSpm5eu/GWkteETdv7Nd8W9v2mYRQCROkm G4mGG4qNFXFga9IQLsAPcTSorMC/qvaco0hGVZ3UaPz+TVnkv2Gf0HiunyT5clS6eVH5ugBnnCbV aAJ6qd3bej26ZFFPi7Ka+jka4V17PQoPNaqb+LKq+yvKbjd7IgkR0ljO7b6ffZ+5CThX6Yuq9zx5 U3pEVlHuhp1wHfoi8DeEf3woKFdDoRhBo/u8gllogcKhxKDKtFjkdelde9l4SumqeRFizNq9yuR+ 1A4vItGTi41QgXIy8ZlvsFpB9xAd0JjP3BzsPHN5HYLFn3wBBoUZIOt9n98CpB1S4gxzgVbe6qRR b7znMKOd3O+ODkZhhrl+/f71+0HMejAPjAMmTzSf4EQpbSLme4bOOe799aL3j6Db2m3Mh+72yLaJ svsvNgxh1HISkooPDPOTf1NkCUD4bxe9F0mVQqw9ybHYkCpjh0px9diOFRfpv9h6hnEmiKL71vur K8tl7+lF7y+LE8MhUZIOqYDOHtlqu6L8P7JWlpw1g1ElFLGRTPFvy9InaTNZPKmnCcy4vjjNbHQo ucG8kMiI2bok+gFySWoMIfvy/DP3IcWpQ7L0NMn8pChznwx6z5K7ZibD8a77hatGKFlCxjxTGOUb uCwBJOPQ5cv+OuWB0mrsyj5mVt3J3kZEMMEuArHD81B4UMmnAzI5jBzo5+bnEvjN8X7v5aK8deVy 0DuiykHv6ZOelYqqj0J0t2AxRA86Ov/IgcQYnmBftPD2g0lVuTIWf0aA1tpDdT4KTf0ruov72P0d kKyA0eriw7sRdYFp5imUFuDubQmA1/NkUxJM7lMorsUFpwyqkr2MGAjaa6hW/K0PtcMYU/fUQ6Ew ulmuheUmNLZlVFHOQNW/AcncgW/ltc9CSXqXZAv4QS4s/Bm1qvvqYj6iK9Kt8mN1i+zee7/Ff9N/ uxLxDmYjkNMaXAl4Cz8skN94qGOKIEGRLYJjNUVBWBOBK4HxLeT2oQhfF1HJTsP7IFXp6jJJQ6G0 KVUB2EmjuLZtVfTDAHzaHWVfUaaM2Q9ozz0USzce13JcndwUYMlZWK5x+W/LmVsv9sCTVVMOB8XC 1eJm4l027ma7oqouKdg/wr7IXLrIkhKnnqy4XWKoPqHfdaf7XUJH6dTNAJHonH92uYMisQpjinIb F7PE593sGhrgt8/uRz9xm6r5PZavaI1jc8xXe3wuexyxAlNiv5NXwWc/nDCgLroF8cEJIeD3nuMs ALd3LGEsPd8UTAu1L0M7v5xngFi1shb0TOVG9PIXl2T19Az1AsoiWdTTIs9dGrTYrBj3gKAoIfWp ejDdQIxNp7tqVQ9DeAQfKwD+7oENU+8bt7wHtR2LNSuyy7AEP2yX4CMcwgr9z+vbG/1rKgk3stva azbtqn8EPusb666lIFZxe2LP5ZYDDmcbB/yAz1E/FYJaqlWTOue4JHlMh0+p5VRwphEI9/4N6KhO Pli8XzWHB/Di8u/Ah8eWdn7cfhmC+T6+Xulf8bOV/pQRDbWOleQsuaiglEUc/Ie8d+fvio1EbNtW inOriDgikTYc6uXz9AQFIIw2EgVbyPS+cfmdL4scE/sk+2NcZSeBCTTGtKRSyrMkZIwqE3HLoLG6 PKQyzhkTxzQmYN5g1rLzVAajZSZSM7eTl9tMXnHZhKXWSMmPCEeBxkKych7AGGcR2D9dxcuNRGRb Ii0oQEwfk4gYKSSn56mLKBp9GbUTLLZiSgRfq7DRLZ6UApxe6bPE08RG3HF7itmIRLdFgqAkoVI8 IpOVQgguznNKDQqL2NBlWe+mndbiMhEGiJbHUE8Zaoqdh3pNY8syoKf5dFnhtB6ViCOqOD0KLEMp uKG2Z4lkiIhkXd+HfD3ueeAbhklx1PO4Ysxqps4SB+YoYiOp/dZCSDQ07OiLGa2PgkpTy0RjjzP8 EFQcseDzPcfbDgyAJ2UhVz8ikIEohau+503RLA6oXXxvS0MNM8bqY/MMTGiWcGLOdToSKQtBntql 07zD6yDdFdToY6CCWYMApT4vPKlYNP/57fI2bD6IQBxCtMK3/8d0pI22RLFzMQQxLyJPeNud9o6E THJMJpgYIdNh5rwJRgP64tHygIYw+5y5ahoyz7Gr0tLP66IcLXAvyjPI6SwJbry5s55Fi3xcFumy DlsFfl3gkqN37ZN/x1cW2uzcaB/cLCk0b+NnyS/Qa7t61Kx6xSQBEDeT074k7e6dzyKFISyujx/9 bRIWfD+PGNLGxXjucl+lftB75XEB5/MIA5ExKsyLEgKGz4dQaEBU7anhpqyLSCWCffekmk+Tcpak q6BzulyU66bu35PrlcvHuHD9OZRDDDVRIZ7kfpZkESEi3JtF2g+5hgXYA2xhTtRxb0nqOotY4DG4 UqnMAa6Yr20q708zYh1XNPLGFyCLrF6UbvyJhv4RgZIqFUMcPHEI9J9AkEexwQNi9H+KLypecx1V /NbUfY4UD50bHtX+D5biC1DGo2DBQLUSnxqTTxX3PnI6fmT7f5Qsj42CBwvzGHaRkALEM5PnPv1k WDD0MM9B76fF+JNx/vg87FGmwoflXY87Cz5MhsdF/wOEeAz9M24OhN79N4qHUmB7IAWeFuPqPCV8 nDRn6gOK2dXZg2q1Y0NutTXvV76eSPh6IuH3dyLhdOC6RQkqmM/SoID1wR1oWJ3d2YLu6U99B898 W7p2c+BJYMdt5QJzwchLte8Dv96L509737xY3Dx3495TSAvL5sXaCtkrb0dIrz1/o4WTwbu52aC3 vT4Zvj9QTjiVnNJO+DaDSnJ85e7zCW4PC+/jf2g3rbkHYXib+WkYPi7HBsibsyJfIpZxF3mWhKMq QReL9NLXbnYp7itD5ITFsfzhUymeJMjry1/r1XNbPy+gg+/qb8ua52F/5DnQprFA7l5u2Pe+2WzG 7D3ztx6PKP7ob8qkXH6RQGeGUCbwnWwX0A8P6mEI3+J6GsI7BPidQPv4UUuIjZGIfUaywbQSQkoa 24O0G3O/RCRSZi0EPsggT8oY1rEtZE/NLrEHhtsN4zNThqgMXwYeW/V3APKU48IPACFGSskk4ZEk oAHhKeA7N1v9ir5HQ9/aDhu8be0H3wBuXYPdOJQ5+XoO/GvV9XuvuvrVoqoTnyc3mRuNm+9P4Or1 6LbAl3fh8MltmeR1+xvfx1duddVK0F6VbuJKHNB4dF+Ub9YrFJrv3zuo2X9RwJOxWoS9XQdJjOAS 8qnDJFJYqZU0qoPECCmMFayDxFpiJQ9bJw6QKMoVtSLsdDxAYpXkXArWIa5ViinSbH48SGKpZrZr RFbDVKRo2AzbQWIZ6VKd1YpqqanoILGI/uZV8kESoSHMqw7VWSupxhNYXSRKEjAlP0gCTki1YVoc xguQ4FYTRg6Ly/CEP8Edj10kYB/TNSIg0QoipDwMKYYvDaCq6oAUg1LBGMB4J4lUoOAOSAGJlsxo 3kliwEW46VIdmBnmpk7VMcWAinUNmilFpGWH4Y0bhhURqpMRB8UAOLtsxDlXnHUAk0HMVgxmrsNO AiScoZG6xAV/lsTww96IJABMY7vEVTAkyWyXpTUFX2x2AB4kYcwqqKQ6ScCPIOR1kQjKKONdZtTK cqVFl160ZZaKTr0YqYjtirtgHiIVl6ZLXEuJAER0kjAN8aUTmBC5FfhIJwkUBxqQ1UmicC9ehx9B uqCQVYfqKMx7TLMu1eFZH6pFR/QGEilAkq5wSHHSIkZ0QApIJFCJDkhRamA+Il2qA2yDnQ3vYsQx 6ppOcbkONUOHAajQEONll9sD9iUipouRAitR0hW9qQI4wai6etFEaxCnS3UwM8J/uiMEAQlEb9uR BSEJeL0yHXoBrUEIYh0GgCkaXA186XAvAr/BBTGIHxYXSCjoxbLD4goW8iQIef2QK2ZJfTwZ5GA2 ySHNPpxdcUghIFxoddhtcGGZ6/bsyyE1QA2mODjyYWUaY8ErJO0wicHXvDB7dJgEcwyAWNesALkv Q6N04BDTX6NMVy4CU6WEUcGI8AD5TRUOO0PpBUl7HWqwMX657V3/pb/N/cSnSY5l5jUB6ldT/EUH gg6gJg0n46Fo+XURPgV3zcKe2nSK+4ChVLm65gNGBlIOKEHaOS7Nl3XzoQQxkAq/CzWB33LA2ICZ gdQDKAkotXBjtUseK5JrNVDIvf3AHTTogQIJGPY6Te6QtwkMoE7JQ2FzbTdYQonD41NXJvOGfRB+ UhYz/I1yp1CYtVJTjsRQ21RZqM0usE1A23pTFVxLfGb91bzQpRpwvjq1nzUaofo17mKucZsxNY0M +NMOGFDrgRQDa4Maa3db+nqJWqSbof4PXvNQSN7D2MoBXqMoyXhcuqoKH0a4ZijMvUve5OHzWtcM ueau2OiL2cA7fBcQ7UKChsFQadMDp0Hw9fA4Gxg2sCToFzvgyDQvavwpg2pT5++CbjnaManxNUMo Oq85DtQHUmQ7dpUr71yFahSkMVMVjvpfC9R8VS/GOG7BA/EMysYaj9pXOFiBfG+KoEAhg6bwlxoI O5B8YOzAIrfmEBjcwJHj1yXgJ+DJDjQBmLBAcVdgh7JBQoLsZUDwDHB555qdWdCGxHk4j4RX2Dk4 AGKQhQUe/MWbAUN13KATZVy0tlAyqHZcgCILXMe4Vqifb9pjmeHcJILyj3gHpQ3HQvHCDDR2tDqW CC3BD95uetI0fPFhvvoEIzaxzSOAxDf4nEYRGA5WI+v7qU9RfTropgwUBrTCg6B4Tib03TgMfm2i 8jdZcClU1QS/qHJtwNuI2YE8DBctarCbP6H9jGh8fAa4C6owMhgDf6mBxbv/t4ApJ6VqOCnw6O+1 0cGiaemaEZs9FujJtLEpDsiy9tBoMfN1ktfZMrTyRi8lKGIGys1QHIvcJ2DGlpdVa8wHY2PTjp+A cITa4MmE7ISrQWhjATi+IUCOOEWFCwExq4kHDnEb2mTo+j78Vk1v1dyldXNXB2Vvjr6FRhvCZ3MS J8ScELVWm0/wmgUPCWsxTVgLoQrCWuggxKgkqC9cBr8Mv5Bd4F4uQsALoWjl7sOywQdlZCsOBh3S JtY0iANQBKkg2rw/OG+M7vhqFWr9BQ+IuR+sdULLxc6kFGb77yY+q135LT5YXe1+IzSsGFXYW/MR kOt3/dV3SZnc/1pJOCW4JhCxz5nsUPCjFCxCwXYoaIRC7lCQCIXZpoB54Ygc1BzjQnWEYkcfMFEd GQuNqFTsEMRUiivgi/k4pG/rj8MyOSR6yOkrRmAoMN4Li3klpieNu2zRQmAgashE//0f/g3Dpjqj 1FcAAA== headers: Access-Control-Allow-Credentials: - "true" Access-Control-Allow-Headers: - Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Authorization, Cache-Control Access-Control-Allow-Methods: - POST, GET, OPTIONS, PUT, DELETE, PATCH Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Authorization, Cache-Control Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "4564" Content-Security-Policy: - default-src 'self'; object-src 'none' Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:24 GMT Nel: - '{"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]}' Referrer-Policy: - strict-origin-when-cross-origin Report-To: - '{"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1754953644&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&s=nBO0V%2BFanUZuG2cxQUBusac7lo7PJOTX87p%2Fhg4edAo%3D"}]}' Reporting-Endpoints: - heroku-nel=https://nel.heroku.com/reports?ts=1754953644&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&s=nBO0V%2BFanUZuG2cxQUBusac7lo7PJOTX87p%2Fhg4edAo%3D Server: - gunicorn Strict-Transport-Security: - max-age=31556926; includeSubDomains Vary: - Accept-Encoding Via: - 1.1 vegur X-Api-Pool: - common X-Content-Type-Options: - nosniff X-Frame-Options: - SAMEORIGIN X-Xss-Protection: - 1; mode=block status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1073%2Fpnas.1414271111?mailto=example%40papercrow.ai response: body: string: !!binary | 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 N1jwfwELpZ7Qdi8AAA== headers: Connection: - keep-alive Content-Length: - "3604" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:24 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1073%2Fpnas.1414271111/transform/application/x-bibtex response: body: string: " @article{Makris_2014, title={Developing functional musculoskeletal tissues through hypoxia and lysyl oxidase-induced collagen cross-linking}, volume={111}, ISSN={1091-6490}, url={http://dx.doi.org/10.1073/pnas.1414271111}, DOI={10.1073/pnas.1414271111}, number={45}, journal={Proceedings of the National Academy of Sciences}, publisher={Proceedings of the National Academy of Sciences}, author={Makris, Eleftherios A. and Responte, Donald J. and Paschos, Nikolaos K. and Hu, Jerry C. and Athanasiou, Kyriacos A.}, year={2014}, month=oct } " headers: Connection: - keep-alive Date: - Mon, 11 Aug 2025 23:07:24 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_ensure_sequential_run.yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.48550%2Farxiv.2312.07559?mailto=example%40papercrow.ai response: body: string: Resource not found. headers: Connection: - keep-alive Content-Type: - text/plain Date: - Mon, 11 Aug 2025 23:07:22 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 404 message: Not Found - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.48550/arxiv.2312.07559?fields=externalIds%2Ctitle response: body: string: '{"paperId": "7e55d8701785818776323b4147cb13354c820469", "externalIds": {"ArXiv": "2312.07559", "DBLP": "journals/corr/abs-2312-07559", "DOI": "10.48550/arXiv.2312.07559", "CorpusId": 266191420}, "title": "PaperQA: Retrieval-Augmented Generative Agent for Scientific Research"} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "277" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:22 GMT Via: - 1.1 97354ec70bdda7ac06cc29aed9bfdb3c.cloudfront.net (CloudFront) X-Amz-Cf-Id: - x9CtPKv1V150lqYHGe6OC126K8s2LPDBKazjhAS2pycQf6_P_FOA-w== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - PKeiuGgZPHcEp5Q= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "277" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:22 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 07899b68-cb8e-47aa-abe2-09f2c18e3a6f status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.48550%2FarXiv.2312.07559/transform/application/x-bibtex response: body: string: Resource not found. headers: Connection: - keep-alive Content-Type: - text/plain;charset=utf-8 Date: - Mon, 11 Aug 2025 23:07:22 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 404 message: Not Found - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1063%2F1.4938384?mailto=example%40papercrow.ai response: body: string: !!binary | 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 headers: Connection: - keep-alive Content-Length: - "3933" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:22 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1063%2F1.4938384/transform/application/x-bibtex response: body: string: " @article{Skarlinski_2015, title={Effect of native oxide layers on copper thin-film tensile properties: A reactive molecular dynamics study}, volume={118}, ISSN={1089-7550}, url={http://dx.doi.org/10.1063/1.4938384}, DOI={10.1063/1.4938384}, number={23}, journal={Journal of Applied Physics}, publisher={AIP Publishing}, author={Skarlinski, Michael D. and Quesnel, David J.}, year={2015}, month=dec } " headers: Connection: - keep-alive Date: - Mon, 11 Aug 2025 23:07:23 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.1063/1.4938384?fields=authors%2CcitationCount%2CcitationStyles%2CexternalIds%2CinfluentialCitationCount%2CisOpenAccess%2Cjournal%2CopenAccessPdf%2CpublicationDate%2CpublicationTypes%2Ctitle%2Curl%2Cvenue%2Cyear response: body: string: '{"paperId": "4187800ac995ae172c88b83f8c2c4da990d02934", "externalIds": {"MAG": "2277923667", "DOI": "10.1063/1.4938384", "CorpusId": 124514389}, "url": "https://www.semanticscholar.org/paper/4187800ac995ae172c88b83f8c2c4da990d02934", "title": "Effect of native oxide layers on copper thin-film tensile properties: A reactive molecular dynamics study", "venue": "", "year": 2015, "citationCount": 8, "influentialCitationCount": 0, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": "CLOSED", "license": null}, "publicationTypes": null, "publicationDate": "2015-12-21", "journal": {"name": "Journal of Applied Physics", "pages": "235306", "volume": "118"}, "citationStyles": {"bibtex": "@Article{Skarlinski2015EffectON,\n author = {Michael Skarlinski and D. Quesnel},\n journal = {Journal of Applied Physics},\n pages = {235306},\n title = {Effect of native oxide layers on copper thin-film tensile properties: A reactive molecular dynamics study},\n volume = {118},\n year = {2015}\n}\n"}, "authors": [{"authorId": "9821934", "name": "Michael Skarlinski"}, {"authorId": "37723150", "name": "D. Quesnel"}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1116" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:23 GMT Via: - 1.1 97354ec70bdda7ac06cc29aed9bfdb3c.cloudfront.net (CloudFront) X-Amz-Cf-Id: - h7gqB1i0lzjlE58hOkQcj7VovFWzl0oOS9InFKY3wmAH2yYYoaRFgA== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - PKei1EV0vHcEaTQ= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1116" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:23 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 33a7be51-114e-4d75-9bae-25bf8fb26967 status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_ensure_sequential_run_early_stop.yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.48550/arxiv.2312.07559?fields=externalIds%2Ctitle response: body: string: '{"paperId": "7e55d8701785818776323b4147cb13354c820469", "externalIds": {"ArXiv": "2312.07559", "DBLP": "journals/corr/abs-2312-07559", "DOI": "10.48550/arXiv.2312.07559", "CorpusId": 266191420}, "title": "PaperQA: Retrieval-Augmented Generative Agent for Scientific Research"} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "277" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:23 GMT Via: - 1.1 f36785ff79b1d07dbaa3721ed491b772.cloudfront.net (CloudFront) X-Amz-Cf-Id: - jpfhVw1HLK8M4L09f6WiPP9N3yMHV9IZVxdvD87TD1Y9hQAfWfNLiA== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - PKei4HjJvHcEZKQ= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "277" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:23 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - f3173498-aa1b-420c-b37c-aec4fa0f9b2a status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.48550%2FarXiv.2312.07559/transform/application/x-bibtex response: body: string: Resource not found. headers: Connection: - keep-alive Content-Type: - text/plain;charset=utf-8 Date: - Mon, 11 Aug 2025 23:07:24 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 404 message: Not Found version: 1 ================================================ FILE: tests/cassettes/test_equations[docling].yaml ================================================ interactions: - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example@papercrow.ai&query.title=SF+Districts+in+the+style+of+Andy+Warhol,+with+Math&rows=1 response: body: string: !!binary | H4sIAAAAAAAA/8VXW3PiOBr9K1o/dVfZxhfAmJeppDPTl0xfKslM105IpYQtsBZb8kpyGEjx3/fI BkID6dqqfdiEB9Dl0/nOd9HRs6MNNY12xo5cOK5TMa3pnHlmVTOMLaVaeCXX5mDqiSnNpcBs6Ad+ 8DLjjJ+dGc2YgbXnjesYaWjpKaab0g7Fo2Q47LsON6zCz/tnh4uc/c1yuy+nhnk1VXbh/X0URAM3 dqPk4cHtpgyvLB474QWxFyV3QTIejMbB4C8AsLPwo6qdcZj042AYRaNBEA9c5wVs7PcDP3aAq26m cKlgyitlRk03fWsaY+YAAHOKzZhiImNeJhthYDQ42IXFn/xLn3xmZl3iJzzSU7FlDF5tqasVF9bY Ey0b+ztNRnE/GQaDJA37gLFfyEqWGSUFz86vjkJnAxpKnjGhuyPgK4Ceoy108X+GtdAL7OcuCMbt 55i1YZD2B2kU2D9QlElhmDAHsTZ5hS05K+nK48LL6QpHgpY/bn7HbGFMrceT3qS3XC59bX2fM+Vn spr07E7r7v8B9JNU/wvohxebuawoFy367bd7REQsftjm2A1Kal1RlA0S3yiedfk1o6VmB7mXe11+ nKXj4QErr75+tCUW+GEQJJMeEsKLPaSE1+aEFz7GiaWjy6GplAsvK2ht2oTMFIPR84UVukM3Ds6z PfTi4C4C1dE4Tk7YjgbBKI4HScd23Va8E0WBF0UR1jZ1d5ZEpq5+oDeX3JdqPuntvdmx9rin63G7 z3W0bFRmTb+zc6jFtsK8fVHm3nS1K8zAQjSlrQrnQuQr8p2qQpY2EDU28L9fKIQV2pgCGWEraM6f mM2QT7KgQjBN/uQw3RbsjFa8tA5cC5YVdkSzfzf2ZIzNuGqbIZ3NeMm3zeP+waZKxapp2x2i1B72 EmkpkCnslWAkbhfuvXstvAWzAOLk8d1NaKkVSKUmM42yQXUumfgXQAoX7paI+KT3O1qpYMoll41a FFTlZkyuqCbXdueSqQXhFfmLcdOuJ5oBkCIG/gmus4IJcsNqJfNmzZmaIhxYSu7DNB48+G3xHgCK TgF9xwmMNCInX2hWlHTSBEE+88m14qa1T94zTStDGz2nU+aTy9wn4RBwmQI3JArC+OSc+Jzjau6S 94oZi3lMDkKOfrwid6ph5NZItfLJR8zf4eRfqTaIblkiX8lXgwZOwkkvismbMB0O37oknTT2fKTJ MYL+awhupKBlDoq59XpeMt5yeKms47MsRztoz7fzdzhXr8EnFpI3hq5xZBQhJX00rpFPXsoEc37O Jr1L1qy0Bza9zrV1A+4qJia9fwzCJE6HwB6lnYUwfXsCe3AO9notS+qSOznldLzlzO0IBBHRaEtC Okredtg/UAUfye2asQolQt58mPtvx6QFJ2BFZ03lk4tKI6FyipZ5hYaXg4UwTROXxIOgMxkPohOE wzMIORVZwV3yjcpSwprUS5zvkneFgv6QdTHpvadlySWGStrkXI6RVXMmvNua4w4F5QfpMOl9kprV RYfXJ78pKhazRhlCkSk+sZfGCazkDCw0o1yi0q7oE8+PMu66DfewRGS+sCX5J8QSvB+lPrFI5ZKu 9vtaGISiQnabL2YgThcyW+iO8AuAQy1cVAy3BiXJcNJLbGxGI4KUCcNoG6KofwJ8ZG85yT2qNVOm 7ZCYyl7655FXXWdzyXH3G5OPVojYilXkOzKQqYJxcPsL+SzxQzDyGS1McVpWK234oq35tnEsDDoq Ep6WbGEn0G9sVyBPUpAfQ2F9vTVsRgWq41qxZm072B9L7G7QXHeJZttXBwH9CC3jCleRsPc6Usy2 L02+FZZ/1hfSzrRQ2n63/VbC267TxDarrCGp2l4zcslw0LGZJL5zcNfGQYoZe9nGo/4wGUZx2n8M gsEx4ekppzccyYiS+kCB5RsDS+Odx7YNXHI5V7Qu+K77/bz5hcHpCbemay/QqUy8BG9LVZtWXtc7 flWMzxFHuE6uaQ3FXRL0XqxEXOdUrBkBXLDmYx/uYUE4ErIs5x2hDYlsI/D3Coja68Lb37SH8fTg bz5tssLeuSWMNZ0uyJnjtgqpvc+OBdeJdJr0tkpr0qvz2YFSeEX37HTZVv+AqZplfMZB1OtCkNvh HOVB6xpiYyf9NceFT3FVQVYULFsAVOt5zmqp+Ws6qo8HStg/o6P69oES9u/CwTjsj4MTHZWEQT9K o/5WR+lMKuyMh36SjoIktlJgJ4Ge7SsC6mhlv/4XHP6ctc3GCindvCYMWx3y8fbyi43xj88V9+hB 8nAgWPThK+kY5Kn0eyWge7n0E2xde+sk1/P+qRSST025InYV7EiVWxEWuo6g1V6xPW41mE3RKSsx /JsdJl93w3Mlm9oevd31rtPSH+zVo1YH+7YTZDez2bTir33UejWqpNPFOB+asQtc+/Dx2sduq1g1 oyorPFix72DRlOVms/kPmibI64kPAAA= headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "1847" Content-Type: - application/json Date: - Mon, 05 Jan 2026 19:41:57 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit: - "150" x-rate-limit-interval: - 1s status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=SF+Districts+in+the+style+of+Andy+Warhol,+with+Math&fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"error":"Title match not found"} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "34" Content-Type: - application/json Date: - Mon, 05 Jan 2026 19:41:58 GMT Via: - 1.1 1fd3242984ceacb561c135f27536c5da.cloudfront.net (CloudFront) X-Amz-Cf-Id: - lRgFbPLfHGQbZYg7uAzY312Ovq25CLgcfq720AKUOBkB-ouED8HrxA== X-Amz-Cf-Pop: - SFO53-P10 X-Cache: - Error from cloudfront x-amz-apigw-id: - WugQ7FrZvHcEgzQ= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "34" x-amzn-Remapped-Date: - Mon, 05 Jan 2026 19:41:58 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 4495ec60-2461-4e4c-9817-7eb3245e94c8 status: code: 404 message: Not Found version: 1 ================================================ FILE: tests/cassettes/test_equations[nemotron].yaml ================================================ interactions: - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example@papercrow.ai&query.title=SF+Districts+in+the+style+of+Andy+Warhol,+with+Math&rows=1 response: body: string: !!binary | H4sIAAAAAAAA/8VXW3PiOBr9K1o/dVfZxhfAmJeppDPTl0xfKslM105IpYQtsBZb8kpyGEjx3/fI BkID6dqqfdiEB9Dl0/nOd9HRs6MNNY12xo5cOK5TMa3pnHlmVTOMLaVaeCXX5mDqiSnNpcBs6Ad+ 8DLjjJ+dGc2YgbXnjesYaWjpKaab0g7Fo3iUhq7DDavw8/7Z4SJnf7Pc7supYV5NlV14fx8F0cCN 3Sh5eHC7KcMri8dOeEHsRcldkIwHo3Ew+AsA7Cz8qGpnHCb9OBhG0WgQxAPXeQEb+/3Ajx3gqpsp XCqY8kqZUdNN35rGmDkAwJxiM6aYyJiXyUYYGA0OdmHxJ//SJ5+ZWZf4CY/0VGwZg1db6mrFhTX2 RMvG/k6TUdxPhsEgScM+YOwXspJlRknBs/Oro9DZgIaSZ0zo7gj4CqDnaAtd/J9hLfQC+7kLgnH7 OWZtGKT9QRoF9g8UZVIYJsxBrE1eYUvOSrryuPByusKRoOWPm98xWxhT6/GkN+ktl0tfW9/nTPmZ rCY9u9O6+38A/STV/wL64cVmLivKRYt+++0eERGLH7Y5doOSWlcUZYPEN4pnXX7NaKnZQe7lXpcf Z+l4eMDKq68fbYkFfhgEyaSHhPBiDynhtTnhhY9xYunocmgq5cLLClqbNiEzxWD0fGGF7tCNg/Ns D704uItAdTSOkxO2o0EwiuNB0rFdtxXvRFHgRVGEtU3dnSWRqasf6M0l96WaT3p7b3asPe7petzu cx0tG5VZ0+/sHGqxrTBvX5S5N13tCjOwEE1pq8K5EPmKfKeqkKUNRI0N/O8XCmGFNqZARtgKmvMn ZjPkkyyoEEyTPzlMtwU7oxUvrQPXgmWFHdHs3409GWMzrtpmSGczXvJt87h/sKlSsWradocotYe9 RFoKZAp7JRiJ24V7714Lb8EsgDh5fHcTWmoFUqnJTKNsUJ1LJv4FkMKFuyUiPun9jlYqmHLJZaMW BVW5GZMrqsm13blkakF4Rf5i3LTriWYApIiBf4LrrGCC3LBaybxZc6amCAeWkvswjQcPflu8B4Ci U0DfcQIjjcjJF5oVJZ00QZDPfHKtuGntk/dM08rQRs/plPnkMvdJOARcpsANiYIwPjknPue4mrvk vWLGYh6Tg5CjH6/InWoYuTVSrXzyEfN3OPlXqg2iW5bIV/LVoIGTcNKLYvImTIfDty5JJ409H2ly jKD/GoIbKWiZg2JuvZ6XjLccXirr+CzL0Q7a8+38Hc7Va/CJheSNoWscGUVISR+Na+STlzLBnJ+z Se+SNSvtgU2vc23dgLuKiUnvH4MwidMhsEdpZyFM357AHpyDvV7LkrrkTk45HW85czsCQUQ02pKQ jpK3HfYPVMFHcrtmrEKJkDcf5v7bMWnBCVjRWVP55KLSSKicomVeoeHlYCFM08Ql8SDoTMaD6ATh 8AxCTkVWcJd8o7KUsCb1Eue75F2hoD9kXUx672lZcomhkjY5l2Nk1ZwJ77bmuENB+UE6THqfpGZ1 0eH1yW+KisWsUYZQZIpP7KVxAis5AwvNKJeotCv6xPOjjLtuwz0sEZkvbEn+CbEE70epTyxSuaSr /b4WBqGokN3mixmI04XMFroj/ALgUAsXFcOtQUkynPQSG5vRiCBlwjDahijqnwAf2VtOco9qzZRp OySmspf+eeRV19lcctz9xuSjFSK2YhX5jgxkqmAc3P5CPkv8EIx8RgtTnJbVShu+aGu+bRwLg46K hKclW9gJ9BvbFciTFOTHUFhfbw2bUYHquFasWdsO9scSuxs0112i2fbVQUA/Qsu4wlUk7L2OFLPt S5NvheWf9YW0My2Utt9tv5Xwtus0sc0qa0iqtteMXDIcdGwmie8c3LVxkGLGXrbxqD9MhlGc9h+D YHBMeHrK6Q1HMqKkPlBg+cbA0njnsW0Dl1zOFa0Lvut+P29+YXB6wq3p2gt0KhMvwdtS1aaV1/WO XxXjc8QRrpNrWkNxlwS9FysR1zkVa0YAF6z52Id7WBCOhCzLeUdoQyLbCPy9AqL2uvD2N+1hPD34 m0+brLB3bgljTacLcua4rUJq77NjwXUinSa9rdKa9Op8dqAUXtE9O1221T9gqmYZn3EQ9boQ5HY4 R3nQuobY2El/zXHhU1xVkBUFyxYA1Xqes1pq/pqO6uOBEvbP6Ki+faCE/btwMA774+BERyVh0I/S qL/VUTqTCjvjxA+jYBBEVgrsJNCzfUVAHa3s1/+Cw5+zttlYIaWb14Rhq0M+3l5+sTH+8bniHj1I Hg4Eiz58JR2DPJV+rwR0L5d+gq1rb53ket4/lULyqSlXxK6CHalyK8LwzhS02iu2x60Gsyk6ZSWG f7PD5OtueK5kU9ujt7vedVr6g7161Opg33aC7GY2m1b8tY9ar0aVdLoY50MzdoFrHz5e+9htFatm VGWFByv2HSyastxsNv8BhPE8VokPAAA= headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "1847" Content-Type: - application/json Date: - Tue, 18 Nov 2025 04:57:59 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=SF+Districts+in+the+style+of+Andy+Warhol,+with+Math&fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"error":"Title match not found"} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "34" Content-Type: - application/json Date: - Tue, 18 Nov 2025 04:57:59 GMT Via: - 1.1 d52f5364539f50d2591f4996970cf25e.cloudfront.net (CloudFront) X-Amz-Cf-Id: - qswpX-M7HflkMBwaoWT4yIjkYMBV8NcDiPeMAuLeI4VhyrLMeiWoxg== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Error from cloudfront x-amz-apigw-id: - UORxpECWPHcEJTw= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "34" x-amzn-Remapped-Date: - Tue, 18 Nov 2025 04:57:59 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 797ac07c-dcaf-4631-9fec-6847dc1d7e87 status: code: 404 message: Not Found - request: body: '{"messages":[{"role":"user","content":""}],"model":"nvidia/nemotron-parse","tool_choice":{"type":"function","function":{"name":"markdown_bbox"}},"tools":[{"type":"function","function":{"name":"markdown_bbox"}}]}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "541401" content-type: - application/json host: - integrate.api.nvidia.com user-agent: - AsyncOpenAI/Python 2.8.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.8.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "600.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://integrate.api.nvidia.com/v1/chat/completions response: body: string: '{"id":"chatcmpl-aa259cddcb3044cfb937a40f2e68d8e9","object":"chat.completion","created":1763441881,"model":"nvidia/nemotron-parse","choices":[{"index":0,"message":{"role":"assistant","content":null,"refusal":null,"annotations":null,"audio":null,"function_call":null,"tool_calls":[{"id":"chatcmpl-tool-30cada0ae8a3475f86882bb8d4fa0470","type":"function","function":{"name":"markdown_bbox","arguments":"[[{\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.1305, \"xmax\": 0.8103281921618205, \"ymax\": 0.1586}, \"text\": \"## SF Districts in the style of Andy Warhol\", \"type\": \"Section-header\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.3914, \"xmax\": 0.30259418457648546, \"ymax\": 0.4039}, \"text\": \"Text under image 1.\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.5109, \"xmax\": 0.29353122629582806, \"ymax\": 0.5211}, \"text\": \"Text under table 1.\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.5422, \"xmax\": 0.35145082174462705, \"ymax\": 0.5563}, \"text\": \"Inline LaTeX: _E=mc_2\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.5813, \"xmax\": 0.2568627054361568, \"ymax\": 0.5914}, \"text\": \"Block LaTeX:\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.6125, \"xmax\": 0.8571013906447535, \"ymax\": 0.6453}, \"text\": \"\\\\(x+n+a=\\\\sqrt{ax+(n+a)^2+x\\\\sqrt{a(x+n)+(n+a)^2+(x+n)\\\\sqrt{\\\\dots}}}\\\\)\", \"type\": \"Formula\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.4227, \"xmax\": 0.27717623261694063, \"ymax\": 0.493}, \"text\": \"\\\\begin{tabular}{cc}\\nCol1 & Col2 \\\\\\\\\\nVal11 & Val12 \\\\\\\\\\nVal21 & Val11 \\\\\\\\\\n\\\\end{tabular}\", \"type\": \"Table\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.1797, \"xmax\": 0.422704424778761, \"ymax\": 0.3688}, \"text\": \"San Francisco\\n2 Kilometers\\nNob Hill_ Russian Hill\\nFisherman''s Wharf\\n2 Miles\\nChinatown North Beach\\nGolden Gate\\nUnion Square Financial District\\nCivic Center Tenderloin\\nWestern Addition\\nBeight\\nThe Aremues\\nMassion Bernal Heights\\nCastro nse Valley\\nTwin Peaks Lake Merced\\nSoutheast San Francisco\", \"type\": \"Picture\"}]]"}}],"reasoning_content":null},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":5,"total_tokens":295,"completion_tokens":290,"prompt_tokens_details":null},"prompt_logprobs":null,"kv_transfer_params":null}' headers: Access-Control-Expose-Headers: - nvcf-reqid Connection: - keep-alive Content-Length: - "2527" Content-Type: - application/json Date: - Tue, 18 Nov 2025 04:58:06 GMT Nvcf-Reqid: - 6c15fe21-36c9-42cf-866f-27a6eb3cac1e Nvcf-Status: - fulfilled Server: - uvicorn Vary: - Origin status: code: 200 message: OK - request: body: '{"messages":[{"role":"user","content":""}],"model":"nvidia/nemotron-parse","tool_choice":{"type":"function","function":{"name":"markdown_bbox"}},"tools":[{"type":"function","function":{"name":"markdown_bbox"}}]}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "497949" content-type: - application/json host: - integrate.api.nvidia.com user-agent: - AsyncOpenAI/Python 2.8.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.8.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "600.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://integrate.api.nvidia.com/v1/chat/completions response: body: string: '{"id":"chatcmpl-3fc9de186e204522b6ff6577e252b0b6","object":"chat.completion","created":1763441881,"model":"nvidia/nemotron-parse","choices":[{"index":0,"message":{"role":"assistant","content":null,"refusal":null,"annotations":null,"audio":null,"function_call":null,"tool_calls":[{"id":"chatcmpl-tool-d87d9bdbbee449d68a9b80b0131bd5b2","type":"function","function":{"name":"markdown_bbox","arguments":"[[{\"bbox\": {\"xmin\": 0.14696131479140329, \"ymin\": 0.2625, \"xmax\": 0.30363590391908973, \"ymax\": 0.275}, \"text\": \"Text under image 4.\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.14696131479140329, \"ymin\": 0.3812, \"xmax\": 0.29353122629582806, \"ymax\": 0.3914}, \"text\": \"Text under table 4.\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.14696131479140329, \"ymin\": 0.4117, \"xmax\": 0.35145082174462705, \"ymax\": 0.4258}, \"text\": \"Inline LaTeX: _E=mc_2\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.14696131479140329, \"ymin\": 0.4508, \"xmax\": 0.2568627054361568, \"ymax\": 0.4617}, \"text\": \"Block LaTeX:\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.14696131479140329, \"ymin\": 0.482, \"xmax\": 0.8581431099873578, \"ymax\": 0.5156}, \"text\": \"\\\\(x+n+a=\\\\sqrt{ax+(n+a)^2+x\\\\sqrt{a(x+n)+(n+a)^2+(x+n)\\\\sqrt{\\\\dots}}}\\\\)\", \"type\": \"Formula\"}, {\"bbox\": {\"xmin\": 0.14696131479140329, \"ymin\": 0.2938, \"xmax\": 0.27717623261694063, \"ymax\": 0.3609}, \"text\": \"\\\\begin{tabular}{cc}\\n**Col1** & **Col2** \\\\\\\\\\nVal11 & Val12 \\\\\\\\\\nVal21 & Val11 \\\\\\\\\\n\\\\end{tabular}\", \"type\": \"Table\"}, {\"bbox\": {\"xmin\": 0.1449820480404551, \"ymin\": 0.0492, \"xmax\": 0.422704424778761, \"ymax\": 0.2398}, \"text\": \"San Francisco\\n2 Kilometers\\nNob Hill -\\nFisherman''s Wharf\\n2 Miles\\nChinatown - Smith Beach\\nGolden Gate\\nUnion Square - Financial District\\nCivic Center Tenderoin\\nWestion Addition\\nI High\\nThe Avenue\\nN\\nMion Bennal Heights\\nCastro Nce Valley\\nTwin Peaks Lake Merced\\nSoutheat San Francisco\", \"type\": \"Picture\"}]]"}}],"reasoning_content":null},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":5,"total_tokens":289,"completion_tokens":284,"prompt_tokens_details":null},"prompt_logprobs":null,"kv_transfer_params":null}' headers: Access-Control-Expose-Headers: - nvcf-reqid Connection: - keep-alive Content-Length: - "2328" Content-Type: - application/json Date: - Tue, 18 Nov 2025 04:58:06 GMT Nvcf-Reqid: - 92bea4ee-bbbf-4275-ab87-c19d3469e603 Nvcf-Status: - fulfilled Server: - uvicorn Vary: - Origin status: code: 200 message: OK - request: body: '{"messages":[{"role":"user","content":""}],"model":"nvidia/nemotron-parse","tool_choice":{"type":"function","function":{"name":"markdown_bbox"}},"tools":[{"type":"function","function":{"name":"markdown_bbox"}}]}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "498625" content-type: - application/json host: - integrate.api.nvidia.com user-agent: - AsyncOpenAI/Python 2.8.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.8.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "600.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://integrate.api.nvidia.com/v1/chat/completions response: body: string: '{"id":"chatcmpl-ba2db70589e84e94ac6f170fb46b9315","object":"chat.completion","created":1763441881,"model":"nvidia/nemotron-parse","choices":[{"index":0,"message":{"role":"assistant","content":null,"refusal":null,"annotations":null,"audio":null,"function_call":null,"tool_calls":[{"id":"chatcmpl-tool-02f86a4006d748cdb266125b76578b2a","type":"function","function":{"name":"markdown_bbox","arguments":"[[{\"bbox\": {\"xmin\": 0.14696131479140329, \"ymin\": 0.743, \"xmax\": 0.8581431099873578, \"ymax\": 0.4297}, \"text\": \"\\\\(\\\\text{Text under image 2.\\n\\\\begin{array}{ c }\\nCol1 \\\\text{Col2} \\\\\\\\\\nVal11 \\\\text{Val12} \\\\\\\\\\nVal21 \\\\text{Val11\\n\\\\end{array}\\nText under table 2.\\n\\\\begin{array}{ c }\\nInlineLaTeX:E=mc^2 \\\\\\\\\\nBlockLaTeX: \\\\\\\\\\n\\\\hat{x}+n+a=\\\\sqrt{ax+(n+a)^2+x\\\\sqrt{a(x+n)+(n+a)^2+(x+n)\\\\sqrt{\\\\cdots}}}\\\\)\", \"type\": \"Formula\"}, {\"bbox\": {\"xmin\": 0.14696131479140329, \"ymin\": 0.407, \"xmax\": 0.40332844500632115, \"ymax\": 0.5555}, \"text\": \"Massion Bernal Heights\\nCallmo CEO\\nSlovboe Valley\\nTwin Paks Lewis Merced\\nSoutheast San Francisco\\naJ smankall travelling over back\\nFinancial\\nCharlen San Francisco\\nX\\nDecarell Block LaTeX:\\nLast \\nLinid TO, Boy\", \"type\": \"Picture\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.4078, \"xmax\": 0.422704424778761, \"ymax\": 0.5516}, \"text\": \"San Francisco\\n2 Kilometers\\nNob Hill R\\u00e9cosan Hill\\nFisherman''s Wharf\\n2 Miles\\nchinatown North Beach\\nGolden Gale\\nUnion Square Financial District\\nCivic Center Tenderoin\\nWaston Addition\\nMinight\\nThe Avenue\\nN\\nCasro\\nNew Vehicle\\nTwin Paks Lake Merced\\nSoutheast San Francisco\", \"type\": \"Picture\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.4195, \"xmax\": 0.3504091024020228, \"ymax\": 0.4273}, \"text\": \"Inline\\nLaTeX:\\nE=mrc2\", \"type\": \"Picture\"}]]"}}],"reasoning_content":null},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":5,"total_tokens":352,"completion_tokens":347,"prompt_tokens_details":null},"prompt_logprobs":null,"kv_transfer_params":null}' headers: Access-Control-Expose-Headers: - nvcf-reqid Connection: - keep-alive Content-Length: - "2192" Content-Type: - application/json Date: - Tue, 18 Nov 2025 04:58:07 GMT Nvcf-Reqid: - d67137d2-ef8a-4245-b637-ee12df45d109 Nvcf-Status: - fulfilled Server: - uvicorn Vary: - Origin status: code: 200 message: OK - request: body: '{"messages":[{"role":"user","content":""}],"model":"nvidia/nemotron-parse","tool_choice":{"type":"function","function":{"name":"markdown_bbox"}},"tools":[{"type":"function","function":{"name":"markdown_bbox"}}]}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "498405" content-type: - application/json host: - integrate.api.nvidia.com user-agent: - AsyncOpenAI/Python 2.8.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.8.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "600.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://integrate.api.nvidia.com/v1/chat/completions response: body: string: '{"id":"chatcmpl-8d38ab4571254f8589ab65712d0852a1","object":"chat.completion","created":1763441881,"model":"nvidia/nemotron-parse","choices":[{"index":0,"message":{"role":"assistant","content":null,"refusal":null,"annotations":null,"audio":null,"function_call":null,"tool_calls":[{"id":"chatcmpl-tool-9759a83162cd445399c7e6258e43e412","type":"function","function":{"name":"markdown_bbox","arguments":"[[{\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.4422, \"xmax\": 0.2568627054361568, \"ymax\": 0.4555}, \"text\": \"Block LaTeX:\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.4727, \"xmax\": 0.8581431099873578, \"ymax\": 0.5164}, \"text\": \"\\\\(x+n+a=\\\\sqrt{ax+(n+a)^2+x\\\\sqrt{a(x+n)+(n+a)^2+(x+n)\\\\sqrt{\\\\dots}}}\\\\)\", \"type\": \"Formula\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.2922, \"xmax\": 0.27717623261694063, \"ymax\": 0.3547}, \"text\": \"\\\\begin{tabular}{cc}\\nCol1 & Col2 \\\\\\\\\\nVal11 & Val12 \\\\\\\\\\nVal21 & Val11 \\\\\\\\\\n\\\\end{tabular}\", \"type\": \"Table\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.0484, \"xmax\": 0.422704424778761, \"ymax\": 0.2398}, \"text\": \"San Francisco\\n2 Kilometers\\nNob Hill\\n-\\n2 Miles\\nFishermen''s Whart\\nChinaan Province\\nGolden Gate\\nUnion Square Financial District\\nB\\nCivic Center Tenderoin\\nWasion Addition\\nThe Avenue\\nN\\nMission Serial Heights\\nCastro -\\nNce Valley\\nTwin Prako Lake Merced\\nSoutheast San Francisco\", \"type\": \"Picture\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.5805, \"xmax\": 0.15102402022756006, \"ymax\": 0.5875}, \"text\": \"35\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.2633, \"xmax\": 0.30363590391908973, \"ymax\": 0.275}, \"text\": \"Text under image 5.\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.3742, \"xmax\": 0.29353122629582806, \"ymax\": 0.3844}, \"text\": \"Text under table 5.\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.4039, \"xmax\": 0.4959372945638433, \"ymax\": 0.4125}, \"text\": \"Inline LaTeX: 156\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.14696131479140329, \"ymin\": 0.4117, \"xmax\": 0.35145082174462705, \"ymax\": 0.4234}, \"text\": \"158\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.14696131479140329, \"ymin\": 0.4562, \"xmax\": 0.3494715549936788, \"ymax\": 0.4586}, \"text\": \"159\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.43082983565107463, \"ymin\": 0.4609, \"xmax\": 0.46333147914032874, \"ymax\": 0.4789}, \"text\": \"160\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.45218508217446274, \"ymin\": 0.4844, \"xmax\": 0.5081254108723136, \"ymax\": 0.4945}, \"text\": \"188\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.44103868520859674, \"ymin\": 0.482, \"xmax\": 0.48166573957016434, \"ymax\": 0.4945}, \"text\": \"190\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.541668773704172, \"ymin\": 0.4805, \"xmax\": 0.5529193426042983, \"ymax\": 0.4938}, \"text\": \"170\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.5539610619469025, \"ymin\": 0.4789, \"xmax\": 0.5823999999999999, \"ymax\": 0.493}, \"text\": \"191\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.5548986093552465, \"ymin\": 0.4867, \"xmax\": 0.5813582806573956, \"ymax\": 0.4945}, \"text\": \"192\", \"type\": \"Caption\"}]]"}}],"reasoning_content":null},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":5,"total_tokens":352,"completion_tokens":347,"prompt_tokens_details":null},"prompt_logprobs":null,"kv_transfer_params":null}' headers: Access-Control-Expose-Headers: - nvcf-reqid Connection: - keep-alive Content-Length: - "3679" Content-Type: - application/json Date: - Tue, 18 Nov 2025 04:58:07 GMT Nvcf-Reqid: - 711e2135-a7a8-46f9-b23b-5090bb526931 Nvcf-Status: - fulfilled Server: - uvicorn Vary: - Origin status: code: 200 message: OK - request: body: '{"messages":[{"role":"user","content":""}],"model":"nvidia/nemotron-parse","tool_choice":{"type":"function","function":{"name":"markdown_bbox"}},"tools":[{"type":"function","function":{"name":"markdown_bbox"}}]}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "498673" content-type: - application/json host: - integrate.api.nvidia.com user-agent: - AsyncOpenAI/Python 2.8.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.8.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "600.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://integrate.api.nvidia.com/v1/chat/completions response: body: string: '{"id":"chatcmpl-181125e977074ccc96b99c7a57fd6f29","object":"chat.completion","created":1763441884,"model":"nvidia/nemotron-parse","choices":[{"index":0,"message":{"role":"assistant","content":null,"refusal":null,"annotations":null,"audio":null,"function_call":null,"tool_calls":[{"id":"chatcmpl-tool-1b7d407bb7774a8a81bbc7505f344c4c","type":"function","function":{"name":"markdown_bbox","arguments":"[[{\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.5359, \"xmax\": 0.9017911504424779, \"ymax\": 0.5359}, \"text\": \"Next results on the flux \\\\(\\\\sigma\\\\) in black. Paragraphs are available to refer to the previous text entry, \\\\(\\\\sigma\\\\) given in (2). Domain-crafted detections are available to specific data sets generally for this purpose. It is possible to check the fraction of data with inconsistent sources of data covering adjacent symbols standard deviation. Primarily, the wireless user is available, see (1) in Section 4.\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.4352, \"xmax\": 0.24873729456384322, \"ymax\": 0.4555}, \"text\": \"Block LaTeX:\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.4656, \"xmax\": 0.8590806573957016, \"ymax\": 0.5156}, \"text\": \"\\\\(x+n+a=\\\\sqrt{ax+(n+a)^2+x\\\\sqrt{a(x+n)+(n+a)^2+(x+n)\\\\sqrt{\\\\dots}}}\\\\)\", \"type\": \"Formula\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.2945, \"xmax\": 0.27717623261694063, \"ymax\": 0.3602}, \"text\": \"\\\\begin{tabular}{cc}\\n**Col1** & **Col2**\\\\\\\\\\nVal11 & Val12\\\\\\\\\\nVal21 & Val11\\\\\\\\\\n\\\\end{tabular}\", \"type\": \"Table\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.0492, \"xmax\": 0.9343969658659925, \"ymax\": 0.4195}, \"text\": \"San Francisco\\n2 Kilometers\\nNob Hill -\", \"type\": \"Picture\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.2617, \"xmax\": 0.31176131479140323, \"ymax\": 0.275}, \"text\": \"Text under image 3.\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.3734, \"xmax\": 0.29446877370417196, \"ymax\": 0.3836}, \"text\": \"Text under table 3.\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.4039, \"xmax\": 0.3524925410872313, \"ymax\": 0.4195}, \"text\": \"Inline LaTeX: _E=mc_2\", \"type\": \"Caption\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.3961, \"xmax\": 0.4206209860935525, \"ymax\": 0.2406}, \"text\": \"Mission Bonar Howell Herights\\nCastro - Nce Valley\\nTwin Praks - Lake Merced\\nSoutheast San Francisco\", \"type\": \"Caption\"}]]"}}],"reasoning_content":null},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":5,"total_tokens":347,"completion_tokens":342,"prompt_tokens_details":null},"prompt_logprobs":null,"kv_transfer_params":null}' headers: Access-Control-Expose-Headers: - nvcf-reqid Connection: - keep-alive Content-Length: - "2895" Content-Type: - application/json Date: - Tue, 18 Nov 2025 04:58:07 GMT Nvcf-Reqid: - ad98eeac-fe3a-4a09-8489-7b98f526ee4c Nvcf-Status: - fulfilled Server: - uvicorn Vary: - Origin status: code: 200 message: OK - request: body: '{"messages":[{"role":"user","content":""}],"model":"nvidia/nemotron-parse","tool_choice":{"type":"function","function":{"name":"markdown_bbox"}},"tools":[{"type":"function","function":{"name":"markdown_bbox"}}]}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "498673" content-type: - application/json host: - integrate.api.nvidia.com user-agent: - AsyncOpenAI/Python 2.8.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.8.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "600.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://integrate.api.nvidia.com/v1/chat/completions response: body: string: '{"id":"chatcmpl-621e34ccf4ac440d9a60142988f1a21f","object":"chat.completion","created":1763441889,"model":"nvidia/nemotron-parse","choices":[{"index":0,"message":{"role":"assistant","content":null,"refusal":null,"annotations":null,"audio":null,"function_call":null,"tool_calls":[{"id":"chatcmpl-tool-80dd568cc3254d8491cdb1f5f5fbf853","type":"function","function":{"name":"markdown_bbox","arguments":"[[{\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.2414, \"xmax\": 0.30467762326169406, \"ymax\": 0.2617}, \"text\": \"Text under image 3.\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.3648, \"xmax\": 0.29446877370417196, \"ymax\": 0.3781}, \"text\": \"Text under table 3.\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.3937, \"xmax\": 0.3504091024020228, \"ymax\": 0.4172}, \"text\": \"Inline LaTeX: _E=mc_2\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.4344, \"xmax\": 0.2568627054361568, \"ymax\": 0.4461}, \"text\": \"Block LaTeX:\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.4609, \"xmax\": 0.8581431099873578, \"ymax\": 0.5016}, \"text\": \"\\\\(x+n+a=\\\\sqrt{ax+(n+a)^2+x\\\\sqrt{a(x+n)+(n+a)^2+(x+n)\\\\sqrt{-}}}^2\\\\)\", \"type\": \"Formula\"}, {\"bbox\": {\"xmin\": 0.14602376738305944, \"ymin\": 0.2734, \"xmax\": 0.29759393173198484, \"ymax\": 0.35}, \"text\": \"\\\\begin{tabular}{cc}\\n\\\\multicolumn{2}{c}{**Col1Col2**} \\\\\\\\\\nVal11 & Val12 \\\\\\\\\\nVal21 & Val11 \\\\\\\\\\n\\\\end{tabular}\", \"type\": \"Table\"}, {\"bbox\": {\"xmin\": 0.14696131479140329, \"ymin\": 0.0453, \"xmax\": 0.422704424778761, \"ymax\": 0.2328}, \"text\": \"San Francisco\\n2 Kilometers\\nNob Hill Russian Hill\\nFisherman''s Wharf\\n2 Miles\\nChinatown North Beach\\nGolden Gate\\nUnion Square Financial District\\nCivic Center Tenderoin\\nWasdon Addition\\nRight\\nThe Avenue\\nMasion - Hemial Heights\\nCastro Nce Valley\\nIron Praaks - Lake Merced\\nSoutheast San Francisco\", \"type\": \"Picture\"}]]"}}],"reasoning_content":null},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":5,"total_tokens":291,"completion_tokens":286,"prompt_tokens_details":null},"prompt_logprobs":null,"kv_transfer_params":null}' headers: Access-Control-Expose-Headers: - nvcf-reqid Connection: - keep-alive Content-Length: - "2343" Content-Type: - application/json Date: - Tue, 18 Nov 2025 04:58:11 GMT Nvcf-Reqid: - 40bb4edd-ecae-44df-8bda-f9abd8bbba55 Nvcf-Status: - fulfilled Server: - uvicorn Vary: - Origin status: code: 200 message: OK - request: body: '{"messages":[{"role":"user","content":""}],"model":"nvidia/nemotron-parse","tool_choice":{"type":"function","function":{"name":"markdown_bbox"}},"tools":[{"type":"function","function":{"name":"markdown_bbox"}}]}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "498625" content-type: - application/json host: - integrate.api.nvidia.com user-agent: - AsyncOpenAI/Python 2.8.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.8.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "600.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://integrate.api.nvidia.com/v1/chat/completions response: body: string: '{"id":"chatcmpl-aafd4192a35941038f8c585f2038c3be","object":"chat.completion","created":1763441891,"model":"nvidia/nemotron-parse","choices":[{"index":0,"message":{"role":"assistant","content":null,"refusal":null,"annotations":null,"audio":null,"function_call":null,"tool_calls":[{"id":"chatcmpl-tool-2ce4dcd2955646eabb06c963e138c441","type":"function","function":{"name":"markdown_bbox","arguments":"[[{\"bbox\": {\"xmin\": 0.14696131479140329, \"ymin\": 0.2687, \"xmax\": 0.2720718078381795, \"ymax\": 0.4688}, \"text\": \"Text under image 2.
\\nText under table 2.
\\nInline LaTeX: _E=mc_2
\\nBlock LaTeX:\", \"type\": \"Text\"}, {\"bbox\": {\"xmin\": 0.14696131479140329, \"ymin\": 0.4969, \"xmax\": 0.8581431099873578, \"ymax\": 0.5312}, \"text\": \"\\\\(x+n+a=\\\\sqrt{ax+(n+a)^2+x\\\\sqrt{a(x+n)+(n+a)^2+(x+n)\\\\sqrt{\\\\dots}}}\\\\)\", \"type\": \"Formula\"}, {\"bbox\": {\"xmin\": 0.14696131479140329, \"ymin\": 0.2992, \"xmax\": 0.27717623261694063, \"ymax\": 0.3695}, \"text\": \"\\\\begin{tabular}{cc}\\n**Col1** & **Col2** \\\\\\\\\\nVal11 & Val12 \\\\\\\\\\nVal21 & Val11 \\\\\\\\\\n\\\\end{tabular}\", \"type\": \"Table\"}, {\"bbox\": {\"xmin\": 0.14696131479140329, \"ymin\": 0.0484, \"xmax\": 0.4216627054361568, \"ymax\": 0.2469}, \"text\": \"San Francisco\\n2 Kilometers\\nNob Hill -\\nFisherman''s Wharf\\n2 Miles\\nChinnatown - Berlin Beach\\nGolden Gate\\nUnion Square - Financial District\\nCivic Center Tenderoin\\nWassion Addition\\nNew\\nThe Avenue\\nadministration N\\nMassion - Some\\n-\\nGastro Tence Valley\\nTwin Physically\\n- Lake Merced\\nSoutheast San Francisco\", \"type\": \"Picture\"}]]"}}],"reasoning_content":null},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"service_tier":null,"system_fingerprint":null,"usage":{"prompt_tokens":5,"total_tokens":285,"completion_tokens":280,"prompt_tokens_details":null},"prompt_logprobs":null,"kv_transfer_params":null}' headers: Access-Control-Expose-Headers: - nvcf-reqid Connection: - keep-alive Content-Length: - "1934" Content-Type: - application/json Date: - Tue, 18 Nov 2025 04:58:13 GMT Nvcf-Reqid: - a37cd0b2-bc64-4662-a895-b610603c2ca3 Nvcf-Status: - fulfilled Server: - uvicorn Vary: - Origin status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_equations[pymupdf].yaml ================================================ interactions: - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example@papercrow.ai&query.title=SF+Districts+in+the+style+of+Andy+Warhol,+with+Math&rows=1 response: body: string: !!binary | H4sIAAAAAAAA/8VXW3PiOBr9K1o/dVfZxhfAmJeppDPTl0xfKslM105IpYQtsBZb8kpyGEjx3/fI BkID6dqqfdiEB9Dl0/nOd9HRs6MNNY12xo5cOK5TMa3pnHlmVTOMLaVaeCXX5mDqiSnNpcBs6Ad+ 8DLjjJ+dGc2YgbXnjesYaWjpKaab0g7FozgZxK7DDavw8/7Z4SJnf7Pc7supYV5NlV14fx8F0cCN 3Sh5eHC7KcMri8dOeEHsRcldkIwHo3Ew+AsA7Cz8qGpnHCb9OBhG0WgQxAPXeQEb+/3Ajx3gqpsp XCqY8kqZUdNN35rGmDkAwJxiM6aYyJiXyUYYGA0OdmHxJ//SJ5+ZWZf4CY/0VGwZg1db6mrFhTX2 RMvG/k6TUdxPhsEgScM+YOwXspJlRknBs/Oro9DZgIaSZ0zo7gj4CqDnaAtd/J9hLfQC+7kLgnH7 OWZtGKT9QRoF9g8UZVIYJsxBrE1eYUvOSrryuPByusKRoOWPm98xWxhT6/GkN+ktl0tfW9/nTPmZ rCY9u9O6+38A/STV/wL64cVmLivKRYt+++0eERGLH7Y5doOSWlcUZYPEN4pnXX7NaKnZQe7lXpcf Z+l4eMDKq68fbYkFfhgEyaSHhPBiDynhtTnhhY9xYunocmgq5cLLClqbNiEzxWD0fGGF7tCNg/Ns D704uItAdTSOkxO2o0EwiuNB0rFdtxXvRFHgRVGEtU3dnSWRqasf6M0l96WaT3p7b3asPe7petzu cx0tG5VZ0+/sHGqxrTBvX5S5N13tCjOwEE1pq8K5EPmKfKeqkKUNRI0N/O8XCmGFNqZARtgKmvMn ZjPkkyyoEEyTPzlMtwU7oxUvrQPXgmWFHdHs3409GWMzrtpmSGczXvJt87h/sKlSsWradocotYe9 RFoKZAp7JRiJ24V7714Lb8EsgDh5fHcTWmoFUqnJTKNsUJ1LJv4FkMKFuyUiPun9jlYqmHLJZaMW BVW5GZMrqsm13blkakF4Rf5i3LTriWYApIiBf4LrrGCC3LBaybxZc6amCAeWkvswjQcPflu8B4Ci U0DfcQIjjcjJF5oVJZ00QZDPfHKtuGntk/dM08rQRs/plPnkMvdJOARcpsANiYIwPjknPue4mrvk vWLGYh6Tg5CjH6/InWoYuTVSrXzyEfN3OPlXqg2iW5bIV/LVoIGTcNKLYvImTIfDty5JJ409H2ly jKD/GoIbKWiZg2JuvZ6XjLccXirr+CzL0Q7a8+38Hc7Va/CJheSNoWscGUVISR+Na+STlzLBnJ+z Se+SNSvtgU2vc23dgLuKiUnvH4MwidMhsEdpZyFM357AHpyDvV7LkrrkTk45HW85czsCQUQ02pKQ jpK3HfYPVMFHcrtmrEKJkDcf5v7bMWnBCVjRWVP55KLSSKicomVeoeHlYCFM08Ql8SDoTMaD6ATh 8AxCTkVWcJd8o7KUsCb1Eue75F2hoD9kXUx672lZcomhkjY5l2Nk1ZwJ77bmuENB+UE6THqfpGZ1 0eH1yW+KisWsUYZQZIpP7KVxAis5AwvNKJeotCv6xPOjjLtuwz0sEZkvbEn+CbEE70epTyxSuaSr /b4WBqGokN3mixmI04XMFroj/ALgUAsXFcOtQUkynPQSG5vRiCBlwjDahijqnwAf2VtOco9qzZRp OySmspf+eeRV19lcctz9xuSjFSK2YhX5jgxkqmAc3P5CPkv8EIx8RgtTnJbVShu+aGu+bRwLg46K hKclW9gJ9BvbFciTFOTHUFhfbw2bUYHquFasWdsO9scSuxs0112i2fbVQUA/Qsu4wlUk7L2OFLPt S5NvheWf9YW0My2Utt9tv5Xwtus0sc0qa0iqtteMXDIcdGwmie8c3LVxkGLGXrbxqD9MhlGc9h+D YHBMeHrK6Q1HMqKkPlBg+cbA0njnsW0Dl1zOFa0Lvut+P29+YXB6wq3p2gt0KhMvwdtS1aaV1/WO XxXjc8QRrpNrWkNxlwS9FysR1zkVa0YAF6z52Id7WBCOhCzLeUdoQyLbCPy9AqL2uvD2N+1hPD34 m0+brLB3bgljTacLcua4rUJq77NjwXUinSa9rdKa9Op8dqAUXtE9O1221T9gqmYZn3EQ9boQ5HY4 R3nQuobY2El/zXHhU1xVkBUFyxYA1Xqes1pq/pqO6uOBEvbP6Ki+faCE/btwMA774+BERyVh0I/S qL/VUTqTCjvjxA+SKBgmVgrsJNCzfUVAHa3s1/+Cw5+zttlYIaWb14Rhq0M+3l5+sTH+8bniHj1I Hg4Eiz58JR2DPJV+rwR0L5d+gq1rb53ket4/lULyqSlXxK6CHalyK8JC1xG02iu2x60Gsyk6ZSWG f7PD5OtueK5kU9ujt7vedVr6g7161Opg33aC7GY2m1b8tY9ar0aVdLoY50MzdoFrHz5e+9htFatm VGWFByv2HSyastxsNv8BW+KwRokPAAA= headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "1847" Content-Type: - application/json Date: - Fri, 14 Nov 2025 22:44:44 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=SF+Districts+in+the+style+of+Andy+Warhol,+with+Math&fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"error":"Title match not found"} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "34" Content-Type: - application/json Date: - Fri, 14 Nov 2025 22:44:44 GMT Via: - 1.1 c8b7f0db44c8d44631b8e78c0167afb6.cloudfront.net (CloudFront) X-Amz-Cf-Id: - PLpTSrJA5KYqtw46U4RBC9ek91H930frGrsKOgeq5pUQ3_OmcGINhA== X-Amz-Cf-Pop: - LAX54-P10 X-Cache: - Error from cloudfront x-amz-apigw-id: - UDiScENkPHcEdBg= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "34" x-amzn-Remapped-Date: - Fri, 14 Nov 2025 22:44:44 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 7ecfc394-c5b4-4c87-8bb0-a1b4cff1934f status: code: 404 message: Not Found version: 1 ================================================ FILE: tests/cassettes/test_get_reasoning[deepseek-reasoner].yaml ================================================ interactions: - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.1021/acs.jctc.2c01235?fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"paperId": "1db1bde653658ec9b30858ae14650b8f9c9d438b", "externalIds": {"PubMedCentral": "10134429", "DOI": "10.1021/acs.jctc.2c01235", "CorpusId": 257786462, "PubMed": "36972469"}, "url": "https://www.semanticscholar.org/paper/1db1bde653658ec9b30858ae14650b8f9c9d438b", "title": "A Perspective on Explanations of Molecular Prediction Models", "venue": "Journal of Chemical Theory and Computation", "year": 2023, "citationCount": 63, "influentialCitationCount": 3, "isOpenAccess": true, "openAccessPdf": {"url": "https://doi.org/10.1021/acs.jctc.2c01235", "status": "HYBRID", "license": "CCBY"}, "publicationTypes": ["Review", "JournalArticle"], "publicationDate": "2023-03-27", "journal": {"name": "Journal of Chemical Theory and Computation", "pages": "2149 - 2160", "volume": "19"}, "citationStyles": {"bibtex": "@Article{Wellawatte2023APO,\n author = {G. Wellawatte and Heta A. Gandhi and Aditi Seshadri and A. White},\n booktitle = {Journal of Chemical Theory and Computation},\n journal = {Journal of Chemical Theory and Computation},\n pages = {2149 - 2160},\n title = {A Perspective on Explanations of Molecular Prediction Models},\n volume = {19},\n year = {2023}\n}\n"}, "authors": [{"authorId": "1805407482", "name": "G. Wellawatte"}, {"authorId": "95666896", "name": "Heta A. Gandhi"}, {"authorId": "1481244794", "name": "Aditi Seshadri"}, {"authorId": "2257535", "name": "A. White"}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1398" Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:18 GMT Via: - 1.1 61bc5c2437da1cb95629df175a99fca2.cloudfront.net (CloudFront) X-Amz-Cf-Id: - Q4rJjLA8DZ-VgK1rkHbUwcMxfmz-b_t_Jv1v9Jx61k5D8hy76WWiIg== X-Amz-Cf-Pop: - SFO53-P10 X-Cache: - Miss from cloudfront x-amz-apigw-id: - ZDnClG2ePHcEEtA= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1398" x-amzn-Remapped-Date: - Fri, 20 Feb 2026 01:27:18 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 04051815-f219-4ef8-8c0b-cd00bc56807d status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1021%2Facs.jctc.2c01235?mailto=example@papercrow.ai response: body: string: !!binary | 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 headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "5623" Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:19 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1021%2Facs.jctc.2c01235/transform/application/x-bibtex response: body: string: " @article{Wellawatte_2023, title={A Perspective on Explanations of Molecular Prediction Models}, volume={19}, ISSN={1549-9626}, url={http://dx.doi.org/10.1021/acs.jctc.2c01235}, DOI={10.1021/acs.jctc.2c01235}, number={8}, journal={Journal of Chemical Theory and Computation}, publisher={American Chemical Society (ACS)}, author={Wellawatte, Geemi P. and Gandhi, Heta A. and Seshadri, Aditi and White, Andrew D.}, year={2023}, month=mar, pages={2149\u20132160} }\n" headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Date: - Fri, 20 Feb 2026 01:27:19 GMT Server: - Jetty(9.4.40.v20210413) Transfer-Encoding: - chunked permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"image_url\",\"image_url\":{\"url\":\"data:image/png;base64,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\"}},{\"type\":\"text\",\"text\":\"You are analyzing an image, formula, or table from a scientific document. Provide a detailed description that will be used to answer questions about its content. Focus on key elements, data, relationships, variables, and scientific insights visible in the image. It's especially important to document referential information such as figure/table numbers, labels, plot colors, or legends.\\n\\nText co-located with the media may be associated with other media or unrelated content, so do not just blindly quote referential information. The smaller the image, the more likely co-located text is unrelated. To restate, often the co-located text is several pages of content, so only use aspects relevant to accompanying image, formula, or table.\\n\\nHere's a few failure modes with possible resolutions:\\n- The media was a logo or icon, so the text is unrelated. In this case, briefly describe the media as a logo or icon, and do not mention other unrelated surrounding text.\\n- The media was display type, so the text is probably unrelated. The display type can be spread over several lines. In this case, briefly describe the media as display type, and do not mention other unrelated surrounding text.\\n- The media is a margin box or design element, so the text is unrelated. In this case, briefly describe the media as decorative, and do not mention other unrelated surrounding text.\\n- The media came from a bad PDF read, so it's garbled. In this case, describe the media as garbled, state why it's considered garbled, and do not mention other unrelated surrounding text.\\n- The media is a subfigure or a subtable. In this case, make sure to only detail the subfigure or subtable, not the entire figure or table. Do not mention other unrelated surrounding text.\\n\\nIMPORTANT: Start your response with exactly one of these labels:\\n- 'RELEVANT:' if the media contains scientific content (e.g. figures, charts, tables, equations, diagrams, data visualizations) that could help answer scientific questions, or if you're unsure of relevance (e.g. garbled/corrupted content).\\n- 'IRRELEVANT:' if the media content is not useful for scientific question-answer (e.g. journal logo, icon, display type/typography, decorative element, design element, margin box, is blank).\\n\\nAfter the label, provide your description.\\n\\nHere is the co-located text from a radius of 1 page:\\n\\nFigure 2: Descriptor explanations along with natural language explanation obtained for BBB\\npermeability of Alprozolam molecule. The green and red bars show descriptors that influ-\\nence predictions positively and negatively, respectively. Dotted yellow lines show significance\\nthreshold (\u03B1 = 0.05) for the t-statistic. Molecular descriptors show molecule-level proper-\\nties that are important for the prediction. ECFP and MACCS descriptors indicate which\\nsubstructures influence model predictions. MACCS explanations lead to text explanations\\nas shown. Republished from Ref.10 with permission from authors. SMARTS annotations for\\nMACCS descriptors were created using SMARTSviewer (smartsview.zbh.uni-hamburg.de,\\nCopyright: ZBH, Center for Bioinformatics Hamburg) developed by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n 17\\n\\ndiction. For example, we see that adding acidic and basic groups as well as hydrogen bond\\n\\nacceptors, increases solubility. Substructure importance from ECFP97 and MACCS138 de-\\n\\nscriptors indicate that adding heteroatoms increases solubility, while adding rings structures\\n\\nmakes the molecule less soluble. Although these are established hypotheses, it is interesting\\n\\nto see they can be derived purely from the data via DL and XAI.\\n\\n\\n\\n\\n\\nFigure 3: Generated chemical space for solubility prediction using the RNN model. The\\nchemical space is a 2D projection of the pairwise Tanimoto similarities of the local coun-\\nterfactuals. Each data point is colored by solubility. Top 4 counterfactuals are shown here.\\nRepublished from Ref.9 with permission from the Royal Society of Chemistry.\\n\\n\\n\\nGeneralizing XAI \u2013 interpreting scent-structure relationships\\n\\n\\nIn this example, we show how non-local structure-property relationships can be learned with\\n\\nXAI across multiple molecules. Molecular scent prediction is a multi-label classification task\\n\\nbecause a molecule can be described by more than one scent. For example, the molecule\\n\\njasmone can be described as having \u2018jasmine,\u2019 \u2018woody,\u2019 \u2018floral,\u2019 and \u2019herbal\u2019 scents.139 The\\n\\nscent-structure relationship is not very well understood,140 although some relationships are\\n\\nknown. For example, molecules with an ester functional group are often associated with\\n\\n\\n \ 18\\n\\nFigure 4: Descriptor explanations for solubility prediction model. The green and red bars\\nshow descriptors that influence predictions positively and negatively, respectively. Dotted\\nyellow lines show significance threshold (\u03B1 = 0.05) for the t-statistic. The MACCS and\\nECFP descriptors indicate which substructures influence model predictions. MACCS sub-\\nstructures may either be present in the molecule as is or may represent a modification. ECFP\\nfingerprints are substructures in the molecule that affect the prediction. MACCS descriptor\\nare used to obtain text explanations as shown. Republished from Ref.10 with permission from\\nauthors. SMARTS annotations for MACCS descriptors were created using SMARTSviewer\\n(smartsview.zbh.uni-hamburg.de, Copyright: ZBH, Center for Bioinformatics Hamburg) de-\\nveloped by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n 19\\n\\nLabel relevance, describe the media, and if uncertain on a description please state why:\"}]}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "48015" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41WTVMjNxC98yu65rLYZVzYa8dAVQ4ssKlUEkIBlUPiLZes6ZnRopEGSQN4t/jv 263xMGPWhxzAWP2h915/iO8HAIlKkzNIZCGCLCt9dPnpVMj8l7vfHi9O63+Pv81wkT7+/fDZ3s6r q2TEEXb9FWVoo8bSUhwGZU1jlg5FQM46WSwm8/nxyWwaDaVNUXNYXoWjmT2aHk9nR5MJfW4DC6sk evL4j74CfI+/GaJJ8YWOj0ftSYneixzprHWiQ2c1nyTCe+WDMCEZdUZpTUATUQ+Ht1d/Xv1zfn1/ NhzC0izNfYGgSkoIyoMALxW5qkxJeFK+Flp9E8wPfGGflcnJZXoJlbOsA5/bDGSBpZJCg6+ERMis A291vVZahQ35Yqqi7whyNOhYIah9TGbg9voaDm9R1s7RxXCNtaNM1xierXsYQBRuDH/gBlBjSS6e rwwdaiN1neIZc5mMYTi8kyIEdHCjbSCSS0MSHAHTLIUyUNFxQ5V4+K1vPHwu0CGgkAVUVhEWh4Td xysFAdEEUuO4lzC6kZHCpNWWiAIpIiB3ImUZOb/GEThhcqabOVtCVTvqGQgWNqi1fR5RLHH3lTUp O5Ghp96T0DV6ONQ2h5vtt8E43h6vBI0kasqMUuUrLTYNCBZIY0YQVIqtYkxzzEJNWai/GkbCwYWt qUNcJmSgivtOtc+2di1z8vPB1eRCYCPnQuWFph+up/CEp58F8EXwcHjmZwx1C3kxtwplbK+teKrB ulsJFQpYayEfQCuDvtX8imvz7houpTE2xK7iwLPozO7n+6CTTILqU457bl6VipxYb0/FQDjEcT4e wTK56yy/wvH4ZLpMBv3IR54Quls9UWL00qmqnYrIqisk7QuT9zL/bnhZeDqZDJYJUCWXySW2Z9NB c9HSfORSfeLDbb2wK885xbCJ4tv2ZD2o4nGEuSzUGlqsaXTSVmlWeAQe3VOcQO5thxm1vpHbjo4T HGKH7fRFxDNjPBftxN/Fib9tByWuit2h290WhG5NgGOLVkK5Z0XE7oVRpeXeaNVWGKdcW77jHYoR DaqiPihJKa5nW1neP1211rRAEM2bLg34OYO/oQG0Hndh7i47oUrPzYovNFGk2951RlQ2b2uRPvpI aG1xk4vG7/AdhQHVIqNJZsW71CMuRoqOeiltVgXXgPdjswSbbU0KZipn4iTrE5WaR8jzFPIfhJmD HOrm6kJV76XYGQbujz6Ct5GOm4iXLOMmzkFs+W87O0L64HfkCIWzdf7ThAoj9IaepXH/TaKWq73g J9HUWvcM22HmhPwaftlaXt/eP9qExHzt34UmmTLKFyseIHqO6a3zwVZJtL7S7y/xna13ns6EEpVV WAX7gPG6yWy6aBIm3dPemT/O51trIIy6F7c4mY72pFylJJzSvvdYJ5KWGKZdbPeyizpVtmc46BH/ Gc++3A15qt3/Sd8ZpMSK1ueqK+Y+N4df4xbf7/YmdAScxP0icUWj7LgYKWai1s2/JYnf+IDliiqW c3Op5n+TrFrJ9fT09DQ9OVkkB68HPwBsAdUapAkAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a389c5ccb5616-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:27 GMT Server: - cloudflare Set-Cookie: - __cf_bm=uZrh5U_8oslNbmrnXa1rqkxRQuoJDa39qaKQgdOikv8-1771550842.2921612-1.0.1.1-oC3M5bMANK5JngqDnMCMYi2RC1NzM5u8fKYTfaf0GS3sCvHrRaw.WYTAjIScwOvoMAcWP5HzKplSzbNs0jOgQU0MqMpQTx1ZutU.iSnk5FOYi.Ap.6v1buitZgVgtDOp; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:57:27 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "4855" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: - "250000" x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-input-images: - "249999" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29997825" x-ratelimit-reset-input-images: - 0s x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 4ms x-request-id: - req_bfc8d5bde59247478393737ab78c8038 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"image_url\",\"image_url\":{\"url\":\"data:image/png;base64,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\"}},{\"type\":\"text\",\"text\":\"You are analyzing an image, formula, or table from a scientific document. Provide a detailed description that will be used to answer questions about its content. Focus on key elements, data, relationships, variables, and scientific insights visible in the image. It's especially important to document referential information such as figure/table numbers, labels, plot colors, or legends.\\n\\nText co-located with the media may be associated with other media or unrelated content, so do not just blindly quote referential information. The smaller the image, the more likely co-located text is unrelated. To restate, often the co-located text is several pages of content, so only use aspects relevant to accompanying image, formula, or table.\\n\\nHere's a few failure modes with possible resolutions:\\n- The media was a logo or icon, so the text is unrelated. In this case, briefly describe the media as a logo or icon, and do not mention other unrelated surrounding text.\\n- The media was display type, so the text is probably unrelated. The display type can be spread over several lines. In this case, briefly describe the media as display type, and do not mention other unrelated surrounding text.\\n- The media is a margin box or design element, so the text is unrelated. In this case, briefly describe the media as decorative, and do not mention other unrelated surrounding text.\\n- The media came from a bad PDF read, so it's garbled. In this case, describe the media as garbled, state why it's considered garbled, and do not mention other unrelated surrounding text.\\n- The media is a subfigure or a subtable. In this case, make sure to only detail the subfigure or subtable, not the entire figure or table. Do not mention other unrelated surrounding text.\\n\\nIMPORTANT: Start your response with exactly one of these labels:\\n- 'RELEVANT:' if the media contains scientific content (e.g. figures, charts, tables, equations, diagrams, data visualizations) that could help answer scientific questions, or if you're unsure of relevance (e.g. garbled/corrupted content).\\n- 'IRRELEVANT:' if the media content is not useful for scientific question-answer (e.g. journal logo, icon, display type/typography, decorative element, design element, margin box, is blank).\\n\\nAfter the label, provide your description.\\n\\nHere is the co-located text from a radius of 1 page:\\n\\ninterpret black-box models and connect the explanations to structure-property relationships.\\n\\nThe methods are \u201CMolecular Model Agnostic Counterfactual Explanations\u201D (MMACE)9\\n\\nand \u201CExplaining molecular properties with natural language\u201D.10 Then we demonstrate how\\n\\ncounterfactuals and descriptor explanations can propose structure-property relationships in\\n\\nthe domain of molecular scent.31\\n\\n\\nBlood-brain barrier permeation prediction\\n\\n\\nThe passive diffusion of drugs from the blood stream to the brain is a critical aspect in drug\\n\\ndevelopment and discovery.120 Small molecule blood-brain barrier (BBB) permeation is a\\n\\nclassification problem routinely assessed with DL models.121,122 To explain why DL models\\n\\nwork, we trained two models a random forest (RF) model123 and a Gated Recurrent Unit\\n\\nRecurrent Neural Network (GRU-RNN). Then we explained the RF model with generated\\n\\ncounterfactuals explanations using the MMACE9 and the GRU-RNN with descriptor expla-\\n\\nnations.10 Both the models were trained on the dataset developed by Martins et al. 124. The\\n\\nRF model was implemented in Scikit-learn125 using Mordred molecular descriptors126 as the\\n\\ninput features. The GRU-RNN model was implemented in Keras.127 See Wellawatte et al. 9\\n\\nand Gandhi and White 10 for more details.\\n\\n \ According to the counterfactuals of the instance molecule in figure 1, we observe that the\\n\\nmodifications to the carboxylic acid group enable the negative example molecule to permeate\\n\\nthe BBB. Experimental findings by Fischer et al. 120 show that the BBB permeation of\\n\\nmolecules are governed by hydrophobic interactions and surface area. The carboxylic group is\\n\\na hydrophilic functional group which hinders hydrophobic interactions and addition of atoms\\n\\nenhances the surface area. This proves the advantage of using counterfactual explanations,\\n\\nas they suggest actionable modification to the molecule to make it cross the BBB.\\n\\n In Figure 2 we show descriptor explanations generated for Alprozolam, a molecule that\\n\\npermeates the BBB, using the method described by Gandhi and White 10. We see that\\n\\npredicted permeability is positively correlated with the aromaticity of the molecule, while\\n\\n\\n 15\\n\\nnegatively correlated with the number of hydrogen bonds donors and acceptors. A similar\\n\\nstructure-property relationship for BBB permeability is proposed in more mechanistic stud-\\n\\nies.128\u2013130 The substructure attributions indicates a reduction in hydrogen bond donors and\\n\\nacceptors. These descriptor explanations are quantitative and interpretable by chemists.\\n\\nFinally, we can use a natural language model to summarize the findings into a written\\n\\nexplanation, as shown in the printed text in Figure 2.\\n\\n\\n\\n\\n\\nFigure 1: Counterfactuals of a molecule which cannot permeate the blood-brain barrier.\\nSimilarity is the Tanimoto similarity of ECFP4 fingerprints.131 Red indicates deletions and\\ngreen indicates substitutions and addition of atoms. Republished from Ref.9 with permission\\nfrom the Royal Society of Chemistry.\\n\\n\\n\\nSolubility prediction\\n\\n\\nSmall molecule solubility prediction is a classic cheminformatics regression challenge and is\\n\\nimportant for chemical process design, drug design and crystallization.133\u2013136 In our previous\\n\\nworks,9,10 we implemented and trained an RNN model in Keras to predict solubilities (log\\n\\nmolarity) of small molecules.127 The AqSolDB curated database137 was used to train the\\n\\nRNN model.\\n\\n In this task, counterfactuals are based on equation 6. Figure 3 illustrates the generated\\n\\nlocal chemical space and the top four counterfactuals. Based on the counterfactuals, we ob-\\n\\nserve that the modifications to the ester group and other heteroatoms play an important role\\n\\nin solubility. These findings align with known experimental and basic chemical intuition.134\\n\\nFigure 4 shows a quantitative measurement of how substructures are contributing to the pre-\\n\\n\\n\\n 16\\n\\nFigure 2: Descriptor explanations along with natural language explanation obtained for BBB\\npermeability of Alprozolam molecule. The green and red bars show descriptors that influ-\\nence predictions positively and negatively, respectively. Dotted yellow lines show significance\\nthreshold (\u03B1 = 0.05) for the t-statistic. Molecular descriptors show molecule-level proper-\\nties that are important for the prediction. ECFP and MACCS descriptors indicate which\\nsubstructures influence model predictions. MACCS explanations lead to text explanations\\nas shown. Republished from Ref.10 with permission from authors. SMARTS annotations for\\nMACCS descriptors were created using SMARTSviewer (smartsview.zbh.uni-hamburg.de,\\nCopyright: ZBH, Center for Bioinformatics Hamburg) developed by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n \ 17\\n\\nLabel relevance, describe the media, and if uncertain on a description please state why:\"}]}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "24132" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/6VW32/bNhB+z19x0Ettw/Zsx6mTvK1pCnRth2IL+rIUBkWdLK4UqZGUE6PI/747 yrbk2i2W7iGJwvvB77473t3XM4BEZck1JLIQQZaVHr1+dSXkzcUkfbda55M3d+7Tw1u3+G0+m5X/ fEiGbGHTv1GGndVYWrLDoKxpxNKhCMhep4vF9OJicjmfRUFpM9RstqrCaG5Hs8lsPppO6e/WsLBK oieNv+hfgK/xN0M0GT7S8WS4OynRe7FCOtsp0aGzmk8S4b3yQZiQDFuhtCagiaj/uH1/++nX3++u 4d7cm7sCQZXkDJTWtQ+OwHsQUJI3WWvhgM5qGWqHIEwGKniQtiZvLhd0LDSpZipXUjAHfggPhZIF CNKvPWYQLOBjpYUyQHyZFXmnT76A6HjhoXKYKcm2kFtHAl+hZH8ksRW6sBkDg8zVijFQIByeB5uT fk3w6rQR+WuOZzqGweCV8AgfmggQeu8xD6X1AT4Kg7o/GJAmkTKC18oTso2HQBdYp1bKxHiOQh9v DRhIB/Ba6BqHcH/fg7z32KeP/hCUh8l4MpnQl8kiLWZFF4gQbyl3qDJLTBgbiJ1CpaqRZugVud+H Dj0cr8ZDSLW12Sh1zGIqnFPogBRKFKnSKmz6LUC63qNbcxKbuBzm6NDIzt1MNNetcMpbM2beZszb zWFipy1Tfxb2oSkLzjUhXKPzTAGlgS9JmfG9/wcVCs4kRa4ZQDYq1KrQ9EMvA0SwJbENK2fr6oAl QQQ0b6lLuFelomxQmOClpRqgkjq+M9J+OYHenTCqtKTTsSOUtzdvPs6piqgCXeWUCb7/zKxOf5TV 9gkAGpFq9Ifpjs/g+4mOOTg/kYPZiWoVVDYFVcAzkhEeLPGNaI4y4fep8Aex0bvyQYU6vmrWEVmm 4j8/zE1Mw2LxM9RGDuYnODg/rsNQKJc9i4CCon8mBXntIs//i4rpT1MxGLzDDbylfkdQfeSg8XLQ cKG3ezME/gDp8ABqP7ZkabV1I0m9N7vmhxlbwd5B7PCRo6YX72x/OfA73uH4NmJPnnj8EfnCH70L lq4VjZc9r7mjRnCUr737wzHD5iV5iRMKRCSR39l+qmy7wqnBFd8p4at14OFz6gEOGfI293ScbqJW 45ttunlqgMcmz7e2GYvddzuo6EurL6g3R2OQSrgdcjuQVObteMypNLhhn5qSQ4a8VhkXqNrWBn1w v9vFO9qPD4e64b5QlR93FwKaCrUXvI+YWuuOQBjqLo0RryKft5Kn/fKh7Yr8p/4b04Raq/LFkvNP uxAtGj7YKonSJ/r9OS459cHekpCjsgrLYL9gvG66eHnROEzavaoVz+eXW2kgjLoVzGbT8+EJl8sM g1DadzalRApZYNbatmuVqDNlO4KzTuDHeE75boKn1PwX961ASqyo6pZtlk+pOeTF83tqe6Ij4IR3 AFonl4FWBU5Ghrmg8m9WTb/xActlZxiySl4tF1czeSUmV4tFcvZ09i9EpjLJIQsAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a389c4d437b82-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:29 GMT Server: - cloudflare Set-Cookie: - __cf_bm=Tl8KWPJRj2HYBOZAAyB.gFrZd3xg2q3d2MGN39WUaKs-1771550842.289432-1.0.1.1-bZWhfSxpo1dnFpkmWYtWLs90..YEsGBP8yOUhmxkVy5pJ8tYHemEhwYpFX.Iknp8ihqbZqGKUx3Y6CQzjZDlD5ynImIvmdzzQTaB3I4j.vn_4EIVgilFVi_QbApZ9IcQ; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:57:29 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "6898" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: - "250000" x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-input-images: - "249999" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29997418" x-ratelimit-reset-input-images: - 0s x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 5ms x-request-id: - req_20f6eaa18c8c4a0894ef4079ae2d78f1 status: code: 200 message: OK - request: body: "{\"input\":[\" A Perspective on Explanations of Molecular\\n\\n Prediction Models\\n\\n\\nGeemi P. Wellawatte,\u2020 Heta A. Gandhi,\u2021 Aditi Seshadri,\u2021 and Andrew\\n\\n D. White\u2217,\u2021\\n\\n\\n \u2020Department of Chemistry, University of Rochester, Rochester, NY, 14627\\n\\n\u2021Department of Chemical Engineering, University of Rochester, Rochester, NY, 14627\\n\\n \ \xB6Vial Health Technology, Inc., San Francisco, CA 94111\\n\\n\\n \ E-mail: andrew.white@rochester.edu\\n\\n\\n\\n Abstract\\n\\n\\n \ Chemists can be skeptical in using deep learning (DL) in decision making, due to\\n\\n the lack of interpretability in \u201Cblack-box\u201D models. \ Explainable artificial intelligence\\n\\n (XAI) is a branch of AI which addresses this drawback by providing tools to interpret\\n\\n DL models and their predictions. We review the principles of XAI in the domain of\\n\\n chemistry and emerging methods for creating and evaluating explanations. Then we\\n\\n \ focus on methods developed by our group and their applications in predicting solubil-\\n\\n ity, blood-brain barrier permeability, and the scent of molecules. We show that XAI\\n\\n methods like chemical counterfactuals and descriptor explanations can explain DL pre-\\n\\n dictions while giving insight into structure-property relationships. Finally, we discuss\\n\\n how a two-step process of developing a black-box model and explaining predictions can\\n\\n \ uncover structure-property relationships.\\n\\n\\n\\n\\n\\n 1Introduction\\n\\n\\nDeep learning (DL) is advancing the boundaries of computational chemistry because it can\\n\\naccurately model non-linear structure-function relationships.1\u20133 Applications of DL can be\\n\\nfound in a broad spectrum spanning from quantum computing4,5 to drug discovery6\u201310 to\\n\\nmaterials design.11,12 According to Kre 13, DL models can contribute to scientific discovery\\n\\nin three \u201Cdimensions\u201D - 1) as a \u2018computational microscope\u2019 to gain insight which are not\\n\\nattainable through experiments 2) as a \u2018resource of inspiration\u2019 to motivate scientific thinking\\n\\n3) as an \u2018agent of understanding\u2019 to uncover new observations. However, the rationale of\\n\\na DL prediction is not always apparent due to the model architecture consisting a large\\n\\nparameter count.14,15 DL models are thus often termed\u201Cblack box\u201D models. We can only\\n\\nreason about the input and output of an DL model, not the underlying cause that leads to\\n\\na specific prediction.\\n\\n It is routine in chemistry now for DL to exceed human level performance \u2014 humans are\\n\\nnot good at predicting solubility from structure for example161 \u2014 and so understanding how\\n\\na model makes predictions can guide hypotheses. This is in contrast to a topic like finding\\n\\na stop sign in an image, where there is little new to be learned about visual perception\\n\\nby explaining a DL model. However, the black box nature of DL has its own limitations.\\n\\nUsers are more likely to trust and use predictions from a model if they can understand why\\n\\nthe prediction was made.17 Explaining predictions can help developers of DL models ensure\\n\\nthe model is not learning spurious correlations.18,19 Two infamous examples are, 1)neural\\n\\nnetworks that learned to recognize horses by looking for a photographer\u2019s watermark20 and,\\n\\n2) neural networks that predicted a COVID-19 diagnoses by looking at the font choice\\n\\non medical images.21 As a result, there is an emerging regulatory framework for when any\\n\\ncomputer algorithms impact humans.22\u201324 Although we know of no examples yet in chemistry,\\n\\none can assume the use of AI in predicting toxicity, carcinogenicity, and environmental\\n\\npersistence will require rationale for the predictions due to regulatory consequences.\\n\\n \ 1there does happen to be one human solubility savant, participant 11, who matched machine performance\\n\\n\\n 2 \ EXplainable Artificial Intelligence (XAI) is a field of growing importance that aims to\\n\\nprovide model interpretations of DL predictions Three terms highly associated with XAI are,\\n\\ninterpretability, justifications and explainability. Miller 25 defines that interpretability of a\\n\\nmodel refers to the degree of human understandability intrinsic within the model. Murdoch\\n\\net al. 26 clarify that interpretability can be perceived as \u201Cknowledge\u201D which provide insight\\n\\nto a particular problem. Justifications are quantitative metrics tell the users \u201Cwhy the\\n\\nmodel should be trusted,\u201D like test error.27 Justifications are evidence which defend why a\\n\\nprediction is trustworthy.25 An \u201Cexplanation\u201D is a description on why a certain prediction was\\n\\nmade.9,28 Interpretability and explanation are often used interchangeably. Arrieta et al. 14\\n\\ndistinguish that interpretability is a passive characteristic of a model, whereas explainability\\n\\nis an active characteristic which is used to clarify the internal decision-making process.\\n\\nNamely, an explanation is extra information that gives the context and a cause for one or\\n\\nmore \",\" a passive characteristic of a model, whereas explainability\\n\\nis an active characteristic which is used to clarify the internal decision-making process.\\n\\nNamely, an explanation is extra information that gives the context and a cause for one or\\n\\nmore predictions.29 We adopt the same nomenclature in this perspective.\\n\\n Accuracy and interpretability are two attractive characteristics of DL models. However,\\n\\nDL models are often highly accurate and less interpretable.28,30 XAI provides a way to avoid\\n\\nthat trade-off in chemical property prediction. XAI can be viewed as a two-step process.\\n\\nFirst, we develop an accurate but uninterpretable DL model. Next, we add explanations to\\n\\npredictions. Ideally, if the DL model has correctly learned the input-output relations, then\\n\\nthe explanations should give insight into the underlying mechanism.\\n\\n In the remainder of this article, we review recent approaches for XAI of chemical property\\n\\nprediction while drawing specific examples from our recent XAI work.9,10,31 We show how\\n\\nin various systems these methods yield explanations that are consistent with known and\\n\\nmechanisms in structure-property relationships.\\n\\n\\n\\n\\n\\n 3Theory\\n\\n\\nIn this work, we aim to assemble a common taxonomy for the landscape of XAI while\\n\\nproviding our perspectives. We utilized the vocabulary proposed by Das and Rad 32 to classify\\n\\nXAI. According to their classification, interpretations can be categorized as global or local\\n\\ninterpretations on the basis of \u201Cwhat is being explained?\u201D. For example, counterfactuals are\\n\\nlocal interpretations, as these can explain only a given instance. The second classification is\\n\\nbased on the relation between the model and the interpretation \u2013 is interpretability post-hoc\\n\\n(extrinsic) or intrinsic to the model?.32,33 An intrinsic XAI method is part of the model\\n\\nand is self-explanatory32 These are also referred to as white-box models to contrast them\\n\\nwith non-interpretable black box models.28 An extrinsic method is one that can be applied\\n\\npost-training to any model.33 Post-hoc methods found in the literature focus on interpreting\\n\\nmodels through 1) training data34 and feature attribution,35 2) surrogate models10 and, 3)\\n\\ncounterfactual9 or contrastive explanations.36\\n\\n Often, what is a \u201Cgood\u201D explanation and what are the required components of an ex-\\n\\nplanation are debated.32,37,38 Palacio et al. 29 state that the lack of a standard framework\\n\\nhas caused the inability to evaluate the interpretability of a model. In physical sciences,\\n\\nwe may instead consider if the explanations somehow reflect and expand our understanding\\n\\nof physical phenomena. For example, Oviedo et al. 39 propose that a model explanation\\n\\ncan be evaluated by considering its agreement with physical observations, which they term\\n\\n\u201Ccorrectness.\u201D For example, if an explanation suggests that polarity affects solubility of a\\n\\nmolecule, and the experimental evidence strengthen the hypothesis, then the explanation\\n\\nis assumed \u201Ccorrect\u201D. In instances where such mechanistic knowledge is sparse, expert bi-\\n\\nases and subjectivity can be used to measure the correctness.40 Other similar metrics of\\n\\ncorrectness such as \u201Cexplanation satisfaction scale\u201D can be found in the literature.41,42 In a\\n\\nrecent study, Humer et al. 43 introduced CIME an interactive web-based tool that allows the\\n\\nusers to inspect model explanations. The aim of this study is to bridge the gap between\\n\\nanalysis of XAI methods. Based on the above discussion, we identify that an agreed upon\\n\\n\\n \ 4evaluation metric is necessary in XAI. We suggest the following attributes can be used to\\n\\nevaluate explanations. However, the relative importance of each attribute may depend on\\n\\nthe application - actionability may not be as important as faithfulness when evaluating the\\n\\ninterpretability of a static physics based model. Therefore, one can select relative importance\\n\\nof each attribute based on the application.\\n\\n\\n \u2022 Actionable. Is it clear how we could change the input features to modify the output?\\n\\n\\n \ \u2022 Complete. Does the explanation completely account for the prediction? Did features\\n\\n not included in the explanation really contribute zero effect to the prediction?44\\n\\n\\n \u2022 Correct. Does the explanation agree with hypothesized or known underlying physical\\n\\n mechanism?39\\n\\n\\n \ \u2022 Domain Applicable. Does the explanation use language and concepts of domain ex-\\n\\n perts?\\n\\n\\n \u2022 Fidelity/Faithful. Does the explanation agree with the black box model?\\n\\n\\n \u2022 Robust. Does the explanation change significantly with small changes to the model or\\n\\n instance being explained?\\n\\n\\n \u2022 Sparse/Succinct. Is the explanation succinct?\\n\\n\\n \ We present an example evaluation of the SHAP explanation method based on the above\\n\\nattributes.44 Shapley values were proposed as a local explanation method based on feature\\n\\nattribution, as they offer a complete explanation - each feature i\",\"nct?\\n\\n\\n We present an example evaluation of the SHAP explanation method based on the above\\n\\nattributes.44 Shapley values were proposed as a local explanation method based on feature\\n\\nattribution, as they offer a complete explanation - each feature is assigned a fraction of\\n\\nthe prediction value.44,45 Completeness is a clearly measurable and well-defined metric, but\\n\\nyields explanations with many components. Yet Shapley values are not actionable nor sparse.\\n\\nThey are non-sparse as every feature has a non-zero attribution and not-actionable because\\n\\nthey do not provide a set of features which changes the outcome.46 Ribeiro et al. 35 proposed\\n\\na surrogate model method that aims to provide sparse/succinct explanations that have high\\n\\n\\n 5fidelity to the original model. In Wellawatte et al. 9 we argue that counterfactuals are \u201Cbet-\\n\\nter\u201D explanations because they are actionable and sparse. We highlight that, evaluation of\\n\\nexplanations is a difficult task because explanations are fundamentally for and by humans.\\n\\nTherefore, these evaluations are subjective, as they depend on \u201Ccomplex human factors and\\n\\napplication scenarios.\u201D37\\n\\n\\nSelf-explaining models\\n\\nA self-explanatory model is one that is intrinsically interpretable to an expert.47 Two com-\\n\\nmon examples found in the literature are linear regression models and decision trees (DT).\\n\\nIntrinsic models can be found in other XAI applications acting as surrogate models (proxy\\n\\nmodels) due to their transparent nature.48,49 A linear model is described by the equation\\n\\n1 where, W\u2019s are the weight parameters and x\u2019s are the input features associated with the\\n\\nprediction \u02C6y. Therefore, we observe that the weights can be used to derive a complete expla-\\n\\nnation of the model - trained weights quantify the importance of each feature.47 DT models\\n\\nare another type of self-explaining models which have been used in classification and high-\\n\\nthroughput screening tasks. Gajewicz et al. 50 used DT models to classify nanomaterials\\n\\nthat identify structural features responsible for surface activity. In another study by Han\\n\\net al. 51, a DT model was developed to filter compounds by their bioactivity based on the\\n\\nchemical fingerprints.\\n\\n\\n\\n \u02C6y = \u03A3iWixi (1)\\n\\n\\n Regularization techniques such as EXPO52 and RRR53 are designed to enhance the black-\\n\\nbox model interpretability.54 Although one can argue that \u201Csimplicity\u201D of models are posi-\\n\\ntively correlated with interpretability, this is based on how the interpretability is evaluated.\\n\\nFor example, Lipton 55 argue that, from the notion of \u201Csimulatability\u201D (the degree to which a\\n\\nhuman can predict the outcome based on inputs), self-explanatory linear models, rule-based\\n\\n\\n\\n \ 6systems, and DT\u2019s can be claimed uninterpretable. A human can predict the outcome given\\n\\nthe inputs only if the input features are interpretable. Therefore, a linear model which takes\\n\\nin non-descriptive inputs may not be as transparent. On the other hand, a linear model\\n\\nis not innately accurate as they fail to capture non-linear relationships in data, limiting is\\n\\napplicability. Similarly, a DT is a rule-based model and lacks physics informed knowledge.\\n\\nTherefore, an existing drawback is the trade-offbetween the degree of understandability and\\n\\nthe accuracy of a model. For example, an intrinsic model (linear regression or decision trees)\\n\\ncan be described through the trainable parameters, but it may fail to \u201Ccorrectly\u201D capture\\n\\nnon-linear relations in the data.\\n\\n\\nAttribution methods\\n\\n\\nFeature attribution methods explain black box predictions by assigning each input feature\\n\\na numerical value, which indicates its importance or contribution to the prediction. Feature\\n\\nattributions provide local explanations, but can be averaged or combined to explain multi-\\n\\nple instances. Atom-based numerical assignments are commonly referred to as heatmaps.56\\n\\nSheridan 57 describes an atom-wise attribution method for interpreting QSAR models. Re-\\n\\ncently, Rasmussen et al. 58 showed that Crippen logP models serve as a benchmark for\\n\\nheatmap approaches. Other most widely used feature attribution approaches in the litera-\\n\\nture are gradient based methods,59,60 Shapley Additive exPlanations (SHAP),44 and layer-\\n\\nwise relevance prorogation.61\\n\\n Gradient based approaches are based on the hypothesis that gradients for neural net-\\n\\nworks are analogous to coefficients for regression models.62 Class activation maps (CAM),63\\n\\ngradCAM,64 smoothGrad,,65 and integrated gradients62 are examples of this method. The\\n\\nmain idea behind feature attributions with gradients can be represented with equation \ 2.\\n\\n \u2206\u02C6f(\u20D7x) \u2248\u2202\u02C6f(\u20D7x) \ (2)\\n \u2206xi \ \u2202xi\\n\\n\\n\\n 7 \",\"represented with equation 2.\\n\\n \u2206\u02C6f(\u20D7x) \u2248\u2202\u02C6f(\u20D7x) (2)\\n \u2206xi \ \u2202xi\\n\\n\\n\\n 7 \u2206\u02C6f(\u20D7x) \ where \u02C6f(x) is the black-box model and are used as our attributions. The left- \u2206xi\\n\\nhand side of equation 2 says that we attribute each input feature xi by how much one unit\\n\\nchange in it would affect the output of \u02C6f(x). If \u02C6f(x) is a linear surrogate model, then this\\n\\nmethod reconciles with LIME.35 In DL models, \u2207xf(x), suffers from the shattered gradients\\n\\nproblem.62 This means directly computing the quantity leads to numeric problems. The\\n\\ndifferent gradient based approaches are mostly distinguishable based on how the gradient is\\n\\napproximated.\\n\\n Gradient based explanations have been widely used to interpret chemistry predictions.60,66\u201370\\n\\nMcCloskey et al. 60 used graph convolutional networks (GCNs) to predict protein-ligand\\n\\nbinding and explained the binding logic for these predictions using integrated gradients.\\n\\nPope et al. 66 and Jim\xB4enez-Luna et al. 67 show application of gradCAM and integrated gradi-\\n\\nents to explain molecular property predictions from trained graph neural networks (GNNs).\\n\\nSanchez-Lengeling et al. 68 present comprehensive, open-source XAI benchmarks to explain\\n\\nGNNs and other graph based models. They compare the performance of class activation\\n\\nmaps (CAM),63 gradCAM,64 smoothGrad,,65 integrated gradients62 and attention mecha-\\n\\nnisms for explaining outcomes of classification as well as regression tasks. They concluded\\n\\nthat CAM and integrated gradients perform well for graph based models. Another attempt\\n\\nat creating XAI benchmarks for graph models was made by Rao et al. 70. They compared\\n\\nthese gradient based methods to find subgraph importance when predicting activity cliffs\\n\\nand concluded that gradCAM and integrated gradients provided the most interpretability\\n\\nfor GNNs. The GNNExplainer69 is an approach for generating explanations (local and\\n\\nglobal) for graph based models. This method focuses on identifying which sub-graphs con-\\n\\ntribute most to the prediction by maximizing mutual information between the prediction\\n\\nand distribution of all possible sub-graphs. Ying et al. 69 show that GNNExplainer can be\\n\\nused to obtain model-agnostic explanations. SubgraphX is a similar method that explains\\n\\nGNN predictions by identifying important subgraphs.71\\n\\n \ Another set of approaches like DeepLIFT72 and Layerwise Relevance backPropagation73\\n\\n\\n\\n \ 8(LRP) are based on backpropagation of the prediction scores through each layer of the neu-\\n\\nral network. The specific backpropagation logic across various activation functions differs\\n\\nin these approaches, which means each layer must have its own implementation. Baldas-\\n\\nsarre and Azizpour 74 showed application of LRP to explain aqueous solubility prediction for\\n\\nmolecules.\\n\\n SHAP is a model-agnostic feature attribution method that is inspired from the game\\n\\ntheory concept of Shapley values.44,46 SHAP has been popularly used in explaining molecular\\n\\nprediction models.75\u201378 It\u2019s an additive feature contribution approach, which assumes that\\n\\nan explanation model is a linear combination of binary variables z. If the Shapley value\\nfor the ith feature is \u03D5i, then the explanation is \u02C6f(\u20D7x) = Pi \u03D5i(\u20D7x)zi(\u20D7x). Shapley values for\\n\\nfeatures are computed using Equation 3.79,80\\n\\n\\n\\n M\\n 1\\n \ \u03D5i(\u20D7x) = X \u02C6f (\u20D7z+i) \u2212\u02C6f (\u20D7z\u2212i) (3)\\n M\\n\\n \ Here \u20D7z is a fabricated example created from the original \u20D7x and a random perturbation \u20D7x\u2032.\\n\\n\u20D7z+i has the feature i from \u20D7x and \u20D7z\u2212i has the ith feature from \u20D7x\u2032. Some care should be taken\\n\\nin constructing \u20D7z when working with molecular descriptors to ensure that an impossible \u20D7z is\\n\\nnot sampled (e.g., high count of acid groups but no hydrogen bond donors). M is the sample\\n\\nsize of perturbations around \u20D7x. Shapley value computation is expensive, hence M is chosen\\n\\naccordingly. Equation 3 is an approximation and gives contributions with an expectation\\nterm as \u03D50 + Pi=1 \u03D5i(\u20D7x) = \u02C6f(\u20D7x).\\n\\n Visualization based feature attribution has also been used for molecular data. In com-\\n\\nputer science, saliency maps are a way to measure spatial feature contribution.81 Simply put,\\n\\nsaliency maps draw a connection between the model\u2019s neural fingerprint components (trained\\n\\nweights) and input features. Weber et al. 82 used saliency maps to build an explainable GCN\\n\\narchitecture that gives subgraph importance for small molecule activity prediction. On the\\n\\nother hand, similarity maps compare model predictions for two or more molecules based on\\n\\ntheir chemical fingerprints.83 Similarity maps provide atomic weights or predicte\",\"that gives subgraph importance for small molecule activity prediction. On the\\n\\nother hand, similarity maps compare model predictions for two or more molecules based on\\n\\ntheir chemical fingerprints.83 Similarity maps provide atomic weights or predicted probabil-\\n\\n\\n 9ity difference between the molecules by removing one atom at a time. These weights can\\n\\nthen be used to color the molecular graph and give a visual presentation. ChemInformatics\\n\\nModel Explorer (CIME) is an interactive web based toolkit which allows visualization and\\n\\ncomparison of different explanation methods for molecular property prediction models.84\\n\\n\\nSurrogate models\\n\\n\\nOne approach to explain black box predictions is to fit a self-explaining or interpretable\\n\\nmodel to the black box model, in the vicinity of one or a few specific examples. These are\\n\\nknown as surrogate models. Generally, one model per explanation is trained. However, if we\\n\\ncould find one surrogate model that explained the whole DL model, then we would simply\\n\\nhave a globally accurate interpretable model. This means that the black-box model is no\\n\\nlonger needed.79 In the work by White 79, a weighted least squares linear model is used as\\n\\nthe surrogate model. This model provides natural language based descriptor explanations by\\n\\nreplacing input features with chemically interpretable descriptors. This approach is similar\\n\\nto the concept-based explanations approach used by McGrath et al. 85, where human under-\\n\\nstandable concepts were used in place of input features in acquisition of chess knowledge in\\n\\nAlphaZero. Any of the self-explaining models detailed in the Self-explaining models section\\n\\ncan be used as a surrogate model.\\n\\n The most commonly used surrogate model based method is Locally Interpretable Model\\n\\nExplanations (LIME).35 LIME creates perturbations around the example of interest and fits\\n\\nan interpretable model to these local perturbations. Ribeiro et al. 35 mathematically define\\n\\nan explanation \u03BE for an example \u20D7x using Equation 4.\\n\\n\\n\\n \u03BE(\u20D7x) = arg min L(f, g, \u03C0x) + \u2126(g) (4)\\n g\u2208G\\n\\n \ Here f is the black box model and g \u2208G is the interpretable explanation model. G is\\n\\na class of potential interpretable models (e.g.: linear models). \u03C0x is a similarity measure\\n\\n\\n\\n 10between original input \u20D7x and it\u2019s perturbed input \u20D7x\u2032. In context of molecular data, this can\\n\\nbe a chemical similarity metric like Tanimoto86 similarity between fingerprints. The goal for\\n\\nLIME is to minimize the loss, L, such that f is closely approximated by g. \u2126is a parameter\\n\\nthat controls the complexity (sparsity) of g. Ribeiro et al. 35 termed the agreement (how low\\n\\nthe loss is) between f and g as the \u201Cfidelity\u201D.\\n\\n \ GraphLIME87 and LIMEtree88 are modifications to LIME as applicable to graph neural\\n\\nnetworks and regression trees, respectively. LIME has been used in chemistry previously,\\n\\nsuch as Whitmore et al. 89 who used LIME to explain octane number predictions of molecules\\n\\nfrom a random forest classifier. Mehdi and Tiwary 90 used LIME to explain thermodynamic\\n\\ncontributions of features. Gandhi and White 10 use an approach similar to GraphLIME,\\n\\nbut use chemistry specific fragmentation and descriptors to explain molecular property pre-\\n\\ndiction. Some examples are highlighted in the Applications section. \ In recent work by\\n\\nMehdi and Tiwary 90, a thermodynamic-based surrogate model approach was used to inter-\\n\\npret black-box models. The authors define an \u201Cinterpretation free energy\u201D which can be\\n\\nachieved by minimizing the surrogate model\u2019s uncertainty and maximizing simplicity.\\n\\n\\nCounterfactual explanations\\n\\n\\nCounterfactual explanations can be found in many fields such as statistics, mathematics and\\n\\nphilosophy.91\u201394 According to Woodward and Hitchcock 92, a counterfactual is an example\\n\\nwith minimum deviation from the initial instance but with a contrasting outcome. They\\n\\ncan be used to answer the question, \u201Cwhich smallest change could alter the outcome of an\\n\\ninstance of interest?\u201D While the difference between the two instances is based on the exis-\\n\\ntence of similar worlds in philosophy,95 a distance metric based on molecular similarity is\\n\\nemployed in XAI for chemistry. For example, in the work by Wellawatte et al. 9 distance\\n\\nbetween two molecules is defined as the Tanimoto distance96 between ECFP4 fingerprints.97\\n\\nAdditionally, Mohapatra et al. 98 introduced a chemistry-informed graph representation for\\n\\ncomputing macromolecular similarity. Contrastive explanations are peripheral to counterfac-\\n\\n\\n \ 11tual explanations. Unlike the counterfactual approach, contrastive approach employ a dual\\n\\noptimization method, which works by generating a similar and a dissimilar (counterfactuals)\\n\\nexample. Contrastive explanations can interpret the model by identifying contribution of\\n\\npresence \",\"nterfactual approach, contrastive approach employ a dual\\n\\noptimization method, which works by generating a similar and a dissimilar (counterfactuals)\\n\\nexample. Contrastive explanations can interpret the model by identifying contribution of\\n\\npresence and absence of subsets of features towards a certain prediction.36,99\\n\\n \ A counterfactual x\u2032 of an instance x is one with a dissimilar prediction \u02C6f(x) in classi-\\n\\nfication tasks. As shown in equation 5, counterfactual generation can be thought of as a\\n\\nconstrained optimization problem which minimizes the vector distance d(x, x\u2032) between the\\n\\nfeatures.9,100\\n\\n\\n \ minimize d(x, x\u2032)\\n (5)\\n \ such that \u02C6f(x) \u0338= \u02C6f(x\u2032)\\n\\n \ For regression tasks, equation 6 adapted from equation 5 can be used. Here, a counter-\\n\\nfactual is one with a defined increase or decrease in the prediction.\\n\\n\\n \ minimize d(x, x\u2032)\\n (6)\\n \ such that \u02C6f(x) \u2212\u02C6f(x\u2032) \u2265\u2206\\n\\n \ Counterfactuals explanations have become a useful tool for XAI in chemistry, as they\\n\\nprovide intuitive understanding of predictions and are able to uncover spurious relationships\\n\\nin training data.101 Counterfactuals create local (instance-level), actionable explanations.\\n\\nActionability of an explanation suggest which features can be altered to change the outcome.\\n\\nFor example, changing a hydrophobic functional group in a molecule to a hydrophilic group\\n\\nto increase solubility.\\n\\n Counterfactual generation is a demanding task as it requires gradient optimization over\\n\\ndiscrete features that represents a molecule. Recent work by Fu et al. 102 and Shen et al. 103\\n\\npresent two techniques which allow continuous gradient-based optimization. Although, these\\n\\nmethodologies are shown to circumvent the issue of discrete molecular optimization, counter-\\n\\nfactual explanation based model interpretation still remains unexplored compared to other\\n\\n\\n\\n 12post-hoc methods.\\n\\n \ CF-GNNExplainer104 is a counterfactual explanation generating method based on GN-\\n\\nNExplainer69 for graph data. This method generate counterfactuals by perturbing the input\\n\\ndata (removing edges in the graph), and keeping account of perturbations which lead to\\n\\nchanges in the output. However, this method is only applicable to graph-based models\\n\\nand can generate infeasible molecular structures. Another related work by Numeroso and\\n\\nBacciu 105 focus on generating counterfactual explanations for deep graph networks. Their\\n\\nmethod MEG (Molecular counterfactual Explanation Generator) uses a reinforcement learn-\\n\\ning based generator to create molecular counterfactuals (molecular graphs). While this\\n\\nmethod is able to generate counterfactuals through a multi-objective reinforcement learner,\\n\\nthis is not a universal approach and requires training the generator for each task.\\n\\n Work by Wellawatte et al. 9 present a model agnostic counterfactual generator MMACE\\n\\n(Molecular Model Agnostic Counterfactual Explanations) which does not require training\\n\\nor computing gradients. This method firstly populates a local chemical space through ran-\\n\\ndom string mutations of SELFIES106 molecular representations using the STONED algo-\\n\\nrithm.107 Next, the labels (predictions) of the molecules in the local space are generated\\n\\nusing the model that needs to be explained. Finally, the counterfactuals are identified and\\n\\nsorted by their similarities \u2013 Tanimoto distance96 between ECFP4 fingerprints.97 Unlike the\\n\\nCF-GNNExplainer104 and MEG105 methods, the MMACE algorithm ensures that generated\\n\\nmolecules are valid, owing to the surjective property of SELFIES. Additionally, the MMACE\\n\\nmethod can be applied to both regression and classification models. However, like most XAI\\n\\nmethods for molecular prediction, MMACE does not account for the chemical stability of\\n\\npredicted counterfactuals. To circumvent this drawback, Wellawatte et al. 9 propose an-\\n\\nother approach, which identift counterfactuals through a similarity search on the PubChem\\n\\ndatabase.108\\n\\n\\n\\n\\n\\n 13Similarity to adjacent fields\\n\\n\\nTangential examples to counterfactual explanations are adversarial training and matched\\n\\nmolecular pairs. Adversarial perturbations are used during training to deceive the model\\n\\nto expose the vulnerabilities of a model109,110 whereas counterfactuals are applied post-hoc.\\n\\nTherefore, the main difference between adversarial and counterfactual examples are in the\\n\\napplication, although both are derived from the same optimization problem.100 Grabocka\\n\\net al. 111 have developed a method named Adversarial Training on EXplanations (ATEX)\\n\\nwhich improves model robustness via exposure to adversarial examples. While there are\\n\\nconceptual disparities, we note that\",\"same optimization problem.100 Grabocka\\n\\net al. 111 have developed a method named Adversarial Training on EXplanations (ATEX)\\n\\nwhich improves model robustness via exposure to adversarial examples. While there are\\n\\nconceptual disparities, we note that the counterfactual and adversarial explanations are\\n\\nequivalent mathematical objects.\\n\\n Matched molecular pairs (MMPs) are pairs of molecules that differ structurally at only\\n\\none site by a known transformation.112,113 MMPs are widely used in drug discovery and\\n\\nmedicinal chemistry as these facilitate fast and easy understanding of structure-activity re-\\n\\nlationships.114\u2013116 Counterfactuals and MMP examples intersect if the structural change is\\n\\nassociated with a significant change in the properties. In the case the associated changes in\\n\\nthe properties are non-significant, the two molecules are known as bioisosteres.117,118 The con-\\n\\nnection between MMPs and adversarial training examples has been explored by van Tilborg\\n\\net al. 119. MMPs which belong to the counterfactual category are commonly used in outlier\\n\\nand activity cliff detection.113 This approach is analogous to counterfactual explanations,\\n\\nas the common objective is to uncover learned knowledge pertaining to structure-property\\n\\nrelationships.70\\n\\n\\nApplications\\n\\n\\nModel interpretation is certainly not new and a common step in ML in chemistry, but XAI for\\n\\nDL models is becoming more important60,66\u201369,73,88,104,105 Here we illustrate some practical\\n\\nexamples drawn from our published work on how model-agnostic XAI can be utilized to\\n\\n\\n\\n 14interpret black-box models and connect the explanations to structure-property relationships.\\n\\nThe methods are \u201CMolecular Model Agnostic Counterfactual Explanations\u201D (MMACE)9\\n\\nand \u201CExplaining molecular properties with natural language\u201D.10 Then we demonstrate how\\n\\ncounterfactuals and descriptor explanations can propose structure-property relationships in\\n\\nthe domain of molecular scent.31\\n\\n\\nBlood-brain barrier permeation prediction\\n\\n\\nThe passive diffusion of drugs from the blood stream to the brain is a critical aspect in drug\\n\\ndevelopment and discovery.120 Small molecule blood-brain barrier (BBB) permeation is a\\n\\nclassification problem routinely assessed with DL models.121,122 To explain why DL models\\n\\nwork, we trained two models a random forest (RF) model123 and a Gated Recurrent Unit\\n\\nRecurrent Neural Network (GRU-RNN). Then we explained the RF model with generated\\n\\ncounterfactuals explanations using the MMACE9 and the GRU-RNN with descriptor expla-\\n\\nnations.10 Both the models were trained on the dataset developed by Martins et al. 124. The\\n\\nRF model was implemented in Scikit-learn125 using Mordred molecular descriptors126 as the\\n\\ninput features. The GRU-RNN model was implemented in Keras.127 See Wellawatte et al. 9\\n\\nand Gandhi and White 10 for more details.\\n\\n \ According to the counterfactuals of the instance molecule in figure 1, we observe that the\\n\\nmodifications to the carboxylic acid group enable the negative example molecule to permeate\\n\\nthe BBB. Experimental findings by Fischer et al. 120 show that the BBB permeation of\\n\\nmolecules are governed by hydrophobic interactions and surface area. The carboxylic group is\\n\\na hydrophilic functional group which hinders hydrophobic interactions and addition of atoms\\n\\nenhances the surface area. This proves the advantage of using counterfactual explanations,\\n\\nas they suggest actionable modification to the molecule to make it cross the BBB.\\n\\n In Figure 2 we show descriptor explanations generated for Alprozolam, a molecule that\\n\\npermeates the BBB, using the method described by Gandhi and White 10. We see that\\n\\npredicted permeability is positively correlated with the aromaticity of the molecule, while\\n\\n\\n 15negatively correlated with the number of hydrogen bonds donors and acceptors. A similar\\n\\nstructure-property relationship for BBB permeability is proposed in more mechanistic stud-\\n\\nies.128\u2013130 The substructure attributions indicates a reduction in hydrogen bond donors and\\n\\nacceptors. These descriptor explanations are quantitative and interpretable by chemists.\\n\\nFinally, we can use a natural language model to summarize the findings into a written\\n\\nexplanation, as shown in the printed text in Figure 2.\\n\\n\\n\\n\\n\\nFigure 1: Counterfactuals of a molecule which cannot permeate the blood-brain barrier.\\nSimilarity is the Tanimoto similarity of ECFP4 fingerprints.131 Red indicates deletions and\\ngreen indicates substitutions and addition of atoms. Republished from Ref.9 with permission\\nfrom the Royal Society of Chemistry.\\n\\n\\n\\nSolubility prediction\\n\\n\\nSmall molecule solubility prediction is a classic cheminformatics regression challenge and is\\n\\nimportant for chemical process design, drug design and crystallization.133\u2013136 In our previous\\n\\nworks,9,10 we implemented and trained an RNN model in Keras to predict solubilities (log\\n\\nmolarity) of small molecules.127 The AqS\\n\\nMedia 0 from page 16's enriched description:\\n\\nThe image illustrates a molecular structure and its counterfactual modifications, which are used to explain changes in a model's prediction for a specific property. The figure consists of four subfigures:\\n\\n1. **Base Molecule (Leftmost Panel)**:\\n - Displays the original molecular structure.\\n - The prediction value, \\\\( f(x) \\\\), is 0.000, indicating that the molecule does not exhibit the desired property (e.g., blood-brain barrier permeability).\\n - This serves as the reference molecule for comparison.\\n\\n2. **Counterfactual 1**:\\n - Shows a modified version of the base molecule with a single red-highlighted atom or group, indicating a deletion.\\n - The similarity score to the base molecule is 0.80 (Tanimoto similarity of ECFP4 fingerprints).\\n - The prediction value, \\\\( f(x) \\\\), is 1.000, indicating that the modification enables the molecule to exhibit the desired property.\\n\\n3. **Counterfactual 2**:\\n - Displays another modified version of the base molecule with two green-highlighted atoms or groups, indicating substitutions or additions.\\n - The similarity score is 0.77.\\n - The prediction value, \\\\( f(x) \\\\), is 1.000.\\n\\n4. **Counterfactual 3**:\\n \ - Shows a third modified version of the base molecule with three green-highlighted atoms or groups, indicating further substitutions or additions.\\n - The similarity score is 0.71.\\n - The prediction value, \\\\( f(x) \\\\), is 1.000.\\n\\n**Key Insights**:\\n- The modifications (deletions, substitutions, or additions) are color-coded: red for deletions and green for additions/substitutions.\\n- The similarity scores decrease as the modifications deviate further from the base molecule.\\n- The counterfactuals demonstrate actionable changes to the molecular structure that result in the desired property, as indicated by the change in \\\\( f(x) \\\\) from 0.000 to 1.000.\\n\\nThis figure is likely used to explain how specific structural changes influence a model's prediction, providing insights into structure-property relationships.\",\"ssion challenge and is\\n\\nimportant for chemical process design, drug design and crystallization.133\u2013136 In our previous\\n\\nworks,9,10 we implemented and trained an RNN model in Keras to predict solubilities (log\\n\\nmolarity) of small molecules.127 The AqSolDB curated database137 was used to train the\\n\\nRNN model.\\n\\n In this task, counterfactuals are based on equation 6. Figure 3 illustrates the generated\\n\\nlocal chemical space and the top four counterfactuals. Based on the counterfactuals, we ob-\\n\\nserve that the modifications to the ester group and other heteroatoms play an important role\\n\\nin solubility. These findings align with known experimental and basic chemical intuition.134\\n\\nFigure 4 shows a quantitative measurement of how substructures are contributing to the pre-\\n\\n\\n\\n 16Figure 2: Descriptor explanations along with natural language explanation obtained for BBB\\npermeability of Alprozolam molecule. The green and red bars show descriptors that influ-\\nence predictions positively and negatively, respectively. Dotted yellow lines show significance\\nthreshold (\u03B1 = 0.05) for the t-statistic. Molecular descriptors show molecule-level proper-\\nties that are important for the prediction. ECFP and MACCS descriptors indicate which\\nsubstructures influence model predictions. MACCS explanations lead to text explanations\\nas shown. Republished from Ref.10 with permission from authors. SMARTS annotations for\\nMACCS descriptors were created using SMARTSviewer (smartsview.zbh.uni-hamburg.de,\\nCopyright: ZBH, Center for Bioinformatics Hamburg) developed by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n \ 17diction. For example, we see that adding acidic and basic groups as well as hydrogen bond\\n\\nacceptors, increases solubility. Substructure importance from ECFP97 and MACCS138 de-\\n\\nscriptors indicate that adding heteroatoms increases solubility, while adding rings structures\\n\\nmakes the molecule less soluble. Although these are established hypotheses, it is interesting\\n\\nto see they can be derived purely from the data via DL and XAI.\\n\\n\\n\\n\\n\\nFigure 3: Generated chemical space for solubility prediction using the RNN model. The\\nchemical space is a 2D projection of the pairwise Tanimoto similarities of the local coun-\\nterfactuals. Each data point is colored by solubility. Top 4 counterfactuals are shown here.\\nRepublished from Ref.9 with permission from the Royal Society of Chemistry.\\n\\n\\n\\nGeneralizing XAI \u2013 interpreting scent-structure relationships\\n\\n\\nIn this example, we show how non-local structure-property relationships can be learned with\\n\\nXAI across multiple molecules. Molecular scent prediction is a multi-label classification task\\n\\nbecause a molecule can be described by more than one scent. For example, the molecule\\n\\njasmone can be described as having \u2018jasmine,\u2019 \u2018woody,\u2019 \u2018floral,\u2019 and \u2019herbal\u2019 scents.139 The\\n\\nscent-structure relationship is not very well understood,140 although some relationships are\\n\\nknown. \ For example, molecules with an ester functional group are often associated with\\n\\n\\n 18Figure 4: Descriptor explanations for solubility prediction model. The green and red bars\\nshow descriptors that influence predictions positively and negatively, respectively. Dotted\\nyellow lines show significance threshold (\u03B1 = 0.05) for the t-statistic. The MACCS and\\nECFP descriptors indicate which substructures influence model predictions. MACCS sub-\\nstructures may either be present in the molecule as is or may represent a modification. ECFP\\nfingerprints are substructures in the molecule that affect the prediction. MACCS descriptor\\nare used to obtain text explanations as shown. Republished from Ref.10 with permission from\\nauthors. SMARTS annotations for MACCS descriptors were created using SMARTSviewer\\n(smartsview.zbh.uni-hamburg.de, Copyright: ZBH, Center for Bioinformatics Hamburg) de-\\nveloped by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n 19the \u2018fruity\u2019 scent. There are some exceptions though, like tert-amyl acetate which has a\\n\\n\u2018camphoraceous\u2019 rather than \u2018fruity\u2019 scent.140,141\\n\\n In Seshadri et al. 31, we trained a GNN model to predict the scent of molecules and utilized\\n\\ncounterfactuals9 and descriptor explanations10 to quantify scent-structure relationships. The\\n\\nMMACE method was modified to account for the multi-label aspect of scent prediction. This\\n\\nmodification defines molecules that differed from the instance molecule by only the selected\\n\\nscent as counterfactuals. For instance, counterfactuals of the jasmone molecule would be false\\n\\nfor the \u2018jasmine\u2019 scent but would still be positive for \u2018woody,\u2019 \u2018floral\u2019 and \u2018herbal\u2019 scents.\\n\\n\\n\\n\\n\\nFigure 5: Counterfactual for the 2,4 decadienal molecule. \ The counterfactual indicates\\nstructural changes to ethyl benzoate that would result in the model predicting the molecule\\nto not contain the \u2018fruity\u2019 scent. The Tanimoto96 similarity between the counterfactual and\\n2,4 decadienal is also\\n\\nMedia 0 from page 16's enriched description:\\n\\nThe image illustrates a molecular structure and its counterfactual modifications, which are used to explain changes in a model's prediction for a specific property. The figure consists of four subfigures:\\n\\n1. **Base Molecule (Leftmost Panel)**:\\n \ - Displays the original molecular structure.\\n - The prediction value, \\\\( f(x) \\\\), is 0.000, indicating that the molecule does not exhibit the desired property (e.g., blood-brain barrier permeability).\\n - This serves as the reference molecule for comparison.\\n\\n2. **Counterfactual 1**:\\n - Shows a modified version of the base molecule with a single red-highlighted atom or group, indicating a deletion.\\n - The similarity score to the base molecule is 0.80 (Tanimoto similarity of ECFP4 fingerprints).\\n - The prediction value, \\\\( f(x) \\\\), is 1.000, indicating that the modification enables the molecule to exhibit the desired property.\\n\\n3. **Counterfactual 2**:\\n \ - Displays another modified version of the base molecule with two green-highlighted atoms or groups, indicating substitutions or additions.\\n - The similarity score is 0.77.\\n - The prediction value, \\\\( f(x) \\\\), is 1.000.\\n\\n4. **Counterfactual 3**:\\n - Shows a third modified version of the base molecule with three green-highlighted atoms or groups, indicating further substitutions or additions.\\n - The similarity score is 0.71.\\n - The prediction value, \\\\( f(x) \\\\), is 1.000.\\n\\n**Key Insights**:\\n- The modifications (deletions, substitutions, or additions) are color-coded: red for deletions and green for additions/substitutions.\\n- The similarity scores decrease as the modifications deviate further from the base molecule.\\n- The counterfactuals demonstrate actionable changes to the molecular structure that result in the desired property, as indicated by the change in \\\\( f(x) \\\\) from 0.000 to 1.000.\\n\\nThis figure is likely used to explain how specific structural changes influence a model's prediction, providing insights into structure-property relationships.\\n\\nMedia 0 from page 18's enriched description:\\n\\nThe image is a scientific visualization showing a 2D projection of chemical space for solubility prediction, generated using an RNN (Recurrent Neural Network) model. Key elements of the image include:\\n\\n1. **Scatter Plot:**\\n - The main plot is a 2D scatter plot where each point represents a molecule.\\n - The points are colored on a gradient scale, ranging from purple to yellow, corresponding to solubility values (log P values). The color legend is displayed on the left side of the plot.\\n\\n2. **Molecular Counterfactuals:**\\n - Four molecular structures are highlighted as counterfactual examples, connected to specific points in the scatter plot with black lines.\\n \ - Each counterfactual is annotated with:\\n - A molecular structure diagram.\\n \ - A similarity score (e.g., \\\"Similarity = 0.82\\\").\\n - A qualitative description of the solubility change (e.g., \\\"Increase (1)\\\" or \\\"Decrease (2)\\\").\\n\\n3. **Base Molecule:**\\n - A \\\"Base\\\" molecule is identified and labeled in the plot, serving as a reference point for the counterfactuals.\\n\\n4. **Chemical Space Representation:**\\n - The 2D projection is based on pairwise Tanimoto similarities of local counterfactuals, which measure structural similarity between molecules.\\n\\n5. **Purpose:**\\n - The visualization aims to explain solubility predictions by showing how structural modifications (counterfactuals) influence solubility, as derived from the RNN model.\\n\\nThis figure provides insights into the relationship between molecular structure and solubility, highlighting the interpretability of the model's predictions through counterfactual analysis.\",\"nal molecule. The counterfactual indicates\\nstructural changes to ethyl benzoate that would result in the model predicting the molecule\\nto not contain the \u2018fruity\u2019 scent. The Tanimoto96 similarity between the counterfactual and\\n2,4 decadienal is also provided. Republished with permission from authors.31\\n\\n\\n \ The molecule 2,4-decadienal, which is known to have a \u2018fatty\u2019 scent, is analyzed in Fig-\\n\\nure 5.142,143 The resulting counterfactual, which has a shorter carbon chain and no carbonyl\\n\\ngroups, highlights the influence of these structural features on the \u2018fatty\u2019 scent of 2,4 deca-\\n\\ndienal. To generalize to other molecules, Seshadri et al. 31 applied the descriptor attribution\\n\\nmethod to obtain global explanations for the scents. The global explanation for the \u2018fatty\u2019\\n\\nscent was generated by gathering chemical spaces around many \u2018fatty\u2019 scented molecules.\\n\\nThe resulting natural language explanation is: \u201CThe molecular property \u201Cfatty scent\u201D can\\n\\nbe explained by the presence of a heptanyl fragment, two CH2 groups separated by four\\n\\n\\n 20bonds, and a C=O double bond, as well as the lack of more than one or two O atoms.\u201D31\\n\\nThe importance of a heptanyl fragment aligns with that reported in the literature, as \u2018fatty\u2019\\n\\nmolecules often have a long carbon chain.144 Furthermore, the importance of a C=O dou-\\n\\nble bond is supported by the findings reported by Licon et al. 145, where in addition to a\\n\\n\u201Clarger carbon-chain skeleton\u201D, they found that \u2018fatty\u2019 molecules also had \u201Caldehyde or acid\\n\\nfunctions\u201D.145 For the \u2018pineapple\u2019 scent, the following natural language explanation was ob-\\n\\ntained: \u201CThe molecular property \u201Cpineapple scent\u201D can be explained by the presence of ester,\\n\\nethyl/ether O group, alkene/ether O group, and C=O double bond, as well as the absence of\\n\\nan Aromatic atom.\u201D31 Esters, such as ethyl 2-methylbutyrate, are present in many pineap-\\n\\nple volatile compounds.146,147 The combination of a C=O double bond with an ether could\\n\\nalso correspond to an ester group. Additionally, aldehydes and ketones, which contain C=O\\n\\ndouble bonds, are also common in pineapple volatile compounds.146,148\\n\\n\\nDiscussion\\n\\n\\nWe have shown two post-hoc XAI applications based on molecular counterfactual expla-\\n\\nnations9 and descriptor explanations.10 These methods can be used to explain black-box\\n\\nmodels whose input is a molecule. These two methods can be applied for both classification\\n\\nand regression tasks. Note that the \u201Ccorrectness\u201D of the explanations strongly depends on\\n\\nthe accuracy of the black-box model.\\n\\n A molecular counterfactual is one with a minimal distance from a base molecular, but\\n\\nwith contrasting chemical properties. In the above examples, we used Tanimoto similar-\\n\\nity96 of ECFP4 fingreprints97 as distance, although this should be explored in the future.\\n\\nCounterfactual explanations are useful because they are represented as chemical structures\\n\\n(familiar to domain experts), sparse, and are actionable. A few other popular examples of\\n\\ncounterfactual on graph methods are GNNExplainer, MEG and CF-GNNExplainer.69,104,105\\n\\n The descriptor explanation method developed by Gandhi and White 10 fits a self-explaining\\n\\n\\n\\n 21surrogate model to explain the black-box model. This is similar to the GraphLIME87 method,\\n\\nalthough we have the flexibility to use explanation features other than subgraphs. Futher-\\n\\nmore, we show that natural language combined with chemical descriptor attributions can\\n\\ncreate explanations useful for chemists, thus enhancing the accessibility of DL in chemistry.\\n\\nLastly, we examined if XAI can be used beyond interpretation. Work by Seshadri et al. 31 use\\n\\nMMACE and surrogate model explanations to analyze the structure-property relationships\\n\\nof scent. They recovered known structure-property relationships for molecular scent purely\\n\\nfrom explanations, demonstrating the usefulness of a two step process: fit an accurate model\\n\\nand then explain it.\\n\\n Choosing among the plethora of XAI methods described here is still an open question.\\n\\nIt remains to be seen if there will ever be a consensus benchmark, since this field sits on\\n\\nthe intersection of human-machine interaction, machine learning, and philosophy (i.e., what\\n\\nconstitutes an explanation?). Our current advice is to consider first the audience \u2013 domain\\n\\nexperts or ML experts or non-experts \u2013 and what the explanations should accomplish. Are\\n\\nthey meant to inform data selection or model building, how a prediction is used, or how the\\n\\nfeatures can be changed to affect the outcome. The second consideration is what access you\\n\\nhave to the underlying model. The ability to have model derivatives or propagate gradients\\n\\nto the input to models informs the XAI method.\\n\\n\\nConclusion and outlook\\n\\n\\nWe should seek to explain molecular property prediction models because users are more\\n\\nlikely to trust explained predictions, and explanations can help assess if the model is learning\\n\\nt\",\"ut to models informs the XAI method.\\n\\n\\nConclusion and outlook\\n\\n\\nWe should seek to explain molecular property prediction models because users are more\\n\\nlikely to trust explained predictions, and explanations can help assess if the model is learning\\n\\nthe correct underlying chemical principles. We also showed that black-box modeling first,\\n\\nfollowed by XAI, is a path to structure-property relationships without needing to trade\\n\\nbetween accuracy and interpretability. However, XAI in chemistry has some major open\\n\\nquestions, that are also related to the black-box nature of the deep learning. Some are\\n\\n\\n\\n \ 22highlighted below:\\n\\n\\n \u2022 Explanation representation: How is an explanation presented \u2013 text, a molecule, attri-\\n\\n butions, a concept, etc?\\n\\n\\n \u2022 Molecular distance: \ in XAI approaches such as counterfactual generation, the \u201Cdis-\\n\\n \ tance\u201D between two molecules is minimized. Molecular distance is subjective. Possibil-\\n\\n ities are distance based on molecular properties, synthesis routes, and direct structure\\n\\n comparisons.\\n\\n\\n \u2022 Regulations: As black-box models move from research to industry, healthcare, and\\n\\n environmental settings, we expect XAI to become more important to explain decisions\\n\\n \ to chemists or non-experts and possibly be legally required. Explanations may need\\n\\n to be tuned for be for doctors instead of chemists or to satisfy a legal requirement.\\n\\n\\n \u2022 Chemical space: Chemical space is the set of molecules that are realizable; \u201Crealiz-\\n\\n able\u201D can be defined from purchasable to synthesizable to satisfied valences. What is\\n\\n most useful? Can an explanation consider nearby impossible molecules? How can we\\n\\n generate local chemical spaces centered around a specific molecule for finding counter-\\n\\n factuals or other instance explanations? \ Similarly, can \u201Cactivity cliffs\u201D be connected\\n\\n to explanations and the local chemical space.149\\n\\n\\n \u2022 Evaluating XAI : there is a lack of a systematic framework (quantitative or qualitative)\\n\\n to evaluate correctness and applicability of an explanation. Can there be a universal\\n\\n \ framework, or should explanations be chosen and evaluated based on the audience and\\n\\n domain? For example, work by Rasmussen et al. 58 attempts to focus on comparing\\n\\n feature attribution XAI methods via Crippen\u2019s logP scores.\\n\\n\\n\\n\\n\\n 23Acknowledgements\\n\\n\\nResearch reported in this work was supported by the National Institute of General Medical\\n\\nSciences of the National Institutes of Health under award number R35GM137966. This work\\n\\nwas supported by the NSF under awards 1751471 and 1764415. We thank the Center for\\n\\nIntegrated Research Computing at the University of Rochester for providing computational\\n\\nresources.\\n\\n\\nReferences\\n\\n\\n \ (1) Choudhary, K.; DeCost, B.; Chen, C.; Jain, A.; Tavazza, F.; Cohn, R.; Park, C. W.;\\n\\n Choudhary, A.; Agrawal, A.; Billinge, S. J.; Holm, E.; Ong, S. P.; Wolverton, C.\\n\\n Recent advances and applications of deep learning methods in materials science. npj\\n\\n Computational Materials 2022, 8.\\n\\n\\n (2) Keith, J. A.; Vassilev-Galindo, V.; Cheng, B.; Chmiela, S.; Gastegger, M.; M\xA8uller, K.-\\n\\n R.; Tkatchenko, A. Combining Machine Learning and Computational Chemistry for\\n\\n Predictive Insights Into Chemical Systems. Chemical Reviews 2021, 121, 9816\u20139872,\\n\\n PMID: 34232033.\\n\\n\\n (3) Goh, G. B.; Hodas, N. O.; Vishnu, A. Deep learning for computational chemistry.\\n\\n Journal of Computational Chemistry 2017, 38, 1291\u20131307.\\n\\n\\n (4) Deringer, V. L.; Caro, M. A.; Cs\xB4anyi, G. Machine Learning Interatomic Potentials as\\n\\n Emerging Tools for Materials Science. Advanced Materials 2019, 31, 1902765.\\n\\n\\n (5) Faber, F. A.; Hutchison, L.; Huang, B.; Gilmer, J.; Schoenholz, S. S.; Dahl, G. E.;\\n\\n Vinyals, O.; Kearnes, S.; Riley, P. F.; von Lilienfeld, O. A. Prediction Errors of Molec-\\n\\n \ ular Machine Learning Models Lower than Hybrid DFT Error. Journal of Chemical\\n\\n \ Theory and Computation 2017, 13, 5255\u20135264, PMID: 28926232.\\n\\n\\n\\n \ 24 (6) Duch, W.; Swaminathan, K.; Meller, J. Artificial Intelligence Approaches for Rational\\n\\n Drug Design and Discovery. Current Pharmaceutical Design 2007, 13, 1497\u20131508.\\n\\n\\n (7) Dara, S.; Dhamercherla, S.; Jadav, S. S.; Babu, C. M.; Ahsan, M. J.; darasuresh, S. D.;\\n\\n Dara, S. Machine Learning in Drug Discovery: A Review. Artificial Intelligence Review\\n\\n 123, 55, 1947\u20131999.\\n\\n\\n (8) Gupta, R.; Srivastava, D.; Sahu, M.; Tiwari, S.; Ambasta, R. K.; Kumar, P. Artifi-\\n\\n \ cial intelligence to deep learning: machine intelligence approach for drug discovery.\\n\\n Molecular diversity 2021, 25, 1315\u20131360.\\n\\n\\n (9) Wellawatte, G. P.; Seshadri, A.; White, A. D. Model agnostic generation of counter-\\n\\n factual explanations for molecules. Chemical Science 2022, 13, 3697\u20133705.\\n\\n\\n(10) Gandhi, H. A.; White, A. D. Explaining structure-ac\",\"2021, 25, 1315\u20131360.\\n\\n\\n (9) Wellawatte, G. P.; Seshadri, A.; White, A. D. Model agnostic generation of counter-\\n\\n factual explanations for molecules. Chemical Science 2022, 13, 3697\u20133705.\\n\\n\\n(10) Gandhi, H. A.; White, A. D. Explaining structure-activity relationships using locally\\n\\n \ faithful surrogate models. chemrxiv 2022,\\n\\n\\n(11) Gormley, A. J.; Webb, M. A. Machine learning in combinatorial polymer chemistry.\\n\\n Nature Reviews Materials 2021,\\n\\n\\n(12) Gomes, C. P.; Fink, D.; Dover, R. B. V.; Gregoire, J. M. Computational sustainability\\n\\n meets materials science. Nature Reviews Materials 2021,\\n\\n\\n(13) On scientific understanding with artificial intelligence. Nature Reviews Physics 2022\\n\\n 4:12 2022, 4, 761\u2013769.\\n\\n\\n(14) Arrieta, A. B.; D\xB4\u0131az-Rodr\xB4\u0131guez, N.; Ser, J. D.; Bennetot, A.; Tabik, S.; Barbado, A.;\\n\\n Garcia, S.; Gil-Lopez, S.; Molina, D.; Benjamins, R.; Chatila, R.; Herrera, F. Explain-\\n\\n \ able Artificial Intelligence (XAI): Concepts, Taxonomies, Opportunities and Chal-\\n\\n lenges toward Responsible AI. Information Fusion 2019, 58, 82\u2013115.\\n\\n\\n(15) Murdoch, W. J.; Singh, C.; Kumbier, K.; Abbasi-Asl, R.; Yu, B. Interpretable machine\\n\\n learning: definitions, methods, and applications. ArXiv 2019, abs/1901.04592.\\n\\n\\n 25(16) Boobier, S.; Osbourn, A.; Mitchell, J. B. Can human experts predict solubility better\\n\\n than computers? Journal of cheminformatics 2017, 9, 1\u201314.\\n\\n\\n(17) Lee, J. D.; See, K. A. Trust in automation: Designing for appropriate reliance. Human\\n\\n Factors 2004, 46, 50\u201380.\\n\\n\\n(18) Bolukbasi, T.; Chang, K.-W.; Zou, J. Y.; Saligrama, V.; Kalai, A. T. Man is to com-\\n\\n puter programmer as woman is to homemaker? debiasing word embeddings. Advances\\n\\n \ in neural information processing systems 2016, 29.\\n\\n\\n(19) Buolamwini, J.; Gebru, T. Gender Shades: Intersectional Accuracy Disparities in\\n\\n Commercial Gender Classification. Proceedings of the 1st Conference on Fairness,\\n\\n \ Accountability and Transparency. 2018; pp 77\u201391.\\n\\n\\n(20) Lapuschkin, S.; W\xA8aldchen, S.; Binder, A.; Montavon, G.; Samek, W.; M\xA8uller, K.-R.\\n\\n \ Unmasking Clever Hans predictors and assessing what machines really learn. Nature\\n\\n communications 2019, 10, 1\u20138.\\n\\n\\n(21) DeGrave, A. J.; Janizek, J. D.; Lee, S.-I. AI for radiographic COVID-19 detection\\n\\n \ selects shortcuts over signal. Nature Machine Intelligence 2021, 3, 610\u2013619.\\n\\n\\n(22) Goodman, B.; Flaxman, S. European Union regulations on algorithmic decision-\\n\\n \ making and a \u201Cright to explanation\u201D. AI Magazine 2017, 38, 50\u201357.\\n\\n\\n(23) ACT, A. I. European Commission. On Artificial Intelligence: A European Approach\\n\\n \ to Excellence and Trust. 2021, COM/2021/206.\\n\\n\\n(24) Blueprint for an AI Bill of Rights, The White House. 2022; https://www.whitehouse.\\n\\n gov/ostp/ai-bill-of-rights/.\\n\\n\\n(25) Miller, T. Explanation in artificial intelligence: Insights from the social sciences. Ar-\\n\\n tificial intelligence 2019, 267, 1\u201338.\\n\\n\\n\\n \ 26(26) Murdoch, W. J.; Singh, C.; Kumbier, K.; Abbasi-Asl, R.; Yu, B. Definitions, meth-\\n\\n ods, and applications in interpretable machine learning. Proceedings of the National\\n\\n Academy of Sciences of the United States of America 2019, 116, 22071\u201322080.\\n\\n\\n(27) Gunning, D.; Aha, D. DARPA\u2019s Explainable Artificial Intelligence (XAI) Program.\\n\\n AI Magazine 2019, 40, 44\u201358.\\n\\n\\n(28) Biran, O.; Cotton, C. Explanation and justification in machine learning: A survey.\\n\\n \ IJCAI-17 workshop on explainable AI (XAI). 2017; pp 8\u201313.\\n\\n\\n(29) Palacio, S.; Lucieri, A.; Munir, M.; Ahmed, S.; Hees, J.; Dengel, A. Xai handbook:\\n\\n \ Towards a unified framework for explainable ai. Proceedings of the IEEE/CVF Inter-\\n\\n national Conference on Computer Vision. 2021; pp 3766\u20133775.\\n\\n\\n(30) Kuhn, D. R.; Kacker, R. N.; Lei, Y.; Simos, D. E. Combinatorial Methods for Ex-\\n\\n plainable AI. 2020 IEEE International Conference on Software Testing, Verification\\n\\n and Validation Workshops (ICSTW) 2020, 167\u2013170.\\n\\n\\n(31) Seshadri, A.; Gandhi, H. A.; Wellawatte, G. P.; White, A. D. Why does that molecule\\n\\n \ smell? ChemRxiv 2022,\\n\\n\\n(32) Das, A.; Rad, P. Opportunities and challenges in explainable artificial intelligence\\n\\n (xai): A survey. arXiv preprint arXiv:2006.11371 2020,\\n\\n\\n(33) Machlev, R.; Heistrene, L.; Perl, M.; Levy, K. Y.; Belikov, J.; Mannor, S.; Levron, Y.\\n\\n Explainable Artificial Intelligence (XAI) techniques for energy and power systems:\\n\\n Review, challenges and opportunities. Energy and AI 2022, 9, 100169.\\n\\n\\n(34) Koh, P. W.; Liang, P. Understanding black-box predictions via influence functions.\\n\\n \ International Conference on Machine Learning. 2017; pp 1885\u20131894.\\n\\n\\n(35) Ribeiro, M. T.; Singh, S.; Guestrin, C. \u201D Why should i trust you?\u201D Explaining the\\n\\n predictions of any classifier. Proceedings of the 22nd ACM SIGKDD international\\n\\n\\n 27 conference on knowledge discovery and data \",\" M. T.; Singh, S.; Guestrin, C. \u201D Why should i trust you?\u201D Explaining the\\n\\n predictions of any classifier. Proceedings of the 22nd ACM SIGKDD international\\n\\n\\n 27 \ conference on knowledge discovery and data mining. San Diego, CA, USA, 2016; pp\\n\\n 1135\u20131144.\\n\\n\\n(36) Dhurandhar, A.; Chen, P.-Y.; Luss, R.; Tu, C.-C.; Ting, P.; Shanmugam, K.; Das, P.\\n\\n Explanations based on the missing: Towards contrastive explanations with pertinent\\n\\n \ negatives. Advances in neural information processing systems 2018, 31.\\n\\n\\n(37) Jin, W.; Li, X.; Hamarneh, G. Evaluating Explainable AI on a Multi-Modal Medical\\n\\n \ Imaging Task: Can Existing Algorithms Fulfill Clinical Requirements? Proceedings of\\n\\n the AAAI Conference on Artificial Intelligence 2022, 36, 11945\u201311953.\\n\\n\\n(38) Zhang, Y.; Xu, F.; Zou, J.; Petrosian, O. L.; Krinkin, K. V. XAI Evaluation: Evalu-\\n\\n ating Black-Box Model Explanations for Prediction. 2021 II International Conference\\n\\n on Neural Networks and Neurotechnologies (NeuroNT). 2021; pp 13\u201316.\\n\\n\\n(39) Oviedo, F.; Ferres, J. L.; Buonassisi, T.; Butler, K. T. Interpretable and Explain-\\n\\n able Machine Learning for Materials Science and Chemistry. Accounts of Materials\\n\\n Research 2022, 3, 597\u2013607.\\n\\n\\n(40) Yalcin, O.; Fan, X.; Liu, S. Evaluating the correctness of explainable AI algorithms\\n\\n for classification. arXiv preprint arXiv:2105.09740 2021,\\n\\n\\n(41) Hoffman, R. R.; Mueller, S. T.; Klein, G.; Litman, J. Metrics for Explainable AI:\\n\\n Challenges and Prospects. 2018,\\n\\n\\n(42) Mohseni, S.; Zarei, N.; Ragan, E. D. A Multidisciplinary Survey and Framework for\\n\\n \ Design and Evaluation of Explainable AI Systems. ACM Transactions on Interactive\\n\\n \ Intelligent Systems 2018, 11, 46.\\n\\n\\n(43) Humer, C.; Heberle, H.; Montanari, F.; Wolf, T.; Huber, F.; Henderson, R.; Hein-\\n\\n rich, J.; Streit, M. ChemInformatics Model Explorer (CIME): exploratory analysis of\\n\\n \ chemical model explanations. Journal of Cheminformatics 2022, 14, 1\u201314.\\n\\n\\n \ 28(44) Lundberg, S. M.; Lee, S.-I. In Advances in Neural Information Processing Systems\\n\\n 30; Guyon, I., Luxburg, U. V., Bengio, S., Wallach, H., Fergus, R., Vishwanathan, S.,\\n\\n Garnett, R., Eds.; Curran Associates, Inc., 2017; pp 4765\u20134774.\\n\\n(45) \u02C7Strumbelj, E.; Kononenko, I. Explaining prediction models and individual predictions\\n\\n \ with feature contributions. Knowledge and information systems 2014, 41, 647\u2013665.\\n\\n\\n(46) Shapley, L. S. A Value for N-Person Games; RAND Corporation: Santa Monica, CA,\\n\\n 1952.\\n\\n\\n(47) Molnar, C.; Casalicchio, G.; Bischl, B. Interpretable machine learning\u2013a brief history,\\n\\n state-of-the-art and challenges. Joint European Conference on Machine Learning and\\n\\n Knowledge Discovery in Databases. 2020; pp 417\u2013431.\\n\\n\\n(48) Lou, Y.; Caruana, R.; Gehrke, J. Intelligible models for classification and regression.\\n\\n \ Proceedings of the 18th ACM SIGKDD international conference on Knowledge dis-\\n\\n covery and data mining. 2012; pp 150\u2013158.\\n\\n\\n(49) Bastani, O.; Kim, C.; Bastani, H. Interpreting blackbox models via model extraction.\\n\\n \ arXiv preprint arXiv:1705.08504 2017,\\n\\n\\n(50) Gajewicz, A.; Puzyn, T.; Odziomek, K.; Urbaszek, P.; Haase, A.; Riebeling, C.;\\n\\n Luch, A.; Irfan, M. A.; Landsiedel, R.; van der Zande, M.; Bouwmeester, H. Deci-\\n\\n \ sion tree models to classify nanomaterials according to the DF4nanoGrouping scheme.\\n\\n Nanotoxicology 2018, 12, 1\u201317.\\n\\n\\n(51) Han, L.; Wang, Y.; Bryant, S. H. Developing and validating predictive decision tree\\n\\n \ models from mining chemical structural fingerprints and high\u2013throughput screening\\n\\n data in PubChem. BMC Bioinformatics 2008, 9, 401.\\n\\n(52) Plumb, G.; Al-Shedivat, M.; Cabrera, \xB4A. A.; Perer, A.; Xing, E.; Talwalkar, A. Regu-\\n\\n\\n\\n\\n 29 larizing black-box models for improved interpretability. Advances in Neural Informa-\\n\\n \ tion Processing Systems 2020, 33, 10526\u201310536.\\n\\n\\n(53) Shao, X.; Skryagin, A.; Stammer, W.; Schramowski, P.; Kersting, K. Right for bet-\\n\\n \ ter reasons: Training differentiable models by constraining their influence functions.\\n\\n Proceedings of the AAAI Conference on Artificial Intelligence. 2021; pp 9533\u20139540.\\n\\n\\n(54) Ouyang, R.; Curtarolo, S.; Ahmetcik, E.; Scheffler, M.; Ghiringhelli, L. M. SISSO: A\\n\\n compressed-sensing method for identifying the best low-dimensional descriptor in an\\n\\n immensity of offered candidates. Physical Review Materials 2018, 2, 083802.\\n\\n\\n(55) Lipton, Z. C. The mythos of model interpretability: In machine learning, the concept\\n\\n of interpretability is both important and slippery. Queue 2018, 16, 31\u201357.\\n\\n\\n(56) Harren, T.; Matter, H.; Hessler, G.; Rarey, M.; Grebner, C. Interpretation of structure\u2013\\n\\n activity relationships in real-world drug design data sets using explainable artificial\\n\\n intelligence. Journal of Chemical Information and Modeling 2022, 62,\",\".; Matter, H.; Hessler, G.; Rarey, M.; Grebner, C. Interpretation of structure\u2013\\n\\n activity relationships in real-world drug design data sets using explainable artificial\\n\\n \ intelligence. Journal of Chemical Information and Modeling 2022, 62, 447\u2013462.\\n\\n\\n(57) Sheridan, R. P. Interpretation of QSAR Models by Coloring Atoms According to\\n\\n \ Changes in Predicted Activity: How Robust Is It? Journal of Chemical Information\\n\\n \ and Modeling 2019, 59, 1324\u20131337.\\n\\n\\n(58) Rasmussen, M. H.; Christensen, D. S.; Jensen, J. H. Do machines dream of atoms?\\n\\n Crippen\u2019s logP as a quantitative molecular benchmark for explainable AI heatmaps.\\n\\n 2022,\\n\\n\\n(59) Smilkov, D.; Thorat, N.; Kim, B.; Vi\xB4egas, F.; Wattenberg, M. SmoothGrad: removing\\n\\n noise by adding noise. 2017; https://arxiv.org/abs/1706.03825.\\n\\n\\n(60) McCloskey, K.; Taly, A.; Monti, F.; Brenner, M. P.; Colwell, L. Using Attribution\\n\\n \ to Decode Dataset Bias in Neural Network Models for Chemistry. Proceedings of the\\n\\n\\n\\n\\n 30 National Academy of Sciences of the United States of America 2018, 116, 11624\u2013\\n\\n 11629.\\n\\n\\n(61) Bach, S.; Binder, A.; Montavon, G.; Klauschen, F.; M\xA8uller, K.-R.; Samek, W. On\\n\\n pixel-wise explanations for non-linear classifier decisions by layer-wise relevance prop-\\n\\n agation. PloS one 2015, 10, e0130140.\\n\\n\\n(62) Sundararajan, M.; Taly, A.; Yan, Q. Axiomatic attribution for deep networks. Inter-\\n\\n national Conference on Machine Learning. 2017; pp 3319\u20133328.\\n\\n\\n(63) Zhou, B.; Khosla, A.; Lapedriza, A.; Oliva, A.; Torralba, A. Learning Deep Features\\n\\n \ for Discriminative Localization. 2015; https://arxiv.org/abs/1512.04150.\\n\\n\\n(64) Selvaraju, R. R.; Cogswell, M.; Das, A.; Vedantam, R.; Parikh, D.; Batra, D. Grad-\\n\\n CAM: Visual Explanations from Deep Networks via Gradient-Based Localization. In-\\n\\n ternational Journal of Computer Vision 2019, 128, 336\u2013359.\\n\\n\\n(65) Smilkov, D.; Thorat, N.; Kim, B.; Vi\xB4egas, F.; Wattenberg, M. Smoothgrad: removing\\n\\n noise by adding noise. arXiv preprint arXiv:1706.03825 2017,\\n\\n\\n(66) Pope, P.; Kolouri, S.; Rostrami, M.; Martin, C.; Hoffmann, H. Discovering Molec-\\n\\n ular Functional Groups Using Graph Convolutional Neural Networks. 2018; https:\\n\\n //arxiv.org/abs/1812.00265.\\n\\n\\n(67) Jim\xB4enez-Luna, J.; Skalic, M.; Weskamp, N.; Schneider, G. Coloring molecules with ex-\\n\\n plainable artificial intelligence for preclinical relevance assessment. Journal of Chem-\\n\\n ical Information and Modeling 2021, 61, 1083\u20131094.\\n\\n\\n(68) Sanchez-Lengeling, B.; Wei, J.; Lee, B.; Reif, E.; Wang, P. Y.; Qian, W. W.; Mc-\\n\\n Closkey, K.; Colwell, L.; Wiltschko, A. Evaluating Attribution for Graph Neural\\n\\n Networks. Proceedings of the 34th International Conference on Neural Information\\n\\n Processing Systems. Red Hook, NY, USA, 2020.\\n\\n\\n 31(69) Ying, R.; Bourgeois, D.; You, J.; Zitnik, M.; Leskovec, J. GNNExplainer: Generating\\n\\n \ Explanations for Graph Neural Networks. Advances in neural information processing\\n\\n systems 2019, 32, 9240\u20139251.\\n\\n\\n(70) Rao, J.; Zheng, S.; Yang, Y. Quantitative Evaluation of Explainable Graph Neural\\n\\n \ Networks for Molecular Property Prediction. arXiv preprint arXiv:2107.04119 2021,\\n\\n\\n(71) Yuan, H.; Yu, H.; Wang, J.; Li, K.; Ji, S. On Explainability of Graph Neural Net-\\n\\n works via Subgraph Explorations. Proceedings of the 38th International Conference\\n\\n on Machine Learning. 2021; pp 12241\u201312252.\\n\\n\\n(72) Shrikumar, A.; Greenside, P.; Kundaje, A. Learning Important Features Through\\n\\n Propagating Activation Differences. 2017,\\n\\n\\n(73) Montavon, G.; Binder, A.; Lapuschkin, S.; Samek, W.; M\xA8uller, K. R. Layer-Wise\\n\\n \ Relevance Propagation: An Overview. Lecture Notes in Computer Science (including\\n\\n \ subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)\\n\\n 2019, 11700 LNCS, 193\u2013209.\\n\\n\\n(74) Baldassarre, F.; Azizpour, H. Explainability Techniques for Graph Convolutional Net-\\n\\n \ works. 2019; https://arxiv.org/abs/1905.13686.\\n\\n\\n(75) Hochuli, J.; Helbling, A.; Skaist, T.; Ragoza, M.; Koes, D. R. Visualizing convolutional\\n\\n \ neural network protein-ligand scoring. Journal of Molecular Graphics and Modelling\\n\\n 2018, 84, 96\u2013108.\\n\\n\\n(76) Rodr\xB4\u0131guez-P\xB4erez, R.; Bajorath, J. Interpretation of Compound Activity Predictions\\n\\n from Complex Machine Learning Models Using Local Approximations and Shapley\\n\\n \ Values. Journal of Medicinal Chemistry 2020, 63, 8761\u20138777, PMID: 31512867.\\n\\n\\n(77) Wojtuch, A.; Jankowski, R.; Podlewska, S. How can SHAP values help to shape\\n\\n\\n\\n\\n 32 \ metabolic stability of chemical compounds? Journal of Cheminformatics 2021, 13,\\n\\n 1\u201320.\\n\\n\\n(78) Mastropietro, A.; Pasculli, G.; Feldmann, C.; Rodr\xB4\u0131guez-P\xB4erez, R.; Bajorath, J. Edge-\\n\\n SHAPer: Bond-Centric Shapley Value-Based Explanation Method for Graph Neural\\n\\n Networks. iScience 2022, 25, 105043.\\n\\n\\n(79) White, \",\"13,\\n\\n 1\u201320.\\n\\n\\n(78) Mastropietro, A.; Pasculli, G.; Feldmann, C.; Rodr\xB4\u0131guez-P\xB4erez, R.; Bajorath, J. Edge-\\n\\n SHAPer: Bond-Centric Shapley Value-Based Explanation Method for Graph Neural\\n\\n Networks. iScience 2022, 25, 105043.\\n\\n\\n(79) White, A. D. Deep learning for molecules and materials. Living Journal of Computa-\\n\\n \ tional Molecular Science 2022, 3.\\n\\n(80) \u02D8Strumbelj, E.; Kononenko, I. Explaining prediction models and individual predictions\\n\\n with feature contributions. Knowledge and Information Systems 2014, 41, 647\u2013665.\\n\\n\\n(81) Erhan, D.; Bengio, Y.; Courville, A.; Vincent, P. Visualizing Higher-Layer Features of\\n\\n a Deep Network. Technical Report, Univerist\xB4e de Montr\xB4eal 2009,\\n\\n\\n(82) Weber, J. K.; Morrone, J. A.; Bagchi, S.; Pabon, J. D.; gu Kang, S.; Zhang, L.;\\n\\n Cornell, W. D. Simplified, interpretable graph convolutional neural networks for small\\n\\n molecule activity prediction. Journal of Computer-Aided Molecular Design 2022, 36,\\n\\n 391\u2013404.\\n\\n\\n(83) Riniker, S.; Landrum, G. A. Similarity maps - A visualization strategy for molecular\\n\\n \ fingerprints and machine-learning methods. Journal of Cheminformatics 2013, 5, 1\u20137.\\n\\n\\n(84) Humer, C.; Heberle, H.; Montanari, F.; Wolf, T.; Huber, F.; Henderson, R.; Hein-\\n\\n rich, J.; Streit, M. ChemInformatics Model Explorer (CIME): exploratory analysis of\\n\\n chemical model explanations. Journal of Cheminformatics 2022, 14, 1\u201314.\\n\\n\\n(85) McGrath, T.; Kapishnikov, A.; Toma\u02C7sev, N.; Pearce, A.; Wattenberg, M.; Hass-\\n\\n abis, D.; Kim, B.; Paquet, U.; Kramnik, V. Acquisition of chess knowledge in Al-\\n\\n \ phaZero. Proceedings of the National Academy of Sciences 2022, 119, e2206625119.\\n\\n\\n\\n\\n \ 33(86) Bajusz, D.; R\xB4acz, A.; H\xB4eberger, K. Why is Tanimoto index an appropriate choice for\\n\\n fingerprint-based similarity calculations? Journal of Cheminformatics 2015, 7, 1\u201313.\\n\\n\\n(87) Huang, Q.; Yamada, M.; Tian, Y.; Singh, D.; Yin, D.; Chang, Y. GraphLIME:\\n\\n \ Local Interpretable Model Explanations for Graph Neural Networks. CoRR 2020,\\n\\n abs/2001.06216.\\n\\n\\n(88) Sokol, K.; Flach, P. A. LIMEtree: Interactively Customisable Explanations Based on\\n\\n Local Surrogate Multi-output Regression Trees. CoRR 2020, abs/2005.01427.\\n\\n\\n(89) Whitmore, L. S.; George, A.; Hudson, C. M. Mapping chemical performance on molec-\\n\\n ular structures using locally interpretable explanations. 2016; https://arxiv.org/\\n\\n abs/1611.07443.\\n\\n\\n(90) Mehdi, S.; Tiwary, P. Thermodynamics of Interpretation. 2022,\\n\\n\\n(91) H\xA8ofler, M. Causal inference based on counterfactuals. BMC Medical Research Method-\\n\\n \ ology 2005, 5, 1\u201312.\\n\\n\\n(92) Woodward, J.; Hitchcock, C. Explanatory Generalizations, Part I: A Counterfactual\\n\\n Account. No\u02C6us 2003, 37, 1\u201324.\\n\\n\\n(93) Frisch, M. F. Theories, models, and explanation; University of California, Berkeley,\\n\\n 1998.\\n\\n\\n(94) Reutlinger, A. Is There A Monist Theory of Causal and Non-Causal Explanations?\\n\\n The Counterfactual Theory of Scientific Explanation. Philosophy of Science 2016, 83,\\n\\n 733\u2013745.\\n\\n\\n(95) Lewis, D. Causation. The journal of philosophy 1974, 70, 556\u2013567.\\n\\n\\n(96) Tanimoto, T. T. Elementary mathematical theory of classification and prediction.\\n\\n Internal IBM Technical Report 1958,\\n\\n\\n 34 (97) Rogers, D.; Hahn, M. Extended-Connectivity Fingerprints. Journal of Chemical In-\\n\\n formation and Modeling 2010, 50, 742\u2013754, PMID: 20426451.\\n\\n\\n (98) Mohapatra, S.; An, J.; G\xB4omez-Bombarelli, R. Chemistry-informed macromolecule\\n\\n \ graph representation for similarity computation, unsupervised and supervised learn-\\n\\n ing. Machine Learning: Science and Technology 2022, 3, 015028.\\n\\n\\n (99) Doshi-Velez, F.; Kortz, M.; Budish, R.; Bavitz, C.; Gershman, S.; O\u2019Brien, D.;\\n\\n Scott, K.; Schieber, S.; Waldo, J.; Weinberger, D.; Weller, A.; Wood, A. Account-\\n\\n ability of AI Under the Law: The Role of Explanation. SSRN Electronic Journal\\n\\n 2017,\\n\\n\\n(100) Wachter, S.; Mittelstadt, B.; Russell, C. Counterfactual explanations without opening\\n\\n the black box: Automated decisions and the GDPR. Harv. JL & Tech. 2017, 31, 841.\\n\\n\\n(101) Jim\xB4enez-Luna, J.; Grisoni, F.; Schneider, G. Drug discovery with explainable artificial\\n\\n intelligence. Nature Machine Intelligence 2020 2:10 2020, 2, 573\u2013584.\\n\\n\\n(102) Fu, T.; Gao, W.; Xiao, C.; Yasonik, J.; Coley, C. W.; Sun, J. Differentiable Scaffold-\\n\\n ing Tree for Molecule Optimization. International Conference on Learning Represen-\\n\\n tations. 2022.\\n\\n\\n(103) Shen, C.; Krenn, M.; Eppel, S.; Aspuru-Guzik, A. Deep molecular dreaming: inverse\\n\\n \ machine learning for de-novo molecular design and interpretability with surjective\\n\\n representations. Machine Learning: Science and Technology 2021, 2, 03LT02.\\n\\n\\n(104) Lucic, A.; ter Hoeve, M.; Tolomei, G.; \ Rijke, M.; Silvestri, F. CF-\\n\\n GNNExplainer: Counterfactual Explanations for Graph Neural Networks. arXiv\",\" representations. Machine Learning: Science and Technology 2021, 2, 03LT02.\\n\\n\\n(104) Lucic, A.; \ ter Hoeve, M.; Tolomei, G.; Rijke, M.; Silvestri, F. CF-\\n\\n \ GNNExplainer: Counterfactual Explanations for Graph Neural Networks. arXiv\\n\\n \ preprint arXiv:2102.03322 2021,\\n\\n\\n(105) Numeroso, D.; Bacciu, D. Explaining Deep Graph Networks with Molecular Counter-\\n\\n factuals. arXiv preprint arXiv:2011.05134 2020,\\n\\n\\n 35(106) Krenn, M.; H\xA8ase, F.; Nigam, A.; Friederich, P.; Aspuru-Guzik, A. Self-Referencing\\n\\n \ Embedded Strings (SELFIES): A 100% robust molecular string representation. Ma-\\n\\n chine Learning: Science and Technology 2020, 1, 045024.\\n\\n\\n(107) Nigam, A.; Pollice, R.; Krenn, M.; dos Passos Gomes, G.; Aspuru-Guzik, A. Beyond\\n\\n \ generative models: superfast traversal, optimization, novelty, exploration and discov-\\n\\n ery (STONED) algorithm for molecules using SELFIES. Chemical science 2021, 12,\\n\\n 7079\u20137090.\\n\\n\\n(108) Kim, S.; Chen, J.; Cheng, T.; Gindulyte, A.; He, J.; He, S.; Li, Q.; Shoemaker, B. A.;\\n\\n Thiessen, P. A.; Yu, B.; Zaslavsky, L.; Zhang, J.; Bolton, E. E. PubChem in 2021:\\n\\n \ new data content and improved web interfaces. Nucleic Acids Research 2020, 49,\\n\\n D1388\u2013D1395.\\n\\n\\n(109) Tolomei, G.; Silvestri, F.; Haines, A.; Lalmas, M. Interpretable predictions of tree-\\n\\n based ensembles via actionable feature tweaking. Proceedings of the 23rd ACM\\n\\n SIGKDD international conference on knowledge discovery and data mining. 2017;\\n\\n \ pp 465\u2013474.\\n\\n\\n(110) Freiesleben, T. The intriguing relation between counterfactual explanations and ad-\\n\\n versarial examples. Minds and Machines 2022, 32, 77\u2013109.\\n\\n\\n(111) Grabocka, J.; Schilling, N.; Wistuba, M.; Schmidt-Thieme, L. Learning time-series\\n\\n shapelets. Proceedings of the 20th ACM SIGKDD international conference on Knowl-\\n\\n \ edge discovery and data mining. 2014; pp 392\u2013401.\\n\\n\\n(112) Kenny, P. W.; Sadowski, J. Structure modification in chemical databases. Chemoin-\\n\\n \ formatics in drug discovery 2005, 271\u2013285.\\n\\n\\n(113) Tyrchan, C.; Evertsson, E. Matched Molecular Pair Analysis in Short: Algorithms,\\n\\n \ Applications and Limitations. Computational and Structural Biotechnology Journal\\n\\n 2017, 15, 86\u201390.\\n\\n\\n 36(114) Griffen, E.; Leach, A. G.; Robb, G. R.; Warner, D. J. Matched Molecular Pairs as\\n\\n a Medicinal Chemistry Tool. Journal of Medicinal Chemistry 2011, 54, 7739\u20137750,\\n\\n PMID: 21936582.\\n\\n\\n(115) He, J.; Nittinger, E.; Tyrchan, C.; Czechtizky, W.; Patronov, A.; Bjerrum, E. J.;\\n\\n Engkvist, O. Transformer-based molecular optimization beyond matched molecular\\n\\n pairs. Journal of cheminformatics 2022, 14, 1\u201314.\\n\\n\\n(116) Park, J.; Sung, G.; Lee, S.; Kang, S.; Park, C. ACGCN: Graph Convolutional Networks\\n\\n for Activity Cliff Prediction between Matched Molecular Pairs. Journal of Chemical\\n\\n \ Information and Modeling 2022,\\n\\n\\n(117) Langdon, S. R.; Ertl, P.; Brown, N. Bioisosteric Replacement and Scaffold Hopping\\n\\n in Lead Generation and Optimization. Molecular Informatics 2010, 29, 366\u2013385.\\n\\n\\n(118) Turk, S.; Merget, B.; Rippmann, F.; Fulle, S. Coupling Matched Molecular Pairs\\n\\n \ with Machine Learning for Virtual Compound Optimization. Journal of Chemical\\n\\n \ Information and Modeling 2017, 57, 3079\u20133085, PMID: 29131617.\\n\\n\\n(119) van Tilborg, D.; Alenicheva, A.; Grisoni, F. Exposing the limitations of molecular\\n\\n \ machine learning with activity cliffs. 2022,\\n\\n\\n(120) Fischer, H.; Gottschlich, R.; Seelig, A. Blood-brain barrier permeation: molecular\\n\\n \ parameters governing passive diffusion. The Journal of membrane biology 1998, 165,\\n\\n 201\u2013211.\\n\\n\\n(121) Liu, L.; Zhang, L.; Feng, H.; Li, S.; Liu, M.; Zhao, J.; Liu, H. Prediction of the\\n\\n Blood\u2013Brain Barrier (BBB) Permeability of Chemicals Based on Machine-Learning\\n\\n and Ensemble Methods. Chemical Research in Toxicology 2021, 34, 1456\u20131467, PMID:\\n\\n 34047182.\\n\\n\\n\\n\\n\\n 37(122) Wu, Z.; Ramsundar, B.; Feinberg, E. N.; Gomes, J.; Geniesse, C.; Pappu, A. S.;\\n\\n \ Leswing, K.; Pande, V. MoleculeNet: a benchmark for molecular machine learning.\\n\\n Chemical science 2018, 9, 513\u2013530.\\n\\n\\n(123) Ho, T. K. Random decision forests. Proceedings of 3rd international conference on\\n\\n \ document analysis and recognition. 1995; pp 278\u2013282.\\n\\n\\n(124) Martins, I. F.; Teixeira, A. L.; Pinheiro, L.; Falcao, A. O. A Bayesian approach to in\\n\\n silico blood-brain barrier penetration modeling. Journal of chemical information and\\n\\n modeling 2012, 52, 1686\u20131697.\\n\\n\\n(125) Pedregosa, F. et al. Scikit-learn: Machine Learning in Python. Journal of Machine\\n\\n \ Learning Research 2011, 12, 2825\u20132830.\\n\\n\\n(126) Moriwaki, H.; Tian, Y.-S.; Kawashita, N.; Takagi, T. Mordred: a molecular descriptor\\n\\n \ calculator. Journal of cheminformatics 2018, 10, 1\u201314.\\n\\n\\n(127) Chollet, F., et al. Keras. https:/\",\"chine\\n\\n Learning Research 2011, 12, 2825\u20132830.\\n\\n\\n(126) Moriwaki, H.; Tian, Y.-S.; Kawashita, N.; Takagi, T. Mordred: a molecular descriptor\\n\\n calculator. Journal of cheminformatics 2018, 10, 1\u201314.\\n\\n\\n(127) Chollet, F., et al. Keras. https://keras.io, 2015.\\n\\n\\n(128) Wager, T. T.; Chandrasekaran, R. Y.; Hou, X.; Troutman, M. D.; Verhoest, P. R.; Vil-\\n\\n lalobos, A.; Will, Y. Defining Desirable Central Nervous System Drug Space through\\n\\n the Alignment of Molecular Properties, in Vitro ADME, and Safety Attributes. ACS\\n\\n \ Chemical Neuroscience 2010, 1, 420\u2013434.\\n\\n\\n(129) Ghose, A. K.; Herbertz, T.; Hudkins, R. L.; Dorsey, B. D.; Mallamo, J. P. Knowledge-\\n\\n \ Based, Central Nervous System (CNS) Lead Selection and Lead Optimization for CNS\\n\\n Drug Discovery. ACS Chemical Neuroscience 2012, 3, 50\u201368.\\n\\n\\n(130) Polishchuk, P.; Tinkov, O.; Khristova, T.; Ognichenko, L.; Kosinskaya, A.; Varnek, A.;\\n\\n Kuz\u2019min, V. Structural and Physico-Chemical Interpretation (SPCI) of QSAR Mod-\\n\\n els and Its Comparison with Matched Molecular Pair Analysis. Journal of Chemical\\n\\n Information and Modeling 2016, 56, 1455\u20131469.\\n\\n\\n 38(131) Hassan, M.; Brown, R. D.; Varma-O\u2019Brien, S.; Rogers, D. Cheminformatics analysis\\n\\n \ and learning in a data pipelining environment. Molecular diversity 2006, 10, 283\u2013299.\\n\\n\\n(132) Schomburg, K.; Ehrlich, H. C.; Stierand, K.; Rarey, M. From structure diagrams to\\n\\n visual chemical patterns. Journal of Chemical Information and Modeling 2010, 50,\\n\\n 1529\u20131535.\\n\\n\\n(133) Sheikholeslamzadeh, E.; Rohani, S. Solubility prediction of pharmaceutical and chem-\\n\\n ical compounds in pure and mixed solvents using predictive models. Industrial &\\n\\n engineering chemistry research 2012, 51, 464\u2013473.\\n\\n\\n(134) Boobier, S.; Hose, D. R.; Blacker, A. J.; Nguyen, B. N. Machine learning with physic-\\n\\n ochemical relationships: solubility prediction in organic solvents and water. Nature\\n\\n Communications 2020 11:1 2020, 11, 1\u201310.\\n\\n\\n(135) Loschen, C.; Klamt, A. Solubility prediction, solvate and cocrystal screening as tools\\n\\n for rational crystal engineering. Journal of Pharmacy and Pharmacology 2015, 67,\\n\\n 803\u2013811.\\n\\n\\n(136) Diorazio, L. J.; Hose, D. R.; Adlington, N. K. Toward a more holistic framework for\\n\\n solvent selection. Organic Process Research & Development 2016, 20, 760\u2013773.\\n\\n\\n(137) Sorkun, M. C.; Khetan, A.; Er, S. AqSolDB, a curated reference set of aqueous sol-\\n\\n ubility and 2D descriptors for a diverse set of compounds. Scientific data 2019, 6,\\n\\n 1\u20138.\\n\\n\\n(138) Durant, J. L.; Leland, B. A.; Henry, D. R.; Nourse, J. G. Reoptimization of MDL\\n\\n keys for use in drug discovery. Journal of chemical information and computer sciences\\n\\n \ 2002, 42, 1273\u20131280.\\n\\n\\n(139) National Center for Biotechnology Information, PubChem Compound Summary for\\n\\n\\n\\n\\n 39 \ CID 1549018, Jasmone. https://pubchem.ncbi.nlm.nih.gov/compound/Jasmone,\\n\\n \ Accessed September 26, 2022.\\n\\n\\n(140) Sell, C. S. On the unpredictability of odor. Angewandte Chemie International Edition\\n\\n 2006, 45, 6254\u20136261.\\n\\n\\n(141) Genva, M.; Kenne Kemene, T.; Deleu, M.; Lins, L.; Fauconnier, M.-L. Is It Possible\\n\\n \ to Predict the Odor of a Molecule on the Basis of its Structure? International journal\\n\\n of molecular sciences 2019, 20, 3018.\\n\\n\\n(142) Rowe, D. Aroma chemicals for savory flavors. Perfumer and Flavorist 1998, 23, 9\u201318.\\n\\n\\n(143) Mallia, S.; Escher, F.; Schlichtherle-Cerny, H. Aroma-active compounds of butter: a\\n\\n review. European Food Research and Technology 2008, 226, 315\u2013325.\\n\\n\\n(144) Jelen, H.; Gracka, A. Characterization of aroma compounds: Structure, physico-\\n\\n \ chemical and sensory properties. Flavour: From food to perception 2016, 126\u2013153.\\n\\n\\n(145) Licon, C. C.; Bosc, G.; Sabri, M.; Mantel, M.; Fournel, A.; Bushdid, C.;\\n\\n Golebiowski, J.; Robardet, C.; Plantevit, M.; Kaytoue, M., et al. Chemical features\\n\\n mining provides new descriptive structure-odor relationships. PLoS computational bi-\\n\\n ology 2019, 15, e1006945.\\n\\n\\n(146) Mostafa, S.; Wang, Y.; Zeng, W.; Jin, B. Floral Scents and Fruit Aromas: Functions,\\n\\n Compositions, Biosynthesis, and Regulation. Frontiers in plant science 2022, 13.\\n\\n\\n(147) Tokitomo, Y.; Steinhaus, M.; B\xA8uttner, A.; Schieberle, P. Odor-active constituents in\\n\\n \ fresh pineapple (Ananas comosus [L.] Merr.) by quantitative and sensory evaluation.\\n\\n Bioscience, Biotechnology, and Biochemistry 2005, 69, 1323\u20131330.\\n\\n\\n(148) Wei, C.-B.; Liu, S.-H.; Liu, Y.-G.; Lv, L.-L.; Yang, W.-X.; Sun, G.-M. Characteristic\\n\\n aroma compounds from different pineapple parts. Molecules 2011, 16, 5104\u20135112.\\n\\n\\n\\n 40(149) Stumpfe, D.; Bajorath, J. Exploring Activity Cliffs in Medicinal Chemistry. Journal\\n\\n of Medicinal Chemistry 2012, 55, 2932\u20132942, PMID: 22236250.\\n\\n\\n\\n\\n\\n \ \"],\"model\":\"text-embedding-3-small\",\"dimensions\":1536,\"encoding_format\":null}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "88924" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | H4sIAAAAAAAA/4xdTY8lx428768YzNmzyCTzU3/F2IPlGRhjrOXD6mBA2P++EVVvtKqIbHcbgm20 ut+rykySQTIY+dt/fPr0+Z8///3bX3/9/NOnz//9/X9+/fwn/uzrX379C37yZ/z/T59+u/778Zvf /vHzt69fv//yt+vXr3/5/Zev3/6Ff1d+/8n//9KPT+J/yn+W0ne2UWb86feffsGP62pr7t6fPy1R e0SOP/wyf3fPrCvz8cPcmTHz+fcxWvYx9/On2Tt++vzzWvEPHk3+PnKOWfbzV3v0XFOeqc5csZ5/ PttYvcg75RrRx2ryTa2v3Yt8fy2l7I13kB/Xucvo7fkEsReWaz5+GGUWPMaUF2i9PNYKP2xR16zl +VZlV77AeP55tjLHfn47nmmM3fO5VIFNnb3LsuDRO/YqpixM4E1rPL8ssq+aZdonJLbx+WWlYWmz jNQzhO3Cmz1fN4KLu/UU4qlKLDkvsYPbIzuWOWNN27A915IHi9h4ONkEnIMYfVT51NJLw2foE7SW gT8QM8CW99QnwNFuqw75gAmT0dNda4NxyIGZG+dbD+fu2JfnhicO68I5kN+EbcwYanBtl1mbvmrF co/5x8N9mWzuIb/ZYpRRtuxgw7umfBMOYe16LgasCEagTmDOmlVXH+enhm5K5Y96q8+PhWHAEKKr y5jYWDN6HMHV9dtqWzl6XXqw+qx4CneFvZf9XC388YQ70Xcr8AR7yTO0vXeR7+JrjRXPD03YcrSq L8bjsvV1KzYwcTjFl2xYt7xtZKxi/ik3PGmRo1UaHIR6h15bLD2ZbWOtlmwMAsbeVext4FTiBfSd +q5VvS4WoOGtdP3KXjRjCQYbe6geMibsdU1d/0ozVo+Ro/Wo6t/wCbAXcw58rpVV1hA7WB8Le33u hC9UzzsCfk/PQF7BR+2jJpweXkINBLawxRLhivlmcogawuEfv//yI7nqLF3CCd5rbvlNmHzAmJ+/ uXCuLRoNGNYq4ocAMAqXW3YAltVLeS5fjrot7tZZwxzO4BGUsLfWwKNODSPRe5tyLGHrY6pjxtPg Z3DjEszhF0bTLeXXza4HCM/Vy5BNxZIklnVq0AOWMjgEl4/AKad1rA3jlO/CUUdwkQ2AD0w3Vzjc 1NXKfeG8oYCoA+NstTZ+7tKoWXMT+W01WMRcBD15WwCSiR+rFU7YSj5/FVY9YtdUa8HDql0BPCHI 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 headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38c8debfb341-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:29 GMT Server: - cloudflare Set-Cookie: - __cf_bm=Jx6VVQs8_AVD3FlxdZlnVb67sltGvf2F1KaWM.5n.Ww-1771550849.4151056-1.0.1.1-gEtROJ9tZhu5ux1lCme7.dq8V533ewofWg9CU8dfMyviH4FjXKArAJg9lhZippMsdfMxt_GrcQ.VyUA2eWPw9UaqpFTNqGTlqBE5xGFfb6GSjWyUQMcuasEtue_mMG7b; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:57:29 GMT Transfer-Encoding: - chunked Via: - envoy-router-canary-5f56f887d6-z22sd X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "394" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199978383" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 6ms x-request-id: - req_50ee19e230e446388425016dbdac64ab status: code: 200 message: OK - request: body: "{\"input\":[\"es 2011, 16, 5104\u20135112.\\n\\n\\n\\n 40(149) Stumpfe, D.; Bajorath, J. Exploring Activity Cliffs in Medicinal Chemistry. Journal\\n\\n of Medicinal Chemistry 2012, 55, 2932\u20132942, PMID: 22236250.\\n\\n\\n\\n\\n\\n \ 41\"],\"model\":\"text-embedding-3-small\",\"dimensions\":1536,\"encoding_format\":null}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "376" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38cd3926b341-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:30 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-canary-6bddd69c68-gnt5r X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "112" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999930" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_dc61effbad88413d97e5674e571d53ce status: code: 200 message: OK - request: body: '{"input":["What is XAI?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "100" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 AAA= headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38cf39d55527-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:30 GMT Server: - cloudflare Set-Cookie: - __cf_bm=ZiIuj95RGIR3GeZzKAG84ZyIVGupcdq33xJgWEgjjIE-1771550850.4394717-1.0.1.1-lyXe.4piiSiVc7ximc28FwLcqq.8P5HR82hfSdSgxxB5b0uetIfqXKfJmyIU9fbU93bmkz3mPim3nHhfobwqBnf9WcrZiAO9Lm.DNlp.63efSmmbI37K2cluW8JxnAwc; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:57:30 GMT Transfer-Encoding: - chunked Via: - envoy-router-7ff7679f48-g2949 X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "114" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_6127c490dbb7425a9652c0db9167980a status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 20-22: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\nnal molecule. The counterfactual indicates\\nstructural changes to ethyl benzoate that would result in the model predicting the molecule\\nto not contain the \u2018fruity\u2019 scent. The Tanimoto96 similarity between the counterfactual and\\n2,4 decadienal is also provided. Republished with permission from authors.31\\n\\n\\n The molecule 2,4-decadienal, which is known to have a \u2018fatty\u2019 scent, is analyzed in Fig-\\n\\nure 5.142,143 The resulting counterfactual, which has a shorter carbon chain and no carbonyl\\n\\ngroups, highlights the influence of these structural features on the \u2018fatty\u2019 scent of 2,4 deca-\\n\\ndienal. To generalize to other molecules, Seshadri et al. 31 applied the descriptor attribution\\n\\nmethod to obtain global explanations for the scents. The global explanation for the \u2018fatty\u2019\\n\\nscent was generated by gathering chemical spaces around many \u2018fatty\u2019 scented molecules.\\n\\nThe resulting natural language explanation is: \u201CThe molecular property \u201Cfatty scent\u201D can\\n\\nbe explained by the presence of a heptanyl fragment, two CH2 groups separated by four\\n\\n\\n 20bonds, and a C=O double bond, as well as the lack of more than one or two O atoms.\u201D31\\n\\nThe importance of a heptanyl fragment aligns with that reported in the literature, as \u2018fatty\u2019\\n\\nmolecules often have a long carbon chain.144 Furthermore, the importance of a C=O dou-\\n\\nble bond is supported by the findings reported by Licon et al. 145, where in addition to a\\n\\n\u201Clarger carbon-chain skeleton\u201D, they found that \u2018fatty\u2019 molecules also had \u201Caldehyde or acid\\n\\nfunctions\u201D.145 For the \u2018pineapple\u2019 scent, the following natural language explanation was ob-\\n\\ntained: \u201CThe molecular property \u201Cpineapple scent\u201D can be explained by the presence of ester,\\n\\nethyl/ether O group, alkene/ether O group, and C=O double bond, as well as the absence of\\n\\nan Aromatic atom.\u201D31 Esters, such as ethyl 2-methylbutyrate, are present in many pineap-\\n\\nple volatile compounds.146,147 The combination of a C=O double bond with an ether could\\n\\nalso correspond to an ester group. Additionally, aldehydes and ketones, which contain C=O\\n\\ndouble bonds, are also common in pineapple volatile compounds.146,148\\n\\n\\nDiscussion\\n\\n\\nWe have shown two post-hoc XAI applications based on molecular counterfactual expla-\\n\\nnations9 and descriptor explanations.10 These methods can be used to explain black-box\\n\\nmodels whose input is a molecule. These two methods can be applied for both classification\\n\\nand regression tasks. Note that the \u201Ccorrectness\u201D of the explanations strongly depends on\\n\\nthe accuracy of the black-box model.\\n\\n A molecular counterfactual is one with a minimal distance from a base molecular, but\\n\\nwith contrasting chemical properties. In the above examples, we used Tanimoto similar-\\n\\nity96 of ECFP4 fingreprints97 as distance, although this should be explored in the future.\\n\\nCounterfactual explanations are useful because they are represented as chemical structures\\n\\n(familiar to domain experts), sparse, and are actionable. A few other popular examples of\\n\\ncounterfactual on graph methods are GNNExplainer, MEG and CF-GNNExplainer.69,104,105\\n\\n The descriptor explanation method developed by Gandhi and White 10 fits a self-explaining\\n\\n\\n\\n 21surrogate model to explain the black-box model. This is similar to the GraphLIME87 method,\\n\\nalthough we have the flexibility to use explanation features other than subgraphs. Futher-\\n\\nmore, we show that natural language combined with chemical descriptor attributions can\\n\\ncreate explanations useful for chemists, thus enhancing the accessibility of DL in chemistry.\\n\\nLastly, we examined if XAI can be used beyond interpretation. Work by Seshadri et al. 31 use\\n\\nMMACE and surrogate model explanations to analyze the structure-property relationships\\n\\nof scent. They recovered known structure-property relationships for molecular scent purely\\n\\nfrom explanations, demonstrating the usefulness of a two step process: fit an accurate model\\n\\nand then explain it.\\n\\n Choosing among the plethora of XAI methods described here is still an open question.\\n\\nIt remains to be seen if there will ever be a consensus benchmark, since this field sits on\\n\\nthe intersection of human-machine interaction, machine learning, and philosophy (i.e., what\\n\\nconstitutes an explanation?). Our current advice is to consider first the audience \u2013 domain\\n\\nexperts or ML experts or non-experts \u2013 and what the explanations should accomplish. Are\\n\\nthey meant to inform data selection or model building, how a prediction is used, or how the\\n\\nfeatures can be changed to affect the outcome. The second consideration is what access you\\n\\nhave to the underlying model. The ability to have model derivatives or propagate gradients\\n\\nto the input to models informs the XAI method.\\n\\n\\nConclusion and outlook\\n\\n\\nWe should seek to explain molecular property prediction models because users are more\\n\\nlikely to trust explained predictions, and explanations can help assess if the model is learning\\n\\nt\\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6359" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/31UTXPaMBC98ys0OgODkzCE3JKmh5x66aGdkiFCXtsKsqRoJQLN8N+7kvlw2qQX g7S7T2/ffrwNGOOq5DeMy0YE2To9ur+bi/W36eU2wl3xW9/NXLEu6xf46a5f7vkwRdjVM8hwjBpL S3EQlDWdWXoQARJqMZsV0+nkejrJhtaWoFNY7cLoyo4uJhdXo6Kg30NgY5UEJI9fdGTsLX8TRVPC lq4zTL5pAVHUQHdHJ7r0VqcbLhAVBmECH56N0poAJrN+enp6RmsW5m1hGFtwjG0r/G5BtgX/cfsw ZNazr1unhTJipYHd+qAqJZXQ7IFQtFY1GAlD5qECjyxY1kJobIlMmJIFkI1RLxGQRYQymaFDY6EB 5jyUSia9kNmKrbSQ69HKblnWB4fMCXpPRi283jEKaimvfKRQ68CHXQ9jzL4TJmwleBdYqVBGRHo5 vFpGuRyJ3fRQpI2Uha+EDJFSytyM6Agl/iWg9MoFUqFvG7Mv/wlUZmP1BlirjGrJiMFHcvP0l7rE 1JBlEkcakE+yUUAxqTZeYFCmPqaogIR4bRQ5fkInacswem9rareDeBk1BK9WMbxXmgzoQKY69qSo qFWjB8wqEt6xjGCIs4RcL5VyJqggVkorEp+K1ibqBpgG4U2ifXi+IpKlbVOpiSvlQVkIVSYPuorU xz51Zr44KgSjU1k96C65RrmuFqol4ya5kzeGhNLLqit+NzeJ1rngpJoDQ5nYrulELFXq2a5BUxdG 7yzmqJAb6KTseMGH3WAQHdgkHZYorYc0IMVkYfYLQyPUHy6ag4gizbaJWvcMwhgbupTSWD8eLPvT IGtbU4Ir/CuUV9RG2CxpldCkpqHFYB3P1j19H/PCiO92ACeg1oVlsGvIzxWX0+sOkJ93VM98ddgn PBBH3TfMj3HvIJcl9YDS2Ns6XFIjQNmLpZ12SiKJbs+2yaCX+7+UPoLv8qfy91A+hT8bpARHK3h5 bpWP3DykPf6Z20nrTJgj+A112ZIm06d6lFCJqLsVy3GHAdolFa1Oo6K6PVu55Wx+IediMp/N+GA/ +AN/41H5cAYAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38d0c93764b6-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:32 GMT Server: - cloudflare Set-Cookie: - __cf_bm=XUJYDnIxcIMEbBVWWw9jNWOYMazGGccPbAal7WpBlLY-1771550850.685174-1.0.1.1-qYcvAMp7B6gKb3MFVhNzGEr6ufp4CoqiQPZItpt55d8HKylC8pQA98C.83unDcF7m3pOqHcGs9JBufCb7GQ.lHtkspbvgW_.teph.Mnpvuy1xh3biT4pI0f1INBHVDAi; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:57:32 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "1502" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998474" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_b5ab84a2845a4a15bb29a7e96249b3b7 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 3-5: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\n a passive characteristic of a model, whereas explainability\\n\\nis an active characteristic which is used to clarify the internal decision-making process.\\n\\nNamely, an explanation is extra information that gives the context and a cause for one or\\n\\nmore predictions.29 We adopt the same nomenclature in this perspective.\\n\\n Accuracy and interpretability are two attractive characteristics of DL models. However,\\n\\nDL models are often highly accurate and less interpretable.28,30 XAI provides a way to avoid\\n\\nthat trade-off in chemical property prediction. XAI can be viewed as a two-step process.\\n\\nFirst, we develop an accurate but uninterpretable DL model. Next, we add explanations to\\n\\npredictions. Ideally, if the DL model has correctly learned the input-output relations, then\\n\\nthe explanations should give insight into the underlying mechanism.\\n\\n In the remainder of this article, we review recent approaches for XAI of chemical property\\n\\nprediction while drawing specific examples from our recent XAI work.9,10,31 We show how\\n\\nin various systems these methods yield explanations that are consistent with known and\\n\\nmechanisms in structure-property relationships.\\n\\n\\n\\n\\n\\n 3Theory\\n\\n\\nIn this work, we aim to assemble a common taxonomy for the landscape of XAI while\\n\\nproviding our perspectives. We utilized the vocabulary proposed by Das and Rad 32 to classify\\n\\nXAI. According to their classification, interpretations can be categorized as global or local\\n\\ninterpretations on the basis of \u201Cwhat is being explained?\u201D. For example, counterfactuals are\\n\\nlocal interpretations, as these can explain only a given instance. The second classification is\\n\\nbased on the relation between the model and the interpretation \u2013 is interpretability post-hoc\\n\\n(extrinsic) or intrinsic to the model?.32,33 An intrinsic XAI method is part of the model\\n\\nand is self-explanatory32 These are also referred to as white-box models to contrast them\\n\\nwith non-interpretable black box models.28 An extrinsic method is one that can be applied\\n\\npost-training to any model.33 Post-hoc methods found in the literature focus on interpreting\\n\\nmodels through 1) training data34 and feature attribution,35 2) surrogate models10 and, 3)\\n\\ncounterfactual9 or contrastive explanations.36\\n\\n Often, what is a \u201Cgood\u201D explanation and what are the required components of an ex-\\n\\nplanation are debated.32,37,38 Palacio et al. 29 state that the lack of a standard framework\\n\\nhas caused the inability to evaluate the interpretability of a model. In physical sciences,\\n\\nwe may instead consider if the explanations somehow reflect and expand our understanding\\n\\nof physical phenomena. For example, Oviedo et al. 39 propose that a model explanation\\n\\ncan be evaluated by considering its agreement with physical observations, which they term\\n\\n\u201Ccorrectness.\u201D For example, if an explanation suggests that polarity affects solubility of a\\n\\nmolecule, and the experimental evidence strengthen the hypothesis, then the explanation\\n\\nis assumed \u201Ccorrect\u201D. In instances where such mechanistic knowledge is sparse, expert bi-\\n\\nases and subjectivity can be used to measure the correctness.40 Other similar metrics of\\n\\ncorrectness such as \u201Cexplanation satisfaction scale\u201D can be found in the literature.41,42 In a\\n\\nrecent study, Humer et al. 43 introduced CIME an interactive web-based tool that allows the\\n\\nusers to inspect model explanations. The aim of this study is to bridge the gap between\\n\\nanalysis of XAI methods. Based on the above discussion, we identify that an agreed upon\\n\\n\\n \ 4evaluation metric is necessary in XAI. We suggest the following attributes can be used to\\n\\nevaluate explanations. However, the relative importance of each attribute may depend on\\n\\nthe application - actionability may not be as important as faithfulness when evaluating the\\n\\ninterpretability of a static physics based model. Therefore, one can select relative importance\\n\\nof each attribute based on the application.\\n\\n\\n \u2022 Actionable. Is it clear how we could change the input features to modify the output?\\n\\n\\n \ \u2022 Complete. Does the explanation completely account for the prediction? Did features\\n\\n not included in the explanation really contribute zero effect to the prediction?44\\n\\n\\n \u2022 Correct. Does the explanation agree with hypothesized or known underlying physical\\n\\n mechanism?39\\n\\n\\n \ \u2022 Domain Applicable. Does the explanation use language and concepts of domain ex-\\n\\n perts?\\n\\n\\n \u2022 Fidelity/Faithful. Does the explanation agree with the black box model?\\n\\n\\n \u2022 Robust. Does the explanation change significantly with small changes to the model or\\n\\n instance being explained?\\n\\n\\n \u2022 Sparse/Succinct. Is the explanation succinct?\\n\\n\\n \ We present an example evaluation of the SHAP explanation method based on the above\\n\\nattributes.44 Shapley values were proposed as a local explanation method based on feature\\n\\nattribution, as they offer a complete explanation - each feature i\\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6340" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/3VUy27bOBTd5ysutGoA2bDduK67y6AFpkAxs2mBAuPCoMgriQ1FCiTlxA3y7z2k HFvtpBs97vPccx+PV0SFVsU7KmQroux6M3v/11bcOf33vzf/CGnf9scvq/qz2lT+g/i+Lsrk4arv LOOz11w6+HHUzo5q6VlETlGXm81yvV68XS+yonOKTXJr+ji7cbPVYnUzWy7xPjm2TksOsPgPv0SP +ZkgWsUPEOcwWdJxCKJhyJ6NIPTOJEkhQtAhChuL8qKUzka2GfXjzhLtijB0nfDHHUS74uvtx5Kc pw8PvRHaisow3fqoay21MPQRzsbohq3kknQgQb13AIsv3bEiEUka4XV91Lah2DJpuHgLX8VSB7Az 68RdUrqaMhOhpF4ghRzgaI6w454MC2+T1av3n67Pdvetli0Jz3BGFSSkHDxIpmqIcAGKnK33HBPy OaEciA7OHDhQvHcUIvfhHdXah1gi1YGN61Me8Vu0wf4SaoRQwkxRYJCo8K1U8uRElRWp8cjhSMcA UlhpeRaBo4NWiYugmzZmmC6zM6ClKDrF6RhjZHXownyk/zmmBLaK8YrcOK9/JJoDNcZVYBW9Mk7i IyETObJPaSS9SqwmllOeDP86WfPDxcCFOGudvJ7TbYQUdYMmo+8YXKTcotJGx2NJp9lmC47Tn/eY /PFHuQ6DQqLvjZZnhxrljl/eVUM42Wb2ACtAk9s4BBQDKvggzJCon5I5tq/j2DqV5ytZVl6rhnNN jejBS7xnTEKu79RBecyJJv3LoOa7ohwn3rNBQozwPqAUTpO/XOzs03RPPNdDEGlN7WDMRCGsdXEE mDb020nzdN5J4xr0uwq/uRa1RnPbPa5CwInA/oXo+iJrn/D8lnd/+GWdCwTq+riP7o5zuuVqsx0D FpdzM1Gv35y0ERjNRHHzel2+EHKvQI82YXJACilky2rii/N0LkIMSruLbnE1qf3/kF4KP9aPgZ9E +WP4i0JK7nFN95fNesnMczrJfzI7c50BF4H9AYd2HzX71A/FtRjMeC2LcMSp6PZoWpOmSI8ns+73 m+1KbsViu9kUV09XPwFPVEAiOwYAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38d0c855ebe5-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:32 GMT Server: - cloudflare Set-Cookie: - __cf_bm=Lks.YEXB0H295ni5ddis5h.na3hIRn7d3KSQCGoXC6o-1771550850.68481-1.0.1.1-mGOrgRhJLSD5OPntglu08YV4yvGE3R_pnBTF5TVItvkAmoYuyTLiR5oR5y1SrrCG8mdGnqgWnpC8aeGbynbwV1YHC5N71ZQt5wvy8jQQ0B6qTyLf5Q2z8u5lKc.64rcL; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:57:32 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "1657" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998482" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_5640787b0a9b4c30a61fde726c3b8b2d status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 1-3: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\n A Perspective on Explanations of Molecular\\n\\n Prediction Models\\n\\n\\nGeemi P. Wellawatte,\u2020 \ Heta A. Gandhi,\u2021 Aditi Seshadri,\u2021 and Andrew\\n\\n D. White\u2217,\u2021\\n\\n\\n \u2020Department of Chemistry, University of Rochester, Rochester, NY, 14627\\n\\n\u2021Department of Chemical Engineering, University of Rochester, Rochester, NY, 14627\\n\\n \xB6Vial Health Technology, Inc., San Francisco, CA 94111\\n\\n\\n E-mail: andrew.white@rochester.edu\\n\\n\\n\\n Abstract\\n\\n\\n \ Chemists can be skeptical in using deep learning (DL) in decision making, due to\\n\\n the lack of interpretability in \u201Cblack-box\u201D models. \ Explainable artificial intelligence\\n\\n (XAI) is a branch of AI which addresses this drawback by providing tools to interpret\\n\\n DL models and their predictions. We review the principles of XAI in the domain of\\n\\n chemistry and emerging methods for creating and evaluating explanations. Then we\\n\\n \ focus on methods developed by our group and their applications in predicting solubil-\\n\\n ity, blood-brain barrier permeability, and the scent of molecules. We show that XAI\\n\\n methods like chemical counterfactuals and descriptor explanations can explain DL pre-\\n\\n dictions while giving insight into structure-property relationships. Finally, we discuss\\n\\n how a two-step process of developing a black-box model and explaining predictions can\\n\\n \ uncover structure-property relationships.\\n\\n\\n\\n\\n\\n 1Introduction\\n\\n\\nDeep learning (DL) is advancing the boundaries of computational chemistry because it can\\n\\naccurately model non-linear structure-function relationships.1\u20133 Applications of DL can be\\n\\nfound in a broad spectrum spanning from quantum computing4,5 to drug discovery6\u201310 to\\n\\nmaterials design.11,12 According to Kre 13, DL models can contribute to scientific discovery\\n\\nin three \u201Cdimensions\u201D - 1) as a \u2018computational microscope\u2019 to gain insight which are not\\n\\nattainable through experiments 2) as a \u2018resource of inspiration\u2019 to motivate scientific thinking\\n\\n3) as an \u2018agent of understanding\u2019 to uncover new observations. However, the rationale of\\n\\na DL prediction is not always apparent due to the model architecture consisting a large\\n\\nparameter count.14,15 DL models are thus often termed\u201Cblack box\u201D models. We can only\\n\\nreason about the input and output of an DL model, not the underlying cause that leads to\\n\\na specific prediction.\\n\\n It is routine in chemistry now for DL to exceed human level performance \u2014 humans are\\n\\nnot good at predicting solubility from structure for example161 \u2014 and so understanding how\\n\\na model makes predictions can guide hypotheses. This is in contrast to a topic like finding\\n\\na stop sign in an image, where there is little new to be learned about visual perception\\n\\nby explaining a DL model. However, the black box nature of DL has its own limitations.\\n\\nUsers are more likely to trust and use predictions from a model if they can understand why\\n\\nthe prediction was made.17 Explaining predictions can help developers of DL models ensure\\n\\nthe model is not learning spurious correlations.18,19 Two infamous examples are, 1)neural\\n\\nnetworks that learned to recognize horses by looking for a photographer\u2019s watermark20 and,\\n\\n2) neural networks that predicted a COVID-19 diagnoses by looking at the font choice\\n\\non medical images.21 As a result, there is an emerging regulatory framework for when any\\n\\ncomputer algorithms impact humans.22\u201324 Although we know of no examples yet in chemistry,\\n\\none can assume the use of AI in predicting toxicity, carcinogenicity, and environmental\\n\\npersistence will require rationale for the predictions due to regulatory consequences.\\n\\n \ 1there does happen to be one human solubility savant, participant 11, who matched machine performance\\n\\n\\n 2 \ EXplainable Artificial Intelligence (XAI) is a field of growing importance that aims to\\n\\nprovide model interpretations of DL predictions Three terms highly associated with XAI are,\\n\\ninterpretability, justifications and explainability. Miller 25 defines that interpretability of a\\n\\nmodel refers to the degree of human understandability intrinsic within the model. Murdoch\\n\\net al. 26 clarify that interpretability can be perceived as \u201Cknowledge\u201D which provide insight\\n\\nto a particular problem. Justifications are quantitative metrics tell the users \u201Cwhy the\\n\\nmodel should be trusted,\u201D like test error.27 Justifications are evidence which defend why a\\n\\nprediction is trustworthy.25 An \u201Cexplanation\u201D is a description on why a certain prediction was\\n\\nmade.9,28 Interpretability and explanation are often used interchangeably. Arrieta et al. 14\\n\\ndistinguish that interpretability is a passive characteristic of a model, whereas explainability\\n\\nis an active characteristic which is used to clarify the internal decision-making process.\\n\\nNamely, an explanation is extra information that gives the context and a cause for one or\\n\\nmore \\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6365" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41VTY8bNwy9768g5pIEsA17sY7r3lIkRRdJgRx6SFsHhixxPIo10kQfjgeL/e99 0qzX4yYFerFhko98JJ/ohxuiSqvqZ6pkI6JsOzN9+8taHO4Px+X7vz6Zxe+njx/+OOlfP/427//8 el9NMsLtvrCMZ9RMOuA4amcHt/QsIuesi9VqsVzOf1rOi6N1ik2G7bs4vXPT2/nt3XSxwPcTsHFa ckDE3/hJ9FA+M0Wr+ARzSVMsLYcg9gzbOQhG70y2VCIEHaKwsZpcnNLZyLawfthYok0VUtsK329g 2lTvTp0R2oqdYXrjo6611MLQPUDG6D1byfTy05v7V6QDCao1G0W1kymwImep8+6olbZ70oD4znMU eSSBXE2KuSPDwtsc8PLth1dUZgEUKy1L3ISEUh5t5ZDYML3YGSEP0507vSArYvKcU8ETeECHGYEQ Cd0Gio7YNiKzjD6FSMIqSkHstNGxp10PbM1+4Bf0vokhE3X0renRzsCmFQcOFDqWuf0xuRm9554w QsldQZbK2kqTFI86HspN6Aso5Bzi3BrY8HnCJWZWRjtGkWcwLK3k9hXvPZeWm9QKSwka8Hmr6hyP sj43IzPkqYcJGtJY4TUBEhje1wRF6LyVIwbIwEoUg4BRqmYQzFXL8L45HxttsYtc/moM766aICFz NoPRGOFRj0PJUgZiIR+FUQYgpxhtnj1UAoFjIBe58Cl6AUTtfFvYkti5FEueotnTsEwpILXvCZU9 BOoENCsTWICMbjt0gG7zomTDLV6D76FWP5pirg1zkllZU/Dp2JclmGFmje7CsDcbUhHOIDpSjqyL ObDPwg8dvC4FkPXP4NmmmgyPDCY+Zl1uAwI4P7bFfGMfx08Ti4dU82WwyZiRQ1hUGjLmo/D5yfP4 fAaM24P5LvwLWtXa6tBscYgCrhKefIiuq4r3EZ+fy7lJVxekQqK2i9voDlzKLW7Xr4eE1eXCjdyv n65RFcHRjBx3yzPuKuVWQerahNHNqqTAetQFezlwIintRo6bUePf8/lR7qF5LO7/pL84ZH7i4HRR 2Y/CPOe/gP8Kex50IVwF9kcc9m3U7PMy8N5EMsN1rkIfIrdbbGyfz4EeTnTdbVfrW7kW8/VqVd08 3vwDTYqSO6sGAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38d0cb4c1990-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:32 GMT Server: - cloudflare Set-Cookie: - __cf_bm=.ljs026Yi7Gysd3QngYixGpt0mg6U1vbafydQveGMmQ-1771550850.6852548-1.0.1.1-onm5o9gQgy5kEQiSxr2DNx4aWtZlsVoQMmtYTvP.s5n.tCnPz3Q0bTxxN6_jEy0ewH7UMU68jPndJk1_CIkGbXzfSTFmLayr8zxGGWqY20lRzYOVJbcbhBn4dW5ndj5d; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:57:32 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "1902" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9998" x-ratelimit-remaining-tokens: - "29998475" x-ratelimit-reset-requests: - 8ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_d07a5184f6e04888bd1653a1ee30d7af status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 25-28: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\n2021, 25, 1315\u20131360.\\n\\n\\n (9) Wellawatte, G. P.; Seshadri, A.; White, A. D. Model agnostic generation of counter-\\n\\n factual explanations for molecules. Chemical Science 2022, 13, 3697\u20133705.\\n\\n\\n(10) Gandhi, H. A.; White, A. D. Explaining structure-activity relationships using locally\\n\\n faithful surrogate models. chemrxiv 2022,\\n\\n\\n(11) Gormley, A. J.; Webb, M. A. Machine learning in combinatorial polymer chemistry.\\n\\n \ Nature Reviews Materials 2021,\\n\\n\\n(12) Gomes, C. P.; Fink, D.; Dover, R. B. V.; Gregoire, J. M. Computational sustainability\\n\\n meets materials science. Nature Reviews Materials 2021,\\n\\n\\n(13) On scientific understanding with artificial intelligence. Nature Reviews Physics 2022\\n\\n 4:12 2022, 4, 761\u2013769.\\n\\n\\n(14) Arrieta, A. B.; D\xB4\u0131az-Rodr\xB4\u0131guez, N.; Ser, J. D.; Bennetot, A.; Tabik, S.; Barbado, A.;\\n\\n Garcia, S.; Gil-Lopez, S.; Molina, D.; Benjamins, R.; Chatila, R.; Herrera, F. Explain-\\n\\n \ able Artificial Intelligence (XAI): Concepts, Taxonomies, Opportunities and Chal-\\n\\n lenges toward Responsible AI. Information Fusion 2019, 58, 82\u2013115.\\n\\n\\n(15) Murdoch, W. J.; Singh, C.; Kumbier, K.; Abbasi-Asl, R.; Yu, B. Interpretable machine\\n\\n learning: definitions, methods, and applications. ArXiv 2019, abs/1901.04592.\\n\\n\\n 25(16) Boobier, S.; Osbourn, A.; Mitchell, J. B. Can human experts predict solubility better\\n\\n than computers? Journal of cheminformatics 2017, 9, 1\u201314.\\n\\n\\n(17) Lee, J. D.; See, K. A. Trust in automation: Designing for appropriate reliance. Human\\n\\n Factors 2004, 46, 50\u201380.\\n\\n\\n(18) Bolukbasi, T.; Chang, K.-W.; Zou, J. Y.; Saligrama, V.; Kalai, A. T. Man is to com-\\n\\n puter programmer as woman is to homemaker? debiasing word embeddings. Advances\\n\\n \ in neural information processing systems 2016, 29.\\n\\n\\n(19) Buolamwini, J.; Gebru, T. Gender Shades: Intersectional Accuracy Disparities in\\n\\n Commercial Gender Classification. Proceedings of the 1st Conference on Fairness,\\n\\n \ Accountability and Transparency. 2018; pp 77\u201391.\\n\\n\\n(20) Lapuschkin, S.; W\xA8aldchen, S.; Binder, A.; Montavon, G.; Samek, W.; M\xA8uller, K.-R.\\n\\n \ Unmasking Clever Hans predictors and assessing what machines really learn. Nature\\n\\n communications 2019, 10, 1\u20138.\\n\\n\\n(21) DeGrave, A. J.; Janizek, J. D.; Lee, S.-I. AI for radiographic COVID-19 detection\\n\\n \ selects shortcuts over signal. Nature Machine Intelligence 2021, 3, 610\u2013619.\\n\\n\\n(22) Goodman, B.; Flaxman, S. European Union regulations on algorithmic decision-\\n\\n \ making and a \u201Cright to explanation\u201D. AI Magazine 2017, 38, 50\u201357.\\n\\n\\n(23) ACT, A. I. European Commission. On Artificial Intelligence: A European Approach\\n\\n \ to Excellence and Trust. 2021, COM/2021/206.\\n\\n\\n(24) Blueprint for an AI Bill of Rights, The White House. 2022; https://www.whitehouse.\\n\\n gov/ostp/ai-bill-of-rights/.\\n\\n\\n(25) Miller, T. Explanation in artificial intelligence: Insights from the social sciences. Ar-\\n\\n tificial intelligence 2019, 267, 1\u201338.\\n\\n\\n\\n \ 26(26) Murdoch, W. J.; Singh, C.; Kumbier, K.; Abbasi-Asl, R.; Yu, B. Definitions, meth-\\n\\n ods, and applications in interpretable machine learning. Proceedings of the National\\n\\n Academy of Sciences of the United States of America 2019, 116, 22071\u201322080.\\n\\n\\n(27) Gunning, D.; Aha, D. DARPA\u2019s Explainable Artificial Intelligence (XAI) Program.\\n\\n AI Magazine 2019, 40, 44\u201358.\\n\\n\\n(28) Biran, O.; Cotton, C. Explanation and justification in machine learning: A survey.\\n\\n \ IJCAI-17 workshop on explainable AI (XAI). 2017; pp 8\u201313.\\n\\n\\n(29) Palacio, S.; Lucieri, A.; Munir, M.; Ahmed, S.; Hees, J.; Dengel, A. Xai handbook:\\n\\n \ Towards a unified framework for explainable ai. Proceedings of the IEEE/CVF Inter-\\n\\n national Conference on Computer Vision. 2021; pp 3766\u20133775.\\n\\n\\n(30) Kuhn, D. R.; Kacker, R. N.; Lei, Y.; Simos, D. E. Combinatorial Methods for Ex-\\n\\n plainable AI. 2020 IEEE International Conference on Software Testing, Verification\\n\\n and Validation Workshops (ICSTW) 2020, 167\u2013170.\\n\\n\\n(31) Seshadri, A.; Gandhi, H. A.; Wellawatte, G. P.; White, A. D. Why does that molecule\\n\\n \ smell? ChemRxiv 2022,\\n\\n\\n(32) Das, A.; Rad, P. Opportunities and challenges in explainable artificial intelligence\\n\\n (xai): A survey. arXiv preprint arXiv:2006.11371 2020,\\n\\n\\n(33) Machlev, R.; Heistrene, L.; Perl, M.; Levy, K. Y.; Belikov, J.; Mannor, S.; Levron, Y.\\n\\n Explainable Artificial Intelligence (XAI) techniques for energy and power systems:\\n\\n Review, challenges and opportunities. Energy and AI 2022, 9, 100169.\\n\\n\\n(34) Koh, P. W.; Liang, P. Understanding black-box predictions via influence functions.\\n\\n \ International Conference on Machine Learning. 2017; pp 1885\u20131894.\\n\\n\\n(35) Ribeiro, M. T.; Singh, S.; Guestrin, C. \u201D Why should i trust you?\u201D Explaining the\\n\\n predictions of any classifier. Proceedings of the 22nd ACM SIGKDD international\\n\\n\\n 27 conference on knowledge discovery and data \\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6381" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/3VU30/bMBB+56845YVNClXLgNC9gWAS0jZNDKaJFVXGuSRHHTuznUKF+r/v7KRt tsFLqt757r7vux8vewAJ5clHSGQlvKwbdXBxPhWLH6Rcfnt39PXLzZe8+rxsbu7OP91m10kaIszD I0q/iRpJw3HoyejOLS0KjyHrJMsmx8fj0+NxdNQmRxXCysYfHJmDw/Hh0cFkwr99YGVIouMXv/gv wEv8Bog6x2c2xzTRUqNzokS2bR6x0RoVLIlwjpwX2ifpzimN9qgj6peZBpglrq1rYVczNs2SmwoB nyXaxoPFAi1qhgJ1qzwxO3gyduHYowI18AYunxslSIsHdp5ZTwVJEgquuIpSVIZwePfz7Op9CqSl anPSJbjWLnHlUiisqDHmTEHoHETTKJIiiOhGwGFADnJysnWO65EGzwAjh2cPpoDGmiXFnBiA6C40 5npsXYTTmwpjoRayIo2gUFgdgmIruDZqhhQM3grtGhFor3pIeW5Z5eDkNiuFumRBFC0QHkh0pbzl WiP43qAMFXuVJPmIObBGuDi7/na27yIpRl0y83QjBBgd7R5lpel3i6/IEcgXhCrvi6NGW67ArZzH uoNRc+Nlq4TlApiT7GXknjocdrOisuLeVD6qSXVjLI8JN4oFjZprVmoRGPOfTQFizS3n9bHVW9ZM 1VdBKk4YJX0iX3GxknF4Y1fxJfqKaajQOEc52p6Ra2UFLGFAcXnL2uzbDpUZdnO/K8ZvGM05KRVg XoeHbjRL0m6IeSJxGTjMnTQWwzBPZ3o9nHwWoHUiLJ5ulRo4hNbGd5DCzt33nvV2y5QpuWMP7p/Q pCBNrprznjteet4o502TRO+av/dxm9u/FjThRHXj594sMJabZMeTLmGyOyAD94eT3usZoxo4Tk+z 9JWU85w7xGdrcBISyWOP+SD25ORoS0LwSpqdb7w34P4/pNfSd/y594Msb6bfOaTEhhdkvpvV155Z DEf2rWdbrSPgxKFd8umce0Ib+pFjIfhydWe1G+Q5N60Mg0zdESyaeTY9lFMxnmZZsrfe+wNXq/zp DQYAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38d0cdffeb22-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:32 GMT Server: - cloudflare Set-Cookie: - __cf_bm=tAo0rR4czP8rQkPIanwAo0Ig6p17Kvwp8aOZVVJIBjQ-1771550850.681979-1.0.1.1-Jkne.A_vmzCI9eJ5aCoN3b6EI43hfBXmaJHbHsRDrN14_74_kQQY4k9KkSR1PhH2m9EAildZhfdsawnRxXu9jHZKRv5GJCKk2dSMS.wuDZmoKdjOp4lzadydVP3a8OWC; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:57:32 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "2115" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998478" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_e2c3a7c047ec4018998c9e24c492a7d7 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 22-25: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\nut to models informs the XAI method.\\n\\n\\nConclusion and outlook\\n\\n\\nWe should seek to explain molecular property prediction models because users are more\\n\\nlikely to trust explained predictions, and explanations can help assess if the model is learning\\n\\nthe correct underlying chemical principles. We also showed that black-box modeling first,\\n\\nfollowed by XAI, is a path to structure-property relationships without needing to trade\\n\\nbetween accuracy and interpretability. However, XAI in chemistry has some major open\\n\\nquestions, that are also related to the black-box nature of the deep learning. Some are\\n\\n\\n\\n \ 22highlighted below:\\n\\n\\n \u2022 Explanation representation: How is an explanation presented \u2013 text, a molecule, attri-\\n\\n butions, a concept, etc?\\n\\n\\n \u2022 Molecular distance: \ in XAI approaches such as counterfactual generation, the \u201Cdis-\\n\\n \ tance\u201D between two molecules is minimized. Molecular distance is subjective. Possibil-\\n\\n ities are distance based on molecular properties, synthesis routes, and direct structure\\n\\n comparisons.\\n\\n\\n \u2022 Regulations: As black-box models move from research to industry, healthcare, and\\n\\n environmental settings, we expect XAI to become more important to explain decisions\\n\\n \ to chemists or non-experts and possibly be legally required. Explanations may need\\n\\n to be tuned for be for doctors instead of chemists or to satisfy a legal requirement.\\n\\n\\n \u2022 Chemical space: Chemical space is the set of molecules that are realizable; \u201Crealiz-\\n\\n able\u201D can be defined from purchasable to synthesizable to satisfied valences. What is\\n\\n most useful? Can an explanation consider nearby impossible molecules? How can we\\n\\n generate local chemical spaces centered around a specific molecule for finding counter-\\n\\n factuals or other instance explanations? \ Similarly, can \u201Cactivity cliffs\u201D be connected\\n\\n to explanations and the local chemical space.149\\n\\n\\n \u2022 Evaluating XAI : there is a lack of a systematic framework (quantitative or qualitative)\\n\\n to evaluate correctness and applicability of an explanation. Can there be a universal\\n\\n \ framework, or should explanations be chosen and evaluated based on the audience and\\n\\n domain? For example, work by Rasmussen et al. 58 attempts to focus on comparing\\n\\n feature attribution XAI methods via Crippen\u2019s logP scores.\\n\\n\\n\\n\\n\\n 23Acknowledgements\\n\\n\\nResearch reported in this work was supported by the National Institute of General Medical\\n\\nSciences of the National Institutes of Health under award number R35GM137966. This work\\n\\nwas supported by the NSF under awards 1751471 and 1764415. We thank the Center for\\n\\nIntegrated Research Computing at the University of Rochester for providing computational\\n\\nresources.\\n\\n\\nReferences\\n\\n\\n \ (1) Choudhary, K.; DeCost, B.; Chen, C.; Jain, A.; Tavazza, F.; Cohn, R.; Park, C. W.;\\n\\n Choudhary, A.; Agrawal, A.; Billinge, S. J.; Holm, E.; Ong, S. P.; Wolverton, C.\\n\\n Recent advances and applications of deep learning methods in materials science. npj\\n\\n Computational Materials 2022, 8.\\n\\n\\n (2) Keith, J. A.; Vassilev-Galindo, V.; Cheng, B.; Chmiela, S.; Gastegger, M.; M\xA8uller, K.-\\n\\n R.; Tkatchenko, A. Combining Machine Learning and Computational Chemistry for\\n\\n Predictive Insights Into Chemical Systems. Chemical Reviews 2021, 121, 9816\u20139872,\\n\\n PMID: 34232033.\\n\\n\\n (3) Goh, G. B.; Hodas, N. O.; Vishnu, A. Deep learning for computational chemistry.\\n\\n Journal of Computational Chemistry 2017, 38, 1291\u20131307.\\n\\n\\n (4) Deringer, V. L.; Caro, M. A.; Cs\xB4anyi, G. Machine Learning Interatomic Potentials as\\n\\n Emerging Tools for Materials Science. Advanced Materials 2019, 31, 1902765.\\n\\n\\n (5) Faber, F. A.; Hutchison, L.; Huang, B.; Gilmer, J.; Schoenholz, S. S.; Dahl, G. E.;\\n\\n Vinyals, O.; Kearnes, S.; Riley, P. F.; von Lilienfeld, O. A. Prediction Errors of Molec-\\n\\n \ ular Machine Learning Models Lower than Hybrid DFT Error. Journal of Chemical\\n\\n \ Theory and Computation 2017, 13, 5255\u20135264, PMID: 28926232.\\n\\n\\n\\n \ 24 (6) Duch, W.; Swaminathan, K.; Meller, J. Artificial Intelligence Approaches for Rational\\n\\n Drug Design and Discovery. Current Pharmaceutical Design 2007, 13, 1497\u20131508.\\n\\n\\n (7) Dara, S.; Dhamercherla, S.; Jadav, S. S.; Babu, C. M.; Ahsan, M. J.; darasuresh, S. D.;\\n\\n Dara, S. Machine Learning in Drug Discovery: A Review. Artificial Intelligence Review\\n\\n 123, 55, 1947\u20131999.\\n\\n\\n (8) Gupta, R.; Srivastava, D.; Sahu, M.; Tiwari, S.; Ambasta, R. K.; Kumar, P. Artifi-\\n\\n \ cial intelligence to deep learning: machine intelligence approach for drug discovery.\\n\\n Molecular diversity 2021, 25, 1315\u20131360.\\n\\n\\n (9) Wellawatte, G. P.; Seshadri, A.; White, A. D. Model agnostic generation of counter-\\n\\n factual explanations for molecules. Chemical Science 2022, 13, 3697\u20133705.\\n\\n\\n(10) Gandhi, H. A.; White, A. D. Explaining structure-ac\\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6368" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/3VUTW8bRwy9+1cQc0qAlSDZURX15iA9GAHaHooiQBUIo1nu7tizM5sh15Fg+L+X 3JWsdetc9mNIPj4+cvh0BWB8aX4F4xrLru3C7POnjW27T59//1p9v7+7/3HzJ90uqz++xOrv+MUU GpH29+j4HDV3SeKQfYqj2WW0jIq6XK+Xq9Xi4+p6MLSpxKBhdcezD2l2vbj+MFsu5X0KbJJ3SOLx j/wCPA1PpRhLPMjxojiftEhka5Szs5Mc5hT0xFgiT2wjm+JidCkyxoH10zYCbA31bWvzcStHW/NX g4AHh7ljKD25nggJfjt0wfpo9wHhNrOvvPM2wJ1AheBrjA7h3dfbu/fgI7BADFkODKmCVti4PtgM XU4dZj7KB5beqVIwaEFzkGCwviXgBK19wIkPQZVTC/tg3cNsnw6nGHlllHwsXDPywM3GEjj3xD9S 5uYIe82VHn3pYy1lSRHRDpBzuGNofN0I+4Zp4OzbTqKs1iK0J96QUTKQqDb+vsN5PS9ACyzO5SEV kLLW7bBjel9M6i6HLjglKw69Mq6s414UFOkwD6iFZKnFnVM+yuf33mdsJaVUL7hT7gojkyBViqdW 3KAN3DibsRgVGBugRLQS12DrnSSjzgoJhTunFVVCUtNrbW7L0uunDeFYgGeIiXEUSZugoBboSIyt hDjpj21RJH8YuT7a0I/gI5Oc5ZpEmdSBne26IHT2PngZhddKi4jU1zXSKdryC5rOCnKTSmm8PUJE LHVW9ghsfZBRGH6pQ6fTCbYvvY4laVfK1Mr00nxrinHkMwbBFfOOhB7q6G+28Xl6TzJWPVm9prEP YWKwUdQY2eoN/XayPL/cyZBqGbo9/SfUVD56anayFUhWhNw/4tSZwfosz2/D3e9fXWcjQG3HO04P OKRbrpYfR0BzWTcT883qZGXhGCaGX1Y3xRuQuxJVPposEOOsTEw5iZX19FKE6poutsXVpPb/U3oL fqxf+jtB+Sn8xeB0nIXWZS+85ZZRV/LP3F60Hggbwvwoi3bHHrP2o8TK9mHclmYc7500rdYF48eV WXW79ebabexis16bq+erfwEbO9J6OwYAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38db7d7464b6-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:34 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "1934" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998480" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_251cba1c3616411db2004297bf189c97 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 12-14: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\nnterfactual approach, contrastive approach employ a dual\\n\\noptimization method, which works by generating a similar and a dissimilar (counterfactuals)\\n\\nexample. Contrastive explanations can interpret the model by identifying contribution of\\n\\npresence and absence of subsets of features towards a certain prediction.36,99\\n\\n A counterfactual x\u2032 of an instance x is one with a dissimilar prediction \u02C6f(x) in classi-\\n\\nfication tasks. As shown in equation 5, counterfactual generation can be thought of as a\\n\\nconstrained optimization problem which minimizes the vector distance d(x, x\u2032) between the\\n\\nfeatures.9,100\\n\\n\\n minimize \ d(x, x\u2032)\\n (5)\\n \ such that \u02C6f(x) \u0338= \u02C6f(x\u2032)\\n\\n \ For regression tasks, equation 6 adapted from equation 5 can be used. Here, a counter-\\n\\nfactual is one with a defined increase or decrease in the prediction.\\n\\n\\n \ minimize d(x, x\u2032)\\n (6)\\n \ such that \u02C6f(x) \u2212\u02C6f(x\u2032) \u2265\u2206\\n\\n \ Counterfactuals explanations have become a useful tool for XAI in chemistry, as they\\n\\nprovide intuitive understanding of predictions and are able to uncover spurious relationships\\n\\nin training data.101 Counterfactuals create local (instance-level), actionable explanations.\\n\\nActionability of an explanation suggest which features can be altered to change the outcome.\\n\\nFor example, changing a hydrophobic functional group in a molecule to a hydrophilic group\\n\\nto increase solubility.\\n\\n Counterfactual generation is a demanding task as it requires gradient optimization over\\n\\ndiscrete features that represents a molecule. Recent work by Fu et al. 102 and Shen et al. 103\\n\\npresent two techniques which allow continuous gradient-based optimization. Although, these\\n\\nmethodologies are shown to circumvent the issue of discrete molecular optimization, counter-\\n\\nfactual explanation based model interpretation still remains unexplored compared to other\\n\\n\\n\\n 12post-hoc methods.\\n\\n \ CF-GNNExplainer104 is a counterfactual explanation generating method based on GN-\\n\\nNExplainer69 for graph data. This method generate counterfactuals by perturbing the input\\n\\ndata (removing edges in the graph), and keeping account of perturbations which lead to\\n\\nchanges in the output. However, this method is only applicable to graph-based models\\n\\nand can generate infeasible molecular structures. Another related work by Numeroso and\\n\\nBacciu 105 focus on generating counterfactual explanations for deep graph networks. Their\\n\\nmethod MEG (Molecular counterfactual Explanation Generator) uses a reinforcement learn-\\n\\ning based generator to create molecular counterfactuals (molecular graphs). While this\\n\\nmethod is able to generate counterfactuals through a multi-objective reinforcement learner,\\n\\nthis is not a universal approach and requires training the generator for each task.\\n\\n Work by Wellawatte et al. 9 present a model agnostic counterfactual generator MMACE\\n\\n(Molecular Model Agnostic Counterfactual Explanations) which does not require training\\n\\nor computing gradients. This method firstly populates a local chemical space through ran-\\n\\ndom string mutations of SELFIES106 molecular representations using the STONED algo-\\n\\nrithm.107 Next, the labels (predictions) of the molecules in the local space are generated\\n\\nusing the model that needs to be explained. Finally, the counterfactuals are identified and\\n\\nsorted by their similarities \u2013 Tanimoto distance96 between ECFP4 fingerprints.97 Unlike the\\n\\nCF-GNNExplainer104 and MEG105 methods, the MMACE algorithm ensures that generated\\n\\nmolecules are valid, owing to the surjective property of SELFIES. Additionally, the MMACE\\n\\nmethod can be applied to both regression and classification models. However, like most XAI\\n\\nmethods for molecular prediction, MMACE does not account for the chemical stability of\\n\\npredicted counterfactuals. To circumvent this drawback, Wellawatte et al. 9 propose an-\\n\\nother approach, which identift counterfactuals through a similarity search on the PubChem\\n\\ndatabase.108\\n\\n\\n\\n\\n\\n 13Similarity to adjacent fields\\n\\n\\nTangential examples to counterfactual explanations are adversarial training and matched\\n\\nmolecular pairs. Adversarial perturbations are used during training to deceive the model\\n\\nto expose the vulnerabilities of a model109,110 whereas counterfactuals are applied post-hoc.\\n\\nTherefore, the main difference between adversarial and counterfactual examples are in the\\n\\napplication, although both are derived from the same optimization problem.100 Grabocka\\n\\net al. 111 have developed a method named Adversarial Training on EXplanations (ATEX)\\n\\nwhich improves model robustness via exposure to adversarial examples. While there are\\n\\nconceptual disparities, we note that\\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6325" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/31UYW8bNwz9nl9B3KcOOBu2l8xxv6VpOzRAuw4YugVzYcg63p0anXQTdW6CIP99 T7okdtq0gGHDJB/1SD7y9oioMFXxkgrdqqi73k5ev1qp7u8vpx9//XrRXL66vFr88enPt6H972J1 eVGUCeG3X1jHB9RUe+A4Gu9Gtw6sIqes8+VyfnIyOz1ZZEfnK7YJ1vRxcuwni9nieDKf4/ce2Hqj WRDxL/4S3ebvRNFVfA3zrHywdCyiGobtIQjG4G2yFErESFQuFuXeqb2L7DLr27UjWhcydJ0KN2uY 1sVfLRNfaw59pMqIHkRYSPsBqFArHQdlEdBb5VQqVUjhQ9F7S7UP9Ca5jFNby3QWoqmNNkC8A9xa 07DTTC/+OXv3CxlHuuUODMPNlGAiZTpBJuqD35mKEREHE82OaUDhIZVSGdeQrym3EIFcGZ1plIjR fseBpB+C8YNQYDtSbE0v6bkYwCwlqFRUJSEbUtWAqJwjczZOTNNGmdL5T2o2bucteKEeDrAhJ1+r NH6hrya21OGhDigIwzWcqzKuHyLV0MQQkgWSAUUZbEzcKpOYYDDflzYlDEX4m64HdEW4Hsa2gza6 o3liece2fK6ikmTQbRoXXjD1TSLdQSl6sCoc8PIAtwZpqGIxoEF+iNA2g8gnNba249j6SvLTBz14 KhO8aJy2Q57Z+/dn529yy8/fTn7/8OFeJxzKXEoLijbR5KocOzgCtjzSREsmqnFeotE5i+p7a3Qu EIy3HojADQoQ1J0jtE36h/5yxygquZLpuihH0UMcvEsd24j2gZP4T9fu7nBTArorKi2qG6w9cCjn fBznkHb0873n7nErrW+g4a18Ay1qqELaDe6C4EhgAyX6vsjeO3x/zts/PFnoAom6Pm6iv+L83Hxx ejwmLPYH58B9vLj3RnC0Txy/lc+k3FQclbFycEIKDQVwdYDFgXosQmGgfu+bHR3U/j2l59KP9WOw B1l+mH7v0Jp76GOzX43nwgKno/yjsMdeZ8KFcNjh1G6i4ZDmUXGtsJDjGZYbidxtMLQG5zCY8WjW /Wa5WuiVmq2Wy+Lo7uh/Ip/8tz0GAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38dc1adaebe5-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:34 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "2229" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998484" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_a81aaf4cbc384efcb37631bc4bd9b0c3 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 8-9: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\nrepresented with equation 2.\\n\\n \ \u2206\u02C6f(\u20D7x) \u2248\u2202\u02C6f(\u20D7x) \ (2)\\n \u2206xi \ \u2202xi\\n\\n\\n\\n 7 \u2206\u02C6f(\u20D7x) \ where \u02C6f(x) is the black-box model and are used as our attributions. The left- \u2206xi\\n\\nhand side of equation 2 says that we attribute each input feature xi by how much one unit\\n\\nchange in it would affect the output of \u02C6f(x). If \u02C6f(x) is a linear surrogate model, then this\\n\\nmethod reconciles with LIME.35 In DL models, \u2207xf(x), suffers from the shattered gradients\\n\\nproblem.62 This means directly computing the quantity leads to numeric problems. The\\n\\ndifferent gradient based approaches are mostly distinguishable based on how the gradient is\\n\\napproximated.\\n\\n Gradient based explanations have been widely used to interpret chemistry predictions.60,66\u201370\\n\\nMcCloskey et al. 60 used graph convolutional networks (GCNs) to predict protein-ligand\\n\\nbinding and explained the binding logic for these predictions using integrated gradients.\\n\\nPope et al. 66 and Jim\xB4enez-Luna et al. 67 show application of gradCAM and integrated gradi-\\n\\nents to explain molecular property predictions from trained graph neural networks (GNNs).\\n\\nSanchez-Lengeling et al. 68 present comprehensive, open-source XAI benchmarks to explain\\n\\nGNNs and other graph based models. They compare the performance of class activation\\n\\nmaps (CAM),63 gradCAM,64 smoothGrad,,65 integrated gradients62 and attention mecha-\\n\\nnisms for explaining outcomes of classification as well as regression tasks. They concluded\\n\\nthat CAM and integrated gradients perform well for graph based models. Another attempt\\n\\nat creating XAI benchmarks for graph models was made by Rao et al. 70. They compared\\n\\nthese gradient based methods to find subgraph importance when predicting activity cliffs\\n\\nand concluded that gradCAM and integrated gradients provided the most interpretability\\n\\nfor GNNs. The GNNExplainer69 is an approach for generating explanations (local and\\n\\nglobal) for graph based models. This method focuses on identifying which sub-graphs con-\\n\\ntribute most to the prediction by maximizing mutual information between the prediction\\n\\nand distribution of all possible sub-graphs. Ying et al. 69 show that GNNExplainer can be\\n\\nused to obtain model-agnostic explanations. SubgraphX is a similar method that explains\\n\\nGNN predictions by identifying important subgraphs.71\\n\\n \ Another set of approaches like DeepLIFT72 and Layerwise Relevance backPropagation73\\n\\n\\n\\n \ 8(LRP) are based on backpropagation of the prediction scores through each layer of the neu-\\n\\nral network. The specific backpropagation logic across various activation functions differs\\n\\nin these approaches, which means each layer must have its own implementation. Baldas-\\n\\nsarre and Azizpour 74 showed application of LRP to explain aqueous solubility prediction for\\n\\nmolecules.\\n\\n SHAP is a model-agnostic feature attribution method that is inspired from the game\\n\\ntheory concept of Shapley values.44,46 SHAP has been popularly used in explaining molecular\\n\\nprediction models.75\u201378 It\u2019s an additive feature contribution approach, which assumes that\\n\\nan explanation model is a linear combination of binary variables z. If the Shapley value\\nfor the ith feature is \u03D5i, then the explanation is \u02C6f(\u20D7x) = Pi \u03D5i(\u20D7x)zi(\u20D7x). Shapley values for\\n\\nfeatures are computed using Equation 3.79,80\\n\\n\\n\\n M\\n 1\\n \ \u03D5i(\u20D7x) = X \u02C6f (\u20D7z+i) \u2212\u02C6f (\u20D7z\u2212i) (3)\\n M\\n\\n \ Here \u20D7z is a fabricated example created from the original \u20D7x and a random perturbation \u20D7x\u2032.\\n\\n\u20D7z+i has the feature i from \u20D7x and \u20D7z\u2212i has the ith feature from \u20D7x\u2032. Some care should be taken\\n\\nin constructing \u20D7z when working with molecular descriptors to ensure that an impossible \u20D7z is\\n\\nnot sampled (e.g., high count of acid groups but no hydrogen bond donors). M is the sample\\n\\nsize of perturbations around \u20D7x. Shapley value computation is expensive, hence M is chosen\\n\\naccordingly. Equation 3 is an approximation and gives contributions with an expectation\\nterm as \u03D50 + Pi=1 \u03D5i(\u20D7x) = \u02C6f(\u20D7x).\\n\\n Visualization based feature attribution has also been used for molecular data. In com-\\n\\nputer science, saliency maps are a way to measure spatial feature contribution.81 Simply put,\\n\\nsaliency maps draw a connection between the model\u2019s neural fingerprint components (trained\\n\\nweights) and input features. Weber et al. 82 used saliency maps to build an explainable GCN\\n\\narchitecture that gives subgraph importance for small molecule activity prediction. On the\\n\\nother hand, similarity maps compare model predictions for two or more molecules based on\\n\\ntheir chemical fingerprints.83 Similarity maps provide atomic weights or predicte\\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6380" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41U224bNxB991cM9skGJMNyrcrqm4P0YqAIYjhBi1aBQJGj3am4JMOLLMXwv2fI XUmb1AX6soI4tzNnzszzGUBFqvoJKtmIKFunx2/fzEX78FBPH37f7P6a7O7V+3qebj9//OM2Plaj HGFX/6CMh6hLaTkOI1nTmaVHETFnncxmk+n06nZ6XQytVahzWO3i+MaOr6+ub8aTCf/2gY0liYE9 /ua/AM/lmyEahTt+vhodXloMQdTIbwcnfvRW55dKhEAhChOr0ckorYloCurnhQFYVCG1rfD7BT8t qg8NAu4kehdBUZApBAywFZ5sCtBibKwKIIwC4Zy3QjZsJgM/75wWZMRKI9z5SGuSJDTcczGtqUYj Ec7/vLu/gLX10DJCmbTw4Dwqkpk0KLSES2AvENQGiJYzR4biMZaS2BUZBDEkoRBWe+jY3/VZQNMG ofbCNWAweYZiMD5Zvwlw/uu7d+GiJFSIDjQKb8jURwAfUDaGPifuLCTZgAg5kyKmbbwSAXsgRhQE I3j87e49nD82ggHs4U4pirTFjpLe6WJU6m0pJKHpS3nscx04LYgDW5mrffEO1BJzRHHPXTpm3SM0 VDfMZ8PCYqBMPh4TNKgdiBg9rVLErptvqGI+g0OZZ8PEuhRhzQpNnvvkmYS0KnxxQ63YZD5igwc6 W8u1j8PIU76EXzgIdyLT3nOQslZq0WIOtX6fK+a5ZDh9Kcj6Kwg77p4a0oO2S5+azOa7qcET5qZ7 TQyhd3qhANKnIrmsr8SL4rP0Ve6jMM8VFNPOf4eUkBloMfuxnluSnKY0zu6Xi2rU7YlHjVvBQl4G yXTkfZkvzMtwuTyuE/fCFpO0HhiEMTZ2Ushr/am3vBwXWdua12kVvgut1mQoNEs+JYHvCi9tiNZV xfrC30/lYKRvbkDFiVoXl9FusJSb/DC/7RJWpxs1ME9/7K2RMeqhYXozeiXlUrEESIfB1alkvgTq FHs6USIpsgPD2aDxf+N5LXfXPM/i/6Q/GaREx2uyPM37NTeP+Yj/l9uR6AK4Cui3fJqXkdDnYShc i6S7+1qFfYjYLnlidV4T6o7s2i1n82s5F1fz2aw6ezn7CksGI1dtBgAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38ddfccd1990-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:35 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "2127" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998468" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_3d852073315143458ad95f66dc5de2d9 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 28-30: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\n M. T.; Singh, S.; Guestrin, C. \u201D Why should i trust you?\u201D Explaining the\\n\\n predictions of any classifier. Proceedings of the 22nd ACM SIGKDD international\\n\\n\\n 27 \ conference on knowledge discovery and data mining. San Diego, CA, USA, 2016; pp\\n\\n 1135\u20131144.\\n\\n\\n(36) Dhurandhar, A.; Chen, P.-Y.; Luss, R.; Tu, C.-C.; Ting, P.; Shanmugam, K.; Das, P.\\n\\n Explanations based on the missing: Towards contrastive explanations with pertinent\\n\\n \ negatives. Advances in neural information processing systems 2018, 31.\\n\\n\\n(37) Jin, W.; Li, X.; Hamarneh, G. Evaluating Explainable AI on a Multi-Modal Medical\\n\\n \ Imaging Task: Can Existing Algorithms Fulfill Clinical Requirements? Proceedings of\\n\\n the AAAI Conference on Artificial Intelligence 2022, 36, 11945\u201311953.\\n\\n\\n(38) Zhang, Y.; Xu, F.; Zou, J.; Petrosian, O. L.; Krinkin, K. V. XAI Evaluation: Evalu-\\n\\n ating Black-Box Model Explanations for Prediction. 2021 II International Conference\\n\\n on Neural Networks and Neurotechnologies (NeuroNT). 2021; pp 13\u201316.\\n\\n\\n(39) Oviedo, F.; Ferres, J. L.; Buonassisi, T.; Butler, K. T. Interpretable and Explain-\\n\\n able Machine Learning for Materials Science and Chemistry. Accounts of Materials\\n\\n Research 2022, 3, 597\u2013607.\\n\\n\\n(40) Yalcin, O.; Fan, X.; Liu, S. Evaluating the correctness of explainable AI algorithms\\n\\n for classification. arXiv preprint arXiv:2105.09740 2021,\\n\\n\\n(41) Hoffman, R. R.; Mueller, S. T.; Klein, G.; Litman, J. Metrics for Explainable AI:\\n\\n Challenges and Prospects. 2018,\\n\\n\\n(42) Mohseni, S.; Zarei, N.; Ragan, E. D. A Multidisciplinary Survey and Framework for\\n\\n \ Design and Evaluation of Explainable AI Systems. ACM Transactions on Interactive\\n\\n \ Intelligent Systems 2018, 11, 46.\\n\\n\\n(43) Humer, C.; Heberle, H.; Montanari, F.; Wolf, T.; Huber, F.; Henderson, R.; Hein-\\n\\n rich, J.; Streit, M. ChemInformatics Model Explorer (CIME): exploratory analysis of\\n\\n \ chemical model explanations. Journal of Cheminformatics 2022, 14, 1\u201314.\\n\\n\\n \ 28(44) Lundberg, S. M.; Lee, S.-I. In Advances in Neural Information Processing Systems\\n\\n 30; Guyon, I., Luxburg, U. V., Bengio, S., Wallach, H., Fergus, R., Vishwanathan, S.,\\n\\n Garnett, R., Eds.; Curran Associates, Inc., 2017; pp 4765\u20134774.\\n\\n(45) \u02C7Strumbelj, E.; Kononenko, I. Explaining prediction models and individual predictions\\n\\n \ with feature contributions. Knowledge and information systems 2014, 41, 647\u2013665.\\n\\n\\n(46) Shapley, L. S. A Value for N-Person Games; RAND Corporation: Santa Monica, CA,\\n\\n 1952.\\n\\n\\n(47) Molnar, C.; Casalicchio, G.; Bischl, B. Interpretable machine learning\u2013a brief history,\\n\\n state-of-the-art and challenges. Joint European Conference on Machine Learning and\\n\\n Knowledge Discovery in Databases. 2020; pp 417\u2013431.\\n\\n\\n(48) Lou, Y.; Caruana, R.; Gehrke, J. Intelligible models for classification and regression.\\n\\n \ Proceedings of the 18th ACM SIGKDD international conference on Knowledge dis-\\n\\n covery and data mining. 2012; pp 150\u2013158.\\n\\n\\n(49) Bastani, O.; Kim, C.; Bastani, H. Interpreting blackbox models via model extraction.\\n\\n \ arXiv preprint arXiv:1705.08504 2017,\\n\\n\\n(50) Gajewicz, A.; Puzyn, T.; Odziomek, K.; Urbaszek, P.; Haase, A.; Riebeling, C.;\\n\\n Luch, A.; Irfan, M. A.; Landsiedel, R.; van der Zande, M.; Bouwmeester, H. Deci-\\n\\n \ sion tree models to classify nanomaterials according to the DF4nanoGrouping scheme.\\n\\n Nanotoxicology 2018, 12, 1\u201317.\\n\\n\\n(51) Han, L.; Wang, Y.; Bryant, S. H. Developing and validating predictive decision tree\\n\\n \ models from mining chemical structural fingerprints and high\u2013throughput screening\\n\\n data in PubChem. BMC Bioinformatics 2008, 9, 401.\\n\\n(52) Plumb, G.; Al-Shedivat, M.; Cabrera, \xB4A. A.; Perer, A.; Xing, E.; Talwalkar, A. Regu-\\n\\n\\n\\n\\n 29 larizing black-box models for improved interpretability. Advances in Neural Informa-\\n\\n \ tion Processing Systems 2020, 33, 10526\u201310536.\\n\\n\\n(53) Shao, X.; Skryagin, A.; Stammer, W.; Schramowski, P.; Kersting, K. Right for bet-\\n\\n \ ter reasons: Training differentiable models by constraining their influence functions.\\n\\n Proceedings of the AAAI Conference on Artificial Intelligence. 2021; pp 9533\u20139540.\\n\\n\\n(54) Ouyang, R.; Curtarolo, S.; Ahmetcik, E.; Scheffler, M.; Ghiringhelli, L. M. SISSO: A\\n\\n compressed-sensing method for identifying the best low-dimensional descriptor in an\\n\\n immensity of offered candidates. Physical Review Materials 2018, 2, 083802.\\n\\n\\n(55) Lipton, Z. C. The mythos of model interpretability: In machine learning, the concept\\n\\n of interpretability is both important and slippery. Queue 2018, 16, 31\u201357.\\n\\n\\n(56) Harren, T.; Matter, H.; Hessler, G.; Rarey, M.; Grebner, C. Interpretation of structure\u2013\\n\\n activity relationships in real-world drug design data sets using explainable artificial\\n\\n intelligence. Journal of Chemical Information and Modeling 2022, 62,\\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6357" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/3VUwW7bMAy99ysInTbACZK0RZLdWgwYCmzFDgM2bCkCRaZtLrJkSHLarOi/j7ST xt3aiwXzkdTjI6nHMwBFufoAylQ6mbqxo4/XS+1u66/19vpL+enzxXe6vX84/9NuQ379U2US4Te/ 0aRj1Nh4jsNE3vWwCagTStbpfD69vJwsLs87oPY5WgkrmzS68KPZZHYxmk75PARWngxG9vjFvwCP 3Vcouhwf2DzJjpYaY9Qlsu3oxMbgrViUjpFi0i6p7AQa7xK6jvXjygGsVGzrWof9ik0r9a1CwAeD oUkQsMCAjqnATgfybYR7H7aRASuVQfLs21hNTm8sgg6JCjKkLRBfYi2VEg3vflzdvM/gviJTQeFN Gzmjd1DrLbmSD1ORQ7Cog+sMok/scoQmYOqTO76vQgrAppyM6ByhZUWC1JiL0xhuEtRcXYfF1ObU 3yRFBx0T7bBn7HTnkwHutG27H/AFMFHQtvSBUlUzergUctyh9Y2kFreXzA50Cx/AWNGcNegzSnjA MnCT+HcMV3lOAmhr9xlQgorKilWqUuyu4TGyFl3JpCW0CT42PGHxQI35cAdYVzmJzbpp7PEuclAQ 2jyCpS2T4gYF7gTLYEi6kHF2rHkewr6vKw9tyYVFKpnZsO0c5MFQQqmJBdY95UPvpW9S8FAEspT2 XdIaU+XzXgyquYCdNFRqY/1dbLTM017q2VhttqONfzjoN16prJ9Hni7uClNeR+MDylwuVu5pOMQ8 mW3UskOutXYAaOd86nsr63N3QJ6eF8b6kllt4j+hqiBHsVrzykbeX16OmHyjOvSJv3fdYrYvdk1x orpJ6+S32F03nU/nfUJ1egsG8Gx6QBNztANgcb7IXkm5zllcsnGw3crwsmA+iOW347kIzQPvT9jk bFD7/5ReS9/Xzz0bZHkz/QkwBht+ENan1XzNLaC8l2+5PWvdEVYRw45fwXUiDNKPHAvd2v4pU3Ef E9ZrblopM0j9e1Y06/lyZpZ6spzP1dnT2V/gL03u2AUAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38deec52eb22-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:35 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "2275" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998480" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_583d68f05d3442cf8d65509d41b094ce status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":[{\"type\":\"image_url\",\"image_url\":{\"url\":\"data:image/png;base64,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\"}},{\"type\":\"text\",\"text\":\"Excerpt from wellawatte2023aperspectiveon pages 14-16: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\nsame optimization problem.100 Grabocka\\n\\net al. 111 have developed a method named Adversarial Training on EXplanations (ATEX)\\n\\nwhich improves model robustness via exposure to adversarial examples. While there are\\n\\nconceptual disparities, we note that the counterfactual and adversarial explanations are\\n\\nequivalent mathematical objects.\\n\\n Matched molecular pairs (MMPs) are pairs of molecules that differ structurally at only\\n\\none site by a known transformation.112,113 MMPs are widely used in drug discovery and\\n\\nmedicinal chemistry as these facilitate fast and easy understanding of structure-activity re-\\n\\nlationships.114\u2013116 Counterfactuals and MMP examples intersect if the structural change is\\n\\nassociated with a significant change in the properties. In the case the associated changes in\\n\\nthe properties are non-significant, the two molecules are known as bioisosteres.117,118 The con-\\n\\nnection between MMPs and adversarial training examples has been explored by van Tilborg\\n\\net al. 119. MMPs which belong to the counterfactual category are commonly used in outlier\\n\\nand activity cliff detection.113 This approach is analogous to counterfactual explanations,\\n\\nas the common objective is to uncover learned knowledge pertaining to structure-property\\n\\nrelationships.70\\n\\n\\nApplications\\n\\n\\nModel interpretation is certainly not new and a common step in ML in chemistry, but XAI for\\n\\nDL models is becoming more important60,66\u201369,73,88,104,105 Here we illustrate some practical\\n\\nexamples drawn from our published work on how model-agnostic XAI can be utilized to\\n\\n\\n\\n 14interpret black-box models and connect the explanations to structure-property relationships.\\n\\nThe methods are \u201CMolecular Model Agnostic Counterfactual Explanations\u201D (MMACE)9\\n\\nand \u201CExplaining molecular properties with natural language\u201D.10 Then we demonstrate how\\n\\ncounterfactuals and descriptor explanations can propose structure-property relationships in\\n\\nthe domain of molecular scent.31\\n\\n\\nBlood-brain barrier permeation prediction\\n\\n\\nThe passive diffusion of drugs from the blood stream to the brain is a critical aspect in drug\\n\\ndevelopment and discovery.120 Small molecule blood-brain barrier (BBB) permeation is a\\n\\nclassification problem routinely assessed with DL models.121,122 To explain why DL models\\n\\nwork, we trained two models a random forest (RF) model123 and a Gated Recurrent Unit\\n\\nRecurrent Neural Network (GRU-RNN). Then we explained the RF model with generated\\n\\ncounterfactuals explanations using the MMACE9 and the GRU-RNN with descriptor expla-\\n\\nnations.10 Both the models were trained on the dataset developed by Martins et al. 124. The\\n\\nRF model was implemented in Scikit-learn125 using Mordred molecular descriptors126 as the\\n\\ninput features. The GRU-RNN model was implemented in Keras.127 See Wellawatte et al. 9\\n\\nand Gandhi and White 10 for more details.\\n\\n \ According to the counterfactuals of the instance molecule in figure 1, we observe that the\\n\\nmodifications to the carboxylic acid group enable the negative example molecule to permeate\\n\\nthe BBB. Experimental findings by Fischer et al. 120 show that the BBB permeation of\\n\\nmolecules are governed by hydrophobic interactions and surface area. The carboxylic group is\\n\\na hydrophilic functional group which hinders hydrophobic interactions and addition of atoms\\n\\nenhances the surface area. This proves the advantage of using counterfactual explanations,\\n\\nas they suggest actionable modification to the molecule to make it cross the BBB.\\n\\n In Figure 2 we show descriptor explanations generated for Alprozolam, a molecule that\\n\\npermeates the BBB, using the method described by Gandhi and White 10. We see that\\n\\npredicted permeability is positively correlated with the aromaticity of the molecule, while\\n\\n\\n 15negatively correlated with the number of hydrogen bonds donors and acceptors. A similar\\n\\nstructure-property relationship for BBB permeability is proposed in more mechanistic stud-\\n\\nies.128\u2013130 The substructure attributions indicates a reduction in hydrogen bond donors and\\n\\nacceptors. These descriptor explanations are quantitative and interpretable by chemists.\\n\\nFinally, we can use a natural language model to summarize the findings into a written\\n\\nexplanation, as shown in the printed text in Figure 2.\\n\\n\\n\\n\\n\\nFigure 1: Counterfactuals of a molecule which cannot permeate the blood-brain barrier.\\nSimilarity is the Tanimoto similarity of ECFP4 fingerprints.131 Red indicates deletions and\\ngreen indicates substitutions and addition of atoms. Republished from Ref.9 with permission\\nfrom the Royal Society of Chemistry.\\n\\n\\n\\nSolubility prediction\\n\\n\\nSmall molecule solubility prediction is a classic cheminformatics regression challenge and is\\n\\nimportant for chemical process design, drug design and crystallization.133\u2013136 In our previous\\n\\nworks,9,10 we implemented and trained an RNN model in Keras to predict solubilities (log\\n\\nmolarity) of small molecules.127 The AqS\\n\\n---\\n\\nQuestion: What is XAI?\"}]}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "22956" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41U32/bNhB+z19x0NMG2EHsxkjatxRZgRYFNgwDVrQuHJo8SddQpMYj3WhB/vcd KSdStgzoiwzz7r777rsf9ycAFZnqDVS6VVF3vV1ev32t/O3VbxeXv/7+7s+PHz50n8z13595Pbz7 TtUiR/j9N9TxMepUe4nDSN6NZh1QRcyoq4uL1WZzdrk5L4bOG7Q5rOnj8twv12fr8+VqJb/HwNaT RhaPL/IX4L58M0Vn8E6ezxaPLx0yqwbl7dFJHoO3+aVSzMRRuVgtJqP2LqIrrG9ubr6xd1t3v3UA 24pT16kwbMW2rT5dvV+AD/DLXW8VObW3CFchUk2alIX3gmItNeg0LiBgjYEheugwtt4wKGcgom4d /ZWQITGabCYJC33AWBxwxIbYIsijIZ3VY/A1dEq35BAsquDINVBE4wX0SkjoZFWwAxjEfnL56frj z0e/UyFYYEu5d7FAiiwlcJbrCVbKhRZtL1Sd9gcMwDEkHVPAZR98jyEOUqZVhWFL4rgfBMgfyOTc 5JiaNnKu0MP3dgA1YksltyIA96izdvM6T0VclWcmR2mbTKabskK1ksyichHIjTkXgkq6BU5NgywC FpDSF0mUsUe/0oWxVJSgrLNB1oH6KO18CZGMDATVA9QysFJwplPbJK3NlT0j/EeLjFOTA8JB2VRI SB9rQivPlm4RTEgNGOIi5pBToXgnmeCQZ9KMPZ06UiSmrFQSSkrktd6b5T7kAdmrEEh6Ij4dFvJ5 NNnbtCdL0hlikAplMJQ93VaLcZ6lXXhQMqA7YREwz/XqbOsetk4mf74TMr6JVV5Jl6ydGZRzPo5i 5W38erQ8PO2f9Y1Q3/O/QquaHHG7kwsgC5Z3jaPvq2J9kO/Xsufp2epWAtT1cRf9LZZ0q83lcdGr 6bTMzK9eHa1RONqZ4WL1aHkGuTMYFVmeHYtKy5qhmWKny6KSIT8znMwK/y+fl7DH4qXPPwI/GbTG Xs7mbpq7l9wC5tv7f25PQhfCFWM4yEXdyXyF3AyDtUp2PIsVDxyx20nHmnyaaLyNdb9bb3Rdrzer el2dPJz8A84E91okBgAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38e8cfd564b6-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:36 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "1885" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: - "250000" x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-input-images: - "249999" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29997721" x-ratelimit-reset-input-images: - 0s x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 4ms x-request-id: - req_09373101f7b3460bb9e673ed4551d968 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 5-8: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\nnct?\\n\\n\\n We present an example evaluation of the SHAP explanation method based on the above\\n\\nattributes.44 Shapley values were proposed as a local explanation method based on feature\\n\\nattribution, as they offer a complete explanation - each feature is assigned a fraction of\\n\\nthe prediction value.44,45 Completeness is a clearly measurable and well-defined metric, but\\n\\nyields explanations with many components. Yet Shapley values are not actionable nor sparse.\\n\\nThey are non-sparse as every feature has a non-zero attribution and not-actionable because\\n\\nthey do not provide a set of features which changes the outcome.46 Ribeiro et al. 35 proposed\\n\\na surrogate model method that aims to provide sparse/succinct explanations that have high\\n\\n\\n 5fidelity to the original model. In Wellawatte et al. 9 we argue that counterfactuals are \u201Cbet-\\n\\nter\u201D explanations because they are actionable and sparse. We highlight that, evaluation of\\n\\nexplanations is a difficult task because explanations are fundamentally for and by humans.\\n\\nTherefore, these evaluations are subjective, as they depend on \u201Ccomplex human factors and\\n\\napplication scenarios.\u201D37\\n\\n\\nSelf-explaining models\\n\\nA self-explanatory model is one that is intrinsically interpretable to an expert.47 Two com-\\n\\nmon examples found in the literature are linear regression models and decision trees (DT).\\n\\nIntrinsic models can be found in other XAI applications acting as surrogate models (proxy\\n\\nmodels) due to their transparent nature.48,49 A linear model is described by the equation\\n\\n1 where, W\u2019s are the weight parameters and x\u2019s are the input features associated with the\\n\\nprediction \u02C6y. Therefore, we observe that the weights can be used to derive a complete expla-\\n\\nnation of the model - trained weights quantify the importance of each feature.47 DT models\\n\\nare another type of self-explaining models which have been used in classification and high-\\n\\nthroughput screening tasks. Gajewicz et al. 50 used DT models to classify nanomaterials\\n\\nthat identify structural features responsible for surface activity. In another study by Han\\n\\net al. 51, a DT model was developed to filter compounds by their bioactivity based on the\\n\\nchemical fingerprints.\\n\\n\\n\\n \u02C6y = \u03A3iWixi (1)\\n\\n\\n Regularization techniques such as EXPO52 and RRR53 are designed to enhance the black-\\n\\nbox model interpretability.54 Although one can argue that \u201Csimplicity\u201D of models are posi-\\n\\ntively correlated with interpretability, this is based on how the interpretability is evaluated.\\n\\nFor example, Lipton 55 argue that, from the notion of \u201Csimulatability\u201D (the degree to which a\\n\\nhuman can predict the outcome based on inputs), self-explanatory linear models, rule-based\\n\\n\\n\\n \ 6systems, and DT\u2019s can be claimed uninterpretable. A human can predict the outcome given\\n\\nthe inputs only if the input features are interpretable. Therefore, a linear model which takes\\n\\nin non-descriptive inputs may not be as transparent. On the other hand, a linear model\\n\\nis not innately accurate as they fail to capture non-linear relationships in data, limiting is\\n\\napplicability. Similarly, a DT is a rule-based model and lacks physics informed knowledge.\\n\\nTherefore, an existing drawback is the trade-offbetween the degree of understandability and\\n\\nthe accuracy of a model. For example, an intrinsic model (linear regression or decision trees)\\n\\ncan be described through the trainable parameters, but it may fail to \u201Ccorrectly\u201D capture\\n\\nnon-linear relations in the data.\\n\\n\\nAttribution methods\\n\\n\\nFeature attribution methods explain black box predictions by assigning each input feature\\n\\na numerical value, which indicates its importance or contribution to the prediction. Feature\\n\\nattributions provide local explanations, but can be averaged or combined to explain multi-\\n\\nple instances. Atom-based numerical assignments are commonly referred to as heatmaps.56\\n\\nSheridan 57 describes an atom-wise attribution method for interpreting QSAR models. Re-\\n\\ncently, Rasmussen et al. 58 showed that Crippen logP models serve as a benchmark for\\n\\nheatmap approaches. Other most widely used feature attribution approaches in the litera-\\n\\nture are gradient based methods,59,60 Shapley Additive exPlanations (SHAP),44 and layer-\\n\\nwise relevance prorogation.61\\n\\n Gradient based approaches are based on the hypothesis that gradients for neural net-\\n\\nworks are analogous to coefficients for regression models.62 Class activation maps (CAM),63\\n\\ngradCAM,64 smoothGrad,,65 and integrated gradients62 are examples of this method. The\\n\\nmain idea behind feature attributions with gradients can be represented with equation \ 2.\\n\\n \u2206\u02C6f(\u20D7x) \u2248\u2202\u02C6f(\u20D7x) \ (2)\\n \u2206xi \ \u2202xi\\n\\n\\n\\n 7 \\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6344" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/3RU224bNxB991cM+NQAK0Ny7Cjqm5umqIEWKOogKFoFApc7u8uaSxK8qBYM/3sO d2Vr3TgvEpYzc+bMmcvDGZHQjfiRhOplUoM3i59/2kj/54fLv2/2/TB8/u3uVv0+5Dt+V2dWoioR rv6XVXqKOlcOcZy0s5NZBZaJC+pqvV5dXS3fX12NhsE1bEpY59Pi0i0ulheXi9UK/8fA3mnFER7/ 4JPoYfwtFG3D93heVk8vA8coO8bbkxMegzPlRcgYdUzSJlGdjMrZxHZk/bC1RFsR8zDIcNjiaSs+ 9Ux8rzj4RI2OKsfIkfYyaJcjyehRcSTX0sd7b6S2sjZM1yHpVistDd0A3RjdsVVMP/x1ffOmotYB RtuOnKWBU++aSMmRhmvwgRNJ2yDpiEeDVL22TIZlsCVoVCue002iXnc9sHswuO0lxD6AmclciJEk 4xQYjEBWlj4cs1EtIzcle4uO5MAkUwq6zsWnov96rXrywe11A6hjG5lgJ+vsInoZIo8ky6dUJWys e5YKBD+4XCpq4ZClAaGSKHQZqVFtDUBOsL+IoiZzsaaedaAZdMl2TGxHzud0y6ZdHGU6CVNRzKAP AQxkk4ECdwFTUcovIA0rPX6kwAzvwgplKtQPYghDG4K2UUM7czg1ZWRRJDB60BhjWEhJDyoldxHi OZ+Zaum1hwq/fCvxU9MrYCiTmwLQBdlozOFi6o300B+dL60E6dtfr/+YqEJI9zyII9/kHMRtXaCZ FrWR6m5Ru3v0kRutJnHrA5Ud6EYXPXgXsA2Kp+HzqO04D/F8K6ppGVAN74vTLioXuCzFZmsf5xsU uM1RlgW22ZiZQVrr0qRF2d0vR8vj87Ya16HMOv4vVLQoIvY73IuI44HNjMl5MVof8ftlvAr5xaIL AA0+7ZK74zHd6uL9egIUp0M0M1++O1oTOJq54e3b6hXIXYMZ0CbOTotQpUPNi5ynUyTRWHeyLc9m tX9L6TX4qX70aobyXfiTQSn2GNDdqfOvuQUux/p7bs9aj4RF5LDHCd4lzaH0o+FWZjPdUREPMfGw Q9O6sip6Oqat3603F2ojl5v1Wpw9nn0FAAD//wMA6lhrmlUGAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38eb5aebebe5-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:37 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "2202" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998480" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_e61dc59ce63a4a10a7d2d85f787abd83 status: code: 200 message: OK - request: body: '{"model": "deepseek-reasoner", "messages": [{"role": "system", "content": "Answer in a direct and concise tone. Your audience is an expert, so be highly specific. If there are ambiguous terms or acronyms, first define them."}, {"role": "user", "content": "Answer the question below with the context.\n\nContext:\n\npqac-91399209: Explainable Artificial Intelligence (XAI) is a field focused on providing interpretations of deep learning (DL) model predictions, addressing the ''black-box'' nature of these models. XAI aims to enhance trust and usability by offering insights into why a model makes specific predictions. Key concepts in XAI include interpretability, justifications, and explainability. Interpretability refers to the degree of human understandability intrinsic to a model, while justifications are quantitative metrics that defend the trustworthiness of predictions. Explainability actively clarifies the internal decision-making process, providing extra information about the context and causes of predictions. XAI is particularly important in chemistry for understanding structure-property relationships and ensuring models do not rely on spurious correlations.\nFrom Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\n\npqac-4daa74a0: XAI, or Explainable Artificial Intelligence, refers to methods and techniques used to interpret and explain the predictions of machine learning models, particularly deep learning (DL) models. In the context of molecular prediction models, XAI helps uncover structure-property relationships by providing insights into why a model makes specific predictions. Examples include counterfactual explanations, which suggest actionable modifications to molecules, and descriptor explanations, which identify features influencing predictions. These methods are valuable in fields like drug discovery, where understanding molecular properties such as blood-brain barrier permeation or solubility is critical.\nFrom Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\n\npqac-7420c240: XAI, or Explainable Artificial Intelligence, refers to methods and techniques used to explain the predictions of black-box models, particularly in molecular property prediction. The excerpt discusses two XAI methods: molecular counterfactual explanations and descriptor explanations. Counterfactual explanations involve minimal structural changes to a molecule to achieve contrasting properties, while descriptor explanations use surrogate models to attribute predictions to specific molecular features. These methods enhance the interpretability of machine learning models for domain experts, aiding in understanding structure-property relationships and improving trust in predictions. The choice of XAI method depends on the audience and the purpose of the explanation.\nFrom Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\n\npqac-a0203962: XAI, or Explainable Artificial Intelligence, is a process aimed at clarifying the internal decision-making of models, particularly deep learning (DL) models, which are often accurate but less interpretable. XAI involves two steps: first, developing an accurate but uninterpretable model, and second, adding explanations to its predictions to provide insights into the underlying mechanisms. Explanations can be categorized as global or local and as intrinsic (part of the model) or extrinsic (post-hoc). Attributes like actionability, completeness, correctness, domain applicability, fidelity, robustness, and sparsity are used to evaluate explanations. XAI methods aim to bridge the gap between model accuracy and interpretability.\nFrom Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\n\npqac-117972cb: The excerpt discusses Explainable Artificial Intelligence (XAI) in the context of molecular property prediction models. XAI aims to make predictions from black-box models more interpretable and trustworthy by providing explanations. It highlights the importance of explanation representation (e.g., text, molecules, or concepts), molecular distance in counterfactual generation, regulatory requirements for explanations in industry and healthcare, and the concept of chemical space for generating local explanations. Additionally, it notes the lack of a systematic framework for evaluating the correctness and applicability of explanations, suggesting that evaluation methods may need to be tailored to specific audiences or domains.\nFrom Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\n\nValid Keys: pqac-91399209, pqac-4daa74a0, pqac-7420c240, pqac-a0203962, pqac-117972cb\n\n---\n\nQuestion: What is XAI?\n\nWrite an answer based on the context. If the context provides insufficient information reply \"I cannot answer.\" For each part of your answer, indicate which sources most support it via citation keys at the end of sentences, like (pqac-0f650d59). Only cite from the context above and only use the citation keys from the context.\n\n## Valid citation examples, only use comma/space delimited parentheticals:\n- (pqac-d79ef6fa, pqac-0f650d59)\n- (pqac-d79ef6fa)\n## Invalid citation examples:\n- (pqac-d79ef6fa and pqac-0f650d59)\n- (pqac-d79ef6fa;pqac-0f650d59)\n- (pqac-d79ef6fa-pqac-0f650d59)\n- pqac-d79ef6fa and pqac-0f650d59\n- Example''s work (pqac-d79ef6fa)\n- (pages pqac-d79ef6fa)\n- Author et al. (2023)\n\nDo not concatenate citation keys, just use them as is. Write in the style of a scientific article, with concise sentences and coherent paragraphs. This answer will be used directly, so do not add any extraneous information.\n\nAnswer (about 200 words, but can be longer):"}], "n": 1, "stream": false}' headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "7150" content-type: - application/json host: - api.deepseek.com user-agent: - litellm/1.81.13 method: POST uri: https://api.deepseek.com/v1/chat/completions response: body: string: !!binary | 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 headers: Access-Control-Allow-Credentials: - "true" Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:37 GMT Server: - elb Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked Vary: - origin, access-control-request-method, access-control-request-headers Via: - 1.1 e943d5f0cbb0d255d29da0ddf6639ba8.cloudfront.net (CloudFront) X-Amz-Cf-Id: - 3UxIQlju35BYZGGy5RGTW_UikfgGj3AxDMezBjQAVanRu9ncJ5I0BQ== X-Amz-Cf-Pop: - SFO5-P2 X-Cache: - Miss from cloudfront X-Content-Type-Options: - nosniff x-ds-trace-id: - 10145cc2cca7c86dcbeda68134102054 status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_get_reasoning[openrouter-deepseek].yaml ================================================ interactions: - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.1021/acs.jctc.2c01235?fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"paperId": "1db1bde653658ec9b30858ae14650b8f9c9d438b", "externalIds": {"PubMedCentral": "10134429", "DOI": "10.1021/acs.jctc.2c01235", "CorpusId": 257786462, "PubMed": "36972469"}, "url": "https://www.semanticscholar.org/paper/1db1bde653658ec9b30858ae14650b8f9c9d438b", "title": "A Perspective on Explanations of Molecular Prediction Models", "venue": "Journal of Chemical Theory and Computation", "year": 2023, "citationCount": 63, "influentialCitationCount": 3, "isOpenAccess": true, "openAccessPdf": {"url": "https://doi.org/10.1021/acs.jctc.2c01235", "status": "HYBRID", "license": "CCBY"}, "publicationTypes": ["Review", "JournalArticle"], "publicationDate": "2023-03-27", "journal": {"name": "Journal of Chemical Theory and Computation", "pages": "2149 - 2160", "volume": "19"}, "citationStyles": {"bibtex": "@Article{Wellawatte2023APO,\n author = {G. Wellawatte and Heta A. Gandhi and Aditi Seshadri and A. White},\n booktitle = {Journal of Chemical Theory and Computation},\n journal = {Journal of Chemical Theory and Computation},\n pages = {2149 - 2160},\n title = {A Perspective on Explanations of Molecular Prediction Models},\n volume = {19},\n year = {2023}\n}\n"}, "authors": [{"authorId": "1805407482", "name": "G. Wellawatte"}, {"authorId": "95666896", "name": "Heta A. Gandhi"}, {"authorId": "1481244794", "name": "Aditi Seshadri"}, {"authorId": "2257535", "name": "A. White"}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1398" Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:18 GMT Via: - 1.1 4ab727dc0617b5a51e8ab0496afab13a.cloudfront.net (CloudFront) X-Amz-Cf-Id: - xiJBssnC13LJ3J-z3qVsDUFpyuM2W9szOsjuP5dqycq_tQ_vOFqhhg== X-Amz-Cf-Pop: - SFO53-P10 X-Cache: - Miss from cloudfront x-amz-apigw-id: - ZDnClEvFPHcEjJw= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1398" x-amzn-Remapped-Date: - Fri, 20 Feb 2026 01:27:18 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - af245cee-4d59-4554-ae45-5385959461d5 status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1021%2Facs.jctc.2c01235?mailto=example@papercrow.ai response: body: string: !!binary | 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 headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "5623" Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:19 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1021%2Facs.jctc.2c01235/transform/application/x-bibtex response: body: string: " @article{Wellawatte_2023, title={A Perspective on Explanations of Molecular Prediction Models}, volume={19}, ISSN={1549-9626}, url={http://dx.doi.org/10.1021/acs.jctc.2c01235}, DOI={10.1021/acs.jctc.2c01235}, number={8}, journal={Journal of Chemical Theory and Computation}, publisher={American Chemical Society (ACS)}, author={Wellawatte, Geemi P. and Gandhi, Heta A. and Seshadri, Aditi and White, Andrew D.}, year={2023}, month=mar, pages={2149\u20132160} }\n" headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Date: - Fri, 20 Feb 2026 01:27:19 GMT Server: - Jetty(9.4.40.v20210413) Transfer-Encoding: - chunked permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"image_url\",\"image_url\":{\"url\":\"data:image/png;base64,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\"}},{\"type\":\"text\",\"text\":\"You are analyzing an image, formula, or table from a scientific document. Provide a detailed description that will be used to answer questions about its content. Focus on key elements, data, relationships, variables, and scientific insights visible in the image. It's especially important to document referential information such as figure/table numbers, labels, plot colors, or legends.\\n\\nText co-located with the media may be associated with other media or unrelated content, so do not just blindly quote referential information. The smaller the image, the more likely co-located text is unrelated. To restate, often the co-located text is several pages of content, so only use aspects relevant to accompanying image, formula, or table.\\n\\nHere's a few failure modes with possible resolutions:\\n- The media was a logo or icon, so the text is unrelated. In this case, briefly describe the media as a logo or icon, and do not mention other unrelated surrounding text.\\n- The media was display type, so the text is probably unrelated. The display type can be spread over several lines. In this case, briefly describe the media as display type, and do not mention other unrelated surrounding text.\\n- The media is a margin box or design element, so the text is unrelated. In this case, briefly describe the media as decorative, and do not mention other unrelated surrounding text.\\n- The media came from a bad PDF read, so it's garbled. In this case, describe the media as garbled, state why it's considered garbled, and do not mention other unrelated surrounding text.\\n- The media is a subfigure or a subtable. In this case, make sure to only detail the subfigure or subtable, not the entire figure or table. Do not mention other unrelated surrounding text.\\n\\nIMPORTANT: Start your response with exactly one of these labels:\\n- 'RELEVANT:' if the media contains scientific content (e.g. figures, charts, tables, equations, diagrams, data visualizations) that could help answer scientific questions, or if you're unsure of relevance (e.g. garbled/corrupted content).\\n- 'IRRELEVANT:' if the media content is not useful for scientific question-answer (e.g. journal logo, icon, display type/typography, decorative element, design element, margin box, is blank).\\n\\nAfter the label, provide your description.\\n\\nHere is the co-located text from a radius of 1 page:\\n\\ninterpret black-box models and connect the explanations to structure-property relationships.\\n\\nThe methods are \u201CMolecular Model Agnostic Counterfactual Explanations\u201D (MMACE)9\\n\\nand \u201CExplaining molecular properties with natural language\u201D.10 Then we demonstrate how\\n\\ncounterfactuals and descriptor explanations can propose structure-property relationships in\\n\\nthe domain of molecular scent.31\\n\\n\\nBlood-brain barrier permeation prediction\\n\\n\\nThe passive diffusion of drugs from the blood stream to the brain is a critical aspect in drug\\n\\ndevelopment and discovery.120 Small molecule blood-brain barrier (BBB) permeation is a\\n\\nclassification problem routinely assessed with DL models.121,122 To explain why DL models\\n\\nwork, we trained two models a random forest (RF) model123 and a Gated Recurrent Unit\\n\\nRecurrent Neural Network (GRU-RNN). Then we explained the RF model with generated\\n\\ncounterfactuals explanations using the MMACE9 and the GRU-RNN with descriptor expla-\\n\\nnations.10 Both the models were trained on the dataset developed by Martins et al. 124. The\\n\\nRF model was implemented in Scikit-learn125 using Mordred molecular descriptors126 as the\\n\\ninput features. The GRU-RNN model was implemented in Keras.127 See Wellawatte et al. 9\\n\\nand Gandhi and White 10 for more details.\\n\\n \ According to the counterfactuals of the instance molecule in figure 1, we observe that the\\n\\nmodifications to the carboxylic acid group enable the negative example molecule to permeate\\n\\nthe BBB. Experimental findings by Fischer et al. 120 show that the BBB permeation of\\n\\nmolecules are governed by hydrophobic interactions and surface area. The carboxylic group is\\n\\na hydrophilic functional group which hinders hydrophobic interactions and addition of atoms\\n\\nenhances the surface area. This proves the advantage of using counterfactual explanations,\\n\\nas they suggest actionable modification to the molecule to make it cross the BBB.\\n\\n In Figure 2 we show descriptor explanations generated for Alprozolam, a molecule that\\n\\npermeates the BBB, using the method described by Gandhi and White 10. We see that\\n\\npredicted permeability is positively correlated with the aromaticity of the molecule, while\\n\\n\\n 15\\n\\nnegatively correlated with the number of hydrogen bonds donors and acceptors. A similar\\n\\nstructure-property relationship for BBB permeability is proposed in more mechanistic stud-\\n\\nies.128\u2013130 The substructure attributions indicates a reduction in hydrogen bond donors and\\n\\nacceptors. These descriptor explanations are quantitative and interpretable by chemists.\\n\\nFinally, we can use a natural language model to summarize the findings into a written\\n\\nexplanation, as shown in the printed text in Figure 2.\\n\\n\\n\\n\\n\\nFigure 1: Counterfactuals of a molecule which cannot permeate the blood-brain barrier.\\nSimilarity is the Tanimoto similarity of ECFP4 fingerprints.131 Red indicates deletions and\\ngreen indicates substitutions and addition of atoms. Republished from Ref.9 with permission\\nfrom the Royal Society of Chemistry.\\n\\n\\n\\nSolubility prediction\\n\\n\\nSmall molecule solubility prediction is a classic cheminformatics regression challenge and is\\n\\nimportant for chemical process design, drug design and crystallization.133\u2013136 In our previous\\n\\nworks,9,10 we implemented and trained an RNN model in Keras to predict solubilities (log\\n\\nmolarity) of small molecules.127 The AqSolDB curated database137 was used to train the\\n\\nRNN model.\\n\\n In this task, counterfactuals are based on equation 6. Figure 3 illustrates the generated\\n\\nlocal chemical space and the top four counterfactuals. Based on the counterfactuals, we ob-\\n\\nserve that the modifications to the ester group and other heteroatoms play an important role\\n\\nin solubility. These findings align with known experimental and basic chemical intuition.134\\n\\nFigure 4 shows a quantitative measurement of how substructures are contributing to the pre-\\n\\n\\n\\n 16\\n\\nFigure 2: Descriptor explanations along with natural language explanation obtained for BBB\\npermeability of Alprozolam molecule. The green and red bars show descriptors that influ-\\nence predictions positively and negatively, respectively. Dotted yellow lines show significance\\nthreshold (\u03B1 = 0.05) for the t-statistic. Molecular descriptors show molecule-level proper-\\nties that are important for the prediction. ECFP and MACCS descriptors indicate which\\nsubstructures influence model predictions. MACCS explanations lead to text explanations\\nas shown. Republished from Ref.10 with permission from authors. SMARTS annotations for\\nMACCS descriptors were created using SMARTSviewer (smartsview.zbh.uni-hamburg.de,\\nCopyright: ZBH, Center for Bioinformatics Hamburg) developed by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n \ 17\\n\\nLabel relevance, describe the media, and if uncertain on a description please state why:\"}]}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "24132" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/51WS28bNxC++1cM9iQJkqBVpPoB9BC7bhHASVrHSA5VIFDkrJY1l9ySXNtK4P/e IVerXdmKY/RgWeKQM9988/x+BJBIkZxBwnPmeVGq0W/np4x/TL9dTU5nf9lvVydenH4omRXsy5fP yTC8MKt/kPvm1ZgbeodeGl2LuUXmMWhNj4/T+XxyMptGQWEEqvBsXfrRzIymk+lslKb0f/swN5Kj oxt/00+A7/EzQNQCH+h4MmxOCnSOrZHOmkt0aI0KJwlzTjrPtE+GrZAb7VFH1IPB9eXV5ee3H27O BgNY6IW+yRFkQQpBKlU5b8kBBwwcWklfTAYF6eaVYhZIWnFf2XBBC/A5SgvcWDoojRZSr+lXRcZs xugeU4APpWKaBYYcZMaSYq4CyEzyeAqeudshKHmLagMWVeAPvIGVMkaMVpZJDStmCYyF3vn5eR9K tAXWj0uLQvLwdQzBkVvcACosyFsH9NDvnGOW/gIEpcy9Owuep2MYDM6ZQ3hfe4jQu8LMF8Z5+NS4 2ieiFppoHEULq3C/aO5LBy439xrupc/JtxYPOOIFYbHoQdZ76MOvMBlPJhM66A8JmYjuE1/SgzDE pza+cQwjbHJ1vLNLdnY2KTB3IQAuXqNg26ioNFL7SPEaNdpa+3403Di4PQ1uX+yHqSHAQe8mt4it +y7EIhi6luvcd8i4ZDx/Gu0uL4Ly545CmVlTRAX7zEXCXIk8ZAIdi11GuMbtZyjTOmdjUo/gkywk JaX0m0juyYSwMy0LQ4BdKwtmBVBALi9+/3MGGdGCtrREluuPd8o6cUoPxslVnOrTZZUKkenkYKvj LaWvgILZW0rVnOhSgbJQS1T7sUk0Kdmw8ENPpy95enz8Mu5W+geFUm8RucYbyplq5bz0VV2VoSiF kPWPbbB/CvDNiwDT/weQrUOxvwJmzOM3dR4rElyY0Hva3LymOHQC0NDvnvDf7WiNpzWizuNXk/VE 20LPAsAONe/RW8n328mhjK07x78VdXEqCmzqvFZN3HeTG/19wPu8vkJ/xuclGoHNIzAuMRrg8E67 4Os+sr2ShN6Ow+E+I8M9SvoNJ0/AkD8CyYiueztThIhan6OGaaiUPHk5BNRspbY9kS5xa5w72AoF FmRrO6nCBYKiAh00rF6aPyG5RHR6E8yw2KjJZjeENNapQcTYEnsS7zDWr5OhtrdoN+N6cBKU7eQk R6gNB/s0OH0lNqHh/ARKa7NR2xkfw11vZIrmYmjrT9oOvPPdNKUp1M2R/ehxFsoqUxVqHiOLqmOr HuYE4o7YCdBcrZJapGlTerRDGYd0eJfL0o27i4bFrHIs7Dm6UqojYJrmW/0orDhft5LH3VKjzJr0 r9yTpwm1a+nyJa1VjnYsWmCcN2USpY/0+TUuT9XePpSQoqL0S29uMZpLj3+Z1wqTdl9rxbP5bCv1 hFG1guk0PR0eULkU6JlUrrOBJZySBUX7tl3XWCWk6QiOOo4/x3NId+08Zexr1LcCmlcl7VLLNtCH rlkMC+2Pru2IjoCTsHrQmrqkerUhGAIzVql610zcxnkslp0BG65k5XI651k2nafZNDl6PPoPTNSX L3kLAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a389c4b261574-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:28 GMT Server: - cloudflare Set-Cookie: - __cf_bm=uvFrkbJlLPmwmcf0r9Zn79cAcvvTtA1JZ9H4I8Hd2t8-1771550842.291066-1.0.1.1-iH_EBfh3M8xAqs8jpPkV3zfF0PSKV5tPQc9JRXu804c8A7T8.if5mEYWMbtQrtilkXeDkX4uowrYVXKeAZ0oPRcm1CkN4Tk9dmDrRtlWNdSXZ54jdHbE4LAVHPBMSVUW; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:57:28 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "6487" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: - "250000" x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-input-images: - "249999" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29997418" x-ratelimit-reset-input-images: - 0s x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 5ms x-request-id: - req_4b55c12b18d14203b88c0ea7d2dee211 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"image_url\",\"image_url\":{\"url\":\"data:image/png;base64,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\"}},{\"type\":\"text\",\"text\":\"You are analyzing an image, formula, or table from a scientific document. Provide a detailed description that will be used to answer questions about its content. Focus on key elements, data, relationships, variables, and scientific insights visible in the image. It's especially important to document referential information such as figure/table numbers, labels, plot colors, or legends.\\n\\nText co-located with the media may be associated with other media or unrelated content, so do not just blindly quote referential information. The smaller the image, the more likely co-located text is unrelated. To restate, often the co-located text is several pages of content, so only use aspects relevant to accompanying image, formula, or table.\\n\\nHere's a few failure modes with possible resolutions:\\n- The media was a logo or icon, so the text is unrelated. In this case, briefly describe the media as a logo or icon, and do not mention other unrelated surrounding text.\\n- The media was display type, so the text is probably unrelated. The display type can be spread over several lines. In this case, briefly describe the media as display type, and do not mention other unrelated surrounding text.\\n- The media is a margin box or design element, so the text is unrelated. In this case, briefly describe the media as decorative, and do not mention other unrelated surrounding text.\\n- The media came from a bad PDF read, so it's garbled. In this case, describe the media as garbled, state why it's considered garbled, and do not mention other unrelated surrounding text.\\n- The media is a subfigure or a subtable. In this case, make sure to only detail the subfigure or subtable, not the entire figure or table. Do not mention other unrelated surrounding text.\\n\\nIMPORTANT: Start your response with exactly one of these labels:\\n- 'RELEVANT:' if the media contains scientific content (e.g. figures, charts, tables, equations, diagrams, data visualizations) that could help answer scientific questions, or if you're unsure of relevance (e.g. garbled/corrupted content).\\n- 'IRRELEVANT:' if the media content is not useful for scientific question-answer (e.g. journal logo, icon, display type/typography, decorative element, design element, margin box, is blank).\\n\\nAfter the label, provide your description.\\n\\nHere is the co-located text from a radius of 1 page:\\n\\nFigure 2: Descriptor explanations along with natural language explanation obtained for BBB\\npermeability of Alprozolam molecule. The green and red bars show descriptors that influ-\\nence predictions positively and negatively, respectively. Dotted yellow lines show significance\\nthreshold (\u03B1 = 0.05) for the t-statistic. Molecular descriptors show molecule-level proper-\\nties that are important for the prediction. ECFP and MACCS descriptors indicate which\\nsubstructures influence model predictions. MACCS explanations lead to text explanations\\nas shown. Republished from Ref.10 with permission from authors. SMARTS annotations for\\nMACCS descriptors were created using SMARTSviewer (smartsview.zbh.uni-hamburg.de,\\nCopyright: ZBH, Center for Bioinformatics Hamburg) developed by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n 17\\n\\ndiction. For example, we see that adding acidic and basic groups as well as hydrogen bond\\n\\nacceptors, increases solubility. Substructure importance from ECFP97 and MACCS138 de-\\n\\nscriptors indicate that adding heteroatoms increases solubility, while adding rings structures\\n\\nmakes the molecule less soluble. Although these are established hypotheses, it is interesting\\n\\nto see they can be derived purely from the data via DL and XAI.\\n\\n\\n\\n\\n\\nFigure 3: Generated chemical space for solubility prediction using the RNN model. The\\nchemical space is a 2D projection of the pairwise Tanimoto similarities of the local coun-\\nterfactuals. Each data point is colored by solubility. Top 4 counterfactuals are shown here.\\nRepublished from Ref.9 with permission from the Royal Society of Chemistry.\\n\\n\\n\\nGeneralizing XAI \u2013 interpreting scent-structure relationships\\n\\n\\nIn this example, we show how non-local structure-property relationships can be learned with\\n\\nXAI across multiple molecules. Molecular scent prediction is a multi-label classification task\\n\\nbecause a molecule can be described by more than one scent. For example, the molecule\\n\\njasmone can be described as having \u2018jasmine,\u2019 \u2018woody,\u2019 \u2018floral,\u2019 and \u2019herbal\u2019 scents.139 The\\n\\nscent-structure relationship is not very well understood,140 although some relationships are\\n\\nknown. For example, molecules with an ester functional group are often associated with\\n\\n\\n \ 18\\n\\nFigure 4: Descriptor explanations for solubility prediction model. The green and red bars\\nshow descriptors that influence predictions positively and negatively, respectively. Dotted\\nyellow lines show significance threshold (\u03B1 = 0.05) for the t-statistic. The MACCS and\\nECFP descriptors indicate which substructures influence model predictions. MACCS sub-\\nstructures may either be present in the molecule as is or may represent a modification. ECFP\\nfingerprints are substructures in the molecule that affect the prediction. MACCS descriptor\\nare used to obtain text explanations as shown. Republished from Ref.10 with permission from\\nauthors. SMARTS annotations for MACCS descriptors were created using SMARTSviewer\\n(smartsview.zbh.uni-hamburg.de, Copyright: ZBH, Center for Bioinformatics Hamburg) de-\\nveloped by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n 19\\n\\nLabel relevance, describe the media, and if uncertain on a description please state why:\"}]}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "48015" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41WTU8jORC98ytKfSJRiEgABZD2wAAj7c5shADtHjajyHFXd3tw2z22m5AZ8d+3 yp1Od9gc9gAhrg+/eq+qzK8jgESlyTUkshBBlpU+uft0JeSPn/dfnz67v+dnN5dPf9xerC+/OG3y NBlxhF19RxnaqLG0FIdBWdOYpUMRkLNOZrPJxcXp5fk0GkqbouawvAon5/Zkejo9P5lM6HMbWFgl 0ZPHP/QV4Ff8zRBNim90fDpqT0r0XuRIZ60THTqr+SQR3isfhAnJqDNKawKaiHo4fLz/ev/Xzfz5 ejiEhVmY5wJBlZQQlAcBXipyVZmS8Kp8LbT6Kbg+8IVdK5OTy/QOKmeZBz63GcgCSyWFBl8JiZBZ B97qeqW0ChvyxVRF3xHkaNAxQ1D7mMzA43wOx48oa+foYphj7SjTHMPaupcBROLG8AU3gBpLcvF8 ZehQG6nrFK+5lskYhsMnKUJABw/aBipyYYiCE+AyS6EMVHQMqfKVFhsuOEXjkcpugih1KoKAyiq6 aQQoZAEOqQbPtMT6S+Ja1hrHvdSNPwiHIK22VDIQNwJyJ1ImlC/QOAInTM5ZMmdLqGpH3QPBwga1 tusRxRILvrImZScy9Hh8FbpGD8fa5vCw/TYYx9vjlbASji9lajRmgUV6VSmFNCfEffpRmybLmLmb Mnd/NqVRoltbU9O4TMhATeA7Ij/b2rUUkJ8PriYXQh2LL1ReaPphiYUnYP0sgG+C58VzocZQA5EX F1mhjB23ZVE1RbSaRMXWKhSw0kK+gFYmYo5w7lmgD9dwIxtjQ2w0DryOzux+cwg6tYMgocpxz82r UpETk+RJFYRjHOfjESySp87yG5yOL6eLZNCP/MFDQ3erV+xTTfvC5L00vxteFtR6x5PBIgHSZZHc YXs2HTRZF+aMdfnEh1txsNPihmLYRPFtU3LxJHocYdaANNdiRaOTtrQynSPw6F5jO/MMOMyQpk9u +zh2SYh9tdcEEc8547ltJ/4pTvxjOyBxVewP3f62IHQrAhynoxLKrRUV9iyMKi03Qkutwjjl2vId H1CMYF0oEr0kpli8VkbeP500K1ogiGbHSwP+gsE/0NhZj/sw95edUKXnzsQ3WhPE28F1RqVsdmuR PvpIaG1xR4vG7/hDCQPSIqPJY8a71CMWI0VHjZM2C4I14P3YLMFmWxODmcq58N18K+N55PgPwsxB DnVzdaGqj1TsdT73Rx/Bbn7j/uEly7ip5iC29ZMsJc0czSDtFOEMO0Z8cW53TwGBq9Dt8TXuv0nU crUX/CSaWuueYTu5DJ5fw29by/vu/aP9R8lX/kNokimjfLHkAaLnmN46H2yVROs7/f4W39l67+lM KFFZhWWwLxivm5xPZ03CpHvaO/PZxWRrDYRR9+Jms8vRgZTLlIhT2vce60QSe5h2sd3LLupU2Z7h qFf4f/Ecyt0UT5L8n/SdQUqsaFcuO60OuTn8Hlf2Ybcd0RFwEveLxCWNsmMxUsxErZt/SxK/8QHL JSmWc3Op5n+TrFrOrqbySpxezWbJ0fvRv+qdszikCQAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a389c5ab3df0a-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:29 GMT Server: - cloudflare Set-Cookie: - __cf_bm=jSpupd7DFgLuLGoATxbh5LP8uN7pLJaw8CnPMT6jz3I-1771550842.2919118-1.0.1.1-CZxggPBbN2iQTm_uXWw59kVRD1pSN4A9cwpO4M8eEIUhpCBKncIFH3ijYyeo.AyL3zUABN90DnoZfdpT0_lWuD7oMMUmLliCEvoq2FeZQmDh4TFYTVv0DQ4pKZTJmsEs; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:57:29 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "7018" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: - "250000" x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-input-images: - "249999" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29997825" x-ratelimit-reset-input-images: - 0s x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 4ms x-request-id: - req_06a43c0ee7f6401b90bbbef5d364d0e4 status: code: 200 message: OK - request: body: "{\"input\":[\" A Perspective on Explanations of Molecular\\n\\n Prediction Models\\n\\n\\nGeemi P. Wellawatte,\u2020 Heta A. Gandhi,\u2021 Aditi Seshadri,\u2021 and Andrew\\n\\n D. White\u2217,\u2021\\n\\n\\n \u2020Department of Chemistry, University of Rochester, Rochester, NY, 14627\\n\\n\u2021Department of Chemical Engineering, University of Rochester, Rochester, NY, 14627\\n\\n \ \xB6Vial Health Technology, Inc., San Francisco, CA 94111\\n\\n\\n \ E-mail: andrew.white@rochester.edu\\n\\n\\n\\n Abstract\\n\\n\\n \ Chemists can be skeptical in using deep learning (DL) in decision making, due to\\n\\n the lack of interpretability in \u201Cblack-box\u201D models. \ Explainable artificial intelligence\\n\\n (XAI) is a branch of AI which addresses this drawback by providing tools to interpret\\n\\n DL models and their predictions. We review the principles of XAI in the domain of\\n\\n chemistry and emerging methods for creating and evaluating explanations. Then we\\n\\n \ focus on methods developed by our group and their applications in predicting solubil-\\n\\n ity, blood-brain barrier permeability, and the scent of molecules. We show that XAI\\n\\n methods like chemical counterfactuals and descriptor explanations can explain DL pre-\\n\\n dictions while giving insight into structure-property relationships. Finally, we discuss\\n\\n how a two-step process of developing a black-box model and explaining predictions can\\n\\n \ uncover structure-property relationships.\\n\\n\\n\\n\\n\\n 1Introduction\\n\\n\\nDeep learning (DL) is advancing the boundaries of computational chemistry because it can\\n\\naccurately model non-linear structure-function relationships.1\u20133 Applications of DL can be\\n\\nfound in a broad spectrum spanning from quantum computing4,5 to drug discovery6\u201310 to\\n\\nmaterials design.11,12 According to Kre 13, DL models can contribute to scientific discovery\\n\\nin three \u201Cdimensions\u201D - 1) as a \u2018computational microscope\u2019 to gain insight which are not\\n\\nattainable through experiments 2) as a \u2018resource of inspiration\u2019 to motivate scientific thinking\\n\\n3) as an \u2018agent of understanding\u2019 to uncover new observations. However, the rationale of\\n\\na DL prediction is not always apparent due to the model architecture consisting a large\\n\\nparameter count.14,15 DL models are thus often termed\u201Cblack box\u201D models. We can only\\n\\nreason about the input and output of an DL model, not the underlying cause that leads to\\n\\na specific prediction.\\n\\n It is routine in chemistry now for DL to exceed human level performance \u2014 humans are\\n\\nnot good at predicting solubility from structure for example161 \u2014 and so understanding how\\n\\na model makes predictions can guide hypotheses. This is in contrast to a topic like finding\\n\\na stop sign in an image, where there is little new to be learned about visual perception\\n\\nby explaining a DL model. However, the black box nature of DL has its own limitations.\\n\\nUsers are more likely to trust and use predictions from a model if they can understand why\\n\\nthe prediction was made.17 Explaining predictions can help developers of DL models ensure\\n\\nthe model is not learning spurious correlations.18,19 Two infamous examples are, 1)neural\\n\\nnetworks that learned to recognize horses by looking for a photographer\u2019s watermark20 and,\\n\\n2) neural networks that predicted a COVID-19 diagnoses by looking at the font choice\\n\\non medical images.21 As a result, there is an emerging regulatory framework for when any\\n\\ncomputer algorithms impact humans.22\u201324 Although we know of no examples yet in chemistry,\\n\\none can assume the use of AI in predicting toxicity, carcinogenicity, and environmental\\n\\npersistence will require rationale for the predictions due to regulatory consequences.\\n\\n \ 1there does happen to be one human solubility savant, participant 11, who matched machine performance\\n\\n\\n 2 \ EXplainable Artificial Intelligence (XAI) is a field of growing importance that aims to\\n\\nprovide model interpretations of DL predictions Three terms highly associated with XAI are,\\n\\ninterpretability, justifications and explainability. Miller 25 defines that interpretability of a\\n\\nmodel refers to the degree of human understandability intrinsic within the model. Murdoch\\n\\net al. 26 clarify that interpretability can be perceived as \u201Cknowledge\u201D which provide insight\\n\\nto a particular problem. Justifications are quantitative metrics tell the users \u201Cwhy the\\n\\nmodel should be trusted,\u201D like test error.27 Justifications are evidence which defend why a\\n\\nprediction is trustworthy.25 An \u201Cexplanation\u201D is a description on why a certain prediction was\\n\\nmade.9,28 Interpretability and explanation are often used interchangeably. Arrieta et al. 14\\n\\ndistinguish that interpretability is a passive characteristic of a model, whereas explainability\\n\\nis an active characteristic which is used to clarify the internal decision-making process.\\n\\nNamely, an explanation is extra information that gives the context and a cause for one or\\n\\nmore \",\" a passive characteristic of a model, whereas explainability\\n\\nis an active characteristic which is used to clarify the internal decision-making process.\\n\\nNamely, an explanation is extra information that gives the context and a cause for one or\\n\\nmore predictions.29 We adopt the same nomenclature in this perspective.\\n\\n Accuracy and interpretability are two attractive characteristics of DL models. However,\\n\\nDL models are often highly accurate and less interpretable.28,30 XAI provides a way to avoid\\n\\nthat trade-off in chemical property prediction. XAI can be viewed as a two-step process.\\n\\nFirst, we develop an accurate but uninterpretable DL model. Next, we add explanations to\\n\\npredictions. Ideally, if the DL model has correctly learned the input-output relations, then\\n\\nthe explanations should give insight into the underlying mechanism.\\n\\n In the remainder of this article, we review recent approaches for XAI of chemical property\\n\\nprediction while drawing specific examples from our recent XAI work.9,10,31 We show how\\n\\nin various systems these methods yield explanations that are consistent with known and\\n\\nmechanisms in structure-property relationships.\\n\\n\\n\\n\\n\\n 3Theory\\n\\n\\nIn this work, we aim to assemble a common taxonomy for the landscape of XAI while\\n\\nproviding our perspectives. We utilized the vocabulary proposed by Das and Rad 32 to classify\\n\\nXAI. According to their classification, interpretations can be categorized as global or local\\n\\ninterpretations on the basis of \u201Cwhat is being explained?\u201D. For example, counterfactuals are\\n\\nlocal interpretations, as these can explain only a given instance. The second classification is\\n\\nbased on the relation between the model and the interpretation \u2013 is interpretability post-hoc\\n\\n(extrinsic) or intrinsic to the model?.32,33 An intrinsic XAI method is part of the model\\n\\nand is self-explanatory32 These are also referred to as white-box models to contrast them\\n\\nwith non-interpretable black box models.28 An extrinsic method is one that can be applied\\n\\npost-training to any model.33 Post-hoc methods found in the literature focus on interpreting\\n\\nmodels through 1) training data34 and feature attribution,35 2) surrogate models10 and, 3)\\n\\ncounterfactual9 or contrastive explanations.36\\n\\n Often, what is a \u201Cgood\u201D explanation and what are the required components of an ex-\\n\\nplanation are debated.32,37,38 Palacio et al. 29 state that the lack of a standard framework\\n\\nhas caused the inability to evaluate the interpretability of a model. In physical sciences,\\n\\nwe may instead consider if the explanations somehow reflect and expand our understanding\\n\\nof physical phenomena. For example, Oviedo et al. 39 propose that a model explanation\\n\\ncan be evaluated by considering its agreement with physical observations, which they term\\n\\n\u201Ccorrectness.\u201D For example, if an explanation suggests that polarity affects solubility of a\\n\\nmolecule, and the experimental evidence strengthen the hypothesis, then the explanation\\n\\nis assumed \u201Ccorrect\u201D. In instances where such mechanistic knowledge is sparse, expert bi-\\n\\nases and subjectivity can be used to measure the correctness.40 Other similar metrics of\\n\\ncorrectness such as \u201Cexplanation satisfaction scale\u201D can be found in the literature.41,42 In a\\n\\nrecent study, Humer et al. 43 introduced CIME an interactive web-based tool that allows the\\n\\nusers to inspect model explanations. The aim of this study is to bridge the gap between\\n\\nanalysis of XAI methods. Based on the above discussion, we identify that an agreed upon\\n\\n\\n \ 4evaluation metric is necessary in XAI. We suggest the following attributes can be used to\\n\\nevaluate explanations. However, the relative importance of each attribute may depend on\\n\\nthe application - actionability may not be as important as faithfulness when evaluating the\\n\\ninterpretability of a static physics based model. Therefore, one can select relative importance\\n\\nof each attribute based on the application.\\n\\n\\n \u2022 Actionable. Is it clear how we could change the input features to modify the output?\\n\\n\\n \ \u2022 Complete. Does the explanation completely account for the prediction? Did features\\n\\n not included in the explanation really contribute zero effect to the prediction?44\\n\\n\\n \u2022 Correct. Does the explanation agree with hypothesized or known underlying physical\\n\\n mechanism?39\\n\\n\\n \ \u2022 Domain Applicable. Does the explanation use language and concepts of domain ex-\\n\\n perts?\\n\\n\\n \u2022 Fidelity/Faithful. Does the explanation agree with the black box model?\\n\\n\\n \u2022 Robust. Does the explanation change significantly with small changes to the model or\\n\\n instance being explained?\\n\\n\\n \u2022 Sparse/Succinct. Is the explanation succinct?\\n\\n\\n \ We present an example evaluation of the SHAP explanation method based on the above\\n\\nattributes.44 Shapley values were proposed as a local explanation method based on feature\\n\\nattribution, as they offer a complete explanation - each feature i\",\"nct?\\n\\n\\n We present an example evaluation of the SHAP explanation method based on the above\\n\\nattributes.44 Shapley values were proposed as a local explanation method based on feature\\n\\nattribution, as they offer a complete explanation - each feature is assigned a fraction of\\n\\nthe prediction value.44,45 Completeness is a clearly measurable and well-defined metric, but\\n\\nyields explanations with many components. Yet Shapley values are not actionable nor sparse.\\n\\nThey are non-sparse as every feature has a non-zero attribution and not-actionable because\\n\\nthey do not provide a set of features which changes the outcome.46 Ribeiro et al. 35 proposed\\n\\na surrogate model method that aims to provide sparse/succinct explanations that have high\\n\\n\\n 5fidelity to the original model. In Wellawatte et al. 9 we argue that counterfactuals are \u201Cbet-\\n\\nter\u201D explanations because they are actionable and sparse. We highlight that, evaluation of\\n\\nexplanations is a difficult task because explanations are fundamentally for and by humans.\\n\\nTherefore, these evaluations are subjective, as they depend on \u201Ccomplex human factors and\\n\\napplication scenarios.\u201D37\\n\\n\\nSelf-explaining models\\n\\nA self-explanatory model is one that is intrinsically interpretable to an expert.47 Two com-\\n\\nmon examples found in the literature are linear regression models and decision trees (DT).\\n\\nIntrinsic models can be found in other XAI applications acting as surrogate models (proxy\\n\\nmodels) due to their transparent nature.48,49 A linear model is described by the equation\\n\\n1 where, W\u2019s are the weight parameters and x\u2019s are the input features associated with the\\n\\nprediction \u02C6y. Therefore, we observe that the weights can be used to derive a complete expla-\\n\\nnation of the model - trained weights quantify the importance of each feature.47 DT models\\n\\nare another type of self-explaining models which have been used in classification and high-\\n\\nthroughput screening tasks. Gajewicz et al. 50 used DT models to classify nanomaterials\\n\\nthat identify structural features responsible for surface activity. In another study by Han\\n\\net al. 51, a DT model was developed to filter compounds by their bioactivity based on the\\n\\nchemical fingerprints.\\n\\n\\n\\n \u02C6y = \u03A3iWixi (1)\\n\\n\\n Regularization techniques such as EXPO52 and RRR53 are designed to enhance the black-\\n\\nbox model interpretability.54 Although one can argue that \u201Csimplicity\u201D of models are posi-\\n\\ntively correlated with interpretability, this is based on how the interpretability is evaluated.\\n\\nFor example, Lipton 55 argue that, from the notion of \u201Csimulatability\u201D (the degree to which a\\n\\nhuman can predict the outcome based on inputs), self-explanatory linear models, rule-based\\n\\n\\n\\n \ 6systems, and DT\u2019s can be claimed uninterpretable. A human can predict the outcome given\\n\\nthe inputs only if the input features are interpretable. Therefore, a linear model which takes\\n\\nin non-descriptive inputs may not be as transparent. On the other hand, a linear model\\n\\nis not innately accurate as they fail to capture non-linear relationships in data, limiting is\\n\\napplicability. Similarly, a DT is a rule-based model and lacks physics informed knowledge.\\n\\nTherefore, an existing drawback is the trade-offbetween the degree of understandability and\\n\\nthe accuracy of a model. For example, an intrinsic model (linear regression or decision trees)\\n\\ncan be described through the trainable parameters, but it may fail to \u201Ccorrectly\u201D capture\\n\\nnon-linear relations in the data.\\n\\n\\nAttribution methods\\n\\n\\nFeature attribution methods explain black box predictions by assigning each input feature\\n\\na numerical value, which indicates its importance or contribution to the prediction. Feature\\n\\nattributions provide local explanations, but can be averaged or combined to explain multi-\\n\\nple instances. Atom-based numerical assignments are commonly referred to as heatmaps.56\\n\\nSheridan 57 describes an atom-wise attribution method for interpreting QSAR models. Re-\\n\\ncently, Rasmussen et al. 58 showed that Crippen logP models serve as a benchmark for\\n\\nheatmap approaches. Other most widely used feature attribution approaches in the litera-\\n\\nture are gradient based methods,59,60 Shapley Additive exPlanations (SHAP),44 and layer-\\n\\nwise relevance prorogation.61\\n\\n Gradient based approaches are based on the hypothesis that gradients for neural net-\\n\\nworks are analogous to coefficients for regression models.62 Class activation maps (CAM),63\\n\\ngradCAM,64 smoothGrad,,65 and integrated gradients62 are examples of this method. The\\n\\nmain idea behind feature attributions with gradients can be represented with equation \ 2.\\n\\n \u2206\u02C6f(\u20D7x) \u2248\u2202\u02C6f(\u20D7x) \ (2)\\n \u2206xi \ \u2202xi\\n\\n\\n\\n 7 \",\"represented with equation 2.\\n\\n \u2206\u02C6f(\u20D7x) \u2248\u2202\u02C6f(\u20D7x) (2)\\n \u2206xi \ \u2202xi\\n\\n\\n\\n 7 \u2206\u02C6f(\u20D7x) \ where \u02C6f(x) is the black-box model and are used as our attributions. The left- \u2206xi\\n\\nhand side of equation 2 says that we attribute each input feature xi by how much one unit\\n\\nchange in it would affect the output of \u02C6f(x). If \u02C6f(x) is a linear surrogate model, then this\\n\\nmethod reconciles with LIME.35 In DL models, \u2207xf(x), suffers from the shattered gradients\\n\\nproblem.62 This means directly computing the quantity leads to numeric problems. The\\n\\ndifferent gradient based approaches are mostly distinguishable based on how the gradient is\\n\\napproximated.\\n\\n Gradient based explanations have been widely used to interpret chemistry predictions.60,66\u201370\\n\\nMcCloskey et al. 60 used graph convolutional networks (GCNs) to predict protein-ligand\\n\\nbinding and explained the binding logic for these predictions using integrated gradients.\\n\\nPope et al. 66 and Jim\xB4enez-Luna et al. 67 show application of gradCAM and integrated gradi-\\n\\nents to explain molecular property predictions from trained graph neural networks (GNNs).\\n\\nSanchez-Lengeling et al. 68 present comprehensive, open-source XAI benchmarks to explain\\n\\nGNNs and other graph based models. They compare the performance of class activation\\n\\nmaps (CAM),63 gradCAM,64 smoothGrad,,65 integrated gradients62 and attention mecha-\\n\\nnisms for explaining outcomes of classification as well as regression tasks. They concluded\\n\\nthat CAM and integrated gradients perform well for graph based models. Another attempt\\n\\nat creating XAI benchmarks for graph models was made by Rao et al. 70. They compared\\n\\nthese gradient based methods to find subgraph importance when predicting activity cliffs\\n\\nand concluded that gradCAM and integrated gradients provided the most interpretability\\n\\nfor GNNs. The GNNExplainer69 is an approach for generating explanations (local and\\n\\nglobal) for graph based models. This method focuses on identifying which sub-graphs con-\\n\\ntribute most to the prediction by maximizing mutual information between the prediction\\n\\nand distribution of all possible sub-graphs. Ying et al. 69 show that GNNExplainer can be\\n\\nused to obtain model-agnostic explanations. SubgraphX is a similar method that explains\\n\\nGNN predictions by identifying important subgraphs.71\\n\\n \ Another set of approaches like DeepLIFT72 and Layerwise Relevance backPropagation73\\n\\n\\n\\n \ 8(LRP) are based on backpropagation of the prediction scores through each layer of the neu-\\n\\nral network. The specific backpropagation logic across various activation functions differs\\n\\nin these approaches, which means each layer must have its own implementation. Baldas-\\n\\nsarre and Azizpour 74 showed application of LRP to explain aqueous solubility prediction for\\n\\nmolecules.\\n\\n SHAP is a model-agnostic feature attribution method that is inspired from the game\\n\\ntheory concept of Shapley values.44,46 SHAP has been popularly used in explaining molecular\\n\\nprediction models.75\u201378 It\u2019s an additive feature contribution approach, which assumes that\\n\\nan explanation model is a linear combination of binary variables z. If the Shapley value\\nfor the ith feature is \u03D5i, then the explanation is \u02C6f(\u20D7x) = Pi \u03D5i(\u20D7x)zi(\u20D7x). Shapley values for\\n\\nfeatures are computed using Equation 3.79,80\\n\\n\\n\\n M\\n 1\\n \ \u03D5i(\u20D7x) = X \u02C6f (\u20D7z+i) \u2212\u02C6f (\u20D7z\u2212i) (3)\\n M\\n\\n \ Here \u20D7z is a fabricated example created from the original \u20D7x and a random perturbation \u20D7x\u2032.\\n\\n\u20D7z+i has the feature i from \u20D7x and \u20D7z\u2212i has the ith feature from \u20D7x\u2032. Some care should be taken\\n\\nin constructing \u20D7z when working with molecular descriptors to ensure that an impossible \u20D7z is\\n\\nnot sampled (e.g., high count of acid groups but no hydrogen bond donors). M is the sample\\n\\nsize of perturbations around \u20D7x. Shapley value computation is expensive, hence M is chosen\\n\\naccordingly. Equation 3 is an approximation and gives contributions with an expectation\\nterm as \u03D50 + Pi=1 \u03D5i(\u20D7x) = \u02C6f(\u20D7x).\\n\\n Visualization based feature attribution has also been used for molecular data. In com-\\n\\nputer science, saliency maps are a way to measure spatial feature contribution.81 Simply put,\\n\\nsaliency maps draw a connection between the model\u2019s neural fingerprint components (trained\\n\\nweights) and input features. Weber et al. 82 used saliency maps to build an explainable GCN\\n\\narchitecture that gives subgraph importance for small molecule activity prediction. On the\\n\\nother hand, similarity maps compare model predictions for two or more molecules based on\\n\\ntheir chemical fingerprints.83 Similarity maps provide atomic weights or predicte\",\"that gives subgraph importance for small molecule activity prediction. On the\\n\\nother hand, similarity maps compare model predictions for two or more molecules based on\\n\\ntheir chemical fingerprints.83 Similarity maps provide atomic weights or predicted probabil-\\n\\n\\n 9ity difference between the molecules by removing one atom at a time. These weights can\\n\\nthen be used to color the molecular graph and give a visual presentation. ChemInformatics\\n\\nModel Explorer (CIME) is an interactive web based toolkit which allows visualization and\\n\\ncomparison of different explanation methods for molecular property prediction models.84\\n\\n\\nSurrogate models\\n\\n\\nOne approach to explain black box predictions is to fit a self-explaining or interpretable\\n\\nmodel to the black box model, in the vicinity of one or a few specific examples. These are\\n\\nknown as surrogate models. Generally, one model per explanation is trained. However, if we\\n\\ncould find one surrogate model that explained the whole DL model, then we would simply\\n\\nhave a globally accurate interpretable model. This means that the black-box model is no\\n\\nlonger needed.79 In the work by White 79, a weighted least squares linear model is used as\\n\\nthe surrogate model. This model provides natural language based descriptor explanations by\\n\\nreplacing input features with chemically interpretable descriptors. This approach is similar\\n\\nto the concept-based explanations approach used by McGrath et al. 85, where human under-\\n\\nstandable concepts were used in place of input features in acquisition of chess knowledge in\\n\\nAlphaZero. Any of the self-explaining models detailed in the Self-explaining models section\\n\\ncan be used as a surrogate model.\\n\\n The most commonly used surrogate model based method is Locally Interpretable Model\\n\\nExplanations (LIME).35 LIME creates perturbations around the example of interest and fits\\n\\nan interpretable model to these local perturbations. Ribeiro et al. 35 mathematically define\\n\\nan explanation \u03BE for an example \u20D7x using Equation 4.\\n\\n\\n\\n \u03BE(\u20D7x) = arg min L(f, g, \u03C0x) + \u2126(g) (4)\\n g\u2208G\\n\\n \ Here f is the black box model and g \u2208G is the interpretable explanation model. G is\\n\\na class of potential interpretable models (e.g.: linear models). \u03C0x is a similarity measure\\n\\n\\n\\n 10between original input \u20D7x and it\u2019s perturbed input \u20D7x\u2032. In context of molecular data, this can\\n\\nbe a chemical similarity metric like Tanimoto86 similarity between fingerprints. The goal for\\n\\nLIME is to minimize the loss, L, such that f is closely approximated by g. \u2126is a parameter\\n\\nthat controls the complexity (sparsity) of g. Ribeiro et al. 35 termed the agreement (how low\\n\\nthe loss is) between f and g as the \u201Cfidelity\u201D.\\n\\n \ GraphLIME87 and LIMEtree88 are modifications to LIME as applicable to graph neural\\n\\nnetworks and regression trees, respectively. LIME has been used in chemistry previously,\\n\\nsuch as Whitmore et al. 89 who used LIME to explain octane number predictions of molecules\\n\\nfrom a random forest classifier. Mehdi and Tiwary 90 used LIME to explain thermodynamic\\n\\ncontributions of features. Gandhi and White 10 use an approach similar to GraphLIME,\\n\\nbut use chemistry specific fragmentation and descriptors to explain molecular property pre-\\n\\ndiction. Some examples are highlighted in the Applications section. \ In recent work by\\n\\nMehdi and Tiwary 90, a thermodynamic-based surrogate model approach was used to inter-\\n\\npret black-box models. The authors define an \u201Cinterpretation free energy\u201D which can be\\n\\nachieved by minimizing the surrogate model\u2019s uncertainty and maximizing simplicity.\\n\\n\\nCounterfactual explanations\\n\\n\\nCounterfactual explanations can be found in many fields such as statistics, mathematics and\\n\\nphilosophy.91\u201394 According to Woodward and Hitchcock 92, a counterfactual is an example\\n\\nwith minimum deviation from the initial instance but with a contrasting outcome. They\\n\\ncan be used to answer the question, \u201Cwhich smallest change could alter the outcome of an\\n\\ninstance of interest?\u201D While the difference between the two instances is based on the exis-\\n\\ntence of similar worlds in philosophy,95 a distance metric based on molecular similarity is\\n\\nemployed in XAI for chemistry. For example, in the work by Wellawatte et al. 9 distance\\n\\nbetween two molecules is defined as the Tanimoto distance96 between ECFP4 fingerprints.97\\n\\nAdditionally, Mohapatra et al. 98 introduced a chemistry-informed graph representation for\\n\\ncomputing macromolecular similarity. Contrastive explanations are peripheral to counterfac-\\n\\n\\n \ 11tual explanations. Unlike the counterfactual approach, contrastive approach employ a dual\\n\\noptimization method, which works by generating a similar and a dissimilar (counterfactuals)\\n\\nexample. Contrastive explanations can interpret the model by identifying contribution of\\n\\npresence \",\"nterfactual approach, contrastive approach employ a dual\\n\\noptimization method, which works by generating a similar and a dissimilar (counterfactuals)\\n\\nexample. Contrastive explanations can interpret the model by identifying contribution of\\n\\npresence and absence of subsets of features towards a certain prediction.36,99\\n\\n \ A counterfactual x\u2032 of an instance x is one with a dissimilar prediction \u02C6f(x) in classi-\\n\\nfication tasks. As shown in equation 5, counterfactual generation can be thought of as a\\n\\nconstrained optimization problem which minimizes the vector distance d(x, x\u2032) between the\\n\\nfeatures.9,100\\n\\n\\n \ minimize d(x, x\u2032)\\n (5)\\n \ such that \u02C6f(x) \u0338= \u02C6f(x\u2032)\\n\\n \ For regression tasks, equation 6 adapted from equation 5 can be used. Here, a counter-\\n\\nfactual is one with a defined increase or decrease in the prediction.\\n\\n\\n \ minimize d(x, x\u2032)\\n (6)\\n \ such that \u02C6f(x) \u2212\u02C6f(x\u2032) \u2265\u2206\\n\\n \ Counterfactuals explanations have become a useful tool for XAI in chemistry, as they\\n\\nprovide intuitive understanding of predictions and are able to uncover spurious relationships\\n\\nin training data.101 Counterfactuals create local (instance-level), actionable explanations.\\n\\nActionability of an explanation suggest which features can be altered to change the outcome.\\n\\nFor example, changing a hydrophobic functional group in a molecule to a hydrophilic group\\n\\nto increase solubility.\\n\\n Counterfactual generation is a demanding task as it requires gradient optimization over\\n\\ndiscrete features that represents a molecule. Recent work by Fu et al. 102 and Shen et al. 103\\n\\npresent two techniques which allow continuous gradient-based optimization. Although, these\\n\\nmethodologies are shown to circumvent the issue of discrete molecular optimization, counter-\\n\\nfactual explanation based model interpretation still remains unexplored compared to other\\n\\n\\n\\n 12post-hoc methods.\\n\\n \ CF-GNNExplainer104 is a counterfactual explanation generating method based on GN-\\n\\nNExplainer69 for graph data. This method generate counterfactuals by perturbing the input\\n\\ndata (removing edges in the graph), and keeping account of perturbations which lead to\\n\\nchanges in the output. However, this method is only applicable to graph-based models\\n\\nand can generate infeasible molecular structures. Another related work by Numeroso and\\n\\nBacciu 105 focus on generating counterfactual explanations for deep graph networks. Their\\n\\nmethod MEG (Molecular counterfactual Explanation Generator) uses a reinforcement learn-\\n\\ning based generator to create molecular counterfactuals (molecular graphs). While this\\n\\nmethod is able to generate counterfactuals through a multi-objective reinforcement learner,\\n\\nthis is not a universal approach and requires training the generator for each task.\\n\\n Work by Wellawatte et al. 9 present a model agnostic counterfactual generator MMACE\\n\\n(Molecular Model Agnostic Counterfactual Explanations) which does not require training\\n\\nor computing gradients. This method firstly populates a local chemical space through ran-\\n\\ndom string mutations of SELFIES106 molecular representations using the STONED algo-\\n\\nrithm.107 Next, the labels (predictions) of the molecules in the local space are generated\\n\\nusing the model that needs to be explained. Finally, the counterfactuals are identified and\\n\\nsorted by their similarities \u2013 Tanimoto distance96 between ECFP4 fingerprints.97 Unlike the\\n\\nCF-GNNExplainer104 and MEG105 methods, the MMACE algorithm ensures that generated\\n\\nmolecules are valid, owing to the surjective property of SELFIES. Additionally, the MMACE\\n\\nmethod can be applied to both regression and classification models. However, like most XAI\\n\\nmethods for molecular prediction, MMACE does not account for the chemical stability of\\n\\npredicted counterfactuals. To circumvent this drawback, Wellawatte et al. 9 propose an-\\n\\nother approach, which identift counterfactuals through a similarity search on the PubChem\\n\\ndatabase.108\\n\\n\\n\\n\\n\\n 13Similarity to adjacent fields\\n\\n\\nTangential examples to counterfactual explanations are adversarial training and matched\\n\\nmolecular pairs. Adversarial perturbations are used during training to deceive the model\\n\\nto expose the vulnerabilities of a model109,110 whereas counterfactuals are applied post-hoc.\\n\\nTherefore, the main difference between adversarial and counterfactual examples are in the\\n\\napplication, although both are derived from the same optimization problem.100 Grabocka\\n\\net al. 111 have developed a method named Adversarial Training on EXplanations (ATEX)\\n\\nwhich improves model robustness via exposure to adversarial examples. While there are\\n\\nconceptual disparities, we note that\",\"same optimization problem.100 Grabocka\\n\\net al. 111 have developed a method named Adversarial Training on EXplanations (ATEX)\\n\\nwhich improves model robustness via exposure to adversarial examples. While there are\\n\\nconceptual disparities, we note that the counterfactual and adversarial explanations are\\n\\nequivalent mathematical objects.\\n\\n Matched molecular pairs (MMPs) are pairs of molecules that differ structurally at only\\n\\none site by a known transformation.112,113 MMPs are widely used in drug discovery and\\n\\nmedicinal chemistry as these facilitate fast and easy understanding of structure-activity re-\\n\\nlationships.114\u2013116 Counterfactuals and MMP examples intersect if the structural change is\\n\\nassociated with a significant change in the properties. In the case the associated changes in\\n\\nthe properties are non-significant, the two molecules are known as bioisosteres.117,118 The con-\\n\\nnection between MMPs and adversarial training examples has been explored by van Tilborg\\n\\net al. 119. MMPs which belong to the counterfactual category are commonly used in outlier\\n\\nand activity cliff detection.113 This approach is analogous to counterfactual explanations,\\n\\nas the common objective is to uncover learned knowledge pertaining to structure-property\\n\\nrelationships.70\\n\\n\\nApplications\\n\\n\\nModel interpretation is certainly not new and a common step in ML in chemistry, but XAI for\\n\\nDL models is becoming more important60,66\u201369,73,88,104,105 Here we illustrate some practical\\n\\nexamples drawn from our published work on how model-agnostic XAI can be utilized to\\n\\n\\n\\n 14interpret black-box models and connect the explanations to structure-property relationships.\\n\\nThe methods are \u201CMolecular Model Agnostic Counterfactual Explanations\u201D (MMACE)9\\n\\nand \u201CExplaining molecular properties with natural language\u201D.10 Then we demonstrate how\\n\\ncounterfactuals and descriptor explanations can propose structure-property relationships in\\n\\nthe domain of molecular scent.31\\n\\n\\nBlood-brain barrier permeation prediction\\n\\n\\nThe passive diffusion of drugs from the blood stream to the brain is a critical aspect in drug\\n\\ndevelopment and discovery.120 Small molecule blood-brain barrier (BBB) permeation is a\\n\\nclassification problem routinely assessed with DL models.121,122 To explain why DL models\\n\\nwork, we trained two models a random forest (RF) model123 and a Gated Recurrent Unit\\n\\nRecurrent Neural Network (GRU-RNN). Then we explained the RF model with generated\\n\\ncounterfactuals explanations using the MMACE9 and the GRU-RNN with descriptor expla-\\n\\nnations.10 Both the models were trained on the dataset developed by Martins et al. 124. The\\n\\nRF model was implemented in Scikit-learn125 using Mordred molecular descriptors126 as the\\n\\ninput features. The GRU-RNN model was implemented in Keras.127 See Wellawatte et al. 9\\n\\nand Gandhi and White 10 for more details.\\n\\n \ According to the counterfactuals of the instance molecule in figure 1, we observe that the\\n\\nmodifications to the carboxylic acid group enable the negative example molecule to permeate\\n\\nthe BBB. Experimental findings by Fischer et al. 120 show that the BBB permeation of\\n\\nmolecules are governed by hydrophobic interactions and surface area. The carboxylic group is\\n\\na hydrophilic functional group which hinders hydrophobic interactions and addition of atoms\\n\\nenhances the surface area. This proves the advantage of using counterfactual explanations,\\n\\nas they suggest actionable modification to the molecule to make it cross the BBB.\\n\\n In Figure 2 we show descriptor explanations generated for Alprozolam, a molecule that\\n\\npermeates the BBB, using the method described by Gandhi and White 10. We see that\\n\\npredicted permeability is positively correlated with the aromaticity of the molecule, while\\n\\n\\n 15negatively correlated with the number of hydrogen bonds donors and acceptors. A similar\\n\\nstructure-property relationship for BBB permeability is proposed in more mechanistic stud-\\n\\nies.128\u2013130 The substructure attributions indicates a reduction in hydrogen bond donors and\\n\\nacceptors. These descriptor explanations are quantitative and interpretable by chemists.\\n\\nFinally, we can use a natural language model to summarize the findings into a written\\n\\nexplanation, as shown in the printed text in Figure 2.\\n\\n\\n\\n\\n\\nFigure 1: Counterfactuals of a molecule which cannot permeate the blood-brain barrier.\\nSimilarity is the Tanimoto similarity of ECFP4 fingerprints.131 Red indicates deletions and\\ngreen indicates substitutions and addition of atoms. Republished from Ref.9 with permission\\nfrom the Royal Society of Chemistry.\\n\\n\\n\\nSolubility prediction\\n\\n\\nSmall molecule solubility prediction is a classic cheminformatics regression challenge and is\\n\\nimportant for chemical process design, drug design and crystallization.133\u2013136 In our previous\\n\\nworks,9,10 we implemented and trained an RNN model in Keras to predict solubilities (log\\n\\nmolarity) of small molecules.127 The AqS\\n\\nMedia 0 from page 16's enriched description:\\n\\nThe image illustrates a series of molecular structures and their corresponding counterfactual explanations for a classification task, likely related to blood-brain barrier (BBB) permeation prediction. The key elements in the image are as follows:\\n\\n1. **Base Molecule (Leftmost Structure):**\\n - The base molecule is shown with a prediction score \\\\( f(x) = 0.000 \\\\), indicating it does not permeate the BBB.\\n \ - This molecule serves as the starting point for generating counterfactuals.\\n\\n2. **Counterfactual Molecules (Three Structures to the Right):**\\n - Each counterfactual molecule is derived from the base molecule with specific modifications.\\n - **Counterfactual 1:** \\n - Similarity = 0.80 (Tanimoto similarity based on ECFP4 fingerprints).\\n - \\\\( f(x) = 1.000 \\\\), indicating successful BBB permeation.\\n - A red marker highlights a deletion in the molecule.\\n \ - **Counterfactual 2:** \\n - Similarity = 0.77.\\n - \\\\( f(x) = 1.000 \\\\).\\n - Green markers indicate substitutions or additions to the molecule.\\n - **Counterfactual 3:** \\n - Similarity = 0.71.\\n - \\\\( f(x) = 1.000 \\\\).\\n - Green markers again indicate substitutions or additions.\\n\\n3. **Color Coding:**\\n - Red highlights deletions in the molecular structure.\\n - Green highlights substitutions or additions to the molecular structure.\\n\\n4. **Similarity Metric:**\\n - The Tanimoto similarity score quantifies the structural similarity between the base molecule and each counterfactual.\\n\\n5. **Scientific Insight:**\\n - The modifications (deletions, substitutions, or additions) to the base molecule are designed to alter its properties, enabling it to cross the BBB.\\n - This demonstrates the utility of counterfactual explanations in identifying actionable molecular changes to achieve a desired property.\\n\\nThis image is part of a study on counterfactual explanations in molecular property prediction, specifically for BBB permeation. It highlights how structural modifications can influence model predictions and provides insights into structure-property relationships.\",\"ssion challenge and is\\n\\nimportant for chemical process design, drug design and crystallization.133\u2013136 In our previous\\n\\nworks,9,10 we implemented and trained an RNN model in Keras to predict solubilities (log\\n\\nmolarity) of small molecules.127 The AqSolDB curated database137 was used to train the\\n\\nRNN model.\\n\\n In this task, counterfactuals are based on equation 6. Figure 3 illustrates the generated\\n\\nlocal chemical space and the top four counterfactuals. Based on the counterfactuals, we ob-\\n\\nserve that the modifications to the ester group and other heteroatoms play an important role\\n\\nin solubility. These findings align with known experimental and basic chemical intuition.134\\n\\nFigure 4 shows a quantitative measurement of how substructures are contributing to the pre-\\n\\n\\n\\n 16Figure 2: Descriptor explanations along with natural language explanation obtained for BBB\\npermeability of Alprozolam molecule. The green and red bars show descriptors that influ-\\nence predictions positively and negatively, respectively. Dotted yellow lines show significance\\nthreshold (\u03B1 = 0.05) for the t-statistic. Molecular descriptors show molecule-level proper-\\nties that are important for the prediction. ECFP and MACCS descriptors indicate which\\nsubstructures influence model predictions. MACCS explanations lead to text explanations\\nas shown. Republished from Ref.10 with permission from authors. SMARTS annotations for\\nMACCS descriptors were created using SMARTSviewer (smartsview.zbh.uni-hamburg.de,\\nCopyright: ZBH, Center for Bioinformatics Hamburg) developed by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n \ 17diction. For example, we see that adding acidic and basic groups as well as hydrogen bond\\n\\nacceptors, increases solubility. Substructure importance from ECFP97 and MACCS138 de-\\n\\nscriptors indicate that adding heteroatoms increases solubility, while adding rings structures\\n\\nmakes the molecule less soluble. Although these are established hypotheses, it is interesting\\n\\nto see they can be derived purely from the data via DL and XAI.\\n\\n\\n\\n\\n\\nFigure 3: Generated chemical space for solubility prediction using the RNN model. The\\nchemical space is a 2D projection of the pairwise Tanimoto similarities of the local coun-\\nterfactuals. Each data point is colored by solubility. Top 4 counterfactuals are shown here.\\nRepublished from Ref.9 with permission from the Royal Society of Chemistry.\\n\\n\\n\\nGeneralizing XAI \u2013 interpreting scent-structure relationships\\n\\n\\nIn this example, we show how non-local structure-property relationships can be learned with\\n\\nXAI across multiple molecules. Molecular scent prediction is a multi-label classification task\\n\\nbecause a molecule can be described by more than one scent. For example, the molecule\\n\\njasmone can be described as having \u2018jasmine,\u2019 \u2018woody,\u2019 \u2018floral,\u2019 and \u2019herbal\u2019 scents.139 The\\n\\nscent-structure relationship is not very well understood,140 although some relationships are\\n\\nknown. \ For example, molecules with an ester functional group are often associated with\\n\\n\\n 18Figure 4: Descriptor explanations for solubility prediction model. The green and red bars\\nshow descriptors that influence predictions positively and negatively, respectively. Dotted\\nyellow lines show significance threshold (\u03B1 = 0.05) for the t-statistic. The MACCS and\\nECFP descriptors indicate which substructures influence model predictions. MACCS sub-\\nstructures may either be present in the molecule as is or may represent a modification. ECFP\\nfingerprints are substructures in the molecule that affect the prediction. MACCS descriptor\\nare used to obtain text explanations as shown. Republished from Ref.10 with permission from\\nauthors. SMARTS annotations for MACCS descriptors were created using SMARTSviewer\\n(smartsview.zbh.uni-hamburg.de, Copyright: ZBH, Center for Bioinformatics Hamburg) de-\\nveloped by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n 19the \u2018fruity\u2019 scent. There are some exceptions though, like tert-amyl acetate which has a\\n\\n\u2018camphoraceous\u2019 rather than \u2018fruity\u2019 scent.140,141\\n\\n In Seshadri et al. 31, we trained a GNN model to predict the scent of molecules and utilized\\n\\ncounterfactuals9 and descriptor explanations10 to quantify scent-structure relationships. The\\n\\nMMACE method was modified to account for the multi-label aspect of scent prediction. This\\n\\nmodification defines molecules that differed from the instance molecule by only the selected\\n\\nscent as counterfactuals. For instance, counterfactuals of the jasmone molecule would be false\\n\\nfor the \u2018jasmine\u2019 scent but would still be positive for \u2018woody,\u2019 \u2018floral\u2019 and \u2018herbal\u2019 scents.\\n\\n\\n\\n\\n\\nFigure 5: Counterfactual for the 2,4 decadienal molecule. \ The counterfactual indicates\\nstructural changes to ethyl benzoate that would result in the model predicting the molecule\\nto not contain the \u2018fruity\u2019 scent. The Tanimoto96 similarity between the counterfactual and\\n2,4 decadienal is also\\n\\nMedia 0 from page 16's enriched description:\\n\\nThe image illustrates a series of molecular structures and their corresponding counterfactual explanations for a classification task, likely related to blood-brain barrier (BBB) permeation prediction. The key elements in the image are as follows:\\n\\n1. **Base Molecule (Leftmost Structure):**\\n - The base molecule is shown with a prediction score \\\\( f(x) = 0.000 \\\\), indicating it does not permeate the BBB.\\n \ - This molecule serves as the starting point for generating counterfactuals.\\n\\n2. **Counterfactual Molecules (Three Structures to the Right):**\\n - Each counterfactual molecule is derived from the base molecule with specific modifications.\\n - **Counterfactual 1:** \\n - Similarity = 0.80 (Tanimoto similarity based on ECFP4 fingerprints).\\n - \\\\( f(x) = 1.000 \\\\), indicating successful BBB permeation.\\n - A red marker highlights a deletion in the molecule.\\n \ - **Counterfactual 2:** \\n - Similarity = 0.77.\\n - \\\\( f(x) = 1.000 \\\\).\\n - Green markers indicate substitutions or additions to the molecule.\\n - **Counterfactual 3:** \\n - Similarity = 0.71.\\n - \\\\( f(x) = 1.000 \\\\).\\n - Green markers again indicate substitutions or additions.\\n\\n3. **Color Coding:**\\n - Red highlights deletions in the molecular structure.\\n - Green highlights substitutions or additions to the molecular structure.\\n\\n4. **Similarity Metric:**\\n - The Tanimoto similarity score quantifies the structural similarity between the base molecule and each counterfactual.\\n\\n5. **Scientific Insight:**\\n - The modifications (deletions, substitutions, or additions) to the base molecule are designed to alter its properties, enabling it to cross the BBB.\\n - This demonstrates the utility of counterfactual explanations in identifying actionable molecular changes to achieve a desired property.\\n\\nThis image is part of a study on counterfactual explanations in molecular property prediction, specifically for BBB permeation. It highlights how structural modifications can influence model predictions and provides insights into structure-property relationships.\\n\\nMedia 0 from page 18's enriched description:\\n\\nThe image is a scientific visualization showing a 2D projection of chemical space for solubility prediction, generated using an RNN (Recurrent Neural Network) model. Key elements of the image include:\\n\\n1. **Scatter Plot:**\\n - The main plot displays a dense scatter of data points, each representing a molecule.\\n - The points are colored on a gradient scale, ranging from purple to yellow, corresponding to solubility values (log P values). The color bar on the left provides the legend for solubility values.\\n\\n2. **Molecular Counterfactuals:**\\n - Four molecular structures are highlighted as counterfactual examples, connected to specific points in the scatter plot with black lines.\\n - Each counterfactual is annotated with:\\n - A molecular structure diagram.\\n - A similarity score (e.g., \\\"Similarity = 0.82\\\").\\n \ - A qualitative solubility change (e.g., \\\"Increase (1)\\\" or \\\"Decrease (2)\\\").\\n\\n3. **Base Molecule:**\\n - A \\\"Base\\\" molecule is identified and labeled in the plot, serving as a reference point for the counterfactuals.\\n\\n4. **Chemical Space Representation:**\\n - The 2D projection is based on pairwise Tanimoto similarities of local counterfactuals, which measure structural similarity between molecules.\\n\\n5. **Purpose:**\\n - The visualization aims to explain solubility predictions by showing how structural modifications (counterfactuals) influence solubility, as derived from the RNN model.\\n\\nThis figure provides insights into the relationship between molecular structure and solubility, highlighting the interpretability of machine learning models in chemical property prediction.\",\"nal molecule. The counterfactual indicates\\nstructural changes to ethyl benzoate that would result in the model predicting the molecule\\nto not contain the \u2018fruity\u2019 scent. The Tanimoto96 similarity between the counterfactual and\\n2,4 decadienal is also provided. Republished with permission from authors.31\\n\\n\\n \ The molecule 2,4-decadienal, which is known to have a \u2018fatty\u2019 scent, is analyzed in Fig-\\n\\nure 5.142,143 The resulting counterfactual, which has a shorter carbon chain and no carbonyl\\n\\ngroups, highlights the influence of these structural features on the \u2018fatty\u2019 scent of 2,4 deca-\\n\\ndienal. To generalize to other molecules, Seshadri et al. 31 applied the descriptor attribution\\n\\nmethod to obtain global explanations for the scents. The global explanation for the \u2018fatty\u2019\\n\\nscent was generated by gathering chemical spaces around many \u2018fatty\u2019 scented molecules.\\n\\nThe resulting natural language explanation is: \u201CThe molecular property \u201Cfatty scent\u201D can\\n\\nbe explained by the presence of a heptanyl fragment, two CH2 groups separated by four\\n\\n\\n 20bonds, and a C=O double bond, as well as the lack of more than one or two O atoms.\u201D31\\n\\nThe importance of a heptanyl fragment aligns with that reported in the literature, as \u2018fatty\u2019\\n\\nmolecules often have a long carbon chain.144 Furthermore, the importance of a C=O dou-\\n\\nble bond is supported by the findings reported by Licon et al. 145, where in addition to a\\n\\n\u201Clarger carbon-chain skeleton\u201D, they found that \u2018fatty\u2019 molecules also had \u201Caldehyde or acid\\n\\nfunctions\u201D.145 For the \u2018pineapple\u2019 scent, the following natural language explanation was ob-\\n\\ntained: \u201CThe molecular property \u201Cpineapple scent\u201D can be explained by the presence of ester,\\n\\nethyl/ether O group, alkene/ether O group, and C=O double bond, as well as the absence of\\n\\nan Aromatic atom.\u201D31 Esters, such as ethyl 2-methylbutyrate, are present in many pineap-\\n\\nple volatile compounds.146,147 The combination of a C=O double bond with an ether could\\n\\nalso correspond to an ester group. Additionally, aldehydes and ketones, which contain C=O\\n\\ndouble bonds, are also common in pineapple volatile compounds.146,148\\n\\n\\nDiscussion\\n\\n\\nWe have shown two post-hoc XAI applications based on molecular counterfactual expla-\\n\\nnations9 and descriptor explanations.10 These methods can be used to explain black-box\\n\\nmodels whose input is a molecule. These two methods can be applied for both classification\\n\\nand regression tasks. Note that the \u201Ccorrectness\u201D of the explanations strongly depends on\\n\\nthe accuracy of the black-box model.\\n\\n A molecular counterfactual is one with a minimal distance from a base molecular, but\\n\\nwith contrasting chemical properties. In the above examples, we used Tanimoto similar-\\n\\nity96 of ECFP4 fingreprints97 as distance, although this should be explored in the future.\\n\\nCounterfactual explanations are useful because they are represented as chemical structures\\n\\n(familiar to domain experts), sparse, and are actionable. A few other popular examples of\\n\\ncounterfactual on graph methods are GNNExplainer, MEG and CF-GNNExplainer.69,104,105\\n\\n The descriptor explanation method developed by Gandhi and White 10 fits a self-explaining\\n\\n\\n\\n 21surrogate model to explain the black-box model. This is similar to the GraphLIME87 method,\\n\\nalthough we have the flexibility to use explanation features other than subgraphs. Futher-\\n\\nmore, we show that natural language combined with chemical descriptor attributions can\\n\\ncreate explanations useful for chemists, thus enhancing the accessibility of DL in chemistry.\\n\\nLastly, we examined if XAI can be used beyond interpretation. Work by Seshadri et al. 31 use\\n\\nMMACE and surrogate model explanations to analyze the structure-property relationships\\n\\nof scent. They recovered known structure-property relationships for molecular scent purely\\n\\nfrom explanations, demonstrating the usefulness of a two step process: fit an accurate model\\n\\nand then explain it.\\n\\n Choosing among the plethora of XAI methods described here is still an open question.\\n\\nIt remains to be seen if there will ever be a consensus benchmark, since this field sits on\\n\\nthe intersection of human-machine interaction, machine learning, and philosophy (i.e., what\\n\\nconstitutes an explanation?). Our current advice is to consider first the audience \u2013 domain\\n\\nexperts or ML experts or non-experts \u2013 and what the explanations should accomplish. Are\\n\\nthey meant to inform data selection or model building, how a prediction is used, or how the\\n\\nfeatures can be changed to affect the outcome. The second consideration is what access you\\n\\nhave to the underlying model. The ability to have model derivatives or propagate gradients\\n\\nto the input to models informs the XAI method.\\n\\n\\nConclusion and outlook\\n\\n\\nWe should seek to explain molecular property prediction models because users are more\\n\\nlikely to trust explained predictions, and explanations can help assess if the model is learning\\n\\nt\",\"ut to models informs the XAI method.\\n\\n\\nConclusion and outlook\\n\\n\\nWe should seek to explain molecular property prediction models because users are more\\n\\nlikely to trust explained predictions, and explanations can help assess if the model is learning\\n\\nthe correct underlying chemical principles. We also showed that black-box modeling first,\\n\\nfollowed by XAI, is a path to structure-property relationships without needing to trade\\n\\nbetween accuracy and interpretability. However, XAI in chemistry has some major open\\n\\nquestions, that are also related to the black-box nature of the deep learning. Some are\\n\\n\\n\\n \ 22highlighted below:\\n\\n\\n \u2022 Explanation representation: How is an explanation presented \u2013 text, a molecule, attri-\\n\\n butions, a concept, etc?\\n\\n\\n \u2022 Molecular distance: \ in XAI approaches such as counterfactual generation, the \u201Cdis-\\n\\n \ tance\u201D between two molecules is minimized. Molecular distance is subjective. Possibil-\\n\\n ities are distance based on molecular properties, synthesis routes, and direct structure\\n\\n comparisons.\\n\\n\\n \u2022 Regulations: As black-box models move from research to industry, healthcare, and\\n\\n environmental settings, we expect XAI to become more important to explain decisions\\n\\n \ to chemists or non-experts and possibly be legally required. Explanations may need\\n\\n to be tuned for be for doctors instead of chemists or to satisfy a legal requirement.\\n\\n\\n \u2022 Chemical space: Chemical space is the set of molecules that are realizable; \u201Crealiz-\\n\\n able\u201D can be defined from purchasable to synthesizable to satisfied valences. What is\\n\\n most useful? Can an explanation consider nearby impossible molecules? How can we\\n\\n generate local chemical spaces centered around a specific molecule for finding counter-\\n\\n factuals or other instance explanations? \ Similarly, can \u201Cactivity cliffs\u201D be connected\\n\\n to explanations and the local chemical space.149\\n\\n\\n \u2022 Evaluating XAI : there is a lack of a systematic framework (quantitative or qualitative)\\n\\n to evaluate correctness and applicability of an explanation. Can there be a universal\\n\\n \ framework, or should explanations be chosen and evaluated based on the audience and\\n\\n domain? For example, work by Rasmussen et al. 58 attempts to focus on comparing\\n\\n feature attribution XAI methods via Crippen\u2019s logP scores.\\n\\n\\n\\n\\n\\n 23Acknowledgements\\n\\n\\nResearch reported in this work was supported by the National Institute of General Medical\\n\\nSciences of the National Institutes of Health under award number R35GM137966. This work\\n\\nwas supported by the NSF under awards 1751471 and 1764415. We thank the Center for\\n\\nIntegrated Research Computing at the University of Rochester for providing computational\\n\\nresources.\\n\\n\\nReferences\\n\\n\\n \ (1) Choudhary, K.; DeCost, B.; Chen, C.; Jain, A.; Tavazza, F.; Cohn, R.; Park, C. W.;\\n\\n Choudhary, A.; Agrawal, A.; Billinge, S. J.; Holm, E.; Ong, S. P.; Wolverton, C.\\n\\n Recent advances and applications of deep learning methods in materials science. npj\\n\\n Computational Materials 2022, 8.\\n\\n\\n (2) Keith, J. A.; Vassilev-Galindo, V.; Cheng, B.; Chmiela, S.; Gastegger, M.; M\xA8uller, K.-\\n\\n R.; Tkatchenko, A. Combining Machine Learning and Computational Chemistry for\\n\\n Predictive Insights Into Chemical Systems. Chemical Reviews 2021, 121, 9816\u20139872,\\n\\n PMID: 34232033.\\n\\n\\n (3) Goh, G. B.; Hodas, N. O.; Vishnu, A. Deep learning for computational chemistry.\\n\\n Journal of Computational Chemistry 2017, 38, 1291\u20131307.\\n\\n\\n (4) Deringer, V. L.; Caro, M. A.; Cs\xB4anyi, G. Machine Learning Interatomic Potentials as\\n\\n Emerging Tools for Materials Science. Advanced Materials 2019, 31, 1902765.\\n\\n\\n (5) Faber, F. A.; Hutchison, L.; Huang, B.; Gilmer, J.; Schoenholz, S. S.; Dahl, G. E.;\\n\\n Vinyals, O.; Kearnes, S.; Riley, P. F.; von Lilienfeld, O. A. Prediction Errors of Molec-\\n\\n \ ular Machine Learning Models Lower than Hybrid DFT Error. Journal of Chemical\\n\\n \ Theory and Computation 2017, 13, 5255\u20135264, PMID: 28926232.\\n\\n\\n\\n \ 24 (6) Duch, W.; Swaminathan, K.; Meller, J. Artificial Intelligence Approaches for Rational\\n\\n Drug Design and Discovery. Current Pharmaceutical Design 2007, 13, 1497\u20131508.\\n\\n\\n (7) Dara, S.; Dhamercherla, S.; Jadav, S. S.; Babu, C. M.; Ahsan, M. J.; darasuresh, S. D.;\\n\\n Dara, S. Machine Learning in Drug Discovery: A Review. Artificial Intelligence Review\\n\\n 123, 55, 1947\u20131999.\\n\\n\\n (8) Gupta, R.; Srivastava, D.; Sahu, M.; Tiwari, S.; Ambasta, R. K.; Kumar, P. Artifi-\\n\\n \ cial intelligence to deep learning: machine intelligence approach for drug discovery.\\n\\n Molecular diversity 2021, 25, 1315\u20131360.\\n\\n\\n (9) Wellawatte, G. P.; Seshadri, A.; White, A. D. Model agnostic generation of counter-\\n\\n factual explanations for molecules. Chemical Science 2022, 13, 3697\u20133705.\\n\\n\\n(10) Gandhi, H. A.; White, A. D. Explaining structure-ac\",\"2021, 25, 1315\u20131360.\\n\\n\\n (9) Wellawatte, G. P.; Seshadri, A.; White, A. D. Model agnostic generation of counter-\\n\\n factual explanations for molecules. Chemical Science 2022, 13, 3697\u20133705.\\n\\n\\n(10) Gandhi, H. A.; White, A. D. Explaining structure-activity relationships using locally\\n\\n \ faithful surrogate models. chemrxiv 2022,\\n\\n\\n(11) Gormley, A. J.; Webb, M. A. Machine learning in combinatorial polymer chemistry.\\n\\n Nature Reviews Materials 2021,\\n\\n\\n(12) Gomes, C. P.; Fink, D.; Dover, R. B. V.; Gregoire, J. M. Computational sustainability\\n\\n meets materials science. Nature Reviews Materials 2021,\\n\\n\\n(13) On scientific understanding with artificial intelligence. Nature Reviews Physics 2022\\n\\n 4:12 2022, 4, 761\u2013769.\\n\\n\\n(14) Arrieta, A. B.; D\xB4\u0131az-Rodr\xB4\u0131guez, N.; Ser, J. D.; Bennetot, A.; Tabik, S.; Barbado, A.;\\n\\n Garcia, S.; Gil-Lopez, S.; Molina, D.; Benjamins, R.; Chatila, R.; Herrera, F. Explain-\\n\\n \ able Artificial Intelligence (XAI): Concepts, Taxonomies, Opportunities and Chal-\\n\\n lenges toward Responsible AI. Information Fusion 2019, 58, 82\u2013115.\\n\\n\\n(15) Murdoch, W. J.; Singh, C.; Kumbier, K.; Abbasi-Asl, R.; Yu, B. Interpretable machine\\n\\n learning: definitions, methods, and applications. ArXiv 2019, abs/1901.04592.\\n\\n\\n 25(16) Boobier, S.; Osbourn, A.; Mitchell, J. B. Can human experts predict solubility better\\n\\n than computers? Journal of cheminformatics 2017, 9, 1\u201314.\\n\\n\\n(17) Lee, J. D.; See, K. A. Trust in automation: Designing for appropriate reliance. Human\\n\\n Factors 2004, 46, 50\u201380.\\n\\n\\n(18) Bolukbasi, T.; Chang, K.-W.; Zou, J. Y.; Saligrama, V.; Kalai, A. T. Man is to com-\\n\\n puter programmer as woman is to homemaker? debiasing word embeddings. Advances\\n\\n \ in neural information processing systems 2016, 29.\\n\\n\\n(19) Buolamwini, J.; Gebru, T. Gender Shades: Intersectional Accuracy Disparities in\\n\\n Commercial Gender Classification. Proceedings of the 1st Conference on Fairness,\\n\\n \ Accountability and Transparency. 2018; pp 77\u201391.\\n\\n\\n(20) Lapuschkin, S.; W\xA8aldchen, S.; Binder, A.; Montavon, G.; Samek, W.; M\xA8uller, K.-R.\\n\\n \ Unmasking Clever Hans predictors and assessing what machines really learn. Nature\\n\\n communications 2019, 10, 1\u20138.\\n\\n\\n(21) DeGrave, A. J.; Janizek, J. D.; Lee, S.-I. AI for radiographic COVID-19 detection\\n\\n \ selects shortcuts over signal. Nature Machine Intelligence 2021, 3, 610\u2013619.\\n\\n\\n(22) Goodman, B.; Flaxman, S. European Union regulations on algorithmic decision-\\n\\n \ making and a \u201Cright to explanation\u201D. AI Magazine 2017, 38, 50\u201357.\\n\\n\\n(23) ACT, A. I. European Commission. On Artificial Intelligence: A European Approach\\n\\n \ to Excellence and Trust. 2021, COM/2021/206.\\n\\n\\n(24) Blueprint for an AI Bill of Rights, The White House. 2022; https://www.whitehouse.\\n\\n gov/ostp/ai-bill-of-rights/.\\n\\n\\n(25) Miller, T. Explanation in artificial intelligence: Insights from the social sciences. Ar-\\n\\n tificial intelligence 2019, 267, 1\u201338.\\n\\n\\n\\n \ 26(26) Murdoch, W. J.; Singh, C.; Kumbier, K.; Abbasi-Asl, R.; Yu, B. Definitions, meth-\\n\\n ods, and applications in interpretable machine learning. Proceedings of the National\\n\\n Academy of Sciences of the United States of America 2019, 116, 22071\u201322080.\\n\\n\\n(27) Gunning, D.; Aha, D. DARPA\u2019s Explainable Artificial Intelligence (XAI) Program.\\n\\n AI Magazine 2019, 40, 44\u201358.\\n\\n\\n(28) Biran, O.; Cotton, C. Explanation and justification in machine learning: A survey.\\n\\n \ IJCAI-17 workshop on explainable AI (XAI). 2017; pp 8\u201313.\\n\\n\\n(29) Palacio, S.; Lucieri, A.; Munir, M.; Ahmed, S.; Hees, J.; Dengel, A. Xai handbook:\\n\\n \ Towards a unified framework for explainable ai. Proceedings of the IEEE/CVF Inter-\\n\\n national Conference on Computer Vision. 2021; pp 3766\u20133775.\\n\\n\\n(30) Kuhn, D. R.; Kacker, R. N.; Lei, Y.; Simos, D. E. Combinatorial Methods for Ex-\\n\\n plainable AI. 2020 IEEE International Conference on Software Testing, Verification\\n\\n and Validation Workshops (ICSTW) 2020, 167\u2013170.\\n\\n\\n(31) Seshadri, A.; Gandhi, H. A.; Wellawatte, G. P.; White, A. D. Why does that molecule\\n\\n \ smell? ChemRxiv 2022,\\n\\n\\n(32) Das, A.; Rad, P. Opportunities and challenges in explainable artificial intelligence\\n\\n (xai): A survey. arXiv preprint arXiv:2006.11371 2020,\\n\\n\\n(33) Machlev, R.; Heistrene, L.; Perl, M.; Levy, K. Y.; Belikov, J.; Mannor, S.; Levron, Y.\\n\\n Explainable Artificial Intelligence (XAI) techniques for energy and power systems:\\n\\n Review, challenges and opportunities. Energy and AI 2022, 9, 100169.\\n\\n\\n(34) Koh, P. W.; Liang, P. Understanding black-box predictions via influence functions.\\n\\n \ International Conference on Machine Learning. 2017; pp 1885\u20131894.\\n\\n\\n(35) Ribeiro, M. T.; Singh, S.; Guestrin, C. \u201D Why should i trust you?\u201D Explaining the\\n\\n predictions of any classifier. Proceedings of the 22nd ACM SIGKDD international\\n\\n\\n 27 conference on knowledge discovery and data \",\" M. T.; Singh, S.; Guestrin, C. \u201D Why should i trust you?\u201D Explaining the\\n\\n predictions of any classifier. Proceedings of the 22nd ACM SIGKDD international\\n\\n\\n 27 \ conference on knowledge discovery and data mining. San Diego, CA, USA, 2016; pp\\n\\n 1135\u20131144.\\n\\n\\n(36) Dhurandhar, A.; Chen, P.-Y.; Luss, R.; Tu, C.-C.; Ting, P.; Shanmugam, K.; Das, P.\\n\\n Explanations based on the missing: Towards contrastive explanations with pertinent\\n\\n \ negatives. Advances in neural information processing systems 2018, 31.\\n\\n\\n(37) Jin, W.; Li, X.; Hamarneh, G. Evaluating Explainable AI on a Multi-Modal Medical\\n\\n \ Imaging Task: Can Existing Algorithms Fulfill Clinical Requirements? Proceedings of\\n\\n the AAAI Conference on Artificial Intelligence 2022, 36, 11945\u201311953.\\n\\n\\n(38) Zhang, Y.; Xu, F.; Zou, J.; Petrosian, O. L.; Krinkin, K. V. XAI Evaluation: Evalu-\\n\\n ating Black-Box Model Explanations for Prediction. 2021 II International Conference\\n\\n on Neural Networks and Neurotechnologies (NeuroNT). 2021; pp 13\u201316.\\n\\n\\n(39) Oviedo, F.; Ferres, J. L.; Buonassisi, T.; Butler, K. T. Interpretable and Explain-\\n\\n able Machine Learning for Materials Science and Chemistry. Accounts of Materials\\n\\n Research 2022, 3, 597\u2013607.\\n\\n\\n(40) Yalcin, O.; Fan, X.; Liu, S. Evaluating the correctness of explainable AI algorithms\\n\\n for classification. arXiv preprint arXiv:2105.09740 2021,\\n\\n\\n(41) Hoffman, R. R.; Mueller, S. T.; Klein, G.; Litman, J. Metrics for Explainable AI:\\n\\n Challenges and Prospects. 2018,\\n\\n\\n(42) Mohseni, S.; Zarei, N.; Ragan, E. D. A Multidisciplinary Survey and Framework for\\n\\n \ Design and Evaluation of Explainable AI Systems. ACM Transactions on Interactive\\n\\n \ Intelligent Systems 2018, 11, 46.\\n\\n\\n(43) Humer, C.; Heberle, H.; Montanari, F.; Wolf, T.; Huber, F.; Henderson, R.; Hein-\\n\\n rich, J.; Streit, M. ChemInformatics Model Explorer (CIME): exploratory analysis of\\n\\n \ chemical model explanations. Journal of Cheminformatics 2022, 14, 1\u201314.\\n\\n\\n \ 28(44) Lundberg, S. M.; Lee, S.-I. In Advances in Neural Information Processing Systems\\n\\n 30; Guyon, I., Luxburg, U. V., Bengio, S., Wallach, H., Fergus, R., Vishwanathan, S.,\\n\\n Garnett, R., Eds.; Curran Associates, Inc., 2017; pp 4765\u20134774.\\n\\n(45) \u02C7Strumbelj, E.; Kononenko, I. Explaining prediction models and individual predictions\\n\\n \ with feature contributions. Knowledge and information systems 2014, 41, 647\u2013665.\\n\\n\\n(46) Shapley, L. S. A Value for N-Person Games; RAND Corporation: Santa Monica, CA,\\n\\n 1952.\\n\\n\\n(47) Molnar, C.; Casalicchio, G.; Bischl, B. Interpretable machine learning\u2013a brief history,\\n\\n state-of-the-art and challenges. Joint European Conference on Machine Learning and\\n\\n Knowledge Discovery in Databases. 2020; pp 417\u2013431.\\n\\n\\n(48) Lou, Y.; Caruana, R.; Gehrke, J. Intelligible models for classification and regression.\\n\\n \ Proceedings of the 18th ACM SIGKDD international conference on Knowledge dis-\\n\\n covery and data mining. 2012; pp 150\u2013158.\\n\\n\\n(49) Bastani, O.; Kim, C.; Bastani, H. Interpreting blackbox models via model extraction.\\n\\n \ arXiv preprint arXiv:1705.08504 2017,\\n\\n\\n(50) Gajewicz, A.; Puzyn, T.; Odziomek, K.; Urbaszek, P.; Haase, A.; Riebeling, C.;\\n\\n Luch, A.; Irfan, M. A.; Landsiedel, R.; van der Zande, M.; Bouwmeester, H. Deci-\\n\\n \ sion tree models to classify nanomaterials according to the DF4nanoGrouping scheme.\\n\\n Nanotoxicology 2018, 12, 1\u201317.\\n\\n\\n(51) Han, L.; Wang, Y.; Bryant, S. H. Developing and validating predictive decision tree\\n\\n \ models from mining chemical structural fingerprints and high\u2013throughput screening\\n\\n data in PubChem. BMC Bioinformatics 2008, 9, 401.\\n\\n(52) Plumb, G.; Al-Shedivat, M.; Cabrera, \xB4A. A.; Perer, A.; Xing, E.; Talwalkar, A. Regu-\\n\\n\\n\\n\\n 29 larizing black-box models for improved interpretability. Advances in Neural Informa-\\n\\n \ tion Processing Systems 2020, 33, 10526\u201310536.\\n\\n\\n(53) Shao, X.; Skryagin, A.; Stammer, W.; Schramowski, P.; Kersting, K. Right for bet-\\n\\n \ ter reasons: Training differentiable models by constraining their influence functions.\\n\\n Proceedings of the AAAI Conference on Artificial Intelligence. 2021; pp 9533\u20139540.\\n\\n\\n(54) Ouyang, R.; Curtarolo, S.; Ahmetcik, E.; Scheffler, M.; Ghiringhelli, L. M. SISSO: A\\n\\n compressed-sensing method for identifying the best low-dimensional descriptor in an\\n\\n immensity of offered candidates. Physical Review Materials 2018, 2, 083802.\\n\\n\\n(55) Lipton, Z. C. The mythos of model interpretability: In machine learning, the concept\\n\\n of interpretability is both important and slippery. Queue 2018, 16, 31\u201357.\\n\\n\\n(56) Harren, T.; Matter, H.; Hessler, G.; Rarey, M.; Grebner, C. Interpretation of structure\u2013\\n\\n activity relationships in real-world drug design data sets using explainable artificial\\n\\n intelligence. Journal of Chemical Information and Modeling 2022, 62,\",\".; Matter, H.; Hessler, G.; Rarey, M.; Grebner, C. Interpretation of structure\u2013\\n\\n activity relationships in real-world drug design data sets using explainable artificial\\n\\n \ intelligence. Journal of Chemical Information and Modeling 2022, 62, 447\u2013462.\\n\\n\\n(57) Sheridan, R. P. Interpretation of QSAR Models by Coloring Atoms According to\\n\\n \ Changes in Predicted Activity: How Robust Is It? Journal of Chemical Information\\n\\n \ and Modeling 2019, 59, 1324\u20131337.\\n\\n\\n(58) Rasmussen, M. H.; Christensen, D. S.; Jensen, J. H. Do machines dream of atoms?\\n\\n Crippen\u2019s logP as a quantitative molecular benchmark for explainable AI heatmaps.\\n\\n 2022,\\n\\n\\n(59) Smilkov, D.; Thorat, N.; Kim, B.; Vi\xB4egas, F.; Wattenberg, M. SmoothGrad: removing\\n\\n noise by adding noise. 2017; https://arxiv.org/abs/1706.03825.\\n\\n\\n(60) McCloskey, K.; Taly, A.; Monti, F.; Brenner, M. P.; Colwell, L. Using Attribution\\n\\n \ to Decode Dataset Bias in Neural Network Models for Chemistry. Proceedings of the\\n\\n\\n\\n\\n 30 National Academy of Sciences of the United States of America 2018, 116, 11624\u2013\\n\\n 11629.\\n\\n\\n(61) Bach, S.; Binder, A.; Montavon, G.; Klauschen, F.; M\xA8uller, K.-R.; Samek, W. On\\n\\n pixel-wise explanations for non-linear classifier decisions by layer-wise relevance prop-\\n\\n agation. PloS one 2015, 10, e0130140.\\n\\n\\n(62) Sundararajan, M.; Taly, A.; Yan, Q. Axiomatic attribution for deep networks. Inter-\\n\\n national Conference on Machine Learning. 2017; pp 3319\u20133328.\\n\\n\\n(63) Zhou, B.; Khosla, A.; Lapedriza, A.; Oliva, A.; Torralba, A. Learning Deep Features\\n\\n \ for Discriminative Localization. 2015; https://arxiv.org/abs/1512.04150.\\n\\n\\n(64) Selvaraju, R. R.; Cogswell, M.; Das, A.; Vedantam, R.; Parikh, D.; Batra, D. Grad-\\n\\n CAM: Visual Explanations from Deep Networks via Gradient-Based Localization. In-\\n\\n ternational Journal of Computer Vision 2019, 128, 336\u2013359.\\n\\n\\n(65) Smilkov, D.; Thorat, N.; Kim, B.; Vi\xB4egas, F.; Wattenberg, M. Smoothgrad: removing\\n\\n noise by adding noise. arXiv preprint arXiv:1706.03825 2017,\\n\\n\\n(66) Pope, P.; Kolouri, S.; Rostrami, M.; Martin, C.; Hoffmann, H. Discovering Molec-\\n\\n ular Functional Groups Using Graph Convolutional Neural Networks. 2018; https:\\n\\n //arxiv.org/abs/1812.00265.\\n\\n\\n(67) Jim\xB4enez-Luna, J.; Skalic, M.; Weskamp, N.; Schneider, G. Coloring molecules with ex-\\n\\n plainable artificial intelligence for preclinical relevance assessment. Journal of Chem-\\n\\n ical Information and Modeling 2021, 61, 1083\u20131094.\\n\\n\\n(68) Sanchez-Lengeling, B.; Wei, J.; Lee, B.; Reif, E.; Wang, P. Y.; Qian, W. W.; Mc-\\n\\n Closkey, K.; Colwell, L.; Wiltschko, A. Evaluating Attribution for Graph Neural\\n\\n Networks. Proceedings of the 34th International Conference on Neural Information\\n\\n Processing Systems. Red Hook, NY, USA, 2020.\\n\\n\\n 31(69) Ying, R.; Bourgeois, D.; You, J.; Zitnik, M.; Leskovec, J. GNNExplainer: Generating\\n\\n \ Explanations for Graph Neural Networks. Advances in neural information processing\\n\\n systems 2019, 32, 9240\u20139251.\\n\\n\\n(70) Rao, J.; Zheng, S.; Yang, Y. Quantitative Evaluation of Explainable Graph Neural\\n\\n \ Networks for Molecular Property Prediction. arXiv preprint arXiv:2107.04119 2021,\\n\\n\\n(71) Yuan, H.; Yu, H.; Wang, J.; Li, K.; Ji, S. On Explainability of Graph Neural Net-\\n\\n works via Subgraph Explorations. Proceedings of the 38th International Conference\\n\\n on Machine Learning. 2021; pp 12241\u201312252.\\n\\n\\n(72) Shrikumar, A.; Greenside, P.; Kundaje, A. Learning Important Features Through\\n\\n Propagating Activation Differences. 2017,\\n\\n\\n(73) Montavon, G.; Binder, A.; Lapuschkin, S.; Samek, W.; M\xA8uller, K. R. Layer-Wise\\n\\n \ Relevance Propagation: An Overview. Lecture Notes in Computer Science (including\\n\\n \ subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)\\n\\n 2019, 11700 LNCS, 193\u2013209.\\n\\n\\n(74) Baldassarre, F.; Azizpour, H. Explainability Techniques for Graph Convolutional Net-\\n\\n \ works. 2019; https://arxiv.org/abs/1905.13686.\\n\\n\\n(75) Hochuli, J.; Helbling, A.; Skaist, T.; Ragoza, M.; Koes, D. R. Visualizing convolutional\\n\\n \ neural network protein-ligand scoring. Journal of Molecular Graphics and Modelling\\n\\n 2018, 84, 96\u2013108.\\n\\n\\n(76) Rodr\xB4\u0131guez-P\xB4erez, R.; Bajorath, J. Interpretation of Compound Activity Predictions\\n\\n from Complex Machine Learning Models Using Local Approximations and Shapley\\n\\n \ Values. Journal of Medicinal Chemistry 2020, 63, 8761\u20138777, PMID: 31512867.\\n\\n\\n(77) Wojtuch, A.; Jankowski, R.; Podlewska, S. How can SHAP values help to shape\\n\\n\\n\\n\\n 32 \ metabolic stability of chemical compounds? Journal of Cheminformatics 2021, 13,\\n\\n 1\u201320.\\n\\n\\n(78) Mastropietro, A.; Pasculli, G.; Feldmann, C.; Rodr\xB4\u0131guez-P\xB4erez, R.; Bajorath, J. Edge-\\n\\n SHAPer: Bond-Centric Shapley Value-Based Explanation Method for Graph Neural\\n\\n Networks. iScience 2022, 25, 105043.\\n\\n\\n(79) White, \",\"13,\\n\\n 1\u201320.\\n\\n\\n(78) Mastropietro, A.; Pasculli, G.; Feldmann, C.; Rodr\xB4\u0131guez-P\xB4erez, R.; Bajorath, J. Edge-\\n\\n SHAPer: Bond-Centric Shapley Value-Based Explanation Method for Graph Neural\\n\\n Networks. iScience 2022, 25, 105043.\\n\\n\\n(79) White, A. D. Deep learning for molecules and materials. Living Journal of Computa-\\n\\n \ tional Molecular Science 2022, 3.\\n\\n(80) \u02D8Strumbelj, E.; Kononenko, I. Explaining prediction models and individual predictions\\n\\n with feature contributions. Knowledge and Information Systems 2014, 41, 647\u2013665.\\n\\n\\n(81) Erhan, D.; Bengio, Y.; Courville, A.; Vincent, P. Visualizing Higher-Layer Features of\\n\\n a Deep Network. Technical Report, Univerist\xB4e de Montr\xB4eal 2009,\\n\\n\\n(82) Weber, J. K.; Morrone, J. A.; Bagchi, S.; Pabon, J. D.; gu Kang, S.; Zhang, L.;\\n\\n Cornell, W. D. Simplified, interpretable graph convolutional neural networks for small\\n\\n molecule activity prediction. Journal of Computer-Aided Molecular Design 2022, 36,\\n\\n 391\u2013404.\\n\\n\\n(83) Riniker, S.; Landrum, G. A. Similarity maps - A visualization strategy for molecular\\n\\n \ fingerprints and machine-learning methods. Journal of Cheminformatics 2013, 5, 1\u20137.\\n\\n\\n(84) Humer, C.; Heberle, H.; Montanari, F.; Wolf, T.; Huber, F.; Henderson, R.; Hein-\\n\\n rich, J.; Streit, M. ChemInformatics Model Explorer (CIME): exploratory analysis of\\n\\n chemical model explanations. Journal of Cheminformatics 2022, 14, 1\u201314.\\n\\n\\n(85) McGrath, T.; Kapishnikov, A.; Toma\u02C7sev, N.; Pearce, A.; Wattenberg, M.; Hass-\\n\\n abis, D.; Kim, B.; Paquet, U.; Kramnik, V. Acquisition of chess knowledge in Al-\\n\\n \ phaZero. Proceedings of the National Academy of Sciences 2022, 119, e2206625119.\\n\\n\\n\\n\\n \ 33(86) Bajusz, D.; R\xB4acz, A.; H\xB4eberger, K. Why is Tanimoto index an appropriate choice for\\n\\n fingerprint-based similarity calculations? Journal of Cheminformatics 2015, 7, 1\u201313.\\n\\n\\n(87) Huang, Q.; Yamada, M.; Tian, Y.; Singh, D.; Yin, D.; Chang, Y. GraphLIME:\\n\\n \ Local Interpretable Model Explanations for Graph Neural Networks. CoRR 2020,\\n\\n abs/2001.06216.\\n\\n\\n(88) Sokol, K.; Flach, P. A. LIMEtree: Interactively Customisable Explanations Based on\\n\\n Local Surrogate Multi-output Regression Trees. CoRR 2020, abs/2005.01427.\\n\\n\\n(89) Whitmore, L. S.; George, A.; Hudson, C. M. Mapping chemical performance on molec-\\n\\n ular structures using locally interpretable explanations. 2016; https://arxiv.org/\\n\\n abs/1611.07443.\\n\\n\\n(90) Mehdi, S.; Tiwary, P. Thermodynamics of Interpretation. 2022,\\n\\n\\n(91) H\xA8ofler, M. Causal inference based on counterfactuals. BMC Medical Research Method-\\n\\n \ ology 2005, 5, 1\u201312.\\n\\n\\n(92) Woodward, J.; Hitchcock, C. Explanatory Generalizations, Part I: A Counterfactual\\n\\n Account. No\u02C6us 2003, 37, 1\u201324.\\n\\n\\n(93) Frisch, M. F. Theories, models, and explanation; University of California, Berkeley,\\n\\n 1998.\\n\\n\\n(94) Reutlinger, A. Is There A Monist Theory of Causal and Non-Causal Explanations?\\n\\n The Counterfactual Theory of Scientific Explanation. Philosophy of Science 2016, 83,\\n\\n 733\u2013745.\\n\\n\\n(95) Lewis, D. Causation. The journal of philosophy 1974, 70, 556\u2013567.\\n\\n\\n(96) Tanimoto, T. T. Elementary mathematical theory of classification and prediction.\\n\\n Internal IBM Technical Report 1958,\\n\\n\\n 34 (97) Rogers, D.; Hahn, M. Extended-Connectivity Fingerprints. Journal of Chemical In-\\n\\n formation and Modeling 2010, 50, 742\u2013754, PMID: 20426451.\\n\\n\\n (98) Mohapatra, S.; An, J.; G\xB4omez-Bombarelli, R. Chemistry-informed macromolecule\\n\\n \ graph representation for similarity computation, unsupervised and supervised learn-\\n\\n ing. Machine Learning: Science and Technology 2022, 3, 015028.\\n\\n\\n (99) Doshi-Velez, F.; Kortz, M.; Budish, R.; Bavitz, C.; Gershman, S.; O\u2019Brien, D.;\\n\\n Scott, K.; Schieber, S.; Waldo, J.; Weinberger, D.; Weller, A.; Wood, A. Account-\\n\\n ability of AI Under the Law: The Role of Explanation. SSRN Electronic Journal\\n\\n 2017,\\n\\n\\n(100) Wachter, S.; Mittelstadt, B.; Russell, C. Counterfactual explanations without opening\\n\\n the black box: Automated decisions and the GDPR. Harv. JL & Tech. 2017, 31, 841.\\n\\n\\n(101) Jim\xB4enez-Luna, J.; Grisoni, F.; Schneider, G. Drug discovery with explainable artificial\\n\\n intelligence. Nature Machine Intelligence 2020 2:10 2020, 2, 573\u2013584.\\n\\n\\n(102) Fu, T.; Gao, W.; Xiao, C.; Yasonik, J.; Coley, C. W.; Sun, J. Differentiable Scaffold-\\n\\n ing Tree for Molecule Optimization. International Conference on Learning Represen-\\n\\n tations. 2022.\\n\\n\\n(103) Shen, C.; Krenn, M.; Eppel, S.; Aspuru-Guzik, A. Deep molecular dreaming: inverse\\n\\n \ machine learning for de-novo molecular design and interpretability with surjective\\n\\n representations. Machine Learning: Science and Technology 2021, 2, 03LT02.\\n\\n\\n(104) Lucic, A.; ter Hoeve, M.; Tolomei, G.; \ Rijke, M.; Silvestri, F. CF-\\n\\n GNNExplainer: Counterfactual Explanations for Graph Neural Networks. arXiv\",\" representations. Machine Learning: Science and Technology 2021, 2, 03LT02.\\n\\n\\n(104) Lucic, A.; \ ter Hoeve, M.; Tolomei, G.; Rijke, M.; Silvestri, F. CF-\\n\\n \ GNNExplainer: Counterfactual Explanations for Graph Neural Networks. arXiv\\n\\n \ preprint arXiv:2102.03322 2021,\\n\\n\\n(105) Numeroso, D.; Bacciu, D. Explaining Deep Graph Networks with Molecular Counter-\\n\\n factuals. arXiv preprint arXiv:2011.05134 2020,\\n\\n\\n 35(106) Krenn, M.; H\xA8ase, F.; Nigam, A.; Friederich, P.; Aspuru-Guzik, A. Self-Referencing\\n\\n \ Embedded Strings (SELFIES): A 100% robust molecular string representation. Ma-\\n\\n chine Learning: Science and Technology 2020, 1, 045024.\\n\\n\\n(107) Nigam, A.; Pollice, R.; Krenn, M.; dos Passos Gomes, G.; Aspuru-Guzik, A. Beyond\\n\\n \ generative models: superfast traversal, optimization, novelty, exploration and discov-\\n\\n ery (STONED) algorithm for molecules using SELFIES. Chemical science 2021, 12,\\n\\n 7079\u20137090.\\n\\n\\n(108) Kim, S.; Chen, J.; Cheng, T.; Gindulyte, A.; He, J.; He, S.; Li, Q.; Shoemaker, B. A.;\\n\\n Thiessen, P. A.; Yu, B.; Zaslavsky, L.; Zhang, J.; Bolton, E. E. PubChem in 2021:\\n\\n \ new data content and improved web interfaces. Nucleic Acids Research 2020, 49,\\n\\n D1388\u2013D1395.\\n\\n\\n(109) Tolomei, G.; Silvestri, F.; Haines, A.; Lalmas, M. Interpretable predictions of tree-\\n\\n based ensembles via actionable feature tweaking. Proceedings of the 23rd ACM\\n\\n SIGKDD international conference on knowledge discovery and data mining. 2017;\\n\\n \ pp 465\u2013474.\\n\\n\\n(110) Freiesleben, T. The intriguing relation between counterfactual explanations and ad-\\n\\n versarial examples. Minds and Machines 2022, 32, 77\u2013109.\\n\\n\\n(111) Grabocka, J.; Schilling, N.; Wistuba, M.; Schmidt-Thieme, L. Learning time-series\\n\\n shapelets. Proceedings of the 20th ACM SIGKDD international conference on Knowl-\\n\\n \ edge discovery and data mining. 2014; pp 392\u2013401.\\n\\n\\n(112) Kenny, P. W.; Sadowski, J. Structure modification in chemical databases. Chemoin-\\n\\n \ formatics in drug discovery 2005, 271\u2013285.\\n\\n\\n(113) Tyrchan, C.; Evertsson, E. Matched Molecular Pair Analysis in Short: Algorithms,\\n\\n \ Applications and Limitations. Computational and Structural Biotechnology Journal\\n\\n 2017, 15, 86\u201390.\\n\\n\\n 36(114) Griffen, E.; Leach, A. G.; Robb, G. R.; Warner, D. J. Matched Molecular Pairs as\\n\\n a Medicinal Chemistry Tool. Journal of Medicinal Chemistry 2011, 54, 7739\u20137750,\\n\\n PMID: 21936582.\\n\\n\\n(115) He, J.; Nittinger, E.; Tyrchan, C.; Czechtizky, W.; Patronov, A.; Bjerrum, E. J.;\\n\\n Engkvist, O. Transformer-based molecular optimization beyond matched molecular\\n\\n pairs. Journal of cheminformatics 2022, 14, 1\u201314.\\n\\n\\n(116) Park, J.; Sung, G.; Lee, S.; Kang, S.; Park, C. ACGCN: Graph Convolutional Networks\\n\\n for Activity Cliff Prediction between Matched Molecular Pairs. Journal of Chemical\\n\\n \ Information and Modeling 2022,\\n\\n\\n(117) Langdon, S. R.; Ertl, P.; Brown, N. Bioisosteric Replacement and Scaffold Hopping\\n\\n in Lead Generation and Optimization. Molecular Informatics 2010, 29, 366\u2013385.\\n\\n\\n(118) Turk, S.; Merget, B.; Rippmann, F.; Fulle, S. Coupling Matched Molecular Pairs\\n\\n \ with Machine Learning for Virtual Compound Optimization. Journal of Chemical\\n\\n \ Information and Modeling 2017, 57, 3079\u20133085, PMID: 29131617.\\n\\n\\n(119) van Tilborg, D.; Alenicheva, A.; Grisoni, F. Exposing the limitations of molecular\\n\\n \ machine learning with activity cliffs. 2022,\\n\\n\\n(120) Fischer, H.; Gottschlich, R.; Seelig, A. Blood-brain barrier permeation: molecular\\n\\n \ parameters governing passive diffusion. The Journal of membrane biology 1998, 165,\\n\\n 201\u2013211.\\n\\n\\n(121) Liu, L.; Zhang, L.; Feng, H.; Li, S.; Liu, M.; Zhao, J.; Liu, H. Prediction of the\\n\\n Blood\u2013Brain Barrier (BBB) Permeability of Chemicals Based on Machine-Learning\\n\\n and Ensemble Methods. Chemical Research in Toxicology 2021, 34, 1456\u20131467, PMID:\\n\\n 34047182.\\n\\n\\n\\n\\n\\n 37(122) Wu, Z.; Ramsundar, B.; Feinberg, E. N.; Gomes, J.; Geniesse, C.; Pappu, A. S.;\\n\\n \ Leswing, K.; Pande, V. MoleculeNet: a benchmark for molecular machine learning.\\n\\n Chemical science 2018, 9, 513\u2013530.\\n\\n\\n(123) Ho, T. K. Random decision forests. Proceedings of 3rd international conference on\\n\\n \ document analysis and recognition. 1995; pp 278\u2013282.\\n\\n\\n(124) Martins, I. F.; Teixeira, A. L.; Pinheiro, L.; Falcao, A. O. A Bayesian approach to in\\n\\n silico blood-brain barrier penetration modeling. Journal of chemical information and\\n\\n modeling 2012, 52, 1686\u20131697.\\n\\n\\n(125) Pedregosa, F. et al. Scikit-learn: Machine Learning in Python. Journal of Machine\\n\\n \ Learning Research 2011, 12, 2825\u20132830.\\n\\n\\n(126) Moriwaki, H.; Tian, Y.-S.; Kawashita, N.; Takagi, T. Mordred: a molecular descriptor\\n\\n \ calculator. Journal of cheminformatics 2018, 10, 1\u201314.\\n\\n\\n(127) Chollet, F., et al. Keras. https:/\",\"chine\\n\\n Learning Research 2011, 12, 2825\u20132830.\\n\\n\\n(126) Moriwaki, H.; Tian, Y.-S.; Kawashita, N.; Takagi, T. Mordred: a molecular descriptor\\n\\n calculator. Journal of cheminformatics 2018, 10, 1\u201314.\\n\\n\\n(127) Chollet, F., et al. Keras. https://keras.io, 2015.\\n\\n\\n(128) Wager, T. T.; Chandrasekaran, R. Y.; Hou, X.; Troutman, M. D.; Verhoest, P. R.; Vil-\\n\\n lalobos, A.; Will, Y. Defining Desirable Central Nervous System Drug Space through\\n\\n the Alignment of Molecular Properties, in Vitro ADME, and Safety Attributes. ACS\\n\\n \ Chemical Neuroscience 2010, 1, 420\u2013434.\\n\\n\\n(129) Ghose, A. K.; Herbertz, T.; Hudkins, R. L.; Dorsey, B. D.; Mallamo, J. P. Knowledge-\\n\\n \ Based, Central Nervous System (CNS) Lead Selection and Lead Optimization for CNS\\n\\n Drug Discovery. ACS Chemical Neuroscience 2012, 3, 50\u201368.\\n\\n\\n(130) Polishchuk, P.; Tinkov, O.; Khristova, T.; Ognichenko, L.; Kosinskaya, A.; Varnek, A.;\\n\\n Kuz\u2019min, V. Structural and Physico-Chemical Interpretation (SPCI) of QSAR Mod-\\n\\n els and Its Comparison with Matched Molecular Pair Analysis. Journal of Chemical\\n\\n Information and Modeling 2016, 56, 1455\u20131469.\\n\\n\\n 38(131) Hassan, M.; Brown, R. D.; Varma-O\u2019Brien, S.; Rogers, D. Cheminformatics analysis\\n\\n \ and learning in a data pipelining environment. Molecular diversity 2006, 10, 283\u2013299.\\n\\n\\n(132) Schomburg, K.; Ehrlich, H. C.; Stierand, K.; Rarey, M. From structure diagrams to\\n\\n visual chemical patterns. Journal of Chemical Information and Modeling 2010, 50,\\n\\n 1529\u20131535.\\n\\n\\n(133) Sheikholeslamzadeh, E.; Rohani, S. Solubility prediction of pharmaceutical and chem-\\n\\n ical compounds in pure and mixed solvents using predictive models. Industrial &\\n\\n engineering chemistry research 2012, 51, 464\u2013473.\\n\\n\\n(134) Boobier, S.; Hose, D. R.; Blacker, A. J.; Nguyen, B. N. Machine learning with physic-\\n\\n ochemical relationships: solubility prediction in organic solvents and water. Nature\\n\\n Communications 2020 11:1 2020, 11, 1\u201310.\\n\\n\\n(135) Loschen, C.; Klamt, A. Solubility prediction, solvate and cocrystal screening as tools\\n\\n for rational crystal engineering. Journal of Pharmacy and Pharmacology 2015, 67,\\n\\n 803\u2013811.\\n\\n\\n(136) Diorazio, L. J.; Hose, D. R.; Adlington, N. K. Toward a more holistic framework for\\n\\n solvent selection. Organic Process Research & Development 2016, 20, 760\u2013773.\\n\\n\\n(137) Sorkun, M. C.; Khetan, A.; Er, S. AqSolDB, a curated reference set of aqueous sol-\\n\\n ubility and 2D descriptors for a diverse set of compounds. Scientific data 2019, 6,\\n\\n 1\u20138.\\n\\n\\n(138) Durant, J. L.; Leland, B. A.; Henry, D. R.; Nourse, J. G. Reoptimization of MDL\\n\\n keys for use in drug discovery. Journal of chemical information and computer sciences\\n\\n \ 2002, 42, 1273\u20131280.\\n\\n\\n(139) National Center for Biotechnology Information, PubChem Compound Summary for\\n\\n\\n\\n\\n 39 \ CID 1549018, Jasmone. https://pubchem.ncbi.nlm.nih.gov/compound/Jasmone,\\n\\n \ Accessed September 26, 2022.\\n\\n\\n(140) Sell, C. S. On the unpredictability of odor. Angewandte Chemie International Edition\\n\\n 2006, 45, 6254\u20136261.\\n\\n\\n(141) Genva, M.; Kenne Kemene, T.; Deleu, M.; Lins, L.; Fauconnier, M.-L. Is It Possible\\n\\n \ to Predict the Odor of a Molecule on the Basis of its Structure? International journal\\n\\n of molecular sciences 2019, 20, 3018.\\n\\n\\n(142) Rowe, D. Aroma chemicals for savory flavors. Perfumer and Flavorist 1998, 23, 9\u201318.\\n\\n\\n(143) Mallia, S.; Escher, F.; Schlichtherle-Cerny, H. Aroma-active compounds of butter: a\\n\\n review. European Food Research and Technology 2008, 226, 315\u2013325.\\n\\n\\n(144) Jelen, H.; Gracka, A. Characterization of aroma compounds: Structure, physico-\\n\\n \ chemical and sensory properties. Flavour: From food to perception 2016, 126\u2013153.\\n\\n\\n(145) Licon, C. C.; Bosc, G.; Sabri, M.; Mantel, M.; Fournel, A.; Bushdid, C.;\\n\\n Golebiowski, J.; Robardet, C.; Plantevit, M.; Kaytoue, M., et al. Chemical features\\n\\n mining provides new descriptive structure-odor relationships. PLoS computational bi-\\n\\n ology 2019, 15, e1006945.\\n\\n\\n(146) Mostafa, S.; Wang, Y.; Zeng, W.; Jin, B. Floral Scents and Fruit Aromas: Functions,\\n\\n Compositions, Biosynthesis, and Regulation. Frontiers in plant science 2022, 13.\\n\\n\\n(147) Tokitomo, Y.; Steinhaus, M.; B\xA8uttner, A.; Schieberle, P. Odor-active constituents in\\n\\n \ fresh pineapple (Ananas comosus [L.] Merr.) by quantitative and sensory evaluation.\\n\\n Bioscience, Biotechnology, and Biochemistry 2005, 69, 1323\u20131330.\\n\\n\\n(148) Wei, C.-B.; Liu, S.-H.; Liu, Y.-G.; Lv, L.-L.; Yang, W.-X.; Sun, G.-M. Characteristic\\n\\n aroma compounds from different pineapple parts. Molecules 2011, 16, 5104\u20135112.\\n\\n\\n\\n 40(149) Stumpfe, D.; Bajorath, J. Exploring Activity Cliffs in Medicinal Chemistry. Journal\\n\\n of Medicinal Chemistry 2012, 55, 2932\u20132942, PMID: 22236250.\\n\\n\\n\\n\\n\\n \ \"],\"model\":\"text-embedding-3-small\",\"dimensions\":1536,\"encoding_format\":null}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "89092" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 3YUUbG4qEWUBtrs2WaeftM4ebbmVMOgTqxI2by9GJWlwW5MZxXHSAys+lHxpR96voZ/3h+POCEtq SHwelShyRjX5X2WGoPfLySbVr3rtats7kGLtfe7c01KSCW4TPlEmPdCAqVFccSbn96k2j2WOkDUV V+T32JKv31UhUa5DclXmQJyqeruS02PpUIV8As115b9uI9lg64KnmsRz2VG/QLfrSUMap+kPmaVv t572w3+TbvISG+JPylkKj2msI46ZrVhF9GfJOj4g8V17RuhczcXuKVogndY5cDt9D4gfNWN0D9XQ 9bMltd5lwtCzQ88rT6UK+7GOmWOyk1rRXIezt8n1CY2wrjvur6yvRCvxh2qvdUf6x9mx4xIdiimU kJ5H9k2iqCPiWDPJvYj8dzaDKCeYE2mNj0eIHoL8UvQzqrNrxWIaT3pq1tV9PNZOQubsncW2RCPO mWrNYnQdBHGrcxhykM15GOKaCuMuWfmOEJytKYeDTnVoeG0fEOftHL6g7F7IxYVd1fOaAeI2u1sR olhSCl9hT/Mzwy6HdKTvBKVgXiKWyFKF0JMZuTXKrukpb/wEOTtACbug8osJYm7qMjKS5luEadIP 8S5HBnNczLN6jav19+75EKGaux48mviUq3W8PXe1HrO1zbbnviE+86oYAixddTJfNbtEO1kWur8f hfLbBl7xIextjnEaEG/76ZAdElA51sdHKMNHS9OS3YD3P+BOZjpSyuXRReD1W72k6aBa0woQEXgd r1/84/n//3x+zz9ev/jllz//57f/+O3LH37/5dtPf/72ww9//fkvX97+mC9//fmHb3+P/+3/PuH/ 97v+8Pt/0/t9Jfs2aac1n6YAE1Ix767gJ3V5cJST1nnjUtX9ce7xm3VWjmSjqqlq1YZSyTp39Cx9 awJsXO9tOXaGABLthOL5soiCzhrBU1XiImzJFZUDdI/6rZPELJzDqsEXliN4sB9TzkK8t3nJ1fCY rZM5CaIU0NtxdBym5qvebngDhz7nuNxNaRuTv0SB2W2mExVmLSqpape3g2WRqiWoWbrzAtKuVp4t uEduS698AjorjLLNIrHT+fKmhVdF3WXr1PjqloGU88Cq3c3xP6jnPFcsqmH3U2a1nmJHqJrKG4/6 Ltuxb2R9OX51TEvQrUzTVedcoKQrNzRakWagDoZG23EB4LB8TofyvVnXcZjNNoGMu9NWW1EGJpcv E+pmkKEaV/JWi03UYexA1acAE1chT6T/6XLvMPGbURyfXN/stJXd9RXs59rR/Ar+e3uuel7xXl5m wKSidcd2bBMKtBI/f7vkIlQAk129FlndN3kzZ1FqUGVEombvqFTqdjTecXvLD4sN1QpcKBDSjDfe INvNxktl90U5lmyNKuqpXIQLfQyd8IHwjG5A2dzMUbZNw1aD5KHz/qg2iRe3IUUc1tU8/QNRdrFH oDtsGITx1B+ChVTNbqcc7zdwr2JiFTtvK4JVFaEW+nkzYEyU8sZ0G5S2eoqgKJ8Gg5onsnEYNbV1 QwsQrKQTxYrwol0E2Wtn1UqCJ1HcYyazq2yVdcYbnF13zS7KNiFlYiKziLe4cqsSM/JBv9o5Hl3H WNZlcRAufTfLQYnoBIElWzIRUGnZGhTEL/hz1HMzd/au5ThZPFu6src2pFaNStNexSg/1Rh7lhBb g7DieVlb/X6Hhy/fDO1kNHPLVulpGOdrn6GehdmXxWBS/ioKUlO+IGQrNlea/lsJ/FjLFy6j2YcS R1ZLHsIcZ1s8mwZ+iY7YGO0NeXJRPcMmtsQxiGtbbA8bG511tLh3sq1ZM+EkYrKPexsUruRN5Rvw AWp9fK9aecQrWC0RIPq1kwYls2q0VtZuxSP8fhX2zJqHFY5pLNe5Mhidw0FHqzc7M6OYW2tqAkW0 4kvpLP1oANTGikxGDbf0wUZdPQs3U++AC5uWxBbXQLMqNSHtawryyKAjLMzuCLKMtkUqtLljZ93d 8DJsO6ihzWF6FsjKPT2LIDOw9KoyMR7sgkVXE70mWD8dBGJ28bDquPtbM8Rl3JDF/gVR0JrJEcVe ce5kHLrsgopxagzegkTVksUrIyi1Lce3uLet4grUS8vOoiq2dTD/uYmSrkU1K6eJNEG+7za2SRgo PgiF1PyEYsO2zvGqtHPuRwVnVwi3MvepKD3MzhztHPs1ubLQjEqnjyhPRQLRIGYbRcWpFmdi8hDb fDE4505MmqblHJtU8eAG4I1G40VNrGX6WeMa0nyB5xmu085cOnYKg9LPBgQiTs8YOYja5HaOJ2It U8VjB5YD88QDmKNpgr3VMgDZc3XfyeIYttSAQ1Nyp5Q08C8Z5J5T7avpYl5lP1LNEB9nGEsGOXHr mstGqtFidDUzPn+qWUNqa8O2g3QUySD+BJPbpJbLtW7ndlAIVY2+RNavAP2oJFKxehpqpOfaRoFj WYko+JueC9GVQ9eTGpmwRSu9QRfkYgC2DRDBBHlRCe5ixL5jCWuq3ID0bVVD5WwVPcPANqQ5pbON YvAFJvjmU+sDnqb8/BuRvT2BLZ4fCwYCaldMqHPCz4ZmC0VPO5dGpTJsHyaurihmrfLOB5GpL/wo 3MU2OeZ0sUAOsmZsGcTflqXCilICJv8wTk0tF9KFjZZgEiTl1RYcR1b3RgdO3p67zVuyj3X3PW2Q S9y8BU7jH6wmKOk4gTRv+LAeSjZ/UY8jK2lDYq/hK6sh/jYLMZxELlsqAtGi9gesuIg1MLigxDdn pU3SngorfgL5BuNu9wTB+KaibLTA0TJK10cwmobR+7Z4sDiu9duqhA3pcJmIOBujxOtCbLYKvWBC uSQhPiatxEreuFU8mtpHayevEceKZsbak/30TvEVWpArs5lquzy6nCw7iqiu8rS9OntWj1gDxKm7 diJfs5Hh2XftYcCKOLS0mCDeNfnxREZgtlquQeQ1jABOokM91NFEtCrqlx3b89Qxqnfzb7b4Zce4 F4pUjd3FkaHCOJQ6wwY+ZSP71HMQlKlK2zoGfpMZY23dbV1iHaPX1jUPWikNMSrEmTb9qPLYRf3c nRm3CbjITE2WzERGRbdeu4D93zbg0+v41arF9y2tGm2tPsNHmWd7xU0chsWxdTbdYl89gfZJLQ4E 7zVD6xMGZzE0HSa7VbnxaWmMDeOyrbK0Rua3qqquFVbH2D0t0jF59iJJIF0zYwZsG98P8FLqUzJ6 qppbyBOhtM2cWVpkNxTRPdvBZkPIt3wXZ/GSTtHN+oV5OasKFKp2UQgfAb8XaRDaTsKjdLAVZcu2 oWtd8YfoK0yeja22UaIuE8q36BMsN/z6DOBTHXP4MNpkYA2nQjXz7j57HqPGDG4ofVsnMBZjph2g jVObkj0HDUuQmtp8y/RaFILGttiTSSpANXnB4fGppQfRoI7W+lyaGzNRdyaLNRD4xrPShqn8/hcH t74F3xdmePsiQ1bqFttX1Pv1M5vWeLfq+7i2l/YFgbi+BNj45wer3tdQJT4C+wLQvY9lf0Dp7yVb LyncgJeisw6ErFud0tlZK1CDsn4DpRzKsa7Y6P5N53PUwTYtQV7XHCddCZFzcdfIGhKGE2lWuTKP C9UdDVDmsolRib/S25nRYiuWNcryULt6/ayfLeWxvMo73PJ7UcCbU0TNRgny2KjTsnMuZz6Dlmqq w/umPcNL0EyrqM7wmWsMdNwjNpXJ8bd7TlQUydVotQyRWrOHpeOT20YVOI5ZvQkPZk7mZSkrDLoy 2JbemyZ1LVM1FEAxOi6jxbfxIbV1U/498p81jP/zkqUoE7s8jjFlDayLDnFUila7S+PnqrpQPORa RUePcXwy8lfhRjBPJekI2a/tzL/XTpbJ0aJc/njThqtpo3lT8gpItKmyU5RRq6vzfSKg0ViVwlra GJ3g0K2MjQfYRvMEPlQ1HU4cRc2+QszNy3bKBLoXraQbAeeGH7TxwUtwE9Xc0hneHK2Zjc/lB5Ai 0uoKFMfwXnQAzn3RPlOaHPllsnP9tl3pBHY6rCPq6D5N7wb/0Jb3cVJOdVKgy7HBONtBc2HiOh3a DC+qOJ8y0UdtZ+8NJd4Q15GU/hiHRdyfTjGnjquyAulHWatapXj/VGYQHz3TSy0i4q1MycqVOZM6 5k0S8siXclXyFEklsGO1ikZOUT0gt/Fa6jwN9KquEaMxW9tScwlRSWZbgRjk2aGkRZlLj+56Gdh9 VBOrxSERp7AV4Zw9tgOLPnQVH3uwSNFxGBS6ZXHGLGIUn5lR/xovAvNh1/VoIlCj2PByMztSHBV/ UzJp+AkVNV2gqAUf9krZtjJduIiH9eEQoob6UaIQxnJsHeLAKK74y3j+NdKD01M1mJQlqeePJDnX ZeMzXiHlQ4cem0W8BqDkfObUpoim4yLYSkmCUHFs5RJf19w26ouzcRtev3WSxVXCVJjUGfWJcYpK wEhQzyZujU/GljOlgXLSmagohV7Uj9Fs0m0ru+dmgBOga/84g5ol71EYmROde2Fp+FYGYNt9mjbf Bwu8wZq3LWHiXrEJ3zomVzkW+iWcDg8EBl6fBUFEyKon2rnsSxL1znrggdBY9mLGydyMmNVOPJNs zHF2mwKOU4UWUa8mSk4DQAC8Ka5GiHpvuX+0H9yRenUpwy1/8bqfTC/5RvNwT5kLP6VkyxZCyY88 q9pcTML18lDNNKdGih8Lq+kjd7J3k+DArditk5xhqWhsjmvZVnjjZrnERjyFq2wnNuW/5ppB0TAf 4CKYMrulphdLfblKwxggMsDxRF80kp4kca3TNx+652vGd2ZJhUyLbYiBrqXqfiD+25x10Y1B3aMW WYl/uCR7UWdPpKohP3It+tyDapifGmEtdFRakx2af7LHADpIzzYFagfq8olmEfXzzAokR0Cg4z6k UWWOCw6sW/TWdaudDifOJeRrKiY6Pj50VBqTFYfUcgE5kid9DRDX1abKJPaxLnPl+tXMPxKVtPtj 6YJD2Lb6+USfmBkwXnrNaY4aNr4sQ4Mx4p/m9dKbO51/vJGVuBA8kQnr5rAFfj12TDPnDf5Vqv/G 8ZebfjDklapkKP7+R/wpv0rAoU1X12HVaaXAvM0uQJhy1ExqbhizTze5r2xpyTdt9/NBljWtkfKS nZ8qLaemUMq3ZKPzOIyLh8wukq1NnlHUsxB1LeHwCvkEIzVcUBofop6P0AtWVoVaIwZ9WitTSZR0 uuK58p2NPoYz16F0WXZuqyfuxk6uQcyhIuVgDot3qZViU2b0WEsred7ZUfw7jDtNBwzXKrYxnSjW YFDeLccUbWDh5ljE261HVGOxpUM25J9maGJG3jUvZ8C8HyqWjj7gPXbzvMlsVfS5JvLb66L4i+BC WOJQnJBSFeVafWijUvOHUNp1n1CiOaXnMhphbVrF4gztltlV4j0dBoDnetY1KVACnUTc/Q4NO7Wl fl5PzMzUrSlNipq0qjrKN3rP4co9OD+xuWFLF0d+84Ax8GzaisaZvzxFnaFTLZ4lU4H9mrrj9GwW k8prdBNXsEfNplQlL9ysfqgV3HwcfQfKStvt0dFqFbvW9njjqBMsD8Kr869XQ8pzwB4FmI6qk+td r7uxEif8anb/zjHfA89Ol8T42+QFCOwNaI6JbimFEUhFG9a6A1RQJQVviGXz4RXdvsbjT8g6FwOm mszZhzVUwxvvYsMTiLU8Jhu/qwI2CTu3oNb4y2u1RKpGKozt1iZeJee5chb26pYYPkmjWV/rQGvI vutrckPEM0WKC0l/XB6upFajivS/+8qCQ01kFoVpjUUrlUNGVlLFPrJJW0+tMXVewhArjn5zTyxU fE6LSiu6Wnu+wHkb0a9DeMu2pl9ZCZff+Wbuh7Av1F8nK0xr+yF0wPFG+muaT0a8e7NZEmidbZX7 Ved8V3Yg3k/tw3LhmTARHKC2CnSyWWmLdzfe5V97Vhqzm2Mp6vbU1BU+oZ9rKieW5qwcFib1W+/7 OOOGAU/Wgabo3ZZYnajImLrCFhJtMscpH1maXxNhlMZaHuNV0XqtHGaT1+zAfW2+FK3f1oTIhD7S Qy/jPJrKF6NgGEl5neREOR4LCHLTy0dVaC+xyk6XPjk6mWJ5Rp1/qVFzdodFoUQPikPn3kUZYXIX 5KzDznnUeW1Yym8zBMt1UZqPb9PUbTDPzHAEF2KlZOQlt5WzaSATXP/YsTk1VCjNXN/2qrOc1Zpt FZYu+8/wPV0os+PYRMV3h3xaXtZ4MxXswHc1s8YP4vKdl5jlA9mqH6pdyF7b1g7fnVXM6JvNfjuQ yG0fFIFSH0l/H3DLIbebk7LX5VjQE9W2/7V0+mkG5nsEyPNFw9rIprIHOGsutt1ITJYzUCcHD8su VWNZIQEzxWrjWGg6+4ifKI6W+gkBCbCCuB+z5VLU+LsMaBafkx2Cfr8+28Y0lS9I5PWwUHNEQQr8 hhqXvW65VMUV70O3Sfqk1JQPNe5xw24Su9O7K8PiL4tbxJalcTNHWW0+gU1QzjLeA4MeuXQq0YYe zQRgq1jXBLfdF855mck5qizGFNqPZ6qB2pQ9CJ7G2it0KB6FMqDFGYR2HpiyTxRuxojEJlNjQ3AX 6RbtWqIwESFCXT+EE0Sosv74BDWJK7qj6JU9HwWyoGY7Xm6cVuglFclIb2FtUHz9XQllxFyv7uTt AgJc9LgwFDRb7ICBi3vOEqw//aroOe332p/wLDIS2HurphipmGmsV6IqdEXBT+C42HHi63wLRx9i 4VwDUa5llkL+UelkGUcmYXcpZ4EyACDyDMPForr6mPBByE8x8Sr/yG1Dc0rMZNYYnI/qOzvhvl33 oGUd4qHupr0Rppyr8RapfJu8R32Jkd+3ZIQZRn16vzXc40tjaKK3tlGlu3Be3pp92JLWMJLVlWzB vqaSU6IcjHdb9fKML7tf0RyE+nvJHnRDcznpgXpgAc77CGh13kKY7utTq8MbMsR5Ts/hTIHpXEal rlwVLm87HosC4qsumibLM7RZh8hHxeFmhqFnSGYmzXjb8nYIQ2YUqvOchDvCOw1GCfLCFWBhtieM eqDbqA9V1M7KZfQm/PvOPYJ0RlHDtt18L+LBtg64HvCo60nidJjGZ7gvnO/VXsFerrKeOGJRRqvh upA+r/ITPltrlu5rPXLKDWFfmf6o4ZvRhFTQODssh64BvVDwKgOxti0fp7IYHrZZxs6mP9TVNZX6 KTQ0nNR4C8/jHdWefS8FcrvZVq4oQXbg7zHjr1eBoI1hRgDyvuyQiCu9Kj0ZYphc9O2Q8pUdntYJ F9C/vxxq3ye0gaiAgRwuO6PiUhdBB0jhpZLXBrbVJAP8bUSQ6OCKMVnzQ5qRq3ZCV5cN8XxlWJS2 u5vP93iEB1KDkVHXzChnAsOn0NijXPg129OZUQiQLzqMOmqJHPHlZBKYzFSUpwY5A8fCKqVjom3D O9aHdRfv2/YJuTONdSdUq32k23qJR6N5Nqbkmbn2Jt3/xNUytCVjciFOAeQjZbvTYhqjjNemmLwK LrFpV60ZemaKKPdNZk66ctYAJz7YZOoPRIeqh4t6bVVnfQ4Kf+lZOmeUR1A2WDPJGcQrGT4XNFZ8 iHo137CKQKNnc8Qs1C8PgSR4YZuVFHum6RSQ9WR7vk2tfrc2vSYbqI11ITDZkirCgbm9Zt4Q/UFS Q//AB/V9ZMi1WY6TCxm1ysgBUZozAoqklciElkpDCJC8qVnjpkBu1EGm1lngfD1wm1AVrdnohJQ4 Xdgb+XdtdfsrdmlFiexavLr17WI1sXVxnzkLU3Y6NgHu+otjGz35Oq1zY8zNbfFdXfbVBXcSzJYe TdcarmEV0R0Xc82m582FFltIFkzDeRDxtm5tpyuiVEObFkAfes/TDMbHajvkOIGTwe9zBW/k+bhR yvdqcYAVjcVWSQP1pi04wDtNVY5MtmfTwysn0FAbQ8fbpsUha7NU9Sm+TtfpkymEbXOWbGQL4r2b m5VuSNceOM971wCK0ng6TEfPhkQ/gJud+UTLdXOStWN7WublYKU2DMbD0Hx/huVK+TOypnzd9ReO Az6HzuYpUO8wmndTkcVRdmlKKZqnzQHJNcBrqmVN70WlZcb0fn21F0pu/N5uzg2r1tKTKTm7pd3E 8+Impzz4wjUsFShCNabbXnFIWIg4WxqrDPEStJFtJB9HzFLxBpGqehvMvnq3kyd349TNrUT0XBnF q3CXhGV91LASNSsmSAIrJvbJOFTMjYbxtu3uEJPLS0hJuHbTxxW5YamemDWmzRriO4ErqN8VQ5i+ /7VL57U5GobZoibkQvLafhG7aLh4FFNTVVOET+dhMxCzij4VEeAW67PjE8MAo163tbUeuVHo2Z9j G7APnAFVN63xoNQzV9IFFOXuk2evCjRPv4URN6qpHg911Vad7iqNY8GMDJDi4qU1eSCZKdtGfrwv cgwQW2YYv6tTF5tqsev7Zk1g2DiHTFfPJHhPC8SOhl73XHedEpOi5V7vK2f5ZMjnaSFLvOFqTD8a AoMMT8Rm+TNDGWbBDOLMQwgbTQkrOeVpWpxSlUYUtdfOTiaIKi9lfQKw5Rp2N551ZNJ2YqzZbHGE BW8Pv6QxhmaVvTYTbAAitRcYp2s2BmaJRj5aMxXLXVw3Dlp7NYbEXVvADnlcGiZES+Fqww3Jwr4U bCBKWK49q4PhqDDnBfbHHzrMmEsusKZzxEWQbapI/7SyovEhGwwLXzOQybPli8/P4n3w/6lM/thd WjUL+cJF/hHe9WV8wm1pTWH8CUX/rrsZaTLyKObCXjvZvyBe+G3b3kxFuRV5YXD+p0rMozlbUA6B R7JKW2qEnCgc0nbP0homZLjRi8CHnSBRFUORpOoTJtH/PziXTMep/eqG2Wioo/hgk0c3xXMcbWzT NYdoTh7CSfzGafCeK+2cc7DrTUyxX83GGV+2cUMLeA31wWqv8ohbh05K43aq29wP3OHbKnd7LL9e SQyvPR8MO9/W12RpmyfuLzcn5lO6XVDj70uvZ/TGUk872TvklGKkOCw7Wg2mjNqcsrJetletrtIm PdpnAXGa1u1I3Dg0TV3Lrjgvf47jH6ZHfOMptL1iOw2iJ1egXxtasOPS0i+9o03t42Le3s0+cWU6 XA/Ol4a+Iieu5hrYBkC9PfP5yOQUv4PAeFnobUGRIt9hlBK76ywCOVOqTixHVun9Gl2cFXCsLTgk jO9+2lYrIBADK8ahkiO+lqF94mswk0i8uvEwaml5lZvx5DNYGh8IfF9XhcQUvBJNKUPaJwYl8XNt F1eCMZndRqjxz9J1so8/nlXA7pYtRyttWRtqJ35+/sFas7UPSsMXx5gjRd+OY9fXynb0pkc/D6y/ ikwj4sXToMSry+na+rpG4evV2v8GEdgKCIlTa3Zv3fdOFmrJENcSvnr8NTqNyLyIFr9x/woIR8cI r9qZS8bZjidzGM88LvX3msGvN33cM3xKGp6BpL/5emVhlfcFUxQ1QHPMRbEbMgX1K1Sqbr1UrpMq fJUG3p672ObofhiSchWnly0y7oWowhafB/6S8uVT35eLQpLqnhlmrTUr540opq7OyDtjpKCdNobm W4yIXgmTbAiFzt7KOzc/f/0uJOMMNHTvfQ9ySc7Peh776OCVZlz4p6qn6mbKt0fjGS8jGtyqc4UB 2bO6p3JOqihFJH2JB+/1vVngKXoHDeHQdYpQ+c8+YpzMFPOQxJVoF+itOIs3zkl/jB+HCoMK3m17 41Y/Bi4bzMat0XV4AGmyJVe0AACyy/Pe6Z6WSiHVClZ8pOJ1NdsLk0ZsK+yFg175rCdO3sRZs5IH rEO5uKVH8uDOXN7vtB77GPe588vamtpg7D6b4Z7GuXwN4XTTpcO+aXYf1rEtlixjhrK2KT6XuY3z fa1jC1k0VV6NgjXHEHhEtmi2o2etvRJgYZ+Lbxe2lsFQ8smUXttM4n0pdmRRUOmnWhkiK4Cp1uOr MKsgidrm5c41K23xVnpVbOez2GMFVskCkixFMl6gy627j8pXM4TjidpqlEzAbnO3QDPdeKQ7XTlq KdjO2oEwqJaTFgd8sfjhO2LeCpTnEtvJssxGhwdvCeeMmbcxXEQP/whb4vzLJm9lwqEqMUbHin9j 7h6nikalThZ5NrzXLfPXK5blTjr5+tpNJfWAXfPJ7pCsez7aDV8YlUGcPUMFR30kLS0wCSfDiBdE hmMoam5edihx+WwNfLo/VD7pfkAvpATob91I5Dzwieu2WxZ6/AH6W4HPZV3Vo5E0Ks81QZU57Vb6 ZgbPVK0sipY+mfnqgquuMIg8Ifp2q5L/qvm7vBHVTe04/odls8+ZkqZPXoHr38mqaSSyaA5a5bY3 Qcm1RWwdqp98UsSU9Nw+0F89vzM6rM+k2N3Ss64jy3XKYl9LttwtUZUQtGzwRAzWzaLlgPw5UtdG SFeM11MqnmW51jnRHc3liQsIBt0gbelUp5uMKqUZQCkKSyZx2uNfWJH36BHf+T4DgeN9MV/Uub+V LNVZv2iQF8O1brcy2vJuk9MF8UgOtsOws4lAS1MhG4zgTEQeB2CSIUNDa674BGKFrYsjNWN5lMbN dZRPhJO5+a/8VpRbtpJhaGtXHROSrJMToh2WjUEngjyPu3p9gSpNgEvdPqP8aYxcu4myy/Eb6kNc GAcPbYMa95WeeInmaPng+Yz0PxwSvO1x8csO9clE12SW1Rv3HsVr0vASNvu96Ey/IWIzsCHXg9UB 8RJl+3ajZyH0r9joAD+TSZJL2xoPjFizKx88U3EMy+ZlBKMmm1tOS7xr0V7ZYDOOPJ1KAq/JBle7 y8r4J41sYeYtXwyTWDkAAnwkDX3uLcR4dnPcNqHMCOZUj8gdlWjxLc9otpbq7xLceAsGYaLTan79 2h/P//9n/N8/8tu+/PTLD99+/PKH33/57dvff/v67ac/f/vhh7/+/Jev9euvP/3pxx+/nN/0P7/+ 6S/f4jf94/zHX/7237/89Lff/v23X/7r28+/xi8fRNTzl3757Zff/vSj/E+/4y/85+/+F67znsz5 GAgA headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38c9aeaf230e-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:30 GMT Server: - cloudflare Set-Cookie: - __cf_bm=5xS.Ya3lcqEWV_eIBYWYZsJ6xwMmvLV_k0HmbxdWekU-1771550849.5500004-1.0.1.1-q0mOYiWBY.cqSeEHMXwqmVmEkh1BQSDFdYVLZlj9x.eoviL3G36IeNWkA3SU.T4syEiat5Na6CvNkfU.WsClxAdzeQBmkA9Dhs7prDO4EYI7ywH3LFdjvRmUrLaWGkbx; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:57:30 GMT Transfer-Encoding: - chunked Via: - envoy-router-6694697846-qgfjj X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "648" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199978343" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 6ms x-request-id: - req_54691ab64067411d92b640741de904c0 status: code: 200 message: OK - request: body: "{\"input\":[\"es 2011, 16, 5104\u20135112.\\n\\n\\n\\n 40(149) Stumpfe, D.; Bajorath, J. Exploring Activity Cliffs in Medicinal Chemistry. Journal\\n\\n of Medicinal Chemistry 2012, 55, 2932\u20132942, PMID: 22236250.\\n\\n\\n\\n\\n\\n \ 41\"],\"model\":\"text-embedding-3-small\",\"dimensions\":1536,\"encoding_format\":null}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "376" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38cfbba6230e-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:30 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-78b689497d-r9c2s X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "96" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999930" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_76a9a96a75434b84bfa685086849c1a1 status: code: 200 message: OK - request: body: '{"input":["What is XAI?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "100" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 AAA= headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38d11ba1f64e-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:30 GMT Server: - cloudflare Set-Cookie: - __cf_bm=G3acNERCU.kXMwIq9k3somXUWOlR.dgYkRj5OBg9jx0-1771550850.7403376-1.0.1.1-Xt6BdOlx8UdQ12y9Taku9I59MoBTKOmSDQnK1SN7jvhZUmjSI3t09wabtYy5RnRTxBdq8hD4sRSDvowvZFyqc.c6HDnD84DY4ujVuBEkZhBHFVuimTXcN3eivdy_Cfr5; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:57:30 GMT Transfer-Encoding: - chunked Via: - envoy-router-canary-6bddd69c68-gnt5r X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "101" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "200000000" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_72e8bf1be17f46668685d3814f8613be status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 20-22: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\nnal molecule. The counterfactual indicates\\nstructural changes to ethyl benzoate that would result in the model predicting the molecule\\nto not contain the \u2018fruity\u2019 scent. The Tanimoto96 similarity between the counterfactual and\\n2,4 decadienal is also provided. Republished with permission from authors.31\\n\\n\\n The molecule 2,4-decadienal, which is known to have a \u2018fatty\u2019 scent, is analyzed in Fig-\\n\\nure 5.142,143 The resulting counterfactual, which has a shorter carbon chain and no carbonyl\\n\\ngroups, highlights the influence of these structural features on the \u2018fatty\u2019 scent of 2,4 deca-\\n\\ndienal. To generalize to other molecules, Seshadri et al. 31 applied the descriptor attribution\\n\\nmethod to obtain global explanations for the scents. The global explanation for the \u2018fatty\u2019\\n\\nscent was generated by gathering chemical spaces around many \u2018fatty\u2019 scented molecules.\\n\\nThe resulting natural language explanation is: \u201CThe molecular property \u201Cfatty scent\u201D can\\n\\nbe explained by the presence of a heptanyl fragment, two CH2 groups separated by four\\n\\n\\n 20bonds, and a C=O double bond, as well as the lack of more than one or two O atoms.\u201D31\\n\\nThe importance of a heptanyl fragment aligns with that reported in the literature, as \u2018fatty\u2019\\n\\nmolecules often have a long carbon chain.144 Furthermore, the importance of a C=O dou-\\n\\nble bond is supported by the findings reported by Licon et al. 145, where in addition to a\\n\\n\u201Clarger carbon-chain skeleton\u201D, they found that \u2018fatty\u2019 molecules also had \u201Caldehyde or acid\\n\\nfunctions\u201D.145 For the \u2018pineapple\u2019 scent, the following natural language explanation was ob-\\n\\ntained: \u201CThe molecular property \u201Cpineapple scent\u201D can be explained by the presence of ester,\\n\\nethyl/ether O group, alkene/ether O group, and C=O double bond, as well as the absence of\\n\\nan Aromatic atom.\u201D31 Esters, such as ethyl 2-methylbutyrate, are present in many pineap-\\n\\nple volatile compounds.146,147 The combination of a C=O double bond with an ether could\\n\\nalso correspond to an ester group. Additionally, aldehydes and ketones, which contain C=O\\n\\ndouble bonds, are also common in pineapple volatile compounds.146,148\\n\\n\\nDiscussion\\n\\n\\nWe have shown two post-hoc XAI applications based on molecular counterfactual expla-\\n\\nnations9 and descriptor explanations.10 These methods can be used to explain black-box\\n\\nmodels whose input is a molecule. These two methods can be applied for both classification\\n\\nand regression tasks. Note that the \u201Ccorrectness\u201D of the explanations strongly depends on\\n\\nthe accuracy of the black-box model.\\n\\n A molecular counterfactual is one with a minimal distance from a base molecular, but\\n\\nwith contrasting chemical properties. In the above examples, we used Tanimoto similar-\\n\\nity96 of ECFP4 fingreprints97 as distance, although this should be explored in the future.\\n\\nCounterfactual explanations are useful because they are represented as chemical structures\\n\\n(familiar to domain experts), sparse, and are actionable. A few other popular examples of\\n\\ncounterfactual on graph methods are GNNExplainer, MEG and CF-GNNExplainer.69,104,105\\n\\n The descriptor explanation method developed by Gandhi and White 10 fits a self-explaining\\n\\n\\n\\n 21surrogate model to explain the black-box model. This is similar to the GraphLIME87 method,\\n\\nalthough we have the flexibility to use explanation features other than subgraphs. Futher-\\n\\nmore, we show that natural language combined with chemical descriptor attributions can\\n\\ncreate explanations useful for chemists, thus enhancing the accessibility of DL in chemistry.\\n\\nLastly, we examined if XAI can be used beyond interpretation. Work by Seshadri et al. 31 use\\n\\nMMACE and surrogate model explanations to analyze the structure-property relationships\\n\\nof scent. They recovered known structure-property relationships for molecular scent purely\\n\\nfrom explanations, demonstrating the usefulness of a two step process: fit an accurate model\\n\\nand then explain it.\\n\\n Choosing among the plethora of XAI methods described here is still an open question.\\n\\nIt remains to be seen if there will ever be a consensus benchmark, since this field sits on\\n\\nthe intersection of human-machine interaction, machine learning, and philosophy (i.e., what\\n\\nconstitutes an explanation?). Our current advice is to consider first the audience \u2013 domain\\n\\nexperts or ML experts or non-experts \u2013 and what the explanations should accomplish. Are\\n\\nthey meant to inform data selection or model building, how a prediction is used, or how the\\n\\nfeatures can be changed to affect the outcome. The second consideration is what access you\\n\\nhave to the underlying model. The ability to have model derivatives or propagate gradients\\n\\nto the input to models informs the XAI method.\\n\\n\\nConclusion and outlook\\n\\n\\nWe should seek to explain molecular property prediction models because users are more\\n\\nlikely to trust explained predictions, and explanations can help assess if the model is learning\\n\\nt\\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6359" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/31UwW4bOQy95ysIXXoZB3Yar+Pe2qZoewzQAt3WhSFL9FiNRpqKkpsgyL+X1MT2 7G66lzFM6lHvUY98OANQzqpXoMxOZ9P1fnL9Zqn9z8/vP1x/uN7f6F35YpdfL2/iDfb2b9UIIm5+ oMkH1LmJjMPsYhjSJqHOKFVni8VsPp9ezWc10UWLXmBtnyeXcXIxvbiczGb8+wTcRWeQ+MQ3/gvw UL9CMVi84/C0OUQ6JNItcuxwiIMpeokoTeQo65BVc0qaGDKGyvphFQBWikrX6XS/4tBKfXn9sYGY 4N1d77ULeuMRXqfsts447eEjg713LQaDDSTcYiLIETrMu2gJdLCQ0eyC+1mQoBBaSeNQDfIOoU9o nZE2EcQtbLw2t5NNvIPaFmqg13yfKV4nfw8M6lhO/cvQ2GPK96Ma5/CJa+KdwdRnsI5MIeKb868I rOVA7NWoiomFVaStNrmwpMot6IGQ8LdIJrk+cxfGuXN4+z9AF/bR7xE6F1zHSXZEaLH2Rh/uxhcE lFNheMKa8VwOXKaDIO7Wk0aH3IlO37rQStc60FVufQ8h6YQJo3KNbJmrjZ20mFkxnNlePy9D3gSo pBRbdudT04UMX7x3FoHPlcQKGNEW9la9zjAFZzh6as5ko+V1x7UbwMC6jZDWhi1MbuO84wcTgrUG CTV5GEew174c6Rf2dhK3WkFXWmOrNOC6ylD6kQrlpvIqwcQ9JokeOzs52iShH4jtXE+DU4bZEuOd 3MGiegzs3jg4VBfrxOCDm8WyJfWRKipXtx0ln69UM0wR34V71o5rMjGhTNNyFR7Ho8fjUkjL5Ifi /SihQ4h5YCpD//0p83gccx9bFrWhf0HVlt1GuzUvGuKtwyNNOfaqZh/5+72uk/KPDaG4UNfndY63 WK+bvZxfDQXVaYON0peHbGaOfpSYT/9qnim5tmxK52m0k5TR/Ph2hL24Ou0waXc85aZnI+3/pfRc +UE/m2BU5Y/lTwl2aM8jtz7Z7LljCWXL/+nYsdeVsCJMe/bXmuc3yXtY3OrihwWs6J4ydmt+tFZm 1w1beNuvF8sLs9TT5WKhzh7PfgPfIHNMjgYAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38d2f81215df-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:32 GMT Server: - cloudflare Set-Cookie: - __cf_bm=Ny_4PEL4BuEDwpP87rFPIC1UP_MXWIABm0.YXHKJHQU-1771550851.03233-1.0.1.1-WCyrw4Dn7bJIkBtpDJgTW4IpJxsyrwsHCCYv2b0l2IHL0S_DY4tOx4jMbhjg11RrK2MwJWxWGAfwMHiQCDNtrmtkGD_cwYqt7E26EoVo015fd66Mw8W7OIKUHonU2MEX; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:57:32 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "1636" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998474" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_77da7bb6ba5d4d72af52c7ec07cfe4a1 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 25-28: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\n2021, 25, 1315\u20131360.\\n\\n\\n (9) Wellawatte, G. P.; Seshadri, A.; White, A. D. Model agnostic generation of counter-\\n\\n factual explanations for molecules. Chemical Science 2022, 13, 3697\u20133705.\\n\\n\\n(10) Gandhi, H. A.; White, A. D. Explaining structure-activity relationships using locally\\n\\n faithful surrogate models. chemrxiv 2022,\\n\\n\\n(11) Gormley, A. J.; Webb, M. A. Machine learning in combinatorial polymer chemistry.\\n\\n \ Nature Reviews Materials 2021,\\n\\n\\n(12) Gomes, C. P.; Fink, D.; Dover, R. B. V.; Gregoire, J. M. Computational sustainability\\n\\n meets materials science. Nature Reviews Materials 2021,\\n\\n\\n(13) On scientific understanding with artificial intelligence. Nature Reviews Physics 2022\\n\\n 4:12 2022, 4, 761\u2013769.\\n\\n\\n(14) Arrieta, A. B.; D\xB4\u0131az-Rodr\xB4\u0131guez, N.; Ser, J. D.; Bennetot, A.; Tabik, S.; Barbado, A.;\\n\\n Garcia, S.; Gil-Lopez, S.; Molina, D.; Benjamins, R.; Chatila, R.; Herrera, F. Explain-\\n\\n \ able Artificial Intelligence (XAI): Concepts, Taxonomies, Opportunities and Chal-\\n\\n lenges toward Responsible AI. Information Fusion 2019, 58, 82\u2013115.\\n\\n\\n(15) Murdoch, W. J.; Singh, C.; Kumbier, K.; Abbasi-Asl, R.; Yu, B. Interpretable machine\\n\\n learning: definitions, methods, and applications. ArXiv 2019, abs/1901.04592.\\n\\n\\n 25(16) Boobier, S.; Osbourn, A.; Mitchell, J. B. Can human experts predict solubility better\\n\\n than computers? Journal of cheminformatics 2017, 9, 1\u201314.\\n\\n\\n(17) Lee, J. D.; See, K. A. Trust in automation: Designing for appropriate reliance. Human\\n\\n Factors 2004, 46, 50\u201380.\\n\\n\\n(18) Bolukbasi, T.; Chang, K.-W.; Zou, J. Y.; Saligrama, V.; Kalai, A. T. Man is to com-\\n\\n puter programmer as woman is to homemaker? debiasing word embeddings. Advances\\n\\n \ in neural information processing systems 2016, 29.\\n\\n\\n(19) Buolamwini, J.; Gebru, T. Gender Shades: Intersectional Accuracy Disparities in\\n\\n Commercial Gender Classification. Proceedings of the 1st Conference on Fairness,\\n\\n \ Accountability and Transparency. 2018; pp 77\u201391.\\n\\n\\n(20) Lapuschkin, S.; W\xA8aldchen, S.; Binder, A.; Montavon, G.; Samek, W.; M\xA8uller, K.-R.\\n\\n \ Unmasking Clever Hans predictors and assessing what machines really learn. Nature\\n\\n communications 2019, 10, 1\u20138.\\n\\n\\n(21) DeGrave, A. J.; Janizek, J. D.; Lee, S.-I. AI for radiographic COVID-19 detection\\n\\n \ selects shortcuts over signal. Nature Machine Intelligence 2021, 3, 610\u2013619.\\n\\n\\n(22) Goodman, B.; Flaxman, S. European Union regulations on algorithmic decision-\\n\\n \ making and a \u201Cright to explanation\u201D. AI Magazine 2017, 38, 50\u201357.\\n\\n\\n(23) ACT, A. I. European Commission. On Artificial Intelligence: A European Approach\\n\\n \ to Excellence and Trust. 2021, COM/2021/206.\\n\\n\\n(24) Blueprint for an AI Bill of Rights, The White House. 2022; https://www.whitehouse.\\n\\n gov/ostp/ai-bill-of-rights/.\\n\\n\\n(25) Miller, T. Explanation in artificial intelligence: Insights from the social sciences. Ar-\\n\\n tificial intelligence 2019, 267, 1\u201338.\\n\\n\\n\\n \ 26(26) Murdoch, W. J.; Singh, C.; Kumbier, K.; Abbasi-Asl, R.; Yu, B. Definitions, meth-\\n\\n ods, and applications in interpretable machine learning. Proceedings of the National\\n\\n Academy of Sciences of the United States of America 2019, 116, 22071\u201322080.\\n\\n\\n(27) Gunning, D.; Aha, D. DARPA\u2019s Explainable Artificial Intelligence (XAI) Program.\\n\\n AI Magazine 2019, 40, 44\u201358.\\n\\n\\n(28) Biran, O.; Cotton, C. Explanation and justification in machine learning: A survey.\\n\\n \ IJCAI-17 workshop on explainable AI (XAI). 2017; pp 8\u201313.\\n\\n\\n(29) Palacio, S.; Lucieri, A.; Munir, M.; Ahmed, S.; Hees, J.; Dengel, A. Xai handbook:\\n\\n \ Towards a unified framework for explainable ai. Proceedings of the IEEE/CVF Inter-\\n\\n national Conference on Computer Vision. 2021; pp 3766\u20133775.\\n\\n\\n(30) Kuhn, D. R.; Kacker, R. N.; Lei, Y.; Simos, D. E. Combinatorial Methods for Ex-\\n\\n plainable AI. 2020 IEEE International Conference on Software Testing, Verification\\n\\n and Validation Workshops (ICSTW) 2020, 167\u2013170.\\n\\n\\n(31) Seshadri, A.; Gandhi, H. A.; Wellawatte, G. P.; White, A. D. Why does that molecule\\n\\n \ smell? ChemRxiv 2022,\\n\\n\\n(32) Das, A.; Rad, P. Opportunities and challenges in explainable artificial intelligence\\n\\n (xai): A survey. arXiv preprint arXiv:2006.11371 2020,\\n\\n\\n(33) Machlev, R.; Heistrene, L.; Perl, M.; Levy, K. Y.; Belikov, J.; Mannor, S.; Levron, Y.\\n\\n Explainable Artificial Intelligence (XAI) techniques for energy and power systems:\\n\\n Review, challenges and opportunities. Energy and AI 2022, 9, 100169.\\n\\n\\n(34) Koh, P. W.; Liang, P. Understanding black-box predictions via influence functions.\\n\\n \ International Conference on Machine Learning. 2017; pp 1885\u20131894.\\n\\n\\n(35) Ribeiro, M. T.; Singh, S.; Guestrin, C. \u201D Why should i trust you?\u201D Explaining the\\n\\n predictions of any classifier. Proceedings of the 22nd ACM SIGKDD international\\n\\n\\n 27 conference on knowledge discovery and data \\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6381" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/3VUTW/bMAy951cQvnQDnCLpB5Lslq7F0J6GbsOKLUWgyLTNRpYMSW4TFPnvo2Sn 8bb04iCkSL73+PE6AEgoSz5BIkvhZVWr4fXVTKjJnRTyp1+r0cPd5lf55XN+XsmXYpKkIcKsnlD6 fdSpNByHnoxu3dKi8BiyjieT8eXlaHo5jo7KZKhCWFH74YUZno3OLobjMf92gaUhiY5f/Oa/AK/x GyDqDDdsHqV7S4XOiQLZtn/ERmtUsCTCOXJeaJ+kB6c02qOOqF8XGmCRuKaqhN0u2LRIvpcIuJFo aw8Wc7SoGQpUjfLE7ODF2LVjjwrUwBu42dRKkBYrds6tp5wkCQW3XEUpKkI4fHiY335MgbRUTUa6 ANfYZ9y6FHIrKow5UxA6A1HXiqQIIrpT4DAgBxk52TjH9UiDZ4CRw8aDyaG25pliTgxAdBsacz01 LsLpTLmxUAlZkkZQKKwOQbEVXBs1QwoGb4V2tQi0tx2kLLOscnBym5VCXbAgitYIKxJtKW+5VkDH gN3WeawY/bcaZajfaSbJRwZBA4Tr+f3X+YmLFJlDwTqke1nA6D4bqNCXJjuiUKiYE6qsw4MabbHd I4jPK54F2ShhuQpmJDtluc0O+w0uqSi5XaWPAlNVG8uTw71jjWMbGIZYBxEOFNnoeVAs+tj9iE5K 0+j4n+FywqjyC/mSixWMwxu7jS+ZE9NQoZeOMrQdI9fIEljVgOLmBwt0YltUpi/JSas6v2E0V6RU gHkfHrrTRZK2c81Dis+Bw9JJYzHM92yhd/1lYAEaJ8Iu6kapnkNobXwLKazhY+fZvS2eMgW3beX+ CU1y0uTKJa++4zvAS+a8qZPo3fH3MS5489fOJpyoqv3SmzXGcuNJeyjitu5vSs99Pu28njGqnmM6 naVHUi4z7hAp17sSCd+1ErNeLN+gNxKCt9QcfKNBj/v/kI6lb/lz73tZ3k1/cEiJNW/J8jCrx55Z DHf3vWdvWkfAiUP7zNd06Qlt6EeGueBj1l7adpCX3LQiDDK1dzGvl5PZmZyJ0WwySQa7wR/TAxKb IAYAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38d2f8d6c6bb-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:32 GMT Server: - cloudflare Set-Cookie: - __cf_bm=B9EKy8MSpGCY32EmzzEb.YAhxh1w1g4DQ8HK24NT33U-1771550851.0377984-1.0.1.1-_JO8QMqP57eY4mqOrxCvjNx2h5glQyttg60GEILTPw_U.PgTzAdEA.NTZTVe_RSfAKPirM9gNfozcj2Y4B3F0ho2e.pBuS3V_3xgm.4FVqeqme5fdQJm.olbU.26GpQE; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:57:32 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "1693" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998478" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_8e17bc7bc0ce4c36bf616b0367185da5 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 3-5: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\n a passive characteristic of a model, whereas explainability\\n\\nis an active characteristic which is used to clarify the internal decision-making process.\\n\\nNamely, an explanation is extra information that gives the context and a cause for one or\\n\\nmore predictions.29 We adopt the same nomenclature in this perspective.\\n\\n Accuracy and interpretability are two attractive characteristics of DL models. However,\\n\\nDL models are often highly accurate and less interpretable.28,30 XAI provides a way to avoid\\n\\nthat trade-off in chemical property prediction. XAI can be viewed as a two-step process.\\n\\nFirst, we develop an accurate but uninterpretable DL model. Next, we add explanations to\\n\\npredictions. Ideally, if the DL model has correctly learned the input-output relations, then\\n\\nthe explanations should give insight into the underlying mechanism.\\n\\n In the remainder of this article, we review recent approaches for XAI of chemical property\\n\\nprediction while drawing specific examples from our recent XAI work.9,10,31 We show how\\n\\nin various systems these methods yield explanations that are consistent with known and\\n\\nmechanisms in structure-property relationships.\\n\\n\\n\\n\\n\\n 3Theory\\n\\n\\nIn this work, we aim to assemble a common taxonomy for the landscape of XAI while\\n\\nproviding our perspectives. We utilized the vocabulary proposed by Das and Rad 32 to classify\\n\\nXAI. According to their classification, interpretations can be categorized as global or local\\n\\ninterpretations on the basis of \u201Cwhat is being explained?\u201D. For example, counterfactuals are\\n\\nlocal interpretations, as these can explain only a given instance. The second classification is\\n\\nbased on the relation between the model and the interpretation \u2013 is interpretability post-hoc\\n\\n(extrinsic) or intrinsic to the model?.32,33 An intrinsic XAI method is part of the model\\n\\nand is self-explanatory32 These are also referred to as white-box models to contrast them\\n\\nwith non-interpretable black box models.28 An extrinsic method is one that can be applied\\n\\npost-training to any model.33 Post-hoc methods found in the literature focus on interpreting\\n\\nmodels through 1) training data34 and feature attribution,35 2) surrogate models10 and, 3)\\n\\ncounterfactual9 or contrastive explanations.36\\n\\n Often, what is a \u201Cgood\u201D explanation and what are the required components of an ex-\\n\\nplanation are debated.32,37,38 Palacio et al. 29 state that the lack of a standard framework\\n\\nhas caused the inability to evaluate the interpretability of a model. In physical sciences,\\n\\nwe may instead consider if the explanations somehow reflect and expand our understanding\\n\\nof physical phenomena. For example, Oviedo et al. 39 propose that a model explanation\\n\\ncan be evaluated by considering its agreement with physical observations, which they term\\n\\n\u201Ccorrectness.\u201D For example, if an explanation suggests that polarity affects solubility of a\\n\\nmolecule, and the experimental evidence strengthen the hypothesis, then the explanation\\n\\nis assumed \u201Ccorrect\u201D. In instances where such mechanistic knowledge is sparse, expert bi-\\n\\nases and subjectivity can be used to measure the correctness.40 Other similar metrics of\\n\\ncorrectness such as \u201Cexplanation satisfaction scale\u201D can be found in the literature.41,42 In a\\n\\nrecent study, Humer et al. 43 introduced CIME an interactive web-based tool that allows the\\n\\nusers to inspect model explanations. The aim of this study is to bridge the gap between\\n\\nanalysis of XAI methods. Based on the above discussion, we identify that an agreed upon\\n\\n\\n \ 4evaluation metric is necessary in XAI. We suggest the following attributes can be used to\\n\\nevaluate explanations. However, the relative importance of each attribute may depend on\\n\\nthe application - actionability may not be as important as faithfulness when evaluating the\\n\\ninterpretability of a static physics based model. Therefore, one can select relative importance\\n\\nof each attribute based on the application.\\n\\n\\n \u2022 Actionable. Is it clear how we could change the input features to modify the output?\\n\\n\\n \ \u2022 Complete. Does the explanation completely account for the prediction? Did features\\n\\n not included in the explanation really contribute zero effect to the prediction?44\\n\\n\\n \u2022 Correct. Does the explanation agree with hypothesized or known underlying physical\\n\\n mechanism?39\\n\\n\\n \ \u2022 Domain Applicable. Does the explanation use language and concepts of domain ex-\\n\\n perts?\\n\\n\\n \u2022 Fidelity/Faithful. Does the explanation agree with the black box model?\\n\\n\\n \u2022 Robust. Does the explanation change significantly with small changes to the model or\\n\\n instance being explained?\\n\\n\\n \u2022 Sparse/Succinct. Is the explanation succinct?\\n\\n\\n \ We present an example evaluation of the SHAP explanation method based on the above\\n\\nattributes.44 Shapley values were proposed as a local explanation method based on feature\\n\\nattribution, as they offer a complete explanation - each feature i\\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6340" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/3VUS28TMRC+91eM9tRKmyhJW4VwA4UDEkeQkAhKHXs2MfXaix+hoep/57M3TbZQ LvuYmW8e3zweL4gqraq3VMmdiLLtzGj5fiHMfPlepuulvf6p+HrGKR0Ovz9/We6rOiPc5gfL+Iwa SwccR+1sr5aeReTsdTqfT29vJ29up0XROsUmw7ZdHN240WwyuxlNp3gfgTunJQdYfMMv0WN55hSt 4geIJ/WzpOUQxJYhezaC0DuTJZUIQYcobKzqs1I6G9mWrO/u7n4EZ1f2cWWJVlVIbSv8YQXdqvrw 0BmhrdgYpnc+6kZLLQx9BNoYvWUrmS6/vvt4RTqQoMaLln85f09Ct6xIRGrFvbZbijsmxVIHEDM6 yjrvUGDgQK6Bndxpy2RYeJu1hZ9QUycQVyYjvDnABXdnk8vlp6uTnUZOvvMcS7LCKkogyufSVRaN CXnCau/MnnOy8ZcbhQh/xzzeUqNhXiPIno3rcgRhSUiZPFpImxSRKGiD45fBlp/6LOoSFqUCpVTG c+bPijwOgaIjHQPCsdKyiMb0eceBX5ohnb1WTKVHD7H4lCJlnhrnh3AUrVgY8OKahn0OqG3Q2x2i IENXWC8smEOhlDGiVoc29GS0HHdOBXi3tOEM8Rkv6XKTtIlnH6W6K0J0JPRsI7rOaDS5cyGOoseY IMbVmD7shUmoBQFfMh4BBYn4NPoeLSpFiI02Oh5qOi4OW7Qi/3mPtep/lGvhnUpAeQI0KL7/8m6T wtE2sxWSlNr26PGqqvvB9mx4LzCx6wDvnAd8OlnZp5XFCgyXw3OTgsi7aZMxA4Ww1sW+S3ktvx81 T6dFNG6L7m3CX9CqATdht8YpwKblpQvRdVXRPuH5vSx8erHDFRy1XVxHd88l3HQ2X/QOq/ONGahv 3hy1ETmaoWI2r19xuVaYXm3C4GpUEkvIaoCd3s5ORYiktDvrJheD2v9N6TX3ff0YjIGX/7o/K6Tk Did0fZ7818w85zv8P7MT1yXhKrDf47quo2af+6G4Ecn0J7IKB5yFdo2mbfOS6/5ONt16vpjJhZgs 5vPq4uniD+bJ6HgwBgAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38d2f86fcb6f-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:33 GMT Server: - cloudflare Set-Cookie: - __cf_bm=DWvUZeIxzJmWDXAuin_6RIW5ftihZlGdO1WpZ65MPBc-1771550851.0351903-1.0.1.1-BKbEQoaXlK.7HTZPP.53N99.dKdbgSbCM0C6nYZl4oOAgZYZaDYVtaifrzERxIu5WJDy9kqoYiXfcfinfwwP2ilmCLeSWOuou.vXxax1Gt_.xq75R6uumMWKKg3cZCZH; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:57:33 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "2124" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998482" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_8376dc0334a340538a1e5874b5b1b82b status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 1-3: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\n A Perspective on Explanations of Molecular\\n\\n Prediction Models\\n\\n\\nGeemi P. Wellawatte,\u2020 \ Heta A. Gandhi,\u2021 Aditi Seshadri,\u2021 and Andrew\\n\\n D. White\u2217,\u2021\\n\\n\\n \u2020Department of Chemistry, University of Rochester, Rochester, NY, 14627\\n\\n\u2021Department of Chemical Engineering, University of Rochester, Rochester, NY, 14627\\n\\n \xB6Vial Health Technology, Inc., San Francisco, CA 94111\\n\\n\\n E-mail: andrew.white@rochester.edu\\n\\n\\n\\n Abstract\\n\\n\\n \ Chemists can be skeptical in using deep learning (DL) in decision making, due to\\n\\n the lack of interpretability in \u201Cblack-box\u201D models. \ Explainable artificial intelligence\\n\\n (XAI) is a branch of AI which addresses this drawback by providing tools to interpret\\n\\n DL models and their predictions. We review the principles of XAI in the domain of\\n\\n chemistry and emerging methods for creating and evaluating explanations. Then we\\n\\n \ focus on methods developed by our group and their applications in predicting solubil-\\n\\n ity, blood-brain barrier permeability, and the scent of molecules. We show that XAI\\n\\n methods like chemical counterfactuals and descriptor explanations can explain DL pre-\\n\\n dictions while giving insight into structure-property relationships. Finally, we discuss\\n\\n how a two-step process of developing a black-box model and explaining predictions can\\n\\n \ uncover structure-property relationships.\\n\\n\\n\\n\\n\\n 1Introduction\\n\\n\\nDeep learning (DL) is advancing the boundaries of computational chemistry because it can\\n\\naccurately model non-linear structure-function relationships.1\u20133 Applications of DL can be\\n\\nfound in a broad spectrum spanning from quantum computing4,5 to drug discovery6\u201310 to\\n\\nmaterials design.11,12 According to Kre 13, DL models can contribute to scientific discovery\\n\\nin three \u201Cdimensions\u201D - 1) as a \u2018computational microscope\u2019 to gain insight which are not\\n\\nattainable through experiments 2) as a \u2018resource of inspiration\u2019 to motivate scientific thinking\\n\\n3) as an \u2018agent of understanding\u2019 to uncover new observations. However, the rationale of\\n\\na DL prediction is not always apparent due to the model architecture consisting a large\\n\\nparameter count.14,15 DL models are thus often termed\u201Cblack box\u201D models. We can only\\n\\nreason about the input and output of an DL model, not the underlying cause that leads to\\n\\na specific prediction.\\n\\n It is routine in chemistry now for DL to exceed human level performance \u2014 humans are\\n\\nnot good at predicting solubility from structure for example161 \u2014 and so understanding how\\n\\na model makes predictions can guide hypotheses. This is in contrast to a topic like finding\\n\\na stop sign in an image, where there is little new to be learned about visual perception\\n\\nby explaining a DL model. However, the black box nature of DL has its own limitations.\\n\\nUsers are more likely to trust and use predictions from a model if they can understand why\\n\\nthe prediction was made.17 Explaining predictions can help developers of DL models ensure\\n\\nthe model is not learning spurious correlations.18,19 Two infamous examples are, 1)neural\\n\\nnetworks that learned to recognize horses by looking for a photographer\u2019s watermark20 and,\\n\\n2) neural networks that predicted a COVID-19 diagnoses by looking at the font choice\\n\\non medical images.21 As a result, there is an emerging regulatory framework for when any\\n\\ncomputer algorithms impact humans.22\u201324 Although we know of no examples yet in chemistry,\\n\\none can assume the use of AI in predicting toxicity, carcinogenicity, and environmental\\n\\npersistence will require rationale for the predictions due to regulatory consequences.\\n\\n \ 1there does happen to be one human solubility savant, participant 11, who matched machine performance\\n\\n\\n 2 \ EXplainable Artificial Intelligence (XAI) is a field of growing importance that aims to\\n\\nprovide model interpretations of DL predictions Three terms highly associated with XAI are,\\n\\ninterpretability, justifications and explainability. Miller 25 defines that interpretability of a\\n\\nmodel refers to the degree of human understandability intrinsic within the model. Murdoch\\n\\net al. 26 clarify that interpretability can be perceived as \u201Cknowledge\u201D which provide insight\\n\\nto a particular problem. Justifications are quantitative metrics tell the users \u201Cwhy the\\n\\nmodel should be trusted,\u201D like test error.27 Justifications are evidence which defend why a\\n\\nprediction is trustworthy.25 An \u201Cexplanation\u201D is a description on why a certain prediction was\\n\\nmade.9,28 Interpretability and explanation are often used interchangeably. Arrieta et al. 14\\n\\ndistinguish that interpretability is a passive characteristic of a model, whereas explainability\\n\\nis an active characteristic which is used to clarify the internal decision-making process.\\n\\nNamely, an explanation is extra information that gives the context and a cause for one or\\n\\nmore \\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6365" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/3VUTW8bNxC9+1cM9pIEkARJtaqqNxcJkiA99FggCgSKHGkZc8kth+toYfi/95Fr WavWuawgztebN2/m8Yaosqb6nSpdq6Sb1k3f/7FRzjb8RfoTH3759Onj3V+r+4+W+/0pVJMcEfbf Wadz1EwHxHGywQ9mHVklzlkX6/VitZr/tloUQxMMuxx2bNP0NkyX8+XtdLHA73NgHaxmgcdX/CV6 LN8M0Rs+4Xk+Ob80LKKOjLezEx5jcPmlUiJWkvKpmlyMOvjEvqB+3HqibSVd06jYb/G0rT6cWqes V3vHdBeTPVhtlaPPCHLOHtlrprd/331+R1ZI0cGyM3QIuhM2FDy1MTxYY/2RLEJiGzmpTIlQOJBh bsmxij47vH3/5zsqXCCKjdXFb0LKmIi2skuqmd7sndL30304vSGvUhc5p4JFeIiWGQEQKdsIpUDs a5VRpthJIuUNdaL21tnU075H7IHjgE/ssU6SgQb6UfdoZ0DTqHsWkpZ1bn8MbkZfuCdQqLktkaWy 9dp1hkcdD+Um9B0Qcg51bg1o+Mxw8ZkVasdRFBkISyu5fcPHyKXlumuUpw4aiHmq5uyPsjE3o3PI cw8TNGQxwmsApEDePx0UYfNUHkAgI1ajGASMUgcGwFy1kPcjxFRbj1nk8lc0fLhqgpTO2RyocSqi HkvJUgjxkI8BlYLIKajN3EMlEDgIucil6PI0DEwryEkgq3hdtZAt1CoIU3co5TJbjh/QUR6GrrmB 4mNfQi9M5fx47nRWzxQ1W46FaDfwUttWhtl46Yo4BmGRCeRDyo59Fre0sIZOADa+BM+21WRYpGco mncCB84LtZhv/dN4/TBcyDFvv++cGxmUR6UhY178b8+Wp5dVd+EI5Hv5T2h1sN5KvcOxEVwerLWk 0FbF+oTvt3JSuqsrUSFR06ZdCvdcyi2Wm1+HhNXlio3Mq7M1AaMbGW5Xy8krKXcGcrZORnep0grj MaNYXL2XJlRnbLjY5jej3v8P6bX0Q/+Y3SjLT9NfDDpvMmBddPaaW+R86X/m9sJ1AVwJxwfc712y HPM8sFaqc8MRrqSXxM0OQzvmrbfDJT60u/VmqTdqvlmvq5unm38B0iw1O5IGAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38d2fb968075-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:33 GMT Server: - cloudflare Set-Cookie: - __cf_bm=s8_3naCfn4Bv7wQy8Ans.zGkGRXKsNKAmDuZYnVf.SI-1771550851.037279-1.0.1.1-YMgqdByy1QDjRn8tqnvSb.qQ0jMxJ6n34ugBChBWSW8nls4l93iKxspsBDSYYS3ePyorjQlGseB2gUf_Upor9nARNE5KxUcsmlaEe1KQE2VEIUyhtPBrTIJLeuaxZi.0; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:57:33 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "2261" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998475" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_38a2131b32d947e28826674d20f90ba1 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 12-14: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\nnterfactual approach, contrastive approach employ a dual\\n\\noptimization method, which works by generating a similar and a dissimilar (counterfactuals)\\n\\nexample. Contrastive explanations can interpret the model by identifying contribution of\\n\\npresence and absence of subsets of features towards a certain prediction.36,99\\n\\n A counterfactual x\u2032 of an instance x is one with a dissimilar prediction \u02C6f(x) in classi-\\n\\nfication tasks. As shown in equation 5, counterfactual generation can be thought of as a\\n\\nconstrained optimization problem which minimizes the vector distance d(x, x\u2032) between the\\n\\nfeatures.9,100\\n\\n\\n minimize \ d(x, x\u2032)\\n (5)\\n \ such that \u02C6f(x) \u0338= \u02C6f(x\u2032)\\n\\n \ For regression tasks, equation 6 adapted from equation 5 can be used. Here, a counter-\\n\\nfactual is one with a defined increase or decrease in the prediction.\\n\\n\\n \ minimize d(x, x\u2032)\\n (6)\\n \ such that \u02C6f(x) \u2212\u02C6f(x\u2032) \u2265\u2206\\n\\n \ Counterfactuals explanations have become a useful tool for XAI in chemistry, as they\\n\\nprovide intuitive understanding of predictions and are able to uncover spurious relationships\\n\\nin training data.101 Counterfactuals create local (instance-level), actionable explanations.\\n\\nActionability of an explanation suggest which features can be altered to change the outcome.\\n\\nFor example, changing a hydrophobic functional group in a molecule to a hydrophilic group\\n\\nto increase solubility.\\n\\n Counterfactual generation is a demanding task as it requires gradient optimization over\\n\\ndiscrete features that represents a molecule. Recent work by Fu et al. 102 and Shen et al. 103\\n\\npresent two techniques which allow continuous gradient-based optimization. Although, these\\n\\nmethodologies are shown to circumvent the issue of discrete molecular optimization, counter-\\n\\nfactual explanation based model interpretation still remains unexplored compared to other\\n\\n\\n\\n 12post-hoc methods.\\n\\n \ CF-GNNExplainer104 is a counterfactual explanation generating method based on GN-\\n\\nNExplainer69 for graph data. This method generate counterfactuals by perturbing the input\\n\\ndata (removing edges in the graph), and keeping account of perturbations which lead to\\n\\nchanges in the output. However, this method is only applicable to graph-based models\\n\\nand can generate infeasible molecular structures. Another related work by Numeroso and\\n\\nBacciu 105 focus on generating counterfactual explanations for deep graph networks. Their\\n\\nmethod MEG (Molecular counterfactual Explanation Generator) uses a reinforcement learn-\\n\\ning based generator to create molecular counterfactuals (molecular graphs). While this\\n\\nmethod is able to generate counterfactuals through a multi-objective reinforcement learner,\\n\\nthis is not a universal approach and requires training the generator for each task.\\n\\n Work by Wellawatte et al. 9 present a model agnostic counterfactual generator MMACE\\n\\n(Molecular Model Agnostic Counterfactual Explanations) which does not require training\\n\\nor computing gradients. This method firstly populates a local chemical space through ran-\\n\\ndom string mutations of SELFIES106 molecular representations using the STONED algo-\\n\\nrithm.107 Next, the labels (predictions) of the molecules in the local space are generated\\n\\nusing the model that needs to be explained. Finally, the counterfactuals are identified and\\n\\nsorted by their similarities \u2013 Tanimoto distance96 between ECFP4 fingerprints.97 Unlike the\\n\\nCF-GNNExplainer104 and MEG105 methods, the MMACE algorithm ensures that generated\\n\\nmolecules are valid, owing to the surjective property of SELFIES. Additionally, the MMACE\\n\\nmethod can be applied to both regression and classification models. However, like most XAI\\n\\nmethods for molecular prediction, MMACE does not account for the chemical stability of\\n\\npredicted counterfactuals. To circumvent this drawback, Wellawatte et al. 9 propose an-\\n\\nother approach, which identift counterfactuals through a similarity search on the PubChem\\n\\ndatabase.108\\n\\n\\n\\n\\n\\n 13Similarity to adjacent fields\\n\\n\\nTangential examples to counterfactual explanations are adversarial training and matched\\n\\nmolecular pairs. Adversarial perturbations are used during training to deceive the model\\n\\nto expose the vulnerabilities of a model109,110 whereas counterfactuals are applied post-hoc.\\n\\nTherefore, the main difference between adversarial and counterfactual examples are in the\\n\\napplication, although both are derived from the same optimization problem.100 Grabocka\\n\\net al. 111 have developed a method named Adversarial Training on EXplanations (ATEX)\\n\\nwhich improves model robustness via exposure to adversarial examples. While there are\\n\\nconceptual disparities, we note that\\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6325" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/31UTW/jRgy951cQOrWAHdhuUse9pdlPtMmpWLSoFwY9oiRuRjPCcEabNMh/X47k xEqbLWDYMB8f+UgO+XACUHBZ/AKFaTCatrPzN79usF2m93+5D7+/WS4+4O1vq/XFp5ufub1ZFrPM 8PsvZOIT69R45VFk70bYBMJIOepyvV6eny8uzlcD0PqSbKbVXZyf+flqsTqbL5f6eyA2ng2Jevyt fwEehu8s0ZV0p+bF7MnSkgjWpLYnJzUGb7OlQBGWiC4WsyNovIvkBtUPWwewLSS1LYb7rZq2xR8N Ad0ZCl2EksUkERIwPikrVGhiQqsOnUWHuVQB1A9E7y2wg7cZYYd7S3AZIldsWAkflW0t1+QMwQ9/ Xn78ESofoFWhJlkM0AUq2eSAMHRHTkG9ALkVja2w77kkzRATR+5pBjh4D4nYCddNlAz7kT8JKDOQ ZJqsU0M41XTProavDaux0hGlkCtEB3sCtFomlTmnztTVBD5FHSypoKv/aQK73tueQCukoDZNQHeY 34PAV46N9rKqNLKLU2WwvwffRW75n8w4iDlkVt0+czJivUE7y4XqOA3NLfX0UsEpXFNsfClg+Zbg +vry6i2gK+Hq3fz9zc1hLhQANUGj7bK5ZVppnsNE9ctJq4ZB/RhuT9lj6O8ca+clshlyYNdZNsMs tHF7r4xAtbZV8kCzh7H5MeprGNRCRLk9jLidyo4Nicoj20FyxveqV7oU2CfRiHYsteEuNxxi0Iqy ohIjDlm4zQ+FlFtSyK0qM+yrw5vYU4M9+3C6LWbj09eY1OeO7sT4QHkFNlv3ON2XQFUSzOvqkrUT AJ3zcVSUN/XzAXl83k3ra5Wzl39Ri0pVS7PT6yB6KnQPJfquGNBH/f483ID0Yq0LDdR2cRf9LQ3p lquLszFgcTw7E/jspwMaVaOdAqv17JWQu5IispXJISkMmobKCVfP1HMRmEr2R2xxMqn9v5JeCz/W rwOaRPlu+CNgDHX6bnfHNXrNLVA+zd9ze+71ILgQCr0e3F1kCnkeJVWY7Hg1C7mXSO1Oh1brUdRt HE5n1e3Wm5XZ4GKzXhcnjyffAOGU9JRDBgAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38de7aeac6bb-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:34 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "1451" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998484" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_f1bafa3693d141dba40ed361aeac7cc1 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 28-30: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\n M. T.; Singh, S.; Guestrin, C. \u201D Why should i trust you?\u201D Explaining the\\n\\n predictions of any classifier. Proceedings of the 22nd ACM SIGKDD international\\n\\n\\n 27 \ conference on knowledge discovery and data mining. San Diego, CA, USA, 2016; pp\\n\\n 1135\u20131144.\\n\\n\\n(36) Dhurandhar, A.; Chen, P.-Y.; Luss, R.; Tu, C.-C.; Ting, P.; Shanmugam, K.; Das, P.\\n\\n Explanations based on the missing: Towards contrastive explanations with pertinent\\n\\n \ negatives. Advances in neural information processing systems 2018, 31.\\n\\n\\n(37) Jin, W.; Li, X.; Hamarneh, G. Evaluating Explainable AI on a Multi-Modal Medical\\n\\n \ Imaging Task: Can Existing Algorithms Fulfill Clinical Requirements? Proceedings of\\n\\n the AAAI Conference on Artificial Intelligence 2022, 36, 11945\u201311953.\\n\\n\\n(38) Zhang, Y.; Xu, F.; Zou, J.; Petrosian, O. L.; Krinkin, K. V. XAI Evaluation: Evalu-\\n\\n ating Black-Box Model Explanations for Prediction. 2021 II International Conference\\n\\n on Neural Networks and Neurotechnologies (NeuroNT). 2021; pp 13\u201316.\\n\\n\\n(39) Oviedo, F.; Ferres, J. L.; Buonassisi, T.; Butler, K. T. Interpretable and Explain-\\n\\n able Machine Learning for Materials Science and Chemistry. Accounts of Materials\\n\\n Research 2022, 3, 597\u2013607.\\n\\n\\n(40) Yalcin, O.; Fan, X.; Liu, S. Evaluating the correctness of explainable AI algorithms\\n\\n for classification. arXiv preprint arXiv:2105.09740 2021,\\n\\n\\n(41) Hoffman, R. R.; Mueller, S. T.; Klein, G.; Litman, J. Metrics for Explainable AI:\\n\\n Challenges and Prospects. 2018,\\n\\n\\n(42) Mohseni, S.; Zarei, N.; Ragan, E. D. A Multidisciplinary Survey and Framework for\\n\\n \ Design and Evaluation of Explainable AI Systems. ACM Transactions on Interactive\\n\\n \ Intelligent Systems 2018, 11, 46.\\n\\n\\n(43) Humer, C.; Heberle, H.; Montanari, F.; Wolf, T.; Huber, F.; Henderson, R.; Hein-\\n\\n rich, J.; Streit, M. ChemInformatics Model Explorer (CIME): exploratory analysis of\\n\\n \ chemical model explanations. Journal of Cheminformatics 2022, 14, 1\u201314.\\n\\n\\n \ 28(44) Lundberg, S. M.; Lee, S.-I. In Advances in Neural Information Processing Systems\\n\\n 30; Guyon, I., Luxburg, U. V., Bengio, S., Wallach, H., Fergus, R., Vishwanathan, S.,\\n\\n Garnett, R., Eds.; Curran Associates, Inc., 2017; pp 4765\u20134774.\\n\\n(45) \u02C7Strumbelj, E.; Kononenko, I. Explaining prediction models and individual predictions\\n\\n \ with feature contributions. Knowledge and information systems 2014, 41, 647\u2013665.\\n\\n\\n(46) Shapley, L. S. A Value for N-Person Games; RAND Corporation: Santa Monica, CA,\\n\\n 1952.\\n\\n\\n(47) Molnar, C.; Casalicchio, G.; Bischl, B. Interpretable machine learning\u2013a brief history,\\n\\n state-of-the-art and challenges. Joint European Conference on Machine Learning and\\n\\n Knowledge Discovery in Databases. 2020; pp 417\u2013431.\\n\\n\\n(48) Lou, Y.; Caruana, R.; Gehrke, J. Intelligible models for classification and regression.\\n\\n \ Proceedings of the 18th ACM SIGKDD international conference on Knowledge dis-\\n\\n covery and data mining. 2012; pp 150\u2013158.\\n\\n\\n(49) Bastani, O.; Kim, C.; Bastani, H. Interpreting blackbox models via model extraction.\\n\\n \ arXiv preprint arXiv:1705.08504 2017,\\n\\n\\n(50) Gajewicz, A.; Puzyn, T.; Odziomek, K.; Urbaszek, P.; Haase, A.; Riebeling, C.;\\n\\n Luch, A.; Irfan, M. A.; Landsiedel, R.; van der Zande, M.; Bouwmeester, H. Deci-\\n\\n \ sion tree models to classify nanomaterials according to the DF4nanoGrouping scheme.\\n\\n Nanotoxicology 2018, 12, 1\u201317.\\n\\n\\n(51) Han, L.; Wang, Y.; Bryant, S. H. Developing and validating predictive decision tree\\n\\n \ models from mining chemical structural fingerprints and high\u2013throughput screening\\n\\n data in PubChem. BMC Bioinformatics 2008, 9, 401.\\n\\n(52) Plumb, G.; Al-Shedivat, M.; Cabrera, \xB4A. A.; Perer, A.; Xing, E.; Talwalkar, A. Regu-\\n\\n\\n\\n\\n 29 larizing black-box models for improved interpretability. Advances in Neural Informa-\\n\\n \ tion Processing Systems 2020, 33, 10526\u201310536.\\n\\n\\n(53) Shao, X.; Skryagin, A.; Stammer, W.; Schramowski, P.; Kersting, K. Right for bet-\\n\\n \ ter reasons: Training differentiable models by constraining their influence functions.\\n\\n Proceedings of the AAAI Conference on Artificial Intelligence. 2021; pp 9533\u20139540.\\n\\n\\n(54) Ouyang, R.; Curtarolo, S.; Ahmetcik, E.; Scheffler, M.; Ghiringhelli, L. M. SISSO: A\\n\\n compressed-sensing method for identifying the best low-dimensional descriptor in an\\n\\n immensity of offered candidates. Physical Review Materials 2018, 2, 083802.\\n\\n\\n(55) Lipton, Z. C. The mythos of model interpretability: In machine learning, the concept\\n\\n of interpretability is both important and slippery. Queue 2018, 16, 31\u201357.\\n\\n\\n(56) Harren, T.; Matter, H.; Hessler, G.; Rarey, M.; Grebner, C. Interpretation of structure\u2013\\n\\n activity relationships in real-world drug design data sets using explainable artificial\\n\\n intelligence. Journal of Chemical Information and Modeling 2022, 62,\\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6357" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41U224TMRB971eM/ATSJmrSlqS8cZGAFy4CBIJUkWNPdk289tb2BkLVf+d4NyFb KBIve5mZM3PmenNCJIwWj0moSiZVN3b0/OmldBdfXr94e512n5qzR282797O7Mdnz57sHokiI/zq G6t0QI2VB46T8a5Xq8AycfY6mc0mFxen84uzTlF7zTbDyiaNzv1oejo9H00meO+BlTeKIyy+4pfo pntmik7zD4hPi4Ok5hhlyZAdjCAM3maJkDGamKRLojgqlXeJXcf6ZuGIFiK2dS3DbgHRQnyomPiH 4tAkskBH2spgfBsp8JoDOxAj6TTF1GrDWWxzlpQ8cI2VxsmVZZIhmbVRRloyCGitKTOWHnx+8uph AZmywLuSak6V17Eg3krbylw+/OQIsmmsUb0EAFobtjqC1YZJVVyDXdgVVCN8QJxIUZkco0fXrAFG 9FqWiDOmVwky13v77sMmkneUqxFkTGbLPX13YLBG89rAvYVZtQNiOaHQBE5dprVUlXFMlmVwXaT3 DaucPCVWlTPXLe9Za8gj/FAKDGAeA7gMXLYWRf7Zhaa1D8MIxpq06+PmAQtoOOtRZBcH1UO5UXIb PVWmrFDrCi0Z00v/nbccCkqDrmoPOs4naoLfGg0caRMwyKC3Ns50JPya0ChC2igg2gCIwafbervF dy03XfQ/Ut+nhBfo3K1S5g8WJiBs7kzfh86wxVSHPKc6W44XoujnEpOFmUBDl1HBLs/nbOFuh8OM mWyjzLvkWmsHCumQYd/KvEZXe83t78WxvkT+q/gHVOQKxGqJ1Y3YYyxJTL4RnfYWz6tuQds7Oyfg qG7SMvkNd+Ems8msdyiON2Ggnk722gSOdqCYn82Le1wuNYpobBxsuVAoPesj9ngSJPbKDxQng8T/ 5nOf7z559PN/3B8VSnGDsVseG3yfWeB8NP9l9rvQHWEROWxxCpfJcMjNwITK1vb3TMRdTFwv0bEy D5rpj9q6WarV9PLyUs/nM3Fye/ILx2w2cd0FAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38e24bf58075-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:35 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "1502" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998481" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_39d98d0b8e5b466995b9d65581694e4b status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 22-25: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\nut to models informs the XAI method.\\n\\n\\nConclusion and outlook\\n\\n\\nWe should seek to explain molecular property prediction models because users are more\\n\\nlikely to trust explained predictions, and explanations can help assess if the model is learning\\n\\nthe correct underlying chemical principles. We also showed that black-box modeling first,\\n\\nfollowed by XAI, is a path to structure-property relationships without needing to trade\\n\\nbetween accuracy and interpretability. However, XAI in chemistry has some major open\\n\\nquestions, that are also related to the black-box nature of the deep learning. Some are\\n\\n\\n\\n \ 22highlighted below:\\n\\n\\n \u2022 Explanation representation: How is an explanation presented \u2013 text, a molecule, attri-\\n\\n butions, a concept, etc?\\n\\n\\n \u2022 Molecular distance: \ in XAI approaches such as counterfactual generation, the \u201Cdis-\\n\\n \ tance\u201D between two molecules is minimized. Molecular distance is subjective. Possibil-\\n\\n ities are distance based on molecular properties, synthesis routes, and direct structure\\n\\n comparisons.\\n\\n\\n \u2022 Regulations: As black-box models move from research to industry, healthcare, and\\n\\n environmental settings, we expect XAI to become more important to explain decisions\\n\\n \ to chemists or non-experts and possibly be legally required. Explanations may need\\n\\n to be tuned for be for doctors instead of chemists or to satisfy a legal requirement.\\n\\n\\n \u2022 Chemical space: Chemical space is the set of molecules that are realizable; \u201Crealiz-\\n\\n able\u201D can be defined from purchasable to synthesizable to satisfied valences. What is\\n\\n most useful? Can an explanation consider nearby impossible molecules? How can we\\n\\n generate local chemical spaces centered around a specific molecule for finding counter-\\n\\n factuals or other instance explanations? \ Similarly, can \u201Cactivity cliffs\u201D be connected\\n\\n to explanations and the local chemical space.149\\n\\n\\n \u2022 Evaluating XAI : there is a lack of a systematic framework (quantitative or qualitative)\\n\\n to evaluate correctness and applicability of an explanation. Can there be a universal\\n\\n \ framework, or should explanations be chosen and evaluated based on the audience and\\n\\n domain? For example, work by Rasmussen et al. 58 attempts to focus on comparing\\n\\n feature attribution XAI methods via Crippen\u2019s logP scores.\\n\\n\\n\\n\\n\\n 23Acknowledgements\\n\\n\\nResearch reported in this work was supported by the National Institute of General Medical\\n\\nSciences of the National Institutes of Health under award number R35GM137966. This work\\n\\nwas supported by the NSF under awards 1751471 and 1764415. We thank the Center for\\n\\nIntegrated Research Computing at the University of Rochester for providing computational\\n\\nresources.\\n\\n\\nReferences\\n\\n\\n \ (1) Choudhary, K.; DeCost, B.; Chen, C.; Jain, A.; Tavazza, F.; Cohn, R.; Park, C. W.;\\n\\n Choudhary, A.; Agrawal, A.; Billinge, S. J.; Holm, E.; Ong, S. P.; Wolverton, C.\\n\\n Recent advances and applications of deep learning methods in materials science. npj\\n\\n Computational Materials 2022, 8.\\n\\n\\n (2) Keith, J. A.; Vassilev-Galindo, V.; Cheng, B.; Chmiela, S.; Gastegger, M.; M\xA8uller, K.-\\n\\n R.; Tkatchenko, A. Combining Machine Learning and Computational Chemistry for\\n\\n Predictive Insights Into Chemical Systems. Chemical Reviews 2021, 121, 9816\u20139872,\\n\\n PMID: 34232033.\\n\\n\\n (3) Goh, G. B.; Hodas, N. O.; Vishnu, A. Deep learning for computational chemistry.\\n\\n Journal of Computational Chemistry 2017, 38, 1291\u20131307.\\n\\n\\n (4) Deringer, V. L.; Caro, M. A.; Cs\xB4anyi, G. Machine Learning Interatomic Potentials as\\n\\n Emerging Tools for Materials Science. Advanced Materials 2019, 31, 1902765.\\n\\n\\n (5) Faber, F. A.; Hutchison, L.; Huang, B.; Gilmer, J.; Schoenholz, S. S.; Dahl, G. E.;\\n\\n Vinyals, O.; Kearnes, S.; Riley, P. F.; von Lilienfeld, O. A. Prediction Errors of Molec-\\n\\n \ ular Machine Learning Models Lower than Hybrid DFT Error. Journal of Chemical\\n\\n \ Theory and Computation 2017, 13, 5255\u20135264, PMID: 28926232.\\n\\n\\n\\n \ 24 (6) Duch, W.; Swaminathan, K.; Meller, J. Artificial Intelligence Approaches for Rational\\n\\n Drug Design and Discovery. Current Pharmaceutical Design 2007, 13, 1497\u20131508.\\n\\n\\n (7) Dara, S.; Dhamercherla, S.; Jadav, S. S.; Babu, C. M.; Ahsan, M. J.; darasuresh, S. D.;\\n\\n Dara, S. Machine Learning in Drug Discovery: A Review. Artificial Intelligence Review\\n\\n 123, 55, 1947\u20131999.\\n\\n\\n (8) Gupta, R.; Srivastava, D.; Sahu, M.; Tiwari, S.; Ambasta, R. K.; Kumar, P. Artifi-\\n\\n \ cial intelligence to deep learning: machine intelligence approach for drug discovery.\\n\\n Molecular diversity 2021, 25, 1315\u20131360.\\n\\n\\n (9) Wellawatte, G. P.; Seshadri, A.; White, A. D. Model agnostic generation of counter-\\n\\n factual explanations for molecules. Chemical Science 2022, 13, 3697\u20133705.\\n\\n\\n(10) Gandhi, H. A.; White, A. D. Explaining structure-ac\\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6368" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/3VU224bNxB991cM9ikBVoLkRlbUNxftg1ukCJCiLRIFAkXO7jLiZcGZdaUY/vcO uZa1aZ2XvXA4M+ecuTxcAVTWVD9CpTvF2vdu9vNPG+W//Bb6Dx/1oD/8+ue79+9+58Nft+9vVsuq zh5x/wU1n73mOoofso1hNOuEijFHXa7Xy9Vq8XZ1XQw+GnTZre159ibOrhfXb2bLpbyfHLtoNZLc +CS/AA/lmSEGg0c5XtTnE49EqkU5O1+SwxRdPqkUkSVWgav6YtQxMIaC+mEbALYVDd6rdNrK0bb6 o0PAo8bUMxhLeiBCgr9v7+DVL8feKRvU3iHcJraN1VY5uJN4ztkWg8bXYAOwhChZjgyxAS9o9OBU gj7FHhOf5AON1VkpKFrQvGRQ1hNwBK8OOLlD0KToYe+UPsz28fjkI6+Eko8Fa0IusFQwwGkg/icm 7k6wz7nivTU2tEJL8AdVQs7hjqGzbSfAO6aC2fpevJTQyLAntyGhZCBRbfx9hfN2XkMmWJ/pIdUQ U+atsWd6XY8ydMo5DG2JaLCxIQO5KGJKfXSmIa5D5tIozYPIKnpiKvnqkZaEC4gGGknDyjphb77h VCzGNg0mgQpqMDbXRIDRoDtQJHDQS0bKSE3UHJMIcWuMzf6C9FSDZUDfd4rsVxxlybJn+AroRIxe kmmpiPIoIh9KUrxXbpBz4Zbr6JG7aOgZdh9zx+VecdjKM58nbEUBQXDKujurnziokpTwXGQlNVa9 XBCyIpJMgFQ3CdAOleNOi33UB8O9TTH4XCUHhJzh0Hxb1WOXJ3QCU/TYkRbpcrdvtuFxOhoJm4FU nswwODcxqBDiWPsylJ+fLI/PY+hiK322p/+4Vrng1O1kEZBsBRk54thXxfooz89l3IdvJriSQL7n HccDlnTL1fLtGLC6bJiJ+YezlQWjmxhuVjf1CyF3BnP70GRnVFpJa5iJr2ykZxK5keLFtriacP8/ pJfCj/ylHpMo3w1/Meg8SgLrsgpeupYwb+HvXXvWugCuCNO97NYdW0y5HjKTanDjgqzG/t5J0dq8 U+y4JZt+t95c641abNbr6urx6l8fHgnrLgYAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38de7d6b15df-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:35 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "2612" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998480" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_b9b7f5e6072540d8bb7a8bcd8ee9d258 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 8-9: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\nrepresented with equation 2.\\n\\n \ \u2206\u02C6f(\u20D7x) \u2248\u2202\u02C6f(\u20D7x) \ (2)\\n \u2206xi \ \u2202xi\\n\\n\\n\\n 7 \u2206\u02C6f(\u20D7x) \ where \u02C6f(x) is the black-box model and are used as our attributions. The left- \u2206xi\\n\\nhand side of equation 2 says that we attribute each input feature xi by how much one unit\\n\\nchange in it would affect the output of \u02C6f(x). If \u02C6f(x) is a linear surrogate model, then this\\n\\nmethod reconciles with LIME.35 In DL models, \u2207xf(x), suffers from the shattered gradients\\n\\nproblem.62 This means directly computing the quantity leads to numeric problems. The\\n\\ndifferent gradient based approaches are mostly distinguishable based on how the gradient is\\n\\napproximated.\\n\\n Gradient based explanations have been widely used to interpret chemistry predictions.60,66\u201370\\n\\nMcCloskey et al. 60 used graph convolutional networks (GCNs) to predict protein-ligand\\n\\nbinding and explained the binding logic for these predictions using integrated gradients.\\n\\nPope et al. 66 and Jim\xB4enez-Luna et al. 67 show application of gradCAM and integrated gradi-\\n\\nents to explain molecular property predictions from trained graph neural networks (GNNs).\\n\\nSanchez-Lengeling et al. 68 present comprehensive, open-source XAI benchmarks to explain\\n\\nGNNs and other graph based models. They compare the performance of class activation\\n\\nmaps (CAM),63 gradCAM,64 smoothGrad,,65 integrated gradients62 and attention mecha-\\n\\nnisms for explaining outcomes of classification as well as regression tasks. They concluded\\n\\nthat CAM and integrated gradients perform well for graph based models. Another attempt\\n\\nat creating XAI benchmarks for graph models was made by Rao et al. 70. They compared\\n\\nthese gradient based methods to find subgraph importance when predicting activity cliffs\\n\\nand concluded that gradCAM and integrated gradients provided the most interpretability\\n\\nfor GNNs. The GNNExplainer69 is an approach for generating explanations (local and\\n\\nglobal) for graph based models. This method focuses on identifying which sub-graphs con-\\n\\ntribute most to the prediction by maximizing mutual information between the prediction\\n\\nand distribution of all possible sub-graphs. Ying et al. 69 show that GNNExplainer can be\\n\\nused to obtain model-agnostic explanations. SubgraphX is a similar method that explains\\n\\nGNN predictions by identifying important subgraphs.71\\n\\n \ Another set of approaches like DeepLIFT72 and Layerwise Relevance backPropagation73\\n\\n\\n\\n \ 8(LRP) are based on backpropagation of the prediction scores through each layer of the neu-\\n\\nral network. The specific backpropagation logic across various activation functions differs\\n\\nin these approaches, which means each layer must have its own implementation. Baldas-\\n\\nsarre and Azizpour 74 showed application of LRP to explain aqueous solubility prediction for\\n\\nmolecules.\\n\\n SHAP is a model-agnostic feature attribution method that is inspired from the game\\n\\ntheory concept of Shapley values.44,46 SHAP has been popularly used in explaining molecular\\n\\nprediction models.75\u201378 It\u2019s an additive feature contribution approach, which assumes that\\n\\nan explanation model is a linear combination of binary variables z. If the Shapley value\\nfor the ith feature is \u03D5i, then the explanation is \u02C6f(\u20D7x) = Pi \u03D5i(\u20D7x)zi(\u20D7x). Shapley values for\\n\\nfeatures are computed using Equation 3.79,80\\n\\n\\n\\n M\\n 1\\n \ \u03D5i(\u20D7x) = X \u02C6f (\u20D7z+i) \u2212\u02C6f (\u20D7z\u2212i) (3)\\n M\\n\\n \ Here \u20D7z is a fabricated example created from the original \u20D7x and a random perturbation \u20D7x\u2032.\\n\\n\u20D7z+i has the feature i from \u20D7x and \u20D7z\u2212i has the ith feature from \u20D7x\u2032. Some care should be taken\\n\\nin constructing \u20D7z when working with molecular descriptors to ensure that an impossible \u20D7z is\\n\\nnot sampled (e.g., high count of acid groups but no hydrogen bond donors). M is the sample\\n\\nsize of perturbations around \u20D7x. Shapley value computation is expensive, hence M is chosen\\n\\naccordingly. Equation 3 is an approximation and gives contributions with an expectation\\nterm as \u03D50 + Pi=1 \u03D5i(\u20D7x) = \u02C6f(\u20D7x).\\n\\n Visualization based feature attribution has also been used for molecular data. In com-\\n\\nputer science, saliency maps are a way to measure spatial feature contribution.81 Simply put,\\n\\nsaliency maps draw a connection between the model\u2019s neural fingerprint components (trained\\n\\nweights) and input features. Weber et al. 82 used saliency maps to build an explainable GCN\\n\\narchitecture that gives subgraph importance for small molecule activity prediction. On the\\n\\nother hand, similarity maps compare model predictions for two or more molecules based on\\n\\ntheir chemical fingerprints.83 Similarity maps provide atomic weights or predicte\\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6380" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41U227bRhB991cM+JQAkmA5URXlzY2LNC0StElTBK0CYbQcklMvd9mdpWPa8L9n lpREuk2BvuiycztzzszcnwFknGcvITMVRlM3dn71/Qbdxysb/7jq4l0tvxaW3+8/fvezz396lc1S hN//RSYeoxbGaxxF9m4wm0AYKWVdrtfL1er8xepZb6h9TjaFlU2cP/fzi/OL5/PlUr8PgZVnQ6Ie f+pfgPv+M0F0Od3q8/ns+FKTCJakb0cnfQzeppcMRVgiupjNRqPxLpLrUd9vHcA2k7auMXRbfdpm v1UEdGsoNBFyFtOKkMANBvatQE2x8rkAuhywaYJHU6mZHfxw21hkh3tLcBkiF2wYLbzRYtZySc4Q PPl0+eYpFD5ArQhNazFAEyhnk0iDnhZZgHpBoIKCQPQQyVSO/261TFSWocZr0l80iRTwBQzs3x6y zEBaUwEK5EQNWMLg2JU98DJgU4GjNihAR/GLD9cCT16/eydPZ9pL1OYDxdTKAl4HzFn5mu9RKD8S MKZP7ppQdU55e1c5VslfXb6dAQaCNsVqMzSw9Aj7vlN/tN1dwlfoyLQagDEG3re9xwLepp7mWDov kc1JBctKxYcfL39JqKVhTZqyfahQmehUNJtYK4KvocS6Z82HbqbV/Q3ndCqWRuJUrddngm8Bv7O0 aPkOe5VGPUYSRM2qcNc3LlyzKsuxU60aGQhAK9q9KuS7gYkTzZNZyDHiAnQChcZJ4zq5HyFrn1xW sefdQ+W/HPQexmICewbkKnQmkap9c4AYUElSMEegMbSSxI8VO12jxTabDQsRyNKNxtJOjA+UFmOz dQ/TLdL5bLVrtbjW2okBnfOxZ6rf388Hy8NpY60vtZm9/CM0K9ixVDu9GaIHRLdTom+y3vqgn5/7 y9A+WvZME9VN3EV/TX255bPNiyFhNh6jiXl1cbBGxWinhtXhpDxOuct1DdjK5LxkJq18PsaOtwjb nP3EcDZp/N94vpV7aF4l+z/pR4Mx1OgC7kb5v+UWKF3r/3I7Ed0DzoTCjd7gXWQKSYycCmztcEgz 6SRSvVPFyjTDPFzTotmtNxdmg+eb9To7ezj7ClNXxrpWBgAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38e17aabcb6f-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:36 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "2799" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998468" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_0891178723cf461da2c242bd1b9bcef0 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatte2023aperspectiveon pages 5-8: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\nnct?\\n\\n\\n We present an example evaluation of the SHAP explanation method based on the above\\n\\nattributes.44 Shapley values were proposed as a local explanation method based on feature\\n\\nattribution, as they offer a complete explanation - each feature is assigned a fraction of\\n\\nthe prediction value.44,45 Completeness is a clearly measurable and well-defined metric, but\\n\\nyields explanations with many components. Yet Shapley values are not actionable nor sparse.\\n\\nThey are non-sparse as every feature has a non-zero attribution and not-actionable because\\n\\nthey do not provide a set of features which changes the outcome.46 Ribeiro et al. 35 proposed\\n\\na surrogate model method that aims to provide sparse/succinct explanations that have high\\n\\n\\n 5fidelity to the original model. In Wellawatte et al. 9 we argue that counterfactuals are \u201Cbet-\\n\\nter\u201D explanations because they are actionable and sparse. We highlight that, evaluation of\\n\\nexplanations is a difficult task because explanations are fundamentally for and by humans.\\n\\nTherefore, these evaluations are subjective, as they depend on \u201Ccomplex human factors and\\n\\napplication scenarios.\u201D37\\n\\n\\nSelf-explaining models\\n\\nA self-explanatory model is one that is intrinsically interpretable to an expert.47 Two com-\\n\\nmon examples found in the literature are linear regression models and decision trees (DT).\\n\\nIntrinsic models can be found in other XAI applications acting as surrogate models (proxy\\n\\nmodels) due to their transparent nature.48,49 A linear model is described by the equation\\n\\n1 where, W\u2019s are the weight parameters and x\u2019s are the input features associated with the\\n\\nprediction \u02C6y. Therefore, we observe that the weights can be used to derive a complete expla-\\n\\nnation of the model - trained weights quantify the importance of each feature.47 DT models\\n\\nare another type of self-explaining models which have been used in classification and high-\\n\\nthroughput screening tasks. Gajewicz et al. 50 used DT models to classify nanomaterials\\n\\nthat identify structural features responsible for surface activity. In another study by Han\\n\\net al. 51, a DT model was developed to filter compounds by their bioactivity based on the\\n\\nchemical fingerprints.\\n\\n\\n\\n \u02C6y = \u03A3iWixi (1)\\n\\n\\n Regularization techniques such as EXPO52 and RRR53 are designed to enhance the black-\\n\\nbox model interpretability.54 Although one can argue that \u201Csimplicity\u201D of models are posi-\\n\\ntively correlated with interpretability, this is based on how the interpretability is evaluated.\\n\\nFor example, Lipton 55 argue that, from the notion of \u201Csimulatability\u201D (the degree to which a\\n\\nhuman can predict the outcome based on inputs), self-explanatory linear models, rule-based\\n\\n\\n\\n \ 6systems, and DT\u2019s can be claimed uninterpretable. A human can predict the outcome given\\n\\nthe inputs only if the input features are interpretable. Therefore, a linear model which takes\\n\\nin non-descriptive inputs may not be as transparent. On the other hand, a linear model\\n\\nis not innately accurate as they fail to capture non-linear relationships in data, limiting is\\n\\napplicability. Similarly, a DT is a rule-based model and lacks physics informed knowledge.\\n\\nTherefore, an existing drawback is the trade-offbetween the degree of understandability and\\n\\nthe accuracy of a model. For example, an intrinsic model (linear regression or decision trees)\\n\\ncan be described through the trainable parameters, but it may fail to \u201Ccorrectly\u201D capture\\n\\nnon-linear relations in the data.\\n\\n\\nAttribution methods\\n\\n\\nFeature attribution methods explain black box predictions by assigning each input feature\\n\\na numerical value, which indicates its importance or contribution to the prediction. Feature\\n\\nattributions provide local explanations, but can be averaged or combined to explain multi-\\n\\nple instances. Atom-based numerical assignments are commonly referred to as heatmaps.56\\n\\nSheridan 57 describes an atom-wise attribution method for interpreting QSAR models. Re-\\n\\ncently, Rasmussen et al. 58 showed that Crippen logP models serve as a benchmark for\\n\\nheatmap approaches. Other most widely used feature attribution approaches in the litera-\\n\\nture are gradient based methods,59,60 Shapley Additive exPlanations (SHAP),44 and layer-\\n\\nwise relevance prorogation.61\\n\\n Gradient based approaches are based on the hypothesis that gradients for neural net-\\n\\nworks are analogous to coefficients for regression models.62 Class activation maps (CAM),63\\n\\ngradCAM,64 smoothGrad,,65 and integrated gradients62 are examples of this method. The\\n\\nmain idea behind feature attributions with gradients can be represented with equation \ 2.\\n\\n \u2206\u02C6f(\u20D7x) \u2248\u2202\u02C6f(\u20D7x) \ (2)\\n \u2206xi \ \u2202xi\\n\\n\\n\\n 7 \\n\\n---\\n\\nQuestion: What is XAI?\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6344" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/3VUbWvbSBD+nl8x7Kcr2MFOk7rut1yv6eXuKIWU0lIXM9odSdusdsXuKtiE/PfO SIqt9BowMjuvzzzzcn8CoKxRb0DpGrNuWjf/6881BpP11ddX4cfi+v3X3eLf/7qrf97qV58/qJl4 hOIH6fzodaoD+1G2wQ9qHQkzSdTlarW8uFi8vjjvFU0w5MStavP8PMzPFmfn8+WS/0fHOlhNiS2+ 8RPgvv8KRG9ox+LF7FHSUEpYEcsejVgYgxOJwpRsyuizmh2VOvhMvkd9v/EAG5W6psG437Booz7V BLTTFNsMxibdpUQJ3u1ah9Zj4QguY7al1RYdXHMo52xFXhP88eXy+gU0lOtg0gzKwL7WVxA85Jps BCyss3kPOUCDt8QfXVtP4AijF8uelwSWo8Y2Uu7ToTfQcd1RKjG9iAPUXYM+ncJ1htpWNWOoc4Kb GrkDe7hD1zFq5B+U3IQucpycoy06ac8IkmFhhjaGO2vYemwfARuBD36eWoxpACBP1OLbAyChw6O8 GcPb0Anikg06JmWqBOTMzHjiDJEMFJTZEkzXFzHScowrqcasvkd9CjfkyjkN9B85mkHqdC0FOmYQ I0SqIo+CFCdBDGnbP3IkYmuBwTVqZoBRYM9xtAxLo3P7XxiX+p1tLM8ua0Bjy1Akt7BwyOeGCmvb MgVXz5LMya3XrjMSoIpoLA/fvMAkOFomn4dAWsWgb/6+/DhARZfCYfoMj1IcuZLJFkwTQgqH+nZe hB13kozVA+/FHmT6q97ENm2IPD26Z936lgscxyKdbtRsWAMuie7EaJt0iCTrsN74h+nuRCq7hLK6 vnNuokDvQx4Ika39PmoeDnvqQsW1FukXV1VyEane8qVIfDZ4J1MOreq1D/z93t+D7smKKw7UtHmb wy316ZZnr1dDQHU8QRP1+ctRmxmje6IYD8nTkFvDg2BdmhwVpaVNZuLLJ+tQBHJ3w1G3OJnU/n9I vws/1M+9mkR5NvxRoTW1PKXbY+d/ZxZJzvRzZgeue8AqUbzj47vNlqL0w1CJnRsuqEr7lKnZctMq 2Rc7nNGy3a7WZ3qNi/VqpU4eTn4CJBWNy08GAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38e8c973c6bb-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:36 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "1756" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998480" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_15b6e9cdf9d54ea08579b882c6f78a70 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":[{\"type\":\"image_url\",\"image_url\":{\"url\":\"data:image/png;base64,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\"}},{\"type\":\"image_url\",\"image_url\":{\"url\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXgAAAD3CAIAAACYbthIAAAACXBIWXMAAA7EAAAOxAGVKw4bAAB7DUlEQVR4nOy9Z1hbWZqoO+fP/XHPmdvnzL3d02FmuqdDVbkcyi4HcMDGGINzNtgYHLDBGJNzUM4JgZCQQEISiCAhQOQscs4m55xzzmDfhVVNUTiBDTa49vush0da2ntpSWy9+1t7r/AvryAgICC2mH/50hWAgID4+oFEAwEBseVAooHYviwtLU1vSxYWFr70d7PDgEQDsX3p7e2NiYkp2n5kZmZ+6e9mhwGJBmL7AkRTV1f3pWvxFiDRbBRINBDbF0g0Xw1bJRqxWJy5zZDJZGNjY1v0eSG2Akg0Xw1bJZpt+J8oLy8fHR390rWA2ACQaL4aINFAbF8g0Xw1QKKB2L5AovlqgEQDsX2BRPPVAIkGYvsCiearARINxPYFEs1XAyQaiO0LJJqvBkg0ENsXSDRfDZBoILYvkGi+GiDRQGxfINF8NUCigdi+QKL5aoBEA7F9Wb9oUlNTxWKxUCjc4hr9xDY8vLc5kGggti/rF01gYCD46+vru8U1+olteHhvcyDRQGxf1i+apqYmEokkl8u3ukoKtuHhvc2BRAOxfdnQNZrQ0NDP9v/dhof3NucLiyYvL08ikZSUlGxRNVYDiWbHAYnmq+ELi0YkEoG/fD5/i6qxGkg0O463iqahoSElJQX8XZ3Z0dHh7++/5ow1MDCQmppaU1Pzce++tLSUkZFRUVHx5kuQaDbKFxZNeHg4iGji4+O3qBqrgUSz41gjmpGRkcTExJaWFvAY/M3Pz2cymSwWC8TF1dXVILO7uxtsAPwyNzeXnJwcEhJSX18PHKTI3NBbA7/I5fLZ2VlwiILjs6enZ/WrkGg2ype/RsPj8baoDmuARLPjWC2axcXFwsLC1a+2trZmZWUB46w52IB3ZDKZVCpdHfWUlpaCA2Cd75uQkLBiFuAsYJzY2NjV7w6JZqN8edF4eHhsUR3WAIlmx/H+azRAPZ6enl5eXhMTE6vzwX/5TacATaz/mAwLC+vq6lqTuXp3SDQb5fOJBhwNIHPNylvT09NkMhmcNFZngrYxOCl9yhpdIJBeU+YrSDQ7kI/rGfxW0SgmqF9nCaDN1dbW9mYJb30MsR4+h2iAONLT03Nzc4E7UlNTKysruVwun88vKioCoS84L4FXCwoKFBuDEDciIqKxsRFsuSZUXg+gQZ6UlNTc3AyC55UyFUCi2XFAovlq2HLRzM7OJicnr44vgD5A4xm0e1dHpyMjI9HR0ZGRkeHh4St+AZnx8fHDw8PrfNOUlJSVWwwVFRWgKFDmyhEDiWbH8XGiAWFyQkJCRkbG6tV1WlpawNG18vTly5fgTAbOc+Bsp8gpHOkZmZ999fpeVWBgIDg7rmwMjqX6+npQ4EoOJJqN8gWu0QwODnp4eIAW09TU1Op8YAQQiaxpMYGoZP3X8EAUAw6ylafgYAKqWqkJJJodx0cPqlTcnwJmAQcVeAyCXHBuAwYBD4KDgxUnoaioKPBA8aqJkPV7LlKZi5e9Ps+BZj7IBHIB4TYoB4TYQEngcFopHxLNRvkyF4Pn5+ffvATT9po1mXFxcesXjY+Pz5sqgUSzc/nE0duKHjdrGuDgIOFwOEKhcLU4TlCdf2Ny9zfW9+O7fr5RBYIgsDsIvVefvRRAotkoX/6u0wqQaCDWsBXTRAQEBIDQxtbWdnXmRQ/C7wKI/3pNrWlyXUcIJJqNso1E093dXVxcnJubuzqzsbExPz9/dU5NTU1TUxM4BNfsPjc3FxoaujpQ6unp6erqAkGv4ikkmh3HZ5uPpmq477csxydFsevcHhLNRtlGonn1+qobaDnHxMQAQazcqyotLU1OTga6Ac1pkCOTyYA7gDVATAvEBI7FqqoqsBl4CTwATWsQ6Co6WYEtV8e9kGh2HJ9NNBlDnf9GsbhQELbO7SHRbJTtJZpX/7wXDtrGq+9VgUw+ny8SiUDrekUcoI0tEAh8fX1Xd9kCmUBDwC+JiYlruo1DotlxfDbRONZk/W/Hx/9IFcwsrqv3FiSajbLtRPMuoqOjCwsLsVjsmkxwIMJgsPWUAIlmx/HZRENoyAeiOZQZsLDqrvZ7gESzUXaMaBSOWHNpBmTW1NT09/evpwRINDuOzyaa1qmxqxlSdsuLdW4PiWaj7BjRfPobQaLZcUCTk3817HjRrLlL9R4g0ew4INF8Nex40awfSDQ7Dkg0Xw2QaCC2L5Bovhog0UBsXyDRfDVAooHYvkCi+WqARAOxfYFE89UAiQZi+wKJ5qsBEg3EtmNwcNDd3R2DwfT09ECi+TqARAOxjSgrK4PD4a6urn19fa+giOYrAhINxJdnaWkpLCzMyclJJpMtLi6u5EOi+WqARAPxJQH/ETabjUAg1sw6pAASzVcDJBqIL0N1dTUajaZSqYpW0luBRPPVAIkG4rPy8uXLuLg4Z2dnsVg8Pz///o0h0Xw1QKKB+ExMTExwOBwYDLZmva33AInmqwESDcSW09TUhMFgKBTKm+vMvp8V0URFRQmFwvT09KKiojcLUWSGhoa+WYJiLafS0tJ1vmNgYKCPj8/K1I4JCQlcLhfsXltbK3yNYu2EbXh4b3Mg0UBsIUlJSSCE8ff3n52d/YjdFaIBv21HR8dXr29OlZWVgcyQkBAej5ecnAws8OLFC0Wml5fX0NCQRCIBb/fq9WqTAoEgMTGxtbXV2Ng4Pz8fbA/yQY6i8Onp6dHXjI+PK3KAUIDRQIGxsT/NUo5CocC7A0vOzMyApywWSzE/7DY8vLc5kGggNp+pqSk/Pz8EApGWlvYp5axENDExMeA3HxQUBCIUEFxYW1uDTMWSKa6uropMIBoQiQBHmJubA7nY2dkBR1CpVLANeAn8ZTAYAwMD3t7eisJBHCR5zcoKluCBIjgC/lLkgAdOTk4RERHgMbAYiUSCIpqPY3uJBpwuwAEKzkUrk41vIpBoPgMtLS0EAgH8IEFz6dNLU4hmcXERBB0gnAF+UThltT7A3xXRxMfHg/8yCHZWtlH89fDwePV6LeanT5+uTPwKDlHuawICAhQ5lZWVIpEINNBA1KOoPxwOB+8OgjJgGRwOtzIxPiSajbK9RAPOJ+Cgqa+v53A4nZ2dYrE4Ly/v1eu1bvl8Pnggl8uBiT5OQ5BothTwnwIhDPg3vbmu40ejEM38/LxiAQxwYDQ0NIDfvKLTjeLKC/iryAQPRkZGQMACTlQr2yj+xsXFgQMSxDsODg7vf8fw8HDQ8gJyURzAQDpubm5AW1VVVQorgZJfQaLZONtONBYWFqBBDkJuYJOcnBx9fX1wNgONZPC0ra0NHCjgJdBU/ojCIdFsBUArPj4+4JwPoolNL3xz7zqB09WmxFmvINFsnG0nGhDRLCwsANeAUxM4kyiuAjY2NoJDOTc3l06nV1RUbPTmhQJINJsLaIOAJhKRSAT/nS16ixXRpKamJiQkdHR0bGLh4CgCTfUXL14AAQ0PD4Mz2foXX4ZEs1G2l2haW1tdXwOOXWAZT09PELiCAxq0osFp8+XLl8HBwRKJZP0HxGog0WwWoJWEQqHYbPbU1NSWvtGKaAgEArAMk8kETSEQQ4GmEDhUXr0ehBkVFaVwRGFhYXt7O3hpcnJyYGAARFjgKdgmIyMDZCo2BsJSXM0FgPqDxyUlJS0tLU5OTiAHnMbWWTFINBtle4lmS4FE84mASNPPzw8Oh0dHR68e+rh1rIhGcU13fn4ePKBQKEAZQA3Nzc2+vr5gGyAU0OIeHBwE8S/4L7u4uADRFBcXm5mZgZgFPAXBC9gYBF9yuRycqxSFK8oEgFMaOI2tzvkg2/Dw3uZAooH4MH19fSC0xOFwDQ0Nn/N914hGYQQ7O7vY12RlZSkW2wEe8ff3B5GOsbExyAcNcBCtgFdtbGxeve7LA+SYnp4ODAVeBYUoCleUCQQEAhlFmAOJZuvYKtGAGDVzm5GWlqbodgWxfgoKCtBoNGizgHjh87/76qaTt7e3os8uaCKBB2KxGERYXC43MDCwu7tb0RlP/BrwvwZaAS9hMJjOzk7Q7gZtcLAx+CsSiaqqqhSFe3h4LC0tAXtyOBxFTxlINFvHVolmK1AcTBCfAfCzDA0NRaFQUVFRS+tbjnor2NKxTqBVBVpYK08nJyerq6vXuS8kmo2yk0SDx+O/dBW+fkAricFggChm/eODtg5oUOVXw04SDZFI/NJV+JoBbQrQjgANCkWftO3A6OioXC7/si3ut1JTU/Olv5sdxk4Sjbu7O3SRZdMBraTw8HAYDLaeCWIgID6OnSSaiIiIresb9itkfHzc09MThUIVFRV96bpAfOXsJNHk5uampKR86Vp8DdTW1mIwGDKZrOjSBgGx1ewk0fT29q6M8Yf4CF6+fCmXyz9lghgIiI9jJ4lmcXERuh78cUxMTABHb2gaTQiITWQniebV645bX7oKO4yGhgY8Hg9aSZs7IhECYkPsMNG4ubl96SrsDEArKTU1VdFKgm7VQXxxdphooD57HwS0krhcLhwOB6L50nWBgPgJSDSbydj0TFhhVVh+xXmYl4Yjp77znUujbQVdXV2gaUmlUhVTKEBAbB92mGjYbPbw8PCXrcPC0tLCO4b/5De2sxJyNDC8Hw1phwxcdKn+o5Nb3mwBraSsrCzQSuJwOFsx1zIExKezw0QTGxtbUlLyBSswPjNrGhBxGM586CUYn2tZ8+rgxFRAVulTTshBI5dDhjRtqv9dWoCaMUsX5rsy39ImMj8/HxgYiMFgkpKStqJ8CIjNYoeJpqioaCvmpl0/TQNDSijWbmfaMSI6rP5aZseT2YWBNduMT800dQ8ml9c/YgcftWMdNaIrG7lRZam9I5sWbvT29pLJZDQa3dLSslllQkBsHTtMNIODg56enl+wAksvXz7gBR3CEa/xrSg5Vx5LzPRFnj45hel1LcNTv5j9v6lnkBCWasoNu2TlqenMxUrl0RVVnrVZ0e2Vn1KBnJwcOBzOZDKhSbwgdhA7TDSvtsH14LGZGXZ2GDaFikq/e4YJ24slqzEcDYL1jcNNCvsKJ2eXV1Nt6x3mReT4xhbMzi9Utfc6+cdZCyNdC4WIYg6pNDavsXV0amPXbhYWFqRSqbOzc1xc3BecIAYC4uPYHNFMTExUZB1aSUP1uzal2LcCmgxbV/g6mV4YrR1J4hZ5XuERlKlo6ygtQvp5h/gbd/1sVWk8u6CY+OJabng2SENjUx0DI5y4XFZcUnyLJ/UF3TzSiyRLZcRlhZRWtgx++MJ2f38/nU5HoVCVlZ8UCkFAfEE2RzTl5eUSkXpW0hGQZOLTGQlKm1LsW6HRaFtX+JssvVxcfLkwtzgyPFO++HJuJX90bHpieqptvBSRRCGmXaBkaNjE3lKiIPeYEZUvIs7ewT0J4CNlid4Zmf7xmek16Y394toRESWTdp7uro7lPeaHuKflBJW8bzmHsrIyNBrt7u7+xW+0QUB8IpsmmqzU/YNdfwKpKHePPP7wphT7Vj5n02lhab5gMDyrX1wxyKwZYpcPerSOZywszba0DwoCM7lBmdMzc4PTU8UD0YIyh6t84rUAs2tMk+PXnI5ehO2F41W8EKpUuDrV8ZLAFh8DS250exzjesEfc8NdQIxJRUfJ2fK84cnp1oHhqs7epaWfbhuBVpJMJlNMEPN5FhuAgNhq1iUaEL13d3crHoNWUvVrVk+SBESTmvpDV+cfQMrN2R0fd2hLKvuazzncaWJ+KKPPH6Tifnr5ADWrGyYt8UquyHxR2W7vFfmYFeSTU4xMlTln4SSNvAdSyil/+9M+tieewg4bo/ZS8GcF1hoP4WrX0aduok7poU4/Qp4T2ZzzgRtghbLk0gcc6XW6n71/7HWa7zkinxmf3dfX7+bmBqKYFy9efLbPCAHxGfiwaKanp6VSaXx8vGJ19Lm5OfBAMQf9yjZANAkp+xo7fg9SWvb3kXEHt67GAoHg41aq/DjaJysbxwtnFkbH5prTmsRoqRc9JEmWWY6RJuEik83Doy6JXI2i7WnZFP0oj4O+qB8FmMfi0Es8r/00soq7o9oN9MnzuFOGyFMo59PP4Pdgz3Toz47r446Zo1RQmJMYtBqavN/G9Vt9h13q16wRmLzKurFpaGgSxNfGh0XT2NgIPNLZ2VlYWKjIAbFMdHS04rFcLg8NDfX09IxK3l/Z/keQErN2h8ZuYUSTlJS0UpPPzOTMHD827yk9+AFJfB/rf8+Br8fwvizx1PF0RUv8bvrjDwYh9weijUP8jtM8vkW5fAOj7H9MOHIPfxQBP4aHKTugTuhhLpnaqlKcThKcL5EsHwc8PGZ07Q/Hzv7jot4hNH0/nXGfF4CURc4sTH+4NhAQO4cPi2ZgYCA5ObmsrKyhoWFychLk5OfnA++s3gaYSCY/WNT2XyBFZ+2TxGzhxWAgvsjIyK0r//1MzswywzLvE8XnnrEu6rqoI5Bnwm01I+1t/cTqZNJBAfJHH/hhJlLdx/GEwOkbJPU7BPU7GG0XgrTPCf+DEfm4JdqY/UDT3VYZ5vjttfO7dI7sJ+pfZnvqcAgH2Ki/E6l7nKmHUTRsit+X+oAQEFvBuq7R5OXlZWVlvXz5UrH2xZsrYCzfdZIfzmr9K0ihmQdEMUc3v6b/ZHx83N3dfevK/yD9oxMZZU22rPCb993UUQ7qUWbH4myOxtieD7VXk9gecMWcpMHOCx1P+zjscSAdeEo+YEXdbUXb/4SyX59yBuGoS7v6/dXDfzmndopifC7I/JjI8Ygr8gLWXsff8Hsb6h576mEM+YHUo6CjY2oOmioc4ith0+46iZKOylu+BUmccZgfrbIpxb6LL95nT0FadrU5lnU22OxonI1ynK1arPWVSIsLvg7nKDS7QIGlp88NCy+d57x7DsJDZnQlXeo+tac/atx4CH/whG90gWF1xcPiotTkXICFGsz5JsnqBsv8gDXlByuaMtLNPDYCEZ7onpQNjWCC+DrYNNHwE09EN+0ByTf9qGeU6qYU+y7Wv3TpljI2P93TMcQsFV9Lg11JIV2Mdb4dYa/HcOH4JBS9aBkamZTFlbhxEqNiCzUfmX539Oqj55SqpsLeyZSh8X6fCPl1ltODNH2dWONLHk4qBISai7MKAq/kRNb2YtoFxNxnSx5zgwfGJsemZ1bufENAvElfX1/TtmR1F/ZNEw07QTW48QBI3DQV98gzm1Lsu6BQKFta/nrI6Wtg16bEd/7U425+aTG/tZ6c5ueVElhY2qBQQ3NzM5lMJhAI4EufnVvoGx8KaXHJ6Hbrm0wtH2owzCTrpNuTK+jislTtQMHTKPcrTNxpIuEch6LHCbhBE+ow3cmx7laB4SEF7+vXB/ErJyUlpWv7kZSUtHpqx00TDSNe3a9eCSRWippLhOamFPsuvlTTaWJ8ZnJi+btrnugjVkTSKuP8GrNXbzC/NLf4crmLnWKxAYFAMD398/2j5J5yWiWDWkkcma0FTwv76uWt6fnNAaTcSGJ2qlNSlC6Vp04mnnLHazJ5T7397MX0Jzz0HTe8vcRtcWnq835WiB1D5rZcn7egoGBLREONO8erOwESPeUsKfzCphT7LohE4uccWCjwocMQemmZRU5wKYkUOTQ4IWhMxZXJ6FUxfTNjq7cE36yvr6+Tk1N6evqb5ZSPtLoURrtnxs/M/nSVN7SADo8ws42xOOjO3Id3v4Sk6+DxukHYW1IvXmqOd1qADp2qRcNRwsiTc1Wf46NC7EB+XaLBx1xk1pwGiSQ/jw27sinFvovAwEDQKtnSt1h6udQy2TI0N5SSEhsi/PNM698ePTn4yIB7/5Fnc3MfuTL6fpbnsxy/8qHl2/yT83PhRdlwPBaEWvX19e8qc3FpySsy2ys8O7GwtqyzZ2BiEhbK1fexve/v+D3O9TsE/Xtn2nkMRUOI00+xd8g0vi8gXXRn3qDTRencwcnhrqGxrJqW8WloPSaIX/DrEg0q5iq1WgMkTNJluOz6phT7LpKTk/Py8rb0LWrGasI7wyO6IsJjJLGS/1rs+tv1699dvIbVecBJkFeEtRXdTfHWiGE/SZNkZWeraN1ReWZIyYlfeu9NoqKhSrhM6hKaxEvKY6bmMJOyjYK9Loc53Y7CqPuQvke47rOjH3CiHeSh1aQ2NwJNr3hZH3lOPGFIvEzy4mTE8pJy2YnJ0aUxiy/nphfmuwfHUorruwagWWl+7fy6ROMUdQNbeREkWOJ1h9Bbm1Lsu2hoaAgKCtqKkqdm5uYXli+yNE82A9FEtkVNzUy7s2COsFunTqn+9W+HTp8xjEkoyy1rcs6IUHZ4qvxIm+jK1aIIzjLZ6OS3T/3XOtGT0lvUPtUb2Bbj3xId35qX3dQKRIMOirkpRWqE2pwPdtDyRT7DCK7YeSrhSEf8nZW58NM8e02G/Yn7+JM6+PMWOK/MZ17pFFrKA79i7Zxulkd1mn1IBCc8S5xUvBXfA8QO4tclGttILVj5NZDs4m/bhGhvSrHvAnwAV1fXTS+2vWeYH5pj6R5KCZF2jNV2DHf7iVIDfDOHh5an4MzLLbt+9fHpU9ftnD217j3X0zcJy83on55s6Rw0J4UYUSWNXWvn9Hz58mVQUbl1mq9bZWhEZ0bJcHVsd0bvzMDC4mJ1b59LRNppJlZVAFNjwK/bwAyc8ATXyDMi2mFvxB4y8YgrVsff6rIpUlWPZMi2ZubetY4xsYy4B4vXds22eBwf+DgogClLzyxr2vTvAWJnsfNEU1tbW7GKubm5N3Z/O0A0FuF3bV/cAsky7o65VGczq/w2NmUM9xJo6qxq7JTWdOD48eetWVpoN1ok080l7Kk+j+ES29zUVzTQ2tDXi0PztG8bHjpy0tSGVFDasrLj1PTcyvXd1UzNzbPScpGpYbgicdlIw8LS0sD4pG9uMSpWjpEn67IlZzHcS3iBhZRh6+FghyOER2bcpwUcdKDvc3Y9iGc8EkoeU4RaJM9LQrq22O5ekOURGuYCx+4sx03X189MEDo2AQ2JgtiBoiGTybH/BIQMPT096ywUiOZ5mK5ZyV2QTGJ0nwfpbWaV38anL1k5Oj7tH1kgji6anPrp8urCwmJaUf0jko8emSGQe8CdJE+feFNIUQFVufscHvxdR5MfKJqfXyiv7XJheIEKrKfbbllnT2J1w9jrb1yYW0STZ+qKpDp+QTf8A2yCY+DShOqOvrahkYwGz8J6WseIKDTjxRWY9ym05z0viUNE1EVr9ytOLhdw9PMBKIMwY1VX9FEXAiHJ5jkVwQp0yy+TLL2Erg3/2tl5ovlogGgMZQ8Mi/SWU/QDQ8nDTSn2PXx6RFPX0ucdnO0pzuBJMsURBX0DP92oXlxcpArjDVGBeEqks5OvqanjJbPHyhw7jTi3osHmxKyaKyZeF56xuZJIe3v7wcHBdb4daFg99g556iOzCo8xi4xiFeTUDgws/vMmff9kXOsIo6xdEp1dlVBaU9bWBSxGT4jXhrGvOLpo0vFqMju95MekZF1zgTU99opbwM3QlCuFdfCsyvDWHmj+vV81O080NjY2lpaWlNdUV1ev5CcnJycmJq50XQEfLC4ubvWOQDSPQvQfFDwC6WGk/qNA/a38CMvgcLhPLGFhcSm7pCkmrcJbkuVICyd6JZTVLt+r7uwduWHOU7uHOnFOh8FwL6prCiupROZEC+uz55cWfKLzzhgwjz91u+PmH5xbct/oOdbbv2No7a2fxTcWmSusayeHpMIlCb2j480jwzMLv2hqvXy5NLPQHZVVTg6SGwqDGOWZreMDdnHccyzsOYT7jQCKZozVw3RjZIy1EoF4jmxHlt0obbmRWQ0TxId7R2/tDTiIbc7OEw14ISoqisvlrr553NfXl5OTU1dXV1u73J+1o6MjOjp6ZdHV4eHh/v5+8FF1pQZ3c5eTbriBnr/BVn8MGo22/ktI72F5mcfCRgQjylOSGZ+5PG2gWCI5eubWscvPolKXp7njZxSy5DnBhRWK7Vs7+g3JgecJPG1OoJl/pKFQpqJv/MDGcXUzamp+nldU6JGf1zM+1DmR0jOVA16dm1/Irmypbut9sw7Do1O9/WNgG440/QGVayT2dy1L49VSHqeZXQqzO+vqehrD0POiuGbBbwcy9tDxB9wwJv5PTRJhj0RoA0/PgNT8po6B0vpOoM5FaIGEXx87TzS9vb2+vr4eHh6rp5JsamoCAQvwS1FREXhaUVEBRJOQkKCY3DMrKwtEN0KhUDvI6Eb2M5C0ZEZ3/Z5u9ceQyWRtbW2bVVpL52BEYj6eSMZgMGtWwkyrafJIzi1uXQ52hoYmfH0yhIL0tKJ655AEZHjCVY5A3YZxzgimZWTQ0PfTvH/to6NuOdkg5XdmVA55gpTX94JZnZ7QWQNeBcYpaehs6/upvTM2Pu0jzeFLshJyatBigYEfRZdPTazN9X7hoBVurerrdBxDP42j3eCTbvigfmAQf/BCXw94/iD5vnbs43O+luouRN+CeIx/nD4n4FlYMOtFdtfk2CuIXxM7TzSgPeLs7Lym6QS2DgwMBJHO0NAQsMzExERoaCj4nQ8M/Hw3F5joptj4UoYJSDdCjG/7PtvqjwEE99Zu/utncXFRMe0xiNSAX9zd3cEHfP8uIyOTQDS+wozW1oGmoQFifsxNCVvVmnqC6mIk9bn0TB98D4otc9vb01taxucG6ob9GkeDQ1qK3KvS2DWZMzPzuVWtnlE5XtG5kzPLERkIZ4RB2URhrJUg2ITvc8uNoMsguQtjfdPYV7zxB2lu+yn041z0uQCUqi/8EIms5Ia9E/LsfLiJusxcR2pwAE666YUz5vk+YPvdkgptQ3w4qdzEdn9ySUhC+8/TBnX0jHT3QwL6Otl5onkXY2NjihU/FDPsjYyMgJzVG4Af2NUAE400c5AuS02u+zzf1Dq/BRBP+fj4bHSvyek5aajUCW03Nj6pGPQI/vr7+8/OrvfezcDAeHf3CHjQMl7Eq3OHl/jd9GDfEvLgeXFRrVUsFksikby5V9/0eFR7ZVpFHfCUp3cKOyJLlFik6BkI6Ood4eYlGPv5mQYEUHkSONHfh5dIjUu/wPE5xxWccvFUpbtoCkk3/enX+TjjGIszQkdVvtM1iamWl5WyC0o73vBxmhEiXUSSJ1t60519cfQ8S8c8N0ZZiqL8zt4R7+BskHoHINd8hXw9ovkgQDQX/cxOJ1uBdF5ifkVguinFvoeFhYWN9tkDljFxckJhfiOR/Nuf/v6v//WXv2nrGoAfYXv3skO7+0alUUUVNZ0fLOfV8ijt6aIBfk6fV2B8iDsvKUxeMjY3o7hMA/7raDR69aDtFYqKmkE0BFzT0TM8/cvZ89J6KogloSENmeXVHZVFTdVtPczkbI+UnKLujuLmDrRvPFYc65kTza6m2+Q+NYozUXWlGvFdzMJs7yY8eZKp9zD9sUkkii1PZwRLn4H8SDIsnVcx+FNTDsQywDL84Jz+1z0PSxs6/RKLypq6N/TtQWxbdqRoQHtE8pqcnJzV6xy8HyCacyKLE0m2IJ0VW17gm29afd/NRmelGR2fPntbpb72d92dvz978/9Tve2irkO5Y84nesZX1HWxhKkmzmJbXOjY+PT84mJ0eW1kWc3s/Nu/AeCU+tG40kE/cajcxzczIqo4vqsyuiOraii4YSC/ubXdzMyitnbt6ErQbsrPb6yvW+6d1DcwPjs31zPdMD7fPzU/xyrLJhenuCek80KzxQnF/KQC95ispr6fmnJz8wttvcMZLRWwFLZLKQGR4aEncD3Pomp6ORGKbj1ONNCPNDEUYnlp/IjoEhNCEDYkSVpaPjlXM7cwOLe4HH919fd19A5lV7WkVDZyE3NB202SWto6PjwxP7uwCF0/3tnsSNEIhcKioiKxWOzn5xcQELDOQoFo1IVWSvEOIKn5W2vyLDetvu/mI2alyX1R+ffd/1Pj2m92q6uo3HY5reOm/sDdGCUJS3wRFFkIRIN1jZ6anmvoG1we9JiaU9PT//4C+wfG8/ObittaPGrlnBprv2oDaiyMFeHLljhqXrpKIXPeuldhSYvAP4srjczq88/uD+wcGUAmJThm+WFiArihWbyoXHZcDkjtAyOK7RuHhljZOWdhXhqOHD2W2C+vSA/HUUXg1fmUa+HYqxzGYybriQvtjiv9Eo6m8pCmZuZq4c+740UlpZlVD7i0jkqrBqhBJTgjgfQeV2wVEy1IKwzIK3QpTreIjQTSqWnr2+g3CbF9+AjRzM/PE4lEDofT0NCwFVV69UHRsFiskpISqVSakZHh6+u7zkKBaE4LbH6MdQLppJ+tupfVptX3HYSEhCCRSFDbDe0VGRm5b9++9Ix8WUyJGVJijBA706NofHlN0/Jd547uEWAZ8AC0aySFZSBNzHz42s3kwqxPY6ZVYQC3FhZUZeQSh+LGIdylBnRfU3Nbog3Kvn1sMKy5Iqm2Lre0BURVYJfMnHogGrZ/VEaPX95AUEh6KVEaBQ/jZHT5lDZXDI5PRRfXZNe0rszgGVVbYyaWaTph1ezxFwge5gzpRVvqYQLmCA5/18fOKeP2I3+TC0jmBQrtmBNW+Rnhh+eU7x2puzCkfTgCMuUGv/qOsOIWIUPrjBtVk0UxiXbDCqSmOP4dd+7tQF+PyCx58TuntoDY/nyEaEZHR8PDw/v7++Pj3z4S+NP5gGimp6cTExMVd7LXDxDNSW/bfVEwkI772J3m2GxCTd9LX1+fsrLyW6+8vge5XG5jYxMaGvrq9X3lrt7RqZm5wZFJxavtk4Nlw63zS+ttMCpoGu8nFUTbxIkTqwtbRstLG9uTGyI4BSaYWIxXWbhLhvDsEy1kYuhTThA3KCshc/kO9+zcQnVt99Dw5Nh8/+ziZHRutUd4OlvuWzoUOr0wyS8scsvKjmiOTe+PGZztW1ha8q0pMIn2M/GEa9Mxp9C041YMVUvyISz2OBF5nW2OyrmGzrl9hsJQ9XS+5GX9ow3hexvabhzxAB95kIe4yDUnF59FZ1+6J32sKrR5knTvnIfdCRRB7Qb2OB2rInV1To0amZhK7GSz6yyz+iJG5n6+mTg+N7umYyHENuTjmk6g7cLlcle7YHP5gGiioqKoVCoOh2tsbFx/oUA0x7n234cjQVIWOJ7ysNucyr6bypry45rf3X56oqNjA71pcnJyUlJS3vrS9MIcryGZWy/P72+ITC73C8/vWd/94MWXS/jwSGdJiIt/IjozycBfYsBjm8vZ9OoIYrmIWxMhrk5TuaOjbY3zlmYXV7a/WcL8wmLnwKjiJtTM/DwzJ5eelepVzU3oCa4cLeqZHnOvSgOJUxxw1hf/A4WsbOmqTiUd5CBOets9jboHi79qxre5zPA+7YLUcTE9aYn8HknYT8Ae5MGP+zqaxmg7Z16xSNWySrlJSD7/zFdHw8FJk2yrYWen4mt7TILRiHYnlXEdinWt8u4+TjcSNni1TNTMLy5m1DdTszI5xflAN+v/hiE+P+sRTd5Id83EL4bLZL5myyr1IdEwmcxXr/v7ikSi9RcKRHPU0/HbUDRIh72dVFj2m1LX92Bge03WuE9as9cOZ7j+vWg02rvuZINAJqA5E4imuKsFGAGkwvL1KuxFeZsoMJsvz7GIjrjA9Lxlw3jApT9M8ThHpt9CMx5a+jx1CLj1wOGWnmlr99qxUXNL0/VjaZ1T5c2dgx29yxdlOkZHCzo6q0ZfFA6ljc+PvHz5MqGzJrT1hWGc5KAPbS+DcBqHUfN1OCCCKUvtLoc9VyY433J0PkcjnXZzUkc7KesTVdAIFTT8GBpxmWGlH/fwQewjgzg9/dj795lGKvdxx3QIp8yRD+Ie2Mdft4zVPuiHvRRP1k56dinC9KgIri6jMWuD4strkKFJj3yD6XlZPRPj6/+GIT4/a3zRPTPJaXlhUZlmWZXm2VoGnhYM9/xnEO1ALHd68edoPTc3FwT4q3cER1pHR8dHVGBiYuLNqXU/IJri4mIQ0YAf5Ad7r60GiEaJ7fR3KRakg1zYcXeHj6juhiB7IODCb63d/yGUeKx/LwwG855XZxbnRuaWm1EF5a2JWTWT0xsb4gBaGUmN9W4hyRYkISko+GEETw3mov7c5fozzlEHN3U0W8uYqnn13upxmBML46XD8pw+n4hKPic41Ts0Z2j050nIx6ZmeobGVgY3kIqSjkkYR71wOkHWGhKr3T7IfX7wQ/6Oh72cjjoj1Lh2V4Vmlz0trznanbJHKpkTlMyImhT7K/7mlwPNznDtrnmYn7RFH7pHUdYmKz3H3eI+Q4uueOYe1414pCRDqcmIqiLaCR+WajATXSxDJ8Xf9wkyDJCV9/5iBD+oTOVwe/UQdGt8G7FaNNF9zf9wc/ydH+G3PCT4+38QT/+DYv0Hms1f/Uia/ozCoiI/Pz/QaCotLc3KygI/W+AaxVCeiooKsVhcUlKSmJg4MjKyzrdeWFhITU0FRUkkkpXeqgrW1Y9mfHx8Q8vOgvc4zHT+qxgP0gEO/Kib0/r3/WgSk+OycjLWvz3w7urJJYBH5Fk1eaumldlEOtoGCR6R91FcQ5j/NRvPc3SuBourS/ANiMq2c3CMSUyaWxyeX5qL74mUNPgElLon1YZwQ7KAaEbGf+qAMzQ+hfFPfEKX+iT+tNB4dGPFaQnrlID+JNT5Zqjtj96IXRzUN0L0LhbmB1vcQZbzDZ6JZag2NlrnuC1O6RFZSZt8TAuvbInS4NpoCqwOOhIOWFL2m5IPGBEOOaNO6Ttbo+9Sfc8J5Mduhps9S7dFJ7ug0gOfhUn02Hxd/wCL+Ch64drQOn+w2iyXa57LL+5Z7nBU19lv7x/JTMqce0c/AIjPwIpoZpcWlbMC//XBld9Y6v2/rra/5SL+9fH1/+e59r50kWKIb21tbUZGBrDJykVYEIkoerQEBQXV1NQoMgsLC4F3Pvi+dXV1wDKKTjBgX1CCTCZbeXWrRHPIHfaXAAJI+9kIZfrnEM1GiYqKys/PX3laXNnOl2aDNDz6i5VMFpemR8cGR0enhoYmcnLqe3pGll4uDU6Pt/e0vqiR+/qnVFe/s1NfY2NvQlJ5XVdxdkG2yDtNxE/3j89jSFKeiKTGsnBLfiRVJLfhR92y0Lcj6PRO5oibJTYeLLqXrKiwuXdwrGVwoG9meSD4/OJix8CIHS/6MV2KDkwYeN0h2yczT92HrsZ3wYZEe1fKnqTZP0gyPyZA7CPiDmCxB1DEHwkEDQ9HZRrix2cE5VukY1eJR68Qj13AHTDH7/PA/eBMOoNG3mRbKJsjVc/AT19DXtNxNHB+fh9hZp/6hFuuR8p4bh+LdOIEPsD4GbiK3Ytzygd+DmdmFxbYmbmPJTyDNJZZjndhd8fA2PhRBGOPA/WANdWaH7b5/zCI9bEimp6Zyb8ke/8b5vnvhJj/g3r2bxSL3wrQ//rwCsgcmlv+zU9PT4PGCoVCWdOzf03jC8Q767l8A7YBW67OWT0q6H2iCQ0NpfyT1dNEfBAgmoNu8D+LiCD9wEQq0ZzXv+9ng0QiLS4urjztH5oIiCiISi5fWPg5c35xrKqHGZpq7yeWBfpn+wozhIHp8BdSfbknO8PUydXEzBnrjAqZn1+sa+7t6l2WwtLSy6Ze0OJZ/k4l0jyf0MCQPFxRr1d6RmF8cdlTqc99IS+uoIotzwWKAaIxYYfhI1geYba6hhdw8eH3YV6OxNDMjNriyhZyXhSnNqmwp8UrNV+QUVRY3y6QFzjExjnLY6o7uwLT0/QjaXohJGFKWmZtHT4ba5vgdC4ApoQjHHUkKZOohwhUJRb9ewrxkAnhuC5OWYe4/ylp73PSj0jMj27IgyQkknOHEnXjmshKSR9/7B5GlYhWIbicwmBwqXdjmu7d8nW8wMeoY11vOXlfZ/DPR7M9q38+2uoHB9VMacevYZRBIOTvMzgx6ZqadQDmutecegA0Cc1Yi1DHvy/Eaik8Lkv8o5wL0r9Lqb/1Rikeg8z1l/Bq3deJ39xs9dP3iWb1eOi+vr639qN/K8uioSP+LCSB9AMDpUSBrXPHzwkKhfrgNq09DZ6hVIa/Y0CwX3hYERCNZ0SKSYFQI5hkmnDPgv3grpWjEcG3qKYNhEICac7Y+HR+Q7tHQo4gtXBxaSkvv1EUGppUS0+qd+fLUt1kcsMg4dMgHyCRsemZxsburIL6sqauvJaSgEa2a6H4+K3bas9Rl7FejmGBuu6ut7lusBRpZG05S54DUkVLm7ysTi+Sb5gEsw/Degii2bkBjGIRRuar4+r5wFN4jcPQ4NLVPWgPuQEXsJ6qaOZlsvdBd/ohIum8EKUmxO/FkPdZkA7b4A6gcD+6Ip/zHpPDr90VG+2xIxyyxB9moA9hiYcQuIMIzA2x6aPoByo+Dt8Jcbu8iD94EY4ISDfkXlk1tXReJCVYzC7jntd3PHUKeVITeZCHsYwNYmbkGgVKz6BZ556zjCkb62cAsYms/nlPLcwj63KOZAb+LoD47xKyUlYgeDr9oT4KoD21etIV0A5ap2jWtLDWG9GAn+JKROPo6Njfv9wvFrTBfH19xWLxxMTySJnOzs7AwMA1HW2WRUND/Jc3GaR9rigl8jYSzeTCbHZ/bUFrlZeX1wc3lmfVsAPCyV4BNTUdL1++nJ6eG56bpKbFnSO6nUQTroAwJILJrEopbVxudvnK8qam53Lr21ZE8+r1OgrTC4PxOSXewdnCsNzgnILwzGIQAbVVd4hQUik1YnZ6tn9mzLshyaMuOrKiYPdN3T26+hdErtpM2iM3D2lWXkBGCUKSKEyLs6bhjNH0i2Hou0km1hHObL+w8JKE2LokeBBTl8kw4Pk+EkmtEiMIhUnUxIyLGO4lIvoOG3VVQD8hcHkuc3crCdFicC5gWBrOjANY4ncE4mki4obI7AceUonrdMR+ef7z4wLnY2TEETvsbaqpQ9Zl04yb3/hg9voiDwfATktQRsmSsxTyKUvYLReL+8lGWmSLkxcRJx7CT0lsr6Y4WGVyHme4sGrDUttza8dKF5agHjdfhjelsLC01DE9DtLC+uYnksvlIpEoNzf31T+v2sTGxiomDn/1Ov4oLCwE24ANGhsbQfwBcoCMIiMjV1+jCQkJCQ8PXylzw4Mqm5ubX7x4AYouLl5e2aOnpyc4ODgpKWmliqDB5enpeZCC/LMXBaQfXNBKRPh6Pt7nIaOvhlsvN3SDVdfVvGezsbnp+aWF1o5BSWRhdtEv+hDllbUQRQlaBC4xKrqgr7lxfNm/g8OTim7EoOlU1z2gaDrFp1RgKRFhycWDo6NpBQ2tXT/fuavIqgGiEaGlhSVNQGe5HTXcRnFYR4RjbNQFDFpZR/sBw8uM5y+pjmDEptJCU60onnpm+CcY3OlA3I00J8NEinmin2MRP6w9pKBDltQiauhvaRsayutuGZ6dKu3oxsZGW4RaGASZmabA7qe6PslFmRZgHbhBdz287kS5ngrAXQ6zPB9m8S0Hu5eHPi6xuygwP2mJOmqLOYJAH7TCnzRDGoh1tVL0fxA7K4fan46xPB9vdjgIoSxxUEHaa7As7qY+uSp/puThoCSxU4m2PhFhpxZrfTwcphnr/CTbmlpJYFeGtIz+NMnOwvzC2OsBnBCfgU3pDtPe3g7EAX7XycnJiugG/NJB5BEREcFgMOLi4pqamkCoAUIQPp8PztmKG+HAMikpKUBAEolkzfWaDYsGhDDAZ0A3q8OkmJiY8fHl7hVAb5OTk6DQg0TUn9lUkH6gYJTw20g0dWPdvIbku9aGK/eJwTe4ZohHzWg3uy7Fryl7fmnxzRJm5+ZLazq6+kb7htupruGOMGlGVt3i4lJX/+joqnUIFhcWUc5SSyseJRhRNOg3Mf+LcVLgtwdc01LVDhpcIBqKzCiRdUSA1DzW3jI0HJtVvE/9sjrcGlsIZ+f68cKz2dx4GJ4rjki0ygvUTvfwrElHl0Qa53BjO5Prx/o8atKE9TmC2CQrIU+UnDW/sPiiq42UgnGMM7OKJqPLWTdSbC/E2u4Xkn/0hx8Oc1CNtb4dZ3wmwmJfIGyfCK4ZZnJXYnCRaHfYErcHiz/qjDzjYneRb3456tnJeIuTcZb30h8YpN+9lPBMKcLuKN9ehex8jON4xM9JiQ874O28LwC51x95UATbL3HWiDO7m66vlfrkTDjeKSt2bhGwJGMl+BHCawqb6voGRqa3qu8phIJN7HenmKFphYCAANB8WT0fC8hJS0tbM2P32NjYhvvRyGQyUO/VE1OCxyATBEWgEvn5+b29vSBeAjmrt1m+64RH/YVJA2k/CauMRXzsJ90SphfmiESi4nFweNRf/+/9u/4v5YvXDQ5efPqtiq6tazg3N5NZneRZlzq9+M6+M6NzLdI09zv62EvXac/MfGUxxTxZNj88t3mot3Pqp64xUlEWgexDSKSIKrl9M7VrSgCNuOrRLklygQ07CM73l6Qntk/91D9qanbOJjDy2JMrWqSbJUNJU1OzKclVRUU/L/s7MT8b1VaV2rU8KKlgoJVVncqoSLYJYt5h0A08eRWty7eHPFNjdYK8bofzr8ldlYjYQzDsXgb6Wx/Uj8FOe4NgJyVO+4Nhu/xRe4IQ2omPn+doG4ToH0WS9tlSDzvgNbk2Gj6Wl32faUSbnJabPcnSeZ6tdS3V8GSc1RG+/V4cdpc7bq8H5gAat5+E2+2H2e2JV2ai9jNxp6Ot7qboX401+oeAeNKf8zBK2tDTF0COAKIRStOYqTnczIL5xbfoG2Kz2LoOvqAdA2IWEMuszgEn6bq6uvfspeADogH6AIGQra0t0NjU1NSr9bHcjwaL/m83F5AOELBH0ch17vh5aG1tFYvFyw8mB45cuHLmX26q/49bv/mf//G/fvtf/7Hv3H8fvHTtvpGuhakDBkF6GwQiwQELh+OsjR2uKalq7P7hktpZXX0DKx0Dqyv3DK9Z6t+yfeyEXd6XgCc8t7PTeHr/rKGuPXJtafcdTK/bGJw111W6d+Xbs+d+VL0MQ/y8jam9w6m72srn1Y6qHn9s98jKwRzIEVTJCYu0QyJ0rEwdUEgikYAn4nAEnAnc3gYFu29hcOTW1R+v3rr0wMgRgbJGwPbr3/mT7sU/6Zz/k5rmH09r/v68xr9rnfl3LbU/aJ/+w3XNf7987g83Nf9T+/w/Hhzb/UTpoNFhpfsnvrmg+uezGn+5rfrXWyf+dvH4t+eV//7k2LcGygcMf9z1RPmvD1T+dPbs74+d+/1JjT+pnf2jyrk/amr8p86ZPXcu7b5x9U9Xrvzp5tX/1jr3xxvnf3f9/B9uXN6tc+WuxXNba3vzp9ZPre2uGD67YWRCIBLf+sV+Hbi4uDCZzC/17iUlJZ95moh1vt0HRCOXy6lUKghYgLfWP2RxWTQY9F/pLiAdwGGPIpHr3PHzIBKJFDMcl/a1arni/vN3+/7yv/araBnu17L+7qT+JSMOMyhjcHTyXbvHdxcJmhKTe1+MzjX3jjbXtvRmFzV29o40dw3W9/YKmpL4jYld08uXYzL6s3wbQlHp0bzCwvE3xjpEd5Z61iczamINuBxNS9JdS0ZIcF6IOBcTE3yPx9JFsR6g0Y+J9tpcm2/OHNN6Zm2KpGqF4XSi3O+kkC7InXRScdI6s7Bm3Rf9HJFc/pjvxc6Ut/YPseLTPOJzqjp6U6oatEP8z0SwT0a5nfPzUGPSlfyQp6WWVyOe3YwyOcKjHPeiHee7fssk7+KhT0jtrsufWebq3fU1v8x2UpdZqXPMNclmlxjG6kKzE0HWyjRnJbLzHhZqlzP50BOc6n3Y6UewI06YA04EFXc85YXsrMj9Gyb5WxfKSYbnIZLbXgLtigTDKLDhVdh61UgbJzqmF6ZDaosd06MCq168f1VyiE/hM4tmnTNLfEA0ivUP5ubmNjRRBRDNERT6b1QXkH7EYI/Bkevf9zOAQPzUlBsZmyKFxLoEJ5TXdfIaEh0jxY9IQu+grPfPcRndlQ9EA3SjeFrR0EUXpTi4RlbULU9h1zcz0j3900XfqK4YWUdEWm/OWxsL80uLIKQCfzOK6+9ZcLXtPenuUe6s6NsoqiYac9Eeq+tobkB59iDu6UWWzXenTv5w6+FRBFzVBnmKhTgd73Ax0Qouv/XUT9/cz+6cO/mMDfqmA6GoJTWunpbeJGsf7SLGxtvIZPSM5J6pseaxwZCyCt0g0RUJ8knac70MlHma5xOZ/wkvyvcuuG9ohO+phCuhpkbZDw3EJvek5hck5jdijW6GG14KNTlNcVKiIPa7I/eScbs9MKDRdMgZpWlrfc7V4oyP9VEaXImGPiVEKImdvuej/0EnncC770bT/kGlXRNR/F7AYBkPjOOotJKgp/nEMwn2x0KRF/09mwd+al2WDXWWDnasZ+09iHWy8ya+ys/Pf/bsGZfLpdPpGRkb6N2/PNYJgfk7iQ7SQRTuOAy5WdXdFFZEA+jsGYkqe0EqD7+X6W6YzaFyw8kkWXBQ3vDohOLon5yeK6hs7V6lnqmFmbqxjpXLN/Vt/dZU2XNckE/o2gWVKruac7uLShtaht4dHwG6ukesmBIjFxHGN8zNI+4O0+0CEadHoeMzTEm52s8Tna0imI8YjL169/771Fl1C/RpFuZ4NOxinJO2yOQi3OYABafshlXBoR5iMIG5LEEOwq8IF98TbCNn6XG8bP0CBoeX371tcAQfmcJKyXGvkbjV+UZ2Jqf0lJ8VkA/QMLsx+H3OZHUO3CjDyiDY+r7I8rzQ/JiLsxITfsgFftQBfYIEO8JxAlGqkjdMWeR4iuagago/S7W9GGms4WBxh25gnHIHBEpHfJ12ueJ3USm7qbTvmbiDfLxpAuxmgMMpL9IJKe6S3OxSqql6jO1hR+JJM7q1vY93UIrLCzmzKrVudHmqrbmFBaeoiCdBASWtbxnUDrFOdp5owAtAGaOjo4o7SusH7KXsjPkHjg7SIRjuuCNyU+q6KVRVVYWF/aKDvE9jmqYcfzwefiYcre1Mu3KbdPM+/SbNhVQZPDAzFpCdZ+UX5BHyviUW0vLrPQMz8160rM4srmjzCsjAe8R6BWWKIvLfs8TS4uISzT/hrhPXlh1KkqY8pgcZugfIinL9mzJ8K9KKypqzWhqSmuscQ2WPifTDZy6e9cKrSIlnYgkXQ+FKBNw+AlGJ7+qY5I5LZFkGe5MSMZxkMbfeF1PMfsrhOgmkmYXLt+cza1sYCVkPRFJEdrSgLialN6h4KIFTFqstwhtLqOcZTHUe87gL4aw77IKvk5IrYo8dcR8Jf4COVnJEnaPYqPtZnYbBrvAsLvqYK9mjjphiTzk5a0rMLkmMH4Tdf5ykp5+ke8Tb6TsXwree2F0EPIh9zvjY3JZZ6IcYK7Hw+7zxV2PN72fa6oag9jkTdqMIJ8zJug/c9WVBqMLYtvHlGLBtaOheoM9DsZ8gK/dT/sW/cnaeaKKjo1dGIWx0CIKyI+YbDB2kw864Ew7Izarup8NgMFavDAMIacu9nEo6mYC4lkLQYzPuGKN0sSaqDOeL8XjHcPFdgccVLzcDjs/qoQkfBGzswojXNedrGrDu2fn4huetFk1FfVdOafPc/AIImtqn+sbmJwvKWxHMaGNsEIIXa+IaauDgZ8Lz0/Zn60m9xPlFhslBBikB8tbaksZ2nCBC5ba2GsXuaiLlSQ77UbKnTpAInZY8MTNgGU/VinQ0S8BHNsaQy6NBEiRli6OLFGMjhienQwsr7OPi6cVZES1pqX2Byb0B7tXRpPIgjxdC4xChqgddGUP50ZlwiAc/GAjbRSV+TyEquyPU8bDTRLiawEGZjNeg2KtxbPdg8Pth2MMw9G2/Z3qx+tqJT24lGqrILFWE9vtIWPCqqpPDFZr5Zf5z3UCD+xLjg26oXUjyQRd8WH3aKQrhWwr+ezJWFUXQp3o8koXcChE+ivQrrq2DCUK1RHyzqNDeUWgmio9n54kmNTU19p90dXWtv9Dl+WjsMd8i6SAddsSp2CE3q7qfzpqpISYXZkPacmAvAsiVvLA2l+h2IT1FF59w0SRZ52YUjSSJesLnPQrwcg2OX//gnYmJma7OYQE/7aG17x0rwWN4QFffz4vkDgxPeIdkg1Ra05HfW01Nl/nWJjZ09XlIM6lCeUhSaXvXENU7/hqCfZRMVoO73GcJVMIpp0JpDzmCG04e97HeNkzpPczzI07XtSNRNRVN3RPjs0Bsi112OdjL8Q7muaiSoSyP6nSP6rTm8YHa3j6/3JKY2srq0c7Fl0tD01OV/b0zC5MVoxmVQwUZPfX82kwtqttZFEGVhDlBw+/HEH70QRzyge1h4fY40I7ZMa/geLps+mMJ/WgwaY8/aBAh9xLwICmZY+4ynz0Mf3gt0vhkoJ16lOl5icVxPGqPM+Ec2u4myvIGwfwcxfaSh5UG03YXnPo9knI4AP+9O+poiK1qtMXtVHN0ie/dCO/j/qiTYud7gbb33JlaLryg6rLN/H//+th5ogFyaf8niiWc1gkQzTFbzHcwOkhH7HAqNsjNqu4nsrCwQCKRVucUDTXxlrv/x4W2imStZJcKB0SWFjH3olmqPrVcFppemF/U1NTRNzW13sloxsam/USZAkFaXGKZPLWK4Z8an/WLYLB/YBxOCYfTIoB9OLHJpjyRqVBkFxhBDk0uqe9UXBjCh8ScJbKOP6eoPaddNXU750pWp2A1DPGnDbGnrQlaaPYFAfEIVvevygfRZsz6hrb4zipuQqoJ18M4hU4qk718uTQ+P1M21MmqTrNJDafJ0x4mCOElsqjmF6LU4mdhMofU2Oy2Vk95nldqNqs85DoHp47CnaUjtOKJKj70XUzibjr+IIJw2MLlkLmrKpp9mephGIVXlsIPByNvR7JvyhDnvBxU7uKPguSAOATH7eagTwpsL4aYKRORu/CE80Sbi0jbCxibw1b4406oU0y7XVjyNxTyN27EfTzUhXhjrfQnt9MMLidSLkVT1MOtLsSY3ZMb3WURtdy9nsdwaYXRBa3tC0sLzZOtEwvLB17P8Ii2O0fPgzc7B41s+AA7TzTJyclxcXHc12z0rtMxa8wuRzpISja4k1bIzaruJwI+bWLiL4au9s2MCptSaFUR3LpYmyKCfjblUjJGW25/PY3wMNfNutiblRdnxxcn5n54Po7lue8yqliiVBgpzAIVpEPk6tC4XtEZ4c1pOYMvlkA0MTQxPT1XXt4uFKSDeGdwcCI5t44akOAoDjGMJBtFkkWJObzY7IjsF6cdWccQ7mpI+llr8mUb3B0dvI4tUUOfcPY56qYnRovAVnZz0UTZnL/wZM9upWsMUz2J2zVrlq4j35odVDPSMzA71jU1lNffwqxKReRHe2Xn3k8RaMu974X7PfKS3pL4mcSFc4vzGAlZxrIQbKH4Lo1+0hGr4Y26HUy8Ec3Z50bbTSceQZBuuHneoAiPC1gaQR6PJATNQPszEhirODywJYRcyD2PxCsbkpUQVA0+8k6k3Qk2/DgO9iMS8x2SuMcNpSqwPoRBHnxMPGyM/yuZ+HcG4R904nfu5G/cKcr+9pcCTI96OR8Joh2Q4veHOF+VP7+daHPen6Ti4q4mId2IR+nGsJyLfA3TSG7Ffl1jY2aigONOhONmJAcvmSK07O8cXpiHOv69hZ0nmlevZ6IJDg5OSEjY0A3I5TmDLTHf29FBUrbCnbJAbkpdPx0Gg/HWMehtk/2CxmTX6mirQpFhHte22Ncgz0Mrk2RRxNUXcozoQjw3sra+J7+oeXZ2/kVdpyA8N6+8ZU0h+aUtJnCxlhXfmhp6Fc48ZkdQNieeQ9BNJBxagY97AosYTLPyQ3klBYSFF7mFp+S1ty0uLYG4Jr49F1ZKJZe5Y2PEOqFepxGEMzCUOgyjxWfd5BCvIhEmT+G+0VY2POIdAseIJjT1CTmHcr/qiLqKIpzxdP5OR/P7OzcvWTCNEP5R8rKx+SnwWbwbkurHut3K056lB/Mqw+EFuIdymlFEsKlXmENQlLSubHB6kl9QAEIbhxTZjWcMFRO8Kgf+MIIBS4/TD5YaccWo6GDv6gh4hlQn0etyvOt5bxd1P7hekGtMcyEqO0A3wvWCO/cMlXMvzPc80fWaDdLIw/hhoNnzSMsfONT9HrizPjbKZNR+M/J3CPK3dNJePPEAEXWShN/vSdvjSt1vT9sLJ+/BU/bQqcoSylUZ+V48Q9mVsQdJP8RDqUfAtBIQZ0MxZwNs1Lxsf6DidyOJSpb4Y0ZkkndCd99oYXKlPzU62mcDd0J/PexI0dBotPr6+vT09DV3at4PEM0Jc8xuazpIyua4U2bITanrp/OetZ8WXg9rAn9BiuwoDGzOFFUke9ZEWfqLrjkz9FieSE64wD+roLglLKWMF5odEFO4poT0vDq4S8R9e197vvQKg3YUiVW2JlxyYKDCLOkpejDp88d8y0d8G6sglPRF4eNYkUGsX8vo8mXpxZcLOQOZeYNZ1NT4qzLXmwLHuxTzWyj7a45kZQLloAvuPMfWOeOeXaL+TSnuWijproyiSsKeROGOEPDKXNQBJvqA9YMfbqmn1y7P4zU8N8FvlLuVx6a01T6JC9GO89NJdHPIdTRKtzfxD0F7xnID0opaamcX55pHhxilWV5leZaO/hq6tIvOHum1DbVD/Z0Ty/fy87sqOJVhwfVZ/o3pT3JoVxIpDxN9HIt9JXVxRoniU1z2JbbPOQ/BnVCxEt5F3YZ0ww5/j0dGJkR6lOYYpkkt0kMZORmqPp7fcan7aK4HMa5HHYh3UU63Al3OM/lX3LkqJJcjOMYpoodVVERdT19Cc70mh/ujK0GJjtcLRzxMpu0nk4+gEMpmyENk5GE6QtkArU8WOrjKxiamwwIzncy9/dxiV778ttGUsDRSQnjK3MyvvW2180RTVFSERCLT0tLEYvFG+9GomGL2WtBBOmaKO22C3Kzqfgrgc65n2dzZxXlhY7JzugQTHilNKjHGBR01oB21pFwkuXmJ0ts6hkAMkpBd09y5dl7xyem50Mxifn6GrCmNWOar6UnR8vTAkUP9Yy3cgx9TI588c6eZeFOwAaL09ponsSLjRP/Gke6VULGiu5eRmvVM7qMRiT7l5aSGwB52JHxHIX2LAWd+/HkXaxWu0yF/uJIUdiLM8bAQdpCEOQQnnuBhj7PRqp7wSyKL43c1yqqr5xaHqvq7kImRenyPG54cXanYpzrVsYBikMB84C15Tghy9g4U1Yc7JwgdOZG5Fc1zi4s1lZ3eXslxEcW9k0Ozr8fRtTT0ClhJlugA15Qs6wj+XQRej0K9n8BzKGDxGwOMM32exAbc9fajRaQ6pMRp8Hl3aUKcOMnCP9IrJ59dlksvzYAVhYha4m8K+ae92cdcWBpMgRqdqR/qRshIEZQVoArDtPzc9ZjefPnPd7JJueHnxPizgQRySrpBnOwQn6lkQ76EddT0tr2BN7nDJmlaUc/oUx87+WpaM49rYa87sBU7lveXO/P1rFwfkPxsmtY9h/zXyo4UTfY/UUxGo6ChoaGqqmrl6dL/396ZRzW17Qn63+pe3V3V73Wtev266o/q1VX17uR1AEUQBQRFvQ44z4AgMs/zFBJIQuYEQgYShhAChHmeZxmVeRBlElCRQRGZZJT+yfHlUahc4g1CuOdbZ2Wd7Oyzz0nOznd++wx7Ly2t6fDmw7hOVrhdtnSYNKwDtK0wm7X58lBYWIjc6Lw+ENFE95a5FkkIqVkgmnv+sZrmDHUr6u3U8NGJqefDbyam1j5/vLC41P148Gn3cHRPJfdJcWLfg/ahpyEJZT6MNFtXCT2cHltETCoofNI73PF0aGpmFn6xhled8TWVQdLSjIo2pJCnr14Tc0tvFlLVpD57IjA/Eoi7/AK/A9FgSd/hAvf54ffSCD/zA/ZHYHWkvtopfmoc7DFPBj4xKTAq+xTTXy/C53IU18T1GkFoktGZEFAYc4XPvBPGtA6LcUyPie2oSa5qspSkmEtSotvzma2SixGUE558V0Yqctl+ZmYut7fcJlvgmh89PTdXX90NorH1EPsk512kk/VtMMfuYU+TwlyKebmDmcn9DygVBeyUMkFqVdvgEL2oIqKi7unw66crg/bGdjZRG0r9GhOYj9KuJ4lOCoW07JK2l0Pjs+8edg/4iXPDi6o9MyQWYdzg4MTVj/mG1ZdYF/JcSsTgPmZ1JcRKxukJLaN9r2e7Ft/PZ7+o1bUlHzWm3XASalnT1cwpxx2DYKnB6fELGMpNW9vbjtbXPX2n3n5oGr9/P9vcQ48o1OdU3xqZWXtI2Nkon2iW/9qbp62trcwsExMTGRkZVVVVz59/7CsX/r1rBrEE0RyxwO22osN0yCJAxwKzid9gwxAIhA0OHz45/65nbLi1e/Dt1Luqph5HepJfbNbg5Hh6SasLPYUZW/Jk7Hnrm/75pfmnU4M5NS0MTj7FP1XMLclrbxZ0lraOPXs3Nx+RWn3PN+a2p8jIR8yVlufcb+cl3k/Ib3jSP5TdW8mrSrDBi818Jb70NGlcdW1dT0bDI3rufbMCjl62h2qMr644SJNHV2EH7g+hqZOCj2A4+s58U7HEjCeyZUUbsukGDqwbHhFmuFhDd9EpF66aDV3Xjm3Hp2rZ39K00OVURd+JCtFnhFwQ8E1iwgwloY6xEbdjBH7FhdElle4CwXF39lGHIFuGMLWptmmop7azH1shuphE+UVMxRUlN/Q9k6bX0pKK05o7jMNFei5EHUfm5SBJYkPr1ErvJNPv5soau7uefTj8zH/oCuJvvoD556Ovw6nx9EARs7Y8pKlmaPpjZzSVzb2hqZWgp4Lih2x6QkZ46eqfHXzdOvgcKX9idrbx+eDbVVVz8f1SaVNHQGh234vRpMK6e4FRJS0fHoh/O/fugg9T8yL+8OUAVnrex8wLvTzpuaT7aslVaqGPgn9LtVE6lFI0CGNjY7LOsiCcAY8gvdLAW4h0GhsbkcEel1d1fKVlhttzjw6TplnAUTPM5n6JjfEVg3NPT8+KYyrw0tTwlrKyF4/uBEXuD8epJXmfzfO/lE9yquKSWyWuuUKmIN/HTcqgpXHCCjOzm+bmPugM/jai1BpLgtQEF+NOSbHHxtng443xUcdcmNr21FsB3Guu3DPW3PPGIRZOUeZuYltuskV8vEdOas7Ag+bhp69nZl6MjVc866x52Z3V3GFOSbiOjUqtbOPFlBs5ck8aEk7fJWqbsjQtWfpWbD0P7nFPvq4j54RrsE4gXofipGFw+BSOdT089iw/7GpS2I04vm2S4GoGy7BIbBoXoc9l6fgyHHnMu1yGdQHVPEFgLoo5wWYfjcUdC6Ofj+S7peeQisqDyqqkDS01nf209DJickle05PsjsesisrCrl8ZTbC/47k4IAmm3raB1c9PTs7MFtd1tvV+6MVi/NWkovoVHhh5xU7Ir+n424XR9+/fBYltE4o1wop1cgeKFLIWZUEpRYNENP7+/k1NTUjK+Ph4dnY2RDH9/f3Dw8M9PT3l5eUsFmv1wE8fxt42xe01pcN02DRA1xSz+V/kV3j16hWXy91g5jdTI8X1SS2djwqK2vQt6UcIPqcldod5WE0WYW+Uz75Ej0M5TpqpTlpJjno5jnfKA1PK626lkn6J8D3lGmhoEtrY/PE0AcQ1UP0Lah9LoiuCQvJMfSUG3qEQ9uvY0c8HcC8FCI5aB+vdCdK9QznlzrhOCXbMI1ObxKPv3s4uzo/N/acu6TKr23kZVZF5D8sedFn7BN+wCbzo5H8Jxz4eSLxAxhoQyeeJuBNuZD1Xri6GdjMYEyIVn7luds4ec4ou1OaGmqZKI5oKcI3JFhUxx1PYx3jBx32CfKJ4tkl0y3ymc1bkWTL/ZwLtEJt5JTb8lkiKLyzJf9wlqWvqHHk18W425kFzQn3rzNy8uKERRCNpbFr/BwSD1GQ1wLQoz+3UiuX9+/fNbf2D46O/nnVnoXyi+dINe9CMQvrpk7WeZDMIIBqdO1gVYxpMR+74693BbN4X2CBpaWkbGZsG4X4bN6HcVVpEqH7QfdyQ4Rh7zT3vwu2YezrelEN2WHVPzJEEJ/UEV41INw2eh0EKEV8fezTTVTvN5RgOa2QS2ty89nzkQP+r0pJHjISywLhC69A4Z36iY0KiW06KATH0lCPvOJ5yCs+4KME5P8REd7HnlxZ49fnYbEFRN2FwMnlgcKz0QVdH31BB3ZPelx9s3jPYHd0g4D0OMUhjH4gkHgkjXqK5n/PzdGJb3SZG3IvgU8rCSxtbO4efnbF0/jfdi6r4ICNRfO/Y6/rRfuMykXW5xChc4MSOcw+JZz8q4HcUNr7o1iXy9uGZWsHc9pGhvpev3qy6CaB9cDi4pAqmnpHXgxMTRV3dL+V89g3lW6J8ovktjyAcNcKq3qbBpGXof8wIo6jN/WpIJNLGM7cNJCXed8us4sNRMbugRZjhTE82oUQTcHFZF104J33I2lyMushDneKrhvHTw7DMkgVHkzx1pB4BwpSCvNb5z91IBi0piEco8SV9w2Pv5hbSOpul3XWRFZXm4VHnKKyzHOq5xMA797FJfZkQztwVRFqEksjpft1jQeL0Sk5cRmpR3dz8wvOR8cWlpZKhVn5nrns9SzeVtFuM3xdKPUP1ukK2u0x29OdkEjIyXONTw2ur6fXRlumM/WYu/6yip+ZMOIJjng8X3CmONS4TYqrElgkcI0qEdXRsRk9T29OXhsGxOnReYE5xgrRGFFHW0z0k2/J38wtpzY+yWh+jPeMpBconmuWVIXEJBAKRSJR3SFzd29j9N2gwad/yP3Ybo5Bt/S1A62/jmcEv03OjsgvPC0tT0/NP379fqh7s94xPv84XnqBSdPzIOji8pn3gIWfSMWbQJXHgHSk9ra4ypDI8okPSO/XBy3NLHx6bXHq/9GJmqLKjx4Qdb8KWeguzL/tGXiRxrkSST4QGHMAQVNyIB+1oKuHYvTEYrZjAoNrsG4ywywQSIdknry0trTyOGs3IfyhKL2sNTaksetjZOPZU0FVAa0s+x6MdwuOPUel6QUGqAYEqNFpQVLENP/UWMxaflkN9EGUoJel6Ug7do/0f1aP/YWSp5hV4ITjMuTieWCe9l883C5G4CJIrmnrcYrNvMGMJaQVPx0a9sYmWDqKc/JZ1fyGU7YtSiobFYi2vnAxec11pfUA0ejf91K5SYdK54a9/c4v7DB4aGhIKhb+9HLDGk7FRixSRfgjliAf9OI6i6YPT8MPqhGFOJ3keZ/idomJOiNzPpTv7NvMKXj6M7M0L7czCVUk808WuqZIjmCAVZ7qqI2WvNXU33X8fA3fYx3efGWmvFXm3NeV7JvHf2YQf/CnnBPxbLKoRyRkT78zKSEy6H5Ra61H9hJ5SXAGiyapo73v2KlCQZo2PPOnFOupIPeXG5dfX3IiTXOFGYyTZBvTIK8HRpiHSe+HR5vyos15hZzyEV1jc7y5d+zctA2PvKFtCAj05D1+Q7RKXJMyqrHrSZxOZdpUffTtD5FMnvYER3HYMD4ldr1sMlO0MIppHjx4FBATweLy3b9+ueewGARLrVvj0o7KyMigE/vUbWV1FRQUOh4uOjkbeQtMH3mIwmDdv3kAzIjQ0FDnN8iuiSUtLo1AosMXyPut07Jqf+kUqTLpX/U9c32LRiMXigQHF9KU0NDRuHxh9OoKs48fUoxN1eJ7aQg+dGPcjQk8Nd/whD3/dSNfjqS5mD8i2eQLndMm5FH8tX5KGI/WoG1Pdl6ziSNrtRPqOQfg+GK/q569uj1e7TT5gTlKzDVTzpP4QQN+FY6j50Q9b0S64+JpRvciSdEJYpg+fwZOSOjupj3paqxt6fahpJ+8EXbFmG/qLznsIbwaK/aLyjAUJGjjuQfcgfRLPPj3terBYy4l92CH4AkHkKc6ZmHlX0FJxwtxv16EzbhSpILGyrK5rbGK6H9px8wup9W20olL76nCbWo6VJNiBklT04Ne7m0bZniCikUgkubm5yFisUP/BO8HBwXQ6HdLh/w//eUhERFNcXAw6KCwshHkILMAISUlJ0I7h8/nw9x8eHoZlER/Nz8/LzqXIuiiHMpdX7h1B3sJ/H1bB5XL7+vq8vb0TEhKQ8XbXEw04CV4HBwfLy8s/HT9hHWBlx6/4aRhQYNK7hDt5dYuHW8FisYoqisspdLATX3flGoeFnhMRT/Lxxzg4TYaPujf+kA1d14l5mILXCvG/m82+EMS/RovUo5I03YnqNrQLPuEnvNkHrCkqHiQ1EXGviHCETr2M598ICNO0ox60Imu5UE+4c1QxjAOODA0juvZlirGrsLi+kxFZaI0VmLACQ6pIEzOPHzT3uVJSrlqHXncWFD7o8OflnHcSunMyzlIiVX3YB+wY5piomMxq39jcQ7ZBB+8x9T1DCbGFbydn7lJiLtCpd1MCjSxNCkqrpt/NCbNreRlV7X0fT8fkDZZH9cbeHyodGfuaMZgW0DFwtweIaObm5vLy8pycnJ48eQKxApii6K+AUx4/fowkIqIBHXh6epaUlCBjS4JiQBYQm0BQAw5is9nI0E7riIZMJiNv29vbaTQahCYgmpGRESjEzc1teX3RwDrg1dnZWSqVpqenb/yrgmhOXMJoniHDdOwC9tTlLRbNV9xB8yXi42vcXGLdcXGu0phbITyrmLA7McF6LjRd8yADR8EJe566PfOgA1PTmXXKK/S4C/cuQ3yOEGwcIoyoKQ2tzzTlC2+Hhp/P5VwppTk+COmbHGzrGTTA8I55sS55Cn9xEui6crSdg0/eY5tahzv4S80ZorN2Qec8eafYNKN4QUz5Azoj24OWauAXdiNAZOMtsXGXOAQmXfcQGQVIzviHX/QIdycmc9MqTFkJh+3YqhbMQ05sQlTB456Xp225p0N8bTLpJUP3ORxOhChKmFUDomnuGUS+GjQMx+fHFt9/zRnfzNLWsKSq7oHf3bXkbQgimo6Ojt7eXoFAUF1dLXMKqAR5XS0akEJzczPoAPl0eUU0mZmZEBCBXyAb4oHllV5WZI8KICPGAaAheOvl5bW80vkvOAjiIFikpqYGQiHYDKTn3PVEA9WxtbU1JCQEVgBbvPGv+kE0530PnyTBdPyc3y8XtnJIXPhNZfcT/nZmZ+d7uofHJieT+spco6UhieX1HQOxeXVmuFi1W7SDhrT9VpQDFnT1u7QjdxhHjakGDsxbwUzzslC3ghh+S0pUT0bRi7q43gr32hhyQ0ZubUdKaXNo7H2SMN+KFG/kJ7nmLdJ14J504NH4+Tfdhbo2eC0zvKYx9bhryC9UwWkX/h2873mm2wkW9rhvkI13dGBguom7+IKt4LpbxFUfkSFecjdQesE/0iAg8qBdkIoj6zCOR0sti85/eMaBf8aXzqlOGpn9cEt+VVWVg7NLx9MXv71jcIhlwDLCxMr79b9yIx/KNwARDQQjENEg4oDg4u0KkIi8Tk1NyRIhNqmoqIC3yKeQHyQCf3kw1OzsLEhn/SvOICMIkZCLRVAIMoQu8qwPEi4h0dB6ounu7g4LC5uYmBgaGurvl+NZNRDNqXO+WscDYdI/43faYCtFEx4evvpBLQUyOT37bOhD6/LF6Dg9pviAOXW/KVXbgabrTdb1pqpZkvbeJRy4Qda8Sz1jQ9eyJquZU0/bBAXej2Y8jsY0COn1Sez0ck5qpTi11pIk1bfn6VgFGxLEJ215uuYhd7zE1v7ik5Z+R038j96j/uLE13Fg73OkneU5Xo61OR/ufCyKhU3OqXrwxNiDdfIu5YRFiA8v0yUo1YIoNaVLT/uEnXYN1fLkXKJEPXg8kFDcZM1IdGKnwTbLth9+FjiOgYh/+0/R1T9SXtf16VNgKN8eBV51AsXI9TT1Osg9JO5G+CCa0z7aR4kwnTiFOXPWSyHFfh0KbDd9FohpzHmiX3i0Pb6En52Ie1zwhyPctWKddgf5/uSD328fcPAiQeO0/8ELuB9cyaqGlFMk/+tx+LN8onlEhCCz0publVbaEppTo+/EPeYWYsyJOm3H17hBP2/Etg8IO+tO0bMlaFpQ91vR9ljSfnSm7CcFnI5wPsXzMBD422U43eaQj5oRjpoQr3vw6DEl+Q8eZ1e1R+c+DJVWGLtFGVjxPWnpBF4uL/5+5v22yZmPlqlv7a9p7J2fX4RwBtrYCoz4ULYcRDTQGoJGjVAoHB4eVmDh0KSCCAXaOsjZnIKCgtlPBiz7LJslml9OeetoEWA6qe975rSnQor9CiCQk+sOmg0y9W6upLWLVBJvGEXTImIPsz32cT1/4mB3+eL33SUdtMWfiLE5GOS53werZhegbhyg/ou/qhH+ew/KEZz3mQiHk3TcWW/uKQ8eLizHh51pho9LKm1yiUk7FybwyE0xo4s1zWlHrVnXvcKh2aXqQlFxoe2xp+2xoO6yoe7C0o86czTuMVykN72Srl8lOx8yIR+6Q7Gjxwan3Wdm3feNyQvPeRAaX2GFib3jGhUcVWrnnyBIrCx9+PG64fCriTBpBUyPuj6encnKyiIQCGsGWkZRUhDRpKenQ8sFmkgQtC4uLmZkZEDrBBpH0CyCGcgDLSPI09XVJRKJEhISYBGpVCoQCCBPe3t7SEhIY2MjNGUgM9gEKRmWhUXgPwVRMDSpkBRQz0a2arNEc1rf6+ihAJhO6XmfPemhkGK/gqamJvgXKbzY2LrK29xwbX/KIazfAW9/FY+An8IwP4b7/cTxU7lDUjUNPMZwuRxtfhzvdsgBe9DBX+U29aAZXdWI8ovE/lyS9ZUMSx0/fxUz6gFj6rF77GP2nBNYzpkA/k1suFtY6Cm+rw4fo0Pn3A2K1w5gq5Bpez1o2r7c/Q7MfTb0I67sW9ioozZsc4aFt/jaDYqPngvnnI8wKL7smn+UPlZwmBZinpSQcb9VEHtflFhVXPWktvnpw7b+6Xcfuz2eeTcXk/ZAlFgNjZ3bbpHu1A9dmkHr2sXFZc2jJCjKyGrRwAwoo76+3sPDIy8vj8lkUigU5IhCo9HGx8cjIiISExOpVCpoBbLFxMRAEASLVFVVQeTi6ekJTSdbW1vkPAvYCmloQ5MKEQ0ABW5kqzZNNHoeumo4mE7peJ3Vd1dIsV9BUFDQ5OTXXKz9lFfjU9AwaXjybOjdqFee6AyLdcCLqE72OeCDU/XD/UzH/iT0203H7LMlqtoRtAUuF0RW50LsNezxmiaMQ4b0g1fIatcDtYhe1zPuGeXdux5vpWJF3H+LqmpI3WNG3mdJUrEKPHgZr3/Z8yTG5WiUu2FUjBs/VTWA+YM3eY8n+WqY2CYyRR0TcoEuOu8s0DBl7L9L03Km3wnxTX2Y+ahvKLW8xYGTehIvPEEVGMbHMBJK4wsavvR4NKSL0muOmgVr3WLqGgXVt324yWhhYQGamZ+9uQtFifg0ounp6YHABLQC/wUymYzcqoKYArTS0dGBjN0Gsf/o6Cikg1Yg3mEwGAEBAa9evYIYB7liAM2lhoaG5VWigToDVtrIVn2NaHJzc7Ozs5G+XWD7wJSFhYWrM4Bozui466n4wfTLEY9zeq4b+4kUz5rBVb6a9t6XvqFZTkGp/LTKgTcjwrY0q9iIM9QQrWCstsD3CJmojsMfNMMf9gi4FSK0DIyxxostGKKzrqEnPQRnfcJPO/AOGhHVrhE1rpGu4AjWSc53cky0sF6qt0j7jCmqloGHPDGHsd5qlwIOGfjqmXkfsiIcu0E/78TZi6V9H0D6yS9Ql8M2jYs74x9+woF76Ab1oDHtsAXrMhVLyLJuHgmZmv9wXaCwvtMvOo+UUxxRWROa8qHbly+NRTXzbv6YLUfdlHHgBvWCjWD1GA9JSUksFmsRfaxJaZHdGczhcGTnaOBPGhoaCn9MaOyAIyCPbLRraDrBR2/evBGLxbGxsZCODEkAwQs0nSAzpCMlgykiIyNhhsfjBQcHQ7ML1LPBEd/kFg1E17W1td3d3bKHocGC0MZDqia4E1YMrZWzWq7H9vjCdFrT3eCoi1y/lKKAH1F2w+JvpODBY6qkyJKakHa/dWnp/eTC9JvZib6JEWnDg9DC8vjGqufTI90TL15PTRU+fNLY+fzd3EJT9wt8bKEJI94qJCW5vPmIA1nNlKh2k3rUIljdgnzAGr/PirjLjrzHinzAHq+F89KluO41Jv5sTthLxu73xWqcJqifIajak3c7UPc4kPd70g5QGeq+zKOGDJ0LlAOGNDW7oJN+bP8Mr5R26vT8f4rapmbmKpt7ez7pbFQGHKCueUVqWQU70pI//bSzs9PJyQkOZQr56VC+MZv6rJPs9pnPvl0HuUXT29vb3Nw8MDAALTokBbQXHx+P9CPR3t4OAVtycvI5TefjP3nBdEbd1UDbaaPfQ6FA81JRP/qbiZnS+q7u579yQ1pV61MIeWCaWjkh8uLVeFhubUX70+GxCQ9WqoYR7YAJ9cBd2l5j6l4j8k+2pO/cST+4BR7y9/4l1E7T2k/1CnmfSaCKH+4gFqNmhD94nqh2mwSZVW5RVI0o2nTSETzlhiXP1D7Cgp6g5x2q48U/Qwt3TMioG5D73Aq4pvvZF6/6T09PY7HYiooKeYtF2XKU8qHKT4EWU1RUFJgF2nsQ2oyMjJSWlsbFxa0exgQitHPqTvrfecB09oDz+cOOm7LtvwYej1/93b4Bz0beCDOqU8paIOqRJcJf+uHIgKMwVc2Ots+CoupO+smO9Bc38vfOpO9ciX/xDPwBi//Oh/CTGUn1KnmvIXm3X4CaO+7AFeLueyAjys9m1H0mZA1L8g0WwbeUymssePVmOr6oUZBdw0gtt4lJIxWU94292YyvA0G1QCD47Xf0oXxLoMlzf1uyuiPdDZ2jgVbS6mVAMWua9B9Eo+ag/2+uMJ1VcTyvYa+oH1EuFHWC5quZm1+obe/LedRqkSg6waOrhWJ/Yvj/bE/eZUPeZUn5ESRiGrjrHuHnO/ifzcj7DCl7TCg/ulH+I5B6DMtTtaH9ZEfd5UDVDgw5QmBcZvNFbZF3U8NN2RIrYkJwdGly/odu7mYXFqb/Onjj8PDbN2/kGFB0I7S1tbm6uiJPvaGgKAqFXXU6p2qn/69OMJ3dY3f+oK1CipWLiYkJNpv97de7mpr2PmhGWSRyTkb5qQm990l8f6D777In7TYn7zGj7rlL3W1C2WMMUQxpnxFFxYi615T6I4a6n8S45B2u7kT92Ya015R43ib4fBj/ZkxkfGnDTU7sSa9QYz9JACcnIbehf3hMFjoNDLwSRZRHie6Pj08r9luMj4/7+flB6KvYYlF+zyhONHut9f/FDqazu6zP77dSSLFykZGRsfG+OxVOXcdAaWPXo6cvCal5Z5IIR6K8dot9dosxe8Iw++jYfUR/dU+Siin5g2ssKAeukQ5eIu0xoarY0TSCyCcj6CcJXHV71kFTktZF4nF9os5NqrYx47x3+OUQ8ZmAMIwku6j6sTM7zTcsp7Tp4+NFT5+OgGhEkeVjYwoOahA4HI5EItmMklF+hyhONLst9f9sDdPZHyzPq1gopFi5CAwM3KprtKNvJpFTwg1PnnHaS69k8w4IcT9zcfvC/DUjCNpignY8TpNC1AggHsHRtagUXUfqATPSblfKATxDTUDQkPgeweCPuBM0bJin7UIuGAYfNWZpGjH1HXhn/MOuMcUBcfni7AfW9EQzsjS/7m8dxzx79npk5O3mfa+qqiofH5/PjimMgiIXihPNj2b6/3gPprP/YXZ+j5lCipWLzX7EaR3m5hdiC+rDM2sGR9/mPW+jtuYaZkWeZQi1fNj7fejqbKJuFFkjjATTUTHRKDHEIkqw1430vR9pbwDthDBYl+tzReh4ke1mLuAaUWLtGYku9JTbOImeRchNT5E5SQoKSy5tFmXWJpY0feN+fF+9euXo6NjR0fEtV4qy81CcaL4zOf4PH6Yz/8/EYJepQordOC9fvpTdIv0tmZh+V7By9/DyyjhqSOLC0uLMwnxSTestUsx+R9Zhd46+b+iRgGANLkWTQ7nBETrHJvxMIf+AIWsRgi3cIszted7peP9cEje38E5g7B1iLCuuNCK9+qprxDn7UEZssSCjemBoQ90sbgZLS0ssFis+Pn6rNgBlB6A40fy78fH/ZgjTmX81MvjBWCHFbhypVNrdvQV9o1S1PA1NrYTp7ScdJtR1DFAkRTeJ0WbMBLOghFuUGANiuJ43T9eRq20XcsiSpe0QfA0TZnCNYWTK5UYWjYy9nZ6ZZUpKXINS2fFlxIh8trQsIq06vrSJl1GVWN787b/darKzsykUCvIIDAqKvChMNOd/MDz5x5swnfv32wZ/ua2QYjeOXIOrKJDnw2+4yRUglK6BtffCjY5PxeTVpZW1zC0s9A+PWQcnXcCJbhNjjjtxD5oz95vRDbzCLvlGnjBmGNxl0+JKmro/9jbU8/yVMK06pbRl+t3c+/fvixo6QTRFDXJ04bxJPHv2zMHBQa5xeFBQEBQjmtevX5///qZsOvEPVxVS7Mbx8dmyzkOh6cRPqxSkVy1+oZflvsHXRbVPbpNiLmAjvYXZ55wE+29TNc2Zp91D7wRIrKgJLsGpzqSk6KyH0vSHJZUfHpZd3R0vuGZsQsEXsL+ahYUFcDpEN1u9IShKhmJEs7V0dXXJBn/49jx6OhSaVpVR0QYzQ6/Xjuj4bnZemFLFiivR9wzVduNqWbPVrlA0r9O0jJmMuFJmXAkhssDBM87YIuyufWQAN0cYcx8W2ZIvsnESExNZLJZc3dej/M7ZCaJReK9i8gIBSF3HAMQ1wvTqd3P/SRMQ5sTnN7DiSk95C1VM6arXqPuvUFRuUY+78pt7B1NLWxiSElOHSFOrcBNnkSMjJb1YOQZy6+7udnJy2qQuU1F2HjtBNLKRH7aQtt6XIJqonAfzn3TUsLCw6BqSrmUZfOgOYz+I5joVpOMdlZNd/7jpyXNBcmWItDyvvF2QUROe/eDTk8rblqmpKTwej/TwiIKyPjtBNJvRd+dXMPJmcnWrp677eVpt+9CbD42pc25CfQeejnmQ3nXGNSuBYUDMRUxkdXsfOKjx8bPO/g9xwdz8wqeS2v4gg4ehz2GirI/Si6alpSUtLW2rt2It0Jji5FTBlNfw4UbeiKyaq76iX0zZOheoehdp190i7hGkudU75C641tZWZ2fniYm156dQUGQovWgYDIai+u5ULCUt3eKS+qfDH2+063nxyomYoHeJdvkOV5L9UJz9cG5e+eKXL/H27Vt3d/empqat3hCUbYrSi2Y7nKDZIBDmfKlP351BaGioSCTa6q1A2Y4ot2gWFxc32Cc7yrehqqrKw8MD6X0RBUWGcoumoqIC7cR/uzE2NmZjY9Pb27vVG4KyjVBu0RCJxG/cdyfKRlhaWmIymeh4mCgylFs0SnSC5ncIBJuBgYEbHEEVZWejxKKZnp4OCgra6q1AWY/BwUF7e/uNj9GBslNRYtHAAbOqqmqrtwLlV4CIhkAg5OTkbPWGoGwlSiyazMxM9Lk+ZSE5OZnFYq0eSwPld8WmiOb169dbPaTM54FIfjO+L8pG6O3tdXJyGhoa2vgiU1NTW11lPg/aGJSXTRHNkydP5KpP34Z3796hQ4hsLTMzM35+fhsfDxNqEdSlTd2kr+P+thwccjuDigblWyMWi/l8/kaew0RFs2NARYOyBTx69AiaUePj4+tnQ0WzY0BFg7I1TE5OOjg4NDY2rpMHFc2OARUNylbC5XLX6YYVFc2OARUNyhZTU1Pj4+Pz2ecwUdHsGFDRoGw9o6Ojbm5un46HiYpmx4CKBmVbsLS0xGAwkpOTVyeiotkxoKJB2UaUlpbicDjZc5ioaHYMqGhQthcvXrxwcnJCBjhGRbNjQEWDsu1YWFjw9/cvKChARbNjQEWDsk1JSUnp6elBRbMzQEWDsn1BI5odAyoalO0LKpodwxaLpqqqKjY2NjExcTM2Yw2oaJQOVDQ7hi0WjUQiWV55nHczNmMNqGiUDlQ0O4YtFg3888E1aESD8lk2LpqQkBAIjUtLSzd7kxBQ0cjL1p+jAcv09/dvxmasARWN0rFx0SAjZH6zcTJR0cgLKhqU7cvGRZOcnMxms79ZV62oaOTl24nm5cuXJSUlo6OjqxPfvHkjFArb2tpWJy4sLMCOfPr06VdvACz76YDzqGiUjo2LBunKd7O3Z/Xqvtm6dgbfQjQzMzOFhYWtra0w39jYWF9fDy1qBoNRV1f38OFDSOzo6CgoKJicnIR5SMnIyGhpaenq6oJEMJFcq4b8sBQsC1UhNzd3ta1Q0SgdWyia9KGew1VS747KL61Ogev6PbDpopmbm6uoqFjdQWxfXx8SsKzppLq6ujohISErKwuxDwLMr4l31gEsJlsWwiIIoFJTU8FxSAoqGqXjU9EsLS2VlZUVFxcjOxoOTnMrZK4ABxhZTuTwBnzdiAVmBdI/Uh3/FOxRNNrP7WsO7Howt7Qo+xQVjbxswTma2dlZCGdYLNbr16/XfPTp/gN3bHynQk4kbpKxuLgoWxwVjdKxRjRQGYqKikAryytD+iSuQCQSYbciI3z19vZCPDs2NgbHMDhoQebllf6JQTfgnQ2uFAmKC5vrzMuSDzF8/ki0+y/aqn/wtyI2lcnyoKKRl60/GbyaT/efXCHxZzOjolFeVosGjhlrTvDFx8fDPo2KilqzVExMDCy1OrqZmJjY+FCZycnJsoEJYcazsejvba//19NHHB78rQRUNPKCigZl+7L+OZrp6em4uLjc3Nw16b+xFkVGRq4enuHJ5Os/B3v8wc88+emjdVaBsj7bSzTZ2dmlpaWrdzPEsWtu54MjVX19fW1tLXLeZ2R25vXcu+WVg49EIkHOKCPAPJgF2vPIW1Q0SsfX3RmsWNEAhhWphyWM9VeBsj7bSzQQG0PzOCUlBUpATvtVV1cjbWbYtSUlJVVVVRDZQvrU1BQ0vCOKc/8ZZ/N/uZi4+9AeL4JDHORBThM2NTVBTlhQFm+jolE6vlo0a0yBXIVck+1LN93AgQ0qkuzt67mZv6Sw/0WI65n+2wVQVDTysr1EgwDVAsIQ2Wk/BFCMk5MTl8tdHbM4laZC4/l/mF3wbiiUJX48mVdYuLqVvoyKRgn5OtH09fWlpaVlZWUhNzdA5FtRUQFv4XV+fn5iYgKOUlBDIA8cllpbW6FizM7OIhewoNZlZGTI7oqATxlx4j/gLP8pmS4d/NuWoKKRl+0oms/S0tICoYqxsfHqxMCmsj8EWP/doT0hfWtvz/sUVDRKx1c/VAnhMLTBQRnILVrIJSd4hWDZysoK0kExyGHs5cuX0FYiEonwCpEychq4s7MTlhoYGICgGGJqQX8Ls7d+8f2SrHxUNPKiNKJZXGF1jANMzc99H0X6Po3D6m3g9zc/mRxbpwRUNErHb3x6G2JbkMXqlP7+fnCHo6Pj6kSwRnx8vIeHx5rF4cC2pr6tXuSrt+r3idKI5rNkPX/yv/F2/4vn/Y9hfn8uDP1zGM6oKXdo9jNDkS2jolFCFN5NxNu3b589ewZByupEaCg9fvw4Pz9/4+WgopEXJRZN99SbH7L4//Wk5t/bXv/vJgb/08fsHzxMQDcmzZ+vMaholI5v1h+NvOJARSMvSiya2OeP/5TK/IO/1d9pqSCK+XvHW/+UQN1X/vmxnFHRKB2oaHYMSiyarsk3fykO/1Nm8J/Sg/6UEQSi+adE6h/JDoZNa+/gQkBFo3R8M9FA3ZArPyoaeVFi0QCZQ70alXEfzs6sTH8Kw55M5D6bmfxsZlQ0SgfaleeOQblFA8wuLaYP9UQ+axc/e1TzZr1+j1DRKB2oaHYMSi+ajYOKRulARbNjQEWDsn1BRbNjQEWDsn1BRbNjQEWDsn1BRbNjQEWDsn1BRbNjQEWDsn1BRbNjQEWDsn1BRbNjQEWDsn1BRbNjQEWDsn1BRbNjQEWDsn1BRbNjQEWDsn1BRbNjQEWDsn1BRbNjQEWDsn1BRbNj2FzRIJ3OL68MYLq4uLgmG5L4WSWNjIzItca5ubmFhQXZW5iXDZYAG4B8hIpG6ZCJBvbg27dvl1e6Af607xgk8bN1Rt4DHqxodT/BsNLx8fGpqY+dw8pmUNHIyyaKZmZmxsPDIyEhoa6urr29Hfbf7OwsUkuQfYkkUiiU5ZXB3pAB4SAD7M7GxsaxsTEejwfzYKvldbsmGhwcdHNzc3V1hUWQFBcXl9DQUJFI9PDhQ4lEAp8uLS2holE6ZKLx8vJKSkoqLS3t6uqC4xMyQMryXysSksjn85dXhq9ERjKAPDBfW1sLeZCKhGRepyKBVpycnGBdsuFWYKURERFIv+XNzc2yQThQ0cjLJooG3GFnZ1dWVgZHCfi3Q2RhYWEBuxwZngkEhCSCaPr7+2EedjDkNDQ0TE5Ohkrz+PFjR0fHtra2kJAQqCJMJhMpPCcnJ3QFKAFJgdoAzmppacnMzERSGAwGFJidnY28DQgIAFuholE6ENHAEcjBwaGgoADkkp6eDhUDKhJUADh+hIWFCYVCJBHqDOgmOjra09MTDnK2trZxcXFQu168eAEVCaoH1AooikwmI4WDLJCKBFUFScnPz6+uru7r61s9nndKSgpUG6iBkBM5KC6jopGfzW06gWugfuDxeMQpbDYbEgkEArzCPpOJpqGhAWwCVoK3yKdQaWAeOUZB/QCVQE1CCgdzxa0gG7YdjNPR0QFKQkQDTgGzQMVisVjLK0PBI35BRaN0yCIa2HcVFRUQWSBOQSoJUp2gkshEA6+QCAKS5UHUgFSkyMjI3Nxc2RDJEGgjFQkWR1Ly8vIgAhoYGIBYWLYNcPwDPYFl4OhoYmKCjEqIikZeNlE00HKG3QP/8+DgYMQpyP5G9v1q0aSlpUElMDU1Rd4ur9QM2LsQ+zx69Agkcvv2bVnhEAOPryA7CwNNJxwO5+fnB00nqDSLi4twBIuJiYH1ZmRkQOWAzYAjEioapQMRDew4OA5BZEEkEhGnrNbHatFUVlbCK+x9WR7k1dvbG7QyOjp6+vRp2bk8iHqQioScRlxeaTpBTjAUNJ2g3kLKs2fPoPLIMsMBDGl/oaKRl82NaOCfLxv6en0gvkWa1p8CLSDZMedLQGt8ddsbgprh4eE1eVDRKB2yiAYUsMHTunDUWX1ZYDUQE8HxbP3FwSOrx1z+Eqho5EUJLm/39PQopBxUNEqHYi9vQ5zypYOZvKCikZfNFY1YLFZUmRDfJicng3SgoQ7tKUgJDw+Xq96golE6ZKJRYEWCmAXa7NC2gjYRiUSCWgGtpC8NffslUNHIy+aKBlrIZWVlsEcDAwNhj+bl5QkEgvb2dgaDAYmNjY3Q9oZoFnYzpJPJZIiQYa9DrYK2MWTmcDjwipQZFxcHUTHMlJSUQHsbZsrLy5uamja+VaholA6ZaKAiwU6HGgJqeP36dWlpKdSf2tpaqDZCoRA58c/lcpGztpANFoQWt0gkgiNTdXU1VLPExESkzMLCQsiPzEOG7u7ujo6O3NzPjwX2JVDRyMumiyY9PR0CkIKCAjiGUKlUJAMGg4FXHx8f0Iebm9vo6Cjoxs/PDyQCdQIOONPT06ampvCpp6cnsojsyqJMNFDgr567WQ0qGqVjtWhgv4MjQC4wg8fjkQxQZ0AuAQEBUGegOvX19UVHRzOZTKlUKlphfHzcyckJqWbIIsgFzeWVlhRUtuWVYBk5r7xxUNHIy7cQzYsXL6BygBeQC0Ow7xFrQFwzsALEOFBRoFpANohl4HgFhyMsFvvq1St4i5QJJkLu1IKZhIQEmIE6V1NTs/GtQkWjdKwRTd0KMIPD4eDgBPUBqUgQ10BUAlUF8oMyoPJAderv729ubobaAoc3SJdVpIyMDCgT3lpbW0NoMzU1BVFPamqqXBuGikZeNlc0cIQZGRmZnZ0Fv8AehXmoBM+fP4f05ZXWMkQ60AKC+aKiora2NsgGuxDiWGQRyAzNK6RMWDYpKQkKqVwBZng8HnLT8AZBRaN0yEQDFQbqw9sVxlaAugGtHqQiLS0tQf2BeGdxcRGqE+jj5cuX0GLKycmZnJyEqgIzDx8+RMqEFGheQQakIkGBsbGxsmcLNggqGnlRgqtOigIVjdKBPlS5Y9gs0UCI27PNgOgaFY1yAaIpKyvb6orzGVDRyMumiAZihxfbEnkjZJStBZrGW11lPs9GbupDWc2miAYFBQVlNahoUFBQNh1UNCgoKJvO/wdRHgjJaipp8QAAAABJRU5ErkJggg==\"}},{\"type\":\"text\",\"text\":\"Excerpt from wellawatte2023aperspectiveon pages 16-20: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\\n\\n---\\n\\nssion challenge and is\\n\\nimportant for chemical process design, drug design and crystallization.133\u2013136 In our previous\\n\\nworks,9,10 we implemented and trained an RNN model in Keras to predict solubilities (log\\n\\nmolarity) of small molecules.127 The AqSolDB curated database137 was used to train the\\n\\nRNN model.\\n\\n In this task, counterfactuals are based on equation 6. Figure 3 illustrates the generated\\n\\nlocal chemical space and the top four counterfactuals. Based on the counterfactuals, we ob-\\n\\nserve that the modifications to the ester group and other heteroatoms play an important role\\n\\nin solubility. These findings align with known experimental and basic chemical intuition.134\\n\\nFigure 4 shows a quantitative measurement of how substructures are contributing to the pre-\\n\\n\\n\\n 16Figure 2: Descriptor explanations along with natural language explanation obtained for BBB\\npermeability of Alprozolam molecule. The green and red bars show descriptors that influ-\\nence predictions positively and negatively, respectively. Dotted yellow lines show significance\\nthreshold (\u03B1 = 0.05) for the t-statistic. Molecular descriptors show molecule-level proper-\\nties that are important for the prediction. ECFP and MACCS descriptors indicate which\\nsubstructures influence model predictions. MACCS explanations lead to text explanations\\nas shown. Republished from Ref.10 with permission from authors. SMARTS annotations for\\nMACCS descriptors were created using SMARTSviewer (smartsview.zbh.uni-hamburg.de,\\nCopyright: ZBH, Center for Bioinformatics Hamburg) developed by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n \ 17diction. For example, we see that adding acidic and basic groups as well as hydrogen bond\\n\\nacceptors, increases solubility. Substructure importance from ECFP97 and MACCS138 de-\\n\\nscriptors indicate that adding heteroatoms increases solubility, while adding rings structures\\n\\nmakes the molecule less soluble. Although these are established hypotheses, it is interesting\\n\\nto see they can be derived purely from the data via DL and XAI.\\n\\n\\n\\n\\n\\nFigure 3: Generated chemical space for solubility prediction using the RNN model. The\\nchemical space is a 2D projection of the pairwise Tanimoto similarities of the local coun-\\nterfactuals. Each data point is colored by solubility. Top 4 counterfactuals are shown here.\\nRepublished from Ref.9 with permission from the Royal Society of Chemistry.\\n\\n\\n\\nGeneralizing XAI \u2013 interpreting scent-structure relationships\\n\\n\\nIn this example, we show how non-local structure-property relationships can be learned with\\n\\nXAI across multiple molecules. Molecular scent prediction is a multi-label classification task\\n\\nbecause a molecule can be described by more than one scent. For example, the molecule\\n\\njasmone can be described as having \u2018jasmine,\u2019 \u2018woody,\u2019 \u2018floral,\u2019 and \u2019herbal\u2019 scents.139 The\\n\\nscent-structure relationship is not very well understood,140 although some relationships are\\n\\nknown. \ For example, molecules with an ester functional group are often associated with\\n\\n\\n 18Figure 4: Descriptor explanations for solubility prediction model. The green and red bars\\nshow descriptors that influence predictions positively and negatively, respectively. Dotted\\nyellow lines show significance threshold (\u03B1 = 0.05) for the t-statistic. The MACCS and\\nECFP descriptors indicate which substructures influence model predictions. MACCS sub-\\nstructures may either be present in the molecule as is or may represent a modification. ECFP\\nfingerprints are substructures in the molecule that affect the prediction. MACCS descriptor\\nare used to obtain text explanations as shown. Republished from Ref.10 with permission from\\nauthors. SMARTS annotations for MACCS descriptors were created using SMARTSviewer\\n(smartsview.zbh.uni-hamburg.de, Copyright: ZBH, Center for Bioinformatics Hamburg) de-\\nveloped by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n 19the \u2018fruity\u2019 scent. There are some exceptions though, like tert-amyl acetate which has a\\n\\n\u2018camphoraceous\u2019 rather than \u2018fruity\u2019 scent.140,141\\n\\n In Seshadri et al. 31, we trained a GNN model to predict the scent of molecules and utilized\\n\\ncounterfactuals9 and descriptor explanations10 to quantify scent-structure relationships. The\\n\\nMMACE method was modified to account for the multi-label aspect of scent prediction. This\\n\\nmodification defines molecules that differed from the instance molecule by only the selected\\n\\nscent as counterfactuals. For instance, counterfactuals of the jasmone molecule would be false\\n\\nfor the \u2018jasmine\u2019 scent but would still be positive for \u2018woody,\u2019 \u2018floral\u2019 and \u2018herbal\u2019 scents.\\n\\n\\n\\n\\n\\nFigure 5: Counterfactual for the 2,4 decadienal molecule. \ The counterfactual indicates\\nstructural changes to ethyl benzoate that would result in the model predicting the molecule\\nto not contain the \u2018fruity\u2019 scent. The Tanimoto96 similarity between the counterfactual and\\n2,4 decadienal is also\\n\\n---\\n\\nQuestion: What is XAI?\"}]}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "65148" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41U328TMQx+319h5flWtWXdBm+jMGkPE0gDhKBTleZ8d4FcEuKk25j2v+PkOnqD IfFyP+z48+cvtu8PAISuxSsQqpNR9d4cvnn9Uvp3p5/c5ri7PO63J1/Or35+7D7PFssXN6LKEW7z DVV8jJoox3EYtbODWwWUETPq7ORktlhMTxeL4uhdjSaHtT4eHrnD+XR+dDib8XsX2DmtkPjEV/4F uC/PTNHWeMvmafVo6ZFItsi2x0NsDM5ki5BEmqK0UVR7p3I2oi2s71cWYCUo9b0Mdys2rcTns4sK XIC3t95IbeXGIJyFqButtDRwwcHG6BatwgoCNhgIooMeY+dqAmlriKg6q38kZA/rAr38jvyF4APW WmWBCFwDZxdQlCDQjBrYG0u6jJG40pC518XEGbrUS0sTZlCwShm3MeP0XK5KRoZRgh1yBVwPaIJE WGcUHMqCzt0AeVS5rhEApQ3FkFRMATOtxqRc6Zh5xYdUB5KAnEkbbXS8y4KRYlUncM6feCtzJ1RQ I6mgfSw2TmzlULzRrMjb5fn7Uuvl2XJ5BbrmeN3c/cGhKOgd6ai3aEomi63c/cmm4Q4c05vA0qUs ZyMZQWYJbjqdCQfMonDBrMSWxX28hl31yCfzGQ5xT+RybCxy7UhxF3C72zYL1HvOMmgNLkWfIhP4 0CExjvfBScXf0KHxrEVgzqwp6baLu8Ikt5KFGx07xsReKwbnZki63GEWhxlwYM/asKvhAdC2pclK VEPvBjS4lXxFa1JMNPfwbLqyD+OO5y5NJPPA2WTMyCGtdXG4kjxr1zvPw+/pMq7lIjb0R6hgHpq6 Nc838bDzJFF0XhTvAz+vyxSnJ4MpGKj3cR3ddyzpZqcn8wFQ7BfHyP3iaOeNzNHsHfPp9Lh6BnJd 8/hoQ6NVIFTWv97H7veGTLV2I8fBqPC/+TyHPRTPt/E/8HuHUuh5Ka73LfvcsYB5s/7r2G+hC2FB GLa8L9dRY8iXUWMjkxmWnqA7itiv+cbavGL0sPkav54vVNPMF7NmLg4eDn4BPi+s/AIGAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a38ecac048075-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:37 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "2015" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: - "250000" x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-input-images: - "249998" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29996947" x-ratelimit-reset-input-images: - 0s x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 6ms x-request-id: - req_9a671fd7afb34368a5d0e9a87e82852e status: code: 200 message: OK - request: body: '{"model": "deepseek/deepseek-r1", "messages": [{"role": "system", "content": "Answer in a direct and concise tone. Your audience is an expert, so be highly specific. If there are ambiguous terms or acronyms, first define them."}, {"role": "user", "content": "Answer the question below with the context.\n\nContext:\n\npqac-91399209: Explainable Artificial Intelligence (XAI) is a field focused on providing interpretations of deep learning (DL) model predictions, addressing the ''black-box'' nature of these models. XAI aims to enhance trust and usability by offering insights into why a model makes specific predictions. Key concepts in XAI include interpretability, justifications, and explainability. Interpretability refers to the degree of human understandability intrinsic to a model, while justifications are quantitative metrics that defend the trustworthiness of predictions. Explainability actively clarifies the internal decision-making process, providing context and causes for predictions. XAI is particularly relevant in chemistry for understanding structure-property relationships and ensuring models do not rely on spurious correlations.\nFrom Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\n\npqac-4b7d736b: XAI, or Explainable Artificial Intelligence, refers to methods and techniques that make the predictions of AI models interpretable and understandable to humans. In the context of molecular prediction models, XAI is used to explain how specific molecular substructures influence predictions, such as solubility or scent. For example, descriptor explanations like ECFP and MACCS identify substructures that positively or negatively affect predictions. Counterfactuals, which are modified versions of molecules, are also used to explore how structural changes impact model outputs. These approaches help derive insights that align with chemical intuition and experimental findings.\nFrom Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\n\npqac-147ae54f: Explainable Artificial Intelligence (XAI) is a framework aimed at making the decision-making processes of machine learning models, particularly deep learning (DL) models, interpretable and understandable. XAI involves a two-step process: first, developing an accurate but often uninterpretable DL model, and then adding explanations to its predictions. These explanations provide context and causes for predictions, ideally offering insights into the underlying mechanisms. XAI methods can be intrinsic (built into the model) or extrinsic (applied post-training). Evaluating XAI involves attributes like actionability, completeness, correctness, domain applicability, fidelity, robustness, and succinctness.\nFrom Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\n\npqac-194d9263: The excerpt discusses counterfactual explanations as a tool in Explainable Artificial Intelligence (XAI) for molecular prediction models. XAI aims to provide intuitive, actionable insights into model predictions, such as identifying which features can be altered to change outcomes. Counterfactual explanations involve generating examples with different predictions by optimizing feature changes, offering local, instance-level explanations. Methods like MMACE and CF-GNNExplainer are highlighted for generating counterfactuals, with MMACE being model-agnostic and applicable to both regression and classification tasks. XAI methods like these help uncover spurious relationships in training data and improve understanding of model behavior.\nFrom Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\n\npqac-b74e9efc: XAI, or Explainable Artificial Intelligence, refers to methods and techniques used to explain the predictions of black-box models, particularly in molecular property prediction. The excerpt discusses two XAI methods: molecular counterfactual explanations and descriptor explanations. Counterfactual explanations involve minimal changes to a molecule''s structure to alter its predicted properties, making them actionable and interpretable for domain experts. Descriptor explanations use surrogate models to provide natural language and chemical descriptor-based explanations, enhancing accessibility for chemists. XAI is valuable for understanding model predictions, improving trust, and uncovering structure-property relationships. The choice of XAI method depends on the audience and the purpose of the explanation.\nFrom Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. Journal of Chemical Theory and Computation, 19:2149-2160, Mar 2023. URL: https://doi.org/10.1021/acs.jctc.2c01235, doi:10.1021/acs.jctc.2c01235. This article has 70 citations and is from a domain leading peer-reviewed journal.\n\nValid Keys: pqac-91399209, pqac-4b7d736b, pqac-147ae54f, pqac-194d9263, pqac-b74e9efc\n\n---\n\nQuestion: What is XAI?\n\nWrite an answer based on the context. If the context provides insufficient information reply \"I cannot answer.\" For each part of your answer, indicate which sources most support it via citation keys at the end of sentences, like (pqac-0f650d59). Only cite from the context above and only use the citation keys from the context.\n\n## Valid citation examples, only use comma/space delimited parentheticals:\n- (pqac-d79ef6fa, pqac-0f650d59)\n- (pqac-d79ef6fa)\n## Invalid citation examples:\n- (pqac-d79ef6fa and pqac-0f650d59)\n- (pqac-d79ef6fa;pqac-0f650d59)\n- (pqac-d79ef6fa-pqac-0f650d59)\n- pqac-d79ef6fa and pqac-0f650d59\n- Example''s work (pqac-d79ef6fa)\n- (pages pqac-d79ef6fa)\n- Author et al. (2023)\n\nDo not concatenate citation keys, just use them as is. Write in the style of a scientific article, with concise sentences and coherent paragraphs. This answer will be used directly, so do not add any extraneous information.\n\nAnswer (about 200 words, but can be longer):"}], "temperature": 0.0, "n": 1, "stream": false, "usage": {"include": true}}' headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "7181" content-type: - application/json host: - openrouter.ai http-referer: - https://litellm.ai user-agent: - litellm/1.81.13 x-title: - liteLLM method: POST uri: https://openrouter.ai/api/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/+JSgAEuAAAAAP//4kIwAQAAAP//QmICAAAA//9CYgIAAAD//0JiAgAAAP//QmIC AAAA//9CYgIAAAD//0JiAgAAAP//QmICAAAA//9CYgIAAAD//0JiAgAAAP//QmICAAAA//9CYgIA AAD//0JiAgAAAP//QmICAAAA//9CYgIAAAD//0JiAgAAAP//QmICAAAA//9CYgIAAAD//0JiAgAA AP//QmICAAAA//9CYgIAAAD//0JiAgAAAP//QmICAAAA//9CYgIAAAD//0JiAgAAAP//QmICAAAA //9CYgIAAAD//0JiAgAAAP//QmICAAAA//9CYgIAAAD//0JiAgAAAP//QmICAAAA//9CYgIAAAD/ /0JiAgAAAP//QmICAAAA//9CYgIAAAD//0JiAgAAAP//QmICAAAA//9CYgIAAAD//0JiAgAAAP// QmICAAAA//9CYgIAAAD//0JiAgAAAP//QmICAAAA//9CYgIAAAD//0JiAgAAAP//QmICAAAA//9C YgIAAAD//0JiAgAAAP//QmICAAAA//9CYgIAAAD//0JiAgAAAP//QmICAAAA///tWO1uI7cVfRVi /qxtSIosf639z/VuWqe7RZJNkQJ1YFCcKw1jDjkhOZKVhYE+RJ8wT9JzyRlp5PUGfQD/sTVD8n6e ew6lz4Uui6tiSXZ8fHFxfHY2fXt2Md78sD75ld6+W19v/vrDj+u//FPRd8WoaLxb6ZI8DvwDn6LE u9qVZPCiJGoC0cM3/YexP8aym/9KKmJdVTJOlKsbQ1E7iyXlSUaC951jvKycVhSKq39/LoxbwuMc D7Y1ZlQstNWhusexAANXRYiugR0ro17R/VdWtS3psbiaIlIKQS6puPpceGfwv5Ah6BCljRyNs5Es R/r+sTFSWzk3JK591AuttDTiFuvGaFRKkTj41/XtoeB0vA4URE2xcmUQ0pYikqqs/q3F65KCXlrC Oydq+UAiViQaT6VWXIQg3ELInQu954I9pOqGP/7z34a3qdZIbzaCSywMSW+1XYqDdx8GG9mGh4uY 4ud4WlTAc5pleoVQqraWNkzEbRSyLD3qglg5tLtibqR6GM/d410hUNjWE8eItUCdDzHfiAwEdq4t Mqxi4NidOFpXmyMh886UcRChIcUJDvMesUVPsES2klaxpejbEHPAQc610XEjDprfpBpfHp9cXs6m lyORHk/nF+XFyfn8cCLEnb2zaAW8r5xZwZtChfRikwwioVQNi9KWCCLA9RhB8SIyUDlvpJcTG+Hj gjyvJjA85miUbHnbwvm9zsXKu3ZZ8VZFDQoQWlUJGcTRoAMpiyNx0IXiuVoKsSw9pbqmRuw1KJ04 TI6PqAdib0YqRrrwkkOQRv+ePrChQWSHL1ft+PRC0tnpAlW7tcjYUELT4GSfNQqRSlpiHNA44t4u TMtPKGRo5wGtUgyNIA5ospyMxEpLxrryuonOB2E0sP7+5tvvBar28frm5lNOiTD+boMuuZaLtEBC LWymRG1KhiFcY5JraQB0NIYjKAfx0qNkDuEGSDTIwMwwexwHDj2tiGPtAx2j3Q15IMqTyX4q3eRx LQkDGwHT1mvXcmx+u6krZY+4vpSXp+Xl7Pyke5xfnNIlLVSPx48dFyi0dk4JD7nx6OC81SbmWWFM JOAdcpHQ7N0u2TSGs25ciOPogQGA8nCUwpWYSFpJ0zJ3irkM+IveyYjj8zZSV/wF2seowaFUmA5E 2UbpatgUyY3an7UBTBIIkIbXYJ7ETkJVVIMx/SaNA9nQ+jxMu7kALJdWrHWs8u58MrY6QSyB4BGt 0DXwhCWwNvNIeBm0u9KCoT0twAymV4NM9DgLyr42nlloBFKMbwANcBgzXYXwwcMIV85dGzmjifgJ dcdEe7EG8SNeAIClI4WXyxkANoAPz53glVtCCFY3DfGIAJ9i4V2d+hhkTWI2nZ2I725+uhGNRIbM kz+DzuUavUHPGKyTBJBvNaZ9JG6FdagsZVM82L2XB9qEP+e+EeypCSuQZQlDLZMsIBFKfQMP/T8y tnCq7QC0ZS1uKCxkCh90NlcO05FUDGLKULzqBaQn3H0FYfk2VDN03n3o9WM/McB6pyaJD8fPBGsr MfvD2M3DgPC/zvFfYJvb8HdCyVA8bTvoIim/REp3dpzKNCRxcbDj76+y9gpF2iftLWfnMDENPWP3 wX7B14fsvueQNMv7bIlsOoLEgEm75EYwCz4bxMOO3HpS3iNZcTCk8XGGfS8rtA3pGe9tp5EjfJ85 KOkGGAL+JTqlTJsa2dNPpqwhAz3vBXciAaunlvH2wtDxU8crwJ1CwIzhcS9Oqe07bRgm1YuWokzz cuUyxv6M6J9rZkf0AMwnbbtJ3RtSQIC7u08EAZnwnSPRAOb8DU6FjeVLlP49TY+GZgE8SJTBERJd MkEtEGVqpLM0Akvlu0hdy3Eg3AAT5Svcu3PMa75D7S4gbkXeyCaD+2fnywwcGId/BhIogh4VwcZs OhVlm+6ClnhGJDgy31uZr/sOoF0T8ZGvZSgrcAUDqYww012rHqxbGyqXhJ5Ac22KFpBgDsKWukPw p79df//Nh9uP77mN9k0UzP7IAaFwDplaQCMN0kL9UAsDzdfeA7fpysyVBLFLJUvWFAQOoltXGvTA UhazRIo8joYX08Ah/jtbDLTiHmovtcnfL6BhtYy9nuy+KMRNw98Otocm3G9YSf9exeZVbF7F5lVs XsXmVWxeEpunX56efhkVYQOirPlHqSWPtk6/LEFD2v4nKPBF3cT76B7wNaq4Oj6fvuUfofrfx7YL 5+czKI/Dd6Xtq9nsYsp7A2xOJ9Pp7OLt9BwCFu7nG/dQXC0wtzTa97ATvs+FksB/uTUHWxKD5HYv nrL14Zm2QVdI1vdAOooIFNx/EcALe7oYdluPj2dnL2/d5R6G+8/Pzp5eKMwwtp269xmcnJ5/mdTT 0/8AEwJpyz8XAAA= headers: Access-Control-Allow-Origin: - "*" CF-RAY: - 9d0a38fafada74f9-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:27:38 GMT Permissions-Policy: - payment=(self "https://checkout.stripe.com" "https://connect-js.stripe.com" "https://js.stripe.com" "https://*.js.stripe.com" "https://hooks.stripe.com") Referrer-Policy: - no-referrer, strict-origin-when-cross-origin Server: - cloudflare Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_image_enrichment_invalid_image.yaml ================================================ interactions: - request: body: '{"messages":[{"role":"user","content":[{"type":"image_url","image_url":{"url":"data:image/png;base64,bm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRh"}},{"type":"text","text":"You are analyzing an image or table from a scientific document. Provide a detailed description that will be used to answer questions about its content. Focus on key elements, data, relationships, and scientific insights visible in the image. It''s especially important to document referential information such as figure/table numbers, labels, plot colors, or legends.\n\nText co-located with the media may be associated with other media or unrelated content, so do not just blindly quote referential information. The smaller the image, the more likely co-located text is unrelated. To restate, often the co-located text is several pages of content, so only use aspects relevant to accompanying image or table.\n\nHere''s a few failure mode with possible resolutions:\n- The media was a logo or icon, so the text is unrelated. In this case, briefly describe the media as a logo or icon, and do not mention other unrelated surrounding text.\n- The media was display type, so the text is probably unrelated. The display type can be spread over several lines. In this case, briefly describe the media as display type, and do not mention other unrelated surrounding text.\n- The media is a margin box or design element, so the text is unrelated. In this case, briefly describe the media as decorative, and do not mention other unrelated surrounding text.\n- The media came from a bad PDF read, so it''s garbled. In this case, describe the media as garbled, state why it''s considered garbled, and do not mention other unrelated surrounding text.\n- The media is a subfigure or a subtable. In this case, make sure to only detail the subfigure or subtable, not the entire figure or table. Do not mention other unrelated surrounding text.\n\nHere is the co-located text from a radius of 1 page:\n\nSome text\n\nDescribe the media, or if uncertain on a description please state why:"}]}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "2615" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.6.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.6.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.2 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: "{\n \"error\": {\n \"message\": \"You uploaded an unsupported image. Please make sure your image has of one the following formats: ['png', 'jpeg', 'gif', 'webp'].\",\n \"type\": \"invalid_request_error\",\n \"param\": null,\n \"code\": \"invalid_image_format\"\n }\n}" headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 996444815cbd9e4d-SJC Connection: - keep-alive Content-Length: - "258" Content-Type: - application/json Date: - Wed, 29 Oct 2025 17:07:09 GMT Server: - cloudflare Set-Cookie: - __cf_bm=UYI_bAoy_0CerstuLFO2cPN45_o0EA5jjaogCC2rHrU-1761757629-1.0.1.1-Ju5HhzTejQp16ebnFTZh7ztEemKsDH3g78ycvntL27gZxkIy9TnTovzz1bFtxP4ARBvlgJ7iLHMBVe2QcWsLsjmoRHD4dj.gdo90..kmCyA; path=/; expires=Wed, 29-Oct-25 17:37:09 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None - _cfuvid=O9noGEVke8BNctEtJOlezpI_e5BqfdaSQCA58rmOsZ8-1761757629793-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "50" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-envoy-upstream-service-time: - "79" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: - "250000" x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-input-images: - "249999" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998769" x-ratelimit-reset-input-images: - 0s x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 2ms x-request-id: - req_d730074c9c1b4dc1b6f71a4051597a21 status: code: 400 message: Bad Request - request: body: '{"messages":[{"role":"user","content":[{"type":"image_url","image_url":{"url":"data:image/png;base64,bm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRh"}},{"type":"text","text":"You are analyzing an image or table from a scientific document. Provide a detailed description that will be used to answer questions about its content. Focus on key elements, data, relationships, and scientific insights visible in the image. It''s especially important to document referential information such as figure/table numbers, labels, plot colors, or legends.\n\nText co-located with the media may be associated with other media or unrelated content, so do not just blindly quote referential information. The smaller the image, the more likely co-located text is unrelated. To restate, often the co-located text is several pages of content, so only use aspects relevant to accompanying image or table.\n\nHere''s a few failure mode with possible resolutions:\n- The media was a logo or icon, so the text is unrelated. In this case, briefly describe the media as a logo or icon, and do not mention other unrelated surrounding text.\n- The media was display type, so the text is probably unrelated. The display type can be spread over several lines. In this case, briefly describe the media as display type, and do not mention other unrelated surrounding text.\n- The media is a margin box or design element, so the text is unrelated. In this case, briefly describe the media as decorative, and do not mention other unrelated surrounding text.\n- The media came from a bad PDF read, so it''s garbled. In this case, describe the media as garbled, state why it''s considered garbled, and do not mention other unrelated surrounding text.\n- The media is a subfigure or a subtable. In this case, make sure to only detail the subfigure or subtable, not the entire figure or table. Do not mention other unrelated surrounding text.\n\nHere is the co-located text from a radius of 1 page:\n\nSome text\n\nDescribe the media, or if uncertain on a description please state why:"}]}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "2615" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.6.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.6.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.2 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: "{\n \"error\": {\n \"message\": \"You uploaded an unsupported image. Please make sure your image has of one the following formats: ['png', 'jpeg', 'gif', 'webp'].\",\n \"type\": \"invalid_request_error\",\n \"param\": null,\n \"code\": \"invalid_image_format\"\n }\n}" headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 996444a59f179e4d-SJC Connection: - keep-alive Content-Length: - "258" Content-Type: - application/json Date: - Wed, 29 Oct 2025 17:07:15 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "69" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-envoy-upstream-service-time: - "126" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: - "250000" x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-input-images: - "249999" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998769" x-ratelimit-reset-input-images: - 0s x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 2ms x-request-id: - req_efd923bd83ac489dbc4f5d5b72b6081c status: code: 400 message: Bad Request - request: body: '{"messages":[{"role":"user","content":[{"type":"image_url","image_url":{"url":"data:image/png;base64,bm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRh"}},{"type":"text","text":"You are analyzing an image or table from a scientific document. Provide a detailed description that will be used to answer questions about its content. Focus on key elements, data, relationships, and scientific insights visible in the image. It''s especially important to document referential information such as figure/table numbers, labels, plot colors, or legends.\n\nText co-located with the media may be associated with other media or unrelated content, so do not just blindly quote referential information. The smaller the image, the more likely co-located text is unrelated. To restate, often the co-located text is several pages of content, so only use aspects relevant to accompanying image or table.\n\nHere''s a few failure mode with possible resolutions:\n- The media was a logo or icon, so the text is unrelated. In this case, briefly describe the media as a logo or icon, and do not mention other unrelated surrounding text.\n- The media was display type, so the text is probably unrelated. The display type can be spread over several lines. In this case, briefly describe the media as display type, and do not mention other unrelated surrounding text.\n- The media is a margin box or design element, so the text is unrelated. In this case, briefly describe the media as decorative, and do not mention other unrelated surrounding text.\n- The media came from a bad PDF read, so it''s garbled. In this case, describe the media as garbled, state why it''s considered garbled, and do not mention other unrelated surrounding text.\n- The media is a subfigure or a subtable. In this case, make sure to only detail the subfigure or subtable, not the entire figure or table. Do not mention other unrelated surrounding text.\n\nHere is the co-located text from a radius of 1 page:\n\nSome text\n\nDescribe the media, or if uncertain on a description please state why:"}]}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "2615" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.6.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.6.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.2 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: "{\n \"error\": {\n \"message\": \"You uploaded an unsupported image. Please make sure your image has of one the following formats: ['png', 'jpeg', 'gif', 'webp'].\",\n \"type\": \"invalid_request_error\",\n \"param\": null,\n \"code\": \"invalid_image_format\"\n }\n}" headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 996444c679f39e4d-SJC Connection: - keep-alive Content-Length: - "258" Content-Type: - application/json Date: - Wed, 29 Oct 2025 17:07:20 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "70" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-envoy-upstream-service-time: - "113" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: - "250000" x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-input-images: - "249999" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998769" x-ratelimit-reset-input-images: - 0s x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 2ms x-request-id: - req_df1bab90385c43fba4722df5b4eb9572 status: code: 400 message: Bad Request - request: body: '{"messages":[{"role":"user","content":[{"type":"image_url","image_url":{"url":"data:image/png;base64,bm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRhbm90X2ltYWdlX2RhdGFub3RfaW1hZ2VfZGF0YW5vdF9pbWFnZV9kYXRh"}},{"type":"text","text":"You are analyzing an image or table from a scientific document. Provide a detailed description that will be used to answer questions about its content. Focus on key elements, data, relationships, and scientific insights visible in the image. It''s especially important to document referential information such as figure/table numbers, labels, plot colors, or legends.\n\nText co-located with the media may be associated with other media or unrelated content, so do not just blindly quote referential information. The smaller the image, the more likely co-located text is unrelated. To restate, often the co-located text is several pages of content, so only use aspects relevant to accompanying image or table.\n\nHere''s a few failure mode with possible resolutions:\n- The media was a logo or icon, so the text is unrelated. In this case, briefly describe the media as a logo or icon, and do not mention other unrelated surrounding text.\n- The media was display type, so the text is probably unrelated. The display type can be spread over several lines. In this case, briefly describe the media as display type, and do not mention other unrelated surrounding text.\n- The media is a margin box or design element, so the text is unrelated. In this case, briefly describe the media as decorative, and do not mention other unrelated surrounding text.\n- The media came from a bad PDF read, so it''s garbled. In this case, describe the media as garbled, state why it''s considered garbled, and do not mention other unrelated surrounding text.\n- The media is a subfigure or a subtable. In this case, make sure to only detail the subfigure or subtable, not the entire figure or table. Do not mention other unrelated surrounding text.\n\nHere is the co-located text from a radius of 1 page:\n\nSome text\n\nDescribe the media, or if uncertain on a description please state why:"}]}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "2615" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.6.1 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.6.1 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.2 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: "{\n \"error\": {\n \"message\": \"You uploaded an unsupported image. Please make sure your image has of one the following formats: ['png', 'jpeg', 'gif', 'webp'].\",\n \"type\": \"invalid_request_error\",\n \"param\": null,\n \"code\": \"invalid_image_format\"\n }\n}" headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 996444eb6ad39e4d-SJC Connection: - keep-alive Content-Length: - "258" Content-Type: - application/json Date: - Wed, 29 Oct 2025 17:07:26 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "19" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-envoy-upstream-service-time: - "40" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: - "250000" x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-input-images: - "249999" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998769" x-ratelimit-reset-input-images: - 0s x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 2ms x-request-id: - req_c39adb49a3aa419197361dddd452319d status: code: 400 message: Bad Request version: 1 ================================================ FILE: tests/cassettes/test_image_enrichment_normal_use.yaml ================================================ interactions: - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.1021/acs.jctc.2c01235?fields=authors,citationCount,citationStyles,externalIds,influentialCitationCount,isOpenAccess,journal,openAccessPdf,publicationDate,publicationTypes,title,url,venue,year response: body: string: '{"paperId": "1db1bde653658ec9b30858ae14650b8f9c9d438b", "externalIds": {"PubMedCentral": "10134429", "DOI": "10.1021/acs.jctc.2c01235", "CorpusId": 257786462, "PubMed": "36972469"}, "url": "https://www.semanticscholar.org/paper/1db1bde653658ec9b30858ae14650b8f9c9d438b", "title": "A Perspective on Explanations of Molecular Prediction Models", "venue": "Journal of Chemical Theory and Computation", "year": 2023, "citationCount": 49, "influentialCitationCount": 2, "isOpenAccess": true, "openAccessPdf": {"url": "https://doi.org/10.1021/acs.jctc.2c01235", "status": "HYBRID", "license": "CCBY"}, "publicationTypes": ["Review", "JournalArticle"], "publicationDate": "2023-03-27", "journal": {"name": "Journal of Chemical Theory and Computation", "pages": "2149 - 2160", "volume": "19"}, "citationStyles": {"bibtex": "@Article{Wellawatte2023APO,\n author = {G. Wellawatte and Heta A. Gandhi and Aditi Seshadri and A. White},\n booktitle = {Journal of Chemical Theory and Computation},\n journal = {Journal of Chemical Theory and Computation},\n pages = {2149 - 2160},\n title = {A Perspective on Explanations of Molecular Prediction Models},\n volume = {19},\n year = {2023}\n}\n"}, "authors": [{"authorId": "1805407482", "name": "G. Wellawatte"}, {"authorId": "95666896", "name": "Heta A. Gandhi"}, {"authorId": "1481244794", "name": "Aditi Seshadri"}, {"authorId": "2257535", "name": "A. White"}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1398" Content-Type: - application/json Date: - Mon, 20 Oct 2025 22:37:23 GMT Via: - 1.1 2cb541f687a080afb4184dfb4c43940a.cloudfront.net (CloudFront) X-Amz-Cf-Id: - CixQZW0_ZAhyYFF9yCDNseCEh391F0UHvBw7WWTv_Yabigj40HEF9w== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - SxHxkFXVPHcEjVw= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1398" x-amzn-Remapped-Date: - Mon, 20 Oct 2025 22:37:23 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 28ba07d9-6c4e-4753-9625-8b58166a1129 status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1021%2Facs.jctc.2c01235?mailto=example@papercrow.ai response: body: string: !!binary | H4sIAAAAAAAA/81ca3PbOLL9Kyx9mqkSabz4cj45tuM4r8nGnmSy49QURUESYorU8mHHk8p/v90A ZYmQ7Ri+u/fu7s6OrEcTaHSfPt1o4PuoabO2a0b7o+pyNB4tZdNkc+m3NysJ711X9fa7V7JuVFXC BzQgAdl8Mtr/PlLlVH6TU3w5zVrpr7K6Bbl//skIC8eUjBn58mVsPmvVEsXjJz4lPiPnlOxzsi+i f4JQ/BSGtVyN9mkckTSMmIgIDcejzQB4IEggRj/Go1rOZC3LXPp51ZUt/EYk49GqmxSqWcgavnuw lLXKs9I7XMglvCi8sypXsr3xfjk4PPsVnqiapsMBJfC6ULksG/jrz++onLq9c0Z8zMcsvmNC3Cfc Z/E5Ifv6f/aEojhN4pAR/A+MPq/KVpbtlmqvqhp+MpVFduOr0p9mN/BMMh79/uENfLpo21Wzf7F3 sZfXMmvVlcyr5bIqm6Cq5xd7/eCbi73JzcWeCMjF3ugHDHLWwerUek5Hv53iApKAcsLTiz2qh0Kj EJ5aZnoaR+pK4Wi8amZ01rT1DQ6qUn7WNLJu5dSf3MA3N2oej7LrrIbl/3MEiyYEDUfwXDXVz8R/ 3fNINV0bGw4MpNwj/8eXH+N7By+iBwYPCz72nqtKlnNVSjCFcj72jssrVVflEnSPH2fl1Duvs7JZ VXXrnd00rVw2LjMOqYjpT2esx/nvmDEJ482M34EdVCWY9WnZtKrtWolzP5GlrOHNt3JqbB5MHrzE YVYfeHjylvI4jaKfzcyMx2FmXzamP62WmSq1l/Wv/sRP66pplll96dfgO+C/rXaPWVY0EvymWcBC +SgCfiFrcMC2QJ8dvQr0qgfe+UJW9Y13WC1XXRvgBNYDmPorMIL7/FqMWfgFVL+lecLoxV6WN8HX vM0DlhPKONpuP9mvVVeD+n0Qo3IYBQ4efPMeLPwpctB0X9D9kN+BHKmIKOhdI8dK4+6IUZH6jEaI xg0MJMc3D1F5AIwa2vxbhMSFWKNkSFF6r7QD7z3gz0rmCCge+M7xt1WRldquGjSmt1Uh867Iau99 jfaEH8CbgFKN1iw8Qn3baAuee1UVnZ4ZTdESuhYWTNvPbx8OT48GSFbVuZoa/EJT8uEf5vM4Zn6U srj/NVgKmDEak/76aL+tOzkezWHAiJonEjzdex/At2fZUhVocJ9kUYAxty0uSSP/1aEO4P2ZqpsW xc5mqlCZMSwY2RpAJC4XIsMA/8be76XSMA2BAz74UOULWBtZj7dfvpPX3meImh74Oov1b2DM3hlE WXA949KP1AAsdujzRJDHaeClbDPvYKCAE4C1hRpOPptOlYELJw0gghxvA+i/Sxnr4R/gsLYHfyab RTat/8uH/8i1jCIR+zzVEe8Ra3lQTmt4+NHQnBfKtuT/Km18QTq4nGjKxSlGug3gVmUBT3sQD7ep nB7/pcRZw3sAvrlq6U8D1xZg8+RirwEOwoRPGIM1iLnwoxGu2K1YpsUyF7HrOABKWdbyKqA5BHUS D+VyLZe7yCUwlq85hBYB1GkoTWhpwlVaNl1mASM0JSwGqxuIDLXI8CkT1wEwnmC8t2YdaaHR44Uy GsPcKE9oRBmJ44TAQNPQmn6sxcZO04ffNJSAlcLaU8gvSJj4lthEi03cxYJpkV4sTMDnQ7GpFps6 WSr85oieHZKQhenRUBwlxvKJg1YjwdFk0EC/qStIrcD8r8JVtPSvrMHS3q+e5FhxorUAtpYwWwvU eBZ1cq0dwVwkPrMEG9eiTr5lBDMWrqEgpMnOiI2XUSc3o2DyXwNVzmZdo10toCwAamiJNt5GHdxN JGEIK5/VfyiAmJRAsi3C1JZrHI46eBylSYQ2zDkqGKwX0m/i31hyjcdRF5cDjV7sLWayCUQU0CAk f2FuYA/Y+BxNbsnhmrRD7L/KMDXxVAlhpqt1KjOr6qUOZkA5K/iwgUi1lZnd8ku2zS9Hz+Hty0nW KO8cg+eNzGrNrqkF/tS4qianmg/6PZ+O493x6QEA7S3nmgxD+PZo00JqUfbxCinzi0zVJQxz7B3k mmNnEwjHEFE3uWWGX77ZHnxCB4PvqiJbXqtSea+Go0+s0GWAgTkAw62HiQgWnqY+SdIktnGRGUxg T8AE8LBo7bo88a3wwPpo64IJEYFFytQymwdXPFE8YLGgWqy1Pr+V3gHkXjOVK206LRB/NceF2fcO vOOurlYyg++sVnWV5QuvrSDByeFLeu3M+nQ6JbjVOBsszK0IyCYhG9CVmvHW5AwuMQtVmEEVhqjS QWped3nb1ZgWjiA59TSf815WXSMDz3tedFKnpR4YvoejPfWeq6LQhEzNF23zzEMwf+ZtqOb19XVw jVIWWsi8ugL62bQr1JoP1lf41cyv9Y8v9gJrcAaXmBMNMJCHeW7ZIuQlAYkDYhMgZqCJuUATELSL vVWZNQh4JAoFtT2WGWBiLsC0bUGCKBawJCSWWANLLNldpOcKvHbs/RY8g3Vv2wpeHwbbqbE2na9g OWh65h1AsCWYGJBdrwBbKgEz0Aabrr6SNwHYpuedvjo8OPVp7GF1tVlUK0QPiVJVmU0KiSv/yx8H p7/igtP4mbdaeclFB6855fYqGhhjd1OOfFMGsKb2PiuyXFVj7wwm96bLFSQCAFzwx9uuVMD238LL g8VSTs1XXkoJwPYKXh3Jci4L/K73R6a8BahgUlWX+955hXWjxss8kDBTkBrMashAcJLapLdnmCmj ijuA9fT4+Phi7/DjC+3HdbmubQ3B1lR1ZO191LU+7RpUa4rHUWSUxeM4DIbxD83h9PDw4yewLwZk CX4E5iuYZRPcwCu/G17v1+rrbgE2chR4H0BRr7P8UqdQgfcOlSxBwZ/hxZlaVo3+1nGA85iATtqq VrpUB3gDKkR1HQ8MwqgLxku0gh7UzVk1a2EppHcOmZtO7z7C6t5aKNrsx6xQU/Pnp94IG++X08Oz 80/a6hjRuqRR3NtdTO7UJHw/JCwVqEkCmiTczoVMPOEO8eRuBtsk3IqB3EQU7hBRBsSKAczARHhM Lbl9/uZEMg0wyvkNWDYOGPMFGqWWZBMPuLA5B02ScJsVxGQ7+LyuFt77wPs0ZAQIg+vC4wM8hYt2 8aC1vO3R6k2PVtaQTZTgT2avEQFOLNKdxTMhgjuEiKHcBOXGkR1yuQkS3D1IZLByVzxSlEJmKkKL vHITJfjdGeMWIgzXle86DfLb6t15yNFKNAClImYJjbeX/J8Aq3NAix1GYq84vu2dnj64wj2jfidb HXA0AOhRtDJflFVRzRVQ71/6gf1qTdwEGO6U05pqgSbBzbLWVRIm7LqGwVjhQGGH7ktJGJA0FhZ2 C4M4wgFxLMvCLE5ExLJYYeBGuBBYsKOLPSDDMY0sMiMMyAi+G0TedBBRZT3HwKvD8Bsp8XUfA5xz JY8DmJ90N0hfToMxRPtvkw7F/x54H+Hv57gvppnA2PuUFcALFmPvJfzxAgbRNRjAxhhmF9fIehbI iPCrJwAXsm3Nx8fTBmJZV9fIW5umAh7eImE4LXP49JbFiDgKTUARcSwsKiP6SpdbqcvUeigNIafh Poni1P92V4pw4F1lwLB1aH3nr2TdgLLmwE+ajY/RNOTbXni2yFaFvPHeBDDjbb4vDCoKq64mDKgJ J96LM0jjxMfdH+JHYYpF/7+YbX0G18TduHYv/oRk1x4Z5zBPiLP47zDanvCbqrNAR9dwHhFmaAJh 5uDwrXd2evL66AiMcxuP8gEevS6r60JO59KbqiavrmRtcmQgJJm3VLtBSBjwFQ7luqFLxwgVwPxt CDLYJpywLQGxNBY85CkSSBoHVNCQJ9aChQbeQpcMXZdncB/ZR3DzU18Qi5uEBtxCurPSJNTp1i2F 4ANLfg/vTryTYTwhdyyteyVmOD4DkuFTORmsFA+ARFKLRoYGLkMXTrYd1kMM6zSmwl4lgzmhC+ZQ AoN5v7hpPsirtwBzyNybAGIGMFRi0YawL7W7JNkmaDAe8SQKOBMAllaICw3OhE44s6ngqyVGZMoi izuFBmNCp2L7QGwyISRhBhVty8KNpw/A5wcmyLaN9EPWLDt4JnDSAALQNuCGBgFCe/mMA4cODmyb WwTmth7yZi/DOG/kVF7bFDASRqIw3ilgRMZ5I5faGrgCJBZGlcGqKmUAYY5Q2yIi43cRs3GBc13h vCezOAOqkdXw368ZKv3/Ib+IjGNHDo49XMFQszVqV3Ui49jRE8gEOoYpkFLGduqYkfHo6MkJkaaX hNl7clG/f/Z0nyY58iorxEXGp6Of8gaLhJ5BFFjIv/03utqjiwjPgYp+wiLGqzUnxXc+SDUD/oef ZfgtSFSxyPEPhTzxE2atz7y3+WFRNTCmsfda19KKa1kUwETxV6pom3xxWemK0jGStAyLFt5B29Zq 0umwg6TtpM5WCzuXubeK9FOzfFRwA3Irp97Lqroce+8+A2M+Oxjr6sigGMJ4ips8QGZaVRS6CmIh a2TgK0ps90yZzn82UXsAiJ9xKB+Gbpn+JGiXZl5qa16rzbyau4J2ZFA0cqJBpuCxwuaa+rbiEdm0 NTZAqlFnyFcYE8MuIT7YxvncASK9/Hn+e9fSJ/8rRIoNSsc7FItDYH4AShe1uuyWWW1acP6vcTQ2 ASB22nIdph4sSUPhR39RC0pjA9HxkyE6BfZNeZRY4TA2EB0/Yc/163K+7LcfIH4TC0pjA9Hx0xoc lnKKpccgnUBWafPv2KB0/ORNV709Fgpm77rGfZ+DE/fqN6Cb/LbmCCmOBT2xgZ7YIXfiQDAothLr 3uIm4AFwZ5FaxczYoEbshBr3p+ubzgwDGQnZDUrHta4+HEHYWBctPut40tVXgLzSbGB8VOAxZatD 0UfVdFmh/kbsW6g5jMcvshtZezOZoVTtfpk3lXIFyKljyjOrGeptVba1xB5hRkgK4qsi8CDQ0rG3 8qhVw0gMeCRO26e9UhLGevsQ8P+WsyTGvxOn6pNOJ+Mw8VkqIj/0bdtIjGcnLlnV0JqxnSIixP/b EmxcO3Fy7Vv+zIA+Ryyk1LK4xPh14pRMDToeQhxuajd/JMapk6fWosEuKAARs/l+Ynw6cfBpW24I dF8wi4ImffPSk8shESTDJBY75mA8OnlqNoXrFmBpz8Lj1Hh0+sRSCEsSsF2bWaTG01IXT6MIa1RE CZpBojf+ortqhbpzXGH9cqk7nM3xALnZ990uGabJNg14UQMcLzCBfTFIYFPjv3ZPTGo8MHXaa0LV REmchJZ/pMbrUgevYxzBB4/h8D7s22XT0pOF1Kck6hsPCCWExqzVDaSt6a8HiMwLeNRwg3F12yU+ KK8OdHWelWpZtZV3Hphmnc1MjKentiEZR02dc6Rc4SmFkLSWPOOgqVPQRe+DDJH5jGJVKstDEUpL rnHQ1MFBGcWNFkjGyoCTSMSRRTzSvrPQwTeHIjnQO7u5cN1d+IQuor7ZB7ubGY/sLiKI8L1ouhvF X3RjWO5n3klWjXV6+IfCV4fw6nPWVKW6NCkmpImYMR6aHPKsK/Ft70jNNCluld4ZP8uz2awqkEp7 57U09f3+sIL0flu1aqn+1mbZ9148wLDXzBqSPjDfBm1en3/QKR8L7Cn2TY7EiXLvWA9Jp3ZnGum7 HMlTGTejuDkKMc/uwCN9myNxgAgrJGHoCAHkbcl9lyNxIt22NiZZKmJbct/nSJy8/rarFsyTntgi +xZH4uT4iNVlVl/szS+zLLW7BmAyvVC3LWKhK0l29ZekcZpw8Ns0IcPE+LwqqqVUVi3/sVkm4/X0 sds0l67bNHp7W6vgCTkB1eefkKVBlCC+jVXrTuh7WqHv0y42oe5ugEWMc9wAg39HdLBPclJnkyq/ zOz2S/FI9ZL/4C4Yve3XdssuAKd4yOKI8FjwIF9Q23LX7dpu/dom+cybyVdEhUj3PpOdDvMeytw6 tjFkf10C/RUhm9oSewhzatXeTVrCdCcNoOtObZdWbasGy3LQgc3X6bpV26lXWy8c2MEM1asPj+74 RA9jTq3aw/HiSQ6WJrbgHsqo0/kIWxGY0dmCe4Cg7gCBQM7SFGxiJ/b0zdDUrRt6eJSnaatvWEEn 3M6KaN8STR17omGqhzEEIBZF4sAWuT4gsbNfw+IBRX6pyfHrLTCChCP8ORghzD8EPtMq7/SJMEho iptGmaagWubVvNQHyuwB937MnP04VxxMl4ncltj7MdtphmMJG9RZ6aAm/l5OazmvmswkWBuIvqs6 /Mr8rcs4VvkUSF4DL/OFPa4eBJz6oodVBjzAEiY75yr6rmiq9+ktTny4qIpCtmOYlOe9lnXWbLd5 X+Ibgap0P3BoE9G+L5o6NUabtSk1sMTfbIm9/zNn/89LLIYQsqPV3vHv6VN+DKJEE+wutWNX36lL 72nVfcRRLhL5KRHUD23Jvdu7tK5uZZuMpJktsfd6l45VI1FJ3TMlLm2J6/NQTzgQZc6BQAYHaXkq 7Aoe7XtVKXeKs0hRvq4WK2ADPLbzmr6XlLo0k26MoFrVU20E4AK24N6zXLpJNwfO0v44DA2pv2Ne vW859ZP2RgB+AEtd2xJ73+J3nDe4vcfhUCJ261z2udq0ad5sb1cCULzvJthVcVFiN3zVAYKfdcsl Fmrwl4enRx4NRQqABJlz1iyxe2ALVWDweqOjzCcqKAt4oRbmCEnei7vY63/m/ZLluIUopzoVBo7u s+hXG4j6VlHq1iuqD6uWSup+bPDMxE5a+0ZR6tIpyjkWHdXXZYMtbHzn/BTtu0Sp2NnmG7RLsEF2 8KG6luZM9rD6txOMZT3rloH3osiuqtpWU99ISp06SW9JEJ7aA8giYRjuRJi+qZQK57PHaZyA7yYp S3kigBLZrivW5yNd0GDYu4JWhlvEqd01SftuSrO9+ugFxmr1bIWdV1icSfB+IJt39/2Y1Kkhk+Go J5NJEKUwBbu/nPaNmPSeTswHrHHZV6UaGpEopHYzIu27HKlLm+MmV8JWpslofa2KfSfKhgfdnv/v r0dB3mcO05jKNgioajVXW/aMt7EUWTnvjINILOkWqrzUh/TtW4lgmE2g8RovQIBpwFvTGV4Tc/81 KuuLYPrrVLLVquhryfrHo/tvSUKOW05BRVu/gQ8BV1cy14eQtJL/A4PcfoTz+Bq1VEVWq/bGBwjO L3WujxfCyFXV4K0KD15Nc9fFMcJn4TlJ9kOyT3YvjkmYANpJ+otjmryq4ZcU71tY3xjzfbSqFYYO fPkIdd2vqR/4hG6yZTvmqp6tN/RtWw9fjrN9GUQzuNhrDbb9lV3fB3d3bS6ceMQNP/CMrOhzpCvp K3OT070T+7J7BReowujkIcOpZdGv+/fRImtgZLIfnL5MaW1QIGs0vr1c6c5DUP+aXelq8xAYqslX mbf6OpLR6dnZOz0LiPt+GukEvn/NzB1OTVP2T4Sn9482w4Gwhx3y+PzbX6Pz9F+SgF5tXZUq3/0m bqN90cuuh6IX+XYpHl7nHz/+B7dE6KiDTgAA headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "5613" Content-Type: - application/json Date: - Mon, 20 Oct 2025 22:37:23 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1021%2Facs.jctc.2c01235/transform/application/x-bibtex response: body: string: " @article{Wellawatte_2023, title={A Perspective on Explanations of Molecular Prediction Models}, volume={19}, ISSN={1549-9626}, url={http://dx.doi.org/10.1021/acs.jctc.2c01235}, DOI={10.1021/acs.jctc.2c01235}, number={8}, journal={Journal of Chemical Theory and Computation}, publisher={American Chemical Society (ACS)}, author={Wellawatte, Geemi P. and Gandhi, Heta A. and Seshadri, Aditi and White, Andrew D.}, year={2023}, month=mar, pages={2149\u20132160} }\n" headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Date: - Mon, 20 Oct 2025 22:37:23 GMT Server: - Jetty(9.4.40.v20210413) Transfer-Encoding: - chunked permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_maybe_is_text.yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - en.wikipedia.org user-agent: - PaperQA testing (https://github.com/Future-House/paper-qa) method: GET uri: https://en.wikipedia.org/wiki/National_Flag_of_Canada_Day response: body: string: !!binary | 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 oVoBAA== headers: accept-ch: - "" accept-ranges: - bytes age: - "84318" cache-control: - private, s-maxage=0, max-age=0, must-revalidate, no-transform content-encoding: - gzip content-language: - en content-length: - "20011" content-type: - text/html; charset=UTF-8 date: - Tue, 04 Nov 2025 22:47:59 GMT last-modified: - Fri, 31 Oct 2025 17:34:42 GMT nel: - '{ "report_to": "wm_nel", "max_age": 604800, "failure_fraction": 0.05, "success_fraction": 0.0}' report-to: - '{ "group": "wm_nel", "max_age": 604800, "endpoints": [{ "url": "https://intake-logging.wikimedia.org/v1/events?stream=w3c.reportingapi.network_error&schema_uri=/w3c/reportingapi/network_error/1.0.0" }] }' server: - mw-web.codfw.main-5b44998949-4tb8q server-timing: - cache;desc="hit-front", host;desc="cp5022" set-cookie: - WMF-Last-Access=05-Nov-2025;Path=/;HttpOnly;secure;Expires=Sun, 07 Dec 2025 12:00:00 GMT - WMF-Last-Access-Global=05-Nov-2025;Path=/;Domain=.wikipedia.org;HttpOnly;secure;Expires=Sun, 07 Dec 2025 12:00:00 GMT - WMF-DP=0d2;Path=/;HttpOnly;secure;Expires=Thu, 06 Nov 2025 00:00:00 GMT - GeoIP=JP:45:Miyakonoj__:31.73:131.08:v4; Path=/; secure; Domain=.wikipedia.org - NetworkProbeLimit=0.001;Path=/;Secure;SameSite=None;Max-Age=3600 - WMF-Uniq=fVZ1POX8ArrLigKPEvX5ywKiAAAAAFvdc2pMWcd0p5m2jfsZAU4EhJkoi7_uqbHp;Domain=.wikipedia.org;Path=/;HttpOnly;secure;SameSite=None;Expires=Thu, 05 Nov 2026 00:00:00 GMT strict-transport-security: - max-age=106384710; includeSubDomains; preload vary: - Accept-Encoding,X-Subdomain,Cookie,Authorization,User-Agent x-analytics: - "" x-cache: - cp5022 miss, cp5022 hit/5 x-cache-status: - hit-front x-client-ip: - 219.103.19.137 x-content-type-options: - nosniff x-request-id: - 342b5708-2e32-4068-837f-26b418a97efe status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - ja.wikipedia.org user-agent: - PaperQA testing (https://github.com/Future-House/paper-qa) method: GET uri: https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC response: body: string: !!binary | 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 headers: accept-ch: - "" accept-ranges: - bytes age: - "596" cache-control: - private, s-maxage=0, max-age=0, must-revalidate, no-transform content-encoding: - gzip content-language: - ja content-length: - "205472" content-type: - text/html; charset=UTF-8 date: - Wed, 05 Nov 2025 22:03:22 GMT last-modified: - Tue, 04 Nov 2025 22:06:37 GMT nel: - '{ "report_to": "wm_nel", "max_age": 604800, "failure_fraction": 0.05, "success_fraction": 0.0}' report-to: - '{ "group": "wm_nel", "max_age": 604800, "endpoints": [{ "url": "https://intake-logging.wikimedia.org/v1/events?stream=w3c.reportingapi.network_error&schema_uri=/w3c/reportingapi/network_error/1.0.0" }] }' server: - ATS/9.2.11 server-timing: - cache;desc="hit-front", host;desc="cp5022" set-cookie: - WMF-Last-Access=05-Nov-2025;Path=/;HttpOnly;secure;Expires=Sun, 07 Dec 2025 12:00:00 GMT - WMF-Last-Access-Global=05-Nov-2025;Path=/;Domain=.wikipedia.org;HttpOnly;secure;Expires=Sun, 07 Dec 2025 12:00:00 GMT - WMF-DP=c81;Path=/;HttpOnly;secure;Expires=Thu, 06 Nov 2025 00:00:00 GMT - GeoIP=JP:45:Miyakonoj__:31.73:131.08:v4; Path=/; secure; Domain=.wikipedia.org - NetworkProbeLimit=0.001;Path=/;Secure;SameSite=None;Max-Age=3600 - WMF-Uniq=F8LSHs522UKMrt9-x9Q85wKiAAAAAFvdt21AfkF7iiJSAEFZLrfnwy6yXY7W41VX;Domain=.wikipedia.org;Path=/;HttpOnly;secure;SameSite=None;Expires=Thu, 05 Nov 2026 00:00:00 GMT strict-transport-security: - max-age=106384710; includeSubDomains; preload vary: - Accept-Encoding,X-Subdomain,Cookie,Authorization,User-Agent x-analytics: - "" x-cache: - cp5022 hit, cp5022 hit/1 x-cache-status: - hit-front x-client-ip: - 219.103.19.137 x-content-type-options: - nosniff x-request-id: - 148721fc-da2a-401b-a4a1-b438bb184dc5 status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_minimal_fields_filtering.yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=Augmenting+large+language+models+with+chemistry+tools&fields=externalIds%2Ctitle response: body: string: '{"data": [{"paperId": "354dcdebf3f8b5feeed5c62090e0bc1f0c28db06", "externalIds": {"DBLP": "journals/natmi/BranCSBWS24", "ArXiv": "2304.05376", "PubMedCentral": "11116106", "DOI": "10.1038/s42256-024-00832-8", "CorpusId": 258059792, "PubMed": "38799228"}, "title": "Augmenting large language models with chemistry tools", "matchScore": 171.99506}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "348" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:27 GMT Via: - 1.1 30dc54066252ce01682df0394718d89c.cloudfront.net (CloudFront) X-Amz-Cf-Id: - iiBpb8WvB7VONOqteVTRt-cKCtBUStkeqR2FH9aDv9zmFFiuQ0zpEA== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - PKejYHI7PHcEMhQ= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "348" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:27 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - aaa3521d-ecd2-4313-8156-a2fa005fad2f status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.48550%2FarXiv.2304.05376/transform/application/x-bibtex response: body: string: Resource not found. headers: Connection: - keep-alive Content-Type: - text/plain;charset=utf-8 Date: - Mon, 11 Aug 2025 23:07:27 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 404 message: Not Found - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example%40papercrow.ai&query.title=Augmenting+large+language+models+with+chemistry+tools&rows=1&select=DOI%2Ctitle response: body: string: '{"status":"ok","message-type":"work-list","message-version":"1.0.0","message":{"facets":{},"total-results":2509115,"items":[{"DOI":"10.1038\/s42256-024-00832-8","title":["Augmenting large language models with chemistry tools"]}],"items-per-page":1,"query":{"start-index":0,"search-terms":null}}}' headers: Connection: - keep-alive Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:28 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_nonduplicate_contexts.yaml ================================================ interactions: - request: body: '{"input":["I like turtles"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "102" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a33379aebffb8-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:23:41 GMT Server: - cloudflare Set-Cookie: - __cf_bm=Vg1qkAYL8TPguw.YGWziz26UtZidCWPe6tgFFblX7kw-1771550621.3763487-1.0.1.1-O22WWOypoLrFAowzlKM7ZaBwpNqqWst5uKxS3j4AK_hfkUYeSs4g7HUKjr79auRRDaD4yDp2dDKavL5yVED.hitFj154tsykW5R9TRDPeTYlJmG2dF0tazUuSWyIy2Gd; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:53:41 GMT Transfer-Encoding: - chunked Via: - envoy-router-5b7db9b97b-s2t4f X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "95" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_d993b66718dc46869aeda77d50909c05 status: code: 200 message: OK - request: body: '{"input":["What do you like?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "105" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a3339de69ffb8-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:23:41 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-78b689497d-765zm X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "71" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_3bb9d9e3395248069fca18585c5c81ee status: code: 200 message: OK - request: body: '{"messages":[{"role":"system","content":"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\n\n{\n \"summary\": \"...\",\n \"relevance_score\": 0-10\n}\n\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\n\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0."},{"role":"user","content":"Excerpt from stub1: Stub 1\n\n---\n\nI like turtles\n\n---\n\nQuestion: What do you like?"}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "802" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41STW+cMBC976+wfMmFjWCTLKLHVaqqh/ZQVVXUEiGvGcCNsZE95EOr/e8dwxLY tpFyMWLevOfneXNYMcZVyT8wLhuBsu30+naX3V19+3Sb7J+esh+VAdt82X39efcx3aHjUWDY/W+Q OLEupSUeoLJmhKUDgRBUkzRNbm7i7SYZgNaWoAOt7nB9bdebeHO9ThL6noiNVRI8dfyiX8YOwxks mhKeqRxHU6UF70UNVJuaqOisDhUuvFcehUEezaC0BsEMrg+5YSznvm9b4V5yKuX8ewMMniW4Dhlx ETy7+My0egCGvUMNPrpg5ENJgcrUTLDOQQUOjARWWTd1XeY8GuUdaHgUBBdeWgfhmiTOzXFpiiR6 L8JMTK/1AhDGWHJBMx3GcX9Cjq8D0LbunN37v6i8Ukb5pqAIPOVBj/VoOz6gRzrvh0H3Z7PjJNR2 WKB9gOG6ZLsd9fgc7YxenVLgSA71gpVNrDO9ogQUSvtFVFwK2UA5U+dcRV8quwBWi1f/6+Z/2uPL KaL3yM+AlNDR0haUKmV8/uK5zUHY/LfaXqc8GOYe3CPtc4EKXEiihEr0elxK7l88QltQXDXtnFPj ZlZdkWYbmYk4S1O+Oq7+ADLKb5SiAwAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a333b08ecf591-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:23:42 GMT Server: - cloudflare Set-Cookie: - __cf_bm=M45R5VrX.bsRLMqCMA_1UcIoDmxn2nrllM4oyPcpzcA-1771550621.9261246-1.0.1.1-ORpU35ac.wPnMe83toobZCpLC99hsCxpfbAM5yFvahV8eAJgNKIr6qReqaZ.TzcfMvxRLoUuzEzccnc4yvOtHmz0s3J.FGxK.W_eKFAbONxsYo5gGPPaoMyQ.X8GOIcg; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:53:42 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "527" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29999833" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 0s x-request-id: - req_13b2004700434cb9a881a4096c1e5422 status: code: 200 message: OK - request: body: '{"input":["What do you like?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "105" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a333f5f9effb8-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:23:42 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-5b7db9b97b-4zdn7 X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "117" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_10b00bfc4b2e457886699e71785e20ab status: code: 200 message: OK - request: body: '{"messages":[{"role":"system","content":"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\n\n{\n \"summary\": \"...\",\n \"relevance_score\": 0-10\n}\n\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\n\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0."},{"role":"user","content":"Excerpt from stub1: Stub 1\n\n---\n\nI like turtles\n\n---\n\nQuestion: What do you like?"}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "802" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41SwWrcMBC971cIXXLxBtvZrHFvKYUSaCGHlhTqYLTy2FYiS0Iah4Rl/71jezf2 tg3kIuN5856e5s1+xRhXFf/EuGwFys7p9ZfP+a/Nzbf7R2hubuX3Hd65q037M6vvvvp7Hg0Mu3sE iSfWpbTEA1TWTLD0IBAG1STLkuvreJumI9DZCvRAaxyuN3adxulmnST0PRJbqyQE6vhNv4ztx3Ow aCp4oXIcnSodhCAaoNqpiYre6qHCRQgqoDDIoxmU1iCY0fW+MIwVPPRdJ/xrQaWC/2iBwYsE75AR FyGwi1um1RMw7D1qCNEFIx9KClSmYYI5DzV4MBJYbf2p67Lg0STvQcOzILgM0noYrkniwhyWpkii D2KYiem1XgDCGEsuaKbjOB6OyOFtANo2zttd+IvKa2VUaEuKIFAe9NiA1vERPdD5MA66P5sdJ6HO YYn2Ccbrku120uNztDN6dUyBIznUC1Z+Yp3plRWgUDosouJSyBaqmTrnKvpK2QWwWrz6Xzf/055e ThF9RH4GpARHS1tSqpTx+YvnNg/D5r/X9jbl0TAP4J9pn0tU4IckKqhFr6el5OE1IHQlxdXQznk1 bWbtyixPZS7iPMv46rD6A2orna2iAwAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a33412e5bf591-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:23:43 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "675" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29999833" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 0s x-request-id: - req_71fceccb1783407182beca913eb4c0f7 status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_odd_client_requests.yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example%40papercrow.ai&query.title=Augmenting+large+language+models+with+chemistry+tools&rows=1&query.author=Andres+M.+Bran+Sam+Cox&select=DOI%2Cauthor%2Ctitle response: body: string: !!binary | H4sIAAAAAAAA/7WTwXKbMBCGX4XRGWEBNnG4JfYlh447zaEHO4cdWECTBVFJxPF4ePcuTNvQTg/J IRwYsbv69C+r/yqcBz84kQvzLELRonNQo/SXHjl2NvZZknZ+kXpB67TpOBtHKlJvGZFfRQUFeqZd x1B444GkRTfQFMri7W0otMeWP45XsT88TAwVxSrdnlZunSSbTKpkLZXaponcMhkG3xg7l9f6BadD 77qSkZyroNV04ciXKLi30HHI4Y8Bu2JSXmk7q4aq0qTBz4qPT2P4RnqEdonZmde/EVCWetoH9H/O 4dvuYc91jfe9y0+r08rYQpeRsfVppfjhRlQqVRrzaruJf/WDndcFeCzlXC7yCshh+EfWgXhhl8oe i0aTn2MfkPebtwNLZom7ByqBJ2b1J/SbyCxb38j0Ntu8s995oOdgHy01fm/4onzKOFK1zmS2ucne Ke8r/3vd9/jPQM5A9KGJPLEhtCeuO4q7oW6nc7s6ILA18rurB7ZQ0JoSyQVn7ZugaLBl69lL4I0h J2bG7B/Zo5X9bLk4FHy+vUzmYytbL3VX4qvI1SQNbNFIvjmT5bqBaBzHn2Aj1bnyAwAA headers: Connection: - keep-alive Content-Length: - "450" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:29 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=Augmenting+large+language+models+with+chemistry+tools&fields=authors%2CexternalIds%2Ctitle response: body: string: '{"data": [{"paperId": "354dcdebf3f8b5feeed5c62090e0bc1f0c28db06", "externalIds": {"DBLP": "journals/natmi/BranCSBWS24", "ArXiv": "2304.05376", "PubMedCentral": "11116106", "DOI": "10.1038/s42256-024-00832-8", "CorpusId": 258059792, "PubMed": "38799228"}, "title": "Augmenting large language models with chemistry tools", "authors": [{"authorId": "2216007369", "name": "Andr\u00e9s M Bran"}, {"authorId": "2161337138", "name": "Sam Cox"}, {"authorId": "1820929773", "name": "Oliver Schilter"}, {"authorId": "2251414370", "name": "Carlo Baldassari"}, {"authorId": "2150199535", "name": "Andrew D. White"}, {"authorId": "1379965853", "name": "P. Schwaller"}], "matchScore": 172.33388}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "684" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:29 GMT Via: - 1.1 b735cef950dccc7c59398fa8df6c4f7e.cloudfront.net (CloudFront) X-Amz-Cf-Id: - nkPDGPo8WQ95iIDStmiHGOE4BK1JJbyKF7Mu9lZUaX084aww0AKe-A== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - PKejwGOHvHcEVsA= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "684" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:29 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - c7fcb0c1-ceab-4351-9d6f-52228f14fb5a status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.48550%2FarXiv.2304.05376/transform/application/x-bibtex response: body: string: Resource not found. headers: Connection: - keep-alive Content-Type: - text/plain;charset=utf-8 Date: - Mon, 11 Aug 2025 23:07:29 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 404 message: Not Found - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=Augmenting+large+language+models+with+chemistry+tools&fields=externalIds%2Ctitle response: body: string: '{"data": [{"paperId": "354dcdebf3f8b5feeed5c62090e0bc1f0c28db06", "externalIds": {"DBLP": "journals/natmi/BranCSBWS24", "ArXiv": "2304.05376", "PubMedCentral": "11116106", "DOI": "10.1038/s42256-024-00832-8", "CorpusId": 258059792, "PubMed": "38799228"}, "title": "Augmenting large language models with chemistry tools", "matchScore": 172.33388}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "348" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:30 GMT Via: - 1.1 ad0f81beb11a40b80a59b548e3794d00.cloudfront.net (CloudFront) X-Amz-Cf-Id: - U6GVoAWByKASOEZeK9wZjOAgFgtMqO6MBFZXyUCOt2uJEKKjVjbLiA== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - PKej6ERjPHcEhsw= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "348" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:30 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 3a7f37da-71c0-4b1f-b680-a332a5845e59 status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example%40papercrow.ai&query.title=Augmenting+large+language+models+with+chemistry+tools&rows=1&select=DOI%2Ctitle response: body: string: '{"status":"ok","message-type":"work-list","message-version":"1.0.0","message":{"facets":{},"total-results":2509115,"items":[{"DOI":"10.1038\/s42256-024-00832-8","title":["Augmenting large language models with chemistry tools"]}],"items-per-page":1,"query":{"start-index":0,"search-terms":null}}}' headers: Connection: - keep-alive Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:31 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.48550%2FarXiv.2304.05376/transform/application/x-bibtex response: body: string: Resource not found. headers: Connection: - keep-alive Content-Type: - text/plain;charset=utf-8 Date: - Mon, 11 Aug 2025 23:07:31 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 404 message: Not Found - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example%40papercrow.ai&query.title=Augmenting+large+language+models+with+chemistry+tools&rows=1&select=DOI%2Ctitle response: body: string: '{"status":"ok","message-type":"work-list","message-version":"1.0.0","message":{"facets":{},"total-results":2509115,"items":[{"DOI":"10.1038\/s42256-024-00832-8","title":["Augmenting large language models with chemistry tools"]}],"items-per-page":1,"query":{"start-index":0,"search-terms":null}}}' headers: Connection: - keep-alive Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:31 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=Augmenting+large+language+models+with+chemistry+tools&fields=externalIds%2Ctitle response: body: string: '{"data": [{"paperId": "354dcdebf3f8b5feeed5c62090e0bc1f0c28db06", "externalIds": {"DBLP": "journals/natmi/BranCSBWS24", "ArXiv": "2304.05376", "PubMedCentral": "11116106", "DOI": "10.1038/s42256-024-00832-8", "CorpusId": 258059792, "PubMed": "38799228"}, "title": "Augmenting large language models with chemistry tools", "matchScore": 172.33388}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "348" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:32 GMT Via: - 1.1 b0797f10be715dcb685d992d17347df4.cloudfront.net (CloudFront) X-Amz-Cf-Id: - OAqJJhJQiS0SVeyDr4ht1q5ojGQteyk78fT_uuh5cP7HppAipyaQiw== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - PKekHFc-vHcElrA= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "348" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:32 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - cfb341d2-ff15-4055-9f88-14774e0bf4da status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.48550%2FarXiv.2304.05376/transform/application/x-bibtex response: body: string: Resource not found. headers: Connection: - keep-alive Content-Type: - text/plain;charset=utf-8 Date: - Mon, 11 Aug 2025 23:07:32 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 404 message: Not Found - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/DOI:10.1007/s40278-023-41815-2?fields=externalIds%2Ctitle response: body: string: '{"paperId": "e0d2719e49ad216f98ed640864cdacd1c20f53e6", "externalIds": {"DOI": "10.1007/s40278-023-41815-2", "CorpusId": 259225376}, "title": "Convalescent-anti-sars-cov-2-plasma/immune-globulin"} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "197" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:32 GMT Via: - 1.1 0113a71a4be95c1ea6c4a193aad565aa.cloudfront.net (CloudFront) X-Amz-Cf-Id: - lCrlQxQhajvAm7xBGn-DKotKXEazlgudbFvdVTB_t1bshv_7Ee4gLg== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - PKekREVnvHcEApQ= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "197" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:32 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - c5a14a46-5350-4ca1-8921-e7770d3491c8 status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1007%2Fs40278-023-41815-2?mailto=example%40papercrow.ai response: body: string: !!binary | H4sIAAAAAAAA/8VW227jNhD9FULPpm6Rb3prnS4QINkFkrRFGwUFLY1txhQpkJQd1/C/d0j5tmnW CBZoN3BgmTMazhzOOcNtYCyzrQnyQC2DXlCDMWwO1G4awLW10uerK9CGK4mGJIzD+GQJ8m3AZQWv ULnHilmgDdMW4z49pXF61Rv00uz5udeZLK9ddGeg8YCm2WOc5ckQP39iTGfFrOomyJPBaNgfodsw zoa7XqBhBhpkCbRUrbTo0Auadiq4WYDGiA+N5nIOmjyU3LkRJivyc2u4xDzJHVSckdvbCW7CjWld Dgk+C16CNPjraevg0PY7a4hz/3mvhkE2it0f1lAqaUHaMzBtVeMrFQi2oVzSim1wz7gX/Hp/i9aF tY3Ji6iI1ut1aPYVSjw1DWGp6iKaN0WkwQDTJcJgisjCq6VYOoayjNZc4ivBrvdjqlsp/X9U93za u1I149KXuX96clatjKmZXlKMZjUvrc9vxoQBTNwslLbUhcA3QCMCVriWCO6BeVdDfgdYik2Asa6/ 3LjeicMkjodFZLI4HY6oAytLRkmfpg6kjkIvqsVyBEWseYkRXSKAEF8gytU3j+HqMRnlWZqn4/eO IesPs3F3DI0nZZBkfYr/6GswjdItTRwMyCPPAXokVEWnmwOpYhd6X/1EyRUTYEoHLJOWU8O0Qc8V TWkjGCJaRLyuWwl0LtS0FYg3pt9gZP56Agm3WynR+nKS8SD12lFPPWvTsTMfeFxRJTEIXGzTcy3w vF3CBiN59P+a3DtWV4pTZgxo64tDa3kqvZXYAm3pugwPIrgGMWeVop9c66GO/U3uegQsYSIkj+64 aiyfqBmZfPnt5pomY7LmdkHKM3BIBwbhkjTMovpY0zkt2lppJogHSVUIi9emDaHkcaEBXBQDZWv5 Cp+ZAeNVS8OKw9rtaRdABLegO1KQXyQWXkPFKnS9wR9lyZVhhvxB7jjWOOVKqDkq3QRh5CUjWVzI nPTjIe0ngx75rEIydl8rgoimIflpxbhgUwFkplWdE2RmTgp5oqYBXpeh0vMiCr5q/mRQRC+hs0KI sXAq4CceH9n4ASopzefcEeTghWuCyXnbdTBIL9By6U/5rWY4w1E0OrnYi0ARNdWsiC5QNESH4CQa e7qypsFxwFyWPkTwbUnjbrnC5jp7x6m5k6czzf1AznttuJhuEc1aIVzwcGFr8e/MnamI3tj+u5x/ OM6G19i1mlvUrQWUy8MUqKBRhn+/wI7z9CpPRu8K7CgZjzqBNaXS4O8fOE322rpF1eM4YTbu8QMQ XpofO7dHOz1S5xMgLF4YsOqKVOCmiAEnN1P8doJJ1OtmDpIYpxMeJTJTQqg1bok6MqPIcRCkNZCT K680KDKNctg8H+bfGQn9Denyde5chc3Zleww8/aXrO1Xt62P6jyGx/gMW95dB1AcKa8cEh4hl/Fb hFHwO426PJc13kS6Ftpi/JuHh88uapIMxzSN+0nQlS73jYqigxLfJX90OQ53EFBarVBlfevhgb3g Qoffsc7LEO52/wBSOnixhAsAAA== headers: Connection: - keep-alive Content-Length: - "1159" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:32 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1007%2Fs40278-023-41815-2/transform/application/x-bibtex response: body: string: " @article{2023, volume={1962}, ISSN={1179-2051}, url={http://dx.doi.org/10.1007/s40278-023-41815-2}, DOI={10.1007/s40278-023-41815-2}, number={1}, journal={Reactions Weekly}, publisher={Springer Science and Business Media LLC}, year={2023}, month=jun, pages={145\u2013145} }\n" headers: Connection: - keep-alive Date: - Mon, 11 Aug 2025 23:07:32 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1007%2Fs40278-023-41815-2/transform/application/x-bibtex response: body: string: " @article{2023, volume={1962}, ISSN={1179-2051}, url={http://dx.doi.org/10.1007/s40278-023-41815-2}, DOI={10.1007/s40278-023-41815-2}, number={1}, journal={Reactions Weekly}, publisher={Springer Science and Business Media LLC}, year={2023}, month=jun, pages={145\u2013145} }\n" headers: Connection: - keep-alive Date: - Mon, 11 Aug 2025 23:07:33 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_partitioning_fn_docs[False].yaml ================================================ interactions: - request: body: '{"input":["I like turtles"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "102" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29c5495dcdb3-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:14 GMT Server: - cloudflare Set-Cookie: - __cf_bm=0uM0o1SuFWbev_eTPV1RBxiSA6Orzj.rCviknwlvVHw-1771550234.44892-1.0.1.1-mf.fn9tJMYBvCf4YEjQvvxTToB.nbFDM_N0koMqm2wMIt._PMNsx3rBO6IJ8wSZ9QUPPAzQ2CP_fcZwCRI2krqmkFFvd0PvdI_N8odSvXBeuzk9bOU4aRi4913Ouq9Xi; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:47:14 GMT Transfer-Encoding: - chunked Via: - envoy-router-56f675cff6-j7n98 X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "67" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_836341f193ee43bba43e4d8bf8de0dff status: code: 200 message: OK - request: body: '{"input":["I like cats"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "99" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29c66b02cdb3-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:14 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-7cc485864c-bpblw X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "107" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_5425eeaf890d4f4990d20571eabba485 status: code: 200 message: OK - request: body: '{"input":["I don''t like turtles"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "108" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29c81d69cdb3-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:14 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-78b689497d-gc9n9 X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "46" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999993" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_031ffb2fcae0432ca87bc42f5d943527 status: code: 200 message: OK - request: body: '{"input":["I don''t like cats"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "105" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 /wXc3IucOoIAAA== headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29c90ebdcdb3-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:15 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-7679dccdb7-5q66q X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "155" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_6bb5633cc9764788ad667bf5cccc6f61 status: code: 200 message: OK - request: body: '{"input":["What do I like?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "103" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 t08//+Hj73ihf3z3f10yJRXhgQAA headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29cc8c89cdb3-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:15 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-7ff7679f48-qtmhs X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "108" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_606776b3c8224851ad36036f59ce6d68 status: code: 200 message: OK - request: body: '{"input":["What do I like?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "103" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 AA== headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29ce1ee5cdb3-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:16 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-58bf4bfc6c-mshw4 X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "149" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_ec6474be5f0a40fcb5b620b5765139ea status: code: 200 message: OK - request: body: '{"input":["What do I like?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "103" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 t08//+Hj73ihf3z3f10yJRXhgQAA headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29cffa00cdb3-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:16 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-7679dccdb7-rggxx X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "111" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_31d00d4b9bbf42598e9a481a1e255040 status: code: 200 message: OK - request: body: '{"input":["What do I like or dislike?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "114" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | H4sIAAAAAAAA/41d7a4lSXH8z1Os5jdrVVZlffEqFrIWzwitvR/IO5aQEO/uiO4zho6oy72Yxag5 95zuqqzMyMjI7L/97rvvPv36p//68p9fP/3hu08//fjb10+/57XPP3z9AVf+Hf/9u+/+dv3n45Nf fv7Tl8+ff/zlz9fHr//xx18+f/kr/rfy/1f+8aFv38R/fV/+rZTa+ph9/P5xNUftY9X+vFraWnXu +o+rvJh1tLbG42LiS1v750/y72uNOXadj4/Git3bP1/kR1tGG208v7X0lXPP/rjYStmjhv0UnitX PK/2FmOU2eS3Si+jrHx8ba2rjDafz1p3bbX39XyAlvgG/alIrF88bzX6zihtPy/iyqzt+UzR127x vKPcbe0sUz6JS0P+erc5VpffnjNqHXZDE18hmx9lwySwK8/Fj47tz5SrZaxsTfaklrJ082obdUQ0 NbRoe+rmzZoxu9jJLKuuKh8teHzs3jDr2anWh0WZsF991l5z7VCLUJvirZY19u5yJmKtniXFJPCx MdZzW3rgmerUTcVDdf3SCkudj6W+rDdoZvas/KGMJVc3HqAt/d65pp2UsXbJ1A9iA1INo+3AYU/d Apy1aFhGu9zmqkVsExYEo5G7xXJv/F4R6yzwFZliMdjtXHUvO+8VR7iJcebEPVc5cNmjrZAthxvr owz1DYGL2WQdavY5+976ELNj5/YwY4Yv3OLJcBN4viJL2XvmHqkmOsuE6amJ1ISLkY/uaPCxuut1 zlnkOLuJ3sepBZzR1K1cY2LjdYcnn7np/bYCc4BfEjuf0+y2Z6SHmLHoafTB4Htnmbq0UVNcWhkd QUaXoI+devQCTiL0rkb21WSpW+ud/kw914Y7V9e55y5rq4+Ah8QXyFrXhfOc4uQLF7oONSKEvh5w X932q87W1CkGg+9osjA4jzjRuoZYhNq2RJWA7+lV4pzHn9t9zA7jfP5WVthGVQeMMAljMf9TosLX q9Gvhr1tEpPnYFiPp1vFkmmswMMCZ2hcRADJXYaijzJzi/tG+ISHURsc8NNLd3xWBMstP4/fwZeq bawRe8muTGzsUA8XibC2dKMmLHipR+90cjX0ZA4AqjanwiecF/wz1OnsOYZ+RYXBIzCIl6xBEDa2 opWBgyv3Cze0OwCGPEVPrJd+FiEQ95y6NfitoocGZ5EoTLxpC8SaECOGDcHJyoLDMBDv1TRhA9hd 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 6O+/+z+47qgIQIIAAA== headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29d20dcacdb3-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:16 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-canary-8669b79848-vkhwt X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "97" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999993" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_21402f37bcc549eb9036857dc2331d40 status: code: 200 message: OK - request: body: '{"messages":[{"role":"system","content":"Answer in a direct and concise tone. Your audience is an expert, so be highly specific. If there are ambiguous terms or acronyms, first define them."},{"role":"user","content":"Summarize the excerpt below to help answer a question.\n\nExcerpt from statement_1: positive\n\n---\n\nI like cats\n\n---\n\nQuestion: What do I like or dislike?\n\nDo not directly answer the question, instead summarize to give evidence to help answer the question. Stay detailed; report specific numbers, equations, or direct quotes (marked with quotation marks). Reply \"Not applicable\" if the excerpt is irrelevant. At the end of your response, provide an integer score from 1-10 on a newline indicating relevance to question. Do not explain your score.\n\nRelevant Information Summary (25 to 50 words):"}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "881" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41TwW7bMAy95ysInZ0gTpt43rHYpdhhKLZhQ5fCUGU61ipLmig3KYr8+2g7qd2t A3aRbT6+J5KPfp4BCF2K9yBULaNqvJl/uMpvfi3za5nd7r+ub3N9dWM/kfy2/vh5/10kHcPd/0QV z6yFcszDqJ0dYBVQRuxU0yxL1+vl6mLTA40r0XS0nY/zSzdfLVeX8zTl54lYO62QOOMHfwI892dX oi3xwOFlco40SCR3yLFzEgeDM11ESCJNUdookhFUzka0fdVfagQ8KAw+AudFpAS24hqMfkBQMlKy FcB3an7XdgcSvCMd9SMCsYRu+IDo9jKU1OcvoJNsCcFVrNTpsAIevNFKR/MEVLs9gQ9YYUCrOC9A 5WxpuY0FwNZu7btpsZzYkuxmZVtjJoC01nHFPOt+THcn5PgyGON2Prh7+oMqKm011QVbQ+wTD4Gi 86JHj3ze9Qa0r2YqWKjxsYjuAfvr0s160BOj5SN6kZ7AyBWaCSvfJG/oFSVGqQ1NLBRKqhrLkTr6 LdtSuwkwm3T9dzVvaQ+ds53/Iz8CSqHnZS7YO96H1x2PaQG7P+JfaS9T7gsWhOGR97yIGkPnRImV bM2wrIKeKGJTsF073s+gh42tfJHlK5XLZZ5lYnac/QbGX4wSugMAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29d32f8429a0-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:17 GMT Server: - cloudflare Set-Cookie: - __cf_bm=Exbe1OzsP7DBnOKqGcMySwd9KvdoRE6vsY9wvsIL1SA-1771550236.6650586-1.0.1.1-Tj1ldgC6LQQBK7K2S54XAbmgE0kFGUtk.qj3GkZ6tJLZ4fZYtsgX2UOZGTiAgxAioKY7gfxlz5HIWI3EsYFwENr3dm3EAO1GNDzyuuelttVYdsb2oRku1y3TINWGmsh1; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:47:17 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "467" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29999812" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 0s x-request-id: - req_50ff203f076b4db7bb1ac74b99147234 status: code: 200 message: OK - request: body: '{"messages":[{"role":"system","content":"Answer in a direct and concise tone. Your audience is an expert, so be highly specific. If there are ambiguous terms or acronyms, first define them."},{"role":"user","content":"Summarize the excerpt below to help answer a question.\n\nExcerpt from statement_0: positive\n\n---\n\nI like turtles\n\n---\n\nQuestion: What do I like or dislike?\n\nDo not directly answer the question, instead summarize to give evidence to help answer the question. Stay detailed; report specific numbers, equations, or direct quotes (marked with quotation marks). Reply \"Not applicable\" if the excerpt is irrelevant. At the end of your response, provide an integer score from 1-10 on a newline indicating relevance to question. Do not explain your score.\n\nRelevant Information Summary (25 to 50 words):"}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "884" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41TwW7bMAy95ysInZMgThO32W1DdliBDRjQYcCWwlBk2lYrS55EpwmK/PsoJ6nd rQN2kW0+vieSj34eAQidi3cgVCVJ1Y2ZrD+svv66O9gfD58/vjer9dqtvt/uv6ib22/lQowjw20f UNGFNVWOeUja2ROsPErCqJpcXyfL5Wx+lXZA7XI0kVY2NFm4yXw2X0yShJ9nYuW0wsAZP/kT4Lk7 Y4k2xz2HZ+NLpMYQZIkcuyRx0DsTI0KGoANJS2Lcg8pZQttVfVch4F6hbwg4jzCMYSM+gdGPCNR6 MhzZCOBrtZKkbQkSGhc06R1CYBVd8wHknqTPw4UyhSjcBgRXAPHrk/M5C0dZVsN9Y7TSZA7Atezw EKKqxwI9WsUkD4WzueXOpgAbu7E3w/o5sQ0yjs+2xgwAaa3jJnj83eTuz8jxZVbGlY132/AHVRTa 6lBl7FZg63gugVwjOvTI533nSftqzIKF6oYyco/YXZeky5Oe6LegR68WZ5C4QjNgrVbjN/SyHElq EwauCiVVhXlP7VdAtrl2A2A06Prvat7SPnXO9v6PfA8ohQ3vd8be8X687rhP8xh/kn+lvUy5K1gE 9Dte/Yw0+uhEjoVszWl/RTgEwjpju0peWa9PS1w0WbJUaTrbpulSjI6j37WX2/PNAwAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29d32ebbd021-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:17 GMT Server: - cloudflare Set-Cookie: - __cf_bm=UoqB14bh3EAxhUd8q.uOgn8eiB9m.k6Et0kMlzDmp30-1771550236.6667328-1.0.1.1-0VD5u6g37FdTdmOniH78xAsSU0STD3OPEdUp5LSWT68c3QYplGUNEmZK.kDjk.wR6wTH6nxREfRcEv67tZMApFxoy2Rpj5eo7cVTmwHcYWEC4LHRnkREPBtUeY66PYXQ; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:47:17 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "824" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29999811" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 0s x-request-id: - req_db48628c9f6c4a758c995b4e09835016 status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_partitioning_fn_docs[True].yaml ================================================ interactions: - request: body: '{"input":["I like turtles"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "102" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29b1aa1be0ce-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:11 GMT Server: - cloudflare Set-Cookie: - __cf_bm=CMXV18y.4uIU_c1YDFUXu1U6sGmDMaWPY3YkJf52.gc-1771550231.308986-1.0.1.1-vAqPHgNaJSKUBTPtWm3YxHUjgnl7Tn4g5VeqYJaZkcNu1SN2uxGHZwwdtUSCQkwLf6qTA3Ao.7LWzgPlKEGEu7NaeWlClB1zpOjkJkLD.pbZ06rr6eBONdmKesrWezmH; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:47:11 GMT Transfer-Encoding: - chunked Via: - envoy-router-canary-6bddd69c68-gnt5r X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "84" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_a0611cad53054552bc1257b730e17054 status: code: 200 message: OK - request: body: '{"input":["I like cats"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "99" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29b36ba5e0ce-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:11 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-canary-c5789458b-dwlw9 X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "91" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_8dfaed3f815e4c23a19ad48cc18c8b92 status: code: 200 message: OK - request: body: '{"input":["I don''t like turtles"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "108" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29b4fd0de0ce-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:11 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-5b7db9b97b-bg5td X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "72" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_a78068ee869a4f2cadb2267d3cc72ee5 status: code: 200 message: OK - request: body: '{"input":["I don''t like cats"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "105" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | H4sIAAAAAAAA/41d7Y4kx3H8z6c43G+eUZn1rVcxBIP0HQjaJE8wz4AAQu/uiJ6hrI6oxawWIonZ 3p7qqvyIzIzM/uO7Dx8+fv3xv77857ePf/nw8Zeff//28Xt+9vmHbz/gk3/Hf3/48Mf1z9uVX379 8cvnzz//9tN1+fXLn3/7/OXv+F355yf/f9Gfd+L/yr+VUlZZsUd8/89PP+HjWsdeI/r901hjtdXm 9/96h9ZHGWWt+6Utxrz9Pf88siU+1rvWlr2mrqDHitBra3QsLe+3nWUmVna/Mkfb+Cr5+95q4Of2 95k5Yu77WntruDanfFOv+P/9r2dfJbquPvfGCvTDtVcvutC++2jlfteKnZpr3D+b2JFW74uPPnep TT6ss7c5p+7obH13/fY6Vtn3E8XKy17t/pw9+sBT3Ze09q7tfiFOvmND72uP0tYeVbYu+o4Ik5za xtB11oE1xUq5tvJMytRPV4to4/4pnr+UNqbcAtKD3RpbLs66Vu/tLmnY7cQRdJG/2G2NXrveAt/Y R7+LUJmtjDXjvo27xNizyiOvMepecrQNytK6KFbtY/SQB26z4SyyySNsPFgp9+PJFhsbJgsobVds cOi6yn0LHpfiKOe6SwefC2d5360xY4TsdnSIl21g4MuhwSIeBaoJaxNqmWKXYQ+wIUxFLQsOZuyK n/sermy7iRXAvrSGM5AbYLezZ5GdxWIHlFaEMcuaterZRqFEiy5D7Bssidyg88hVnToebKUcQk5Y 0dxqdWJAo1OtBixpiHQnTN7Extw+nQ12CL+QLVijQHFCZKsueI6QZUEKoLuyWfAYGzbhvtsDimir Wn0GHkyMEcwe5Fgka1T8QtW+JYyxGpmseNKpktF6xUOM+wYU/DFM57KHWlN1u0K3cdZiHSDGO/VQ +oIRaGIjcdle4l8a5Kpv1Y0ZsCLVlACaGeoIIVYN7m3oUQW3W8QC9nTOrfoC/wz7LZrBo44pm41d hdNWg9HojGMLbKDlhcrKpfDE5ebL+bCDplD2Ojc+zKk2o1CN531j4V5rFLOOMAMCBDZc3KrqIBKg 5/b4j/OH45vN7E3LVoda55xZh5pGHEpJddEbvlPPunFT1G3lqHPvfVfApMmetalD3X2pAo+A/g1B QmNhCwTeweVXyrVaYfwCFmCrBEBVe0812vCwUFiRNmwXLdYeigra6mraIIEwN4IfKMUja4iXjrUS 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 AA== headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29b67e5ce0ce-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:12 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-7679dccdb7-s5h9z X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "103" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_c47c079c6a794d2a9e6fcdfdc8ba191d status: code: 200 message: OK - request: body: '{"input":["What do I like?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "103" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 t08//+Hj73ihf3z3f10yJRXhgQAA headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29b9a95fe0ce-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:12 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-7cc485864c-jlkd7 X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "141" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_bf8eb6b110724d1592b888efa89a15f4 status: code: 200 message: OK - request: body: '{"input":["What do I like?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "103" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 t08//+Hj73ihf3z3f10yJRXhgQAA headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29bb0aa7e0ce-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:13 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-58bf4bfc6c-66hw5 X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "138" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_c47ae9896bdf4161b6696cfb59c5342b status: code: 200 message: OK - request: body: '{"input":["What do I like?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "103" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 t08//+Hj73ihf3z3f10yJRXhgQAA headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29bcfc55e0ce-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:13 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-canary-6bddd69c68-gnt5r X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "85" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199998" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_699aa348c2be447294a0fbedb4ee2c88 status: code: 200 message: OK - request: body: '{"input":["What do I like or dislike?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "114" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | H4sIAAAAAAAA/41d7a4lSXH8z1Os5jdrVVZlffEqFrIWzwitvR/IO5aQEO/uiO4zho6oy72Yxag5 95zuqqzMyMjI7L/97rvvPv36p//68p9fP/3hu08//fjb10+/57XPP3z9AVf+Hf/9u+/+dv3n45Nf fv7Tl8+ff/zlz9fHr//xx18+f/kr/rfy/1f+8aFv38R/fV/+rZTa+ph9/P5xNUftY9X+vFraWnXu +o+rvJh1tLbG42LiS1v750/y72uNOXadj4/Git3bP1/kR1tGG208v7X0lXPP/rjYStmjhv0UnitX PK/2FmOU2eS3Si+jrHx8ba2rjDafz1p3bbX39XyAlvgG/alIrF88bzX6zihtPy/iyqzt+UzR127x vKPcbe0sUz6JS0P+erc5VpffnjNqHXZDE18hmx9lwySwK8/Fj47tz5SrZaxsTfaklrJ082obdUQ0 NbRoe+rmzZoxu9jJLKuuKh8teHzs3jDr2anWh0WZsF991l5z7VCLUJvirZY19u5yJmKtniXFJPCx MdZzW3rgmerUTcVDdf3SCkudj6W+rDdoZvas/KGMJVc3HqAt/d65pp2UsXbJ1A9iA1INo+3AYU/d Apy1aFhGu9zmqkVsExYEo5G7xXJv/F4R6yzwFZliMdjtXHUvO+8VR7iJcebEPVc5cNmjrZAthxvr owz1DYGL2WQdavY5+976ELNj5/YwY4Yv3OLJcBN4viJL2XvmHqkmOsuE6amJ1ISLkY/uaPCxuut1 zlnkOLuJ3sepBZzR1K1cY2LjdYcnn7np/bYCc4BfEjuf0+y2Z6SHmLHoafTB4Htnmbq0UVNcWhkd QUaXoI+devQCTiL0rkb21WSpW+ud/kw914Y7V9e55y5rq4+Ah8QXyFrXhfOc4uQLF7oONSKEvh5w X932q87W1CkGg+9osjA4jzjRuoZYhNq2RJWA7+lV4pzHn9t9zA7jfP5WVthGVQeMMAljMf9TosLX q9Gvhr1tEpPnYFiPp1vFkmmswMMCZ2hcRADJXYaijzJzi/tG+ISHURsc8NNLd3xWBMstP4/fwZeq bawRe8muTGzsUA8XibC2dKMmLHipR+90cjX0ZA4AqjanwiecF/wz1OnsOYZ+RYXBIzCIl6xBEDa2 opWBgyv3Cze0OwCGPEVPrJd+FiEQ95y6NfitoocGZ5EoTLxpC8SaECOGDcHJyoLDMBDv1TRhA9hd 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 6O+/+z+47qgIQIIAAA== headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29bebdfae0ce-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:13 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-canary-c5789458b-dwlw9 X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "109" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999993" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_480162bc602b4a3d96d44f8d77a9b0d3 status: code: 200 message: OK - request: body: '{"input":["What do I like or dislike?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "114" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | H4sIAAAAAAAA/41d7a4lSXH8z1Os5jdrVVZlffEqFrIWzwitvR/IO5aQEO/uiO4zho6oy72Yxag5 95zuqqzMyMjI7L/97rvvPv36p//68p9fP/3hu08//fjb10+/57XPP3z9AVf+Hf/9u+/+dv3n45Nf fv7Tl8+ff/zlz9fHr//xx18+f/kr/rfy/1f+8aFv38R/fV/+rZTa+ph9/P5xNUftY9X+vFraWnXu +o+rvJh1tLbG42LiS1v750/y72uNOXadj4/Git3bP1/kR1tGG208v7X0lXPP/rjYStmjhv0UnitX PK/2FmOU2eS3Si+jrHx8ba2rjDafz1p3bbX39XyAlvgG/alIrF88bzX6zihtPy/iyqzt+UzR127x vKPcbe0sUz6JS0P+erc5VpffnjNqHXZDE18hmx9lwySwK8/Fj47tz5SrZaxsTfaklrJ082obdUQ0 NbRoe+rmzZoxu9jJLKuuKh8teHzs3jDr2anWh0WZsF991l5z7VCLUJvirZY19u5yJmKtniXFJPCx MdZzW3rgmerUTcVDdf3SCkudj6W+rDdoZvas/KGMJVc3HqAt/d65pp2UsXbJ1A9iA1INo+3AYU/d Apy1aFhGu9zmqkVsExYEo5G7xXJv/F4R6yzwFZliMdjtXHUvO+8VR7iJcebEPVc5cNmjrZAthxvr owz1DYGL2WQdavY5+976ELNj5/YwY4Yv3OLJcBN4viJL2XvmHqkmOsuE6amJ1ISLkY/uaPCxuut1 zlnkOLuJ3sepBZzR1K1cY2LjdYcnn7np/bYCc4BfEjuf0+y2Z6SHmLHoafTB4Htnmbq0UVNcWhkd QUaXoI+devQCTiL0rkb21WSpW+ud/kw914Y7V9e55y5rq4+Ah8QXyFrXhfOc4uQLF7oONSKEvh5w X932q87W1CkGg+9osjA4jzjRuoZYhNq2RJWA7+lV4pzHn9t9zA7jfP5WVthGVQeMMAljMf9TosLX q9Gvhr1tEpPnYFiPp1vFkmmswMMCZ2hcRADJXYaijzJzi/tG+ISHURsc8NNLd3xWBMstP4/fwZeq bawRe8muTGzsUA8XibC2dKMmLHipR+90cjX0ZA4AqjanwiecF/wz1OnsOYZ+RYXBIzCIl6xBEDa2 opWBgyv3Cze0OwCGPEVPrJd+FiEQ95y6NfitoocGZ5EoTLxpC8SaECOGDcHJyoLDMBDv1TRhA9hd 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 6O+/+z+47qgIQIIAAA== headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29c00f19e0ce-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:13 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-78b689497d-vw54p X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "53" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999993" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_adef1d8cc6a447ec94c7d43a8b53e20b status: code: 200 message: OK - request: body: '{"messages":[{"role":"system","content":"Answer in a direct and concise tone. Your audience is an expert, so be highly specific. If there are ambiguous terms or acronyms, first define them."},{"role":"user","content":"Summarize the excerpt below to help answer a question.\n\nExcerpt from statement_2: negative\n\n---\n\nI don''t like turtles\n\n---\n\nQuestion: What do I like or dislike?\n\nDo not directly answer the question, instead summarize to give evidence to help answer the question. Stay detailed; report specific numbers, equations, or direct quotes (marked with quotation marks). Reply \"Not applicable\" if the excerpt is irrelevant. At the end of your response, provide an integer score from 1-10 on a newline indicating relevance to question. Do not explain your score.\n\nRelevant Information Summary (25 to 50 words):"}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "890" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/4xTy27bMBC8+ysWvPRiB5blOE6OfaKnooBRtIgDgSZXEmuKFMiVmyDwv3clW5Hc NkAvFLSzMxrujp4nAMJocQdClZJUVdvZ+7e3X93u3f5Dg/rbaiO/NMv0u6cKP338gWLaMvzuJyrq WVfKMw/JeHeCVUBJ2KomNzfJ9fV8kaYdUHmNtqUVNc2WfraYL5azJOHnmVh6ozByxz2/Ajx3Z2vR aXzk8nzaVyqMURbItb6Ji8HbtiJkjCaSdCSmA6i8I3Sd602JgI8KQ038rK1RhuwTMIUwTmErPoP2 7g2BNXsEagJZrm8FsA+jJBlXgARtYofnPvQ9V7ApTYQ6+IPRGLkl8KAA2zenEHzOPIcFSxwQItsx FR9A/pcMelCBrdu69dh9wLyJsh2ea6wdAdI5z755+N3cHs7I8WVS1hfsZxf/oIrcOBPLjHcVeXE8 lUi+Fh165POh20hzMWTBQlVNGfk9dp9LVquTnhgyMKDpeV2C2KEdsW571oVeppGksXG0U6GkKlEP 1CEAstHGj4DJ6NZ/u/mX9unmvMv/kR8ApbDmdGd1QA7D5Y2HtoDtL/Ja28uUO8MiYjhw8DMyGNpN aMxlY0/pFfEpElYZr6vgwAZzinBeZ+lynebrVCoUk+PkNwAAAP//AwAmF1vYywMAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29c0eaa32953-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:14 GMT Server: - cloudflare Set-Cookie: - __cf_bm=D0mZX3rRGlkoFMyMRZfRQCXZQzMIO3cH88BNDNDDgJU-1771550233.7438056-1.0.1.1-X.7qrMxEs9zDR.M9aq_WlgJBjETXe2VY26mOY5BHC18_CwK5KHyNv5PPvOESDg24DHyMKfODpta6h_hKXHddMA23xD4QsT71SkT7S0wYAIPVbtU9O49Z_cTHulnNcvmU; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:47:14 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "430" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29999810" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 0s x-request-id: - req_5a1fb34d82324cbfa04e55e57882b645 status: code: 200 message: OK - request: body: '{"messages":[{"role":"system","content":"Answer in a direct and concise tone. Your audience is an expert, so be highly specific. If there are ambiguous terms or acronyms, first define them."},{"role":"user","content":"Summarize the excerpt below to help answer a question.\n\nExcerpt from statement_1: positive\n\n---\n\nI like cats\n\n---\n\nQuestion: What do I like or dislike?\n\nDo not directly answer the question, instead summarize to give evidence to help answer the question. Stay detailed; report specific numbers, equations, or direct quotes (marked with quotation marks). Reply \"Not applicable\" if the excerpt is irrelevant. At the end of your response, provide an integer score from 1-10 on a newline indicating relevance to question. Do not explain your score.\n\nRelevant Information Summary (25 to 50 words):"}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "881" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41TTW/bMAy951cQOjtBPpqk2THbYRs2YAO2w7AUhirTiVZZEkQ6TVD0v4+2m9rd OmAX2ebjeyL56IcRgLKFegPKHDSbKrrxu+3mq3/7sVyUBfv51v5Ybd9PP32Oq+9f+KyyhhFuf6Hh C2tigvCQbfAdbBJqxkZ1tl7PlsvpfLFogSoU6BraPvL4Kozn0/nVeDaT5xPxEKxBkoyf8gnw0J5N ib7Ak4Sn2SVSIZHeo8QuSRJMwTURpYkssfassh40wTP6tupvBwQ8GUyRQfIYKYOd+gDO3iEYzZTt FMidVt6t34OGGMiyPSKQSNhKDuBwr1NBbf4EGsmaEEIJLK/3IRUi2QiKFJ6is8ayO4NUccQzQUxY YkJvhJKgDL7w0tEEYOd3/npYtyTWpJux+dq5AaC9D1K8jL2d2M0T8vg8Ixf2MYVb+oOqSustHXJx icQymQdxiKpFH+W8ab2oX4xXiVAVOedwh+11s9Wy01O9+z3a+S0gS4VuwNpcZ6/o5QWyto4Gbiqj zQGLntpbr+vChgEwGnT9dzWvaXedi7P/I98DxmCUvc7FO1mNlx33aQmbn+Nfac9TbgtWhOkoK5+z xdQ4UWCpa9ftraIzMVa52LWXVU22W94y5uvN3Gz0dLNeq9Hj6Den+T8mxQMAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29c0dbd4fa52-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:14 GMT Server: - cloudflare Set-Cookie: - __cf_bm=KexO92ecz8nz8HRV1fEMneqdYycesy7ZB5sZcXq7MTo-1771550233.7394423-1.0.1.1-9Vx8dlT437PYQXF6P.9B1O5P1P41IZx3y.nveSdYmtL.Ch8MRMgfSra8dnizTwKjqoidHDMq0aHifnVgtK7RvYVmFVmWIbvec_b13g6XZH4VhSCB8L06El4RaIEzMEPy; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:47:14 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "490" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29999812" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 0s x-request-id: - req_e51acda02bcd4e6fa94f10a01794f101 status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_partly_embedded_texts[False].yaml ================================================ interactions: - request: body: '{"input":["I like turtles."],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "103" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | H4sIAAAAAAAA/41d7a4luW3876dYzG9PIFGiPvwqgRGsswPDyX4Y2QlgwPC7p6r7jLNdpet7dwM7 OO57TrdEkcVikf3333333adf/vRfX/7z66c/fPfpx7/8+vXT7/nZD99//R6f/Dv+/++++/v1n48r v/z0py8//PCXn/98XX79j3/5+Ycvf8P/Vv75yf9f9O2b+E/5t9J76aXm7//52Wd8GL201Wd7flpX zyhj/v63f19L9hp9PT6MPWpd+fwQfz5XrfG8cs1SWsiHNSOj1+fPtxgri9xTlIzItE/3yNj7+Wmp Y7Wy2vO28PN94kvG81OsS+14uOentY3R19KFKYF/atVFzJVtd3mKbL2mfG+rM+pvn5dfOuvMXZ83 2/Ycaw/5+VF2yh9jB/facvetrjV7f641VnBXucmCjdpjDNnpOsdoXX5olVlGk51ue29b5oE/z/28 cvTcs8p6wqCwSvKUPXYf7fmYZY0y+37+esMqcUHl2XEtnqmpSezd9gp5/pq9Yf3kx9rcMVoO3dCc 8lSwJlh1keUbOdpaWwxqtVhNruw4OrhefqeXkfgxMTJYNHZK7j/73EMsui7sXZtiEqOMjsP6PNPR o8wpxxfnD38f9lS9td+6hOum6o6147l8A0Y/s+uV+HdWOXs5suJf3ZSOne4l1FRbq02NOgeOr9xV a31H2/qla1Y4u/yAA8I5g1nYMZ+4cNkSjMw65Zj3sVerRQ/bXllhnXK32Brcha7X5IYtORljwLfK g2FRcswtt4UvwMHCY+iBKziFu+t5h7kMcUA5W8h+wTGXoesaiACziZtrBcbWn8aWc43dxa3Ap8CH hEUg/DmNSzZLre0OVqXD1eu29D7g2uTTEbDNkDvAIRg4GaFhoTXEFnMjeDDcg3xvwmmVpVEIf487 LnItPgq4yCrOueWCi9S1DXqobhaHRTdHthmvdLcX7kI+5HnDoZ9yEtuEK5E4Em3iMKvThm/L2UMt qyz800OPPQymT/VljGNbwnNfkTvU7dWKrR2zyZbhh2Ch4neAMOChzPHM9bDtlzeac6khwL/kLFP2 C5ChdltuuPKya0og31hdDWcVdrRzKMbZa9KdqYfgJgxzR4gG2CC9hWzmI8sKIK9WNKR2uKj23PKO fcT/yZU8S71J7EI872rdQH4LoX9pjNw7dAEARrY76Rq0OjnhWXE8JMwH464+ETBCbDWWthC1EGZ1 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 O3nzgQAA headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29337d6dd8c2-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:51 GMT Server: - cloudflare Set-Cookie: - __cf_bm=gyuWhlEujVyQfCP0qCQCRZ_mjnshNmXU_mT8IPncdis-1771550211.1145248-1.0.1.1-KHWDPzlxshxSkgid97xn7aTIqmut4xidrI7Bxs8T9_KUxMkwQqOrDtHD8.d2Lo3I7cWW_pwg9Ty3nj8j3laTVEDouCgsJVQP3YaD5QR5aRvgUuz_3eCo.sT4xhpZUzKz; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:46:51 GMT Transfer-Encoding: - chunked Via: - envoy-router-7ff7679f48-b2jnc X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "105" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_87e8a9b658594426a384a4ff790aecc9 status: code: 200 message: OK - request: body: '{"input":["I like cats."],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "100" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 ggAA headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a2935d91bd8c2-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:51 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-6694697846-dklk9 X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "185" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_3497c66515184419ae25b6d0a4bead4e status: code: 200 message: OK - request: body: '{"input":["What do I like?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "103" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 t08//+Hj73ihf3z3f10yJRXhgQAA headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a2937cc6dd8c2-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:52 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-canary-6bddd69c68-gnt5r X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "74" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_313fd0b0280a4251b24d56317f358b29 status: code: 200 message: OK - request: body: '{"messages":[{"role":"system","content":"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\n\n{\n \"summary\": \"...\",\n \"relevance_score\": 0-10\n}\n\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\n\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0."},{"role":"user","content":"Excerpt from sentence1: stub\n\n---\n\nI like turtles.\n\n---\n\nQuestion: What do I like?"}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "803" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41STW/bMAy951cIOjuF7SXzvFv3he0yoNjQHebCUGXG1iJLgkQX7YL891F2Urtb C+wiw3x8j3wkDyvGuGr4W8ZlJ1D2Tq8/vCuvvjXu45er99c/tp9efb78PZT5pusUfr3mSWTY218g 8cy6kJZ4gMqaCZYeBEJUzYoi227TPMtHoLcN6EhrHa43dp2n+WadZfQ9ETurJATK+Em/jB3GN7Zo GrincJqcIz2EIFqg2DmJgt7qGOEiBBVQGOTJDEprEMzY9aEyjFU8DH0v/ENFoYp/74DBvQTvkBEX ITAkc/QACw7EHjzTah/Dg0cN4aLiyaTjQcOdMBLqIK2HqJellTkuq3vYDUFE82bQegEIYyyVo+GN vm9OyPHRqbat8/Y2/EXlO2VU6GqadaDBk6uA1vERPdJ7M050eDIkTkK9wxrtHsZy2evNpMfnHc5o vj2BSB3qBetNmTyjVzeAQumw2AmXQnbQzNR5gWJolF0Aq4Xrf7t5Tntyrkz7P/IzICU4us7aeWiU fOp4TvMQT/yltMcpjw3zAP6ODrdGBT5uooGdGPR0fTw8BIS+pnW1dFxeTSe4c3VR5rIUaVkUfHVc /QEMDXh/iwMAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29395e4242ae-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:52 GMT Server: - cloudflare Set-Cookie: - __cf_bm=.qbpg9IhVQ52bH_4aQKvFHYd2cPYi8XcTtRKs6mSFJI-1771550212.0537205-1.0.1.1-jOMmf0D9bQoAHqWKJBI7ijeK23nUjsKXHDG_OWwmeRwNc_FaIIslUaWOYm3hWK5iz.OeBaiTDKL40N1_qhky3dpJcckuS3McqfhIpfDanQvzn.Rb15tugk35EVYl4yHg; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:46:52 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "416" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29999833" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 0s x-request-id: - req_61eebad5a1324e43a0d5ff0607402888 status: code: 200 message: OK - request: body: '{"messages":[{"role":"system","content":"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\n\n{\n \"summary\": \"...\",\n \"relevance_score\": 0-10\n}\n\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\n\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0."},{"role":"user","content":"Excerpt from sentence2: stub\n\n---\n\nI like cats.\n\n---\n\nQuestion: What do I like?"}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "800" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41SwW7bMAy95ysEnZ3CNpJ52W3dsF0KpMMGDFtdGKrM2GplSZDookGQfx9lJ7W7 dUAvMszH98hH8rBgjKuaf2BctgJl5/Ty8+Xm2/dPX6/22y3K6/7e/NxefVR4/eW3b3/xJDLs3T1I PLMupCUeoLJmhKUHgRBVs6LI1us0z/IB6GwNOtIah8uVXeZpvlpmGX1PxNYqCYEybuiXscPwxhZN DU8UTpNzpIMQRAMUOydR0FsdI1yEoAIKgzyZQGkNghm6PpSGsZKHvuuE35cUKvmPFhg8SfAOGXER AkMyRw8wBz5Yw7R6oKgUGC5KnowaHjQ8CiOhCtJ6iFpZWprjvLKHXR9ENG56rWeAMMZSKRrc4Pn2 hByfXWrbOG/vwl9UvlNGhbaiOVNf0VFA6/iAHum9HabZvxgQJ6HOYYX2AYZy2bvVqMen/U1ovj6B SB3qGev9JnlFr6oBhdJhtg8uhWyhnqjT8kRfKzsDFjPX/3bzmvboXJnmLfITICU4uszKeaiVfOl4 SvMQz/t/ac9THhrmAfwjHW2FCnzcRA070evx8njYB4SuonU1dFhejee3c1WxyeVGpJui4Ivj4g9/ BIExhwMAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29395f549d09-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:52 GMT Server: - cloudflare Set-Cookie: - __cf_bm=CAnniKQavZl2EQ1swV7mRb3S0EXnT8ZSj8ExgWAeKkw-1771550212.0510235-1.0.1.1-HRwIn5cBdw02FJE7AeVmW8F9IMb2bK.5ExVEsuAK_uARJsNmEZK_emOFlDIkHFcdROJmJZkqR5AkfCZmCJmcXWXqsOZgl1iD0Ep55EKnpKkhIeBwS2ysKPGXiC_pw_J3; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:46:52 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "505" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29999834" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 0s x-request-id: - req_5d6ed627aab348b3aacd5f122e71c012 status: code: 200 message: OK - request: body: '{"input":["What was it that I liked?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "113" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a293d9d0fd8c2-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:52 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-canary-6bddd69c68-gnt5r X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "69" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_cb0ebe3e6b8347718dd36e37dc2bbabd status: code: 200 message: OK - request: body: '{"messages":[{"role":"system","content":"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\n\n{\n \"summary\": \"...\",\n \"relevance_score\": 0-10\n}\n\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\n\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0."},{"role":"user","content":"Excerpt from sentence2: stub\n\n---\n\nI like cats.\n\n---\n\nQuestion: What was it that I liked?"}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "810" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/4xSTY+bQAy951eM5pysgGYX0WNbqeqlVdtcqrJCk8GBaYYZOjZRoij/vQaShfRD 6mUQfn7PfrbPCyGkKeVrIXWtSDetXb17k33eEH79WH97e9zazdZ/MvpQvd9vfn75IJc9w29/gKYb 60F75gEZ70ZYB1AEvWqcpvHjY5TErwag8SXYnla1tFr7VRIl61Uc8/dKrL3RgJzxnX+FOA9v36Ir 4cjhaHmLNICoKuDYLYmDwds+IhWiQVKO5HICtXcEbuj6nDshcold06hwyjmUy00NAo4aQkuCuQQo iM2Jk++ENXsQWhE+5HI5cgNYOCinoUDtA/QacZS7y7xigF2HqjfsOmtngHLOcwke2OD1+YpcXtxZ X7XBb/E3qtwZZ7AueL7Iw2YnSL6VA3rh93mYYnc3GMlCTUsF+T0M5eKnp1FPTnub0GR9BYk7tDNW dp39vV5RAiljcbYHqZWuoZyo09JUVxo/AxYz13928zft0blx1f/IT4DW0PJFFm2A0uh7x1NagP6s /5X2MuWhYYkQDnysBRkI/SZK2KnOjhcn8YQETcHrqvigghnPbtcWaZboTEVZmsrFZfELAAD//wMA txMRVH8DAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a293eaaf642ae-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:53 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "438" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29999831" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 0s x-request-id: - req_6b22220044684e98a1b60bb9577670f2 status: code: 200 message: OK - request: body: '{"messages":[{"role":"system","content":"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\n\n{\n \"summary\": \"...\",\n \"relevance_score\": 0-10\n}\n\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\n\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0."},{"role":"user","content":"Excerpt from sentence1: stub\n\n---\n\nI like turtles.\n\n---\n\nQuestion: What was it that I liked?"}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "813" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41STW/bMAy951cIOjtF7DXx3Ns+DjsMGIb1MGAuDFWmbSWyJIhy1yLIfx9lJ7W7 tcAuMszH98hH8rhijKua3zAuOxFk7/T688fi++23fduYn2aov3zynfj64cf737tU7bc8iQx7vwcZ LqwraYkHQVkzwdKDCBBV0zxPt9tNlr4bgd7WoCOtdWF9bdfZJrtepyl9z8TOKglIGb/ol7Hj+MYW TQ2PFN4kl0gPiKIFil2SKOitjhEuEBUGYQJPZlBaE8CMXR9Lw1jJceh74Z9KCpX8tgMGjxK8C4y4 AZAFMkcPMHQgDuCZVocYHnzQgFclTyYdDxoehJFQobQeol66Kc1pWd1DM6CI5s2g9QIQxlgqR8Mb fd+dkdOzU21b5+09/kXljTIKu4pmjTR4coXBOj6iJ3rvxokOL4bESah3oQr2AGO5dLeb9Pi8wxnN tmcwUId6wSrS5BW9qoYglMbFTrgUsoN6ps4LFEOt7AJYLVz/281r2pNzZdr/kZ8BKcHRdVbOQ63k S8dzmod44m+lPU95bJgj+Ac63Coo8HETNTRi0NP1cXzCAH1F62rpuLyaTrBxVV5kshCbIs/56rT6 A3yOowiLAwAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a293ead299d09-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:53 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "452" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29999831" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 0s x-request-id: - req_d10787eb9f7c47d0902c2fc243c1a738 status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_partly_embedded_texts[True].yaml ================================================ interactions: - request: body: '{"input":["I like turtles."],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "103" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 VgnpJoq+94BF2GrmXAMciKQpx1+b9rxsDcp4suYHCs+KRQAc/6l0CycWG9rPa2V7haA/nWPT9ApM DefPhFOV/tmphJ33jQ98110E+utRnxQ8iKxzqUSNaGg07cEhhK6RXo6Du0fV0HT/ahT1U14oFhVe 809nVtz2Y9xo2BBX10R6tyydpv7fD6XYu22c77upgfU41+np+zQyUKdPTY5WipI8J81YoRky1KlO h2xSRSgjplYzQSevSpXMFPZMhzjw4OwmKQ2syaZK4AGHilH4Tumltx44DzhmNvRwvzbSOtqnmT9P Rj1h6ze+11O0WvR5KgnM48dHaN481PVmwFd74Y7kBM3u4tMQeNGEhVIjA93YavYyx6MrxucO3c0I ugRUzn54NRKNZcnnbR1AK6AH33ftnxw+43ERNNqkKgoDigl/aEnWKk3ntR4bh9fIncj2Kkq+oQaY 1y7VzJFvR4lLOo+3dzHQjcOBB3SS0EG5zInA9u5UmvpsKOq5OuH4DcM3hYDZ4LK/8G6r3+awgTOm pL0H4xEJGVwm6mhWCmqqfDoMMth897dDTzw+e4c6lXaAY+aYxArY7E2FAPe2qIDg4jOaJFpsuuAx geIEZ5+Dh6fCYWfaz+TbbPRYYQtXazIi5IW9d/X8oqbCXWlRLFd6fm2W+kCNP92Wxbf2GZlMrUJT J6cOWbpYioYVGz6Zo+8RNTomrPYsu5vRLg1zEey3LzkqZrlR9T13CbFtKfd/fHUdJySWw+QlvhzZ dLt8P5rKmzJLozrvv/24//8P/PdHfuzT128/f/7y6a9/+fT983++v33++vfPP//8j19/eStvv3/9 6cuXT/tD//79p18+40P/3f/402//+vb1t+9/+/7tn59//R1/vu/i0/dv33/68n9//oE/9McP/wNi oDt584EAAA== headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a291eaa1367cd-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:48 GMT Server: - cloudflare Set-Cookie: - __cf_bm=CvZMOnWJkNKX2EdXXFKrHEcuMWQVtSQhEIGkzxSJTBc-1771550207.7878888-1.0.1.1-PDwKAeXKVFpjQLsqhGvkatsVKW0mmGUoIZ6zSJf2cLitmLRk70_VSWQOXHcqRvUACAUFFTSLDlAwr_f4t6eyxTOTd6RlgXwLuloYbkOG0nnhLlHRsq7xV_O1Xt3ZSqqa; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:46:48 GMT Transfer-Encoding: - chunked Via: - envoy-router-7679dccdb7-5q66q X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "167" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_9ce056d493b845e0ad609767d4accf48 status: code: 200 message: OK - request: body: '{"input":["I like cats."],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "100" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 3FEFKpFD5+m9IX3nO2RzDn2xlImR3pAL3vd1EF6zvkyc9x4deOtjV7cXdBw76Xx4+bEv+fags6jm 1XUlL7qaQ2msE/A0ZIy6TnthLocRZy5LLQl+JWzSmKtuzfGtI3wp6gJGsB6O/RxUf+xte3W28DUz ai+baUHXsbO4atrbMKnEVm2o5Q9vDZAMjp6bzSNILgM4Nmz0UjJ0QAwLTAjrTKEUYtEf6QRM44jf qssjF4DnCBWxbI5rsiYH5LaqfDMRz5vvyOEbPru+YtRfuHZnX1p5OGPexrFDu//LBofXSINucy/n 9cZYa+hmN4y91BnmXPLECiOabh1aE2Ga2oGAN3X6A4fYLe3x2exmMTc3Iq0ISdRgQsLrNUbL3X0y R92uDN9AwmHqi5PaG5ZDMYt2YI5LAaKDe3Tu+J1gwFjsHWV8jZ+/hIVduN3S7NOQGWYXdO0mmSGV afOUOnuwbPJg58gVHdZDdP0gnO47qKZZ50Ch8HRsIuuwt3a7NPvjSaNwB5x74oKpdfXVoeX0St8j e32DBy2a+qs27kXhNWMpO8ZRWSZZO00NP49dT/a7rmECwXn1Wai6nn2rw951p5MLy2n+/mt2twxX vjaGpyntdW8Uteowas7nsxIRVS7GvRq/eSsJkVBLuGl04M2aTKgcGD5yY4W+S5MTEhGYlWNne+ch eT+4OGC5pEhVzyEVGTqK5pqPrfO7ju8QB/rtdXtGjmxFa6WnGj3noS+jNwsnxxu04DAilaCzNTPs Xay172JUsI8kfasTF2B2Kzw9dksiG+jhXfuw6aJvPuDcd+pnXp/95frff+Cff+HXPvz0y6fPP374 8zcfvnz++5ePn3/6/vOnTz/8/NeP+fHXn7778ccP15f+99fv/voZX/rt+uMPf/ufX37625f/+PLL f3/++Vd8/Lq5D19++fLdj3/4+E/8oX/86f8ApcGPbwSCAAA= headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29215b5d67cd-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:48 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-7679dccdb7-7kk27 X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "113" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_5cd2365ec26940b8a2eb29f0d8e2994e status: code: 200 message: OK - request: body: '{"input":["What do I like?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "103" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 //34J37QHz/9B10yJRXhgQAA headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a2922bc1c67cd-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:48 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-6694697846-qgfjj X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "137" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999996" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_5b8c6f478e3e4742976a9026f820dccf status: code: 200 message: OK - request: body: '{"messages":[{"role":"system","content":"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\n\n{\n \"summary\": \"...\",\n \"relevance_score\": 0-10\n}\n\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\n\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0."},{"role":"user","content":"Excerpt from sentence1: stub\n\n---\n\nI like turtles.\n\n---\n\nQuestion: What do I like?"}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "803" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41STW/bMAy951cIOjuF7SV1vOM2YId9oVh2GObCUGUm1iJLmigXLYL891F2Urtb B+wiw3x8j3wkjwvGuGr4a8ZlK4LsnF6+e1PefLn+1Ny4D+/99nPzffP149tf2da8+tbmPIkMe/cT ZLiwrqQlHgRlzQhLDyJAVM2KIluv0zzdDEBnG9CRtndhubLLPM1Xyyyj75nYWiUBKeMH/TJ2HN7Y omnggcJpcol0gCj2QLFLEgW91THCBaLCIEzgyQRKawKYoetjZRirOPZdJ/xjRaGKb1tg8CDBu8CI GwBZIHP0AEMH4gCeaXWI4d4HDXhV8WTU8aDhXhgJNUrrIeplaWVO8+oedj2KaN70Ws8AYYylcjS8 wfftGTk9OdV277y9wz+ofKeMwramWSMNnlxhsI4P6Ine22Gi/bMhcRLqXKiDPcBQLrtejXp82uGE 5uszGKhDPWNtyuQFvbqBIJTG2U64FLKFZqJOCxR9o+wMWMxc/93NS9qjc2X2/yM/AVKCo+usnYdG yeeOpzQP8cT/lfY05aFhjuDv6XDroMDHTTSwE70er4/jIwboalrXno7Lq/EEd64uylyWIi2Lgi9O i9/356JxiwMAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a2924afaa1742-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:49 GMT Server: - cloudflare Set-Cookie: - __cf_bm=fLNrCD5GRes_uZDM6ZxjrXwH8y0CL1TWNUQNKQeemC8-1771550208.7424598-1.0.1.1-cEl35lJbPTN5g5fGtwf4npJnjfi1alwfbQ9Yr6JAW0sJRe_fmjGR3jV4bBbXQqWrH9uK_Xa1uf_PJnKP5B7384aqhpHLssvRu167uXPTASHFG6jmKs_dj3PD6Cn8X_vp; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:46:49 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "432" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29999833" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 0s x-request-id: - req_259b00d219964f2daa6291340b487718 status: code: 200 message: OK - request: body: '{"messages":[{"role":"system","content":"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\n\n{\n \"summary\": \"...\",\n \"relevance_score\": 0-10\n}\n\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\n\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0."},{"role":"user","content":"Excerpt from sentence2: stub\n\n---\n\nI like cats.\n\n---\n\nQuestion: What do I like?"}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "800" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41SwW7bMAy95ysEnZ3CNpK62a3DgG6XFQO601wYikzbWmVJkOiiQZB/H2Untbu1 wC4yzMf3yEfyuGKMq5p/Ylx2AmXv9PrL592P+58Hc/eQQnO7bb/Ddfc1T5v9XXr/jSeRYfe/QeKF dSUt8QCVNRMsPQiEqJoVRbbdpnl6MwK9rUFHWutwvbHrPM036yyj75nYWSUhUMYv+mXsOL6xRVPD C4XT5BLpIQTRAsUuSRT0VscIFyGogMIgT2ZQWoNgxq6PpWGs5GHoe+EPJYVK/tABgxcJ3iEjLkJg SOboAebAB2uYVk8UlQLDVcmTScODhmdhJFRBWg9RK0tLc1pW9tAMQUTjZtB6AQhjLJWiwY2eH8/I 6dWltq3zdh/+ovJGGRW6iuZMfUVHAa3jI3qi93Gc5vBmQJyEeocV2icYy2XXm0mPz/ub0Xx7BpE6 1AvWzS55R6+qAYXSYbEPLoXsoJ6p8/LEUCu7AFYL1/9285725FyZ9n/kZ0BKcHSZlfNQK/nW8Zzm IZ73R2mvUx4b5gH8Mx1thQp83EQNjRj0dHk8HAJCX9G6Wjosr6bza1xV7HK5E+muKPjqtPoD1xz8 BYcDAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29249f8633fc-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:50 GMT Server: - cloudflare Set-Cookie: - __cf_bm=ZApdP0oAGSzuRrpk3ZzO1kwzRQrLx.itdYoDed3BcbU-1771550208.740684-1.0.1.1-cbpogqElld8Y9SfIOodO17fQMaOau09DcxaJXrX.ANe4HIRIKuvR9HPxQ8EpOe9ab3VOORoURdxSA5n8GpkDZKqiWiZKvuVmDQNWFQ1FQU1.v7fH27S1N7XPsYyfdtIn; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:46:50 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "1238" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29999834" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 0s x-request-id: - req_8776f6a168a041a69040eea18b70b5c4 status: code: 200 message: OK - request: body: '{"input":["What was it that I liked?"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "113" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | 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 headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a292d79bc67cd-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:50 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-749ff47bf4-7fjxf X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "116" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999993" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_b1ea2e0b8b5b473cbd2ba03f00d5b063 status: code: 200 message: OK - request: body: '{"messages":[{"role":"system","content":"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\n\n{\n \"summary\": \"...\",\n \"relevance_score\": 0-10\n}\n\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\n\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0."},{"role":"user","content":"Excerpt from sentence2: stub\n\n---\n\nI like cats.\n\n---\n\nQuestion: What was it that I liked?"}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "810" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41SwW7bMAy95ysEnZPCNpoa2W3DgG1AESDDbnNhyDJja5UlQ6SDFkH+fbSc1u7W AbvIMB/fIx/J80oIaWr5QUjdKtJdbzefP+0Oh8P9vtp/OXn4eqj22A7Vx+/f7sPeyPXI8NUv0PTC utGeeUDGuwnWARTBqJrmebrdJlmaRKDzNdiR1vS0ufWbLMluN2nK3yux9UYDcsZP/hXiHN+xRVfD E4ejTIx0gKga4NhLEgeDt2NEKkSDpBzJ9Qxq7whc7PpcOCEKiUPXqfBccKiQP1oQ8KQh9CSYS4CC 2Bw/IAaEIKx55JhWhDeFXE8KASyclNNQovYBRqU0KdxlWTfAcUA12naDtQtAOee5EI8tOn64IpdX j9Y3ffAV/kGVR+MMtiVPGXnk7AfJ9zKiF34f4iyHN+ORLNT1VJJ/hFguvbub9OS8vRnNtleQuEO7 YO3S9Tt6ZQ2kjMXFNqRWuoV6ps6rU0Nt/AJYLVz/3c172pNz45r/kZ8BraHnuyz7ALXRbx3PaQHG 4/5X2uuUY8OSD+PEJ1uSgTBuooajGux0dxKfkaAreV0Nn1Uw0/Ed+zLfZXqnkl2ey9Vl9Rt85cTk hQMAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a292f1c411742-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:50 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "472" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29999831" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 0s x-request-id: - req_53fa94b01ba746af91a6f1c095dba8a4 status: code: 200 message: OK - request: body: '{"messages":[{"role":"system","content":"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\n\n{\n \"summary\": \"...\",\n \"relevance_score\": 0-10\n}\n\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\n\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0."},{"role":"user","content":"Excerpt from sentence1: stub\n\n---\n\nI like turtles.\n\n---\n\nQuestion: What was it that I liked?"}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "813" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41SwW7bMAy95ysEnZPCNpoa2bErMOy2DhswYC4MVaZtNbKkSXTRLMi/j5LT2t06 oBcZ5uN75CN5XDHGVcM/MC57gXJwenNzvbu9bQ9d/ikTP1Smr/333/jw+Vf79cvHLV9Hhr1/AInP rAtpiQeorJlg6UEgRNW8LPPtNivyLAGDbUBHWudwc2k3RVZcbvKcvmdib5WEQBk/6ZexY3pji6aB JwonmRQZIATRAcWekyjorY4RLkJQAYVBvp5BaQ2CSV0fK8NYxcM4DMIfKgpV/FsPDJ4keIeMuAiB IZmjB1hwIPbgmVb7GB49aggXFV9POh40PAojoQ7Seoh6eVaZ07K6h3YMIpo3o9YLQBhjqRwNL/m+ OyOnF6fads7b+/AXlbfKqNDXNOtAgydXAa3jCT3Re5cmOr4aEiehwWGNdg+pXH51NenxeYczWmzP IFKHesHa5es39OoGUCgdFjvhUsgempk6L1CMjbILYLVw/W83b2lPzpXp3iM/A1KCo+usnYdGydeO 5zQP8cT/l/Yy5dQwD+Af6XBrVODjJhpoxain6+PhEBCGmtbV0XF5NZ1g6+pyV8idyHZlyVen1R/D XOcXiwMAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a292f188433fc-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:51 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "521" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29999831" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 0s x-request-id: - req_9dabbecfc3374c36858af5911bf408f8 status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_pdf_reader_match_doc_details.yaml ================================================ interactions: - request: body: '{"messages":[{"role":"user","content":"Extract the title, authors, and doi as a JSON from this MLA citation. If any field can not be found, return it as null. Use title, authors, and doi as keys, author''s value should be a list of authors. Wellawatte et al, A Perspective on Explanations of Molecular Prediction Models, XAI Review, 2023\n\nCitation JSON:"}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "410" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41TwW7bMAy95ysEnZMhdhp07a3FduuADB06oHXgqDJtq5MlQaK7FkH+fZTtxN6W AbvIMB/5+Mgn7WeMcVXwa8ZlLVA2Ti8+3V59/Rbe9W36UFV3d0v7qDcP7v5Gh8d75PNYYZ9fQOKx 6oO0VAeorOlh6UEgRNbk8jJZr5dpsuqAxhagY1nlcHFhF+kyvVgkCX2HwtoqCYEynuiXsX13Romm gDcKL+fHSAMhiAoodkyioLc6RrgIQQUUppc7gNIaBNOp3u12L8GazOwzw1jGUaGGjJCM37AN+OBo PPUKzBr2+c1pYUScLjBbsi/UQ7ZaeLbxUCgZAQrSYCHj855PtFhbHyLjU8a/g9bip0AEBsiEzvh2 yCusijmm1Tozh8yQrqliD2UbhB4yJoAwxmIvKbbYDsjhtB1tK+ftc/ijlJfKqFDn5A+NHzcR0Dre oQc6t50L7W+L5UTUOMzR/oCu3cdVT8dH20dwdTWASAL1GE/SdH6GLi8AhdJhYiOXQtZQjKWj56It lJ0As8nQf6s5x90Prkz1P/QjICU4utC5Ozl+Ls1DfBX/SjstuRPMA/hXuus5KvDRiAJK0erhfYX3 gNDk5FYF3nnV39rS5elalmW6TsqUzw6zX64ViEW+AwAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a294289dfeb22-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:53 GMT Server: - cloudflare Set-Cookie: - __cf_bm=2lpP8Y8Joi_n7YAK6SIT.0JZW1sETqEbujCkJRRVf.g-1771550213.5286083-1.0.1.1-bM0MIqXARmZRNoxHVM7idUtqa7GPMkrrgRjZ4Hll9rcp1lusSN.9LnsK5mAdOo912iZIxxU_8rCZXD1XgeIVGM7Vu1lvamlJWlECm5g6tsf.qNLwcdKBK9oveaBZ1Dad; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:46:53 GMT Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "346" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29999919" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 0s x-request-id: - req_ede57d1411d44fc8af780b378c304357 status: code: 200 message: OK - request: body: null headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example@papercrow.ai&query.title=A+Perspective+on+Explanations+of+Molecular+Prediction+Models&rows=1&query.author=Wellawatte+et+al&select=DOI,author,container-title,is-referenced-by-count,title response: body: string: !!binary | H4sIAAAAAAAA/9VUy27bMBD8FYFn0VYUx0V0M+oizaGw4aDoIc6BEVfWwhSpkCs/YOjfuxScOu4f WIAgaHc5OzMg5iQCKeqCKITbilQ0EILagKRjC1zbO7+VBgN9ae3AB3SWu3ejbJRdOqI4iUqVQIx2 6lNBjpSRHkJnYinPH6aPqUCChv9eT2K+eI4g2SifTu4n63FZQ+MPuJN5lufyo9plOYOrjmrnhwMb 3EHc+wTQYLIccbdSDZoj1/6AMWqviICrAT46sGVUUKEf2KuqQoOKBuaMhfrfR9REbSjW4/XYOz9y frMeM4Mt1fs8MkD9acdqsYpQIYAn0PI9Lm67dzaoBi/6t1RY1cTB3xYHm+iYuCpZOZYWiEdS0RoV eb3GEcZIXth+COKtf+vTi8KfQCqZXQl8UlbXeC1OaY1RkTI3p3AWmX/V9wKhVtrfvsLF6vvz/IqR 8yXqMyd+JL+5nE4n3+T94/ThfMfBEpYqUhrGRVEpEyC9GGa1h30yv771Nf5/4W/NMT6OgVOiAh8V RHxZus6SKO44Q5DMcHCWLBm6hZJ4R+Js8uPAoHaQFuK6X85A2Rnlk6UHjWVscFGDGfacg0e24GU7 hBWjs2n+GGOLQ9CTRKvhIIos+ql8WUsmH7PKdsb0ff8X8ucNESwFAAA= headers: Access-Control-Allow-Headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Link Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "497" Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:16:54 GMT Server: - Jetty(9.4.40.v20210413) Vary: - Accept-Encoding permissions-policy: - interest-cohort=() x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"image_url\",\"image_url\":{\"url\":\"data:image/png;base64,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\"}},{\"type\":\"text\",\"text\":\"You are analyzing an image, formula, or table from a scientific document. Provide a detailed description that will be used to answer questions about its content. Focus on key elements, data, relationships, variables, and scientific insights visible in the image. It's especially important to document referential information such as figure/table numbers, labels, plot colors, or legends.\\n\\nText co-located with the media may be associated with other media or unrelated content, so do not just blindly quote referential information. The smaller the image, the more likely co-located text is unrelated. To restate, often the co-located text is several pages of content, so only use aspects relevant to accompanying image, formula, or table.\\n\\nHere's a few failure modes with possible resolutions:\\n- The media was a logo or icon, so the text is unrelated. In this case, briefly describe the media as a logo or icon, and do not mention other unrelated surrounding text.\\n- The media was display type, so the text is probably unrelated. The display type can be spread over several lines. In this case, briefly describe the media as display type, and do not mention other unrelated surrounding text.\\n- The media is a margin box or design element, so the text is unrelated. In this case, briefly describe the media as decorative, and do not mention other unrelated surrounding text.\\n- The media came from a bad PDF read, so it's garbled. In this case, describe the media as garbled, state why it's considered garbled, and do not mention other unrelated surrounding text.\\n- The media is a subfigure or a subtable. In this case, make sure to only detail the subfigure or subtable, not the entire figure or table. Do not mention other unrelated surrounding text.\\n\\nIMPORTANT: Start your response with exactly one of these labels:\\n- 'RELEVANT:' if the media contains scientific content (e.g. figures, charts, tables, equations, diagrams, data visualizations) that could help answer scientific questions, or if you're unsure of relevance (e.g. garbled/corrupted content).\\n- 'IRRELEVANT:' if the media content is not useful for scientific question-answer (e.g. journal logo, icon, display type/typography, decorative element, design element, margin box, is blank).\\n\\nAfter the label, provide your description.\\n\\nHere is the co-located text from a radius of 1 page:\\n\\nFigure 2: Descriptor explanations along with natural language explanation obtained for BBB\\npermeability of Alprozolam molecule. The green and red bars show descriptors that influ-\\nence predictions positively and negatively, respectively. Dotted yellow lines show significance\\nthreshold (\u03B1 = 0.05) for the t-statistic. Molecular descriptors show molecule-level proper-\\nties that are important for the prediction. ECFP and MACCS descriptors indicate which\\nsubstructures influence model predictions. MACCS explanations lead to text explanations\\nas shown. Republished from Ref.10 with permission from authors. SMARTS annotations for\\nMACCS descriptors were created using SMARTSviewer (smartsview.zbh.uni-hamburg.de,\\nCopyright: ZBH, Center for Bioinformatics Hamburg) developed by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n 17\\n\\ndiction. For example, we see that adding acidic and basic groups as well as hydrogen bond\\n\\nacceptors, increases solubility. Substructure importance from ECFP97 and MACCS138 de-\\n\\nscriptors indicate that adding heteroatoms increases solubility, while adding rings structures\\n\\nmakes the molecule less soluble. Although these are established hypotheses, it is interesting\\n\\nto see they can be derived purely from the data via DL and XAI.\\n\\n\\n\\n\\n\\nFigure 3: Generated chemical space for solubility prediction using the RNN model. The\\nchemical space is a 2D projection of the pairwise Tanimoto similarities of the local coun-\\nterfactuals. Each data point is colored by solubility. Top 4 counterfactuals are shown here.\\nRepublished from Ref.9 with permission from the Royal Society of Chemistry.\\n\\n\\n\\nGeneralizing XAI \u2013 interpreting scent-structure relationships\\n\\n\\nIn this example, we show how non-local structure-property relationships can be learned with\\n\\nXAI across multiple molecules. Molecular scent prediction is a multi-label classification task\\n\\nbecause a molecule can be described by more than one scent. For example, the molecule\\n\\njasmone can be described as having \u2018jasmine,\u2019 \u2018woody,\u2019 \u2018floral,\u2019 and \u2019herbal\u2019 scents.139 The\\n\\nscent-structure relationship is not very well understood,140 although some relationships are\\n\\nknown. For example, molecules with an ester functional group are often associated with\\n\\n\\n \ 18\\n\\nFigure 4: Descriptor explanations for solubility prediction model. The green and red bars\\nshow descriptors that influence predictions positively and negatively, respectively. Dotted\\nyellow lines show significance threshold (\u03B1 = 0.05) for the t-statistic. The MACCS and\\nECFP descriptors indicate which substructures influence model predictions. MACCS sub-\\nstructures may either be present in the molecule as is or may represent a modification. ECFP\\nfingerprints are substructures in the molecule that affect the prediction. MACCS descriptor\\nare used to obtain text explanations as shown. Republished from Ref.10 with permission from\\nauthors. SMARTS annotations for MACCS descriptors were created using SMARTSviewer\\n(smartsview.zbh.uni-hamburg.de, Copyright: ZBH, Center for Bioinformatics Hamburg) de-\\nveloped by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n 19\\n\\nLabel relevance, describe the media, and if uncertain on a description please state why:\"}]}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "48015" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41W32/bNhB+z19x0MuSwDZiN1naAHtI1gwY1qZbkq3A5sKgqZPEhSJVknLiFvnf d0dJlmI7wB7i2Lwf/O67j0d+PwBIVJpcQCILEWRZ6fH7q3d/fJbvyvzP26f132K5clarbPVZXInq UzLiCLv8F2XooibSUhwGZU1jlg5FQM46PT+fnp2dzKY/RkNpU9QclldhfGrHs5PZ6Xg6pf9tYGGV RE8e/9BPgO/xkyGaFJ9o+WTUrZTovciR1jonWiSkvJII75UPwoRk1BulNQFNRH17/eH6r8ub+wuY m7m5LxBUSclAeRDgpSI3lSkJK+VrodU3wbWBL+yjMjm5zN6DLLBUUmjwlZAIlbNMCbtl1oG3ul4q rcKaLJiqxlL7JjzSMAKtHlCvQRi4vbmBw1uUtXO0Ndxg7SjzDYZH6x6OJvAbrgE1lmT0oIzUdYoX DH06gePjnzsodxHKLdKWnlwj6uNjcqTyx8BllkIZqLQNXakiBHTNymOBDgGFLKCyimC4LpGPmDXh 0zgZZItuZKQwabWlQoGqFJA7kTKHnF8jHK5Ra/sIwZIF0fCXpa7xiKKoYF9ZkzIxtDzgbSXIxcPh B5vD7x+PRiC4dKKSpQXLNYSi3RaWwvHGvKAxCxNmZhaZsTX13GVCBuojXD9VWphIi+95+cXW1LAK ZWx5V2dTVqHyQtMfb/moQgHfrC0xHROLyngMfrRRBe2u3EAWwdW0q+NEJiXw3koVoStDCikjio7M ayY9Juy66xt0m741qKjOTd7JxuESvCoVGZk2T5wS5TjJJyOYJ3e95Sc4mbydzZOjjkZGTeC76JbQ F4x1bLBcqD3ssRQet9TQgNBiiXqYmwRFAU3e/QeCiqVR4Vk3DlLsfvA8EaymV7acmzfc3Ste/tgu 9/283G0mw4/wkDsRc84TDp8nhCH+5iNAzUS3ime0cXKY0ZkwspV6PNq7LPkI6ZQh3aJu5FWoaiCx D8qQDmgAGZoRuyV1dW6lHbXzh2aEVuahFVnZIX45gYbncitPVHJKA9GpZc0KFNJZ31QYY3sRRzm0 CqPMNN1NjnzuMjqMzMPePjYEnDEBd/3w/NV4Pjn+5QR6OVJTLCk8ODoYfntzmpKcp+GzU7RI46ig PjgKjb3KahNRUEjubF15Ejjph4h+FewGzfbBaQ7rIK5jgOb7SqUIX2u6VRSP1hVG369cTftbtRXT l7ajcdL/4He4ui9IkZnK6RxHbTY3Qe0bzSPPKeoyE7LJAjkabIja6S/haH39bvclXTBLBkeLhCM0 e9R0ozq+I9N+pIypygodle2GOmbB7aVyMrxe6azUXvDtbmqtBwZhjG3uonixf2ktz5urXNucNl76 rdAkU0b5YsFDgV4WdG37YKskWp/p80t8MtQvXgEJJSqrsAj2AeN209PZeZMw6V8pvfnN+WlrDYRR D+LenkxHe1IuUgxCaT94dySSpjemfWz/SBF1quzAcDAofBfPvtxN8STz/5O+N0iJFTV60fdqn5tD frO85rYhOgJO4miUuAgKHTcjxUzUunlhJX7tA5YL6ljOIlPNMyurFrMzmWWzs2k2Sw6eD/4D0ekN pG8KAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29571b660c60-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:01 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "4526" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: - "250000" x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-input-images: - "249999" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29997825" x-ratelimit-reset-input-images: - 0s x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 4ms x-request-id: - req_6fda08769c314a5fa2eb21320526dc3e status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"image_url\",\"image_url\":{\"url\":\"data:image/png;base64,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\"}},{\"type\":\"text\",\"text\":\"You are analyzing an image, formula, or table from a scientific document. Provide a detailed description that will be used to answer questions about its content. Focus on key elements, data, relationships, variables, and scientific insights visible in the image. It's especially important to document referential information such as figure/table numbers, labels, plot colors, or legends.\\n\\nText co-located with the media may be associated with other media or unrelated content, so do not just blindly quote referential information. The smaller the image, the more likely co-located text is unrelated. To restate, often the co-located text is several pages of content, so only use aspects relevant to accompanying image, formula, or table.\\n\\nHere's a few failure modes with possible resolutions:\\n- The media was a logo or icon, so the text is unrelated. In this case, briefly describe the media as a logo or icon, and do not mention other unrelated surrounding text.\\n- The media was display type, so the text is probably unrelated. The display type can be spread over several lines. In this case, briefly describe the media as display type, and do not mention other unrelated surrounding text.\\n- The media is a margin box or design element, so the text is unrelated. In this case, briefly describe the media as decorative, and do not mention other unrelated surrounding text.\\n- The media came from a bad PDF read, so it's garbled. In this case, describe the media as garbled, state why it's considered garbled, and do not mention other unrelated surrounding text.\\n- The media is a subfigure or a subtable. In this case, make sure to only detail the subfigure or subtable, not the entire figure or table. Do not mention other unrelated surrounding text.\\n\\nIMPORTANT: Start your response with exactly one of these labels:\\n- 'RELEVANT:' if the media contains scientific content (e.g. figures, charts, tables, equations, diagrams, data visualizations) that could help answer scientific questions, or if you're unsure of relevance (e.g. garbled/corrupted content).\\n- 'IRRELEVANT:' if the media content is not useful for scientific question-answer (e.g. journal logo, icon, display type/typography, decorative element, design element, margin box, is blank).\\n\\nAfter the label, provide your description.\\n\\nHere is the co-located text from a radius of 1 page:\\n\\ninterpret black-box models and connect the explanations to structure-property relationships.\\n\\nThe methods are \u201CMolecular Model Agnostic Counterfactual Explanations\u201D (MMACE)9\\n\\nand \u201CExplaining molecular properties with natural language\u201D.10 Then we demonstrate how\\n\\ncounterfactuals and descriptor explanations can propose structure-property relationships in\\n\\nthe domain of molecular scent.31\\n\\n\\nBlood-brain barrier permeation prediction\\n\\n\\nThe passive diffusion of drugs from the blood stream to the brain is a critical aspect in drug\\n\\ndevelopment and discovery.120 Small molecule blood-brain barrier (BBB) permeation is a\\n\\nclassification problem routinely assessed with DL models.121,122 To explain why DL models\\n\\nwork, we trained two models a random forest (RF) model123 and a Gated Recurrent Unit\\n\\nRecurrent Neural Network (GRU-RNN). Then we explained the RF model with generated\\n\\ncounterfactuals explanations using the MMACE9 and the GRU-RNN with descriptor expla-\\n\\nnations.10 Both the models were trained on the dataset developed by Martins et al. 124. The\\n\\nRF model was implemented in Scikit-learn125 using Mordred molecular descriptors126 as the\\n\\ninput features. The GRU-RNN model was implemented in Keras.127 See Wellawatte et al. 9\\n\\nand Gandhi and White 10 for more details.\\n\\n \ According to the counterfactuals of the instance molecule in figure 1, we observe that the\\n\\nmodifications to the carboxylic acid group enable the negative example molecule to permeate\\n\\nthe BBB. Experimental findings by Fischer et al. 120 show that the BBB permeation of\\n\\nmolecules are governed by hydrophobic interactions and surface area. The carboxylic group is\\n\\na hydrophilic functional group which hinders hydrophobic interactions and addition of atoms\\n\\nenhances the surface area. This proves the advantage of using counterfactual explanations,\\n\\nas they suggest actionable modification to the molecule to make it cross the BBB.\\n\\n In Figure 2 we show descriptor explanations generated for Alprozolam, a molecule that\\n\\npermeates the BBB, using the method described by Gandhi and White 10. We see that\\n\\npredicted permeability is positively correlated with the aromaticity of the molecule, while\\n\\n\\n 15\\n\\nnegatively correlated with the number of hydrogen bonds donors and acceptors. A similar\\n\\nstructure-property relationship for BBB permeability is proposed in more mechanistic stud-\\n\\nies.128\u2013130 The substructure attributions indicates a reduction in hydrogen bond donors and\\n\\nacceptors. These descriptor explanations are quantitative and interpretable by chemists.\\n\\nFinally, we can use a natural language model to summarize the findings into a written\\n\\nexplanation, as shown in the printed text in Figure 2.\\n\\n\\n\\n\\n\\nFigure 1: Counterfactuals of a molecule which cannot permeate the blood-brain barrier.\\nSimilarity is the Tanimoto similarity of ECFP4 fingerprints.131 Red indicates deletions and\\ngreen indicates substitutions and addition of atoms. Republished from Ref.9 with permission\\nfrom the Royal Society of Chemistry.\\n\\n\\n\\nSolubility prediction\\n\\n\\nSmall molecule solubility prediction is a classic cheminformatics regression challenge and is\\n\\nimportant for chemical process design, drug design and crystallization.133\u2013136 In our previous\\n\\nworks,9,10 we implemented and trained an RNN model in Keras to predict solubilities (log\\n\\nmolarity) of small molecules.127 The AqSolDB curated database137 was used to train the\\n\\nRNN model.\\n\\n In this task, counterfactuals are based on equation 6. Figure 3 illustrates the generated\\n\\nlocal chemical space and the top four counterfactuals. Based on the counterfactuals, we ob-\\n\\nserve that the modifications to the ester group and other heteroatoms play an important role\\n\\nin solubility. These findings align with known experimental and basic chemical intuition.134\\n\\nFigure 4 shows a quantitative measurement of how substructures are contributing to the pre-\\n\\n\\n\\n 16\\n\\nFigure 2: Descriptor explanations along with natural language explanation obtained for BBB\\npermeability of Alprozolam molecule. The green and red bars show descriptors that influ-\\nence predictions positively and negatively, respectively. Dotted yellow lines show significance\\nthreshold (\u03B1 = 0.05) for the t-statistic. Molecular descriptors show molecule-level proper-\\nties that are important for the prediction. ECFP and MACCS descriptors indicate which\\nsubstructures influence model predictions. MACCS explanations lead to text explanations\\nas shown. Republished from Ref.10 with permission from authors. SMARTS annotations for\\nMACCS descriptors were created using SMARTSviewer (smartsview.zbh.uni-hamburg.de,\\nCopyright: ZBH, Center for Bioinformatics Hamburg) developed by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n \ 17\\n\\nLabel relevance, describe the media, and if uncertain on a description please state why:\"}]}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "24132" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/51W227jNhB9z1cM9GQHjmE7F7cB+pCkaQt0d9HuBi3QZmHQ1EhiQ5Eqh0piLPLv naFiW3GcYtsXJyKHczlz5vLlACAzeXYOma5U1HVjj76//PbX3/8IZ+UFzpfL1Snl9fXf7cX9RXP1 M2YjeeGXf6GO61dj7fkdRuNdd60DqoiidTqfT09PJ7PpWbqofY5WnpVNPDrxR7PJ7ORoOuW/zw8r bzQSS/zJnwBf0q+46HJ85OPJaH1SI5Eqkc/WQnwYvJWTTBEZisrFbLS91N5FdMnrw8OP1++uf7v4 cHN+eAi37tbdVAimZoVgrG0pBg6AQAFhMPyPL6Bm3bq1KgDftjq2QQRcDrFCE0D7wAeNd7lxJX+1 bCwUiuWUBXxsrHJKECIofGDF2oqThdHpFKKiuxFYc4d2BQGt4AfRQxMwNzqKTsUfvsEQV0CtrkAR LK33+dEyKONgqQK7GmBweXk5BJarMakeg8R2hytAizUDQMDScROvCiiqCm+tf6BzAWM6hsPDS0UI 77ugEQbvsIi1pwif1tEPGbtbx8geJQtLka/X8oaAKv/g4MHEKrnexcGhEkOFcHs7gGLwOITvYDKe TCZ8MByxZ3lChMM1EXLPEDsfoUaMyeUcybCmLRIDHJfjEXDMvZCH455fe/LGZrRt85RgrcLSP66s 0aC0yaEMvm1SXj0bDFC0LrnNWUxXNBaEZoLQ1cskr7EiGNxUAXGLFEkmxf2PpqxiD7drxXnc4Uof QsVfOZOEI77HQIIeMzHuoj3qUOZadCUbq9iKFUv8jFMteA247lKB0jDFVrJ/DgYqz01HSuYktUuK JradWB/Clx7SM2XIa5No+hUpnu5NMQeyeju3fQ9ulDO1ZxTJ1IZzaST1ggGnycH11Q+/nEDBKjE0 wTDFh7DE+CAxvgIrxY97gGe82fS9yTE/T6bF+E6Op+fwaeuBUPebyVuys1ey8/lbssevZafCs2Ph 2U+9fL5PfOiaBm2J9NrNi5T3DRXWsAsXE9YdHYRO3OQa1KIVVPS1UCExfbxfN4f1Y2LPRjdtlCfd a1Ilqj74pJQ2WukNtcf/Ra2CapUHKdtevSrXVexuELfuRFD8pA03vxTmlUyCx/iyf+2SnNqSiylu ukYqzR747JSK8soynZxa2s7NDc2YrEwyg/f4fztXj+upoHqAcGvlCeJJpkXc4zwLY712aV+v4F7P UPUtdOFKWdZSvGRKl4J1LyB47jHjbmZyyTwPTTFp8V6kZb61PK+DTOA0DZO3/zIR2QiULRceI5Z6 rXi+A7bfP4C5v+kKa+PYas2ymtIopXF/8gcsWlKyeLjW2t6FcsyZzoLsHJ+fb542W4b1JSdsSTtP M+41hqoF7znESw9vFBR9k6XbJ/79nLaZ9sWCkrGiuomL6O8wmZvOz047hdl2gdpenxzPn28j+2i3 FzPemkZ7VC5yjMpY6q1EmWYKYr59u92fVJsb37s46AX+2p99urvgOb9fo357oTU23MkW23GxTyyg bJhviW2ATg5nvKTd8964iLz/SDJyLFRru+UvoxVFrBe96SAiRbOYneqimJ1Oi1l28HTwDyQvmk0K CwAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a2956daefeb22-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:02 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "5988" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: - "250000" x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-input-images: - "249999" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29997418" x-ratelimit-reset-input-images: - 0s x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 5ms x-request-id: - req_5e6ca6507b5542e881299d3f1c92b33d status: code: 200 message: OK - request: body: "{\"input\":[\" A Perspective on Explanations of Molecular\\n\\n Prediction Models\\n\\n\\nGeemi P. Wellawatte,\u2020 Heta A. Gandhi,\u2021 Aditi Seshadri,\u2021 and Andrew\\n\\n D. White\u2217,\u2021\\n\\n\\n \u2020Department of Chemistry, University of Rochester, Rochester, NY, 14627\\n\\n\u2021Department of Chemical Engineering, University of Rochester, Rochester, NY, 14627\\n\\n \ \xB6Vial Health Technology, Inc., San Francisco, CA 94111\\n\\n\\n \ E-mail: andrew.white@rochester.edu\\n\\n\\n\\n Abstract\\n\\n\\n \ Chemists can be skeptical in using deep learning (DL) in decision making, due to\\n\\n the lack of interpretability in \u201Cblack-box\u201D models. \ Explainable artificial intelligence\\n\\n (XAI) is a branch of AI which addresses this drawback by providing tools to interpret\\n\\n DL models and their predictions. We review the principles of XAI in the domain of\\n\\n chemistry and emerging methods for creating and evaluating explanations. Then we\\n\\n \ focus on methods developed by our group and their applications in predicting solubil-\\n\\n ity, blood-brain barrier permeability, and the scent of molecules. We show that XAI\\n\\n methods like chemical counterfactuals and descriptor explanations can explain DL pre-\\n\\n dictions while giving insight into structure-property relationships. Finally, we discuss\\n\\n how a two-step process of developing a black-box model and explaining predictions can\\n\\n \ uncover structure-property relationships.\\n\\n\\n\\n\\n\\n 1Introduction\\n\\n\\nDeep learning (DL) is advancing the boundaries of computational chemistry because it can\\n\\naccurately model non-linear structure-function relationships.1\u20133 Applications of DL can be\\n\\nfound in a broad spectrum spanning from quantum computing4,5 to drug discovery6\u201310 to\\n\\nmaterials design.11,12 According to Kre 13, DL models can contribute to scientific discovery\\n\\nin three \u201Cdimensions\u201D - 1) as a \u2018computational microscope\u2019 to gain insight which are not\\n\\nattainable through experiments 2) as a \u2018resource of inspiration\u2019 to motivate scientific thinking\\n\\n3) as an \u2018agent of understanding\u2019 to uncover new observations. However, the rationale of\\n\\na DL prediction is not always apparent due to the model architecture consisting a large\\n\\nparameter count.14,15 DL models are thus often termed\u201Cblack box\u201D models. We can only\\n\\nreason about the input and output of an DL model, not the underlying cause that leads to\\n\\na specific prediction.\\n\\n It is routine in chemistry now for DL to exceed human level performance \u2014 humans are\\n\\nnot good at predicting solubility from structure for example161 \u2014 and so understanding how\\n\\na model makes predictions can guide hypotheses. This is in contrast to a topic like finding\\n\\na stop sign in an image, where there is little new to be learned about visual perception\\n\\nby explaining a DL model. However, the black box nature of DL has its own limitations.\\n\\nUsers are more likely to trust and use predictions from a model if they can understand why\\n\\nthe prediction was made.17 Explaining predictions can help developers of DL models ensure\\n\\nthe model is not learning spurious correlations.18,19 Two infamous examples are, 1)neural\\n\\nnetworks that learned to recognize horses by looking for a photographer\u2019s watermark20 and,\\n\\n2) neural networks that predicted a COVID-19 diagnoses by looking at the font choice\\n\\non medical images.21 As a result, there is an emerging regulatory framework for when any\\n\\ncomputer algorithms impact humans.22\u201324 Although we know of no examples yet in chemistry,\\n\\none can assume the use of AI in predicting toxicity, carcinogenicity, and environmental\\n\\npersistence will require rationale for the predictions due to regulatory consequences.\\n\\n \ 1there does happen to be one human solubility savant, participant 11, who matched machine performance\\n\\n\\n 2 \ EXplainable Artificial Intelligence (XAI) is a field of growing importance that aims to\\n\\nprovide model interpretations of DL predictions Three terms highly associated with XAI are,\\n\\ninterpretability, justifications and explainability. Miller 25 defines that interpretability of a\\n\\nmodel refers to the degree of human understandability intrinsic within the model. Murdoch\\n\\net al. 26 clarify that interpretability can be perceived as \u201Cknowledge\u201D which provide insight\\n\\nto a particular problem. Justifications are quantitative metrics tell the users \u201Cwhy the\\n\\nmodel should be trusted,\u201D like test error.27 Justifications are evidence which defend why a\\n\\nprediction is trustworthy.25 An \u201Cexplanation\u201D is a description on why a certain prediction was\\n\\nmade.9,28 Interpretability and explanation are often used interchangeably. Arrieta et al. 14\\n\\ndistinguish that interpretability is a passive characteristic of a model, whereas explainability\\n\\nis an active characteristic which is used to clarify the internal decision-making process.\\n\\nNamely, an explanation is extra information that gives the context and a cause for one or\\n\\nmore \",\" a passive characteristic of a model, whereas explainability\\n\\nis an active characteristic which is used to clarify the internal decision-making process.\\n\\nNamely, an explanation is extra information that gives the context and a cause for one or\\n\\nmore predictions.29 We adopt the same nomenclature in this perspective.\\n\\n Accuracy and interpretability are two attractive characteristics of DL models. However,\\n\\nDL models are often highly accurate and less interpretable.28,30 XAI provides a way to avoid\\n\\nthat trade-off in chemical property prediction. XAI can be viewed as a two-step process.\\n\\nFirst, we develop an accurate but uninterpretable DL model. Next, we add explanations to\\n\\npredictions. Ideally, if the DL model has correctly learned the input-output relations, then\\n\\nthe explanations should give insight into the underlying mechanism.\\n\\n In the remainder of this article, we review recent approaches for XAI of chemical property\\n\\nprediction while drawing specific examples from our recent XAI work.9,10,31 We show how\\n\\nin various systems these methods yield explanations that are consistent with known and\\n\\nmechanisms in structure-property relationships.\\n\\n\\n\\n\\n\\n 3Theory\\n\\n\\nIn this work, we aim to assemble a common taxonomy for the landscape of XAI while\\n\\nproviding our perspectives. We utilized the vocabulary proposed by Das and Rad 32 to classify\\n\\nXAI. According to their classification, interpretations can be categorized as global or local\\n\\ninterpretations on the basis of \u201Cwhat is being explained?\u201D. For example, counterfactuals are\\n\\nlocal interpretations, as these can explain only a given instance. The second classification is\\n\\nbased on the relation between the model and the interpretation \u2013 is interpretability post-hoc\\n\\n(extrinsic) or intrinsic to the model?.32,33 An intrinsic XAI method is part of the model\\n\\nand is self-explanatory32 These are also referred to as white-box models to contrast them\\n\\nwith non-interpretable black box models.28 An extrinsic method is one that can be applied\\n\\npost-training to any model.33 Post-hoc methods found in the literature focus on interpreting\\n\\nmodels through 1) training data34 and feature attribution,35 2) surrogate models10 and, 3)\\n\\ncounterfactual9 or contrastive explanations.36\\n\\n Often, what is a \u201Cgood\u201D explanation and what are the required components of an ex-\\n\\nplanation are debated.32,37,38 Palacio et al. 29 state that the lack of a standard framework\\n\\nhas caused the inability to evaluate the interpretability of a model. In physical sciences,\\n\\nwe may instead consider if the explanations somehow reflect and expand our understanding\\n\\nof physical phenomena. For example, Oviedo et al. 39 propose that a model explanation\\n\\ncan be evaluated by considering its agreement with physical observations, which they term\\n\\n\u201Ccorrectness.\u201D For example, if an explanation suggests that polarity affects solubility of a\\n\\nmolecule, and the experimental evidence strengthen the hypothesis, then the explanation\\n\\nis assumed \u201Ccorrect\u201D. In instances where such mechanistic knowledge is sparse, expert bi-\\n\\nases and subjectivity can be used to measure the correctness.40 Other similar metrics of\\n\\ncorrectness such as \u201Cexplanation satisfaction scale\u201D can be found in the literature.41,42 In a\\n\\nrecent study, Humer et al. 43 introduced CIME an interactive web-based tool that allows the\\n\\nusers to inspect model explanations. The aim of this study is to bridge the gap between\\n\\nanalysis of XAI methods. Based on the above discussion, we identify that an agreed upon\\n\\n\\n \ 4evaluation metric is necessary in XAI. We suggest the following attributes can be used to\\n\\nevaluate explanations. However, the relative importance of each attribute may depend on\\n\\nthe application - actionability may not be as important as faithfulness when evaluating the\\n\\ninterpretability of a static physics based model. Therefore, one can select relative importance\\n\\nof each attribute based on the application.\\n\\n\\n \u2022 Actionable. Is it clear how we could change the input features to modify the output?\\n\\n\\n \ \u2022 Complete. Does the explanation completely account for the prediction? Did features\\n\\n not included in the explanation really contribute zero effect to the prediction?44\\n\\n\\n \u2022 Correct. Does the explanation agree with hypothesized or known underlying physical\\n\\n mechanism?39\\n\\n\\n \ \u2022 Domain Applicable. Does the explanation use language and concepts of domain ex-\\n\\n perts?\\n\\n\\n \u2022 Fidelity/Faithful. Does the explanation agree with the black box model?\\n\\n\\n \u2022 Robust. Does the explanation change significantly with small changes to the model or\\n\\n instance being explained?\\n\\n\\n \u2022 Sparse/Succinct. Is the explanation succinct?\\n\\n\\n \ We present an example evaluation of the SHAP explanation method based on the above\\n\\nattributes.44 Shapley values were proposed as a local explanation method based on feature\\n\\nattribution, as they offer a complete explanation - each feature i\",\"nct?\\n\\n\\n We present an example evaluation of the SHAP explanation method based on the above\\n\\nattributes.44 Shapley values were proposed as a local explanation method based on feature\\n\\nattribution, as they offer a complete explanation - each feature is assigned a fraction of\\n\\nthe prediction value.44,45 Completeness is a clearly measurable and well-defined metric, but\\n\\nyields explanations with many components. Yet Shapley values are not actionable nor sparse.\\n\\nThey are non-sparse as every feature has a non-zero attribution and not-actionable because\\n\\nthey do not provide a set of features which changes the outcome.46 Ribeiro et al. 35 proposed\\n\\na surrogate model method that aims to provide sparse/succinct explanations that have high\\n\\n\\n 5fidelity to the original model. In Wellawatte et al. 9 we argue that counterfactuals are \u201Cbet-\\n\\nter\u201D explanations because they are actionable and sparse. We highlight that, evaluation of\\n\\nexplanations is a difficult task because explanations are fundamentally for and by humans.\\n\\nTherefore, these evaluations are subjective, as they depend on \u201Ccomplex human factors and\\n\\napplication scenarios.\u201D37\\n\\n\\nSelf-explaining models\\n\\nA self-explanatory model is one that is intrinsically interpretable to an expert.47 Two com-\\n\\nmon examples found in the literature are linear regression models and decision trees (DT).\\n\\nIntrinsic models can be found in other XAI applications acting as surrogate models (proxy\\n\\nmodels) due to their transparent nature.48,49 A linear model is described by the equation\\n\\n1 where, W\u2019s are the weight parameters and x\u2019s are the input features associated with the\\n\\nprediction \u02C6y. Therefore, we observe that the weights can be used to derive a complete expla-\\n\\nnation of the model - trained weights quantify the importance of each feature.47 DT models\\n\\nare another type of self-explaining models which have been used in classification and high-\\n\\nthroughput screening tasks. Gajewicz et al. 50 used DT models to classify nanomaterials\\n\\nthat identify structural features responsible for surface activity. In another study by Han\\n\\net al. 51, a DT model was developed to filter compounds by their bioactivity based on the\\n\\nchemical fingerprints.\\n\\n\\n\\n \u02C6y = \u03A3iWixi (1)\\n\\n\\n Regularization techniques such as EXPO52 and RRR53 are designed to enhance the black-\\n\\nbox model interpretability.54 Although one can argue that \u201Csimplicity\u201D of models are posi-\\n\\ntively correlated with interpretability, this is based on how the interpretability is evaluated.\\n\\nFor example, Lipton 55 argue that, from the notion of \u201Csimulatability\u201D (the degree to which a\\n\\nhuman can predict the outcome based on inputs), self-explanatory linear models, rule-based\\n\\n\\n\\n \ 6systems, and DT\u2019s can be claimed uninterpretable. A human can predict the outcome given\\n\\nthe inputs only if the input features are interpretable. Therefore, a linear model which takes\\n\\nin non-descriptive inputs may not be as transparent. On the other hand, a linear model\\n\\nis not innately accurate as they fail to capture non-linear relationships in data, limiting is\\n\\napplicability. Similarly, a DT is a rule-based model and lacks physics informed knowledge.\\n\\nTherefore, an existing drawback is the trade-offbetween the degree of understandability and\\n\\nthe accuracy of a model. For example, an intrinsic model (linear regression or decision trees)\\n\\ncan be described through the trainable parameters, but it may fail to \u201Ccorrectly\u201D capture\\n\\nnon-linear relations in the data.\\n\\n\\nAttribution methods\\n\\n\\nFeature attribution methods explain black box predictions by assigning each input feature\\n\\na numerical value, which indicates its importance or contribution to the prediction. Feature\\n\\nattributions provide local explanations, but can be averaged or combined to explain multi-\\n\\nple instances. Atom-based numerical assignments are commonly referred to as heatmaps.56\\n\\nSheridan 57 describes an atom-wise attribution method for interpreting QSAR models. Re-\\n\\ncently, Rasmussen et al. 58 showed that Crippen logP models serve as a benchmark for\\n\\nheatmap approaches. Other most widely used feature attribution approaches in the litera-\\n\\nture are gradient based methods,59,60 Shapley Additive exPlanations (SHAP),44 and layer-\\n\\nwise relevance prorogation.61\\n\\n Gradient based approaches are based on the hypothesis that gradients for neural net-\\n\\nworks are analogous to coefficients for regression models.62 Class activation maps (CAM),63\\n\\ngradCAM,64 smoothGrad,,65 and integrated gradients62 are examples of this method. The\\n\\nmain idea behind feature attributions with gradients can be represented with equation \ 2.\\n\\n \u2206\u02C6f(\u20D7x) \u2248\u2202\u02C6f(\u20D7x) \ (2)\\n \u2206xi \ \u2202xi\\n\\n\\n\\n 7 \",\"represented with equation 2.\\n\\n \u2206\u02C6f(\u20D7x) \u2248\u2202\u02C6f(\u20D7x) (2)\\n \u2206xi \ \u2202xi\\n\\n\\n\\n 7 \u2206\u02C6f(\u20D7x) \ where \u02C6f(x) is the black-box model and are used as our attributions. The left- \u2206xi\\n\\nhand side of equation 2 says that we attribute each input feature xi by how much one unit\\n\\nchange in it would affect the output of \u02C6f(x). If \u02C6f(x) is a linear surrogate model, then this\\n\\nmethod reconciles with LIME.35 In DL models, \u2207xf(x), suffers from the shattered gradients\\n\\nproblem.62 This means directly computing the quantity leads to numeric problems. The\\n\\ndifferent gradient based approaches are mostly distinguishable based on how the gradient is\\n\\napproximated.\\n\\n Gradient based explanations have been widely used to interpret chemistry predictions.60,66\u201370\\n\\nMcCloskey et al. 60 used graph convolutional networks (GCNs) to predict protein-ligand\\n\\nbinding and explained the binding logic for these predictions using integrated gradients.\\n\\nPope et al. 66 and Jim\xB4enez-Luna et al. 67 show application of gradCAM and integrated gradi-\\n\\nents to explain molecular property predictions from trained graph neural networks (GNNs).\\n\\nSanchez-Lengeling et al. 68 present comprehensive, open-source XAI benchmarks to explain\\n\\nGNNs and other graph based models. They compare the performance of class activation\\n\\nmaps (CAM),63 gradCAM,64 smoothGrad,,65 integrated gradients62 and attention mecha-\\n\\nnisms for explaining outcomes of classification as well as regression tasks. They concluded\\n\\nthat CAM and integrated gradients perform well for graph based models. Another attempt\\n\\nat creating XAI benchmarks for graph models was made by Rao et al. 70. They compared\\n\\nthese gradient based methods to find subgraph importance when predicting activity cliffs\\n\\nand concluded that gradCAM and integrated gradients provided the most interpretability\\n\\nfor GNNs. The GNNExplainer69 is an approach for generating explanations (local and\\n\\nglobal) for graph based models. This method focuses on identifying which sub-graphs con-\\n\\ntribute most to the prediction by maximizing mutual information between the prediction\\n\\nand distribution of all possible sub-graphs. Ying et al. 69 show that GNNExplainer can be\\n\\nused to obtain model-agnostic explanations. SubgraphX is a similar method that explains\\n\\nGNN predictions by identifying important subgraphs.71\\n\\n \ Another set of approaches like DeepLIFT72 and Layerwise Relevance backPropagation73\\n\\n\\n\\n \ 8(LRP) are based on backpropagation of the prediction scores through each layer of the neu-\\n\\nral network. The specific backpropagation logic across various activation functions differs\\n\\nin these approaches, which means each layer must have its own implementation. Baldas-\\n\\nsarre and Azizpour 74 showed application of LRP to explain aqueous solubility prediction for\\n\\nmolecules.\\n\\n SHAP is a model-agnostic feature attribution method that is inspired from the game\\n\\ntheory concept of Shapley values.44,46 SHAP has been popularly used in explaining molecular\\n\\nprediction models.75\u201378 It\u2019s an additive feature contribution approach, which assumes that\\n\\nan explanation model is a linear combination of binary variables z. If the Shapley value\\nfor the ith feature is \u03D5i, then the explanation is \u02C6f(\u20D7x) = Pi \u03D5i(\u20D7x)zi(\u20D7x). Shapley values for\\n\\nfeatures are computed using Equation 3.79,80\\n\\n\\n\\n M\\n 1\\n \ \u03D5i(\u20D7x) = X \u02C6f (\u20D7z+i) \u2212\u02C6f (\u20D7z\u2212i) (3)\\n M\\n\\n \ Here \u20D7z is a fabricated example created from the original \u20D7x and a random perturbation \u20D7x\u2032.\\n\\n\u20D7z+i has the feature i from \u20D7x and \u20D7z\u2212i has the ith feature from \u20D7x\u2032. Some care should be taken\\n\\nin constructing \u20D7z when working with molecular descriptors to ensure that an impossible \u20D7z is\\n\\nnot sampled (e.g., high count of acid groups but no hydrogen bond donors). M is the sample\\n\\nsize of perturbations around \u20D7x. Shapley value computation is expensive, hence M is chosen\\n\\naccordingly. Equation 3 is an approximation and gives contributions with an expectation\\nterm as \u03D50 + Pi=1 \u03D5i(\u20D7x) = \u02C6f(\u20D7x).\\n\\n Visualization based feature attribution has also been used for molecular data. In com-\\n\\nputer science, saliency maps are a way to measure spatial feature contribution.81 Simply put,\\n\\nsaliency maps draw a connection between the model\u2019s neural fingerprint components (trained\\n\\nweights) and input features. Weber et al. 82 used saliency maps to build an explainable GCN\\n\\narchitecture that gives subgraph importance for small molecule activity prediction. On the\\n\\nother hand, similarity maps compare model predictions for two or more molecules based on\\n\\ntheir chemical fingerprints.83 Similarity maps provide atomic weights or predicte\",\"that gives subgraph importance for small molecule activity prediction. On the\\n\\nother hand, similarity maps compare model predictions for two or more molecules based on\\n\\ntheir chemical fingerprints.83 Similarity maps provide atomic weights or predicted probabil-\\n\\n\\n 9ity difference between the molecules by removing one atom at a time. These weights can\\n\\nthen be used to color the molecular graph and give a visual presentation. ChemInformatics\\n\\nModel Explorer (CIME) is an interactive web based toolkit which allows visualization and\\n\\ncomparison of different explanation methods for molecular property prediction models.84\\n\\n\\nSurrogate models\\n\\n\\nOne approach to explain black box predictions is to fit a self-explaining or interpretable\\n\\nmodel to the black box model, in the vicinity of one or a few specific examples. These are\\n\\nknown as surrogate models. Generally, one model per explanation is trained. However, if we\\n\\ncould find one surrogate model that explained the whole DL model, then we would simply\\n\\nhave a globally accurate interpretable model. This means that the black-box model is no\\n\\nlonger needed.79 In the work by White 79, a weighted least squares linear model is used as\\n\\nthe surrogate model. This model provides natural language based descriptor explanations by\\n\\nreplacing input features with chemically interpretable descriptors. This approach is similar\\n\\nto the concept-based explanations approach used by McGrath et al. 85, where human under-\\n\\nstandable concepts were used in place of input features in acquisition of chess knowledge in\\n\\nAlphaZero. Any of the self-explaining models detailed in the Self-explaining models section\\n\\ncan be used as a surrogate model.\\n\\n The most commonly used surrogate model based method is Locally Interpretable Model\\n\\nExplanations (LIME).35 LIME creates perturbations around the example of interest and fits\\n\\nan interpretable model to these local perturbations. Ribeiro et al. 35 mathematically define\\n\\nan explanation \u03BE for an example \u20D7x using Equation 4.\\n\\n\\n\\n \u03BE(\u20D7x) = arg min L(f, g, \u03C0x) + \u2126(g) (4)\\n g\u2208G\\n\\n \ Here f is the black box model and g \u2208G is the interpretable explanation model. G is\\n\\na class of potential interpretable models (e.g.: linear models). \u03C0x is a similarity measure\\n\\n\\n\\n 10between original input \u20D7x and it\u2019s perturbed input \u20D7x\u2032. In context of molecular data, this can\\n\\nbe a chemical similarity metric like Tanimoto86 similarity between fingerprints. The goal for\\n\\nLIME is to minimize the loss, L, such that f is closely approximated by g. \u2126is a parameter\\n\\nthat controls the complexity (sparsity) of g. Ribeiro et al. 35 termed the agreement (how low\\n\\nthe loss is) between f and g as the \u201Cfidelity\u201D.\\n\\n \ GraphLIME87 and LIMEtree88 are modifications to LIME as applicable to graph neural\\n\\nnetworks and regression trees, respectively. LIME has been used in chemistry previously,\\n\\nsuch as Whitmore et al. 89 who used LIME to explain octane number predictions of molecules\\n\\nfrom a random forest classifier. Mehdi and Tiwary 90 used LIME to explain thermodynamic\\n\\ncontributions of features. Gandhi and White 10 use an approach similar to GraphLIME,\\n\\nbut use chemistry specific fragmentation and descriptors to explain molecular property pre-\\n\\ndiction. Some examples are highlighted in the Applications section. \ In recent work by\\n\\nMehdi and Tiwary 90, a thermodynamic-based surrogate model approach was used to inter-\\n\\npret black-box models. The authors define an \u201Cinterpretation free energy\u201D which can be\\n\\nachieved by minimizing the surrogate model\u2019s uncertainty and maximizing simplicity.\\n\\n\\nCounterfactual explanations\\n\\n\\nCounterfactual explanations can be found in many fields such as statistics, mathematics and\\n\\nphilosophy.91\u201394 According to Woodward and Hitchcock 92, a counterfactual is an example\\n\\nwith minimum deviation from the initial instance but with a contrasting outcome. They\\n\\ncan be used to answer the question, \u201Cwhich smallest change could alter the outcome of an\\n\\ninstance of interest?\u201D While the difference between the two instances is based on the exis-\\n\\ntence of similar worlds in philosophy,95 a distance metric based on molecular similarity is\\n\\nemployed in XAI for chemistry. For example, in the work by Wellawatte et al. 9 distance\\n\\nbetween two molecules is defined as the Tanimoto distance96 between ECFP4 fingerprints.97\\n\\nAdditionally, Mohapatra et al. 98 introduced a chemistry-informed graph representation for\\n\\ncomputing macromolecular similarity. Contrastive explanations are peripheral to counterfac-\\n\\n\\n \ 11tual explanations. Unlike the counterfactual approach, contrastive approach employ a dual\\n\\noptimization method, which works by generating a similar and a dissimilar (counterfactuals)\\n\\nexample. Contrastive explanations can interpret the model by identifying contribution of\\n\\npresence \",\"nterfactual approach, contrastive approach employ a dual\\n\\noptimization method, which works by generating a similar and a dissimilar (counterfactuals)\\n\\nexample. Contrastive explanations can interpret the model by identifying contribution of\\n\\npresence and absence of subsets of features towards a certain prediction.36,99\\n\\n \ A counterfactual x\u2032 of an instance x is one with a dissimilar prediction \u02C6f(x) in classi-\\n\\nfication tasks. As shown in equation 5, counterfactual generation can be thought of as a\\n\\nconstrained optimization problem which minimizes the vector distance d(x, x\u2032) between the\\n\\nfeatures.9,100\\n\\n\\n \ minimize d(x, x\u2032)\\n (5)\\n \ such that \u02C6f(x) \u0338= \u02C6f(x\u2032)\\n\\n \ For regression tasks, equation 6 adapted from equation 5 can be used. Here, a counter-\\n\\nfactual is one with a defined increase or decrease in the prediction.\\n\\n\\n \ minimize d(x, x\u2032)\\n (6)\\n \ such that \u02C6f(x) \u2212\u02C6f(x\u2032) \u2265\u2206\\n\\n \ Counterfactuals explanations have become a useful tool for XAI in chemistry, as they\\n\\nprovide intuitive understanding of predictions and are able to uncover spurious relationships\\n\\nin training data.101 Counterfactuals create local (instance-level), actionable explanations.\\n\\nActionability of an explanation suggest which features can be altered to change the outcome.\\n\\nFor example, changing a hydrophobic functional group in a molecule to a hydrophilic group\\n\\nto increase solubility.\\n\\n Counterfactual generation is a demanding task as it requires gradient optimization over\\n\\ndiscrete features that represents a molecule. Recent work by Fu et al. 102 and Shen et al. 103\\n\\npresent two techniques which allow continuous gradient-based optimization. Although, these\\n\\nmethodologies are shown to circumvent the issue of discrete molecular optimization, counter-\\n\\nfactual explanation based model interpretation still remains unexplored compared to other\\n\\n\\n\\n 12post-hoc methods.\\n\\n \ CF-GNNExplainer104 is a counterfactual explanation generating method based on GN-\\n\\nNExplainer69 for graph data. This method generate counterfactuals by perturbing the input\\n\\ndata (removing edges in the graph), and keeping account of perturbations which lead to\\n\\nchanges in the output. However, this method is only applicable to graph-based models\\n\\nand can generate infeasible molecular structures. Another related work by Numeroso and\\n\\nBacciu 105 focus on generating counterfactual explanations for deep graph networks. Their\\n\\nmethod MEG (Molecular counterfactual Explanation Generator) uses a reinforcement learn-\\n\\ning based generator to create molecular counterfactuals (molecular graphs). While this\\n\\nmethod is able to generate counterfactuals through a multi-objective reinforcement learner,\\n\\nthis is not a universal approach and requires training the generator for each task.\\n\\n Work by Wellawatte et al. 9 present a model agnostic counterfactual generator MMACE\\n\\n(Molecular Model Agnostic Counterfactual Explanations) which does not require training\\n\\nor computing gradients. This method firstly populates a local chemical space through ran-\\n\\ndom string mutations of SELFIES106 molecular representations using the STONED algo-\\n\\nrithm.107 Next, the labels (predictions) of the molecules in the local space are generated\\n\\nusing the model that needs to be explained. Finally, the counterfactuals are identified and\\n\\nsorted by their similarities \u2013 Tanimoto distance96 between ECFP4 fingerprints.97 Unlike the\\n\\nCF-GNNExplainer104 and MEG105 methods, the MMACE algorithm ensures that generated\\n\\nmolecules are valid, owing to the surjective property of SELFIES. Additionally, the MMACE\\n\\nmethod can be applied to both regression and classification models. However, like most XAI\\n\\nmethods for molecular prediction, MMACE does not account for the chemical stability of\\n\\npredicted counterfactuals. To circumvent this drawback, Wellawatte et al. 9 propose an-\\n\\nother approach, which identift counterfactuals through a similarity search on the PubChem\\n\\ndatabase.108\\n\\n\\n\\n\\n\\n 13Similarity to adjacent fields\\n\\n\\nTangential examples to counterfactual explanations are adversarial training and matched\\n\\nmolecular pairs. Adversarial perturbations are used during training to deceive the model\\n\\nto expose the vulnerabilities of a model109,110 whereas counterfactuals are applied post-hoc.\\n\\nTherefore, the main difference between adversarial and counterfactual examples are in the\\n\\napplication, although both are derived from the same optimization problem.100 Grabocka\\n\\net al. 111 have developed a method named Adversarial Training on EXplanations (ATEX)\\n\\nwhich improves model robustness via exposure to adversarial examples. While there are\\n\\nconceptual disparities, we note that\",\"same optimization problem.100 Grabocka\\n\\net al. 111 have developed a method named Adversarial Training on EXplanations (ATEX)\\n\\nwhich improves model robustness via exposure to adversarial examples. While there are\\n\\nconceptual disparities, we note that the counterfactual and adversarial explanations are\\n\\nequivalent mathematical objects.\\n\\n Matched molecular pairs (MMPs) are pairs of molecules that differ structurally at only\\n\\none site by a known transformation.112,113 MMPs are widely used in drug discovery and\\n\\nmedicinal chemistry as these facilitate fast and easy understanding of structure-activity re-\\n\\nlationships.114\u2013116 Counterfactuals and MMP examples intersect if the structural change is\\n\\nassociated with a significant change in the properties. In the case the associated changes in\\n\\nthe properties are non-significant, the two molecules are known as bioisosteres.117,118 The con-\\n\\nnection between MMPs and adversarial training examples has been explored by van Tilborg\\n\\net al. 119. MMPs which belong to the counterfactual category are commonly used in outlier\\n\\nand activity cliff detection.113 This approach is analogous to counterfactual explanations,\\n\\nas the common objective is to uncover learned knowledge pertaining to structure-property\\n\\nrelationships.70\\n\\n\\nApplications\\n\\n\\nModel interpretation is certainly not new and a common step in ML in chemistry, but XAI for\\n\\nDL models is becoming more important60,66\u201369,73,88,104,105 Here we illustrate some practical\\n\\nexamples drawn from our published work on how model-agnostic XAI can be utilized to\\n\\n\\n\\n 14interpret black-box models and connect the explanations to structure-property relationships.\\n\\nThe methods are \u201CMolecular Model Agnostic Counterfactual Explanations\u201D (MMACE)9\\n\\nand \u201CExplaining molecular properties with natural language\u201D.10 Then we demonstrate how\\n\\ncounterfactuals and descriptor explanations can propose structure-property relationships in\\n\\nthe domain of molecular scent.31\\n\\n\\nBlood-brain barrier permeation prediction\\n\\n\\nThe passive diffusion of drugs from the blood stream to the brain is a critical aspect in drug\\n\\ndevelopment and discovery.120 Small molecule blood-brain barrier (BBB) permeation is a\\n\\nclassification problem routinely assessed with DL models.121,122 To explain why DL models\\n\\nwork, we trained two models a random forest (RF) model123 and a Gated Recurrent Unit\\n\\nRecurrent Neural Network (GRU-RNN). Then we explained the RF model with generated\\n\\ncounterfactuals explanations using the MMACE9 and the GRU-RNN with descriptor expla-\\n\\nnations.10 Both the models were trained on the dataset developed by Martins et al. 124. The\\n\\nRF model was implemented in Scikit-learn125 using Mordred molecular descriptors126 as the\\n\\ninput features. The GRU-RNN model was implemented in Keras.127 See Wellawatte et al. 9\\n\\nand Gandhi and White 10 for more details.\\n\\n \ According to the counterfactuals of the instance molecule in figure 1, we observe that the\\n\\nmodifications to the carboxylic acid group enable the negative example molecule to permeate\\n\\nthe BBB. Experimental findings by Fischer et al. 120 show that the BBB permeation of\\n\\nmolecules are governed by hydrophobic interactions and surface area. The carboxylic group is\\n\\na hydrophilic functional group which hinders hydrophobic interactions and addition of atoms\\n\\nenhances the surface area. This proves the advantage of using counterfactual explanations,\\n\\nas they suggest actionable modification to the molecule to make it cross the BBB.\\n\\n In Figure 2 we show descriptor explanations generated for Alprozolam, a molecule that\\n\\npermeates the BBB, using the method described by Gandhi and White 10. We see that\\n\\npredicted permeability is positively correlated with the aromaticity of the molecule, while\\n\\n\\n 15negatively correlated with the number of hydrogen bonds donors and acceptors. A similar\\n\\nstructure-property relationship for BBB permeability is proposed in more mechanistic stud-\\n\\nies.128\u2013130 The substructure attributions indicates a reduction in hydrogen bond donors and\\n\\nacceptors. These descriptor explanations are quantitative and interpretable by chemists.\\n\\nFinally, we can use a natural language model to summarize the findings into a written\\n\\nexplanation, as shown in the printed text in Figure 2.\\n\\n\\n\\n\\n\\nFigure 1: Counterfactuals of a molecule which cannot permeate the blood-brain barrier.\\nSimilarity is the Tanimoto similarity of ECFP4 fingerprints.131 Red indicates deletions and\\ngreen indicates substitutions and addition of atoms. Republished from Ref.9 with permission\\nfrom the Royal Society of Chemistry.\\n\\n\\n\\nSolubility prediction\\n\\n\\nSmall molecule solubility prediction is a classic cheminformatics regression challenge and is\\n\\nimportant for chemical process design, drug design and crystallization.133\u2013136 In our previous\\n\\nworks,9,10 we implemented and trained an RNN model in Keras to predict solubilities (log\\n\\nmolarity) of small molecules.127 The AqS\\n\\nMedia 0 from page 16's enriched description:\\n\\nThe image illustrates a series of molecular structures and their corresponding counterfactual explanations for a classification task, likely related to predicting a property such as blood-brain barrier (BBB) permeation. The key elements in the image are as follows:\\n\\n1. **Base Molecule (Leftmost Structure):**\\n - The base molecule is shown with a prediction score \\\\( f(x) = 0.000 \\\\), indicating it does not meet the desired property (e.g., BBB permeation).\\n - The molecular structure includes a carboxylic acid group and other functional groups.\\n\\n2. **Counterfactual Molecules (Three Structures to the Right):**\\n - Each counterfactual molecule is a modified version of the base molecule, with changes highlighted in red (deletions) and green (additions or substitutions).\\n - The counterfactuals are associated with a prediction score \\\\( f(x) = 1.000 \\\\), indicating they meet the desired property.\\n - The Tanimoto similarity (based on ECFP4 fingerprints) between the base molecule and each counterfactual is provided:\\n \ - Counterfactual 1: Similarity = 0.80\\n - Counterfactual 2: Similarity = 0.77\\n - Counterfactual 3: Similarity = 0.71\\n\\n3. **Highlighted Modifications:**\\n \ - Counterfactual 1: A red highlight indicates the deletion of a specific atom or group.\\n - Counterfactual 2: Green highlights indicate the addition of two atoms or groups.\\n - Counterfactual 3: Green highlights indicate the addition of a hydroxyl group and another atom or group.\\n\\n4. **Scientific Context:**\\n - The counterfactuals suggest structural modifications that could enable the molecule to achieve the desired property (e.g., BBB permeation).\\n \ - The similarity scores indicate how closely the counterfactuals resemble the base molecule, with lower similarity suggesting more significant structural changes.\\n\\nThis image is relevant for understanding how counterfactual explanations can guide actionable modifications to molecular structures in cheminformatics tasks.\",\"ssion challenge and is\\n\\nimportant for chemical process design, drug design and crystallization.133\u2013136 In our previous\\n\\nworks,9,10 we implemented and trained an RNN model in Keras to predict solubilities (log\\n\\nmolarity) of small molecules.127 The AqSolDB curated database137 was used to train the\\n\\nRNN model.\\n\\n In this task, counterfactuals are based on equation 6. Figure 3 illustrates the generated\\n\\nlocal chemical space and the top four counterfactuals. Based on the counterfactuals, we ob-\\n\\nserve that the modifications to the ester group and other heteroatoms play an important role\\n\\nin solubility. These findings align with known experimental and basic chemical intuition.134\\n\\nFigure 4 shows a quantitative measurement of how substructures are contributing to the pre-\\n\\n\\n\\n 16Figure 2: Descriptor explanations along with natural language explanation obtained for BBB\\npermeability of Alprozolam molecule. The green and red bars show descriptors that influ-\\nence predictions positively and negatively, respectively. Dotted yellow lines show significance\\nthreshold (\u03B1 = 0.05) for the t-statistic. Molecular descriptors show molecule-level proper-\\nties that are important for the prediction. ECFP and MACCS descriptors indicate which\\nsubstructures influence model predictions. MACCS explanations lead to text explanations\\nas shown. Republished from Ref.10 with permission from authors. SMARTS annotations for\\nMACCS descriptors were created using SMARTSviewer (smartsview.zbh.uni-hamburg.de,\\nCopyright: ZBH, Center for Bioinformatics Hamburg) developed by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n \ 17diction. For example, we see that adding acidic and basic groups as well as hydrogen bond\\n\\nacceptors, increases solubility. Substructure importance from ECFP97 and MACCS138 de-\\n\\nscriptors indicate that adding heteroatoms increases solubility, while adding rings structures\\n\\nmakes the molecule less soluble. Although these are established hypotheses, it is interesting\\n\\nto see they can be derived purely from the data via DL and XAI.\\n\\n\\n\\n\\n\\nFigure 3: Generated chemical space for solubility prediction using the RNN model. The\\nchemical space is a 2D projection of the pairwise Tanimoto similarities of the local coun-\\nterfactuals. Each data point is colored by solubility. Top 4 counterfactuals are shown here.\\nRepublished from Ref.9 with permission from the Royal Society of Chemistry.\\n\\n\\n\\nGeneralizing XAI \u2013 interpreting scent-structure relationships\\n\\n\\nIn this example, we show how non-local structure-property relationships can be learned with\\n\\nXAI across multiple molecules. Molecular scent prediction is a multi-label classification task\\n\\nbecause a molecule can be described by more than one scent. For example, the molecule\\n\\njasmone can be described as having \u2018jasmine,\u2019 \u2018woody,\u2019 \u2018floral,\u2019 and \u2019herbal\u2019 scents.139 The\\n\\nscent-structure relationship is not very well understood,140 although some relationships are\\n\\nknown. \ For example, molecules with an ester functional group are often associated with\\n\\n\\n 18Figure 4: Descriptor explanations for solubility prediction model. The green and red bars\\nshow descriptors that influence predictions positively and negatively, respectively. Dotted\\nyellow lines show significance threshold (\u03B1 = 0.05) for the t-statistic. The MACCS and\\nECFP descriptors indicate which substructures influence model predictions. MACCS sub-\\nstructures may either be present in the molecule as is or may represent a modification. ECFP\\nfingerprints are substructures in the molecule that affect the prediction. MACCS descriptor\\nare used to obtain text explanations as shown. Republished from Ref.10 with permission from\\nauthors. SMARTS annotations for MACCS descriptors were created using SMARTSviewer\\n(smartsview.zbh.uni-hamburg.de, Copyright: ZBH, Center for Bioinformatics Hamburg) de-\\nveloped by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n 19the \u2018fruity\u2019 scent. There are some exceptions though, like tert-amyl acetate which has a\\n\\n\u2018camphoraceous\u2019 rather than \u2018fruity\u2019 scent.140,141\\n\\n In Seshadri et al. 31, we trained a GNN model to predict the scent of molecules and utilized\\n\\ncounterfactuals9 and descriptor explanations10 to quantify scent-structure relationships. The\\n\\nMMACE method was modified to account for the multi-label aspect of scent prediction. This\\n\\nmodification defines molecules that differed from the instance molecule by only the selected\\n\\nscent as counterfactuals. For instance, counterfactuals of the jasmone molecule would be false\\n\\nfor the \u2018jasmine\u2019 scent but would still be positive for \u2018woody,\u2019 \u2018floral\u2019 and \u2018herbal\u2019 scents.\\n\\n\\n\\n\\n\\nFigure 5: Counterfactual for the 2,4 decadienal molecule. \ The counterfactual indicates\\nstructural changes to ethyl benzoate that would result in the model predicting the molecule\\nto not contain the \u2018fruity\u2019 scent. The Tanimoto96 similarity between the counterfactual and\\n2,4 decadienal is also\\n\\nMedia 0 from page 16's enriched description:\\n\\nThe image illustrates a series of molecular structures and their corresponding counterfactual explanations for a classification task, likely related to predicting a property such as blood-brain barrier (BBB) permeation. The key elements in the image are as follows:\\n\\n1. **Base Molecule (Leftmost Structure):**\\n - The base molecule is shown with a prediction score \\\\( f(x) = 0.000 \\\\), indicating it does not meet the desired property (e.g., BBB permeation).\\n - The molecular structure includes a carboxylic acid group and other functional groups.\\n\\n2. **Counterfactual Molecules (Three Structures to the Right):**\\n - Each counterfactual molecule is a modified version of the base molecule, with changes highlighted in red (deletions) and green (additions or substitutions).\\n - The counterfactuals are associated with a prediction score \\\\( f(x) = 1.000 \\\\), indicating they meet the desired property.\\n - The Tanimoto similarity (based on ECFP4 fingerprints) between the base molecule and each counterfactual is provided:\\n \ - Counterfactual 1: Similarity = 0.80\\n - Counterfactual 2: Similarity = 0.77\\n - Counterfactual 3: Similarity = 0.71\\n\\n3. **Highlighted Modifications:**\\n \ - Counterfactual 1: A red highlight indicates the deletion of a specific atom or group.\\n - Counterfactual 2: Green highlights indicate the addition of two atoms or groups.\\n - Counterfactual 3: Green highlights indicate the addition of a hydroxyl group and another atom or group.\\n\\n4. **Scientific Context:**\\n - The counterfactuals suggest structural modifications that could enable the molecule to achieve the desired property (e.g., BBB permeation).\\n \ - The similarity scores indicate how closely the counterfactuals resemble the base molecule, with lower similarity suggesting more significant structural changes.\\n\\nThis image is relevant for understanding how counterfactual explanations can guide actionable modifications to molecular structures in cheminformatics tasks.\\n\\nMedia 0 from page 18's enriched description:\\n\\nThe image is a scientific visualization showing a 2D chemical space projection for solubility prediction using a model, likely an RNN (Recurrent Neural Network). Key elements include:\\n\\n1. **Chemical Space Representation**:\\n - The main plot is a scatter plot where each point represents a molecule.\\n - The points are colored on a gradient scale (yellow to green to blue) corresponding to solubility values (Log PM), as indicated by the color bar on the left.\\n\\n2. **Counterfactual Explanations**:\\n - Four specific molecules are highlighted with zoomed-in insets, showing their chemical structures and associated information.\\n - Each inset includes:\\n - The molecular structure.\\n - A similarity score (e.g., \\\"Similarity = 0.82\\\") indicating how similar the counterfactual molecule is to the base molecule.\\n - A label indicating whether the solubility prediction increased or decreased compared to the base molecule.\\n\\n3. **Base Molecule**:\\n - A specific molecule is labeled as the \\\"Base\\\" in the plot, serving as the reference point for the counterfactuals.\\n\\n4. **Relationships**:\\n \ - Lines connect the base molecule to the counterfactuals, visually linking them in the chemical space.\\n - The counterfactuals are distributed across the space, showing how structural changes influence solubility predictions.\\n\\n5. **Scientific Insights**:\\n - The visualization demonstrates how structural modifications (e.g., adding or removing functional groups) impact solubility predictions.\\n - The similarity scores and solubility changes provide quantitative and qualitative insights into the model's predictions.\\n\\nThis figure is likely used to explain how the model generates counterfactuals and how these counterfactuals can be interpreted to understand structure-property relationships in solubility prediction.\",\"nal molecule. The counterfactual indicates\\nstructural changes to ethyl benzoate that would result in the model predicting the molecule\\nto not contain the \u2018fruity\u2019 scent. The Tanimoto96 similarity between the counterfactual and\\n2,4 decadienal is also provided. Republished with permission from authors.31\\n\\n\\n The molecule 2,4-decadienal, which is known to have a \u2018fatty\u2019 scent, is analyzed in Fig-\\n\\nure 5.142,143 The resulting counterfactual, which has a shorter carbon chain and no carbonyl\\n\\ngroups, highlights the influence of these structural features on the \u2018fatty\u2019 scent of 2,4 deca-\\n\\ndienal. To generalize to other molecules, Seshadri et al. 31 applied the descriptor attribution\\n\\nmethod to obtain global explanations for the scents. The global explanation for the \u2018fatty\u2019\\n\\nscent was generated by gathering chemical spaces around many \u2018fatty\u2019 scented molecules.\\n\\nThe resulting natural language explanation is: \u201CThe molecular property \u201Cfatty scent\u201D can\\n\\nbe explained by the presence of a heptanyl fragment, two CH2 groups separated by four\\n\\n\\n 20bonds, and a C=O double bond, as well as the lack of more than one or two O atoms.\u201D31\\n\\nThe importance of a heptanyl fragment aligns with that reported in the literature, as \u2018fatty\u2019\\n\\nmolecules often have a long carbon chain.144 Furthermore, the importance of a C=O dou-\\n\\nble bond is supported by the findings reported by Licon et al. 145, where in addition to a\\n\\n\u201Clarger carbon-chain skeleton\u201D, they found that \u2018fatty\u2019 molecules also had \u201Caldehyde or acid\\n\\nfunctions\u201D.145 For the \u2018pineapple\u2019 scent, the following natural language explanation was ob-\\n\\ntained: \u201CThe molecular property \u201Cpineapple scent\u201D can be explained by the presence of ester,\\n\\nethyl/ether O group, alkene/ether O group, and C=O double bond, as well as the absence of\\n\\nan Aromatic atom.\u201D31 Esters, such as ethyl 2-methylbutyrate, are present in many pineap-\\n\\nple volatile compounds.146,147 The combination of a C=O double bond with an ether could\\n\\nalso correspond to an ester group. Additionally, aldehydes and ketones, which contain C=O\\n\\ndouble bonds, are also common in pineapple volatile compounds.146,148\\n\\n\\nDiscussion\\n\\n\\nWe have shown two post-hoc XAI applications based on molecular counterfactual expla-\\n\\nnations9 and descriptor explanations.10 These methods can be used to explain black-box\\n\\nmodels whose input is a molecule. These two methods can be applied for both classification\\n\\nand regression tasks. Note that the \u201Ccorrectness\u201D of the explanations strongly depends on\\n\\nthe accuracy of the black-box model.\\n\\n A molecular counterfactual is one with a minimal distance from a base molecular, but\\n\\nwith contrasting chemical properties. In the above examples, we used Tanimoto similar-\\n\\nity96 of ECFP4 fingreprints97 as distance, although this should be explored in the future.\\n\\nCounterfactual explanations are useful because they are represented as chemical structures\\n\\n(familiar to domain experts), sparse, and are actionable. A few other popular examples of\\n\\ncounterfactual on graph methods are GNNExplainer, MEG and CF-GNNExplainer.69,104,105\\n\\n The descriptor explanation method developed by Gandhi and White 10 fits a self-explaining\\n\\n\\n\\n 21surrogate model to explain the black-box model. This is similar to the GraphLIME87 method,\\n\\nalthough we have the flexibility to use explanation features other than subgraphs. Futher-\\n\\nmore, we show that natural language combined with chemical descriptor attributions can\\n\\ncreate explanations useful for chemists, thus enhancing the accessibility of DL in chemistry.\\n\\nLastly, we examined if XAI can be used beyond interpretation. Work by Seshadri et al. 31 use\\n\\nMMACE and surrogate model explanations to analyze the structure-property relationships\\n\\nof scent. They recovered known structure-property relationships for molecular scent purely\\n\\nfrom explanations, demonstrating the usefulness of a two step process: fit an accurate model\\n\\nand then explain it.\\n\\n Choosing among the plethora of XAI methods described here is still an open question.\\n\\nIt remains to be seen if there will ever be a consensus benchmark, since this field sits on\\n\\nthe intersection of human-machine interaction, machine learning, and philosophy (i.e., what\\n\\nconstitutes an explanation?). Our current advice is to consider first the audience \u2013 domain\\n\\nexperts or ML experts or non-experts \u2013 and what the explanations should accomplish. Are\\n\\nthey meant to inform data selection or model building, how a prediction is used, or how the\\n\\nfeatures can be changed to affect the outcome. The second consideration is what access you\\n\\nhave to the underlying model. The ability to have model derivatives or propagate gradients\\n\\nto the input to models informs the XAI method.\\n\\n\\nConclusion and outlook\\n\\n\\nWe should seek to explain molecular property prediction models because users are more\\n\\nlikely to trust explained predictions, and explanations can help assess if the model is learning\\n\\nt\",\"ut to models informs the XAI method.\\n\\n\\nConclusion and outlook\\n\\n\\nWe should seek to explain molecular property prediction models because users are more\\n\\nlikely to trust explained predictions, and explanations can help assess if the model is learning\\n\\nthe correct underlying chemical principles. We also showed that black-box modeling first,\\n\\nfollowed by XAI, is a path to structure-property relationships without needing to trade\\n\\nbetween accuracy and interpretability. However, XAI in chemistry has some major open\\n\\nquestions, that are also related to the black-box nature of the deep learning. Some are\\n\\n\\n\\n \ 22highlighted below:\\n\\n\\n \u2022 Explanation representation: How is an explanation presented \u2013 text, a molecule, attri-\\n\\n butions, a concept, etc?\\n\\n\\n \u2022 Molecular distance: \ in XAI approaches such as counterfactual generation, the \u201Cdis-\\n\\n \ tance\u201D between two molecules is minimized. Molecular distance is subjective. Possibil-\\n\\n ities are distance based on molecular properties, synthesis routes, and direct structure\\n\\n comparisons.\\n\\n\\n \u2022 Regulations: As black-box models move from research to industry, healthcare, and\\n\\n environmental settings, we expect XAI to become more important to explain decisions\\n\\n \ to chemists or non-experts and possibly be legally required. Explanations may need\\n\\n to be tuned for be for doctors instead of chemists or to satisfy a legal requirement.\\n\\n\\n \u2022 Chemical space: Chemical space is the set of molecules that are realizable; \u201Crealiz-\\n\\n able\u201D can be defined from purchasable to synthesizable to satisfied valences. What is\\n\\n most useful? Can an explanation consider nearby impossible molecules? How can we\\n\\n generate local chemical spaces centered around a specific molecule for finding counter-\\n\\n factuals or other instance explanations? \ Similarly, can \u201Cactivity cliffs\u201D be connected\\n\\n to explanations and the local chemical space.149\\n\\n\\n \u2022 Evaluating XAI : there is a lack of a systematic framework (quantitative or qualitative)\\n\\n to evaluate correctness and applicability of an explanation. Can there be a universal\\n\\n \ framework, or should explanations be chosen and evaluated based on the audience and\\n\\n domain? For example, work by Rasmussen et al. 58 attempts to focus on comparing\\n\\n feature attribution XAI methods via Crippen\u2019s logP scores.\\n\\n\\n\\n\\n\\n 23Acknowledgements\\n\\n\\nResearch reported in this work was supported by the National Institute of General Medical\\n\\nSciences of the National Institutes of Health under award number R35GM137966. This work\\n\\nwas supported by the NSF under awards 1751471 and 1764415. We thank the Center for\\n\\nIntegrated Research Computing at the University of Rochester for providing computational\\n\\nresources.\\n\\n\\nReferences\\n\\n\\n \ (1) Choudhary, K.; DeCost, B.; Chen, C.; Jain, A.; Tavazza, F.; Cohn, R.; Park, C. W.;\\n\\n Choudhary, A.; Agrawal, A.; Billinge, S. J.; Holm, E.; Ong, S. P.; Wolverton, C.\\n\\n Recent advances and applications of deep learning methods in materials science. npj\\n\\n Computational Materials 2022, 8.\\n\\n\\n (2) Keith, J. A.; Vassilev-Galindo, V.; Cheng, B.; Chmiela, S.; Gastegger, M.; M\xA8uller, K.-\\n\\n R.; Tkatchenko, A. Combining Machine Learning and Computational Chemistry for\\n\\n Predictive Insights Into Chemical Systems. Chemical Reviews 2021, 121, 9816\u20139872,\\n\\n PMID: 34232033.\\n\\n\\n (3) Goh, G. B.; Hodas, N. O.; Vishnu, A. Deep learning for computational chemistry.\\n\\n Journal of Computational Chemistry 2017, 38, 1291\u20131307.\\n\\n\\n (4) Deringer, V. L.; Caro, M. A.; Cs\xB4anyi, G. Machine Learning Interatomic Potentials as\\n\\n Emerging Tools for Materials Science. Advanced Materials 2019, 31, 1902765.\\n\\n\\n (5) Faber, F. A.; Hutchison, L.; Huang, B.; Gilmer, J.; Schoenholz, S. S.; Dahl, G. E.;\\n\\n Vinyals, O.; Kearnes, S.; Riley, P. F.; von Lilienfeld, O. A. Prediction Errors of Molec-\\n\\n \ ular Machine Learning Models Lower than Hybrid DFT Error. Journal of Chemical\\n\\n \ Theory and Computation 2017, 13, 5255\u20135264, PMID: 28926232.\\n\\n\\n\\n \ 24 (6) Duch, W.; Swaminathan, K.; Meller, J. Artificial Intelligence Approaches for Rational\\n\\n Drug Design and Discovery. Current Pharmaceutical Design 2007, 13, 1497\u20131508.\\n\\n\\n (7) Dara, S.; Dhamercherla, S.; Jadav, S. S.; Babu, C. M.; Ahsan, M. J.; darasuresh, S. D.;\\n\\n Dara, S. Machine Learning in Drug Discovery: A Review. Artificial Intelligence Review\\n\\n 123, 55, 1947\u20131999.\\n\\n\\n (8) Gupta, R.; Srivastava, D.; Sahu, M.; Tiwari, S.; Ambasta, R. K.; Kumar, P. Artifi-\\n\\n \ cial intelligence to deep learning: machine intelligence approach for drug discovery.\\n\\n Molecular diversity 2021, 25, 1315\u20131360.\\n\\n\\n (9) Wellawatte, G. P.; Seshadri, A.; White, A. D. Model agnostic generation of counter-\\n\\n factual explanations for molecules. Chemical Science 2022, 13, 3697\u20133705.\\n\\n\\n(10) Gandhi, H. A.; White, A. D. Explaining structure-ac\",\"2021, 25, 1315\u20131360.\\n\\n\\n (9) Wellawatte, G. P.; Seshadri, A.; White, A. D. Model agnostic generation of counter-\\n\\n factual explanations for molecules. Chemical Science 2022, 13, 3697\u20133705.\\n\\n\\n(10) Gandhi, H. A.; White, A. D. Explaining structure-activity relationships using locally\\n\\n \ faithful surrogate models. chemrxiv 2022,\\n\\n\\n(11) Gormley, A. J.; Webb, M. A. Machine learning in combinatorial polymer chemistry.\\n\\n Nature Reviews Materials 2021,\\n\\n\\n(12) Gomes, C. P.; Fink, D.; Dover, R. B. V.; Gregoire, J. M. Computational sustainability\\n\\n meets materials science. Nature Reviews Materials 2021,\\n\\n\\n(13) On scientific understanding with artificial intelligence. Nature Reviews Physics 2022\\n\\n 4:12 2022, 4, 761\u2013769.\\n\\n\\n(14) Arrieta, A. B.; D\xB4\u0131az-Rodr\xB4\u0131guez, N.; Ser, J. D.; Bennetot, A.; Tabik, S.; Barbado, A.;\\n\\n Garcia, S.; Gil-Lopez, S.; Molina, D.; Benjamins, R.; Chatila, R.; Herrera, F. Explain-\\n\\n \ able Artificial Intelligence (XAI): Concepts, Taxonomies, Opportunities and Chal-\\n\\n lenges toward Responsible AI. Information Fusion 2019, 58, 82\u2013115.\\n\\n\\n(15) Murdoch, W. J.; Singh, C.; Kumbier, K.; Abbasi-Asl, R.; Yu, B. Interpretable machine\\n\\n learning: definitions, methods, and applications. ArXiv 2019, abs/1901.04592.\\n\\n\\n 25(16) Boobier, S.; Osbourn, A.; Mitchell, J. B. Can human experts predict solubility better\\n\\n than computers? Journal of cheminformatics 2017, 9, 1\u201314.\\n\\n\\n(17) Lee, J. D.; See, K. A. Trust in automation: Designing for appropriate reliance. Human\\n\\n Factors 2004, 46, 50\u201380.\\n\\n\\n(18) Bolukbasi, T.; Chang, K.-W.; Zou, J. Y.; Saligrama, V.; Kalai, A. T. Man is to com-\\n\\n puter programmer as woman is to homemaker? debiasing word embeddings. Advances\\n\\n \ in neural information processing systems 2016, 29.\\n\\n\\n(19) Buolamwini, J.; Gebru, T. Gender Shades: Intersectional Accuracy Disparities in\\n\\n Commercial Gender Classification. Proceedings of the 1st Conference on Fairness,\\n\\n \ Accountability and Transparency. 2018; pp 77\u201391.\\n\\n\\n(20) Lapuschkin, S.; W\xA8aldchen, S.; Binder, A.; Montavon, G.; Samek, W.; M\xA8uller, K.-R.\\n\\n \ Unmasking Clever Hans predictors and assessing what machines really learn. Nature\\n\\n communications 2019, 10, 1\u20138.\\n\\n\\n(21) DeGrave, A. J.; Janizek, J. D.; Lee, S.-I. AI for radiographic COVID-19 detection\\n\\n \ selects shortcuts over signal. Nature Machine Intelligence 2021, 3, 610\u2013619.\\n\\n\\n(22) Goodman, B.; Flaxman, S. European Union regulations on algorithmic decision-\\n\\n \ making and a \u201Cright to explanation\u201D. AI Magazine 2017, 38, 50\u201357.\\n\\n\\n(23) ACT, A. I. European Commission. On Artificial Intelligence: A European Approach\\n\\n \ to Excellence and Trust. 2021, COM/2021/206.\\n\\n\\n(24) Blueprint for an AI Bill of Rights, The White House. 2022; https://www.whitehouse.\\n\\n gov/ostp/ai-bill-of-rights/.\\n\\n\\n(25) Miller, T. Explanation in artificial intelligence: Insights from the social sciences. Ar-\\n\\n tificial intelligence 2019, 267, 1\u201338.\\n\\n\\n\\n \ 26(26) Murdoch, W. J.; Singh, C.; Kumbier, K.; Abbasi-Asl, R.; Yu, B. Definitions, meth-\\n\\n ods, and applications in interpretable machine learning. Proceedings of the National\\n\\n Academy of Sciences of the United States of America 2019, 116, 22071\u201322080.\\n\\n\\n(27) Gunning, D.; Aha, D. DARPA\u2019s Explainable Artificial Intelligence (XAI) Program.\\n\\n AI Magazine 2019, 40, 44\u201358.\\n\\n\\n(28) Biran, O.; Cotton, C. Explanation and justification in machine learning: A survey.\\n\\n \ IJCAI-17 workshop on explainable AI (XAI). 2017; pp 8\u201313.\\n\\n\\n(29) Palacio, S.; Lucieri, A.; Munir, M.; Ahmed, S.; Hees, J.; Dengel, A. Xai handbook:\\n\\n \ Towards a unified framework for explainable ai. Proceedings of the IEEE/CVF Inter-\\n\\n national Conference on Computer Vision. 2021; pp 3766\u20133775.\\n\\n\\n(30) Kuhn, D. R.; Kacker, R. N.; Lei, Y.; Simos, D. E. Combinatorial Methods for Ex-\\n\\n plainable AI. 2020 IEEE International Conference on Software Testing, Verification\\n\\n and Validation Workshops (ICSTW) 2020, 167\u2013170.\\n\\n\\n(31) Seshadri, A.; Gandhi, H. A.; Wellawatte, G. P.; White, A. D. Why does that molecule\\n\\n \ smell? ChemRxiv 2022,\\n\\n\\n(32) Das, A.; Rad, P. Opportunities and challenges in explainable artificial intelligence\\n\\n (xai): A survey. arXiv preprint arXiv:2006.11371 2020,\\n\\n\\n(33) Machlev, R.; Heistrene, L.; Perl, M.; Levy, K. Y.; Belikov, J.; Mannor, S.; Levron, Y.\\n\\n Explainable Artificial Intelligence (XAI) techniques for energy and power systems:\\n\\n Review, challenges and opportunities. Energy and AI 2022, 9, 100169.\\n\\n\\n(34) Koh, P. W.; Liang, P. Understanding black-box predictions via influence functions.\\n\\n \ International Conference on Machine Learning. 2017; pp 1885\u20131894.\\n\\n\\n(35) Ribeiro, M. T.; Singh, S.; Guestrin, C. \u201D Why should i trust you?\u201D Explaining the\\n\\n predictions of any classifier. Proceedings of the 22nd ACM SIGKDD international\\n\\n\\n 27 conference on knowledge discovery and data \",\" M. T.; Singh, S.; Guestrin, C. \u201D Why should i trust you?\u201D Explaining the\\n\\n predictions of any classifier. Proceedings of the 22nd ACM SIGKDD international\\n\\n\\n 27 \ conference on knowledge discovery and data mining. San Diego, CA, USA, 2016; pp\\n\\n 1135\u20131144.\\n\\n\\n(36) Dhurandhar, A.; Chen, P.-Y.; Luss, R.; Tu, C.-C.; Ting, P.; Shanmugam, K.; Das, P.\\n\\n Explanations based on the missing: Towards contrastive explanations with pertinent\\n\\n \ negatives. Advances in neural information processing systems 2018, 31.\\n\\n\\n(37) Jin, W.; Li, X.; Hamarneh, G. Evaluating Explainable AI on a Multi-Modal Medical\\n\\n \ Imaging Task: Can Existing Algorithms Fulfill Clinical Requirements? Proceedings of\\n\\n the AAAI Conference on Artificial Intelligence 2022, 36, 11945\u201311953.\\n\\n\\n(38) Zhang, Y.; Xu, F.; Zou, J.; Petrosian, O. L.; Krinkin, K. V. XAI Evaluation: Evalu-\\n\\n ating Black-Box Model Explanations for Prediction. 2021 II International Conference\\n\\n on Neural Networks and Neurotechnologies (NeuroNT). 2021; pp 13\u201316.\\n\\n\\n(39) Oviedo, F.; Ferres, J. L.; Buonassisi, T.; Butler, K. T. Interpretable and Explain-\\n\\n able Machine Learning for Materials Science and Chemistry. Accounts of Materials\\n\\n Research 2022, 3, 597\u2013607.\\n\\n\\n(40) Yalcin, O.; Fan, X.; Liu, S. Evaluating the correctness of explainable AI algorithms\\n\\n for classification. arXiv preprint arXiv:2105.09740 2021,\\n\\n\\n(41) Hoffman, R. R.; Mueller, S. T.; Klein, G.; Litman, J. Metrics for Explainable AI:\\n\\n Challenges and Prospects. 2018,\\n\\n\\n(42) Mohseni, S.; Zarei, N.; Ragan, E. D. A Multidisciplinary Survey and Framework for\\n\\n \ Design and Evaluation of Explainable AI Systems. ACM Transactions on Interactive\\n\\n \ Intelligent Systems 2018, 11, 46.\\n\\n\\n(43) Humer, C.; Heberle, H.; Montanari, F.; Wolf, T.; Huber, F.; Henderson, R.; Hein-\\n\\n rich, J.; Streit, M. ChemInformatics Model Explorer (CIME): exploratory analysis of\\n\\n \ chemical model explanations. Journal of Cheminformatics 2022, 14, 1\u201314.\\n\\n\\n \ 28(44) Lundberg, S. M.; Lee, S.-I. In Advances in Neural Information Processing Systems\\n\\n 30; Guyon, I., Luxburg, U. V., Bengio, S., Wallach, H., Fergus, R., Vishwanathan, S.,\\n\\n Garnett, R., Eds.; Curran Associates, Inc., 2017; pp 4765\u20134774.\\n\\n(45) \u02C7Strumbelj, E.; Kononenko, I. Explaining prediction models and individual predictions\\n\\n \ with feature contributions. Knowledge and information systems 2014, 41, 647\u2013665.\\n\\n\\n(46) Shapley, L. S. A Value for N-Person Games; RAND Corporation: Santa Monica, CA,\\n\\n 1952.\\n\\n\\n(47) Molnar, C.; Casalicchio, G.; Bischl, B. Interpretable machine learning\u2013a brief history,\\n\\n state-of-the-art and challenges. Joint European Conference on Machine Learning and\\n\\n Knowledge Discovery in Databases. 2020; pp 417\u2013431.\\n\\n\\n(48) Lou, Y.; Caruana, R.; Gehrke, J. Intelligible models for classification and regression.\\n\\n \ Proceedings of the 18th ACM SIGKDD international conference on Knowledge dis-\\n\\n covery and data mining. 2012; pp 150\u2013158.\\n\\n\\n(49) Bastani, O.; Kim, C.; Bastani, H. Interpreting blackbox models via model extraction.\\n\\n \ arXiv preprint arXiv:1705.08504 2017,\\n\\n\\n(50) Gajewicz, A.; Puzyn, T.; Odziomek, K.; Urbaszek, P.; Haase, A.; Riebeling, C.;\\n\\n Luch, A.; Irfan, M. A.; Landsiedel, R.; van der Zande, M.; Bouwmeester, H. Deci-\\n\\n \ sion tree models to classify nanomaterials according to the DF4nanoGrouping scheme.\\n\\n Nanotoxicology 2018, 12, 1\u201317.\\n\\n\\n(51) Han, L.; Wang, Y.; Bryant, S. H. Developing and validating predictive decision tree\\n\\n \ models from mining chemical structural fingerprints and high\u2013throughput screening\\n\\n data in PubChem. BMC Bioinformatics 2008, 9, 401.\\n\\n(52) Plumb, G.; Al-Shedivat, M.; Cabrera, \xB4A. A.; Perer, A.; Xing, E.; Talwalkar, A. Regu-\\n\\n\\n\\n\\n 29 larizing black-box models for improved interpretability. Advances in Neural Informa-\\n\\n \ tion Processing Systems 2020, 33, 10526\u201310536.\\n\\n\\n(53) Shao, X.; Skryagin, A.; Stammer, W.; Schramowski, P.; Kersting, K. Right for bet-\\n\\n \ ter reasons: Training differentiable models by constraining their influence functions.\\n\\n Proceedings of the AAAI Conference on Artificial Intelligence. 2021; pp 9533\u20139540.\\n\\n\\n(54) Ouyang, R.; Curtarolo, S.; Ahmetcik, E.; Scheffler, M.; Ghiringhelli, L. M. SISSO: A\\n\\n compressed-sensing method for identifying the best low-dimensional descriptor in an\\n\\n immensity of offered candidates. Physical Review Materials 2018, 2, 083802.\\n\\n\\n(55) Lipton, Z. C. The mythos of model interpretability: In machine learning, the concept\\n\\n of interpretability is both important and slippery. Queue 2018, 16, 31\u201357.\\n\\n\\n(56) Harren, T.; Matter, H.; Hessler, G.; Rarey, M.; Grebner, C. Interpretation of structure\u2013\\n\\n activity relationships in real-world drug design data sets using explainable artificial\\n\\n intelligence. Journal of Chemical Information and Modeling 2022, 62,\",\".; Matter, H.; Hessler, G.; Rarey, M.; Grebner, C. Interpretation of structure\u2013\\n\\n activity relationships in real-world drug design data sets using explainable artificial\\n\\n \ intelligence. Journal of Chemical Information and Modeling 2022, 62, 447\u2013462.\\n\\n\\n(57) Sheridan, R. P. Interpretation of QSAR Models by Coloring Atoms According to\\n\\n \ Changes in Predicted Activity: How Robust Is It? Journal of Chemical Information\\n\\n \ and Modeling 2019, 59, 1324\u20131337.\\n\\n\\n(58) Rasmussen, M. H.; Christensen, D. S.; Jensen, J. H. Do machines dream of atoms?\\n\\n Crippen\u2019s logP as a quantitative molecular benchmark for explainable AI heatmaps.\\n\\n 2022,\\n\\n\\n(59) Smilkov, D.; Thorat, N.; Kim, B.; Vi\xB4egas, F.; Wattenberg, M. SmoothGrad: removing\\n\\n noise by adding noise. 2017; https://arxiv.org/abs/1706.03825.\\n\\n\\n(60) McCloskey, K.; Taly, A.; Monti, F.; Brenner, M. P.; Colwell, L. Using Attribution\\n\\n \ to Decode Dataset Bias in Neural Network Models for Chemistry. Proceedings of the\\n\\n\\n\\n\\n 30 National Academy of Sciences of the United States of America 2018, 116, 11624\u2013\\n\\n 11629.\\n\\n\\n(61) Bach, S.; Binder, A.; Montavon, G.; Klauschen, F.; M\xA8uller, K.-R.; Samek, W. On\\n\\n pixel-wise explanations for non-linear classifier decisions by layer-wise relevance prop-\\n\\n agation. PloS one 2015, 10, e0130140.\\n\\n\\n(62) Sundararajan, M.; Taly, A.; Yan, Q. Axiomatic attribution for deep networks. Inter-\\n\\n national Conference on Machine Learning. 2017; pp 3319\u20133328.\\n\\n\\n(63) Zhou, B.; Khosla, A.; Lapedriza, A.; Oliva, A.; Torralba, A. Learning Deep Features\\n\\n \ for Discriminative Localization. 2015; https://arxiv.org/abs/1512.04150.\\n\\n\\n(64) Selvaraju, R. R.; Cogswell, M.; Das, A.; Vedantam, R.; Parikh, D.; Batra, D. Grad-\\n\\n CAM: Visual Explanations from Deep Networks via Gradient-Based Localization. In-\\n\\n ternational Journal of Computer Vision 2019, 128, 336\u2013359.\\n\\n\\n(65) Smilkov, D.; Thorat, N.; Kim, B.; Vi\xB4egas, F.; Wattenberg, M. Smoothgrad: removing\\n\\n noise by adding noise. arXiv preprint arXiv:1706.03825 2017,\\n\\n\\n(66) Pope, P.; Kolouri, S.; Rostrami, M.; Martin, C.; Hoffmann, H. Discovering Molec-\\n\\n ular Functional Groups Using Graph Convolutional Neural Networks. 2018; https:\\n\\n //arxiv.org/abs/1812.00265.\\n\\n\\n(67) Jim\xB4enez-Luna, J.; Skalic, M.; Weskamp, N.; Schneider, G. Coloring molecules with ex-\\n\\n plainable artificial intelligence for preclinical relevance assessment. Journal of Chem-\\n\\n ical Information and Modeling 2021, 61, 1083\u20131094.\\n\\n\\n(68) Sanchez-Lengeling, B.; Wei, J.; Lee, B.; Reif, E.; Wang, P. Y.; Qian, W. W.; Mc-\\n\\n Closkey, K.; Colwell, L.; Wiltschko, A. Evaluating Attribution for Graph Neural\\n\\n Networks. Proceedings of the 34th International Conference on Neural Information\\n\\n Processing Systems. Red Hook, NY, USA, 2020.\\n\\n\\n 31(69) Ying, R.; Bourgeois, D.; You, J.; Zitnik, M.; Leskovec, J. GNNExplainer: Generating\\n\\n \ Explanations for Graph Neural Networks. Advances in neural information processing\\n\\n systems 2019, 32, 9240\u20139251.\\n\\n\\n(70) Rao, J.; Zheng, S.; Yang, Y. Quantitative Evaluation of Explainable Graph Neural\\n\\n \ Networks for Molecular Property Prediction. arXiv preprint arXiv:2107.04119 2021,\\n\\n\\n(71) Yuan, H.; Yu, H.; Wang, J.; Li, K.; Ji, S. On Explainability of Graph Neural Net-\\n\\n works via Subgraph Explorations. Proceedings of the 38th International Conference\\n\\n on Machine Learning. 2021; pp 12241\u201312252.\\n\\n\\n(72) Shrikumar, A.; Greenside, P.; Kundaje, A. Learning Important Features Through\\n\\n Propagating Activation Differences. 2017,\\n\\n\\n(73) Montavon, G.; Binder, A.; Lapuschkin, S.; Samek, W.; M\xA8uller, K. R. Layer-Wise\\n\\n \ Relevance Propagation: An Overview. Lecture Notes in Computer Science (including\\n\\n \ subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)\\n\\n 2019, 11700 LNCS, 193\u2013209.\\n\\n\\n(74) Baldassarre, F.; Azizpour, H. Explainability Techniques for Graph Convolutional Net-\\n\\n \ works. 2019; https://arxiv.org/abs/1905.13686.\\n\\n\\n(75) Hochuli, J.; Helbling, A.; Skaist, T.; Ragoza, M.; Koes, D. R. Visualizing convolutional\\n\\n \ neural network protein-ligand scoring. Journal of Molecular Graphics and Modelling\\n\\n 2018, 84, 96\u2013108.\\n\\n\\n(76) Rodr\xB4\u0131guez-P\xB4erez, R.; Bajorath, J. Interpretation of Compound Activity Predictions\\n\\n from Complex Machine Learning Models Using Local Approximations and Shapley\\n\\n \ Values. Journal of Medicinal Chemistry 2020, 63, 8761\u20138777, PMID: 31512867.\\n\\n\\n(77) Wojtuch, A.; Jankowski, R.; Podlewska, S. How can SHAP values help to shape\\n\\n\\n\\n\\n 32 \ metabolic stability of chemical compounds? Journal of Cheminformatics 2021, 13,\\n\\n 1\u201320.\\n\\n\\n(78) Mastropietro, A.; Pasculli, G.; Feldmann, C.; Rodr\xB4\u0131guez-P\xB4erez, R.; Bajorath, J. Edge-\\n\\n SHAPer: Bond-Centric Shapley Value-Based Explanation Method for Graph Neural\\n\\n Networks. iScience 2022, 25, 105043.\\n\\n\\n(79) White, \",\"13,\\n\\n 1\u201320.\\n\\n\\n(78) Mastropietro, A.; Pasculli, G.; Feldmann, C.; Rodr\xB4\u0131guez-P\xB4erez, R.; Bajorath, J. Edge-\\n\\n SHAPer: Bond-Centric Shapley Value-Based Explanation Method for Graph Neural\\n\\n Networks. iScience 2022, 25, 105043.\\n\\n\\n(79) White, A. D. Deep learning for molecules and materials. Living Journal of Computa-\\n\\n \ tional Molecular Science 2022, 3.\\n\\n(80) \u02D8Strumbelj, E.; Kononenko, I. Explaining prediction models and individual predictions\\n\\n with feature contributions. Knowledge and Information Systems 2014, 41, 647\u2013665.\\n\\n\\n(81) Erhan, D.; Bengio, Y.; Courville, A.; Vincent, P. Visualizing Higher-Layer Features of\\n\\n a Deep Network. Technical Report, Univerist\xB4e de Montr\xB4eal 2009,\\n\\n\\n(82) Weber, J. K.; Morrone, J. A.; Bagchi, S.; Pabon, J. D.; gu Kang, S.; Zhang, L.;\\n\\n Cornell, W. D. Simplified, interpretable graph convolutional neural networks for small\\n\\n molecule activity prediction. Journal of Computer-Aided Molecular Design 2022, 36,\\n\\n 391\u2013404.\\n\\n\\n(83) Riniker, S.; Landrum, G. A. Similarity maps - A visualization strategy for molecular\\n\\n \ fingerprints and machine-learning methods. Journal of Cheminformatics 2013, 5, 1\u20137.\\n\\n\\n(84) Humer, C.; Heberle, H.; Montanari, F.; Wolf, T.; Huber, F.; Henderson, R.; Hein-\\n\\n rich, J.; Streit, M. ChemInformatics Model Explorer (CIME): exploratory analysis of\\n\\n chemical model explanations. Journal of Cheminformatics 2022, 14, 1\u201314.\\n\\n\\n(85) McGrath, T.; Kapishnikov, A.; Toma\u02C7sev, N.; Pearce, A.; Wattenberg, M.; Hass-\\n\\n abis, D.; Kim, B.; Paquet, U.; Kramnik, V. Acquisition of chess knowledge in Al-\\n\\n \ phaZero. Proceedings of the National Academy of Sciences 2022, 119, e2206625119.\\n\\n\\n\\n\\n \ 33(86) Bajusz, D.; R\xB4acz, A.; H\xB4eberger, K. Why is Tanimoto index an appropriate choice for\\n\\n fingerprint-based similarity calculations? Journal of Cheminformatics 2015, 7, 1\u201313.\\n\\n\\n(87) Huang, Q.; Yamada, M.; Tian, Y.; Singh, D.; Yin, D.; Chang, Y. GraphLIME:\\n\\n \ Local Interpretable Model Explanations for Graph Neural Networks. CoRR 2020,\\n\\n abs/2001.06216.\\n\\n\\n(88) Sokol, K.; Flach, P. A. LIMEtree: Interactively Customisable Explanations Based on\\n\\n Local Surrogate Multi-output Regression Trees. CoRR 2020, abs/2005.01427.\\n\\n\\n(89) Whitmore, L. S.; George, A.; Hudson, C. M. Mapping chemical performance on molec-\\n\\n ular structures using locally interpretable explanations. 2016; https://arxiv.org/\\n\\n abs/1611.07443.\\n\\n\\n(90) Mehdi, S.; Tiwary, P. Thermodynamics of Interpretation. 2022,\\n\\n\\n(91) H\xA8ofler, M. Causal inference based on counterfactuals. BMC Medical Research Method-\\n\\n \ ology 2005, 5, 1\u201312.\\n\\n\\n(92) Woodward, J.; Hitchcock, C. Explanatory Generalizations, Part I: A Counterfactual\\n\\n Account. No\u02C6us 2003, 37, 1\u201324.\\n\\n\\n(93) Frisch, M. F. Theories, models, and explanation; University of California, Berkeley,\\n\\n 1998.\\n\\n\\n(94) Reutlinger, A. Is There A Monist Theory of Causal and Non-Causal Explanations?\\n\\n The Counterfactual Theory of Scientific Explanation. Philosophy of Science 2016, 83,\\n\\n 733\u2013745.\\n\\n\\n(95) Lewis, D. Causation. The journal of philosophy 1974, 70, 556\u2013567.\\n\\n\\n(96) Tanimoto, T. T. Elementary mathematical theory of classification and prediction.\\n\\n Internal IBM Technical Report 1958,\\n\\n\\n 34 (97) Rogers, D.; Hahn, M. Extended-Connectivity Fingerprints. Journal of Chemical In-\\n\\n formation and Modeling 2010, 50, 742\u2013754, PMID: 20426451.\\n\\n\\n (98) Mohapatra, S.; An, J.; G\xB4omez-Bombarelli, R. Chemistry-informed macromolecule\\n\\n \ graph representation for similarity computation, unsupervised and supervised learn-\\n\\n ing. Machine Learning: Science and Technology 2022, 3, 015028.\\n\\n\\n (99) Doshi-Velez, F.; Kortz, M.; Budish, R.; Bavitz, C.; Gershman, S.; O\u2019Brien, D.;\\n\\n Scott, K.; Schieber, S.; Waldo, J.; Weinberger, D.; Weller, A.; Wood, A. Account-\\n\\n ability of AI Under the Law: The Role of Explanation. SSRN Electronic Journal\\n\\n 2017,\\n\\n\\n(100) Wachter, S.; Mittelstadt, B.; Russell, C. Counterfactual explanations without opening\\n\\n the black box: Automated decisions and the GDPR. Harv. JL & Tech. 2017, 31, 841.\\n\\n\\n(101) Jim\xB4enez-Luna, J.; Grisoni, F.; Schneider, G. Drug discovery with explainable artificial\\n\\n intelligence. Nature Machine Intelligence 2020 2:10 2020, 2, 573\u2013584.\\n\\n\\n(102) Fu, T.; Gao, W.; Xiao, C.; Yasonik, J.; Coley, C. W.; Sun, J. Differentiable Scaffold-\\n\\n ing Tree for Molecule Optimization. International Conference on Learning Represen-\\n\\n tations. 2022.\\n\\n\\n(103) Shen, C.; Krenn, M.; Eppel, S.; Aspuru-Guzik, A. Deep molecular dreaming: inverse\\n\\n \ machine learning for de-novo molecular design and interpretability with surjective\\n\\n representations. Machine Learning: Science and Technology 2021, 2, 03LT02.\\n\\n\\n(104) Lucic, A.; ter Hoeve, M.; Tolomei, G.; \ Rijke, M.; Silvestri, F. CF-\\n\\n GNNExplainer: Counterfactual Explanations for Graph Neural Networks. arXiv\",\" representations. Machine Learning: Science and Technology 2021, 2, 03LT02.\\n\\n\\n(104) Lucic, A.; \ ter Hoeve, M.; Tolomei, G.; Rijke, M.; Silvestri, F. CF-\\n\\n \ GNNExplainer: Counterfactual Explanations for Graph Neural Networks. arXiv\\n\\n \ preprint arXiv:2102.03322 2021,\\n\\n\\n(105) Numeroso, D.; Bacciu, D. Explaining Deep Graph Networks with Molecular Counter-\\n\\n factuals. arXiv preprint arXiv:2011.05134 2020,\\n\\n\\n 35(106) Krenn, M.; H\xA8ase, F.; Nigam, A.; Friederich, P.; Aspuru-Guzik, A. Self-Referencing\\n\\n \ Embedded Strings (SELFIES): A 100% robust molecular string representation. Ma-\\n\\n chine Learning: Science and Technology 2020, 1, 045024.\\n\\n\\n(107) Nigam, A.; Pollice, R.; Krenn, M.; dos Passos Gomes, G.; Aspuru-Guzik, A. Beyond\\n\\n \ generative models: superfast traversal, optimization, novelty, exploration and discov-\\n\\n ery (STONED) algorithm for molecules using SELFIES. Chemical science 2021, 12,\\n\\n 7079\u20137090.\\n\\n\\n(108) Kim, S.; Chen, J.; Cheng, T.; Gindulyte, A.; He, J.; He, S.; Li, Q.; Shoemaker, B. A.;\\n\\n Thiessen, P. A.; Yu, B.; Zaslavsky, L.; Zhang, J.; Bolton, E. E. PubChem in 2021:\\n\\n \ new data content and improved web interfaces. Nucleic Acids Research 2020, 49,\\n\\n D1388\u2013D1395.\\n\\n\\n(109) Tolomei, G.; Silvestri, F.; Haines, A.; Lalmas, M. Interpretable predictions of tree-\\n\\n based ensembles via actionable feature tweaking. Proceedings of the 23rd ACM\\n\\n SIGKDD international conference on knowledge discovery and data mining. 2017;\\n\\n \ pp 465\u2013474.\\n\\n\\n(110) Freiesleben, T. The intriguing relation between counterfactual explanations and ad-\\n\\n versarial examples. Minds and Machines 2022, 32, 77\u2013109.\\n\\n\\n(111) Grabocka, J.; Schilling, N.; Wistuba, M.; Schmidt-Thieme, L. Learning time-series\\n\\n shapelets. Proceedings of the 20th ACM SIGKDD international conference on Knowl-\\n\\n \ edge discovery and data mining. 2014; pp 392\u2013401.\\n\\n\\n(112) Kenny, P. W.; Sadowski, J. Structure modification in chemical databases. Chemoin-\\n\\n \ formatics in drug discovery 2005, 271\u2013285.\\n\\n\\n(113) Tyrchan, C.; Evertsson, E. Matched Molecular Pair Analysis in Short: Algorithms,\\n\\n \ Applications and Limitations. Computational and Structural Biotechnology Journal\\n\\n 2017, 15, 86\u201390.\\n\\n\\n 36(114) Griffen, E.; Leach, A. G.; Robb, G. R.; Warner, D. J. Matched Molecular Pairs as\\n\\n a Medicinal Chemistry Tool. Journal of Medicinal Chemistry 2011, 54, 7739\u20137750,\\n\\n PMID: 21936582.\\n\\n\\n(115) He, J.; Nittinger, E.; Tyrchan, C.; Czechtizky, W.; Patronov, A.; Bjerrum, E. J.;\\n\\n Engkvist, O. Transformer-based molecular optimization beyond matched molecular\\n\\n pairs. Journal of cheminformatics 2022, 14, 1\u201314.\\n\\n\\n(116) Park, J.; Sung, G.; Lee, S.; Kang, S.; Park, C. ACGCN: Graph Convolutional Networks\\n\\n for Activity Cliff Prediction between Matched Molecular Pairs. Journal of Chemical\\n\\n \ Information and Modeling 2022,\\n\\n\\n(117) Langdon, S. R.; Ertl, P.; Brown, N. Bioisosteric Replacement and Scaffold Hopping\\n\\n in Lead Generation and Optimization. Molecular Informatics 2010, 29, 366\u2013385.\\n\\n\\n(118) Turk, S.; Merget, B.; Rippmann, F.; Fulle, S. Coupling Matched Molecular Pairs\\n\\n \ with Machine Learning for Virtual Compound Optimization. Journal of Chemical\\n\\n \ Information and Modeling 2017, 57, 3079\u20133085, PMID: 29131617.\\n\\n\\n(119) van Tilborg, D.; Alenicheva, A.; Grisoni, F. Exposing the limitations of molecular\\n\\n \ machine learning with activity cliffs. 2022,\\n\\n\\n(120) Fischer, H.; Gottschlich, R.; Seelig, A. Blood-brain barrier permeation: molecular\\n\\n \ parameters governing passive diffusion. The Journal of membrane biology 1998, 165,\\n\\n 201\u2013211.\\n\\n\\n(121) Liu, L.; Zhang, L.; Feng, H.; Li, S.; Liu, M.; Zhao, J.; Liu, H. Prediction of the\\n\\n Blood\u2013Brain Barrier (BBB) Permeability of Chemicals Based on Machine-Learning\\n\\n and Ensemble Methods. Chemical Research in Toxicology 2021, 34, 1456\u20131467, PMID:\\n\\n 34047182.\\n\\n\\n\\n\\n\\n 37(122) Wu, Z.; Ramsundar, B.; Feinberg, E. N.; Gomes, J.; Geniesse, C.; Pappu, A. S.;\\n\\n \ Leswing, K.; Pande, V. MoleculeNet: a benchmark for molecular machine learning.\\n\\n Chemical science 2018, 9, 513\u2013530.\\n\\n\\n(123) Ho, T. K. Random decision forests. Proceedings of 3rd international conference on\\n\\n \ document analysis and recognition. 1995; pp 278\u2013282.\\n\\n\\n(124) Martins, I. F.; Teixeira, A. L.; Pinheiro, L.; Falcao, A. O. A Bayesian approach to in\\n\\n silico blood-brain barrier penetration modeling. Journal of chemical information and\\n\\n modeling 2012, 52, 1686\u20131697.\\n\\n\\n(125) Pedregosa, F. et al. Scikit-learn: Machine Learning in Python. Journal of Machine\\n\\n \ Learning Research 2011, 12, 2825\u20132830.\\n\\n\\n(126) Moriwaki, H.; Tian, Y.-S.; Kawashita, N.; Takagi, T. Mordred: a molecular descriptor\\n\\n \ calculator. Journal of cheminformatics 2018, 10, 1\u201314.\\n\\n\\n(127) Chollet, F., et al. Keras. https:/\",\"chine\\n\\n Learning Research 2011, 12, 2825\u20132830.\\n\\n\\n(126) Moriwaki, H.; Tian, Y.-S.; Kawashita, N.; Takagi, T. Mordred: a molecular descriptor\\n\\n calculator. Journal of cheminformatics 2018, 10, 1\u201314.\\n\\n\\n(127) Chollet, F., et al. Keras. https://keras.io, 2015.\\n\\n\\n(128) Wager, T. T.; Chandrasekaran, R. Y.; Hou, X.; Troutman, M. D.; Verhoest, P. R.; Vil-\\n\\n lalobos, A.; Will, Y. Defining Desirable Central Nervous System Drug Space through\\n\\n the Alignment of Molecular Properties, in Vitro ADME, and Safety Attributes. ACS\\n\\n \ Chemical Neuroscience 2010, 1, 420\u2013434.\\n\\n\\n(129) Ghose, A. K.; Herbertz, T.; Hudkins, R. L.; Dorsey, B. D.; Mallamo, J. P. Knowledge-\\n\\n \ Based, Central Nervous System (CNS) Lead Selection and Lead Optimization for CNS\\n\\n Drug Discovery. ACS Chemical Neuroscience 2012, 3, 50\u201368.\\n\\n\\n(130) Polishchuk, P.; Tinkov, O.; Khristova, T.; Ognichenko, L.; Kosinskaya, A.; Varnek, A.;\\n\\n Kuz\u2019min, V. Structural and Physico-Chemical Interpretation (SPCI) of QSAR Mod-\\n\\n els and Its Comparison with Matched Molecular Pair Analysis. Journal of Chemical\\n\\n Information and Modeling 2016, 56, 1455\u20131469.\\n\\n\\n 38(131) Hassan, M.; Brown, R. D.; Varma-O\u2019Brien, S.; Rogers, D. Cheminformatics analysis\\n\\n \ and learning in a data pipelining environment. Molecular diversity 2006, 10, 283\u2013299.\\n\\n\\n(132) Schomburg, K.; Ehrlich, H. C.; Stierand, K.; Rarey, M. From structure diagrams to\\n\\n visual chemical patterns. Journal of Chemical Information and Modeling 2010, 50,\\n\\n 1529\u20131535.\\n\\n\\n(133) Sheikholeslamzadeh, E.; Rohani, S. Solubility prediction of pharmaceutical and chem-\\n\\n ical compounds in pure and mixed solvents using predictive models. Industrial &\\n\\n engineering chemistry research 2012, 51, 464\u2013473.\\n\\n\\n(134) Boobier, S.; Hose, D. R.; Blacker, A. J.; Nguyen, B. N. Machine learning with physic-\\n\\n ochemical relationships: solubility prediction in organic solvents and water. Nature\\n\\n Communications 2020 11:1 2020, 11, 1\u201310.\\n\\n\\n(135) Loschen, C.; Klamt, A. Solubility prediction, solvate and cocrystal screening as tools\\n\\n for rational crystal engineering. Journal of Pharmacy and Pharmacology 2015, 67,\\n\\n 803\u2013811.\\n\\n\\n(136) Diorazio, L. J.; Hose, D. R.; Adlington, N. K. Toward a more holistic framework for\\n\\n solvent selection. Organic Process Research & Development 2016, 20, 760\u2013773.\\n\\n\\n(137) Sorkun, M. C.; Khetan, A.; Er, S. AqSolDB, a curated reference set of aqueous sol-\\n\\n ubility and 2D descriptors for a diverse set of compounds. Scientific data 2019, 6,\\n\\n 1\u20138.\\n\\n\\n(138) Durant, J. L.; Leland, B. A.; Henry, D. R.; Nourse, J. G. Reoptimization of MDL\\n\\n keys for use in drug discovery. Journal of chemical information and computer sciences\\n\\n \ 2002, 42, 1273\u20131280.\\n\\n\\n(139) National Center for Biotechnology Information, PubChem Compound Summary for\\n\\n\\n\\n\\n 39 \ CID 1549018, Jasmone. https://pubchem.ncbi.nlm.nih.gov/compound/Jasmone,\\n\\n \ Accessed September 26, 2022.\\n\\n\\n(140) Sell, C. S. On the unpredictability of odor. Angewandte Chemie International Edition\\n\\n 2006, 45, 6254\u20136261.\\n\\n\\n(141) Genva, M.; Kenne Kemene, T.; Deleu, M.; Lins, L.; Fauconnier, M.-L. Is It Possible\\n\\n \ to Predict the Odor of a Molecule on the Basis of its Structure? International journal\\n\\n of molecular sciences 2019, 20, 3018.\\n\\n\\n(142) Rowe, D. Aroma chemicals for savory flavors. Perfumer and Flavorist 1998, 23, 9\u201318.\\n\\n\\n(143) Mallia, S.; Escher, F.; Schlichtherle-Cerny, H. Aroma-active compounds of butter: a\\n\\n review. European Food Research and Technology 2008, 226, 315\u2013325.\\n\\n\\n(144) Jelen, H.; Gracka, A. Characterization of aroma compounds: Structure, physico-\\n\\n \ chemical and sensory properties. Flavour: From food to perception 2016, 126\u2013153.\\n\\n\\n(145) Licon, C. C.; Bosc, G.; Sabri, M.; Mantel, M.; Fournel, A.; Bushdid, C.;\\n\\n Golebiowski, J.; Robardet, C.; Plantevit, M.; Kaytoue, M., et al. Chemical features\\n\\n mining provides new descriptive structure-odor relationships. PLoS computational bi-\\n\\n ology 2019, 15, e1006945.\\n\\n\\n(146) Mostafa, S.; Wang, Y.; Zeng, W.; Jin, B. Floral Scents and Fruit Aromas: Functions,\\n\\n Compositions, Biosynthesis, and Regulation. Frontiers in plant science 2022, 13.\\n\\n\\n(147) Tokitomo, Y.; Steinhaus, M.; B\xA8uttner, A.; Schieberle, P. Odor-active constituents in\\n\\n \ fresh pineapple (Ananas comosus [L.] Merr.) by quantitative and sensory evaluation.\\n\\n Bioscience, Biotechnology, and Biochemistry 2005, 69, 1323\u20131330.\\n\\n\\n(148) Wei, C.-B.; Liu, S.-H.; Liu, Y.-G.; Lv, L.-L.; Yang, W.-X.; Sun, G.-M. Characteristic\\n\\n aroma compounds from different pineapple parts. Molecules 2011, 16, 5104\u20135112.\\n\\n\\n\\n 40(149) Stumpfe, D.; Bajorath, J. Exploring Activity Cliffs in Medicinal Chemistry. Journal\\n\\n of Medicinal Chemistry 2012, 55, 2932\u20132942, PMID: 22236250.\\n\\n\\n\\n\\n\\n \ \"],\"model\":\"text-embedding-3-small\",\"dimensions\":1536,\"encoding_format\":null}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "89077" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | H4sIAAAAAAAA/4ydyY5kyXml9/0UhVyrBJsHvoqgRVNVECi0qEVzIYDQu/f/2fVk08+xoAchNBvJ zAj3e83+8Qx//V+//PLjv/74H7//219+/OGXH//nT//3Lz/+iT/77X//5X/Hn/xL/P9/+eWv5/99 +5u//+cff//ttz/9+d/PXz//45/+/Nvv/x3/W/rbn/z/v/TzJ/Gf9M8p9V3bSLP809/+9Nf447za mrv39z9NJfdS6vi7v8zf3bPmVevbH9Zda5n1/d+X0Wofc7//ae09/vT9n+cc/xcfTf59qXPMtN// ai+9rimfKc+6ynr/57ON1ZN8p7pG6WM1+U2tr92T/P6cUto7voP8cZ47jd7eP0HZKx7XfPvDkmaK jzHlC7Se3p5V/GErec2c3r9V2pkvMN7/eW1pjv3+2+MzjbF7fX9UJV7q7F0eS3z0Hu+qTHkwJb5p Lu+/rNS+ck3TfkKN1/j+y1KLR1vTqHqG4nXFN3v/uqXwcLeewvhUqSw5L2UXXo+8sVpnWdNe2J5r yQcrZceHk5cQ56CMPrL81NRTi5+hn6C1WuIfyDWIV96rfoI42m3lIT9gxpXR051zi8shB2buON96 OHeP9/L+wmsc1hXnQP5m3I1Zhl64ttPMTb9qjsc95t8f7nNl6x7yN1sZaaQtb7DFd63ym+IQ5q7n YsQtikugQWDOXLM+/Tg/uehLyfxRb/n9x8bFiItQuoaMGS/WLn0cwdX1t+W26uh56cHqM8en8FDY e9rvTyv+8Yxwot8tRSTYSz5D23sn+V18rbHK+w+tcZdLy/rFOC5bv26OF1jjcEos2XG75duWWlay +FR3RNIkRyu1CBAaHXpuZenJbDue1ZIXEwlj7yz3bcSpjC+g36nvnDXqxgNo8a30+aW9uMaSDHa8 Q42QZcZ9XVOff+Yaa8Soo/WSNb7FT4j7YsGBz7VqlmcYbzC/Pdjzc2fEQo28o0Tc0zNQT/LR+5Fr BL34EnpB4i5suYkRivlmcohapMO///0njtSVZ+qSTuJ7zS1/M658icv8/jdXnGvLRiMu1koSh6LA SDxueQNxs3pK74+vjrwt7+aZiwWcwRGUtLfWiI86NY2U3tuUYxl3fUwNzPFp4s8ijEsyj7gwmr5S ft3seoDic/U05KXGI6nxWKcmvailrByKkB+JU07rWDsup/yuOOqRXOQFRAysfl0j4FZ9WnWfOm9o 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 QRkIAA== headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a297e18e9232b-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:03 GMT Server: - cloudflare Set-Cookie: - __cf_bm=tK4nquZuflShafg5oIjF.VJRWEXi146q8TRMj0Sy0wc-1771550223.0557468-1.0.1.1-GL2M70GHZ8fGop8wYvcgjYaC1bl3YmEG8TNpKDHxisBWQ6z.Ygtj6cFR27.vZcWA7q3NbiMexgkETG8QkHCvf_eOZGlktgnGVl.ZDA6C575hkz2OuL13Uxynanq4Q964; HttpOnly; Secure; Path=/; Domain=api.openai.com; Expires=Fri, 20 Feb 2026 01:47:03 GMT Transfer-Encoding: - chunked Via: - envoy-router-7cc485864c-blwjp X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "432" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199978340" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 6ms x-request-id: - req_8056a04d127d4b328c031d9541b15b6d status: code: 200 message: OK - request: body: "{\"input\":[\"es 2011, 16, 5104\u20135112.\\n\\n\\n\\n 40(149) Stumpfe, D.; Bajorath, J. Exploring Activity Cliffs in Medicinal Chemistry. Journal\\n\\n of Medicinal Chemistry 2012, 55, 2932\u20132942, PMID: 22236250.\\n\\n\\n\\n\\n\\n \ 41\"],\"model\":\"text-embedding-3-small\",\"dimensions\":1536,\"encoding_format\":null}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "376" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | H4sIAAAAAAAA/41d264kyW1811cM5nnHyBszk/oVQzB2PYPF2nsRtGNAwEL/7oisHtkdUUd99CAJ PX26qjKZZDAYZP3xpw8fPv72w399+c+vH//84ePPP/3+9eN3/Ozz91+/xyf/jv//4cMf57+fvvnl lx++fP78068/nq+ff/zp189f/o5/K//85P++9O2X+J9P5d9KzTpXad/980N+NqNH7fXpw5gZK56/ WHrfY7bx/M2ycuKf4vnDGm200eVCpeEO1vOHWfpue3/3fJ+tZs8xnj+NXubMpz/ve+I3q/z5zF1a 2/LnveCmas7nT0stM2bL52dts63I/fwAbcyBtZpPH44yuALj+ZurZG16KTxU7f35m2PtXtfzdUZM LL78MS+9o8o6rVy5qz7RPtsc8vHoY/eesqYl1w692Kg18Vj9+dO1V1tbPix9zbrxE8/bGtjY2M+L sldZs8mVVh1Rn/+4Y1trfV5m3P2cWEDZ0pwjcz9/FTuPS4lJtDISdy+mC4vKJg9U+8Z+yoVGm7t1 ffa+Wt1d1rnHWL2lrAfMZlWxklHHLnvK3886xrbLY0PxsV4pImsdev+zLnxdrHTCUELO3l5zRl3y 99i5svTTjiNZ1hI76aPG6kOP9Nw1Q36gdWxh79MOetQiZwK7CptM2dWJoz667GDFrmBbnz+dbUYZ ciraxH1G6fYAsJUhfiobzql4yY2TAhuSvQocwDb0SlinWfXw40bhap6dZ+ujlJTTPwfN5dl+WvKk iufFc8OoxNCy5bPzOGc0Grxp2pb41XF4YH9LbWLRJEIsldGgiD+H782SMeUG5tgwYLkWHqnk3ks9 SstNB6RbBQNCrHr+4Yowk2m+ksdiTnVqG1acWxxQmTBK+1UctqmuEucKe2uuss/dp4YqxLQ1NXz0 yVA19PpwqaGhduGhVo741w70HOzOCCz3NGdHtAk7wnACuqy4Fv5hpR4XmNZaGkLgRhPrInF9IAKM qQ6Dd+GxSWP4p8u4EwsmERgPUKs4gdjZ67DzlmM3MbgYHUu9xVvAtazSpx4thJYiX8XBauUpWF8L 22J3D2GwS70ruBHcgkAgRHBADd0W3FdoFMIzRVpgwpfVr9QaWJO9xIPCUlppet7XYmwUdwOw0FLM bwyDGgmfPhXRwal03WLsEQ5wE5cMM636kA271MrUABxwdjg96qnpgTSCAwDtmdMeNPbcS6AigiiQ 1TBMBjPRsAa3hOcVi8bZyxiKSzrO1JOrOJeaNYrcKi79vPgPx8q7SrUdWtSW1Yar7RL/GkwP/vbZ TWxY9AhdEng/HBQ9EBNoYaij8A24lg+gQAMDTg9gWTdQjU9SDR3fxb6MIUGsBZC65CTwfQEIF7YB hEGhHgxRGA5IAR+CoAZxOBl4lCrXKuekqwXATQ3BFS0X0FIKWlhAcF0vjkNdwo4QDkFtTXcGfh1L q+5jb5wOuVUYOxCn4Y2Ao+664UgCMroCthjwX4JB8Ki7CjRsHVul/qP323A9eNxLs12BBXsOB7zM xamWWQIcS7wENgS22mYFo2zEHF1y2Dd+ZinuwOnKJR4vFpCoXKwwYcONyUFuC4dG0rObNLTOPeAy hu03dkwDLlKGBUAvFwI4LXa46AgGNkdT7oksulja08+ySCK+G0FPih3vZCooV0uGUYU3Hd61aHoe MFj4uCHnaCNqqcnjGC9xmUyZ4Pe2egccLkAmC+5Ip1ZIeo3MDUmWHjpgV8RRjRvwL3M1zXorf1Sj O5whgva01A/nyKx+M0hOAd+DV1N+ZSNrCTGhdY6X5E0rWiu6gngsBJhQmI3AOzJaqJdvgL6KZvvg EtjCIu7VrqkPbqxvzyjho6YmaZHNlgVWTNymzgyoEU5O/E4gG4td1ZtGLeJ3cYp4jjXGwIxwjIVj wGat6luI7Ds1blSyGdmmJUW4qSG4s9Fka1eQXuypkCRhWW1ZJtMUhSmVueOWOIvgy1xpveOruDgy B4np8NxMqeXvBxD26kZ14JkA3g2OtwD+sIBEnLI1+HWSKIofCtknge6wF/IV05w58wddLgDiumy/ 8kTVZ182BmGNmHEhpiHi1HgCsKaOlwTWtiVAagsI/HITLmDa207NiRIBagmpyFwzp/0s3TnCdxNy KAAX5dDjEMLrpJ7kMbqkL73yGFddwHJQtHIYiS1oeozGjiErHRWusAlVN7lSoU4gDoWpZwCBoKhr qVx9TSGQkJBCCUWKQBpFfwGoHk7APXlGUY9xl5RjTcZTXkKYVcwpIAIMTSdrwZ1PzVA7jLemcio7 Mu2UDKQY+ZLRvMBsyxrKkpJSERMZBLgl1KsDHSv3AtzPYBOGpQHQUtjLRhyhq1kRP3cR7g8nYYbh hY50KA04wnlk7+YRsFy1GHAFvkPEFiTHjGLNLi6Y4S79dsdJs5XmONUHo2RgabEljMKiYxkkxm3B OCTg1rojBGYX3FIRjqOzoqIsD8wC4HRudV6IC0P5R3wXtiqgtSFzhGe354dlDC2fkDsoGq69pPHp lsL+9JbBwc0vwjwJbJs5sMIbWBtijcIbLApgn3iAgQ2A0SjhCAe8LKdDnlS24elNz2DFJgCZogET 9oOVCc3AgZqUQCGpU5sERqJeoDxlBRETyC0q4oANpZKrgEcAQ5b8FKCQrdC75AHJVZngyfAuJSw4 4e28HvDl1GeAYeHbGpYMDb8JnGGX6aW5QAgxvmOxEKJIBrEdYHpYVnUXHAZBsge8XjeMzteQDIn9 MJd8M7XRmyMf0sTE4RDhpWTJcZLmBKZWG4ejXFty3ootJ6UmfA4AKdJLrfMg3dIKI3xRt2ypZ2It w/ic2fEvSh2thjxWISl8zHwiXo554e/NmFlS4+KI80GIxvWqFDnnxIpNLRHWfCqIXOkaXIRGJSK8 nqGEGo7iUDoUy7Kqhlr6nQmvJmQs+bCuvDWOMos95vxIssrPRuWfC7nAv/fiT8L5aaUGiRIQ3vOi IJitXJYaV2YvXW2Fp0N9P8PJ6pbEIxo5u9BxuIf6gror+TTNl+fsWieDSWYIHMeewmnJniJPqlpM uc+THrXkZZzRPWEwcqfuFFkqEt1a0SFjtK3IMci+GaGHXV1SjWCdpQnWY6BvninB7fa+yquK0KPW 2o1mJFvQS7f8C/uFRVP8nb21ZfXzaM4+DpqRuHOvn13HtRuf2ln7CU2BEb3hYa0msfBYW915TAIQ j7M4xlO/CgDXtxYGgBSwM8LptjhETL5KnuBr4JvEs8GHp/EwSHLKM7VzuVY4Zz1t8NatKudIJhFQ VUv4Vuw/4GUfFyL7hzRzWgEdRxU7qOwxbmvkULsanfhpuxuFCYoyYHJlVC7AGIlzvLtGZOz2sPpX j3Hjx+nJVYVwBx7IF8G1aAFvrhzN8gi19otQBSZSwQYi8UCE1DVsiCPFGACh+q+YWwmjlTdFwNQT NJEoD8kAiMEPMHxeaqaL3Xalkq0QY0UKAvCpu4rk0pUtJBgZiYYrK7aFrNXwRa3stM0C8FK0nljD /oJMPT/Zay4hzLBNCGPiVu6Kpyx0AAUYvdonYbVFAuR600BLLOZrqXaN9TOuBQZY03xbpY6mWBrY Dt2jhDJxLaxIS6GBx+vqcwGa8Bua4vK5rGzK0liovsnDznVjWC+KFNQQcpnGAmkvIqLuOE4cFnIL x1l3UcrMTOsCxEC5S4LOScKEHRqslxXlEiYfSovQBF1yhvbhXHRTku4qtI6JeIGMU6nYgaWWk4lM kxoQuycYZlUidq1lhcGH4MgMqMMxyK9Wgn6TmyAtzL6qhbaGTfKK/6Jm0vJFLFVfmo8En0ACCRbK ix/Mjqk6cXOPIMsgP4G9aUPThMrsclvZfeLUp6qZkFSJy8DVkQcu3QUAkVZMTLZ6wsHrMb6RZwKi Z9MyKNP4CPU6pDJ6SCkaq4f1tmyxnyzH6KgFNOQMQ3QervGeVB67tcdS6ZuRehdLhcOqOJWMfFI7 ZBVWmqg+MaxzMCQrIU3/ZF4SIS268ZW3ex4Um5WiqR1L9UpW3clfKzasqcvadEQG/m5RNYtbmVUD NdKCshTXI3ibpuuNuggVSdVC1UPSpOW9Sqmx+I599HYmtcJq7eHZIRWLpWhBmnu7TN+HTWyadMIO qNYyBQQdkCoe4YBwIFSfB2S+trKrJFerbC3DUagMhUqrYpV+5PGwL02ZEBNyGjiGdaeWEXpjTb2q 1SMRTJXX4g7oLM3ZtglPo3aIQ7eGsDFjH9rbjhJifVW8CRumHlddIjLJHEoI7cPSqODrzis3mEaq ELFR8VTVjilXMxqV2mzT4fSCPOLG0WNdNS7juJIss5o60rZulsX8pokSsRIcDlXx5UBkUik6bpYJ iotmgsye0Uznl614gOOlihHsYOujG4g6dVqrPOF8RBnGlTXkAmpe2N3JkqRxRefpqrY5AIZV3V7A 3B4mqt7PZOzlEREDVBoAHAMUp0RFaJJ6e+bwh5QOmkydhI4pgtsRpAr30WFHijeAAOG3jCtlZG5e vaYUqb3LtpBOR9lNtSXwbt1cGY+RuTLAK4BzA1hGfF/VmxrCJ8CP0YZkqfGrafocPH+ukOIh3FDC wxknNEhAaOsMgr1KwpH50B2r00Det1J9YeMC6AKOsVmqUvdkFnQt9mp4Wm0IaiRAlNcNroLk8/Ai ro5CRDRtUZ0woaY+j0kMUmK5PC49tzoHAAoArtTiT6d21eLpXaMJeYY8J8GkikeYbwpG6oenhXAA oHajgQNawtkzA0WmB2vW2lIBhpgmyKkzWXkWcuKeEAVuYcVGi0AIY8Zbq/bn0oyz7UOQJ05iDNMT nQ6ZZV6GOmzrEbjVgmDnsXPGWVyNaHoegK9C1UvrMBmasC3S+XLyKvB/Gm/KNgVsgyFHwMFdNLEY rEjs0Nw+WWO0pW08FWk0LRMerVNvVh61cDlGV4atUjJp0KKS0xdZGVFQhFJMsHvkcNb61Xtbo6Tl skl8tF/UhQ7Kp+x0jtfCUeA7tg+pCrF2pRtw6GZV/dm9wtbQ7VU0rVaSwhnETim9B2yYymus43tf avoeQZ5aAPOck5nD1JJMHyblvQPcg0mTNk7RHbOQqnJJ+O4RhkjgWKJqTljJZFQFH24VF0UH16tS kaT4q6nwZiJhdj3+aKaRrwQVs5v94RTvMKVdRZz1PI+QfUv0uaXtcFrnTBM63LYEIf0dLVTHSj5x m7AQ7oq8laAoxF87V429B2HKSC3CXnQssbw4YoTeqRVywNU1+jCen52iWsG872hNRHqrLMPZRWva 0YuUpzdJMa2l6M3uORwYInxZqNkIC6RIc6Ofakxt3FRoqE3rJIu9iuLvC5NGjSGVzMzTOl2BeJz2 z/m6LM1qhHH0wALAOdqTh0P93D76aIde2o7Dug8i+TI1SB3aJEt6ORCwu3UPHt2H1bUrMi7VC9AH cG/HC436BeORH1u9nWUWo3pu7/c2M6FfSOuJY/djN9F2nk5vq94A7C9t35rsAb3xOGTMrFmwU5zc tK2PP6q2lce3GM+c1PJpvoBcyPtlY8/SjSBk4LG2PvpcFfyug2asun01Yppvog55qmrQ+vovkIXA ldv6TQj9wiQSsHA4EwlT+AX2h1kfC/v1quUdAPgzjcU61YawEitZGO05qY7lca2w8F0YeU2jURC6 c5j6hVBBO8yRpPUaaTqDCO04vEmyb1vJ2YRUjFO/baMhnsDeClEC9zaUsRzY1W3NbUAp3qdxQwCd I7eyVWtjOm0pikZJQHmzinVdf7pVUj96PXhAVPBVzjnQundfsE1VeFtD8sMXbNX+IMBvstRP33wI akJbi2K0Jm0CJ2vMadi91qL1XeY0xIVant4wteLa1ctLiiCVuoMlAi6YZNPY1fmZ6eZFd/DQ3lJh rrkimxYFtlDInVnf2bOFo16HCye2sVlUzqTlPlRS38jtWN1jcme1EuA3145Yo/2tJIYrmGzSNk7B uMVzZmjc21qUmUWoJvdm+AT3JSz4Wufsp1sB9J2Y4NOtDb6ZmNwaBkwwwhJY9l1wUoWK/dhhoAXO zTbzbuQEQHEaJdTpnnykw6oqX4ZX7U0b1wOrp5VpxACCuu1HiH2DiqCAs+do1rtfifZM7t4IVsc7 BGB4VO62pjaLYNMOB8n0tCx+AFFYUyuy1erjQgpylee27pMD4De1ct2P1krVJ5NtYKbqoix+qdac gELBBwX0mh0PzknQyjv7dKvP5EFmmqrsfMORs6RmySl7oqdpO22EzXGYbcFB6gSYi5sxN0J2ZHWP GgDimtq8UadHdly0g35Q0LxMkiAtZ482Ty7XVCMcqXwpy5/hzdL4jE0w64U89iqGZAxHf7OnVTIY o7m0Bl7mVnrn9C9pJwuQ12p9dtee1GZR3oselxkveCJxRYiOTezVu/aurhUabJp7mtvbMAARcqso JJiLaaGPYhjt2RlUBlZNA9ntbx3oVPeWpSVgdm5WBXTkaLfyYIhCVli/2+l7DvuuNvGGs2EXkgsv 2P1eJQ70cqJLalYEHyi+itEF0NnMmtOFLD0m3bCFtMTq5zI2Gyg3ZZtwzgCSjYqz2tBj4ARS26Ed 2aNH0RondsnkElSaarCg2tynMgDDnSlaL4Ryl3YIq1/3K8b20YvM7qz90ilcKwAPppk93PKwiyXd T7ceugTEVoY9qcS2dh+WOdQBWg/U2yMsRiMOGDqaK8nZiPnUeQTuYj1Xi7Tm6tQDVf1mMte2Oi6H E+3XCiG6dCKUF8H2URPiVikVC0PdDhfqyaetwY5WqdNRqEDd7JwWjhgxXHtJ7rrJOw5lFDNsyk1u 6jH80aKsL6Wi9gADsFl7jkc/O6CtDAiMRYeWdbi7YjW/N0bjkRtdTSuBZI1tIkHyBFirzyI2U3n6 THK8Wui6myPFcU97m7vgtAyZZDM2E3hjohEuXNRXmTpJLgG0uHUkRYsTGCzWsX8ptW0+WSQS5gTL 7DwwCdK2lJsj79KX8YvV0fUd6YoIpGi3sj2kFh2gSPKqvZyqdB1gAG7vxgLeLEu7dRdbCDW70jF4 VxpYIu03Kbqbmp2xqVojBdOg5SxZnCZ2xT6LFWtjd08fsRHRZI2VPAKiYweiAkDy05bbwP1YVGCJ k8m/mg8V0MO7zQnLqhIqEdWczb3e3p/30n7i7/d7whUMKIrFYRrHKFOpk9v5npyOxTFTVpND7h1a bZ84MaaGRAxKm3x42/BYxxHA1veMpulnyYvPU8Dtarn9iJqKtg0wzZ1dkxYqJ21pOycfKDWLsE99 tGmKkOMszb/J5aeoDnElMktpsiDxL5fomkpTLRbenRBWdda2luY7cTlcLpCDEWtk6NPm4JhC/E09 ZgB5LvkmNhC7UDQ68HzJTzLoRrFhK5WAULtuYZepxT+OYugijOa8HAQ3hy1UgdgCjsFgPl5NEvr0 ZuZ6xtya6IMRjgPk/nWV4zoFQHOaIwGKdJVmYAHINqmt3I6kvXXnHBw8nLwgIaO2BuhOUkYZOBbB bXbabQsr8o5MRSi1nLaPsOF57GvV3qWdgC06PBDugp16Pm+GrUqCcXg0rOP3Xmtdacb1RsjIUQ6m IttW2K0cOWHTOuCeYAXWfm5jZB4DrYDTqkL1zsKBN9sn+0lsOmAnvWPnG1fjiZD7RbZhTWC4B3zd 6mUMluQrlA0GVNSrITXbrZnUNdnHJaEZedxzB9C1vUjDp1Un18xmhcj7yWARp+dLXToymeojcpGF 4zaqagysu45k8jSF/0DGs22OwaYuWPVjjf5Q+17valWb0ln1xQpBzvkqlO6k8koilH7MmGLT5zQI SomlFv4b05V2M6GIhU0TPiIYhM0MjMLRG5aKAxuvXK6XJu2jqexqe3r3cZz8zGV4bRRtslywwzms xY69nyYZBGbf3Tu+bkOwyWKus8/JF/EOfTiAL5ZRVc0cVLJsoo6KBi8JG1uVbfxI4NT7Y90OfmBD 4nANBAsDVh7spC7L1ISaIwNY7xdtKqsz4oBZcpl1vcALtyNQv7VNrTLkShSt57Rx2bedA0y96NK0 CDEWzHwZLYQ9t84UR32XamW1WCYGw9JmWiNxRSjnxA01kAjYvgw3gVP1jijgu3wW7jxyWMJqi1kc wbi8rxHPoFoBindO9U+pLDicnjoJBYgWqYGJp1mp0qKe0ROXWIBNusNA3WjNJt8wEFgUuWXdC5I+ jjS3mT5IumwyAqO5izk4kCenqdoOJal8WnJUv5oTZy0pxZ6nK2wab772bpZZ3NSUKuL2aAYpWCSY sa0IKUOsvpEU8Bf+E7QlLXlS8zht6GE5umNlNdlPuYop9qxB7yJ/CNptzxZQQtqCi9e/qulIxroE Wep32JD7rt428qV2UNmpzWV8IX24VVk/BnxQ/qMa0USMmhq+qWVbir+oRa4qhtaOvUeBeiHsWbVN RxneRukHKzqM17kdBXOrjoRTzW0Nf3cFdqqzy1IG9TZFf0P2TZVK7zZHbLGn2hSuZKZ97gpSTBNq wCV2Hy6AvAsbbo590eK1YMSXHmizNbL255L1BRuujTFYmxlWRSguaIahAdYZ4G/lYB8dPsp5ogap ODpuasnGRjZcR74VHbnlr6h4C783Iqw06UU7MvNqssldlMekxnpPa0PH0UQ2t707BKjamqqCxI4N HplpGt/JwbxGE0TzKYF3ypWD5XS6BgU5SgH75L5vJA321TBmsA5rUjlAcLhzTYEQJftuNktb3wRw W7R7jJ9qwIn5ghK6JOWcYaC6wEZZjmmKdfTedY5zbUsNXVP8WINTOPKEfnLqgxg845HyBFRZMHjo oD5WAhS9dw6Z6yYziaainKNftwykEaRajIwj2FL8Hu3wqO8YSlS5Bt206vMMj9GyTeNQHkmkJyt/ TvInMg2VCLB/nM3LOhcR4IFTgXQOGvvNtLckTqn8HfAdUXemjjRpcVCkQRUqo2yOV2EyqoI1KlXg eTVnBGoGLJCRX4soar+Y9vh2K9XgOLs0ZZTJOU+Uym2DUpCbrlG9+IcPze+Uo6sB5otXPRe3Y09v p/c9pvWQCfTGGUR6h3CDqZE+Wj3HZlqj3HoemHs1vrDQsLX3DMBICWYfxfmYpDWRY9jMA4rOVPBd XeLHWr1xexz82tSOvcPqUe2hMiZs9ODeVSNda6dDwHXFRVs0cDZq6Sb0jHkr0wV6MG37ZD7kgzKu AaGqXQwulpah2Q7nwykRrYBCRaXJCpK1U28OSFJS565JlVJxRGqLaj3Jv2hHx3nrmwm++eaQsl0a fdd9VDYTD11x/MAMLXjdjerz0W2f3tKtUWW3nqu2j6r7mv7uHw4d2mtqWDrdetaEdzP7GntDs7Uh wlrJ++Y7+IKB0d/RKcGmKlWp3Q7wiDjtOtt/M0bTOvGsWs4mXvVR58Awydq5yV35riBbWUS24qcR kUZHetyitrrHGelhDUfD5vJSKsSGOaPWOLvC3mFj/XlvDSvzml95610fHCs8tnbM8x04mlDevmuI Mg9OTX3PuEL2ePTmowik4vQYFsa3CM33CE1uyKTb8QxXL2RO7e2rK0ZXnQ6X1BqAkgp75zuANjJs fMc8LyzSFyZao8bDSc0ylCSjho3RVtNS9sloStUGSQw9MjtWFMf5iHTe1X3fqX3bFXJfpLNO3YeW uZuOli8u0pyscGoRMgIbK0IdRTW6A1jMp+CcHijVXdv020fPVcO3i05SRsLebRYiYECOpZKfmyIU 89fejV+67c0hZXFTzeNbQpWKQrLN6pJV3aYPd8P3gMi37dfglEilkjjiObXQUE5hl1ywkyTtMONm /BwSMK3jsjYt8XCQbDWijW/j2SZkWOQStAwdJxM0p8I3S1WbrrJJk2gXL0fk2eCwPNOaVEgQyzv5 7xrXarte7actE2Sl1jva6eA6S7Uhcbn4Br53tMHejk2jdhCu3sV7/nYBppG16czfWhnxLS6yk9fz UMA+eCmD6ezv9+o8gZu+MJivAaHCQrUkp+p0M/cA92D9i7txPKV1QLLkU/Qdrebcrzb7we4bfXMr FdsWHKmiB4oehhA4y7K5c2d48jQGkKwZ+LqmMihyoDjrdb3zTW7pAKe2hNbwMbuPAiRHMKeJdG1E I2VNPZaNYZjWXMh31/krfAqL4Oav76QPvR5BrL1rR19KezbsTOVRt1j4/tdhL4TmFCmv9uxRi78q kR/b0BW+Z3S/h9OwsdQXntF3/V3lbXbLCZ3NN9J0G0OxKtsXrBmVDOGwgMMudhV8sZu1bG1jH2Sz NTjh4LK2ZY3pFOTabG4mpAq+gPRK04o5QlDp/tk2wdoopHJVEoO42KbpA3AChmrabbT5vQk9nomB 0eTfHCKmdMCZfxsqA7heImyEn77Z46ELWrsrKEbqz7EdBoa6TVjjxKymsA3mXlJPFpsd7G0h9hqX N+X/1A6NpXu6zlRjdYR8Abj3P+TRuKg8rpwBKzoiaU2FNgN5tTXlIUToSUHiybeSKJjOxsFkRi+4 is/rC9dsuj6bA+xOsljhLV9QoV0OZ7ivDUUfnKy/7O1PlVNq9e0QlKFYf7OLEq7mHUr67Q3CPtjj dt5Gi+QA0HiPvpb+Oqux66wZhI0msxcQXwqQyheOm4Dt/n1l0xSfdGrj8clfzv/+A//9F37p4y+/ ff7y88c/f/j49cvfv3768ssPXz5//unXHz/1T7//8v3PP388X/qf37//8Qu+9Mf5449//dtvv/z1 6398/e2/v/z6Oz7+BmE+fv3t6/c////P/8RL/eNP/wvVA+2x+YEAAA== headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29826b7b232b-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:03 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-5b7db9b97b-jx78p X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "128" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199999" x-ratelimit-remaining-tokens: - "199999930" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_4e27bfceb551446d866fb663564b8523 status: code: 200 message: OK - request: body: '{"input":["Are counterfactuals actionable? [yes/no]"],"model":"text-embedding-3-small","dimensions":1536,"encoding_format":null}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "128" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "120" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/embeddings response: body: string: !!binary | H4sIAAAAAAAA/41d264kx3F811cQ+8w1qior66JfMQSD9C4I2rwI4hoQQOjfHdE9lNURdXzWF0oY zunprqrMjMiMzP79T9988+HX7//r839++fDnbz789ONvXz58y88+ffflO3zy7/jv33zz+/XPxzc/ //z950+ffvzlh+vr17/88ZdPn/+Of1f++cn/femPK/F/PpZ/K7nH6lm//eeH+Kz2LH3Pbx9frL2W 2H08vhkdf73q85ut9ZyR4/lpjLbWlh9qfbe22vPDMhJf7s8PR8xYO5/XLGvFHCPlqyNq1Z+v0WOV 3eVTfLuu0uSyvcZas+mv1VZ6qUs+jokLtOeDlTHXrF2XYI2+h94ZbyI2Flf2oPTo9bkKWKoVmVMW McvsVW+29VH5T7mF1kZk6AOPxJbX9bhun2PvukK+mvj93Pq0Ndvo8uHC7s7nNRsWtu2a8lR9ZE25 09axhCtksSaeKbb8/NyrjZRnatFy9/L8qSh7txiy1Hv0NnRJcmOt+3qudeCw7Oz63RUVq7JkW0au aUcAp2r254Fv+KDsOXUDF89rW8+PsyROy/MCZY9otT9/P9rEwUwxo4g68RRiBQPnesupGjtiVbn9 jlt6bPS9VL3OIQYQsQNe4Hmiag0YhT5oTzz+KmoWiU1tRW41B076VBOE8YyBa8gG1N6bGgDO2Qxz Wb3l6i3krDdcYvSUB2st28MsLlvBScG/kati/7acIPxlLbsu8057jTbFLiouqQcAf43fEls9HavS Byxjp3jHGgN///xwzL6jPh8py4Zv1dWDv63dVp+eaj8jA5zPxGWfv9PLyl3Ufe1R1U5xyLHRoR64 YUt4VXmi0fYs7q1HRXBRX5EbJ/uxKfeXV03eiho2rNhc62w4RGpCM1svGkhWh10W/fsObwHnIpuN 7+0pYQSGgW1d6m4CnsV/DH+PCFl7aMhAiLbFwWOtNiNkcXKOLGPKpsFwl67M5tluQ2Nhq7UhSsq2 rc3AKV/dXAgJcIkzj33XmINQsLFxIQ5Of4s32wPba4+7sJOlCnZJBIil4CEGjF6dBuJTx7nVx4Iv XPZbvCYOv1gt8AxOQ9djh42AQQDbqJFPIIrooUsGe57iJwdcrwYknKQR2HaJElix3fQ04iQgSssy EJTBrSsEBN6CYW8JiQmLrPpkQJBRxtaQiDWTbcRFe5sWZzf+ukyFkNjD1JgEvIdTq/AhYCGwSbls 68C68vtYpyh6/xXeGF72ebYAXKpCUAZUfCwRHWcQHjlsVwKOUqLUhn8ZTWHCpv8TRFGA/jKq4Rxg x+phDn8NEPt8/MidLeSqV0RvTRZgws08DsD192MNYP7nquSevQhcj5W5Vg65/2SglEMJiNfFZ9EC 4V8EUcAKF7z/EoPF4WGg1eOHEwxzm+LfQGB2VdcNlFBnbHHHC843JFR1hL+1FajswYiiHAhWvbaZ dQ2YlcQvHD9YsQbVjr0uTY9bxWGt2yNCFtyXxH+6fqy5IHBgRRwvDRI4sk0fDAwCkcaMEMAc6zgV Km3gzVLF3NbAKVAHSajaBEARGGIZFO3hmcKWFiBk7KJYDafASQCcU+EtiMfpE0hCQSQi8E41GfgQ Yg4FN3BvVZwbmAXOrfp9MCt4oaXOqYMEhfqHVhhSFF3hEvh7Qfw4AtjDrisD+5juS4A2YDb61SAV ExQLOl+3YjYcRHVagOEVYEF/qJNwVX3WU5iFbx7EH8/gD2LXU+Hhhm16MgJhgI5LcwSI/orhOumh 0CAcbXidqoCC+QklrICQ4HxqLv1JAi/nNmHY4hsZ18D4p3IYnPUHh3vlMvaqymEGyIZScHhRWIA6 hkB46Lp2AVys5wGWgjCulkIvyJir0Q1H0sjOAtz20wvkNkMg1mK8qQrnsHEMhQLdErSktSYhd+bU 0ISlg3PWgIf9xGXlTpOefTZNF8Db1q1uDRjRGBxR2E4jvGsF7V13AAFzSW6BKBWguuhhATLpsc1X bD1VMcCii3oVWD6Cjrlg3GhW8ylATRIH4SXA7tSmyCsBk9WBBZAUYPo01NGLxszM3MM8cIvet31Y ntT8Mn+CYcvQzRn5WNU7NCHkK+rCLyUCnuURwM0QcIRgwtGNnfu9fOLHF2xYw24M4XHnMisAxnpk A+/9QsTZkoqCwZZpCZY+ABzX0ARRAeMLyzpFEYg65p5TzxXcQKanPrEHCAyyhdxVi7jA8W3WNpR2 w4rkYHd6rK1YHM4edDPFOAtBKkhJ74oPkudN/VObwG4CFBGugLLzeQ/4naypxwAAF5HMXClwZt+K 0xGycVfPqwJFAJBpGAIImKtYLgCXVFfI4+3YEX5wD8fJu+H/BbtiXxCMUulfGUzWh/I3g2Mvqof7 CnvcnICVgnBA6qaROgRCBC8nsbVzwYZmlcBsx1bnCbqyu65ugJWQSFhGI8FiiiJ+HIPVNNTBbpbY DRHl3Io/caMdQUlxXifaFr4Es6kPj3RtGbjmbAITcLxsaxoXoEv+DS4GTyTbhR1M+Fl9fPoiXPlp op2wXg7XEeNYVvxmcNjtqclPOA2l6jkD97mUrK1tXAvnB95x2qc7yXeen8LjMvv1vKdBh6dOAL89 0jYZ+FBXvsMLaD0jeM3UBFkjarPUUjJ7rmWp5LObE29AvRaz4ZamBCL4xVUsYJyTidxkZloE95Ug vtYDhSOyjdDVBRwvCDWIEYsArNZrzKrA5xxcQMDnyFhWKKhlFi3NYVuMi1Q4S/hxhQ0IBLR/OYA1 WQiUux34bmj2myxrD83EgSTkARIjipRHXeEyi4mF1RLamADPRgg7UEJPIarzAkrPWw14jzE0DAA4 DvM+XBjEjEO+jN/V0wFIV5jmlJNYmJyzZGKCQIAEKISHdw8n4cCaM7wKMYFexI0zQ4ZNV6/RGONq aCmLCT5J6gIX48KyDzjfzMlKkDu6cXAyXNbiOdNWiotxm6lQ765OKYVrdBJWB4UvBN0oRsHpC80a cAewvLBThx0uynkqcWxXg4aPxrar368ssQzF7LjbboQdrreYmzi5yUrKVi0aKLu7rREhqjqNB3xp mk8jICgKw3GKc2jBoDJRHcraGslJV3SPp6rFFgs+EudwKWdg8lQTX8xuLEUTpAxTrJnuIQ0Vnqt5 oBesSCvDxa5ugfZAsDiw4ibfyN72RTK/9FaZf9xqBpMRRO8VeIqI18LSVdF7Pu0IBBu56rm2wkI3 jqGERWzf2nFi821I6g8PFZp+reCya5qbxCa2lPJxECEOpUFwsYDGS0DmgG1Z8jQBk4qVT1jfUkUB E1xjKyi5itp4ADVjJnVLMwEG1nXpFUhmNYnNylAxGQvAI2JlFwSmRfkXWmC9xjwGokd/iGtu74K/ 1+xH59p6SrYfCCKB0RJp0MmIWL2Hx3kvV345nM5SkcovslUVtRwxadtYlKLQF8F3Gapi1oiVBfku wYPlYjackPPCnbb5hK5LczE8VNtqAvjjOiyZhI0r5gFIfoaWTLEqhT5fI86GqWs2OVm8jpxWAIs5 rX5QxpVnkutmg3Ftc84LwUAlW1aAuJEW6b0mxMHSurCS3igi61rJDWItFSoA/W0tFxXmvmhsWs8m tTBoi1MwihZLgIBxCsVlk4LADBVP0AqLZlWPJRiW+UErh+aZa13NKvVYmEpthoprenuC/nsVB2KR 1axAl/uwOnduVi7FlrCyOHlSBAHKW7Ob5mrjFLgqINy5BKv/Qo2DbtQLRsCaEYJcEEsRnUzP10Em gFbF70dlqkx+q+K7xYRAODMIcioQKUzTKFKdVz1SYzy3S9dvxaYWy7w25UXKWjqOYdUlgIsrTDoo m86nXOOFMkpoORmxHK5PDwYz9sugagJQpn0ZVIwJO8vLBROeakvBRLxuOLYFDlnDAbYLrsNKjIgw KmbqeK5Uv8E9qFIPbYGTvZVYUM+nXC6oxlQ8w7iPE6SloRpgAYooB+ywG/giUlvKASrCLpyG0lEE +ejVKFfbReVUsaqtKasuzANLnAMkD0/Ps24JNlrEc8H5d4/opDzCUgFnsLCaKMTJBtFXPwDKh7Cm CSXEvmGCOmbty9KqJcxra161ESx3SV9guTuNWzlMHzlCE5jAT7meUtHrt0af2xPGIIKtyNLGlVvV AwcS01R/C4cxnNPDOTAPJBedsxaRbiEUjKnEAH4UnEn5NeVohjQp9OzdxMbgdjNdmNOYhdP8+mRB vHZL5hMvVzuJi8JI4/iMwENhPJhIHSZsBbIb06lolNrNFSDICJMD1qi9qCZugtxo+hdwaykE6oGY PFTYMmMPEixNwGosaSALq1s1HUEehFtiiQnG77CFB00XS+KwDEnuY+GKGjygAAWcLd/x2ady2h2g i2MBQCrs/VBaw3Ii1l8LTC17GuVncFCxNOIu/GidClI67kDEizUYOvNrQDSALcip5uQRtwesxVOA VKWocwGuB6BRFTLlulZAxpexsc2TEZS3eu2qWjIGYBFGOCxvw5WxeA74trTMhvNWi2ZoLvBSrSIJ r22l5o2DNZZeNOfqpg4roz3M8q7pNgItzdssBFMB8XXCWWjZreB5EPW1QAXfuBTnMeWeXfEQXDCV ufEVMnjHeTdfYaLRRHfDk2kkh+pwC1PmdaTWzHrVI8h9os7Uoj7Wf1c1Q2xVWL8Edn8N5yCgwsMr KSzVGtYH/NtLS+iV9bYqWr6Kv8YmahyguMp1nzCOZWVWX8TL6c1K2b2uwoTfsbCXCA7beBSLCQq0 jql4eIz+LEfcYfvSd7yjErzXZbIYZQfuAB9ds32jcsRzgaQMWKMVN22XswYPbLNqCFMsWkkEe6CP XO9Jk26yQX1fNW03a8qajaE6Tms0RkBeGAMnq07r1AIvSSMLhYrU8Hx38MKiCQaSYF5TzxalR3ZZ HMLta3sSPsHBVYO/lnq4b2pnsyjFUt9DvnpHuVaqEn/Xl7xE78PS0t5SdN8AbrWrhz42dLCnBb7A 6kSVRbVhalcyq2HUAFi3GwAiJgKQ1/Nx6KFgD0YqrCXWntatFoNxXZcGN1pMRE1Q15j1dRNtTWqu LKHtojnUYw9QoVwBFG9q+KNH0t05dkFRl2e8F8CuDz3HuCMVlTGL2SwkX2XQoYYAsJZYL0GgnbVG 6wtCPG/dHvUkP4U7jaf05iVGoT9Td4aFrmr4QblBX6o1Y8NNs06PNVi7kSwgHFQxYV+lTtWtBsvF DdfMQQDzatnBxSy3iVEiXqzwAH5lsZlyuz3Ef7OOumoOIz2AVi208438W1UGwOFFs2WgZ6S54x0U cmcXYZwqXGDxShXqUZllaNZhF2QCyhoSDtUKdZf7f3YjvlJ7OJ96anGF3acmc0+lSkBmHDsxD4qv drP8EeBhyfqeXO1VLCXAVvsYbB3pJo3DMfTmw1tSogoqRJoqdwt6y7LAVzVksoVY63cJLN6N4QJv gQ1YTwGbUjLynU6Tm6KApW/VVwcbgDTcY6H2Qc/ApswDwi5Wq5z1kpMKCAI7sYvueTUQCwqkzsgi baWAZBoXiEkRnQJvfrertO2Y/sdZqz2theYkrWPewMBlhTPdVoJhlIAl6xKAk1dpFKxEJd2aYk+t 5TCWZn26dYGjjq7rmtUoOfnFdnWFCjHvbdnPs3ZLROps1qWam9WL9TVNzdSzrFjeQdSfGv+7pIg9 tDQmwTXZo8kmCpNgabCf3lxrFEyu6uEEtKRO2YRUExxDEzPAcACCKjSeLHiZ4ukgUuEqWrKmgb8W 7YdkTQx+08McHM6q2wRmCDLEeJqFw3IBWVgrKwu8W2PC7KB7DhAZ3dNyGFIreUkn2Ddu/UGAV90S XAemgkviNKd5Ph6mg76pY9FNOQbMGaq+qLAdgDkrLQHdLC/tgCumZ96Yqjcp1MRJ9yYlz8Vc0PWq CcvBwwaHOMW2YM5TeTgTn9Sa6P6eNLxJVW21mQ7U6spEhUakL5KKBp8AjGp1R2ZSStEECe5KVWrs z5iOlzTH+kr8ItbKDRxTYfBd2BUrdXP10xQFdHVFHC28EXNcCsbPVY0esazAiG+uvTR3PQLgUDI/ 1KExl2Lyi1E0LrM9Kg99dtRFilseFHxNDfamf7wrsazCKNqgPl+j18J9Lk3F7aqR1po+bnqTts8v cO+9nwd6wGkE1VqBeFKr5gxjcXqM6mF6uru6GuG3piUQ0pbUm/slNpQvsm11m8r3mGqhc29pgYBi OU1h+e1/fHvuAgyCeVcJUGtbXRfRicI+L+yuEWljRuCQqHZS9wEAvi1LTrFdSmUUBz0p1BlfQScB /+aeNmmDaps1TXs6OVZB4nQflZHe3AUWspkOEYEWkLdbM8lY0/LULGFZ9tV6No7S6DsOsDwqNTxm J8GypkadbJna5sgUyCguvsDBsQkahOYaTJPjbsIarYLVByOurIGwuihRmsNNirYblEV93NaeTKxr dxVYTpNYUkjEdr2v0R5wEospZanD0r8/TiJAHGbvk+WJN76dJllD4H42h7xVF8CSsNyiA5YGY4EV o09eu7GzV3s7jjjHSyCv0j/+d9uGA0yU7u04rLFryqtlB+BT8UNmbwaUqNsvlk4knzFQhXuIYNed JBY6FtwmShyHTLFdzqnT8XnhVnlpHV7QU2E/vcYoad3Rh6IdEclWh8YhBWlBGthtPUHwm3JMOo0I BW+n1mjgWooyJJyzYJISpMGFxnBRNHW2adTNc6mX1HpOLdyuFntbqh9xDTbgxk1huuYJFhy9zQlh b6mlJOgjwcpNc4XdBvWyY3yY6GXGdcO/WerWjgEgANxW+/9nxd1Ig9XYZgneXe1cULG/rGcBDwtQ O727ES4nQkX/DS5eq8HnKBNMEmtCnbFgakH/1D5XOM4pbB4ThfHVmnqCChg1zGcu+obEVHS/0xH1 mlPHhphq6BsbEEMnogHsZA1bPo6Y0raoudjboBINzpnT8Qjsztju2WDVmljFXk+nDzjVs9oCtOjL Whh6Dc0JEnUgEnmf4zV/zIS2h5YTwFJ2TS9NDNMHDRvn1LIUU6TAgLox0MIWjtGVbrEjcSndO6pk OFBKtG0ImDj/mvaHoWizBNuh6tA818lbVo48mKpF8EkOt/mw/SCtHb+yYCra81PCnPwZ3nW901bx qurtZeO0CImjDuVAgyX2Kd3Rc+e0LNVprwHbYmt1fZeYNosBYbEarSG0MftLYDYdawnIa8NBKqfR qOrFmMalPb8U1io6DlKdqjntGOwHtaCAsw+6WLUGP8qeqhFyRR+MoVctOzKlZJNvkmrVUA0usz/N C6rM8JkWaBF3bxt+xUJBfVcV2jlMy4o6RqeuS8Js02o99KiGbI8NvrWxR0bTm21xrpohhd0ZwE12 xVYpefzKFIeNrtJ09OVROTlvK5OC4UuI4+3DpWuT6EhAIms+32zJmlY6h5MOrWoBEInq8pRNozSO pcV4T75xK62bXrNx8JS13p+77H0S5F3PYX+3Dq46jiziTpWRPg4tfQ4KN6QOLR7x9FhumK6cEhqr 2lM+vHRsJBCVlrkGC4NagASFCp+GCEsB/le9PsUugimphTx0701E+mYSWdiptTmzhRT8IzXMHGYi wPM3yz2CqxUbW9U5HiesAxO0cnYbA0Ktjuak4OeAaVTHpiN3bhqOk2UDBNnsqfPYBtY/bTYR4ZTV erWT+OObrUtUnbIB8f3JbUdRU5sc3DpNnOsx1gc6vypkbBuyHGthzcPzPohpHqZPoLQlp6VU6+iT dvAb5+9to1DZ+ycOLFgGMuB/GNzncsG35Z54Sm9e9XldVzafa9Xez8dy7nMbOojVBavXmdikzoYI Mqa3uNmwzldxjBJjm2idg7m//k6jwv1dzngQuQYndVLyKK5qgZFNaz5NCtCstSYZbxRnT4rkt+sd KGPU0w4Ioa05lf3HWyuqbIgdWweBNZrAtLkwVtW5qzfD5+Ed5zeCOXLEiLUv5CpDk254KgQBK3QX DuRyh5t+2Ws86da2SNbvNd4gDF6dtSJjDPpRdbf1ajCyuZZMI5V8T+Fz5wCYo7SEE8cUO7VnF3iz 7AZLpJa4Y119+GjRubIXVclykAehjxgZp25oHzLraEuzCxwWsTRVzOlApWnHKZj97KYpP+lWKRSe fepQrmMfKvsXVlcxKKgszUm3bI4VmoszyeNLiMLE/HpPXfDxqCT4+FYCmtKrOZ+qbB6jVUzIeJw8 ANh4DdGzKHtokT8P+SeZnNbldRrjQeZwGGBMDUJdzTX8TAB7L4XNjeW4yZk2hjKpF9Q6N1mnTtED om1aCsSp4BAzGxGDEMtJWWp19Iku3JlL75SqwBjNhl2AEvRl05oBa1i7da7Hifo2pb5WJt/0NuiT h2mFCgecbB0KDrab0/IHAFxsZzDlBmsG891RqVeyYVPfbSnMzNQiHE107OEtdLtYtgfxtbnSdkej iMYF8ltbP0A52AqYymOxCJqdpu6z2bgfjqo3yQSH8lAfp1eg5Gp7JbeSuKveiWPhVak64RHTJA9U CKYLyZQNvNntU1g58dwYR2QXg670lGsaRwBNX12r6ySFzcznkjFJkoDFlKGpKJbncZR04o9lc+60 ITB66ki/ZQpHwlnQQU0lnd9Rwkxa8dgIOzBZ0csBxlchRWO6b+WT4dcBe7T/mu/iUJC+OLnO0HNw OoUmuXzqwytgrtDOpIqYgECmA6YmAl7VbqcBPlS9d1do4g0ygQI0SX0YcfbHPL1uY0Cto/n+Kgd/ +GCkOdkPMNQb4f+U1EnnwV0zlylld/cGDqbls12vTuZbw+vNgN3d5q4dtbcEd8WyT3ydTzf9NV+E sW2c+NXBtJS967jfjyeh9YsmgBOkv6BmhKnlGozQAzs2a9vAZFoRq9uq54S9Ni1+sFBTFd1cE+3H srG5O5YlYGEY02anH1ugzmMnrmg94l31x9ugjTiGcgAr6wFjTk854HjEshdHDE6QVAXvhotQZ1An C8nWiMX4ZVXIxWFgOlJkUdQxdKoJbVl70EkUEK7jvZEer/jJDIl4GOvgvrkhSYkmSF/l7WbKAzxv KrAAcGxqzCe9G44bd9223MSYb2cuWTZPUyICjuIomjx703lrhWBTGaPHFlG5V69EUvxhIZX5BFsD DiayjsJTOr6Wewi7ipbBbnv1UhJch0uOBnVi1poOFKbT+VyEc7t5Kpa29jnGcxrrGxKtlwoIFqJh HZ6raaRiV+boB4JPlZ8NhEiiHSvoky+ppw1WVMJyVUAWu3pea7HUo9CZE/411whHRW4yfI4yR0lr i37ja86MouOIt1BJ7ezdJhku8jAbO3B88cB5vDtV5pdWYfqI6IMMpvFFWaqW9akQN5YayfkgxmEG Q6xO55vs9jeUCjhpr5GzCZJnB/QqbYLMmRMkF7VXw3GejoYBvu5i1uLdRKwm+HyXbRwIMQdQ1YbJ nP4eaKiyA9rG3Z4mamNREOE0wl5iGNPoXK04PoN9X138gjNILKwvHdgpitvf3t3mk77R0fQaSa1v KeHMNilp9sZZQ7a0rB+a+bbFYoluGUhUqcuSaYvdS9rJycFQ6lpvXmJS/2tsspF35qx2UamTyqlP DXAvMcOED1JjwukUWH8UHx816nwRzXYCQ4HDSJ9lxvEQ8ys0PscoxmFPbNkU2MNOVC8A4kGXvrkF W03pvWqVmRkaTZO0oDDTRw1dzFSVhZstwR4ZrskhmvRjMkBVYYGfx5nvPvViLx09Au8C3r19rtHF A5oncFgJ7+/N3rjHSle+J8V6MDrHhKmMCe6zLWv441mQogurUNo6expsxFkUYX3OZ2jPmV+HoYrM d2mP7LFV6g03yzTxYYh6ueSViunAcYuVLC7Nur0YFBhlKpxh7mdb1Y4THmrxt30i2IXU06kBJ9PX PSCbD0trB/X8Gm1gHn1pyxwbcVgKeK84UN54VQR7pFj9s3kO1NQqmji/3DTYfrx9nOvi5CrDyzrR /w5XnMggoY3D32zT6VLoP3RAzwEzdMIcOx2UZFQx6PNb8fx1QbdPqy4eqpyu1DStc42h1uYF3FPX aeTUaizrcCTT5thun3QM3GQTay4yqDYKz1X01Y9MdHPGpT3XtLNRYR1jHhqgGzvIdHDCDn87U6UA N22CRoZP96Gf55sudfZXxd97s3RrmgA4t1XX603LJutlU7ZhsY6jqWqd2ECYlngGXSiqtOUI7WbH HVCy2WstyGzS0ALwT6SSWU5tspkDHKq3d/N0OIGAjS04vfr0qkiqWOBYxecLPa937Mgx7vryNo7d XfMAsJe3yU4OEShf9cKXcolqbYAsh3cME0zh+PCteDYd8qCiv96pMasC3HK/ffQrcg9HfhoXcddA TfOeX2Px15jj2u0VPfX5QtS3ZnY2vllT00xUavqr2ILdc2YALHyYtAFhli+m0EQ2tbPDp2sumIYi FYQBIBg7GiwIlzApyJw6rZqnFbDABjhT7rBUr3yYhX92AnVwikDoixXBOFL7DxFcLIl4HAfGjOd2 TBK7Ucf0nmTr1U7EvMnWex183fNWaflIrzJv9ptaLlpHXt6pOr7pz8bi0baLvUln7Stzr444pspT TTP26l2aJXUPKB2YOkUaAao8Z9W9/coRrGq0aS+gCfZEhZH6WVX42DnYp1rHLUfeq2D68LpT9s5r Ewc7x7aQE4aWlVpLODYGB9/rrINfEBarEf/j28SOs13r4khCXSW+9QvMXbVhrDerC9HpKq8eGOCo +o7e719yhq/P/nL95z/wz7/wax9+/vXT558+/PmbD18+//3Lx88/f//506cff/nhY3z87efvfvrp w/Wl//ntux8+40u/X3/84a9/+/Xnv375jy+//vfnX37Dx38kwT98+fXLdz/96+d/4k/940//C0zB 8xj9gQAA headers: Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29843c9c232b-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:04 GMT Server: - cloudflare Transfer-Encoding: - chunked Via: - envoy-router-56f675cff6-lkp9t X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-model: - text-embedding-3-small openai-organization: - future-house-xr4tdh openai-processing-ms: - "51" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" strict-transport-security: - max-age=31536000; includeSubDomains; preload x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "200000" x-ratelimit-limit-tokens: - "200000000" x-ratelimit-remaining-requests: - "199998" x-ratelimit-remaining-tokens: - "199999990" x-ratelimit-reset-requests: - 0s x-ratelimit-reset-tokens: - 0s x-request-id: - req_a1ccd5a9fe2f4c6d8ce2b3e19ef5762c status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatteUnknownyearaperspectiveon pages 12-14: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. ChemRxiv, Unknown year. URL: https://doi.org/10.26434/chemrxiv-2022-qfv02, doi:10.26434/chemrxiv-2022-qfv02. This article has 1 citations.\\n\\n---\\n\\nnterfactual approach, contrastive approach employ a dual\\n\\noptimization method, which works by generating a similar and a dissimilar (counterfactuals)\\n\\nexample. Contrastive explanations can interpret the model by identifying contribution of\\n\\npresence and absence of subsets of features towards a certain prediction.36,99\\n\\n A counterfactual x\u2032 of an instance x is one with a dissimilar prediction \u02C6f(x) in classi-\\n\\nfication tasks. As shown in equation 5, counterfactual generation can be thought of as a\\n\\nconstrained optimization problem which minimizes the vector distance d(x, x\u2032) between the\\n\\nfeatures.9,100\\n\\n\\n minimize \ d(x, x\u2032)\\n (5)\\n \ such that \u02C6f(x) \u0338= \u02C6f(x\u2032)\\n\\n \ For regression tasks, equation 6 adapted from equation 5 can be used. Here, a counter-\\n\\nfactual is one with a defined increase or decrease in the prediction.\\n\\n\\n \ minimize d(x, x\u2032)\\n (6)\\n \ such that \u02C6f(x) \u2212\u02C6f(x\u2032) \u2265\u2206\\n\\n \ Counterfactuals explanations have become a useful tool for XAI in chemistry, as they\\n\\nprovide intuitive understanding of predictions and are able to uncover spurious relationships\\n\\nin training data.101 Counterfactuals create local (instance-level), actionable explanations.\\n\\nActionability of an explanation suggest which features can be altered to change the outcome.\\n\\nFor example, changing a hydrophobic functional group in a molecule to a hydrophilic group\\n\\nto increase solubility.\\n\\n Counterfactual generation is a demanding task as it requires gradient optimization over\\n\\ndiscrete features that represents a molecule. Recent work by Fu et al. 102 and Shen et al. 103\\n\\npresent two techniques which allow continuous gradient-based optimization. Although, these\\n\\nmethodologies are shown to circumvent the issue of discrete molecular optimization, counter-\\n\\nfactual explanation based model interpretation still remains unexplored compared to other\\n\\n\\n\\n 12post-hoc methods.\\n\\n \ CF-GNNExplainer104 is a counterfactual explanation generating method based on GN-\\n\\nNExplainer69 for graph data. This method generate counterfactuals by perturbing the input\\n\\ndata (removing edges in the graph), and keeping account of perturbations which lead to\\n\\nchanges in the output. However, this method is only applicable to graph-based models\\n\\nand can generate infeasible molecular structures. Another related work by Numeroso and\\n\\nBacciu 105 focus on generating counterfactual explanations for deep graph networks. Their\\n\\nmethod MEG (Molecular counterfactual Explanation Generator) uses a reinforcement learn-\\n\\ning based generator to create molecular counterfactuals (molecular graphs). While this\\n\\nmethod is able to generate counterfactuals through a multi-objective reinforcement learner,\\n\\nthis is not a universal approach and requires training the generator for each task.\\n\\n Work by Wellawatte et al. 9 present a model agnostic counterfactual generator MMACE\\n\\n(Molecular Model Agnostic Counterfactual Explanations) which does not require training\\n\\nor computing gradients. This method firstly populates a local chemical space through ran-\\n\\ndom string mutations of SELFIES106 molecular representations using the STONED algo-\\n\\nrithm.107 Next, the labels (predictions) of the molecules in the local space are generated\\n\\nusing the model that needs to be explained. Finally, the counterfactuals are identified and\\n\\nsorted by their similarities \u2013 Tanimoto distance96 between ECFP4 fingerprints.97 Unlike the\\n\\nCF-GNNExplainer104 and MEG105 methods, the MMACE algorithm ensures that generated\\n\\nmolecules are valid, owing to the surjective property of SELFIES. Additionally, the MMACE\\n\\nmethod can be applied to both regression and classification models. However, like most XAI\\n\\nmethods for molecular prediction, MMACE does not account for the chemical stability of\\n\\npredicted counterfactuals. To circumvent this drawback, Wellawatte et al. 9 propose an-\\n\\nother approach, which identift counterfactuals through a similarity search on the PubChem\\n\\ndatabase.108\\n\\n\\n\\n\\n\\n 13Similarity to adjacent fields\\n\\n\\nTangential examples to counterfactual explanations are adversarial training and matched\\n\\nmolecular pairs. Adversarial perturbations are used during training to deceive the model\\n\\nto expose the vulnerabilities of a model109,110 whereas counterfactuals are applied post-hoc.\\n\\nTherefore, the main difference between adversarial and counterfactual examples are in the\\n\\napplication, although both are derived from the same optimization problem.100 Grabocka\\n\\net al. 111 have developed a method named Adversarial Training on EXplanations (ATEX)\\n\\nwhich improves model robustness via exposure to adversarial examples. While there are\\n\\nconceptual disparities, we note that\\n\\n---\\n\\nQuestion: Are counterfactuals actionable? [yes/no]\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6272" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41UTW/bMAy951cQOjtB4qVN0+M6DDt2RTEMmwtXkWlbnSwJ+sjqFfnvo+w2TrcO 2MVx+B6pR/LJTzMAJit2CUy0PIjOqvmH99vP+PVXf93am2t1+8mhDNtv51dfbq4f9ixLGWb3gCK8 ZC2EoTwM0ugRFg55wFR1tdmszs6Web4egM5UqFJaY8N8beb5Ml/PVyv6fU5sjRToifGd/gI8Dc8k UVf4SOFl9hLp0HveIMVeSBR0RqUI495LH7gOLJtAYXRAPai+v79/8EYX+qnQAAXzseu46wvCCnZl IhFdzUWIXAE+WsU1T9154A6B4vTOd4pePYQWe/CxadAH+NlK0UJN3UeHHgTXsCOWonJYQTBA49IN piQwMdDccAEfjaNDeBphBlITBztS7/pspEvdAIe2r5yxrdlJAXXUowYFjTPRpiwOHTUvIqmic458 qYg/kpIaqdNuPII3Ku4IDP0Cblvpj10NMbDO7GVFLUgdogxyjxBpBS4NtRoE6QpaVNZTXJg9OvA2 OmmiB4dqnFYrbSoAwXGpU1LFA18ULBuHTjzccy2w9MI4TMNfLQt9KDSt53RxDuvoefKNjkqdAFxr E8azkmXunpHD0STKNNTJzv+RymrS49syjYI8S4bwwVg2oAd63g1mjK/8xahQZ0MZzA8cjlvl5+dj QTb5f4Iv8mcwkER1kvZufZG9UbGsMHCp/ImhmeDkhWrKndzPYyXNCTA76ftvOW/VHnunrfxP+QkQ Ai1d7dKSoaV43fJEc5i+D/+iHec8CGYe3Z5ufRkkurSLCmse1Xh1me99wK6khTXorJPj/a1tudnm YsuX282GzQ6z3/OdwVDIBAAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a2984f9c80c60-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:05 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "876" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998496" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_0f78619a934d402e8d73301c1948ffc7 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatteUnknownyearaperspectiveon pages 9-12: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. ChemRxiv, Unknown year. URL: https://doi.org/10.26434/chemrxiv-2022-qfv02, doi:10.26434/chemrxiv-2022-qfv02. This article has 1 citations.\\n\\n---\\n\\nthat gives subgraph importance for small molecule activity prediction. On the\\n\\nother hand, similarity maps compare model predictions for two or more molecules based on\\n\\ntheir chemical fingerprints.83 Similarity maps provide atomic weights or predicted probabil-\\n\\n\\n \ 9ity difference between the molecules by removing one atom at a time. These weights can\\n\\nthen be used to color the molecular graph and give a visual presentation. ChemInformatics\\n\\nModel Explorer (CIME) is an interactive web based toolkit which allows visualization and\\n\\ncomparison of different explanation methods for molecular property prediction models.84\\n\\n\\nSurrogate models\\n\\n\\nOne approach to explain black box predictions is to fit a self-explaining or interpretable\\n\\nmodel to the black box model, in the vicinity of one or a few specific examples. These are\\n\\nknown as surrogate models. Generally, one model per explanation is trained. However, if we\\n\\ncould find one surrogate model that explained the whole DL model, then we would simply\\n\\nhave a globally accurate interpretable model. This means that the black-box model is no\\n\\nlonger needed.79 In the work by White 79, a weighted least squares linear model is used as\\n\\nthe surrogate model. This model provides natural language based descriptor explanations by\\n\\nreplacing input features with chemically interpretable descriptors. This approach is similar\\n\\nto the concept-based explanations approach used by McGrath et al. 85, where human under-\\n\\nstandable concepts were used in place of input features in acquisition of chess knowledge in\\n\\nAlphaZero. Any of the self-explaining models detailed in the Self-explaining models section\\n\\ncan be used as a surrogate model.\\n\\n The most commonly used surrogate model based method is Locally Interpretable Model\\n\\nExplanations (LIME).35 LIME creates perturbations around the example of interest and fits\\n\\nan interpretable model to these local perturbations. Ribeiro et al. 35 mathematically define\\n\\nan explanation \u03BE for an example \u20D7x using Equation 4.\\n\\n\\n\\n \u03BE(\u20D7x) = arg min L(f, g, \u03C0x) + \u2126(g) (4)\\n g\u2208G\\n\\n \ Here f is the black box model and g \u2208G is the interpretable explanation model. G is\\n\\na class of potential interpretable models (e.g.: linear models). \u03C0x is a similarity measure\\n\\n\\n\\n 10between original input \u20D7x and it\u2019s perturbed input \u20D7x\u2032. In context of molecular data, this can\\n\\nbe a chemical similarity metric like Tanimoto86 similarity between fingerprints. The goal for\\n\\nLIME is to minimize the loss, L, such that f is closely approximated by g. \u2126is a parameter\\n\\nthat controls the complexity (sparsity) of g. Ribeiro et al. 35 termed the agreement (how low\\n\\nthe loss is) between f and g as the \u201Cfidelity\u201D.\\n\\n \ GraphLIME87 and LIMEtree88 are modifications to LIME as applicable to graph neural\\n\\nnetworks and regression trees, respectively. LIME has been used in chemistry previously,\\n\\nsuch as Whitmore et al. 89 who used LIME to explain octane number predictions of molecules\\n\\nfrom a random forest classifier. Mehdi and Tiwary 90 used LIME to explain thermodynamic\\n\\ncontributions of features. Gandhi and White 10 use an approach similar to GraphLIME,\\n\\nbut use chemistry specific fragmentation and descriptors to explain molecular property pre-\\n\\ndiction. Some examples are highlighted in the Applications section. \ In recent work by\\n\\nMehdi and Tiwary 90, a thermodynamic-based surrogate model approach was used to inter-\\n\\npret black-box models. The authors define an \u201Cinterpretation free energy\u201D which can be\\n\\nachieved by minimizing the surrogate model\u2019s uncertainty and maximizing simplicity.\\n\\n\\nCounterfactual explanations\\n\\n\\nCounterfactual explanations can be found in many fields such as statistics, mathematics and\\n\\nphilosophy.91\u201394 According to Woodward and Hitchcock 92, a counterfactual is an example\\n\\nwith minimum deviation from the initial instance but with a contrasting outcome. They\\n\\ncan be used to answer the question, \u201Cwhich smallest change could alter the outcome of an\\n\\ninstance of interest?\u201D While the difference between the two instances is based on the exis-\\n\\ntence of similar worlds in philosophy,95 a distance metric based on molecular similarity is\\n\\nemployed in XAI for chemistry. For example, in the work by Wellawatte et al. 9 distance\\n\\nbetween two molecules is defined as the Tanimoto distance96 between ECFP4 fingerprints.97\\n\\nAdditionally, Mohapatra et al. 98 introduced a chemistry-informed graph representation for\\n\\ncomputing macromolecular similarity. Contrastive explanations are peripheral to counterfac-\\n\\n\\n \ 11tual explanations. Unlike the counterfactual approach, contrastive approach employ a dual\\n\\noptimization method, which works by generating a similar and a dissimilar (counterfactuals)\\n\\nexample. Contrastive explanations can interpret the model by identifying contribution of\\n\\npresence \\n\\n---\\n\\nQuestion: Are counterfactuals actionable? [yes/no]\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6283" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/4xUTW/bMAy951cIOieFk6ULsuM2YCi2wwb0MGwpXEWmHbay5Ip00qDofx9lJ3Gy D2AXf+jxkY9PlF5GSmks9Dul7cawrRs3+fh++Q2yZRZv6GuJ86fvn5sy/sgMf/mETo8TI6wfwPKR dWWD8IAx+B62EQxDyjpdLKbX19lsNu+AOhTgEq1qeDIPk1k2m0+mU3kfiJuAFkgifsqvUi/dM0n0 BTzLcjY+rtRAZCqQtWOQLMbg0oo2REhsPOvxANrgGXyn+v7+/oGCX/mXlVdqpamtaxP3K8FW+kNo JTCWxnJrnILnxhlvUnekTARVANmIayiUIUFN6p3UDnmjavRYC6eALXYMVcZQK96AEoRRIPRJmAW1 brknGZWURUOMvlKhZbETrtTtBvbKeNpB7BI8tUBdylCqnbiuSCpJZVayB74CydI60eT4QDhkSvHG D3XlF1N/wrxSN74L7ax55oTVYqFtnYmKsEZ5I+/HorHAA78GjmiVw0dQt0b6DRwGFEm1JNakNSjR Q5e/wLKUil3bwDsAKbsLx1pAqVthUltVIouEI/3Zi33ovZdvscCsHSTzOVnUxLDFAhQ1YLEUZb0d xyTSugPTCTInHXyyeaXH/QhEcLBNLeRkQ4Q0CsuVf115mZXzKYpQtmTSEPvWuTPAeB+4H5M0v3cH 5PU0sS5UonVNv1G1uIS0yeXMyEim6SQOje7QV3nedSejvRh2LYnqhnMOj9CVm77JDkdDD4fxDM7e HlAWje4MmJ+Qi5R5AWzQ0dnx0tbYDRQDdziLpi0wnAGjs8b/1PO33H3zMv//k34ArIVGLpq8iVCg vex5CIuQbqt/hZ2M7gRrgriVOyhnhJg2Q6bYtK6/SDTtiaHOZccqiE3E/jYpm3yxnNmlyZaLhR69 jn4BAAD//wMAe/0O8VYFAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29851a89ca3e-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:05 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "1133" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998494" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_b378d9e5f000480e833df98a065f1911 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":[{\"type\":\"image_url\",\"image_url\":{\"url\":\"data:image/png;base64,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\"}},{\"type\":\"text\",\"text\":\"Excerpt from wellawatteUnknownyearaperspectiveon pages 14-16: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. ChemRxiv, Unknown year. URL: https://doi.org/10.26434/chemrxiv-2022-qfv02, doi:10.26434/chemrxiv-2022-qfv02. This article has 1 citations.\\n\\n---\\n\\nsame optimization problem.100 Grabocka\\n\\net al. 111 have developed a method named Adversarial Training on EXplanations (ATEX)\\n\\nwhich improves model robustness via exposure to adversarial examples. While there are\\n\\nconceptual disparities, we note that the counterfactual and adversarial explanations are\\n\\nequivalent mathematical objects.\\n\\n Matched molecular pairs (MMPs) are pairs of molecules that differ structurally at only\\n\\none site by a known transformation.112,113 MMPs are widely used in drug discovery and\\n\\nmedicinal chemistry as these facilitate fast and easy understanding of structure-activity re-\\n\\nlationships.114\u2013116 Counterfactuals and MMP examples intersect if the structural change is\\n\\nassociated with a significant change in the properties. In the case the associated changes in\\n\\nthe properties are non-significant, the two molecules are known as bioisosteres.117,118 The con-\\n\\nnection between MMPs and adversarial training examples has been explored by van Tilborg\\n\\net al. 119. MMPs which belong to the counterfactual category are commonly used in outlier\\n\\nand activity cliff detection.113 This approach is analogous to counterfactual explanations,\\n\\nas the common objective is to uncover learned knowledge pertaining to structure-property\\n\\nrelationships.70\\n\\n\\nApplications\\n\\n\\nModel interpretation is certainly not new and a common step in ML in chemistry, but XAI for\\n\\nDL models is becoming more important60,66\u201369,73,88,104,105 Here we illustrate some practical\\n\\nexamples drawn from our published work on how model-agnostic XAI can be utilized to\\n\\n\\n\\n 14interpret black-box models and connect the explanations to structure-property relationships.\\n\\nThe methods are \u201CMolecular Model Agnostic Counterfactual Explanations\u201D (MMACE)9\\n\\nand \u201CExplaining molecular properties with natural language\u201D.10 Then we demonstrate how\\n\\ncounterfactuals and descriptor explanations can propose structure-property relationships in\\n\\nthe domain of molecular scent.31\\n\\n\\nBlood-brain barrier permeation prediction\\n\\n\\nThe passive diffusion of drugs from the blood stream to the brain is a critical aspect in drug\\n\\ndevelopment and discovery.120 Small molecule blood-brain barrier (BBB) permeation is a\\n\\nclassification problem routinely assessed with DL models.121,122 To explain why DL models\\n\\nwork, we trained two models a random forest (RF) model123 and a Gated Recurrent Unit\\n\\nRecurrent Neural Network (GRU-RNN). Then we explained the RF model with generated\\n\\ncounterfactuals explanations using the MMACE9 and the GRU-RNN with descriptor expla-\\n\\nnations.10 Both the models were trained on the dataset developed by Martins et al. 124. The\\n\\nRF model was implemented in Scikit-learn125 using Mordred molecular descriptors126 as the\\n\\ninput features. The GRU-RNN model was implemented in Keras.127 See Wellawatte et al. 9\\n\\nand Gandhi and White 10 for more details.\\n\\n \ According to the counterfactuals of the instance molecule in figure 1, we observe that the\\n\\nmodifications to the carboxylic acid group enable the negative example molecule to permeate\\n\\nthe BBB. Experimental findings by Fischer et al. 120 show that the BBB permeation of\\n\\nmolecules are governed by hydrophobic interactions and surface area. The carboxylic group is\\n\\na hydrophilic functional group which hinders hydrophobic interactions and addition of atoms\\n\\nenhances the surface area. This proves the advantage of using counterfactual explanations,\\n\\nas they suggest actionable modification to the molecule to make it cross the BBB.\\n\\n In Figure 2 we show descriptor explanations generated for Alprozolam, a molecule that\\n\\npermeates the BBB, using the method described by Gandhi and White 10. We see that\\n\\npredicted permeability is positively correlated with the aromaticity of the molecule, while\\n\\n\\n 15negatively correlated with the number of hydrogen bonds donors and acceptors. A similar\\n\\nstructure-property relationship for BBB permeability is proposed in more mechanistic stud-\\n\\nies.128\u2013130 The substructure attributions indicates a reduction in hydrogen bond donors and\\n\\nacceptors. These descriptor explanations are quantitative and interpretable by chemists.\\n\\nFinally, we can use a natural language model to summarize the findings into a written\\n\\nexplanation, as shown in the printed text in Figure 2.\\n\\n\\n\\n\\n\\nFigure 1: Counterfactuals of a molecule which cannot permeate the blood-brain barrier.\\nSimilarity is the Tanimoto similarity of ECFP4 fingerprints.131 Red indicates deletions and\\ngreen indicates substitutions and addition of atoms. Republished from Ref.9 with permission\\nfrom the Royal Society of Chemistry.\\n\\n\\n\\nSolubility prediction\\n\\n\\nSmall molecule solubility prediction is a classic cheminformatics regression challenge and is\\n\\nimportant for chemical process design, drug design and crystallization.133\u2013136 In our previous\\n\\nworks,9,10 we implemented and trained an RNN model in Keras to predict solubilities (log\\n\\nmolarity) of small molecules.127 The AqS\\n\\n---\\n\\nQuestion: Are counterfactuals actionable? [yes/no]\"}]}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "22903" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41UyW7bMBC9+ysGPLWAbFhKnLQ9OkVOLbogQA91IFDkSGJLkSqXxEbgf+9QsmNl KdCLlnkzw/dm4cMMgCnJPgATLQ+i6/X84/r9N9xdKfPl/vsnffZDFO3157q++ZObr+9YliJs9QtF OEYthKU4DMqaERYOecCUNb+8zFerZVGcD0BnJeoU1vRhfm7nxbI4n+c5vQ+BrVUCPXn8pF+Ah+GZ KBqJWzIvs6OlQ+95g2Q7OpHRWZ0sjHuvfOAmsOwECmsCmoH1w8YAbJiPXcfdbkOmDbuykXBXcxEi 1x64Q6BvEsUrTZ8eQos78LFp0AcgKapWgicHgiwZNIqoMfnxAIIb0MhlgiR65VACFctQMCgDvbM9 uqDQL+DaOsAtTzXMEkbnwEB2G8DWUGlr5bxynKCKO6fQwZv1ev0WKEOHA4OMAqb0KV+vuTmwU5J0 E1ui8IL2cBh3ld3utBKkWElonI39KAMH9RL4o74UdDgYh2iisoCbFv2TeinjVdMGqqNWjYF7FdpE Cp3qiAwxrKmnyjQ+o/J0RCY4ImWaIWUMSquwS+rFs7Ycamd98qWgSHZH6Y61JXZctArvEHyPIokF GwONKJV6w7Kx8w413nEjsPTCOkwTkC83Zj+dF4d19DyNq4laTwBujA1jBdOk3h6Q/eNsatsQx8o/ C2UkWfm2pO3wtCo0hz7Yng3onp63ww7EJ2PNKFHXhzLY3zgcl68uijEhO63dBF6eHdBAHPUEuLhY Za+kLCUGrrSfLBITVEGUp9jT1vEolZ0As4nwl3xeyz2Kp+b9T/oTIAT2dKWUPe2REk81n9wcpnvp X26PhR4IM4/ujm6bkpbQpWZIrHnU45XB/M4H7ErqWIOud2q8N+q+LFairotVXhdstp/9BUpdthVA BQAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a2984febfeb22-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:06 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "1828" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: - "250000" x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-input-images: - "249999" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29997735" x-ratelimit-reset-input-images: - 0s x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 4ms x-request-id: - req_3f538d1e24244ef39b337574c47a7315 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatteUnknownyearaperspectiveon pages 20-22: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. ChemRxiv, Unknown year. URL: https://doi.org/10.26434/chemrxiv-2022-qfv02, doi:10.26434/chemrxiv-2022-qfv02. This article has 1 citations.\\n\\n---\\n\\nnal molecule. The counterfactual indicates\\nstructural changes to ethyl benzoate that would result in the model predicting the molecule\\nto not contain the \u2018fruity\u2019 scent. The Tanimoto96 similarity between the counterfactual and\\n2,4 decadienal is also provided. Republished with permission from authors.31\\n\\n\\n The molecule 2,4-decadienal, which is known to have a \u2018fatty\u2019 scent, is analyzed in Fig-\\n\\nure 5.142,143 The resulting counterfactual, which has a shorter carbon chain and no carbonyl\\n\\ngroups, highlights the influence of these structural features on the \u2018fatty\u2019 scent of 2,4 deca-\\n\\ndienal. To generalize to other molecules, Seshadri et al. 31 applied the descriptor attribution\\n\\nmethod to obtain global explanations for the scents. The global explanation for the \u2018fatty\u2019\\n\\nscent was generated by gathering chemical spaces around many \u2018fatty\u2019 scented molecules.\\n\\nThe resulting natural language explanation is: \u201CThe molecular property \u201Cfatty scent\u201D can\\n\\nbe explained by the presence of a heptanyl fragment, two CH2 groups separated by four\\n\\n\\n 20bonds, and a C=O double bond, as well as the lack of more than one or two O atoms.\u201D31\\n\\nThe importance of a heptanyl fragment aligns with that reported in the literature, as \u2018fatty\u2019\\n\\nmolecules often have a long carbon chain.144 Furthermore, the importance of a C=O dou-\\n\\nble bond is supported by the findings reported by Licon et al. 145, where in addition to a\\n\\n\u201Clarger carbon-chain skeleton\u201D, they found that \u2018fatty\u2019 molecules also had \u201Caldehyde or acid\\n\\nfunctions\u201D.145 For the \u2018pineapple\u2019 scent, the following natural language explanation was ob-\\n\\ntained: \u201CThe molecular property \u201Cpineapple scent\u201D can be explained by the presence of ester,\\n\\nethyl/ether O group, alkene/ether O group, and C=O double bond, as well as the absence of\\n\\nan Aromatic atom.\u201D31 Esters, such as ethyl 2-methylbutyrate, are present in many pineap-\\n\\nple volatile compounds.146,147 The combination of a C=O double bond with an ether could\\n\\nalso correspond to an ester group. Additionally, aldehydes and ketones, which contain C=O\\n\\ndouble bonds, are also common in pineapple volatile compounds.146,148\\n\\n\\nDiscussion\\n\\n\\nWe have shown two post-hoc XAI applications based on molecular counterfactual expla-\\n\\nnations9 and descriptor explanations.10 These methods can be used to explain black-box\\n\\nmodels whose input is a molecule. These two methods can be applied for both classification\\n\\nand regression tasks. Note that the \u201Ccorrectness\u201D of the explanations strongly depends on\\n\\nthe accuracy of the black-box model.\\n\\n A molecular counterfactual is one with a minimal distance from a base molecular, but\\n\\nwith contrasting chemical properties. In the above examples, we used Tanimoto similar-\\n\\nity96 of ECFP4 fingreprints97 as distance, although this should be explored in the future.\\n\\nCounterfactual explanations are useful because they are represented as chemical structures\\n\\n(familiar to domain experts), sparse, and are actionable. A few other popular examples of\\n\\ncounterfactual on graph methods are GNNExplainer, MEG and CF-GNNExplainer.69,104,105\\n\\n The descriptor explanation method developed by Gandhi and White 10 fits a self-explaining\\n\\n\\n\\n 21surrogate model to explain the black-box model. This is similar to the GraphLIME87 method,\\n\\nalthough we have the flexibility to use explanation features other than subgraphs. Futher-\\n\\nmore, we show that natural language combined with chemical descriptor attributions can\\n\\ncreate explanations useful for chemists, thus enhancing the accessibility of DL in chemistry.\\n\\nLastly, we examined if XAI can be used beyond interpretation. Work by Seshadri et al. 31 use\\n\\nMMACE and surrogate model explanations to analyze the structure-property relationships\\n\\nof scent. They recovered known structure-property relationships for molecular scent purely\\n\\nfrom explanations, demonstrating the usefulness of a two step process: fit an accurate model\\n\\nand then explain it.\\n\\n Choosing among the plethora of XAI methods described here is still an open question.\\n\\nIt remains to be seen if there will ever be a consensus benchmark, since this field sits on\\n\\nthe intersection of human-machine interaction, machine learning, and philosophy (i.e., what\\n\\nconstitutes an explanation?). Our current advice is to consider first the audience \u2013 domain\\n\\nexperts or ML experts or non-experts \u2013 and what the explanations should accomplish. Are\\n\\nthey meant to inform data selection or model building, how a prediction is used, or how the\\n\\nfeatures can be changed to affect the outcome. The second consideration is what access you\\n\\nhave to the underlying model. The ability to have model derivatives or propagate gradients\\n\\nto the input to models informs the XAI method.\\n\\n\\nConclusion and outlook\\n\\n\\nWe should seek to explain molecular property prediction models because users are more\\n\\nlikely to trust explained predictions, and explanations can help assess if the model is learning\\n\\nt\\n\\n---\\n\\nQuestion: Are counterfactuals actionable? [yes/no]\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6306" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41UTW/bMAy951cQOidFkiXLsmM3YMBuHXabC1eW6FitPjxR7hoU+e+j7KR2uw3Y xYn5yMevRz/PAITR4iMI1cikXGsXn6/3N/VNc728+fazJqu2IXxRO/f+69YdazHPEaG6R5UuUVcq cBwmE/wAq4gyYWZd7Xar7Xa5Xm97wAWNNocd2rTYhMV6ud4sViv+PQc2wSgk9vjBrwDP/TOX6DU+ sXk5v1gcEskDsu3ixMYYbLYISWQoSZ/EfARV8Al9X/Xd3d09BV/458IDFII652Q8FowV4nuDgE8K Y5tAG1IdERIktnaEEGpwnEV1VkZQoWPOWEuVOmkJjOfI1krjjT9AZaV6WFThCfq+6Qo+vfGXEUEj qWgq1CDZoPIUZWURKlQyJ+TEx94xYhuRuIPBVTXojJIWKMWO+RiDWjpjDReWAujg5FAPxkTznoJa GQn5v9fQxvBoNILjYh3T6H5iCqGOwYGESnLyc6sIvxrDzzzCKCnl7pj7pQTmylkMco88PsJhDF7m boY2uZW6s1CHCB0vM+ZkOvPkWng+pj7mt3G2E85CzIc9RbT4mIssSYWIeV+rZeFPheeNTncdORnJ LDXfWTsBpPchDWVlld2ekdOLrmw4cOaK3oSKmsdETcnKZuFkDVEKrejREz9ve/12ryQpmMi1qUzh Aft0q3ebs4DFeDIj/GF7BhOXaCdhm/UFecVYakzSWJrcgFCSl6LH2PFgZKdNmACzSd9/lvM37qF3 3tL/0I+AUtiyZktWrzbqdcujW8T8SfmX28uc+4IFYXzkD0XJ6oh5Fxpr2dnh2gUdKaEreWEHvuFo hpOv23K3X6u9XO53OzE7zX4DY9KWdfsEAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a298b99fe0c60-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:06 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "1080" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998488" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_5b2db0b489b7453885a50a2212232081 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":[{\"type\":\"image_url\",\"image_url\":{\"url\":\"data:image/png;base64,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\"}},{\"type\":\"image_url\",\"image_url\":{\"url\":\"data:image/png;base64,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\"}},{\"type\":\"text\",\"text\":\"Excerpt from wellawatteUnknownyearaperspectiveon pages 16-20: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. ChemRxiv, Unknown year. URL: https://doi.org/10.26434/chemrxiv-2022-qfv02, doi:10.26434/chemrxiv-2022-qfv02. This article has 1 citations.\\n\\n---\\n\\nssion challenge and is\\n\\nimportant for chemical process design, drug design and crystallization.133\u2013136 In our previous\\n\\nworks,9,10 we implemented and trained an RNN model in Keras to predict solubilities (log\\n\\nmolarity) of small molecules.127 The AqSolDB curated database137 was used to train the\\n\\nRNN model.\\n\\n In this task, counterfactuals are based on equation 6. Figure 3 illustrates the generated\\n\\nlocal chemical space and the top four counterfactuals. Based on the counterfactuals, we ob-\\n\\nserve that the modifications to the ester group and other heteroatoms play an important role\\n\\nin solubility. These findings align with known experimental and basic chemical intuition.134\\n\\nFigure 4 shows a quantitative measurement of how substructures are contributing to the pre-\\n\\n\\n\\n 16Figure 2: Descriptor explanations along with natural language explanation obtained for BBB\\npermeability of Alprozolam molecule. The green and red bars show descriptors that influ-\\nence predictions positively and negatively, respectively. Dotted yellow lines show significance\\nthreshold (\u03B1 = 0.05) for the t-statistic. Molecular descriptors show molecule-level proper-\\nties that are important for the prediction. ECFP and MACCS descriptors indicate which\\nsubstructures influence model predictions. MACCS explanations lead to text explanations\\nas shown. Republished from Ref.10 with permission from authors. SMARTS annotations for\\nMACCS descriptors were created using SMARTSviewer (smartsview.zbh.uni-hamburg.de,\\nCopyright: ZBH, Center for Bioinformatics Hamburg) developed by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n \ 17diction. For example, we see that adding acidic and basic groups as well as hydrogen bond\\n\\nacceptors, increases solubility. Substructure importance from ECFP97 and MACCS138 de-\\n\\nscriptors indicate that adding heteroatoms increases solubility, while adding rings structures\\n\\nmakes the molecule less soluble. Although these are established hypotheses, it is interesting\\n\\nto see they can be derived purely from the data via DL and XAI.\\n\\n\\n\\n\\n\\nFigure 3: Generated chemical space for solubility prediction using the RNN model. The\\nchemical space is a 2D projection of the pairwise Tanimoto similarities of the local coun-\\nterfactuals. Each data point is colored by solubility. Top 4 counterfactuals are shown here.\\nRepublished from Ref.9 with permission from the Royal Society of Chemistry.\\n\\n\\n\\nGeneralizing XAI \u2013 interpreting scent-structure relationships\\n\\n\\nIn this example, we show how non-local structure-property relationships can be learned with\\n\\nXAI across multiple molecules. Molecular scent prediction is a multi-label classification task\\n\\nbecause a molecule can be described by more than one scent. For example, the molecule\\n\\njasmone can be described as having \u2018jasmine,\u2019 \u2018woody,\u2019 \u2018floral,\u2019 and \u2019herbal\u2019 scents.139 The\\n\\nscent-structure relationship is not very well understood,140 although some relationships are\\n\\nknown. \ For example, molecules with an ester functional group are often associated with\\n\\n\\n 18Figure 4: Descriptor explanations for solubility prediction model. The green and red bars\\nshow descriptors that influence predictions positively and negatively, respectively. Dotted\\nyellow lines show significance threshold (\u03B1 = 0.05) for the t-statistic. The MACCS and\\nECFP descriptors indicate which substructures influence model predictions. MACCS sub-\\nstructures may either be present in the molecule as is or may represent a modification. ECFP\\nfingerprints are substructures in the molecule that affect the prediction. MACCS descriptor\\nare used to obtain text explanations as shown. Republished from Ref.10 with permission from\\nauthors. SMARTS annotations for MACCS descriptors were created using SMARTSviewer\\n(smartsview.zbh.uni-hamburg.de, Copyright: ZBH, Center for Bioinformatics Hamburg) de-\\nveloped by Schomburg et al. 132.\\n\\n\\n\\n\\n\\n 19the \u2018fruity\u2019 scent. There are some exceptions though, like tert-amyl acetate which has a\\n\\n\u2018camphoraceous\u2019 rather than \u2018fruity\u2019 scent.140,141\\n\\n In Seshadri et al. 31, we trained a GNN model to predict the scent of molecules and utilized\\n\\ncounterfactuals9 and descriptor explanations10 to quantify scent-structure relationships. The\\n\\nMMACE method was modified to account for the multi-label aspect of scent prediction. This\\n\\nmodification defines molecules that differed from the instance molecule by only the selected\\n\\nscent as counterfactuals. For instance, counterfactuals of the jasmone molecule would be false\\n\\nfor the \u2018jasmine\u2019 scent but would still be positive for \u2018woody,\u2019 \u2018floral\u2019 and \u2018herbal\u2019 scents.\\n\\n\\n\\n\\n\\nFigure 5: Counterfactual for the 2,4 decadienal molecule. \ The counterfactual indicates\\nstructural changes to ethyl benzoate that would result in the model predicting the molecule\\nto not contain the \u2018fruity\u2019 scent. The Tanimoto96 similarity between the counterfactual and\\n2,4 decadienal is also\\n\\n---\\n\\nQuestion: Are counterfactuals actionable? [yes/no]\"}]}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "65095" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41UTXPbNhC9+1fs8ExrRMWq4x6TTg49teP2VGU0MLgkEYEABwvYVjz+730AbYtR 3Jle9LGL3ff27cfTBVFl2upXqvSgoh4ne/nbp5s/+Xrtv/9933z6aG4/3JrP+o/ff+Ev6tttVecI f/eNdXyNWmmPOI7Gu9mtA6vIOWtzfd1st+vN5qo4Rt+yzWH9FC+v/OVmvbm6bBp8vwQO3mgWvPgH f4meymem6Fp+hHldv1pGFlE9w/b6CMbgbbZUSsRIVC5W9cmpvYvsCuunnSPaVZLGUYXjDqZd9dfA FPkxUmtEJxEWijAlYfIdaZ8QHTqlY1JWyDgaAaaTVYGmwK3RuX4qFUpNkwrRFK89UucDibfpzlgT j6RcS6JBZRG4os9nCCow9ew4ZCkpeuLHyXoYJYaEN0HZjGY6o1XOkOmqCGKdTew0z1QWEGAlSQ+k ZEkmU8tcVvQFP/lR5VbW55mBLiBHffBpklLBwDB4Ff0o9MDg1aGAQlRM70qwiyjejBNKWkDWpGx+ 4Xp6MHGgg/MPjvTAI0IsCojJzJLcmtEUBeuf9C+I6E0BNC0KMN1xKQ0G0/Xooeo6jGoGO5dcVoSe o70dpgsPIEvqERJnIc8Rp+DvAUSqBKs7y6CKUoeYpwEsBv+wmIkfBYQWqDoriDQTYzYY7RjVIRPD mI25li7ZMipRyUHImgNTG1JPLWdFi+hvKiENFkXITxEifS8wq11Vz4Md2PK9whDsRWNk8oA36517 Xq5DAJ6ovI0uWbtwKOd8nHnnRfz64nl+Wz3re8DfyVloBR2NDHssv+ASYM0k+qkq3md8fi0rnn7Y 2gqJxinuoz9wgWs+bq/mhNXpqizcH65fvBEc7cJxc9PU76TctxyVsbK4E5VWkLE9xZ6Oikqt8QvH xaLwn/m8l3suHl39P+lPDq15wprvT9P53rPA+ez+17M3oQvhSjjc45juMWohN6PlTiU7X8RKjljn cY+O9RymYOaz2E37zVZ33WbbdJvq4vniX5z8fOofBgAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a298519f92c2d-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:06 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "2333" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-input-images: - "250000" x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-input-images: - "249998" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29996960" x-ratelimit-reset-input-images: - 0s x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 6ms x-request-id: - req_44599a429aaf463cae41e54b85a4131e status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatteUnknownyearaperspectiveon pages 25-28: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. ChemRxiv, Unknown year. URL: https://doi.org/10.26434/chemrxiv-2022-qfv02, doi:10.26434/chemrxiv-2022-qfv02. This article has 1 citations.\\n\\n---\\n\\n2021, 25, 1315\u20131360.\\n\\n\\n (9) Wellawatte, G. P.; Seshadri, A.; White, A. D. Model agnostic generation of counter-\\n\\n factual explanations for molecules. Chemical Science 2022, 13, 3697\u20133705.\\n\\n\\n(10) Gandhi, H. A.; White, A. D. Explaining structure-activity relationships using locally\\n\\n faithful surrogate models. chemrxiv 2022,\\n\\n\\n(11) Gormley, A. J.; Webb, M. A. Machine learning in combinatorial polymer chemistry.\\n\\n \ Nature Reviews Materials 2021,\\n\\n\\n(12) Gomes, C. P.; Fink, D.; Dover, R. B. V.; Gregoire, J. M. Computational sustainability\\n\\n meets materials science. Nature Reviews Materials 2021,\\n\\n\\n(13) On scientific understanding with artificial intelligence. Nature Reviews Physics 2022\\n\\n 4:12 2022, 4, 761\u2013769.\\n\\n\\n(14) Arrieta, A. B.; D\xB4\u0131az-Rodr\xB4\u0131guez, N.; Ser, J. D.; Bennetot, A.; Tabik, S.; Barbado, A.;\\n\\n Garcia, S.; Gil-Lopez, S.; Molina, D.; Benjamins, R.; Chatila, R.; Herrera, F. Explain-\\n\\n \ able Artificial Intelligence (XAI): Concepts, Taxonomies, Opportunities and Chal-\\n\\n lenges toward Responsible AI. Information Fusion 2019, 58, 82\u2013115.\\n\\n\\n(15) Murdoch, W. J.; Singh, C.; Kumbier, K.; Abbasi-Asl, R.; Yu, B. Interpretable machine\\n\\n learning: definitions, methods, and applications. ArXiv 2019, abs/1901.04592.\\n\\n\\n 25(16) Boobier, S.; Osbourn, A.; Mitchell, J. B. Can human experts predict solubility better\\n\\n than computers? Journal of cheminformatics 2017, 9, 1\u201314.\\n\\n\\n(17) Lee, J. D.; See, K. A. Trust in automation: Designing for appropriate reliance. Human\\n\\n Factors 2004, 46, 50\u201380.\\n\\n\\n(18) Bolukbasi, T.; Chang, K.-W.; Zou, J. Y.; Saligrama, V.; Kalai, A. T. Man is to com-\\n\\n puter programmer as woman is to homemaker? debiasing word embeddings. Advances\\n\\n \ in neural information processing systems 2016, 29.\\n\\n\\n(19) Buolamwini, J.; Gebru, T. Gender Shades: Intersectional Accuracy Disparities in\\n\\n Commercial Gender Classification. Proceedings of the 1st Conference on Fairness,\\n\\n \ Accountability and Transparency. 2018; pp 77\u201391.\\n\\n\\n(20) Lapuschkin, S.; W\xA8aldchen, S.; Binder, A.; Montavon, G.; Samek, W.; M\xA8uller, K.-R.\\n\\n \ Unmasking Clever Hans predictors and assessing what machines really learn. Nature\\n\\n communications 2019, 10, 1\u20138.\\n\\n\\n(21) DeGrave, A. J.; Janizek, J. D.; Lee, S.-I. AI for radiographic COVID-19 detection\\n\\n \ selects shortcuts over signal. Nature Machine Intelligence 2021, 3, 610\u2013619.\\n\\n\\n(22) Goodman, B.; Flaxman, S. European Union regulations on algorithmic decision-\\n\\n \ making and a \u201Cright to explanation\u201D. AI Magazine 2017, 38, 50\u201357.\\n\\n\\n(23) ACT, A. I. European Commission. On Artificial Intelligence: A European Approach\\n\\n \ to Excellence and Trust. 2021, COM/2021/206.\\n\\n\\n(24) Blueprint for an AI Bill of Rights, The White House. 2022; https://www.whitehouse.\\n\\n gov/ostp/ai-bill-of-rights/.\\n\\n\\n(25) Miller, T. Explanation in artificial intelligence: Insights from the social sciences. Ar-\\n\\n tificial intelligence 2019, 267, 1\u201338.\\n\\n\\n\\n \ 26(26) Murdoch, W. J.; Singh, C.; Kumbier, K.; Abbasi-Asl, R.; Yu, B. Definitions, meth-\\n\\n ods, and applications in interpretable machine learning. Proceedings of the National\\n\\n Academy of Sciences of the United States of America 2019, 116, 22071\u201322080.\\n\\n\\n(27) Gunning, D.; Aha, D. DARPA\u2019s Explainable Artificial Intelligence (XAI) Program.\\n\\n AI Magazine 2019, 40, 44\u201358.\\n\\n\\n(28) Biran, O.; Cotton, C. Explanation and justification in machine learning: A survey.\\n\\n \ IJCAI-17 workshop on explainable AI (XAI). 2017; pp 8\u201313.\\n\\n\\n(29) Palacio, S.; Lucieri, A.; Munir, M.; Ahmed, S.; Hees, J.; Dengel, A. Xai handbook:\\n\\n \ Towards a unified framework for explainable ai. Proceedings of the IEEE/CVF Inter-\\n\\n national Conference on Computer Vision. 2021; pp 3766\u20133775.\\n\\n\\n(30) Kuhn, D. R.; Kacker, R. N.; Lei, Y.; Simos, D. E. Combinatorial Methods for Ex-\\n\\n plainable AI. 2020 IEEE International Conference on Software Testing, Verification\\n\\n and Validation Workshops (ICSTW) 2020, 167\u2013170.\\n\\n\\n(31) Seshadri, A.; Gandhi, H. A.; Wellawatte, G. P.; White, A. D. Why does that molecule\\n\\n \ smell? ChemRxiv 2022,\\n\\n\\n(32) Das, A.; Rad, P. Opportunities and challenges in explainable artificial intelligence\\n\\n (xai): A survey. arXiv preprint arXiv:2006.11371 2020,\\n\\n\\n(33) Machlev, R.; Heistrene, L.; Perl, M.; Levy, K. Y.; Belikov, J.; Mannor, S.; Levron, Y.\\n\\n Explainable Artificial Intelligence (XAI) techniques for energy and power systems:\\n\\n Review, challenges and opportunities. Energy and AI 2022, 9, 100169.\\n\\n\\n(34) Koh, P. W.; Liang, P. Understanding black-box predictions via influence functions.\\n\\n \ International Conference on Machine Learning. 2017; pp 1885\u20131894.\\n\\n\\n(35) Ribeiro, M. T.; Singh, S.; Guestrin, C. \u201D Why should i trust you?\u201D Explaining the\\n\\n predictions of any classifier. Proceedings of the 22nd ACM SIGKDD international\\n\\n\\n 27 conference on knowledge discovery and data \\n\\n---\\n\\nQuestion: Are counterfactuals actionable? [yes/no]\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6328" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41SwW7bMAy95ysMnpPBdpoa6a1dOxQYMKDnuXBUmXHUypIgyt26IP8+yk5qZ+uA XWyYj+/5PZL7WZKAquEqAbkTQbZOL25v1g/N9d235cuXu89fgyt+XP5yt/f2/iG7KWAeGfbpGWU4 sT5JyzwMypoBlh5FwKiaFUW2WqV5ftkDra1RR1rjwuLCLvI0v1hkGb+PxJ1VEok7vvNnkuz7Z7Ro avzJ5XR+qrRIJBrk2qmJi97qWAFBpCgIE2A+gtKagKZ3vdlsnsma0uxLkyQlUNe2wr+VjJVQwnyo etT4KozEiqT1GNG0NIfSMH0q7HHbkYi5TKf1BBDG2CDiXPpIj0fk8B5C28Z5+0R/UGGrjKJdxWNk l9EwBeugRw/8fOyH1Z3lBxZqXaiCfcH+d1mxXA6CMO5nhPPjKCGwRT2lrU60M8WqxiCUpsnAQQq5 w3rkjtsRXa3sBJhNcv9t5yPtIbsyzf/Ij4CU6Pj0KuexVvI88tjmMd7vv9re59wbBkL/yldZBYU+ 7qLGrej0cFpAbxSwrXhhDXrn1XBfW1cV61yuRbouCpgdZr8BPBT7I2gDAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29946e9d0c60-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:07 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "452" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998491" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_8122c4daa13a43f2849cb2ad308f52be status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatteUnknownyearaperspectiveon pages 33-35: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. ChemRxiv, Unknown year. URL: https://doi.org/10.26434/chemrxiv-2022-qfv02, doi:10.26434/chemrxiv-2022-qfv02. This article has 1 citations.\\n\\n---\\n\\n13,\\n\\n 1\u201320.\\n\\n\\n(78) Mastropietro, A.; Pasculli, G.; Feldmann, C.; Rodr\xB4\u0131guez-P\xB4erez, R.; Bajorath, J. Edge-\\n\\n SHAPer: Bond-Centric Shapley Value-Based Explanation Method for Graph Neural\\n\\n Networks. iScience 2022, 25, 105043.\\n\\n\\n(79) White, A. D. Deep learning for molecules and materials. Living Journal of Computa-\\n\\n \ tional Molecular Science 2022, 3.\\n\\n(80) \u02D8Strumbelj, E.; Kononenko, I. Explaining prediction models and individual predictions\\n\\n with feature contributions. Knowledge and Information Systems 2014, 41, 647\u2013665.\\n\\n\\n(81) Erhan, D.; Bengio, Y.; Courville, A.; Vincent, P. Visualizing Higher-Layer Features of\\n\\n a Deep Network. Technical Report, Univerist\xB4e de Montr\xB4eal 2009,\\n\\n\\n(82) Weber, J. K.; Morrone, J. A.; Bagchi, S.; Pabon, J. D.; gu Kang, S.; Zhang, L.;\\n\\n Cornell, W. D. Simplified, interpretable graph convolutional neural networks for small\\n\\n molecule activity prediction. Journal of Computer-Aided Molecular Design 2022, 36,\\n\\n 391\u2013404.\\n\\n\\n(83) Riniker, S.; Landrum, G. A. Similarity maps - A visualization strategy for molecular\\n\\n \ fingerprints and machine-learning methods. Journal of Cheminformatics 2013, 5, 1\u20137.\\n\\n\\n(84) Humer, C.; Heberle, H.; Montanari, F.; Wolf, T.; Huber, F.; Henderson, R.; Hein-\\n\\n rich, J.; Streit, M. ChemInformatics Model Explorer (CIME): exploratory analysis of\\n\\n chemical model explanations. Journal of Cheminformatics 2022, 14, 1\u201314.\\n\\n\\n(85) McGrath, T.; Kapishnikov, A.; Toma\u02C7sev, N.; Pearce, A.; Wattenberg, M.; Hass-\\n\\n abis, D.; Kim, B.; Paquet, U.; Kramnik, V. Acquisition of chess knowledge in Al-\\n\\n \ phaZero. Proceedings of the National Academy of Sciences 2022, 119, e2206625119.\\n\\n\\n\\n\\n \ 33(86) Bajusz, D.; R\xB4acz, A.; H\xB4eberger, K. Why is Tanimoto index an appropriate choice for\\n\\n fingerprint-based similarity calculations? Journal of Cheminformatics 2015, 7, 1\u201313.\\n\\n\\n(87) Huang, Q.; Yamada, M.; Tian, Y.; Singh, D.; Yin, D.; Chang, Y. GraphLIME:\\n\\n \ Local Interpretable Model Explanations for Graph Neural Networks. CoRR 2020,\\n\\n abs/2001.06216.\\n\\n\\n(88) Sokol, K.; Flach, P. A. LIMEtree: Interactively Customisable Explanations Based on\\n\\n Local Surrogate Multi-output Regression Trees. CoRR 2020, abs/2005.01427.\\n\\n\\n(89) Whitmore, L. S.; George, A.; Hudson, C. M. Mapping chemical performance on molec-\\n\\n ular structures using locally interpretable explanations. 2016; https://arxiv.org/\\n\\n abs/1611.07443.\\n\\n\\n(90) Mehdi, S.; Tiwary, P. Thermodynamics of Interpretation. 2022,\\n\\n\\n(91) H\xA8ofler, M. Causal inference based on counterfactuals. BMC Medical Research Method-\\n\\n \ ology 2005, 5, 1\u201312.\\n\\n\\n(92) Woodward, J.; Hitchcock, C. Explanatory Generalizations, Part I: A Counterfactual\\n\\n Account. No\u02C6us 2003, 37, 1\u201324.\\n\\n\\n(93) Frisch, M. F. Theories, models, and explanation; University of California, Berkeley,\\n\\n 1998.\\n\\n\\n(94) Reutlinger, A. Is There A Monist Theory of Causal and Non-Causal Explanations?\\n\\n The Counterfactual Theory of Scientific Explanation. Philosophy of Science 2016, 83,\\n\\n 733\u2013745.\\n\\n\\n(95) Lewis, D. Causation. The journal of philosophy 1974, 70, 556\u2013567.\\n\\n\\n(96) Tanimoto, T. T. Elementary mathematical theory of classification and prediction.\\n\\n Internal IBM Technical Report 1958,\\n\\n\\n 34 (97) Rogers, D.; Hahn, M. Extended-Connectivity Fingerprints. Journal of Chemical In-\\n\\n formation and Modeling 2010, 50, 742\u2013754, PMID: 20426451.\\n\\n\\n (98) Mohapatra, S.; An, J.; G\xB4omez-Bombarelli, R. Chemistry-informed macromolecule\\n\\n \ graph representation for similarity computation, unsupervised and supervised learn-\\n\\n ing. Machine Learning: Science and Technology 2022, 3, 015028.\\n\\n\\n (99) Doshi-Velez, F.; Kortz, M.; Budish, R.; Bavitz, C.; Gershman, S.; O\u2019Brien, D.;\\n\\n Scott, K.; Schieber, S.; Waldo, J.; Weinberger, D.; Weller, A.; Wood, A. Account-\\n\\n ability of AI Under the Law: The Role of Explanation. SSRN Electronic Journal\\n\\n 2017,\\n\\n\\n(100) Wachter, S.; Mittelstadt, B.; Russell, C. Counterfactual explanations without opening\\n\\n the black box: Automated decisions and the GDPR. Harv. JL & Tech. 2017, 31, 841.\\n\\n\\n(101) Jim\xB4enez-Luna, J.; Grisoni, F.; Schneider, G. Drug discovery with explainable artificial\\n\\n intelligence. Nature Machine Intelligence 2020 2:10 2020, 2, 573\u2013584.\\n\\n\\n(102) Fu, T.; Gao, W.; Xiao, C.; Yasonik, J.; Coley, C. W.; Sun, J. Differentiable Scaffold-\\n\\n ing Tree for Molecule Optimization. International Conference on Learning Represen-\\n\\n tations. 2022.\\n\\n\\n(103) Shen, C.; Krenn, M.; Eppel, S.; Aspuru-Guzik, A. Deep molecular dreaming: inverse\\n\\n \ machine learning for de-novo molecular design and interpretability with surjective\\n\\n representations. Machine Learning: Science and Technology 2021, 2, 03LT02.\\n\\n\\n(104) Lucic, A.; ter Hoeve, M.; Tolomei, G.; \ Rijke, M.; Silvestri, F. CF-\\n\\n GNNExplainer: Counterfactual Explanations for Graph Neural Networks. arXiv\\n\\n---\\n\\nQuestion: Are counterfactuals actionable? [yes/no]\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6320" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41STW+cMBS8769A78xGgMLS7a1R1VSV+pHcqhIhxzzAG2NbfmaVaLX/vTbsBtIm Ui4gZt4M8z4OqygCUcPHCHjHHO+NXH++2t60zf7Xl92nq83PHzbPb39//5oVzfW3XQdxUOj7HXJ3 Vl1w7XXohFYTzS0yh8E1LYo0z5Ms24xEr2uUQdYat77U6yzJLtdp6t8nYacFR/IVf/xnFB3GZ4io anz0cBKfkR6JWIseOxd50GoZEGBEghxTDuKZ5Fo5VGPqQ6miqAQa+p7Zp9JDJZQQT6hFiXumOFbE tcXAJqU6Lq0sNgOx0IkapFwQTCntWJjE2MTdiTk+x5a6NVbf0z9SaIQS1FV+cOSn6COS0wZG9uif d+N4hhcdgzfqjaucfsDxd2mRZ5MhzBtZ0JsT6XxEuZRtPsSvOFY1OiYkLUYMnPEO61k774MNtdAL YrXo+/84r3lPvQvVvsd+JjhH44+tMhZrwV+2PJdZDBf7VtnznMfAQGj3/g4rJ9CGXdTYsEFOxwT0 RA77yi+sRWusmC6qMVWxzfiWJduigNVx9RcTqu5/WgMAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a298d4f18ca3e-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:07 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "513" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998494" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_c05c47806e814a0795ea8e108709d642 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatteUnknownyearaperspectiveon pages 5-8: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. ChemRxiv, Unknown year. URL: https://doi.org/10.26434/chemrxiv-2022-qfv02, doi:10.26434/chemrxiv-2022-qfv02. This article has 1 citations.\\n\\n---\\n\\nnct?\\n\\n\\n We present an example evaluation of the SHAP explanation method based on the above\\n\\nattributes.44 Shapley values were proposed as a local explanation method based on feature\\n\\nattribution, as they offer a complete explanation - each feature is assigned a fraction of\\n\\nthe prediction value.44,45 Completeness is a clearly measurable and well-defined metric, but\\n\\nyields explanations with many components. Yet Shapley values are not actionable nor sparse.\\n\\nThey are non-sparse as every feature has a non-zero attribution and not-actionable because\\n\\nthey do not provide a set of features which changes the outcome.46 Ribeiro et al. 35 proposed\\n\\na surrogate model method that aims to provide sparse/succinct explanations that have high\\n\\n\\n 5fidelity to the original model. In Wellawatte et al. 9 we argue that counterfactuals are \u201Cbet-\\n\\nter\u201D explanations because they are actionable and sparse. We highlight that, evaluation of\\n\\nexplanations is a difficult task because explanations are fundamentally for and by humans.\\n\\nTherefore, these evaluations are subjective, as they depend on \u201Ccomplex human factors and\\n\\napplication scenarios.\u201D37\\n\\n\\nSelf-explaining models\\n\\nA self-explanatory model is one that is intrinsically interpretable to an expert.47 Two com-\\n\\nmon examples found in the literature are linear regression models and decision trees (DT).\\n\\nIntrinsic models can be found in other XAI applications acting as surrogate models (proxy\\n\\nmodels) due to their transparent nature.48,49 A linear model is described by the equation\\n\\n1 where, W\u2019s are the weight parameters and x\u2019s are the input features associated with the\\n\\nprediction \u02C6y. Therefore, we observe that the weights can be used to derive a complete expla-\\n\\nnation of the model - trained weights quantify the importance of each feature.47 DT models\\n\\nare another type of self-explaining models which have been used in classification and high-\\n\\nthroughput screening tasks. Gajewicz et al. 50 used DT models to classify nanomaterials\\n\\nthat identify structural features responsible for surface activity. In another study by Han\\n\\net al. 51, a DT model was developed to filter compounds by their bioactivity based on the\\n\\nchemical fingerprints.\\n\\n\\n\\n \u02C6y = \u03A3iWixi (1)\\n\\n\\n Regularization techniques such as EXPO52 and RRR53 are designed to enhance the black-\\n\\nbox model interpretability.54 Although one can argue that \u201Csimplicity\u201D of models are posi-\\n\\ntively correlated with interpretability, this is based on how the interpretability is evaluated.\\n\\nFor example, Lipton 55 argue that, from the notion of \u201Csimulatability\u201D (the degree to which a\\n\\nhuman can predict the outcome based on inputs), self-explanatory linear models, rule-based\\n\\n\\n\\n \ 6systems, and DT\u2019s can be claimed uninterpretable. A human can predict the outcome given\\n\\nthe inputs only if the input features are interpretable. Therefore, a linear model which takes\\n\\nin non-descriptive inputs may not be as transparent. On the other hand, a linear model\\n\\nis not innately accurate as they fail to capture non-linear relationships in data, limiting is\\n\\napplicability. Similarly, a DT is a rule-based model and lacks physics informed knowledge.\\n\\nTherefore, an existing drawback is the trade-offbetween the degree of understandability and\\n\\nthe accuracy of a model. For example, an intrinsic model (linear regression or decision trees)\\n\\ncan be described through the trainable parameters, but it may fail to \u201Ccorrectly\u201D capture\\n\\nnon-linear relations in the data.\\n\\n\\nAttribution methods\\n\\n\\nFeature attribution methods explain black box predictions by assigning each input feature\\n\\na numerical value, which indicates its importance or contribution to the prediction. Feature\\n\\nattributions provide local explanations, but can be averaged or combined to explain multi-\\n\\nple instances. Atom-based numerical assignments are commonly referred to as heatmaps.56\\n\\nSheridan 57 describes an atom-wise attribution method for interpreting QSAR models. Re-\\n\\ncently, Rasmussen et al. 58 showed that Crippen logP models serve as a benchmark for\\n\\nheatmap approaches. Other most widely used feature attribution approaches in the litera-\\n\\nture are gradient based methods,59,60 Shapley Additive exPlanations (SHAP),44 and layer-\\n\\nwise relevance prorogation.61\\n\\n Gradient based approaches are based on the hypothesis that gradients for neural net-\\n\\nworks are analogous to coefficients for regression models.62 Class activation maps (CAM),63\\n\\ngradCAM,64 smoothGrad,,65 and integrated gradients62 are examples of this method. The\\n\\nmain idea behind feature attributions with gradients can be represented with equation \ 2.\\n\\n \u2206\u02C6f(\u20D7x) \u2248\u2202\u02C6f(\u20D7x) \ (2)\\n \u2206xi \ \u2202xi\\n\\n\\n\\n 7 \\n\\n---\\n\\nQuestion: Are counterfactuals actionable? [yes/no]\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6291" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41Ty27bMBC8+ysWvORiB5bzcN1bih56CFC0zaWoA2FNrSTWFClwKTdG4H/vUnIi J02AArJk7XBG+5h9nAAoU6iPoHSNUTetnX3+tPpW8c2clqHMvm+/bu9uuy+3FyvdbX/eqGli+M1v 0vGJda698Cga7wZYB8JISTVbLrOrq/licd0DjS/IJlrVxtmlny3mi8tZlsnzSKy90cRy4pe8Ajz2 95SiK+hBwvPpU6QhZqxIYk+HJBi8TRGFzIYjuqimI6i9i+T6rB/XDmCtuGsaDPu1hNbqriagB02h jSDcSAxRigPtO+GFEnXs0DJgIIk5NgUFKuBsQ1HgM+G2Fh2mLjBsSGPHJAq07xnCFgA3Vv66ArjF wHQOd7VhSJdLmjEgR4geftQoDd3DDm1HPIU/tdF1r1MQ62A28mFkcN7NXgmn0CguCdBDhNpUtZVf fKekNvidlAMITBF8CaXMrwvPHUDJrkZX9fWA76IMnKbQ4Na4KsWak/rO12o6tDeQpR06TTlrHyi1 OZuv3eF0KIHKjjF5wnXWngDonI9DN5Md7o/I4dkA1leS94ZfUVVpnOE6Fwuy+FGGzdG3qkcPcr/v jda98I4SoaaNefRb6j+XLa5Xg6AavT3CHxZHMEqK9oR2cZVN31DMC4poLJ+YVWnUNRUjd3Q2doXx J8DkpO5/03lLe6hdZvM/8iOgNbWytnkrvjb6ZcnjsUBp99879tznPmHFFHay0Xk0FNIsCiqxs8Na Kt5zpCaXgVWydcEMu1m2+XK10Cucr5ZLNTlM/gJ1hx4kpAQAAA== headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a2995b90f2c2d-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:07 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "940" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998493" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_f4f41cac77d44dfdb336ba6954c41915 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatteUnknownyearaperspectiveon pages 3-5: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. ChemRxiv, Unknown year. URL: https://doi.org/10.26434/chemrxiv-2022-qfv02, doi:10.26434/chemrxiv-2022-qfv02. This article has 1 citations.\\n\\n---\\n\\n a passive characteristic of a model, whereas explainability\\n\\nis an active characteristic which is used to clarify the internal decision-making process.\\n\\nNamely, an explanation is extra information that gives the context and a cause for one or\\n\\nmore predictions.29 We adopt the same nomenclature in this perspective.\\n\\n Accuracy and interpretability are two attractive characteristics of DL models. However,\\n\\nDL models are often highly accurate and less interpretable.28,30 XAI provides a way to avoid\\n\\nthat trade-off in chemical property prediction. XAI can be viewed as a two-step process.\\n\\nFirst, we develop an accurate but uninterpretable DL model. Next, we add explanations to\\n\\npredictions. Ideally, if the DL model has correctly learned the input-output relations, then\\n\\nthe explanations should give insight into the underlying mechanism.\\n\\n In the remainder of this article, we review recent approaches for XAI of chemical property\\n\\nprediction while drawing specific examples from our recent XAI work.9,10,31 We show how\\n\\nin various systems these methods yield explanations that are consistent with known and\\n\\nmechanisms in structure-property relationships.\\n\\n\\n\\n\\n\\n 3Theory\\n\\n\\nIn this work, we aim to assemble a common taxonomy for the landscape of XAI while\\n\\nproviding our perspectives. We utilized the vocabulary proposed by Das and Rad 32 to classify\\n\\nXAI. According to their classification, interpretations can be categorized as global or local\\n\\ninterpretations on the basis of \u201Cwhat is being explained?\u201D. For example, counterfactuals are\\n\\nlocal interpretations, as these can explain only a given instance. The second classification is\\n\\nbased on the relation between the model and the interpretation \u2013 is interpretability post-hoc\\n\\n(extrinsic) or intrinsic to the model?.32,33 An intrinsic XAI method is part of the model\\n\\nand is self-explanatory32 These are also referred to as white-box models to contrast them\\n\\nwith non-interpretable black box models.28 An extrinsic method is one that can be applied\\n\\npost-training to any model.33 Post-hoc methods found in the literature focus on interpreting\\n\\nmodels through 1) training data34 and feature attribution,35 2) surrogate models10 and, 3)\\n\\ncounterfactual9 or contrastive explanations.36\\n\\n Often, what is a \u201Cgood\u201D explanation and what are the required components of an ex-\\n\\nplanation are debated.32,37,38 Palacio et al. 29 state that the lack of a standard framework\\n\\nhas caused the inability to evaluate the interpretability of a model. In physical sciences,\\n\\nwe may instead consider if the explanations somehow reflect and expand our understanding\\n\\nof physical phenomena. For example, Oviedo et al. 39 propose that a model explanation\\n\\ncan be evaluated by considering its agreement with physical observations, which they term\\n\\n\u201Ccorrectness.\u201D For example, if an explanation suggests that polarity affects solubility of a\\n\\nmolecule, and the experimental evidence strengthen the hypothesis, then the explanation\\n\\nis assumed \u201Ccorrect\u201D. In instances where such mechanistic knowledge is sparse, expert bi-\\n\\nases and subjectivity can be used to measure the correctness.40 Other similar metrics of\\n\\ncorrectness such as \u201Cexplanation satisfaction scale\u201D can be found in the literature.41,42 In a\\n\\nrecent study, Humer et al. 43 introduced CIME an interactive web-based tool that allows the\\n\\nusers to inspect model explanations. The aim of this study is to bridge the gap between\\n\\nanalysis of XAI methods. Based on the above discussion, we identify that an agreed upon\\n\\n\\n \ 4evaluation metric is necessary in XAI. We suggest the following attributes can be used to\\n\\nevaluate explanations. However, the relative importance of each attribute may depend on\\n\\nthe application - actionability may not be as important as faithfulness when evaluating the\\n\\ninterpretability of a static physics based model. Therefore, one can select relative importance\\n\\nof each attribute based on the application.\\n\\n\\n \u2022 Actionable. Is it clear how we could change the input features to modify the output?\\n\\n\\n \ \u2022 Complete. Does the explanation completely account for the prediction? Did features\\n\\n not included in the explanation really contribute zero effect to the prediction?44\\n\\n\\n \u2022 Correct. Does the explanation agree with hypothesized or known underlying physical\\n\\n mechanism?39\\n\\n\\n \ \u2022 Domain Applicable. Does the explanation use language and concepts of domain ex-\\n\\n perts?\\n\\n\\n \u2022 Fidelity/Faithful. Does the explanation agree with the black box model?\\n\\n\\n \u2022 Robust. Does the explanation change significantly with small changes to the model or\\n\\n instance being explained?\\n\\n\\n \u2022 Sparse/Succinct. Is the explanation succinct?\\n\\n\\n \ We present an example evaluation of the SHAP explanation method based on the above\\n\\nattributes.44 Shapley values were proposed as a local explanation method based on feature\\n\\nattribution, as they offer a complete explanation - each feature i\\n\\n---\\n\\nQuestion: Are counterfactuals actionable? [yes/no]\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6287" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41UTW/bMAy951cQOm1AWiTuR5rdunXYil02YMMGzIUry7StTpYMiU4TFPnvo+yk cT8G7OJEeuTjI0XyYQIgdCHegVC1JNW05ujq/fJb9WV9taJNvjxff/34Kflhrn4ulmVCn8U0erj8 DhXtvY6VYz8k7ewAK4+SMLLOF4v52dksSc57oHEFmuhWtXR06o6SWXJ6NJ/z786xdlphYIvffAR4 6L9Roi1wzdez6f6mwRBkhXy3N+JL70y8ETIEHUhaEtMDqJwltL3q29vbu+Bsah9SC5CK0DWN9JuU sVR8cB0b+lIq6qQJID1CgUF5nWMBMoBxShrQ0aj1SDImHvgMVCP0UdYErgRct0ZqK3ODcHkNb35d Xr+dRgK22+xRCC0qXWrFBFEyp38M35moZykcBrCOemutNJkNsBUh3NfINJ7jvVTL/1lSjDuFvCPQ O6KG02eA40t6NNJG0wY0e1qQRJxlx/Rd4FzJAa6k6WK8Xq495MrJHMPlEw6PJfoQvfbiODATK4PS Q+3u2a9lOSV3R+dZj+KQOZeslrYawnGD6HLTF9J1xMaxFkwRuqrCQGGQ/jxnPpsCWhefV0vDNcrH RQBdDiVvvVvpAneCqk4Xsd7AFRnialsNEvskpKo1rpgovr72LHAnKRXToW08Gq4PU2RBOY+xfS5S u00t99e487gwXZCx8W1nzAiQlt92qGns+Zsdsn3scuMqFp2HZ66i1FaHOuM54zaOHR3ItaJHt/y9 6aepezIggomaljJyf7APN0/O5wOhOAzwGE52KLFGMwJOLk6mr1BmBc+CNmE0kkJxEbE4+B7mV3aF diNgMkr8pZ7XuIfk+c3+h/4AKIUtL6eMR7fQ6mnOBzOPccP9y+yx0L1gEdCveG9lpNHHxyiwlJ0Z lo8Im0DYZPxiVdwXethAZZstlolaytlysRCT7eQvpJkRuIoFAAA= headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29921fb3eb22-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:08 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "1960" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998495" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_a483eba40b744a4faef4378466fb4b13 status: code: 200 message: OK - request: body: "{\"messages\":[{\"role\":\"system\",\"content\":\"Provide a summary of the relevant information that could help answer the question based on the excerpt. Your summary, combined with many others, will be given to the model to generate an answer. Respond with the following JSON format:\\n\\n{\\n \\\"summary\\\": \\\"...\\\",\\n \\\"relevance_score\\\": 0-10\\n}\\n\\nwhere `summary` is relevant information from the text - about 100 words words. `relevance_score` is an integer 0-10 for the relevance of `summary` to the question.\\n\\nThe excerpt may or may not contain relevant information. If not, leave `summary` empty, and make `relevance_score` be 0.\"},{\"role\":\"user\",\"content\":\"Excerpt from wellawatteUnknownyearaperspectiveon pages 1-3: Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. ChemRxiv, Unknown year. URL: https://doi.org/10.26434/chemrxiv-2022-qfv02, doi:10.26434/chemrxiv-2022-qfv02. This article has 1 citations.\\n\\n---\\n\\n A Perspective on Explanations of Molecular\\n\\n Prediction Models\\n\\n\\nGeemi P. Wellawatte,\u2020 \ Heta A. Gandhi,\u2021 Aditi Seshadri,\u2021 and Andrew\\n\\n D. White\u2217,\u2021\\n\\n\\n \u2020Department of Chemistry, University of Rochester, Rochester, NY, 14627\\n\\n\u2021Department of Chemical Engineering, University of Rochester, Rochester, NY, 14627\\n\\n \xB6Vial Health Technology, Inc., San Francisco, CA 94111\\n\\n\\n E-mail: andrew.white@rochester.edu\\n\\n\\n\\n Abstract\\n\\n\\n \ Chemists can be skeptical in using deep learning (DL) in decision making, due to\\n\\n the lack of interpretability in \u201Cblack-box\u201D models. \ Explainable artificial intelligence\\n\\n (XAI) is a branch of AI which addresses this drawback by providing tools to interpret\\n\\n DL models and their predictions. We review the principles of XAI in the domain of\\n\\n chemistry and emerging methods for creating and evaluating explanations. Then we\\n\\n \ focus on methods developed by our group and their applications in predicting solubil-\\n\\n ity, blood-brain barrier permeability, and the scent of molecules. We show that XAI\\n\\n methods like chemical counterfactuals and descriptor explanations can explain DL pre-\\n\\n dictions while giving insight into structure-property relationships. Finally, we discuss\\n\\n how a two-step process of developing a black-box model and explaining predictions can\\n\\n \ uncover structure-property relationships.\\n\\n\\n\\n\\n\\n 1Introduction\\n\\n\\nDeep learning (DL) is advancing the boundaries of computational chemistry because it can\\n\\naccurately model non-linear structure-function relationships.1\u20133 Applications of DL can be\\n\\nfound in a broad spectrum spanning from quantum computing4,5 to drug discovery6\u201310 to\\n\\nmaterials design.11,12 According to Kre 13, DL models can contribute to scientific discovery\\n\\nin three \u201Cdimensions\u201D - 1) as a \u2018computational microscope\u2019 to gain insight which are not\\n\\nattainable through experiments 2) as a \u2018resource of inspiration\u2019 to motivate scientific thinking\\n\\n3) as an \u2018agent of understanding\u2019 to uncover new observations. However, the rationale of\\n\\na DL prediction is not always apparent due to the model architecture consisting a large\\n\\nparameter count.14,15 DL models are thus often termed\u201Cblack box\u201D models. We can only\\n\\nreason about the input and output of an DL model, not the underlying cause that leads to\\n\\na specific prediction.\\n\\n It is routine in chemistry now for DL to exceed human level performance \u2014 humans are\\n\\nnot good at predicting solubility from structure for example161 \u2014 and so understanding how\\n\\na model makes predictions can guide hypotheses. This is in contrast to a topic like finding\\n\\na stop sign in an image, where there is little new to be learned about visual perception\\n\\nby explaining a DL model. However, the black box nature of DL has its own limitations.\\n\\nUsers are more likely to trust and use predictions from a model if they can understand why\\n\\nthe prediction was made.17 Explaining predictions can help developers of DL models ensure\\n\\nthe model is not learning spurious correlations.18,19 Two infamous examples are, 1)neural\\n\\nnetworks that learned to recognize horses by looking for a photographer\u2019s watermark20 and,\\n\\n2) neural networks that predicted a COVID-19 diagnoses by looking at the font choice\\n\\non medical images.21 As a result, there is an emerging regulatory framework for when any\\n\\ncomputer algorithms impact humans.22\u201324 Although we know of no examples yet in chemistry,\\n\\none can assume the use of AI in predicting toxicity, carcinogenicity, and environmental\\n\\npersistence will require rationale for the predictions due to regulatory consequences.\\n\\n \ 1there does happen to be one human solubility savant, participant 11, who matched machine performance\\n\\n\\n 2 \ EXplainable Artificial Intelligence (XAI) is a field of growing importance that aims to\\n\\nprovide model interpretations of DL predictions Three terms highly associated with XAI are,\\n\\ninterpretability, justifications and explainability. Miller 25 defines that interpretability of a\\n\\nmodel refers to the degree of human understandability intrinsic within the model. Murdoch\\n\\net al. 26 clarify that interpretability can be perceived as \u201Cknowledge\u201D which provide insight\\n\\nto a particular problem. Justifications are quantitative metrics tell the users \u201Cwhy the\\n\\nmodel should be trusted,\u201D like test error.27 Justifications are evidence which defend why a\\n\\nprediction is trustworthy.25 An \u201Cexplanation\u201D is a description on why a certain prediction was\\n\\nmade.9,28 Interpretability and explanation are often used interchangeably. Arrieta et al. 14\\n\\ndistinguish that interpretability is a passive characteristic of a model, whereas explainability\\n\\nis an active characteristic which is used to clarify the internal decision-making process.\\n\\nNamely, an explanation is extra information that gives the context and a cause for one or\\n\\nmore \\n\\n---\\n\\nQuestion: Are counterfactuals actionable? [yes/no]\"}],\"model\":\"gpt-4o-2024-11-20\",\"n\":1,\"temperature\":0.0}" headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "6312" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/41UTW/bMAy951cIurQFkiDJlrrZbUUP69DLsA8UXQpDkehYqywJopwmKPLfR8lJ k34M2EWGSfHx8ZHUU48xrhX/xLisRZSNN4Ory9m3+g6vRftr2orJ5ffzn1/vzovbR9vKMe+nCLf4 AzLuo4bSURxE7WznlgFEhIQ6LorxdDqaTIrsaJwCk8KWPg4+usFkNPk4GI/puwusnZaAdOM3/TL2 lM9E0SpYk3nU31saQBRLINv+EhmDM8nCBaLGKGzk/YNTOhvBZtZPc8vYnGPbNCJs5mSa8x81MFhL CD4ypVG2iIBk8UZoKxYGmAhRV1pqYZgmKGP0EqwEdnr7+fqMTCwSRM6yjsxVTAF4ZkAEq+2SnV7d nLEsALLKBSZraIhk2AzZdWS1XtaEV0fMKLrxLlABhE5AKVvwAaJYaKPjhgmrOmZWJNUxJW9JopCK Vinb1Q2jAKVl9vfZY61lTRUkPFIh0URNAaDYycII+TBYuPXJjt+QJTFEG2sXkDUkGoHQl/4VMqMf oGMvSQnp2sSuEjK2gkpL1BSgDNpHqvIFS0HFOWfSuRf2FdEc7oNbETcqCjtFqH7HSKqWcgQYkN9D IBkCmA651p5If3GPsILQzwrmJihHLbQu5mzUuWhIO6UCzQ4pQvVAeFsAaSQym9T04Zz3u2GhZLBK HSlRugBpaM7ndns8YQGqFkUacNsac+QQlkh0VNNs3+882+dpNm5JVS3wVSivtNVYl7RPSMtFk4vR eZ69Wzrv89a0LxaBE1DjYxndA+R040lx0QHyw6IeuUfFzhuJozlyfLiY9t+BLBUNojZ4tHpcChoI dYg97KlolXZHjt5R4W/5vIfdFU9D/T/wB4eU4OkRKg/T9d61AOkl+9e1Z6EzYY4QVvQ+lVFDSM1Q UInWdI8Mxw1GaErq2DItq+5emsqXxWwiZ2I0Kwre2/b+Arg77FRyBQAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29983fac0c60-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:08 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "1578" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998488" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 3ms x-request-id: - req_e571292de1994fb3938302eb16a4ed85 status: code: 200 message: OK - request: body: '{"messages":[{"role":"system","content":"Answer in a direct and concise tone. Your audience is an expert, so be highly specific. If there are ambiguous terms or acronyms, first define them."},{"role":"user","content":"Answer the question below with the context.\n\nContext:\n\npqac-2a9aa41f: Counterfactual explanations are actionable as they suggest which features can be altered to change the outcome. For example, in chemistry, changing a hydrophobic functional group in a molecule to a hydrophilic group can increase solubility. This actionability provides intuitive understanding and helps uncover spurious relationships in training data.\nFrom Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. ChemRxiv, Unknown year. URL: https://doi.org/10.26434/chemrxiv-2022-qfv02, doi:10.26434/chemrxiv-2022-qfv02. This article has 1 citations.\n\npqac-b4c5b571: Counterfactuals are actionable as they suggest modifications to molecules that can lead to desired changes in properties. For example, in the context of blood-brain barrier (BBB) permeation, counterfactual explanations identified modifications to the carboxylic acid group that enabled a molecule to permeate the BBB. These actionable insights align with experimental findings, demonstrating the utility of counterfactuals in proposing structural changes to achieve specific outcomes.\nFrom Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. ChemRxiv, Unknown year. URL: https://doi.org/10.26434/chemrxiv-2022-qfv02, doi:10.26434/chemrxiv-2022-qfv02. This article has 1 citations.\n\npqac-e3ce979c: The text discusses the use of counterfactuals in molecular prediction models, particularly for solubility and scent prediction. Counterfactuals are generated to explore structural modifications that influence model predictions, such as solubility or scent. For example, modifications to ester groups and heteroatoms were found to significantly impact solubility, aligning with known chemical intuition. Similarly, counterfactuals were used to identify structural changes affecting scent predictions. These findings suggest that counterfactuals provide actionable insights into how molecular modifications can alter properties, making them useful for tasks like drug design and chemical process optimization.\nFrom Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. ChemRxiv, Unknown year. URL: https://doi.org/10.26434/chemrxiv-2022-qfv02, doi:10.26434/chemrxiv-2022-qfv02. This article has 1 citations.\n\npqac-6737b77f: The excerpt discusses the use of molecular counterfactuals in explaining black-box models. Counterfactuals are described as actionable because they are represented as chemical structures familiar to domain experts, are sparse, and provide minimal distance from a base molecule while contrasting in chemical properties. These explanations are useful for understanding and modifying molecular properties.\nFrom Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. ChemRxiv, Unknown year. URL: https://doi.org/10.26434/chemrxiv-2022-qfv02, doi:10.26434/chemrxiv-2022-qfv02. This article has 1 citations.\n\npqac-9523a67c: The excerpt states that counterfactuals are considered ''better'' explanations because they are actionable and sparse. This is in contrast to Shapley values, which are described as non-actionable and non-sparse. The text highlights that counterfactuals provide a set of features that can change the outcome, making them actionable.\nFrom Geemi P. Wellawatte, Heta A. Gandhi, Aditi Seshadri, and Andrew D. White. A perspective on explanations of molecular prediction models. ChemRxiv, Unknown year. URL: https://doi.org/10.26434/chemrxiv-2022-qfv02, doi:10.26434/chemrxiv-2022-qfv02. This article has 1 citations.\n\nValid Keys: pqac-2a9aa41f, pqac-b4c5b571, pqac-e3ce979c, pqac-6737b77f, pqac-9523a67c\n\n---\n\nQuestion: Are counterfactuals actionable? [yes/no]\n\nWrite an answer based on the context. If the context provides insufficient information reply \"I cannot answer.\" For each part of your answer, indicate which sources most support it via citation keys at the end of sentences, like (pqac-0f650d59). Only cite from the context above and only use the citation keys from the context.\n\n## Valid citation examples, only use comma/space delimited parentheticals:\n- (pqac-d79ef6fa, pqac-0f650d59)\n- (pqac-d79ef6fa)\n## Invalid citation examples:\n- (pqac-d79ef6fa and pqac-0f650d59)\n- (pqac-d79ef6fa;pqac-0f650d59)\n- (pqac-d79ef6fa-pqac-0f650d59)\n- pqac-d79ef6fa and pqac-0f650d59\n- Example''s work (pqac-d79ef6fa)\n- (pages pqac-d79ef6fa)\n- Author et al. (2023)\n\nDo not concatenate citation keys, just use them as is. Write in the style of a scientific article, with concise sentences and coherent paragraphs. This answer will be used directly, so do not add any extraneous information.\n\nAnswer (about 200 words, but can be longer):"}],"model":"gpt-4o-2024-11-20","n":1,"temperature":0.0}' headers: accept: - application/json accept-encoding: - gzip, deflate connection: - keep-alive content-length: - "5219" content-type: - application/json host: - api.openai.com user-agent: - AsyncOpenAI/Python 2.21.0 x-stainless-arch: - arm64 x-stainless-async: - async:asyncio x-stainless-lang: - python x-stainless-os: - MacOS x-stainless-package-version: - 2.21.0 x-stainless-raw-response: - "true" x-stainless-read-timeout: - "60.0" x-stainless-retry-count: - "0" x-stainless-runtime: - CPython x-stainless-runtime-version: - 3.13.5 method: POST uri: https://api.openai.com/v1/chat/completions response: body: string: !!binary | H4sIAAAAAAAA/4xWTW/jNhC951cQOm0A24iVeBX3tmmxQI9Feul2FwZFjiQmFKnyIxvtIv+9j5Q/ 5CYBeogTcz44780bTn5eMFYoWfzCCtHxIPpBL3+72/7x8HD96XbcXLvqfrC6+tJtvnR3n9XNQ7FI EbZ+IBEOUSthEUdBWTOZhSMeKGVdV9V6s7kqy2029FaSTmHtEJY3dllelTfL9Rq/94GdVYI8PP7G V8Z+5s9UopH0jOOrxeGkJ+95Szg7OOHQWZ1OCu698oGbUCxORmFNIJOr/ov8ggkbceAaLkLk2jPu iOFvoOC1phX7s6ORDc4+KUnMDyRUowQDhPSbJz/PgmUNsEZHnlkHoyYRNXfMBxfFdB5AERPcME1c pghJXjmSDNyZFg7KMBsDSCS/Yp+Rhp55InSRLKKjHljc+LpgH1uEB8Y1TpVpWTdKZ4fO1qiziWbC olnrbBxyrXsHpeFgDeUz1SeMQGh1rGEJuMk2zZTxxAdro5LcCGINKkTIQC6MzA5B9epHpoN9GP7h YlnyLec36+Zyxe5hAxt6zFBCRyw34TngBlZra+WydhymmjunyLEPd3d3lwype8opX4NGM0xAB8Df q1YI7mr7PCZ0XCh5BJ4aQBmFPLRowi6c9T7XhXsXIFK1JsH+rkKHLqAO1eM6cNhAgbBAJUaigT1u DA43wxnhKjGSuBJwjSGzuGejvhGbelOtL1dfzVfz61ua097Oia5J8Ogp5R2zgx+481BDY0X06UZQ 3Sujelx20BDAvCm+72g2sR4cB/ykYJUKGBwFPnU791Pa5DJBDj5pX3lEPWb5Us8IgkCFT1P3I6bR pfmSWSNm34oxfTtVsdeIQo6Jio/VdVVXVRLGJynVpM6kjTCftBkTynjVdiFNCPAdUM1Rp84q0+hI SZmzG30UHeN+pupcpxdo5yKxkszgVjg1dS3h4sOgj3rS6pGYdLHN89qaHJ+nMbnjKjxU/i3907Wg bbUVU8d/N1nzjmNQU5ModFbus993HGM+sicOAH5elrFmeSLi9RSgUahUBT0eBmI8e4je4yo9Q/m5 OL44kFV0aABenX7ouFc/Tpo+VDDX83ZTXvOPFdBBJPG9ZzRDyj0M1k7kpvfjXCDn85vo5aJT9JS8 ju/ttGqgPL+aP+aOmuh52iUmaj0zcGNsmFKmNfJtb3k5Lg5tWzSv9v8JLTDhync7rC6PPYYl4YMd imx9wee3vKDi2c4pkKgfwi7YR8rXrcvbzZSwOO3Ek7m83e+vIqBGPYvbfDzEnaXcSYyp0n625QoB kkieYk8rkUep7MxwMQP+up63ck/gwf//SX8yCEED9v0Or4pU4hzzyc1R6uR7bkeic8GFJ/eEfwV2 GGaXmiGp4VFP+7zwow/U79CxNj1lalrqzbArN6Jpys26KYuLl4t/AQAA//8DANxdU4DdCAAA headers: Access-Control-Expose-Headers: - X-Request-ID CF-RAY: - 9d0a29a36aa3ca3e-SJC Connection: - keep-alive Content-Encoding: - gzip Content-Type: - application/json Date: - Fri, 20 Feb 2026 01:17:11 GMT Server: - cloudflare Strict-Transport-Security: - max-age=31536000; includeSubDomains; preload Transfer-Encoding: - chunked X-Content-Type-Options: - nosniff alt-svc: - h3=":443"; ma=86400 cf-cache-status: - DYNAMIC openai-organization: - future-house-xr4tdh openai-processing-ms: - "2083" openai-project: - proj_RpeV6PrPclPHBb5GlExPXSBj openai-version: - "2020-10-01" x-openai-proxy-wasm: - v0.1 x-ratelimit-limit-requests: - "10000" x-ratelimit-limit-tokens: - "30000000" x-ratelimit-remaining-requests: - "9999" x-ratelimit-remaining-tokens: - "29998734" x-ratelimit-reset-requests: - 6ms x-ratelimit-reset-tokens: - 2ms x-request-id: - req_9b071933abfe48e28d47bb0ef8b0e74f status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_s2_only_fields_filtering.yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=Augmenting+large+language+models+with+chemistry+tools&fields=authors%2CexternalIds%2Ctitle response: body: string: '{"data": [{"paperId": "354dcdebf3f8b5feeed5c62090e0bc1f0c28db06", "externalIds": {"DBLP": "journals/natmi/BranCSBWS24", "ArXiv": "2304.05376", "PubMedCentral": "11116106", "DOI": "10.1038/s42256-024-00832-8", "CorpusId": 258059792, "PubMed": "38799228"}, "title": "Augmenting large language models with chemistry tools", "authors": [{"authorId": "2216007369", "name": "Andr\u00e9s M Bran"}, {"authorId": "2161337138", "name": "Sam Cox"}, {"authorId": "1820929773", "name": "Oliver Schilter"}, {"authorId": "2251414370", "name": "Carlo Baldassari"}, {"authorId": "2150199535", "name": "Andrew D. White"}, {"authorId": "1379965853", "name": "P. Schwaller"}], "matchScore": 172.33388}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "684" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:29 GMT Via: - 1.1 b0ed8f5cd57ec24ce179421915a813d6.cloudfront.net (CloudFront) X-Amz-Cf-Id: - MtgSbTR-jjSUcN9fDYBcFVy9UF0QRQdhPfCJnOf_Bh5cloxr9UiIVw== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - PKejqEJwPHcEHKA= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "684" x-amzn-Remapped-Date: - Mon, 11 Aug 2025 23:07:29 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 74c9b242-6403-4c69-8cb5-daaae47c0a43 status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.48550%2FarXiv.2304.05376/transform/application/x-bibtex response: body: string: Resource not found. headers: Connection: - keep-alive Content-Type: - text/plain;charset=utf-8 Date: - Mon, 11 Aug 2025 23:07:29 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 404 message: Not Found version: 1 ================================================ FILE: tests/cassettes/test_s2_title_search_empty_data.yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=empty+results+edge+case+query&fields=authors%2CcitationCount%2CcitationStyles%2CexternalIds%2CinfluentialCitationCount%2CisOpenAccess%2Cjournal%2CopenAccessPdf%2CpublicationDate%2CpublicationTypes%2Ctitle%2Curl%2Cvenue%2Cyear response: body: string: '{"data": []}' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "12" Content-Type: - application/json status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_title_search[paper_attributes0].yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example%40papercrow.ai&query.title=Effect+of+native+oxide+layers+on+copper+thin-film+tensile+properties%3A+A+reactive+molecular+dynamics+study&rows=1 response: body: string: !!binary | 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 headers: Connection: - keep-alive Content-Length: - "3966" Content-Type: - application/json Date: - Thu, 11 Sep 2025 18:57:07 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1063%2F1.4938384/transform/application/x-bibtex response: body: string: " @article{Skarlinski_2015, title={Effect of native oxide layers on copper thin-film tensile properties: A reactive molecular dynamics study}, volume={118}, ISSN={1089-7550}, url={http://dx.doi.org/10.1063/1.4938384}, DOI={10.1063/1.4938384}, number={23}, journal={Journal of Applied Physics}, publisher={AIP Publishing}, author={Skarlinski, Michael D. and Quesnel, David J.}, year={2015}, month=dec } " headers: Connection: - keep-alive Date: - Thu, 11 Sep 2025 18:57:07 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=Effect+of+native+oxide+layers+on+copper+thin-film+tensile+properties%3A+A+reactive+molecular+dynamics+study&fields=authors%2CcitationCount%2CcitationStyles%2CexternalIds%2CinfluentialCitationCount%2CisOpenAccess%2Cjournal%2CopenAccessPdf%2CpublicationDate%2CpublicationTypes%2Ctitle%2Curl%2Cvenue%2Cyear response: body: string: '{"data": [{"paperId": "4187800ac995ae172c88b83f8c2c4da990d02934", "externalIds": {"MAG": "2277923667", "DOI": "10.1063/1.4938384", "CorpusId": 124514389}, "url": "https://www.semanticscholar.org/paper/4187800ac995ae172c88b83f8c2c4da990d02934", "title": "Effect of native oxide layers on copper thin-film tensile properties: A reactive molecular dynamics study", "venue": "", "year": 2015, "citationCount": 9, "influentialCitationCount": 0, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": "CLOSED", "license": null}, "publicationTypes": null, "publicationDate": "2015-12-21", "journal": {"name": "Journal of Applied Physics", "pages": "235306", "volume": "118"}, "citationStyles": {"bibtex": "@Article{Skarlinski2015EffectON,\n author = {Michael Skarlinski and D. Quesnel},\n journal = {Journal of Applied Physics},\n pages = {235306},\n title = {Effect of native oxide layers on copper thin-film tensile properties: A reactive molecular dynamics study},\n volume = {118},\n year = {2015}\n}\n"}, "authors": [{"authorId": "9821934", "name": "Michael Skarlinski"}, {"authorId": "37723150", "name": "D. Quesnel"}], "matchScore": 284.00894}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1153" Content-Type: - application/json Date: - Thu, 11 Sep 2025 18:57:08 GMT Via: - 1.1 97354ec70bdda7ac06cc29aed9bfdb3c.cloudfront.net (CloudFront) X-Amz-Cf-Id: - 36DcHqizjEe1jE3u4voxdMpBcaNp8A8uAC0usTmKmj_iA-5lT9pVCw== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - QwE8oFzXPHcEbvA= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1153" x-amzn-Remapped-Date: - Thu, 11 Sep 2025 18:57:08 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 2b9e3e52-70a3-4cef-829a-75cd03d68ea1 status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.openalex.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.openalex.org/works?filter=title.search%3AEffect+of+native+oxide+layers+on+copper+thin-film+tensile+properties%3A+A+reactive+molecular+dynamics+study response: body: string: !!binary | H4sIAIUbw2gA/+1bbY/jNpL+fr/CMLCHBLB7SEqUqA4Oh9nOBMjeZiabSRAsGg1DLdM2t2XJq5fu 8Q76v99TRfmt25bj3G5wd8hgZiBSRbJYL09VUfTn4dI26fD68zAr26IZXsvRcHo/qWy9KovaThq3 tJNlPbxWSTIartK5ZZKVrSa+ofRoOK/KdlVPuhmKNs+fR0NM0eYNRt5+Hrrp8Hq4aJpVff3mTbmy RZrbT1dlNX/zs1JxnKggiuIhVi7dHiFaTCPFlRRR8EZehUlgAhOCsnFNjtWH72YzmzWDcjYo0sY9 2kH5yU3tIE/XtqoHZTHIyhWYHTQLV4xnLl8OGlvULreDVQVGqsbZ+nrwdlDZNOPxyzK3WZun1WC6 LtKly+pB3bTTNXHn6hUmnqD7t166srl9TIvMTuqsrLC6EeGVhOAi6KK9z10GFspisrZpBZ0IqQ/7 p2lDLNOLsVRjJTGnm9ak9406/tkaWqZzWnE3GDaRp8W8ZbMZ2gI0q8ot02o9yUvPJ/Hj6kkJg5yl eW15xNQVcza2SVvlv3Dx1XTmqckYR8O6bKvM8uwnLfGjNHGSSB2Gr1X9J4wHJen67WqVOzsdfL9Y 19AQybGuiwkxJoSSY5PESdcJ0z/ok8Ik41hrQc9aibExeL4bvdgyWg4aK9O/HXZN7Sc7pVcwgVUL 3TVV6995k/DNRVk3E+wnLdw/Opke3+/3YSBFoITSpNdXwzZbf7u0FayoGHxb1HC6trEkhd3uXw/M XWFZx7fnF77rmYA5IPw4wwPmaNYr4vVvXk1saS6Ds9mNAXTNCanf9zzCSVk6vgkppllmV42d7kud fahebDuft2ul8N8MEOQ7JllV1nVlZzsuxjuKne5oN1tSME6C4YXr+rXtl+mkbtKGVD3M8rIGF9y5 Z9hpsQZWr8raNSX8aJHWkxleNPZTs+M4bZtFWdULt/Jo7NsTHuUNZOaquhluKPv95K0GiKhYaLab F47yncsWqc0HHx/SCmqsHxyxXGUbuT+TMLwOsfK54PCtDoxRyrxe56fCsQKbNVnCD2W2sHVjK0JK 4n87HVo8k1DqoVk8KQUKDlMQVlZOeaqPw61SZy00RbOcs+EtZ3fPd5sZnTdWzHe38UofRgnAtkqt 0qdJp4AXMvv66lBsTDlD4HDeLWosUcz9Gse3P5CD7wD0lcNSg4+ZswgYg++rcl6ly9FgtCMcDd7b p8Ffy+phIMNIxaPBTx/fEtt763nlHGfitAb+hywcmMeEI9Qv0MDz6JhR5+kFNi1lEIskYJx+YWtf p49uOvjT1eAvra0Lm/9u0ecs+ojEfnNjHp2cVw2+tiuA89IWnL19Z+F/BeJLPnhXzCEmS6z9Vv7y T+PmV7nO6P+Kh98djkvrmhJoL/V9e53ArRpXZM1kV8/s++ex9wdmvTFlz9ndy7evmScrWGVIWoA2 AJnHNG/hA4EWAmNbjC2yNTvl19g7v5209dRTPPuxq3SXl8yeMmTY4gpQhNzoIJ77BG/TRs7k5pRR DAsSPeVimUP6Mrlfb/aWcFeXzpXVMs3dP0CA2gPZUONyu8ewuIpkEsZmk3825WoiN6QvclN+J168 fN5bf7dCV5F8Hi6JVaOpLkCpYSKQ3zskVyXzUOYtI4eUxifPLZcrARqcm3TFZpfMpQcdz8xWZZsK ddSL9C2t0r1caFdwYAcu648JP0qhxJFaAOEaCRx0kTVtZQeoTwbLnc/uSjuM7Go1cZUkBoVa3d7P nM2n/etuqOo3Sgt9ZP2t890s7BJWV60p4f0FM2+n7Zu082iaclouU1f0z+lp6jfB6zl9fg6ZdFPW w2dKn0ny58Lk77L/V8i+X+IyiuTriW78Gca3BXjMyqKwWVOz3H+wCBj3iBrN+oW01a+S9hFtv8ux WlVCuaPBh1XD+6Glv0vnhUVzF4f+3yhBxPJIVfUW6OiKdjl4m+flGsZXLjnPtTUF3qM2H8e/QgtK iiOSOZqQXChxdUS7h5P9C2SNyPxg109lNT2HNxuyN/7IbswneSedYfN2K+4wDsI4jlW/dreL3Feu aXJbUNH/ao0/HrzcW0IKaYzxyXlBJxXnNnUjE6UjFQqyqCf34KYpnfRuiZ+enq423TyAGm/+gowr DqI+D6k7D0Ekto/I7q/FHqPGyCAKz4jihk4FjZYqCC/iTYsoOWKiHzqFdOyoPXbiKAkScHSGH6kB XFrI5CJ2pJHxMX62/jlYdkLbMSf3mItkbPQ5s7mRUiVaQI8X8RZH4lgE+ylvHDG1PYtGDLPFvFkc F59ODLBEnBNfJEVowOVFHCYiEceA4X2b5dYfXZ7gKQyVlPoMTzoSWoXGXKZREQTmCE9vl2W1WpQt jL/M3fQEY0Yih47Pmz60jj/RRZyFQZAcPZt+i6CMxL6YD76YIzOuvzzBHBSEMuycrSUiimV4mSLp 7ESJI6D848IVA/rycYqlKJTRWZ6wa0gs1JcxFesjDHkAP8GNCBn5znMjNXRxmfakDNUxTLXNPjYc shNEUpuzxmRQMgVCXYbxEjiqBGD6bIzrOAsujnY3FAZiYy4UlEH+aI4cjx2GxSPy2gbIfq7CIDSw cHmZuCCsY2D6jipR5KHLctrm7SnGwiTRiT4rrkQaIC2Dz0V2FR07hie7yttqvj4eeBRy/UAnZ9Eg lsjMA3EhhoKnIxp8nxZlg1yyKPPyFF8kgijS5/gyQgodXOiBkQiSI2zdVOuahEXnV6vFCb5EohEE RXwu5kgAe6Iic1moVoE6cuy8qzCP5lnirO4McpNIXcYKoFwfqQI/8Oe5bJC95ulATJSdLm298Mdi m6+69d5Z27bPJ6+/f+v9/Vvv/9pvvVjs3hLD6d4Fhc7IWoCGK9L73E6m5Ajlig7wJ/OSTiPItF9Y 1Z/dzNKdELJxvnuxpyq6gcN+2Ba+Ip/C0PV+9RcRLwCooiv6uq86J7T9TQiJBwHCNE3iaScvPXo2 g5hItO/TR1j7D7a2aZVRGZA+pdWUpTd8L4SQId0YkWOhkS4QH8RqbZvu7LuTbdeq7MzSiTeMF7Xu w9bztXn97qTR/CyTKNSRlBx4TpJEOo594nOSJKaPepyBnCRBwAlUrHtIYoXKxt9+OU0SayNU30LQ BviJVR+JptRShX0kiURFFvWRGBFLEyWyhwQ5loZixUkSxXo3SLv7SCAWE4veWcIo0DronUUrxL/g NLt0ZwnFbyL7SUIFVoI+kiREZiH7SFQYBiZRfQspxAzI5bQCyPMgWqNPGwNItNEGDtpHggJG6B6r U1SvJCgr+mYJ4yQyslcBoQklJHfaMJXQMhTwtT65QItYJ+4lwYZI1T0kyNGomOljN5KGiqk+BcDt kU33gAeRUBUQ9bELuSmkc70LGZTkQvYtFEN28PqkhwR1ORy/Vy4gASLqPlczKia769kRArFGkRGc xjolpZKoV/oMExliFEfK9NgLKtLY6CTo2TTqiggAk/SSJAZ2F/b4EZEEUvXAIUSr8ReW10eCRDJC hdZDEgW8555ZAolcG9jRYwwBcvLAAB96SJhI9cnFqFDTIc1JCsq4ZICgdlpyIIHdxpHpJ0EsUuY0 AoWIIhKgmfSSaLCL4mvI2UGeNufDP0AYKBxHPSiLtBJEUaxPC4rQMUYw7MkQABORRpHUF32CKADa JEGPGQZBGAe0Vo8BwdQB6UmfB8tQw5x7cACxPQ7hxvL0pmWISpWjJd9Oua/5ozgKCaRpDVcUU7rp +9mfEHTfOa5vBVVrfG8ZDTlKwhFq+BH8awQLoIkoDb1VozgZSRGPAAEjeB0Ncg82X+NdQJl5iQcM lSMj8T9oYz2CSY8QNEEfcT4NEuok+lWFpJOyw1t6Rcn1bTxKIiyRjFQsuZak0py+1N+aURijp0iL crz9AkzsJpSS0nWBW0nbsK5ZUGp8K4lxWzy6qiwoN0etgE5a135alXXLW5Ihj/Y3Xm4lONM0X0sl AdrMF09Gay/cnCpbaWivdrmyVdp00yS8nZLucfqplGCibFG4v7fMp6IN1W1GUygWKvcSQ+nmCPeK eoilb0kqSo9kFHPNSC0IJjIQHc38ZHPajqK3D0X5RLJTzNci5aHJKFHQE/QQCwjTvBLdlJQmNjKm BQJicJE+0oagNA07AAMs9ce0bryaid2pm3EmTwsFpO+Ap9l8JqRePUoMlie1Ky+azVdKvIxGCWwD NMhd8HJWlUvqpoXu2/yBnjFYR1vmvqKuhOvHJxRbFekmFB0nLmvzbuZQ8jUhesLmWcjLcmpzr5KQ bXRB2wvDkQ5GGtYmRgnsOYZsDeQk8U9JGD0Y1yQ3GKKB/RpNQ1F/bS4X3oZkKoYtunmylrsiViUJ NgT/EnOSzlD6IHyMJOkDaynep6Ov2kRIu7rfXKi71cK7xSOEyxrSir/3LVetv8bD0tUhb/MRtamb d2XprSYWyxk9RSNNfiqwLukfe5CwG0PCsfybBZIV2EqoZwMBEcglRBFiCG1Okhi8yVazNGMSuYUJ MtQIG2J0eG+f2DhYm101zNwzRMAsqrkdl6vGLen6EfUTr8u04EEMC+WUn0k0t392KQsjIvFahgeS Uppfkd5jEhF/iyQeGCU+Zo6fiZd3cCImI15+oAfiIQ65j5ZFQKJHWvULYG7w5R01aeFV2dCdJe8M 7DFtzewa1oqtZmVFhmpoHbqFRSybgOOa/wUHtUM2uu6HHNRBi25+z0FtWrl2S7zenIMZWv1p4Rga DO86bzPnf7Nxa5KNH2zhOmHQYMSDtkjZBm6YEDiQx8VsM/ylg0hgv7BDxaa0/S3KFb+ieT56Xnin iPkMW/xpkNts+DA0Dgwi2gmiozf7kzIRozB24yeQkuXY4StjMsUkDKCbWTWjrAwPAbXr1X7q7IEO /a2fm4VDN9a8bCTDLAHP3BMwyK79vQS0Ar8cxvOUyiuHD+t9B60xS13ewTjjaYdk9ZKtXDKsfuPY Rf0aCbvflH5bw6MYRrubAyQL7mMjoU9f1Oj4KIs5G41kDEjZF70cA4YS/y5hrO7sSTLO/bjwzwFU CQ2HgCa4tmKD3ikjDBmA+BG2wACabj5ccm/i+fARgAMeKwshkxvs34BYthu2l5t2/IEbQYdT46ll EPTiZiRCyOE1GYFu2g8sWc2SdJ82C0WCXyqeLfJT++cdRnBTd026y8cuLhkhZmXLyCojwFmwAa4N +MkY0jB+LxwYJYNBlrY1z8poAMW7mdsdP0uGBm+N3AT6JSG7s//xG3d6d+TvPBz75caEnOONmi6+ TeGx3siN1zYFycIrhjGgG8RtuKMgbjlWo1pCs5M9txEx2MX3fYJfkP6++Pd0ufoqb76KNWceNM9/ fcmP8q67YcrUid6n1n/4kvlNGH/KWbNhLuHAitSG1a6EerEw5ySMFD93Tq0YJbojSLT0Vowjbkd7 VsYBC2Uwi/XwqBrdprM+55sJe2NGl8oIHKiPc4vuwgy3w42Dd3kW5WwK1s7Rt1lUZctJmuLcrdhd JaAuyDn2MWoTBRVnbin/JIeajCcMs3wqy8xzHuHoAhzFQRYHAwuTjWeVZcaU3kdC7sFyei81qn1v skPYcfrJp3aB7uTjKFHd8BvQFuadeSqGiKzy22EuGCk8+FGT85vyvrbVI2sWdeL+4qwbzuboa9dT J77QeAjhZ8p2DG+28KrVPgHgs25u04zf3NyMm3L8x5sb7or3FMJsIZNQbKkzx6loBA3FXju2ghf4 WMhvzF2XoXGLc6HUx1zFcT6jCw1dTqliH8AgpTWvw+7rlvSJhoXIQXwThlQXmOGW/i0HZg7TW/ly KN5cPUYzvnveu8OcrtyLj1DouToot7iO/U8sCdv4DxpYXx/+WpJPv2uazV+Dvv083PxCk343+/K+ tqRveluC4ByBOkcgzhDI5ByBOUcQvyZQBwTRsRkIPlZTPgvY/jJV6bFIxiL4UUbXYXgto6sINTMf L7PV79PKaCyisQqH/rtI2a4mHDzvnv/tvwEfbMEb0TwAAA== headers: Access-Control-Allow-Credentials: - "true" Access-Control-Allow-Headers: - Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Authorization, Cache-Control Access-Control-Allow-Methods: - POST, GET, OPTIONS, PUT, DELETE, PATCH Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Authorization, Cache-Control Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "4480" Content-Security-Policy: - default-src 'self'; object-src 'none' Content-Type: - application/json Date: - Thu, 11 Sep 2025 18:57:09 GMT Nel: - '{"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]}' Referrer-Policy: - strict-origin-when-cross-origin Report-To: - '{"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1757617028&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&s=Hi0ST9YPOaQgO50Zb4nLD7RcJ6%2Fg171Y41AG5dg9uYo%3D"}]}' Reporting-Endpoints: - heroku-nel=https://nel.heroku.com/reports?ts=1757617028&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&s=Hi0ST9YPOaQgO50Zb4nLD7RcJ6%2Fg171Y41AG5dg9uYo%3D Server: - gunicorn Strict-Transport-Security: - max-age=31556926; includeSubDomains Vary: - Accept-Encoding Via: - 1.1 vegur X-Api-Pool: - common X-Content-Type-Options: - nosniff X-Frame-Options: - SAMEORIGIN X-Xss-Protection: - 1; mode=block status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.unpaywall.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.unpaywall.org/v2/search?query=Effect%20of%20native%20oxide%20layers%20on%20copper%20thin-film%20tensile%20properties%3A%20A%20reactive%20molecular%20dynamics%20study&email=example@papercrow.ai response: body: string: !!binary | H4sIAIYbw2gA/71Uy27bMBC89ysIniVbDzu2hSCAgeTQACncpjkUQSDQ1EpiQpMqSaVRg/x7l1Lk BxCgPfXGfXA5HA7nlRqwrXSWZvevft1oZYFmr7TQgmY0jiZxdJZO48lslS7T5YwGtANmaJZE8Tyg FSiD7fRRt0YxGTLjBJeAXcLmmtGsZNJCQJ1w0vddlSVwR3RJFHPiGYh+EQUQyTowlmhFuG4aMMTV QoWlkDviQFkhgTRGY8EJsBlZEwOM9/t3WgJvJTOk6BTbCW6JdW3RIQK8Qd4aiafWzjU2m04xM9Gm mn50q7YpmIMCu5MoScNoEabx92ieJctsvphE0WKZxNimWW4dcy0SRrnUFncEtGm3UtgakBa6/rwh myEWqsLi75y1rtZmoLhC0ArbbgSvGUhyOcGWEoHLDrO3T8xIoeyTwKyFny0o7mkrhbEOU6xETgQy p1U/DW/sy3cKpxorXOeZ/aZ5DdYhizG5wTsZgW9Abrnww8jG6MqwXUCCQ2NAvsAv8kObJxLPzpJF QO5u1/Tt4S04AL5kz6Ig1ydwv7ZgFchTrKwohAfI5H8HHPz1gIRcQoMi3YHqVXgD+AxKcCbJlaqE AjxcVf9GzkMvcpyGkF/cXurvXyF/R3I9hP6wddNIAQXZ1J1FoQ5qkpr39Hh54EQUYa8wVTCDYkwO 804/1CFr/VYaRUkcLleLVRBHy1W4mM8jetqVy+O2I9UWuVd+L/x4HsZJ2At9i5fPj/DRTLVSBoMU Pyoc4RQqLzR73IOtmc0NNBrfQ5suxz/e7WvHFOSw2zJTaf8N71F91CqBdoDc0vPtxeAd59PthScT E4OF9AmMeicZg8FQhl7lE4OvjGVvL34d4tq7zD4/mM0YHjzHZ7zvYHK0nrFp70BjYjSiMe79yAf+ n3Dt/TJCQ1klabxIZ15GIFmDTpJb4FoV1teTs/jt0x8IopxGngUAAA== headers: Access-Control-Allow-Headers: - origin, content-type, accept, x-requested-with Access-Control-Allow-Methods: - POST, GET, OPTIONS, PUT, DELETE, PATCH Access-Control-Allow-Origin: - "*" Content-Encoding: - gzip Content-Length: - "724" Content-Type: - application/json Date: - Thu, 11 Sep 2025 18:57:10 GMT Nel: - '{"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}' Report-To: - '{"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=jQTt5m5bAnbglWxOxzzX97a0tyPWeXArYe5eV3Ci3g0%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1757617029"}],"max_age":3600}' Reporting-Endpoints: - heroku-nel="https://nel.heroku.com/reports?s=jQTt5m5bAnbglWxOxzzX97a0tyPWeXArYe5eV3Ci3g0%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1757617029" Server: - Heroku Vary: - Accept-Encoding Via: - 1.1 heroku-router status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_title_search[paper_attributes1].yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example%40papercrow.ai&query.title=PaperQA%3A+Retrieval-Augmented+Generative+Agent+for+Scientific+Research&rows=1 response: body: string: !!binary | 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 headers: Connection: - keep-alive Content-Length: - "4536" Content-Type: - application/json Date: - Thu, 11 Sep 2025 18:57:10 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=PaperQA%3A+Retrieval-Augmented+Generative+Agent+for+Scientific+Research&fields=authors%2CcitationCount%2CcitationStyles%2CexternalIds%2CinfluentialCitationCount%2CisOpenAccess%2Cjournal%2CopenAccessPdf%2CpublicationDate%2CpublicationTypes%2Ctitle%2Curl%2Cvenue%2Cyear response: body: string: '{"data": [{"paperId": "7e55d8701785818776323b4147cb13354c820469", "externalIds": {"ArXiv": "2312.07559", "DBLP": "journals/corr/abs-2312-07559", "DOI": "10.48550/arXiv.2312.07559", "CorpusId": 266191420}, "url": "https://www.semanticscholar.org/paper/7e55d8701785818776323b4147cb13354c820469", "title": "PaperQA: Retrieval-Augmented Generative Agent for Scientific Research", "venue": "arXiv.org", "year": 2023, "citationCount": 106, "influentialCitationCount": 2, "isOpenAccess": false, "openAccessPdf": {"url": "", "status": null, "license": null}, "publicationTypes": ["JournalArticle"], "publicationDate": "2023-12-08", "journal": {"name": "ArXiv", "volume": "abs/2312.07559"}, "citationStyles": {"bibtex": "@Article{L''ala2023PaperQARG,\n author = {Jakub L''ala and Odhran O''Donoghue and Aleksandar Shtedritski and Sam Cox and Samuel G. Rodriques and Andrew D. White},\n booktitle = {arXiv.org},\n journal = {ArXiv},\n title = {PaperQA: Retrieval-Augmented Generative Agent for Scientific Research},\n volume = {abs/2312.07559},\n year = {2023}\n}\n"}, "authors": [{"authorId": "2219926382", "name": "Jakub L''ala"}, {"authorId": "2258961056", "name": "Odhran O''Donoghue"}, {"authorId": "2258961451", "name": "Aleksandar Shtedritski"}, {"authorId": "2161337138", "name": "Sam Cox"}, {"authorId": "2258964497", "name": "Samuel G. Rodriques"}, {"authorId": "2273941271", "name": "Andrew D. White"}], "matchScore": 238.8195}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1426" Content-Type: - application/json Date: - Thu, 11 Sep 2025 18:57:11 GMT Via: - 1.1 496003b8c4e3056a62dc655a8393be56.cloudfront.net (CloudFront) X-Amz-Cf-Id: - 6mNz1_t1Xy7ZSq9bTfDK_dvFANtLiz-6bjuRzVC2E634A-Ccf6vlUA== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - QwE9JH1rPHcENPA= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1426" x-amzn-Remapped-Date: - Thu, 11 Sep 2025 18:57:11 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - c68f6b0d-12f8-4107-b68e-f4f9b4456819 status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.openalex.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.openalex.org/works?filter=title.search%3APaperQA%3A+Retrieval-Augmented+Generative+Agent+for+Scientific+Research response: body: string: !!binary | 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 L0tYHtPHm7/8FxqAe6wCMwAA headers: Access-Control-Allow-Credentials: - "true" Access-Control-Allow-Headers: - Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Authorization, Cache-Control Access-Control-Allow-Methods: - POST, GET, OPTIONS, PUT, DELETE, PATCH Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Authorization, Cache-Control Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "3381" Content-Security-Policy: - default-src 'self'; object-src 'none' Content-Type: - application/json Date: - Thu, 11 Sep 2025 18:57:12 GMT Nel: - '{"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]}' Referrer-Policy: - strict-origin-when-cross-origin Report-To: - '{"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1757617031&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&s=0x8arOq6kntU7SVBAVb%2BY0xK0IdKtaL8vYcpUAPxK4E%3D"}]}' Reporting-Endpoints: - heroku-nel=https://nel.heroku.com/reports?ts=1757617031&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&s=0x8arOq6kntU7SVBAVb%2BY0xK0IdKtaL8vYcpUAPxK4E%3D Server: - gunicorn Strict-Transport-Security: - max-age=31556926; includeSubDomains Vary: - Accept-Encoding Via: - 1.1 vegur X-Api-Pool: - common X-Content-Type-Options: - nosniff X-Frame-Options: - SAMEORIGIN X-Xss-Protection: - 1; mode=block status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.unpaywall.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.unpaywall.org/v2/search?query=PaperQA%3A%20Retrieval-Augmented%20Generative%20Agent%20for%20Scientific%20Research&email=example@papercrow.ai response: body: string: '{"results":[],"elapsed_seconds":0.015} ' headers: Access-Control-Allow-Headers: - origin, content-type, accept, x-requested-with Access-Control-Allow-Methods: - POST, GET, OPTIONS, PUT, DELETE, PATCH Access-Control-Allow-Origin: - "*" Content-Length: - "39" Content-Type: - application/json Date: - Thu, 11 Sep 2025 18:57:12 GMT Nel: - '{"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}' Report-To: - '{"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=TDoIq9jmLSWuwAwXEh3GkwTHrfypvRV0BHrABt0Dixs%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1757617032"}],"max_age":3600}' Reporting-Endpoints: - heroku-nel="https://nel.heroku.com/reports?s=TDoIq9jmLSWuwAwXEh3GkwTHrfypvRV0BHrABt0Dixs%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1757617032" Server: - Heroku Via: - 1.1 heroku-router status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_title_search[paper_attributes2].yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works?mailto=example%40papercrow.ai&query.title=Augmenting+large+language+models+with+chemistry+tools&rows=1 response: body: string: !!binary | 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 headers: Connection: - keep-alive Content-Length: - "10582" Content-Type: - application/json Date: - Thu, 11 Sep 2025 18:57:12 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1038%2Fs42256-024-00832-8/transform/application/x-bibtex response: body: string: " @article{M_Bran_2024, title={Augmenting large language models with chemistry tools}, volume={6}, ISSN={2522-5839}, url={http://dx.doi.org/10.1038/s42256-024-00832-8}, DOI={10.1038/s42256-024-00832-8}, number={5}, journal={Nature Machine Intelligence}, publisher={Springer Science and Business Media LLC}, author={M. Bran, Andres and Cox, Sam and Schilter, Oliver and Baldassari, Carlo and White, Andrew D. and Schwaller, Philippe}, year={2024}, month=may, pages={525\u2013535} }\n" headers: Connection: - keep-alive Date: - Thu, 11 Sep 2025 18:57:13 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.semanticscholar.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.semanticscholar.org/graph/v1/paper/search/match?query=Augmenting+large+language+models+with+chemistry+tools&fields=authors%2CcitationCount%2CcitationStyles%2CexternalIds%2CinfluentialCitationCount%2CisOpenAccess%2Cjournal%2CopenAccessPdf%2CpublicationDate%2CpublicationTypes%2Ctitle%2Curl%2Cvenue%2Cyear response: body: string: '{"data": [{"paperId": "354dcdebf3f8b5feeed5c62090e0bc1f0c28db06", "externalIds": {"DBLP": "journals/natmi/BranCSBWS24", "ArXiv": "2304.05376", "PubMedCentral": "11116106", "DOI": "10.1038/s42256-024-00832-8", "CorpusId": 258059792, "PubMed": "38799228"}, "url": "https://www.semanticscholar.org/paper/354dcdebf3f8b5feeed5c62090e0bc1f0c28db06", "title": "Augmenting large language models with chemistry tools", "venue": "Nat. Mac. Intell.", "year": 2023, "citationCount": 488, "influentialCitationCount": 20, "isOpenAccess": true, "openAccessPdf": {"url": "https://www.nature.com/articles/s42256-024-00832-8.pdf", "status": "HYBRID", "license": "CCBY"}, "publicationTypes": ["JournalArticle"], "publicationDate": "2023-04-11", "journal": {"name": "Nature Machine Intelligence", "pages": "525 - 535", "volume": "6"}, "citationStyles": {"bibtex": "@Article{Bran2023AugmentingLL,\n author = {Andr\u00e9s M Bran and Sam Cox and Oliver Schilter and Carlo Baldassari and Andrew D. White and P. Schwaller},\n booktitle = {Nat. Mac. Intell.},\n journal = {Nature Machine Intelligence},\n pages = {525 - 535},\n title = {Augmenting large language models with chemistry tools},\n volume = {6},\n year = {2023}\n}\n"}, "authors": [{"authorId": "2216007369", "name": "Andr\u00e9s M Bran"}, {"authorId": "2161337138", "name": "Sam Cox"}, {"authorId": "1820929773", "name": "Oliver Schilter"}, {"authorId": "2251414370", "name": "Carlo Baldassari"}, {"authorId": "2150199535", "name": "Andrew D. White"}, {"authorId": "1379965853", "name": "P. Schwaller"}], "matchScore": 178.25885}]} ' headers: Access-Control-Allow-Origin: - "*" Connection: - keep-alive Content-Length: - "1570" Content-Type: - application/json Date: - Thu, 11 Sep 2025 18:57:13 GMT Via: - 1.1 412c0797c582f734d2a53446693c889e.cloudfront.net (CloudFront) X-Amz-Cf-Id: - HWbJh2lr0ysS9PAS0WPSd6Y_DMgTtHUTiL8PMev8YYRE500um8jOdA== X-Amz-Cf-Pop: - SFO53-P7 X-Cache: - Miss from cloudfront x-amz-apigw-id: - QwE9iGUjPHcEGtw= x-amzn-Remapped-Connection: - keep-alive x-amzn-Remapped-Content-Length: - "1570" x-amzn-Remapped-Date: - Thu, 11 Sep 2025 18:57:13 GMT x-amzn-Remapped-Server: - gunicorn x-amzn-RequestId: - 6a270421-2ed6-4767-9836-2215b7908186 status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.openalex.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.openalex.org/works?filter=title.search%3AAugmenting+large+language+models+with+chemistry+tools response: body: string: !!binary | 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 jLtT+1mGrNrMaVVzefdv/w+nU2WmL3cAAA== headers: Access-Control-Allow-Credentials: - "true" Access-Control-Allow-Headers: - Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Authorization, Cache-Control Access-Control-Allow-Methods: - POST, GET, OPTIONS, PUT, DELETE, PATCH Access-Control-Allow-Origin: - "*" Access-Control-Expose-Headers: - Authorization, Cache-Control Connection: - keep-alive Content-Encoding: - gzip Content-Length: - "5953" Content-Security-Policy: - default-src 'self'; object-src 'none' Content-Type: - application/json Date: - Thu, 11 Sep 2025 18:57:14 GMT Nel: - '{"report_to":"heroku-nel","max_age":3600,"success_fraction":0.005,"failure_fraction":0.05,"response_headers":["Via"]}' Referrer-Policy: - strict-origin-when-cross-origin Report-To: - '{"group":"heroku-nel","max_age":3600,"endpoints":[{"url":"https://nel.heroku.com/reports?ts=1757617034&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&s=C4NSXZyRpXD%2BEkWIljgLyju%2FY8VR%2FX0ZBMaDIxCBJz8%3D"}]}' Reporting-Endpoints: - heroku-nel=https://nel.heroku.com/reports?ts=1757617034&sid=1b10b0ff-8a76-4548-befa-353fc6c6c045&s=C4NSXZyRpXD%2BEkWIljgLyju%2FY8VR%2FX0ZBMaDIxCBJz8%3D Server: - gunicorn Strict-Transport-Security: - max-age=31556926; includeSubDomains Vary: - Accept-Encoding Via: - 1.1 vegur X-Api-Pool: - common X-Content-Type-Options: - nosniff X-Frame-Options: - SAMEORIGIN X-Xss-Protection: - 1; mode=block status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.unpaywall.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.unpaywall.org/v2/search?query=Augmenting%20large%20language%20models%20with%20chemistry%20tools&email=example@papercrow.ai response: body: string: !!binary | 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 v5JrH1R8Fvydv0n29w6eHvzP//p/aQf515/yAQA= headers: Access-Control-Allow-Headers: - origin, content-type, accept, x-requested-with Access-Control-Allow-Methods: - POST, GET, OPTIONS, PUT, DELETE, PATCH Access-Control-Allow-Origin: - "*" Content-Encoding: - gzip Content-Length: - "40214" Content-Type: - application/json Date: - Thu, 11 Sep 2025 18:57:14 GMT Nel: - '{"report_to":"heroku-nel","response_headers":["Via"],"max_age":3600,"success_fraction":0.01,"failure_fraction":0.1}' Report-To: - '{"group":"heroku-nel","endpoints":[{"url":"https://nel.heroku.com/reports?s=e3MayEFllVPJ9F7htUEQDIu3OKrSJDZ5zP2etKNjd6U%3D\u0026sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add\u0026ts=1757617034"}],"max_age":3600}' Reporting-Endpoints: - heroku-nel="https://nel.heroku.com/reports?s=e3MayEFllVPJ9F7htUEQDIu3OKrSJDZ5zP2etKNjd6U%3D&sid=c46efe9b-d3d2-4a0c-8c76-bfafa16c5add&ts=1757617034" Server: - Heroku Vary: - Accept-Encoding Via: - 1.1 heroku-router status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_tricky_journal_quality_results[10.1016-j.bbcan.2023.188947-1].yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1016%2Fj.bbcan.2023.188947?mailto=example%40papercrow.ai response: body: string: !!binary | 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 /wMezyw0skoAAA== headers: Connection: - keep-alive Content-Length: - "4912" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:31 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1016%2Fj.bbcan.2023.188947/transform/application/x-bibtex response: body: string: " @article{Vogt_2023, title={Structural and mechanistic insights provided by single particle cryo-EM analysis of phosphoinositide 3-kinase (PI3K\u03B1)}, volume={1878}, ISSN={0304-419X}, url={http://dx.doi.org/10.1016/j.bbcan.2023.188947}, DOI={10.1016/j.bbcan.2023.188947}, number={5}, journal={Biochimica et Biophysica Acta (BBA) - Reviews on Cancer}, publisher={Elsevier BV}, author={Vogt, Peter K. and Hart, Jonathan R. and Yang, Su and Zhou, Qingtong and Yang, Dehua and Wang, Ming-Wei}, year={2023}, month=sep, pages={188947} }\n" headers: Connection: - keep-alive Date: - Mon, 11 Aug 2025 23:07:31 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_tricky_journal_quality_results[10.1016-j.semcdb.2016.08.024-1].yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1016%2Fj.semcdb.2016.08.024?mailto=example%40papercrow.ai response: body: string: !!binary | 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 jenUtD0p4de+haBH6+pGc3xbt7odz5F4gjO6EJGJOsok4JrQZVsR4Ywrrn4tB6uThQ3i5OYhFDwZ 7vX4Ez0tFwX35eqm2FUsgEwdf19sxa5g04Ng3pNZZDGbZSF4y8i0xCKkOBEP3HVJ4N4Z3GHX/kGy 8SqvRegOU/Gjjt/mdU7/4quW+K5A/bV+h+8gM13VzbYMGKOBxXxk73sZvzUu2tDRW+OaF0zBIQ7r w+nN5eXZnWUGbujZFsCPPUrBf+MY5zF2Y/1XRb7B+d9ShKF9P1XzuibZof7ddtscowf0hNkCRCLa dFs9Nn+qAxSYYqKs/RunDpk8S9Slkx8ffMn08Q1UZIPm8sCrDc0T78TyJe82NFHQLf/edM8cB/4d v6nKC8JpaOLGQ+xNVSWuKIGv8T0/7Rum/jnZFBTLofhxjCJKBkxxXc9HYBYE94nbAogbSh9O91Cc /MDL1fOB1PG3hw2+oGVZH3gzV/vyr+51ROXwbYxRgg1AbDsPnb2jbbJ//S/770Dcf/XWgZeJtavc YWowh8u7u4/sLXZwCR2vMeFzzxpBAL0B41Hzjq72lO6NZPwFZ/iIAQ32+kN2790b0J69fW4O+cua +qu0L6CcdG/D619Pico9JwlzI/jGHy7qrMkU5JQZE+TkmMq04/2/vBusm3szRS4X/fTPm5nfs++H 0923gAesX3eJxtyOL/Gefy25xAtkRrwbZlH7KzFa85YsNfBZGh7DVqLuoQ0fTWs+hrPpX2bXXKSx NX8wERtchX+t3ePXwwEeatOMQg0nrHVvL/1QLSDBB/gKvnAeLAJk/biDwuA6mx07Klyk/e7Hlx8/ /g8PdGCo23UAAA== headers: Connection: - keep-alive Content-Length: - "7933" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:29 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1016%2Fj.semcdb.2016.08.024/transform/application/x-bibtex response: body: string: " @article{Wang_2017, title={The impact of heterogeneity in phosphoinositide 3-kinase pathway in human cancer and possible therapeutic treatments}, volume={64}, ISSN={1084-9521}, url={http://dx.doi.org/10.1016/j.semcdb.2016.08.024}, DOI={10.1016/j.semcdb.2016.08.024}, journal={Seminars in Cell & Developmental Biology}, publisher={Elsevier BV}, author={Wang, William and Lv, Jiapei and Wang, Lingyan and Wang, Xiangdong and Ye, Ling}, year={2017}, month=apr, pages={116\u2013124} }\n" headers: Connection: - keep-alive Date: - Mon, 11 Aug 2025 23:07:29 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_tricky_journal_quality_results[10.1038-s41598-018-27044-6-1].yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1038%2Fs41598-018-27044-6?mailto=example%40papercrow.ai response: body: string: !!binary | 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 cVF8AAA= headers: Connection: - keep-alive Content-Length: - "9125" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:27 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1038%2Fs41598-018-27044-6/transform/application/x-bibtex response: body: string: " @article{Leontiadou_2018, title={Insights into the mechanism of the PIK3CA E545K activating mutation using MD simulations}, volume={8}, ISSN={2045-2322}, url={http://dx.doi.org/10.1038/s41598-018-27044-6}, DOI={10.1038/s41598-018-27044-6}, number={1}, journal={Scientific Reports}, publisher={Springer Science and Business Media LLC}, author={Leontiadou, Hari and Galdadas, Ioannis and Athanasiou, Christina and Cournia, Zoe}, year={2018}, month=oct } " headers: Connection: - keep-alive Date: - Mon, 11 Aug 2025 23:07:27 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_tricky_journal_quality_results[10.1073-pnas.1205508109-3].yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1073%2Fpnas.1205508109?mailto=example%40papercrow.ai response: body: string: !!binary | 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 2zfY73+1pt5JrR8AAA== headers: Connection: - keep-alive Content-Length: - "2578" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:28 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1073%2Fpnas.1205508109/transform/application/x-bibtex response: body: string: " @article{Burke_2012, title={Oncogenic mutations mimic and enhance dynamic events in the natural activation of phosphoinositide 3-kinase p110\u03B1 (\n PIK3CA\n )}, volume={109}, ISSN={1091-6490}, url={http://dx.doi.org/10.1073/pnas.1205508109}, DOI={10.1073/pnas.1205508109}, number={38}, journal={Proceedings of the National Academy of Sciences}, publisher={Proceedings of the National Academy of Sciences}, author={Burke, John E. and Perisic, Olga and Masson, Glenn R. and Vadas, Oscar and Williams, Roger L.}, year={2012}, month=sep, pages={15259\u201315264} }\n" headers: Connection: - keep-alive Date: - Mon, 11 Aug 2025 23:07:28 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_tricky_journal_quality_results[10.1146-annurev.pathol.4.110807.092311-2].yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1146%2Fannurev.pathol.4.110807.092311?mailto=example%40papercrow.ai response: body: string: !!binary | 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 JxweHMk+QbJP03Am4AkX+AXNZhfIXjf4RzUZ5SyhdNYY0pNu7oecO17vuXHgf3M/cgJLpesRXrf3 XznVy9xCinrd5h8PSTleMM2QvFx/ihTPkbw8H7Phj1fXhAsC5ZMLdPrVpbRXXsydfPC6039uA2QY SzqT0etw+VlMnuBByYdh2vmZUeXDdLSde7RH0vX66dzOLKvKtNvWTo6ZVqtW41gejryaSdrAWelS Vet+yES6AqGgk723015/f/crPNt03a49vzm7OXt8fIyUXXWYJG2jullDwVIbiLviFs+Fv3Umcj+9 Pc5G9hXONJtbo4vJm8cJ9YcarYXDtVUBdlS7XWnycV5u0ZqtKaEU6p7CfKPze1Otrc0KbYepvzLF TpeULOlzc+w0pCSk8prE54yd82Q+Yil5zEVKRTKMWLZ53cA3Kc7K7acrPy12jdmq5glf+pjxWy34 GRfuV5NdHEbaJw/ssPzzw6XHAfXDeF/rTOHvi4tx4P6TM3nvMwKPM/BlpwEMB9ZDU6DnfquSoMTc dmCkwVrf7mqNLkdP+QTS/Hx19cbKIAQPY2JT8fgaCHMwWzW6JYTAgyoHvScfH312UB4DfvYhS7zj h3Sp866pK5Nbl4Qtu9P43wHeT/8rwX+34Of/AFFCDEzXMQAA headers: Connection: - keep-alive Content-Length: - "3228" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:30 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1146%2Fannurev.pathol.4.110807.092311/transform/application/x-bibtex response: body: string: " @article{Chalhoub_2009, title={PTEN and the PI3-Kinase Pathway in Cancer}, volume={4}, ISSN={1553-4014}, url={http://dx.doi.org/10.1146/annurev.pathol.4.110807.092311}, DOI={10.1146/annurev.pathol.4.110807.092311}, number={1}, journal={Annual Review of Pathology: Mechanisms of Disease}, publisher={Annual Reviews}, author={Chalhoub, Nader and Baker, Suzanne J.}, year={2009}, month=feb, pages={127\u2013150} }\n" headers: Connection: - keep-alive Date: - Mon, 11 Aug 2025 23:07:30 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/cassettes/test_tricky_journal_quality_results[10.1186-1471-2148-11-4-2].yaml ================================================ interactions: - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1186%2F1471-2148-11-4?mailto=example%40papercrow.ai response: body: string: !!binary | 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 ZEVZ8dIxIsz/AMwcQb39UAAA headers: Connection: - keep-alive Content-Length: - "7029" Content-Type: - application/json Date: - Mon, 11 Aug 2025 23:07:28 GMT access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link content-encoding: - gzip permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) vary: - Accept-Encoding x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK - request: body: "" headers: accept: - "*/*" accept-encoding: - gzip, deflate connection: - keep-alive host: - api.crossref.org user-agent: - python-httpx/0.28.1 method: GET uri: https://api.crossref.org/works/10.1186%2F1471-2148-11-4/transform/application/x-bibtex response: body: string: " @article{Brown_2011, title={Phylogenomics of phosphoinositide lipid kinases: perspectives on the evolution of second messenger signaling and drug discovery}, volume={11}, ISSN={1471-2148}, url={http://dx.doi.org/10.1186/1471-2148-11-4}, DOI={10.1186/1471-2148-11-4}, number={1}, journal={BMC Evolutionary Biology}, publisher={Springer Science and Business Media LLC}, author={Brown, James R and Auger, Kurt R}, year={2011}, month=jan } " headers: Connection: - keep-alive Date: - Mon, 11 Aug 2025 23:07:29 GMT Transfer-Encoding: - chunked access-control-allow-headers: - X-Requested-With, Accept, Accept-Encoding, Accept-Charset, Accept-Language, Accept-Ranges, Cache-Control access-control-allow-origin: - "*" access-control-expose-headers: - Link permissions-policy: - interest-cohort=() server: - Jetty(9.4.40.v20210413) x-api-pool: - plus x-rate-limit-interval: - 1s x-rate-limit-limit: - "150" status: code: 200 message: OK version: 1 ================================================ FILE: tests/conftest.py ================================================ from __future__ import annotations import asyncio import contextlib import os import shutil from collections.abc import AsyncIterator, Coroutine, Iterator from importlib.metadata import version from pathlib import Path from typing import TYPE_CHECKING, Any from unittest.mock import patch import httpx_aiohttp import litellm.llms.custom_httpx.aiohttp_transport import pytest import vcr.stubs.aiohttp_stubs import vcr.stubs.httpcore_stubs from dotenv import load_dotenv from lmi.utils import ( ANTHROPIC_API_KEY_HEADER, CROSSREF_KEY_HEADER, OPENAI_API_KEY_HEADER, SEMANTIC_SCHOLAR_KEY_HEADER, update_litellm_max_callbacks, ) if TYPE_CHECKING: from paperqa.settings import Settings from paperqa.types import PQASession TESTS_DIR = Path(__file__).parent CASSETTES_DIR = TESTS_DIR / "cassettes" IN_GITHUB_ACTIONS: bool = os.getenv("GITHUB_ACTIONS") == "true" @pytest.fixture(autouse=True, scope="session") def _load_env() -> None: load_dotenv() @pytest.fixture(autouse=True, scope="session") def _setup_default_logs() -> None: # Lazily import from paperqa so typeguard doesn't throw: # > /path/to/.venv/lib/python3.12/site-packages/typeguard/_pytest_plugin.py:93: # > InstrumentationWarning: typeguard cannot check these packages because they # > are already imported: paperqa from paperqa.settings import ParsingSettings from paperqa.utils import setup_default_logs setup_default_logs() ParsingSettings.model_fields["configure_pdf_parser"].default() @pytest.fixture(autouse=True, scope="session") def _defeat_litellm_callbacks() -> None: update_litellm_max_callbacks() @pytest.fixture(autouse=True, scope="session") def _patch_litellm_logging_worker_for_race_condition() -> Iterator[None]: """ Patch litellm's GLOBAL_LOGGING_WORKER for asyncio functionality. SEE: https://github.com/BerriAI/litellm/issues/16518 SEE: https://github.com/BerriAI/litellm/issues/14521 """ try: from litellm.litellm_core_utils import logging_worker except ImportError: if tuple(int(x) for x in version(litellm.__name__).split(".")) < (1, 76, 0): # Module didn't exist before https://github.com/BerriAI/litellm/pull/13905 yield return raise class NoOpLoggingWorker: """No-op worker that executes callbacks immediately without queuing.""" def start(self) -> None: pass def enqueue(self, coroutine: Coroutine) -> None: # Execute immediately in current loop instead of queueing, # and do nothing if there's no current loop with contextlib.suppress(RuntimeError): # This logging task is fire-and-forget asyncio.create_task( # type: ignore[unused-awaitable] # noqa: RUF006 coroutine ) def ensure_initialized_and_enqueue(self, async_coroutine: Coroutine) -> None: self.enqueue(async_coroutine) async def stop(self) -> None: pass async def flush(self) -> None: pass async def clear_queue(self) -> None: pass with patch.object(logging_worker, "GLOBAL_LOGGING_WORKER", NoOpLoggingWorker()): yield @pytest.fixture(scope="session", name="vcr_config") def fixture_vcr_config() -> dict[str, Any]: return { "filter_headers": [ CROSSREF_KEY_HEADER, SEMANTIC_SCHOLAR_KEY_HEADER, OPENAI_API_KEY_HEADER, ANTHROPIC_API_KEY_HEADER, "cookie", ], "ignore_hosts": ["huggingface.co"], "record_mode": "once" if not IN_GITHUB_ACTIONS else "none", "allow_playback_repeats": True, "cassette_library_dir": str(CASSETTES_DIR), # "drop_unused_requests": True, # Restore after https://github.com/kevin1024/vcrpy/issues/961 } @pytest.fixture(name="tmp_path_cleanup") def fixture_tmp_path_cleanup(tmp_path: Path) -> Iterator[Path]: yield tmp_path # Cleanup after the test if tmp_path.exists(): shutil.rmtree(tmp_path, ignore_errors=True) @pytest.fixture(name="agent_home_dir") def fixture_agent_home_dir( tmp_path_cleanup: str | os.PathLike, ) -> Iterator[str | os.PathLike]: """Set up a unique temporary folder for the agent module.""" with patch.dict("os.environ", {"PQA_HOME": str(tmp_path_cleanup)}): yield tmp_path_cleanup @pytest.fixture(name="agent_index_dir") def fixture_agent_index_dir(agent_home_dir: Path) -> Path: return agent_home_dir / ".pqa" / "indexes" @pytest.fixture(scope="session", name="stub_data_dir") def fixture_stub_data_dir() -> Path: return Path(__file__).parent / "stub_data" @pytest.fixture def agent_test_settings(agent_index_dir: Path, stub_data_dir: Path) -> Settings: # Lazily import from paperqa so typeguard doesn't throw: # > /path/to/.venv/lib/python3.12/site-packages/typeguard/_pytest_plugin.py:93: # > InstrumentationWarning: typeguard cannot check these packages because they # > are already imported: paperqa from paperqa.settings import Settings # NOTE: originally here we had usage of embedding="sparse", but this was # shown to be too crappy of an embedding to get past the Obama article settings = Settings() settings.agent.index.paper_directory = stub_data_dir settings.agent.index.index_directory = agent_index_dir settings.agent.search_count = 2 settings.answer.answer_max_sources = 2 settings.answer.evidence_k = 10 return settings @pytest.fixture def agent_stub_session() -> PQASession: # Lazily import from paperqa so typeguard doesn't throw: # > /path/to/.venv/lib/python3.12/site-packages/typeguard/_pytest_plugin.py:93: # > InstrumentationWarning: typeguard cannot check these packages because they # > are already imported: paperqa from paperqa.types import PQASession return PQASession(question="What is a self-explanatory model?") @pytest.fixture def stub_data_dir_w_near_dupes(stub_data_dir: Path, tmp_path: Path) -> Iterator[Path]: # add some near duplicate files then removes them after testing for filename in ("bates.txt", "obama.txt"): if not (tmp_path / f"{filename}_modified.txt").exists(): with (stub_data_dir / filename).open() as f: content = f.read() with (tmp_path / f"{Path(filename).stem}_modified.txt").open("w") as f: f.write(content) f.write("## MODIFIED FOR HASH") yield tmp_path if tmp_path.exists(): shutil.rmtree(tmp_path, ignore_errors=True) class PreReadCompatibleAiohttpResponseStream( httpx_aiohttp.transport.AiohttpResponseStream ): """aiohttp-backed response stream that works if the response was pre-read.""" async def __aiter__(self) -> AsyncIterator[bytes]: with httpx_aiohttp.transport.map_aiohttp_exceptions(): if self._aiohttp_response._body is not None: # Happens if some intermediary called `await _aiohttp_response.read()` # TODO: take into account chunk size yield self._aiohttp_response._body else: async for chunk in self._aiohttp_response.content.iter_chunked( self.CHUNK_SIZE ): yield chunk async def _vcr_handle_async_request( cassette, # noqa: ARG001 real_handle_async_request, self, real_request, ): """VCR handler that only sends, not possibly recording or playing back responses.""" return await real_handle_async_request(self, real_request) # Permanently patch the original response stream, # to work around https://github.com/karpetrosyan/httpx-aiohttp/issues/23 # and https://github.com/BerriAI/litellm/issues/11724 httpx_aiohttp.transport.AiohttpResponseStream = ( # type: ignore[misc] litellm.llms.custom_httpx.aiohttp_transport.AiohttpResponseStream # type: ignore[misc] ) = PreReadCompatibleAiohttpResponseStream # type: ignore[assignment] # Permanently patch vcrpy's async VCR recording functionality, # to work around https://github.com/kevin1024/vcrpy/issues/944 vcr.stubs.httpcore_stubs._vcr_handle_async_request = _vcr_handle_async_request # Permanently patch vcrpy's aiohttp build_response to set raw_headers, # to work around https://github.com/kevin1024/vcrpy/issues/970 _original_aiohttp_stubs_build_response = vcr.stubs.aiohttp_stubs.build_response def _build_response_with_raw_headers(vcr_request, vcr_response, history): """Patched build_response that also sets _raw_headers on MockClientResponse.""" response = _original_aiohttp_stubs_build_response( vcr_request, vcr_response, history ) if response._raw_headers is None and response._headers is not None: response._raw_headers = tuple( (k.encode("utf-8"), v.encode("utf-8")) for k, v in response._headers.items() ) return response vcr.stubs.aiohttp_stubs.build_response = _build_response_with_raw_headers ================================================ FILE: tests/duplicate_media_template.md ================================================ # SF Districts in the style of Andy Warhol [//]: # "To generate `stub_data/duplicate_media.pdf` from this:" [//]: # "1. `pandoc duplicate_media_template.md --standalone --katex -t html -o temp.html`" [//]: # "2. `Chromium --headless --disable-gpu --print-to-pdf=stub_data/duplicate_media.pdf --no-pdf-header-footer temp.html`" [//]: # "3. `rm temp.html`"
Wikimedia logo
Map of SF districts Text under image 1. | Col1 | Col2 | | ----- | ----- | | Val11 | Val12 | | Val21 | Val11 | Text under table 1. Inline LaTeX: $E = mc^2$ Block LaTeX: $$ x + n + a = \sqrt{ax + (n + a)^2 + x \sqrt{a (x + n) + (n + a)^2 + (x + n) \sqrt{\dots}}} $$
Wikimedia logo
Map of SF districts Text under image 2. | Col1 | Col2 | | ----- | ----- | | Val11 | Val12 | | Val21 | Val11 | Text under table 2. Inline LaTeX: $E = mc^2$ Block LaTeX: $$ x + n + a = \sqrt{ax + (n + a)^2 + x \sqrt{a (x + n) + (n + a)^2 + (x + n) \sqrt{\dots}}} $$
Wikimedia logo
Map of SF districts Text under image 3. | Col1 | Col2 | | ----- | ----- | | Val11 | Val12 | | Val21 | Val11 | Text under table 3. Inline LaTeX: $E = mc^2$ Block LaTeX: $$ x + n + a = \sqrt{ax + (n + a)^2 + x \sqrt{a (x + n) + (n + a)^2 + (x + n) \sqrt{\dots}}} $$
Wikimedia logo
Map of SF districts Text under image 4. | Col1 | Col2 | | ----- | ----- | | Val11 | Val12 | | Val21 | Val11 | Text under table 4. Inline LaTeX: $E = mc^2$ Block LaTeX: $$ x + n + a = \sqrt{ax + (n + a)^2 + x \sqrt{a (x + n) + (n + a)^2 + (x + n) \sqrt{\dots}}} $$
Wikimedia logo
Map of SF districts Text under image 5. | Col1 | Col2 | | ----- | ----- | | Val11 | Val12 | | Val21 | Val11 | Text under table 5. Inline LaTeX: $E = mc^2$ Block LaTeX: $$ x + n + a = \sqrt{ax + (n + a)^2 + x \sqrt{a (x + n) + (n + a)^2 + (x + n) \sqrt{\dots}}} $$ ================================================ FILE: tests/stub_data/bates.txt ================================================ Frederick Bates (politician) - Wikipedia Jump to content

Frederick Bates (politician)

From Wikipedia, the free encyclopedia
Frederick Bates
2nd Governor of Missouri
In office
November 15, 1824 – August 4, 1825
LieutenantBenjamin Harrison Reeves
Preceded byAlexander McNair
Succeeded byAbraham J. Williams
Personal details
Born(1777-06-23)June 23, 1777
Belmont, Goochland County, Virginia, U.S.
DiedAugust 4, 1825(1825-08-04) (aged 48)
Chesterfield, Missouri, U.S.
SpouseNancy Opie Ball
RelationsEdward (brother), James (brother); see Bates extended family
ChildrenEmily Caroline (1820–1891), Lucius Lee (1821–1898), Woodville (1823–1840) and Frederick Jr. (1826–1862)

Frederick Bates (June 23, 1777 – August 4, 1825), was an American attorney and politician. He was elected in 1824 as the second governor of Missouri and died in office in 1825. Before that he had served as a justice of the Territorial Supreme Court for Michigan Territory, was appointed by Thomas Jefferson as Secretary of the Louisiana Territory and started to build his political base in St. Louis.

Early life and education[edit]

Frederick Bates was born in 1777 into the slave-holding class in Goochland County, Virginia. Though a Quaker, Bates and his family were lifelong slaveholders. Bates was schooled privately at his family's Belmont plantation by tutors. Later he went to college and read the law with an established firm. He settled in Detroit in 1797 and became its first postmaster in 1803.[1] He was a member of the Bates family along with his brothers Edward and James Woodson Bates.[2]

Career[edit]

After working as an attorney, Bates started his political career when appointed as a justice of the Territorial Supreme Court for Michigan Territory in Detroit. He received a significant promotion when the Aaron Burr conspiracy was uncovered. In February 1807, while Bates was in Washington, President Thomas Jefferson appointed him to be Secretary of the Louisiana Territory, as well as a recorder of land titles.[3] As secretary, he was also commander in chief of the militia.[4] He held this position in St. Louis until 1812. Bates helped determine whether conflicting French, Spanish, and American land claims in the territory would be upheld, as it had been subject to three differing political systems.[5]

Jefferson had already decided on the returning explorer and fellow Virginian Meriwether Lewis as governor of the huge new Louisiana Territory, which approximately equaled the size of the existing United States. Bates preceded Lewis to St. Louis and became a powerful political force in the new territory; he was a political rival of Lewis until the latter's death while traveling from St. Louis to Washington on business in 1809. Later, as Secretary of the newly formed Missouri Territory (1812–1821), he became acting governor in the frequent absences of Territorial Governor William Clark.[3]

In the August 1824 election, Bates was elected the second governor of Missouri. He died in office in August 1825 in Chesterfield, Missouri, due to a short illness thought to be pneumonia. Bates was buried at the family cemetery on the Thornhill estate near St. Louis.

Marriage and family[edit]

Main house at Thornhill, Governor Bates estate.

In 1819, Bates married Nancy Opie Ball (1802–1877), daughter of a wealthy Virginia colonel. The couple had four children, Emily Caroline (1820–1891), Lucius Lee (1821–1898), Woodville (1823–1840) and Frederick Jr. (1826–1862).[6]

During his time in Missouri, Bates acquired nearly 1000 acres (4 km2) of land, which he called Thornhill. He also acquired several enslaved men, women, and children. He had built a Federal-style home with high ceilings for summer ventilation, fine woodwork and a sophisticated floor plan; all this would have been familiar to Bates from his childhood home, Belmont, in Goochland County, Virginia. The Thornhill estate still exists today and can be viewed by the public. It is located in Faust County Park in Chesterfield, Missouri.

Legacy and honors[edit]

Governor Bates is the namesake of Bates County, Missouri.[7]

References[edit]

  1. ^ Dunbar, Willis F. & May, George S. (3d ed. 1995). Michigan: A History of the Wolverine State, p. 113. Wm. B. Eerdmans Publishing Co.
  2. ^ Mercer, Thomas (1990). Bates: A Familial Journey. Boston Herald Publ.
  3. ^ a b William E. Foley (12 March 2014). The Genesis of Missouri: From Wilderness Outpost to Statehood. University of Missouri Press. pp. 215–. ISBN 978-0-8262-6053-6.
  4. ^ Salter, William. "The life of Henry Dodge, from 1782 to 1833: with portrait by George Catlin and maps of the battles of the Pecatonica and Wisconsin Heights in the Black Hawk War". American West. Adam Matthew Digital. p. 3. Retrieved 5 April 2023.
  5. ^ Henry Putney Beers (1 December 1989). French and Spanish Records of Louisiana: A Bibliographical Guide to Archive and Manuscript Sources. LSU Press. pp. 281–. ISBN 978-0-8071-2793-3.
  6. ^ William Smith Bryan; Macgunnigle (1 June 2009). Rhode Island Freemen, 1747-1755. Genealogical Publishing Com. pp. 131–. ISBN 978-0-8063-0753-4.
  7. ^ Eaton, David Wolfe (1916). How Missouri Counties, Towns and Streams Were Named. The State Historical Society of Missouri. pp. 208.

External links[edit]

Political offices
Preceded by Governor of Missouri
1824–1825
Succeeded by
================================================ FILE: tests/stub_data/empty.txt ================================================ ================================================ FILE: tests/stub_data/flag_day.html ================================================ National Flag of Canada Day - Wikipedia Jump to content

National Flag of Canada Day

From Wikipedia, the free encyclopedia

National Flag of Canada Day
The national flag of Canada
Observed by Canada
Date February 15
Next time February 15, 2025 (2025-02-15)
Frequency Annual

National Flag of Canada Day (French: Jour du drapeau national du Canada), commonly shortened to Flag Day, is observed annually on February 15 to commemorate the inauguration of the flag of Canada on that date in 1965.[1] The day is marked by flying the flag, occasional public ceremonies and educational programs in schools. It is not a public holiday, although there has been discussion about creating one.

History

[edit]

Background

[edit]

Amid much controversy, the Parliament of Canada in 1964 voted to adopt a new design for the Canadian flag and issued a call for submissions.[2]

This flag would replace the Canadian Red Ensign, which had been, with various successive alterations, in conventional use as the national flag of Canada since 1868. Nearly 4,000 designs were submitted by Canadians.[2] On October 22, 1964, the Maple Leaf flag—designed by historian George Stanley—won with a unanimous vote.[3] Under the leadership of Prime Minister Lester Pearson, resolutions recommending the new design were passed by the House of Commons on December 15, 1964, and by the Senate two days later.[4]

The flag was proclaimed by Elizabeth II, Queen of Canada, on January 28, 1965,[3][5] and took effect "upon, from and after" February 15 that year.[6]

Flag Day

[edit]

National Flag of Canada Day was instituted in 1996 by an Order in Council from Governor General Roméo LeBlanc, on the initiative of Prime Minister Jean Chrétien.[7] At the first Flag Day ceremony in Hull, Quebec, Chrétien was confronted by demonstrators against proposed cuts to the unemployment insurance system, and while walking through the crowd he was grabbed by the neck and pushed aside a protester who had approached him.

In 2010, on the flag's 45th anniversary, federal ceremonies were held to mark Flag Day at Ottawa, Winnipeg, St. John's, and at Whistler and Vancouver in conjunction with the 2010 Winter Olympics in Vancouver.[8] In 2011, Prime Minister Stephen Harper observed Flag Day by presenting two citizens, whose work honoured the military, with Canadian flags that had flown over the Peace Tower. It was announced as inaugurating an annual recognition of patriotism.[9]

See also

[edit]

Footnotes

[edit]
  1. ^ Department of Canadian Heritage. "Ceremonial and Canadian Symbols Promotion > The National Flag of Canada". Queen's Printer for Canada. Archived from the original on April 23, 2010. Retrieved March 21, 2010.
  2. ^ a b Government of Canada, Public Services and Procurement Canada (July 31, 2015). "Infographic: National Flag of Canada Day – February 15 – Canada's Parliamentary Precinct – PWGSC". www.tpsgc-pwgsc.gc.ca. Retrieved February 5, 2022.
  3. ^ a b "What is the National Flag Day of Canada?". westernfinancialgroup.ca. Retrieved February 5, 2022.
  4. ^ Department of Canadian Heritage. "Ceremonial and Canadian Symbols Promotion > The National Flag of Canada > Birth of the Canadian flag". Queen's Printer for Canada. Archived from the original on February 24, 2010. Retrieved March 21, 2010.
  5. ^ "Birth of the Canadian flag". Department of Canadian Heritage. Archived from the original on December 20, 2008. Retrieved December 16, 2008.
  6. ^ Conserving the Proclamation of the Canadian Flag Archived October 21, 2012, at the Wayback Machine, Library and Archives of Canada, from John Grace in The Archivist, National Archives, Ottawa, 1990. Retrieved February 15, 2011.
  7. ^ Department of Canadian Heritage. "National Flag of Canada Day". Queen's Printer for Canada. Archived from the original on February 17, 2010. Retrieved March 21, 2010.
  8. ^ Dept. of Canadian Heritage news release Archived July 6, 2011, at the Wayback Machine, February 15, 2010. Retrieved February 15, 2011.
  9. ^ PM pays tribute to outstanding Canadians on Flag Day Archived July 6, 2011, at the Wayback Machine, Prime Minister's Office news release. Retrieved February 16, 2011.
[edit]
================================================ FILE: tests/stub_data/gravity_hill.md ================================================ # Gravity hill > "Magnetic hill" and "Mystery hill" redirect here. For other uses, > see [Magnetic Hill (disambiguation)]() > and [Mystery Hill (disambiguation)](https://en.wikipedia.org/wiki/Mystery_Hill). A **gravity hill**, also known as a **magnetic hill**, **mystery hill**, **mystery spot**, **gravity road**, or **anti-gravity hill**, is a place where the layout of the surrounding land produces an [illusion](https://en.wikipedia.org/wiki/Illusion), making a slight downhill slope appear to be an uphill slope. Thus, a car left out of gear will appear to be rolling uphill against [gravity](https://en.wikipedia.org/wiki/Gravity). Although the slope of gravity hills is an illusion, sites are often accompanied by claims that magnetic or supernatural forces are at work. The most important factor contributing to the illusion is a completely or mostly obstructed horizon. Without a horizon, it becomes difficult for a person to judge the slope of a surface, as a reliable reference point is missing, and misleading visual cues can adversely affect the sense of balance. Objects which one would normally assume to be more or less perpendicular to the ground, such as trees, may be leaning, offsetting the visual reference. A 2003 study looked into how the absence of a horizon can skew the perspective on gravity hills, by recreating a number of antigravity places in the lab to see how volunteers would react. In conclusion, researchers from the Universities of Padua and Pavia in Italy found that without a true horizon in sight, the human brain could be tricked by common landmarks such as trees and signs. The illusion is similar to the [Ames room](https://en.wikipedia.org/wiki/Ames_room), in which objects can also appear to roll against gravity. The opposite phenomenon—an uphill road that appears flat—is known in [bicycle racing](https://en.wikipedia.org/wiki/Cycle_sport) as a ["false flat"](https://en.wikipedia.org/wiki/Glossary_of_cycling#F). ## See also - [List of gravity hills](https://en.wikipedia.org/wiki/List_of_gravity_hills) - [The Crooked House](https://en.wikipedia.org/wiki/The_Crooked_House) – a pub (now demolished) with an internal gravity hill illusion. ## References ## External links ================================================ FILE: tests/stub_data/obama.txt ================================================ Barack Obama - Wikipedia Jump to content

Barack Obama

Page semi-protected
From Wikipedia, the free encyclopedia

Barack Obama
Obama standing in the Oval Office with his arms folded and smiling
Official portrait, 2012
44th President of the United States
In office
January 20, 2009 – January 20, 2017
Vice PresidentJoe Biden
Preceded byGeorge W. Bush
Succeeded byDonald Trump
United States Senator
from Illinois
In office
January 3, 2005 – November 16, 2008
Preceded byPeter Fitzgerald
Succeeded byRoland Burris
Member of the Illinois Senate
from the 13th district
In office
January 8, 1997 – November 4, 2004
Preceded byAlice Palmer
Succeeded byKwame Raoul
Personal details
Born
Barack Hussein Obama II

(1961-08-04) August 4, 1961 (age 62)
Honolulu, Hawaii, U.S.
Political partyDemocratic
Spouse
(m. 1992)
Children
Parents
RelativesObama family
Education
Occupation
  • Politician
  • lawyer
  • author
AwardsFull list
SignatureCursive signature in ink
Website

Barack Hussein Obama II[a] (born August 4, 1961) is an American politician who served as the 44th president of the United States from 2009 to 2017. As a member of the Democratic Party, he was the first African-American president in United States history. Obama previously served as a U.S. senator representing Illinois from 2005 to 2008, as an Illinois state senator from 1997 to 2004, and as a community service organizer, civil rights lawyer, and university lecturer.

Obama was born in Honolulu, Hawaii. He graduated from Columbia University in 1983 with a Bachelor of Arts degree in political science and later worked as a community organizer in Chicago. In 1988, Obama enrolled in Harvard Law School, where he was the first black president of the Harvard Law Review. He became a civil rights attorney and an academic, teaching constitutional law at the University of Chicago Law School from 1992 to 2004. He also went into elective politics; Obama represented the 13th district in the Illinois Senate from 1997 until 2004, when he successfully ran for the U.S. Senate. In 2008, after a close primary campaign against Hillary Clinton, he was nominated by the Democratic Party for president and chose Delaware Senator Joe Biden as his running mate. Obama was elected president, defeating Republican Party nominee John McCain in the presidential election, and was inaugurated on January 20, 2009. Nine months later he was named the 2009 Nobel Peace Prize laureate, a decision that drew a mixture of criticism and praise.

Obama's first-term actions addressed the global financial crisis and included a major stimulus package to guide the economy in recovering from the Great Recession, a partial extension of George W. Bush's tax cuts, legislation to reform health care, a major financial regulation reform bill, and the end of a major U.S. military presence in Iraq. Obama also appointed Supreme Court justices Sonia Sotomayor and Elena Kagan, the former being the first Hispanic American on the Supreme Court. He ordered the counterterrorism raid which killed Osama bin Laden and downplayed Bush's counterinsurgency model, expanding air strikes and making extensive use of special forces, while encouraging greater reliance on host-government militaries. Obama also ordered military involvement in Libya in order to implement UN Security Council Resolution 1973, contributing to the overthrow of Muammar Gaddafi.

After winning re-election by defeating Republican opponent Mitt Romney, Obama was sworn in for a second term on January 20, 2013. In his second term, Obama took steps to combat climate change, signing a major international climate agreement and an executive order to limit carbon emissions. Obama also presided over the implementation of the Affordable Care Act and other legislation passed in his first term. He negotiated a nuclear agreement with Iran and normalized relations with Cuba. The number of American soldiers in Afghanistan fell dramatically during Obama's second term, though U.S. soldiers remained in the country throughout Obama's presidency. Obama promoted inclusion for LGBT Americans, becoming the first sitting U.S. president to publicly support same-sex marriage.

Obama left office on January 20, 2017, and continues to reside in Washington, D.C. His presidential library in Chicago began construction in 2021. Since leaving office, Obama has remained politically active, campaigning for candidates in various American elections, including Biden's successful bid for president in 2020. Outside of politics, Obama has published three books: Dreams from My Father (1995), The Audacity of Hope (2006), and A Promised Land (2020). Historians and political scientists rank him among the upper tier in historical rankings of American presidents.

Early life and career

Photo of a young Obama sitting on grass with his grandfather, mother, and half-sister.
Obama (right) with grandfather Stanley Armour Dunham, mother Ann Dunham, and half-sister Maya Soetoro, mid-1970s in Honolulu

Obama was born on August 4, 1961,[1] at Kapiolani Medical Center for Women and Children in Honolulu, Hawaii.[2][3][4][5] He is the only president born outside the contiguous 48 states.[6] He was born to an American mother and a Kenyan father. His mother, Ann Dunham (1942–1995), was born in Wichita, Kansas and was of English, Welsh, German, Swiss, and Irish descent. In 2007 it was discovered her great-great-grandfather Falmouth Kearney emigrated from the village of Moneygall, Ireland to the US in 1850.[7] In July 2012, Ancestry.com found a strong likelihood that Dunham was descended from John Punch, an enslaved African man who lived in the Colony of Virginia during the seventeenth century.[8][9] Obama's father, Barack Obama Sr. (1934–1982),[10][11] was a married[12][13][14] Luo Kenyan from Nyang'oma Kogelo.[12][15] His last name, Obama, was derived from his Luo descent.[16] Obama's parents met in 1960 in a Russian language class at the University of Hawaiʻi at Mānoa, where his father was a foreign student on a scholarship.[17][18] The couple married in Wailuku, Hawaii, on February 2, 1961, six months before Obama was born.[19][20]

In late August 1961, a few weeks after he was born, Barack and his mother moved to the University of Washington in Seattle, where they lived for a year. During that time, Barack's father completed his undergraduate degree in economics in Hawaii, graduating in June 1962. He left to attend graduate school on a scholarship at Harvard University, where he earned an M.A. in economics. Obama's parents divorced in March 1964.[21] Obama Sr. returned to Kenya in 1964, where he married for a third time and worked for the Kenyan government as the Senior Economic Analyst in the Ministry of Finance.[22] He visited his son in Hawaii only once, at Christmas 1971,[23] before he was killed in an automobile accident in 1982, when Obama was 21 years old.[24] Recalling his early childhood, Obama said: "That my father looked nothing like the people around me—that he was black as pitch, my mother white as milk—barely registered in my mind."[18] He described his struggles as a young adult to reconcile social perceptions of his multiracial heritage.[25]

In 1963, Dunham met Lolo Soetoro at the University of Hawaii; he was an Indonesian East–West Center graduate student in geography. The couple married on Molokai on March 15, 1965.[26] After two one-year extensions of his J-1 visa, Lolo returned to Indonesia in 1966. His wife and stepson followed sixteen months later in 1967. The family initially lived in the Menteng Dalam neighborhood in the Tebet district of South Jakarta. From 1970, they lived in a wealthier neighborhood in the Menteng district of Central Jakarta.[27]

Education

Scan of Obama's elementary school record, where he is wrongly recorded as Indonesian and Muslim.
Obama's Indonesian school record in St. Francis of Assisi Catholic Elementary School. Obama was enrolled as "Barry Soetoro" (no. 1), and was wrongly recorded as an Indonesian citizen (no. 3) and a Muslim (no. 4).[28]

At the age of six, Obama and his mother had moved to Indonesia to join his stepfather. From age six to ten, he was registered in school as "Barry"[28] and attended local Indonesian-language schools: Sekolah Dasar Katolik Santo Fransiskus Asisi (St. Francis of Assisi Catholic Elementary School) for two years and Sekolah Dasar Negeri Menteng 01 (State Elementary School Menteng 01) for one and a half years, supplemented by English-language Calvert School homeschooling by his mother.[29][30] As a result of his four years in Jakarta, he was able to speak Indonesian fluently as a child.[31] During his time in Indonesia, Obama's stepfather taught him to be resilient and gave him "a pretty hardheaded assessment of how the world works".[32]

In 1971, Obama returned to Honolulu to live with his maternal grandparents, Madelyn and Stanley Dunham. He attended Punahou School—a private college preparatory school—with the aid of a scholarship from fifth grade until he graduated from high school in 1979.[33] In high school, Obama continued to use the nickname "Barry" which he kept until making a visit to Kenya in 1980.[34] Obama lived with his mother and half-sister, Maya Soetoro, in Hawaii for three years from 1972 to 1975 while his mother was a graduate student in anthropology at the University of Hawaii.[35] Obama chose to stay in Hawaii when his mother and half-sister returned to Indonesia in 1975, so his mother could begin anthropology field work.[36] His mother spent most of the next two decades in Indonesia, divorcing Lolo Soetoro in 1980 and earning a PhD degree in 1992, before dying in 1995 in Hawaii following unsuccessful treatment for ovarian and uterine cancer.[37]

Of his years in Honolulu, Obama wrote: "The opportunity that Hawaii offered — to experience a variety of cultures in a climate of mutual respect — became an integral part of my world view, and a basis for the values that I hold most dear."[38] Obama has also written and talked about using alcohol, marijuana, and cocaine during his teenage years to "push questions of who I was out of my mind".[39] Obama was also a member of the "Choom Gang" (the slang term for smoking marijuana), a self-named group of friends who spent time together and smoked marijuana.[40][41]

College and research jobs

After graduating from high school in 1979, Obama moved to Los Angeles to attend Occidental College on a full scholarship. In February 1981, Obama made his first public speech, calling for Occidental to participate in the disinvestment from South Africa in response to that nation's policy of apartheid.[42] In mid-1981, Obama traveled to Indonesia to visit his mother and half-sister Maya, and visited the families of college friends in Pakistan for three weeks.[42] Later in 1981, he transferred to Columbia University in New York City as a junior, where he majored in political science with a specialty in international relations[43] and in English literature[44] and lived off-campus on West 109th Street.[45] He graduated with a Bachelor of Arts degree in 1983 and a 3.7 GPA. After graduating, Obama worked for about a year at the Business International Corporation, where he was a financial researcher and writer,[46][47] then as a project coordinator for the New York Public Interest Research Group on the City College of New York campus for three months in 1985.[48][49][50]

Community organizer and Harvard Law School

Two years after graduating from Columbia, Obama moved from New York to Chicago when he was hired as director of the Developing Communities Project, a faith-based community organization originally comprising eight Catholic parishes in Roseland, West Pullman, and Riverdale on Chicago's South Side. He worked there as a community organizer from June 1985 to May 1988.[49][51] He helped set up a job training program, a college preparatory tutoring program, and a tenants' rights organization in Altgeld Gardens.[52] Obama also worked as a consultant and instructor for the Gamaliel Foundation, a community organizing institute.[53] In mid-1988, he traveled for the first time in Europe for three weeks and then for five weeks in Kenya, where he met many of his paternal relatives for the first time.[54][55]

External videos
video icon Derrick Bell threatens to leave Harvard, April 24, 1990, 11:34, Boston TV Digital Archive[56] Student Barack Obama introduces Professor Derrick Bell starting at 6:25.

Despite being offered a full scholarship to Northwestern University School of Law, Obama enrolled at Harvard Law School in the fall of 1988, living in nearby Somerville, Massachusetts.[57] He was selected as an editor of the Harvard Law Review at the end of his first year,[58] president of the journal in his second year,[52][59] and research assistant to the constitutional scholar Laurence Tribe while at Harvard.[60] During his summers, he returned to Chicago, where he worked as a summer associate at the law firms of Sidley Austin in 1989 and Hopkins & Sutter in 1990.[61] Obama's election as the first black president of the Harvard Law Review gained national media attention[52][59] and led to a publishing contract and advance for a book about race relations,[62] which evolved into a personal memoir. The manuscript was published in mid-1995 as Dreams from My Father.[62] Obama graduated from Harvard Law in 1991 with a Juris Doctor magna cum laude.[63][58]

University of Chicago Law School

In 1991, Obama accepted a two-year position as Visiting Law and Government Fellow at the University of Chicago Law School to work on his first book.[62][64] He then taught constitutional law at the University of Chicago Law School for twelve years, first as a lecturer from 1992 to 1996, and then as a senior lecturer from 1996 to 2004.[65]

From April to October 1992, Obama directed Illinois's Project Vote, a voter registration campaign with ten staffers and seven hundred volunteer registrars; it achieved its goal of registering 150,000 of 400,000 unregistered African Americans in the state, leading Crain's Chicago Business to name Obama to its 1993 list of "40 under Forty" powers to be.[66]

Family and personal life

In a 2006 interview, Obama highlighted the diversity of his extended family: "It's like a little mini-United Nations," he said. "I've got relatives who look like Bernie Mac, and I've got relatives who look like Margaret Thatcher."[67] Obama has a half-sister with whom he was raised (Maya Soetoro-Ng) and seven other half-siblings from his Kenyan father's family, six of them living.[68] Obama's mother was survived by her Kansas-born mother, Madelyn Dunham,[69] until her death on November 2, 2008,[70] two days before his election to the presidency. Obama also has roots in Ireland; he met with his Irish cousins in Moneygall in May 2011.[71] In Dreams from My Father, Obama ties his mother's family history to possible Native American ancestors and distant relatives of Jefferson Davis, President of the Confederate States of America during the American Civil War. He also shares distant ancestors in common with George W. Bush and Dick Cheney, among others.[72][73][74]

Obama lived with anthropologist Sheila Miyoshi Jager while he was a community organizer in Chicago in the 1980s.[75] He proposed to her twice, but both Jager and her parents turned him down.[75][76] The relationship was not made public until May 2017, several months after his presidency had ended.[76]

Picture of Obama, his wife, and their two daughters smiling at the camera. Obama wears a dress shirt and tie.
Obama poses in the Green Room of the White House with wife Michelle and daughters Sasha and Malia, 2009.

In June 1989, Obama met Michelle Robinson when he was employed at Sidley Austin.[77] Robinson was assigned for three months as Obama's adviser at the firm, and she joined him at several group social functions but declined his initial requests to date.[78] They began dating later that summer, became engaged in 1991, and were married on October 3, 1992.[79] After suffering a miscarriage, Michelle underwent in vitro fertilization to conceive their children.[80] The couple's first daughter, Malia Ann, was born in 1998,[81] followed by a second daughter, Natasha ("Sasha"), in 2001.[82] The Obama daughters attended the University of Chicago Laboratory Schools. When they moved to Washington, D.C., in January 2009, the girls started at the Sidwell Friends School.[83] The Obamas had two Portuguese Water Dogs; the first, a male named Bo, was a gift from Senator Ted Kennedy.[84] In 2013, Bo was joined by Sunny, a female.[85] Bo died of cancer on May 8, 2021.[86]

Obama is a supporter of the Chicago White Sox, and he threw out the first pitch at the 2005 ALCS when he was still a senator.[87] In 2009, he threw out the ceremonial first pitch at the All-Star Game while wearing a White Sox jacket.[88] He is also primarily a Chicago Bears football fan in the NFL, but in his childhood and adolescence was a fan of the Pittsburgh Steelers, and rooted for them ahead of their victory in Super Bowl XLIII 12 days after he took office as president.[89] In 2011, Obama invited the 1985 Chicago Bears to the White House; the team had not visited the White House after their Super Bowl win in 1986 due to the Space Shuttle Challenger disaster.[90] He plays basketball, a sport he participated in as a member of his high school's varsity team,[91] and he is left-handed.[92]

In 2005, the Obama family applied the proceeds of a book deal and moved from a Hyde Park, Chicago condominium to a $1.6 million house (equivalent to $2.5 million in 2023) in neighboring Kenwood, Chicago.[93] The purchase of an adjacent lot—and sale of part of it to Obama by the wife of developer, campaign donor and friend Tony Rezko—attracted media attention because of Rezko's subsequent indictment and conviction on political corruption charges that were unrelated to Obama.[94]

In December 2007, Money Magazine estimated Obama's net worth at $1.3 million (equivalent to $1.9 million in 2023).[95] Their 2009 tax return showed a household income of $5.5 million—up from about $4.2 million in 2007 and $1.6 million in 2005—mostly from sales of his books.[96][97] On his 2010 income of $1.7 million, he gave 14 percent to non-profit organizations, including $131,000 to Fisher House Foundation, a charity assisting wounded veterans' families, allowing them to reside near where the veteran is receiving medical treatments.[98][99] Per his 2012 financial disclosure, Obama may be worth as much as $10 million.[100]

Religious views

Obama is a Protestant Christian whose religious views developed in his adult life.[101] He wrote in The Audacity of Hope that he "was not raised in a religious household." He described his mother, raised by non-religious parents, as being detached from religion, yet "in many ways the most spiritually awakened person ... I have ever known", and "a lonely witness for secular humanism." He described his father as a "confirmed atheist" by the time his parents met, and his stepfather as "a man who saw religion as not particularly useful." Obama explained how, through working with black churches as a community organizer while in his twenties, he came to understand "the power of the African-American religious tradition to spur social change."[102]

Obama and his wife standing in a crowded Church, looking forward, with their mouths open mid-sentence while reciting a prayer.
The Obamas worship at African Methodist Episcopal Church in Washington, D.C., January 2013

In January 2008, Obama told Christianity Today: "I am a Christian, and I am a devout Christian. I believe in the redemptive death and resurrection of Jesus Christ. I believe that faith gives me a path to be cleansed of sin and have eternal life."[103] On September 27, 2010, Obama released a statement commenting on his religious views, saying:

I'm a Christian by choice. My family didn't—frankly, they weren't folks who went to church every week. And my mother was one of the most spiritual people I knew, but she didn't raise me in the church. So I came to my Christian faith later in life, and it was because the precepts of Jesus Christ spoke to me in terms of the kind of life that I would want to lead—being my brothers' and sisters' keeper, treating others as they would treat me.[104][105]

Obama met Trinity United Church of Christ pastor Jeremiah Wright in October 1987 and became a member of Trinity in 1992.[106] During Obama's first presidential campaign in May 2008, he resigned from Trinity after some of Wright's statements were criticized.[107] Since moving to Washington, D.C., in 2009, the Obama family has attended several Protestant churches, including Shiloh Baptist Church and St. John's Episcopal Church, as well as Evergreen Chapel at Camp David, but the members of the family do not attend church on a regular basis.[108][109][110]

In 2016, he said that he gets inspiration from a few items that remind him "of all the different people I've met along the way", adding: "I carry these around all the time. I'm not that superstitious, so it's not like I think I necessarily have to have them on me at all times." The items, "a whole bowl full", include rosary beads given to him by Pope Francis, a figurine of the Hindu deity Hanuman, a Coptic cross from Ethiopia, a small Buddha statue given by a monk, and a metal poker chip that used to be the lucky charm of a motorcyclist in Iowa.[111][112]

Legal career

Civil rights attorney

He joined Davis, Miner, Barnhill & Galland, a 13-attorney law firm specializing in civil rights litigation and neighborhood economic development, where he was an associate for three years from 1993 to 1996, then of counsel from 1996 to 2004. In 1994, he was listed as one of the lawyers in Buycks-Roberson v. Citibank Fed. Sav. Bank, 94 C 4094 (N.D. Ill.). This class action lawsuit was filed in 1994 with Selma Buycks-Roberson as lead plaintiff and alleged that Citibank Federal Savings Bank had engaged in practices forbidden under the Equal Credit Opportunity Act and the Fair Housing Act. The case was settled out of court.

From 1994 to 2002, Obama served on the boards of directors of the Woods Fund of Chicago—which in 1985 had been the first foundation to fund the Developing Communities Project—and of the Joyce Foundation.[49] He served on the board of directors of the Chicago Annenberg Challenge from 1995 to 2002, as founding president and chairman of the board of directors from 1995 to 1999.[49] Obama's law license became inactive in 2007.[113][114]

Legislative career

Illinois Senate (1997–2004)

Photo of Obama and others carrying a streetsign that reads "Honorary: Milton Davis Blvd."
State Senator Obama and others celebrate the naming of a street in Chicago after ShoreBank co-founder Milton Davis in 1998.

Obama was elected to the Illinois Senate in 1996, succeeding Democratic State Senator Alice Palmer from Illinois's 13th District, which, at that time, spanned Chicago South Side neighborhoods from Hyde Park–Kenwood south to South Shore and west to Chicago Lawn.[115] Once elected, Obama gained bipartisan support for legislation that reformed ethics and health care laws.[116][117] He sponsored a law that increased tax credits for low-income workers, negotiated welfare reform, and promoted increased subsidies for childcare.[118] In 2001, as co-chairman of the bipartisan Joint Committee on Administrative Rules, Obama supported Republican Governor George Ryan's payday loan regulations and predatory mortgage lending regulations aimed at averting home foreclosures.[119][120]

He was reelected to the Illinois Senate in 1998, defeating Republican Yesse Yehudah in the general election, and was re-elected again in 2002.[121][122] In 2000, he lost a Democratic primary race for Illinois's 1st congressional district in the United States House of Representatives to four-term incumbent Bobby Rush by a margin of two to one.[123]

In January 2003, Obama became chairman of the Illinois Senate's Health and Human Services Committee when Democrats, after a decade in the minority, regained a majority.[124] He sponsored and led unanimous, bipartisan passage of legislation to monitor racial profiling by requiring police to record the race of drivers they detained, and legislation making Illinois the first state to mandate videotaping of homicide interrogations.[118][125][126][127] During his 2004 general election campaign for the U.S. Senate, police representatives credited Obama for his active engagement with police organizations in enacting death penalty reforms.[128] Obama resigned from the Illinois Senate in November 2004 following his election to the U.S. Senate.[129]

2004 U.S. Senate campaign

In May 2002, Obama commissioned a poll to assess his prospects in a 2004 U.S. Senate race. He created a campaign committee, began raising funds, and lined up political media consultant David Axelrod by August 2002. Obama formally announced his candidacy in January 2003.[130]

Obama was an early opponent of the George W. Bush administration's 2003 invasion of Iraq.[131] On October 2, 2002, the day President Bush and Congress agreed on the joint resolution authorizing the Iraq War,[132] Obama addressed the first high-profile Chicago anti-Iraq War rally,[133] and spoke out against the war.[134] He addressed another anti-war rally in March 2003 and told the crowd "it's not too late" to stop the war.[135]

Decisions by Republican incumbent Peter Fitzgerald and his Democratic predecessor Carol Moseley Braun not to participate in the election resulted in wide-open Democratic and Republican primary contests involving 15 candidates.[136] In the March 2004 primary election, Obama won in an unexpected landslide—which overnight made him a rising star within the national Democratic Party, started speculation about a presidential future, and led to the reissue of his memoir, Dreams from My Father.[137] In July 2004, Obama delivered the keynote address at the 2004 Democratic National Convention,[138] seen by nine million viewers. His speech was well received and elevated his status within the Democratic Party.[139]

Obama's expected opponent in the general election, Republican primary winner Jack Ryan, withdrew from the race in June 2004.[140] Six weeks later, Alan Keyes accepted the Republican nomination to replace Ryan.[141] In the November 2004 general election, Obama won with 70 percent of the vote, the largest margin of victory for a Senate candidate in Illinois history.[142] He took 92 of the state's 102 counties, including several where Democrats traditionally do not do well.

U.S. Senate (2005–2008)

Photo of Obama smiling with his arms crossed, with the Capitol building and the sky in the background
Official portrait of Obama as a member of the United States Senate

Obama was sworn in as a senator on January 3, 2005,[143] becoming the only Senate member of the Congressional Black Caucus.[144] He introduced two initiatives that bore his name: Lugar–Obama, which expanded the Nunn–Lugar Cooperative Threat Reduction concept to conventional weapons;[145] and the Federal Funding Accountability and Transparency Act of 2006, which authorized the establishment of USAspending.gov, a web search engine on federal spending.[146] On June 3, 2008, Senator Obama—along with Senators Tom Carper, Tom Coburn, and John McCain—introduced follow-up legislation: Strengthening Transparency and Accountability in Federal Spending Act of 2008.[147] He also cosponsored the Secure America and Orderly Immigration Act.[148]

In December 2006, President Bush signed into law the Democratic Republic of the Congo Relief, Security, and Democracy Promotion Act, marking the first federal legislation to be enacted with Obama as its primary sponsor.[149][150] In January 2007, Obama and Senator Feingold introduced a corporate jet provision to the Honest Leadership and Open Government Act, which was signed into law in September 2007.[151][152]

Later in 2007, Obama sponsored an amendment to the Defense Authorization Act to add safeguards for personality-disorder military discharges.[153] This amendment passed the full Senate in the spring of 2008.[154] He sponsored the Iran Sanctions Enabling Act supporting divestment of state pension funds from Iran's oil and gas industry, which was never enacted but later incorporated in the Comprehensive Iran Sanctions, Accountability, and Divestment Act of 2010;[155] and co-sponsored legislation to reduce risks of nuclear terrorism.[156] Obama also sponsored a Senate amendment to the State Children's Health Insurance Program, providing one year of job protection for family members caring for soldiers with combat-related injuries.[157]

Obama held assignments on the Senate Committees for Foreign Relations, Environment and Public Works and Veterans' Affairs through December 2006.[158] In January 2007, he left the Environment and Public Works committee and took additional assignments with Health, Education, Labor and Pensions and Homeland Security and Governmental Affairs.[159] He also became Chairman of the Senate's subcommittee on European Affairs.[160] As a member of the Senate Foreign Relations Committee, Obama made official trips to Eastern Europe, the Middle East, Central Asia and Africa. He met with Mahmoud Abbas before Abbas became President of the Palestinian National Authority, and gave a speech at the University of Nairobi in which he condemned corruption within the Kenyan government.[161]

Obama resigned his Senate seat on November 16, 2008, to focus on his transition period for the presidency.[162]

Presidential campaigns

2008

Electoral college map, depicting Obama winning many states in the Northeast, Midwest, and Pacific West, and Florida, and McCain winning many states in the South and Rocky Mountains.
2008 electoral vote results. Obama won 365–173.
Official portrait, 2009

On February 10, 2007, Obama announced his candidacy for President of the United States in front of the Old State Capitol building in Springfield, Illinois.[163][164] The choice of the announcement site was viewed as symbolic, as it was also where Abraham Lincoln delivered his "House Divided" speech in 1858.[163][165] Obama emphasized issues of rapidly ending the Iraq War, increasing energy independence, and reforming the health care system.[166]

Numerous candidates entered the Democratic Party presidential primaries. The field narrowed to Obama and Senator Hillary Clinton after early contests, with the race remaining close throughout the primary process, but with Obama gaining a steady lead in pledged delegates due to better long-range planning, superior fundraising, dominant organizing in caucus states, and better exploitation of delegate allocation rules.[167] On June 2, 2008, Obama had received enough votes to clinch his nomination. After an initial hesitation to concede, on June 7, Clinton ended her campaign and endorsed Obama.[168] On August 23, 2008, Obama announced his selection of Delaware Senator Joe Biden as his vice presidential running mate.[169] Obama selected Biden from a field speculated to include former Indiana Governor and Senator Evan Bayh and Virginia Governor Tim Kaine.[169] At the Democratic National Convention in Denver, Colorado, Hillary Clinton called for her supporters to endorse Obama, and she and Bill Clinton gave convention speeches in his support.[170][171] Obama delivered his acceptance speech at Invesco Field at Mile High stadium to a crowd of about eighty-four thousand; the speech was viewed by over three million people worldwide.[172][173][174] During both the primary process and the general election, Obama's campaign set numerous fundraising records, particularly in the quantity of small donations.[175] On June 19, 2008, Obama became the first major-party presidential candidate to turn down public financing in the general election since the system was created in 1976.[176]

John McCain was nominated as the Republican candidate, and he selected Sarah Palin as his running mate. Obama and McCain engaged in three presidential debates in September and October 2008.[177] On November 4, Obama won the presidency with 365 electoral votes to 173 received by McCain.[178] Obama won 52.9 percent of the popular vote to McCain's 45.7 percent.[179] He became the first African-American to be elected president.[180] Obama delivered his victory speech before hundreds of thousands of supporters in Chicago's Grant Park.[181][182] He is one of the three United States senators moved directly from the U.S. Senate to the White House, the others being Warren G. Harding and John F. Kennedy.[183]

2012

Electoral college map, depicting Obama winning many states in the Northeast, Midwest, and Pacific West, and Florida, and Romney winning many states in the South and Rocky Mountains.
2012 electoral vote results. Obama won 332–206.

On April 4, 2011, Obama filed election papers with the Federal Election Commission and then announced his reelection campaign for 2012 in a video titled "It Begins with Us" that he posted on his website.[184][185][186] As the incumbent president, he ran virtually unopposed in the Democratic Party presidential primaries,[187] and on April 3, 2012, Obama secured the 2778 convention delegates needed to win the Democratic nomination.[188] At the Democratic National Convention in Charlotte, North Carolina, Obama and Joe Biden were formally nominated by former President Bill Clinton as the Democratic Party candidates for president and vice president in the general election. Their main opponents were Republicans Mitt Romney, the former governor of Massachusetts, and Representative Paul Ryan of Wisconsin.[189]

On November 6, 2012, Obama won 332 electoral votes, exceeding the 270 required for him to be reelected as president.[190][191][192] With 51.1 percent of the popular vote,[193] Obama became the first Democratic president since Franklin D. Roosevelt to win the majority of the popular vote twice.[194][195] Obama addressed supporters and volunteers at Chicago's McCormick Place after his reelection and said: "Tonight you voted for action, not politics as usual. You elected us to focus on your jobs, not ours. And in the coming weeks and months, I am looking forward to reaching out and working with leaders of both parties."[196][197]

Presidency (2009–2017)

First 100 days

Photo of Obama raising his left hand for the oath of office
Obama takes the oath of office administered by Chief Justice John G. Roberts Jr. at the Capitol, January 20, 2009.

The inauguration of Barack Obama as the 44th president took place on January 20, 2009. In his first few days in office, Obama issued executive orders and presidential memoranda directing the U.S. military to develop plans to withdraw troops from Iraq.[198] He ordered the closing of the Guantanamo Bay detention camp,[199] but Congress prevented the closure by refusing to appropriate the required funds[200][201] and preventing moving any Guantanamo detainee.[202] Obama reduced the secrecy given to presidential records.[203] He also revoked President George W. Bush's restoration of President Ronald Reagan's Mexico City policy which prohibited federal aid to international family planning organizations that perform or provide counseling about abortion.[204]

Domestic policy

The first bill signed into law by Obama was the Lilly Ledbetter Fair Pay Act of 2009, relaxing the statute of limitations for equal-pay lawsuits.[205] Five days later, he signed the reauthorization of the State Children's Health Insurance Program to cover an additional four million uninsured children.[206] In March 2009, Obama reversed a Bush-era policy that had limited funding of embryonic stem cell research and pledged to develop "strict guidelines" on the research.[207]

Photo of Obama giving a speech to Congress, with Pelosi and Biden clapping behind him
Obama delivers a speech at a joint session of Congress with Vice President Joe Biden and House Speaker Nancy Pelosi on February 24, 2009.

Obama appointed two women to serve on the Supreme Court in the first two years of his presidency. He nominated Sonia Sotomayor on May 26, 2009, to replace retiring Associate Justice David Souter. She was confirmed on August 6, 2009,[208] becoming the first Supreme Court Justice of Hispanic descent.[209] Obama nominated Elena Kagan on May 10, 2010, to replace retiring Associate Justice John Paul Stevens. She was confirmed on August 5, 2010, bringing the number of women sitting simultaneously on the Court to three for the first time in American history.[210]

On March 11, 2009, Obama created the White House Council on Women and Girls, which formed part of the Office of Intergovernmental Affairs, having been established by Executive Order 13506 with a broad mandate to advise him on issues relating to the welfare of American women and girls. The council was chaired by Senior Advisor to the President Valerie Jarrett. Obama also established the White House Task Force to Protect Students from Sexual Assault through a government memorandum on January 22, 2014, with a broad mandate to advise him on issues relating to sexual assault on college and university campuses throughout the United States. The co-chairs of the Task Force were Vice President Joe Biden and Jarrett. The Task Force was a development out of the White House Council on Women and Girls and Office of the Vice President of the United States, and prior to that the 1994 Violence Against Women Act first drafted by Biden.

In July 2009, Obama launched the Priority Enforcement Program, an immigration enforcement program that had been pioneered by George W. Bush, and the Secure Communities fingerprinting and immigration status data-sharing program.[211]

In a major space policy speech in April 2010, Obama announced a planned change in direction at NASA, the U.S. space agency. He ended plans for a return of human spaceflight to the moon and development of the Ares I rocket, Ares V rocket and Constellation program, in favor of funding earth science projects, a new rocket type, research and development for an eventual crewed mission to Mars, and ongoing missions to the International Space Station.[212]

Photo of Obama smiling at a hospital patient while hugging her friend
Obama visits an Aurora shooting victim at University of Colorado Hospital, 2012.

On January 16, 2013, one month after the Sandy Hook Elementary School shooting, Obama signed 23 executive orders and outlined a series of sweeping proposals regarding gun control.[213] He urged Congress to reintroduce an expired ban on military-style assault weapons, such as those used in several recent mass shootings, impose limits on ammunition magazines to 10 rounds, introduce background checks on all gun sales, pass a ban on possession and sale of armor-piercing bullets, introduce harsher penalties for gun-traffickers, especially unlicensed dealers who buy arms for criminals and approving the appointment of the head of the federal Bureau of Alcohol, Tobacco, Firearms and Explosives for the first time since 2006.[214] On January 5, 2016, Obama announced new executive actions extending background check requirements to more gun sellers.[215] In a 2016 editorial in The New York Times, Obama compared the struggle for what he termed "common-sense gun reform" to women's suffrage and other civil rights movements in American history.

In 2011, Obama signed a four-year renewal of the Patriot Act.[216] Following the 2013 global surveillance disclosures by whistleblower Edward Snowden, Obama condemned the leak as unpatriotic,[217] but called for increased restrictions on the National Security Agency (NSA) to address violations of privacy.[218][219] Obama continued and expanded surveillance programs set up by George W. Bush, while implementing some reforms.[220] He supported legislation that would have limited the NSA's ability to collect phone records in bulk under a single program and supported bringing more transparency to the Foreign Intelligence Surveillance Court (FISC).[220]

Racial issues

In his speeches as president, Obama did not make more overt references to race relations than his predecessors,[221][222] but according to one study, he implemented stronger policy action on behalf of African-Americans than any president since the Nixon era.[223]

Following Obama's election, many pondered the existence of a "postracial America".[224][225] However, lingering racial tensions quickly became apparent,[224][226] and many African-Americans expressed outrage over what they saw as an intense racial animosity directed at Obama.[227] The acquittal of George Zimmerman following the killing of Trayvon Martin sparked national outrage, leading to Obama giving a speech in which he noted that "Trayvon Martin could have been me 35 years ago."[228] The shooting of Michael Brown in Ferguson, Missouri sparked a wave of protests.[229] These and other events led to the birth of the Black Lives Matter movement, which campaigns against violence and systemic racism toward black people.[229] Though Obama entered office reluctant to talk about race, by 2014 he began openly discussing the disadvantages faced by many members of minority groups.[230]

Several incidents during Obama's presidency generated disapproval from the African-American community and with law enforcement, and Obama sought to build trust between law enforcement officials and civil rights activists, with mixed results. Some in law enforcement criticized Obama's condemnation of racial bias after incidents in which police action led to the death of African-American men, while some racial justice activists criticized Obama's expressions of empathy for the police.[231] In a March 2016 Gallup poll, nearly one third of Americans said they worried "a great deal" about race relations, a higher figure than in any previous Gallup poll since 2001.[232]

LGBT rights

On October 8, 2009, Obama signed the Matthew Shepard and James Byrd Jr. Hate Crimes Prevention Act, a measure that expanded the 1969 United States federal hate-crime law to include crimes motivated by a victim's actual or perceived gender, sexual orientation, gender identity, or disability.[233] On October 30, 2009, Obama lifted the ban on travel to the United States by those infected with HIV. The lifting of the ban was celebrated by Immigration Equality.[234] On December 22, 2010, Obama signed the Don't Ask, Don't Tell Repeal Act of 2010, which fulfilled a promise made in the 2008 presidential campaign[235][236] to end the don't ask, don't tell policy of 1993 that had prevented gay and lesbian people from serving openly in the United States Armed Forces. In 2016, the Pentagon ended the policy that barred transgender people from serving openly in the military.[237]

Same-sex marriage

As a candidate for the Illinois state senate in 1996, Obama stated he favored legalizing same-sex marriage.[238] During his Senate run in 2004, he said he supported civil unions and domestic partnerships for same-sex partners but opposed same-sex marriages.[239] In 2008, he reaffirmed this position by stating "I believe marriage is between a man and a woman. I am not in favor of gay marriage."[240] On May 9, 2012, shortly after the official launch of his campaign for re-election as president, Obama said his views had evolved, and he publicly affirmed his personal support for the legalization of same-sex marriage, becoming the first sitting U.S. president to do so.[241][242] During his second inaugural address on January 21, 2013,[197] Obama became the first U.S. president in office to call for full equality for gay Americans, and the first to mention gay rights or the word "gay" in an inaugural address.[243][244] In 2013, the Obama administration filed briefs that urged the Supreme Court to rule in favor of same-sex couples in the cases of Hollingsworth v. Perry (regarding same-sex marriage)[245] and United States v. Windsor (regarding the Defense of Marriage Act).[246]

Economic policy

On February 17, 2009, Obama signed the American Recovery and Reinvestment Act of 2009, a $787 billion (equivalent to $1118 billion in 2023) economic stimulus package aimed at helping the economy recover from the deepening worldwide recession.[247] The act includes increased federal spending for health care, infrastructure, education, various tax breaks and incentives, and direct assistance to individuals.[248] In March 2009, Obama's Treasury Secretary, Timothy Geithner, took further steps to manage the financial crisis, including introducing the Public–Private Investment Program for Legacy Assets, which contains provisions for buying up to $2 trillion in depreciated real estate assets.[249]

Graph showing large deficit increases in 2008 and 2009, followed by a decline
Deficit and debt increases, 2001–2016

Obama intervened in the troubled automotive industry[250] in March 2009, renewing loans for General Motors (GM) and Chrysler to continue operations while reorganizing. Over the following months the White House set terms for both firms' bankruptcies, including the sale of Chrysler to Italian automaker Fiat[251] and a reorganization of GM giving the U.S. government a temporary 60 percent equity stake in the company.[252] In June 2009, dissatisfied with the pace of economic stimulus, Obama called on his cabinet to accelerate the investment.[253] He signed into law the Car Allowance Rebate System, known colloquially as "Cash for Clunkers", which temporarily boosted the economy.[254][255][256]

The Bush and Obama administrations authorized spending and loan guarantees from the Federal Reserve and the Department of the Treasury. These guarantees totaled about $11.5 trillion, but only $3 trillion had been spent by the end of November 2009.[257] On August 2, 2011, after a lengthy congressional debate over whether to raise the nation's debt limit, Obama signed the bipartisan Budget Control Act of 2011. The legislation enforced limits on discretionary spending until 2021, established a procedure to increase the debt limit, created a Congressional Joint Select Committee on Deficit Reduction to propose further deficit reduction with a stated goal of achieving at least $1.5 trillion in budgetary savings over 10 years, and established automatic procedures for reducing spending by as much as $1.2 trillion if legislation originating with the new joint select committee did not achieve such savings.[258] By passing the legislation, Congress was able to prevent a U.S. government default on its obligations.[259]

The unemployment rate rose in 2009, reaching a peak in October at 10.0 percent and averaging 10.0 percent in the fourth quarter. Following a decrease to 9.7 percent in the first quarter of 2010, the unemployment rate fell to 9.6 percent in the second quarter, where it remained for the rest of the year.[260] Between February and December 2010, employment rose by 0.8 percent, which was less than the average of 1.9 percent experienced during comparable periods in the past four employment recoveries.[261] By November 2012, the unemployment rate fell to 7.7 percent,[262] decreasing to 6.7 percent in the last month of 2013.[263] During 2014, the unemployment rate continued to decline, falling to 6.3 percent in the first quarter.[264] GDP growth returned in the third quarter of 2009, expanding at a rate of 1.6 percent, followed by a 5.0 percent increase in the fourth quarter.[265] Growth continued in 2010, posting an increase of 3.7 percent in the first quarter, with lesser gains throughout the rest of the year.[265] In July 2010, the Federal Reserve noted that economic activity continued to increase, but its pace had slowed, and chairman Ben Bernanke said the economic outlook was "unusually uncertain".[266] Overall, the economy expanded at a rate of 2.9 percent in 2010.[267]

Graph showing increased unemployment in Obama's first year, followed by consistent jobs growth
U.S. unemployment rate and monthly changes in net employment during Obama's tenure as president[268][269]
Graph showing lower jobs growth under Obama was lower than previous presidents, except George W. Bush
Job growth during the presidency of Obama compared to other presidents, as measured as a cumulative percentage change from month after inauguration to end of his term

The Congressional Budget Office (CBO) and a broad range of economists credit Obama's stimulus plan for economic growth.[270][271] The CBO released a report stating that the stimulus bill increased employment by 1–2.1 million,[271][272][273] while conceding that "it is impossible to determine how many of the reported jobs would have existed in the absence of the stimulus package."[270] Although an April 2010, survey of members of the National Association for Business Economics showed an increase in job creation (over a similar January survey) for the first time in two years, 73 percent of 68 respondents believed the stimulus bill has had no impact on employment.[274] The economy of the United States has grown faster than the other original NATO members by a wider margin under President Obama than it has anytime since the end of World War II.[275] The Organisation for Economic Co-operation and Development credits the much faster growth in the United States to the stimulus plan of the U.S. and the austerity measures in the European Union.[276]

Within a month of the 2010 midterm elections, Obama announced a compromise deal with the Congressional Republican leadership that included a temporary, two-year extension of the 2001 and 2003 income tax rates, a one-year payroll tax reduction, continuation of unemployment benefits, and a new rate and exemption amount for estate taxes.[277] The compromise overcame opposition from some in both parties, and the resulting $858 billion (equivalent to $1.2 trillion in 2023) Tax Relief, Unemployment Insurance Reauthorization, and Job Creation Act of 2010 passed with bipartisan majorities in both houses of Congress before Obama signed it on December 17, 2010.[278]

In December 2013, Obama declared that growing income inequality is a "defining challenge of our time" and called on Congress to bolster the safety net and raise wages. This came on the heels of the nationwide strikes of fast-food workers and Pope Francis' criticism of inequality and trickle-down economics.[279] Obama urged Congress to ratify a 12-nation free trade pact called the Trans-Pacific Partnership.[280]

Environmental policy

Photo of Obama listening to a briefing, surrounded by senior staffers
Obama at a 2010 briefing on the BP oil spill at the Coast Guard Station Venice in Venice, Louisiana

On April 20, 2010, an explosion destroyed an offshore drilling rig at the Macondo Prospect in the Gulf of Mexico, causing a major sustained oil leak. Obama visited the Gulf, announced a federal investigation, and formed a bipartisan commission to recommend new safety standards, after a review by Secretary of the Interior Ken Salazar and concurrent Congressional hearings. He then announced a six-month moratorium on new deepwater drilling permits and leases, pending regulatory review.[281] As multiple efforts by BP failed, some in the media and public expressed confusion and criticism over various aspects of the incident, and stated a desire for more involvement by Obama and the federal government.[282] Prior to the oil spill, on March 31, 2010, Obama ended a ban on oil and gas drilling along the majority of the East Coast of the United States and along the coast of northern Alaska in an effort to win support for an energy and climate bill and to reduce foreign imports of oil and gas.[283]

In July 2013, Obama expressed reservations and said he "would reject the Keystone XL pipeline if it increased carbon pollution [or] greenhouse emissions."[284][285] On February 24, 2015, Obama vetoed a bill that would have authorized the pipeline.[286] It was the third veto of Obama's presidency and his first major veto.[287]

In December 2016, Obama permanently banned new offshore oil and gas drilling in most United States-owned waters in the Atlantic and Arctic Oceans using the 1953 Outer Continental Shelf Act.[288][289][290]

Obama emphasized the conservation of federal lands during his term in office. He used his power under the Antiquities Act to create 25 new national monuments during his presidency and expand four others, protecting a total of 553,000,000 acres (224,000,000 ha) of federal lands and waters, more than any other U.S. president.[291][292][293]

Health care reform

Obama called for Congress to pass legislation reforming health care in the United States, a key campaign promise and a top legislative goal.[294] He proposed an expansion of health insurance coverage to cover the uninsured, cap premium increases, and allow people to retain their coverage when they leave or change jobs. His proposal was to spend $900 billion over ten years and include a government insurance plan, also known as the public option, to compete with the corporate insurance sector as a main component to lowering costs and improving quality of health care. It would also make it illegal for insurers to drop sick people or deny them coverage for pre-existing conditions, and require every American to carry health coverage. The plan also includes medical spending cuts and taxes on insurance companies that offer expensive plans.[295][296]

Graph of maximum out-of-pocket premiums by poverty level, showing single-digit premiums for everyone under 400% of the federal poverty level.
Maximum Out-of-Pocket Premium as Percentage of Family Income and federal poverty level, under Patient Protection and Affordable Care Act, starting in 2014 (Source: CRS)[297]

On July 14, 2009, House Democratic leaders introduced a 1,017-page plan for overhauling the U.S. health care system, which Obama wanted Congress to approve by the end of 2009.[294] After public debate during the Congressional summer recess of 2009, Obama delivered a speech to a joint session of Congress on September 9 where he addressed concerns over the proposals.[298] In March 2009, Obama lifted a ban on using federal funds for stem cell research.[299]

On November 7, 2009, a health care bill featuring the public option was passed in the House.[300][301] On December 24, 2009, the Senate passed its own bill—without a public option—on a party-line vote of 60–39.[302] On March 21, 2010, the Patient Protection and Affordable Care Act (ACA, colloquially "Obamacare") passed by the Senate in December was passed in the House by a vote of 219 to 212. Obama signed the bill into law on March 23, 2010.[303]

The ACA includes health-related provisions, most of which took effect in 2014, including expanding Medicaid eligibility for people making up to 133 percent of the federal poverty level (FPL) starting in 2014,[304] subsidizing insurance premiums for people making up to 400 percent of the FPL ($88,000 for family of four in 2010) so their maximum "out-of-pocket" payment for annual premiums will be from 2 percent to 9.5 percent of income,[305] providing incentives for businesses to provide health care benefits, prohibiting denial of coverage and denial of claims based on pre-existing conditions, establishing health insurance exchanges, prohibiting annual coverage caps, and support for medical research. According to White House and CBO figures, the maximum share of income that enrollees would have to pay would vary depending on their income relative to the federal poverty level.[306]

Graph showing significant decreases in uninsured rates after the creation of Medicare and Medicaid, and after the creation of Obamacare
Percentage of Individuals in the United States without Health Insurance, 1963–2015 (Source: JAMA)[307]

The costs of these provisions are offset by taxes, fees, and cost-saving measures, such as new Medicare taxes for those in high-income brackets, taxes on indoor tanning, cuts to the Medicare Advantage program in favor of traditional Medicare, and fees on medical devices and pharmaceutical companies;[308] there is also a tax penalty for those who do not obtain health insurance, unless they are exempt due to low income or other reasons.[309] In March 2010, the CBO estimated that the net effect of both laws will be a reduction in the federal deficit by $143 billion over the first decade.[310]

The law faced several legal challenges, primarily based on the argument that an individual mandate requiring Americans to buy health insurance was unconstitutional. On June 28, 2012, the Supreme Court ruled by a 5–4 vote in National Federation of Independent Business v. Sebelius that the mandate was constitutional under the U.S. Congress's taxing authority.[311] In Burwell v. Hobby Lobby the Court ruled that "closely-held" for-profit corporations could be exempt on religious grounds under the Religious Freedom Restoration Act from regulations adopted under the ACA that would have required them to pay for insurance that covered certain contraceptives. In June 2015, the Court ruled 6–3 in King v. Burwell that subsidies to help individuals and families purchase health insurance were authorized for those doing so on both the federal exchange and state exchanges, not only those purchasing plans "established by the State", as the statute reads.[312]

Foreign policy

refer to caption
June 4, 2009 − after his speech A New Beginning at Cairo University, U.S. President Obama participates in a roundtable interview in 2009 with among others Jamal Khashoggi, Bambang Harymurti and Nahum Barnea.

In February and March 2009, Vice President Joe Biden and Secretary of State Hillary Clinton made separate overseas trips to announce a "new era" in U.S. foreign relations with Russia and Europe, using the terms "break" and "reset" to signal major changes from the policies of the preceding administration.[313] Obama attempted to reach out to Arab leaders by granting his first interview to an Arab satellite TV network, Al Arabiya.[314] On March 19, Obama continued his outreach to the Muslim world, releasing a New Year's video message to the people and government of Iran.[315][316] On June 4, 2009, Obama delivered a speech at Cairo University in Egypt calling for "A New Beginning" in relations between the Islamic world and the United States and promoting Middle East peace.[317] On June 26, 2009, Obama condemned the Iranian government's actions towards protesters following Iran's 2009 presidential election.[318]

In 2011, Obama ordered a drone strike in Yemen which targeted and killed Anwar al-Awlaki, an American imam suspected of being a leading Al-Qaeda organizer. al-Awlaki became the first U.S. citizen to be targeted and killed by a U.S. drone strike. The Department of Justice released a memo justifying al-Awlaki's death as a lawful act of war,[319] while civil liberties advocates described it as a violation of al-Awlaki's constitutional right to due process. The killing led to significant controversy.[320] His teenage son and young daughter, also Americans, were later killed in separate US military actions, although they were not targeted specifically.[321][322]

Obama, King Salman of Saudi Arabia, Saudi Crown Prince Mohammed bin Salman and other leaders at the GCC summit in Saudi Arabia, April 2016

In March 2015, Obama declared that he had authorized U.S. forces to provide logistical and intelligence support to the Saudis in their military intervention in Yemen, establishing a "Joint Planning Cell" with Saudi Arabia.[323][324] In 2016, the Obama administration proposed a series of arms deals with Saudi Arabia worth $115 billion.[325] Obama halted the sale of guided munition technology to Saudi Arabia after Saudi warplanes targeted a funeral in Yemen's capital Sanaa, killing more than 140 people.[326]

In September 2016 Obama was snubbed by Xi Jinping and the Chinese Communist Party as he descended from Air Force One to the tarmac of Hangzhou International Airport for the 2016 G20 Hangzhou summit without the usual red carpet welcome.[327]

War in Iraq

On February 27, 2009, Obama announced that combat operations in Iraq would end within 18 months.[328] The Obama administration scheduled the withdrawal of combat troops to be completed by August 2010, decreasing troop's levels from 142,000 while leaving a transitional force of about 50,000 in Iraq until the end of 2011. On August 19, 2010, the last U.S. combat brigade exited Iraq. Remaining troops transitioned from combat operations to counter-terrorism and the training, equipping, and advising of Iraqi security forces.[329][330] On August 31, 2010, Obama announced that the United States combat mission in Iraq was over.[331] On October 21, 2011, President Obama announced that all U.S. troops would leave Iraq in time to be "home for the holidays."[332]

In June 2014, following the capture of Mosul by ISIL, Obama sent 275 troops to provide support and security for U.S. personnel and the U.S. Embassy in Baghdad. ISIS continued to gain ground and to commit widespread massacres and ethnic cleansing.[333][334] In August 2014, during the Sinjar massacre, Obama ordered a campaign of U.S. airstrikes against ISIL.[335] By the end of 2014, 3,100 American ground troops were committed to the conflict[336] and 16,000 sorties were flown over the battlefield, primarily by U.S. Air Force and Navy pilots.[337] In early 2015, with the addition of the "Panther Brigade" of the 82nd Airborne Division the number of U.S. ground troops in Iraq increased to 4,400,[338] and by July American-led coalition air forces counted 44,000 sorties over the battlefield.[339]

Afghanistan and Pakistan

Photo of Obama and other heads of state walking along the Colonnade outside the White House
Obama after a trilateral meeting with Afghan President Hamid Karzai (left) and Pakistani President Asif Ali Zardari (right), May 2009

In his election campaign, Obama called the war in Iraq a "dangerous distraction" and that emphasis should instead be put on the war in Afghanistan,[340] the region he cites as being most likely where an attack against the United States could be launched again.[341] Early in his presidency, Obama moved to bolster U.S. troop strength in Afghanistan. He announced an increase in U.S. troop levels to 17,000 military personnel in February 2009 to "stabilize a deteriorating situation in Afghanistan", an area he said had not received the "strategic attention, direction and resources it urgently requires."[342] He replaced the military commander in Afghanistan, General David D. McKiernan, with former Special Forces commander Lt. Gen. Stanley A. McChrystal in May 2009, indicating that McChrystal's Special Forces experience would facilitate the use of counterinsurgency tactics in the war.[343] On December 1, 2009, Obama announced the deployment of an additional 30,000 military personnel to Afghanistan and proposed to begin troop withdrawals 18 months from that date;[344] this took place in July 2011. David Petraeus replaced McChrystal in June 2010, after McChrystal's staff criticized White House personnel in a magazine article.[345] In February 2013, Obama said the U.S. military would reduce the troop level in Afghanistan from 68,000 to 34,000 U.S. troops by February 2014.[346] In October 2015, the White House announced a plan to keep U.S. Forces in Afghanistan indefinitely in light of the deteriorating security situation.[347]

Regarding neighboring Pakistan, Obama called its tribal border region the "greatest threat" to the security of Afghanistan and Americans, saying that he "cannot tolerate a terrorist sanctuary." In the same speech, Obama claimed that the U.S. "cannot succeed in Afghanistan or secure our homeland unless we change our Pakistan policy."[348]

Death of Osama bin Laden
Photo of Obama, Biden, and national security staffers in the Situation Room, somberly listening to updates on the bin Laden raid
Obama and members of the national security team receive an update on Operation Neptune's Spear in the White House Situation Room, May 1, 2011. See also: Situation Room.

Starting with information received from Central Intelligence Agency operatives in July 2010, the CIA developed intelligence over the next several months that determined what they believed to be the hideout of Osama bin Laden. He was living in seclusion in a large compound in Abbottabad, Pakistan, a suburban area 35 miles (56 km) from Islamabad.[349] CIA head Leon Panetta reported this intelligence to President Obama in March 2011.[349] Meeting with his national security advisers over the course of the next six weeks, Obama rejected a plan to bomb the compound, and authorized a "surgical raid" to be conducted by United States Navy SEALs.[349] The operation took place on May 1, 2011, and resulted in the shooting death of bin Laden and the seizure of papers, computer drives and disks from the compound.[350][351] DNA testing was one of five methods used to positively identify bin Laden's corpse,[352] which was buried at sea several hours later.[353] Within minutes of the President's announcement from Washington, DC, late in the evening on May 1, there were spontaneous celebrations around the country as crowds gathered outside the White House, and at New York City's Ground Zero and Times Square.[350][354] Reaction to the announcement was positive across party lines, including from former presidents Bill Clinton and George W. Bush.[355]

Relations with Cuba

Photo of Obama shaking hands with the Cuban president
President Obama meeting with Cuban President Raúl Castro in Panama, April 2015

Since the spring of 2013, secret meetings were conducted between the United States and Cuba in the neutral locations of Canada and Vatican City.[356] The Vatican first became involved in 2013 when Pope Francis advised the U.S. and Cuba to exchange prisoners as a gesture of goodwill.[357] On December 10, 2013, Cuban President Raúl Castro, in a significant public moment, greeted and shook hands with Obama at the Nelson Mandela memorial service in Johannesburg.[358]

In December 2014, after the secret meetings, it was announced that Obama, with Pope Francis as an intermediary, had negotiated a restoration of relations with Cuba, after nearly sixty years of détente.[359] Popularly dubbed the Cuban Thaw, The New Republic deemed the Cuban Thaw to be "Obama's finest foreign policy achievement."[360] On July 1, 2015, President Obama announced that formal diplomatic relations between Cuba and the United States would resume, and embassies would be opened in Washington and Havana.[361] The countries' respective "interests sections" in one another's capitals were upgraded to embassies on July 20 and August 13, 2015, respectively.[362] Obama visited Havana, Cuba for two days in March 2016, becoming the first sitting U.S. president to arrive since Calvin Coolidge in 1928.[363]

Israel

Photo of Obama shaking hands with Israeli President Shimon Peres, with Biden overlooking
Obama meeting with Israeli President Shimon Peres in the Oval Office, May 2009

During the initial years of the Obama administration, the U.S. increased military cooperation with Israel, including increased military aid, re-establishment of the U.S.-Israeli Joint Political Military Group and the Defense Policy Advisory Group, and an increase in visits among high-level military officials of both countries.[364] The Obama administration asked Congress to allocate money toward funding the Iron Dome program in response to the waves of Palestinian rocket attacks on Israel.[365] In March 2010, Obama took a public stance against plans by the government of Israeli Prime Minister Benjamin Netanyahu to continue building Jewish housing projects in predominantly Arab neighborhoods of East Jerusalem.[366][367] In 2011, the United States vetoed a Security Council resolution condemning Israeli settlements, with the United States being the only nation to do so.[368] Obama supports the two-state solution to the Arab–Israeli conflict based on the 1967 borders with land swaps.[369]

In 2013, Jeffrey Goldberg reported that, in Obama's view, "with each new settlement announcement, Netanyahu is moving his country down a path toward near-total isolation."[370] In 2014, Obama likened the Zionist movement to the civil rights movement in the United States. He said both movements seek to bring justice and equal rights to historically persecuted peoples, explaining: "To me, being pro-Israel and pro-Jewish is part and parcel with the values that I've been fighting for since I was politically conscious and started getting involved in politics."[371] Obama expressed support for Israel's right to defend itself during the 2014 Israel–Gaza conflict.[372] In 2015, Obama was harshly criticized by Israel for advocating and signing the Iran Nuclear Deal; Israeli Prime Minister Benjamin Netanyahu, who had advocated the U.S. congress to oppose it, said the deal was "dangerous" and "bad."[373]

On December 23, 2016, under the Obama Administration, the United States abstained from United Nations Security Council Resolution 2334, which condemned Israeli settlement building in the occupied Palestinian territories as a violation of international law, effectively allowing it to pass.[374] Netanyahu strongly criticized the Obama administration's actions,[375][376] and the Israeli government withdrew its annual dues from the organization, which totaled $6 million, on January 6, 2017.[377] On January 5, 2017, the United States House of Representatives voted 342–80 to condemn the UN Resolution.[378][379]

Libya

In February 2011, protests in Libya began against long-time dictator Muammar Gaddafi as part of the Arab Spring. They soon turned violent. In March, as forces loyal to Gaddafi advanced on rebels across Libya, calls for a no-fly zone came from around the world, including Europe, the Arab League, and a resolution[380] passed unanimously by the U.S. Senate.[381] In response to the passage of United Nations Security Council Resolution 1973 on March 17, the Foreign Minister of Libya Moussa Koussa announced a ceasefire. However Gaddafi's forces continued to attack the rebels.[382]

On March 19 a multinational coalition lead by France and the United Kingdom with Italian and U.S. support, approved by Obama, took part in air strikes to destroy the Libyan government's air defense capabilities to protect civilians and enforce a no-fly-zone,[383] including the use of Tomahawk missiles, B-2 Spirits, and fighter jets.[384][385][386] Six days later, on March 25, by unanimous vote of all its 28 members, NATO took over leadership of the effort, dubbed Operation Unified Protector.[387] Some members of Congress[388] questioned whether Obama had the constitutional authority to order military action in addition to questioning its cost, structure and aftermath.[389][390] In 2016 Obama said “Our coalition could have and should have done more to fill a vacuum left behind” and that it was "a mess".[391] He has stated that the lack of preparation surrounding the days following the government's overthrow was the "worst mistake" of his presidency.[392]

Syrian civil war

On August 18, 2011, several months after the start of the Syrian civil war, Obama issued a written statement that said: "The time has come for President Assad to step aside."[393] This stance was reaffirmed in November 2015.[394] In 2012, Obama authorized multiple programs run by the CIA and the Pentagon to train anti-Assad rebels.[395] The Pentagon-run program was later found to have failed and was formally abandoned in October 2015.[396][397]

In the wake of a chemical weapons attack in Syria, formally blamed by the Obama administration on the Assad government, Obama chose not to enforce the "red line" he had pledged[398] and, rather than authorize the promised military action against Assad, went along with the Russia-brokered deal that led to Assad giving up chemical weapons; however attacks with chlorine gas continued.[399][400] In 2014, Obama authorized an air campaign aimed primarily at ISIL.[401]

Iran nuclear talks

refer to caption
Obama talks with Israeli prime minister Benjamin Netanyahu in Jerusalem, March 2013.

On October 1, 2009, the Obama administration went ahead with a Bush administration program, increasing nuclear weapons production. The "Complex Modernization" initiative expanded two existing nuclear sites to produce new bomb parts. In November 2013, the Obama administration opened negotiations with Iran to prevent it from acquiring nuclear weapons, which included an interim agreement. Negotiations took two years with numerous delays, with a deal being announced on July 14, 2015. The deal titled the "Joint Comprehensive Plan of Action" saw sanctions removed in exchange for measures that would prevent Iran from producing nuclear weapons. While Obama hailed the agreement as being a step towards a more hopeful world, the deal drew strong criticism from Republican and conservative quarters, and from Israeli Prime Minister Benjamin Netanyahu.[402][403][404] In addition, the transfer of $1.7 billion in cash to Iran shortly after the deal was announced was criticized by the Republican party. The Obama administration said that the payment in cash was because of the "effectiveness of U.S. and international sanctions."[405] In order to advance the deal, the Obama administration shielded Hezbollah from the Drug Enforcement Administration's Project Cassandra investigation regarding drug smuggling and from the Central Intelligence Agency.[406][407] On a side note, the very same year, in December 2015, Obama started a $348 billion worth program to back the biggest U.S. buildup of nuclear arms since Ronald Reagan left the White House.[408]

Russia

Photo of Obama shaking hands with Vladimir Putin in front of Russian and American flags
Obama meets Russian President Vladimir Putin in September 2015.

In March 2010, an agreement was reached with the administration of Russian President Dmitry Medvedev to replace the 1991 Strategic Arms Reduction Treaty with a new pact reducing the number of long-range nuclear weapons in the arsenals of both countries by about a third.[409] Obama and Medvedev signed the New START treaty in April 2010, and the U.S. Senate ratified it in December 2010.[410] In December 2011, Obama instructed agencies to consider LGBT rights when issuing financial aid to foreign countries.[411] In August 2013, he criticized Russia's law that discriminates against gays,[412] but he stopped short of advocating a boycott of the upcoming 2014 Winter Olympics in Sochi, Russia.[413]

After Russia's invasion of Crimea in 2014, military intervention in Syria in 2015, and the interference in the 2016 U.S. presidential election,[414] George Robertson, a former UK defense secretary and NATO secretary-general, said Obama had "allowed Putin to jump back on the world stage and test the resolve of the West", adding that the legacy of this disaster would last.[415]

Cultural and political image

Obama's family history, upbringing, and Ivy League education differ markedly from those of African-American politicians who launched their careers in the 1960s through participation in the civil rights movement.[416] Expressing puzzlement over questions about whether he is "black enough", Obama told an August 2007 meeting of the National Association of Black Journalists that "we're still locked in this notion that if you appeal to white folks then there must be something wrong."[417] Obama acknowledged his youthful image in an October 2007 campaign speech, saying: "I wouldn't be here if, time and again, the torch had not been passed to a new generation."[418] Additionally, Obama has frequently been referred to as an exceptional orator.[419] During his pre-inauguration transition period and continuing into his presidency, Obama delivered a series of weekly Internet video addresses.[420]

Job approval

refer to adjacent text
Graph of Obama's approval ratings per Gallup

According to the Gallup Organization, Obama began his presidency with a 68 percent approval rating,[421] the fifth highest for a president following their swearing in.[422] His ratings remained above the majority level until November 2009[423] and by August 2010 his approval was in the low 40s,[424] a trend similar to Ronald Reagan's and Bill Clinton's first years in office.[425] Following the death of Osama bin Laden on May 2, 2011, Obama experienced a small poll bounce and steadily maintained 50–53 percent approval for about a month, until his approval numbers dropped back to the low 40s.[426][427][428]

His approval rating fell to 38 percent on several occasions in late 2011[429] before recovering in mid-2012 with polls showing an average approval of 50 percent.[430] After his second inauguration in 2013, Obama's approval ratings remained stable around 52 percent[431] before declining for the rest of the year and eventually bottoming out at 39 percent in December.[426] In polling conducted before the 2014 midterm elections, Obama's approval ratings were at their lowest[432][433] with his disapproval rating reaching a high of 57 percent.[426][434][435] His approval rating continued to lag throughout most of 2015 but began to reach the high 40s by the end of the year.[426][436] According to Gallup, Obama's approval rating reached 50 percent in March 2016, a level unseen since May 2013.[426][437] In polling conducted January 16–19, 2017, Obama's final approval rating was 59 percent, which placed him on par with George H. W. Bush and Dwight D. Eisenhower, whose final Gallup ratings also measured in the high 50s.[438]

Obama has maintained relatively positive public perceptions after his presidency.[439] In Gallup's retrospective approval polls of former presidents, Obama garnered a 63 percent approval rating in 2018 and again in 2023, ranking him the fourth most popular president since World War II.[440][441]

Foreign perceptions

Polls showed strong support for Obama in other countries both before and during his presidency.[442][443][444] In a February 2009 poll conducted in Western Europe and the U.S. by Harris Interactive for France 24 and the International Herald Tribune, Obama was rated as the most respected world leader, as well as the most powerful.[445] In a similar poll conducted by Harris in May 2009, Obama was rated as the most popular world leader, as well as the one figure most people would pin their hopes on for pulling the world out of the economic downturn.[446][447]

On October 9, 2009—only nine months into his first term—the Norwegian Nobel Committee announced that Obama had won the 2009 Nobel Peace Prize "for his extraordinary efforts to strengthen international diplomacy and cooperation between peoples",[448] which drew a mixture of praise and criticism from world leaders and media figures.[449][450][451][452] He became the fourth U.S. president to be awarded the Nobel Peace Prize, and the third to become a Nobel laureate while in office.[453] He himself called it a "call to action" and remarked: "I do not view it as a recognition of my own accomplishments but rather an affirmation of American leadership on behalf of aspirations held by people in all nations".[454]

Thanks, Obama

In 2009 the saying "thanks, Obama" first appeared in a Twitter hashtag "#thanks Obama" and was later used in a demotivational poster. It was later adopted satirically to blame Obama for any socio-economic ills. Obama himself used the phrase in video in 2015 and 2016. In 2017 the phrase was used by Stephen Colbert to express gratitude to Obama on his last day in office.

Post-presidency (2017–present)

refer to caption
Obama playing golf with Argentinian president Mauricio Macri, October 2017

Obama's presidency ended on January 20, 2017, upon the inauguration of his successor, Donald Trump.[455][456] The family moved to a house they rented in Kalorama, Washington, D.C.[457] On March 2, the John F. Kennedy Presidential Library and Museum awarded the Profile in Courage Award to Obama "for his enduring commitment to democratic ideals and elevating the standard of political courage."[458] His first public appearance since leaving the office was a seminar at the University of Chicago on April 24, where he appealed for a new generation to participate in politics.[459] On September 7, Obama partnered with former presidents Jimmy Carter, George H. W. Bush, Bill Clinton, and George W. Bush to work with One America Appeal to help the victims of Hurricane Harvey and Hurricane Irma in the Gulf Coast and Texas communities.[460] From October 31 to November 1, Obama hosted the inaugural summit of the Obama Foundation,[461] which he intended to be the central focus of his post-presidency and part of his ambitions for his subsequent activities following his presidency to be more consequential than his time in office.[462]

Barack and Michelle Obama signed a deal on May 22, 2018, to produce docu-series, documentaries and features for Netflix under the Obamas' newly formed production company, Higher Ground Productions.[463][464] Higher Ground's first film, American Factory, won the Academy Award for Best Documentary Feature in 2020.[465] On October 24, a pipe bomb addressed to Obama was intercepted by the Secret Service. It was one of several pipe-bombs that had been mailed out to Democratic lawmakers and officials.[466] In 2019, Barack and Michelle Obama bought a home on Martha's Vineyard from Wyc Grousbeck.[467] On October 29, Obama criticized "wokeness" and call-out culture at the Obama Foundation's annual summit.[468][469]

Obama was reluctant to make an endorsement in the 2020 Democratic presidential primaries because he wanted to position himself to unify the party, regardless of the nominee.[470] On April 14, 2020, Obama endorsed Biden, the presumptive nominee, for president in the presidential election, stating that he has "all the qualities we need in a president right now."[471][472] In May, Obama criticized President Trump for his handling of the COVID-19 pandemic, calling his response to the crisis "an absolute chaotic disaster", and stating that the consequences of the Trump presidency have been "our worst impulses unleashed, our proud reputation around the world badly diminished, and our democratic institutions threatened like never before."[473] On November 17, Obama's presidential memoir, A Promised Land, was released.[474][475][476]

In February 2021, Obama and musician Bruce Springsteen started a podcast called Renegades: Born in the USA where the two talk about "their backgrounds, music and their 'enduring love of America.'"[477][478] Later that year, Regina Hicks had signed a deal with Netflix, in a venture with his and Michelle's Higher Ground to develop comedy projects.[479]

Photo of Obama standing behind a lectern, giving a speech at the White House, with Biden and Harris smiling in the background
Obama with president Joe Biden and vice president Kamala Harris in the White House, April 5, 2022

On March 4, 2022, Obama won an Audio Publishers Association (APA) Award in the best narration by the author category for the narration of his memoir A Promised Land.[480] On April 5, Obama visited the White House for the first time since leaving office, in an event celebrating the 12th annual anniversary of the signing of the Affordable Care Act.[481][482][483] In June, it was announced that the Obamas and their podcast production company, Higher Ground, signed a multi-year deal with Audible.[484][485] In September, Obama visited the White House to unveil his and Michelle's official White House portraits.[486] Around the same time, he won a Primetime Emmy Award for Outstanding Narrator[487] for his narration in the Netflix documentary series Our Great National Parks.[488]

In 2022, Obama opposed expanding the Supreme Court beyond the present nine Justices.[489]

In March 2023, Obama traveled to Australia as a part of his speaking tour of the country. During the trip, Obama met with Australian Prime Minister Anthony Albanese and visited Melbourne for the first time.[490] Obama was reportedly paid more than $1 million for two speeches.[491][492]

In October 2023, during the Israel–Hamas war, Obama declared that Israel must dismantle Hamas in the wake of the October 7 massacre.[493] Weeks later, Obama warned Israel that its actions could "harden Palestinian attitudes for generations" and weaken international support for Israel; any military strategy that ignored the war's human costs "could ultimately backfire."[494]

Legacy and recognition

Polls of historians and political scientists rank Obama among the upper tier of American presidents.[495] He has been described as one of the most effective campaigners in American history (his 2008 campaign being particularly highlighted) as well as one of the most talented political orators of the 21st century.[496][497][498] Historian Julian Zelizer credits Obama with "a keen sense of how the institutions of government work and the ways that his team could design policy proposals." Zeitzer notes Obama's policy successes included the economic stimulus package which ended the Great Recession and the Dodd-Frank financial and consumer protection reforms, as well as the Affordable Care Act. Zeitzer also notes the Democratic Party lost power and numbers of elected officials during Obama's term, saying that the consensus among historians is that Obama "turned out to be a very effective policymaker but not a tremendously successful party builder." Zeitzer calls this the "defining paradox of Obama's presidency".[499]

The Brookings Institution noted that Obama passed "only one major legislative achievement (Obamacare)—and a fragile one at that—the legacy of Obama's presidency mainly rests on its tremendous symbolic importance and the fate of a patchwork of executive actions."[500] David W. Wise noted that Obama fell short "in areas many Progressives hold dear", including the continuation of drone strikes, not going after big banks during the Great Recession, and failing to strengthen his coalition before pushing for Obamacare. Wise called Obama's legacy that of "a disappointingly conventional president".[501]

Obama's most significant accomplishment is generally considered to be the Affordable Care Act (ACA), provisions of which went into effect from 2010 to 2020. Many attempts by Senate Republicans to repeal the ACA, including a "skinny repeal", have thus far failed.[502] However, in 2017, the penalty for violating the individual mandate was repealed effective 2019.[503] Together with the Health Care and Education Reconciliation Act amendment, it represents the U.S. healthcare system's most significant regulatory overhaul and expansion of coverage since the passage of Medicare and Medicaid in 1965.[504][505][506][507]

Many commentators credit Obama with averting a threatened depression and pulling the economy back from the Great Recession.[502] According to the U.S. Bureau of Labor Statistics, the Obama administration created 11.3 million jobs from the month after his first inauguration to the end of his second term.[508] In 2010, Obama signed into effect the Dodd–Frank Wall Street Reform and Consumer Protection Act. Passed as a response to the financial crisis of 2007–2008, it brought the most significant changes to financial regulation in the United States since the regulatory reform that followed the Great Depression under Democratic President Franklin D. Roosevelt.[509]

In 2009, Obama signed into law the National Defense Authorization Act for Fiscal Year 2010, which contained in it the Matthew Shepard and James Byrd Jr. Hate Crimes Prevention Act, the first addition to existing federal hate crime law in the United States since Democratic President Bill Clinton signed into law the Church Arson Prevention Act of 1996. The act expanded existing federal hate crime laws in the United States, and made it a federal crime to assault people based on sexual orientation, gender identity, or disability.[510]

As president, Obama advanced LGBT rights.[511] In 2010, he signed the Don't Ask, Don't Tell Repeal Act, which brought an end to "don't ask, don't tell" policy in the U.S. armed forces that banned open service from LGBT people; the law went into effect the following year.[512] In 2016, his administration brought an end to the ban on transgender people serving openly in the U.S. armed forces.[513][237] A Gallup poll, taken in the final days of Obama's term, showed that 68 percent of Americans believed the U.S. had made progress on LGBT rights during Obama's eight years in office.[514]

Obama substantially escalated the use of drone strikes against suspected militants and terrorists associated with al-Qaeda and the Taliban.[515] In 2016, the last year of his presidency, the U.S. dropped 26,171 bombs on seven different countries.[516][517] Obama left about 8,400 U.S. troops in Afghanistan, 5,262 in Iraq, 503 in Syria, 133 in Pakistan, 106 in Somalia, seven in Yemen, and two in Libya at the end of his presidency.[518]

According to Pew Research Center and United States Bureau of Justice Statistics, from December 31, 2009, to December 31, 2015, inmates sentenced in U.S. federal custody declined by five percent. This is the largest decline in sentenced inmates in U.S. federal custody since Democratic President Jimmy Carter. By contrast, the federal prison population increased significantly under presidents Ronald Reagan, George H. W. Bush, Bill Clinton, and George W. Bush.[519]

Human Rights Watch (HRW) called Obama's human rights record "mixed", adding that "he has often treated human rights as a secondary interest—nice to support when the cost was not too high, but nothing like a top priority he championed."[220]

Obama left office in January 2017 with a 60 percent approval rating.[520][521] He gained 10 spots from the same survey in 2015 from the Brookings Institution that ranked him the 18th-greatest American president.[522] In Gallup's 2018 job approval poll for the past 10 U.S. presidents, he received a 63 percent approval rating.[523]

Presidential library

The Barack Obama Presidential Center is Obama's planned presidential library. It will be hosted by the University of Chicago and located in Jackson Park on the South Side of Chicago.[524]

Awards and honors

Obama received the Norwegian Nobel Committee's Nobel Peace Prize in 2009, The Shoah Foundation Institute for Visual History and Education's Ambassador of Humanity Award in 2014, the John F. Kennedy Profile in Courage Award in 2017, and the Robert F. Kennedy Center for Justice and Human Rights Ripple of Hope Award in 2018. He was named TIME Magazine's Time Person of the Year in 2008 and 2012. He also received two Grammy Awards for Best Spoken Word Album for Dreams from My Father (2006), and The Audacity of Hope (2008) as well as two Primetime Emmy Awards for Outstanding Narrator for Our Great National Parks (2022), and Working: What We Do All Day (2023). He also won two Children's and Family Emmy Awards.

Eponymy

Bibliography

Books

  • Obama, Barack (July 18, 1995). Dreams from My Father (1st ed.). New York: Times Books. ISBN 978-0-8129-2343-8.
  • ——————— (October 17, 2006). The Audacity of Hope (1st ed.). New York: Crown Publishing Group. ISBN 978-0-307-23769-9.
  • ——————— (November 16, 2010). Of Thee I Sing (1st ed.). New York: Alfred A. Knopf. ISBN 978-0-375-83527-8.
  • ——————— (November 17, 2020). A Promised Land (1st ed.). New York: Crown Publishing Group. ISBN 978-1-5247-6316-9.[525]

Audiobooks

Articles

See also

Politics

Other

Lists

References

  1. ^ "President Barack Obama". The White House. 2008. Archived from the original on October 26, 2009. Retrieved December 12, 2008.
  2. ^ "President Obama's Long Form Birth Certificate". whitehouse.gov. April 27, 2011. Archived from the original on July 31, 2023. Retrieved August 4, 2023.
  3. ^ "Certificate of Live Birth: Barack Hussein Obama II, August 4, 1961, 7:24 pm, Honolulu" (PDF). whitehouse.gov. April 27, 2011. Archived from the original (PDF) on March 3, 2017. Retrieved March 11, 2017 – via National Archives.
  4. ^ Maraniss, David (August 24, 2008). "Though Obama had to leave to find himself, it is Hawaii that made his rise possible". The Washington Post. p. A22. Archived from the original on March 28, 2019. Retrieved October 28, 2008.
  5. ^ Nakaso, Dan (December 22, 2008). "Twin sisters, Obama on parallel paths for years". The Honolulu Advertiser. p. B1. Archived from the original on January 29, 2011. Retrieved January 22, 2011.
  6. ^ Barreto, Amílcar Antonio; O'Bryant, Richard L. (November 12, 2013). "Introduction". American Identity in the Age of Obama. Taylor & Francis. pp. 18–19. ISBN 978-1-317-93715-9. Retrieved May 8, 2017.
  7. ^ "On This Day: US President Barack Obama arrives in Ireland for a visit". IrishCentral.com. May 23, 2022. Archived from the original on May 16, 2022. Retrieved August 2, 2022.
  8. ^ "Ancestry.com Discovers Ph Suggests" Archived April 2, 2015, at the Wayback Machine, The New York Times. July 30, 2012.
  9. ^ Hennessey, Kathleen. "Obama related to legendary Virginia slave, genealogists say" Archived March 5, 2016, at the Wayback Machine, Los Angeles Times. July 30, 2012.
  10. ^ Maraniss (2012), p. 65 Archived March 5, 2024, at the Wayback Machine: He had been born inside the euphorbia hedges of the K'obama homestead on June 18, 1934.
  11. ^ Liberties (2012), p. 202 Archived March 5, 2024, at the Wayback Machine: The age of his father is questionable since June 18, 1934, is on most of the documents Obama Sr. filled out for his United States student visa; however, Obama II's book Dreams of My Father states his father's birth date was June 18, 1936. Immigration and Naturalization Service records indicate the birth date to be June 18, 1934, thereby making Obama Sr. twenty-seven at the birth of Obama II instead of the annotated twenty-five on the birth certificate.
  12. ^ a b Jacobs, Sally (July 6, 2011). "President Obama's Father: A 'Bold And Reckless Life'". NPR. Archived from the original on December 23, 2019. Retrieved January 16, 2020.
  13. ^ Swaine, Jon (April 29, 2011). "Barack Obama's father 'forced out of US in 1960s'". Telegraph. Archived from the original on January 10, 2022. Retrieved January 16, 2020.
  14. ^ Swarns, Rachel L. (June 18, 2016). "Words of Obama's Father Still Waiting to Be Read by His Son". The New York Times. Archived from the original on June 18, 2016. Retrieved January 16, 2020.
  15. ^ David R Arnott. "From Obama's old school to his ancestral village, world reacts to US presidential election". NBC News. Archived from the original on October 28, 2020. Retrieved January 16, 2020.
  16. ^ Bearak, Max (June 19, 2016). "The fascinating tribal tradition that gave Obama his last name". Washington Post. Archived from the original on November 7, 2022. Retrieved November 20, 2022.
  17. ^ Jones, Tim (March 27, 2007). "Barack Obama: Mother not just a girl from Kansas; Stanley Ann Dunham shaped a future senator". Chicago Tribune. p. 1 (Tempo). Archived from the original on February 7, 2017.
  18. ^ a b Obama (1995, 2004), pp. 9–10.
    • Scott (2011), pp. 80–86.
    • Jacobs (2011), pp. 115–118.
    • Maraniss (2012), pp. 154–160.
  19. ^ Ripley, Amanda (April 9, 2008). "The story of Barack Obama's mother". Time. Archived from the original on August 28, 2013. Retrieved April 9, 2007.
  20. ^ Scott (2011), p. 86.
    • Jacobs (2011), pp. 125–127.
    • Maraniss (2012), pp. 160–163.
  21. ^ Scott (2011), pp. 87–93.
    • Jacobs (2011), pp. 115–118, 125–127, 133–161.
    • Maraniss (2012), pp. 170–183, 188–189.
  22. ^ Obama "Dreams from My Father a Story of Race and Inheritance"
  23. ^ Scott (2011), pp. 142–144.
    • Jacobs (2011), pp. 161–177, 227–230.
    • Maraniss (2012), pp. 190–194, 201–209, 227–230.
  24. ^ Ochieng, Philip (November 1, 2004). "From home squared to the US Senate: how Barack Obama was lost and found". The EastAfrican. Nairobi. Archived from the original on September 27, 2007.
    • Merida, Kevin (December 14, 2007). "The ghost of a father". The Washington Post. p. A12. Archived from the original on August 29, 2008. Retrieved June 25, 2008.
    • Jacobs (2011), pp. 251–255.
    • Maraniss (2012), pp. 411–417.
  25. ^ Serrano, Richard A. (March 11, 2007). "Obama's peers didn't see his angst". Los Angeles Times. p. A20. Archived from the original on November 8, 2008. Retrieved March 13, 2007.
    • Obama (1995, 2004), Chapters 4 and 5.
  26. ^ Scott (2011), pp. 97–103.
    • Maraniss (2012), pp. 195–201, 225–230.
  27. ^ Maraniss (2012), pp. 195–201, 209–223, 230–244.
  28. ^ a b Suhartono, Anton (March 19, 2010). "Sekolah di SD Asisi, Obama Berstatus Agama Islam". Okezone (in Indonesian). Archived from the original on January 28, 2021. Retrieved January 21, 2021.
  29. ^ Maraniss (2012), pp. 216, 221, 230, 234–244.
  30. ^ "Barack Obama: Calvert Homeschooler?—Calvert Education Blog". calverteducation.com. January 25, 2014. Archived from the original on March 13, 2017. Retrieved November 25, 2015.
  31. ^ Zimmer, Benjamin (2009). "Obama's Indonesian Redux". Language Log. Archived from the original on March 3, 2009. Retrieved March 12, 2009.
  32. ^ Meacham, Jon (August 22, 2008). "What Barack Obama Learned from His Father". Newsweek. Archived from the original on January 7, 2017. Retrieved January 9, 2017.
  33. ^ Serafin, Peter (March 21, 2004). "Punahou grad stirs up Illinois politics". Honolulu Star-Bulletin. Archived from the original on March 28, 2019. Retrieved March 20, 2008.
    • Scott, Janny (March 14, 2008). "A free-spirited wanderer who set Obama's path". The New York Times. p. A1. Archived from the original on March 14, 2008. Retrieved November 18, 2011.
    • Obama (1995, 2004), Chapters 3 and 4.
    • Scott (2012), pp. 131–134.
    • Maraniss (2012), pp. 264–269.
  34. ^ Wolffe, Richard (March 22, 2008). "When Barry Became Barack". Newsweek. Archived from the original on April 18, 2010. Retrieved March 21, 2016.
  35. ^ Scott (2011), pp. 139–157.
    • Maraniss (2012), pp. 279–281.
  36. ^ Scott (2011), pp. 157–194.
    • Maraniss (2012), pp. 279–281, 324–326.
  37. ^ Scott (2011), pp. 214, 294, 317–346.
  38. ^ Reyes, B.J. (February 8, 2007). "Punahou left lasting impression on Obama". Honolulu Star-Bulletin. Archived from the original on March 28, 2019. Retrieved February 10, 2007. As a teenager, Obama went to parties and sometimes sought out gatherings on military bases or at the University of Hawaii that were attended mostly by blacks.
  39. ^ Elliott, Philip (November 21, 2007). "Obama gets blunt with N.H. students". The Boston Globe. Associated Press. p. 8A. Archived from the original on April 7, 2012. Retrieved May 18, 2012.
  40. ^ Karl, Jonathan (May 25, 2012). "Obama and His Pot-Smoking 'Choom Gang'". ABC News. Archived from the original on May 25, 2012. Retrieved May 25, 2012.
  41. ^ "FRONTLINE The Choice 2012". PBS. October 9, 2012. Archived from the original on October 10, 2017. Retrieved October 29, 2012.
  42. ^ a b Gordon, Larry (January 29, 2007). "Occidental recalls 'Barry' Obama". Los Angeles Times. p. B1. Archived from the original on May 24, 2010. Retrieved May 12, 2010.
  43. ^ Boss-Bicak, Shira (January 2005). "Barack Obama '83". Columbia College Today. ISSN 0572-7820. Archived from the original on September 5, 2008. Retrieved October 1, 2006.
  44. ^ "Remarks by the President in Town Hall". whitehouse.gov. June 26, 2014. Archived from the original on February 16, 2017. Retrieved October 15, 2016 – via National Archives.
  45. ^ "The Approval Matrix". New York. August 27, 2012. Archived from the original on May 19, 2020. Retrieved February 18, 2020.
  46. ^ Horsley, Scott (July 9, 2008). "Obama's Early Brush With Financial Markets". NPR. Archived from the original on August 3, 2017. Retrieved July 17, 2017.
  47. ^ Obama, Barack (1998). "Curriculum vitae". The University of Chicago Law School. Archived from the original on May 9, 2001. Retrieved October 1, 2006.
  48. ^ Scott, Janny (July 30, 2007). "Obama's account of New York often differs from what others say". The New York Times. p. B1. Archived from the original on October 31, 2007. Retrieved July 31, 2007.
    • Obama (1995, 2004), pp. 133–140.
    • Mendell (2007), pp. 62–63.
  49. ^ a b c d Chassie, Karen, ed. (2007). Who's Who in America, 2008. New Providence, NJ: Marquis Who's Who. p. 3468. ISBN 978-0-8379-7011-0.
  50. ^ Fink, Jason (November 9, 2008). "Obama stood out, even during brief 1985 NYPIRG job". Newsday. Archived from the original on May 6, 2011. Retrieved March 13, 2014.
  51. ^ Lizza, Ryan (March 19, 2007). "The agitator: Barack Obama's unlikely political education". The New Republic. Vol. 236, no. 12. pp. 22–26, 28–29. ISSN 0028-6583. Archived from the original on November 12, 2010. Retrieved August 21, 2007.
    • Secter, Bob; McCormick, John (March 30, 2007). "Portrait of a pragmatist". Chicago Tribune. p. 1. Archived from the original on December 14, 2009. Retrieved May 18, 2012.
    • Obama (1995, 2004), pp. 140–295.
    • Mendell (2007), pp. 63–83.
  52. ^ a b c Matchan, Linda (February 15, 1990). "A Law Review breakthrough". The Boston Globe. p. 29. Archived from the original on January 22, 2009. Retrieved June 15, 2008.
  53. ^ Obama, Barack (August–September 1988). "Why organize? Problems and promise in the inner city". Illinois Issues. Vol. 14, no. 8–9. pp. 40–42. ISSN 0738-9663. reprinted in:
    Knoepfle, Peg, ed. (1990). After Alinsky: community organizing in Illinois. Springfield, IL: Sangamon State University. pp. 35–40. ISBN 978-0-9620873-3-2. He has also been a consultant and instructor for the Gamaliel Foundation, an organizing institute working throughout the Midwest.
  54. ^ Obama, Auma (2012). And then life happens: a memoir. New York: St. Martin's Press. pp. 189–208, 212–216. ISBN 978-1-250-01005-6.
  55. ^ Obama (1995, 2004), pp. 299–437.
    • Maraniss (2012), pp. 564–570.
  56. ^ "Ten O'Clock News; Derrick Bell threatens to leave Harvard". WGBH, American Archive of Public Broadcasting. Boston and Washington, D.C.: WGBH and the Library of Congress. April 24, 1990. Archived from the original on November 8, 2016. Retrieved September 23, 2016.
  57. ^ Joey Del Ponte; Somerville Scout Staff. "Something in the Water". Somerville Scout. No. January/February 2014. p. 26. Archived from the original on January 1, 2020. Retrieved January 1, 2020. Barack Obama lived in the big, ivy-covered brick building at 365 Broadway ... From 1988 to 1991, the future president resided in a basement apartment while attending Harvard Law School.
  58. ^ a b Levenson, Michael; Saltzman, Jonathan (January 28, 2007). "At Harvard Law, a unifying voice". Boston Globe. p. 1A. Archived from the original on August 3, 2016. Retrieved June 15, 2008.
  59. ^ a b Butterfield, Fox (February 6, 1990). "First black elected to head Harvard's Law Review". The New York Times. p. A20. Archived from the original on April 10, 2008. Retrieved June 15, 2008.
  60. ^ "Obama Made A Strong First Impression At Harvard". NPR. Archived from the original on December 20, 2022. Retrieved December 20, 2022.
  61. ^ Aguilar, Louis (July 11, 1990). "Survey: Law firms slow to add minority partners". Chicago Tribune. p. 1 (Business). Archived from the original on September 29, 2008. Retrieved June 15, 2008.
  62. ^ a b c Scott, Janny (May 18, 2008). "The story of Obama, written by Obama". The New York Times. p. A1. Archived from the original on April 1, 2009. Retrieved June 15, 2008.
    • Obama (1995, 2004), pp. xiii–xvii.
  63. ^ "Obama joins list of seven presidents with Harvard degrees". news.harvard.edu. November 6, 2008. Retrieved October 23, 2017. Adams, Richard (May 9, 2007). "Barack Obama". The Guardian. London. Archived from the original on October 13, 2008. Retrieved October 26, 2008.
  64. ^ Merriner, James L. (June 2008). "The friends of O". Chicago. Vol. 57, no. 6. pp. 74–79, 97–99. ISSN 0362-4595. Retrieved January 30, 2010.
  65. ^ "Statement regarding Barack Obama". University of Chicago Law School. March 27, 2008. Archived from the original on June 8, 2008. Retrieved June 5, 2008.
  66. ^ White, Jesse, ed. (2000). Illinois Blue Book, 2000, Millennium ed (PDF). Springfield, IL: Illinois Secretary of State. p. 83. OCLC 43923973. Archived from the original on April 16, 2004. Retrieved June 6, 2008.
    • Jarrett, Vernon (August 11, 1992). "'Project Vote' brings power to the people" (paid archive). Chicago Sun-Times. p. 23. Retrieved June 6, 2008.
    • Reynolds, Gretchen (January 1993). "Vote of confidence". Chicago Magazine. Vol. 42, no. 1. pp. 53–54. ISSN 0362-4595. Archived from the original on May 14, 2008. Retrieved June 6, 2008.
    • Anderson, Veronica (October 3, 1993). "40 under Forty: Barack Obama, Director, Illinois Project Vote". Crain's Chicago Business. Vol. 16, no. 39. p. 43. ISSN 0149-6956.
  67. ^ "Keeping Hope Alive: Barack Obama Puts Family First". The Oprah Winfrey Show. October 18, 2006. Archived from the original on April 17, 2009. Retrieved June 24, 2008.
  68. ^ Fornek, Scott (September 9, 2007). "Half Siblings: 'A Complicated Family'". Chicago Sun-Times. Archived from the original on January 18, 2010. Retrieved June 24, 2008. See also: "Interactive Family Tree". Chicago Sun-Times. September 9, 2007. Archived from the original on July 3, 2008. Retrieved June 24, 2008.
  69. ^ Fornek, Scott (September 9, 2007). "Madelyn Payne Dunham: 'A Trailblazer'". Chicago Sun-Times. Archived from the original on March 4, 2009. Retrieved June 24, 2008.
  70. ^ "Obama's grandmother dies after battle with cancer". CNN. November 3, 2008. Archived from the original on November 3, 2008. Retrieved November 4, 2008.
  71. ^ Smolenyak, Megan (May 9, 2011). "Tracing Barack Obama's Roots to Moneygall". The Huffington Post. Archived from the original on September 15, 2018. Retrieved February 18, 2020.
  72. ^ Obama (1995, 2004), p. 13. For reports on Obama's maternal genealogy, including slave owners, Irish connections, and common ancestors with George W. Bush, Dick Cheney, and Harry S. Truman, see: Nitkin, David; Merritt, Harry (March 2, 2007). "A New Twist to an Intriguing Family History". The Baltimore Sun. Archived from the original on September 30, 2007. Retrieved June 24, 2008.
  73. ^ Jordan, Mary (May 13, 2007). "Tiny Irish Village Is Latest Place to Claim Obama as Its Own". The Washington Post. Archived from the original on April 5, 2019. Retrieved June 24, 2008.
  74. ^ "Obama's Family Tree Has a Few Surprises". CBS 2 (Chicago). Associated Press. September 8, 2007. Archived from the original on June 2, 2008. Retrieved June 24, 2008.
  75. ^ a b Hosie, Rachel (May 3, 2017). "Before Michelle: The story of Barack Obama's proposal to Sheila Miyoshi Jager". The Independent. Archived from the original on May 9, 2017. Retrieved May 11, 2017.
  76. ^ a b Tobias, Andrew J. (May 3, 2017). "Oberlin College professor received unsuccessful marriage proposal from Barack Obama in 1980s, new biography reveals". The Plain Dealer. Archived from the original on May 3, 2017. Retrieved May 11, 2017.
  77. ^ Obama (2006), pp. 327–332. See also: Brown, Sarah (December 7, 2005). "Obama '85 masters balancing act". The Daily Princetonian. Archived from the original on February 20, 2009. Retrieved February 9, 2009.
  78. ^ Obama (2006), p. 329.
  79. ^ Fornek, Scott (October 3, 2007). "Michelle Obama: 'He Swept Me Off My Feet'". Chicago Sun-Times. Archived from the original on December 8, 2009. Retrieved April 28, 2008.
  80. ^ Riley-Smith, Ben (November 9, 2018). "Michelle Obama had miscarriage, used IVF to conceive girls". The Telegraph. Archived from the original on January 10, 2022. Retrieved November 15, 2018.
  81. ^ Martin, Jonathan (July 4, 2008). "Born on the 4th of July". Politico. Archived from the original on July 10, 2008. Retrieved July 10, 2008.
  82. ^ Obama (1995, 2004), p. 440, and Obama (2006), pp. 339–340. See also: "Election 2008 Information Center: Barack Obama". Gannett News Service. Archived from the original on February 21, 2009. Retrieved April 28, 2008.
  83. ^ "Obamas choose private Sidwell Friends School". International Herald Tribune. November 22, 2008. Archived from the original on January 29, 2009. Retrieved July 2, 2015.
  84. ^ Cooper, Helene (April 13, 2009). "One Obama Search Ends With a Puppy Named Bo". The New York Times. Archived from the original on April 16, 2009. Retrieved December 22, 2010.
  85. ^ Feldmann, Linda (August 20, 2013). "New little girl arrives at White House. Meet Sunny Obama. (+video)". Christian Science Monitor. Archived from the original on December 19, 2013. Retrieved August 20, 2013.
  86. ^ Wang, Amy (May 8, 2021). "Obamas announce death of dog Bo, 'a true friend and loyal companion'". The Washington Post. Archived from the original on May 9, 2021. Retrieved May 8, 2021.
  87. ^ Silva, Mark (August 25, 2008). "Barack Obama: White Sox 'serious' ball". Chicago Tribune. Archived from the original on August 29, 2008.
  88. ^ "Obama throws ceremonial first pitch at All-Star game". CNN Politics. Archived from the original on December 22, 2022. Retrieved December 20, 2022.
  89. ^ Branigin, William (January 30, 2009). "Steelers Win Obama's Approval". The Washington Post. Archived from the original on August 5, 2017. Retrieved August 21, 2017. But other than the Bears, the Steelers are probably the team that's closest to my heart.
  90. ^ Mayer, Larry (October 7, 2011). "1985 Bears honored by President Obama". Chicago Bears. Archived from the original on May 7, 2013. Retrieved November 4, 2012.
  91. ^ Kantor, Jodi (June 1, 2007). "One Place Where Obama Goes Elbow to Elbow". The New York Times. Archived from the original on April 1, 2009. Retrieved April 28, 2008. See also: "The Love of the Game" (video). Real Sports with Bryant Gumbel. HBO. April 15, 2008. Archived from the original on October 16, 2011. Retrieved October 12, 2011.
  92. ^ Stolberg, Sheryl Gay; Kirkpatrick, David D.; Shane, Scott (January 22, 2009). "On First Day, Obama Quickly Sets a New Tone". The New York Times. p. 1. Archived from the original on January 23, 2009. Retrieved September 7, 2012.
  93. ^ Zeleny, Jeff (December 24, 2005). "The first time around: Sen. Obama's freshman year". Chicago Tribune. Archived from the original on May 13, 2011. Retrieved April 28, 2008.
  94. ^ Slevin, Peter (December 17, 2006). "Obama says he regrets land deal with fundraiser". The Washington Post. Retrieved June 10, 2008.
  95. ^ Harris, Marlys (December 7, 2007). "Obama's Money". CNNMoney. Archived from the original on April 24, 2008. Retrieved April 28, 2008.
    See also:Goldfarb, Zachary A (March 24, 2007). "Measuring Wealth of the '08 Candidates". The Washington Post. Archived from the original on December 12, 2018. Retrieved April 28, 2008.
  96. ^ Zeleny, Jeff (April 17, 2008). "Book Sales Lifted Obamas' Income in 2007 to a Total of $4.2 Million". The New York Times. Archived from the original on April 16, 2009. Retrieved April 28, 2008.
  97. ^ Shear, Michael D.; Hilzenrath, David S. (April 16, 2010). "Obamas report $5.5 million in income on 2009 tax return". The Washington Post. Archived from the original on January 26, 2011. Retrieved December 22, 2010.
  98. ^ Solman, Paul (April 18, 2011). "How Much Did President Obama Make in 2010?". PBS NewsHour. Archived from the original on May 2, 2011. Retrieved January 27, 2012.
  99. ^ Solman, Paul (April 27, 2011). "The Obamas Gave $131,000 to Fisher House Foundation in 2010; What Is It?". PBS NewsHour. Archived from the original on January 29, 2014. Retrieved January 27, 2012.
  100. ^ Wolf, Richard (May 16, 2012). "Obama worth as much as $10 million". USA Today. Archived from the original on May 16, 2012. Retrieved June 16, 2012.
  101. ^ "American President: Barack Obama". Miller Center of Public Affairs, University of Virginia. 2009. Archived from the original on January 23, 2009. Retrieved January 23, 2009. Religion: Christian
  102. ^ Obama (2006), pp. 202–208. Portions excerpted in: Obama, Barack (October 16, 2006). "My Spiritual Journey". Time. Archived from the original on April 30, 2008. Retrieved April 28, 2008.
  103. ^ Pulliam, Sarah; Olsen, Ted (January 23, 2008). "Q&A: Barack Obama". Christianity Today. Archived from the original on April 28, 2019. Retrieved January 4, 2013.
  104. ^ Babington, Charles; Superville, Darlene (September 28, 2010). "Obama 'Christian By Choice': President Responds To Questioner". The Huffington Post. Associated Press. Archived from the original on May 11, 2011.
  105. ^ "President Obama: 'I am a Christian By Choice ... The Precepts of Jesus Spoke to Me'". ABC News. September 29, 2010. Archived from the original on July 13, 2012. Retrieved December 27, 2016.
  106. ^ Garrett, Major; Obama, Barack (March 14, 2008). "Obama talks to Major Garrett on 'Hannity & Colmes'". RealClearPolitics. Retrieved November 10, 2012. Major Garrett, Fox News correspondent: So the first question, how long have you been a member in good standing of that church? Sen. Barack Obama (D-IL), presidential candidate: You know, I've been a member since 1991 or '92. And—but I have known Trinity even before then when I was a community organizer on the South Side, helping steel workers find jobs ... Garrett: As a member in good standing, were you a regular attendee of Sunday services? Obama: You know, I won't say that I was a perfect attendee. I was regular in spurts, because there was times when, for example, our child had just been born, our first child. And so we didn't go as regularly then.
    • "Obama strongly denounces former pastor". NBC News. Associated Press. April 29, 2008. Retrieved November 10, 2012. I have been a member of Trinity United Church of Christ since 1992, and have known Reverend Wright for 20 years. The person I saw yesterday was not the person [whom] I met 20 years ago.
    • Miller, Lisa (July 11, 2008). "Finding his faith". Newsweek. Archived from the original on July 20, 2013. Retrieved November 10, 2012. He is now a Christian, having been baptized in the early 1990s at Trinity United Church of Christ in Chicago.
    • Remnick, David (2010). The Bridge: The Life and Rise of Barack Obama. New York: Alfred A. Knopf. p. 177. ISBN 978-1-4000-4360-6. In late October 1987, his third year as an organizer, Obama went with Kellman to a conference on the black church and social justice at the Harvard Divinity School.
    • Maraniss (2012), p. 557: It would take time for Obama to join and become fully engaged in Wright's church, a place where he would be baptized and married; that would not happen until later, during his second time around in Chicago, but the process started then, in October 1987 ... Jerry Kellman: "He wasn't a member of the church during those first three years, but he was drawn to Jeremiah."
    • Peter, Baker (2017). Obama: The Call of History. New York: The New York Times Company/Callaway. ISBN 978-0-935112-90-0. OCLC 1002264033.
  107. ^ "Obama's church choice likely to be scrutinized". NBC News. Associated Press. November 17, 2008. Archived from the original on March 21, 2013. Retrieved January 20, 2009.
  108. ^ Parker, Ashley (December 28, 2013). "As the Obamas Celebrate Christmas, Rituals of Faith Become Less Visible". The New York Times. Archived from the original on December 30, 2013. Retrieved January 15, 2017.
  109. ^ Gilgoff, Dan (June 30, 2009). "TIME Report, White House Reaction Raise More Questions About Obama's Church Hunt". U.S. News & World Report. Archived from the original on June 25, 2017. Retrieved January 15, 2017.
  110. ^ "First Lady: We Use Sundays For Naps If We're Not Going To Church". CBS DC. Associated Press. April 22, 2014. Archived from the original on January 16, 2017. Retrieved January 15, 2017.
  111. ^ "Revealed: Obama always carries Hanuman statuette in pocket". The Hindu. January 16, 2016. Archived from the original on April 14, 2021. Retrieved April 8, 2021.
  112. ^ "Obama Reveals Personal Faith-Related Items, Including Rosary Beads, Buddha Statuette". NBC News. January 15, 2016. Archived from the original on December 20, 2022. Retrieved December 20, 2022.
  113. ^ Gore, D'Angelo (June 14, 2012). "The Obamas' Law Licenses". FactCheck.org. Archived from the original on July 18, 2012. Retrieved July 16, 2012.
  114. ^ Robinson, Mike (February 20, 2007). "Obama got start in civil rights practice". The Boston Globe. Associated Press. Retrieved June 15, 2008.
  115. ^ Jackson, David; Long, Ray (April 3, 2007). "Obama Knows His Way Around a Ballot". Chicago Tribune. Archived from the original on October 11, 2008. Retrieved May 18, 2012.
  116. ^ Slevin, Peter (February 9, 2007). "Obama Forged Political Mettle in Illinois Capitol". The Washington Post. Archived from the original on May 16, 2008. Retrieved April 20, 2008.
  117. ^ Helman, Scott (September 23, 2007). "In Illinois, Obama dealt with Lobbyists". The Boston Globe. Archived from the original on April 16, 2008. Retrieved April 20, 2008. See also:"Obama Record May Be Gold Mine for Critics". CBS News. Associated Press. January 17, 2007. Archived from the original on April 12, 2008. Retrieved April 20, 2008.
  118. ^ a b Scott, Janny (July 30, 2007). "In Illinois, Obama Proved Pragmatic and Shrewd". The New York Times. Archived from the original on December 10, 2008. Retrieved April 20, 2008.
  119. ^ Allison, Melissa (December 15, 2000). "State takes on predatory lending; Rules would halt single-premium life insurance financing" (paid archive). Chicago Tribune. p. 1 (Business). Archived from the original on June 17, 2008. Retrieved June 1, 2008.
  120. ^ Long, Ray; Allison, Melissa (April 18, 2001). "Illinois OKs predatory loan curbs; State aims to avert home foreclosures". Chicago Tribune. p. 1. Archived from the original (paid archive) on December 18, 2008. Retrieved June 1, 2008.
  121. ^ "13th District: Barack Obama". Illinois State Senate Democrats. August 24, 2000. Archived from the original on August 24, 2000. Retrieved April 20, 2008.
  122. ^ "13th District: Barack Obama". Illinois State Senate Democrats. October 9, 2004. Archived from the original on August 2, 2004. Retrieved April 20, 2008.
  123. ^ "Federal Elections 2000: U.S. House Results—Illinois". Federal Election Commission. Archived from the original on March 28, 2008. Retrieved April 24, 2008.
  124. ^ Calmes, Jackie (February 23, 2007). "Statehouse Yields Clues to Obama". The Wall Street Journal. Archived from the original on September 18, 2008. Retrieved April 20, 2008.
  125. ^ Tavella, Anne Marie (April 14, 2003). "Profiling, taping plans pass Senate" (paid archive). Daily Herald. p. 17. Archived from the original on January 1, 2020. Retrieved June 1, 2008.
  126. ^ Haynes, V. Dion (June 29, 2003). "Fight racial profiling at local level, lawmaker says; U.S. guidelines get mixed review" (paid archive). Chicago Tribune. p. 8. Archived from the original on June 17, 2008. Retrieved June 1, 2008.
  127. ^ Pearson, Rick (July 17, 2003). "Taped confessions to be law; State will be 1st to pass legislation". Chicago Tribune. p. 1 (Metro). Archived from the original (paid archive) on December 18, 2008. Retrieved June 1, 2008.
  128. ^ Youngman, Sam; Blake, Aaron (March 14, 2007). "Obama's Crime Votes Are Fodder for Rivals". The Hill. Archived from the original on November 14, 2012. Retrieved May 18, 2012. See also: "US Presidential Candidate Obama Cites Work on State Death Penalty Reforms". International Herald Tribune. Associated Press. November 12, 2007. Archived from the original on June 7, 2008. Retrieved May 18, 2012.
  129. ^ Coffee, Melanie (November 6, 2004). "Attorney Chosen to Fill Obama's State Senate Seat". HPKCC. Associated Press. Archived from the original on May 16, 2008. Retrieved April 20, 2008.
  130. ^ Helman, Scott (October 12, 2007). "Early defeat launched a rapid political climb". The Boston Globe. p. 1A. Archived from the original on October 12, 2007. Retrieved April 13, 2008.
  131. ^ Strausberg, Chinta (September 26, 2002). "Opposition to war mounts". Chicago Defender. p. 1. Archived from the original (paid archive) on May 11, 2011. Retrieved February 3, 2008.
  132. ^ Office of the Press Secretary (October 2, 2002). "President, House leadership agree on Iraq resolution". whitehouse.gov. Retrieved February 18, 2008 – via National Archives.
  133. ^ Glauber, Bill (October 3, 2003). "War protesters gentler, but passion still burns". Chicago Tribune. p. 1. Archived from the original on June 17, 2008. Retrieved February 3, 2008.(subscription required)
    • Strausberg, Chinta (October 3, 2002). "War with Iraq undermines U.N". Chicago Defender. p. 1. Archived from the original on October 14, 2009. Retrieved October 28, 2008. Photo caption: Left Photo: Sen. Barack Obama along with Rev. Jesse Jackson spoke to nearly 3,000 anti-war protestors (below) during a rally at Federal Plaza Wednesday.
    • Katz, Marilyn (October 2, 2007). "Five years since our first action". Chicagoans Against War & Injustice. Archived from the original on July 21, 2011. Retrieved February 18, 2008.
    • Bryant, Greg; Vaughn, Jane B. (October 3, 2002). "300 attend rally against Iraq war". Daily Herald. p. 8. Retrieved October 28, 2008.(subscription required)
    • Mendell (2007), pp. 172–177.
  134. ^ Obama, Barack (October 2, 2002). "Remarks of Illinois State Sen. Barack Obama against going to war with Iraq". Barack Obama. Archived from the original on January 30, 2008. Retrieved February 3, 2008.
  135. ^ Ritter, Jim (March 17, 2003). "Anti-war rally here draws thousands". Chicago Sun-Times. p. 3. Retrieved February 3, 2008. (subscription required)
  136. ^ Davey, Monica (March 7, 2004). "Closely watched Illinois Senate race attracts 7 candidates in millionaire range". The New York Times. p. 19. Archived from the original on April 16, 2009. Retrieved April 13, 2008.
  137. ^ Mendell, David (March 17, 2004). "Obama routs Democratic foes; Ryan tops crowded GOP field; Hynes, Hull fall far short across state". Chicago Tribune. p. 1. Retrieved March 1, 2009.
  138. ^ Bernstein, David (June 2007). "The Speech". Chicago Magazine. Archived from the original on June 14, 2008. Retrieved April 13, 2008.
  139. ^ "Star Power. Showtime: Some are on the rise; others have long been fixtures in the firmament. A galaxy of bright Democratic lights". Newsweek. August 2, 2004. pp. 48–51. Archived from the original on December 18, 2008. Retrieved November 15, 2008.
  140. ^ "Ryan drops out of Senate race in Illinois". CNN. June 25, 2004. Archived from the original on January 8, 2018. Retrieved May 18, 2012.
    • Mendell (2007), pp. 260–271.
  141. ^ Lannan, Maura Kelly (August 9, 2004). "Alan Keyes enters U.S. Senate race in Illinois against rising Democratic star". The San Diego Union-Tribune. Associated Press. Archived from the original on December 14, 2011. Retrieved April 13, 2008.
  142. ^ "America Votes 2004: U.S. Senate / Illinois". CNN. 2005. Archived from the original on April 16, 2008. Retrieved April 13, 2008.
  143. ^ United States Congress. "Barack Obama (id: o000167)". Biographical Directory of the United States Congress. Retrieved October 12, 2011.
  144. ^ "Member Info". Congressional Black Caucus. Archived from the original on July 9, 2008. Retrieved June 25, 2008.
  145. ^ "Lugar–Obama Nonproliferation Legislation Signed into Law by the President". Richard Lugar U.S. Senate Office. January 11, 2007. Archived from the original on December 18, 2008. Retrieved April 27, 2008. See also: Lugar, Richard G.; Obama, Barack (December 3, 2005). "Junkyard Dogs of War". The Washington Post. Archived from the original on October 14, 2008. Retrieved April 27, 2008.
  146. ^ McCormack, John (December 21, 2007). "Google Government Gone Viral". Weekly Standard. Archived from the original on April 23, 2008. Retrieved April 27, 2008. See also: "President Bush Signs Coburn–Obama Transparency Act". Tom Coburn U.S. Senate Office. September 26, 2006. Archived from the original on May 1, 2008. Retrieved April 27, 2008.
  147. ^ "S. 3077: Strengthening Transparency and Accountability in Federal Spending Act of 2008: 2007–2008 (110th Congress)". Govtrack.us. June 3, 2008. Archived from the original on May 3, 2012. Retrieved May 18, 2012.
  148. ^ "S. 1033, Secure America and Orderly Immigration Act". Library of Congress. May 12, 2005. Archived from the original on February 26, 2017. Retrieved February 25, 2017.
  149. ^ "Democratic Republic of the Congo". United States Conference of Catholic Bishops. April 2006. Archived from the original on January 8, 2011. Retrieved January 26, 2012.
  150. ^ "The IRC Welcomes New U.S. Law on Congo". International Rescue Committee. January 5, 2007. Archived from the original on August 7, 2011. Retrieved April 27, 2008.
  151. ^ Weixel, Nathaniel (November 15, 2007). "Feingold, Obama Go After Corporate Jet Travel". The Hill. Archived from the original on May 15, 2008. Retrieved April 27, 2008.
  152. ^ Weixel, Nathaniel (December 5, 2007). "Lawmakers Press FEC on Bundling Regulation". The Hill. Archived from the original on April 16, 2008. Retrieved April 27, 2008. See also: "Federal Election Commission Announces Plans to Issue New Regulations to Implement the Honest Leadership and Open Government Act of 2007". Federal Election Commission. September 24, 2007. Archived from the original on April 11, 2008. Retrieved April 27, 2008.
  153. ^ "Obama, Bond Hail New Safeguards on Military Personality Disorder Discharges, Urge Further Action". Kit Bond U.S. Senate Office. October 1, 2007. Archived from the original on December 5, 2010. Retrieved April 27, 2008.
  154. ^ "Obama, Bond Applaud Senate Passage of Amendment to Expedite the Review of Personality Disorder Discharge Cases". March 14, 2008. Archived from the original on December 18, 2008.
  155. ^ "Iran Sanctions Enabling Act of 2009 (2009—S. 1065)". GovTrack.us. Archived from the original on August 28, 2018. Retrieved August 27, 2018.
  156. ^ "Obama, Schiff Provision to Create Nuclear Threat Reduction Plan Approved" (Press release). Barack Obama U.S. Senate Office. December 20, 2007. Archived from the original on December 18, 2008.
  157. ^ "Senate Passes Obama, McCaskill Legislation to Provide Safety Net for Families of Wounded Service Members". Barack Obama U.S. Senate Office. August 2, 2007. Archived from the original on December 18, 2008. Retrieved April 27, 2008.
  158. ^ "Committee Assignments". Barack Obama U.S. Senate Office. December 9, 2006. Archived from the original on December 9, 2006. Retrieved April 27, 2008.
  159. ^ "Obama Gets New Committee Assignments". Barack Obama U.S. Senate Office. Associated Press. November 15, 2006. Archived from the original on December 18, 2008. Retrieved April 27, 2008.
  160. ^ Baldwin, Tom (December 21, 2007). "'Stay at home' Barack Obama comes under fire for a lack of foreign experience". Sunday Times (UK). Archived from the original on April 15, 2020. Retrieved April 27, 2008.
  161. ^ Larson, Christina (September 2006). "Hoosier Daddy: What Rising Democratic Star Barack Obama Can Learn from an Old Lion of the GOP". Washington Monthly. Archived from the original on April 30, 2008. Retrieved April 27, 2008.
  162. ^ Mason, Jeff (November 16, 2008). "Obama resigns Senate seat, thanks Illinois". Reuters. Retrieved March 10, 2009.
  163. ^ a b Pearson, Rick; Long, Ray (February 10, 2007). "Obama: I'm running for president". Chicago Tribune. Archived from the original on August 13, 2007. Retrieved September 20, 2008.
  164. ^ "Obama Launches Presidential Bid". BBC News. February 10, 2007. Archived from the original on February 2, 2008. Retrieved January 14, 2008.
  165. ^ Parsons, Christi (February 10, 2007). "Obama's launch site: Symbolic Springfield: Announcement venue evokes Lincoln legacy". Chicago Tribune. Archived from the original on May 11, 2011. Retrieved June 12, 2009.
  166. ^ "Barack Obama on the Issues: What Would Be Your Top Three Overall Priorities If Elected?". The Washington Post. Archived from the original on May 9, 2008. Retrieved April 14, 2008. See also:
  167. ^ Tumulty, Karen (May 8, 2008). "The Five Mistakes Clinton Made". Time. Archived from the original on December 11, 2008. Retrieved November 11, 2008.
  168. ^ Nagourney, Adam; Zeleny, Jeff (June 5, 2008). "Clinton to End Bid and Endorse Obama". The New York Times. Archived from the original on June 5, 2008. Retrieved November 20, 2010.
  169. ^ a b Nagourney, Adam; Zeleny, Jeff (August 23, 2008). "Obama Chooses Biden as Running Mate". The New York Times. Archived from the original on April 1, 2009. Retrieved September 20, 2008.
  170. ^ Baldwin, Tom (August 27, 2008). "Hillary Clinton: 'Barack is my candidate'". The Times. ISSN 0140-0460. Archived from the original on December 15, 2021. Retrieved December 15, 2021.
  171. ^ Nagourney, Adam (August 28, 2008). "Obama Wins Nomination; Biden and Bill Clinton Rally Party". The New York Times. ISSN 0362-4331. Archived from the original on August 27, 2008. Retrieved December 15, 2021.
  172. ^ Liasson, Mara; Norris, Michele (July 7, 2008). "Obama To Accept Nomination at Mile High Stadium". NPR. Archived from the original on March 16, 2015. Retrieved December 22, 2010.
  173. ^ "Obama accepts Democrat nomination". BBC News. August 29, 2008. Archived from the original on August 28, 2008. Retrieved August 29, 2008.
  174. ^ Lloyd, Robert (August 29, 2008). "Barack Obama, Al Gore Raise the Roof at Invesco Field". Los Angeles Times. Archived from the original on September 6, 2008. Retrieved August 29, 2008.
  175. ^ Malone, Jim (July 2, 2007). "Obama Fundraising Suggests Close Race for Party Nomination". Voice of America. Archived from the original on September 14, 2007.
  176. ^ Salant, Jonathan D. (June 19, 2008). "Obama Won't Accept Public Money in Election Campaign". Bloomberg. Archived from the original on February 7, 2017. Retrieved June 19, 2008.
  177. ^ "Commission on Presidential Debates Announces Sites, Dates, Formats and Candidate Selection Criteria for 2008 General Election" (Press release). Commission on Presidential Debates. November 19, 2007. Archived from the original on July 6, 2008.
  178. ^ Johnson, Alex (November 4, 2008). "Barack Obama elected 44th president". NBC News. Retrieved February 20, 2009.
  179. ^ "General Election: McCain vs. Obama". Real Clear Politics. Archived from the original on February 17, 2009. Retrieved February 20, 2009.
  180. ^ "Obama wins historic US election". BBC News. November 5, 2008. Archived from the original on December 18, 2008. Retrieved November 5, 2008.
  181. ^ Obama, Barack (2008). "Transcript of Senator Barack Obama's speech to supporters after the Feb. 5 nominating contests, as provided by Federal News Service". The New York Times. Archived from the original on June 21, 2023. Retrieved June 21, 2023. Change will not come if we wait for some other person or if we wait for some other time. We are the ones we've been waiting for. We are the change that we seek.
  182. ^ Johnson, Wesley (November 5, 2008). "Change has come, says President-elect Obama". The Independent. London. Archived from the original on December 9, 2008. Retrieved November 5, 2008.
  183. ^ "U.S. Senate: Senators Who Became President". senate.gov. Archived from the original on July 24, 2021. Retrieved August 27, 2021.
  184. ^ Shear, Michael D. (April 4, 2011). "Obama Begins Re-Election Facing New Political Challenges". The New York Times (blog). Archived from the original on April 5, 2011.
  185. ^ "Obama announces re-election bid". United Press International. April 4, 2011. Archived from the original on May 10, 2011.
  186. ^ Zeleny, Jeff & Calmes, Jackie (April 4, 2011). "Obama Opens 2012 Campaign, With Eye on Money and Independent Voters". The New York Times. Archived from the original on November 15, 2012. Retrieved April 5, 2011.
  187. ^ Yoon, Robert (April 3, 2012). "Leading presidential candidate to clinch nomination Tuesday". CNN (blog). Archived from the original on April 26, 2012. Retrieved May 2, 2012.
  188. ^ "Obama clinches Democratic nomination". CNN (blog). April 3, 2012. Archived from the original on April 4, 2012. Retrieved April 3, 2012.
  189. ^ Cohen, Tom (September 6, 2012). "Clinton says Obama offers a better path forward for America". CNN. Archived from the original on July 6, 2015. Retrieved July 5, 2015.
  190. ^ Lauter, David (November 8, 2012). "Romney campaign gives up in Florida". Chicago Tribune. Archived from the original on November 9, 2012. Retrieved July 5, 2015.
  191. ^ Barnes, Robert (November 6, 2012). "Obama wins a second term as U.S. president". The Washington Post. Archived from the original on April 17, 2015. Retrieved July 5, 2015.
  192. ^ Welch, William M.; Strauss, Gary (November 7, 2012). "With win in critical battleground states, Obama wins second term". USA Today. Archived from the original on June 16, 2015. Retrieved July 5, 2015.
  193. ^ FEC (July 2013). "Election Results for the U.S. President, the U.S. Senate and the U.S. House of Representatives" (PDF). Federal Elections Commission. p. 5. Archived from the original (PDF) on October 2, 2013. Retrieved August 20, 2013.
  194. ^ Brownstein, Ronald (November 9, 2012). "The U.S. has reached a demographic milestone—and it's not turning back". National Journal. Archived from the original on November 11, 2012. Retrieved July 5, 2015.
  195. ^ Nichols, John (November 9, 2012). "Obama's 3 Million Vote, Electoral College Landslide, Majority of States Mandate". The Nation. Archived from the original on November 27, 2012. Retrieved November 18, 2012.
  196. ^ Lee, Kristen A. (November 7, 2012). "Election 2012: President Obama gives victory speech in front of thousands in Chicago, 'I have never been more hopeful about America'". Daily News. New York. Archived from the original on November 9, 2012. Retrieved November 8, 2012.
  197. ^ a b Shear, Michael (January 21, 2013). "Obama Offers Liberal Vision: 'We Must Act'". The New York Times. Archived from the original on January 21, 2013. Retrieved July 10, 2013.
  198. ^ Gearan, Anne; Baldor, Lolita C. (January 23, 2009). "Obama asks Pentagon for responsible Iraq drawdown". Pittsburgh Post-Gazette. Associated Press. Archived from the original on February 23, 2020. Retrieved February 23, 2020.
  199. ^ Glaberson, William (January 21, 2009). "Obama Orders Halt to Prosecutions at Guantánamo". The New York Times. Archived from the original on April 16, 2009. Retrieved February 3, 2009.
  200. ^ "Senate blocks transfer of Gitmo detainees", NBC News, Associated Press, May 20, 2009, archived from the original on November 4, 2014, retrieved March 22, 2011
  201. ^ Serbu, Jared (January 7, 2011), "Obama signs Defense authorization bill", Federal News Radio, archived from the original on December 12, 2018, retrieved March 22, 2011
  202. ^ Northam, Jackie (January 23, 2013). "Obama's Promise To Close Guantanamo Prison Falls Short". NPR. Archived from the original on March 26, 2013. Retrieved April 22, 2013.
  203. ^ Savage, Charlie (December 30, 2009). "Obama Curbs Secrecy of Classified Documents". The New York Times. ISSN 0362-4331. Archived from the original on December 20, 2022. Retrieved December 20, 2022.
  204. ^ Meckler, Laura (January 24, 2009). "Obama lifts 'gag rule' on family-planning groups". The Wall Street Journal. p. A3. Archived from the original on July 23, 2015. Retrieved September 21, 2012.
    • Stein, Rob; Shear, Michael (January 24, 2009). "Funding restored to groups that perform abortions, other care". The Washington Post. p. A3. Archived from the original on November 11, 2012. Retrieved September 21, 2012. Lifting the Mexico City Policy would not permit U.S. tax dollars to be used for abortions, but it would allow funding to resume to groups that provide other services, including counseling about abortions.
  205. ^ Stolberg, Sheryl Gay (January 30, 2009). "Obama Signs Equal-Pay Legislation". The New York Times. Archived from the original on January 30, 2009. Retrieved June 15, 2009.
  206. ^ Levey, Noam N. (February 5, 2009). "Obama signs into law expansion of SCHIP health care program for children". Chicago Tribune. Archived from the original on April 30, 2009. Retrieved June 15, 2009.
  207. ^ "Obama overturns Bush policy on stem cells". CNN. March 9, 2009. Archived from the original on March 30, 2010. Retrieved April 18, 2010.
  208. ^ Desjardins, Lisa; Keck, Kristi; Mears, Bill (August 6, 2009). "Senate confirms Sotomayor for Supreme Court". CNN. Archived from the original on September 25, 2011. Retrieved August 6, 2009.
  209. ^ Hamby, Peter; Henry, Ed; Malveaux, Suzanne; Mears, Bill. "Obama nominates Sotomayor to Supreme Court". Archived from the original on September 15, 2017. Retrieved September 13, 2014.
  210. ^ Sherman, Mark (October 4, 2010). "New Era Begins on High Court: Kagan Takes Place as Third Woman". Associated Press. Archived from the original on October 10, 2017. Retrieved November 13, 2010.
  211. ^ "Obama Administration Implements Priority Enforcement Program, Limits Interior Enforcement". www.numbersusa.com. June 24, 2015. Archived from the original on May 25, 2023. Retrieved May 25, 2023.
  212. ^ Block, Robert; Matthews, Mark K. (January 27, 2010). "White House won't fund NASA moon program". Los Angeles Times. Archived from the original on October 26, 2019. Retrieved January 30, 2011. President Obama's budget proposal includes no money for the Ares I and Ares V rocket or Constellation program. Instead, NASA would be asked to monitor climate change and develop a new rocket
  213. ^ Mardell, Mark (January 16, 2013). "US gun debate: Obama unveils gun control proposals". BBC News. Archived from the original on January 16, 2013. Retrieved January 16, 2013.
  214. ^ "What's in Obama's Gun Control Proposal". The New York Times. January 16, 2013. Archived from the original on February 21, 2013. Retrieved February 12, 2013.
  215. ^ "Obama announces gun control executive action (full transcript)". CNN. January 5, 2016. Archived from the original on February 21, 2016. Retrieved January 7, 2016.
  216. ^ "Obama, in Europe, signs Patriot Act extension". NBC News. May 27, 2011. Archived from the original on August 10, 2019. Retrieved August 8, 2019.
  217. ^ Wolf, Z. Byron (August 13, 2013). "Fact-checking Obama's claims about Snowden". CNN. Archived from the original on August 8, 2019. Retrieved August 8, 2019.
  218. ^ Hosenball, Mark (April 3, 2014). "Obama's NSA overhaul may require phone carriers to store more data". Reuters. Archived from the original on June 2, 2022. Retrieved August 8, 2019.
  219. ^ Ackerman, Spencer (January 17, 2014). "Obama to overhaul NSA's bulk storage of Americans' telephone data". The Guardian. Archived from the original on August 12, 2019. Retrieved August 12, 2019.
  220. ^ a b c Roth, Kenneth (January 9, 2017). "Barack Obama's Shaky Legacy on Human Rights". Human Rights Watch. Archived from the original on February 2, 2021. Retrieved June 26, 2022.
  221. ^ Dyson, Michael Eric (2016). The Black Presidency: Barack Obama and the Politics of Race in America. Houghton Mifflin Harcourt. p. 275. ISBN 978-0-544-38766-9.
  222. ^ Gillion, Daniel Q. (2016). Governing with Words. doi:10.1017/CBO9781316412299. ISBN 978-1-316-41229-9. Archived from the original on August 10, 2019. Retrieved June 5, 2019.
  223. ^ Butler, Bennett; Mendelberg, Tali; Haines, Pavielle E. (2019). ""I'm Not the President of Black America": Rhetorical versus Policy Representation". Perspectives on Politics. 17 (4): 1038–1058. doi:10.1017/S1537592719000963. ISSN 1537-5927.
  224. ^ a b Rodgers, Walter (January 5, 2010). "A year into Obama's presidency, is America postracial?". The Christian Science Monitor. Archived from the original on November 17, 2015. Retrieved November 15, 2015.
  225. ^ Shear, Michael; Alcindor, Yamiche (January 14, 2017). "Jolted by Deaths, Obama Found His Voice on Race". The New York Times. Archived from the original on January 16, 2017. Retrieved January 17, 2017.
  226. ^ Cillizza, Chris (August 14, 2014). "President Obama's vision of post-racial America faces another stress test with Ferguson". The Washington Post. Archived from the original on November 17, 2015. Retrieved November 15, 2015.
  227. ^ Blake, John (July 1, 2016). "What black America won't miss about Obama". CNN. Archived from the original on October 3, 2022.
  228. ^ Cillizza, Chris (July 19, 2013). "President Obama's remarkably personal speech on Trayvon Martin and race in America". The Washington Post. Archived from the original on November 17, 2015. Retrieved November 15, 2015.
  229. ^ a b Capeheart, Jonathan (February 27, 2015). "From Trayvon Martin to 'black lives matter'". The Washington Post. Archived from the original on November 17, 2015. Retrieved November 15, 2015.
  230. ^ Bacon, Perry Jr. (January 3, 2015). "In Wake of Police Shootings, Obama Speaks More Bluntly About Race". NBC. Archived from the original on November 11, 2015. Retrieved November 15, 2015.
  231. ^ Hirschfield Davis, Julie (July 13, 2016). "Obama Urges Civil Rights Activists and Police to Bridge Divide". The New York Times. Archived from the original on July 18, 2016. Retrieved July 23, 2016.
  232. ^ "U.S. Worries About Race Relations Reach a New High". Gallup. April 11, 2016. Archived from the original on December 20, 2016. Retrieved December 5, 2016.
  233. ^ "Obama signs hate crimes bill into law". CNN. October 28, 2009. Archived from the original on November 12, 2020. Retrieved October 12, 2011.
  234. ^ Preston, Julia (October 30, 2009). "Obama Lifts a Ban on Entry Into U.S. by H.I.V.-Positive People". The New York Times. Archived from the original on April 7, 2010. Retrieved February 8, 2017.
  235. ^ "'Don't ask, don't tell' repealed as Obama signs landmark law". The Guardian. London. December 22, 2010. Archived from the original on December 23, 2010. Retrieved June 2, 2018.
  236. ^ Sheryl Gay Stolberg (December 23, 2010). "Obama Signs Away 'Don't Ask, Don't Tell'". The New York Times. Archived from the original on May 12, 2011.
  237. ^ a b Redden, Molly; Holpuch, Amanda (June 30, 2016). "US military ends ban on transgender service members". The Guardian. Archived from the original on February 19, 2017. Retrieved February 19, 2017.
  238. ^ Baim, Tracy (January 14, 2009). "Windy City Times exclusive: Obama's Marriage Views Changed. WCT Examines His Step Back". Windy City Times. Archived from the original on November 14, 2012. Retrieved May 10, 2012.
  239. ^ Baim, Tracy (February 4, 2004). "Obama Seeks U.S. Senate seat". Windy City Times. Archived from the original on May 14, 2012. Retrieved May 10, 2012.
  240. ^ "President Barack Obama's shifting stance on gay marriage". PolitiFact. Archived from the original on November 26, 2018. Retrieved November 28, 2018.
  241. ^ Daly, Corbett (May 9, 2012). "Obama backs same-sex marriage". CBS News. Archived from the original on December 19, 2013. Retrieved May 9, 2012.
  242. ^ Stein, Sam (May 9, 2012). "Obama Backs Gay Marriage". The Huffington Post. Archived from the original on June 29, 2015. Retrieved July 5, 2015.
  243. ^ Robillard, Kevin (January 21, 2013). "First inaugural use of the word 'gay'". Politico. Archived from the original on July 23, 2015. Retrieved January 21, 2013.
  244. ^ Michelson, Noah (January 21, 2013). "Obama Inauguration Speech Makes History With Mention of Gay Rights Struggle, Stonewall Uprising". The Huffington Post. Archived from the original on September 19, 2018. Retrieved January 21, 2013.
  245. ^ Reilly, Ryan J. (February 28, 2013). "Obama Administration: Gay Marriage Ban Unconstitutional In Prop. 8 Supreme Court Case". The Huffington Post. Archived from the original on April 11, 2013. Retrieved April 21, 2013.
  246. ^ Mears, Bill (February 27, 2013). "Obama administration weighs in on defense of marriage law". CNN. Archived from the original on September 1, 2013. Retrieved April 21, 2013.
  247. ^ "Stimulus package en route to Obama's desk". CNN. February 14, 2009. Archived from the original on March 30, 2009. Retrieved March 29, 2009.
  248. ^ "Obama's remarks on signing the stimulus plan". CNN. February 17, 2009. Archived from the original on February 20, 2009. Retrieved February 17, 2009.
  249. ^ Andrews, Edmund L.; Dash, Eric (March 23, 2009). "U.S. Expands Plan to Buy Banks' Troubled Assets". The New York Times. Archived from the original on March 25, 2009. Retrieved April 12, 2010.
  250. ^ "White House questions viability of GM, Chrysler". The Huffington Post. March 30, 2009. Archived from the original on April 7, 2009.
  251. ^ Bunkley, Nick; Vlasic, Bill (April 27, 2009). "Chrysler and Union Agree to Deal Before Federal Deadline". The New York Times. Archived from the original on April 28, 2009. Retrieved April 12, 2010.
  252. ^ Hughes, John; Salas, Caroline; Green, Jeff; Van Voris, Bob (June 1, 2009). "GM Begins Bankruptcy Process With Filing for Affiliate". Bloomberg News. Archived from the original on June 13, 2010. Retrieved July 5, 2015.
  253. ^ Conkey, Christopher; Radnofsky, Louise (June 9, 2009). "Obama Presses Cabinet to Speed Stimulus Spending". The Wall Street Journal. News Corp. Archived from the original on July 26, 2013. Retrieved July 5, 2015.
  254. ^ Hedgpeth, Dana (August 21, 2009). "U.S. Says 'Cash for Clunkers' Program Will End on Monday". The Washington Post. Archived from the original on May 16, 2011. Retrieved March 26, 2010.
  255. ^ Szczesny, Joseph R. (August 26, 2009). "Was Cash for Clunkers a Success?". Time. Archived from the original on August 28, 2009. Retrieved March 26, 2010.
  256. ^ Mian, Atif R.; Sufi, Amir (September 1, 2010). "The Effects of Fiscal Stimulus: Evidence from the 2009 'Cash for Clunkers' Program". The Quarterly Journal of Economics. 127 (3): 1107–1142. doi:10.2139/ssrn.1670759. S2CID 219352572. SSRN 1670759.
  257. ^ Goldman, David (April 6, 2009). "CNNMoney.com's bailout tracker". CNNMoney. Vol. 06. p. 20. Archived from the original on April 7, 2019. Retrieved March 26, 2010.
  258. ^ Stein, Sylvie. "First Read—A breakdown of the debt-limit legislation". MSNBC. Archived from the original on January 14, 2012. Retrieved August 3, 2011.
  259. ^ "House passes debt ceiling bill". NBC News. March 8, 2011. Archived from the original on July 21, 2020. Retrieved August 3, 2011.
  260. ^ Theodossiou, Eleni; Hipple, Steven F. (2011). "Unemployment Remains High in 2010" (PDF). Monthly Labor Review. 134 (3): 3–22. Archived from the original (PDF) on May 8, 2011. Retrieved April 7, 2011.
  261. ^ Eddlemon, John P. (2011). "Payroll Employment Turns the Corner in 2010" (PDF). Monthly Labor Review. 134 (3): 23–32. Archived from the original (PDF) on May 6, 2011. Retrieved April 7, 2011.
  262. ^ "Unemployment Rate". Bureau of Labor Statistics. Archived from the original on November 21, 2011. Retrieved December 11, 2012.
  263. ^ "Unemployment Rate". Bureau of Labor Statistics. Archived from the original on April 28, 2019. Retrieved January 10, 2014.
  264. ^ "Unemployment Rate". Bureau of Labor Statistics. Archived from the original on April 28, 2019. Retrieved June 6, 2014.
  265. ^ a b "Percent Change in Real Gross Domestic Product (Quarterly)". National Income and Product Accounts Table. Bureau of Economic Analysis. Archived from the original on May 12, 2011. Retrieved April 7, 2011.
  266. ^ Harding, Robin (July 28, 2010). "Beige Book survey reports signs of slowdown". Financial Times. Archived from the original on July 29, 2010. Retrieved July 29, 2010.
  267. ^ "Percent Change in Real Gross Domestic Product (Annual)". National Income and Product Accounts Table. Bureau of Economic Analysis. Archived from the original on May 12, 2011. Retrieved April 7, 2011.
  268. ^ "Unemployment Rate". Bureau of Labor Statistics. Archived from the original on April 28, 2019. Retrieved September 12, 2018.
  269. ^ "1-month net change in employment". Bureau of Labor Statistics. Archived from the original on April 28, 2019. Retrieved September 12, 2018.
  270. ^ a b "Estimated Impact of the American Recovery and Reinvestment Act on Employment and Economic Output". Congressional Budget Office. November 22, 2011. Archived from the original on February 29, 2012. Retrieved February 21, 2012.
  271. ^ a b Calmes, Jackie; Cooper, Michael (November 20, 2009). "New Consensus Sees Stimulus Package as Worthy Step". The New York Times. Archived from the original on May 11, 2011. Retrieved December 21, 2010.
  272. ^ "CBO: Stimulus created as many as 2.1 million jobs". February 23, 2010. Archived from the original on March 3, 2010. Retrieved April 25, 2010.
  273. ^ Isidore, Chris (January 29, 2010). "Best economic growth in six years". CNN. Archived from the original on April 20, 2010. Retrieved April 18, 2010.
  274. ^ "New NABE Survey Shows Business Recovery Gaining Momentum, with More Jobs Ahead". Archived from the original on May 2, 2010. Retrieved April 26, 2010.
  275. ^ "U.S. GDP Growth Relative to Original NATO Members". Politics that Work. March 9, 2015. Archived from the original on April 23, 2015. Retrieved April 14, 2015.
  276. ^ Chapple, Irene (May 29, 2013). "OECD: U.S. will recover faster, Europe faces unemployment crisis". CNN. Archived from the original on December 20, 2019. Retrieved January 16, 2020.
  277. ^ Herszenhorn, David M.; Stolberg, Sheryl Gay (December 7, 2010). "Democrats Skeptical of Obama on New Tax Plan". The New York Times. Archived from the original on December 9, 2010.
  278. ^ "Obama signs tax deal into law". CNN. December 17, 2010. Archived from the original on December 18, 2010. Retrieved December 17, 2010.
  279. ^ Kuhnhenn, Jim (December 4, 2013). "Obama: Income Inequality a Defining Challenge". Associated Press. Archived from the original on December 7, 2013. Retrieved January 9, 2014.
  280. ^ "President Obama uses his final months to bring congressional approval of a 12-nation free trade pact called the Trans-Pacific Partnership". CBS News. September 5, 2016. Archived from the original on September 6, 2016. Retrieved September 5, 2016.
  281. ^ "Obama Halts Drilling Projects, Defends Actions". NPR. May 27, 2010. Archived from the original on September 19, 2018. Retrieved April 5, 2018.
  282. ^ Jonsson, Patrik (May 29, 2010). "Gulf oil spill: Obama's big political test". The Christian Science Monitor. Archived from the original on June 1, 2010. Retrieved June 6, 2010.
  283. ^ Neuman, Scott (March 31, 2010). "Obama Ends Ban On East Coast Offshore Drilling". NPR. Archived from the original on November 3, 2021. Retrieved October 30, 2021.
  284. ^ Goldenberg, Suzanne (July 28, 2013). "Barack Obama expresses reservations about Keystone XL pipeline project". The Guardian. London. Archived from the original on December 29, 2016. Retrieved November 7, 2023.
  285. ^ Stein, Sam (June 25, 2013). "Obama: Keystone XL Should Not Be Approved If It Will Increase Greenhouse Gas Emissions". The Huffington Post. Archived from the original on March 1, 2020. Retrieved January 16, 2020.
  286. ^ Calamur, Krishnadev (February 24, 2015). "Obama Vetoes Keystone XL Pipeline Bill". NPR. Archived from the original on June 9, 2015. Retrieved February 24, 2015.
  287. ^ Barron-Lopez, Laura (March 4, 2015). "Keystone veto override fails". The Hill. Capitol Hill Publishing. Archived from the original on July 15, 2015. Retrieved July 2, 2015.
  288. ^ "Obama bans oil drilling 'permanently' in millions of acres of ocean". BBC News. December 21, 2016. Archived from the original on October 30, 2021. Retrieved October 30, 2021.
  289. ^ Smith, David (December 20, 2016). "This article is more than 4 years old Barack Obama bans oil and gas drilling in most of Arctic and Atlantic oceans". The Guardian. Archived from the original on October 30, 2021. Retrieved October 30, 2021.
  290. ^ Volcovici, Valerie; Gardner, Timothy (December 20, 2016). "Obama bans new oil, gas drilling off Alaska, part of Atlantic coast". Reuters. Archived from the original on October 30, 2021. Retrieved October 30, 2021.
  291. ^ Eilperin, Juliet; Dennis, Brady (December 28, 2016). "With new monuments in Nevada, Utah, Obama adds to his environmental legacy". The Washington Post. Archived from the original on January 8, 2017. Retrieved November 7, 2023.
  292. ^ "Obama's Newly Designated National Monuments Upset Some Lawmakers". All Things Considered. NPR. December 29, 2016. Archived from the original on October 10, 2017. Retrieved April 5, 2018.
  293. ^ Connolly, Amy R. (February 13, 2016). "Obama expands public lands more than any U.S. president". United Press International. Archived from the original on May 19, 2020. Retrieved January 16, 2020.
  294. ^ a b Sweet, Lynn (July 22, 2009). "Obama July 22, 2009 press conference. Transcript". Chicago Sun-Times. Archived from the original on April 16, 2015. Retrieved July 5, 2015.
  295. ^ Stolberg, Sheryl Gay; Zeleny, Jeff (September 9, 2009). "Obama, Armed With Details, Says Health Plan Is Necessary". The New York Times. Archived from the original on September 12, 2009. Retrieved July 5, 2015.
  296. ^ Allen, Mike (September 9, 2009). "Barack Obama will hedge on public option". Politico. Archived from the original on July 26, 2013. Retrieved July 5, 2015.
  297. ^ "Health Insurance Premium Credits in the PPACA" (PDF). Congressional Research Service. Archived (PDF) from the original on October 14, 2012. Retrieved May 17, 2015.
  298. ^ "Obama calls for Congress to face health care challenge". CNN. September 9, 2009. Archived from the original on September 10, 2009. Retrieved September 9, 2009.
  299. ^ Nasaw, Daniel (March 10, 2009). "Stem cell". The Guardian. Archived from the original on July 26, 2013. Retrieved September 13, 2014.
  300. ^ Hulse, Carl; Pear, Robert (November 7, 2009). "Sweeping Health Care Plan Passes House". The New York Times. Archived from the original on March 31, 2011. Retrieved November 8, 2009.
  301. ^ Herszenhorn, David M.; Calmes, Jackie (December 7, 2009). "Abortion Was at Heart of Wrangling". The New York Times. Archived from the original on March 31, 2011. Retrieved December 6, 2009.
  302. ^ Hensley, Scott (December 24, 2009). "Senate Says Yes To Landmark Health Bill". NPR. Archived from the original on January 21, 2010. Retrieved December 24, 2009.
  303. ^ Stolberg, Sheryl Gay (March 23, 2010). "Obama Signs Landmark Health Care Bill". The New York Times. Archived from the original on March 25, 2010. Retrieved March 23, 2010.
  304. ^ Rice, Sabriya (March 25, 2010). "5 key things to remember about health care reform". CNN. Archived from the original on January 2, 2013. Retrieved January 6, 2013.
  305. ^ Grier, Peter (March 20, 2010). "Health Care Reform Bill 101". The Christian Science Monitor. Archived from the original on July 6, 2015. Retrieved July 5, 2015.
  306. ^ Elmendorf, Douglas W. (November 30, 2009). "An Analysis of Health Insurance Premiums Under the Patient Protection and Affordable Care Act" (PDF). Congressional Budget Office. Archived (PDF) from the original on February 27, 2012. Retrieved April 9, 2012.
  307. ^ Obama, Barack (August 2, 2016). "United States Health Care Reform". JAMA. 316 (5): 525–532. doi:10.1001/jama.2016.9797. ISSN 0098-7484. PMC 5069435. PMID 27400401.
  308. ^ Grier, Peter (March 21, 2010). "Health care reform bill 101: Who will pay for reform?". Christian Science Monitor. Archived from the original on July 6, 2015. Retrieved July 5, 2015.
  309. ^ Grier, Peter (March 19, 2010). "Health care reform bill 101: Who must buy insurance?". The Christian Science Monitor. Archived from the original on April 5, 2010. Retrieved April 7, 2010.
  310. ^ Elmendorf, Douglas W. (March 20, 2010). "H.R. 4872, Reconciliation Act of 2010 (Final Health Care Legislation)". Congressional Budget Office. Archived from the original on January 2, 2013. Retrieved January 6, 2013.
  311. ^ Barnes, Robert (June 28, 2012). "Supreme Court upholds Obama health care overhaul by 5–4 vote, approving insurance requirement". The Washington Post. Associated Press. Archived from the original on June 28, 2012. Retrieved June 29, 2012.
  312. ^ Leonard, Kimberly. "Supreme Court Upholds Obamacare Subsidies". U.S. News & World Report. Archived from the original on January 16, 2016. Retrieved November 25, 2015.
  313. ^ Colvin, Ross; Barkin, Noah (February 7, 2009). "Biden vows break with Bush era foreign policy". Toronto: Canada.com. Archived from the original on November 6, 2012. Retrieved January 31, 2013.
  314. ^ "Obama reaches out to Muslim world on TV". NBC News. January 27, 2009. Archived from the original on September 27, 2013. Retrieved June 15, 2009.
  315. ^ "Barack Obama's address to Iran: Full text of Barack Obama's videotaped message to the people and leaders of Iran as they celebrate their New Year's holiday, Nowruz". The Guardian. London. March 20, 2013. Archived from the original on September 6, 2013. Retrieved July 14, 2013.
  316. ^ DeYoung, Karen (April 9, 2009). "Nation U.S. to Join Talks on Iran's Nuclear Program". The Washington Post. Archived from the original on October 4, 2018. Retrieved June 15, 2009.
  317. ^ "Obama in Egypt reaches out to Muslim world". CNN. June 4, 2009. Retrieved January 30, 2011.
  318. ^ Weber, Joseph; Dinan, Stephen (June 26, 2009). "Obama dismisses Ahmadinejad apology request". The Washington Times. Archived from the original on April 10, 2019. Retrieved July 2, 2015.
  319. ^ Lauter, David (June 23, 2014). "Memo justifying drone killing of American Al Qaeda leader is released". Los Angeles Times. Archived from the original on April 30, 2019. Retrieved December 7, 2021.
  320. ^ "Long-sought memo on lethal drone strike is released". Washington Post. June 23, 2014. Archived from the original on August 24, 2022. Retrieved August 15, 2022.
  321. ^ Shane, Scott (August 27, 2015). "The Lessons of Anwar al-Awlaki". The New York Times. ISSN 0362-4331. Archived from the original on August 27, 2015. Retrieved December 7, 2021.
  322. ^ Lauter, David (June 24, 2014). "Memo justifying drone killing of American Al Qaeda leader is released". Los Angeles Times. Archived from the original on April 30, 2019. Retrieved December 7, 2021.
  323. ^ "Saudi Arabia launces air attacks in Yemen". The Washington Post. March 25, 2015. Archived from the original on October 11, 2019. Retrieved August 21, 2017.
  324. ^ "Yemen conflict: US 'could be implicated in war crimes'". BBC News. October 10, 2016. Archived from the original on August 27, 2018. Retrieved August 27, 2018.
  325. ^ Bayoumy, Yara (September 7, 2016). "Obama administration arms sales offers to Saudi top $115 billion: ..." Reuters. Archived from the original on May 8, 2019. Retrieved August 27, 2018.
  326. ^ Stewart, Phil; Strobel, Warren (December 13, 2016). "America 'agrees to stop selling some arms' to Saudi Arabia". The Independent. Archived from the original on April 1, 2019.
  327. ^ Phillips, Tom (September 4, 2016). "Barack Obama 'deliberately snubbed' by Chinese in chaotic arrival at G20". The Guardian.
  328. ^ Feller, Ben (February 27, 2009). "Obama sets firm withdrawal timetable for Iraq". The Gazette. Associated Press. Archived from the original on February 7, 2017. Retrieved March 3, 2009.
  329. ^ Jones, Athena (February 27, 2009). "Obama announces Iraq plan". MSNBC. Archived from the original on November 16, 2014. Retrieved July 2, 2015.
  330. ^ Sykes, Hugh (August 19, 2010). "Last US combat brigade exits Iraq". BBC News. Retrieved December 25, 2012.
  331. ^ MacAskill, Ewen (September 1, 2010). "Barack Obama ends the war in Iraq. 'Now it's time to turn the page'". The Guardian. London.
  332. ^ "All U.S. troops out of Iraq by end of year". NBC News. October 21, 2011. Retrieved December 25, 2012.
  333. ^ "Obama Is Sending 275 US Troops To Iraq". Business Insider. Retrieved June 19, 2014.
  334. ^ Nebehay, Stephanie (September 8, 2014). "New U.N. rights boss warns of 'house of blood' in Iraq, Syria". Reuters. Retrieved July 11, 2015.
  335. ^ "DoD Authorizes War on Terror Award for Inherent Resolve Ops". Defense.gov. October 31, 2014. Retrieved November 22, 2014.
  336. ^ "Islamic State: Coalition 'pledges more troops' for Iraq". BBC News. December 8, 2014. Retrieved August 23, 2015.
  337. ^ Mehta, Aaron (January 19, 2015). "A-10 Performing 11 Percent of Anti-ISIS Sorties". Defense News. Retrieved August 23, 2015.
  338. ^ "1,000 soldiers from the 82nd Airborne headed to Iraq". Stars and Stripes. Retrieved August 23, 2015.
  339. ^ "Stealthy Jet Ensures Other War-Fighting Aircraft Survive". U.S. News & World Report. Archived from the original on August 13, 2015. Retrieved August 23, 2015.
  340. ^ "Obama calls Iraq war a 'dangerous distraction'". CNN. July 15, 2008. Retrieved August 15, 2022.
  341. ^ Broder, John M. (July 16, 2008). "Obama and McCain Duel over Iraq". The New York Times.
  342. ^ Hodge, Amanda (February 19, 2009). "Obama launches Afghanistan Surge". The Australian. Sydney.
  343. ^ "Top U.S. Commander in Afghanistan Is Fired". The Washington Post. May 12, 2009.
  344. ^ "Obama details Afghan war plan, troop increases". NBC News. Associated Press. December 1, 2009.
  345. ^ "Gates says he agrees with Obama decision on McChrystal". CNN. June 24, 2010. Retrieved September 18, 2010.
  346. ^ Chandrasekaran, Rajiv (February 12, 2013). "Obama wants to cut troop level in Afghanistan in half over next year". The Washington Post. Retrieved February 14, 2013.
  347. ^ Marcus, Jonathan (October 15, 2015). "US troops in Afghanistan: Taliban resurgence sees rethink". BBC News. Retrieved October 15, 2015.
  348. ^ "Obama's Remarks on Iraq and Afghanistan". The New York Times. July 15, 2008.
  349. ^ a b c Mazzetti, Mark; Cooper, Helene; Baker, Peter (May 3, 2011). "Clues Gradually Led to the Location of Osama bin Laden". The New York Times. Archived from the original on May 3, 2011. Retrieved May 4, 2011.
  350. ^ a b Rucker, Philip; Wilson, Scott; Kornblut, Anne E. (May 2, 2011). "Osama bin Laden is killed by U.S. forces in Pakistan". The Washington Post. Retrieved September 13, 2014.
  351. ^ "Official offers details of bin Laden raid". Newsday. May 2, 2011. Retrieved September 13, 2014.
  352. ^ Schabner, Dean; Travers, Karen (May 1, 2011). "Osama bin Laden Killed by U.S. Forces in Pakistan". ABC News. Archived from the original on May 4, 2011. Retrieved May 3, 2011.
  353. ^ Baker, Peter; Cooper, Helene; Mazzetti, Mark (May 2, 2011). "Bin Laden Is Dead, Obama Says". The New York Times. Archived from the original on May 5, 2011. Retrieved May 3, 2011.
  354. ^ Walsh, Declan; Adams, Richard; MacAskill, Ewen (May 2, 2011). "Osama bin Laden is dead, Obama announces". The Guardian. London. Archived from the original on May 3, 2011. Retrieved May 3, 2011.
  355. ^ Dorning, Mike (May 2, 2011). "Death of Bin Laden May Strengthen Obama's Hand in Domestic, Foreign Policy". Bloomberg News. Archived from the original on May 3, 2011. Retrieved May 4, 2011.
  356. ^ Warren, Strobel. "Secret talks in Canada, Vatican City led to Cuba breakthrough". Reuters. Retrieved December 21, 2014.
  357. ^ Morello, Carol; DeYoung, Karen. "Secret U.S.-Cuba diplomacy ended in landmark deal on prisoners, future ties". The Washington Post. Retrieved December 21, 2014.
  358. ^ Roberts, Dan; Luscombe, Richard (December 10, 2013). "Obama shakes hands with Raúl Castro for first time at Mandela memorial". The Guardian. Retrieved February 15, 2017.
  359. ^ Nadeau, Barbie Latza (December 17, 2014). "The Pope's Diplomatic Miracle: Ending the U.S.–Cuba Cold War". The Daily Beast. Retrieved December 18, 2014.
  360. ^ Gillin, Joel (April 13, 2015). "The Cuban Thaw Is Obama's Finest Foreign Policy Achievement to Date". The New Republic.
  361. ^ "Obama announces re-establishment of U.S.-Cuba diplomatic ties". CNN. Retrieved July 1, 2015.
  362. ^ Whitefield, Mimi (July 20, 2015). "United States and Cuba reestablish diplomatic relations". The Miami Herald. Retrieved July 19, 2015.
  363. ^ Julie Hirschfeld Davis; Cave, Damien (March 21, 2016). "Obama Arrives in Cuba, Heralding New Era After Decades of Hostility". The New York Times. p. A1. Archived from the original on March 20, 2016.
  364. ^ Levinson, Charles (August 14, 2010). "U.S., Israel Build Military Cooperation". The Wall Street Journal. New York. Retrieved March 1, 2011.
  365. ^ Kampeas, Ron (October 26, 2012). "For Obama campaign, trying to put to rest persistent questions about 'kishkes'". Jewish Journal.
  366. ^ Berger, Robert (March 25, 2010). "Israel Refuses to Halt Construction in East Jerusalem". Voice of America. Retrieved July 2, 2015.
  367. ^ Kershner, Isabel (March 24, 2010). "Israel Confirms New Building in East Jerusalem". The New York Times. Archived from the original on March 29, 2010. Retrieved April 26, 2010.
  368. ^ "United States vetoes Security Council resolution on Israeli settlements". UN News Service Section. February 18, 2011. Retrieved September 13, 2014.
  369. ^ Levy, Elior (May 22, 2011). "PA challenges Netanyahu to accept 1967 lines". Ynetnews. Retrieved May 22, 2011.
  370. ^ Goldberg, Jeffrey (January 14, 2013). "Obama: 'Israel Doesn't Know What Its Best Interests Are'". Bloomberg. Retrieved January 23, 2013.
  371. ^ Goldberg, Jeffrey (September 13, 2015). "After the Iran Deal: Obama, Netanyahu, and the Future of the Jewish State". The Atlantic. Retrieved September 13, 2015.
  372. ^ Keinon, Herb (July 19, 2014). "Obama reaffirms Israel's right to defend itself". The Times of Israel.
  373. ^ "Netanyahu: Iran nuclear deal makes world much more dangerous, Israel not bound by it". Haaretz. July 14, 2015. Retrieved January 3, 2018.
  374. ^ Collinson, Stephen; Wright, David; Labott, Elise (December 24, 2016). "US Abstains as UN Demands End to Israeli Settlements". CNN. Retrieved January 7, 2017.
  375. ^ Barak, Ravid (December 26, 2016). "Netanyahu on UN Settlement Vote: Israel Will Not Turn the Other Cheek". Haaretz. Retrieved January 7, 2017.
  376. ^ "Israel-Palestinians: Netanyahu Condemns John Kerry Speech". BBC News. December 29, 2016. Retrieved January 7, 2017.
  377. ^ "Israel Halts $6 million to UN to Protest UN Settlements Vote". Fox News (from the Associated Press). January 6, 2017. Retrieved January 7, 2017.
  378. ^ "House Overwhelmingly Votes to Condemn UN Resolution on Israel Settlements". Fox News. January 5, 2017. Retrieved January 7, 2017.
  379. ^ Cortellessa, Eric (January 6, 2017). "US House Passes Motion Repudiating UN Resolution on Israel". The Times of Israel. Retrieved January 17, 2017.
  380. ^ "Floor Statement by Senator McCain Introducing the Senate Resolution Calling for a No-Fly Zone in Libya". Senate.gov. March 14, 2011. Archived from the original on September 27, 2011. Retrieved March 28, 2011.
  381. ^ "Senate Passes Resolution Calling for No-Fly Zone Over Libya". National Journal. March 1, 2011. Archived from the original on May 11, 2011.
  382. ^ "Libya declares ceasefire but fighting goes on". Al Jazeera. Retrieved May 9, 2024.
  383. ^ Kirkpatrick, David D.; Erlanger, Steven; Bumiller, Elisabeth (March 19, 2011). "Allies Open Air Assault on Qaddafi's Forces in Libya". The New York Times. ISSN 0362-4331. Retrieved May 9, 2024.
  384. ^ "Obama says US efforts in Libya have saved lives, control of operation can be turned over soon". Ventura County Star. Associated Press. Archived from the original on August 28, 2011. Retrieved March 22, 2011.
  385. ^ Pannell, Ian (March 21, 2011). "Gaddafi 'not targeted' by allied strikes". BBC News. Archived from the original on June 23, 2011. Retrieved July 3, 2011.
  386. ^ Jones, Sam (March 22, 2011). "F-15 fighter jet crashes in Libya". The Guardian. London. Archived from the original on March 22, 2011. Retrieved March 23, 2011.
  387. ^ "NATO No-Fly Zone over Libya Operation UNIFIED PROTECTOR" (PDF). NATO. March 25, 2011. Archived from the original (PDF) on May 15, 2011.
  388. ^ Montopoli, Brian (March 22, 2011). "Is Obama's Libya offensive constitutional?". CBS News. Retrieved March 22, 2011.
  389. ^ Stein, Sam (March 21, 2011). "Obama's Libya Policy Makes Strange Bedfellows of Congressional Critics". The Huffington Post. Archived from the original on March 23, 2011. Retrieved March 26, 2011.
  390. ^ "Obama juggles Libya promises, realities". CNN. March 25, 2011. Retrieved March 26, 2011.
  391. ^ Malloy, Allie; Treyz, Catherine (April 10, 2016). "Obama admits worst mistake of his presidency — CNN Politics". CNN. Retrieved April 24, 2021.
  392. ^ "President Obama: Libya aftermath 'worst mistake' of presidency". BBC News. April 11, 2016. Retrieved April 24, 2021.
  393. ^ "Assad must go, Obama says". The Washington Post. August 18, 2011. Retrieved November 23, 2015.
  394. ^ Nelson, Colleen. "Obama Says Syrian Leader Bashar al-Assad Must Go".
  395. ^ Hosenball, Mark (August 2, 2012). "Obama authorizes secret support for Syrian rebels". Reuters. Retrieved February 19, 2016.
  396. ^ Shear, Michael D.; Cooper, Helene; Schmitt, Eric (October 9, 2015). "Obama Administration Ends Effort to Train Syrians to Combat ISIS". The New York Times. Archived from the original on October 9, 2015. Retrieved February 20, 2016.
  397. ^ Stewart, Phil; Holton, Kate (October 9, 2015). "U.S. pulls plug on Syria rebel training effort; will focus on weapons supply". Reuters. Retrieved February 20, 2016.
  398. ^ "Obama 'red line' erased as Bashar Assad's chemical weapons use goes unchecked by U.S. military". The Washington Times. May 17, 2015. Retrieved November 23, 2015.
  399. ^ Gordon, Michael (September 14, 2013). "U.S. and Russia Reach Deal to Destroy Syria's Chemical Arms". The New York Times. Archived from the original on September 14, 2013. Retrieved February 19, 2016.
  400. ^ Boghani, Priyanka. "Syria Got Rid of Its Chemical Weapons—But Reports of Attacks Continue". Retrieved February 19, 2016.
  401. ^ "Obama outlines plan to target IS fighters". Al Jazeera. September 11, 2014. Retrieved September 24, 2014.
  402. ^ "Iran deal reached, Obama hails step toward 'more hopeful world'". Reuters. July 14, 2015. Retrieved July 14, 2015.
  403. ^ Solomon, Jay; Norman, Laurence; Lee, Carol E. (July 14, 2015). "Iran, World Powers Prepare to Sign Nuclear Accord". The Wall Street Journal. Retrieved July 14, 2015.
  404. ^ "Landmark deal reached on Iran nuclear program". CNN. July 14, 2015. Retrieved July 14, 2015.
  405. ^ "$1.7-billion payment to Iran was all in cash due to effectiveness of sanctions, White House says". Los Angeles Times. September 7, 2016. Retrieved October 30, 2019.
  406. ^ "Obama Administration Reportedly Shielded Hezbollah From DEA and CIA to Save Iran Nuclear Deal". Haaretz. December 18, 2017.
  407. ^ Meyer, Josh (December 18, 2017). "A Global Threat Emerges". Politico.
  408. ^ Thompson, Loren. "Obama Backs Biggest Nuclear Arms Buildup Since Cold War". Forbes.
  409. ^ Baker, Peter (March 26, 2010). "Obama Seals Arms Control Deal With Russia". The New York Times. Archived from the original on March 28, 2010.
  410. ^ Baker, Peter (December 22, 2010). "Senate Passes Arms Control Treaty With Russia, 71–26". The New York Times. Archived from the original on December 23, 2010.
  411. ^ McVeigh, Karen (December 6, 2011). "Gay rights must be criterion for US aid allocations, instructs Obama". The Guardian. London. Retrieved January 4, 2013.
  412. ^ Parsons, Christi (August 7, 2013). "Obama criticizes Russia's new anti-gay law in Leno interview". Los Angeles Times. Retrieved August 27, 2014.
  413. ^ Johnson, Luke (August 9, 2013). "Obama Opposes Olympic Boycott, Criticizes Russian Anti-Gay Law". The Huffington Post. Retrieved August 27, 2014.
  414. ^ "US election: The Russia factor: Officials say Moscow's interference is unprecedented. Has the Kremlin achieved its goal?". Financial Times. November 4, 2016. Archived from the original on February 7, 2017.
  415. ^ "Europeans View Obama's Exit With a Mix of Admiration and Regret". The New York Times. November 6, 2016. Archived from the original on November 7, 2016.
  416. ^ Wallace-Wells, Benjamin (November 2004). "The Great Black Hope: What's Riding on Barack Obama?". Washington Monthly. Archived from the original on May 13, 2008. Retrieved April 7, 2008. See also: Scott, Janny (December 28, 2007). "A Member of a New Generation, Obama Walks a Fine Line". International Herald Tribune. Archived from the original on January 17, 2008. Retrieved April 7, 2008.
  417. ^ Payne, Les (August 19, 2007). "In One Country, a Dual Audience". Newsday. New York. Archived from the original (paid archive) on September 15, 2008. Retrieved April 7, 2008.
  418. ^ Dorning, Mike (October 4, 2007). "Obama Reaches Across Decades to JFK". Chicago Tribune. Archived from the original (paid archive) on June 17, 2008. Retrieved April 7, 2008. See also: Harnden, Toby (October 15, 2007). "Barack Obama is JFK Heir, Says Kennedy Aide". The Daily Telegraph. London. Archived from the original on May 15, 2008. Retrieved April 7, 2008.
  419. ^ Holmes, Stephanie (November 30, 2008). "Obama: Oratory and originality". The Age. Melbourne. Archived from the original on December 18, 2008. Retrieved December 11, 2008.
  420. ^ "ChangeDotGov's Channel". Archived from the original on February 20, 2010. Retrieved April 18, 2010 – via YouTube.
  421. ^ Saad, Lydia (January 24, 2009). "Obama Starts With 68% Job Approval". Gallup. Archived from the original on June 16, 2011. Retrieved June 19, 2011.
  422. ^ Jones, Jeffrey M. (January 22, 2009). What History Foretells for Obama’s First Job Approval Rating. Gallup, Inc..
  423. ^ Jones, Jeffrey M. (November 20, 2009). Obama Job Approval Down to 49%. Gallup Inc..
  424. ^ Jackson, David (April 15, 2011). "Obama hits low point in Gallup Poll—41%". USA Today. Retrieved June 19, 2011.
  425. ^ Terbush, Jon (December 9, 2010). "Approval By Numbers: How Obama Compares To Past Presidents". TPMDC. Archived from the original on July 4, 2011. Retrieved June 19, 2011.
  426. ^ a b c d e "Gallup Daily: Obama Job Approval". Gallup Polling. January 22, 2015. Retrieved March 23, 2015.
  427. ^ Oliphant, James (May 11, 2011). "Bin Laden bounce? New poll shows jump in Obama approval". Los Angeles Times. Retrieved June 7, 2011.
  428. ^ Balz, Dan; Cohen, John (June 6, 2011). "Obama loses bin Laden bounce; Romney on the move among GOP contenders". The Washington Post. Nash Holdings LLC. Retrieved June 7, 2011.
  429. ^ Jones, Jeffrey M. (October 21, 2011). "Obama Job Approval Average Slides to New Low in 11th Quarter". Gallup Inc. Archived from the original on January 15, 2024.
  430. '^ Saad, Lydia (September 27, 2012). Obama Approval, Vote Support Both Reach 50% or Better. Gallup. Inc.
  431. ^ "Presidential Job Approval Center". Gallup. Archived from the original on July 2, 2015. Retrieved June 23, 2015.
  432. ^ Topaz, Jonathan (October 15, 2014). Obama hits lowest approval. Politico.
  433. ^ Horsley, Scott (November 3, 2014). Obama's Low Approval Rating Casts Shadow Over Democratic Races. NPR.
  434. ^ Topaz, Jonathan (June 18, 2014). "NBC/WSJ poll: Obama low point". Politico. Retrieved July 25, 2023.
  435. ^ Preston, Mark (October 28, 2014). "Voters are angry". CNN. Retrieved July 25, 2023.
  436. ^ Jones, Jeffrey M. (February 6, 2015). "Obama Approval Ratings Still Historically Polarized". Gallup Inc. Retrieved July 31, 2023.
  437. ^ Dugan, Andrew; Newport, Frank (March 10, 2016). "Obama's Job Approval at Highest Level Since May 2013". Gallup Polling. Retrieved July 25, 2023.
  438. ^ "Barack Obama gets a midterm do-over to help boost Democrats". The Virginia Pilot. Associated Press. October 28, 2022. Retrieved July 24, 2023.
  439. ^ Saad, Lydia (June 19, 2017). "George W. Bush and Barack Obama Both Popular in Retirement". Gallup Inc. Retrieved July 31, 2023.
  440. ^ Jones, Jeffrey M. (February 15, 2018). "Obama's First Retrospective Job Approval Rating Is 63%". Gallup Inc. Retrieved July 31, 2023.
  441. ^ Jones, Jeffrey M. (July 17, 2023). "Retrospective Approval of JFK Rises to 90%; Trump at 46%". Gallup Inc. Retrieved July 31, 2023.
  442. ^ "World wants Obama as president: poll". ABC News. Reuters. September 9, 2008.
  443. ^ Wike, Richard; Poushter, Jacob; Zainulbhai, Hani (June 29, 2016). "As Obama Years Draw to Close, President and U.S. Seen Favorably in Europe and Asia". Global Attitudes & Trends. Pew Research Center. Retrieved February 23, 2017.
  444. ^ Wan, William; Clement, Scott (November 18, 2016). "Most of the world doesn't actually see America the way Trump said it did". The Washington Post. Retrieved February 8, 2021.
  445. ^ Freed, John C. (February 6, 2009). "Poll shows Obama atop list of most respected". The New York Times. Archived from the original on September 27, 2009. Retrieved January 22, 2012.
  446. ^ "Obama Most Popular Leader, Poll Finds". The New York Times. May 29, 2009. Archived from the original on June 1, 2009. Retrieved January 22, 2012.
  447. ^ "Obama remains a popular symbol of hope". France 24. June 2, 2009. Archived from the original on May 13, 2011. Retrieved January 22, 2012.
  448. ^ "The Nobel Peace Prize 2009". Nobel Foundation. Archived from the original on October 10, 2009. Retrieved October 9, 2009.
  449. ^ Philp, Catherine (October 10, 2009). "Barack Obama's peace prize starts a fight". The Times. ISSN 0140-0460. Retrieved December 15, 2021.
  450. ^ Otterman, Sharon (October 9, 2009). "World Reaction to a Nobel Surprise". The New York Times. Retrieved October 9, 2009.
  451. ^ "Obama Peace Prize win has Americans asking why?". Reuters. October 9, 2009. Retrieved October 9, 2009.
  452. ^ "Obama: Nobel Peace Prize 'a call to action'—Politics—White House". NBC News. October 9, 2009. Retrieved September 13, 2014.
  453. ^ "Obama's win unique among presidents". CNN. October 9, 2009.
  454. ^ Matt Spetalnick; Wojciech Moskwa (October 10, 2009). "Obama says Nobel Peace Prize is 'call to action'". Reuters.
  455. ^ "How Obama felt after Trump's inauguration". BBC News. Retrieved March 6, 2021.
  456. ^ Panetta, Grace. "Michelle Obama said attending Trump's inauguration as one of few people of color was 'a lot emotionally'". Business Insider. Retrieved March 6, 2021.
  457. ^ Kosinski, Michelle; Diaz, Daniella (May 27, 2016). "Peek inside Obama's post-presidential pad". CNN. Retrieved January 22, 2017.
  458. ^ "Former President Barack H. Obama Announced as Recipient of 2017 John F. Kennedy Profile in Courage Award". John F. Kennedy Presidential Library & Museum. March 2, 2017. Archived from the original on April 8, 2017. Retrieved April 8, 2017.
  459. ^ Shear, Michael D. (April 24, 2017). "Obama Steps Back into Public Life, Trying to Avoid One Word: Trump". The New York Times. Archived from the original on April 24, 2017.
  460. ^ Shelbourne, Mallory (September 10, 2017). "Former presidents fundraise for Irma disaster relief". The Hill. Retrieved September 11, 2017.
  461. ^ Hope, Leah (September 14, 2017). "Obama Foundation holds public meeting about presidential library project". WLS-TV. Retrieved November 17, 2020.
  462. ^ Dovere, Edward-Isaac (October 31, 2017). "Obama, opening his foundation's first summit, calls for fixing civic culture". Politico.
  463. ^ Neuman, Scott (May 22, 2018). "Obamas Sign Deal With Netflix, Form 'Higher Ground Productions'". NPR. Retrieved September 17, 2018.
  464. ^ Harris, Hunter (May 21, 2018). "The Obamas Will Produce Movies and Shows for Netflix". Vulture. Retrieved September 17, 2018.
  465. ^ Gonzalez, Sandra (January 13, 2020). "Barack and Michelle Obama's production company scores first Oscar nomination". CNN. Retrieved January 21, 2020.
  466. ^ Pitofsky, Marina (October 24, 2018). "Suspicious packages sent to Clintons, Obamas, CNN: What we know so far". USA Today. Archived from the original on October 24, 2018.
  467. ^ Lukpat, Alyssa (December 5, 2019). "Obamas reportedly buy Martha's Vineyard waterfront estate for $11.75 million". The Boston Globe.
  468. ^ "Barack Obama challenges 'woke' culture". BBC News. October 30, 2019. Retrieved October 4, 2021.
  469. ^ Rueb, Emily S.; Taylor, Derrick Bryson (October 31, 2019). "Obama on Call-Out Culture: 'That's Not Activism'". The New York Times. ISSN 0362-4331. Archived from the original on October 31, 2019. Retrieved October 4, 2021.
  470. ^ Jackson, John Fritze and David. "'Voters themselves must pick': Why Barack Obama isn't endorsing Joe Biden or anyone else for president". USA Today. Retrieved March 18, 2022.
  471. ^ Astor, Maggie; Glueck, Katie (April 14, 2020). "Barack Obama Endorses Joe Biden for President". The New York Times. Archived from the original on April 14, 2020.
  472. ^ "Obama endorses Joe Biden for president". BBC News. Retrieved March 6, 2021.
  473. ^ "DNC 2020: Obama blasts Trump's 'reality show' presidency". BBC News. August 20, 2020. Retrieved March 6, 2021.
  474. ^ Harris, Elizabeth A. (September 17, 2020). "Obama's Memoir 'A Promised Land' Coming in November". The New York Times. ISSN 0362-4331. Archived from the original on September 17, 2020.
  475. ^ Adichie, Chimamanda Ngozi (November 12, 2020). "Chimamanda Ngozi Adichie on Barack Obama's 'A Promised Land'". The New York Times. ISSN 0362-4331. Archived from the original on November 12, 2020. Retrieved November 17, 2020.
  476. ^ Carras, Christi (September 17, 2020). "Barack Obama's new memoir will arrive right after the presidential election". Los Angeles Times. Retrieved November 17, 2020.
  477. ^ Gabbatt, Adam (February 22, 2021). "Barack Obama and Bruce Springsteen team up for new podcast". The Guardian. Retrieved March 24, 2021.
  478. ^ Sisario, Ben (February 22, 2021). "Barack Obama and Bruce Springsteen: The Latest Podcast Duo". The New York Times. Archived from the original on December 28, 2021. Retrieved March 24, 2021.
  479. ^ Otterson, Joe (December 8, 2021). "'Upshaws' Co-Creator Regina Hicks Sets Netflix Overall Deal, to Develop Comedy Series With Obamas' Higher Ground". Variety. Retrieved December 9, 2021.
  480. ^ Perez, Lexy (March 5, 2022). "Barack Obama, Lin-Manuel Miranda Among 2022 Audie Awards Winners". Billboard. Retrieved March 6, 2022.
  481. ^ "Remarks by President Biden, Vice President Harris, and Former President Obama on the Affordable Care Act". The White House. April 5, 2022. Retrieved April 6, 2022.
  482. ^ Benson, Samuel (April 5, 2022). "Obama returns to White House for first time since leaving office". POLITICO. Retrieved April 6, 2022.
  483. ^ "Obama's back—for a day—in White House health bill push". AP NEWS. April 5, 2022. Retrieved April 6, 2022.
  484. ^ "Barack and Michelle Obama sign with Amazon after Spotify declines to renew audio deal". Fortune. Retrieved June 22, 2022.
  485. ^ Chan, J. Clara (June 21, 2022). "The Obamas' Higher Ground Leaves Spotify for Audible Multiyear Deal". The Hollywood Reporter. Retrieved June 22, 2022.
  486. ^ "Meet the artists who painted the Obama White House portraits". Washington Post. ISSN 0190-8286. Retrieved November 6, 2022.
  487. ^ Montgomery, Daniel (September 3, 2022). "2022 Creative Arts Emmy winners list in all categories [UPDATING LIVE]". GoldDerby. Retrieved September 4, 2022.
  488. ^ "5 lessons from Obama's national parks show on Netflix". Washington Post. ISSN 0190-8286. Retrieved May 26, 2022.
  489. ^ Jones, Mondaire (October 21, 2022). "Barack Obama is Wrong to Oppose Expanding the Supreme Court". The Nation.
  490. ^ "Here's why former US president Barack Obama is in Australia". March 27, 2023. Retrieved March 29, 2023.
  491. ^ Staszewska, Ewa (March 28, 2023). "Barack Obama set to reel in $1 million during Aussie speaking tour as he visits Sydney Opera House with wife Michelle". Retrieved March 29, 2023.
  492. ^ Vidler, Adam; Theocharous, Mikala (March 28, 2023). "Former US President Barack Obama could net $1 million for Australian speaking gigs". Retrieved March 29, 2023.
  493. ^ Mueller, Julia (October 9, 2023). "Obama condemns 'brazen' attacks against Israel". The Hill. Retrieved December 18, 2023.
  494. ^ Singh, Kanishka (October 23, 2023). "Obama warns some of Israel's actions in Gaza may backfire". Reuters.
  495. ^ Baker, Sam (February 14, 2024). "Read: Historians rank Trump as worst president". Axios. Retrieved May 21, 2024.
  496. ^ Stirland, Sarah Lai. "The Obama Campaign: A Great Campaign, or the Greatest?". Wired. Archived from the original on December 11, 2023.
  497. ^ "Barack Obama: A Master Class in Public Speaking [Video]". Forbes.
  498. ^ "3 Moments Where President Obama Earned the Title of Great Communicator". September 13, 2016.
  499. ^ Zelizer, Julian E. (2018). "Policy Revolution without a Political Transformation". In Zelizer, Julian (ed.). The Presidency of Barack Obama: a First Historical Assessment. Princeton University Press. pp. 1–10. ISBN 978-0-691-16028-3.
  500. ^ Kamarck, Elaine (April 6, 2018). "The fragile legacy of Barack Obama". Brookings. Archived from the original on April 6, 2018. Retrieved October 30, 2021.
  501. ^ W. Wise, David (April 30, 2019). "Obama's legacy is as a disappointingly conventional president". Retrieved November 4, 2022.
  502. ^ a b "Obama Legacy Will Be Recovery from Recession, Affordable Care Act". ABC News. January 20, 2017. Retrieved March 15, 2017.
  503. ^ Eibner, Christine; Nowak, Sarah (2018). The Effect of Eliminating the Individual Mandate Penalty and the Role of Behavioral Factors. Commonwealth Fund (Report). doi:10.26099/SWQZ-5G92.
  504. ^ Oberlander, Jonathan (June 1, 2010). "Long Time Coming: Why Health Reform Finally Passed". Health Affairs. 29 (6): 1112–1116. doi:10.1377/hlthaff.2010.0447. ISSN 0278-2715. PMID 20530339.
  505. ^ Blumenthal, David; Abrams, Melinda; Nuzum, Rachel (June 18, 2015). "The Affordable Care Act at 5 Years". New England Journal of Medicine. 372 (25): 2451–2458. doi:10.1056/NEJMhpr1503614. ISSN 0028-4793. PMID 25946142. S2CID 28486139.
  506. ^ Cohen, Alan B.; Colby, David C.; Wailoo, Keith A.; Zelizer, Julian E. (June 1, 2015). Medicare and Medicaid at 50: America's Entitlement Programs in the Age of Affordable Care. Oxford University Press. ISBN 978-0-19-023156-9.
  507. ^ Stolberg, Sheryl Gay; Pear, Robert (March 23, 2010). "Obama Signs Health Care Overhaul into Law". The New York Times.
  508. ^ Long, Heather (January 6, 2017). "Final tally: Obama created 11.3 million jobs". CNN.
  509. ^ "Barack Obama's Legacy: Dodd-Frank Wall Street reform". CBS News. Retrieved March 15, 2017.
  510. ^ Bowman, Quinn (October 28, 2009). "Obama Signs Measure to Widen Hate Crimes Law". PBS NewsHour. Retrieved November 8, 2022.
  511. ^ Crary, David (January 4, 2017). "LGBT activists view Obama as staunch champion of their cause". Associated Press.
  512. ^ Bumiller, Elisabeth (July 22, 2011). "Obama Ends 'Don't Ask, Don't Tell' Policy". The New York Times. Archived from the original on July 23, 2011.
  513. ^ Kennedy, Kennedy (June 30, 2016). "Pentagon Says Transgender Troops Can Now Serve Openly". The Two-Way. NPR.
  514. ^ Smith, Michael; Newport, Frank (January 9, 2017). "Americans Assess Progress Under Obama". The Gallup Organization.
  515. ^ Zenko, Micah (January 12, 2016). "Obama's Embrace of Drone Strikes Will Be a Lasting Legacy". The New York Times. Retrieved March 2, 2019.
  516. ^ Grandin, Greg (January 15, 2017). "Why Did the US Drop 26,171 Bombs on the World Last Year?". The Nation. Retrieved January 11, 2018.
  517. ^ Agerholm, Harriet (January 19, 2017). "Map shows where President Barack Obama dropped his 20,000 bombs". The Independent. Retrieved January 11, 2018.
  518. ^ Parsons, Christi; Hennigan, W. J. (January 13, 2017). "President Obama, who hoped to sow peace, instead led the nation in war". Los Angeles Times.
  519. ^ Gramlich, John (January 5, 2017). "Federal prison population fell during Obama's term, reversing recent trend". Pew Research Center.
  520. ^ Cone, Allen (January 18, 2017). "Obama leaving office at 60 percent approval rating". United Press International. Retrieved February 26, 2017.
  521. ^ Agiesta, Jennifer (January 18, 2017). "Obama approval hits 60 percent as end of term approaches". CNN. Retrieved February 26, 2017.
  522. ^ Rottinghaus, Brandon; Vaughn, Justin S. (February 13, 2015). "Measuring Obama against the great presidents". Brookings Institution.
  523. ^ Jones, Jeffrey M. (February 15, 2018). "Obama's First Retrospective Job Approval Rating Is 63%". Gallup. Retrieved March 26, 2022.
  524. ^ "The Obama Presidential Center". Barack Obama Foundation. Archived from the original on August 24, 2019. Retrieved October 10, 2023.
  525. ^ Williams, Sydney (November 17, 2020). "Former President Barack Obama's third book starts shipping today". NBC News. Retrieved September 22, 2021.
  526. ^ Ressner, Jeffrey; Smith, Ben (August 22, 2008). "Exclusive: Obama's Lost Law Review Article". Politico. Archived from the original on February 8, 2021. Retrieved February 20, 2021.
  527. ^ "Barack Hussein Obama Takes The Oath Of Office" on YouTube. January 20, 2009.

Bibliography

Further reading

External links

Official

Other

================================================ FILE: tests/stub_data/py.typed ================================================ ================================================ FILE: tests/stub_data/stub_manifest.csv ================================================ file_location,doi,title "paper.pdf","10.1021/acs.jctc.2c01235","A Perspective on Explanations of Molecular Prediction Models" "bates.txt",,"Frederick Bates (Wikipedia article)" "flag_day.html",,"National Flag Day of Canada (Wikipedia article)" ================================================ FILE: tests/stub_data/stub_manifest_nocitation.csv ================================================ file_location,doi,title,citation,fields_to_overwrite_from_metadata "bates.txt",,"Frederick Bates (Wikipedia article)","","key, doc_id, docname, dockey" ================================================ FILE: tests/stub_data/stub_retractions.csv ================================================ Record ID,Title,Subject,Institution,Journal,Publisher,Country,Author,URLS,ArticleType,RetractionDate,RetractionDOI,RetractionPubMedID,OriginalPaperDate,OriginalPaperDOI,OriginalPaperPubMedID,RetractionNature,Reason,Paywalled,Notes 56416,The Feature Recognition of Motor Noise Based on the Improved EEMD Model,(B/T) Computer Science;(PHY) Engineering - Mechanical;,"Intelligent Manufacturing College of Wuhan Guanggu Vocational College, Wuhan 430079, Hubei, China; Wuhan Technology and Business University, Wuhan 430065, Hubei, China;",Computational Intelligence and Neuroscience,Hindawi,China,Qing Liao;Long Li;Jiaqi Luo,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,7/12/2023 0:00,10.1155/2023/9756480,37476288.0,8/18/2022 0:00,10.1155/2022/9172719,36035816.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Investigation by Journal/Publisher;+Investigation by Third Party;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No, 56415,Technical Evaluation of Commercial Sperm DFI Quality Control Products in SCSA Testing,(BLS) Biochemistry;(BLS) Genetics;(HSC) Medicine - Urology/Nephrology;,"NHC Key Laboratory of Male Reproduction and Genetics, Guangdong Provincial Reproductive Science Institute (Guangdong Provincial Fertility Hospital), Guangzhou 510600, Guangdong, China;",Journal of Healthcare Engineering,Hindawi,China,Tao Pang;Xinzong Zhang,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,7/12/2023 0:00,10.1155/2023/9812053,37476804.0,3/4/2022 0:00,10.1155/2022/9552123,35281543.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Investigation by Journal/Publisher;+Investigation by Third Party;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No, 56414,Study on Syndrome Intervention of Nonalcoholic Fatty Liver Disease from the Perspective of Deficiency and Excess,(HSC) Medicine - Gastroenterology;(HSC) Public Health and Safety;,"Zhang Zhongjing School of TCM, Nanyang Institute of Technology, Nanyang 473004, Henan, China;",Journal of Healthcare Engineering,Hindawi,China,Sanhang Wang;Hu Jiu lüe;Jiao Zhao,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,7/12/2023 0:00,10.1155/2023/9863546,37476791.0,9/16/2021 0:00,10.1155/2021/9928160,34567490.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Informed/Patient Consent - None/Withdrawn;+Investigation by Journal/Publisher;+Investigation by Third Party;+Lack of IRB/IACUC Approval;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No, 56413,Study of Deep Learning-Based Legal Judgment Prediction in Internet of Things Era,(B/T) Computer Science;(SOC) Law/Legal Issues;,"Hubei University of Science and Technology, Xianning, Hubei, China; Nanjing University of Information Science and Technology, Nanjing, China;",Computational Intelligence and Neuroscience,Hindawi,China,Min Zheng;Bo Liu;Le Sun,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,7/12/2023 0:00,10.1155/2023/9856834,37476266.0,8/8/2022 0:00,10.1155/2022/8490760,35978889.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Investigation by Journal/Publisher;+Investigation by Third Party;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No, 56412,Research on Modular Management of Railway Bridge Technology Innovation in Complex and Difficult Mountainous Areas,(B/T) Computer Science;(B/T) Transportation;,"School of Civil Engineering, Central South University, Changsha 410083, Hunan, China; Guangzhou Municipal Engineering Design & Research Institute Co.,Ltd., Guangzhou 510000, China; China Academy of Railway Science Corporation Limited, Beijing 100081, China;",Computational Intelligence and Neuroscience,Hindawi,China,Huihua Chen;Qintao Cheng;Yingxue Xie;Chaoxun Cai;Xinlin Ban;Xiaodong Hu,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,7/12/2023 0:00,10.1155/2023/9789261,37476212.0,8/11/2022 0:00,10.1155/2022/8799586,35990112.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Investigation by Journal/Publisher;+Investigation by Third Party;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No, 56411,Research and Implementation of Intelligent Evaluation System of Teaching Quality in Universities Based on Artificial Intelligence Neural Network Model,(B/T) Computer Science;(SOC) Education;,"Education Department, Shaanxi Normal University, Xi’an 710062, Shaanxi, China;",Mathematical Problems in Engineering,Hindawi,China,Bo Gao,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,7/12/2023 0:00,10.1155/2023/9860810,0.0,3/16/2022 0:00,10.1155/2022/8224184,0.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Investigation by Journal/Publisher;+Investigation by Third Party;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No, 56410,Relationship between Long Noncoding RNA H19 Polymorphisms and Risk of Coronary Artery Disease in a Chinese Population: A Case-Control Study,(BLS) Genetics;(HSC) Biostatistics/Epidemiology;(HSC) Medicine - Cardiovascular;,"Department of Cardiology, The Fourth Affiliated Hospital of China Medical University, Shenyang, Liaoning 110034, China; Tumor Etiology and Screening Department of Cancer Institute and General Surgery, The First Affiliated Hospital of China Medical University, Key Laboratory of Cancer Etiology and Prevention (China Medical University), Liaoning Provincial Education Department, Shenyang, Liaoning 110001, China; China Medical University, China;",Disease Markers,Hindawi,China,Weina Hu;Hanxi Ding;Qian Xu;Xueying Zhang;Datong Yang;Yuanzhe Jin,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,7/12/2023 0:00,10.1155/2023/9761794,37476633.0,5/11/2020 0:00,10.1155/2020/9839612,32454910.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Investigation by Journal/Publisher;+Investigation by Third Party;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No, 56409,Preliminary Evaluation of Artificial Intelligence-Based Anti-Hepatocellular Carcinoma Molecular Target Study in Hepatocellular Carcinoma Diagnosis Research,(B/T) Computer Science;(BLS) Biology - Molecular;(HSC) Medicine - Gastroenterology;(HSC) Medicine - Oncology;,"Infectious Disease Department, Hospital of Chengdu University of Traditional Chinese Medicine, Chengdu, Sichuan 610072, China; Qijiang Hospital of The First Affiliated Hospital of Chongqing Medical University, Chongqing 401420, China; Wenlong Hospital of Qijiang, Chongqing 401420, China; Taiyuan Hospital of Traditional Chinese Medicine, Taiyuan, Shanxi 030000, China;",BioMed Research International,Hindawi,China,Yuan Wang;Chao Wei;Xiangui Deng;Shudi Gao;Jing Chen,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,7/12/2023 0:00,10.1155/2023/9850584,37475788.0,9/19/2022 0:00,10.1155/2022/8365565,36193305.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Informed/Patient Consent - None/Withdrawn;+Investigation by Journal/Publisher;+Investigation by Third Party;+Lack of IRB/IACUC Approval;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No, 56406,The Identification and Dissemination of Creative Elements of New Media Original Film and Television Works Based on Review Text Mining and Machine Learning,(B/T) Computer Science;(B/T) Data Science;(B/T) Technology;(HUM) Arts - Film Studies;,"Deputy Director of Graduate Office, Shandong College of Arts, Jinan, Shandong 250300, China;",Mathematical Problems in Engineering,Hindawi,China,Xiaonan Yu,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,10/4/2023 0:00,10.1155/2023/9838340,0.0,7/16/2022 0:00,10.1155/2022/5856069,0.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Investigation by Journal/Publisher;+Investigation by Third Party;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No,See also: https://pubpeer.com/publications/83D596FB181C1E3A7426780D29CB70 56397,Teaching Innovation and Development of Ideological and Political Courses in Colleges and Universities: Based on the Background of Wireless Communication and Artificial Intelligence Decision Making,(B/T) Computer Science;(B/T) Technology;(SOC) Education;(SOC) Philosophy;(SOC) Political Science;,"School of Marxism, Huaiyin Institute of Technology, Huaian 223003, China;",Mathematical Problems in Engineering,Hindawi,China,Zhenpeng Xia;Juan Liu,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,10/4/2023 0:00,10.1155/2023/9784298,0.0,5/6/2022 0:00,10.1155/2022/3768224,0.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Investigation by Journal/Publisher;+Investigation by Third Party;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No,See also: https://pubpeer.com/publications/DC5E7901F6266F9A6FA6F7B2C4BDFF 56396,TCM Physical Health Management Training and Nursing Effect Evaluation Based on Digital Twin,(B/T) Computer Science;(B/T) Technology;(BLS) Anatomy/Physiology;(HSC) Medicine - General;(HSC) Medicine - Nursing;,"Hospital of Chengdu University of Traditional Chinese Medicine, Chengdu 610072, Sichuan, China;",Scientific Programming,Hindawi,China,Jing Jiang;Qijia Li;Fei Yang,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,10/4/2023 0:00,10.1155/2023/9840830,0.0,9/27/2022 0:00,10.1155/2022/3907481,0.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Informed/Patient Consent - None/Withdrawn;+Investigation by Journal/Publisher;+Investigation by Third Party;+Lack of IRB/IACUC Approval;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No,See also: https://pubpeer.com/publications/8F8D76C66942A80D70FA3563489298 56380,Curriculum Reform and Adaptive Teaching of Computer Education Based on Online Education and B5G Model,(B/T) Computer Science;(B/T) Technology;(SOC) Education;,"School of Big Data and Automation Engineering, Chongqing Chemical Industry Vocational College, Chongqing 401228, China",Wireless Communications and Mobile Computing,Hindawi,China,Rongming Tian;Yan Tang,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,9/27/2023 0:00,10.1155/2023/9818904,0.0,8/25/2022 0:00,10.1155/2022/9636452,0.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Investigation by Journal/Publisher;+Investigation by Third Party;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No,See also: https://pubpeer.com/publications/EDB42A43B4671D904792B70576E086 56379,Application of Support Vector Machine Model Based on Machine Learning in Art Teaching,(B/T) Computer Science;(B/T) Technology;(HUM) Arts - General;,"Department of Fine Arts, Changji University, Changji, 831100 Xinjiang, China; Department of Computer Engineering, Changji University, Changji, 831100 Xinjiang, China; Department of Fine Arts, Chongqing Normal University, Chongqing 401331, China",Wireless Communications and Mobile Computing,Hindawi,China,YongMing Hua;Fang Li;Shuwen Yang,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,9/27/2023 0:00,10.1155/2023/9789170,0.0,6/20/2022 0:00,10.1155/2022/7954589,0.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Investigation by Journal/Publisher;+Investigation by Third Party;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No,See also: https://pubpeer.com/publications/82357471108F95B6112C5ED9DEC534 56378,Application of Emotional Education in College Physical Education Based on Mobile Internet of Things Model,(B/T) Technology;(SOC) Education;(SOC) Psychology;,"Department of Public Basic Education, Henan Vocational University of Science and Technology, Zhoukou, 466000 Henan, China; Office of International Cooperation and Exchange, Zhoukou Normal University, Zhoukou, 466000 Henan, China",Wireless Communications and Mobile Computing,Hindawi,China,Yanqun Huang;Kun Li,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,9/27/2023 0:00,10.1155/2023/9807147,0.0,11/19/2022 0:00,10.1155/2022/8728925,0.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Investigation by Journal/Publisher;+Investigation by Third Party;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No,See also: https://pubpeer.com/publications/091C35C103E4A33487FED77346B68C 56363,Preliminary Study on the Evaluation of Multimodal Effects of Type 2 Diabetic Nephropathy,(HSC) Medicine - Diabetes;(HSC) Medicine - Urology/Nephrology;,"Henan University of Chinese Medicine, Zhengzhou 450000, China;",Scientific Programming,Hindawi,China,Huandong Zhao,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,10/4/2023 0:00,10.1155/2023/9820827,0.0,9/13/2021 0:00,10.1155/2021/2563477,0.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Informed/Patient Consent - None/Withdrawn;+Investigation by Journal/Publisher;+Investigation by Third Party;+Lack of IRB/IACUC Approval;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No,See also: https://pubpeer.com/publications/A88D39F9DC3A72A2E62560C028738D 56362,The Dilemma and Countermeasures of Music Education under the Background of Big Data,(B/T) Data Science;(B/T) Technology;(HUM) Arts - Music;(SOC) Education;,"Pingdingshan Polytechnic College, PingDingShan, Henan 467001, China; National University of Life and Environmental Sciences of Ukraine, Kyiv 03041, Ukraine",Wireless Communications and Mobile Computing,Hindawi,China;Ukraine,Jiaye Han,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,9/27/2023 0:00,10.1155/2023/9753475,0.0,9/16/2022 0:00,10.1155/2022/8341966,0.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Informed/Patient Consent - None/Withdrawn;+Investigation by Journal/Publisher;+Investigation by Third Party;+Lack of IRB/IACUC Approval;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No,See also: https://pubpeer.com/publications/09293BF5BE20A9DF8B659F90FD4D77 56360,The Components of Smart Sports in Universities with the Assistance of Smart Devices,(B/T) Technology;(SOC) Education;(SOC) Sports and Recreation;,"Northeast Normal University, Changchun, 130000 Jilin, China",Wireless Communications and Mobile Computing,Hindawi,China,Zhengyang Shi,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,9/27/2023 0:00,10.1155/2023/9868041,0.0,9/19/2022 0:00,10.1155/2022/6469162,0.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Investigation by Journal/Publisher;+Investigation by Third Party;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No,See also: https://pubpeer.com/publications/CA854C2400CA247C3AB481D9FFD7D0 56358,Reform and Challenges of Ideological and Political Education for College Students Based on Wireless Communication and Virtual Reality Technology,(B/T) Technology;(SOC) Education;(SOC) Political Science;,"Business School, Chengdu University, Chengdu, Sichuan 610106, China",Wireless Communications and Mobile Computing,Hindawi,China,Xing Hang,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,9/27/2023 0:00,10.1155/2023/9797068,0.0,8/15/2021 0:00,10.1155/2021/6151249,0.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Investigation by Journal/Publisher;+Investigation by Third Party;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No,See also: https://pubpeer.com/publications/C3CDE7309B893622FDF6ADB2337E14 56357,Construction of Intelligent Textbook Courseware Management System Based on Artificial Intelligence Technology,(B/T) Technology;(SOC) Education;,"Educational Administration, Chengdu Normal University, Chengdu 611130, China",Wireless Communications and Mobile Computing,Hindawi,China,Qiu Zhao,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,9/27/2023 0:00,10.1155/2023/9826149,0.0,8/12/2022 0:00,10.1155/2022/9993183,0.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Investigation by Journal/Publisher;+Investigation by Third Party;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No,See also: https://pubpeer.com/publications/CBCF6814AB30FC8EB062AE4105C1CF 56355,Construction of Ideological and Political Practice Teaching System of Documentary Creation Course Based on Deep Learning,(B/T) Computer Science;(B/T) Data Science;(B/T) Technology;(HUM) Arts - Film Studies;(SOC) Education;(SOC) Political Science;,"School of Culture and Media Huanghuai University, Zhumadian City, Henan Province 463000, China; School of Arts Cheongju University, Cheongju City, Republic of Korea",Wireless Communications and Mobile Computing,Hindawi,China;South Korea,Qiwei Ren,https://retractionwatch.com/2022/09/28/exclusive-hindawi-and-wiley-to-retract-over-500-papers-linked-to-peer-review-rings/;https://retractionwatch.com/2023/04/05/wiley-and-hindawi-to-retract-1200-more-papers-for-compromised-peer-review/;https://retractionwatch.com/2023/12/19/hindawi-reveals-process-for-retracting-more-than-8000-paper-mill-articles/,Research Article;,9/27/2023 0:00,10.1155/2023/9818015,0.0,8/28/2022 0:00,10.1155/2022/6299168,0.0,Retraction,+Concerns/Issues About Data;+Concerns/Issues About Results;+Concerns/Issues about Referencing/Attributions;+Concerns/Issues with Peer Review;+Investigation by Journal/Publisher;+Investigation by Third Party;+Paper Mill;+Randomly Generated Content;+Unreliable Results;,No,See also: https://pubpeer.com/publications/76B5A8D5923D6901935160551185DB ================================================ FILE: tests/test_agents.py ================================================ from __future__ import annotations import importlib import itertools import json import logging import re import shutil import tempfile import time import zlib from functools import wraps from pathlib import Path from typing import cast from unittest.mock import AsyncMock, patch from uuid import uuid4 import ldp.agent import pytest from aviary.core import ( Environment, Tool, ToolRequestMessage, ToolResponseMessage, ToolsAdapter, ToolSelector, ) from ldp.agent import MemoryAgent, SimpleAgent from ldp.graph.memory import Memory, UIndexMemoryModel from ldp.graph.ops import OpResult from lmi import CommonLLMNames, EmbeddingModel, LiteLLMModel from pytest_subtests import SubTests from tantivy import Index from tenacity import Retrying, retry_if_exception_type, stop_after_attempt from paperqa.agents import SearchIndex, agent_query from paperqa.agents.env import ( CLINICAL_STATUS_SEARCH_REGEX_PATTERN, PaperQAEnvironment, clinical_trial_status, settings_to_tools, ) from paperqa.agents.main import FAKE_AGENT_TYPE, run_agent from paperqa.agents.models import AgentStatus, AnswerResponse from paperqa.agents.search import ( FAILED_DOCUMENT_ADD_ID, get_directory_index, maybe_get_manifest, ) from paperqa.agents.tools import ( ClinicalTrialsSearch, Complete, EnvironmentState, GatherEvidence, GenerateAnswer, PaperSearch, Reset, make_status, ) from paperqa.docs import Docs from paperqa.prompts import CANNOT_ANSWER_PHRASE, CONTEXT_INNER_PROMPT_NOT_DETAILED from paperqa.settings import AgentSettings, IndexSettings, Settings from paperqa.types import Context, Doc, DocDetails, PQASession, Text from paperqa.utils import compute_unique_doc_id, extract_thought, get_year, md5sum @pytest.mark.asyncio async def test_get_directory_index( subtests: SubTests, agent_test_settings: Settings ) -> None: # Since agent_test_settings is used by other tests, we use a tempdir so we # can delete files without affecting concurrent tests with tempfile.TemporaryDirectory() as tempdir: shutil.copytree( agent_test_settings.agent.index.paper_directory, tempdir, dirs_exist_ok=True ) paper_dir = agent_test_settings.agent.index.paper_directory = Path(tempdir) index_name = agent_test_settings.agent.index.name = ( f"stub{uuid4()}" # Unique across test invocations ) index = await get_directory_index(settings=agent_test_settings) assert ( index.index_name == index_name ), "Index name should match its specification" assert index.fields == [ "file_location", "body", "title", "year", ], "Incorrect fields in index" assert not index.changed, "Expected index to not have changes at this point" # bates.txt + empty.txt + flag_day.html + gravity_hill.md + influence.pdf # + obama.txt + paper.pdf + pasa.pdf + duplicate_media.pdf # + dummy.docx + dummy.pptx + dummy.xlsx, # but empty.txt fails to be added path_to_id = await index.index_files assert ( sum(id_ != FAILED_DOCUMENT_ADD_ID for id_ in path_to_id.values()) == 12 ), "Incorrect number of parsed index files" with subtests.test(msg="check-txt-query"): results = await index.query(query="who is Frederick Bates?", min_score=5) assert results target_doc_path = (paper_dir / "bates.txt").absolute() assert results[0].docs.keys() == { compute_unique_doc_id(None, md5sum(target_doc_path)) }, ( f"Expected to find {target_doc_path.name!r}, got citations" f" {[d.formatted_citation for d in results[0].docs.values()]}." ) # Check single quoted text in the query doesn't crash us results = await index.query(query="Who is 'Bates'") assert results # Check possessive in the query doesn't crash us results = await index.query(query="What is Bates' first name") assert results with subtests.test(msg="check-md-query"): results = await index.query(query="what is a gravity hill?", min_score=5) assert results first_result = results[0] assert len(first_result.docs) == 1, "Expected one result (gravity_hill.md)" target_doc_path = (paper_dir / "gravity_hill.md").absolute() expected_ids = { compute_unique_doc_id( None, md5sum(target_doc_path), # What we actually expect ), compute_unique_doc_id( "10.2307/j.ctt5vkfh7.11", # Crossref may match this Gravity Hill poem, lol next(iter(first_result.docs.values())).content_hash, ), } for expected_id in expected_ids: if expected_id in set(first_result.docs.keys()): break else: raise AssertionError( f"Failed to match an ID in {expected_ids}, got citations" f" {[d.formatted_citation for d in first_result.docs.values()]}." ) assert ( "gravity hill" in first_result.docs[expected_id].formatted_citation.lower() ) # Check getting the same index name will not reprocess files with patch.object(Docs, "aadd") as mock_aadd: index = await get_directory_index(settings=agent_test_settings) assert len(await index.index_files) == len(path_to_id) mock_aadd.assert_not_awaited(), "Expected we didn't re-add files" # Now we actually remove (but not add!) a file from the paper directory, # and we still don't reprocess files (paper_dir / "obama.txt").unlink() with ( patch.object( Docs, "aadd", autospec=True, side_effect=Docs.aadd ) as mock_aadd, patch.object( agent_test_settings.agent.index, "files_filter", lambda f: f.suffix in {".txt", ".pdf", ".md"}, # Also, exclude HTML ), ): index = await get_directory_index(settings=agent_test_settings) # Subtract 5 for the removed obama.txt, # dummy.docx, dummy_jap.docx, dummy.pptx, and dummy.xlsx files, # and another 1 for the filtered out flag_day.html assert len(await index.index_files) == len(path_to_id) - 5 - 1 mock_aadd.assert_not_awaited(), "Expected we didn't re-add files" # Note let's delete files.zip, and confirm we can't load the index await (await index.file_index_filename).unlink() with pytest.raises(RuntimeError, match="please rebuild"): await get_directory_index(settings=agent_test_settings, build=False) @pytest.mark.asyncio async def test_resuming_crashed_index_build(agent_test_settings: Settings) -> None: index_settings = agent_test_settings.agent.index crash_threshold, index_settings.concurrency = 3, 2 num_source_files = len( [ x for x in cast("Path", index_settings.paper_directory).iterdir() # Filter out .csv and .DS_Store files if x.suffix != ".csv" and agent_test_settings.agent.index.files_filter(x) ] ) assert ( num_source_files >= 5 ), "Less source files than this test was designed to work with" call_count = 0 original_docs_aadd = Docs.aadd async def crashing_aadd(*args, **kwargs) -> str | None: nonlocal call_count if call_count == crash_threshold: raise RuntimeError("Unexpected crash.") call_count += 1 return await original_docs_aadd(*args, **kwargs) # 1. Try to build an index, and crash halfway through with ( pytest.raises(ExceptionGroup, match="unhandled"), patch.object( Docs, "aadd", side_effect=crashing_aadd, autospec=True ) as mock_aadd, ): await get_directory_index(settings=agent_test_settings) mock_aadd.assert_awaited() # 2. Resume and complete building the index for attempt in Retrying( stop=stop_after_attempt(3), # zlib.error: Error -5 while decompressing data: incomplete or truncated stream retry=retry_if_exception_type(zlib.error), ): with ( attempt, patch.object( Docs, "aadd", autospec=True, side_effect=Docs.aadd ) as mock_aadd, ): index = await get_directory_index(settings=agent_test_settings) assert len(await index.index_files) == num_source_files assert ( mock_aadd.await_count < num_source_files ), "Should not rebuild the whole index" @pytest.mark.asyncio async def test_getting_manifest( agent_test_settings: Settings, stub_data_dir: Path, caplog ) -> None: agent_test_settings.agent.index.manifest_file = "stub_manifest.csv" # Since stub_manifest.csv is used by other tests, we use a tempdir so we # can modify it without affecting concurrent tests with tempfile.TemporaryDirectory() as tempdir, caplog.at_level(logging.WARNING): shutil.copytree(stub_data_dir, tempdir, dirs_exist_ok=True) agent_test_settings.agent.index.paper_directory = tempdir manifest_filepath = ( await agent_test_settings.agent.index.finalize_manifest_file() ) assert manifest_filepath assert await maybe_get_manifest(manifest_filepath) assert not caplog.records # If a header line isn't present, our manifest extraction should fail original_manifest_lines = (await manifest_filepath.read_text()).splitlines() await manifest_filepath.write_text(data="\n".join(original_manifest_lines[1:])) await maybe_get_manifest(manifest_filepath) assert len(caplog.records) == 1 assert caplog.records[0].levelno == logging.ERROR EXPECTED_STUB_DATA_FILES = { "bates.txt", "duplicate_media.pdf", "empty.txt", "flag_day.html", "gravity_hill.md", "influence.pdf", "obama.txt", "paper.pdf", "pasa.pdf", "dummy.docx", "dummy_jap.docx", "dummy.pptx", "dummy.xlsx", } @pytest.mark.asyncio async def test_get_directory_index_w_manifest(agent_test_settings: Settings) -> None: # Set the paper_directory to be a relative path as starting point to confirm this # won't trip us up, and set the manifest file too abs_paper_dir = cast("Path", agent_test_settings.agent.index.paper_directory) agent_test_settings.agent.index.paper_directory = abs_paper_dir.relative_to( Path.cwd() ) agent_test_settings.agent.index.manifest_file = "stub_manifest.csv" # Now set up both relative and absolute test settings relative_test_settings = agent_test_settings.model_copy(deep=True) absolute_test_settings = agent_test_settings.model_copy(deep=True) absolute_test_settings.agent.index.use_absolute_paper_directory = True assert ( relative_test_settings != absolute_test_settings ), "We need to be able to differentiate between relative and absolute settings" del agent_test_settings relative_index = await get_directory_index(settings=relative_test_settings) assert ( set((await relative_index.index_files).keys()) == EXPECTED_STUB_DATA_FILES ), "Incorrect index files, should be relative to share indexes across machines" absolute_index = await get_directory_index(settings=absolute_test_settings) assert set((await absolute_index.index_files).keys()) == { str(abs_paper_dir / f) for f in EXPECTED_STUB_DATA_FILES }, ( "Incorrect index files, should be absolute to deny sharing indexes across" " machines" ) for index in (relative_index, absolute_index): assert index.fields == [ "file_location", "body", "title", "year", ], "Incorrect fields in index" results = await index.query(query="who is Frederick Bates?") top_result = next(iter(results[0].docs.values())) # note: we get every possible field from the manifest constructed in maybe_get_manifest, # and then DocDetails construction sets the dockey to the doc_id. assert top_result.dockey == top_result.doc_id # note: this title comes from the manifest, so we know it worked assert top_result.title == "Frederick Bates (Wikipedia article)" assert "wikipedia article" in top_result.citation.lower(), ( "Other tests check we can override citation," " so here we check here it's actually populated" ) @pytest.mark.asyncio async def test_get_directory_index_w_no_citations( agent_test_settings: Settings, ) -> None: agent_test_settings.agent.index.manifest_file = "stub_manifest_nocitation.csv" index = await get_directory_index(settings=agent_test_settings) results = await index.query(query="who is Frederick Bates?") top_result = next(iter(results[0].docs.values())) assert not top_result.citation @pytest.mark.flaky(reruns=2, only_rerun=["AssertionError", "httpx.RemoteProtocolError"]) @pytest.mark.parametrize("agent_type", [FAKE_AGENT_TYPE, ToolSelector, SimpleAgent]) @pytest.mark.parametrize("llm_name", ["gpt-4o", "gemini/gemini-2.0-flash-lite"]) @pytest.mark.asyncio async def test_agent_types( agent_test_settings: Settings, agent_type: str | type, llm_name: str, subtests: SubTests, ) -> None: question = "How can you use XAI for chemical property prediction?" # make sure agent_llm is different from default, so we can correctly track tokens # for agent agent_test_settings.agent.agent_llm = llm_name agent_test_settings.llm = "gpt-4o-mini" agent_test_settings.summary_llm = "gpt-4o-mini" agent_test_settings.agent.agent_prompt += ( "\n\nCall each tool once in appropriate order and" " accept the answer for now, as we're in debug mode." ) with patch.object( Index, "open", side_effect=Index.open, autospec=True ) as mock_open: response = await agent_query( question, agent_test_settings, agent_type=agent_type ) assert ( mock_open.call_count <= 1 ), "Expected one Index.open call, or possibly zero if multiprocessing tests" assert response.session.answer, "Answer not generated" assert response.session.answer != CANNOT_ANSWER_PHRASE, "Answer not generated" assert response.session.context, "No contexts were found" assert response.session.question == question agent_llm = agent_test_settings.agent.agent_llm # TODO: once LDP can track tokens, we can remove this check if agent_type not in {FAKE_AGENT_TYPE, SimpleAgent}: assert ( response.session.token_counts[agent_llm][0] > 500 ), "Expected many prompt tokens" assert ( response.session.token_counts[agent_llm][1] > 30 ), "Expected many completion tokens" assert response.session.cost > 0, "Expected nonzero cost" with subtests.test("Test citation formatting"): citation_w_et_al = r"\b[\w\-]+\set\sal\.\s\([0-9]{4}\)" assert not re.search( citation_w_et_al, response.session.answer ), "Answer contains citation with et al. instead of citation key" missing_pages_regex = r"\b([a-zA-Z]+\d{4}[a-zA-Z]*\s+\d+-\d+)\b" assert not re.search( missing_pages_regex, response.session.answer ), "Answer contains citation with missing 'pages' keyword" @pytest.mark.asyncio async def test_successful_memory_agent(agent_test_settings: Settings) -> None: tic = time.perf_counter() memory_id = "call_Wtmv95JbNcQ2nRQCZBoOfcJy" # Stub value memory = Memory( query=( "Use the tools to answer the question: How can you use XAI for chemical" " property prediction?\n\nWhen the answer looks sufficient," " you can terminate by calling the {complete_tool_name} tool." " If the answer does not look sufficient," " and you have already tried to answer several times," " you can terminate by calling the {complete_tool_name} tool." " The current status of evidence/papers/cost is " f"{make_status(total_paper_count=0, relevant_paper_count=0, evidence_count=0, cost=0.0)}" # Started 0 # noqa: E501 "\n\nTool request message '' for tool calls: paper_search(query='XAI for" " chemical property prediction', min_year='2018', max_year='2024')" f" [id={memory_id}]\n\nTool response message '" f"{make_status(total_paper_count=2, relevant_paper_count=0, evidence_count=0, cost=0.0)}" # Found 2 # noqa: E501 f"' for tool call ID {memory_id} of tool 'paper_search'" ), input=( "Use the tools to answer the question: How can you use XAI for chemical" " property prediction?\n\nWhen the answer looks sufficient," " you can terminate by calling the {complete_tool_name} tool." " If the answer does not look sufficient," " and you have already tried to answer several times," " you can terminate by calling the {complete_tool_name} tool." " The current status of evidence/papers/cost is " f"{make_status(total_paper_count=0, relevant_paper_count=0, evidence_count=0, cost=0.0)}" ), output=( "Tool request message '' for tool calls: paper_search(query='XAI for" " chemical property prediction', min_year='2018', max_year='2024')" f" [id={memory_id}]" ), value=5.0, # Stub value template="Input: {input}\n\nOutput: {output}\n\nDiscounted Reward: {value}", ) memory_model = UIndexMemoryModel( embedding_model=EmbeddingModel.from_name("text-embedding-3-small") ) await memory_model.add_memory(memory) serialized_memory_model = memory_model.model_dump(exclude_none=True) query = "How can you use XAI for chemical property prediction?" # NOTE: use Claude 3 for its feature, testing regex replacement of it agent_test_settings.agent.agent_llm = CommonLLMNames.CLAUDE_37_SONNET.value agent_test_settings.agent.agent_config = { "memories": serialized_memory_model.pop("memories"), "memory_model": serialized_memory_model, } thoughts: list[str] = [] orig_llm_model_call = LiteLLMModel.call async def on_agent_action( # noqa: RUF029 action: OpResult[ToolRequestMessage], *_ ) -> None: thoughts.append(extract_thought(content=action.value.content)) async def llm_model_call(*args, **kwargs): # NOTE: "required" will not lead to thoughts being emitted, it has to be "auto" # https://docs.anthropic.com/en/docs/build-with-claude/tool-use#chain-of-thought args = args[:-1] # removing last element (tool_choice) from args return await orig_llm_model_call(*args, tool_choice="auto", **kwargs) # type: ignore[misc] with patch.object(LiteLLMModel, "call", side_effect=llm_model_call, autospec=True): response = await agent_query( query, agent_test_settings, Docs(), agent_type=f"{ldp.agent.__name__}.{MemoryAgent.__name__}", on_agent_action_callback=on_agent_action, ) assert response.status == AgentStatus.SUCCESS, "Agent did not succeed" assert ( time.perf_counter() - tic <= agent_test_settings.agent.timeout ), "Agent should not have timed out" assert all(thought and "" not in thought for thought in thoughts) @pytest.mark.parametrize("agent_type", [ToolSelector, SimpleAgent]) @pytest.mark.asyncio async def test_timeout(agent_test_settings: Settings, agent_type: str | type) -> None: agent_test_settings.prompts.pre = None agent_test_settings.agent.timeout = 0.05 # Give time for Environment.reset() agent_test_settings.llm = "gpt-4o-mini" agent_test_settings.agent.tool_names = {"gen_answer", "complete"} orig_exec_tool_calls = PaperQAEnvironment.exec_tool_calls tool_responses: list[list[ToolResponseMessage]] = [] async def spy_exec_tool_calls(*args, **kwargs) -> list[ToolResponseMessage]: responses = await orig_exec_tool_calls(*args, **kwargs) tool_responses.append(responses) return responses with patch.object(PaperQAEnvironment, "exec_tool_calls", spy_exec_tool_calls): response = await agent_query( query="Are COVID-19 vaccines effective?", settings=agent_test_settings, agent_type=agent_type, ) # Ensure that GenerateAnswerTool was called in truncation's failover assert response.status == AgentStatus.TRUNCATED, "Agent did not timeout" assert CANNOT_ANSWER_PHRASE in response.session.answer (last_response,) = tool_responses[-1] assert ( "no papers" in last_response.content ), "Expecting agent to been shown specifics on the failure" @pytest.mark.flaky(reruns=5, only_rerun=["AssertionError"]) @pytest.mark.asyncio async def test_propagate_options(agent_test_settings: Settings) -> None: llm_name = "gpt-4o-mini" default_llm_names = { cls.model_fields[name].default for name, cls in itertools.product(("llm", "summary_llm"), (Settings,)) } assert ( llm_name not in default_llm_names ), f"Assertions require not matching a default LLM name in {default_llm_names}." agent_test_settings.llm = llm_name agent_test_settings.answer.answer_max_sources = 5 agent_test_settings.answer.evidence_k = 6 agent_test_settings.answer.answer_length = "400 words" agent_test_settings.prompts.pre = None agent_test_settings.prompts.system = "End all responses with ###" agent_test_settings.prompts.context_inner = CONTEXT_INNER_PROMPT_NOT_DETAILED agent_test_settings.answer.evidence_skip_summary = True docs = Docs() response = await agent_query( query="What is a self-explanatory model?", settings=agent_test_settings, docs=docs, agent_type=FAKE_AGENT_TYPE, ) assert response.status == AgentStatus.SUCCESS, "Agent did not succeed" result = response.session assert len(result.answer) > 200, "Answer did not return any results" assert "###" in result.answer, "Answer did not propagate system prompt" assert docs.docs, "Expected docs to have been added" assert all(isinstance(d, DocDetails) for d in docs.docs.values()) assert all( d.file_location for d in docs.docs.values() # type: ignore[union-attr] ), "Expected file location to be populated" assert len(result.contexts) >= 2, "Test expects a few contexts" # Subtract 2 to allow tolerance for chunks with leading/trailing whitespace num_contexts_sufficient_length = sum( len(c.context) >= agent_test_settings.parsing.reader_config["chunk_chars"] - 2 for c in result.contexts ) # Check most contexts have the expected length assert ( num_contexts_sufficient_length >= len(result.contexts) - 1 ), "Summary was not skipped" @pytest.mark.asyncio async def test_gather_evidence_rejects_empty_docs( agent_test_settings: Settings, ) -> None: @wraps(GenerateAnswer.gen_answer) async def gen_answer(self, state) -> str: # noqa: ARG001, RUF029 return f"{CANNOT_ANSWER_PHRASE}." # Patch GenerateAnswerTool.gen_answer so that if this tool is chosen first, # we keep running until we get truncated with ( patch( "paperqa.agents.env.settings_to_tools", side_effect=[ [ Tool.from_function( GatherEvidence( settings=agent_test_settings, summary_llm_model=agent_test_settings.get_summary_llm(), embedding_model=agent_test_settings.get_embedding_model(), ).gather_evidence, concurrency_safe=GatherEvidence.CONCURRENCY_SAFE, ), Tool.from_function( GenerateAnswer( settings=agent_test_settings, llm_model=agent_test_settings.get_llm(), summary_llm_model=agent_test_settings.get_summary_llm(), embedding_model=agent_test_settings.get_embedding_model(), ).gen_answer, concurrency_safe=GenerateAnswer.CONCURRENCY_SAFE, ), ] ], ), patch.object(GenerateAnswer, "gen_answer", gen_answer), ): agent_test_settings.agent = AgentSettings( max_timesteps=3, search_count=agent_test_settings.agent.search_count, index=IndexSettings( paper_directory=agent_test_settings.agent.index.paper_directory, index_directory=agent_test_settings.agent.index.index_directory, ), ) response = await agent_query( query="Are COVID-19 vaccines effective?", settings=agent_test_settings, docs=Docs(), ) assert ( response.status == AgentStatus.TRUNCATED ), "Agent should have hit its max timesteps" @pytest.mark.parametrize("callback_type", [None, "async"]) @pytest.mark.flaky(reruns=3, only_rerun=["AssertionError", "EmptyDocsError"]) @pytest.mark.asyncio async def test_agent_sharing_state( agent_test_settings: Settings, subtests: SubTests, callback_type: str | None ) -> None: SAVE_API_COSTS_FILES_TO_EXCLUDE = { "pasa.pdf", *(f"dummy{x}" for x in (".docx", "_jap.docx", ".pptx", ".xlsx")), } def files_filter(f) -> bool: return ( f.name not in SAVE_API_COSTS_FILES_TO_EXCLUDE and IndexSettings.model_fields["files_filter"].default(f) ) agent_test_settings.agent.index.files_filter = files_filter agent_test_settings.agent.search_count = 3 # Keep low for speed agent_test_settings.answer.evidence_k = 2 agent_test_settings.answer.answer_max_sources = 1 llm_model = agent_test_settings.get_llm() summary_llm_model = agent_test_settings.get_summary_llm() embedding_model = agent_test_settings.get_embedding_model() callbacks = {} if callback_type == "async": gen_answer_initialized_callback = AsyncMock() gen_answer_completed_callback = AsyncMock() gather_evidence_initialized_callback = AsyncMock() gather_evidence_completed_callback = AsyncMock() callbacks = { "gen_answer_initialized": [gen_answer_initialized_callback], "gen_answer_completed": [gen_answer_completed_callback], "gather_evidence_initialized": [gather_evidence_initialized_callback], "gather_evidence_completed": [gather_evidence_completed_callback], } agent_test_settings.agent.callbacks = callbacks session = PQASession(question="What is a self-explanatory model?") env_state = EnvironmentState(docs=Docs(), session=session) built_index = await get_directory_index(settings=agent_test_settings) assert await built_index.count, "Index build did not work" with subtests.test(msg="Custom and default environment status"): assert re.search( pattern=EnvironmentState.STATUS_SEARCH_REGEX_PATTERN, string=env_state.status, ), "Default status not formatted correctly" # override the status function with a new one def new_status(state: EnvironmentState) -> str: return f"Custom status: paper count = {len(state.docs.docs)}" env_state.status_fn = new_status assert env_state.status == new_status( env_state ), "Custom status not set correctly." env_state.status_fn = None # run an initial complete tool to see that the answer object is populated by it # this simulates if no gen_answer tool was called with subtests.test(msg=Complete.__name__): complete_tool = Complete() await complete_tool.complete(state=env_state, has_successful_answer=False) assert ( env_state.session.answer == Complete.NO_ANSWER_PHRASE ), "Complete did not succeed" # now we wipe the answer for further tests env_state.session.answer = "" with subtests.test(msg=PaperSearch.__name__): search_tool = PaperSearch( settings=agent_test_settings, embedding_model=embedding_model ) with ( patch.object( SearchIndex, "save_index", wraps=SearchIndex.save_index, autospec=True ) as mock_save_index, patch.object( Index, "open", side_effect=Index.open, autospec=True ) as mock_open, ): await search_tool.paper_search( "XAI self explanatory model", min_year=None, max_year=None, state=env_state, ) assert env_state.docs.docs, "Search did not add any papers" assert ( mock_open.call_count <= 1 ), "Expected one Index.open call, or possibly zero if multiprocessing tests" assert all( isinstance(d, Doc) for d in env_state.docs.docs.values() ), "Document type or DOI propagation failure" await search_tool.paper_search( "XAI for chemical property prediction", min_year=2018, max_year=2024, state=env_state, ) assert ( mock_open.call_count <= 1 ), "Expected one Index.open call, or possibly zero if multiprocessing tests" mock_save_index.assert_not_awaited() with subtests.test(msg=GatherEvidence.__name__): assert not session.contexts, "No contexts is required for a later assertion" gather_evidence_tool = GatherEvidence( settings=agent_test_settings, summary_llm_model=summary_llm_model, embedding_model=embedding_model, ) response = await gather_evidence_tool.gather_evidence( session.question, state=env_state ) if callback_type == "async": gather_evidence_initialized_callback.assert_awaited_once_with(env_state) gather_evidence_completed_callback.assert_awaited_once_with(env_state) split = re.split(r"(\d+) pieces of evidence", response, maxsplit=1) assert len(split) == 3, "Unexpected response shape" total_added_1 = int(split[1]) assert total_added_1 > 0, "Expected non-negative added evidence count" assert len(env_state.get_relevant_contexts()) == total_added_1 assert ( response.count("\n- ") == 1 ), "Expected exactly one best evidence to be shown" # now adjust to give the agent 2x pieces of evidence gather_evidence_tool.settings.agent.agent_evidence_n = 2 # also reset the question to ensure that contexts are # only returned to the agent for the new question new_question = "How does XAI relate to a self-explanatory model?" response = await gather_evidence_tool.gather_evidence( new_question, state=env_state ) assert len({c.question for c in session.contexts}) == 2, "Expected 2 questions" # now we make sure this is only for the old question for context in session.contexts: if context.question != new_question: assert ( context.context[:50] not in response ), "gather_evidence should not return any contexts for the old question" assert ( sum( (1 if (context.context[:30] in response) else 0) for context in session.contexts if context.question == new_question ) == 2 ), "gather_evidence should only return 2 contexts for the new question" split = re.split(r"(\d+) pieces of evidence", response, maxsplit=1) assert len(split) == 3, "Unexpected response shape" total_added_2 = int(split[1]) assert total_added_2 > 0, "Expected non-negative added evidence count" assert len(env_state.get_relevant_contexts()) == total_added_1 + total_added_2 assert ( response.count("\n- ") == 2 ), "Expected both evidences to be shown as best evidences" assert session.contexts, "Evidence did not return any results" assert not session.answer, "Expected no answer yet" with subtests.test(msg=f"{GenerateAnswer.__name__} working"): generate_answer_tool = GenerateAnswer( settings=agent_test_settings, llm_model=llm_model, summary_llm_model=summary_llm_model, embedding_model=embedding_model, ) result = await generate_answer_tool.gen_answer(state=env_state) if callback_type == "async": gen_answer_initialized_callback.assert_awaited_once_with(env_state) gen_answer_completed_callback.assert_awaited_once_with(env_state) assert re.search( pattern=EnvironmentState.STATUS_SEARCH_REGEX_PATTERN, string=result ) assert len(session.answer) > 200, "Answer did not return any results" assert ( GenerateAnswer.extract_answer_from_message(result) == session.answer ), "Failed to regex extract answer from result" assert ( len(session.used_contexts) <= agent_test_settings.answer.answer_max_sources ), "Answer has more sources than expected" with subtests.test(msg=f"{Reset.__name__} working"): reset_tool = Reset() await reset_tool.reset(state=env_state) assert not session.context assert not session.contexts def test_settings_model_config() -> None: settings_name = "tier1_limits" settings = Settings.from_name(settings_name) assert ( settings.embedding_config ), "Test assertions are only effective if there's something to configure" with Path( str(importlib.resources.files("paperqa.configs") / f"{settings_name}.json") ).open() as f: raw_settings = json.loads(f.read()) llm_model = settings.get_llm() summary_llm_model = settings.get_summary_llm() embedding_model = settings.get_embedding_model() assert ( llm_model.config["rate_limit"]["gpt-4o"] == raw_settings["llm_config"]["rate_limit"]["gpt-4o"] ) assert ( summary_llm_model.config["rate_limit"]["gpt-4o"] == raw_settings["summary_llm_config"]["rate_limit"]["gpt-4o"] ) assert ( embedding_model.config["rate_limit"] == raw_settings["embedding_config"]["rate_limit"] ) def test_tool_schema(agent_test_settings: Settings) -> None: """Check the tool schema passed to LLM providers.""" tools = settings_to_tools(agent_test_settings) assert ToolsAdapter.dump_python(tools, exclude_none=True) == [ { "type": "function", "info": { "name": "reset", "description": ( "Reset by clearing all current evidence from the system." "\n\nThis tool is useful when repeatedly failing to answer because" " the existing evidence may unsuitable for the question.\nIt does" " not make sense to call this tool in parallel with other tools," " as its resetting all state.\n" "Only invoke this tool when the current evidence is above" " zero, or this tool will be useless." ), "parameters": {"type": "object", "properties": {}, "required": []}, }, }, { "type": "function", "info": { "name": "gen_answer", "description": ( "Generate an answer using current evidence.\n\nThe tool may fail," " indicating that better or different evidence should be" " found.\nAim for at least five pieces of evidence from multiple" " sources before invoking this tool.\nFeel free to invoke this tool" " in parallel with other tools, but do not call this tool in" " parallel with itself." ), "parameters": {"type": "object", "properties": {}, "required": []}, }, }, { "type": "function", "info": { "name": "gather_evidence", "description": ( "Gather evidence from previous papers given a specific question" " to increase evidence and relevant paper counts.\n\nA valuable" " time to invoke this tool is right after another tool" " increases paper count.\nFeel free to invoke this tool in" " parallel with other tools, but do not call this tool in" " parallel with itself.\nOnly invoke this tool when the paper" " count is above zero, or this tool will be useless." ), "parameters": { "type": "object", "properties": { "question": { "type": "string", "description": "Specific question to gather evidence for.", "title": "Question", } }, "required": ["question"], }, }, }, { "type": "function", "info": { "name": "paper_search", "description": ( "Search for papers to increase the paper count.\n\nRepeat" " previous calls with the same query and years to continue a" " search. Only repeat a maximum of twice.\nThis tool can be" " called concurrently.\nThis tool" " introduces novel papers, so invoke this tool when just" " beginning or when unsatisfied with the current evidence." ), "parameters": { "type": "object", "properties": { "query": { "type": "string", "description": ( "A search query, which can be a specific phrase," " complete sentence,\nor general keywords, e.g." " 'machine learning for immunology'. Also can be" "\ngiven search operators." ), "title": "Query", }, "min_year": { "anyOf": [ {"type": "integer"}, {"type": "string"}, {"type": "null"}, ], "description": ( "Filter for minimum publication year, or None for" " no minimum year.\nThe current year is" f" {get_year()}." ), "title": "Min Year", }, "max_year": { "anyOf": [ {"type": "integer"}, {"type": "string"}, {"type": "null"}, ], "description": ( "Filter for maximum publication year, or None for" " no maximum year.\nThe current year is" f" {get_year()}." ), "title": "Max Year", }, }, "required": ["query", "min_year", "max_year"], }, }, }, { "info": { "description": ( "Terminate using the last proposed answer.\n\nDo not invoke this" " tool in parallel with other tools or itself." ), "name": "complete", "parameters": { "properties": { "has_successful_answer": { "description": ( "Set True if an answer that addresses all parts of the" "\ntask has been generated, otherwise set False to" " indicate unsureness." ), "title": "Has Successful Answer", "type": "boolean", } }, "required": ["has_successful_answer"], "type": "object", }, }, "type": "function", }, ] def test_answers_are_striped() -> None: """Test that answers are striped.""" session = PQASession( question="What is the meaning of life?", contexts=[ Context( context="bla", question="foo", text=Text( name="text", text="The meaning of life is 42.", embedding=[43.3, 34.2], doc=Doc( docname="foo", citation="bar", dockey="baz", embedding=[43.1, 65.2], ), ), score=3, extra_field="extra_value", ) ], ) response = AnswerResponse(session=session, bibtex={}, status=AgentStatus.SUCCESS) assert response.session.contexts[0].text.embedding is None assert not response.session.contexts[0].text.text assert response.session.contexts[0].text.doc is not None assert response.session.contexts[0].text.doc.embedding is None assert response.session.contexts[0].extra_field is not None # type: ignore[attr-defined] # make sure it serializes response.model_dump_json() @pytest.mark.asyncio async def test_clinical_tool_usage(agent_test_settings) -> None: agent_test_settings.llm = "gpt-4o" agent_test_settings.summary_llm = "gpt-4o" agent_test_settings.agent.tool_names = { "clinical_trials_search", "gather_evidence", "gen_answer", "complete", } docs = Docs() response = await run_agent( docs, query=( "What are the NCTIDs of clinical trials for depression that focus on health" " services research, are in phase 2, have no status type, and started in or" " after 2017?" ), settings=agent_test_settings, ) # make sure the tool was used at least once assert any( ClinicalTrialsSearch.TOOL_FN_NAME in step for step in response.session.tool_history ), "ClinicalTrialsSearch was not used" # make sure some clinical trials are pulled in as contexts assert any( "ClinicalTrials.gov" in c.text.doc.citation for c in response.session.contexts ), "No clinical trials were put into contexts" @pytest.mark.asyncio async def test_search_pagination(agent_test_settings: Settings) -> None: """Test that pagination works correctly in SearchIndex.query().""" index = await get_directory_index(settings=agent_test_settings) page_size = 1 page1_results = await index.query(query="test", top_n=page_size) page2_results = await index.query(query="test", top_n=page_size, offset=page_size) page1and2_results = await index.query(query="test", top_n=2 * page_size) assert ( page1_results == page1and2_results[:page_size] ), "First page should match start of all results" assert ( page2_results == page1and2_results[page_size : page_size * 2] ), "Second page should match second slice of all results" @pytest.mark.asyncio async def test_empty_index_without_index_rebuild(agent_test_settings: Settings): """Test that empty index and `rebuild_index=False` lead to a RuntimeError.""" agent_test_settings.agent = AgentSettings(index=IndexSettings()) # empty index agent_test_settings.agent.rebuild_index = False with pytest.raises(RuntimeError, match=r"Index .* was empty, please rebuild it."): await agent_query( query="Are COVID-19 vaccines effective?", settings=agent_test_settings, agent_type=FAKE_AGENT_TYPE, force_index_rebuild=False, ) class TestClinicalTrialSearchTool: @pytest.mark.asyncio async def test_continuation(self) -> None: docs = Docs() state = EnvironmentState( docs=docs, session=PQASession(question=""), status_fn=clinical_trial_status ) tool = ClinicalTrialsSearch( search_count=4, # Keep low for speed settings=Settings(), ) result = await tool.clinical_trials_search("Covid-19 vaccines", state) # 4 trials + the metadata context = 5 assert len(state.docs.docs) == 5, "Search did not return enough trials" assert re.search(pattern=CLINICAL_STATUS_SEARCH_REGEX_PATTERN, string=result) match = re.search(r"Clinical Trial Count=(\d+)", result) assert match trial_count = int(match.group(1)) assert trial_count == len(state.docs.docs) # Check continuation of the search result = await tool.clinical_trials_search("Covid-19 vaccines", state) assert len(state.docs.docs) > trial_count, "Search was unable to continue" @pytest.mark.timeout(60 * 7) # Extended from global 5-min timeout @pytest.mark.asyncio async def test_index_build_concurrency(agent_test_settings: Settings) -> None: high_concurrency_settings = agent_test_settings.model_copy(deep=True) high_concurrency_settings.agent.index.name = "high_concurrency" high_concurrency_settings.agent.index.concurrency = 3 high_concurrency_settings.agent.index.batch_size = 3 with patch.object( SearchIndex, "save_index", side_effect=SearchIndex.save_index, autospec=True ) as mock_save_index: start_time = time.perf_counter() await get_directory_index(settings=high_concurrency_settings) high_concurrency_duration = time.perf_counter() - start_time high_batch_save_count = mock_save_index.call_count low_concurrency_settings = agent_test_settings.model_copy(deep=True) low_concurrency_settings.agent.index.name = "low_concurrency" low_concurrency_settings.agent.index.concurrency = 1 low_concurrency_settings.agent.index.batch_size = 1 with patch.object( SearchIndex, "save_index", side_effect=SearchIndex.save_index, autospec=True ) as mock_save_index: start_time = time.perf_counter() await get_directory_index(settings=low_concurrency_settings) low_concurrency_duration = time.perf_counter() - start_time low_batch_save_count = mock_save_index.call_count assert high_concurrency_duration * 1.1 < low_concurrency_duration, ( "Expected high concurrency to be faster, but took" f" {high_concurrency_duration:.2f}s compared to {low_concurrency_duration:.2f}s" ) assert high_batch_save_count < low_batch_save_count, ( "Expected fewer save_index with high batch size, but got" f" {high_batch_save_count} vs {low_batch_save_count}" ) @pytest.mark.asyncio async def test_env_from_name(subtests: SubTests) -> None: assert "paperqa" in Environment.available() with subtests.test(msg="only-task"): env = Environment.from_name( # type: ignore[var-annotated] "paperqa", "How can you use XAI for chemical property prediction?" ) assert isinstance(env, PaperQAEnvironment) with pytest.raises(ValueError, match="configured"): await env.get_id() with subtests.test(msg="env-kwargs"): env = Environment.from_name( "paperqa", query="How can you use XAI for chemical property prediction?", settings=Settings(), docs=Docs(), ) assert isinstance(env, PaperQAEnvironment) ================================================ FILE: tests/test_cli.py ================================================ import os import sys import zlib from pathlib import Path from unittest.mock import patch import pytest from tenacity import Retrying, retry_if_exception_type, stop_after_attempt from paperqa import Docs from paperqa.agents import ask, build_index, main, search_query from paperqa.agents.models import AnswerResponse from paperqa.settings import Settings from paperqa.utils import pqa_directory def test_can_modify_settings(capsys, stub_data_dir: Path) -> None: rel_path_home_to_stub_data = Path("~") / stub_data_dir.relative_to(Path.home()) # This test depends on the unit_test config not previously existing with pytest.raises(FileNotFoundError, match="unit_test"): Settings.from_name("unit_test") old_argv = sys.argv try: sys.argv = ( "paperqa -s debug --llm=my-model-foo" f" --agent.index.paper_directory={rel_path_home_to_stub_data!s} save" " unit_test" ).split() main() captured = capsys.readouterr() assert not captured.err assert "Settings saved" in captured.out settings = Settings.from_name("unit_test") assert settings.llm == "my-model-foo" assert settings.agent.index.paper_directory == str(rel_path_home_to_stub_data) sys.argv = ["paperqa", "-s", "unit_test", "view"] main() captured = capsys.readouterr() assert not captured.err assert "my-model-foo" in captured.out finally: sys.argv = old_argv os.unlink(pqa_directory("settings") / "unit_test.json") def test_cli_ask(agent_index_dir: Path, stub_data_dir: Path) -> None: settings = Settings.from_name("debug") settings.agent.index.index_directory = agent_index_dir settings.agent.index.paper_directory = stub_data_dir response = ask( "How can you use XAI for chemical property prediction?", settings=settings ) assert isinstance(response, AnswerResponse) assert response.session.formatted_answer search_result = search_query( " ".join(response.session.formatted_answer.split()), "answers", settings, ) assert isinstance(search_result, list) found_answer = search_result[0][0] assert isinstance(found_answer, AnswerResponse) assert found_answer.model_dump() == response.model_dump() def test_cli_can_build_and_search_index( agent_index_dir: Path, stub_data_dir: Path ) -> None: rel_path_home_to_stub_data = Path("~") / stub_data_dir.relative_to(Path.home()) settings = Settings.from_name("debug") settings.agent.index.paper_directory = rel_path_home_to_stub_data settings.agent.index.index_directory = agent_index_dir index_name = "test" for attempt in Retrying( stop=stop_after_attempt(3), # zlib.error: Error -5 while decompressing data: incomplete or truncated stream retry=retry_if_exception_type(zlib.error), ): with attempt: build_index(index_name, stub_data_dir, settings) result = search_query("XAI", index_name, settings) assert isinstance(result, list) assert len(result) == 1 assert isinstance(result[0][0], Docs) assert all(d.startswith("Wellawatte") for d in result[0][0].docnames) assert result[0][1] == "paper.pdf" def test_settings_index_name_used_when_index_arg_is_default( stub_data_dir: Path, ) -> None: settings = Settings( agent={"index": {"paper_directory": stub_data_dir, "name": "my_named_index"}} ) with patch("paperqa.agents.get_directory_index") as mock_get_directory_index: # When --index isn't provided, the default name of "default" will still # respect a custom-specified index name build_index("default", stub_data_dir, settings) assert settings.agent.index.name == "my_named_index" mock_get_directory_index.assert_awaited_once_with(settings=settings) passed_settings = mock_get_directory_index.call_args.kwargs["settings"] assert passed_settings.agent.index.name == "my_named_index" with patch("paperqa.agents.index_search", return_value=[]) as mock_index_search: # When --index isn't provided, the default name of "default" will still # respect a custom-specified index name search_query("XAI", "default", settings) mock_index_search.assert_awaited_once() assert mock_index_search.call_args.kwargs["index_name"] == "my_named_index" ================================================ FILE: tests/test_clients.py ================================================ from __future__ import annotations import csv import logging import os import re from collections.abc import Collection, Sequence from datetime import UTC, datetime from pathlib import Path from typing import Any, cast from unittest.mock import patch import httpx import httpx_aiohttp import pytest import paperqa from paperqa.clients import ( ALL_CLIENTS, CrossrefProvider, DocMetadataClient, SemanticScholarProvider, ) from paperqa.clients.client_models import MetadataPostProcessor, MetadataProvider from paperqa.clients.exceptions import DOINotFoundError from paperqa.clients.journal_quality import ( DEFAULT_JOURNAL_QUALITY_CSV_PATH, JournalQualityPostProcessor, ) from paperqa.clients.openalex import OpenAlexProvider, reformat_name from paperqa.clients.retractions import RetractionDataPostProcessor from paperqa.clients.semantic_scholar import s2_title_search from paperqa.types import SOURCE_QUALITY_MESSAGES, DocDetails # Use to avoid flaky tests every time citation count changes CITATION_COUNT_SENTINEL = "CITATION_COUNT_SENTINEL" @pytest.mark.vcr @pytest.mark.parametrize( "paper_attributes", [ { "title": ( "Effect of native oxide layers on copper thin-film " "tensile properties: A reactive molecular dynamics study" ), "source": ["semantic_scholar", "crossref"], "key": "skarlinski2015effectofnative", "doi": "10.1063/1.4938384", "doc_id": "c217ec9289696c3c", "journal": "Journal of Applied Physics", "authors": ["Michael D. Skarlinski", "David J. Quesnel"], "formatted_citation": ( "Michael D. Skarlinski and David J. Quesnel. Effect of native oxide" " layers on copper thin-film tensile properties: a reactive molecular" " dynamics study. Journal of Applied Physics, 118:235306, Dec 2015." " URL: https://doi.org/10.1063/1.4938384, doi:10.1063/1.4938384. This" " article has" f" {CITATION_COUNT_SENTINEL}10{CITATION_COUNT_SENTINEL} citations and is" " from a peer-reviewed journal." ), "is_oa": False, }, { "title": ( "PaperQA: Retrieval-Augmented Generative Agent for Scientific Research" ), "source": ["semantic_scholar"], "key": "lala2023paperqaretrievalaugmentedgenerative", "doi": "10.48550/arxiv.2312.07559", "doc_id": "bb985e0e3265d678", "journal": "ArXiv", "authors": [ "Jakub L'ala", "Odhran O'Donoghue", "Aleksandar Shtedritski", "Sam Cox", "Samuel G. Rodriques", "Andrew D. White", ], "formatted_citation": ( "Jakub L'ala, Odhran O'Donoghue, Aleksandar Shtedritski, Sam Cox," " Samuel G. Rodriques, and Andrew D. White. Paperqa:" " retrieval-augmented generative agent for scientific research. ArXiv," " Dec 2023. URL: https://doi.org/10.48550/arxiv.2312.07559," " doi:10.48550/arxiv.2312.07559. This article has" f" {CITATION_COUNT_SENTINEL}106{CITATION_COUNT_SENTINEL} citations." ), "is_oa": None, }, { "title": "Augmenting large language models with chemistry tools", "source": ["semantic_scholar", "crossref"], "key": "bran2024augmentinglargelanguage", "doi": "10.1038/s42256-024-00832-8", "doc_id": "0f650d59b0a2ba5a", # spellchecker: disable-line "journal": "Nature Machine Intelligence", "authors": [ "Andres M. Bran", "Sam Cox", "Oliver Schilter", "Carlo Baldassari", "Andrew D. White", "Philippe Schwaller", ], "formatted_citation": ( "Andres M. Bran, Sam Cox, Oliver Schilter, Carlo Baldassari, Andrew D." " White, and Philippe Schwaller. Augmenting large language models with" " chemistry tools. Nature Machine Intelligence, 6:535, May 2024." " URL: https://doi.org/10.1038/s42256-024-00832-8," " doi:10.1038/s42256-024-00832-8. This article has" f" {CITATION_COUNT_SENTINEL}488{CITATION_COUNT_SENTINEL} citations and" " is from a domain leading peer-reviewed journal." ), "is_oa": True, }, ], ) @pytest.mark.asyncio async def test_title_search(paper_attributes: dict[str, str]) -> None: async with httpx_aiohttp.HttpxAiohttpClient() as http_client: client_list = [ client for client in ALL_CLIENTS if client != RetractionDataPostProcessor ] client = DocMetadataClient( http_client, metadata_clients=cast( "Collection[type[MetadataPostProcessor[Any] | MetadataProvider[Any]]]", client_list, ), ) details = await client.query(title=paper_attributes["title"]) assert details, "Assertions require successful query" assert set(details.other["client_source"]) == set( paper_attributes.pop("source") ), "Should have the correct source" assert details.other.get("is_oa") == paper_attributes.pop( "is_oa" ), "Open access data should match" expected_before_cct, expected_citation_ct, expected_after_cct = re.split( CITATION_COUNT_SENTINEL, paper_attributes.pop("formatted_citation"), maxsplit=2, ) assert expected_before_cct in details.formatted_citation assert expected_after_cct in details.formatted_citation citation_count = details.formatted_citation[ len(expected_before_cct) : -len(expected_after_cct) ] assert int(citation_count) == int(expected_citation_ct) for key, value in paper_attributes.items(): assert getattr(details, key) == value, f"Should have the correct {key}" @pytest.mark.vcr @pytest.mark.parametrize( "paper_attributes", [ { "title": ( "High-throughput screening of human genetic variants by pooled prime" " editing" ), "source": ["semantic_scholar", "crossref"], "key": "herger2025highthroughputscreeningof", "doi": "10.1016/j.xgen.2025.100814", "doc_id": "17ba73198ea7230c", # spellchecker: disable-line "journal": "Cell Genomics", "authors": [ "Michael Herger", "Christina M. Kajba", "Megan Buckley", "Ana Cunha", "Molly Strom", "Gregory M. Findlay", ], "formatted_citation": ( "Michael Herger, Christina M. Kajba, Megan Buckley, Ana Cunha, Molly" " Strom, and Gregory M. Findlay. High-throughput screening of human" " genetic variants by pooled prime editing. Cell Genomics, 5:100814, Apr 2025. URL:" " https://doi.org/10.1016/j.xgen.2025.100814," " doi:10.1016/j.xgen.2025.100814." " This article has 5 citations and is from a peer-reviewed journal." ), "is_oa": True, }, { "title": ( "An essential role of active site arginine residue in iodide binding" " and histidine residue in electron transfer for iodide oxidation by" " horseradish peroxidase" ), "source": ["semantic_scholar", "crossref"], "key": "adak2001anessentialrole", "doi": "10.1023/a:1007154515475", "doc_id": "3012c6676b658a27", "journal": "Molecular and Cellular Biochemistry", "authors": [ "Subrata Adak", "Debashis Bandyopadhyay", "Uday Bandyopadhyay", "Ranajit K. Banerjee", ], "formatted_citation": ( "Subrata Adak, Debashis Bandyopadhyay, Uday Bandyopadhyay, and Ranajit" " K. Banerjee. An essential role of active site arginine residue in" " iodide binding and histidine residue in electron transfer for iodide" " oxidation by horseradish peroxidase. Molecular and Cellular" " Biochemistry, 218:1-11, Feb 2001. URL:" " https://doi.org/10.1023/a:1007154515475, doi:10.1023/a:1007154515475." " This article has 7 citations and is from a peer-reviewed journal." ), "is_oa": False, }, { "title": "Convalescent-anti-sars-cov-2-plasma/immune-globulin", "source": ["semantic_scholar", "crossref"], "key": "unknownauthors2023convalescentantisarscov2plasmaimmuneglobulin", "doi": "10.1007/s40278-023-41815-2", "doc_id": "c2a60b772778732c", "journal": "Reactions Weekly", "authors": [], "formatted_citation": ( "Unknown author(s)." " Convalescent-anti-sars-cov-2-plasma/immune-globulin. Reactions" " Weekly, 1962:145-145, Jun 2023. URL:" " https://doi.org/10.1007/s40278-023-41815-2," " doi:10.1007/s40278-023-41815-2. This article has 0 citations and is" " from a peer-reviewed journal." ), "is_oa": False, }, { "bibtex_type": "article", "publication_date": datetime(2015, 6, 29, tzinfo=UTC), "year": 2015, "volume": "87", "pages": ( "46-51" # Semantic Scholar gives back pages "\n 46-51\n " ), "journal": "Advanced drug delivery reviews", "url": "https://doi.org/10.1016/j.addr.2015.01.008", "title": ( "Pharmacokinetics, biodistribution and cell uptake of antisense" " oligonucleotides." ), "source": ["semantic_scholar", "crossref"], "doi": "10.1016/j.addr.2015.01.008", "doc_id": "35c80e22e6d9a7bc", "dockey": "35c80e22e6d9a7bc", "doi_url": "https://doi.org/10.1016/j.addr.2015.01.008", }, { "publication_date": datetime(2014, 10, 27, tzinfo=UTC), "year": 2014, "volume": "111", "pages": "E4832-E4841", "journal": "Proceedings of the National Academy of Sciences", "title": ( "Developing functional musculoskeletal tissues through hypoxia" " and lysyl oxidase-induced collagen cross-linking" ), "source": ["semantic_scholar", "crossref"], "doi": "10.1073/pnas.1414271111", "doc_id": "048586195b7e92fd", "dockey": "048586195b7e92fd", "doi_url": "https://doi.org/10.1073/pnas.1414271111", }, ], ) @pytest.mark.asyncio async def test_doi_search(paper_attributes: dict[str, str | list[str]]) -> None: async with httpx_aiohttp.HttpxAiohttpClient() as http_client: client_list = [ client for client in ALL_CLIENTS if client != RetractionDataPostProcessor ] client = DocMetadataClient( http_client, metadata_clients=cast( "Collection[type[MetadataPostProcessor[Any] | MetadataProvider[Any]]]", client_list, ), ) details = await client.query(doi=paper_attributes["doi"]) assert details, "Assertions require successful query" assert set(details.other["client_source"]) == set( paper_attributes["source"] ), "Should have the correct source" for key, value in paper_attributes.items(): if key not in {"is_oa", "source"}: if isinstance(value, str): assert ( getattr(details, key).lower() == value.lower() ), f"Should have the correct {key}" else: assert ( getattr(details, key) == value ), f"Should have the correct {key}" elif key == "is_oa": assert ( details.other.get("is_oa") == value ), "Open access data should match" @pytest.mark.vcr @pytest.mark.asyncio async def test_bulk_doi_search() -> None: dois = [ "10.1063/1.4938384", "10.48550/arxiv.2312.07559", "10.1038/s42256-024-00832-8", "10.1101/2024.04.01.587366", "10.1023/a:1007154515475", "10.1007/s40278-023-41815-2", ] async with httpx_aiohttp.HttpxAiohttpClient() as http_client: client = DocMetadataClient(http_client) details = await client.bulk_query([{"doi": doi} for doi in dois]) assert len(details) == 6, "Should return 6 results" assert all(d for d in details), "All results should be non-None" @pytest.mark.vcr @pytest.mark.asyncio async def test_bulk_title_search() -> None: titles = [ ( "Effect of native oxide layers on copper thin-film tensile properties: A" " reactive molecular dynamics study" ), "PaperQA: Retrieval-Augmented Generative Agent for Scientific Research", "Augmenting large language models with chemistry tools", "High-throughput screening of human genetic variants by pooled prime editing", ( "An essential role of active site arginine residue in iodide binding and" " histidine residue in electron transfer for iodide oxidation by" " horseradish peroxidase" ), "Convalescent-anti-sars-cov-2-plasma/immune-globulin", ] async with httpx_aiohttp.HttpxAiohttpClient() as http_client: client = DocMetadataClient(http_client) details = await client.bulk_query([{"title": title} for title in titles]) assert len(details) == 6, "Should return 6 results" assert all(d for d in details), "All results should be non-None" @pytest.mark.vcr @pytest.mark.asyncio async def test_bad_titles() -> None: async with httpx_aiohttp.HttpxAiohttpClient() as http_client: client = DocMetadataClient(http_client) details = await client.query(title="askldjrq3rjaw938h") assert not details, "Should return None for bad title" details = await client.query( title=( "Effect of native oxide layers on copper thin-film tensile properties:" " A study" ) ) assert details, "Should find a similar title" @pytest.mark.asyncio async def test_client_os_error() -> None: """Confirm an OSError variant does not crash us.""" async with httpx_aiohttp.HttpxAiohttpClient() as http_client: client = DocMetadataClient( http_client, metadata_clients=[SemanticScholarProvider] ) with patch.object( http_client, "get", side_effect=httpx.ConnectError( "This used to say 'Bad file descriptor' for aiohttp," " now it's this placeholder for httpx." ), ) as mock_get: assert not await client.query(doi="placeholder") assert mock_get.call_count >= 1, "Expected the exception to have been thrown" @pytest.mark.asyncio @pytest.mark.parametrize( ("return_value", "match"), [ pytest.param({"data": []}, "No results", id="empty-data"), pytest.param({"data": [{}]}, "Unexpected", id="missing-title-key"), ], ) async def test_s2_title_search_edge_cases( return_value: dict[str, Any], match: str ) -> None: async with httpx_aiohttp.HttpxAiohttpClient() as http_client: with patch( "paperqa.clients.semantic_scholar._s2_get_with_retrying", return_value=return_value, ): with pytest.raises(DOINotFoundError, match=match): await s2_title_search("some title", client=http_client) @pytest.mark.vcr @pytest.mark.asyncio async def test_s2_title_search_empty_data() -> None: """Confirm an S2 match response with empty data raises DOINotFoundError.""" async with httpx_aiohttp.HttpxAiohttpClient() as http_client: with pytest.raises(DOINotFoundError, match="No results"): await s2_title_search("empty results edge case query", client=http_client) @pytest.mark.vcr @pytest.mark.asyncio async def test_bad_dois() -> None: async with httpx_aiohttp.HttpxAiohttpClient() as http_client: client = DocMetadataClient(http_client) details = await client.query(title="abs12032jsdafn") assert not details, "Should return None for bad doi" @pytest.mark.vcr @pytest.mark.asyncio async def test_minimal_fields_filtering() -> None: async with httpx_aiohttp.HttpxAiohttpClient() as http_client: client = DocMetadataClient(http_client) details = await client.query( title="Augmenting large language models with chemistry tools", fields=["title", "doi"], ) assert details assert not details.year, "Year should not be populated" assert not details.authors, "Authors should not be populated" assert set(details.other["client_source"]) == { "semantic_scholar", "crossref", }, "Should be from two sources" citation_boilerplate = ( "Unknown author(s). Augmenting large language models with chemistry tools." " ArXiv, Unknown year. URL:" ) assert details.citation in { ( # Match in Nature Machine Intelligence f"{citation_boilerplate} https://doi.org/10.1038/s42256-024-00832-8," " doi:10.1038/s42256-024-00832-8." ), ( # Match in arXiv f"{citation_boilerplate} " "https://doi.org/10.48550/arxiv.2304.05376," " doi:10.48550/arxiv.2304.05376." ), }, "Citation should be populated" assert details.source_quality == -1, "Should be undefined source quality" @pytest.mark.vcr @pytest.mark.asyncio async def test_s2_only_fields_filtering() -> None: async with httpx_aiohttp.HttpxAiohttpClient() as http_client: # now get with authors just from one source s2_client = DocMetadataClient( http_client, metadata_clients=[SemanticScholarProvider] ) s2_details = await s2_client.query( title="Augmenting large language models with chemistry tools", fields=["title", "doi", "authors"], ) assert s2_details assert s2_details.authors, "Authors should be populated" assert set(s2_details.other["client_source"]) == {"semantic_scholar"} assert ( s2_details.citation == "Andrés M Bran, Sam Cox, Oliver Schilter, Carlo Baldassari, Andrew D." " White, and P. Schwaller. Augmenting large language models with chemistry" " tools. ArXiv, Unknown year. URL:" " https://doi.org/10.48550/arxiv.2304.05376," " doi:10.48550/arxiv.2304.05376." ), "Citation should be populated" assert not s2_details.source_quality, "No source quality data should exist" @pytest.mark.vcr @pytest.mark.asyncio async def test_crossref_journalquality_fields_filtering() -> None: async with httpx_aiohttp.HttpxAiohttpClient() as http_client: crossref_client = DocMetadataClient( http_client, metadata_clients=cast( "Collection[type[MetadataPostProcessor[Any] | MetadataProvider[Any]]]", [CrossrefProvider, JournalQualityPostProcessor], ), ) crossref_details = await crossref_client.query( title="Augmenting large language models with chemistry tools", fields=["title", "doi", "authors", "journal"], ) assert crossref_details, "Failed to query crossref" assert set(crossref_details.other["client_source"]) == { "crossref" }, "Should be from only crossref" assert crossref_details.source_quality == 2, "Should have source quality data" assert ( crossref_details.citation == "Andres M. Bran, Sam Cox, Oliver Schilter, Carlo Baldassari, Andrew D." " White, and Philippe Schwaller. Augmenting large language models with" " chemistry tools. Nature Machine Intelligence, Unknown year. URL:" " https://doi.org/10.1038/s42256-024-00832-8," " doi:10.1038/s42256-024-00832-8." ), "Citation should be populated" async with httpx_aiohttp.HttpxAiohttpClient() as http_client: crossref_client = DocMetadataClient( http_client, metadata_clients=cast( "Collection[type[MetadataPostProcessor[Any] | MetadataProvider[Any]]]", [CrossrefProvider, JournalQualityPostProcessor], ), ) nejm_crossref_details = await crossref_client.query( title=( "Beta-Blocker Interruption or Continuation after Myocardial" " Infarction" # codespell:ignore ), authors=["Johanne Silvain"], fields=["title", "doi", "authors", "journal"], ) assert nejm_crossref_details, "Assertions require successful query" assert ( nejm_crossref_details.source_quality == 3 ), "Should have source quality data" @pytest.mark.vcr @pytest.mark.asyncio async def test_author_matching() -> None: async with httpx_aiohttp.HttpxAiohttpClient() as http_client: crossref_client = DocMetadataClient( http_client, metadata_clients=[CrossrefProvider] ) s2_client = DocMetadataClient( http_client, metadata_clients=[SemanticScholarProvider] ) # We add a period at the end so we don't have exact title match. title_with_period = "Augmenting large language models with chemistry tools." crossref_details_bad_author = await crossref_client.query( title=title_with_period, authors=["Jack NoScience"], fields=["title", "doi", "authors"], ) s2_details_bad_author = await s2_client.query( title=title_with_period, authors=["Jack NoScience"], fields=["title", "doi", "authors"], ) s2_details_no_author = await s2_client.query( title=title_with_period, authors=[], fields=["title", "doi", "authors"], ) s2_details_w_author = await s2_client.query( title=title_with_period, authors=["Andres M. Bran", "Sam Cox"], fields=["title", "doi", "authors"], ) assert not crossref_details_bad_author, "Should return None for bad author" assert not s2_details_bad_author, "Should return None for bad author" assert not s2_details_no_author, "Should return None for no author" assert s2_details_w_author, "Should return results for good author" @pytest.mark.vcr @pytest.mark.asyncio async def test_odd_client_requests() -> None: # try querying using an authors match, but not requesting authors back async with httpx_aiohttp.HttpxAiohttpClient() as http_client: client = DocMetadataClient(http_client) details = await client.query( title="Augmenting large language models with chemistry tools", authors=["Andres M. Bran", "Sam Cox"], fields=["title", "doi"], ) assert details, "Assertions require successful query" assert details.authors, "Should return correct author results" # try querying using a title, asking for no DOI back async with httpx_aiohttp.HttpxAiohttpClient() as http_client: client = DocMetadataClient(http_client) details = await client.query( title="Augmenting large language models with chemistry tools", fields=["title"], ) assert details, "Assertions require successful query" assert details.doi, "Should return a doi even though we don't ask for it" # try querying using a title, asking for no title back async with httpx_aiohttp.HttpxAiohttpClient() as http_client: client = DocMetadataClient(http_client) details = await client.query( title="Augmenting large language models with chemistry tools", fields=["doi"], ) assert details, "Assertions require successful query" assert details.title, "Should return a title even though we don't ask for it" async with httpx_aiohttp.HttpxAiohttpClient() as http_client: client = DocMetadataClient(http_client) details = await client.query( doi="10.1007/s40278-023-41815-2", fields=["doi", "title", "gibberish-field", "no-field"], ) assert details, "Assertions require successful query" assert ( details.title ), "Should return title even though we asked for some bad fields" @pytest.mark.asyncio @patch.object(paperqa.clients.crossref, "CROSSREF_API_REQUEST_TIMEOUT", 0.001) @patch.object( paperqa.clients.semantic_scholar, "SEMANTIC_SCHOLAR_API_REQUEST_TIMEOUT", 0.001 ) async def test_ensure_robust_to_timeouts() -> None: async with httpx_aiohttp.HttpxAiohttpClient() as http_client: client = DocMetadataClient(http_client) details = await client.query( doi="10.1007/s40278-023-41815-2", fields=["doi", "title"], ) assert details is None, "Should return None for timeout" def test_bad_init() -> None: with pytest.raises( ValueError, match=r"At least one MetadataProvider must be provided." ): DocMetadataClient(metadata_clients=[]) @pytest.mark.vcr @pytest.mark.asyncio async def test_ensure_sequential_run(caplog) -> None: caplog.set_level(logging.DEBUG, logger=paperqa.clients.__name__) # were using a DOI that is NOT in crossref, but running the crossref client first # we will ensure that both are run sequentially async with httpx_aiohttp.HttpxAiohttpClient() as http_client: client = DocMetadataClient( http_client=http_client, metadata_clients=cast( "Sequence[Collection[type[MetadataPostProcessor[Any] |" " MetadataProvider[Any]]]]", [[CrossrefProvider], [SemanticScholarProvider]], ), ) details = await client.query( doi="10.48550/arxiv.2312.07559", fields=["doi", "title"], ) assert details, "Should find the right DOI in the second client" record_indices: dict[str, list[int]] = {"crossref": [], "semantic_scholar": []} for n, record in enumerate(caplog.records): if not record.name.startswith(paperqa.__name__): # Skip non-PQA logs continue if "CrossrefProvider" in record.msg: record_indices["crossref"].append(n) if "SemanticScholarProvider" in record.msg: record_indices["semantic_scholar"].append(n) assert record_indices["crossref"], "Crossref should run" assert record_indices["semantic_scholar"], "Semantic Scholar should run" assert ( record_indices["crossref"][-1] < record_indices["semantic_scholar"][-1] ), "Crossref should run first" non_clobbered_details = await client.query( doi="10.1063/1.4938384", ) assert set( cast("DocDetails", non_clobbered_details).other["client_source"] ) == { "crossref", "semantic_scholar", }, "Sources should stack, even if sequentially called" @pytest.mark.vcr @pytest.mark.asyncio async def test_ensure_sequential_run_early_stop(caplog) -> None: caplog.set_level(logging.DEBUG, logger=paperqa.clients.__name__) # now we should stop after hitting s2 async with httpx_aiohttp.HttpxAiohttpClient() as http_client: client = DocMetadataClient( http_client=http_client, metadata_clients=cast( "Sequence[Collection[type[MetadataPostProcessor[Any] |" " MetadataProvider[Any]]]]", [[SemanticScholarProvider], [CrossrefProvider]], ), ) details = await client.query( doi="10.48550/arxiv.2312.07559", fields=["doi", "title"], ) assert details, "Should find the right DOI in the second client" record_indices: dict[str, list[int]] = { "crossref": [], "semantic_scholar": [], "early_stop": [], } for n, record in enumerate(caplog.records): if not record.name.startswith(paperqa.__name__): # Skip non-PQA logs continue if "CrossrefProvider" in record.msg: record_indices["crossref"].append(n) if "SemanticScholarProvider" in record.msg: record_indices["semantic_scholar"].append(n) if "stopping early." in record.msg: record_indices["early_stop"].append(n) assert not record_indices["crossref"], "Crossref should not have run" assert record_indices["semantic_scholar"], "Semantic Scholar should have run" assert record_indices["early_stop"], "We should stop early" @pytest.mark.vcr @pytest.mark.asyncio async def test_crossref_retraction_status(stub_data_dir: Path) -> None: async with httpx_aiohttp.HttpxAiohttpClient() as http_client: retract_processor = RetractionDataPostProcessor( f"{stub_data_dir}/stub_retractions.csv" ) crossref_client = DocMetadataClient( http_client, metadata_clients=cast( "Collection[type[MetadataPostProcessor[Any] | MetadataProvider[Any]]]", [CrossrefProvider, retract_processor], ), ) crossref_details = await crossref_client.query( title=( "The Dilemma and Countermeasures of Music Education under the" " Background of Big Data" ), fields=["title", "doi", "authors", "journal"], ) assert crossref_details assert ( "**RETRACTED ARTICLE** Citation: Jiaye Han." in crossref_details.formatted_citation ) assert crossref_details.is_retracted is True, "Should be retracted" @pytest.mark.parametrize( ("name", "expected"), [ ("Doe, John", "John Doe"), ("Doe, Jane Mary", "Jane Mary Doe"), ("O'Doe, John", "John O'Doe"), ("Doe, Jane", "Jane Doe"), ("Family, Jane Mary Elizabeth", "Jane Mary Elizabeth Family"), ("O'Doe, Jane", "Jane O'Doe"), ("Family, John Jr.", "John Jr. Family"), ("Family", "Family"), ("Jane Doe", "Jane Doe"), ("Doe, Jöhn", "Jöhn Doe"), ("Doe, Jòhn", "Jòhn Doe"), ], ) def test_reformat_name(name: str, expected: str) -> None: result = reformat_name(name) assert result == expected, f"Expected '{expected}', but got '{result}' for '{name}'" @pytest.mark.vcr @pytest.mark.asyncio async def test_arxiv_doi_is_used_when_available() -> None: client = DocMetadataClient( metadata_clients={CrossrefProvider, SemanticScholarProvider} ) result = await client.query( title="Attention is All you Need", authors=( # noqa: SIM905 "Ashish Vaswani, Noam Shazeer, Niki Parmar, " "Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, " "Lukasz Kaiser, Illia Polosukhin" ).split(","), ) assert result, "paper should be found" assert result.doi == "10.48550/arxiv.1706.03762" @pytest.mark.vcr @pytest.mark.parametrize( ("doi", "score"), [ ("10.1038/s41598-018-27044-6", 1), ("10.1073/pnas.1205508109", 3), ("10.1186/1471-2148-11-4", 2), ("10.1016/j.semcdb.2016.08.024", 1), ("10.1146/annurev.pathol.4.110807.092311", 2), ("10.1016/j.bbcan.2023.188947", 1), ], ) @pytest.mark.asyncio async def test_tricky_journal_quality_results(doi: str, score: int) -> None: """Test DOIs which won't be found in the journal quality data without munging. Either their titles are non-canonical compared with the journal quality source, they had a duplicate entry in the journal quality data, or they have a swap like an & for and. """ async with httpx_aiohttp.HttpxAiohttpClient() as http_client: crossref_client = DocMetadataClient( http_client, metadata_clients=cast( "Collection[type[MetadataPostProcessor[Any] | MetadataProvider[Any]]]", [CrossrefProvider, JournalQualityPostProcessor], ), ) crossref_details = await crossref_client.query( doi=doi, fields=["title", "doi", "authors", "journal"], ) assert crossref_details, "Failed to query crossref" assert ( crossref_details.source_quality == score ), "Should have source quality data" @pytest.mark.vcr @pytest.mark.parametrize( ("doi", "in_oa", "is_openaccess"), [ pytest.param("10.1021/acs.jctc.5b00178", True, True, id="oa-in-openalex1"), pytest.param("10.1093/nar/gkw1164", True, True, id="oa-in-openalex2"), pytest.param("10.1002/wrna.1370", True, False, id="not-oa-in-openalex"), pytest.param( "10.1046/j.1365-2699.2003.00795", False, None, id="not-in-openalex" ), ], ) @pytest.mark.asyncio @patch.dict(os.environ, {"OPENALEX_API_KEY": ""}) # Unset so VCR doesn't have API key async def test_does_openalex_work( doi: str, in_oa: bool, is_openaccess: bool | None ) -> None: """Run a simple test of OpenAlex, which we primarily want for open access checks.""" async with httpx_aiohttp.HttpxAiohttpClient(timeout=10) as http_client: openalex_client = DocMetadataClient( http_client, metadata_clients=[OpenAlexProvider] ) openalex_details = await openalex_client.query(doi=doi, fields=["open_access"]) if in_oa: assert openalex_details, "Failed to query OpenAlex" assert ( openalex_details.other["open_access"]["is_oa"] == is_openaccess ), "Open access data should match" assert ( openalex_details.year is None ), "Year should not be populated because we set fields" else: assert not openalex_details, "Should have failed" def test_journal_quality_csv_values_are_valid() -> None: valid_quality_values = set(SOURCE_QUALITY_MESSAGES.keys()) | { DocDetails.UNDEFINED_JOURNAL_QUALITY } with DEFAULT_JOURNAL_QUALITY_CSV_PATH.open(encoding="utf-8") as f: invalid_values: list[tuple[str, int]] = [] for row in csv.DictReader(f): quality = int(row["quality"]) if quality not in valid_quality_values: invalid_values.append((row["clean_name"], quality)) assert not invalid_values ================================================ FILE: tests/test_clinical_trials.py ================================================ # pylint: disable=redefined-outer-name import json from unittest.mock import AsyncMock, Mock, patch import httpx import httpx_aiohttp import pytest from paperqa import Docs, Settings from paperqa.sources.clinical_trials import ( add_clinical_trials_to_docs, api_get_clinical_trial, api_search_clinical_trials, format_to_doc_details, parse_clinical_trial, ) SAMPLE_TRIAL_DATA = { "protocolSection": { "identificationModule": { "nctId": "NCT12345678", "briefTitle": "Test Clinical Trial", }, "sponsorCollaboratorsModule": { "responsibleParty": {"investigatorFullName": "Dr. John Doe"}, "leadSponsor": {"name": "Test Organization"}, }, "statusModule": {"startDateStruct": {"date": "2023-01"}}, } } @pytest.fixture def mock_bucket_client(): with patch("app.clinical_trials.GCS_BUCKET_CLINICAL_TRIALS_CLIENT") as mock_client: yield mock_client @pytest.fixture(name="mock_client") def fixture_mock_client() -> httpx.AsyncClient: return AsyncMock(spec=httpx_aiohttp.HttpxAiohttpClient) @pytest.mark.asyncio async def test_api_search_clinical_trials_success(mock_client) -> None: mock_client.get.return_value = mock_response = AsyncMock( status_code=200, raise_for_status=Mock(), text=json.dumps({"studies": [SAMPLE_TRIAL_DATA]}), json=Mock(return_value={"studies": [SAMPLE_TRIAL_DATA]}), get=Mock(return_value={"studies": [SAMPLE_TRIAL_DATA]}), ) result = await api_search_clinical_trials("test query", mock_client) assert result == {"studies": [SAMPLE_TRIAL_DATA]} mock_client.get.assert_called_once() mock_response.raise_for_status.assert_called_once() @pytest.mark.asyncio async def test_api_get_clinical_trial_success(mock_client) -> None: mock_client.get.return_value = mock_response = AsyncMock( raise_for_status=Mock(), json=Mock(return_value=SAMPLE_TRIAL_DATA) ) result = await api_get_clinical_trial("NCT12345678", mock_client) assert result == SAMPLE_TRIAL_DATA mock_client.get.assert_called_once() mock_response.raise_for_status.assert_called_once() @pytest.mark.asyncio async def test_api_get_clinical_trial_not_found(mock_client) -> None: mock_client.get.side_effect = httpx.HTTPStatusError( "Not Found", request=Mock(), response=Mock(status_code=404) ) result = await api_get_clinical_trial("NCT12345678", mock_client) assert result is None, "Should be robust to missing trials" def test_format_to_doc_details(): result = format_to_doc_details(SAMPLE_TRIAL_DATA) assert result.title == "Test Clinical Trial" assert result.authors == ["Dr. John Doe"] assert result.year == 2023 assert "Dr. John Doe" in result.citation assert "Test Clinical Trial" in result.citation assert "Test Organization" in result.citation assert "2023" in result.citation assert "NCT12345678" in result.citation @pytest.mark.asyncio async def test_add_clinical_trials_to_docs(mock_client) -> None: mock_docs = Mock(spec=Docs, aadd_texts=AsyncMock(), texts=[]) mock_client.get.return_value = AsyncMock( raise_for_status=Mock(return_value=None), json=Mock( return_value={ "studies": [ { "protocolSection": { "identificationModule": {"nctId": "NCT12345678"} } } ] } ), ) await add_clinical_trials_to_docs( "test query", mock_docs, Settings(), client=mock_client ) assert ( mock_docs.aadd_texts.call_count == 2 ), "One for the metadata and one for the trial" call_args = mock_docs.aadd_texts.call_args[1] assert "doc" in call_args assert isinstance(call_args["doc"].citation, str) def test_parse_clinical_trial(): # Test data with all fields including detailed description complete_trial_data = { "protocolSection": { "identificationModule": { "nctId": "NCT12345678", "briefTitle": "Sample Trial", "organization": {"fullName": "Test Hospital"}, }, "statusModule": { "overallStatus": "Recruiting", "startDateStruct": {"date": "2023-01"}, "completionDateStruct": {"date": "2024-12"}, }, "descriptionModule": { "briefSummary": "This is a brief summary", "detailedDescription": "This is a detailed description", }, "designModule": { "studyType": "Interventional", "phases": ["Phase 1", "Phase 2"], "enrollmentInfo": {"count": 100}, }, "eligibilityModule": {"eligibilityCriteria": "Must be 18 or older"}, } } # Test data without detailed description minimal_trial_data = { "protocolSection": { "identificationModule": { "nctId": "NCT87654321", "briefTitle": "Basic Trial", }, "statusModule": {}, "descriptionModule": {"briefSummary": "Brief summary only"}, "designModule": {"phases": []}, "eligibilityModule": {}, } } # Test complete data result_complete = parse_clinical_trial(complete_trial_data) # Verify all sections are present assert "CLINICAL TRIAL INFORMATION" in result_complete assert "NCT Number: NCT12345678" in result_complete assert "Organization: Test Hospital" in result_complete assert "Overall Status: Recruiting" in result_complete assert "Start Date: 2023-01" in result_complete assert "Completion Date: 2024-12" in result_complete assert "This is a brief summary" in result_complete assert "This is a detailed description" in result_complete assert "Study Type: Interventional" in result_complete assert "Phase: Phase 1, Phase 2" in result_complete assert "Enrollment: 100 participants" in result_complete assert "Must be 18 or older" in result_complete # Verify section order (detailed description should come after brief summary) brief_pos = result_complete.find("This is a brief summary") detailed_pos = result_complete.find("This is a detailed description") assert ( brief_pos < detailed_pos ), "Detailed description should come after brief summary" # Test minimal data result_minimal = parse_clinical_trial(minimal_trial_data) # Verify default values for missing fields assert "NCT Number: NCT87654321" in result_minimal assert "Organization: Not provided" in result_minimal assert "Start Date: Not provided" in result_minimal assert "Phase: " in result_minimal # Empty phases list results in empty string assert ( "DETAILED DESCRIPTION" not in result_minimal ), "Detailed description section should not be present" # Verify newlines and formatting assert result_complete.count("\n") > result_minimal.count( "\n" ), "Complete result should have more lines due to detailed description" assert "=" * 25 in result_complete, "Section separators should be present" ================================================ FILE: tests/test_configs.py ================================================ import importlib.resources import os import pathlib import re from unittest.mock import patch import pytest from pydantic import BaseModel, ValidationError from pytest_subtests import SubTests import paperqa.configs from paperqa.prompts import citation_prompt from paperqa.settings import ( AgentSettings, IndexSettings, MaybeSettings, PromptSettings, Settings, get_formatted_variables, get_settings, ) from paperqa.types import Doc, DocDetails from paperqa.utils import get_year from tests.conftest import TESTS_DIR def test_prompt_settings_validation() -> None: with pytest.raises(ValidationError): PromptSettings(summary="Invalid {variable}") valid_settings = PromptSettings( summary="{citation} {question} {summary_length} {text}" ) assert valid_settings.summary == "{citation} {question} {summary_length} {text}" valid_pre_settings = PromptSettings(pre="{question}") assert valid_pre_settings.pre == "{question}" def test_get_formatted_variables() -> None: template = "This is a test {variable} with {another_variable}" variables = get_formatted_variables(template) assert variables == {"variable", "another_variable"} @pytest.mark.parametrize( "value", [ pytest.param("fast", id="name"), pytest.param({"parsing": {"use_doc_details": False}}, id="serialized"), ], ) def test_get_settings_with_valid_config(value: MaybeSettings) -> None: settings = get_settings(value) assert not settings.parsing.use_doc_details def test_get_settings_missing_file() -> None: with ( patch("importlib.resources.files", side_effect=FileNotFoundError), pytest.raises(FileNotFoundError), ): get_settings("missing_config") HOME_DIR = str(pathlib.Path.home()) def test_settings_default_instantiation(tmpdir, subtests: SubTests) -> None: default_settings = Settings() # Check we can export a JSON schema Settings.model_json_schema() # Also let's check our default settings work fine with round-trip JSON serialization serde_default_settings = Settings(**default_settings.model_dump(mode="json")) for setting in (default_settings, serde_default_settings): assert any(x in setting.llm for x in ("gpt-", "claude-")) assert setting.answer.evidence_k == 10 assert HOME_DIR in str(setting.agent.index.index_directory) assert ".pqa" in str(setting.agent.index.index_directory) with subtests.test(msg="alternate-pqa-home"): assert HOME_DIR not in str(tmpdir), "Later assertion requires this to pass" with patch.dict(os.environ, values={"PQA_HOME": str(tmpdir)}): alt_home_settings = Settings() assert ( alt_home_settings.agent.index.index_directory != default_settings.agent.index.index_directory ) assert HOME_DIR not in str(alt_home_settings.agent.index.index_directory) assert ".pqa" in str(alt_home_settings.agent.index.index_directory) def test_index_naming(subtests: SubTests) -> None: with subtests.test(msg="no name"): settings = Settings() with pytest.raises(ValueError, match="specify a name"): settings.agent.index.get_named_index_directory() with subtests.test(msg="with name"): settings = Settings(agent=AgentSettings(index=IndexSettings(name="test"))) assert settings.agent.index.get_named_index_directory().name == "test" def test_router_kwargs_present_in_models() -> None: settings = Settings() assert settings.get_llm().config["router_kwargs"] is not None assert settings.get_summary_llm().config["router_kwargs"] is not None @pytest.mark.parametrize( "model_name", [ "o1", "o1-thismodeldoesnotexist", "gpt-5", "gpt-5-2025-08-07", "gpt-5-mini-2025-08-07", ], ) def test_models_requiring_temp_1(model_name: str) -> None: with pytest.warns(UserWarning, match="temperature") as record: # noqa: PT031 s = Settings(llm=model_name, temperature=0) (w,) = record.list assert "temperature must be set to 1" in str(w.message) assert s.temperature == 1 Settings(llm=model_name, temperature=1) assert record.list == [w], "Expected no new warnings with correct temperature" @pytest.mark.parametrize( ("doc_class", "doc_data", "filter_criteria", "expected_result"), [ pytest.param( Doc, { "docname": "Test Paper", "citation": "Test Citation", "dockey": "key1", }, {"docname": "Test Paper"}, True, id="Doc-matching-docname", ), pytest.param( Doc, { "docname": "Test Paper", "citation": "Test Citation", "dockey": "key1", }, {"docname": "Another Paper"}, False, id="Doc-nonmatching-docname", ), pytest.param( DocDetails, { "title": "Test Paper", "authors": ["Alice", "Bob"], "year": 2020, }, {"title": "Test Paper"}, True, id="DocDetails-matching-title", ), pytest.param( DocDetails, { "title": "Test Paper", "authors": ["Alice", "Bob"], "year": 2020, }, {"!year": 2020, "?foo": "bar"}, False, id="DocDetails-inverted-matching-year", ), pytest.param( DocDetails, { "title": "Test Paper", "authors": ["Alice", "Bob"], "year": 2020, }, {"year": 2020, "foo": "bar"}, False, id="DocDetails-missing-param-fail", ), pytest.param( DocDetails, { "title": "Test Paper", "authors": ["Alice", "Bob"], "year": 2020, }, {"?volume": "10", "!title": "Another Paper"}, True, id="DocDetails-relaxed-missing-volume", ), ], ) def test_matches_filter_criteria(doc_class, doc_data, filter_criteria, expected_result): doc = doc_class(**doc_data) assert doc.matches_filter_criteria(filter_criteria) == expected_result def test_citation_prompt_current_year(): expected_year_text = f"the current year is {get_year()}" assert expected_year_text in citation_prompt, ( f"Citation prompt should contain '{expected_year_text}' but got:" f" {citation_prompt}" ) def test_validity_of_bundled_configs(subtests: SubTests) -> None: for config_file in [ f for f in importlib.resources.files(paperqa.configs).iterdir() if f.name.endswith(".json") ]: config_name = config_file.name.removesuffix(".json") with subtests.test(msg=config_name): settings = get_settings(config_name) assert isinstance(settings, Settings) def test_readme_settings_cheatsheet_accuracy(subtests: SubTests) -> None: readme_path = TESTS_DIR.parent / "README.md" # Extract the Markdown table in the Settings Cheatsheet section *_, after_header = readme_path.read_text().partition("## Settings Cheatsheet") cheatsheet_match = re.match(r"\s*\|.*?\n\|[-| ]+\n((?:\|.*\n)+)", after_header) assert cheatsheet_match, "Expected to find Settings Cheatsheet" setting_paths: list[str] = [ row.split("|")[1].strip().strip("`") for row in cheatsheet_match.group(1).strip().split("\n") ] assert setting_paths, "No settings found in the cheatsheet table" assert len(setting_paths) == len(set(setting_paths)), "Expected unique settings" # Check settings in the cheatsheet are present in Settings settings = Settings() for setting_path in setting_paths: with subtests.test(msg=setting_path): # Navigate the dotted path (e.g., "answer.evidence_k" -> settings.answer.evidence_k) obj = settings for part in setting_path.split("."): assert hasattr(obj, part), ( f"Setting path '{setting_path}' does not exist: " f"'{part}' not found on {type(obj).__name__}" ) obj = getattr(obj, part) # Also check the reverse, that all settings are documented def get_leaf_field_paths(model: type[BaseModel], prefix: str = "") -> set[str]: paths: set[str] = set() for name, field_info in model.model_fields.items(): path = f"{prefix}.{name}" if prefix else name if isinstance(field_info.annotation, type) and issubclass( field_info.annotation, BaseModel ): # Field is a nested model paths |= get_leaf_field_paths(field_info.annotation, path) else: paths.add(path) return paths undocumented = get_leaf_field_paths(Settings) - set(setting_paths) assert not undocumented, "Settings fields are missing from the cheatsheet" ================================================ FILE: tests/test_paperqa.py ================================================ import asyncio import contextlib import csv import io import json import pathlib import pickle import random import re import string import sys from collections.abc import AsyncIterable, Sequence from copy import deepcopy from datetime import datetime, timedelta from functools import partial from io import BytesIO from pathlib import Path from typing import TYPE_CHECKING, Any, cast from unittest.mock import MagicMock, call, patch from uuid import UUID, uuid4 import anyio import httpx import litellm import litellm.llms.anthropic.common_utils import numpy as np import pytest import pytest_asyncio from aviary.core import Message from lmi import ( CommonLLMNames, Embeddable, EmbeddingModel, HybridEmbeddingModel, LiteLLMEmbeddingModel, LiteLLMModel, LLMModel, LLMResult, SparseEmbeddingModel, ) from lmi.llms import rate_limited from lmi.utils import VCR_DEFAULT_MATCH_ON, validate_image from paperqa_docling import parse_pdf_to_pages as docling_parse_pdf_to_pages from paperqa_nemotron import parse_pdf_to_pages as nemotron_parse_pdf_to_pages from paperqa_pymupdf import parse_pdf_to_pages as pymupdf_parse_pdf_to_pages from paperqa_pypdf import parse_pdf_to_pages as pypdf_parse_pdf_to_pages from pydantic import ValidationError from pytest_subtests import SubTests from paperqa import ( Doc, DocDetails, Docs, NumpyVectorStore, PQASession, QdrantVectorStore, Settings, Text, VectorStore, ) from paperqa.clients import CrossrefProvider from paperqa.clients.journal_quality import JournalQualityPostProcessor from paperqa.core import ( LLMContextTimeoutError, _map_fxn_summary, llm_parse_json, map_fxn_summary, ) from paperqa.prompts import CANNOT_ANSWER_PHRASE, summary_json_multimodal_system_prompt from paperqa.prompts import qa_prompt as default_qa_prompt from paperqa.readers import ( PDFParserFn, chunk_pdf, parse_image, read_doc, resolve_page_range, ) from paperqa.settings import ( AnswerSettings, AsyncContextSerializer, MultimodalOptions, ParsingSettings, PromptSettings, ) from paperqa.types import ( ChunkMetadata, Context, ParsedMedia, ParsedMetadata, ParsedText, ) from paperqa.utils import ( clean_possessives, encode_id, extract_score, maybe_get_date, maybe_is_html, maybe_is_text, name_in_text, strings_similarity, strip_citations, ) if TYPE_CHECKING: import vcr.request THIS_MODULE = pathlib.Path(__file__) @pytest_asyncio.fixture(name="docs_fixture") async def fixture_docs_fixture(stub_data_dir: Path) -> Docs: docs = Docs() with (stub_data_dir / "paper.pdf").open("rb") as f: await docs.aadd_file( f, citation="Wellawatte et al, XAI Review, 2023", # Skip citation inference doi="10.1021/acs.jctc.2c01235", # Skip DOI inference title="A Perspective on Explanations of Molecular Prediction Models", # Skip title inference ) return docs def test_encode_id() -> None: assert ( encode_id("10.1056/nejmoa2119451") == encode_id("10.1056/NEJMOA2119451") == "945f1f30b11bcae6" ) def test_single_author() -> None: text = "This was first proposed by (Smith 1999)." assert strip_citations(text) == "This was first proposed by ." def test_multiple_authors() -> None: text = "Recent studies (Smith et al. 1999) show that this is true." assert strip_citations(text) == "Recent studies show that this is true." def test_multiple_citations() -> None: text = "As discussed by several authors (Smith et al. 1999; Johnson 2001; Lee et al. 2003)." assert strip_citations(text) == "As discussed by several authors ." def test_citations_with_pages() -> None: text = "This is shown in (Smith et al. 1999, p. 150)." assert strip_citations(text) == "This is shown in ." def test_citations_without_space() -> None: text = "Findings by(Smith et al. 1999)were significant." assert strip_citations(text) == "Findings bywere significant." def test_citations_with_commas() -> None: text = "The method was adopted by (Smith, 1999, 2001; Johnson, 2002)." assert strip_citations(text) == "The method was adopted by ." def test_citations_with_text() -> None: text = "This was noted (see Smith, 1999, for a review)." assert strip_citations(text) == "This was noted ." def test_no_citations() -> None: text = "There are no references in this text." assert strip_citations(text) == "There are no references in this text." def test_malformed_citations() -> None: text = "This is a malformed citation (Smith 199)." assert strip_citations(text) == "This is a malformed citation (Smith 199)." def test_edge_case_citations() -> None: text = "Edge cases like (Smith et al.1999) should be handled." assert strip_citations(text) == "Edge cases like should be handled." def test_citations_with_special_characters() -> None: text = "Some names have dashes (O'Neil et al. 2000; Smith-Jones 1998)." assert strip_citations(text) == "Some names have dashes ." def test_citations_with_nonstandard_chars() -> None: text = ( "In non-English languages, citations might look different (Müller et al. 1999)." ) assert ( strip_citations(text) == "In non-English languages, citations might look different ." ) @pytest.mark.vcr def test_maybe_is_text() -> None: assert maybe_is_text("This is a test. The sample conc. was 1.0 mM (at 245 ^F)") assert not maybe_is_text("\\C0\\C0\\B1\x00") # get front page of wikipedia r = httpx.get( "https://en.wikipedia.org/wiki/National_Flag_of_Canada_Day", headers={ "User-Agent": "PaperQA testing (https://github.com/Future-House/paper-qa)" }, ) assert maybe_is_text(r.text) r_ja = httpx.get( "https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC", headers={ "User-Agent": "PaperQA testing (https://github.com/Future-House/paper-qa)" }, ) assert maybe_is_text(r_ja.text) assert maybe_is_html(BytesIO(r.text.encode())) # now force it to contain lots of weird encoding bad_text = r.text.encode("latin1", "ignore").decode("utf-16", "ignore") assert not maybe_is_text(bad_text) # account for possible spaces in the text due to tables or title pages assert maybe_is_text("entry1 entry2 entry3") # Test high entropy cases # English text with entropy > 6 good_text_high_entropy = string.printable * 10 assert maybe_is_text(good_text_high_entropy, thresh=6) # English text with entropy > 8 bad_text_high_entropy = "".join([chr(i) for i in range(10000, 10300)]) assert not maybe_is_text(bad_text_high_entropy) # Japanese text with entropy > 8 jp_char_ranges = [ (0x3040, 0x309F), # Hiragana (0x30A0, 0x30FF), # Katakana (0x4E00, 0x9FAF), # CJK Unified Ideographs ] jp_chars = [] for start, end in jp_char_ranges: jp_chars.extend([chr(i) for i in range(start, end + 1)]) random.shuffle(jp_chars) bad_jp_text_high_entropy = "".join(jp_chars[:400]) assert not maybe_is_text(bad_jp_text_high_entropy) def test_name_in_text() -> None: name1 = "FooBar2022" name2 = "FooBar2022a" name3 = "FooBar20" text1 = "As mentioned by FooBar2022, this is a great paper" assert name_in_text(name1, text1) assert not name_in_text(name2, text1) assert not name_in_text(name3, text1) text2 = "This is great, as found by FooBar20" assert name_in_text(name3, text2) assert not name_in_text(name1, text2) assert not name_in_text(name2, text2) text3 = "Per previous work (FooBar2022, FooBar2022a), this is great" assert name_in_text(name1, text3) assert name_in_text(name2, text3) assert not name_in_text(name3, text3) text4 = "Per previous work (Foo2022, Bar2023), this is great" assert not name_in_text(name1, text4) assert not name_in_text(name2, text4) assert not name_in_text(name3, text4) text5 = "Per previous work (FooBar2022; FooBar2022a), this is great" assert name_in_text(name1, text5) assert name_in_text(name2, text5) assert not name_in_text(name3, text5) text6 = "According to FooBar2022 and Foobars, this is great" assert name_in_text(name1, text6) assert not name_in_text(name2, text6) assert not name_in_text(name3, text6) text7 = "As stated by FooBar2022.\n\nThis is great" assert name_in_text(name1, text7) assert not name_in_text(name2, text7) assert not name_in_text(name3, text7) def test_extract_score() -> None: sample = """ The text describes an experiment where different cell subtypes, including colorectal cancer-associated fibroblasts, were treated with oxaliplatin for 12 days. The concentration of oxaliplatin used was the EC50 for each cell subtype, which was determined individually. The media were changed every 3 days to avoid complete cell death. The text does not provide information about the percentage of colorectal cancer-associated fibroblasts that typically survive at 2 weeks when cultured with oxaliplatin. (0/10) """ assert extract_score(sample) == 0 sample = """ COVID-19 vaccinations have been shown to be effective against hospitalization from the Omicron and Delta variants, though effectiveness may decrease over time. A study found that vaccine effectiveness against hospitalization peaked around 82-92% after a third dose but declined to 53-77% 15+ weeks after the third dose, depending on age group and hospitalization definition. Stricter definitions of hospitalization, like requiring oxygen use or ICU admission, showed higher and more sustained vaccine effectiveness. 8 """ assert extract_score(sample) == 8 sample = """ Here is a 100-word summary of the text: The text discusses a phase 3 trial of a combined vector vaccine based on rAd26 and rAd5 vectors carrying the SARS-CoV-2 spike protein gene. The trial aimed to assess the efficacy, immunogenicity and safety of the vaccine against COVID-19 in adults. The study design was a randomized, double-blind, placebo-controlled trial done at 25 hospitals in Moscow, Russia. Eligible participants were 18 years or older with no history of COVID-19. The exclusion criteria ensured participants were healthy and had no contraindications for vaccination. The trial aimed to determine if the vaccine could safely and effectively provide protection against COVID-19. Relevance score: 8 """ assert extract_score(sample) == 8 sample = """ Here is a 100-word summary of the provided text: The text details trial procedures for a COVID-19 vaccine, including screening visits, observation visits to assess vital signs, PCR testing, and telemedicine consultations. Participants who tested positive for COVID-19 during screening were excluded from the trial. During the trial , additional PCR tests were only done when COVID-19 symptoms were reported . An electronic health record platform was in place to record data from telemedicine consultations. The text details the screening and trial procedures but does not provide direct evidence regarding the effectiveness of COVID-19 vaccinations. Score: 3/10 """ assert extract_score(sample) == 3 sample = """ Here is a 100-word summary of the text: The text discusses a phase 3 trial of a COVID-19 vaccine in Russia. The vaccine uses a heterologous prime-boost regimen, providing robust immune responses. The vaccine can be stored at -18°C and 2-8°C. The study reports 91.6% efficacy against COVID-19 based on interim analysis of over 21,000 participants. The authors compare their results to other published COVID-19 vaccine efficacy data. They previously published safety and immunogenicity results from phase 1/2 trials of the same vaccine. Relevance score: 8/10. The text provides details on the efficacy and immune response generated by one COVID-19 vaccine in a large phase 3 trial, which is relevant evidence to help answer the question regarding effectiveness of COVID-19 vaccinations. """ assert extract_score(sample) == 8 sample = """ Here is a 100-word summary of the text: The text discusses the safety and efficacy of the BNT162b2 mRNA Covid-19 vaccine. The study found that the vaccine was well tolerated with mostly mild to moderate side effects. The vaccine was found to be highly effective against Covid-19, with an observed vaccine efficacy of 90.5% after the second dose. Severe Covid-19 cases were also reduced among vaccine recipients. The vaccine showed an early protective effect after the first dose and reached full efficacy 7 days after the second dose. The favorable safety and efficacy results provide evidence that the BNT162b2 vaccine is effective against Covid-19. The text provides data on the efficacy and safety results from a clinical trial of the BNT162b2 Covid-19 vaccine, which is highly relevant to answering the question about the effectiveness of Covid-19 vaccinations. """ with pytest.raises(ValueError, match="Failed to extract score"): extract_score(sample) sample = """ Introduce dynamic elements such as moving nodes or edges to create a sense of activity within the network. 2. Add more nodes and connections to make the network appear more complex and interconnected. 3. Incorporate both red and green colors into the network, as the current screenshot only shows green lines. 4. Vary the thickness of the lines to add depth and visual interest. 5. Implement different shades of red and green to create a gradient effect for a more visually appealing experience. 6. Consider adding a background color or pattern to enhance the contrast and make the network stand out. 7. Introduce interactive elements that allow users to manipulate the network, such as dragging nodes or zooming in/out. 8. Use animation effects like pulsing or changing colors to highlight certain parts of the network or to show activity. 9. Add labels or markers to provide information about the nodes or connections, if relevant to the purpose of the network visualization. 10. Consider the use of algorithms that organize the network in a visually appealing manner, such as force-directed placement or hierarchical layouts. 3/10 """ assert extract_score(sample) == 3 sample = ( "The text mentions a work by Shozo Yokoyama titled " '"Evolution of Dim-Light and Color Vision Pigments". ' "This work, published in the Annual Review of Genomics and " "Human Genetics, discusses the evolution of human color vision. " "However, the text does not provide specific details or findings " "from Yokoyama's work. \n" "Relevance Score: 7" ) assert extract_score(sample) == 7 sample = ( "The evolution of human color vision is " "closely tied to theories about the nature " "of light, dating back to the 17th to 19th " "centuries. Initially, there was no clear distinction " "between the properties of light, the eye and retina, " "and color percepts. Major figures in science attempted " "to resolve these issues, with physicists leading most " "advances in color science into the 20th century. Prior " "to Newton, colors were viewed as stages between black " "and white. Newton was the first to describe colors in " "a modern sense, using prisms to disperse light into " "a spectrum of colors. He demonstrated that each color " "band could not be further divided and that different " "colors had different refrangibility. \n" "Relevance Score: 9.5" ) assert extract_score(sample) == 9 @pytest.mark.asyncio async def test_chain_completion(caplog) -> None: caplog.set_level(level="WARNING", logger="lmi.types") s = Settings(llm="babbage-002", temperature=0.2) outputs = [] def accum(x) -> None: outputs.append(x) llm = s.get_llm() messages = [Message(content="The duck says")] # With callbacks, we use streaming completion = await llm.call_single(messages=messages, callbacks=[accum]) first_id = completion.id assert isinstance(first_id, UUID) assert completion.text assert completion.seconds_to_first_token > 0 assert completion.prompt_count is not None assert completion.prompt_count > 0 assert completion.completion_count is not None assert completion.completion_count > 0 assert completion.model == "babbage-002" assert str(completion) == "".join(outputs) assert completion.cost > 0 assert not caplog.records # Without callbacks, we don't use streaming completion = await llm.call_single(messages=messages) assert isinstance(completion.id, UUID) assert completion.id != first_id, "Expected different response ID" assert completion.text assert completion.seconds_to_first_token == 0 assert completion.seconds_to_last_token > 0 assert completion.prompt_count is not None assert completion.prompt_count > 0 assert completion.completion_count is not None assert completion.completion_count > 0 try: assert completion.model == "babbage-002" assert completion.cost > 0 except AssertionError: # Account for https://github.com/BerriAI/litellm/issues/10572 assert any( "Failed to calculate cost".lower() in r.message.lower() for r in caplog.records ) @pytest.mark.asyncio @pytest.mark.parametrize( ("llm", "summary_llm", "embedding"), [ pytest.param( "anthropic/claude-sonnet-4-6", "anthropic/claude-sonnet-4-6", "text-embedding-3-small", id="anthropic", ), pytest.param( "gemini/gemini-2.5-flash", "gemini/gemini-2.5-flash", "gemini/gemini-embedding-001", id="gemini", ), pytest.param( "gpt-5-mini-2025-08-07", "gpt-5-mini-2025-08-07", "text-embedding-3-small", id="openai", ), ], ) async def test_model_chain( stub_data_dir: Path, llm: str, summary_llm: str, embedding: str ) -> None: settings = Settings(llm=llm, summary_llm=summary_llm, embedding=embedding) # Use sequential evidence calls so later caching assertions are reliable settings.answer.max_concurrent_requests = 1 # Anthropic's Claude Sonnet prompt caching requires a minimum prefix of 2,048 tokens, # so extend our prompt to surpass this threshold settings.prompts.summary_json_system += ( "\n\n## Examples\n\n" "Below are examples of how to produce your JSON response given an excerpt and" " question. Note that the summary should capture specific details like numbers," " equations, or direct quotes, and the relevance_score should reflect how useful" " the excerpt is for answering the question.\n\n" "Example 1 (highly relevant excerpt):\n" 'Excerpt: "The Phase III randomized controlled trial (NCT04012345) enrolled' " 500 patients across 30 clinical sites in North America and Europe between" " January 2019 and December 2021. The primary endpoint was progression-free" " survival (PFS) at 24 months, which showed a statistically significant" " improvement in the treatment arm (HR 0.58, 95% CI 0.42-0.79, p<0.001)." " Secondary endpoints included overall survival (OS), objective response rate" " (ORR), and duration of response (DOR). The treatment was generally well" " tolerated, with the most common adverse events being fatigue (32%)," " nausea (28%), and neutropenia (18%). Grade 3-4 adverse events occurred" " in 15% of patients in the treatment arm compared to 12% in the placebo arm." " Subgroup analyses revealed consistent benefits across age groups, geographic" " regions, and baseline disease characteristics, supporting the robustness" " of the primary findings. The Data Safety Monitoring Board recommended" " early termination of the trial based on the overwhelming efficacy observed" ' at the planned interim analysis."\n' 'Question: "What were the primary endpoints of the clinical trial?"\n' 'Response: {{"summary": "The Phase III trial (NCT04012345) enrolled 500 patients' " across 30 sites. The primary endpoint was progression-free survival (PFS) at" " 24 months, showing significant improvement (HR 0.58, 95% CI 0.42-0.79," " p<0.001). Secondary endpoints included overall survival, objective response" " rate, and duration of response. The DSMB recommended early termination due" ' to overwhelming efficacy.", "relevance_score": 9}}\n\n' "Example 2 (irrelevant excerpt):\n" 'Excerpt: "Photosynthesis is a biological process by which green plants and' " certain other organisms convert light energy, usually from the sun, into" " chemical energy in the form of glucose. This process involves the absorption" " of carbon dioxide (CO2) from the atmosphere and water (H2O) from the soil," " releasing oxygen (O2) as a byproduct. The light-dependent reactions occur" " in the thylakoid membranes of the chloroplasts, where chlorophyll absorbs" " photons and uses their energy to split water molecules, generating ATP and" " NADPH. These energy carriers then power the Calvin cycle in the stroma," " where CO2 is fixed into three-carbon sugars that are later assembled into" " glucose and other organic molecules essential for plant growth and" " development. The overall equation for photosynthesis can be summarized as" " 6CO2 + 6H2O + light energy -> C6H12O6 + 6O2, representing one of the" ' most important biochemical reactions on Earth."\n' 'Question: "How does quantum computing work?"\n' 'Response: {{"summary": "", "relevance_score": 0}}\n\n' "Example 3 (partially relevant excerpt):\n" 'Excerpt: "The 2023 Global Climate Report indicated that the average global' " temperature was 1.45 degrees Celsius above pre-industrial levels, making" " it the warmest year on record. Sea levels rose by 3.4 mm per year over" " the past decade, while Arctic sea ice extent continued to decline at a" " rate of 13% per decade. The report also highlighted that atmospheric CO2" " concentrations reached 421 ppm, the highest in at least 800,000 years." " Notably, renewable energy sources accounted for 30% of global electricity" " generation, with solar and wind power seeing the largest increases." " Investment in clean energy technologies surpassed $1.7 trillion globally," " reflecting growing momentum in the transition away from fossil fuels." " However, the report cautioned that current trajectories remain insufficient" " to meet the Paris Agreement targets without substantially accelerated action" ' across all sectors of the economy."\n' 'Question: "What is the current state of renewable energy adoption?"\n' 'Response: {{"summary": "Renewable energy sources accounted for 30% of' " global electricity generation in 2023, with solar and wind power seeing" " the largest increases. Investment in clean energy technologies surpassed" " $1.7 trillion globally. However, current trajectories remain insufficient" ' to meet Paris Agreement targets without accelerated action.",' ' "relevance_score": 4}}\n\n' "Example 4 (technical excerpt with equations):\n" 'Excerpt: "The transformer architecture introduced by Vaswani et al. (2017)' " computes attention using the scaled dot-product mechanism defined as" " Attention(Q,K,V) = softmax(QK^T / sqrt(d_k))V, where Q, K, and V represent" " the query, key, and value matrices respectively, and d_k is the dimension" " of the key vectors. Multi-head attention extends this by projecting Q, K," " and V into h different subspaces, computing attention in parallel, and" " concatenating the results. The model uses positional encodings based on" " sinusoidal functions: PE(pos,2i) = sin(pos/10000^(2i/d_model)) and" " PE(pos,2i+1) = cos(pos/10000^(2i/d_model)). The original transformer" " achieved a BLEU score of 28.4 on the WMT 2014 English-to-German translation" " task, surpassing all previously published models by more than 2 BLEU points." " Training was conducted on 8 NVIDIA P100 GPUs for 3.5 days, using the Adam" ' optimizer with beta_1=0.9, beta_2=0.98, and epsilon=10^-9."\n' 'Question: "How is attention computed in transformer models?"\n' 'Response: {{"summary": "The transformer uses scaled dot-product attention:' " Attention(Q,K,V) = softmax(QK^T / sqrt(d_k))V, where Q, K, V are query," " key, value matrices and d_k is the key dimension. Multi-head attention" " projects into h subspaces and computes attention in parallel. Positional" " encodings use sinusoidal functions. The original model achieved 28.4 BLEU" ' on WMT 2014 English-to-German.", "relevance_score": 10}}\n\n' "Example 5 (tangentially relevant excerpt):\n" "Excerpt: \"The history of computing can be traced back to Charles Babbage's" " Analytical Engine in 1837, which contained many features of modern computers" " including an arithmetic logic unit, control flow through conditional branching" " and loops, and integrated memory. Ada Lovelace wrote the first algorithm" " intended for implementation on the Analytical Engine in 1843, making her" " widely regarded as the first computer programmer. The development of" " electronic computers in the 1940s, starting with machines like ENIAC and" " Colossus, marked the beginning of the digital age. ENIAC could perform" " 5,000 additions per second and occupied 1,800 square feet of floor space." " The invention of the transistor in 1947 at Bell Labs by Bardeen, Brattain," " and Shockley revolutionized electronics, leading to smaller, faster, and" " more reliable computing devices. Moore's observation in 1965 that the" " number of transistors on integrated circuits doubled roughly every two" " years guided the industry's roadmap for decades.\"\n" 'Question: "What are the key advances in quantum computing hardware?"\n' 'Response: {{"summary": "The excerpt discusses classical computing history' " from Babbage's Analytical Engine (1837) through transistors (1947) and" " Moore's Law (1965), but does not address quantum computing hardware.\"," ' "relevance_score": 1}}\n\n' "Example 6 (relevant excerpt with mixed data):\n" 'Excerpt: "The longitudinal cohort study followed 12,500 participants aged' " 45-75 over a median period of 8.3 years. Multivariate Cox regression" " analysis identified several independent risk factors for cardiovascular" " events: hypertension (HR 1.82, 95% CI 1.54-2.15), type 2 diabetes" " (HR 1.67, 95% CI 1.38-2.02), current smoking (HR 2.14, 95% CI" " 1.76-2.60), and LDL cholesterol above 160 mg/dL (HR 1.45, 95% CI" " 1.19-1.77). Participants who engaged in at least 150 minutes of moderate" " aerobic exercise per week had a significantly lower risk (HR 0.62, 95%" " CI 0.51-0.75, p<0.001). The population-attributable fraction for" " modifiable risk factors was estimated at 63.7%, suggesting that nearly" " two-thirds of cardiovascular events could theoretically be prevented" " through lifestyle modifications and appropriate medical management." " Sensitivity analyses using competing risk models and multiple imputation" ' for missing data yielded consistent results across all subgroups."\n' 'Question: "What are the modifiable risk factors for cardiovascular disease?"\n' 'Response: {{"summary": "A cohort study of 12,500 participants (median 8.3' " years follow-up) identified modifiable risk factors: hypertension (HR 1.82)," " type 2 diabetes (HR 1.67), smoking (HR 2.14), and high LDL cholesterol" " (HR 1.45). Exercise of 150+ min/week was protective (HR 0.62, p<0.001)." " The population-attributable fraction was 63.7%, indicating nearly two-thirds" ' of events are theoretically preventable.", "relevance_score": 9}}\n\n' "Now apply the same approach to the actual excerpt and question provided below." " Remember to include specific numbers, statistics, and direct quotes when" " available, and set relevance_score to 0 if the excerpt is not relevant.\n" ) outputs: list[str] = [] def accum(x) -> None: outputs.append(x) llm_model = settings.get_llm() messages = [ Message(content="The duck says"), ] completion = await llm_model.call_single( messages=messages, callbacks=[accum], ) assert completion.seconds_to_first_token > 0 assert completion.prompt_count is not None assert completion.prompt_count > 0 assert completion.completion_count is not None assert completion.completion_count > 0 assert str(completion) == "".join(outputs) assert isinstance(completion.text, str) assert completion.cost > 0 completion = await llm_model.call_single( messages=messages, ) assert completion.seconds_to_first_token == 0 assert completion.seconds_to_last_token > 0 assert isinstance(completion.text, str) assert completion.cost > 0 docs = Docs() await docs.aadd( stub_data_dir / "flag_day.html", "National Flag of Canada Day", settings=settings, ) assert len(docs.texts) >= 2, "Test needs at least two chunks for caching assertions" captured_results: list[LLMResult] = [] orig_call_single = LLMModel.call_single async def spy_call_single(self, *args, **kwargs): result = await orig_call_single(self, *args, **kwargs) captured_results.append(result) await asyncio.sleep(3) # Encourage cache warm up between calls return result with patch.object(LLMModel, "call_single", spy_call_single): session = await docs.aget_evidence( "What is the national flag of Canada?", settings=settings ) assert session.cost > 0 assert captured_results, "Test requires LLM calls to check caching" if llm_model.provider == litellm.LlmProviders.ANTHROPIC: # Anthropic: on a cold cache, the first call writes a cache entry # Gemini: uses implicit caching with no creation event -- the raw response # omits cachedContentTokenCount entirely # OpenAI's API has no cache creation field, only cache reads, # SEE: https://platform.openai.com/docs/guides/prompt-caching assert (captured_results[0].cache_creation_tokens or 0) > 0 or ( captured_results[0].cache_read_tokens or 0 ) > 0, "Expected first Anthropic call to interact with prompt cache" # On a warm cache (re-running within the TTL), subsequent calls should # read from the cache. try: assert any( (r.cache_read_tokens or 0) > 0 for r in captured_results[1:] ), "Expected subsequent calls to reuse prompt cache" except AssertionError: if llm_model.provider != litellm.LlmProviders.GEMINI: raise # Even with a 3-sec delay for caching to take place, Google Gemini # does not reliably report cache reads. So to avoid flaky CI, # this assertion is only enforced for non-Gemini providers @pytest.mark.vcr( match_on=[*VCR_DEFAULT_MATCH_ON, "body"] # body is needed for /embeddings ) @pytest.mark.asyncio async def test_docs_lifecycle(subtests: SubTests, stub_data_dir: Path) -> None: docs = Docs() assert await docs.aadd( stub_data_dir / "flag_day.html", citation='"National Flag of Canada Day." WikiMedia Foundation, 2023, Accessed now', # Skip citation inference title="National Flag of Canada Day", # Skip title inference dockey="test", ) grav_hill_docname = await docs.aadd( stub_data_dir / "gravity_hill.md", citation='"Gravity Hill." WikiMedia Foundation, 2023, Accessed now', # Skip citation inference title="Gravity hill", # Skip title inference ) assert grav_hill_docname, "Test expects successful add" with subtests.test(msg="citation-creation"): assert docs.docs["test"].docname == "National2023" with subtests.test(msg="text-contains"): await docs.aget_evidence("What is the national flag of Canada?") assert docs.texts_index.texts_hashes assert docs.texts assert all(t in docs.texts_index for t in docs.texts) with subtests.test(msg="delete"): (grav_hill_details,) = ( d for d in docs.docs.values() if d.docname == grav_hill_docname ) prior_texts_index_size = len(docs.texts_index) docs.delete(docname=grav_hill_docname) assert grav_hill_details.dockey not in docs.docs, "Details should be gone" assert not [ t for t in docs.texts if t.doc == grav_hill_details ], "Texts should be gone" if len(docs.texts_index) == prior_texts_index_size: pytest.xfail( "Per https://github.com/Future-House/paper-qa/issues/1140" " this can be improved" ) with subtests.test(msg="cleanup"): docs.texts_index.clear() assert docs.texts assert all(t not in docs.texts_index for t in docs.texts) @pytest.mark.asyncio async def test_evidence(stub_data_dir: Path) -> None: debug_settings = Settings.from_name("debug") debug_settings.parsing.multimodal = False docs = Docs() assert await docs.aadd( stub_data_dir / "paper.pdf", citation="Wellawatte et al, XAI Review, 2023", # Skip citation inference doi="10.1021/acs.jctc.2c01235", # Skip DOI inference title="A Perspective on Explanations of Molecular Prediction Models", # Skip title inference settings=debug_settings, ) assert docs.texts, "Test expects texts to be added" assert all( not t.media for t in docs.texts ), "Expected no media to be parsed with multimodal disabled" evidence = ( await docs.aget_evidence( PQASession(question="What does XAI stand for?"), settings=debug_settings, ) ).contexts assert len(evidence) >= debug_settings.answer.evidence_k assert len({e.context for e in evidence}) == len( evidence ), "Expected unique contexts" texts = {c.text for c in evidence} assert texts, "Below assertions require at least one text to be used" orig_acompletion = litellm.acompletion has_made_scoreless_context = False no_score_context_body = "MAKEUNIQUE Explainable Artificial Intelligence (XAI)" async def acompletion_that_breaks_first_context(*args, **kwargs): completion = await orig_acompletion(*args, **kwargs) nonlocal has_made_scoreless_context if not has_made_scoreless_context: assert len(completion.choices) == 1, "Test expects one choice" completion.choices[0].message.content = no_score_context_body has_made_scoreless_context = True return completion # Let's check we are resilient to bad context creation with patch.object(litellm, "acompletion", acompletion_that_breaks_first_context): # Let's also check we can get other evidence using the same underlying sources other_evidence = ( await docs.aget_evidence( PQASession(question="What is an acronym for explainable AI?"), settings=debug_settings, ) ).contexts assert all( c.context != no_score_context_body for c in other_evidence ), "Expected context without score to be replaced via retrying" assert texts.intersection( {c.text for c in other_evidence} ), "We should be able to reuse sources across evidence calls" @pytest.mark.vcr @pytest.mark.asyncio async def test_nonduplicate_contexts() -> None: doc1 = Doc(docname="stub1", dockey="stub1", citation="Stub 1") text1 = Text(name="stub1", text="I like turtles", doc=doc1) text2 = Text(**text1.model_dump()) question = "What do you like?" # Prior session with a context we want to dedupe against session = PQASession( question=question, contexts=[ Context( question=question, context=( "The excerpt states 'I like turtles,'" " indicating a preference for turtles." ), text=text1, score=10, ) ], ) # This pattern of pre-populating Docs, whereas it's not the # intended flow, it's technically possible docs = Docs(texts=[text2]) assert await docs.aadd_texts(texts=[text1], doc=doc1) session = await docs.aget_evidence(session) assert len(session.contexts) == 1, "Expected just one context" @pytest.mark.asyncio async def test_json_evidence(docs_fixture: Docs) -> None: settings = Settings.from_name("fast") settings.prompts.use_json = True settings.prompts.summary_json_system = ( "Provide a summary of the relevant information" " that could help answer the question based on the excerpt." " Your summary, combined with many others," " will be given to the model to generate an answer." " Respond with the following JSON format:" '\n\n{{\n "summary": "...",\n "author_name": "...",\n "relevance_score": 0-10,\n}}' "\n\nwhere `summary` is relevant information from the text - about 100 words." " `author_name` specifies the author." " `relevance_score` is an integer 0-10 for the relevance of `summary` to the question." "\n\nThe excerpt may or may not contain relevant information." " If not, leave `summary` empty, and make `relevance_score` be 0." ) orig_acompletion = litellm.acompletion has_made_bad_json_context = False bad_json_context = ( # Broken summary and relevance_score '{\n "summary": "Complete of th' '\n "author_name": "Sentinel value.",' '\n "relevance_score": "A"\n}' ) async def acompletion_that_breaks_first_context(*args, **kwargs): completion = await orig_acompletion(*args, **kwargs) nonlocal has_made_bad_json_context if not has_made_bad_json_context: assert len(completion.choices) == 1, "Test expects one choice" completion.choices[0].message.content = bad_json_context has_made_bad_json_context = True return completion # Let's check we are resilient to bad context creation with patch.object(litellm, "acompletion", acompletion_that_breaks_first_context): evidence = ( await docs_fixture.aget_evidence( PQASession(question="Who wrote this article?"), settings=settings, ) ).contexts evidence_with_authors = [ c for c in evidence if hasattr(c, "author_name") and c.author_name ] assert evidence_with_authors assert all( "sentinel" not in c.author_name.lower() for c in evidence_with_authors ), "Expected broken context retrying to work" @pytest.mark.asyncio async def test_ablations(docs_fixture: Docs) -> None: settings = Settings() settings.answer.evidence_skip_summary = True settings.answer.evidence_retrieval = False contexts = ( await docs_fixture.aget_evidence( "Which page is the statement 'Deep learning (DL) is advancing the boundaries of" " computational chemistry because it can accurately model non-linear" " structure-function relationships.' on?", settings=settings, ) ).contexts assert ( contexts[0].text.text.strip() == contexts[0].context ), "summarization not ablated" assert len(contexts) == len(docs_fixture.texts), "evidence retrieval not ablated" @pytest.mark.asyncio async def test_location_awareness(stub_data_dir: Path) -> None: settings = Settings( answer=AnswerSettings(evidence_k=3), prompts=PromptSettings( use_json=False, system=( "Answer either N/A, a page number, or a page range." " For example N/A, Page 10, or Pages 10-12." " Bibliography text is always N/A." " If there are titles like 1Introduction in the paper excerpt," " there's likely a PDF page concatenation here such that" " Introduction is actually on page 2, not page 1." " For this reason, prefer pulling page or page ranges" " from the citation over paper excerpt." " The citation usually starts with name2023title pages X-Y," " so respond with Pages X-Y." ), summary=( "## Paper Citation\n\n{citation}\n\n## Paper Excerpt\n\n{text}" "\n\n## Question\n\n{question}" ), ), parsing=ParsingSettings( # Only read in first eight pages to save CI costs/runtime reader_config={"chunk_chars": 5000, "overlap": 250, "page_range": (1, 8)}, ), ) docs = Docs() assert await docs.aadd( stub_data_dir / "paper.pdf", citation="Wellawatte et al, XAI Review, 2023", # Skip citation inference doi="10.1021/acs.jctc.2c01235", # Skip DOI inference title="A Perspective on Explanations of Molecular Prediction Models", # Skip title inference settings=settings, ) session = await docs.aget_evidence( "Which page or page range has the full statement (insensitive to newlines)" " 'Deep learning (DL) is advancing the boundaries of computational chemistry" " because it can accurately model non-linear structure-function relationships." " Applications of DL can be found in a broad spectrum spanning" " from quantum computing to drug discovery to materials design.' on?" " If this statement is not present, just answer N/A.", settings=settings, ) def to_pages(value: Context) -> str: cxt_val = value.context.lower().split("\n")[0] page_range = cxt_val.split("page's")[-1].split("pages")[-1].split("page")[-1] return page_range.strip().removesuffix(".") # noqa: FURB184 # NOTE: scores are useless here because we didn't describe them in the prompt locations = [to_pages(c) for c in session.contexts] try: # 2-3 is not strictly correct, but it's feasible enough that we allow it here assert any( x in locations for x in ("2", "1-3", "1 - 3", "2-3", "2 - 3") ), f"correct location not found in parsed evidence {locations}" except AssertionError: if "1" not in locations: # Fall 2025 LLMs are not smart enough yet :/ so just allow saying page 1 raise @pytest.mark.asyncio async def test_query(docs_fixture) -> None: settings = Settings(prompts={"answer_iteration_prompt": None}) await docs_fixture.aquery("Is XAI usable in chemistry?", settings=settings) @pytest.mark.asyncio async def test_custom_context_str_fn(docs_fixture) -> None: async def custom_context_str_fn( # noqa: RUF029 settings: Settings, # noqa: ARG001 contexts: list[Context], # noqa: ARG001 question: str, # noqa: ARG001 pre_str: str | None = None, # noqa: ARG001 ) -> str: return "TEST OVERRIDE" assert isinstance(custom_context_str_fn, AsyncContextSerializer) settings = Settings( custom_context_serializer=custom_context_str_fn, prompts={"answer_iteration_prompt": None}, ) session = await docs_fixture.aquery( "Is XAI usable in chemistry?", settings=settings ) assert ( session.context == "TEST OVERRIDE" ), "Expected custom context string to be returned." @pytest.mark.asyncio async def test_aquery_groups_contexts_by_question(docs_fixture) -> None: session = PQASession(question="What is the relationship between chemistry and AI?") doc = Doc(docname="test_doc", citation="Test Doc, 2025", dockey="key1") text1 = Text(text="XAI is useful for molecules.", name="t1", doc=doc) text2 = Text(text="Drug discovery uses AI.", name="t2", doc=doc) text3 = Text(text="Organic chemistry is a field.", name="t3", doc=doc) session.contexts = [ Context( text=text1, context="Explanation about XAI and molecules (Smith 1999).", score=6, question="Is XAI usable in chemistry?", ), Context( text=text2, context="Details on how drug discovery leverages AI.", score=5, question="Is XAI usable in chemistry?", ), Context( text=text3, context="General facts about organic chemistry.", score=5, question="What is organic chemistry?", ), ] settings = Settings( prompts={"answer_iteration_prompt": None}, answer={ "group_contexts_by_question": True, "skip_evidence_citation_strip": True, }, ) result = await docs_fixture.aquery(session, settings=settings) final_context_str = result.context assert ( 'Contexts related to the question: "Is XAI usable in chemistry?"' in final_context_str ) assert ( 'Contexts related to the question: "What is organic chemistry?"' in final_context_str ) assert "Explanation about XAI and molecules (Smith 1999)." in final_context_str assert "Details on how drug discovery leverages AI." in final_context_str assert "General facts about organic chemistry." in final_context_str assert "\n\n---\n\n" in final_context_str q1_header_pos = final_context_str.find( 'Contexts related to the question: "Is XAI usable in chemistry?"' ) q2_header_pos = final_context_str.find( 'Contexts related to the question: "What is organic chemistry?"' ) context1_pos = final_context_str.find( "Explanation about XAI and molecules (Smith 1999)." ) context3_pos = final_context_str.find("General facts about organic chemistry.") assert ( 0 == q1_header_pos < context1_pos ), "Expected q1 header to be first, and the context to follow." assert q1_header_pos < q2_header_pos assert q2_header_pos < context3_pos @pytest.mark.asyncio async def test_query_with_iteration(docs_fixture) -> None: # we store these results to check that the prompts are OK my_results: list[LLMResult] = [] # explicitly set the prompt to use QA iterations settings = Settings() llm = settings.get_llm() llm.llm_result_callback = my_results.append prior_answer = "No, it isn't usable in chemistry." question = "Is XAI usable in chemistry?" prior_session = PQASession(question=question, answer=prior_answer) await docs_fixture.aquery(prior_session, llm_model=llm, settings=settings) assert prior_answer in cast( "str", my_results[-1].prompt[1].content, # type: ignore[union-attr, index] ), "prior answer not in prompt" # run without a prior session to check that the flow works correctly await docs_fixture.aquery(question, llm_model=llm, settings=settings) assert settings.prompts.answer_iteration_prompt[:10] not in cast( # type: ignore[index] "str", my_results[-1].prompt[1].content, # type: ignore[union-attr, index] ), "prior answer prompt should not be inserted" @pytest.mark.asyncio async def test_llmresult_callback(docs_fixture: Docs) -> None: my_results: list[LLMResult] = [] settings = Settings.from_name("fast") summary_llm = settings.get_summary_llm() summary_llm.llm_result_callback = my_results.append await docs_fixture.aget_evidence( "What is XAI?", settings=settings, summary_llm_model=summary_llm ) assert my_results assert my_results, "Expected the callback to append results" assert my_results[0].name assert my_results[0].session_id @pytest.mark.parametrize( ("llm", "llm_settings"), [ pytest.param( "deepseek/deepseek-reasoner", { "model_list": [ { "model_name": "deepseek/deepseek-reasoner", "litellm_params": { "model": "deepseek/deepseek-reasoner", "api_base": "https://api.deepseek.com/v1", }, } ] }, id="deepseek-reasoner", ), pytest.param( "openrouter/deepseek/deepseek-r1", {}, id="openrouter-deepseek", ), ], ) @pytest.mark.vcr(match_on=[*VCR_DEFAULT_MATCH_ON, "body"]) @pytest.mark.asyncio async def test_get_reasoning(docs_fixture: Docs, llm: str, llm_settings: dict) -> None: settings = Settings( llm=llm, llm_config=llm_settings, ) response = await docs_fixture.aquery("What is XAI?", settings=settings) assert response.answer_reasoning @pytest.mark.asyncio async def test_duplicate(stub_data_dir: Path, tmp_path) -> None: """Check Docs doesn't store duplicates, while checking nonduplicate docs are stored.""" docs = Docs() # First, check adding a straight-up duplicate doc assert await docs.aadd( stub_data_dir / "bates.txt", citation="WikiMedia Foundation, 2023, Accessed now", dockey="test1", ) assert ( await docs.aadd( stub_data_dir / "bates.txt", citation="WikiMedia Foundation, 2023, Accessed now", dockey="test1", ) is None ), "Expected duplicate add to indicate no new doc was added" assert len(docs.docs) == 1, "Should have added only one document" # Next, check adding a different doc works, and also check citation inference common_doi = "10.1234/flag" assert await docs.aadd( stub_data_dir / "flag_day.html", dockey="flag_day", doi=common_doi ) assert ( len(set(docs.docs.keys())) == 2 ), "Unique documents should be hashed as unique" flag_day = docs.docs["flag_day"] assert isinstance(flag_day, DocDetails) assert flag_day.doi == common_doi assert all( x in flag_day.citation.lower() for x in ("wikipedia", "flag") ), "Expected citation to be inferred" assert flag_day.content_hash # Now, check adding a different file but same metadata # (emulating main text vs supplemental information) # will be seen as a different doc flag_day_content = await anyio.Path(stub_data_dir / "flag_day.html").read_bytes() assert len(flag_day_content) >= 1000, "Expected long file to test truncation" await anyio.Path(tmp_path / "flag_day.html").write_bytes(flag_day_content[:-100]) assert await docs.aadd( tmp_path / "flag_day.html", dockey="flag_day_shorter", doi=common_doi ) assert len(set(docs.docs.keys())) == 3, "Expected a third document to be added" shorter_flag_day = docs.docs["flag_day_shorter"] assert isinstance(shorter_flag_day, DocDetails) assert shorter_flag_day.doi == common_doi assert all( x in shorter_flag_day.citation.lower() for x in ("wikipedia", "flag") ), "Expected citation to be inferred" assert shorter_flag_day.content_hash assert flag_day.content_hash != shorter_flag_day.content_hash assert flag_day.doc_id != shorter_flag_day.doc_id @pytest.mark.asyncio @pytest.mark.parametrize("vector_store", [NumpyVectorStore, QdrantVectorStore]) async def test_docs_with_custom_embedding( subtests: SubTests, stub_data_dir: Path, vector_store: type[VectorStore] ) -> None: class MyEmbeds(EmbeddingModel): name: str = "my_embed" async def embed_documents(self, texts): return [[0.0, 0.28, 0.95] for _ in texts] docs = Docs(texts_index=vector_store()) await docs.aadd( stub_data_dir / "bates.txt", citation="WikiMedia Foundation, 2023, Accessed now", embedding_model=MyEmbeds(), ) with subtests.test(msg="confirm-embedding"): assert docs.texts[0].embedding == [0.0, 0.28, 0.95] with subtests.test(msg="copying-before-get-evidence"): # Before getting evidence, shallow and deep copies are the same docs_shallow_copy = Docs( texts_index=type(docs.texts_index)(**docs.texts_index.model_dump()), **docs.model_dump(exclude={"texts_index"}), ) docs_deep_copy = deepcopy(docs) assert ( docs.texts_index == docs_shallow_copy.texts_index == docs_deep_copy.texts_index ) with subtests.test(msg="copying-after-get-evidence"): # After getting evidence, a shallow copy of Docs is not the same because its # texts index gets lazily populated, while a deep copy should preserve it _ = await docs.aget_evidence( "What country is Frederick Bates from?", embedding_model=MyEmbeds() ) docs_shallow_copy = Docs( texts_index=type(docs.texts_index)(**docs.texts_index.model_dump()), **docs.model_dump(exclude={"texts_index"}), ) docs_deep_copy = deepcopy(docs) assert docs.texts_index != docs_shallow_copy.texts_index assert docs.texts_index == docs_deep_copy.texts_index with subtests.test(msg="clear-vector-store"): # Test that the vector store has content before clearing if isinstance(docs.texts_index, QdrantVectorStore): # For QdrantVectorStore, we need to check if collection exists and has points assert await docs.texts_index._collection_exists() collection_info = await docs.texts_index.client.get_collection( docs.texts_index.collection_name ) assert collection_info.points_count > 0 assert len(docs.texts_index) > 0 assert docs.texts_index.texts_hashes # Clear the vector store via Docs docs.clear_docs() # Verify the vector store is empty if isinstance(docs.texts_index, QdrantVectorStore): assert not await docs.texts_index._collection_exists() assert docs.texts_index._point_ids is None assert len(docs.texts_index) == 0 assert not docs.texts_index.texts_hashes @pytest.mark.asyncio @pytest.mark.parametrize("vector_store", [NumpyVectorStore, QdrantVectorStore]) async def test_sparse_embedding( stub_data_dir: Path, vector_store: type[VectorStore] ) -> None: docs = Docs(texts_index=vector_store()) await docs.aadd( stub_data_dir / "bates.txt", citation="WikiMedia Foundation, 2023, Accessed now", embedding_model=SparseEmbeddingModel(), ) assert isinstance( docs.texts[0].embedding, list ), "We require embeddings to be a list" assert any(docs.texts[0].embedding), "We require embeddings to be populated" assert all( len(np.array(x.embedding).shape) == 1 for x in docs.texts ), "Embeddings should be 1D" # check the embeddings are the same size assert docs.texts[0].embedding is not None assert docs.texts[1].embedding is not None assert np.shape(docs.texts[0].embedding) == np.shape(docs.texts[1].embedding) @pytest.mark.asyncio @pytest.mark.parametrize("vector_store", [NumpyVectorStore, QdrantVectorStore]) async def test_hybrid_embedding( stub_data_dir: Path, vector_store: type[VectorStore] ) -> None: emb_model = HybridEmbeddingModel( models=[LiteLLMEmbeddingModel(), SparseEmbeddingModel()] ) docs = Docs(texts_index=vector_store()) await docs.aadd( stub_data_dir / "bates.txt", citation="WikiMedia Foundation, 2023, Accessed now", embedding_model=emb_model, ) assert isinstance( docs.texts[0].embedding, list ), "We require embeddings to be a list" assert any(docs.texts[0].embedding), "We require embeddings to be populated" # check the embeddings are the same size assert docs.texts[0].embedding is not None assert docs.texts[1].embedding is not None assert np.shape(docs.texts[0].embedding) == np.shape(docs.texts[1].embedding) # now try via alias emb_settings = Settings( embedding="hybrid-text-embedding-3-small", ) await docs.aadd( stub_data_dir / "bates.txt", citation="WikiMedia Foundation, 2023, Accessed now", embedding_model=emb_settings.get_embedding_model(), ) assert any(docs.texts[0].embedding) @pytest.mark.asyncio async def test_custom_llm_custom_media(stub_data_dir: Path) -> None: captured_messages: list[list[Message]] = [] class StubLLMModel(LLMModel): name: str = "custom/myllm" async def acompletion( self, messages: list[Message], **kwargs, # noqa: ARG002 ) -> list[LLMResult]: captured_messages.append(messages) return [ LLMResult( model=self.name, text="Echo 2\nRelevance score: 8", prompt=messages, prompt_count=1, completion_count=1, ) ] @rate_limited async def acompletion_iter( self, messages: list[Message], **kwargs, # noqa: ARG002 ) -> AsyncIterable[LLMResult]: yield LLMResult( model=self.name, text="Echo 2\nRelevance score: 8", prompt=messages, prompt_count=1, completion_count=1, ) async def check_rate_limit(self, token_count: float, **kwargs) -> None: """This is a dummy check.""" docs = Docs() await docs.aadd( stub_data_dir / "bates.txt", citation="WikiMedia Foundation, 2023, Accessed now", dockey="test", llm_model=StubLLMModel(), ) stub_doc = Doc(docname="stub-gcs", citation="Stub GCS Citation", dockey="stub-gcs") signed_url = ( "https://storage.googleapis.com/test-bucket/img.png" "?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Signature=abc" ) await docs.aadd_texts( texts=[ Text( text="This chunk contains an image from GCS.", name="gcs-chunk", doc=stub_doc, media=[ParsedMedia(index=0, url=signed_url)], ) ], doc=stub_doc, ) settings = Settings( prompts={"use_json": False}, answer={"evidence_retrieval": False, "evidence_skip_summary": False}, ) session = await docs.aget_evidence( "Echo", summary_llm_model=StubLLMModel(), settings=settings ) assert session.contexts, "Expected at least one context" assert any( "Echo" in c.context for c in session.contexts ), "Expected text-based evidence containing 'Echo'" signed_url_msgs = [ m for msgs in captured_messages for m in msgs if m.content and m.is_multimodal and any( entry.get("type") == "image_url" and entry["image_url"]["url"] == signed_url for entry in json.loads(m.content) ) ] assert any( "Summarize the excerpt below to help answer a question" in m.content for m in signed_url_msgs if m.content ), "Expected the signed GCS URL to be used when gathering evidence" @pytest.mark.asyncio async def test_docs_pickle(stub_data_dir) -> None: """Ensure that Docs object can be pickled and unpickled correctly.""" docs = Docs() await docs.aadd( stub_data_dir / "flag_day.html", "WikiMedia Foundation, 2023, Accessed now", dockey="test", ) # Pickle the Docs object docs_pickle = pickle.dumps(docs) unpickled_docs = pickle.loads(docs_pickle) assert unpickled_docs.docs["test"].docname == "Wiki2023" assert len(unpickled_docs.docs) == 1 @pytest.mark.asyncio @pytest.mark.parametrize( ("qa_prompt", "unsure_sentinel"), [ pytest.param(default_qa_prompt, CANNOT_ANSWER_PHRASE, id="default-unsure"), pytest.param( default_qa_prompt.replace(CANNOT_ANSWER_PHRASE, "I am unsure"), "I am unsure", id="custom-unsure", ), ], ) async def test_unrelated_context( agent_test_settings: Settings, stub_data_dir: Path, qa_prompt: str, unsure_sentinel: str, ) -> None: agent_test_settings.prompts.qa = qa_prompt assert unsure_sentinel in qa_prompt, "Test relies on unsure sentinel in qa prompt" docs = Docs() assert await docs.aadd( stub_data_dir / "bates.txt", "WikiMedia Foundation, 2023, Accessed now" ) assert docs.texts, "Test requires at least one text" session = await docs.aget_evidence( "What do scientist estimate as the planetary composition of Jupyter?", settings=agent_test_settings, ) session.contexts.append( # Give a context so the rest of the test can run Context( context="George Washington is a founding father", question="What do scientist estimate as the planetary composition of Jupyter?", text=docs.texts[0], score=1, ) ) for c in session.contexts: assert c.score <= 2, "Expected contexts to be considered irrelevant" session = await docs.aquery(session, settings=agent_test_settings) assert unsure_sentinel in session.answer @pytest.mark.asyncio async def test_repeat_keys(stub_data_dir) -> None: docs = Docs() result = await docs.aadd( stub_data_dir / "bates.txt", "WikiMedia Foundation, 2023, Accessed now" ) assert result result = await docs.aadd( stub_data_dir / "bates.txt", "WikiMedia Foundation, 2023, Accessed now" ) assert not result assert len(docs.docs) == 1 await docs.aadd( stub_data_dir / "flag_day.html", "WikiMedia Foundation, 2023, Accessed now" ) assert len(docs.docs) == 2 # check keys ds = list(docs.docs.values()) assert ds[0].docname == "Wiki2023" assert ds[1].docname == "Wiki2023a" @pytest.mark.asyncio async def test_pdf_reader_w_no_match_doc_details(stub_data_dir: Path) -> None: docs = Docs() docname = await docs.aadd( stub_data_dir / "paper.pdf", "Wellawatte et al, XAI Review, 2023", ) (doc_details,) = docs.docs.values() assert doc_details.content_hash == "41f786fcc56d27ff0c1507153fae3774" assert doc_details.docname == docname, "Added name should match between details" # doc will be a DocDetails object, but nothing can be found # thus, we retain the prior citation data assert ( doc_details.citation == doc_details.formatted_citation == "Wellawatte et al, XAI Review, 2023" ), "Formatted citation should be the same when no metadata is found." @pytest.mark.asyncio async def test_pdf_reader_w_no_chunks(stub_data_dir: Path) -> None: settings = Settings.from_name("debug") assert settings.parsing.defer_embedding, "Test relies on deferred embedding" settings.parsing.reader_config["chunk_chars"] = 0 # Have one chunk = entire text # don't want to shove whole document into llm to get citation or embedding settings.parsing.use_doc_details = False settings.summary_llm = "gpt-4o-mini" # context window needs to fit our one chunk docs = Docs() await docs.aadd( stub_data_dir / "paper.pdf", "Wellawatte et al, XAI Review, 2023", settings=settings, ) assert len(docs.texts) == 1, "Should have been one chunk" assert docs.texts[0].embedding is None, "Should have deferred the embedding" @pytest.mark.vcr @pytest.mark.parametrize("defer_embeddings", [True, False]) @pytest.mark.asyncio async def test_partly_embedded_texts(defer_embeddings: bool) -> None: settings = Settings.from_name("fast") settings.parsing.defer_embedding = defer_embeddings docs = Docs() assert isinstance( docs.texts_index, NumpyVectorStore ), "We want this test to cover NumpyVectorStore" stub_doc = Doc(docname="stub", citation="stub", dockey="stub") pre_embedded_text = Text(text="I like turtles.", name="sentence1", doc=stub_doc) pre_embedded_text.embedding = ( await settings.get_embedding_model().embed_documents([pre_embedded_text.text]) )[0] # Some of these texts are partly embedded, some are not texts_to_add = [ pre_embedded_text, Text(text="I like cats.", name="sentence2", doc=stub_doc, metadata="stub"), ] assert texts_to_add[0] != texts_to_add[1], "Test assumes different texts" assert hash(texts_to_add[0]) != hash( texts_to_add[1] ), "Test assumes different texts" # 1. Add texts, noting some are partly embedded await docs.aadd_texts(texts=texts_to_add, doc=stub_doc) assert docs.texts == texts_to_add assert not docs.texts_index.texts assert not docs.texts_index.texts_hashes # 2. Gather evidence should work await docs.aget_evidence("What do I like?") assert docs.texts_index.texts == docs.texts == texts_to_add assert len(docs.texts_index.texts_hashes) == len(texts_to_add) # 3. Gathering evidence again should not change shapes await docs.aget_evidence("What was it that I liked?") assert docs.texts_index.texts == docs.texts == texts_to_add assert len(docs.texts_index.texts_hashes) == len(texts_to_add) # some of the stored requests will be identical on # method, scheme, host, port, path, and query (if defined) # body will always be different between requests # adding body so that vcr correctly match the right request with its response. @pytest.mark.vcr(match_on=[*VCR_DEFAULT_MATCH_ON, "body"]) @pytest.mark.asyncio async def test_pdf_reader_match_doc_details(stub_data_dir: Path) -> None: docs = Docs() docname = await docs.aadd( stub_data_dir / "paper.pdf", "Wellawatte et al, A Perspective on Explanations of Molecular Prediction" " Models, XAI Review, 2023", use_doc_details=True, clients={ CrossrefProvider, JournalQualityPostProcessor, }, # Limit to only crossref since s2 is too flaky fields=["author", "journal", "citation_count"], ) (doc_details,) = docs.docs.values() assert doc_details.content_hash == "41f786fcc56d27ff0c1507153fae3774" assert doc_details.docname == docname, "Added name should match between details" # Crossref is non-deterministic in its ordering for results # (it can give DOI '10.1021/acs.jctc.2c01235' or DOI '10.26434/chemrxiv-2022-qfv02') # thus we need to capture both possible dockeys assert doc_details.dockey in {"8ce7ddba9c9dcae6", "a353fa2478475c9c"} assert isinstance(doc_details, DocDetails) # note year is unknown because citation string is only parsed for authors/title/doi # AND we do not request it back from the metadata sources assert doc_details.docname == "wellawatteUnknownyearaperspectiveon" assert doc_details.authors assert set(doc_details.authors) == { "Geemi P. Wellawatte", "Heta A. Gandhi", "Aditi Seshadri", "Andrew D. White", } assert doc_details.doi in { "10.1021/acs.jctc.2c01235", "10.26434/chemrxiv-2022-qfv02", } match = re.search( r"This article has (\d+) citations", doc_details.formatted_citation ) assert match num_citations = int(match.group(1)) assert num_citations >= 1, "Expected at least one citation" assert ( "Journal of Chemical Theory and Computation" in doc_details.formatted_citation ) or ("ChemRxiv" in doc_details.formatted_citation) num_retries = 3 for _ in range(num_retries): session = await docs.aquery("Are counterfactuals actionable? [yes/no]") if any(w in session.answer for w in ("yes", "Yes")): assert f"This article has {num_citations} citations" in session.context assert any( c.id in session.raw_answer for c in session.contexts ), "No context ids found in answer" assert all( c.id not in session.formatted_answer for c in session.contexts ), "Context ids should not be in formatted answer" return raise AssertionError(f"Query was incorrect across {num_retries} retries.") @pytest.mark.asyncio async def test_fileio_reader_pdf(stub_data_dir: Path) -> None: docs = Docs() with (stub_data_dir / "paper.pdf").open("rb") as f: await docs.aadd_file(f, "Wellawatte et al, XAI Review, 2023") num_retries = 3 for _ in range(num_retries): session = await docs.aquery("Are counterfactuals actionable? [yes/no]") if any(w in session.answer for w in ("yes", "Yes")): return raise AssertionError(f"Query was incorrect across {num_retries} retries.") @pytest.mark.asyncio async def test_fileio_reader_txt(stub_data_dir: Path) -> None: # can't use curie, because it has trouble with parsed HTML docs = Docs() with (stub_data_dir / "bates.txt").open("rb") as file: file_content = file.read() await docs.aadd_file( BytesIO(file_content), "WikiMedia Foundation, 2023, Accessed now", ) session = await docs.aquery("What country was Frederick Bates born in?") assert "United States" in session.answer @pytest.mark.parametrize( ("page_range", "page_count", "expected"), [ pytest.param(None, 10, range(10), id="all-pages"), pytest.param(3, 10, range(2, 3), id="single-page"), pytest.param((2, 5), 10, range(1, 5), id="page-range-tuple"), pytest.param(1, 10, range(1), id="first-page"), pytest.param(15, 10, range(14, 10), id="single-page-exceeds-count"), pytest.param(10, 10, range(9, 10), id="single-page-at-count"), pytest.param((2, 15), 10, range(1, 10), id="tuple-end-exceeds-count"), pytest.param((2, 10), 10, range(1, 10), id="tuple-end-at-count"), ], ) def test_resolve_page_range( page_range: int | tuple[int, int] | None, page_count: int, expected: range ) -> None: assert resolve_page_range(page_range, page_count) == expected @pytest.mark.asyncio @pytest.mark.parametrize( "pdf_parser", [pypdf_parse_pdf_to_pages, pymupdf_parse_pdf_to_pages] ) async def test_parser_only_reader(pdf_parser: PDFParserFn, stub_data_dir: Path) -> None: doc_path = stub_data_dir / "paper.pdf" parsed_text = await read_doc( Path(doc_path), Doc(docname="foo", citation="Foo et al, 2002", dockey="1"), parsed_text_only=True, parse_pdf=pdf_parser, full_page=True, # Simple to support across many parsers ) assert parsed_text.metadata.name assert "pdf" in parsed_text.metadata.name assert parsed_text.metadata.chunk_metadata is None assert isinstance(parsed_text.content, dict) num_chars = 0 for value in parsed_text.content.values(): assert isinstance(value, tuple) num_chars += len(value[0]) assert parsed_text.metadata.count_parsed_media > 1 assert parsed_text.metadata.count_parsed_media == len( parsed_text.content ), "Full parsing should have one screenshot per page" assert parsed_text.metadata.total_parsed_text_length == num_chars @pytest.mark.asyncio @pytest.mark.parametrize( "pdf_parser", [ pymupdf_parse_pdf_to_pages # TODO: add PyPDF when it supports multiple images/page ], ) async def test_chunk_metadata_reader( pdf_parser: PDFParserFn, stub_data_dir: Path ) -> None: chunk_text, metadata = await read_doc( stub_data_dir / "paper.pdf", Doc(docname="foo", citation="Foo et al, 2002", dockey="1"), parsed_text_only=False, # noqa: FURB120 include_metadata=True, parse_pdf=pdf_parser, chunk_chars=3000, overlap=100, ) assert metadata.name assert "pdf" in metadata.name assert isinstance(metadata.chunk_metadata, ChunkMetadata) assert metadata.chunk_metadata.name assert "overlap-document" in metadata.chunk_metadata.name assert metadata.chunk_metadata.overlap == 100 assert metadata.chunk_metadata.size == 3000 assert len(chunk_text) > 2, "Expected multiple chunks, for meaningful assertions" assert all(len(chunk.text) <= metadata.chunk_metadata.size for chunk in chunk_text) assert metadata.total_parsed_text_length // metadata.chunk_metadata.size <= len( chunk_text ) assert all( chunk_text[i].text[-100:] == chunk_text[i + 1].text[:100] for i in range(len(chunk_text) - 1) ) # Let's check the pages in the chunk names first_page, _ = chunk_text[0].name.rsplit(" ", maxsplit=1)[-1].split("-") assert first_page == "1", "First chunk should be for page 1" stlast_page, last_page = chunk_text[-1].name.rsplit(" ", maxsplit=1)[-1].split("-") assert ( int(last_page) - int(first_page) > 2 ), "Expected many pages, for meaningful assertions" assert ( len(chunk_text[-1].text) < metadata.chunk_metadata.size ), "Expected last chunk to be a partial chunk, for meaningful assertions" assert ( int(last_page) - int(stlast_page) <= 2 ), "Incorrect page range if last chunk is a partial chunk" assert metadata.count_parsed_media > 1, "Expected media to be parsed" assert ( sum(len(t.media) for t in chunk_text) == metadata.count_parsed_media ), "Expected chunks' media to match parsed media" chunk_text, metadata = await read_doc( stub_data_dir / "flag_day.html", Doc(docname="foo", citation="Foo et al, 2002", dockey="1"), parsed_text_only=False, # noqa: FURB120 include_metadata=True, chunk_chars=3000, overlap=100, ) # NOTE the use of tiktoken changes the actual char and overlap counts assert metadata.name assert "html" in metadata.name assert isinstance(metadata.chunk_metadata, ChunkMetadata) assert metadata.chunk_metadata.name assert "overlap-text" in metadata.chunk_metadata.name assert metadata.chunk_metadata.overlap == 100 assert metadata.chunk_metadata.size == 3000 assert all( len(chunk.text) <= metadata.chunk_metadata.size * 1.25 for chunk in chunk_text ) assert metadata.total_parsed_text_length // metadata.chunk_metadata.size <= len( chunk_text ) for code_input in ( Path(__file__), # Python gets parsed into `list[str]` content stub_data_dir / ".DS_Store", # .DS_Store gets parsed into `str` content stub_data_dir / "py.typed", # Marker file gets parsed into empty `list` content ): chunk_text, metadata = await read_doc( path=code_input, doc=Doc(docname="foo", citation="Foo et al, 2002", dockey="1"), include_metadata=True, chunk_chars=3000, overlap=100, ) assert metadata.name assert "txt" in metadata.name assert isinstance(metadata.chunk_metadata, ChunkMetadata) assert metadata.chunk_metadata.name assert "overlap-code" in metadata.chunk_metadata.name assert metadata.chunk_metadata.overlap == 100 assert metadata.chunk_metadata.size == 3000 assert all( len(chunk.text) <= metadata.chunk_metadata.size * 1.25 for chunk in chunk_text ) assert metadata.total_parsed_text_length // metadata.chunk_metadata.size <= len( chunk_text ) def test_media_to_image_url(subtests: SubTests) -> None: with subtests.test(msg="data-jpg"): media = ParsedMedia(index=0, data=b"fake_jpg", info={"suffix": ".jpg"}) url = media.to_image_url() assert "image/jpeg" in url with subtests.test(msg="data-jpeg"): media = ParsedMedia(index=0, data=b"fake_jpeg", info={"suffix": ".jpeg"}) url = media.to_image_url() assert "image/jpeg" in url with subtests.test(msg="data-png"): media = ParsedMedia(index=0, data=b"fake_png", info={"suffix": ".png"}) url = media.to_image_url() assert "image/png" in url with subtests.test(msg="data-default"): media = ParsedMedia(index=0, data=b"fake_png") url = media.to_image_url() assert "image/png" in url with subtests.test(msg="url"): media = ParsedMedia(index=0, url="https://storage.example.com/img.png") assert media.to_image_url() == "https://storage.example.com/img.png" def test_parsed_media_data_or_url() -> None: with pytest.raises(ValidationError, match="one of"): ParsedMedia(index=0, data=b"") with pytest.raises(ValidationError, match="one of"): ParsedMedia(index=0) with pytest.raises(ValidationError, match="not both"): ParsedMedia(index=0, data=b"img", url="https://example.com/img.png") media_with_data = ParsedMedia(index=0, data=b"image-bytes") assert media_with_data.data == b"image-bytes" assert not media_with_data.url media_with_url = ParsedMedia(index=0, url="https://storage.example.com/img.png") assert media_with_url.url == "https://storage.example.com/img.png" assert not media_with_url.data with pytest.raises(ValueError, match="Cannot generate an ID"): media_with_url.to_id() with pytest.raises(ValueError, match=r"(?:Cannot|no need to) save"): media_with_url.save("image.png") assert media_with_data != media_with_url assert media_with_url != media_with_data def test_parsed_media_url_only_hash_eq() -> None: m1 = ParsedMedia(index=0, url="https://storage.example.com/img.png") m2 = ParsedMedia(index=0, url="https://storage.example.com/img.png") assert m1 == m2 assert hash(m1) == hash(m2) m3 = ParsedMedia(index=0, url="https://storage.example.com/other.png") assert m1 != m3 # Mixed: one has data, the other only a URL — never equal m_data = ParsedMedia(index=0, data=b"img") m_url = ParsedMedia(index=0, url="https://storage.example.com/img.png") assert m_data != m_url assert m_url != m_data @pytest.mark.asyncio async def test_image_aggregation(stub_data_dir: Path) -> None: png_path = stub_data_dir / "sf_districts.png" # Test how self-comparisons work ((_, (parsed_image,)),) = cast(dict, (await parse_image(png_path)).content).values() assert parsed_image == parsed_image, "Expected equality" # noqa: PLR0124 assert parsed_image.to_id() == parsed_image.to_id(), "Expected same ID" assert len({parsed_image, parsed_image}) == 1, "Expected shared hash" assert not parsed_image.text, "Expected no text for later assertions to make sense" assert ( parsed_image.info.get("type") != "table" ), "Expected no table for later assertions to make sense" # Test how self-comparisons work ((_, (parsed_image2,)),) = cast( dict, (await parse_image(png_path)).content ).values() assert parsed_image == parsed_image2, "Expected equality to persist across reads" assert ( parsed_image.to_id() == parsed_image2.to_id() ), "Expected ID to persist across reads" assert ( len({parsed_image, parsed_image2}) == 1 ), "Expected hash to persist across reads" # Test different read details ((_, (parsed_image3,)),) = cast( dict, (await parse_image(png_path)).content ).values() parsed_image3.text = "Golden Gate" parsed_image3.info["type"] = "table" assert parsed_image != parsed_image3, "Expected tables to be differentiable" assert ( parsed_image.to_id() != parsed_image3.to_id() ), "Expected ID to mismatch between tables and images" assert ( len({parsed_image, parsed_image3}) == 2 ), "Expected tables to be hashed differently" @pytest.mark.asyncio async def test_read_doc_images_metadata(stub_data_dir: Path) -> None: png_path = stub_data_dir / "sf_districts.png" doc = Doc(docname="stub", citation="stub", dockey="stub") # Test parsing only parsed_text = await read_doc(png_path, doc, parsed_text_only=True) assert isinstance(parsed_text.content, dict) assert "1" in parsed_text.content page_content = parsed_text.content["1"] assert isinstance(page_content, tuple) text_content, (parsed_image,) = page_content assert not text_content, "Expected no text content for an image" assert isinstance(parsed_image, ParsedMedia) assert parsed_image.index == 0 assert isinstance(parsed_image.data, bytes) assert parsed_image.data assert not parsed_image.text, "Expected no text content for a standalone image" assert parsed_image.info["suffix"] == ".png" image_id = parsed_image.to_id() assert image_id.version == 4, "Expected a uuid4-compatible ID" assert image_id == UUID("f6426bc3-382a-45a4-8677-08744044864f") assert parsed_text.metadata.name assert "image" in parsed_text.metadata.name assert parsed_text.metadata.count_parsed_media == 1 assert parsed_text.metadata.total_parsed_text_length == 0 assert parsed_text.metadata.chunk_metadata is None # Test parsing + 'chunking' (text,) = await read_doc(png_path, doc) assert isinstance(text, Text) assert text.doc == doc (image,) = text.media assert image == parsed_image # Test including metadata texts_with_metadata = await read_doc(png_path, doc, include_metadata=True) assert isinstance(texts_with_metadata, tuple) texts, metadata = texts_with_metadata assert len(texts) == 1 assert texts[0] == text assert metadata.name assert "image" in metadata.name assert metadata.count_parsed_media == 1 assert metadata.total_parsed_text_length == 0 assert metadata.chunk_metadata is not None assert not metadata.chunk_metadata.size assert not metadata.chunk_metadata.overlap assert metadata.chunk_metadata.name assert "algorithm=none" in metadata.chunk_metadata.name @pytest.mark.asyncio async def test_read_doc_images_concurrency(stub_data_dir: Path) -> None: png_path = stub_data_dir / "sf_districts.png" doc = Doc(docname="stub", citation="stub", dockey="stub") validation_mock = MagicMock() async def validate(data: bytes) -> None: # noqa: RUF029 validate_image(io.BytesIO(data)) validation_mock(data) # Check we can concurrently read in the same image many times concurrent_call_count = 10 seen_media = set() bulk_texts = await asyncio.gather( *( read_doc(png_path, doc, validator=validate) for _ in range(concurrent_call_count) ) ) for (text,) in bulk_texts: assert text.doc == doc assert len(text.media) == 1 seen_media.add(text.media[0]) assert ( len(seen_media) == 1 ), "Expected the concurrent reads to all have the same parsed result" validation_mock.assert_has_calls( [call(next(iter(seen_media)).data)] * concurrent_call_count ) class TestMultimodalOptions: @pytest.mark.parametrize( ("value", "expected"), [ (False, MultimodalOptions.OFF), (True, MultimodalOptions.ON_WITH_ENRICHMENT), (MultimodalOptions.OFF, MultimodalOptions.OFF), ( MultimodalOptions.ON_WITH_ENRICHMENT, MultimodalOptions.ON_WITH_ENRICHMENT, ), ( MultimodalOptions.ON_WITHOUT_ENRICHMENT, MultimodalOptions.ON_WITHOUT_ENRICHMENT, ), ], ) def test_from_value( self, value: bool | MultimodalOptions, expected: MultimodalOptions ) -> None: assert MultimodalOptions.from_value(value) == expected @pytest.mark.parametrize( ("multimodal_option", "expected"), [ (False, (False, False)), (True, (True, True)), (MultimodalOptions.OFF, (False, False)), (MultimodalOptions.ON_WITH_ENRICHMENT, (True, True)), (MultimodalOptions.ON_WITHOUT_ENRICHMENT, (True, False)), ], ) def test_should_parse_and_enrich_media( self, multimodal_option: bool | MultimodalOptions, expected: tuple[bool, bool] ) -> None: assert ( ParsingSettings(multimodal=multimodal_option).should_parse_and_enrich_media == expected ) def record_non_llm_requests( request: "vcr.request.Request", ) -> "vcr.request.Request | None": """Filter to only record non-OpenAI non-Anthropic requests.""" return ( request if all(x not in request.uri for x in ("api.openai.com", "api.anthropic.com")) else None ) @pytest.mark.vcr(before_record_request=record_non_llm_requests) @pytest.mark.asyncio async def test_image_enrichment_normal_use(stub_data_dir: Path) -> None: unenriched_settings = Settings( answer=AnswerSettings(evidence_k=2), # Only one context is actually necessary parsing=ParsingSettings(multimodal=MultimodalOptions.ON_WITHOUT_ENRICHMENT), ) unenriched_docs = Docs() await unenriched_docs.aadd( stub_data_dir / "paper.pdf", citation="Wellawatte et al, XAI Review, 2023", # Skip citation inference doi="10.1021/acs.jctc.2c01235", # Skip DOI inference title="A Perspective on Explanations of Molecular Prediction Models", # Skip title inference settings=unenriched_settings, ) unenriched_mm_texts = [text for text in unenriched_docs.texts if text.media] assert all( not m.info.get("enriched_description") for t in unenriched_mm_texts for m in t.media ), "Test expects no enrichment for the comparison" enriched_settings = Settings( answer=AnswerSettings(evidence_k=2), # Only one context is actually necessary parsing=ParsingSettings(multimodal=MultimodalOptions.ON_WITH_ENRICHMENT), ) enriched_docs = Docs() assert await enriched_docs.aadd( stub_data_dir / "paper.pdf", citation="Wellawatte et al, XAI Review, 2023", # Skip citation inference doi="10.1021/acs.jctc.2c01235", # Skip DOI inference title="A Perspective on Explanations of Molecular Prediction Models", # Skip title inference settings=enriched_settings, ) enriched_mm_texts = [t for t in enriched_docs.texts if t.media] assert all( m.info.get("enriched_description") for t in enriched_mm_texts for m in t.media ), "Expected enrichment to have occurred" # Before asking FigQA-style questions, confirm the inputs are equivalent assert all( t_unen.name == t_en.name and len(t_unen.media) == len(t_en.media) and all( m_unen.to_id() == m_en.to_id() for m_unen, m_en in zip(t_unen.media, t_en.media, strict=True) ) for t_unen, t_en in zip(unenriched_mm_texts, enriched_mm_texts, strict=True) ), "Test expects same texts and ordering from both adds" # Ask a FigQA-style question, where the answer only exists # in the figure's image (and not the text) fig1_question = "What else is f(x) besides a model? Looking for return values" fig1_media = enriched_mm_texts[0].media[0] fig1_enrichment = fig1_media.info["enriched_description"] assert isinstance(fig1_enrichment, str) fig3_question = "What is Base?" fig3_media = enriched_mm_texts[1].media[-1] fig3_enrichment = fig3_media.info["enriched_description"] assert isinstance(fig3_enrichment, str) cached_exc: AssertionError | None = None if "f(x)" in fig1_enrichment: # If Figure 1's question is answerable, try to answer with it try: unenriched_session1 = await unenriched_docs.aquery( fig1_question, settings=unenriched_settings ) assert ( CANNOT_ANSWER_PHRASE in unenriched_session1.answer ), "Expected unsure without enrichment" enriched_session1 = await enriched_docs.aquery( fig1_question, settings=enriched_settings ) assert [ c for c in enriched_session1.contexts if c.id in enriched_session1.used_contexts if c.text.media # Use to_id() to ignore info, just looking at media text/data and any(m.to_id() == fig1_media.to_id() for m in c.text.media) ], "Expected media to be referenced in a used context" assert ( CANNOT_ANSWER_PHRASE not in enriched_session1.answer ), f"Expected answer with enrichment {fig1_enrichment}." assert ( "0.0" in enriched_session1.answer ), f"Expected answer with enrichment {fig1_enrichment}." assert ( "1.0" in enriched_session1.answer ), f"Expected answer with enrichment {fig1_enrichment}." return # noqa: TRY300 except AssertionError as exc: cached_exc = exc # Otherwise use Figure 3's question try: unenriched_session2 = await unenriched_docs.aquery( fig3_question, settings=unenriched_settings ) assert ( CANNOT_ANSWER_PHRASE in unenriched_session2.answer ), "Expected unsure without enrichment" enriched_session2 = await enriched_docs.aquery( fig3_question, settings=enriched_settings ) assert [ c for c in enriched_session2.contexts if c.id in enriched_session2.used_contexts if c.text.media # Use to_id() to ignore info, just looking at media text/data and any(m.to_id() == fig3_media.to_id() for m in c.text.media) ], "Expected media to be referenced in a used context" assert ( CANNOT_ANSWER_PHRASE not in enriched_session2.answer ), f"Expected answer with enrichment {fig3_enrichment}." # We require "molecule" and one of "reference" or "original" assert ( "molecule" in enriched_session2.answer.lower() ), f"Expected answer with enrichment {fig3_enrichment}." assert any( x in enriched_session2.answer.lower() for x in ("reference", "original") ), ( f"Expected answer with enrichment {fig3_enrichment}," f" got answer {enriched_session2.answer}." ) except AssertionError as exc: raise exc from cached_exc @pytest.mark.vcr @pytest.mark.asyncio async def test_image_enrichment_invalid_image(caplog) -> None: """Confirm an invalid image doesn't crash the image enrichment process.""" parsed_text = ParsedText( content={ # The image data here is invalid (not a PNG) "1": ("Some text", [ParsedMedia(data=b"not_image_data" * 30, index=0)]) }, metadata=ParsedMetadata(parsing_libraries=["stub"], total_parsed_text_length=9), ) enricher = Settings().make_media_enricher() with caplog.at_level("WARNING", logger="paperqa.settings"): result = await enricher(parsed_text) assert "enriched=0" in result, "Expected no enrichment to have occurred" (record_tuple,) = caplog.record_tuples assert ( "rejected by the LLM provider" in record_tuple[2] ), "Expected rejection to be documented" @pytest.mark.asyncio async def test_image_enrichment_with_oversized_image(caplog) -> None: """Confirm a too-large image doesn't crash the image enrichment process.""" parsed_text = ParsedText( content={ # An alternate way to test this is use PyMuPDF or Docling reader on a PDF # with a really high DPI setting (> 300) "1": ("Some text", [ParsedMedia(data=b"stub", index=0)]) }, metadata=ParsedMetadata(parsing_libraries=["stub"], total_parsed_text_length=9), ) settings = Settings(parsing={"enrichment_llm": "claude-sonnet-4-5-20250929"}) enricher = settings.make_media_enricher() # noqa: FURB184 with ( caplog.at_level("WARNING", logger="paperqa.settings"), # Use patch over VCR since VCR cassette would be huge patch( "litellm.llms.anthropic.chat.handler.AnthropicChatCompletion.acompletion_function", side_effect=litellm.llms.anthropic.common_utils.AnthropicError( message=( '{"type":"error","error":{"type":"invalid_request_error",' '"message":"messages.0.content.0.image.source.base64: image exceeds 5 MB maximum: 6229564 bytes > 5242880 bytes"},' # noqa: E501 '"request_id":"req_abc123"}' ), status_code=400, ), ) as mock_acompletion_function, ): result = await enricher(parsed_text) assert "enriched=0" in result, "Expected no enrichment to have occurred" assert mock_acompletion_function.await_count >= 1 (record_tuple,) = caplog.record_tuples assert ( "rejected by the LLM provider" in record_tuple[2] ), "Expected rejection to be documented" @pytest.mark.asyncio async def test_code() -> None: settings = Settings.from_name("fast") docs = Docs() # load this script await docs.aadd( THIS_MODULE, "test_paperqa.py", docname="test_paperqa.py", disable_check=True ) assert len(docs.docs) == 1 session = await docs.aquery("What file is read in by test_code?", settings=settings) assert "test_paperqa.py" in session.answer @pytest.mark.asyncio async def test_querying_tables(stub_data_dir: Path) -> None: settings = Settings.from_name("fast") docs = Docs() assert await docs.aadd(stub_data_dir / "influence.pdf", settings=settings) # Now, let's modify the system so any tables housed in the Text.text get removed, # and the system can only rely on table images or markdown texts_with_tables = { t for t in docs.texts if t.media and any(m.info.get("type") == "table" for m in t.media) } assert texts_with_tables, "Expected some texts to have parsed tables" for t in texts_with_tables: # Wipe text but keep embedding (for retrieval), to confirm tables get used t.text = "Placeholder" # Wipe non-table media (e.g. images) t.media = [m for m in t.media if m.info.get("type") == "table"] docs.texts = list(texts_with_tables) session = await docs.aquery( "What osteotomy gap (mm) has the bone volume per slice?", settings=settings ) assert session.used_contexts used_texts = [c.text for c in session.contexts if c.id in session.used_contexts] assert all( [m.data for m in t.media] for t in used_texts ), "Expected image data to be present in the used contexts" # Check for 1.0mm, 1.0-mm, 1.0 mm assert re.search(r"1\.0[ -]?mm", session.answer) assert session.cost > 0 # Filter contexts for HTTP requests, and ensure no images are present session.filter_content_for_user() assert session.used_contexts used_texts_after_filter = [ c.text for c in session.contexts if c.id in session.used_contexts ] assert all( not t.media for t in used_texts_after_filter ), "Expected no media for lightweight HTTP requests" @pytest.mark.flaky(reruns=2, only_rerun=["AssertionError"]) @pytest.mark.asyncio async def test_images(stub_data_dir: Path) -> None: settings = Settings.from_name("fast") # Let's use default prompting set up, so we can get JSON summary-support settings.prompts = type(settings.prompts)() # We don't support image embeddings yet, so disable embedding settings.answer.evidence_retrieval = False settings.parsing.defer_embedding = True settings.prompts.summary_json_system = summary_json_multimodal_system_prompt docs = Docs() districts_docname = await docs.aadd( stub_data_dir / "sf_districts.png", citation=( '"File:San francisco districts.png." Wikimedia Commons.' " 7 Sep 2023, 07:38 UTC." " " " July 2025." ), settings=settings, ) assert districts_docname, "Expected successful image addition" (districts_doc,) = (d for d in docs.docs.values() if d.docname == districts_docname) session = await docs.aquery( "What districts neighbor the Western Addition?", settings=settings ) assert ( sum( district in session.answer for district in ("The Avenues", "Golden Gate", "Civic Center", "Haight") ) >= 2 ), f"Expected at least two neighbors to be matched in answer {session.answer!r}" assert session.cost > 0 contexts_used = [ c for c in session.contexts if c.id in session.used_contexts and c.text.doc == districts_doc ] assert contexts_used assert all(bool(c.used_images) for c in contexts_used) # type: ignore[attr-defined] @pytest.mark.asyncio async def test_duplicate_media_context_creation(stub_data_dir: Path) -> None: settings = Settings( prompts={"summary_json_system": summary_json_multimodal_system_prompt}, parsing={"parse_pdf": docling_parse_pdf_to_pages}, ) docs = Docs() assert await docs.aadd( stub_data_dir / "duplicate_media.pdf", citation="FutureHouse, 2025, Accessed now", # Skip citation inference title="SF Districts in the style of Andy Warhol, with Math", # Skip title inference settings=settings, ) num_raw_media = sum(len(t.media) for t in docs.texts) with patch.object( LLMModel, "call_single", side_effect=LLMModel.call_single, autospec=True ) as mock_call_single: session = await docs.aquery( "What districts neighbor the Western Addition?", settings=settings ) context_user_msg = mock_call_single.await_args_list[0][1]["messages"][1] assert isinstance(context_user_msg, Message) assert context_user_msg.content content_list = json.loads(context_user_msg.content) assert isinstance(content_list, list) assert ( sum("image_url" in x for x in content_list) < num_raw_media / 2 ), "Expected some deduplication to take place during context creation" assert ( sum( district in session.answer for district in ("The Avenues", "Golden Gate", "Civic Center", "Haight") ) >= 2 ), f"Expected at least two neighbors to be matched in answer {session.answer!r}" assert session.cost > 0 @pytest.mark.flaky(reruns=2, only_rerun=["AssertionError"]) @pytest.mark.asyncio async def test_images_corrupt(stub_data_dir: Path, caplog) -> None: settings = Settings.from_name("fast") # Let's use default prompting set up, so we can get JSON summary-support settings.prompts = type(settings.prompts)() # We don't support image embeddings yet, so disable embedding settings.answer.evidence_retrieval = False settings.parsing.defer_embedding = True settings.prompts.summary_json_system = summary_json_multimodal_system_prompt docs = Docs() districts_docname = await docs.aadd( stub_data_dir / "sf_districts.png", citation=( '"File:San francisco districts.png." Wikimedia Commons.' " 7 Sep 2023, 07:38 UTC." " " " July 2025." ), settings=settings, ) assert districts_docname, "Expected successful image addition" (districts_doc,) = (d for d in docs.docs.values() if d.docname == districts_docname) (districts_text,) = docs.texts assert not districts_text.text, "Test expects no text content from image addition" for media in (t.media for t in docs.texts if t.doc == districts_doc and t.media): for m in media: # Validate the image, then chop the image in half (breaking it), and # confirm it's no longer valid (and that we can detect it's no longer valid) validate_image(io.BytesIO(m.data)) m.data = m.data[: len(m.data) // 2] with pytest.raises(OSError, match="truncated"): validate_image(io.BytesIO(m.data)) # With a garbage image, we can't make contexts. So let's confirm that's the case session = await docs.aget_evidence( "What districts neighbor the Western Addition?", settings=settings ) assert not session.contexts, "Expected no contexts to be made from a bad image." assert any( x in caplog.text.lower() for x in ( "unsupported image", # OpenAI "could not process image", # Anthropic ) ), "Expected a caught exception about an unsupported image." # By suppressing the use of images, we can actually gather evidence now settings.answer.evidence_text_only_fallback = True session = await docs.aget_evidence( "What districts neighbor the Western Addition?", settings=settings ) assert ( not session.contexts ), "Expected no contexts to be made from a bad image that has no text" assert session.cost > 0, "Expected some costs to have been incurred in our attempt" @pytest.mark.vcr(before_record_request=record_non_llm_requests) @pytest.mark.parametrize( "parser", [ pytest.param(pymupdf_parse_pdf_to_pages, id="pymupdf"), pytest.param(docling_parse_pdf_to_pages, id="docling"), pytest.param(nemotron_parse_pdf_to_pages, id="nemotron"), ], ) @pytest.mark.asyncio async def test_equations(stub_data_dir: Path, parser: PDFParserFn) -> None: settings = Settings(parsing={"parse_pdf": parser}) docs = Docs() assert await docs.aadd( stub_data_dir / "duplicate_media.pdf", citation="FutureHouse, 2025, Accessed now", # Skip citation inference title="SF Districts in the style of Andy Warhol, with Math", # Skip title inference settings=settings, ) assert docs.texts enrichments = [] # Use to debug flaky tests for m in docs.texts[0].media: if m.info.get("type") == "table": continue # Skip tables since we want equations enrichment = m.info["enriched_description"] assert isinstance(enrichment, str) if ( # Yes 'mathematical equation' is looser than stating it to be LaTeX, # but for the purposes of this test it's alright any(x in enrichment for x in ("LaTeX", "latex", "mathematical equation")) and r"\sqrt" in enrichment ): return enrichments.append(enrichment) raise AssertionError( "Failed to find enrichment for the target equation," f" all enrichments: {enrichments}" ) def test_missing_page_doesnt_crash_us() -> None: stub_parsed_text = ParsedText( content={ "1": "A", # Page 2 was totally blank "3": "C", }, metadata=ParsedMetadata(parsing_libraries=["stub"], total_parsed_text_length=2), ) stub_doc = Doc(docname="stub", citation="stub", dockey="stub") (text,) = chunk_pdf(stub_parsed_text, stub_doc, chunk_chars=100, overlap=5) assert text.doc == stub_doc assert "1-3" in text.name assert text.text == "AC" def test_zotero() -> None: from paperqa.contrib import ZoteroDB Docs() with contextlib.suppress(ValueError): # Close enough ZoteroDB() # "group" if group library @pytest.mark.asyncio async def test_too_much_evidence( stub_data_dir: Path, stub_data_dir_w_near_dupes: Path ) -> None: doc_path = stub_data_dir / "obama.txt" mini_settings = Settings(llm="gpt-4o-mini", summary_llm="gpt-4o-mini") docs = Docs() await docs.aadd( doc_path, "WikiMedia Foundation, 2023, Accessed now", settings=mini_settings ) # add with new dockey await docs.aadd( stub_data_dir_w_near_dupes / "obama_modified.txt", "WikiMedia Foundation, 2023, Accessed now", settings=mini_settings, ) settings = Settings.from_name("fast") settings.answer.evidence_k = 10 settings.answer.answer_max_sources = 10 await docs.aquery("What is Barrack's greatest accomplishment?", settings=settings) @pytest.mark.asyncio async def test_custom_prompts(stub_data_dir: Path) -> None: my_qaprompt = ( "Answer the question '{question}' using the country name alone. For example: A:" " United States\nA: Canada\nA: Mexico\n\n Using the" " context:\n\n{context}\n\nA: " ) settings = Settings.from_name("fast") settings.prompts.qa = my_qaprompt docs = Docs() await docs.aadd( stub_data_dir / "bates.txt", "WikiMedia Foundation, 2023, Accessed now" ) session = await docs.aquery( "What country is Frederick Bates from?", settings=settings ) assert "United States" in session.answer @pytest.mark.asyncio async def test_pre_prompt(stub_data_dir: Path) -> None: pre = "What is water's boiling point in Fahrenheit? Please respond with a complete sentence." settings = Settings.from_name("fast") settings.prompts.pre = pre docs = Docs() await docs.aadd( stub_data_dir / "bates.txt", "WikiMedia Foundation, 2023, Accessed now" ) assert ( "212" not in (await docs.aquery("What is the boiling point of water?")).answer ) assert ( "212" in ( await docs.aquery("What is the boiling point of water?", settings=settings) ).answer ) @pytest.mark.asyncio async def test_post_prompt(stub_data_dir: Path) -> None: post = "The opposite of down is" settings = Settings.from_name("fast") settings.prompts.post = post docs = Docs() await docs.aadd( stub_data_dir / "bates.txt", "WikiMedia Foundation, 2023, Accessed now" ) response = await docs.aquery("What country is Bates from?", settings=settings) assert "up" in response.answer.lower() @pytest.mark.asyncio async def test_external_doc_index(stub_data_dir: Path) -> None: docs = Docs() await docs.aadd( stub_data_dir / "flag_day.html", "WikiMedia Foundation, 2023, Accessed now" ) # force embedding _ = await docs.aget_evidence(query="What is the date of flag day?") docs2 = Docs(texts_index=docs.texts_index) assert not docs2.docs assert (await docs2.aget_evidence("What is the date of flag day?")).contexts @pytest.mark.asyncio async def test_context_inner_outer_prompt(stub_data_dir: Path) -> None: prompt_settings = Settings() # try bogus prompt with pytest.raises(ValueError, match="Context inner prompt must"): prompt_settings.prompts.context_inner = "A:" prompt_settings = Settings() with pytest.raises(ValueError, match="Context outer prompt can only"): prompt_settings.prompts.context_outer = "{foo}" # make sure prompt gets used settings = Settings.from_name("fast") settings.prompts.context_inner = "{name} @@@@@ {text}\nFrom: {citation}" settings.prompts.context_outer = "{context_str}" docs = Docs() await docs.aadd( stub_data_dir / "bates.txt", "WikiMedia Foundation, 2023, Accessed now" ) response = await docs.aquery("What country is Bates from?", settings=settings) assert "@@@@@" in response.context assert "WikiMedia Foundation, 2023" in response.context assert "Valid Keys" not in response.context @pytest.mark.parametrize( ("parsing1", "parsing2"), [ pytest.param( {"parse_pdf": pymupdf_parse_pdf_to_pages}, {"parse_pdf": pypdf_parse_pdf_to_pages}, id="parse_pdf", ), pytest.param({}, {"multimodal": False}, id="multimodal"), pytest.param( {"reader_config": {"chunk_chars": 5000, "overlap": 250}}, {"reader_config": {"chunk_chars": 5000, "overlap": 250, "full_page": True}}, id="full-page", ), ], ) def test_get_index_name_uniqueness( parsing1: dict[str, Any], parsing2: dict[str, Any] ) -> None: settings1 = Settings(parsing=ParsingSettings(**parsing1)) settings2 = Settings(parsing=ParsingSettings(**parsing2)) names = {settings1.get_index_name(), settings2.get_index_name()} assert ( len(names) == 2 ), "Expected autogenerated index names to differ if parsers differ" assert all( n.startswith("pqa_index") for n in names ), "Expected index names to be clear they're associated with PaperQA" def test_case_insensitive_matching(): assert strings_similarity("my test sentence", "My test sentence") == 1.0 assert strings_similarity("a b c d e", "a b c f") == 0.5 assert strings_similarity("A B c d e", "a b c f") == 0.5 @pytest.mark.parametrize( "doi_journals", [ {"doi": "https://doi.org/10.31224/4087", "journal": "EngRxiv"}, {"doi": "10.26434/chemrxiv-2021-hz0qp", "journal": "ChemRxiv"}, {"doi": "https://doi.org/10.1101/2024.11.04.621790", "journal": "BioRxiv"}, {"doi": "10.1101/2024.11.02.24316629", "journal": "MedRxiv"}, # ensure we don't crash when externalIds key is included, but it's None { "doi": "https://doi.org/10.48550/arXiv.2407.10362", "journal": "ArXiv", "other": {"externalIds": None}, }, ], ) def test_dois_resolve_to_correct_journals(doi_journals): details = DocDetails(doi=doi_journals["doi"]) assert details.journal == doi_journals["journal"] def test_none_values() -> None: """Check can handle or crash as expected with None inputs.""" with pytest.raises( (ValidationError, TypeError), match="fields_to_overwrite_from_metadata" ): DocDetails(fields_to_overwrite_from_metadata=None) def test_docdetails_merge_with_non_list_fields() -> None: """Check republication where the source metadata has different shapes.""" initial_date = datetime(2023, 1, 1) doc1 = DocDetails( citation="Citation 1", publication_date=initial_date, docname="Document 1", dockey="key1", # NOTE: doc1 has non-list bibtex_source and list client_source other={"bibtex_source": "source1", "client_source": ["client1"]}, ) later_publication_date = initial_date + timedelta(weeks=13) doc2 = DocDetails( citation=doc1.citation, publication_date=later_publication_date, docname=doc1.docname, dockey=doc1.dockey, # NOTE: doc2 has list bibtex_source and non-list client_source other={"bibtex_source": ["source2"], "client_source": "client2"}, ) # Merge the two DocDetails instances merged_doc = doc1 + doc2 assert {"source1", "source2"}.issubset( merged_doc.other["bibtex_source"] ), "Expected merge to keep both bibtex sources" assert {"client1", "client2"}.issubset( merged_doc.other["client_source"] ), "Expected merge to keep both client sources" assert isinstance(merged_doc, DocDetails), "Merged doc should also be DocDetails" def test_docdetails_merge_with_list_fields() -> None: """Check republication where the source metadata is the same shape.""" initial_date = datetime(2023, 1, 1) doc1 = DocDetails( citation="Citation 1", publication_date=initial_date, docname="Document 1", dockey="key1", # NOTE: doc1 has list bibtex_source and list client_source other={"bibtex_source": ["source1"], "client_source": ["client1"]}, ) later_publication_date = initial_date + timedelta(weeks=13) doc2 = DocDetails( citation=doc1.citation, publication_date=later_publication_date, docname=doc1.docname, dockey=doc1.dockey, # NOTE: doc2 has list bibtex_source and list client_source other={"bibtex_source": ["source2"], "client_source": ["client2"]}, ) # Merge the two DocDetails instances merged_doc = doc1 + doc2 assert {"source1", "source2"}.issubset( merged_doc.other["bibtex_source"] ), "Expected merge to keep both bibtex sources" assert {"client1", "client2"}.issubset( merged_doc.other["client_source"] ), "Expected merge to keep both client sources" assert isinstance(merged_doc, DocDetails), "Merged doc should also be DocDetails" def test_docdetails_deserialization(tmp_path) -> None: deserialize_to_doc = { "citation": "stub", "dockey": "stub", "docname": "Stub", "embedding": None, "formatted_citation": "stub", "fields_to_overwrite_from_metadata": {"key", "doc_id", "docname", "citation"}, } deepcopy_deserialize_to_doc = deepcopy(deserialize_to_doc) doc = Doc(**deserialize_to_doc) assert not isinstance(doc, DocDetails), "Should just be Doc, not DocDetails" assert ( deserialize_to_doc == deepcopy_deserialize_to_doc ), "Deserialization should not mutate input" serialized_doc_details = DocDetails(**deserialize_to_doc).model_dump( exclude_none=True ) for key, value in { "docname": "unknownauthorsUnknownyearunknowntitle", "citation": "Unknown authors. Unknown title. Unknown journal, Unknown year.", "key": "unknownauthorsUnknownyearunknowntitle", "bibtex": ( '@article{unknownauthorsUnknownyearunknowntitle,\n author = "authors,' ' Unknown",\n title = "Unknown title",\n year = "Unknown year",\n ' ' journal = "Unknown journal"\n}\n' ), "other": {"bibtex_source": ["self_generated"]}, "formatted_citation": ( "Unknown authors. Unknown title. Unknown journal, Unknown year." ), }.items(): assert serialized_doc_details[key] == value assert ( deserialize_to_doc == deepcopy_deserialize_to_doc ), "Deserialization should not mutate input" if sys.version_info < (3, 12, 0): return # csv.QUOTE_NOTNULL was added in Python 3.12 if sys.version_info < (3, 13, 0): # From https://docs.python.org/3.12/library/csv.html: # > Note Due to a bug, constants QUOTE_NOTNULL and QUOTE_STRINGS # > do not affect behaviour of reader objects. This bug is fixed in Python 3.13. # As we use csv.DictReader, we're impacted by this so let's just skip return doc_details = DocDetails( **deserialize_to_doc, other={"apple": "sauce"}, authors=["Thomas Anderson"] ) DocDetails.to_csv([doc_details], target_csv_path=Path(tmp_path) / "manifest.csv") with open(tmp_path / "manifest.csv", encoding="utf-8") as f: csv_deserialized = DocDetails( # type ignore comments are here since mypy can't recognize pytest skip **next(csv.DictReader(f.readlines(), quoting=csv.QUOTE_NOTNULL)) # type: ignore[attr-defined,unused-ignore] ) assert doc_details == csv_deserialized, "Round-trip CSV deserialization failed" def test_docdetails_doc_id_roundtrip() -> None: """Test that DocDetails can be initialized with doc_id or doi inputs.""" test_doi = "10.1234/test.doi" test_doi_doc_id = encode_id(test_doi.lower()) test_specified_doc_id = "abc123" # first we test without a doc_id or doi, ensure it's still valid doc_details_no_doi_no_doc_id = DocDetails( docname="test_doc", citation="Test Citation", dockey="test_dockey", embedding=None, formatted_citation="Formatted Test Citation", ) assert ( doc_details_no_doi_no_doc_id.doc_id != test_doi_doc_id ), "DocDetails without doc_id should not match test_doi_doc_id" assert ( doc_details_no_doi_no_doc_id.doi is None ), "DocDetails without doi should have None doi" assert doc_details_no_doi_no_doc_id.dockey == doc_details_no_doi_no_doc_id.doc_id # now round-trip serializaiton should keep the same doc_id new_no_doi_no_doc_id = DocDetails( **doc_details_no_doi_no_doc_id.model_dump(exclude_none=True) ) assert ( new_no_doi_no_doc_id.doc_id == doc_details_no_doi_no_doc_id.doc_id ), "DocDetails without doc_id should keep the same doc_id after serialization" # since validation runs on assignment, make sure we can assign correctly doc_details_no_doi_no_doc_id.doc_id = test_specified_doc_id assert ( doc_details_no_doi_no_doc_id.doc_id == test_specified_doc_id ), "DocDetails with doc_id should match test_specified_doc_id" assert doc_details_no_doi_no_doc_id.dockey == doc_details_no_doi_no_doc_id.doc_id # now let's do this with a doi doc_details_with_doi_no_doc_id = DocDetails( doi=test_doi, title=r"A Stub | \emph{Stub Title}", docname="test_doc", citation="Test Citation", dockey="test_dockey", embedding=None, formatted_citation="Formatted Test Citation", ) assert ( doc_details_with_doi_no_doc_id.doc_id == test_doi_doc_id ), "DocDetails with doc_id should not match test_doi_doc_id" assert ( doc_details_with_doi_no_doc_id.doi == test_doi ), "DocDetails with doi should match test_doi" assert ( doc_details_with_doi_no_doc_id.dockey == doc_details_with_doi_no_doc_id.doc_id ) assert ( doc_details_with_doi_no_doc_id.make_filename() == "A Stub - -emph{Stub Title}_7f8a71c920c202c5" ) # round-trip serializaiton should keep the same doc_id new_with_doi_no_doc_id = DocDetails( **doc_details_with_doi_no_doc_id.model_dump(exclude_none=True) ) assert ( new_with_doi_no_doc_id.doc_id == doc_details_with_doi_no_doc_id.doc_id ), "DocDetails with doc_id should keep the same doc_id after serialization" assert ( new_with_doi_no_doc_id.make_filename() == "A Stub - -emph{Stub Title}_7f8a71c920c202c5" ) # since validation runs on assignment, make sure we can assign correctly doc_details_with_doi_no_doc_id.doc_id = test_specified_doc_id assert ( doc_details_with_doi_no_doc_id.doc_id == test_specified_doc_id ), "DocDetails with doc_id should match test_specified_doc_id" assert ( doc_details_with_doi_no_doc_id.dockey == doc_details_with_doi_no_doc_id.doc_id ) # let's specify the doc_id directly doc_details_no_doi_with_doc_id = DocDetails( doc_id=test_specified_doc_id, docname="test_doc", citation="Test Citation", dockey="test_dockey", embedding=None, formatted_citation="Formatted Test Citation", ) assert ( doc_details_no_doi_with_doc_id.doc_id == test_specified_doc_id ), "DocDetails with doc_id should not match test_specified_doc_id" assert ( doc_details_no_doi_with_doc_id.doi is None ), "DocDetails without doi should be None" assert ( doc_details_no_doi_with_doc_id.dockey == doc_details_no_doi_with_doc_id.doc_id ), "DocDetails dockey should match doc_id for the same object" # round-trip serializaiton should keep the same doc_id new_no_doi_with_doc_id = DocDetails( **doc_details_no_doi_with_doc_id.model_dump(exclude_none=True) ) assert ( new_no_doi_with_doc_id.doc_id == doc_details_with_doi_no_doc_id.doc_id ), "DocDetails with doc_id should keep the same doc_id after serialization" # since validation runs on assignment, make sure we can assign correctly new_no_doi_with_doc_id.doc_id = test_doi_doc_id assert ( new_no_doi_with_doc_id.doc_id == test_doi_doc_id ), "DocDetails with doc_id should match test_specified_doc_id" assert new_no_doi_with_doc_id.dockey == new_no_doi_with_doc_id.doc_id # now we specify both doi and doc_id, ensuring doc_id takes precedence doc_details_with_doi_with_doc_id = DocDetails( doc_id=test_specified_doc_id, doi=test_doi, docname="test_doc", citation="Test Citation", dockey="test_dockey", embedding=None, formatted_citation="Formatted Test Citation", ) assert ( doc_details_with_doi_with_doc_id.doc_id == test_specified_doc_id ), "DocDetails with doc_id should not match test_specified_doc_id" assert ( doc_details_with_doi_with_doc_id.doi == test_doi ), "DocDetails without doi should match test_doi" assert ( doc_details_with_doi_with_doc_id.dockey == doc_details_with_doi_with_doc_id.doc_id ) # round-trip serializaiton should keep the same doc_id new_with_doi_with_doc_id = DocDetails( **doc_details_with_doi_with_doc_id.model_dump(exclude_none=True) ) assert ( new_with_doi_with_doc_id.doc_id == doc_details_with_doi_with_doc_id.doc_id ), "DocDetails with doc_id should keep the same doc_id after serialization" # since validation runs on assignment, make sure we can assign correctly new_with_doi_with_doc_id.doc_id = test_doi_doc_id assert ( new_with_doi_with_doc_id.doc_id == test_doi_doc_id ), "DocDetails with doc_id should match test_specified_doc_id" assert new_with_doi_with_doc_id.dockey == new_with_doi_with_doc_id.doc_id @pytest.mark.vcr @pytest.mark.parametrize("use_partition", [True, False]) @pytest.mark.asyncio async def test_partitioning_fn_docs(use_partition: bool) -> None: settings = Settings.from_name("fast") settings.answer.evidence_k = 2 # Match positive or negative statement count below # imagine we have some special selection we want to # embedding rank by itself def partition_by_citation(t: Embeddable) -> int: if isinstance(t, Text) and "negative" in t.doc.citation: return 1 return 0 partitioning_fn = partition_by_citation if use_partition else None docs = Docs() assert isinstance( docs.texts_index, NumpyVectorStore ), "We want this test to cover NumpyVectorStore" # add docs that we can use our partitioning function on positive_statements_doc = Doc( docname="positive", citation="positive", dockey="positive" ) negative_statements_doc = Doc( docname="negative", citation="negative", dockey="negative" ) texts = [] for i, (statement, doc) in enumerate( [ ("I like turtles", positive_statements_doc), ("I like cats", positive_statements_doc), ("I don't like turtles", negative_statements_doc), ("I don't like cats", negative_statements_doc), ] ): texts.append(Text(text=statement, name=f"statement_{i}", doc=doc)) texts[-1].embedding = ( await settings.get_embedding_model().embed_documents([texts[-1].text]) )[0] await docs.aadd_texts( texts=[t for t in texts if t.doc.docname == "positive"], doc=positive_statements_doc, ) await docs.aadd_texts( texts=[t for t in texts if t.doc.docname == "negative"], doc=negative_statements_doc, ) # look at the raw rankings first, compare them with and without partitioning await docs._build_texts_index(settings.get_embedding_model()) partitioned_texts, _ = cast( "tuple[Sequence[Text], list[float]]", await docs.texts_index.partitioned_similarity_search( "What do I like?", k=4, embedding_model=settings.get_embedding_model(), partitioning_fn=partition_by_citation, ), ) default_texts, _ = cast( "tuple[Sequence[Text], list[float]]", await docs.texts_index.similarity_search( "What do I like?", k=4, embedding_model=settings.get_embedding_model() ), ) assert partitioned_texts != default_texts, "Should have different rankings" # the "like" statements should be before the "don't" like by default assert all( "don't" not in c.text for c in default_texts[:2] ), "None of the 'don't like X' should be first" assert all( "don't" in c.text for c in default_texts[2:] ), "'don't like X' should be second" # Otherwise they should be interleaved assert ( sum(int("don't" in c.text) for c in default_texts[:2]) + sum(int("don't" not in c.text) for c in default_texts[:2]) == 2 ), "Should have 1 'like' and 1 'don't like'" assert ( sum(int("don't" in c.text) for c in default_texts[2:]) + sum(int("don't" not in c.text) for c in default_texts[2:]) == 2 ), "Should have 1 'like' and 1 'don't like'" # Get the contexts -- ranked via partitioning # without partitioning, the "I like X" statements would be ranked first # with partitioning, we are forcing them to be interleaved, thus # at least one "I don't like X" statements will be in the top 2 session = await docs.aget_evidence( "What do I like or dislike?", settings=settings, partitioning_fn=partitioning_fn ) assert docs.texts_index.texts == docs.texts == texts assert session.contexts, "Test requires contexts to be made" if use_partition: assert any( "don't" in c.text.text for c in session.contexts ), 'Should have at least one "I don\'t like X" statement' else: assert all( "don't" not in c.text.text for c in session.contexts ), "None of the 'don't like X' statements should be included" class TestLLMParseJson: """Tests for extracting JSON strings from LLM Response and ensuring proper formatting.""" @pytest.mark.parametrize( "input_text", [ pytest.param( " Thinking " "I am here to help\n\n" '{\n"summary": "Lorem Ipsum",\n"relevance_score": 8\n}' "\n\nHope this helps!", id="json-newlines-no-markdown-block", ), pytest.param( " Thinking " '```json\n{\n"summary": "Lorem Ipsum",\n"relevance_score": 8\n}\n```' "\n\nHope this helps!", id="json-newlines-with-markdown-block", ), pytest.param( " Thinking " '```json { "summary": "Lorem Ipsum", "relevance_ score": 8 } ```', id="removing-think-tags", ), pytest.param( "I am here to help" '{ "summary": "Lorem Ipsum", "relevance_score": 8 }' "Hope this helps!", id="removing-intro-outro-text", ), pytest.param( "I am here to help" '{\n "summary": "Lorem Ipsum",\n "relevance_score": "8" \n}' "Hope this helps!", id="with-newlines-and-quotes", ), ], ) def test_basic_json_extraction(self, input_text: str) -> None: output = {"summary": "Lorem Ipsum", "relevance_score": 8} assert llm_parse_json(input_text) == output @pytest.mark.parametrize( "input_text", [ pytest.param( ' Thinking \n I am here to help\n\n{\n"summary": "Lorem' ' Ipsum\n\ndolor sit amet",\n"relevance_score": 8\n}\nHope this helps!', id="handling-newlines-in-json-values", ), ], ) def test_handling_newlines(self, input_text: str) -> None: output = {"summary": "Lorem Ipsum\n\ndolor sit amet", "relevance_score": 8} assert llm_parse_json(input_text) == output @pytest.mark.parametrize( "input_text", [ pytest.param( " Thinking " "I am here to help" '```json { "summary": "Lorem Ipsum", "relevance_score": 7.6 } ```' "Hope this helps!", id="float-relevance-score", ), pytest.param( " Thinking " "I am here to help" '```json { "summary": "Lorem Ipsum", "relevance_score": "8" } ```' "Hope this helps!", id="string-relevance-score", ), pytest.param( ' Thinking I am here to help```json { "summary":' ' "Lorem Ipsum", "relevance_score": "8/10" } ```Hope this helps!', id="string-relevance-score-fraction-1", ), pytest.param( " Thinking " "I am here to help" '```json { "summary": "Lorem Ipsum", "relevance_score": "4/5" } ```' "Hope this helps!", id="string-relevance-score-fraction-2", ), pytest.param( " Thinking " "I am here to help" '```json { "summary": "Lorem Ipsum", "relevance_score": 8/10 } ```' "Hope this helps!", id="non-string-relevance-score-fraction-3", ), pytest.param( " Thinking " "I am here to help" '```json { "summary": "Lorem Ipsum", "relevance_score": 4/5 } ```' "Hope this helps!", id="non-string-relevance-score-fraction-4", ), ], ) def test_relevance_score_parsing(self, input_text: str) -> None: output = {"summary": "Lorem Ipsum", "relevance_score": 8} assert llm_parse_json(input_text) == output @pytest.mark.parametrize( "input_text", [ pytest.param( " Thinking " "I am here to help." '```json { "summary": "Lorem Ipsum", "relevance-score": 8 } ```' "Hope this helps!", id="fixing-relevance-score-key-1", ), pytest.param( " Thinking " "I am here to help. " '```json { "summary": "Lorem Ipsum", "relevance_ score": 8 } ```' "Hope this helps!", id="fixing-relevance-score-key-2", ), pytest.param( " Thinking " "I am here to help." '```json { "summary": "Lorem Ipsum", "score": 8 } ```' "Hope this helps!", id="fixing-relevance-score-key-3", ), pytest.param( " Thinking " "I am here to help." '```json { "summary": "Lorem Ipsum", "relevance score": 8 } ```' "Hope this helps!", id="fixing-relevance-score-key-4", ), pytest.param( " Thinking " "I am here to help." '```json { "summary": "Lorem Ipsum", "relevance": 8 } ```' "Hope this helps!", id="fixing-relevance-score-key-5", ), ], ) def test_json_keys(self, input_text: str) -> None: output = {"summary": "Lorem Ipsum", "relevance_score": 8} assert llm_parse_json(input_text) == output @pytest.mark.parametrize( "input_text", [ pytest.param( " Thinking " "I am here to help." '{ "summary": "Lorem Ipsum", "relevance_score": 8, }' "Hope this helps!", id="fixing-broken-json-formatting-in-string-comma-1", ), pytest.param( " Thinking " "I am here to help." '{ "summary": "Lorem Ipsum", , "relevance_score": 8 }' "Hope this helps!", id="fixing-broken-json-formatting-in-string-comma-2", ), pytest.param( " Thinking " "I am here to help." '{ , "summary": "Lorem Ipsum", "relevance_score": 8 }' "Hope this helps!", id="fixing-broken-json-formatting-in-string-comma-3", ), pytest.param( '{ "summary": "Lorem Ipsum" "relevance_score": 8 }', id="missing-comma-between-fields", ), ], ) def test_json_broken_formatting(self, input_text: str) -> None: output = {"summary": "Lorem Ipsum", "relevance_score": 8} assert llm_parse_json(input_text) == output @pytest.mark.parametrize( "input_text", [ pytest.param( " Thinking Lorem Ipsum. Hope this helps!", id="non-json-string-with-think-tags", ), pytest.param( "Lorem Ipsum. Hope this helps!", id="non-json-string-no-think-tags", ), ], ) def test_fallback_non_json(self, input_text: str) -> None: output = {"summary": "Lorem Ipsum. Hope this helps!"} assert llm_parse_json(input_text) == output @pytest.mark.parametrize( ("input_text", "expected_output"), [ ('{"example": "\\json"}', {"example": "\\json"}), ('{"example": "this is a \\"json\\""}', {"example": 'this is a "json"'}), ], ) def test_llm_parse_json_with_escaped_characters(self, input_text, expected_output): assert llm_parse_json(input_text) == expected_output @pytest.mark.parametrize( "input_text", [ pytest.param( '{\n "summary": "An excerpt with "quoted stuff" or "maybe more." More' ' stuff (with parenthesis).",\n "relevance_score": "8"\n}' ), ], ) def test_llm_subquotes_and_newlines(self, input_text: str) -> None: output = { "summary": ( 'An excerpt with "quoted stuff" or "maybe more." More stuff (with parenthesis).' ), "relevance_score": 8, } assert llm_parse_json(input_text) == output def test_maybe_get_date(): assert maybe_get_date("2023-01-01") == datetime(2023, 1, 1) assert maybe_get_date("2023-01-31 14:30:00") == datetime(2023, 1, 31, 14, 30) assert maybe_get_date(datetime(2023, 1, 1)) == datetime(2023, 1, 1) assert maybe_get_date("foo") is None assert maybe_get_date("") is None @pytest.mark.parametrize( ("raw_text", "cleaned_text"), [ ("name", "name"), (" name", " name"), ("name ", "name "), (" ", " "), ("Bates name", "Bates name"), ("Bate's name", "Bates name"), ("Bate's name Bate's name", "Bates name Bates name"), ("Bates' name", "Bates name"), ("X's Y", "Xs Y"), ("' name", "name"), (" ' name", " name"), ("name ' name", "name name"), ("'s name", "name"), (" 's name", " name"), ("s' name", "s name"), ("S' name", "S name"), ("Bates 's name", "Bates name"), ], ) def test_clean_possessives(raw_text: str, cleaned_text: str) -> None: assert clean_possessives(raw_text) == cleaned_text tricky_test = ( "simple (pqac-a020507f) quote" "TEST AND (easy OR mistaken OR not_context)" " and another AND not context yes, end. (pqac-a020507f, pqac-4552861e)" " duplicates ()" ) @pytest.mark.parametrize( ("raw_text", "cleaned_text"), [ ("simple (pqac-a020507f) quote", "simple (text1) quote"), ( "compound (pqac-a020507f) quote (pqac-a020507f, pqac-4552861e)", "compound (text1) quote (text1, text2)", ), ( "already replaced (pqac-a020507f, pqac-4552861e) quote (pqac-a020507f, pqac-4552861e)", "already replaced (text1, text2) quote (text1, text2)", ), ( "back (pqac-4552861e, pqac-a020507f) and forth (pqac-a020507f, pqac-4552861e)", "back (text2, text1) and forth (text1, text2)", ), ( "distractor (easy OR mistaken OR not_context) quote (pqac-a020507f, pqac-4552861e)", "distractor (easy OR mistaken OR not_context) quote (text1, text2)", ), ("duplicates (pqac-a020507f, pqac-4552861f)", "duplicates (text1)"), ( "compound duplicates (pqac-a020507f, pqac-4552861f, pqac-4552861e)", "compound duplicates (text1, text2)", ), ( "triples (pqac-a020507f, pqac-4552861e, pqac-d0a08f29) with single (pqac-d0a08f29)", "triples (text1, text2, text3) with single (text3)", ), ( "triples hallucinated (pqac-a020507f, pqac-1234567e, pqac-d0a08f29) with single (pqac-d0a08f29)", "triples hallucinated (text1, text3) with single (text3)", ), ("with and (pqac-a020507f and pqac-4552861e)", "with and (text1, text2)"), ("extra stuff (pqac-4552861e, odd-unseen thing)", "extra stuff (text2)"), ( "nested (parenthetical(pqac-4552861e, odd-unseen thing))", "nested (parenthetical(text2))", ), ( "dupe text name (pqac-d0a08f29, pqac-387deef6) xyz (pqac-387deef6)", "dupe text name (text3) xyz (text3)", ), ], ) def test_pqa_context_id_parsing(raw_text: str, cleaned_text: str) -> None: session = PQASession( id=uuid4(), question="test", raw_answer=raw_text, contexts=[ Context( id="pqac-a020507f", context="blah blah", text=Text( name="text1", text="blah blah", doc=Doc( docname="test_doc1", citation="Test Doc1, 2025", dockey="key1", ), ), ), Context( id="pqac-4552861e", context="quote", text=Text( name="text2", text="quote", doc=Doc( docname="test_doc2", citation="Test Doc2, 2025", dockey="key2", ), ), ), Context( id="pqac-d0a08f29", context="quote", text=Text( name="text3", text="quote", doc=Doc( docname="test_doc3", citation="Test Doc3, 2025", dockey="key3", ), ), ), Context( id="pqac-387deef6", context="quote", text=Text( name="text3", text="quote", doc=Doc( docname="test_doc3", citation="Test Doc3, 2025", dockey="key3", ), ), ), ], ) session.populate_formatted_answers_and_bib_from_raw_answer() assert session.answer == cleaned_text assert ( session.formatted_answer == session.formatted_answer.strip() ), "Expecting no leading/trailing whitespace" @pytest.mark.asyncio async def test_timeout_resilience() -> None: model_name = CommonLLMNames.ANTHROPIC_TEST.value short_timeout = 0.001 llm = LiteLLMModel( name=CommonLLMNames.ANTHROPIC_TEST.value, config={ "model_list": [ { "model_name": model_name, "litellm_params": { "model": model_name, "timeout": short_timeout, }, } ], "router_kwargs": {"timeout": short_timeout}, }, ) # Make sure we've configured timeout low enough for this test to be useful with pytest.raises(litellm.Timeout): await llm.call_single("The duck says") text = Text( text="The duck says", name="test", doc=Doc(docname="test", dockey="test", citation="test"), ) kw = { "text": text, "question": "The duck says", "summary_llm_model": llm, "prompt_templates": ("", ""), } # This *should* raise with pytest.raises(LLMContextTimeoutError): await _map_fxn_summary(**kw) # type: ignore[arg-type] # The wrapped version should not raise, but return empty context, llm_results = await map_fxn_summary(**kw) assert context is None assert not llm_results TEST_STUB_LAMBDA = lambda: 1 # noqa: E731 TEST_STUB_PARTIAL = partial(pymupdf_parse_pdf_to_pages, kwarg=2) def test_parse_pdf_string_resolution() -> None: # Test with a valid string FQN pymupdf_str = Settings( parsing=ParsingSettings(parse_pdf="paperqa_pymupdf.parse_pdf_to_pages") ) assert pymupdf_str.parsing.parse_pdf == pymupdf_parse_pdf_to_pages assert ( pymupdf_str.model_dump(mode="json")["parsing"]["parse_pdf"] == "paperqa_pymupdf.reader.parse_pdf_to_pages" ) assert "parse_pdf" not in pymupdf_str.model_dump()["parsing"] # Test another valid string FQN pypdf_str = Settings( parsing=ParsingSettings(parse_pdf="paperqa_pypdf.parse_pdf_to_pages") ) assert pypdf_str.parsing.parse_pdf == pypdf_parse_pdf_to_pages assert ( pypdf_str.model_dump(mode="json")["parsing"]["parse_pdf"] == "paperqa_pypdf.reader.parse_pdf_to_pages" ) assert "parse_pdf" not in pypdf_str.model_dump()["parsing"] # Test directly passing a normal parser pymupdf_fn = Settings(parsing=ParsingSettings(parse_pdf=pymupdf_parse_pdf_to_pages)) assert pymupdf_fn.parsing.parse_pdf == pymupdf_parse_pdf_to_pages assert ( pymupdf_fn.model_dump(mode="json")["parsing"]["parse_pdf"] == "paperqa_pymupdf.reader.parse_pdf_to_pages" ) assert "parse_pdf" not in pymupdf_fn.model_dump()["parsing"] # Test directly passing a lambda parser lambda_fn = Settings(parsing=ParsingSettings(parse_pdf=TEST_STUB_LAMBDA)) assert lambda_fn.parsing.parse_pdf == TEST_STUB_LAMBDA assert "parse_pdf" not in lambda_fn.model_dump(mode="json")["parsing"] assert "parse_pdf" not in lambda_fn.model_dump()["parsing"] # Test directly passing a functools partial parser partial_fn = Settings(parsing=ParsingSettings(parse_pdf=TEST_STUB_PARTIAL)) assert partial_fn.parsing.parse_pdf == TEST_STUB_PARTIAL assert "parse_pdf" not in partial_fn.model_dump(mode="json")["parsing"] assert "parse_pdf" not in partial_fn.model_dump()["parsing"] # Test a nonexistent FQN with pytest.raises(ValueError, match="Failed to locate"): Settings(parsing=ParsingSettings(parse_pdf="nonexistent.module.function")) # Test a valid FQN that is not a parser with pytest.raises(TypeError, match="not a PDF parser"): Settings(parsing=ParsingSettings(parse_pdf="os.path.sep")) @pytest.mark.asyncio @pytest.mark.parametrize("multimodal", [False, True]) async def test_reader_config_propagation(stub_data_dir: Path, multimodal: bool) -> None: settings = Settings( parsing=ParsingSettings( reader_config={"chunk_chars": 2000, "overlap": 50, "dpi": 144}, multimodal=multimodal, ) ) docs = Docs() with ( patch( "paperqa.docs.read_doc", side_effect=RuntimeError("sentinel") ) as mock_read_doc, pytest.raises(RuntimeError, match="sentinel"), ): await docs.aadd( stub_data_dir / "paper.pdf", citation="Wellawatte et al, XAI Review, 2023", # Skip citation inference doi="10.1021/acs.jctc.2c01235", # Skip DOI inference title="A Perspective on Explanations of Molecular Prediction Models", # Skip title inference settings=settings, ) mock_read_doc.assert_awaited_once() assert mock_read_doc.call_args.kwargs["chunk_chars"] == 2000 assert mock_read_doc.call_args.kwargs["overlap"] == 50 assert mock_read_doc.call_args.kwargs["parse_media"] == multimodal assert mock_read_doc.call_args.kwargs["dpi"] == 144 @pytest.mark.asyncio @pytest.mark.parametrize( ("filename", "query"), [ ("dummy.docx", "What is the RAG system?"), ("dummy_jap.docx", "What is the RAG system?"), ("dummy.pptx", "What is the RAG system?"), ("dummy.xlsx", "What is the price of a laptop?"), ], ) async def test_parse_office_doc(stub_data_dir: Path, filename: str, query: str) -> None: docs = Docs() settings = Settings( llm="gemini/gemini-2.5-flash", embedding="gemini/gemini-embedding-001", summary_llm="gemini/gemini-2.5-flash", agent={"agent_llm": "gemini/gemini-2.5-flash"}, parsing=ParsingSettings(use_doc_details=False), ) docname = await docs.aadd( stub_data_dir / filename, citation="dummy citation", docname=filename, settings=settings, ) assert docname is not None assert docs.texts session = await docs.aquery(query, settings=settings) assert session.used_contexts assert len(session.answer) > 10, "Expected an answer" assert CANNOT_ANSWER_PHRASE not in session.answer, "Expected the system to be sure" def test_text_comparison() -> None: doc = Doc(docname="test", citation="test", dockey="test") media1 = ParsedMedia(index=0, data=b"image_data_1") media2 = ParsedMedia(index=1, data=b"image_data_2") # Test equality and hashing without media text_no_media1 = Text(text="Hello", name="chunk1", doc=doc) text_no_media2 = Text(text="Hello", name="chunk1", doc=doc) assert text_no_media1 == text_no_media2 assert hash(text_no_media1) == hash(text_no_media2) # Test equality and hashing with media # First with same media text_with_media1 = Text(text="Hello", name="chunk1", doc=doc, media=[media1]) text_with_media2 = Text(text="Hello", name="chunk1", doc=doc, media=[media1]) assert text_with_media1 == text_with_media2 assert hash(text_with_media1) == hash(text_with_media2) # Next with different media text_diff_media = Text(text="Hello", name="chunk1", doc=doc, media=[media2]) assert text_with_media1 != text_diff_media assert hash(text_with_media1) != hash(text_diff_media) # Test that media matters for equality and set storage assert text_with_media1 != text_no_media1 assert hash(text_with_media1) != hash(text_no_media1) assert len({text_with_media1, text_with_media2, text_diff_media}) == 2 # Test with Pydantic extras text_with_extra1 = Text(text="Hello", name="chunk1", doc=doc, custom_field="value1") assert ( text_with_extra1 != text_no_media1 ), "Presence of an extra should not be equal" assert hash(text_with_extra1) != hash(text_no_media1) text_with_extra2 = Text(text="Hello", name="chunk1", doc=doc, custom_field="value1") assert text_with_extra1 == text_with_extra2 assert hash(text_with_extra1) == hash(text_with_extra2) text_with_extra_diff = Text( text="Hello", name="chunk1", doc=doc, custom_field="value2" ) assert ( text_with_extra1 != text_with_extra_diff ), "Different extra values should not be equal" assert hash(text_with_extra1) != hash(text_with_extra_diff) text_with_extra_other = Text( text="Hello", name="chunk1", doc=doc, other_custom_field="value1" ) assert ( text_with_extra1 != text_with_extra_other ), "Different extra keys should not be equal" assert hash(text_with_extra1) != hash(text_with_extra_other) text_with_unhashable_extra = Text( text="Hello", name="chunk1", doc=doc, unhashable_field=["a", "list"] ) with pytest.raises(NotImplementedError, match="unhashable extras"): hash(text_with_unhashable_extra) def test_context_comparison() -> None: text1 = Text( name="text1", text="Sample text content", doc=Doc(docname="test_doc", citation="Test Doc, 2025", dockey="key1"), ) text2 = Text( name="text2", text="Different text content", doc=Doc(docname="other_doc", citation="Other Doc, 2025", dockey="key2"), ) # Identical contexts should be equal context_base = Context( context="This is a test context", question="What is the test?", text=text1, score=5, ) context_none_question = Context( context="This is a test context", question=None, text=text1, score=5 ) context_base_identical = Context( context="This is a test context", question="What is the test?", text=text1, score=5, ) assert context_base == context_base_identical, "Identical contexts should be equal" assert hash(context_base) == hash( context_base_identical ), "Identical contexts should have same hash" context_none_question_identical = Context( context="This is a test context", question=None, text=text1, score=5 ) assert ( context_none_question == context_none_question_identical ), "Identical contexts should be equal" assert hash(context_none_question) == hash( context_none_question_identical ), "Identical contexts should have same hash" # Different context text should make contexts unequal context_diff_context = Context( context="Different context text", question="What is the test?", text=text1, score=5, ) assert ( context_base != context_diff_context ), "Different context text should make contexts unequal" assert hash(context_base) != hash( context_diff_context ), "Different context text should have different hashes" # Different questions should make contexts unequal context_diff_question = Context( context="This is a test context", question="Different question?", text=text1, score=5, ) assert ( context_base != context_diff_question ), "Different questions should make contexts unequal" assert hash(context_base) != hash( context_diff_question ), "Different questions should have different hashes" assert ( context_base != context_none_question ), "Different questions should make contexts unequal" # Different text objects should make contexts unequal context_diff_text = Context( context="This is a test context", question="What is the test?", text=text2, score=5, ) assert ( context_base != context_diff_text ), "Different text objects should make contexts unequal" assert hash(context_base) != hash( context_diff_text ), "Different text objects should have different hashes" # Different scores should make contexts unequal context_diff_score = Context( context="This is a test context", question="What is the test?", text=text1, score=3, ) assert ( context_base != context_diff_score ), "Different scores should make contexts unequal" assert hash(context_base) != hash( context_diff_score ), "Different scores should have different hashes" # Different IDs should make contexts unequal context_diff_id = Context( id="custom-id-1", context="This is a test context", question="What is the test?", text=text1, score=5, ) assert context_base != context_diff_id, "Different IDs should make contexts unequal" assert hash(context_base) != hash( context_diff_id ), "Different IDs should have different hashes" assert ( context_base != "This is a test context" ), "Different types should make contexts unequal" # Identical contexts with extras should be equal context_with_extras = Context( context="This is a test context", question="What is the test?", text=text1, score=5, author_name="John Doe", custom_field="value", ) context_with_extras_identical = Context( context="This is a test context", question="What is the test?", text=text1, score=5, author_name="John Doe", custom_field="value", ) assert ( context_with_extras == context_with_extras_identical ), "Contexts with identical extras should be equal" assert hash(context_with_extras) == hash( context_with_extras_identical ), "Contexts with identical extras should have same hash" # Extras should make contexts unequal assert context_base != context_with_extras, "Extras should make contexts unequal" assert hash(context_base) != hash( context_with_extras ), "Extras should have different hashes" # Different extra values should make contexts unequal context_diff_extras = Context( context="This is a test context", question="What is the test?", text=text1, score=5, author_name="Jane Smith", custom_field="value", ) assert ( context_with_extras != context_diff_extras ), "Contexts with different extra values should be unequal" assert hash(context_with_extras) != hash( context_diff_extras ), "Contexts with different extra values should have different hashes" # Different extras should make contexts unequal context_diff_extra_fields = Context( context="This is a test context", question="What is the test?", text=text1, score=5, author_name="John Doe", different_field="value", ) assert ( context_with_extras != context_diff_extra_fields ), "Contexts with different extras should be unequal" assert hash(context_with_extras) != hash( context_diff_extra_fields ), "Contexts with different extras should have different hashes" # Identical contexts with different ordered extras should be equal context_reordered_extras = Context( context="This is a test context", question="What is the test?", text=text1, score=5, custom_field="value", author_name="John Doe", # Reversed order from context_with_extras ) assert ( context_with_extras == context_reordered_extras ), "Contexts with extras in different order should be equal" assert hash(context_with_extras) == hash( context_reordered_extras ), "Contexts with extras in different order should have same hash" context_with_list_extras = Context( context="This is a test context", question="What is the test?", text=text1, score=5, tags=["tag1", "tag2"], ) assert ( context_base != context_with_list_extras ), "Different context text should make contexts unequal" assert hash(context_base) == hash(context_with_list_extras), ( "Since we discard extras that aren't hashable," "these should receive the same hash" ) assert ( context_with_extras != context_with_list_extras ), "Contexts with different extras should be unequal" assert hash(context_with_extras) != hash( context_with_list_extras ), "Contexts with different extras should have different hashes" ================================================ FILE: tests/test_utils.py ================================================ from paperqa.utils import citation_to_docname def test_citation_to_docname_acronym_title() -> None: citation = "CD47/SIRP\u03b1 axis: bridging innate and adaptive immunity, 2022" assert citation_to_docname(citation) == "CD472022" def test_citation_to_docname_non_text_fallback_is_deterministic() -> None: # Contrived edge-case input chosen to guarantee the final fallback branch: # - no TitleCase token (e.g., "Smith") # - no acronym token (e.g., "CD47") # This models malformed/placeholder citation text from extraction failures. citation = "___, n.d." first = citation_to_docname(citation) second = citation_to_docname(citation) assert first == second, ( "Expected deterministic fallback: identical malformed input should yield the " "same docname each call (regression guard against random/UUID-based suffixes)." ) assert first.startswith("Doc"), ( "Expected malformed citations to use the explicit final fallback format " "'Doc' (for example, Docc7acc74a)." )