From e45201becfbcc676568bdaeb3cf7fced5889c57a Mon Sep 17 00:00:00 2001 From: beaversd Date: Thu, 13 Aug 2026 13:51:44 -0700 Subject: [PATCH 001/136] update env variables. --- angular.json | 11 +++++ package.json | 5 +- .../publication/publication.component.html | 4 +- .../description-tab.component.html | 2 +- .../environments/environment.development.ts | 8 +++- .../src/environments/environment.github.ts | 8 +++- .../src/environments/environment.local.ts | 24 +++++++--- .../environments/environment.production.ts | 8 +++- .../src/environments/environment.release.ts | 8 +++- .../src/environments/environment.ts | 24 ++++++---- .../website-angular/src/app/app.routes.ts | 28 +++++++++-- .../app/breadcrumb/breadcrumb.component.ts | 17 +++++++ .../app/content/schema/schema.component.ts | 6 +-- .../website-angular/src/config/api-routes.ts | 6 +-- .../src/config/environments.ts | 46 ++++++++++++++++++- 15 files changed, 165 insertions(+), 40 deletions(-) diff --git a/angular.json b/angular.json index 336fbdb1..28200f7b 100644 --- a/angular.json +++ b/angular.json @@ -80,6 +80,14 @@ "optimization": false, "extractLicenses": false, "sourceMap": true + }, + "local": { + "optimization": false, + "extractLicenses": false, + "sourceMap": true, + "define": { + "APP_ENV": "\"local\"" + } } }, "defaultConfiguration": "production" @@ -95,6 +103,9 @@ }, "development": { "buildTarget": "reactome:build:development" + }, + "local": { + "buildTarget": "reactome:build:local" } }, "defaultConfiguration": "development" diff --git a/package.json b/package.json index 155804eb..1f648709 100644 --- a/package.json +++ b/package.json @@ -8,13 +8,16 @@ "check:nav-options": "npx tsx projects/website-angular/src/scripts/check-nav-options.ts", "dev:reactome-cytoscape-style": "ng build reactome-cytoscape-style --watch --configuration development", "dev:serve": "wait-on dist/reactome-cytoscape-style/assets/index.scss && tinacms dev --rootPath projects/website-angular -c \"ng serve\"", + "dev:serve:local": "wait-on dist/reactome-cytoscape-style/assets/index.scss && tinacms dev --rootPath projects/website-angular -c \"ng serve --configuration local\"", "build:reactome-cytoscape-style": "ng build reactome-cytoscape-style", "start": "npm run generate:indices && run-p dev:reactome-cytoscape-style dev:serve", + "start:local": "npm run generate:indices && run-p dev:reactome-cytoscape-style dev:serve:local", "start:simple": "ng serve", + "start:simple:local": "ng serve --configuration local", "start:website": "cd projects/website-angular && npm run start", "start:pathway": "cd projects/pathway-browser && npm run start-with-deps", "build": "npm run generate:indices && ng build --configuration production", - "build:website": "cd projects/website-angular && npm run build && cd ../../dist/reactome/browser/ && tar czvf browser.tar.gz * && scp browser.tar.gz aws_curator_new:~/browser.tar.gz && rm browser.tar.gz", + "build:website": "npm run build && cd dist/reactome/browser/ && tar czvf browser.tar.gz * && scp browser.tar.gz curator:~/browser.tar.gz && rm browser.tar.gz", "build:pathway": "cd projects/pathway-browser && npm run build", "watch": "ng build --watch --configuration development", "test": "vitest run", diff --git a/projects/pathway-browser/src/app/details/common/publication/publication.component.html b/projects/pathway-browser/src/app/details/common/publication/publication.component.html index 3780b000..177a6d96 100644 --- a/projects/pathway-browser/src/app/details/common/publication/publication.component.html +++ b/projects/pathway-browser/src/app/details/common/publication/publication.component.html @@ -11,7 +11,7 @@
- {{ firstAuthor.surname }} {{ firstAuthor.initial }} + {{ firstAuthor.displayName }} @if (isExpanded) { @@ -19,7 +19,7 @@ @for (author of ref().author.slice(1); track author) { - , {{ author.surname }} {{ author.initial }} + ; {{ author.displayName }} } diff --git a/projects/pathway-browser/src/app/details/tabs/description-tab/description-tab.component.html b/projects/pathway-browser/src/app/details/tabs/description-tab/description-tab.component.html index c0b69600..b3168613 100644 --- a/projects/pathway-browser/src/app/details/tabs/description-tab/description-tab.component.html +++ b/projects/pathway-browser/src/app/details/tabs/description-tab/description-tab.component.html @@ -317,7 +317,7 @@

Disease status

@for (ie of item.data; track $index) {
@for (author of ie.author; let i = $index; track $index) { - {{ author.firstname }} {{ author.surname }} diff --git a/projects/pathway-browser/src/environments/environment.development.ts b/projects/pathway-browser/src/environments/environment.development.ts index 73035465..cab6231a 100644 --- a/projects/pathway-browser/src/environments/environment.development.ts +++ b/projects/pathway-browser/src/environments/environment.development.ts @@ -23,7 +23,11 @@ export const DOWNLOAD = `${environment.host.replace(/\/curatorgraph\/?$/, '')}/d export const OVERLAYS = `${environment.host}/overlays`; export const CONTENT_DETAIL = `${environment.host}/content/detail`; export const CONTENT_DETAIL_PATH = '/content/detail'; +// Resolve against the hosting page's ("/" locally, "/curatorgraph/" +// when deployed) instead of hardcoding the deployed path segment. const schemaHost: string = - typeof window !== 'undefined' ? window.location.origin : environment.host; -export const CONTENT_SCHEMA = `${schemaHost}/curatorgraph/dataSchema`; + typeof document !== 'undefined' + ? document.baseURI.replace(/\/+$/, '') + : environment.host; +export const CONTENT_SCHEMA = `${schemaHost}/dataSchema`; export const CONTENT_QUERY = `${environment.host}/content/query`; diff --git a/projects/pathway-browser/src/environments/environment.github.ts b/projects/pathway-browser/src/environments/environment.github.ts index e10d039b..2e16bc2f 100644 --- a/projects/pathway-browser/src/environments/environment.github.ts +++ b/projects/pathway-browser/src/environments/environment.github.ts @@ -19,7 +19,11 @@ export const DOWNLOAD = `${environment.host.replace(/\/curatorgraph\/?$/, '')}/d export const OVERLAYS = `${environment.host}/overlays`; export const CONTENT_DETAIL = `${environment.host}/content/detail`; export const CONTENT_DETAIL_PATH = '/content/detail'; +// Resolve against the hosting page's ("/" locally, "/curatorgraph/" +// when deployed) instead of hardcoding the deployed path segment. const schemaHost: string = - typeof window !== 'undefined' ? window.location.origin : environment.host; -export const CONTENT_SCHEMA = `${schemaHost}/curatorgraph/dataSchema`; + typeof document !== 'undefined' + ? document.baseURI.replace(/\/+$/, '') + : environment.host; +export const CONTENT_SCHEMA = `${schemaHost}/dataSchema`; export const CONTENT_QUERY = `${environment.host}/content/query`; diff --git a/projects/pathway-browser/src/environments/environment.local.ts b/projects/pathway-browser/src/environments/environment.local.ts index e10d039b..9deffe44 100644 --- a/projects/pathway-browser/src/environments/environment.local.ts +++ b/projects/pathway-browser/src/environments/environment.local.ts @@ -1,13 +1,19 @@ +import { ENVIRONMENTS } from '../../../website-angular/src/config/environments'; + +const env = ENVIRONMENTS.local; + export const environment = { production: false, - host: "https://newcurator.reactome.org", - s3: "https://download.reactome.org", - gsaServer: "dev", + host: env.host, + s3: env.s3, + gsaServer: env.gsaServer, gtagId: "G-96F1EYHQR3", - preferS3: false, + preferS3: env.preferS3, }; -export const CONTENT_SERVICE = `${environment.host}/ContentService`; +// Points at the locally run curator-service, which serves /data, /search, +// /exporter and /interactors at its root rather than under a path segment. +export const CONTENT_SERVICE = env.contentService.replace(/\/+$/, ''); export const VERSION_FALLBACK = `https://newcurator.reactome.org/ContentService/data/database/version`; export const CONTENT_SERVICE_FALLBACK = `https://newcurator.reactome.org/ContentService`; export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; @@ -19,7 +25,11 @@ export const DOWNLOAD = `${environment.host.replace(/\/curatorgraph\/?$/, '')}/d export const OVERLAYS = `${environment.host}/overlays`; export const CONTENT_DETAIL = `${environment.host}/content/detail`; export const CONTENT_DETAIL_PATH = '/content/detail'; +// Resolve against the hosting page's ("/" locally, "/curatorgraph/" +// when deployed) instead of hardcoding the deployed path segment. const schemaHost: string = - typeof window !== 'undefined' ? window.location.origin : environment.host; -export const CONTENT_SCHEMA = `${schemaHost}/curatorgraph/dataSchema`; + typeof document !== 'undefined' + ? document.baseURI.replace(/\/+$/, '') + : environment.host; +export const CONTENT_SCHEMA = `${schemaHost}/dataSchema`; export const CONTENT_QUERY = `${environment.host}/content/query`; diff --git a/projects/pathway-browser/src/environments/environment.production.ts b/projects/pathway-browser/src/environments/environment.production.ts index 46fecaad..0e4c073e 100644 --- a/projects/pathway-browser/src/environments/environment.production.ts +++ b/projects/pathway-browser/src/environments/environment.production.ts @@ -23,7 +23,11 @@ export const DOWNLOAD = `${environment.host.replace(/\/curatorgraph\/?$/, '')}/d export const OVERLAYS = `${environment.host}/overlays`; export const CONTENT_DETAIL = `${environment.host}/content/detail`; export const CONTENT_DETAIL_PATH = '/content/detail'; +// Resolve against the hosting page's ("/" locally, "/curatorgraph/" +// when deployed) instead of hardcoding the deployed path segment. const schemaHost: string = - typeof window !== 'undefined' ? window.location.origin : environment.host; -export const CONTENT_SCHEMA = `${schemaHost}/curatorgraph/dataSchema`; + typeof document !== 'undefined' + ? document.baseURI.replace(/\/+$/, '') + : environment.host; +export const CONTENT_SCHEMA = `${schemaHost}/dataSchema`; export const CONTENT_QUERY = `${environment.host}/content/query`; diff --git a/projects/pathway-browser/src/environments/environment.release.ts b/projects/pathway-browser/src/environments/environment.release.ts index 328c1125..93758f65 100644 --- a/projects/pathway-browser/src/environments/environment.release.ts +++ b/projects/pathway-browser/src/environments/environment.release.ts @@ -17,7 +17,11 @@ export const DOWNLOAD = `${environment.host}/download/current`; export const OVERLAYS = `${environment.host}/overlays`; export const CONTENT_DETAIL = `${environment.host}/content/detail`; export const CONTENT_DETAIL_PATH = '/content/detail'; +// Resolve against the hosting page's ("/" locally, "/curatorgraph/" +// when deployed) instead of hardcoding the deployed path segment. const schemaHost: string = - typeof window !== 'undefined' ? window.location.origin : environment.host; -export const CONTENT_SCHEMA = `${schemaHost}/curatorgraph/dataSchema`; + typeof document !== 'undefined' + ? document.baseURI.replace(/\/+$/, '') + : environment.host; +export const CONTENT_SCHEMA = `${schemaHost}/dataSchema`; export const CONTENT_QUERY = `${environment.host}/content/query`; diff --git a/projects/pathway-browser/src/environments/environment.ts b/projects/pathway-browser/src/environments/environment.ts index 610bc5eb..29158f9e 100644 --- a/projects/pathway-browser/src/environments/environment.ts +++ b/projects/pathway-browser/src/environments/environment.ts @@ -1,8 +1,6 @@ -import { getEnv } from '../../../website-angular/src/config/environments'; +import { getEnv, SELECTED_ENV_NAME } from '../../../website-angular/src/config/environments'; -const selectedEnv = getEnv( - (typeof window !== 'undefined' && (window as any).__APP_ENV) || undefined -); +const selectedEnv = getEnv(SELECTED_ENV_NAME); // Normalize host to avoid accidental double slashes when building URLs. const host = selectedEnv.host.replace(/\/+$/, ''); @@ -16,7 +14,10 @@ export const environment = { preferS3: selectedEnv.preferS3, } -export const CONTENT_SERVICE = `${environment.host}/GraphContentService`; +// Base URL the app appends /data, /search, /exporter and /interactors to. Comes +// from the environment rather than being derived from `host` because a local +// curator-service serves those routes at its root, with no path segment. +export const CONTENT_SERVICE = selectedEnv.contentService.replace(/\/+$/, ''); // CORS-enabled public endpoint used only as a fallback to resolve the current // database version when the primary CONTENT_SERVICE version call fails. The // version is needed to build CORS-enabled S3 diagram URLs. @@ -36,12 +37,17 @@ export const CONTENT_DETAIL = `${environment.host}/content/detail`; // Path-only form for use with Angular RouterLink (which interprets absolute // URLs as relative paths and concatenates them onto the current route). export const CONTENT_DETAIL_PATH = '/content/detail'; -// Build person/schema links from the current browser origin so they keep -// working when the widget is deployed under different hosts. +// Build person/schema links from the hosting app shell's base URL so they keep +// working wherever the widget is deployed. document.baseURI resolves the page's +// against the current origin, which yields "/" under `ng serve` and +// "/curatorgraph/" on the deployed curator site - hardcoding "/curatorgraph" +// here appended a second copy of that segment in local dev. const schemaHost: string = - typeof window !== 'undefined' ? window.location.origin : environment.host; + typeof document !== 'undefined' + ? document.baseURI.replace(/\/+$/, '') + : environment.host; // Full-host base for the curator data-schema instance browser, used to build // author/person links so they resolve on the deployed host regardless of where // the embeddable pathway-browser element is hosted. -export const CONTENT_SCHEMA = `${schemaHost}/curatorgraph/dataSchema`; +export const CONTENT_SCHEMA = `${schemaHost}/dataSchema`; export const CONTENT_QUERY = `${environment.host}/content/query`; diff --git a/projects/website-angular/src/app/app.routes.ts b/projects/website-angular/src/app/app.routes.ts index c11242ba..efd5d12b 100644 --- a/projects/website-angular/src/app/app.routes.ts +++ b/projects/website-angular/src/app/app.routes.ts @@ -171,12 +171,18 @@ export const routes: Routes = [ ), pathMatch: 'full', }, + // The legacy schema browser addressed instances as + // /content/schema/:className/instance/:dbId. There is no /content/schema + // equivalent of the flat form, so send both instance shapes to the + // /dataSchema routes that replaced them. { path: 'content/schema/:className/instance/:dbId', - loadComponent: () => - import('./content/schema/schema.component').then( - (m) => m.SchemaComponent - ), + redirectTo: 'dataSchema/:className/:dbId', + pathMatch: 'full', + }, + { + path: 'content/schema/:className/instance', + redirectTo: 'dataSchema/:className', pathMatch: 'full', }, @@ -197,8 +203,22 @@ export const routes: Routes = [ ), pathMatch: 'full', }, + // The old form carried a literal "instance" segment that wasn't routable on + // its own (it showed up as a dead breadcrumb crumb), so redirect it to the + // flat /dataSchema/:className/:dbId form to keep existing links working. { path: 'dataSchema/:className/instance/:dbId', + redirectTo: 'dataSchema/:className/:dbId', + pathMatch: 'full', + }, + // Same segment with no dbId behind it: fall back to the class page. + { + path: 'dataSchema/:className/instance', + redirectTo: 'dataSchema/:className', + pathMatch: 'full', + }, + { + path: 'dataSchema/:className/:dbId', loadComponent: () => import('./content/schema/schema.component').then( (m) => m.SchemaComponent diff --git a/projects/website-angular/src/app/breadcrumb/breadcrumb.component.ts b/projects/website-angular/src/app/breadcrumb/breadcrumb.component.ts index fe7f456c..bfe0e754 100644 --- a/projects/website-angular/src/app/breadcrumb/breadcrumb.component.ts +++ b/projects/website-angular/src/app/breadcrumb/breadcrumb.component.ts @@ -138,10 +138,19 @@ export class BreadcrumbComponent { this.breadcrumbs = []; let currentPath = ''; let currentNavLevel: Record = this.navOptions; + const schemaPath = this.isSchemaPath(segments); for (const segment of segments) { currentPath += '/' + segment; + // Legacy schema instance URLs (/dataSchema/:className/instance/:dbId) + // carry a literal "instance" segment that isn't routable on its own, so + // it would render as a dead crumb. Skip it, but keep it in currentPath + // so the dbId crumb still links to the URL the user is actually on. + if (schemaPath && segment === 'instance') { + continue; + } + // First, try to look up the nav link directly by segment key let matchedLink = currentNavLevel[segment]; @@ -178,6 +187,14 @@ export class BreadcrumbComponent { } } + /** True for the schema browser routes, new (/dataSchema) and legacy. */ + private isSchemaPath(segments: string[]): boolean { + return ( + segments[0] === 'dataSchema' || + (segments[0] === 'content' && segments[1] === 'schema') + ); + } + /** * Append a leaf entry to breadcrumbs after updateBreadcrumbs() finishes * (it can be deferred while it polls for navOptions). Without this guard diff --git a/projects/website-angular/src/app/content/schema/schema.component.ts b/projects/website-angular/src/app/content/schema/schema.component.ts index e7a80dd8..0f6a6698 100644 --- a/projects/website-angular/src/app/content/schema/schema.component.ts +++ b/projects/website-angular/src/app/content/schema/schema.component.ts @@ -90,7 +90,7 @@ export class SchemaComponent implements OnInit, OnDestroy { // Listen for route changes. The path can be either // /dataSchema/:className // or - // /dataSchema/:className/instance/:dbId + // /dataSchema/:className/:dbId // so a single subscription has to keep both selectedClass and // selectedInstanceId in sync with the URL. this.route.params.pipe(takeUntil(this.destroy$)).subscribe((params) => { @@ -381,7 +381,7 @@ export class SchemaComponent implements OnInit, OnDestroy { selectInstance(dbId: number) { this.router.navigate( - ['/dataSchema', this.selectedClass, 'instance', dbId], + ['/dataSchema', this.selectedClass, dbId], { queryParams: { tab: 'entries' }, queryParamsHandling: 'merge' }, ); } @@ -397,7 +397,7 @@ export class SchemaComponent implements OnInit, OnDestroy { // of a different schema class; we'll fix the className segment after // the instance loads and reveals its real class. this.router.navigate( - ['/dataSchema', this.selectedClass, 'instance', dbId], + ['/dataSchema', this.selectedClass, dbId], { queryParams: { tab: 'entries' }, queryParamsHandling: 'merge' }, ); } diff --git a/projects/website-angular/src/config/api-routes.ts b/projects/website-angular/src/config/api-routes.ts index 557e89f6..446128a5 100644 --- a/projects/website-angular/src/config/api-routes.ts +++ b/projects/website-angular/src/config/api-routes.ts @@ -1,9 +1,9 @@ -import { getEnv } from './environments'; +import { getEnv, SELECTED_ENV_NAME } from './environments'; -const env = getEnv(process.env['APP_ENV'] || (typeof window !== 'undefined' && (window as any).__APP_ENV) || undefined); +const env = getEnv(SELECTED_ENV_NAME); export const API_ROUTES = { - CONTENT_SERVICE: `${env.host}/GraphContentService`, + CONTENT_SERVICE: env.contentService, ANALYSIS_SERVICE: `${env.host}/AnalysisService`, EXPERIMENT_SERVICE: `${env.host}/experiment`, RESTFUL_API: `${env.host}/ReactomeRESTfulAPI`, diff --git a/projects/website-angular/src/config/environments.ts b/projects/website-angular/src/config/environments.ts index 9a047c9d..8596b7eb 100644 --- a/projects/website-angular/src/config/environments.ts +++ b/projects/website-angular/src/config/environments.ts @@ -1,8 +1,22 @@ export type EnvName = 'development' | 'production' | 'local' | 'github' | 'remote'; -export const ENVIRONMENTS: Record = { +export interface EnvConfig { + host: string; + // Full base URL of the graph content service, kept separate from `host` + // because the path segment differs per deployment: the curator site serves it + // under /GraphContentService, while a locally run curator-service serves the + // same routes (/data, /search, /exporter, /interactors) straight off its root. + contentService: string; + s3: string; + gsaServer: string; + gtagId?: string; + preferS3?: boolean; +} + +export const ENVIRONMENTS: Record = { development: { host: 'https://newcurator.reactome.org', + contentService: 'https://newcurator.reactome.org/GraphContentService', s3: 'https://download.reactome.org', gsaServer: 'dev', gtagId: 'G-96F1EYHQR3', @@ -10,34 +24,62 @@ export const ENVIRONMENTS: Record Date: Thu, 13 Aug 2026 14:05:01 -0700 Subject: [PATCH 002/136] For Literature display, if authorName, use this, otherwise use author. --- .../publication/publication.component.html | 12 ++++----- .../publication/publication.component.ts | 26 ++++++++++++++++++- .../graph/publication/publication.model.ts | 3 +++ .../src/app/pipes/include-ref.pipe.ts | 4 ++- 4 files changed, 37 insertions(+), 8 deletions(-) diff --git a/projects/pathway-browser/src/app/details/common/publication/publication.component.html b/projects/pathway-browser/src/app/details/common/publication/publication.component.html index 177a6d96..e42cf2e6 100644 --- a/projects/pathway-browser/src/app/details/common/publication/publication.component.html +++ b/projects/pathway-browser/src/app/details/common/publication/publication.component.html @@ -6,20 +6,20 @@
- @if (ref().author[0]; as firstAuthor) { + @if (authors()[0]; as firstAuthor) {
- {{ firstAuthor.displayName }} + {{ firstAuthor.name }} @if (isExpanded) { - @for (author of ref().author.slice(1); track author) { + @for (author of authors().slice(1); track $index) { - ; {{ author.displayName }} + ; {{ author.name }} } @@ -34,7 +34,7 @@ } - @if (ref().author.length > 1 && !isExpanded) { + @if (authors().length > 1 && !isExpanded) {  et al. } @@ -42,7 +42,7 @@  {{ ref().year }} } - @if (ref().author.length > 1) { + @if (authors().length > 1) { diff --git a/projects/pathway-browser/src/app/details/common/publication/publication.component.ts b/projects/pathway-browser/src/app/details/common/publication/publication.component.ts index edeb7ae2..0c366413 100644 --- a/projects/pathway-browser/src/app/details/common/publication/publication.component.ts +++ b/projects/pathway-browser/src/app/details/common/publication/publication.component.ts @@ -1,4 +1,4 @@ -import {Component, input} from '@angular/core'; +import {Component, computed, input} from '@angular/core'; import {LiteratureReference} from "../../../model/graph/publication/literature-reference.model"; import {Publication} from "../../../model/graph/publication/publication.model"; import {SafePipe} from "../../../pipes/safe.pipe"; @@ -19,6 +19,30 @@ export class PublicationComponent{ readonly showYear = input(false); isExpanded = false; + // Authors come from either the curated free-text authorName values or, when + // those are absent, the linked Person instances. Both attributes are + // multivalued, so every value is listed. ORCID ids only exist on Person, so + // they are undefined for the authorName case. + readonly authors = computed<{ name: string, orcidId?: string }[]>(() => { + const ref = this.ref(); + const authorNames = this.asArray(ref.authorName) + .map(name => name?.trim()) + .filter((name): name is string => !!name); + + if (authorNames.length > 0) { + return authorNames.map(name => ({name})); + } + + return this.asArray(ref.author) + .filter(person => !!person) + .map(person => ({name: person.displayName, orcidId: person.orcidId})); + }); + + private asArray(value: E[] | E | undefined | null): E[] { + if (value === undefined || value === null) return []; + return Array.isArray(value) ? value : [value]; + } + toggleAuthors() { this.isExpanded = !this.isExpanded; diff --git a/projects/pathway-browser/src/app/model/graph/publication/publication.model.ts b/projects/pathway-browser/src/app/model/graph/publication/publication.model.ts index 4e2c9c3b..0a6bc732 100644 --- a/projects/pathway-browser/src/app/model/graph/publication/publication.model.ts +++ b/projects/pathway-browser/src/app/model/graph/publication/publication.model.ts @@ -3,5 +3,8 @@ import {Person} from "../person.model"; export interface Publication extends DatabaseObject { author: Person[]; + // Free-text author names, curated when the authors have no Person instances. + // Takes precedence over author when populated. + authorName?: string[] | string; title: string; } diff --git a/projects/pathway-browser/src/app/pipes/include-ref.pipe.ts b/projects/pathway-browser/src/app/pipes/include-ref.pipe.ts index 98a4e6d4..c5a6a06e 100644 --- a/projects/pathway-browser/src/app/pipes/include-ref.pipe.ts +++ b/projects/pathway-browser/src/app/pipes/include-ref.pipe.ts @@ -12,7 +12,9 @@ export class IncludeRefPipe implements PipeTransform { transform(text: string, refs: LiteratureReference[]): SafeHtml { refs - .filter(ref => ref && ref.url) + // Refs whose authors are only curated as free-text authorName values have + // no Person instances to build the citation pattern from. + .filter(ref => ref && ref.url && ref.author?.length > 0) .forEach(ref => { let replacer = (match: string) => `${match}` text = text.replaceAll(new RegExp(`${ref.author[0].surname} ?${this.initials(ref.author[0].initial)}\\.? ?( et al[., ]{0,2})? ?${ref.year}`, 'g'), replacer); From a56a19894aa3c9dc829b1907de63a19815248a15 Mon Sep 17 00:00:00 2001 From: beaversd Date: Fri, 14 Aug 2026 11:59:38 -0700 Subject: [PATCH 003/136] wip --- package-lock.json | 78 +++++++++++++++++++- projects/website-angular/tina/tina-lock.json | 2 +- 2 files changed, 77 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 22534e17..829fa317 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2849,6 +2849,50 @@ "integrity": "sha512-SPIU5CR+y6E/ZXVLTsLHWrjithoNpGpcMqTHAiRaYU/61AIFL6YJQ3yNU+KfN67mP2YnvoELjiHWQzQ+2k2+5w==", "license": "SEE LICENSE IN LICENSE.txt" }, + "node_modules/@chevrotain/types": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.1.2.tgz", + "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==", + "license": "Apache-2.0" + }, + "node_modules/@codemirror/language": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.0.0.tgz", + "integrity": "sha512-rtjk5ifyMzOna1c7PBu7J1VCt0PvA5wy3o8eMVnxMKb7z8KA7JFecvD04dSn14vj/bBaAbqRsGed5OjtofEnLA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/state": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.7.1.tgz", + "integrity": "sha512-9QzNDgE4EYDnAHfrTlR2lwiPciiOymLtwKK+8yHQzCc7GXhAP9xdEbEJFy2IWB1j9UGUl9BsgMmTo/ImA02T7A==", + "license": "MIT", + "peer": true, + "dependencies": { + "@marijn/find-cluster-break": "^1.0.0" + } + }, + "node_modules/@codemirror/view": { + "version": "6.43.8", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.8.tgz", + "integrity": "sha512-qtItTDssZ/5GFfi94hrILu9j/VUeFPDPkhovEfmWFj2ipTxnzPB8DdHgfbb8HYTzLTYhrndKmyQxXUz/PDLenw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@codemirror/state": "^6.7.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, "node_modules/@csstools/color-helpers": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.0.2.tgz", @@ -5573,6 +5617,22 @@ "integrity": "sha512-SQ8sDrUrGMM24QWjs0n863SKobMSB9Plz8gbte9RYnLc4TfmQoWxjFgGBTlbGnh/aTQvtpxOxX2ueBohCsCaRQ==", "license": "MIT" }, + "node_modules/@marijn/find-cluster-break": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.3.tgz", + "integrity": "sha512-FY+MKLBoTsLNJF/eLWaOsXGdz6uh3Iu1axjPf6TUq92IYumcTcXWHoS747JARLkcdlJ/Waiaxc5wQfFO8jC6NA==", + "license": "MIT", + "peer": true + }, + "node_modules/@mermaid-js/parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.2.0.tgz", + "integrity": "sha512-oYPyv8A4As1yH5Bx+04iQEQxXuIQDe0GKCNSRgao6z8AM9jixXIfP0vsppRLvGf+nKIOb9/LdpWA4YuJiVvESA==", + "license": "MIT", + "dependencies": { + "@chevrotain/types": "~11.1.2" + } + }, "node_modules/@monaco-editor/loader": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.7.0.tgz", @@ -10480,6 +10540,22 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/@tinacms/cli/node_modules/micromark-util-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz", + "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, "node_modules/@tinacms/cli/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -12012,7 +12088,6 @@ "version": "25.2.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.0.tgz", "integrity": "sha512-DZ8VwRFUNzuqJ5khrvwMXHmvPe+zGayJhr2CDNiKB1WBE1ST8Djl00D0IC4vvNmHMdj6DlbYRIaFE7WHjlDl5w==", - "dev": true, "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -29860,7 +29935,6 @@ "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "dev": true, "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { diff --git a/projects/website-angular/tina/tina-lock.json b/projects/website-angular/tina/tina-lock.json index 7eaa9d8d..4659e2ff 100644 --- a/projects/website-angular/tina/tina-lock.json +++ b/projects/website-angular/tina/tina-lock.json @@ -1 +1 @@ -{"schema":{"version":{"fullVersion":"2.1.1","major":"2","minor":"1","patch":"1"},"meta":{"flags":["experimentalData"]},"collections":[{"name":"about","label":"About","path":"content/about","format":"mdx","match":{"exclude":"news/**"},"fields":[{"type":"string","name":"title","label":"Title","isTitle":true,"required":true,"namespace":["about","title"],"searchable":true,"uid":false},{"type":"string","name":"description","label":"Description","namespace":["about","description"],"searchable":true,"uid":false},{"type":"string","name":"category","label":"Category","options":["about","content","documentation","tools","community","download"],"namespace":["about","category"],"searchable":true,"uid":false},{"type":"rich-text","name":"body","label":"Body","isBody":true,"namespace":["about","body"],"searchable":true,"parser":{"type":"mdx"},"uid":false},{"type":"image","name":"image","label":"Image","namespace":["about","image"],"searchable":false,"uid":false}],"namespace":["about"]},{"name":"news","label":"News","path":"content/about/news","format":"mdx","fields":[{"type":"string","name":"title","label":"Title","isTitle":true,"required":true,"namespace":["news","title"],"searchable":true,"uid":false},{"type":"datetime","name":"date","label":"Date Published","required":true,"namespace":["news","date"],"searchable":true,"uid":false},{"type":"string","name":"author","label":"Author","namespace":["news","author"],"searchable":true,"uid":false},{"type":"rich-text","name":"body","label":"Body","isBody":true,"required":true,"namespace":["news","body"],"searchable":true,"parser":{"type":"mdx"},"uid":false},{"type":"string","name":"tags","label":"Tags","list":true,"namespace":["news","tags"],"searchable":true,"uid":false},{"type":"image","name":"image","label":"Image","namespace":["news","image"],"searchable":false,"uid":false}],"namespace":["news"]},{"name":"content","label":"Content","path":"content/content","format":"mdx","match":{"exclude":"reactome-research-spotlight/**"},"fields":[{"type":"string","name":"title","label":"Title","isTitle":true,"required":true,"namespace":["content","title"],"searchable":true,"uid":false},{"type":"string","name":"description","label":"Description","namespace":["content","description"],"searchable":true,"uid":false},{"type":"string","name":"category","label":"Category","options":["about","content","documentation","tools","community","download"],"namespace":["content","category"],"searchable":true,"uid":false},{"type":"rich-text","name":"body","label":"Body","isBody":true,"namespace":["content","body"],"searchable":true,"parser":{"type":"mdx"},"uid":false},{"type":"image","name":"image","label":"Image","namespace":["content","image"],"searchable":false,"uid":false}],"namespace":["content"]},{"name":"reactome_research_spotlights","label":"Reactome Research Spotlights","path":"content/content/reactome-research-spotlight","format":"mdx","fields":[{"type":"string","name":"title","label":"Title","isTitle":true,"required":true,"namespace":["reactome_research_spotlights","title"],"searchable":true,"uid":false},{"type":"datetime","name":"date","label":"Date Published","namespace":["reactome_research_spotlights","date"],"searchable":true,"uid":false},{"type":"string","name":"author","label":"Author","namespace":["reactome_research_spotlights","author"],"searchable":true,"uid":false},{"type":"rich-text","name":"body","label":"Body","isBody":true,"namespace":["reactome_research_spotlights","body"],"searchable":true,"parser":{"type":"mdx"},"uid":false},{"type":"string","name":"tags","label":"Tags","list":true,"namespace":["reactome_research_spotlights","tags"],"searchable":true,"uid":false},{"type":"image","name":"image","label":"Image","namespace":["reactome_research_spotlights","image"],"searchable":false,"uid":false}],"namespace":["reactome_research_spotlights"]},{"name":"documentation","label":"Documentation","path":"content/documentation","format":"mdx","fields":[{"type":"string","name":"title","label":"Title","isTitle":true,"required":true,"namespace":["documentation","title"],"searchable":true,"uid":false},{"type":"string","name":"description","label":"Description","namespace":["documentation","description"],"searchable":true,"uid":false},{"type":"string","name":"category","label":"Category","options":["about","content","documentation","tools","community","download"],"namespace":["documentation","category"],"searchable":true,"uid":false},{"type":"rich-text","name":"body","label":"Body","isBody":true,"namespace":["documentation","body"],"searchable":true,"parser":{"type":"mdx"},"uid":false},{"type":"image","name":"image","label":"Image","namespace":["documentation","image"],"searchable":false,"uid":false}],"namespace":["documentation"]},{"name":"faq","label":"FAQ","path":"documentation/faq","format":"mdx","fields":[{"type":"string","name":"question_id","label":"Question ID","required":true,"namespace":["faq","question_id"],"searchable":true,"uid":false},{"type":"string","name":"question","label":"Question","isTitle":true,"required":true,"namespace":["faq","question"],"searchable":true,"uid":false},{"type":"rich-text","name":"answer","label":"Answer","isBody":true,"required":true,"namespace":["faq","answer"],"searchable":true,"parser":{"type":"mdx"},"uid":false},{"type":"string","name":"related_links","label":"Related Links","list":true,"namespace":["faq","related_links"],"searchable":true,"uid":false}],"namespace":["faq"]},{"name":"community","label":"Community","path":"content/community","format":"mdx","fields":[{"type":"string","name":"title","label":"Title","isTitle":true,"required":true,"namespace":["community","title"],"searchable":true,"uid":false},{"type":"string","name":"description","label":"Description","namespace":["community","description"],"searchable":true,"uid":false},{"type":"string","name":"category","label":"Category","options":["about","content","documentation","tools","community","download"],"namespace":["community","category"],"searchable":true,"uid":false},{"type":"rich-text","name":"body","label":"Body","isBody":true,"namespace":["community","body"],"searchable":true,"parser":{"type":"mdx"},"uid":false},{"type":"image","name":"image","label":"Image","namespace":["community","image"],"searchable":false,"uid":false}],"namespace":["community"]}],"config":{"media":{"tina":{"publicFolder":"public","mediaRoot":"uploads"}}}},"lookup":{"DocumentConnection":{"type":"DocumentConnection","resolveType":"multiCollectionDocumentList","collections":["about","news","content","reactome_research_spotlights","documentation","faq","community"]},"Node":{"type":"Node","resolveType":"nodeDocument"},"DocumentNode":{"type":"DocumentNode","resolveType":"multiCollectionDocument","createDocument":"create","updateDocument":"update"},"About":{"type":"About","resolveType":"collectionDocument","collection":"about","createAbout":"create","updateAbout":"update"},"AboutConnection":{"type":"AboutConnection","resolveType":"collectionDocumentList","collection":"about"},"News":{"type":"News","resolveType":"collectionDocument","collection":"news","createNews":"create","updateNews":"update"},"NewsConnection":{"type":"NewsConnection","resolveType":"collectionDocumentList","collection":"news"},"Content":{"type":"Content","resolveType":"collectionDocument","collection":"content","createContent":"create","updateContent":"update"},"ContentConnection":{"type":"ContentConnection","resolveType":"collectionDocumentList","collection":"content"},"Reactome_research_spotlights":{"type":"Reactome_research_spotlights","resolveType":"collectionDocument","collection":"reactome_research_spotlights","createReactome_research_spotlights":"create","updateReactome_research_spotlights":"update"},"Reactome_research_spotlightsConnection":{"type":"Reactome_research_spotlightsConnection","resolveType":"collectionDocumentList","collection":"reactome_research_spotlights"},"Documentation":{"type":"Documentation","resolveType":"collectionDocument","collection":"documentation","createDocumentation":"create","updateDocumentation":"update"},"DocumentationConnection":{"type":"DocumentationConnection","resolveType":"collectionDocumentList","collection":"documentation"},"Faq":{"type":"Faq","resolveType":"collectionDocument","collection":"faq","createFaq":"create","updateFaq":"update"},"FaqConnection":{"type":"FaqConnection","resolveType":"collectionDocumentList","collection":"faq"},"Community":{"type":"Community","resolveType":"collectionDocument","collection":"community","createCommunity":"create","updateCommunity":"update"},"CommunityConnection":{"type":"CommunityConnection","resolveType":"collectionDocumentList","collection":"community"}},"graphql":{"kind":"Document","definitions":[{"kind":"ScalarTypeDefinition","name":{"kind":"Name","value":"Reference"},"description":{"kind":"StringValue","value":"References another document, used as a foreign key"},"directives":[]},{"kind":"ScalarTypeDefinition","name":{"kind":"Name","value":"JSON"},"description":{"kind":"StringValue","value":""},"directives":[]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"SystemInfo"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"filename"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"title"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"basename"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"hasReferences"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"breadcrumbs"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"excludeExtension"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}],"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"path"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"relativePath"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"extension"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"template"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"collection"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Collection"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"Folder"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"name"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"path"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"PageInfo"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"hasPreviousPage"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"hasNextPage"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"startCursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"endCursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}]},{"kind":"InterfaceTypeDefinition","description":{"kind":"StringValue","value":""},"name":{"kind":"Name","value":"Node"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}]},{"kind":"InterfaceTypeDefinition","description":{"kind":"StringValue","value":""},"name":{"kind":"Name","value":"Document"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_sys"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"SystemInfo"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_values"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}]},{"kind":"InterfaceTypeDefinition","description":{"kind":"StringValue","value":"A relay-compliant pagination connection"},"name":{"kind":"Name","value":"Connection"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"Query"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"getOptimizedQuery"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"queryString"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"collection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"collection"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Collection"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"collections"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Collection"}}}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"id"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Node"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"document"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"collection"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentNode"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"about"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"About"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"aboutConnection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"last"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"filter"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"AboutFilter"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AboutConnection"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"news"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"News"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"newsConnection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"last"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"filter"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"NewsFilter"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"NewsConnection"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"content"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Content"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"contentConnection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"last"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"filter"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ContentFilter"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ContentConnection"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"reactome_research_spotlights"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlights"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"reactome_research_spotlightsConnection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"last"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"filter"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlightsFilter"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlightsConnection"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"documentation"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Documentation"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"documentationConnection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"last"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"filter"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentationFilter"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentationConnection"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"faq"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Faq"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"faqConnection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"last"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"filter"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"FaqFilter"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"FaqConnection"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"community"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Community"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"communityConnection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"last"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"filter"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"CommunityFilter"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CommunityConnection"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"DocumentFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"about"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"AboutFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"news"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"NewsFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"content"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ContentFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"reactome_research_spotlights"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlightsFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"documentation"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentationFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"faq"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"FaqFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"community"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"CommunityFilter"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"DocumentConnectionEdges"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentNode"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Connection"}}],"directives":[],"name":{"kind":"Name","value":"DocumentConnection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentConnectionEdges"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"Collection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"name"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"slug"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"label"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"path"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"format"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"matches"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"templates"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"fields"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"documents"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"last"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"filter"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"folder"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentConnection"}}}}]},{"kind":"UnionTypeDefinition","name":{"kind":"Name","value":"DocumentNode"},"directives":[],"types":[{"kind":"NamedType","name":{"kind":"Name","value":"About"}},{"kind":"NamedType","name":{"kind":"Name","value":"News"}},{"kind":"NamedType","name":{"kind":"Name","value":"Content"}},{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlights"}},{"kind":"NamedType","name":{"kind":"Name","value":"Documentation"}},{"kind":"NamedType","name":{"kind":"Name","value":"Faq"}},{"kind":"NamedType","name":{"kind":"Name","value":"Community"}},{"kind":"NamedType","name":{"kind":"Name","value":"Folder"}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Node"}},{"kind":"NamedType","name":{"kind":"Name","value":"Document"}}],"directives":[],"name":{"kind":"Name","value":"About"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"title"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"description"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"category"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"body"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"image"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_sys"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SystemInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_values"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"StringFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"startsWith"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"eq"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"exists"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"in"},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"RichTextFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"startsWith"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"eq"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"exists"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"ImageFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"startsWith"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"eq"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"exists"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"in"},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"AboutFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"description"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"category"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"RichTextFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ImageFilter"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"AboutConnectionEdges"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"About"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Connection"}}],"directives":[],"name":{"kind":"Name","value":"AboutConnection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AboutConnectionEdges"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Node"}},{"kind":"NamedType","name":{"kind":"Name","value":"Document"}}],"directives":[],"name":{"kind":"Name","value":"News"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"title"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"date"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"author"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"body"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"tags"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"image"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_sys"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SystemInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_values"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"DatetimeFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"eq"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"exists"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"in"},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"NewsFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"date"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DatetimeFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"author"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"RichTextFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"tags"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ImageFilter"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"NewsConnectionEdges"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"News"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Connection"}}],"directives":[],"name":{"kind":"Name","value":"NewsConnection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"NewsConnectionEdges"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Node"}},{"kind":"NamedType","name":{"kind":"Name","value":"Document"}}],"directives":[],"name":{"kind":"Name","value":"Content"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"title"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"description"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"category"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"body"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"image"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_sys"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SystemInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_values"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"ContentFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"description"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"category"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"RichTextFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ImageFilter"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"ContentConnectionEdges"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"Content"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Connection"}}],"directives":[],"name":{"kind":"Name","value":"ContentConnection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ContentConnectionEdges"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Node"}},{"kind":"NamedType","name":{"kind":"Name","value":"Document"}}],"directives":[],"name":{"kind":"Name","value":"Reactome_research_spotlights"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"title"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"date"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"author"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"body"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"tags"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"image"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_sys"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SystemInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_values"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"Reactome_research_spotlightsFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"date"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DatetimeFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"author"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"RichTextFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"tags"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ImageFilter"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"Reactome_research_spotlightsConnectionEdges"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlights"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Connection"}}],"directives":[],"name":{"kind":"Name","value":"Reactome_research_spotlightsConnection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlightsConnectionEdges"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Node"}},{"kind":"NamedType","name":{"kind":"Name","value":"Document"}}],"directives":[],"name":{"kind":"Name","value":"Documentation"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"title"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"description"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"category"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"body"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"image"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_sys"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SystemInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_values"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"DocumentationFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"description"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"category"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"RichTextFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ImageFilter"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"DocumentationConnectionEdges"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"Documentation"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Connection"}}],"directives":[],"name":{"kind":"Name","value":"DocumentationConnection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentationConnectionEdges"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Node"}},{"kind":"NamedType","name":{"kind":"Name","value":"Document"}}],"directives":[],"name":{"kind":"Name","value":"Faq"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"question_id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"question"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"answer"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"related_links"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_sys"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SystemInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_values"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"FaqFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"question_id"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"question"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"answer"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"RichTextFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"related_links"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"FaqConnectionEdges"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"Faq"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Connection"}}],"directives":[],"name":{"kind":"Name","value":"FaqConnection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"FaqConnectionEdges"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Node"}},{"kind":"NamedType","name":{"kind":"Name","value":"Document"}}],"directives":[],"name":{"kind":"Name","value":"Community"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"title"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"description"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"category"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"body"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"image"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_sys"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SystemInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_values"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"CommunityFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"description"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"category"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"RichTextFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ImageFilter"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"CommunityConnectionEdges"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"Community"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Connection"}}],"directives":[],"name":{"kind":"Name","value":"CommunityConnection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CommunityConnectionEdges"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"Mutation"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"addPendingDocument"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"collection"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"template"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentNode"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateDocument"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"collection"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentUpdateMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentNode"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"deleteDocument"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"collection"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentNode"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createDocument"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"collection"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentNode"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createFolder"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"collection"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentNode"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateAbout"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AboutMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"About"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createAbout"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AboutMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"About"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateNews"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"NewsMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"News"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createNews"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"NewsMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"News"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateContent"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ContentMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Content"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createContent"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ContentMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Content"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateReactome_research_spotlights"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlightsMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlights"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createReactome_research_spotlights"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlightsMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlights"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateDocumentation"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentationMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Documentation"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createDocumentation"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentationMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Documentation"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateFaq"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"FaqMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Faq"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createFaq"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"FaqMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Faq"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateCommunity"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CommunityMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Community"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createCommunity"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CommunityMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Community"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"DocumentUpdateMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"about"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"AboutMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"news"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"NewsMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"content"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ContentMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"reactome_research_spotlights"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlightsMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"documentation"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentationMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"faq"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"FaqMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"community"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"CommunityMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"DocumentMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"about"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"AboutMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"news"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"NewsMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"content"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ContentMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"reactome_research_spotlights"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlightsMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"documentation"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentationMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"faq"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"FaqMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"community"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"CommunityMutation"}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"AboutMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"description"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"category"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"NewsMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"date"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"author"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"tags"},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"ContentMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"description"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"category"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"Reactome_research_spotlightsMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"date"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"author"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"tags"},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"DocumentationMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"description"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"category"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"FaqMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"question_id"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"question"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"answer"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"related_links"},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"CommunityMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"description"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"category"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}]}]}} \ No newline at end of file +{"schema":{"version":{"fullVersion":"2.1.3","major":"2","minor":"1","patch":"3"},"meta":{"flags":["experimentalData"]},"collections":[{"name":"about","label":"About","path":"content/about","format":"mdx","match":{"exclude":"news/**"},"fields":[{"type":"string","name":"title","label":"Title","isTitle":true,"required":true,"namespace":["about","title"],"searchable":true,"uid":false},{"type":"string","name":"description","label":"Description","namespace":["about","description"],"searchable":true,"uid":false},{"type":"string","name":"category","label":"Category","options":["about","content","documentation","tools","community","download"],"namespace":["about","category"],"searchable":true,"uid":false},{"type":"rich-text","name":"body","label":"Body","isBody":true,"namespace":["about","body"],"searchable":true,"parser":{"type":"mdx"},"uid":false},{"type":"image","name":"image","label":"Image","namespace":["about","image"],"searchable":false,"uid":false}],"namespace":["about"]},{"name":"news","label":"News","path":"content/about/news","format":"mdx","fields":[{"type":"string","name":"title","label":"Title","isTitle":true,"required":true,"namespace":["news","title"],"searchable":true,"uid":false},{"type":"datetime","name":"date","label":"Date Published","required":true,"namespace":["news","date"],"searchable":true,"uid":false},{"type":"string","name":"author","label":"Author","namespace":["news","author"],"searchable":true,"uid":false},{"type":"rich-text","name":"body","label":"Body","isBody":true,"required":true,"namespace":["news","body"],"searchable":true,"parser":{"type":"mdx"},"uid":false},{"type":"string","name":"tags","label":"Tags","list":true,"namespace":["news","tags"],"searchable":true,"uid":false},{"type":"image","name":"image","label":"Image","namespace":["news","image"],"searchable":false,"uid":false}],"namespace":["news"]},{"name":"content","label":"Content","path":"content/content","format":"mdx","match":{"exclude":"reactome-research-spotlight/**"},"fields":[{"type":"string","name":"title","label":"Title","isTitle":true,"required":true,"namespace":["content","title"],"searchable":true,"uid":false},{"type":"string","name":"description","label":"Description","namespace":["content","description"],"searchable":true,"uid":false},{"type":"string","name":"category","label":"Category","options":["about","content","documentation","tools","community","download"],"namespace":["content","category"],"searchable":true,"uid":false},{"type":"rich-text","name":"body","label":"Body","isBody":true,"namespace":["content","body"],"searchable":true,"parser":{"type":"mdx"},"uid":false},{"type":"image","name":"image","label":"Image","namespace":["content","image"],"searchable":false,"uid":false}],"namespace":["content"]},{"name":"reactome_research_spotlights","label":"Reactome Research Spotlights","path":"content/content/reactome-research-spotlight","format":"mdx","fields":[{"type":"string","name":"title","label":"Title","isTitle":true,"required":true,"namespace":["reactome_research_spotlights","title"],"searchable":true,"uid":false},{"type":"datetime","name":"date","label":"Date Published","namespace":["reactome_research_spotlights","date"],"searchable":true,"uid":false},{"type":"string","name":"author","label":"Author","namespace":["reactome_research_spotlights","author"],"searchable":true,"uid":false},{"type":"rich-text","name":"body","label":"Body","isBody":true,"namespace":["reactome_research_spotlights","body"],"searchable":true,"parser":{"type":"mdx"},"uid":false},{"type":"string","name":"tags","label":"Tags","list":true,"namespace":["reactome_research_spotlights","tags"],"searchable":true,"uid":false},{"type":"image","name":"image","label":"Image","namespace":["reactome_research_spotlights","image"],"searchable":false,"uid":false}],"namespace":["reactome_research_spotlights"]},{"name":"documentation","label":"Documentation","path":"content/documentation","format":"mdx","fields":[{"type":"string","name":"title","label":"Title","isTitle":true,"required":true,"namespace":["documentation","title"],"searchable":true,"uid":false},{"type":"string","name":"description","label":"Description","namespace":["documentation","description"],"searchable":true,"uid":false},{"type":"string","name":"category","label":"Category","options":["about","content","documentation","tools","community","download"],"namespace":["documentation","category"],"searchable":true,"uid":false},{"type":"rich-text","name":"body","label":"Body","isBody":true,"namespace":["documentation","body"],"searchable":true,"parser":{"type":"mdx"},"uid":false},{"type":"image","name":"image","label":"Image","namespace":["documentation","image"],"searchable":false,"uid":false}],"namespace":["documentation"]},{"name":"faq","label":"FAQ","path":"documentation/faq","format":"mdx","fields":[{"type":"string","name":"question_id","label":"Question ID","required":true,"namespace":["faq","question_id"],"searchable":true,"uid":false},{"type":"string","name":"question","label":"Question","isTitle":true,"required":true,"namespace":["faq","question"],"searchable":true,"uid":false},{"type":"rich-text","name":"answer","label":"Answer","isBody":true,"required":true,"namespace":["faq","answer"],"searchable":true,"parser":{"type":"mdx"},"uid":false},{"type":"string","name":"related_links","label":"Related Links","list":true,"namespace":["faq","related_links"],"searchable":true,"uid":false}],"namespace":["faq"]},{"name":"community","label":"Community","path":"content/community","format":"mdx","fields":[{"type":"string","name":"title","label":"Title","isTitle":true,"required":true,"namespace":["community","title"],"searchable":true,"uid":false},{"type":"string","name":"description","label":"Description","namespace":["community","description"],"searchable":true,"uid":false},{"type":"string","name":"category","label":"Category","options":["about","content","documentation","tools","community","download"],"namespace":["community","category"],"searchable":true,"uid":false},{"type":"rich-text","name":"body","label":"Body","isBody":true,"namespace":["community","body"],"searchable":true,"parser":{"type":"mdx"},"uid":false},{"type":"image","name":"image","label":"Image","namespace":["community","image"],"searchable":false,"uid":false}],"namespace":["community"]}],"config":{"media":{"tina":{"publicFolder":"public","mediaRoot":"uploads"}}}},"lookup":{"DocumentConnection":{"type":"DocumentConnection","resolveType":"multiCollectionDocumentList","collections":["about","news","content","reactome_research_spotlights","documentation","faq","community"]},"Node":{"type":"Node","resolveType":"nodeDocument"},"DocumentNode":{"type":"DocumentNode","resolveType":"multiCollectionDocument","createDocument":"create","updateDocument":"update"},"About":{"type":"About","resolveType":"collectionDocument","collection":"about","createAbout":"create","updateAbout":"update"},"AboutConnection":{"type":"AboutConnection","resolveType":"collectionDocumentList","collection":"about"},"News":{"type":"News","resolveType":"collectionDocument","collection":"news","createNews":"create","updateNews":"update"},"NewsConnection":{"type":"NewsConnection","resolveType":"collectionDocumentList","collection":"news"},"Content":{"type":"Content","resolveType":"collectionDocument","collection":"content","createContent":"create","updateContent":"update"},"ContentConnection":{"type":"ContentConnection","resolveType":"collectionDocumentList","collection":"content"},"Reactome_research_spotlights":{"type":"Reactome_research_spotlights","resolveType":"collectionDocument","collection":"reactome_research_spotlights","createReactome_research_spotlights":"create","updateReactome_research_spotlights":"update"},"Reactome_research_spotlightsConnection":{"type":"Reactome_research_spotlightsConnection","resolveType":"collectionDocumentList","collection":"reactome_research_spotlights"},"Documentation":{"type":"Documentation","resolveType":"collectionDocument","collection":"documentation","createDocumentation":"create","updateDocumentation":"update"},"DocumentationConnection":{"type":"DocumentationConnection","resolveType":"collectionDocumentList","collection":"documentation"},"Faq":{"type":"Faq","resolveType":"collectionDocument","collection":"faq","createFaq":"create","updateFaq":"update"},"FaqConnection":{"type":"FaqConnection","resolveType":"collectionDocumentList","collection":"faq"},"Community":{"type":"Community","resolveType":"collectionDocument","collection":"community","createCommunity":"create","updateCommunity":"update"},"CommunityConnection":{"type":"CommunityConnection","resolveType":"collectionDocumentList","collection":"community"}},"graphql":{"kind":"Document","definitions":[{"kind":"ScalarTypeDefinition","name":{"kind":"Name","value":"Reference"},"description":{"kind":"StringValue","value":"References another document, used as a foreign key"},"directives":[]},{"kind":"ScalarTypeDefinition","name":{"kind":"Name","value":"JSON"},"description":{"kind":"StringValue","value":""},"directives":[]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"SystemInfo"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"filename"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"title"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"basename"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"hasReferences"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"breadcrumbs"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"excludeExtension"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}],"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"path"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"relativePath"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"extension"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"template"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"collection"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Collection"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"Folder"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"name"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"path"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"PageInfo"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"hasPreviousPage"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"hasNextPage"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"startCursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"endCursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}]},{"kind":"InterfaceTypeDefinition","description":{"kind":"StringValue","value":""},"name":{"kind":"Name","value":"Node"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}}]},{"kind":"InterfaceTypeDefinition","description":{"kind":"StringValue","value":""},"name":{"kind":"Name","value":"Document"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_sys"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"SystemInfo"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_values"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}]},{"kind":"InterfaceTypeDefinition","description":{"kind":"StringValue","value":"A relay-compliant pagination connection"},"name":{"kind":"Name","value":"Connection"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"Query"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"getOptimizedQuery"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"queryString"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"collection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"collection"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Collection"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"collections"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Collection"}}}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"id"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Node"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"document"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"collection"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentNode"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"about"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"About"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"aboutConnection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"last"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"filter"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"AboutFilter"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AboutConnection"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"news"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"News"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"newsConnection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"last"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"filter"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"NewsFilter"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"NewsConnection"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"content"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Content"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"contentConnection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"last"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"filter"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ContentFilter"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ContentConnection"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"reactome_research_spotlights"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlights"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"reactome_research_spotlightsConnection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"last"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"filter"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlightsFilter"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlightsConnection"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"documentation"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Documentation"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"documentationConnection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"last"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"filter"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentationFilter"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentationConnection"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"faq"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Faq"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"faqConnection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"last"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"filter"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"FaqFilter"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"FaqConnection"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"community"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Community"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"communityConnection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"last"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"filter"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"CommunityFilter"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CommunityConnection"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"DocumentFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"about"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"AboutFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"news"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"NewsFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"content"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ContentFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"reactome_research_spotlights"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlightsFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"documentation"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentationFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"faq"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"FaqFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"community"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"CommunityFilter"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"DocumentConnectionEdges"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentNode"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Connection"}}],"directives":[],"name":{"kind":"Name","value":"DocumentConnection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentConnectionEdges"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"Collection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"name"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"slug"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"label"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"path"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"format"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"matches"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"templates"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"fields"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"documents"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"last"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"filter"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"folder"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentConnection"}}}}]},{"kind":"UnionTypeDefinition","name":{"kind":"Name","value":"DocumentNode"},"directives":[],"types":[{"kind":"NamedType","name":{"kind":"Name","value":"About"}},{"kind":"NamedType","name":{"kind":"Name","value":"News"}},{"kind":"NamedType","name":{"kind":"Name","value":"Content"}},{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlights"}},{"kind":"NamedType","name":{"kind":"Name","value":"Documentation"}},{"kind":"NamedType","name":{"kind":"Name","value":"Faq"}},{"kind":"NamedType","name":{"kind":"Name","value":"Community"}},{"kind":"NamedType","name":{"kind":"Name","value":"Folder"}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Node"}},{"kind":"NamedType","name":{"kind":"Name","value":"Document"}}],"directives":[],"name":{"kind":"Name","value":"About"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"title"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"description"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"category"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"body"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"image"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_sys"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SystemInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_values"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"StringFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"startsWith"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"eq"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"exists"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"in"},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"RichTextFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"startsWith"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"eq"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"exists"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"ImageFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"startsWith"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"eq"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"exists"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"in"},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"AboutFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"description"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"category"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"RichTextFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ImageFilter"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"AboutConnectionEdges"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"About"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Connection"}}],"directives":[],"name":{"kind":"Name","value":"AboutConnection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AboutConnectionEdges"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Node"}},{"kind":"NamedType","name":{"kind":"Name","value":"Document"}}],"directives":[],"name":{"kind":"Name","value":"News"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"title"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"date"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"author"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"body"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"tags"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"image"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_sys"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SystemInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_values"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"DatetimeFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"before"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"eq"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"exists"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"in"},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"NewsFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"date"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DatetimeFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"author"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"RichTextFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"tags"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ImageFilter"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"NewsConnectionEdges"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"News"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Connection"}}],"directives":[],"name":{"kind":"Name","value":"NewsConnection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"NewsConnectionEdges"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Node"}},{"kind":"NamedType","name":{"kind":"Name","value":"Document"}}],"directives":[],"name":{"kind":"Name","value":"Content"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"title"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"description"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"category"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"body"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"image"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_sys"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SystemInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_values"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"ContentFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"description"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"category"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"RichTextFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ImageFilter"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"ContentConnectionEdges"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"Content"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Connection"}}],"directives":[],"name":{"kind":"Name","value":"ContentConnection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ContentConnectionEdges"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Node"}},{"kind":"NamedType","name":{"kind":"Name","value":"Document"}}],"directives":[],"name":{"kind":"Name","value":"Reactome_research_spotlights"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"title"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"date"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"author"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"body"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"tags"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"image"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_sys"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SystemInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_values"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"Reactome_research_spotlightsFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"date"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DatetimeFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"author"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"RichTextFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"tags"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ImageFilter"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"Reactome_research_spotlightsConnectionEdges"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlights"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Connection"}}],"directives":[],"name":{"kind":"Name","value":"Reactome_research_spotlightsConnection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlightsConnectionEdges"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Node"}},{"kind":"NamedType","name":{"kind":"Name","value":"Document"}}],"directives":[],"name":{"kind":"Name","value":"Documentation"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"title"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"description"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"category"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"body"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"image"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_sys"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SystemInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_values"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"DocumentationFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"description"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"category"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"RichTextFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ImageFilter"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"DocumentationConnectionEdges"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"Documentation"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Connection"}}],"directives":[],"name":{"kind":"Name","value":"DocumentationConnection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentationConnectionEdges"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Node"}},{"kind":"NamedType","name":{"kind":"Name","value":"Document"}}],"directives":[],"name":{"kind":"Name","value":"Faq"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"question_id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"question"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"answer"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"related_links"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_sys"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SystemInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_values"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"FaqFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"question_id"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"question"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"answer"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"RichTextFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"related_links"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"FaqConnectionEdges"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"Faq"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Connection"}}],"directives":[],"name":{"kind":"Name","value":"FaqConnection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"FaqConnectionEdges"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Node"}},{"kind":"NamedType","name":{"kind":"Name","value":"Document"}}],"directives":[],"name":{"kind":"Name","value":"Community"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"title"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"description"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"category"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"body"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"image"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"id"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_sys"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"SystemInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"_values"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"CommunityFilter"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"description"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"category"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StringFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"RichTextFilter"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ImageFilter"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"CommunityConnectionEdges"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NamedType","name":{"kind":"Name","value":"Community"}}}]},{"kind":"ObjectTypeDefinition","interfaces":[{"kind":"NamedType","name":{"kind":"Name","value":"Connection"}}],"directives":[],"name":{"kind":"Name","value":"CommunityConnection"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"PageInfo"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CommunityConnectionEdges"}}}}]},{"kind":"ObjectTypeDefinition","interfaces":[],"directives":[],"name":{"kind":"Name","value":"Mutation"},"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"addPendingDocument"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"collection"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"template"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentNode"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateDocument"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"collection"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentUpdateMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentNode"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"deleteDocument"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"collection"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentNode"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createDocument"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"collection"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentNode"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createFolder"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"collection"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentNode"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateAbout"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AboutMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"About"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createAbout"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"AboutMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"About"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateNews"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"NewsMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"News"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createNews"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"NewsMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"News"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateContent"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ContentMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Content"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createContent"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"ContentMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Content"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateReactome_research_spotlights"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlightsMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlights"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createReactome_research_spotlights"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlightsMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlights"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateDocumentation"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentationMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Documentation"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createDocumentation"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentationMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Documentation"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateFaq"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"FaqMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Faq"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createFaq"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"FaqMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Faq"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"updateCommunity"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CommunityMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Community"}}}},{"kind":"FieldDefinition","name":{"kind":"Name","value":"createCommunity"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"params"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"CommunityMutation"}}}}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Community"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"DocumentUpdateMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"about"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"AboutMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"news"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"NewsMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"content"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ContentMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"reactome_research_spotlights"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlightsMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"documentation"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentationMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"faq"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"FaqMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"community"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"CommunityMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"relativePath"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"DocumentMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"about"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"AboutMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"news"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"NewsMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"content"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ContentMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"reactome_research_spotlights"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Reactome_research_spotlightsMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"documentation"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"DocumentationMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"faq"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"FaqMutation"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"community"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"CommunityMutation"}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"AboutMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"description"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"category"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"NewsMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"date"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"author"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"tags"},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"ContentMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"description"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"category"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"Reactome_research_spotlightsMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"date"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"author"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"tags"},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"DocumentationMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"description"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"category"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"FaqMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"question_id"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"question"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"answer"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"related_links"},"type":{"kind":"ListType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"CommunityMutation"},"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"title"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"description"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"category"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"body"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"JSON"}}},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}]}]}} \ No newline at end of file From 94b2d690cc3ebb8be13e440d6b21902b02353a4e Mon Sep 17 00:00:00 2001 From: beaversd Date: Tue, 18 Aug 2026 14:15:59 -0700 Subject: [PATCH 004/136] update --- projects/website-angular/content-dist/about/contact-us.json | 1 + .../website-angular/content-dist/about/digital-preservation.json | 1 + projects/website-angular/content-dist/about/disclaimer.json | 1 + projects/website-angular/content-dist/about/funding.json | 1 + projects/website-angular/content-dist/about/license.json | 1 + projects/website-angular/content-dist/about/logo.json | 1 + .../content-dist/about/news/102-version-64-released.json | 1 + .../content-dist/about/news/103-version-65-released.json | 1 + ...-data-now-available-through-google-dataset-search-engine.json | 1 + .../content-dist/about/news/106-version-66-release.json | 1 + .../news/107-new-tool-to-generate-analysis-pdf-reports.json | 1 + ...109-new-advanced-search-available-in-our-pathway-browser.json | 1 + .../content-dist/about/news/110-sbgn-files-revamp.json | 1 + .../news/111-international-open-access-week-analysis-tools.json | 1 + ...12-international-open-access-week-network-analysis-tools.json | 1 + .../about/news/113-oaweek-interactive-illustrations-icons.json | 1 + .../content-dist/about/news/114-graphdb-content-service.json | 1 + .../115-performing-gsea-analysis-with-reactomefiviz-app.json | 1 + .../content-dist/about/news/116-version-67-released.json | 1 + .../news/119-new-reactions-layout-with-nested-compartments.json | 1 + ...g-pathways-into-tissue-types-based-on-protein-expression.json | 1 + .../content-dist/about/news/121-new-pdf-book.json | 1 + .../news/124-deprecated-support-for-reactome-restful-api.json | 1 + .../about/news/125-version-68-of-reactome-is-now-online.json | 1 + ...now-used-to-identify-orthologs-of-curated-human-proteins.json | 1 + ...e-to-our-release-68-webinar-to-learn-more-about-reactome.json | 1 + .../about/news/133-reactomefiviz-app-version-7-2-0-released.json | 1 + .../content-dist/about/news/136-season-of-docs.json | 1 + .../content-dist/about/news/137-version-69-released.json | 1 + .../content-dist/about/news/138-orcid-claim-your-works.json | 1 + ...nome-wide-pathway-overview-based-on-voronoi-tessellation.json | 1 + .../content-dist/about/news/142-version-70-released.json | 1 + ...eactome-publication-published-in-2020-nar-database-issue.json | 1 + .../content-dist/about/news/145-version-71-releases.json | 1 + .../about/news/146-new-paper-published-in-database-oxford.json | 1 + .../content-dist/about/news/147-version-72-released.json | 1 + .../about/news/150-new-paper-published-in-elife.json | 1 + ...unication-between-reactome-services-and-data-with-python.json | 1 + .../about/news/154-new-paper-published-in-autophagy.json | 1 + .../content-dist/about/news/155-version-73-released.json | 1 + .../content-dist/about/news/161-version-74-released.json | 1 + ...162-new-paper-published-in-molecular-cellular-proteomics.json | 1 + .../content-dist/about/news/163-version-75-released.json | 1 + .../content-dist/about/news/164-version-76-released.json | 1 + .../about/news/165-the-reactome-idg-portal-is-released.json | 1 + .../content-dist/about/news/166-version-77-released.json | 1 + ...omics-pathway-analysis-webinar-reaches-record-attendance.json | 1 + .../content-dist/about/news/169-version-78-released.json | 1 + .../about/news/172-we-want-to-hear-your-success-story.json | 1 + .../content-dist/about/news/174-version-79-released.json | 1 + .../content-dist/about/news/175-version-80-released.json | 1 + .../content-dist/about/news/176-version-82-released.json | 1 + .../about/news/177-new-paper-pulished-in-database-oxford.json | 1 + .../content-dist/about/news/178-version-81-released.json | 1 + .../content-dist/about/news/179-collaboration-with-pharmgkb.json | 1 + .../content-dist/about/news/183-reactome-research-spotlight.json | 1 + .../content-dist/about/news/184-version-83-released.json | 1 + .../187-reactome-named-as-a-global-core-biodata-resource.json | 1 + .../content-dist/about/news/191-reactome-is-hiring.json | 1 + .../content-dist/about/news/194-v84-released.json | 1 + .../content-dist/about/news/225-v85-released.json | 1 + .../content-dist/about/news/230-version-86-released.json | 1 + .../content-dist/about/news/238-version-87-released.json | 1 + .../content-dist/about/news/246-v88-released-2.json | 1 + .../about/news/250-new-publication-in-database-oxford.json | 1 + .../content-dist/about/news/251-v89-released.json | 1 + .../website-angular/content-dist/about/news/261-v90-news.json | 1 + .../website-angular/content-dist/about/news/265-v91-news.json | 1 + .../website-angular/content-dist/about/news/270-v92-news.json | 1 + .../content-dist/about/news/273-coretrustseal-news.json | 1 + .../content-dist/about/news/275-v93-released.json | 1 + .../content-dist/about/news/279-v94-released.json | 1 + .../news/280-reactome-pathway-browser-new-beta-release.json | 1 + .../content-dist/about/news/284-v95-released.json | 1 + .../content-dist/about/news/286-new-publication-in-nar-2026.json | 1 + .../news/288-reactome-releases-two-new-ai-focused-preprints.json | 1 + .../content-dist/about/news/291-v96-released.json | 1 + .../content-dist/about/news/71-version-57-released.json | 1 + .../content-dist/about/news/72-version-58-released.json | 1 + ...eactome-celebrates-release-of-10-000th-annotated-protein.json | 1 + .../content-dist/about/news/74-version-59-release.json | 1 + .../content-dist/about/news/75-new-reactome-publication.json | 1 + .../content-dist/about/news/76-new-reactome-paper-published.json | 1 + .../content-dist/about/news/77-version-60-released.json | 1 + .../content-dist/about/news/78-version-61-released.json | 1 + .../about/news/79-new-protein-protein-interaction-files.json | 1 + .../80-new-sbml-level-3-version-1-export-is-now-available.json | 1 + .../content-dist/about/news/90-version-62-released.json | 1 + .../about/news/93-reactome-launches-new-website.json | 1 + .../about/news/94-proudly-introducing-our-new-logo.json | 1 + ...eactome-publication-published-in-2017-nar-database-issue.json | 1 + .../content-dist/about/news/97-updated-license-agreement.json | 1 + .../content-dist/about/news/98-version-63-released.json | 1 + projects/website-angular/content-dist/about/privacy-notice.json | 1 + projects/website-angular/content-dist/about/sab.json | 1 + projects/website-angular/content-dist/about/statistics.json | 1 + projects/website-angular/content-dist/about/team.json | 1 + .../website-angular/content-dist/about/what-is-reactome.json | 1 + .../collaboration/faq-for-prospective-reviewers-and-authors.json | 1 + projects/website-angular/content-dist/community/events.json | 1 + projects/website-angular/content-dist/community/outreach.json | 1 + projects/website-angular/content-dist/community/partners.json | 1 + .../website-angular/content-dist/community/publications.json | 1 + projects/website-angular/content-dist/community/resources.json | 1 + projects/website-angular/content-dist/content/covid-19.json | 1 + projects/website-angular/content-dist/content/orcid.json | 1 + .../reactome-research-spotlight/180-reactome-spotlight.json | 1 + ...h-that-acts-as-the-fasting-timer-in-intermittent-fasting.json | 1 + ...umors-with-high-tumor-specific-total-mrna-expression-tms.json | 1 + ...ptome-of-autism-spectrum-disorders-and-tourette-syndrome.json | 1 + ...hy-based-on-an-integrated-proteomic-and-genomic-analysis.json | 1 + ...chanisms-and-novel-therapeutics-for-advanced-lung-cancer.json | 1 + ...nd-drug-resistance-leishmania-infantum-clinical-isolates.json | 1 + ...-complement-activation-and-dysregulation-of-serum-lipids.json | 1 + ...-neural-progenitor-cells-meta-analysis-of-rna-seq-assays.json | 1 + ...rks-of-alzheimer-s-disease-aging-and-longevity-in-humans.json | 1 + ...herapeutic-option-for-focal-segmental-glomerulosclerosis.json | 1 + ...-epidemiology-of-diabetes-complications-edc-cohort-study.json | 1 + ...e-multimodal-neural-network-for-drug-response-prediction.json | 1 + ...hways-affected-by-the-involvement-of-sickle-cell-disease.json | 1 + ...cles-for-cell-invasion-and-proliferation-a-meta-analysis.json | 1 + ...odical-platform-based-on-traditional-medicinal-knowledge.json | 1 + ...oke-through-weighted-gene-co-expression-network-analysis.json | 1 + ...lls-promotes-interferon-signaling-upon-nicotine-exposure.json | 1 + ...ence-prediction-based-on-neural-network-interpretability.json | 1 + ...and-chemoradiation-in-myc-amplified-head-and-neck-cancer.json | 1 + ...ep-learning-functional-representation-of-gene-signatures.json | 1 + .../255-the-landscape-of-cancer-rewired-gpcr-signaling-axes.json | 1 + ...livery-of-multiple-large-therapeutic-proteins-to-neurons.json | 1 + .../262-chemical-coverage-of-human-biological-pathways.json | 1 + ...pproaches-for-pathway-based-multi-omics-data-integration.json | 1 + ...-response-and-t-cell-homeostasis-in-sars-cov-2-infection.json | 1 + ...reveals-molecular-subtypes-for-personalized-therapeutics.json | 1 + ...-a-platform-for-automatic-biochemical-pathway-prediction.json | 1 + ...tion-and-structural-brain-development-during-adolescence.json | 1 + ...ing-for-brain-aging-a-systematic-study-in-the-uk-biobank.json | 1 + ...gthens-accuracy-by-monitoring-for-retracted-publications.json | 1 + ...anced-proteomic-biomarker-discovery-and-pathway-analysis.json | 1 + ...ls-multi-omic-circadian-rhythms-in-human-cancers-in-vivo.json | 1 + ...of-sars-cov-2-host-interactions-in-the-airway-epithelium.json | 1 + ...oning-general-principles-of-cancer-cell-drug-sensitivity.json | 1 + ...-modelling-the-human-severe-influenza-infection-response.json | 1 + ...mming-neuroblastoma-by-diet-enhanced-polyamine-depletion.json | 1 + ...rogestin-therapy-targets-hallmarks-of-breast-cancer-risk.json | 1 + ...onserved-function-of-gamma-herpesvirus-encoded-micrornas.json | 1 + ...lly-relevant-predictive-biomarkers-with-machine-learning.json | 1 + ...on-reveals-the-molecular-basis-of-disease-co-occurrences.json | 1 + ...nscriptomic-data-and-key-characteristics-based-gene-sets.json | 1 + .../content/reactome-research-spotlight/blogpost-1.json | 1 + .../content/reactome-research-spotlight/blogpost-10.json | 1 + .../content/reactome-research-spotlight/blogpost-11.json | 1 + .../content/reactome-research-spotlight/blogpost-12.json | 1 + .../content/reactome-research-spotlight/blogpost-13.json | 1 + .../content/reactome-research-spotlight/blogpost-14.json | 1 + .../content/reactome-research-spotlight/blogpost-15.json | 1 + .../content/reactome-research-spotlight/blogpost-16.json | 1 + .../content/reactome-research-spotlight/blogpost-17.json | 1 + .../content/reactome-research-spotlight/blogpost-18.json | 1 + .../content/reactome-research-spotlight/blogpost-19.json | 1 + .../content/reactome-research-spotlight/blogpost-2.json | 1 + .../content/reactome-research-spotlight/blogpost-20.json | 1 + .../content/reactome-research-spotlight/blogpost-21.json | 1 + .../content/reactome-research-spotlight/blogpost-22.json | 1 + .../content/reactome-research-spotlight/blogpost-23.json | 1 + .../content/reactome-research-spotlight/blogpost-24.json | 1 + .../content/reactome-research-spotlight/blogpost-25.json | 1 + .../content/reactome-research-spotlight/blogpost-26.json | 1 + .../content/reactome-research-spotlight/blogpost-27.json | 1 + .../content/reactome-research-spotlight/blogpost-28.json | 1 + .../content/reactome-research-spotlight/blogpost-29.json | 1 + .../content/reactome-research-spotlight/blogpost-3.json | 1 + .../content/reactome-research-spotlight/blogpost-30.json | 1 + .../content/reactome-research-spotlight/blogpost-31.json | 1 + .../content/reactome-research-spotlight/blogpost-32.json | 1 + .../content/reactome-research-spotlight/blogpost-33.json | 1 + .../content/reactome-research-spotlight/blogpost-34.json | 1 + .../content/reactome-research-spotlight/blogpost-35.json | 1 + .../content/reactome-research-spotlight/blogpost-36.json | 1 + .../content/reactome-research-spotlight/blogpost-37.json | 1 + .../content/reactome-research-spotlight/blogpost-38.json | 1 + .../content/reactome-research-spotlight/blogpost-39.json | 1 + .../content/reactome-research-spotlight/blogpost-4.json | 1 + .../content/reactome-research-spotlight/blogpost-40.json | 1 + .../content/reactome-research-spotlight/blogpost-5.json | 1 + .../content/reactome-research-spotlight/blogpost-6.json | 1 + .../content/reactome-research-spotlight/blogpost-7.json | 1 + .../content/reactome-research-spotlight/blogpost-8.json | 1 + .../content/reactome-research-spotlight/blogpost-9.json | 1 + projects/website-angular/content-dist/documentation/cite.json | 1 + .../content-dist/documentation/curator-guide.json | 1 + .../website-angular/content-dist/documentation/data-model.json | 1 + projects/website-angular/content-dist/documentation/dev.json | 1 + .../website-angular/content-dist/documentation/dev/analysis.json | 1 + .../content-dist/documentation/dev/content-service.json | 1 + .../documentation/dev/content-service/diagram-exporter.json | 1 + .../website-angular/content-dist/documentation/dev/diagram.json | 1 + .../documentation/dev/diagram/pathway-diagram-specs.json | 1 + .../content-dist/documentation/dev/graph-database.json | 1 + .../dev/graph-database/extract-participating-molecules.json | 1 + .../documentation/dev/graph-database/neo4j-desktop.json | 1 + .../content-dist/documentation/dev/pathways-overview.json | 1 + .../faq/analysis/api-and-r/215-pathway-analysis-api.json | 1 + .../documentation/faq/analysis/api-and-r/216-gene-symbol.json | 1 + .../faq/analysis/api-and-r/217-pathway-analysis-r.json | 1 + .../documentation/faq/analysis/fiviz/218-non-human-fiviz.json | 1 + .../faq/analysis/fiviz/219-fiviz-differential-expression.json | 1 + .../documentation/faq/analysis/general/197-convert-to-human.json | 1 + .../faq/analysis/general/207-statistical-analysis.json | 1 + .../faq/analysis/general/208-visualizing-gene-expression.json | 1 + .../faq/analysis/general/209-expanded-event-hierarchy.json | 1 + .../faq/analysis/general/210-query-genes-per-pathway.json | 1 + .../faq/analysis/general/211-permanent-analysis-results.json | 1 + .../faq/analysis/reactome-gsa/212-gsa-training-material.json | 1 + .../reactome-gsa/213-differentially-expressed-genes.json | 1 + .../analysis/reactome-gsa/214-truncated-gsa-analysis-output.json | 1 + .../documentation/faq/general-website/195-no-results.json | 1 + .../documentation/faq/general-website/199-non-human-species.json | 1 + .../documentation/faq/general-website/201-identifiers.json | 1 + .../documentation/faq/general-website/202-earlier-versions.json | 1 + .../faq/general-website/203-pathways-per-organ.json | 1 + .../documentation/faq/general-website/204-kegg-to-reactome.json | 1 + .../faq/general-website/205-inferred-pathways-download.json | 1 + .../faq/graph-database-and-cypher-query/198-install-neo4j.json | 1 + .../221-cypher-gene-list-to-pathways.json | 1 + .../222-disease-to-pathways-api-or-neo4j.json | 1 + .../223-neo4j-all-genes-for-a-pathway.json | 1 + .../224-ppi-to-pathways-graph.json | 1 + .../faq/illustrations-figures/38-illustrations-figures.json | 1 + .../website-angular/content-dist/documentation/icon-info.json | 1 + .../documentation/icon-info/ehld-specs-guideline.json | 1 + .../content-dist/documentation/icon-info/icons-guidelines.json | 1 + .../content-dist/documentation/inferred-events.json | 1 + .../content-dist/documentation/linking-to-us.json | 1 + .../content-dist/documentation/linking-to-us/identifiers.json | 1 + .../content-dist/documentation/release-documentation.json | 1 + .../website-angular/content-dist/documentation/userguide.json | 1 + .../content-dist/documentation/userguide/analysis.json | 1 + .../content-dist/documentation/userguide/analysis/gsa.json | 1 + .../content-dist/documentation/userguide/claim-your-work.json | 1 + .../content-dist/documentation/userguide/cytomics.json | 1 + .../content-dist/documentation/userguide/details-panel.json | 1 + .../content-dist/documentation/userguide/diseases.json | 1 + .../content-dist/documentation/userguide/pathway-browser.json | 1 + .../content-dist/documentation/userguide/reactome-fiviz.json | 1 + .../content-dist/documentation/userguide/review-status.json | 1 + .../content-dist/documentation/userguide/searching.json | 1 + projects/website-angular/content-dist/tools/reactome-fiviz.json | 1 + 247 files changed, 247 insertions(+) create mode 100644 projects/website-angular/content-dist/about/contact-us.json create mode 100644 projects/website-angular/content-dist/about/digital-preservation.json create mode 100644 projects/website-angular/content-dist/about/disclaimer.json create mode 100644 projects/website-angular/content-dist/about/funding.json create mode 100644 projects/website-angular/content-dist/about/license.json create mode 100644 projects/website-angular/content-dist/about/logo.json create mode 100644 projects/website-angular/content-dist/about/news/102-version-64-released.json create mode 100644 projects/website-angular/content-dist/about/news/103-version-65-released.json create mode 100644 projects/website-angular/content-dist/about/news/105-our-data-now-available-through-google-dataset-search-engine.json create mode 100644 projects/website-angular/content-dist/about/news/106-version-66-release.json create mode 100644 projects/website-angular/content-dist/about/news/107-new-tool-to-generate-analysis-pdf-reports.json create mode 100644 projects/website-angular/content-dist/about/news/109-new-advanced-search-available-in-our-pathway-browser.json create mode 100644 projects/website-angular/content-dist/about/news/110-sbgn-files-revamp.json create mode 100644 projects/website-angular/content-dist/about/news/111-international-open-access-week-analysis-tools.json create mode 100644 projects/website-angular/content-dist/about/news/112-international-open-access-week-network-analysis-tools.json create mode 100644 projects/website-angular/content-dist/about/news/113-oaweek-interactive-illustrations-icons.json create mode 100644 projects/website-angular/content-dist/about/news/114-graphdb-content-service.json create mode 100644 projects/website-angular/content-dist/about/news/115-performing-gsea-analysis-with-reactomefiviz-app.json create mode 100644 projects/website-angular/content-dist/about/news/116-version-67-released.json create mode 100644 projects/website-angular/content-dist/about/news/119-new-reactions-layout-with-nested-compartments.json create mode 100644 projects/website-angular/content-dist/about/news/120-classifying-pathways-into-tissue-types-based-on-protein-expression.json create mode 100644 projects/website-angular/content-dist/about/news/121-new-pdf-book.json create mode 100644 projects/website-angular/content-dist/about/news/124-deprecated-support-for-reactome-restful-api.json create mode 100644 projects/website-angular/content-dist/about/news/125-version-68-of-reactome-is-now-online.json create mode 100644 projects/website-angular/content-dist/about/news/126-panther-resource-now-used-to-identify-orthologs-of-curated-human-proteins.json create mode 100644 projects/website-angular/content-dist/about/news/127-come-to-our-release-68-webinar-to-learn-more-about-reactome.json create mode 100644 projects/website-angular/content-dist/about/news/133-reactomefiviz-app-version-7-2-0-released.json create mode 100644 projects/website-angular/content-dist/about/news/136-season-of-docs.json create mode 100644 projects/website-angular/content-dist/about/news/137-version-69-released.json create mode 100644 projects/website-angular/content-dist/about/news/138-orcid-claim-your-works.json create mode 100644 projects/website-angular/content-dist/about/news/141-reacfoam-genome-wide-pathway-overview-based-on-voronoi-tessellation.json create mode 100644 projects/website-angular/content-dist/about/news/142-version-70-released.json create mode 100644 projects/website-angular/content-dist/about/news/144-new-reactome-publication-published-in-2020-nar-database-issue.json create mode 100644 projects/website-angular/content-dist/about/news/145-version-71-releases.json create mode 100644 projects/website-angular/content-dist/about/news/146-new-paper-published-in-database-oxford.json create mode 100644 projects/website-angular/content-dist/about/news/147-version-72-released.json create mode 100644 projects/website-angular/content-dist/about/news/150-new-paper-published-in-elife.json create mode 100644 projects/website-angular/content-dist/about/news/151-new-package-facilitates-communication-between-reactome-services-and-data-with-python.json create mode 100644 projects/website-angular/content-dist/about/news/154-new-paper-published-in-autophagy.json create mode 100644 projects/website-angular/content-dist/about/news/155-version-73-released.json create mode 100644 projects/website-angular/content-dist/about/news/161-version-74-released.json create mode 100644 projects/website-angular/content-dist/about/news/162-new-paper-published-in-molecular-cellular-proteomics.json create mode 100644 projects/website-angular/content-dist/about/news/163-version-75-released.json create mode 100644 projects/website-angular/content-dist/about/news/164-version-76-released.json create mode 100644 projects/website-angular/content-dist/about/news/165-the-reactome-idg-portal-is-released.json create mode 100644 projects/website-angular/content-dist/about/news/166-version-77-released.json create mode 100644 projects/website-angular/content-dist/about/news/167-reactome-multi-omics-pathway-analysis-webinar-reaches-record-attendance.json create mode 100644 projects/website-angular/content-dist/about/news/169-version-78-released.json create mode 100644 projects/website-angular/content-dist/about/news/172-we-want-to-hear-your-success-story.json create mode 100644 projects/website-angular/content-dist/about/news/174-version-79-released.json create mode 100644 projects/website-angular/content-dist/about/news/175-version-80-released.json create mode 100644 projects/website-angular/content-dist/about/news/176-version-82-released.json create mode 100644 projects/website-angular/content-dist/about/news/177-new-paper-pulished-in-database-oxford.json create mode 100644 projects/website-angular/content-dist/about/news/178-version-81-released.json create mode 100644 projects/website-angular/content-dist/about/news/179-collaboration-with-pharmgkb.json create mode 100644 projects/website-angular/content-dist/about/news/183-reactome-research-spotlight.json create mode 100644 projects/website-angular/content-dist/about/news/184-version-83-released.json create mode 100644 projects/website-angular/content-dist/about/news/187-reactome-named-as-a-global-core-biodata-resource.json create mode 100644 projects/website-angular/content-dist/about/news/191-reactome-is-hiring.json create mode 100644 projects/website-angular/content-dist/about/news/194-v84-released.json create mode 100644 projects/website-angular/content-dist/about/news/225-v85-released.json create mode 100644 projects/website-angular/content-dist/about/news/230-version-86-released.json create mode 100644 projects/website-angular/content-dist/about/news/238-version-87-released.json create mode 100644 projects/website-angular/content-dist/about/news/246-v88-released-2.json create mode 100644 projects/website-angular/content-dist/about/news/250-new-publication-in-database-oxford.json create mode 100644 projects/website-angular/content-dist/about/news/251-v89-released.json create mode 100644 projects/website-angular/content-dist/about/news/261-v90-news.json create mode 100644 projects/website-angular/content-dist/about/news/265-v91-news.json create mode 100644 projects/website-angular/content-dist/about/news/270-v92-news.json create mode 100644 projects/website-angular/content-dist/about/news/273-coretrustseal-news.json create mode 100644 projects/website-angular/content-dist/about/news/275-v93-released.json create mode 100644 projects/website-angular/content-dist/about/news/279-v94-released.json create mode 100644 projects/website-angular/content-dist/about/news/280-reactome-pathway-browser-new-beta-release.json create mode 100644 projects/website-angular/content-dist/about/news/284-v95-released.json create mode 100644 projects/website-angular/content-dist/about/news/286-new-publication-in-nar-2026.json create mode 100644 projects/website-angular/content-dist/about/news/288-reactome-releases-two-new-ai-focused-preprints.json create mode 100644 projects/website-angular/content-dist/about/news/291-v96-released.json create mode 100644 projects/website-angular/content-dist/about/news/71-version-57-released.json create mode 100644 projects/website-angular/content-dist/about/news/72-version-58-released.json create mode 100644 projects/website-angular/content-dist/about/news/73-reactome-celebrates-release-of-10-000th-annotated-protein.json create mode 100644 projects/website-angular/content-dist/about/news/74-version-59-release.json create mode 100644 projects/website-angular/content-dist/about/news/75-new-reactome-publication.json create mode 100644 projects/website-angular/content-dist/about/news/76-new-reactome-paper-published.json create mode 100644 projects/website-angular/content-dist/about/news/77-version-60-released.json create mode 100644 projects/website-angular/content-dist/about/news/78-version-61-released.json create mode 100644 projects/website-angular/content-dist/about/news/79-new-protein-protein-interaction-files.json create mode 100644 projects/website-angular/content-dist/about/news/80-new-sbml-level-3-version-1-export-is-now-available.json create mode 100644 projects/website-angular/content-dist/about/news/90-version-62-released.json create mode 100644 projects/website-angular/content-dist/about/news/93-reactome-launches-new-website.json create mode 100644 projects/website-angular/content-dist/about/news/94-proudly-introducing-our-new-logo.json create mode 100644 projects/website-angular/content-dist/about/news/95-new-reactome-publication-published-in-2017-nar-database-issue.json create mode 100644 projects/website-angular/content-dist/about/news/97-updated-license-agreement.json create mode 100644 projects/website-angular/content-dist/about/news/98-version-63-released.json create mode 100644 projects/website-angular/content-dist/about/privacy-notice.json create mode 100644 projects/website-angular/content-dist/about/sab.json create mode 100644 projects/website-angular/content-dist/about/statistics.json create mode 100644 projects/website-angular/content-dist/about/team.json create mode 100644 projects/website-angular/content-dist/about/what-is-reactome.json create mode 100644 projects/website-angular/content-dist/community/collaboration/faq-for-prospective-reviewers-and-authors.json create mode 100644 projects/website-angular/content-dist/community/events.json create mode 100644 projects/website-angular/content-dist/community/outreach.json create mode 100644 projects/website-angular/content-dist/community/partners.json create mode 100644 projects/website-angular/content-dist/community/publications.json create mode 100644 projects/website-angular/content-dist/community/resources.json create mode 100644 projects/website-angular/content-dist/content/covid-19.json create mode 100644 projects/website-angular/content-dist/content/orcid.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/180-reactome-spotlight.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/186-reactome-pathway-gene-sets-in-the-msigdb-facilitated-identification-of-the-liver-proteasome-transcriptional-switch-that-acts-as-the-fasting-timer-in-intermittent-fasting.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/188-gene-set-enrichment-analysis-gsea-identifies-the-two-most-frequently-upregulated-carbohydrate-metabolism-pathways-in-tumors-with-high-tumor-specific-total-mrna-expression-tms.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/189-common-targetable-inflammatory-pathways-in-brain-transcriptome-of-autism-spectrum-disorders-and-tourette-syndrome.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/190-probable-treatment-targets-for-diabetic-retinopathy-based-on-an-integrated-proteomic-and-genomic-analysis.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/200-patient-derived-cell-based-pharmacogenomic-assessment-to-unveil-underlying-resistance-mechanisms-and-novel-therapeutics-for-advanced-lung-cancer.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/226-label-free-mass-spectrometry-proteomics-reveals-different-pathways-modulated-in-thp-1-cells-infected-with-therapeutic-failure-and-drug-resistance-leishmania-infantum-clinical-isolates.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/227-severe-covid-19-in-pregnancy-has-a-distinct-serum-profile-including-greater-complement-activation-and-dysregulation-of-serum-lipids.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/228-in-vitro-zika-virus-infection-of-human-neural-progenitor-cells-meta-analysis-of-rna-seq-assays.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/229-genetic-networks-of-alzheimer-s-disease-aging-and-longevity-in-humans.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/232-computational-drug-repositioning-of-clopidogrel-as-a-novel-therapeutic-option-for-focal-segmental-glomerulosclerosis.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/233-dna-methylation-and-28-year-cardiovascular-disease-risk-in-type-1-diabetes-the-epidemiology-of-diabetes-complications-edc-cohort-study.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/235-xmr-an-explainable-multimodal-neural-network-for-drug-response-prediction.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/237-new-insights-into-clinical-management-for-sickle-cell-disease-uncovering-the-significant-pathways-affected-by-the-involvement-of-sickle-cell-disease.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/240-machine-learning-based-analysis-of-cancer-cell-derived-vesicular-proteins-revealed-significant-tumor-specificity-and-predictive-potential-of-extracellular-vesicles-for-cell-invasion-and-proliferation-a-meta-analysis.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/242-discovering-the-anti-cancer-phytochemical-rutin-against-breast-cancer-through-the-methodical-platform-based-on-traditional-medicinal-knowledge.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/244-identification-of-potential-biological-processes-and-key-genes-in-diabetes-related-stroke-through-weighted-gene-co-expression-network-analysis.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/248-nickel-induced-transcriptional-memory-in-lung-epithelial-cells-promotes-interferon-signaling-upon-nicotine-exposure.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/249-ibpgnet-lung-adenocarcinoma-recurrence-prediction-based-on-neural-network-interpretability.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/252-acquired-resistance-to-immunotherapy-and-chemoradiation-in-myc-amplified-head-and-neck-cancer.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/254-drug-target-prediction-through-deep-learning-functional-representation-of-gene-signatures.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/255-the-landscape-of-cancer-rewired-gpcr-signaling-axes.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/256-engineering-toxoplasma-gondii-secretion-systems-for-intracellular-delivery-of-multiple-large-therapeutic-proteins-to-neurons.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/262-chemical-coverage-of-human-biological-pathways.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/263-pathintegrate-multivariate-modelling-approaches-for-pathway-based-multi-omics-data-integration.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/264-rna-editing-regulates-host-immune-response-and-t-cell-homeostasis-in-sars-cov-2-infection.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/266-a-living-organoid-biobank-of-patients-with-crohn-s-disease-reveals-molecular-subtypes-for-personalized-therapeutics.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/267-bpp-a-platform-for-automatic-biochemical-pathway-prediction.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/269-co-methylation-networks-associated-with-cognition-and-structural-brain-development-during-adolescence.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/271-genetically-supported-targets-and-drug-repurposing-for-brain-aging-a-systematic-study-in-the-uk-biobank.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/272-reactome-strengthens-accuracy-by-monitoring-for-retracted-publications.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/274-interpreting-biologically-informed-neural-networks-for-enhanced-proteomic-biomarker-discovery-and-pathway-analysis.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/276-rhythm-profiling-using-cofe-reveals-multi-omic-circadian-rhythms-in-human-cancers-in-vivo.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/277-identification-and-targeting-of-regulators-of-sars-cov-2-host-interactions-in-the-airway-epithelium.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/278-learning-and-actioning-general-principles-of-cancer-cell-drug-sensitivity.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/281-an-immune-competent-lung-on-a-chip-for-modelling-the-human-severe-influenza-infection-response.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/283-reprogramming-neuroblastoma-by-diet-enhanced-polyamine-depletion.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/285-anti-progestin-therapy-targets-hallmarks-of-breast-cancer-risk.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/287-inhibition-of-type-i-interferon-signaling-is-a-conserved-function-of-gamma-herpesvirus-encoded-micrornas.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/289-markerpredict-predicting-clinically-relevant-predictive-biomarkers-with-machine-learning.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/290-patient-stratification-reveals-the-molecular-basis-of-disease-co-occurrences.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/292-a-workflow-for-human-health-hazard-evaluation-using-transcriptomic-data-and-key-characteristics-based-gene-sets.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-1.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-10.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-11.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-12.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-13.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-14.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-15.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-16.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-17.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-18.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-19.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-2.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-20.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-21.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-22.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-23.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-24.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-25.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-26.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-27.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-28.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-29.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-3.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-30.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-31.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-32.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-33.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-34.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-35.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-36.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-37.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-38.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-39.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-4.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-40.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-5.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-6.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-7.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-8.json create mode 100644 projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-9.json create mode 100644 projects/website-angular/content-dist/documentation/cite.json create mode 100644 projects/website-angular/content-dist/documentation/curator-guide.json create mode 100644 projects/website-angular/content-dist/documentation/data-model.json create mode 100644 projects/website-angular/content-dist/documentation/dev.json create mode 100644 projects/website-angular/content-dist/documentation/dev/analysis.json create mode 100644 projects/website-angular/content-dist/documentation/dev/content-service.json create mode 100644 projects/website-angular/content-dist/documentation/dev/content-service/diagram-exporter.json create mode 100644 projects/website-angular/content-dist/documentation/dev/diagram.json create mode 100644 projects/website-angular/content-dist/documentation/dev/diagram/pathway-diagram-specs.json create mode 100644 projects/website-angular/content-dist/documentation/dev/graph-database.json create mode 100644 projects/website-angular/content-dist/documentation/dev/graph-database/extract-participating-molecules.json create mode 100644 projects/website-angular/content-dist/documentation/dev/graph-database/neo4j-desktop.json create mode 100644 projects/website-angular/content-dist/documentation/dev/pathways-overview.json create mode 100644 projects/website-angular/content-dist/documentation/faq/analysis/api-and-r/215-pathway-analysis-api.json create mode 100644 projects/website-angular/content-dist/documentation/faq/analysis/api-and-r/216-gene-symbol.json create mode 100644 projects/website-angular/content-dist/documentation/faq/analysis/api-and-r/217-pathway-analysis-r.json create mode 100644 projects/website-angular/content-dist/documentation/faq/analysis/fiviz/218-non-human-fiviz.json create mode 100644 projects/website-angular/content-dist/documentation/faq/analysis/fiviz/219-fiviz-differential-expression.json create mode 100644 projects/website-angular/content-dist/documentation/faq/analysis/general/197-convert-to-human.json create mode 100644 projects/website-angular/content-dist/documentation/faq/analysis/general/207-statistical-analysis.json create mode 100644 projects/website-angular/content-dist/documentation/faq/analysis/general/208-visualizing-gene-expression.json create mode 100644 projects/website-angular/content-dist/documentation/faq/analysis/general/209-expanded-event-hierarchy.json create mode 100644 projects/website-angular/content-dist/documentation/faq/analysis/general/210-query-genes-per-pathway.json create mode 100644 projects/website-angular/content-dist/documentation/faq/analysis/general/211-permanent-analysis-results.json create mode 100644 projects/website-angular/content-dist/documentation/faq/analysis/reactome-gsa/212-gsa-training-material.json create mode 100644 projects/website-angular/content-dist/documentation/faq/analysis/reactome-gsa/213-differentially-expressed-genes.json create mode 100644 projects/website-angular/content-dist/documentation/faq/analysis/reactome-gsa/214-truncated-gsa-analysis-output.json create mode 100644 projects/website-angular/content-dist/documentation/faq/general-website/195-no-results.json create mode 100644 projects/website-angular/content-dist/documentation/faq/general-website/199-non-human-species.json create mode 100644 projects/website-angular/content-dist/documentation/faq/general-website/201-identifiers.json create mode 100644 projects/website-angular/content-dist/documentation/faq/general-website/202-earlier-versions.json create mode 100644 projects/website-angular/content-dist/documentation/faq/general-website/203-pathways-per-organ.json create mode 100644 projects/website-angular/content-dist/documentation/faq/general-website/204-kegg-to-reactome.json create mode 100644 projects/website-angular/content-dist/documentation/faq/general-website/205-inferred-pathways-download.json create mode 100644 projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/198-install-neo4j.json create mode 100644 projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/221-cypher-gene-list-to-pathways.json create mode 100644 projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/222-disease-to-pathways-api-or-neo4j.json create mode 100644 projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/223-neo4j-all-genes-for-a-pathway.json create mode 100644 projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/224-ppi-to-pathways-graph.json create mode 100644 projects/website-angular/content-dist/documentation/faq/illustrations-figures/38-illustrations-figures.json create mode 100644 projects/website-angular/content-dist/documentation/icon-info.json create mode 100644 projects/website-angular/content-dist/documentation/icon-info/ehld-specs-guideline.json create mode 100644 projects/website-angular/content-dist/documentation/icon-info/icons-guidelines.json create mode 100644 projects/website-angular/content-dist/documentation/inferred-events.json create mode 100644 projects/website-angular/content-dist/documentation/linking-to-us.json create mode 100644 projects/website-angular/content-dist/documentation/linking-to-us/identifiers.json create mode 100644 projects/website-angular/content-dist/documentation/release-documentation.json create mode 100644 projects/website-angular/content-dist/documentation/userguide.json create mode 100644 projects/website-angular/content-dist/documentation/userguide/analysis.json create mode 100644 projects/website-angular/content-dist/documentation/userguide/analysis/gsa.json create mode 100644 projects/website-angular/content-dist/documentation/userguide/claim-your-work.json create mode 100644 projects/website-angular/content-dist/documentation/userguide/cytomics.json create mode 100644 projects/website-angular/content-dist/documentation/userguide/details-panel.json create mode 100644 projects/website-angular/content-dist/documentation/userguide/diseases.json create mode 100644 projects/website-angular/content-dist/documentation/userguide/pathway-browser.json create mode 100644 projects/website-angular/content-dist/documentation/userguide/reactome-fiviz.json create mode 100644 projects/website-angular/content-dist/documentation/userguide/review-status.json create mode 100644 projects/website-angular/content-dist/documentation/userguide/searching.json create mode 100644 projects/website-angular/content-dist/tools/reactome-fiviz.json diff --git a/projects/website-angular/content-dist/about/contact-us.json b/projects/website-angular/content-dist/about/contact-us.json new file mode 100644 index 00000000..3a19a460 --- /dev/null +++ b/projects/website-angular/content-dist/about/contact-us.json @@ -0,0 +1 @@ +{"title":"Contact us","category":"about","body":"\n## Contact us \n\n#### Helpdesk\n\n[![HelpDeskLogo](/uploads/about/HelpDeskLogo.png)]()\n\nContact us by emailing our helpdesk: [help@reactome.org]()\n\nPlease visit our [FAQ page]() for additional information.\n\n#### Social Media\n\nFind us on the following social media platforms: [LinkedIn](), [Bluesky](), and subscribe to our [Youtube]() Channel!\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/digital-preservation.json b/projects/website-angular/content-dist/about/digital-preservation.json new file mode 100644 index 00000000..accbcbd4 --- /dev/null +++ b/projects/website-angular/content-dist/about/digital-preservation.json @@ -0,0 +1 @@ +{"title":"Untitled","category":"about","body":"\n### The Reactome consortium and host institutions OICR, EMBL-EBI, NYU and OHSU are committed to the long-term development and maintenance of the Reactome database.\n\n#### Reactome content:\n\n * Reactome pathway annotation is fully stored in a mysql database and exported with each release in a simple text file format along with a Protege file that describes the data model of the mysql database.\n * Content is also exported in a variety of community standards including BioPAX, SBML and PSIMITAB, among others. These files are XML-based text files with version information embedded. These files follow community standards that are well maintained by individual communities. \n * Reactome continuously supports and updates file export formats to be in line with major open-data standards and changing user requirements. Wherever possible, Reactome strives to keep archived data and files compatible with current formats and uses. \n * Changes to annotation content are tracked by StableIdentifierHistory, UpdateTracker and DeletedInstances, ensuring content stays up to date and allowing users to track changes over time\n * Reactome uses Github to manage software source code and actively uses label, version and branching to manage development. \n * Reactome data and resources are available for [direct download]() from the Reactome website and from the [GitHub]() [r]()epository.\n\n#### Reactome data, code and tools are robustly safeguarded by many levels of backup:\n\n * The Reactome dataset is replicated across two independent servers hosted by AWS. \n * Our legacy data for each release is stored in an AWS Simple Storage System (S3) bucket, allowing regeneration and remounting of the database or rollback to earlier versions if necessary. \n * Legacy data and documentation for each release is additionally stored in the [Reactome Community]() on Zenodo\n * Reactome source code and the full data schema is preserved and available on Github. Archiving of Reactome code in the [Zenodo Reactome Community]() will be implemented by May 2026.\n * Reactome is Dockerizing all components of the architecture and offloading computational tasks to AWS services. \n * Zabbix monitors all major services hosted on our servers\n * Multiple personnel across the host institutions have the expertise required to restore services and regenerate the Reactome website\n\n#### Long-term preservation plan:\n\nReactome has a 20+ year history of stable funding from varied sources, providing stability and continuity. In recognition of its value to the bioinformatics community and its long-term stability, Reactome has been recognized as an ELIXIR Core Data Resource and as a Global Core Biodata Resource. \n\nIn the unlikely event that Reactome were to lose funding or otherwise cease operating, existing content and tools would be preserved in the latest format on the public website if possible and would persist independently in other resources that make use of Reactome content such as WikiPathways and GO-CAM models. \n\nReactome source code is preserved and available on GitHub. Legacy data and documentation, including the full data schema and internal process documents such as the Reactome Curation Guide and the User’s Guide, are preserved in the Reactome Community on Zenodo ensuring future interpretability and reusability of stored digital content.\n\nIn the event that Reactome can no longer be actively maintained, OICR is committed to maintaining static copies of the Reactome database in internet-accessible storage repositories, as documented [here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/disclaimer.json b/projects/website-angular/content-dist/about/disclaimer.json new file mode 100644 index 00000000..4af53829 --- /dev/null +++ b/projects/website-angular/content-dist/about/disclaimer.json @@ -0,0 +1 @@ +{"title":"Disclaimer","category":"about","body":"\n## Disclaimer \n\n**DISCLAIMER OF LIABILITY AND OF WARRANTIES**\n\nIn no event shall Ontario Institute for Cancer Research (OICR), New York University (NYU), Oregon Health & Science University (OHSU), and/or EMBL-European Bioinformatics Institute (EBI) be liable for any use of the Reactome website, its contents or information derived thereof. The content of and information contained in the Reactome website is the opinion of the contributor and/or the author of such content and/or information and is not supplied as medical information. OICR, NYU, OHSU, and/or EBI accepts no responsibility or liability for any loss, cost, claim or expense arising from any reliance on such content or information. The content of this site is intended for educational and scientific research purposes only and not as a source of medical advice or consultation.\n\nBY USING THIS SITE YOU AGREE TO ASSUME ALL RISKS ASSOCIATED WITH YOUR USE OR TRANSFER OF ANY AND ALL INFORMATION CONTAINED ON THIS SITE AND TO HOLD OICR, NYU, OHSU, AND/OR EBI HARMLESS FROM ANY CLAIMS RELATING TO CONTENT OR INFORMATION IN EXCHANGE FOR YOUR USE OF THE SITE. THE REACTOME SITE IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. OICR, NYU, OHSU, and/or EBI MAKES NO WARRANTIES ABOUT THE ACCURACY, RELIABILITY, COMPLETENESS, OR TIMELINESS OF THE MATERIAL, SERVICES, SOFTWARE, TEXT, GRAPHICS, AND LINKS. DESCRIPTION OF, OR REFERENCES TO, PRODUCTS OR PUBLICATIONS DOES NOT IMPLY ENDORSEMENT OF THAT PRODUCT OR PUBLICATION.\n\nOICR, NYU, OHSU, and/or EBI DOES NOT WARRANT THAT THE SITE WILL OPERATE ERROR-FREE OR THAT THIS SITE AND ITS SERVER ARE FREE OF COMPUTER VIRUSES OR OTHER HARMFUL MECHANISMS. IF YOUR USE OR TRANSFER OF THE SITE OR THE MATERIALS RESULTS IN THE NEED FOR SERVICING OR REPLACING EQUIPMENT OR DATA, OICR, NYU, OHSU, AND/OR EBI IS NOT RESPONSIBLE FOR THOSE COSTS.\n\n**INDEMNITY**\n\nYou agree to defend, indemnify, and hold harmless OICR, NYU, OHSU, and/or EBI, its officers, directors, employees and agents, from and against any and all claims, actions or demands, (including without limitation all legal and accounting fees) which may arise due to your use or transfer of the Reactome web site, its contents, or information thereof.\n\n**PRIVACY**\n\nCookies are used by the search pages in order to remember your search settings. Some cookies persist after you exit the browser, but they are never used for either identification or tracking purposes.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/funding.json b/projects/website-angular/content-dist/about/funding.json new file mode 100644 index 00000000..bcac5ac5 --- /dev/null +++ b/projects/website-angular/content-dist/about/funding.json @@ -0,0 +1 @@ +{"title":"Funding","category":"about","body":"\n## Funding \n\nReactome core curation, software development and outreach is supported by the [National Institute of Health]() (U24HG012198, 2022-2027), the [European Molecular Biology Laboratory]() and [Open Targets]() (OTAR-006, 2015-2024). Additional NIH funding (U24HG011851, 2021-2026) is used to support the development of GO-CAM models, aligning the Gene Ontology and the Reactome data resources. Integration of Alliance of Genome Resources (AGR) and Uniprot data into the Reactome chatbot is supported by a [Prototyping Award]() from [York University]().\n\n### Past funding:\n\nCore Reactome activities have been supported by NIH grants U41HG003751 (2007-2022) and (2002-2006).\n\nDevelopment of the Reactome IDG (Illuminating the Druggable Genome) portal for pathway-based analysis and visualization of understudied proteins) was supported by NIH grant U01CA239069 (2019-2023). Improvements to Reactome’s TRUST-worthiness and Continuous Integration/Continuous Deployment (CI/CD) were supported by NIH supplementary grants U24HG12198-02S1 and U24HG12198-02S2, respectively. \n\nRapid curation of the COVID-19 pathway was supported by NIH supplementary grant U41HG003751-13S1.\n\nDevelopment of tools to scale up biological pathway knowledge acquisition through text mining and crowdsourcing was supported by NIH supplementary grant U41HG003751-12S1.\n\nDevelopment of our cell lineage pathways was supported by a University of Toronto [Medicine by Design]() Seed Fund (MbDNISF-2020-03).\n\nDevelopment of the Reactome GSA tool was supported by a grant from the [European Union Marie Sklodowska-Curie Actions]() fund (2019).\n\nDevelopment of a Reactome portal for NURSA (Nuclear Receptor Signaling Atlas) was supported by NIH grant U24DK097748 (2017-2018).\n\nCuration of neural stem cell signaling pathways was supported by a University of [Toronto Medicine by Design]() grant (2016-2019).\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/license.json b/projects/website-angular/content-dist/about/license.json new file mode 100644 index 00000000..edb67cee --- /dev/null +++ b/projects/website-angular/content-dist/about/license.json @@ -0,0 +1 @@ +{"title":"License Agreement","category":"about","body":"\n## License Agreement \n\nThis License Agreement (the “Agreement”) governs the use of the Reactome database and its contents, including all data, graphics, software, and other materials associated therewith. By accessing and/or using Reactome, you (the “User”) agree to be bound by the terms of this Agreement. If you do not agree with the terms of this Agreement, you may not use Reactome.\n\n**1\\. Applicable Open-Source Licenses.** User agrees that the content on Reactome is governed by various open-source licenses and agrees to adhere to applicable license terms as follows:\n\na) **Pathway Illustrations, Icon Library, Art, and Branding Materials**. This Reactome content is licensed under the [Creative Commons Attribution 4.0 International License (CC BY 4.0)](). User may copy, modify, and distribute these materials, provided that appropriate credit is given, a link to the license is included, and any modifications made by User are clearly indicated. For information on how to properly credit data use, please review the [Creative Commons FAQ]() or contact the [help@reactome.org]().\n\nb) **Software and Code** : Except for software using dependencies with copyleft licenses (e.g., GPL-3) that require derivative works to use the same license, and except for FoamTree software, which is subject to a Special License as further described in Section 2 a) below, all Reactome software is licensed under the [Apache License 2.0](). Individual repositories are marked with the appropriate licensing requirements, and User must ensure their intended use is compliant with the relevant license, as applicable.\n\nc) **Data** : All data in the Reactome database and files derived from that data are licensed under the [Creative Commons Public Domain Dedication (CC0)](). User may copy, modify, and distribute these data, even for commercial purposes, without asking for permission. Attribution is encouraged but not required.\n\n**2\\. Special Licenses.** Notwithstanding the Applicable Open-Source Licenses set out in Section 1 above, User agrees to the application of Special Licenses to certain Reactome content as follows:\n\na) **FoamTree (Voronoi Treemaps)** : The FoamTree software, used to construct the ReacFoam genome-wide pathway overview, is provided under license by Carrot Search, Inc. Images and analyses generated on the Reactome website using FoamTree software are free to use with no restriction. For local installations of the Reactome, User must either: i) use the free, fully functional demo version of the FoamTree software included with Reactome, which adds a promotional logo to one of the cells of the visualization; or ii) obtain their own license from Carrot Search directly.\n\n**3\\. Disclaimer of Warranties.** Reactome is provided “as is” and “as available” without any warranties of any kind, either express or implied. All warranties, including but not limited to the implied warranties of merchantability, fitness for a particular purpose, and non-infringement are hereby disclaimed.\n\n**4\\. Indemnification.** Users agree to indemnify and hold harmless licensors from and against any and all claims, liabilities, damages, losses, and expenses (including reasonable attorneys’ fees) arising out of or in any way connected with their use of Reactome.\n\n**5\\. Changes to Terms.** Reactome reserves the right to modify this Agreement at any time. User is encouraged to review this Agreement periodically for any changes. Continued use of Reactome after any modifications constitutes acceptance of the revised Agreement.\n\n**6\\. Governing Law.** This Agreement shall be governed by and construed in accordance with the laws of the Province of Ontario and the laws of Canada applicable therein.\n\n**7\\. Compliance and Enforcement.** Users must comply with all applicable licensing requirements and ensure that their access and/or use of Reactome content is consistent with the terms of this Agreement. Licensors reserves the right to enforce this Agreement and take appropriate action in the event of any non-compliance.\n\n**8\\. Contact Information** For any questions or concerns regarding this Agreement, please contact the [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/logo.json b/projects/website-angular/content-dist/about/logo.json new file mode 100644 index 00000000..f9c5377e --- /dev/null +++ b/projects/website-angular/content-dist/about/logo.json @@ -0,0 +1 @@ +{"title":"Introducing our Logo","category":"about","body":"\n## Introducing our Logo \n\nThe new Reactome logo brings to the forefront the value and quality of the information and analysis tools that can be found in our curated database of pathways. The layering in our logo highlights the transparency of Reactome’s nature while the rounded typography matches our openness.\n\nDerived from a shape that exists in nature and at the same time gives structure, the logo evokes the idea of discovering by unwrapping the layers of knowledge that surround biological events.\n\n### __How to use our logo\n\nWe invite you to use the brand ([imagotype](<#imagotype>)) or the logo ([isotype](<#isotype>)) as you decide. We suggest the usage of our image against a white background but we understand that sometimes it is just not possible, that is why you have as well the negative of our image, that fits nicely against a coloured background.\n\n### [__Imagotype](<#imagotype>)\n\n![Reactome Logo](uploads/about/logo/Reactome_Imagotype_Positive.svg)\n\nPNG\n\n[Small [297x70]](images/logo/imagotype/positive/Reactome_Imagotype_Positive_25mm.png \"Click to Download our logo in PNG format\")\n\n[Medium [591x138]](images/logo/imagotype/positive/Reactome_Imagotype_Positive_50mm.png \"Click to Download our logo in PNG format\")\n\n[Large [1183x276]](images/logo/imagotype/positive/Reactome_Imagotype_Positive_100mm.png \"Click to Download our logo in PNG format\")\n\n[SVG](images/logo/imagotype/positive/Reactome_Imagotype_Positive.svg \"Click to Download our logo in SVG format\")\n\n[EMF](images/logo/imagotype/positive/Reactome_Imagotype_Positive.emf \"Click to Download our logo in EMF format\")\n\n![Reactome Logo](uploads/about/logo/Reactome_Imagotype_Negative.svg)\n\nPNG\n\n[Small [297x70]](images/logo/imagotype/negative/Reactome_Imagotype_Negative_25mm.png \"Click to Download our logo in PNG format\")\n\n[Medium [591x138]](images/logo/imagotype/negative/Reactome_Imagotype_Negative_50mm.png \"Click to Download our logo in PNG format\")\n\n[Large [1183x276]](images/logo/imagotype/negative/Reactome_Imagotype_Negative_100mm.png \"Click to Download our logo in PNG format\")\n\n[SVG](images/logo/imagotype/negative/Reactome_Imagotype_Negative.svg \"Click to Download our logo in SVG format\")\n\n[EMF](images/logo/imagotype/negative/Reactome_Imagotype_Negative.emf \"Click to Download our logo in EMF format\")\n\n### [__Isotype](<#isotype>)\n\n![Reactome Logo \\(Isotype\\)](uploads/about/logo/Reactome_Isotype_Positive.svg)\n\nPNG\n\n[Small [119x138]](images/logo/isotype/positive/Reactome_Isotype_Positive_10mm.png \"Click to Download our logo in PNG format\")\n\n[Medium [297x342]](images/logo/isotype/positive/Reactome_Isotype_Positive_25mm.png \"Click to Download our logo in PNG format\")\n\n[Large [591x682]](images/logo/isotype/positive/Reactome_Isotype_Positive_50mm.png \"Click to Download our logo in PNG format\")\n\n[SVG](images/logo/isotype/positive/Reactome_Isotype_Positive.svg \"Click to Download our logo in SVG format\")\n\n[EMF](images/logo/isotype/positive/Reactome_Isotype_Positive.emf \"Click to Download our logo in EMF format\")\n\n![Reactome Logo \\(Isotype\\)](uploads/about/logo/Reactome_Isotype_Negative.svg)\n\nPNG\n\n[Small [119x138]](images/logo/isotype/negative/Reactome_Isotype_Negative_10mm.png \"Click to Download our logo in PNG format\")\n\n[Medium [297x342]](images/logo/isotype/negative/Reactome_Isotype_Negative_25mm.png \"Click to Download our logo in PNG format\")\n\n[Large [591x682]](images/logo/isotype/negative/Reactome_Isotype_Negative_50mm.png \"Click to Download our logo in PNG format\")\n\n[SVG](images/logo/isotype/negative/Reactome_Isotype_Negative.svg \"Click to Download our logo in SVG format\")\n\n[EMF](images/logo/isotype/negative/Reactome_Isotype_Negative.emf \"Click to Download our logo in EMF format\")\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/102-version-64-released.json b/projects/website-angular/content-dist/about/news/102-version-64-released.json new file mode 100644 index 00000000..cdc2fcc0 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/102-version-64-released.json @@ -0,0 +1 @@ +{"title":"Version 64 Released","category":"about","date":"2018-03-26T16:00:21-04:00","tags":"[\"about\", \"news\", \"102-version-64-released\"]","body":"\n## Version 64 Released \n\n[![Digest Absorp](/uploads/about/news/R-HSA-8963743.svg)]()\n\n**New and Updated Pathways.** In version V64, topics with new or revised pathways include Signal Transduction ([ESR-mediated signaling]() and [Signaling by NTRK2]()), Metabolism ([Biosynthesis of specialized proresolving mediators (SPMs)]()), and Metabolism of proteins ([Peroxisomal protein import]()).\n\n**Thanks to our Contributors.** [Hanna Antila](), [Jorge Azevedo](), [Kumar Belani](), [Gerry Boss](), [Matthew Brenner](), [Eero Castrén](), [Arthur Cooper]()[, Diana Downs](), [Marc Fransen](), [Trond Hansen](), [Hui-Chih Hung](), [Margaret James](), [Pidder Jansen-Duerr](), [Hideo Kimura](), [Luca Magnani](), [Steven Patterson](), [Paul Van Veldhoven](), [Alexander Weiss](), and [Herman Wolosker]() are our external reviewers.\n\nIllustrations with embedded navigation features are now available for [Digestion and absorption](), [DNA Double-Strand Break Repair](), [Signaling by receptor tyrosine kinases](), [Signaling by FGFR](), [MAPK family signaling cascades](), [MAPK1/MAPK3 signaling](), [Signaling by TGF-beta family](), [RHO GTPase Effectors](), [Signaling by Wnt](), [Signaling by Hedgehog](), [Death Receptor Signaling](), and [Intracellular signaling by second messengers]().\n\n**Annotation Statistics.** Reactome comprises 11,754 human reactions organized into 2,216 pathways involving 11,030 proteins encoded by 10,762 different human genes, 1,867 small molecules, and 11,561 complexes. These annotations are supported by 28,254 literature references. We have projected these reactions onto 140,720 orthologous proteins, creating 21,223 orthologous pathways in 18 non-human species. Version 64 has annotations for 1,339 protein variants (mutated proteins) and their post-translationally modified forms, derived from 289 proteins, which have been used to annotate disease-specific complexes, reactions and pathways.\n\n**About the Reactome Project**. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence, A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the [Reactome website]().\n\n**Follow us on Twitter:**[@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information.** Please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/103-version-65-released.json b/projects/website-angular/content-dist/about/news/103-version-65-released.json new file mode 100644 index 00000000..853208ca --- /dev/null +++ b/projects/website-angular/content-dist/about/news/103-version-65-released.json @@ -0,0 +1 @@ +{"title":"Version 65 Released","category":"about","date":"2018-06-12T16:19:48-04:00","tags":"[\"about\", \"news\", \"103-version-65-released\"]","body":"\n## Version 65 Released \n\n[![carbohydrate](/uploads/about/news/R-HSA-71387.svg)]()\n\n**New and Updated Pathways.** In version V65, topics with new or revised pathways include Immune System ([Interleukin-9 signaling]()) and Signal Transduction ([Signaling by NOTCH4]() and [Signaling by NTRK3 (TRKC)]()). Illustrations with embedded navigation features are now available for [Carbohydrate Metabolism]() and [Homology Directed Repair]().\n\n**Thanks to our Contributors.** [Jorge Azevedo](), []()[Antonio Gómez-Outes](), [Jan Haavik](), [Eun-Kyeong Jo](), []()[Paula Licona-Limon](), [Jared Rutter](), and [Pantelis Tsoulfas](), are our external reviewers.[ \n]()\n\n**Annotation Statistics.** Reactome comprises 11,896 human reactions organized into 2,222 pathways involving 10,935 proteins encoded by 10,763 different human genes, 1,880 small molecules, and 11,674 complexes. These annotations are supported by 28,436 literature references. We have projected these reactions onto 159,163 orthologous proteins, creating 23,450 orthologous pathways in 18 non-human species. Version 65 has annotations for 1,339 protein variants (mutated proteins) and their post-translationally modified forms, derived from 289 proteins, which have been used to annotate disease-specific complexes, reactions and pathways.\n\n**About the Reactome Project**. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence, A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the [Reactome website]().\n\n**Follow us on Twitter:**[@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information.** Please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/105-our-data-now-available-through-google-dataset-search-engine.json b/projects/website-angular/content-dist/about/news/105-our-data-now-available-through-google-dataset-search-engine.json new file mode 100644 index 00000000..3da95794 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/105-our-data-now-available-through-google-dataset-search-engine.json @@ -0,0 +1 @@ +{"title":"Our data now available through Google Dataset Search","category":"about","date":"2018-09-06T13:49:49-04:00","tags":"[\"about\", \"news\", \"105-our-data-now-available-through-google-dataset-search-engine\"]","body":"\n## Our data now available through Google Dataset Search \n\n![Google Data Search](/uploads/about/news/Google_Data_Search.jpg)\n\nWe are pleased to announce that we are amongst the early adopters of the new [Google Dataset Search]().\n\nThroughout the world, there are many thousands of open access data repositories hosted by public institutions, research projects, local and national governments, not-for-profit organisations, and many others. These online resources provide a variety of datasets, which are available in different formats and support many data standards. The Google Dataset Search engine enables easy access to these datasets, so that researchers, scientists, data journalists, data wranglers, or anyone else can quickly find the data for their work.\n\nAn example of how Reactome pathway data can be viewed in the Google DataSet Search is available at this[ link]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/106-version-66-release.json b/projects/website-angular/content-dist/about/news/106-version-66-release.json new file mode 100644 index 00000000..e51e176d --- /dev/null +++ b/projects/website-angular/content-dist/about/news/106-version-66-release.json @@ -0,0 +1 @@ +{"title":"Version 66 Released","category":"about","date":"2018-09-27T08:56:24-04:00","tags":"[\"about\", \"news\", \"106-version-66-release\"]","body":"\n## Version 66 Released \n\n[![protein localization](/uploads/about/news/R-HSA-9609507.svg)]()\n\n**New and Updated Pathways.** In version 66, topics with new or revised pathways includeDisease ([Loss of function of MECP2 in Rett syndrome ]()and [Defective Base Excision Repair Associated with MUTYH]()), Gene Expression ([Transcriptional regulation by MECP2]()), Immune Response ([OAS antiviral response]()), Metabolism of proteins ([SUMOylation of DNA methylation proteins](), [SUMOylation of immune response proteins](), [SUMOylation of intracellular receptors](), [SUMOylation of SUMOylation proteins](), [SUMOylation of transcription cofactors](), and [SUMOylation of ubiquitinylation proteins]()), and Signal Transduction ([Signaling by Erythropoietin]()).\n\n**Thanks to our Contributors.** [John Christodoulou](), [Rahul Krishnaraj](), [Kathy L McGraw](), [Marco Meras-Rios](), [Yusaku Nakabeppu](), [Einari Niskanen](), [Robert H Silverman](), and [Jürgen Wienands ]()are our external reviewers.\n\nNew Ilustrations. Illustrations with embedded navigation features are now available for [DNA replication ]()and [Protein localization]().\n\n**Annotation Statistics.** Reactome comprises 12,047 human reactions organized into 2,244 pathways involving 11,049 proteins encoded by 10,870 different human genes, 1,948 small molecules, and 11,823 complexes. New in this release are annotations of the functions of 139 drugs, 3 of them proteins and 136 small molecules. These annotations are supported by 28,829 literature references. We have projected these reactions onto 139,072 orthologous proteins, creating 21,283 orthologous pathways in 18 non-human species. Version 66 has annotations for 1,391 protein variants (mutated proteins) and their post-translationally modified forms, derived from 293 proteins, which have been used to annotate disease-specific complexes, reactions and pathways.\n\n**About the Reactome Project**. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactomeare distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the [Reactome website]().\n\n**Follow us on Twitter:**[@reactome]()**** to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information.** Please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/107-new-tool-to-generate-analysis-pdf-reports.json b/projects/website-angular/content-dist/about/news/107-new-tool-to-generate-analysis-pdf-reports.json new file mode 100644 index 00000000..a7d659d2 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/107-new-tool-to-generate-analysis-pdf-reports.json @@ -0,0 +1 @@ +{"title":"New tool to generate analysis PDF reports","category":"about","date":"2018-07-12T06:51:41-04:00","tags":"[\"about\", \"news\", \"107-new-tool-to-generate-analysis-pdf-reports\"]","body":"\n## New tool to generate analysis PDF reports \n\n![Analysis Report PDF](/uploads/about/news/Analysis_Report_PDF.png)\n\nWe now offer a new tool to download your analysis results as a single PDF file. This report contains a genome-wide overview, statistics for the most significant pathways and, for each significant pathway, it includes the corresponding diagram image with the analysis overlaid, a summation of the pathway, the related bibliography and the list of identifiers found.\n\nWhen performing pathway analysis through our [PathwayBrowser](), you can download the report by clicking on the “Report (PDF)” button on the bottom-left corner of the Analysis tab. This feature is also available when implementing programmatic access to our [AnalysisService]() through [this method]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/109-new-advanced-search-available-in-our-pathway-browser.json b/projects/website-angular/content-dist/about/news/109-new-advanced-search-available-in-our-pathway-browser.json new file mode 100644 index 00000000..576e65be --- /dev/null +++ b/projects/website-angular/content-dist/about/news/109-new-advanced-search-available-in-our-pathway-browser.json @@ -0,0 +1 @@ +{"title":"New advanced search available in our PathwayBrowser","category":"about","date":"2018-10-01T05:05:45-04:00","tags":"[\"about\", \"news\", \"109-new-advanced-search-available-in-our-pathway-browser\"]","body":"\n## New advanced search available in our PathwayBrowser \n\nYour browser does not support the video tag. \n\nOur [PathwayBrowser]() now features advanced search capabilities powered by Solr to allow finding content throughout the whole knowledgebase. The user interface has been improved adapting to the findings of our last UX testing. The search within the Diagram Viewer widget enables users to define the scope of their search either limiting it to the content of the displayed diagram or expanding it to cover all pathways allowing our users to perform a search against all content without having to go the main search.\n\nThis new feature has also been enabled in our [diagram]() and [pathways overview]() widgets so third party web applications can already take advantage of it, allowing users to search Reactome content without abandoning the page they are in.\n\nThe new search features:\n\n 1. Suggestions based on the introduced term.\n 2. Listing the most recent searches.\n 3. Scoping results to either the displayed diagram or the whole database.\n 4. Filtering results by one or more entity types (i.e. Proteins, Chemical compounds, Reactions, etc.)\n 5. Flagging a given entity to persist its highligthing.\n\nTo learn more, please check the [Searching Reactome]() section in our [User Guide]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/110-sbgn-files-revamp.json b/projects/website-angular/content-dist/about/news/110-sbgn-files-revamp.json new file mode 100644 index 00000000..d1877d96 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/110-sbgn-files-revamp.json @@ -0,0 +1 @@ +{"title":"SBGN files revamp","category":"about","date":"2018-10-03T08:53:19-04:00","tags":"[\"about\", \"news\", \"110-sbgn-files-revamp\"]","body":"\n## SBGN files revamp \n\n![SBGN Revamp](/uploads/about/news/20181004_SBGN_Revamp.png)\n\nThe [Systems Biology Graphical Notation (SBGN)]() project is an effort to standardise the graphical notation used in maps of biological processes. It aims to communicate biological knowledge more efficiently and accurately between different research communities in the life sciences.\n\nFollowing this commitment, we’ve recently revamped our SBGN export methods and tools to provide more accurate representation of our pathway diagrams. Users have the option to either export a pathway diagram in SBGN through the [PathwayBrowser](), or get [all human pathway diagrams]() from our [downloads section]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/111-international-open-access-week-analysis-tools.json b/projects/website-angular/content-dist/about/news/111-international-open-access-week-analysis-tools.json new file mode 100644 index 00000000..dd3e8080 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/111-international-open-access-week-analysis-tools.json @@ -0,0 +1 @@ +{"title":"International Open Access Week: Analysis Tools","category":"about","date":"2018-10-23T04:25:02-04:00","tags":"[\"about\", \"news\", \"111-international-open-access-week-analysis-tools\"]","body":"\n## International Open Access Week: Analysis Tools \n\n![International Open Access week \\(Analysis Tools\\)](/uploads/about/news/20181022_OpenAccess_week_-_Analysis_Service.png)\n\nFollowing up on the International [Open Access week](), we would like to remind our users that all our tools, including the [analysis](), are open access.\n\nPathway analysis methods have a broad range of applications in physiological and biomedical research. Our analysis suite currently implements an overrepresentation analysis, an expression data analysis and a species comparison tool. Using this service, users can submit their sample (list of identifiers) to get as result the most significants pathways. Results are overlaid in the different modules of our Pathway Browser and can be exported to different formats including a [PDF report]().\n\nA light-weight client is integrated in our [Pathway Browser](). The tool suite is available via a [RESTFul Web Service]() so all the available analysis tools can be easily integrated into third party software. More documentation for developers is available at our [developer's zone]()[.]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/112-international-open-access-week-network-analysis-tools.json b/projects/website-angular/content-dist/about/news/112-international-open-access-week-network-analysis-tools.json new file mode 100644 index 00000000..59ff3023 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/112-international-open-access-week-network-analysis-tools.json @@ -0,0 +1 @@ +{"title":"International Open Access Week: Network Visualization & Analysis Tool","category":"about","date":"2018-10-23T12:54:11-04:00","tags":"[\"about\", \"news\", \"112-international-open-access-week-network-analysis-tools\"]","body":"\n## International Open Access Week: Network Visualization & Analysis Tool \n\n![20181024 OpenAccess week ReactomeFIViz 2](/uploads/about/news/20181024_OpenAccess_week_-_ReactomeFIViz_2.png)\n\nAs part of the International [Open Access week](), we would like to talk about another one of our open access network visualization and analysis tool – the [Reactome FIViz app]().\n\nIn order to improve our understanding of disease mechanisms and develop better personalized precision therapies for patients, many biological and clinical studies employ high-throughput techniques that generate large-scale data sets. Typically, these data sets are gene- or protein-based, and to better understand the relationships among interesting genes or proteins, researchers usually have to project them onto biological network contexts to provide holistic visualization and analysis platform for reducing the dimensionality of data using network modules.\n\nTo assist our users who would like to perform network-based analysis, we have constructed the Reactome Functional Interaction (FI) network which, covers 60% of the total human protein-coding genes, and was created by extracting interactions from manually curated pathways and predicting interactions based on a machine learning technique. We have developed the [Cytoscape ]()application (or app), called the “ReactomeFIViz” that uses this highly reliable FI network to support network-based data visualization and analysis. Users of our app can construct an FI subnetwork for a list of genes, perform network clustering to find network modules, annotate the subnetwork and modules, and perform survival analysis for network modules. Furthermore, the app can also perform pathway enrichment analysis using a gene score file, and pathway mathematical modeling based on probabilistic graphical models and Boolean networks. More documentation about the ReactomeFIViz app is available through our [User Guide]() and the [Cytoscape App Store]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/113-oaweek-interactive-illustrations-icons.json b/projects/website-angular/content-dist/about/news/113-oaweek-interactive-illustrations-icons.json new file mode 100644 index 00000000..71102746 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/113-oaweek-interactive-illustrations-icons.json @@ -0,0 +1 @@ +{"title":"International Open Access Week: Interactive illustrations and icon library","category":"about","date":"2018-10-25T04:19:18-04:00","tags":"[\"about\", \"news\", \"113-oaweek-interactive-illustrations-icons\"]","body":"\n## International Open Access Week: Interactive illustrations and icon library \n\n![OpenAccessWeek Textbook-like illustrations and icon library](/uploads/about/news/20181025_OpenAccess_week_-_EHLD_-_Icon_Library.png)\n\nTextbook-like illustrations aim to improve the graphical representation of higher-level pathways in the Reactome events hierarchy, e.g., “[signal transduction]()”, “[apoptosis]()”, or “[metabolism of proteins]()” whose pathway diagrams consisted of green boxes labeled with the names of sub-events, optionally located in cellular compartments and connected by arrows. These green-box diagrams feature limited navigation: clicking on a green box takes the user to that sub-event.\n\nThere was a general agreement that green-box diagrams are not that appealing, and put off users accustomed to textbook-quality illustrations of biological processes with striking, intuitively clear iconography. The project includes generation of scalable vector graphic (SVG) versions of illustrations, and a diagram module that makes these images interactive by enabling actions such as hovering over the items or selecting them to show the associated content in the details panel.\n\nDeveloping this project has also driven the creation of the [Icon Library](); a consistent iconography compendium that ranges from simple protein labels to representations of organelles, receptors and cell types. The library has now been integrated in the main search as well as in the pages of their associated entities such as proteins or chemicals. Icons can be found by their name, description, designer and/or contributor.\n\nThe Icon Library is freely accessible (under a [CC-BY 4.0 licence]()) and it is suitable for a broad range of purposes, from schematic pathway sketches in scientific presentations and publications to grant proposal illustrations. As the library was created to be a community resource, the invitation for third parties to contribute is still open. Aiming to achieve technical and artistic consistency, detailed guidelines are provided at To acknowledge the community engagement, each icon is attributed to the author through a metadata file linking to a portfolio and/or ORCID id. As of September 2018, the library has considerably grown to 1,150 components.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/114-graphdb-content-service.json b/projects/website-angular/content-dist/about/news/114-graphdb-content-service.json new file mode 100644 index 00000000..dbe80345 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/114-graphdb-content-service.json @@ -0,0 +1 @@ +{"title":"International Open Access Week: GraphDB and Content Service","category":"about","date":"2018-10-26T04:21:29-04:00","tags":"[\"about\", \"news\", \"114-graphdb-content-service\"]","body":"\n## International Open Access Week: GraphDB and Content Service \n\n![OpenAccess Week: GraphDB and ContentService](/uploads/about/news/20181026_OpenAccess_week_-_GraphDB_ContentService.png)\n\nSince version 57 we provide our data in a [Neo4j]() [graph database]() helping to reduce the complexity of the represented knowledgebase and allowing a more straightforward access to our content. Neo4j’s query language, Cypher, allows queries to be written in a more intuitive way and reduces the average response time per query by 93% ([Fabregat et al., 2018]()).\n\nThe graph database also benefits Reactome in other aspects like (i) the creation of complex data quality assessment (QA) queries or (ii) supporting software that requires data pattern analysis, e.g. [reactions classification](). QA queries are executed during each quarterly release to identify instances that need to be checked out and corrected by Reactome curators ensuring that high-quality content is delivered to the final user. The reactions classifier project, for example, uses Cypher to formalise the concepts presented in [Jupe et al. (2014)]() to generate a series of reports that help curators classify the reactions in Reactome.\n\nThe [Content Service]() constitutes an easy API, based on the Representational State Transfer (REST) protocol, that provides access to the Reactome knowledgebase. It includes a set of methods classified in groups according to their functionality. For instance, expanding the pathways group reveals a set of methods that provide specific information about pathways such as the contained Events or the participating PhysicalEntities.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/115-performing-gsea-analysis-with-reactomefiviz-app.json b/projects/website-angular/content-dist/about/news/115-performing-gsea-analysis-with-reactomefiviz-app.json new file mode 100644 index 00000000..5b215de3 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/115-performing-gsea-analysis-with-reactomefiviz-app.json @@ -0,0 +1 @@ +{"title":"Performing GSEA analysis with ReactomeFIViz app","category":"about","date":"2018-11-01T10:00:04-04:00","tags":"[\"about\", \"news\", \"115-performing-gsea-analysis-with-reactomefiviz-app\"]","body":"\n## Performing GSEA analysis with ReactomeFIViz app \n\n![ReactomeFIViz GSEA](/uploads/about/news/ReactomeFIViz_GSEA.png)\n\nReactomeFIViz is a Cytoscape app built upon Reactome pathways to help users perform pathway- and network-based data analysis and visualization. One of the most popular approaches to pathway analysis, which is an alternative to the traditional gene-list based pathway enrichment, is Gene Set Enrichment Analysis (GSEA). GSEA considers all genes with their scores based on a weighted Kolmogorov–Smirnov-like test and is a representative approach of second-generation pathway analysis. ReactomeFIViz implements features to perform GSEA analysis using Reactome pathways for a gene score file. \n\nMore details about the GSEA feature and the ReactomeFIViz app can be found [here]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/116-version-67-released.json b/projects/website-angular/content-dist/about/news/116-version-67-released.json new file mode 100644 index 00000000..323263d5 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/116-version-67-released.json @@ -0,0 +1 @@ +{"title":"Version 67 Released","category":"about","date":"2018-12-10T15:18:07-05:00","tags":"[\"about\", \"news\", \"116-version-67-released\"]","body":"\n## Version 67 Released \n\n![ER to Golgi](/uploads/about/news/ER_to_Golgi.png)\n\n**New and Updated Pathways.** In version V67, topics with new or revised pathways include Gene Expression ([FOXO-mediated transcription]()), Immune Response ([ROS, RNS production in phagocytes]()), Neuronal System ([Activation of NMDA receptors and postsynaptic events]()), Programmed Cell Death ([Apoptotic factor-mediated response]()), and Signal Transduction ([GPCR downstream signaling]() and [RHO GTPase activate NADPH oxidases]()).\n\n**New Illustrations.** Illustrations with embedded navigation features are now available for [ER to Golgi Anterograde Transport](), [Expression and Processing of Neurotrophins](), and [Signaling by NTRKs]().\n\n**Thanks to our Contributors.** [Enrico Bertaggia](), [Timothy Donlon](), [Kasper Hansen](), [Oliver Nüsse](), and [Feng Yi]() are our external reviewers.\n\n**Annotation Statistics.** Reactome comprises 12,788 human reactions organized into 2,256 pathways involving 11,066 proteins and modified forms of proteins encoded by 10,792 different human genes, 1,827 small molecules, and 155 drugs. These annotations are supported by 29,454 literature references. We have projected these reactions onto 139,298 orthologous proteins, creating 21,374 orthologous pathways in 18 non-human species. Version 67 has annotations for 1,564 protein variants (mutated proteins) and their post-translationally modified forms, derived from 299 proteins. These have been used to annotate 506 complexes and 962 disease-specific reactions organized into 467 pathways and subpathways, and tagged with 342 Disease Ontology terms.\n\n**About the Reactome Project**. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the [Reactome website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information.** Please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/119-new-reactions-layout-with-nested-compartments.json b/projects/website-angular/content-dist/about/news/119-new-reactions-layout-with-nested-compartments.json new file mode 100644 index 00000000..045f0357 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/119-new-reactions-layout-with-nested-compartments.json @@ -0,0 +1 @@ +{"title":"New reactions layout with nested compartments","category":"about","date":"2019-01-09T08:52:43-05:00","tags":"[\"about\", \"news\", \"119-new-reactions-layout-with-nested-compartments\"]","body":"\n## New reactions layout with nested compartments \n\n[![Reactions automatic layout with nested compartments](/uploads/about/news/20190109_Reaction_preview.png)]()\n\nUp until now, we have placed existing regular pathway diagrams and [textbook-style illustrations]() in our pathway detailed pages (e.g. [Hemostasis]( \"Open \"Hemostasis\"\"), [Platelet Adhesion to exposed collagen]( \"Open \"Platelet Adhesion to exposed collagen\"\")), leaving single reactions as the only type of events without a self-contained image. To fill the gap, an automatic algorithm to deterministically lay reactions out has been developed. It uses data directly from our [graph-database]() to generate images without any kind of human intervention.\n\nLong story short, the algorithm’s strategy places inputs on the left, outputs on the right, catalysts on top and regulators at the bottom. Each element is placed in its corresponding compartment, and these are nested following the [Gene Ontology hierarchy](). The algorithm supports normal and disease* reactions minimizing the space as well as avoiding lines to cross unnecessary elements in the display.\n\nFinally, the reaction visualisation complies with the [Systems Biology Graphical Notation (SBGN)]().\n\nSome examples:\n\n 1. [Enzyme-bound ATP is released]( \"Open \"Enzyme-bound ATP is released\"\")\n 2. [VCP-catalyzed ATP hydrolysis promotes the translocation of Hh-C into the cytosol]( \"Open \"VCP-catalyzed ATP hydrolysis promotes the translocation of Hh-C into the cytosol\"\")\n 3. [Ubiquitination of PAK-2p34]( \"Open \"Ubiquitination of PAK-2p34\"\")\n 4. [Defective ABCD1 does not transfer LCFAs from cytosol to peroxisomal matrix]( \"Open \"Defective ABCD1 does not transfer LCFAs from cytosol to peroxisomal matrix\"\")\n\n*[Disease reactions]() can either be classified as infectious, gain-of-function or lost-of-function. In the latter category some participants have to be crossed out.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/120-classifying-pathways-into-tissue-types-based-on-protein-expression.json b/projects/website-angular/content-dist/about/news/120-classifying-pathways-into-tissue-types-based-on-protein-expression.json new file mode 100644 index 00000000..b072909d --- /dev/null +++ b/projects/website-angular/content-dist/about/news/120-classifying-pathways-into-tissue-types-based-on-protein-expression.json @@ -0,0 +1 @@ +{"title":"New tool to classify pathways into tissue types based on protein expression","category":"about","date":"2019-01-15T05:56:23-05:00","tags":"[\"about\", \"news\", \"120-classifying-pathways-into-tissue-types-based-on-protein-expression\"]","body":"\n## New tool to classify pathways into tissue types based on protein expression \n\n![Tissue distribution analysis](/uploads/about/news/20190114_Tissue_distribution.png)\n\nPathways in Reactome are curated in a generic cell and are agnostic to tissue types. However, different cell types have different functional requirements and consequently the underlying pathway activities also vary. Studying pathways in a tissue-specific manner will help to understand the biology in context.\n\nReactome now boasts a [tool]() that can categorize pathways into different tissue types based on protein expression. We overlay tissue-specific protein expression data from the [ExpressionAtlas]() database on empirically validated pathway information in Reactome. This facilitates the sorting of pathways from a generic cell to different tissue-types. This new feature allows users to select an experiment and analyse Reactome pathways in different tissues.\n\nTo try it out, select the \"Tissue Distribution\" tab, choose the tissues of your interest and click the \"Go\" button. The results are overlaid in the pathways overview and pathway diagrams similar to other analysis types. Users can cycle through the selected tissues via the small control panel displayed at the bottom of the viewport.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/121-new-pdf-book.json b/projects/website-angular/content-dist/about/news/121-new-pdf-book.json new file mode 100644 index 00000000..c7beffb7 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/121-new-pdf-book.json @@ -0,0 +1 @@ +{"title":"Download our biological pathway knowledge in a PDF book","category":"about","date":"2019-01-30T10:26:26-05:00","tags":"[\"about\", \"news\", \"121-new-pdf-book\"]","body":"\n## Download our biological pathway knowledge in a PDF book \n\n![Reactome book](/uploads/about/news/20190130_Reactome_book.png)\n\nAiming to make our biological pathway knowledge more accessible, we've been offering for years the option to download the complete content of our knowledgebase as a PDF book. Following users feedback and requests, this book has now been updated to include yet more content in a freshly redesigned look and feel. Organised in 27 volumes, one per each top level pathway, the new version of the book includes our textbook-like lilustrations as well as regular-pathway and single-reaction diagrams.\n\nIn some cases the preferred option might be downloading part of Reactome's content. To do so we've included this option in our detail pages, the PathwayBrowser and the DiagramViewer. When downloaded from the PathwayBrowser, the resulting PDF will include the user's predefined colour profiles (diagram and analysis overlay) and will also include the analysis results when available. In all cases, resulting documents are fully navigable, including links to following and preceding events or any of the parent pathways in the hierarchy. Literarutre references include links to PubMed and every event has a link to its details page in Reactome's site.\n\nThe full book can be downloaded from our [download]() section. For an example of the on-demand download please visit the [Hemostasis details page]() or [its view in the PathwayBrowser](). All the above can be programmatically generated using [this method]() from our [ContentService]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/124-deprecated-support-for-reactome-restful-api.json b/projects/website-angular/content-dist/about/news/124-deprecated-support-for-reactome-restful-api.json new file mode 100644 index 00000000..1fae4c98 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/124-deprecated-support-for-reactome-restful-api.json @@ -0,0 +1 @@ +{"title":"Deprecated support for Reactome RESTful API","category":"about","date":"2019-03-20T13:14:21-04:00","tags":"[\"about\", \"news\", \"124-deprecated-support-for-reactome-restful-api\"]","body":"\n## Deprecated support for Reactome RESTful API \n\nAs of Version 68 (March 2019), the RESTful API is deprecated and will be superceded by our ContentService. The ContentService is currently available through our website at and is designed for bioinformaticians, computer scientists, and software developers to access our pathway data. See more details about this API at [https://reactome.org/dev/content-service. ]()\n\nIf you have questions or concerns regarding this announcement, please email [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/125-version-68-of-reactome-is-now-online.json b/projects/website-angular/content-dist/about/news/125-version-68-of-reactome-is-now-online.json new file mode 100644 index 00000000..b82128c6 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/125-version-68-of-reactome-is-now-online.json @@ -0,0 +1 @@ +{"title":"Version 68 Released","category":"about","date":"2019-03-20T13:31:18-04:00","tags":"[\"about\", \"news\", \"125-version-68-of-reactome-is-now-online\"]","body":"\n## Version 68 Released \n\n![Signaling by Nuclear Receptors](/uploads/about/news/Signaling_by_Nuclear_Receptors.png)\n\n**New and Updated Pathways.** In version V68, topics with new or revised pathways include Disease ([Defective Base Excision Repair Associated with NTHL1](), [Defective Base Excision Repair Associated with NEIL1](), and [Defective Base Excision Repair Associated with NEIL3]()), Metabolism ([Blood group systems biosynthesis]()), Neuronal System ([Assembly and cell surface presentation of NMDA receptors]()), Protein localization ([Class I peroxisomal membrane protein import]() and [Insertion of tail-anchored proteins into the endoplasmic reticulum membrane]()), and Signal Transduction ([Non-genomic estrogen signaling]()).\n\n**New Illustrations.** Illustrations with embedded navigation features are now available for [Signaling by Non-Receptor Tyrosine Kinases](), [Signaling by Nuclear Receptors](), and [SUMO E3 ligases SUMOylate target proteins]().\n\n**Thanks to our Contributors.** [Subhrajit Bhattacharya](), [Chad R Camp](), [Richarda de Voer](), [Evelina DeLaurentis](), [Paul W Doetsch](), [Ákos Farkas](), [Marc Fransen](), [Roland Kuiper](), [Ellis R Levin](), [Taei Matsui](), [Huaiyu Mi](), [Barbara Rivera](), [Harini Sampath](), [Blanche Schwappach](), [Ralf Stephan](), [Stephen F Traynelis](), and [Jia Zhou]() are our external reviewers.\n\n**Annotation Statistics.** Reactome comprises 12,416 human reactions organized into 2,255 pathways involving 11,000 proteins and modified forms of proteins encoded by 10,825 different human genes, 1,854 small molecules, and 202 drugs. These annotations are supported by 29,885 literature references. We have projected these reactions onto 81,875 orthologous proteins, creating 18,505 orthologous pathways in 15 non-human species. Version 68 has annotations for 1,416 protein variants (mutated proteins) and their post-translationally modified forms, derived from 304 proteins. These have been used to annotate 532 complexes and 966 disease-specific reactions organized into 472 pathways and subpathways, and tagged with 349 Disease Ontology terms.\n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and to access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz app]() for Cytoscape provides tools to find pathways and network patterns related to cancer and other types of diseases.\n\n**Documentation and Training**. Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project**. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information** : If you have a question to ask or would like to give us your feedback, please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/126-panther-resource-now-used-to-identify-orthologs-of-curated-human-proteins.json b/projects/website-angular/content-dist/about/news/126-panther-resource-now-used-to-identify-orthologs-of-curated-human-proteins.json new file mode 100644 index 00000000..a68f3a44 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/126-panther-resource-now-used-to-identify-orthologs-of-curated-human-proteins.json @@ -0,0 +1 @@ +{"title":"PANTHER resource now used to identify orthologs of curated human proteins","category":"about","date":"2019-03-20T13:39:44-04:00","tags":"[\"about\", \"news\", \"126-panther-resource-now-used-to-identify-orthologs-of-curated-human-proteins\"]","body":"\n## PANTHER resource now used to identify orthologs of curated human proteins \n\n![Orthology](/uploads/about/news/Orthology.png)\n\nBiological processes are remarkably well-conserved over large evolutionary distances. At a practical level, this fact enables the extrapolation of mechanistic insights from species to species. The Reactome project aims to annotate the molecular details of a broad range of human biological processes based on experimental data from human systems. To link these human annotations at a molecular level to their conserved counterparts in model organism systems we use protein sequence orthology relationships to ask, for each human reaction and each model organism, whether the human proteins involved in the reaction have orthologs in the model organism. If the orthologs exist, we computationally infer the corresponding reaction for the model organism and in this way build up a predicted pathway knowledgebase for the organism. If the human protein functions as part of a complex, we search for orthologs of all components of the complex, and computationally infer the existence of the complex in the model organism if model organism counterparts of at least 75% of the human proteins are found.\n\nWith our March, 2019 (version 68) release, we have made two changes to improve the quality and usability of these inferred pathways.\n\nFirst, with the development of Plant Reactome, a substantial body of rice (Oryza sativa) pathways annotated from plant experimental evidence is now available online. That material improves on orthology-based inferences from human data, and provides a better starting point for making such inferences to other plant species, so all inferences for plant species will now be generated, maintained, and made available through [Plant Reactome]().\n\nSecond, we are now using the [PANTHER]() resource (Protein Analysis Through Evolutionary Relationships) to identify model organism orthologs of human proteins annotated in Reactome. This change will allow us to exploit features of PANTHER, such as the identification of least-diverged orthologs in model organism protein families, to improve the specificity of our inferences. The change is also part of a larger project to better align the Reactome with the Gene Ontology, PANTHER, the Alliance of Genome Resources, and related resources to generate interactive, expert-curated, actively maintained, and tightly integrated community genomics resources.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/127-come-to-our-release-68-webinar-to-learn-more-about-reactome.json b/projects/website-angular/content-dist/about/news/127-come-to-our-release-68-webinar-to-learn-more-about-reactome.json new file mode 100644 index 00000000..038c6032 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/127-come-to-our-release-68-webinar-to-learn-more-about-reactome.json @@ -0,0 +1 @@ +{"title":"Come to our release 68 webinar to learn more about Reactome","category":"about","date":"2019-03-28T14:08:26-04:00","tags":"[\"about\", \"news\", \"127-come-to-our-release-68-webinar-to-learn-more-about-reactome\"]","body":"\n## Come to our release 68 webinar to learn more about Reactome \n\n![Webinar](/uploads/about/news/Webinar.png)\n\nWe are hosting a webinar aimed at new Reactome users who would like to get an idea of our data and tools and at existing Reactome users who would like to learn about the latest Reactome updates. Reactome is a freely available curated database of human biological pathways and reactions, which is updated on a regular basis. Release 68 features new and updated pathway and reaction annotations for 16 species, as well as a suite of tools for data analysis and visualization.\n\nEvent Date: 5th April 2019. \nEvent Time: 11.00 a.m. to 12.00 p.m. EDT. \nEvent Contact: Robin Haw at [help@reactome.org]().\n\nRequisites: This webinar will be hosted using [Cisco WebEx](). You will need a computer, an Internet connection and a telephone/Skype connection/microphone to join an online session.\n\nPlease register at \n\nWhen you register, please make sure to provide your name and valid email address so that we can send you an email with the webinar details and instructions.\n\nFeel free to pass this invitation along to colleagues who may benefit from learning about this valuable resource.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/133-reactomefiviz-app-version-7-2-0-released.json b/projects/website-angular/content-dist/about/news/133-reactomefiviz-app-version-7-2-0-released.json new file mode 100644 index 00000000..cf9cc469 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/133-reactomefiviz-app-version-7-2-0-released.json @@ -0,0 +1 @@ +{"title":"ReactomeFI Network v2018 and FIViz App v2.7.0 Released","category":"about","date":"2019-04-18T00:09:37-04:00","tags":"[\"about\", \"news\", \"133-reactomefiviz-app-version-7-2-0-released\"]","body":"\n## ReactomeFI Network v2018 and FIViz App v2.7.0 Released \n\n![ReactomeFI 2018](/uploads/about/news/ReactomeFI_2018.png)\n\nThe Reactome project provides a suite of tools for our users to perform pathway- and network-based data analysis via its [web site]() and [ReactomeFIViz](), the functional interaction (FI) network-based [Cytoscape]() app.\n\nThe Reactome FI network is built upon curated pathways in Reactome, supplemented with curated pathways from other pathway databases such as [KEGG PATHWAY]() and [PANTHER pathways](). These curated pathway interactions are then integrated with gene-gene interactions derived from curated and high-throughput sources using machine learning to generate a reliable set of high-probability functional interactions.\n\nRecently, we have released the 2018 version of the Reactome FI network. To construct this FI network, we improved the training of the Naive Bayesian Classifier, which resulted in an increase in the recall rate. Consequently, the SwissProt coverage was increased from 12,441 to 13,469 proteins (8.3% increase) and the total number of functional interactions among genes increased from 241,338 to 262,321 (8.7% increase). We attributed this to an increase in the number of predicted FIs due to the improved recall rate.\n\nIn addition, the ReactomeFIViz app (version 7.2.0) now supports the 2018 version of the FI network and contains updated Reactome Pathways dataset (Release 67). The new ReactomeFIViz app is available to download within the Cytoscape software, or directly from the [Cytoscape app Store](). The [User Guide]() provides instructions on using the Reactome FI network and ReactomeFIViz app.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/136-season-of-docs.json b/projects/website-angular/content-dist/about/news/136-season-of-docs.json new file mode 100644 index 00000000..587813ba --- /dev/null +++ b/projects/website-angular/content-dist/about/news/136-season-of-docs.json @@ -0,0 +1 @@ +{"title":"Season of Docs","category":"about","date":"2019-04-22T15:13:04-04:00","tags":"[\"about\", \"news\", \"136-season-of-docs\"]","body":"\n## Season of Docs \n\n * ![SeasonofDocs Logo MainGrey 300ppi](/uploads/about/news/SeasonofDocs_Logo_MainGrey_300ppi.png)\n\n**“Fostering open source collaboration with technical writers” – Season of Docs**\n\nEstablished upon the reputation of open source community programs like [Google Summer of Code]() and [Google Code-in](), Google is introducing a new initiative called [Season of Docs](). The Reactome project has applied to participate in this year's Season of Docs. \n\nSeason of Docs aims to provide open source projects with an opportunity to engage with the technical writing community and for technical writers an occasion to gain experience in contributing to open source projects.\n\nTogether, we will raise community awareness of open documentation, technical writing, and how we can collectively work together to improve open source projects. Reactome looks forward to the opportunity that Season of Docs presents and for the opportunity to bring our entire community closer together.\n\n**Project Information**\n\n**Project Name:** Reactome\n\n**Project Description:** Reactome is a free, open-source, curated and peer-reviewed pathway database. Our goal is to provide intuitive bioinformatics tools for the visualization, interpretation, and analysis of pathway knowledge to support basic research, genome analysis, modelling, systems biology, and education.\n\n**Project Website:** \n\n**Project Idea #1 Name:** Revising the Reactome User Guide\n\n**Description:** The Reactome User Guide provides an introduction to Reactome, the user interfaces and the database content. Exercises are also provided to help user practice what they have learned. New functionality and improvements to the core website and software are constantly added to the User Guide. The outcome of this project is the revision of the existing User Guide, with updated and new tutorials,a set of how-to guides to support navigating the website and using the pathway visualization and analysis tools\n\n**Docs Link:** \n\n**Contacts:** Robin Haw: [robinhaw@gmail.com]() & Marc Gillepsie: [gillespm@gmail.com]()\n\n**Project Idea #2 Name:** Updating the Reactome Curator Guide\n\n**Description:** The Reactome Curator Guide contains an overview of the curatorial process as well as a step by step guide for annotating Reactome pathways. The curator guide takes new curators through the process of project design, entry, review, and release. Each one of these steps requires that the curator is familiar with the Reactome data model, software entry tools, process pipeline, and project management. In this sense, the curator guide serves as a compendium of learned lessons, curator philosophy, and a step-by-step process blueprint. The outcome of this project is the complete revision of the current guide to reflect new data entry tools, update the current glossary of terms to accommodate changes to data model, and create short tutorials that can be used to reinforce each learning step.\n\n**Contacts:** Marc Gillepsie [gillespm@gmail.com]() and Lisa Matthews [lmatthews.nyumc@gmail.com]()\n\n**More Information**\n\nFor more information about Reactome and Season of Docs, please refer to the following pages:\n\n[Reactome Documentation]() \\- Learn more about Reactome docs.\n\n[Season of Docs]() \\- What is Season of Docs all about?\n\n[Guides]() \\- How it all comes together.\n\n[Timeline]() \\- Please be aware of the schedule!\n\n[Rules]() \\- The ever important rulebook.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/137-version-69-released.json b/projects/website-angular/content-dist/about/news/137-version-69-released.json new file mode 100644 index 00000000..84006e62 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/137-version-69-released.json @@ -0,0 +1 @@ +{"title":"Version 69 Released","category":"about","date":"2019-05-28T13:41:55-04:00","tags":"[\"about\", \"news\", \"137-version-69-released\"]","body":"\n## Version 69 Released \n\n![Autophagy](/uploads/about/news/Autophagy.png)\n\n**New and Updated Pathways.** In version V69, Autophagy, including [Chaperone Mediated Autophagy]() and [Microautophagy]() is new. Topics with new or revised pathways include Development ([Transcriptional Regulation of Granulopoiesis]()), Disease ([Evasion of Oncogene Induced Senescence Due to p16-INK4A Defects]() and [Evasion of Oxidative Stress Induced Senescence Due to p16-INK4A Defects]()), Immune system ([FLT3 Signaling]()), and Signal Transduction ([Extra-Nuclear Estrogen Signaling]() and [Signaling by ERBB4]()). \n\n**New Illustrations.** Illustration with embedded navigation features is now available for [Autophagy.]()\n\n**Thanks to our Contributors.**[David Stern]() is our external author. [Filippo Acconcia](), [Dorothy Bennett](), [Maria Marino](), [Emmanouil Metzakopian](), [Julia Skokowa](), and [Elie Traer]() are our external reviewers. ** \n**\n\n**Annotation Statistics.** Reactome comprises 12,505 human reactions organized into 2,272 pathways involving 11,009 proteins and modified forms of proteins encoded by 10,833 different human genes, 1,857 small molecules, and 196 drugs. These annotations are supported by 30.027 literature references. We have projected these reactions onto 81,631 orthologous proteins, creating 18,610 orthologous pathways in 15 non-human species. Version 69 has annotations for 1,612 protein variants (mutated proteins) and their post-translationally modified forms, derived from 305 proteins. These have been used to annotate 532 complexes and 968 disease-specific reactions organized into 478 pathways and subpathways, and tagged with 374 Disease Ontology terms.\n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and to access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz app]() for Cytoscape provides tools to find pathways and network patterns related to cancer and other types of diseases.\n\n**Documentation and Training**. Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project**. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information** : If you have a question to ask or would like to give us your feedback, please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/138-orcid-claim-your-works.json b/projects/website-angular/content-dist/about/news/138-orcid-claim-your-works.json new file mode 100644 index 00000000..b9897184 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/138-orcid-claim-your-works.json @@ -0,0 +1 @@ +{"title":"ORCID: Claim your works","category":"about","date":"2019-06-06T10:16:00-04:00","tags":"[\"about\", \"news\", \"138-orcid-claim-your-works\"]","body":"\n## ORCID: Claim your works \n\n![claim your reactome work into your orcid account image](/uploads/about/news/20190618_ORCID_claim.png)\n\nReactome is a curated database, it critically depends on the expertise of curators and domain experts as volunteer pathway authors and reviewers. Over [700 scientists]() have so far contributed to Reactome content. If you are one of them, we have great news for you: Your Reactome contribution can be included directly into your [ORCID]() profile. ORCID provides a persistent digital identifier that distinguishes you from every other researcher and, through integration in key research workflows such as manuscript and grant submission, supports automated linkages between you and your professional activities ensuring that your work is recognized.\n\nBecause we appreciate your work contribution either authoring or reviewing a pathway or reaction, we have now made it easy to claim your contribution in ORCID. Using this new feature that has been integrated into our website, contributors who have provided their ORCID ID can, by simply clicking a button, reference their work in their profile.\n\nFollow this [link]( \"Click for instructions on how to claim your work\") to learn more about how you can claim your work.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/141-reacfoam-genome-wide-pathway-overview-based-on-voronoi-tessellation.json b/projects/website-angular/content-dist/about/news/141-reacfoam-genome-wide-pathway-overview-based-on-voronoi-tessellation.json new file mode 100644 index 00000000..2148e4e4 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/141-reacfoam-genome-wide-pathway-overview-based-on-voronoi-tessellation.json @@ -0,0 +1 @@ +{"title":"ReacFoam: Genome-wide pathway overview based on Voronoi tessellation","category":"about","date":"2019-07-02T07:38:13-04:00","tags":"[\"about\", \"news\", \"141-reacfoam-genome-wide-pathway-overview-based-on-voronoi-tessellation\"]","body":"\n## ReacFoam: Genome-wide pathway overview based on Voronoi tessellation \n\n[![](/uploads/about/news/141-reacfoam-genome-wide-pathway-overview-based-on-voronoi-tessellation/voroni.png)]()\n\nAs part of our continuous effort to provide visually attractive and more user-friendly access to our biological pathways, we are pleased to announce our new high level pathways overview visualisation based on Voronoi tessellation.\n\nFollowing any [pathway analysis](), the [pathway overview]() provides a [new icon![](/uploads/about/news/141-reacfoam-genome-wide-pathway-overview-based-on-voronoi-tessellation/Screenshot_2019-07-02_at_124156.png)]() which leads to a comprehensive, highly visual, interactive overview of pathway analysis results. The functionality is available on both desktop and mobile platforms.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/142-version-70-released.json b/projects/website-angular/content-dist/about/news/142-version-70-released.json new file mode 100644 index 00000000..335a4dba --- /dev/null +++ b/projects/website-angular/content-dist/about/news/142-version-70-released.json @@ -0,0 +1 @@ +{"title":"Version 70 Released","category":"about","date":"2019-08-30T12:30:07-04:00","tags":"[\"about\", \"news\", \"142-version-70-released\"]","body":"\n## Version 70 Released \n\n![Innate Immune System](/uploads/about/news/Innate_Immune_System.png)\n\n**New and Updated Pathways.** In version 70, topics with new or revised pathways include Cellular response to stress ([Amino acids regulate mTORC1]()), Disease ([Evasion of oncogene induced senescence due to p16-INK4A defects](), [Evasion of oxidative stress induced senescence due to p16-INK4A defects](), [Defective intrinsic pathway for apoptosis due to p14ARF loss of function](), [Evasion of oncogene induced senescence due to p14ARF defects](), [Evasion of oxidative stress induced senescence due to p14ARF defects]()), Immune System ([Alpha-protein kinase 1 signaling pathway ]()and [FLT3 signaling]()), and Signal transduction ([NR1H2 and NR1H3-mediated signaling]()).\n\n**New and Updated Illustrations.** Topics with new or revised illustrations include [Metabolism of amino acids and derivatives]() and [Innate Immune System](). \n\n****Thanks to our Contributors.** **[Dorothy Bennett](), [Kendall Condon](), [Carolyn Cummins](), [Nicholas Hayward](), [Sunil Joshi](), [Vaishnavi Nathan](), [Joyce Repa](), [Helen Rizos](), [David Sabatini](), and [Feng Shao]() are our external reviewers.\n\n**Annotation Statistics.** Reactome comprises 12,608 human reactions organized into 2,282 pathways involving 11,040 proteins and modified forms of proteins encoded by 10,860 different human genes, 12,335 complexes, 1,856 small molecules, and 222 drugs. These annotations are supported by 30.398 literature references. We have projected these reactions onto 83,183 orthologous proteins, creating 18,679 orthologous pathways in 15 non-human species. Version 70 has annotations for 1,762 protein variants (mutated proteins) and their post-translationally modified forms, derived from 308 proteins. These have been used to annotate 536 complexes and 970 disease-specific reactions organized into 484 pathways and subpathways, and tagged with 387 Disease Ontology terms.\n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and to access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz app]() for Cytoscape provides tools to find pathways and network patterns related to cancer and other types of diseases.\n\n**Documentation and Training**. Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project**. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information** : If you have a question to ask or would like to give us your feedback, please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/144-new-reactome-publication-published-in-2020-nar-database-issue.json b/projects/website-angular/content-dist/about/news/144-new-reactome-publication-published-in-2020-nar-database-issue.json new file mode 100644 index 00000000..f5de57fb --- /dev/null +++ b/projects/website-angular/content-dist/about/news/144-new-reactome-publication-published-in-2020-nar-database-issue.json @@ -0,0 +1 @@ +{"title":"New Reactome Publication published in 2020 NAR Database Issue","category":"about","date":"2019-12-02T00:38:57-05:00","tags":"[\"about\", \"news\", \"144-new-reactome-publication-published-in-2020-nar-database-issue\"]","body":"\n## New Reactome Publication published in 2020 NAR Database Issue \n\n![reactome nar 2020](/uploads/about/news/reactome_nar_2020.jpeg)\n\nA new research article titled “[The reactome pathway knowledgebase]()” has been published in the forthcoming 2020 NAR Database Issue. The paper describes annotating the molecular mechanisms of drug action, facilitating community involvement in annotation, and improvements to the reaction and pathway visualization. More publications from the [Reactome Team]() can be found [here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/145-version-71-releases.json b/projects/website-angular/content-dist/about/news/145-version-71-releases.json new file mode 100644 index 00000000..ed4bed8b --- /dev/null +++ b/projects/website-angular/content-dist/about/news/145-version-71-releases.json @@ -0,0 +1 @@ +{"title":"Version 71 Released","category":"about","date":"2019-12-02T00:43:55-05:00","tags":"[\"about\", \"news\", \"145-version-71-releases\"]","body":"\n## Version 71 Released \n\n**![FA Metabolism](/uploads/about/news/FA_Metabolism.png)**\n\n**New and Updated Pathways.** In version 71, Topics with new or revised pathways include Autophagy ([Aggrephagy]()), Cell Cycle ([EML4 and NUDC in mitotic spindle formation]()), Cellular responses to external stimuli ([EIK2AK4 (GCN2) modifies gene expression in response to amino acid deficiency]() and [Response of EIF2AK1 (HRI) to heme deficiency]()), Disease ([Defective base excision repair associated with OGG1](), [HCMV infection](), [Infection with Mycobacterium tuberculosis](), and [Signaling by ERBB2 in Cancer]()), Generic transcription pathway ([Transcriptional regulation by VENTX]()), Metabolism ([Metabolism of porphyrins]()), and Signal Transduction ([Drug-mediated inhibition of ERBB2 signaling]()).\n\n**New and Updated Illustrations**. [Biosynthesis of specialized proresolving mediators (SPMs)](), [Fatty acid metabolism](), [Metabolism](), [Metabolism of lipids](), [Metabolism of vitamins and cofactors](), and [Phospholipid metabolism]() have new Illustrations with embedded navigation features. [Cellular responses to stress](), [Digestion and absorption](), and [Autophagy]() have revised Illustrations with embedded navigation features.\n\n****Thanks to our Contributors.** **[Ralf Stephan]() is our external author. [Susanne Bechstedt](), [Istvan Boldogh](), [Alain Bruhat](), [Patrizia Caposio](), [Jane-Jane Chen](), [Armin Deffur](), [Andrew Fry](), [Rama Krishna Kancha](), [Kellie Lucken](), [Emmanouil Metzakopian](), [Laura O'Regan](), [Daniel Streblow](), [Naidu M Vegi](), [Spiros Vlahopoulos](), and [Robert Wilkinson]() are our external reviewers.\n\n**Annotation Statistics.** Reactome comprises 12,608 human reactions organized into 2,282 pathways involving 11,053 proteins and modified forms of proteins encoded by 10,870 different human genes, 12,489 complexes, 1,863 small molecules, and 225 drugs. These annotations are supported by 30,721 literature references. We have projected these reactions onto 83,392 orthologous proteins, creating 18,697 orthologous pathways in 15 non-human species. Version 71 has annotations for 1,816 protein variants (mutated proteins) and their post-translationally modified forms, derived from 310 proteins, which have been used to annotate disease-specific reactions and pathways.\n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and to access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz app]() for Cytoscape provides tools to find pathways and network patterns related to cancer and other types of diseases.\n\n**Documentation and Training**. Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project**. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information** : If you have a question to ask or would like to give us your feedback, please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/146-new-paper-published-in-database-oxford.json b/projects/website-angular/content-dist/about/news/146-new-paper-published-in-database-oxford.json new file mode 100644 index 00000000..653ba471 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/146-new-paper-published-in-database-oxford.json @@ -0,0 +1 @@ +{"title":"New Paper published in Database (Oxford)","category":"about","date":"2019-12-18T23:36:50-05:00","tags":"[\"about\", \"news\", \"146-new-paper-published-in-database-oxford\"]","body":"\n## New Paper published in Database (Oxford) \n\n![Reactome ORCID](/uploads/about/news/Reactome-ORCID.png)\n\nA new Perspective/Opinion article titled “[Reactome and ORCID-fine-grained credit attribution for community curation]()” has been published in the Database (Oxford) journal. The paper describes how we are using ORCID identifiers to provide clear credit attribution for authors, curators and reviewers to support community engagement. More publications from the [Reactome Team]() can be found [here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/147-version-72-released.json b/projects/website-angular/content-dist/about/news/147-version-72-released.json new file mode 100644 index 00000000..f83d11f2 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/147-version-72-released.json @@ -0,0 +1 @@ +{"title":"Version 72 Released","category":"about","date":"2020-03-12T21:38:36-04:00","tags":"[\"about\", \"news\", \"147-version-72-released\"]","body":"\n## Version 72 Released \n\n![infectious events](/uploads/about/news/infectious_events.png)\n\n**New and Updated Pathways.** In version 72, topics with new or revised pathways include Autophagy ([Pexophagy]()), Cell Cycle ([Nuclear Envelope Reassembly]()), Developmental Biology ([EGR2- and SOX10-mediated initiation of Schwann cell myelination]()), Disease ([Signaling by ERBB2 in Cancer](), [Signaling by ERBB2 ECD Mutants](), [Signaling by ERBB2 TMD/JMD Mutants](), [Signaling by PDGFR in disease](), and [Leishmania infection]()), and Signal Transduction ([NGF-stimulated transcription]() and [Drug-mediated inhibition of ERBB2 signaling]()).\n\n**New and Updated Illustrations.** Illustrations with embedded navigation features have been added or revised for [Disease](), [Infectious disease](), and [Leishmania infection]() and [Developmental Biology](). New static illustrations are now available for [Regulation of commissural axon pathfinding by SLIT and ROBO](), [Signaling by ROBO receptors](), and [TCR signaling]().\n\n**Thanks to our Contributors.** [John Aletta](), [Ron Bose](), [Larry Gerace](), [David Gregory](), [Carman Ip](), [Rama Krishna Kancha](), [T]()[herese Kinsella](), Anagha Krishna, [Xiangguo Liu](), [Anne Martin](), [Emmanouil Metzakopian](), [Adam Miller](), [Eamon Mulvaney](), [Kirk Staschke](), and [Shun Yao]() are our external reviewers.\n\n**Annotation Statistics.** Reactome comprises 12,986 human reactions organized into 2,362 pathways involving 11,096 proteins and modified forms of proteins encoded by 10,908 different human genes, 12,728 complexes, 1,865 small molecules, and 237 drugs. These annotations are supported by 31,237 literature references. We have projected these reactions onto 83,698 orthologous proteins, creating 18,996 orthologous pathways in 15 non-human species. Version 72 has annotations for 1,890 protein variants (mutated proteins) and their post-translationally modified forms, derived from 315 proteins, which have been used to annotate disease-specific reactions and pathways.\n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and to access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz app]() for Cytoscape provides tools to find pathways and network patterns related to cancer and other types of diseases.\n\n**Documentation and Training**. Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project**. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information** : If you have a question to ask or would like to give us your feedback, please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/150-new-paper-published-in-elife.json b/projects/website-angular/content-dist/about/news/150-new-paper-published-in-elife.json new file mode 100644 index 00000000..d07cca10 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/150-new-paper-published-in-elife.json @@ -0,0 +1 @@ +{"title":"New Paper published in eLife","category":"about","date":"2020-04-06T12:48:52-04:00","tags":"[\"about\", \"news\", \"150-new-paper-published-in-elife\"]","body":"\n## New Paper published in eLife \n\n![wikidata reactome](/uploads/about/news/wikidata_reactome.jpg)\n\nA new research article entitled “[Science Forum: Wikidata as a knowledge graph for the life sciences]()” has been published in the [eLife]() journal. The paper describes the use of Wikidata as a platform for the integration of biological knowledge. Over 2,200 pathways from Reactome were integrated into the Wikidata repository. More publications from the [Reactome Team]() can be found [here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/151-new-package-facilitates-communication-between-reactome-services-and-data-with-python.json b/projects/website-angular/content-dist/about/news/151-new-package-facilitates-communication-between-reactome-services-and-data-with-python.json new file mode 100644 index 00000000..2aaaa854 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/151-new-package-facilitates-communication-between-reactome-services-and-data-with-python.json @@ -0,0 +1 @@ +{"title":"New reactome2py package links our web services and data with python.","category":"about","date":"2020-04-06T13:59:35-04:00","tags":"[\"about\", \"news\", \"151-new-package-facilitates-communication-between-reactome-services-and-data-with-python\"]","body":"\n## New reactome2py package links our web services and data with python. \n\n![reactome2py package](/uploads/about/news/reactome2py_package.jpeg)\n\nData science represents a new and evolving way of doing scientific research with critical elements including reproducibility, open access to data, methods and source code, and highly reusable and modular services on the web.\n\nGiven the popularity of the Python programming language among data scientists, we have created the [reactome2py package](), which facilitates communication between our tools and web services with Python. The reactome2py package consists of a library of helper functions that wrap calls to the Reactome RESTful API and a utility module that simplifies access to our open-data.\n\nThe [Pathway Analysis Service]() pathway over-representation and expression analysis as well as a species comparison tool. Further details regarding the AnalysisService API calls are available [here](). The [Content Service]() provides access to our data via an easy [API]() based on the Representational State Transfer (REST) protocol. Finally, Utility ([Utils]()) provides functions for fetching pathway, drug, and drug-target data, other annotations, mapping information, and overlay data from human networks. Further details regarding the Data model key classes are available [here](). Explore our tools and web services and learn how to include them in your applications at our [Developer's Zone]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/154-new-paper-published-in-autophagy.json b/projects/website-angular/content-dist/about/news/154-new-paper-published-in-autophagy.json new file mode 100644 index 00000000..8d8154be --- /dev/null +++ b/projects/website-angular/content-dist/about/news/154-new-paper-published-in-autophagy.json @@ -0,0 +1 @@ +{"title":"New Paper published in Autophagy","category":"about","date":"2020-06-11T15:40:50-04:00","tags":"[\"about\", \"news\", \"154-new-paper-published-in-autophagy\"]","body":"\n## New Paper published in Autophagy \n\n![Autophagy](/uploads/about/news/Autophagy.png)A new research article entitled “[Using Reactome to build an autophagy mechanism knowledgebase]()” has been published in the [Autophagy]() journal. The paper discusses the curation and annotation of the molecular mechanisms of autophagy. The autophagy pathway can be viewed [here](). More publications from the [Reactome Team]() can be found [here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/155-version-73-released.json b/projects/website-angular/content-dist/about/news/155-version-73-released.json new file mode 100644 index 00000000..b138a2b9 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/155-version-73-released.json @@ -0,0 +1 @@ +{"title":"Version 73 Released","category":"about","date":"2020-06-11T16:56:40-04:00","tags":"[\"about\", \"news\", \"155-version-73-released\"]","body":"\n## Version 73 Released \n\n![SARS-CoV-1](/uploads/about/news/SARS-CoV-1.png)\n\n**New Feature.** In response to the COVID-19 pandemic, Reactome is fast-tracking the annotation of Human Coronavirus infection pathways in collaboration with the [COVID-19 Disease Map]() group. V73 includes descriptions of the [SARS-CoV-1 Infection pathway]() as well as [Potential therapeutics for SARS](). In the coming months, we will use these descriptions as starting points to annotate the SARS-CoV-2 infection pathway and interactions with host proteins that affect the severity of COVID-19 disease.\n\n**New and Updated Pathways.** Other topics with new or revised pathways in V73 include Cell Cycle ([Inhibition of DNA recombination at telomeres](), [Telomere Maintenance]()), Disease ([Aberrant regulation of mitotic cell cycle due to RB1 defects](), [Defects of contact activation system (CAS) and kallikrein/kinin system (KKS)](), [Oncogenic MAPK signaling, ]()[Signaling by KIT in disease](), and Signal Transduction ([RAF/MAP kinase cascade](),[ RAS processing]()).\n\n**New and Updated Illustrations.** Illustrations with embedded navigation features have been added for[ Nervous system development](), [Defects in vitamin and cofactor metabolism](), [Diseases of Carbohydrate metabolism](), [Diseases of Metabolism](), and [SARS-CoV infections](). New static illustrations are now available for [Costimulation by the CD28 family](), [CD28 co-stimulation](), [Downstream TCR signaling](), [G2/M DNA damage checkpoint](), [G2/M DNA replication checkpoint](), [Generation of second messenger molecules](), [p53-Independent DNA Damage Response](), [Phosphorylation of CD3 and TCR zeta chains](), [SARS-CoV-1 Infection](), and [Translocation of ZAP-70 to Immunological synapse]().\n\n**Thanks to our Contributors.** [Marcio Luis Acencio](), [Frederick A Dick](), [Alfonso García-Valverde](), [Evripidis Gavathiotis](), [Makoto T Hayashi](),[ Alexander Mazein](), [Daniel Pilco-Janeta](), [Cesar Serrano](), [Brian Shoichet](), and [Bin Zhang]() are our external reviewers.\n\n**Annotation Statistics.** Reactome comprises 13,248 human reactions organized into 2,423 pathways involving 11,111 proteins and modified forms of proteins encoded by 10,923 different human genes, 12,728 complexes, 1,869 small molecules, and 369 drugs. These annotations are supported by 32,150 literature references. We have projected these reactions onto 81,835 orthologous proteins, creating 18,654 orthologous pathways in 15 non-human species. Version 73 has annotations for 2,620 protein variants (mutated proteins) and their post-translationally modified forms, derived from 327 proteins, which have been used to annotate disease-specific 1,297 reactions and 605 pathways.\n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and to access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz app]() for Cytoscape provides tools to find pathways and network patterns related to cancer and other types of diseases.\n\n**Documentation and Training**. Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project**. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information** : If you have a question to ask or would like to give us your feedback, please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/161-version-74-released.json b/projects/website-angular/content-dist/about/news/161-version-74-released.json new file mode 100644 index 00000000..efc3b9c6 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/161-version-74-released.json @@ -0,0 +1 @@ +{"title":"COVID-19: SARS-CoV-2 infection pathway Released","category":"about","date":"2020-09-21T16:18:18-04:00","tags":"[\"about\", \"news\", \"161-version-74-released\"]","body":"\n## COVID-19: SARS-CoV-2 infection pathway Released \n\n![SARS-CoV-2](/uploads/about/news/sars-cov-2-pwy-72.png)\n\n**New Feature. In response to the COVID-19 pandemic, Reactome is fast-tracking the annotation of Human Coronavirus infection pathways in collaboration with the COVID-19 Disease Map group.** Reactome release 74 features the [SARS-CoV-2 (COVID-19) infection pathway](). To generate this pathway, we started with a rough draft generated computationally via [our orthoinference process]() from the previously manually curated, peer-reviewed Reactome SARS-CoV-1 (Human SARS coronavirus) infection pathway. The draft SARS-CoV-2 (COVID-19) infection pathway events and entities were then reviewed by Reactome curators and curated using published SARS-CoV-2 experimental data. Before finalization, the resulting curated SARS-CoV-2 infection pathway was peer-reviewed by external experts. The current pathway consists of 101 reactions involving 489 molecular entities (279 proteins, 12 RNAs and 198 other), and is supported by citations to 227 publications. In future releases of Reactome, we will extend our annotation of the pathway, indicate drugs and other compounds that modulate steps in infection, and add molecular events that link infectious pathway steps to host immune processes and other aspects of human biology that determine responses to viral infection. This accelerated annotation project is supported by a recently-received supplement grant U41 HG003751-13S1 from the National Human Genome Research Institute.\n\n**New and Updated Pathways.** Other topics with new or revised pathways in release 74 include Disease ([Defective RIPK1-mediated regulated necrosis]()) and Programmed cell death ([RIPK1-mediated regulated necrosis]()).\n\n**New and Updated Illustrations.** Illustrations with embedded navigation features have been added or revised for [Diseases of metabolism](), [SARS-CoV infections](), [ABC transporter disorders](),[ Diseases associated with surfactant metabolism](), [Diseases of cellular response to stress](), [Diseases of DNA repair](), [Diseases of mitotic cell cycle](), [Diseases of neuronal system](), [Diseases of signal transduction by growth factor receptors and second messengers](), [Disorders of developmental biology](), [Disorders of transmembrane transporters](), [Signaling by TGF-beta receptor complex in cancer](), and [SLC transporter disorders](). New static illustrations are now available for [Complement cascade](), [Rho GTPase cycle](), [SARS-CoV-2 infection](), and [Toll-Like receptors cascades]().\n\n**Thanks to our Contributors.** Our external author is [Andrea Senff-Ribeiro]() and our external reviewers are [Marcio Luis Acencio, ]()[Najoua Lalaoui](), [James M Murphy]().\n\n**Annotation Statistics.** Reactome comprises 13,416 human reactions organized into 2,441 pathways involving 11,110 proteins and modified forms of proteins encoded by 10,922 different human genes, 12,976 complexes, 1,854 small molecules, and 428 drugs. These annotations are supported by 32,297 literature references. We have projected these reactions onto 79,190 orthologous proteins, creating 18,462 orthologous pathways in 15 non-human species. Version 74 has annotations for 2,624 protein variants (mutated proteins) and their post-translationally modified forms, derived from 328 proteins, which have been used to annotate disease-specificreactions and pathways.\n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and to access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz app]() for Cytoscape provides tools to find pathways and network patterns related to cancer and other types of diseases.\n\n**Documentation and Training**. Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project**. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information** : If you have a question to ask or would like to give us your feedback, please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/162-new-paper-published-in-molecular-cellular-proteomics.json b/projects/website-angular/content-dist/about/news/162-new-paper-published-in-molecular-cellular-proteomics.json new file mode 100644 index 00000000..89d9486c --- /dev/null +++ b/projects/website-angular/content-dist/about/news/162-new-paper-published-in-molecular-cellular-proteomics.json @@ -0,0 +1 @@ +{"title":"New Paper published in Molecular & Cellular Proteomics","category":"about","date":"2020-10-20T11:16:35-04:00","tags":"[\"about\", \"news\", \"162-new-paper-published-in-molecular-cellular-proteomics\"]","body":"\n## New Paper published in Molecular & Cellular Proteomics \n\n![ReactomeGSA](/uploads/about/news/ReactomeGSA.png)\n\nA new research article entitled “[ReactomeGSA - Efficient Multi-Omics Comparative Pathway Analysis]()” has been published in the [Molecular & Cellular Proteomics]() journal. The paper discusses the novel ReactomeGSA resource for comparative pathway analyses of multi-omics datasets using our existing web interface and a novel R Bioconductor package with explicit support for scRNA-seq data. The ReactomeGSA tools are described [here](). More publications from the [Reactome Team]() can be found [here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/163-version-75-released.json b/projects/website-angular/content-dist/about/news/163-version-75-released.json new file mode 100644 index 00000000..aa1021ae --- /dev/null +++ b/projects/website-angular/content-dist/about/news/163-version-75-released.json @@ -0,0 +1 @@ +{"title":"Version 75 Released","category":"about","date":"2020-12-02T13:58:30-05:00","tags":"[\"about\", \"news\", \"163-version-75-released\"]","body":"\n## Version 75 Released \n\n![FLT3 Signaling](/uploads/about/news/FLT3_Signaling.png)\n\n**New and Updated Pathways**. Topics with new or revised pathways in release 75 include Developmental biology ([Transcriptional regulation of testis differentiation]()), Disease ([Alternative lengthening of telomeres](), [Defective DNA double strand break response due to BARD1 loss of function](), [Defective DNA double strand break response due to BRCA1 loss of function](), [Signaling by FLT3 in disease]()), DNA Repair ([Recruitment and ATM-mediated phosphorylation of repair and signaling proteins at DNA double strand breaks]()), Immune system ([FLT3 signaling]()), and Signal transduction ([RHOBTB GTPase cycle]()).\n\n**New and Updated Illustrations.** Illustrations with embedded navigation features have been added or revised for [Developmental biology](), [Diseases associated with visual transduction](), [Diseases of DNA repair](),[ Diseases of hemostasis](), [Diseases of the immune system](), [Diseases of mitotic cell cycle](), [Diseases of signal transduction by growth factor receptors and second messengers](), [FLT3 signaling in disease](), [Hh mutants abrogate ligand secretion](), [PI3PK/AKT signaling in cancer](), [Selective autophagy](), [Signaling by ERBB2 in cancer](), [Signaling by PDGFR in disease](), [Signaling by WNT in cancer](), and [Uptake and actions of bacterial toxins]().\n\n**Thanks to our Contributors.** Our external authors are [Richard J Baer]() and [Francisco Rivero Crespo](). Our external reviewers are [Richard J Baer](), [Kenya Imaimatsu](), [Yoshiakira Kanai](), [Julhash Kazi](), [Alan Meeker](), [Roger Reddel](), and [Francisco Rivero Crespo]().\n\n**Annotation Statistics.** Reactome comprises 13,534 human reactions organized into 2,477 pathways involving 11,118 proteins and modified forms of proteins encoded by 10,929 different human genes, 13,210 complexes, 1,854 small molecules, and 414 drugs. These annotations are supported by 32,493 literature references. We have projected these reactions onto 79,333 orthologous proteins, creating 18,510 orthologous pathways in 15 non-human species. Version 75 has annotations for 2,620 protein variants (mutated proteins) and their post-translationally modified forms, derived from 327 proteins, which have been used to annotate disease-specific 1,297 reactions and 605 pathways.\n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and to access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz app]() for Cytoscape provides tools to find pathways and network patterns related to cancer and other types of diseases.\n\n**Documentation and Training.** Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project.** Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information:** If you have a question to ask or would like to give us your feedback, please contact our helpdesk.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/164-version-76-released.json b/projects/website-angular/content-dist/about/news/164-version-76-released.json new file mode 100644 index 00000000..58df13a5 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/164-version-76-released.json @@ -0,0 +1 @@ +{"title":"Version 76 Released","category":"about","date":"2021-03-21T23:18:41-04:00","tags":"[\"about\", \"news\", \"164-version-76-released\"]","body":"\n## Version 76 Released \n\n![Sensory processing of sound](/uploads/about/news/Sensory_processing_of_sound.png)\n\nNe**w and Updated Topics and Pathways.** Topics with new or revised pathways in V76 include Cellular responses to external stimuli ([Cytoprotection by HMOX1]() and [Heme signaling]()), Disease ([Defective pyroptosis]()), Gene Expression ([tRNA-derived small RNA (tsRNA) biogenesis]()), Immune system ([DDX58/IFIH1-mediated induction of interferon-alpha/beta]() and [Signaling by CSF3 (G-CSF)]()), Programmed cell death ([Pyroptosis]()), Sensory Perception ([Sensory processing of sound]()), and Signal transduction ([Miro GTPase Cycle](), [RHO GTPase Cycle](), and [RHOH GTPase Cycle]()).\n\n**New and Updated Illustrations.** Illustrations with embedded navigation features have been added or revised for [Cellular responses to stress](), [Cytokine Signaling in Immune system](), [Diseases of Metabolism](), [Metabolic disorders of biological oxidations enzymes](), [Sensory Perception](), and [Sensory processing of sound]().\n\n**Thanks to our Contributors.** Our external reviewers are [Katia Basso](), [Ines Castro](), [Peter Dallos](), [Anindya Dutta](), [Philippe Fort](), [David N. Furness](), [Thirumala-Devi Kanneganti](), [Carlos Henrique Inacio Ramos](), [Michael Schrader](), [Hans-Uwe Simon](), [Julia Somers](), [Zhangli Su](), [Ivo P. Touw](), [Briana Wilson](), and [Zhibin Zhang]().\n\n**Annotation Statistics.** Reactome comprises 13,732 human reactions organized into 2,516 pathways involving 11,362 proteins and modified forms of proteins encoded by 11,073 different human genes, 13,409 complexes, 1,856 small molecules, and 415 drugs. These annotations are supported by 33,453 literature references. We have projected these reactions onto 74,384 orthologous proteins, creating 18,051 orthologous pathways in 15 non-human species. Version 76 has annotations for 2,949 protein variants (mutated proteins) and their post-translationally modified forms, derived from 337 proteins, which have been used to annotate disease-specific 1,550 reactions and 653 pathways.\n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and to access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz app]() for Cytoscape and the [ReactomeGSA]() package provides tools for multi-omics data analysis.\n\n**Documentation and Training.** Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project.** Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information:** If you have a question to ask or would like to give us your feedback, please contact our helpdesk.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/165-the-reactome-idg-portal-is-released.json b/projects/website-angular/content-dist/about/news/165-the-reactome-idg-portal-is-released.json new file mode 100644 index 00000000..30132c1e --- /dev/null +++ b/projects/website-angular/content-dist/about/news/165-the-reactome-idg-portal-is-released.json @@ -0,0 +1 @@ +{"title":"The Reactome IDG Portal is released","category":"about","date":"2021-06-07T13:47:37-04:00","tags":"[\"about\", \"news\", \"165-the-reactome-idg-portal-is-released\"]","body":"\n## The Reactome IDG Portal is released \n\n![IDG Reactome](/uploads/about/news/IDG_Reactome.jpeg)\n\nAs part of the [Cutting Edge Informatics Tools (CEIT)]() for the [Illuminating the Druggable (IDG)]() Program, the Reactome group has built a new tool, the [Reactome IDG Portal](), that utilizes the [Reactome knowledgebase]() to systematically illuminate interactions of dark proteins with other proteins and biological entities, allowing evaluation of these understudied proteins via their localizations and potential interactions, and facilitating the design of experiments to test their functions. The portal enables users to:\n\n * Search any gene and view its location in Reactome’s pathways based on manual annotation or interactions via one-hop pairwise relationships. \n * Convert biochemical reaction-based diagrams into simple pairwise networks.\n * View scored interacting pathways based on functional interactions predicted from a random forest model trained with 106 features. \n * Construct new overlays and visualizations for protein-protein pairwise relationships or drug-target interactions.\n * Use an extended diagram viewer to visualize protein knowledge levels, and overlay multiple tissue-specific expression values from 19 data sources from [Target Central Resource Database (TCRD)]().\n\n[Reactome]() is a collaboration between groups at the Ontario Institute for Cancer Research, New York University Langone Medical Center, Oregon Health and Science University, and The European Bioinformatics Institute. Reactome data and software are distributed under the terms of the Creative Commons Attribution 4.0 License. A full description of the new and updated content is available on the Reactome website. Follow us on Twitter: [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more.\n\nThe [Illuminating the Druggable Genome (IDG) Program](), launched by the [National Institutes of Health (NIH) Common Fund](), is a multidisciplinary project to improve the scientific understanding of understudied members of three key protein families: non-olfactory G-protein-coupled receptors (GPCRs), ion channels and protein kinases. The overall goal of the IDG Program is to catalyze research in areas of biology that are currently understudied but that have high potential to impact human health. Follow us on Twitter: [@DruggableGenome]() to receive updates about the program.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/166-version-77-released.json b/projects/website-angular/content-dist/about/news/166-version-77-released.json new file mode 100644 index 00000000..f9cb199f --- /dev/null +++ b/projects/website-angular/content-dist/about/news/166-version-77-released.json @@ -0,0 +1 @@ +{"title":"Version 77 Released","category":"about","date":"2021-06-09T15:53:12-04:00","tags":"[\"about\", \"news\", \"166-version-77-released\"]","body":"\n## Version 77 Released \n\n![cellular stress 72](/uploads/about/news/cellular_stress_72.jpeg)\n\n**New and Updated Topics and Pathways.** Topics with new or revised pathways in V77 include Disease ([Defective HDR through Homologous Recombination (HRR) Due to PALB2 Loss of Function](), [Defective pyroptosis](), [Loss of Function of TP53 in Cancer](), [Maturation of nucleoprotein](), and [Signaling by ALK in cancer]()), DNA repair ([Homologous DNA Pairing and Strand Exchange]()), Programmed Cell Death ([Pyroptosis]()), and Signal transduction ([Fc epsilon receptor (FCERI) signaling](), [RHOD GTPase Cycle](), [RHOF GTPase Cycle](), [RHOU GTPase Cycle](), [RHOV GTPase Cycle](), and [Signaling by ALK]()).\n\n**New and Updated Illustrations.** Illustrations with embedded navigation features have been added or revised for [Cellular response to chemical stress](), [Cellular response to starvation](), [Cellular responses to stress](), [Diseases of glycosylation](), [Diseases of Signal Transduction by growth factor receptors and second messengers](), [HIV Infection](), [Metabolism of proteins](), [Oncogenic MAPK signaling](), [Regulated Necrosis](), [Signaling by ALK in Cancer](), [Signaling by FGFR in Disease](), [Signaling by KIT in Disease](), [Signaling by receptor tyrosine kinases](), and [Signaling by Rho GTPases]().\n\n**Thanks to our Contributors.** Our external reviewers are [Marcio Luis Acencio](), [Mariano Bisbal](), [Giorgio Inghirami](), [Anna Niarakis](), [Helmut Pospiech](), [Kazuyasu Sakaguchi](), [Mikhail V Shepelev](), [Feng Shao](), and [Robert Winqvist]().\n\n**Annotation Statistics.** Reactome comprises 13,827 human reactions organized into 2,536 pathways involving 11,374 proteins and modified forms of proteins encoded by 11,084 different human genes, 13,662 complexes, 1,857 small molecules, and 432 drugs. These annotations are supported by 33,752 literature references. We have projected these reactions onto 78,539 orthologous proteins, creating 18,659 orthologous pathways in 15 non-human species. Version 77 has annotations for 4,464 protein variants (mutated proteins) and their post-translationally modified forms, derived from 347 proteins, which have been used to annotate disease-specific reactions and pathways.\n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and to access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeGSA]() package provides tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\n**Documentation and Training.** Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project.** Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information:** If you have a question to ask or would like to give us your feedback, please contact our helpdesk.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/167-reactome-multi-omics-pathway-analysis-webinar-reaches-record-attendance.json b/projects/website-angular/content-dist/about/news/167-reactome-multi-omics-pathway-analysis-webinar-reaches-record-attendance.json new file mode 100644 index 00000000..55220bf4 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/167-reactome-multi-omics-pathway-analysis-webinar-reaches-record-attendance.json @@ -0,0 +1 @@ +{"title":"Reactome Multi-Omics Pathway Analysis webinar reaches record attendance","category":"about","date":"2021-06-21T12:32:18-04:00","tags":"[\"about\", \"news\", \"167-reactome-multi-omics-pathway-analysis-webinar-reaches-record-attendance\"]","body":"\n## Reactome Multi-Omics Pathway Analysis webinar reaches record attendance \n\n![Reactome GSA](/uploads/about/news/Reactome_GSA.png)On June 2, 2021, Dr. Johannes Griss presented \"[A guide to multiomics pathway analysis]()\" to a record audience of 572 participants as part of the [EMBL-EBI webinar series](). The [seminar recording]() and [training materials](), which are now available online, provides insight into performing comparative multi-omics pathway analyses using the ReactomeGSA platform. We want to take this opportunity to thank all those that took part in the training webinar. If you are interested in learning more about Reactome or if you have any additional questions, please [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/169-version-78-released.json b/projects/website-angular/content-dist/about/news/169-version-78-released.json new file mode 100644 index 00000000..9724c162 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/169-version-78-released.json @@ -0,0 +1 @@ +{"title":"Version 78 Released","category":"about","date":"2021-10-10T23:10:15-04:00","tags":"[\"about\", \"news\", \"169-version-78-released\"]","body":"\n## Version 78 Released \n\n![notch1 cancer](/uploads/about/news/notch1_cancer.png)\n\n**New and Updated Topics and Pathways.** Topics with new or revised pathways in V78 include Disease ([Defective HDR through homologous recombination (HRR) due to BRCA1 loss of function]() and [Defective HDR through homologous recombination (HRR) due to PALB2 loss of function]()), DNA repair ([Alkylating DNA damage induced by chemotherapeutic drugs](), [Drug-induced formation of DNA interstrand crosslinks](), and [Reversible DNA damage induced by alkylating chemotherapeutic drugs]()), DNA Replication ([Assembly of the ORC complex at the origin of replication]()), Sensory Perception ([Olfactory signaling]() and [Sensory perception of taste]()), and Signal transduction ([CDC42 GTPase Cycle](), [Drug-mediated inhibition of MET activation](), [Met Receptor Activation](), [RHO GTPases regulate CFTR trafficking](), [RHOJ GTPase cycle](), [RHOQ GTPase cycle](), and [TGF-beta receptor signaling activates SMADs]()).\n\n**New and Updated Illustrations.** Illustrations with embedded navigation features have been added or revised for [Defective intrinsic pathway to apoptosis](), [Defects in biotin (Btn) metabolism](), [Defects in cobalamin (B12) metabolism](), [Defects of contact activation system (CAS) and kallikrein/kinin system (KKS)](), [Diseases associated with O-glycosylation of proteins](), [Diseases associated with N-glycosylation of proteins](), [Diseases associated with the TLR signaling cascade](), [Diseases of base excision repair](), [Diseases of programmed cell death](), [DNA replication](), [Loss of function of SMAD2/3 in cancer](), [Mucopolysaccharidoses](), [Pentose phosphate pathway disease](), [Sensory perception](), [Signaling by NOTCH1 in cancer](), and [Signaling by Rho GTPases, Miro GTPases and RHOBTB3]().\n\n**Thanks to our Contributors.** Our external authors are [Jelena Kusic-Tisma](), [Sisira Kadambat Nair](). Our external reviewers are [Kaja Blagotinšek Cokan](), [Maitreyi E Das](), [Peihua Jiang](), [Jean-Yves Masson](), [Larissa Milano](), [Gemma Montalban](), [Sisira Kadambat Nair](), and [Francesco Raimondi]().\n\n**Annotation Statistics.** Reactome comprises 13,890 human reactions organized into 2,546 pathways involving 10,918 proteins and modified forms of proteins encoded by 10,720 different human genes, 13,804 complexes, 1,940 small molecules, and 507 drugs. These annotations are supported by 34,025 literature references. We have projected these reactions onto 77,335 orthologous proteins, creating 18,698 orthologous pathways in 15 non-human species. Version 78 has annotations for 4,603 protein variants (mutated proteins) and their post-translationally modified forms, derived from 352 proteins, which have been used to annotate disease-specific 1,544 reactions and 673 pathways.\n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeGSA]() package provides tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\n**Documentation and Training.** Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project.** Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information:** If you have a question to ask or would like to give us your feedback, please contact our helpdesk.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/172-we-want-to-hear-your-success-story.json b/projects/website-angular/content-dist/about/news/172-we-want-to-hear-your-success-story.json new file mode 100644 index 00000000..4ab561ee --- /dev/null +++ b/projects/website-angular/content-dist/about/news/172-we-want-to-hear-your-success-story.json @@ -0,0 +1 @@ +{"title":"We want to hear your Success Story!","category":"about","date":"2021-11-01T13:25:15-04:00","tags":"[\"about\", \"news\", \"172-we-want-to-hear-your-success-story\"]","body":"\n## We want to hear your Success Story! \n\n![SSotM Transp BG](/uploads/about/news/SSotM_Transp_BG.png)Our user community is built on success stories! There are thousands of you around the world and many of you have created amazing experiments, tools and resources using Reactome. We're always looking for ways to share interesting discoveries made with Reactome, and have decided to showcase projects on our website to inspire others to create new stories. If you have a novel success story or use case you'd like to share, we would love to hear from you. \n\nTo share your use case or success story, please fill in the [success story form]() or email us at [help@reactome.org]().\n\n**What is required?**\n\nThere is no specific experiment, project or resource that we are looking for. We are mostly interested in hearing from you if you are willing to share what you have learned or what has worked well.\n\nSome potential stories............\n\n * describe how Reactome data or software was integrated into your data resource or software tool? \n * tell of how using Reactome helped you or your group to make a valuable discovery about your experiment?\n\n**Where will my story be shared?**\n\nYour story will be reviewed by members of the Reactome team and may be shared on reactome.org. This will essentially be a post written by you and one of our team members. Your story will also be shared on Twitter.\n\n**What will be the process?**\n\nFilling out this [form]() will simply indicate your interest in being featured on Reactome. If your submission is selected, we'll then email you for more detailed information about your success story and experiences. We will publish a novel success story every month. Every year, one entry from the \"Success Story of the Month\" will be selected to receive one $100 gift card redeemable through Amazon or another online vendor.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/174-version-79-released.json b/projects/website-angular/content-dist/about/news/174-version-79-released.json new file mode 100644 index 00000000..4ef207c6 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/174-version-79-released.json @@ -0,0 +1 @@ +{"title":"Version 79 Released","category":"about","date":"2021-12-13T01:01:33-05:00","tags":"[\"about\", \"news\", \"174-version-79-released\"]","body":"\n## Version 79 Released \n\n![V79](/uploads/about/news/V79.png)\n\n**New and Updated Topics and Pathways.** In V79 we have introduced the new topic Drug Absorption, Distribution, Metabolism and Excretion in which we cover both pharmacokinetics and pharmacodynamics of [Aspirin](), [Azathioprine](), and [Paracetamol](). Topics with new or revised pathways in this release include Cell Cycle ([Cyclin D associated events in G1]() and [Drug-mediated inhibition of CDK4/CDK6 activity]()), DNA Replication ([Assembly of the pre-replicative complex]()), Immune System ([Interferon alpha/beta signaling]()), Metabolism ([Cholesterol biosynthesis]() and [Choline catabolism]()), and Sensory Perception ([Expression and translocation of Olfactory Receptors]()).\n\n**New and Updated Illustrations.** Illustrations with embedded navigation features have been added or revised for [Diseases associated with glycosaminoglycan metabolism](), [Diseases associated with glycosylation precursor biosynthesis](),[Diseases associated with N-glycosylation of proteins](), [Diseases of Telomere Maintenance](), [DNA Replication](), [Drug Absorption, Distribution, Metabolism, and Excretion (ADME)](), [Drug resistance of ALK mutants](), [Drug resistance of FLT3 mutants](), [Drug resistance of KIT mutants](), [Drug resistance of PDGFR mutants](), [Metabolism](), [Signaling by AMER1 mutants](), [Signaling by APC mutants](), [Signaling by AXIN mutants](), [Signaling by CTNNB1 phospho-site mutants]().\n\n**Thanks to our Contributors.** Our external authors are [Jelena Kusic-Tisma]() and [Damjana Rozman](). Our external reviewers are [Andrew J Brown](), [Rachel Huddart](), [Anne Morgat](), [Sisira Kadambat Nair](), [Alexander F Palazzo](), [Francesco Raimondi](), [Qingtang Shen]().\n\n**Annotation Statistics.** Reactome comprises 13,960 human reactions organized into 2,553 pathways involving 11,270 proteins and modified forms of proteins encoded by 11,071 different human genes, 13,853 complexes, 1,987 small molecules, and 527 drugs. These annotations are supported by 34,252 literature references. We have projected these reactions onto 77,418 orthologous proteins, creating 19,597 orthologous pathways in 15 non-human species. Version 79 has annotations for 5,064 protein variants (mutated proteins) and their post-translationally modified forms, derived from 347 proteins, which have been used to annotate disease-specific 1,540 reactions and 674 pathways.\n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeGSA]() package provides tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\n**Documentation and Training.** Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project.** Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information:** If you have a question to ask or would like to give us your feedback, please contact our helpdesk.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/175-version-80-released.json b/projects/website-angular/content-dist/about/news/175-version-80-released.json new file mode 100644 index 00000000..e7a40f5c --- /dev/null +++ b/projects/website-angular/content-dist/about/news/175-version-80-released.json @@ -0,0 +1 @@ +{"title":"Version 80 Released","category":"about","date":"2022-04-05T13:59:24-04:00","tags":"[\"about\", \"news\", \"175-version-80-released\"]","body":"\n## Version 80 Released \n\n![R HSA 3229121](/uploads/about/news/R-HSA-3229121.png)\n\n**New and Updated Topics and Pathways.** In V80, Topics with new or revised pathways include Cellular responses to stimuli ([Cellular response to chemical stress](), [Cytoprotection by HMOX1](), [KEAP1-NFE2L2 pathway]()), Disease ([Defective HDR through Homologous Recombination (HRR) Due to BRCA2 Loss of Function](), [Diseases of nucleotide metabolism](), and [SARS-CoV-2-host interactions]()), DNA repair ([Presynaptic phase of homologous DNA pairing and strand exchange]()), Drug ADME ([Atorvastatin ADME]()), Metabolism ([Cobalamin (Cbl, vitamin B12) transport and metabolism]()), and Metabolism of Proteins ([Neddylation]()).\n\n**New and Updated Illustrations.** [Cellular response to chemical stress](), [Defects in cobalamin (B12) metabolism](), [Diseases of Metabolism](), [Diseases of Mismatch Repair (MMR)](), [Diseases of nucleotide metabolism](), [Drug Absorption, Distribution, Metabolism and Excretion (ADME)](), [Glycogen storage diseases](), [RAS GTPase cycle mutants](), and [Signaling by MRAS-complex mutants]() have a new or revised Illustration with embedded navigation features.\n\n**Thanks to our Contributors.** [Antonio Cuadrado](), [Wolf-Dietrich Heyer](), [David P Hill](), [Rachel Huddart](), [Hang Phuong Le](), [Jie Liu](), [Francesco Messina](), and [Julia Somers]() are our external reviewers.\n\n**Annotation Statistics.** Reactome comprises 14,108 human reactions organized into 2,580 pathways involving 11,285 proteins and modified forms of proteins encoded by 11,084 different human genes, 13,869 complexes, 1,987 small molecules, and 532 drugs. These annotations are supported by 34,703 literature references. We have projected these reactions onto 77,392 orthologous proteins, creating 18,830 orthologous pathways in 15 non-human species. Version 80 has annotations for 5,422 protein variants (mutated proteins) and their post-translationally modified forms, derived from 352 proteins, which have been used to annotate disease-specific 1,601 reactions and 695 pathways.\n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeGSA]() package provides tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\n**Documentation and Training.** Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project.** Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information:** If you have a question to ask or would like to give us your feedback, please contact our helpdesk.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/176-version-82-released.json b/projects/website-angular/content-dist/about/news/176-version-82-released.json new file mode 100644 index 00000000..4ab2bc07 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/176-version-82-released.json @@ -0,0 +1 @@ +{"title":"Version 82 Released","category":"about","date":"2022-09-15T14:28:48-04:00","tags":"[\"about\", \"news\", \"176-version-82-released\"]","body":"\n## Version 82 Released \n\n[SARS-CoV-2 Infection]()\n\n![SARS COV 2 Infection](/uploads/about/news/SARS-COV-2_Infection.png)\n\n**New and Updated Topics and Pathways.** In V82, Topics with new or revised pathways include Developmental Biology ([Epithelial-Mesenchymal Transition during gastrulation]() and [Germ layer formation at gastrulation]()), Disease-SARS-CoV-1 Infection ([SARS-CoV-1-host interactions]()), Disease-SARS-CoV-2 Infection ([Induction of Cell-Cell Fusion](), [Maturation of nucleoprotein](), [Maturation of protein E](), [Maturation of protein M](), [Maturation of Spike protein]() and [Translation of Accessory Proteins](), Gene expression ([Transcriptional Regulation by NPAS4]()), Metabolism ([HS-GAG degradation](), [Keratan sulfate degradation](), and [Transport and synthesis of PAPS]()), and Signal Transduction ([Regulation of TNFR1 signaling]() and [TNF signaling]()). In continuing our collaborative drug annotation work with Caroline Thorn and [PharmGKB](), we have added the pathways [Prednisone ADME]() and [Ribavirin ADME]() under the topic of Drug Absorption, Distribution, Metabolism, and Excretion (ADME) pathways. \n\n**New and Updated Illustrations.** [Drug Absorption, Distribution, Metabolism and Excretion (ADME)](), [Gastrulation](), [SARS-CoV-2 infection](), [SUMOylation](), and [SUMO E3 ligases SUMOylate target proteins]() have a new or revised Illustration with embedded navigation features. The updated SARS-CoV-2 illustration featured above highlights the recent partitioning of the pathway into early and late subpathways based on our growing understanding of the life cycle of this virus.\n\n**Thanks to our Contributors.** [David Hill](), [Yingxi Lin](), [Rainer de Martin](), [Caroline Thorn](), and [Hailin Tu]() are our external reviewers.\n\n**Annotation Statistics.** Reactome comprises 14398 human reactions organized into 2601 pathways involving 11393 proteins and modified forms of proteins encoded by 11097 different human genes, 14084 complexes, 1998 small molecules, and 1035 drugs. These annotations are supported by 35965 literature references. We have projected these reactions onto 83288 orthologous proteins, creating 19385 orthologous pathways in 15 non-human species. Version 82 has annotations for 4977 protein variants (mutated proteins) and their post-translationally modified forms, derived from 352 proteins, which have contributed to the annotation of 1659 disease-specific reactions and 704 pathways.\n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and Services. The [ReactomeFIViz]() app and [ReactomeGSA]() package provide tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\n**Documentation and Training.** Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]()..\n\n**About the Reactome Project.** Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The EMBL - European Bioinformatics Institute. Reactome is an [ELIXIR Core Data Resource](). Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence applies to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information:** If you have a question, want to provide feedback, or are interested in collaborating with us to annotate a topic, please contact us at [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/177-new-paper-pulished-in-database-oxford.json b/projects/website-angular/content-dist/about/news/177-new-paper-pulished-in-database-oxford.json new file mode 100644 index 00000000..43a7bcd9 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/177-new-paper-pulished-in-database-oxford.json @@ -0,0 +1 @@ +{"title":"New Paper pulished in Database (Oxford)","category":"about","date":"2022-06-16T13:28:48-04:00","tags":"[\"about\", \"news\", \"177-new-paper-pulished-in-database-oxford\"]","body":"\n## New Paper pulished in Database (Oxford) \n\n![baac009f1](/uploads/about/news/baac009f1.jpeg)\n\nA new research article entitled “[Evaluating the predictive accuracy of curated biological pathways in a public knowledgebase]()” has been published in the [Database (Oxford)]() journal. The paper describes the utility of Reactome pathways for predicting functional consequences of genetic perturbations. Predictions of perturbation effects based on Reactome pathways were compared against published empirical observations. More publications from the [Reactome Team]() can be found [here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/178-version-81-released.json b/projects/website-angular/content-dist/about/news/178-version-81-released.json new file mode 100644 index 00000000..fd32ecce --- /dev/null +++ b/projects/website-angular/content-dist/about/news/178-version-81-released.json @@ -0,0 +1 @@ +{"title":"Version 81 Released","category":"about","date":"2022-06-14T13:25:02-04:00","tags":"[\"about\", \"news\", \"178-version-81-released\"]","body":"\n## Version 81 Released \n\n![Gastrulation](/uploads/about/news/Gastrulation.png)\n\n**New and Updated Topics and Pathways.** In V81, Topics with new or revised pathways include Development ([Germ layer formation at gastrulation]()), Immune system ([TAK1-dependent IKK and NF-kB activation]()), and Signal Transduction ([Transcriptional activity of SMAD2/SMAD3:SMAD4 heterotrimer]()). The SARS-CoV-2 life cycle has been updated to reflect our growing understanding of the life cycle. Viral events have partitioned into early and late subpathways. Early events begin with viral entry and carry through to initial gene expression; late events include the massive organelle reorganizations and viral release as host cells transition to viral shedding factories. SARS-CoV-2 annotation now includes 224 events; with this release 61 of those events have been updated with experimental support from the body of COVID-19 literature that has emerged since March 2020. Additionally, in collaboration with Rachel Huddart with [PharmGKB](), we have added 101 drug interactions associated with 63 pathways in this release bringing the total number of drugs represented in Reactome to 1022.\n\n**New and Updated Illustrations.** [Developmental Biology](), [Gastrulation](), [Nucleotide catabolism defects](), and [Nucleotide salvage defects]() have a new or revised Illustration with embedded navigation Features.\n\n**Thanks to our Contributors.** [Osvaldo Contreras](), [Rainer de Martin](), [Rachel Huddart](), [Naz Salehin](), and [Patrick P L Tam]() are our external reviewers.\n\n**Annotation Statistics.** Reactome comprises 14,246 human reactions organized into 2,585 pathways involving 11,291 proteins and modified forms of proteins encoded by 11,088 different human genes, 13,984 complexes, 1,986 small molecules, and 1,022 drugs. These annotations are supported by 35,629 literature references. We have projected these reactions onto 83,266 orthologous proteins, creating 19,328 orthologous pathways in 15 non-human species. Version 81 has annotations for 5,422 protein variants (mutated proteins) and their post-translationally modified forms, derived from 352 proteins, which have been used to annotate disease-specific 1,609 reactions and 697 pathways.\n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz]() app and [ReactomeGSA]() package provides tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\n**Documentation and Training.** Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project.** Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The EMBL - European Bioinformatics Institute. Reactome is an [ELIXIR Core Data Resource](). Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence applies to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information:** If you have a question, want to provide feedback, or are interested in collaborating with us to annotate a topic, please contact us at [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/179-collaboration-with-pharmgkb.json b/projects/website-angular/content-dist/about/news/179-collaboration-with-pharmgkb.json new file mode 100644 index 00000000..c7e15e45 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/179-collaboration-with-pharmgkb.json @@ -0,0 +1 @@ +{"title":"Collaboration with PharmGKB","category":"about","date":"2022-09-28T11:02:07-04:00","tags":"[\"about\", \"news\", \"179-collaboration-with-pharmgkb\"]","body":"\n## Collaboration with PharmGKB \n\n![Drug ADME](/uploads/about/news/Drug_ADME.png)\n\nReactome is pleased to announce a partnership with PharmGKB to curate pharmacokinetic / Drug ADME (absorption distribution metabolism excretion) pathways. Sharing knowledge and distributing curation effort will increase the efficiency and consistency with which both resources are able to integrate pathway data. The cross-references between co-curated pathways in Reactome and PharmGKB will support seamless navigation between the two resources enabling users to understand, visualize, and analyze their data in contexts that are best suited to their research interests. The collaborative pathways released in Reactome Version 82 are [Prednisone ADME]() (found [here]() at PharmGKB), and [Ribavirin ADME]() (found [here]() at PharmGKB).\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/183-reactome-research-spotlight.json b/projects/website-angular/content-dist/about/news/183-reactome-research-spotlight.json new file mode 100644 index 00000000..f6ef9776 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/183-reactome-research-spotlight.json @@ -0,0 +1 @@ +{"title":"Reactome Research Spotlight","category":"about","date":"2022-11-10T12:22:32-05:00","tags":"[\"about\", \"news\", \"183-reactome-research-spotlight\"]","body":"\n## Reactome Research Spotlight \n\nIntroducing the Reactome Research Spotlight!\n\nIn October 2022, Reactome introduced a new feature, the Reactome Research Spotlight. This monthly feature will highlight a recent standout publication that makes use of Reactome data or analysis tools in its research.\n\nIn our first spotlight, we feature the paper “[**Post-infusion CAR TReg cells identify patients resistant to CD19-CAR therapy**]()” by Good et al, published in September 2022 in Nature Medicine. This paper identifies expansion of regulatory T cells as a biomarker of resistance and toxicity after CD19-CAR therapy in patients with large B cell lymphoma. Differential gene expression and Reactome pathway enrichment analysis identified TReg development as one of the top enriched pathways in the TReg CD4+ CD57-Helios+ cell populations associated with post-therapy progression and decreased neurotoxicity.![Spotlight news image](/uploads/about/news/Spotlight_news_image.png)Do you use Reactome data or tools in your research? Email us at [help@reactome.org]() to have your work highlighted in an upcoming Spotlight feature.\n\nFollow us on Twitter! @reactome to stay up to date with new and updated pathways, feature updates and more.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/184-version-83-released.json b/projects/website-angular/content-dist/about/news/184-version-83-released.json new file mode 100644 index 00000000..1671cf20 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/184-version-83-released.json @@ -0,0 +1 @@ +{"title":"Version 83 Released","category":"about","date":"2022-11-30T11:53:24-05:00","tags":"[\"about\", \"news\", \"184-version-83-released\"]","body":"\n## Version 83 Released \n\n[Cytokine Signaling in Immune System]()\n\n![R HSA 1280215](/uploads/about/news/R-HSA-1280215.png)\n\nNew and Updated Topics and Pathways. In V83, Topics with new or revised pathways include Developmental Biology ([Formation of axial mesoderm](), [Formation of lateral plate mesoderm](), [Formation of paraxial mesoderm]()), Immune System ([Signaling by CSF1 (M-CSF) in myeloid cells]()), Metabolism ([Gluconeogenesis]()), Metabolism of proteins ([Insulin processing]()), Metabolism of RNA ([mRNA Splicing - Major Pathway]()), Programmed Cell Death ([Regulation of necroptotic cell death]()), Signal Transduction ([Regulation of TNFR1 signaling](), [TNFR1-induced NFkappaB signaling pathway](), and [TNFR1-induced proapoptotic signaling]()), and Transport of small molecules ([Zinc efflux and compartmentalization by the SLC30 family]()). In continuing our collaborative drug annotation work with Caroline Thorn and [PharmGKB](), we have added the pathway [Ciprofloxacin ADME]() under the topic of Drug Absorption, Distribution, Metabolism, and Excretion (ADME) pathways. \n\nNew and Updated Illustrations. [Cytokine Signaling in Immune system](), [Diseases of DNA Double-Strand Break Repair](), [Disorders of Nervous System Development](), [Drug ADME](), [Gastrulation](), [GPCR downstream signalling](), [Loss of function of MECP2 in Rett syndrome](), [Pervasive developmental disorders](), [Platelet activation, signaling and aggregation](), and [SUMOylation]() have a new or revised Illustration with embedded navigation features. \n\nThanks to our Contributors. [E Richard Stanley]() is our external author. [Ravindrababu Chalamalasetty](), [Clément Charenton](), [David P Hill](), [Christian Mosimann](), [James M Murphy](), [Karin Prummel](), [Hiroshi Sasaki](), [E Richard Stanley](), [Hailin Tu](), and [Terry P Yamaguchi]() are our external reviewers.\n\nAnnotation Statistics. Reactome comprises 14,471 human reactions organized into 2,610 pathways involving 30,656 proteins and modified forms of proteins encoded by 11,442 different human genes, 14,153 complexes, 2,002 small molecules, and 1,113 drugs. These annotations are supported by 36,290 literature references. We have projected these reactions onto 83,933 orthologous proteins, creating 19,417 orthologous pathways in 14 non-human species. Version 83 has annotations for 4,977 protein variants (mutated proteins) and their post-translationally modified forms, derived from 361 proteins, which have contributed to the annotation of 1,659 disease-specific reactions and 704 pathways. \n\nTools and Data. Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz]() app and [ReactomeGSA]() package provides tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\nDocumentation and Training. Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\nAbout the Reactome Project. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The EMBL - European Bioinformatics Institute. Reactome is an [ELIXIR Core Data Resource](). Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence applies to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\nFollow us on Twitter: [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\nFor more information: If you have a question, want to provide feedback, or are interested in collaborating with us to annotate a topic, please contact us at [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/187-reactome-named-as-a-global-core-biodata-resource.json b/projects/website-angular/content-dist/about/news/187-reactome-named-as-a-global-core-biodata-resource.json new file mode 100644 index 00000000..19d9d8a3 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/187-reactome-named-as-a-global-core-biodata-resource.json @@ -0,0 +1 @@ +{"title":"Reactome named as a Global Core Biodata Resource","category":"about","date":"2022-12-21T13:16:35-05:00","tags":"[\"about\", \"news\", \"187-reactome-named-as-a-global-core-biodata-resource\"]","body":"\n## Reactome named as a Global Core Biodata Resource \n\nOn December 15, the Global Biodata Coalition ([]()) of research funders recognized the Reactome Knowledgebase ([www.reactome.org]()) as one of just 37 resources worldwide whose long-term funding and sustainability are critical to life science and biomedical research. See the full announcement [here]().\n\nMany thanks to the selection panel at GBC for the recognition, and congratulations to the other resources who were selected.\n\n![GCBR Logo RGB](/uploads/about/news/GCBR-Logo-RGB.png)\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/191-reactome-is-hiring.json b/projects/website-angular/content-dist/about/news/191-reactome-is-hiring.json new file mode 100644 index 00000000..e81d0bcb --- /dev/null +++ b/projects/website-angular/content-dist/about/news/191-reactome-is-hiring.json @@ -0,0 +1 @@ +{"title":"Reactome is hiring!","category":"about","date":"2023-03-20T13:26:04-04:00","tags":"[\"about\", \"news\", \"191-reactome-is-hiring\"]","body":"\n## Reactome is hiring! \n\n**Outreach Coordinator**\n\nWe are looking for an experienced and enthusiastic person to lead our outreach efforts. \n\nAs Reactome Outreach Coordinator, you will lead our community outreach activities, strengthening existing collaborations and developing initiatives to foster new ones. Working with the software and curatorial teams, you will coordinate Reactome communications, including conference presentations, workshops, scientific and lay papers, and social media. You will develop education and training materials for in person and online learning and will contribute to the documentation on the Reactome web site.\n\n**Your responsibilities will include:**\n\n * Maintaining a calendar of outreach activities, including community events, workshops, appearances and other communication opportunities\n * Planning and delivering training workshops on Reactome web interface, tools and application programming interfaces (APIs) and their use in large-scale data analysis. This responsibility will involve multiple public presentations per year as well as international travel\n * Promotion of Reactome and communication of Reactome news through social media channels like Twitter, LinkedIn, and Facebook\n * Creating and maintaining documentation and e-learning materials on our advanced tools and APIs, and their application in bioinformatic analysis\n * Direct support via email and tracker of user queries on using our APIs and advanced tools\n * Direct interaction with our development teams to fix bugs identified by users and find solutions to user problems\n * Supporting usability testing of tools and APIs\n\n## **Required Qualifications:**\n\nWe are seeking a self-reliant, resourceful team player comfortable with multitasking who is open to cooperation and collaboration both within our group and in the larger bioinformatics community.\n\n * You have a Master’s or PhD degree or equivalent experience in life sciences, preferably in bioinformatics, biochemistry, molecular biology, cancer research or a related field\n * In addition to your academic training, you have at least 2 years of relevant job experience related to bioinformatics, pathway databases, analysis of biological data sets or similar. Knowledge of cancer genomics is helpful but not required\n * Significant experience in teaching, training, public outreach, online help and/or event planning events is essential\n * You should be comfortable speaking persuasively to large audiences as well as conducting teaching and tutorials in small group settings, both online and in person\n * You have excellent English communication skills, both written and verbal, to facilitate effective communications with other team members and to communicate with external collaborators and users\n\nWorking hours can be negotiated to fit the needs of the applicant and the project. A part-time renewable contract or full-time permanent position can be considered, or a Professional Services Agreement for those candidates out of province.\n\nTo apply, please see the full posting [here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/194-v84-released.json b/projects/website-angular/content-dist/about/news/194-v84-released.json new file mode 100644 index 00000000..89c7fcdc --- /dev/null +++ b/projects/website-angular/content-dist/about/news/194-v84-released.json @@ -0,0 +1 @@ +{"title":"V84 released","category":"about","date":"2023-03-23T15:07:16-04:00","tags":"[\"about\", \"news\", \"194-v84-released\"]","body":"\n## V84 released \n\n[Infectious Disease]()\n\n![](/uploads/about/news/infectious_events.png)\n\n**New and Updated Topics and Pathways.** In V84, Topics with new or revised pathways include Developmental Biology ([Formation of definitive endoderm]()), Gene Expression ([Formation of WDR5-containing histone-modifying complexes]()), and Signal Transduction ([Regulation of TNFR1 signaling](), [TNFR1-induced NF-kappa-B signaling pathway](), and [TNFR1-induced proapoptotic signaling]()). The [Infectious disease]() pathway has been reorganized with grouping pathways for [Bacterial Infection Pathways](), [Viral Infection Pathways](), and [Parasitic Infection Pathways](). \n\n**New and Updated Illustrations.** In parallel with the restructuring of the infectious disease pathway in V84**,** new or revised Illustrations with embedded navigation features have been created for [Infectious disease](), [Bacterial Infection Pathways](), [Viral Infection Pathways](), and [Parasitic Infection Pathways](). Additional disease pathways with new or updated Illustrations include [Aberrant regulation of mitotic cell cycle due to RB1 defects](), [Defective factor IX causes hemophilia B](), [Defective factor VIII causes hemophilia A](), [Diseases of Cellular Senescence](), and [Diseases of Mitotic Cell Cycle](). Normal pathways with new or revised illustrations include [Epigenetic regulation of gene expression]() and [Gastrulation]().\n\n**Thanks to our Contributors.** [Toni Franjkić](), [Kai Ge](), [David P Hill](), [Ivana Munitic](), [Nazmus Salehin](), [Patrick Tam](), and [Hieu Van]() are our external reviewers.\n\n**Annotation Statistics.** Reactome comprises 14516 human reactions organized into 2615 pathways involving 30095 proteins and modified forms of proteins encoded by 11371 different human genes, 14194 complexes, 2002 small molecules, and 1113 drugs. These annotations are supported by 36444 literature references. We have projected these reactions onto 84090 orthologous proteins, creating 19435 orthologous pathways in 14 non-human species. Version 84 has annotations for 4983 protein variants (mutated proteins) and their post-translationally modified forms, derived from 353 proteins, which have contributed to the annotation of 1,659 disease-specific reactions and 704 pathways. \n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz]() app and [ReactomeGSA]() package provide tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\n**Documentation and Training.** Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project.** Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The EMBL - European Bioinformatics Institute. Reactome is an [ELIXIR Core Data Resource]() as well as a [Global Core Biodata Resource](). Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence applies to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information:** If you have a question, want to provide feedback, or are interested in collaborating with us to annotate a topic, please contact us at [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/225-v85-released.json b/projects/website-angular/content-dist/about/news/225-v85-released.json new file mode 100644 index 00000000..6681b529 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/225-v85-released.json @@ -0,0 +1 @@ +{"title":"V85 released","category":"about","date":"2023-05-25T20:43:26-04:00","tags":"[\"about\", \"news\", \"225-v85-released\"]","body":"\n## V85 released \n\n![R HSA 9758941](/uploads/about/news/R-HSA-9758941.png)\n\n**New and Updated Topics and Pathways.** In V85, Topics with new or revised pathways include Developmental Biology ([Cardiogenesis](), [Formation of intermediate mesoderm](), [Formation of paraxial mesoderm](), [Somitogenesis](), [Specification of primordial germ cells]() ), Cell-Cell communication ([Regulation of Expression and Function of Type II Classical Cadherins](), [Regulation of CDH11 Expression and Function](), and [Regulation of CDH19 Expression and Function]()), Cellular responses to stimuli ([ATF6B (ATF6-beta) activates chaperones]()), Immune System ([IFNG signaling activates MAPKs]() and [Interferon gamma signaling]()), and Metabolism ([Fructose biosynthesis]() and [Fructose catabolism]()). \n\n**New and Updated Illustrations.** New or revised Illustrations with embedded navigation features have been created for [Developmental Biology](), [Gastrulation](), and [Reproduction]().\n\n**Thanks to our Contributors.** [Ravindra Chalamalasetty]() and [Terry Yamaguchi]() are our external authors. [Julia Brasch](), [Ravindra Chalamalasetty](), [David Hill](), [Patrick Tam](), and [Terry Yamaguchi]() are our external reviewers.\n\n**Annotation Statistics****.** Reactome comprises 14,628 human reactions organized into 2,629 **** pathways involving 30,155 proteins and modified forms of proteins encoded by 11,396 different human genes, 14,277 complexes, 2,004 small molecules, and 1,114 drugs. These annotations are supported by 36,706 literature references. We have projected these reactions onto 84,167 orthologous proteins, creating 19,505 orthologous pathways in 14 non-human species. Version 85 has annotations for 4,919 protein variants (mutated proteins) and their post-translationally modified forms, derived from 354 proteins, which have contributed to the annotation of 1,659 disease-specific reactions and 707 pathways. \n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz]() app and [ReactomeGSA]() package provide tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\n**Documentation and Training.** Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project.** Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The EMBL - European Bioinformatics Institute. Reactome is an [ELIXIR Core Data Resource]() as well as a [Global Core Biodata Resource](). Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence applies to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information:** If you have a question, want to provide feedback, or are interested in collaborating with us to annotate a topic, please contact us at [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/230-version-86-released.json b/projects/website-angular/content-dist/about/news/230-version-86-released.json new file mode 100644 index 00000000..b4593bb8 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/230-version-86-released.json @@ -0,0 +1 @@ +{"title":"V86 Released","category":"about","date":"2023-09-07T00:15:08-04:00","tags":"[\"about\", \"news\", \"230-version-86-released\"]","body":"\n## V86 Released \n\n![R HSA 9816359 2242x1261](/uploads/about/news/R-HSA-9816359-2242x1261.png)\n\nMaternal to zygotic transition\n\n**New and Updated Topics and Pathways.** In V86, Topics with new or revised pathways include Cellular responses to stimuli ([KEAP1-NFE2L2 pathway]()), Developmental biology ([Formation of anterior neural plate](), [Formation of posterior neural plate](), and [Maternal to zygotic transition (MZT)]()), Immune system ([PKR-mediated signaling]()), Metabolism ([Vitamin B5 (pantothenate) metabolism]()), Metabolism of RNA ([Mitochondrial RNA degradation]()), and Metabolism of proteins ([Protein hydroxylation]()). \n\n**New and Updated Illustrations.** New or revised Illustrations with embedded navigation features have been created for [Antiviral mechanism by IFN-stimulated genes](), [Developmental Biology](), [Gastrulation](), [Maternal to zygotic transition](), and [Metabolism of RNA](). \n\n**Thanks to our Contributors.** [David Hill](), [Hisato Kondoh](), [Rekha Patel](), and [Wei Xie]() are our external reviewers.\n\n**Annotation Statistics****.** Reactome comprises **14,803** human reactions organized into **2,647** **** pathways involving **30,338** proteins and modified forms of proteins encoded by **11,154** different human genes, **14,441** complexes, **2,025** small molecules, and **1,119** drugs. These annotations are supported by **37,156** literature references. We have projected these reactions onto **84,414** orthologous proteins, creating **19,561** orthologous pathways in **14** non-human species. Version 86 has annotations for **4,919** protein variants (mutated proteins) and their post-translationally modified forms, derived from **354** proteins, which have contributed to the annotation of ******1,667** disease-specific reactions and **707** pathways. \n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz]() app and [ReactomeGSA]() package provide tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\n**Documentation and Training.** Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project.** Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The EMBL - European Bioinformatics Institute. Reactome is an [ELIXIR Core Data Resource]() as well as a [Global Core Biodata Resource](). Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence applies to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**For more information:** If you have a question, want to provide feedback, or are interested in collaborating with us to annotate a topic, please contact us at [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/238-version-87-released.json b/projects/website-angular/content-dist/about/news/238-version-87-released.json new file mode 100644 index 00000000..4385dffc --- /dev/null +++ b/projects/website-angular/content-dist/about/news/238-version-87-released.json @@ -0,0 +1 @@ +{"title":"V87 released","category":"about","date":"2023-12-04T22:25:30-05:00","tags":"[\"about\", \"news\", \"238-version-87-released\"]","body":"\n## V87 released \n\n![R HSA 9820952](/uploads/about/news/R-HSA-9820952.png)**Respiratory Syncytial Virus Infection Pathway**\n\n**New and Updated Topics and Pathways.** As we head into winter and medical experts warn, once again, of a potential tripledemic of flu, COVID-19, and Respiratory Syncytial Virus (RSV), Reactome completes its coverage of these three viruses with the release of the RSV infection pathway in V87. Additional topics with new or revised pathways in this release include Cellular responses to stimuli ([Cellular response to mitochondrial stress]()), Developmental Biology ([Kidney formation]() and [Specification of the neural plate border]()), Disease ([Defects of platelet adhesion to exposed collagen](), and [Signaling by ALK in cancer]()), DNA Repair ([Processing of DNA double-strand break ends]()), Hemostasis ([Platelet Adhesion to exposed collagen]()), Metabolism ([Sphingolipid metabolism]()), Metabolism of proteins ([Mitochondrial protein degradation]()), Signal Transduction ([Signaling by ALK]() and [Signaling by EGFR]()), Transport of small molecules ([Glycosphingolipid transport]()).\n\n**New and Updated Illustrations.** New or revised Illustrations with embedded navigation features have been created for [Cellular responses to stress](), [Developmental Biology](), [Diseases of hemostasis](), [Gastrulation](), [Kidney development](), [Metabolism of proteins](), [Transport of small molecules](), [Viral Infection Pathways]() and [Respiratory Syncytial Virus Infection Pathway]().\n\n**Thanks to our Contributors.** [Mazen Aljghami](), [Harrison Bergeron](), Rui Gao, [Lena Gunhaga](), [Xiaoyan Guo](), [David P Hill](), [Walid A Houry](), Anthony Mak, [Trevor Morey](), [Cedric Patthey](), and [Suzanne D Turner]() are our external reviewers.\n\n**Annotation Statistics****.** Reactome comprises 15,046 human reactions organized into 2,673 **** pathways involving 30,451 proteins and modified forms of proteins encoded by 11,180 different human genes, 14,594 complexes, 2,120 small molecules, and 1,046 drugs. These annotations are supported by 37,933 literature references. We have projected these reactions onto 79,040 orthologous proteins, creating 19,398 orthologous pathways in 14 non-human species. Version 87 has annotations for 4,942 protein variants (mutated proteins) and their post-translationally modified forms, derived from 357 proteins, which have contributed to the annotation of **__** 1,796 disease-specific reactions and 723 pathways. \n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz]() app and [ReactomeGSA]() package provide tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\n**Documentation and Training.** Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project.** Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The EMBL - European Bioinformatics Institute. Reactome is an [ELIXIR Core Data Resource]() as well as a [Global Core Biodata Resource](). Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence applies to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information:** If you have a question, want to provide feedback, or are interested in collaborating with us to annotate a topic, please contact us at [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/246-v88-released-2.json b/projects/website-angular/content-dist/about/news/246-v88-released-2.json new file mode 100644 index 00000000..9694949a --- /dev/null +++ b/projects/website-angular/content-dist/about/news/246-v88-released-2.json @@ -0,0 +1 @@ +{"title":"V88 Released","category":"about","date":"2024-03-20T00:35:16-04:00","tags":"[\"about\", \"news\", \"246-v88-released-2\"]","body":"\n## V88 Released \n\n![R HSA 9734767](/uploads/about/news/R-HSA-9734767.png)\n\n**Cytomics Reactome.** The trillions of cells in the adult human body, specialized to fulfill diverse roles in tissues, organs, and organ systems, all originate from a single cell, a zygote formed at conception. From zygote to adulthood, cells divide and commit to different fates. The steps from a pluripotent stem cell to a specialized descendant constitute a cell lineage path. [Cytomics Reactome]() extends the data structure used for molecular-level annotation of cell biology to annotate cell lineage paths, organizing them by organ systems, cross-referencing them to Gene Ontology biological processes, and dividing each into causally connected cell development steps. These reaction-like steps describe transitions between cell states during development or differentiation, characterized by positive and negative regulators and required input components (cell state biomarkers required for the action of regulators). Each cell state corresponds to a unique combination of cell type (Cell Ontology), anatomical location (UBERON), and protein and/or RNA markers, as described in the Cytomics section of the [User Guide](). Recently developed tools that harvest omics data from single cells of multicellular organisms and track fates open the door to deciphering cell lineage paths at single-cell resolution, a critical requirement of regenerative medicine and cancer medicine. Cytomics Reactome is intended to support such technologies and their application to human biology as they emerge. \n \nThe first Cytomics cell lineage path, [Differentiation of keratinocytes in interfollicular epidermis in mammalian skin](), describes the differentiation of keratinocytes from stem cells to corneocytes in the interfollicular epidermis, the skin surface layer in between the adnexa (hair follicles, sweat glands, and sebaceous glands). The path is described in four cell differentiation steps involving five distinct cellular states: keratinocyte stem cells of the epidermal basal layer, transit amplifying cells, spinous keratinocytes, granular keratinocytes, and corneocytes. Each differentiation step is regulated by a distinct combination of regulatory molecules present in the microenvironments of the differentiating cells.\n\n**New and Updated Topics and Pathways.** Topics with new or revised pathways in this release include Cell Cycle ([Resolution of Sister Chromatid Cohesion]()), Developmental Biology ([Differentiation of keratinocytes in intefrollicular skin epidermis](), [MITF-M-regulation melanocyte development](), [Transcriptional regulation of brown and beige adipocyte differentiation]()), Disease ([Defective regulation of TLR by endogenous ligand](), [Signaling by LTK in cancer]()), Immune System ([Activation of IRF3, IRF7 mediated by TBK1, IKKε (IKBKE)](), [Regulation of TLR by endogenous ligand](), [TICAM1-dependent activation of IRF3/IRF7]() ), Metabolism ([Acetylcholine regulates insulin secretion](), [Adrenaline,noradrenaline inhibits insulin secretion](), [Aerobic respiration and respiratory electron transport](), [AMPK inhibits chREBP transcriptional activation activity](), [Branched-chain amino acid catabolism](), [ChREBP activates metabolic gene expression](), [Citric acid cycle (TCA cycle)](), [Glucagon signaling in metabolic regulation](), [Glucagon-like Peptide-1 (GLP1) regulates insulin secretion](), [Heme biosynthesis](), [Malate-aspartate shuttle](), [Maturation of TCA enzymes and regulation of TCA cycle](), [NADPH regeneration](), [PI and PC transport between ER and Golgi membranes](), [PKA-mediated phosphorylation of key metabolic factors](), [Pyruvate metabolism](), [Regulation of pyruvate dehydrogenase (PDH) complex](), [Respiratory electron transport]()), Metabolism of proteins ([Protein lipoylation]()), Signal Transduction ([EGFR Transactivation by Gastrin](), [Signaling by LTK]()), Transport of small molecules ([Iron uptake and transport]()).\n\n**New and Updated Illustrations.** New or revised Illustrations with embedded navigation features have been created for [Adipogenesis](), [Developmental Biology](), [Developmental Cell Lineages](), [Diseases associated with TLR signaling cascade](), [Diseases of signal transduction by growth factor receptors and second messengers](), [Metabolism](), [MITF-M-regulated melanocyte development](), [Post-translational protein modification](), and [Signalling by Receptor Tyrosine Kinases](). A new static illustration is available for [Respiratory syncytial virus (RSV) attachment and entry]().\n\n**Thanks to our Contributors.** [Tae-Hwa Chun](), [Toni Franjkić](), [Clarisse Ganier](), [Heinz Arnheiter](), [David Hill](), [Xing Liu](), [Ivana Munitic](), and [Xuebiao Yao]() are our external reviewers.\n\n**Annotation Statistics****.** Reactome comprises 15,212 human reactions organized into 2,698**** pathways involving 30585 proteins and modified forms of proteins encoded by 11226 different human genes,**** 14789 complexes, 2128 small molecules, and 1047 drugs. These annotations are supported by 38549 literature references. We have projected these reactions onto 79407 orthologous proteins, creating 19520 orthologous pathways in 14 non-human species. Version 88 has annotations for 4944 protein variants (mutated proteins) and their post-translationally modified forms, derived from 359 proteins, which have contributed to the annotation of 1802 disease-specific reactions and 725 pathways. \n\n**Tools and Data.** Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz]() app and [ReactomeGSA]() package provide tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\n**Documentation and Training.** Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\n**About the Reactome Project.** Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The EMBL - European Bioinformatics Institute. Reactome is an [ELIXIR Core Data Resource]() as well as a [Global Core Biodata Resource](). Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence applies to all software and code, database data dumps, Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art, and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information:** If you have a question, want to provide feedback, or are interested in collaborating with us to annotate a topic, please contact us at [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/250-new-publication-in-database-oxford.json b/projects/website-angular/content-dist/about/news/250-new-publication-in-database-oxford.json new file mode 100644 index 00000000..92d80dee --- /dev/null +++ b/projects/website-angular/content-dist/about/news/250-new-publication-in-database-oxford.json @@ -0,0 +1 @@ +{"title":"New Publication in Database (Oxford)!","category":"about","date":"2024-05-14T17:45:16-04:00","tags":"[\"about\", \"news\", \"250-new-publication-in-database-oxford\"]","body":"\n## New Publication in Database (Oxford)! \n\nIntroducing a new publication from the Reactome team in the Database (Oxford) journal by Orlic-Milacic et al, titled \"[Pathway-based, reaction-specific annotation of disease variants for elucidation of molecular phenotypes]()\"! \n\nThe study outlines Reactome's expansion to encompass annotations for **disease variants** , providing insights into aberrant reactions and pathways caused by germline and somatic mutations. Aligning with the **American College of Medical Genetics and Genomics (ACMG)/Association for Molecular Pathology (AMP)** standards, Reactome classifies variants as benign or pathogenic, facilitating integration with other variant databases like**ClinGen** and **ClinVar.** Rather than exhaustively cataloging variants, Reactome focuses on characterizing the impact of representative variants on pathway activity, with annotations cross-referencing external resources such as **OMIM** and **COSMIC**. Despite the availability of computational tools, manual curation remains essential due to limitations in predicting functional impact and the narrow focus on missense variants.\n\nThe paper also introduces a protocol developed by the Reactome team for annotating variants in pathways, alongside an expanded dataset covering diverse classes of protein variants, including fusion proteins. These pathway-based annotations not only aid in identifying gaps in computational predictions but also enhance the interpretation and modeling of clinically relevant variants.\n\nFor other publications by the Reactome Team, visit our [publications]() page.\n\n![](/uploads/about/news/DiseaseVarFig7.jpeg)\n\nShown here is Figure 7: High-level graphical summary of Reactome’s ERBB2 cancer variants content. (A) Heatmap representation of Reactome electronic textbook knowledge on the sensitivity of different ERBB2 cancer variants to ERBB2-targeted anti-cancer therapeutics. The heatmap was generated using the R package pheatmap with default settings. (B) Interactive textbook style diagram for ‘Signaling by ERBB2 in Cancer’ pathway.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/251-v89-released.json b/projects/website-angular/content-dist/about/news/251-v89-released.json new file mode 100644 index 00000000..ff1832d9 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/251-v89-released.json @@ -0,0 +1 @@ +{"title":"V89 Released","category":"about","date":"2024-06-09T22:59:54-04:00","tags":"[\"about\", \"news\", \"251-v89-released\"]","body":"\n## V89 Released \n\n![R HSA 212165](/uploads/about/news/R-HSA-212165.png)\n\nNew and Updated Topics and Pathways. Topics with new or revised pathways in this release include Autophagy ([Mitophagy]()), Cell Cycle ([Meiotic recombination]() and [Resolution of sister chromatid cohesion]()); Developmental Biology ([MITF-M-regulation melanocyte development]()); DNA Repair ([Resolution of D-loop structures through Holliday Junction Intermediates]()); Gene Expression ([Regulation of endogenous retroelements]()); Immune System ([SLC15A4:TASL-dependent IRF5 activation]()); Metabolism ([Aerobic respiration and respiratory electron transport]() including [Respiratory electron transport](), [Complex I biogenesis](), [Complex III assembly](), and [Complex IV assembly](); [Mitochondrial uncoupling](); [Fatty acyl-CoA biosynthesis](); [Endogenous sterols](); [Synthesis of very long-chain fatty acyl-CoAs](), [Ubiquinol biosynthesis](); [OADH complex synthesizes glutaryl-CoA from 2-OA](); [BCKDH synthesizes BCAA-CoA from KIC, KMVA, KIV](), Metabolism of proteins ([Synthesis of GDP-mannose]()), and Signal Transduction ([TGFBR3 signaling]()).\n\nNew and Updated Illustrations. New or revised illustrations with embedded navigation features have been created for [Epigenetic regulation of gene expression](), [Signaling by EGFR in Cancer](), and [Signaling by TGFB family members]().\n\nThanks to our Contributors. [Deborah Bourc'his](), [Ivana de la Serna](), [Liane P Fernandes](), [Leonhard X Heinz](), [David P Hill](), [Christian Löw](), [Marco Marchi](), [Alexandre Orthwein](), [Fabien Pierrel](), [Fiorella Tonello](), [Noriko Toyama-Sorimachi](), and [Mark Williams]() are our external reviewers.\n\nAnnotation Statistics. Reactome comprises 15,326 human reactions organized into 2,711 pathways involving 30,733 proteins and modified forms of proteins encoded by 11,279 different human genes, 14,897 complexes, 2,127 small molecules, and 1,047 drugs. These annotations are supported by 38,895 literature references. We have projected these reactions onto 79,737 orthologous proteins, creating 19,657 orthologous pathways in 14 non-human species. Version 89 has annotations for 4,857 protein variants (mutated proteins) and their post-translationally modified forms, derived from 376 proteins, which have contributed to the annotation of 1,802 disease-specific reactions and 725 pathways. \n\nTools and Data. Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz]() app and [ReactomeGSA]() package provide tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\nDocumentation and Training. Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\nAbout the Reactome Project. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The EMBL - European Bioinformatics Institute. Reactome is an [ELIXIR Core Data Resource]() as well as a [Global Core Biodata Resource](). Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence applies to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art, and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\nFollow us on Twitter: [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\nFor more information: If you have a question, want to provide feedback, or are interested in collaborating with us to annotate a topic, please contact us at [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/261-v90-news.json b/projects/website-angular/content-dist/about/news/261-v90-news.json new file mode 100644 index 00000000..a0eb53c7 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/261-v90-news.json @@ -0,0 +1 @@ +{"title":"V90 Released","category":"about","date":"2024-09-17T00:01:08-04:00","tags":"[\"about\", \"news\", \"261-v90-news\"]","body":"\n## V90 Released \n\n![R HSA 2262752](/uploads/about/news/R-HSA-2262752.png)\n\n[Cellular response to stress]()\n\nNew and Updated Topics and Pathways. Topics with new or revised pathways in this release include Cellular responses to stimuli ([High laminar flow shear stress activates signaling by PIEZO1 and PECAM1:CDH5:KDR in endothelial cells](), [Turbulent (oscillatory, disturbed) flow shear stress activates signaling by PIEZO1 and integrins in endothelial cells](), [Mitochondrial unfolded protein response (mtUPR)]()), Disease ([Disease of branched-chain amino acid catabolism]()), Gene Expression ([Epigenetic regulation of gene expression by MLL3 and MLL4 complexes](), [Epigenetic regulation of adipogenesis genes by MLL3 and MLL4]()), Metabolism ([Aflatoxin activation and detoxification](), [Arachidonate metabolism](), [Biosynthesis of electrophilic ω-3 PUFA oxo-derivatives](), [Biosynthesis of specialized pro-resolving mediators (SPMs)](), [Carnitine shuttle](), [Cobalamin (Cbl) metabolism](), [Endogenous sterols](), [Formation of the active cofactor, UDP-glucuronate](), [Glucocorticoid biosynthesis](), [Metabolism of nitric oxide: NOS3 activation and regulation](), [Peroxisomal lipid metabolism]()), and Metabolism of proteins ([Proteasome assembly]()).\n\nNew and Updated Illustrations. New or revised Illustrations with embedded navigation features have been created for [Cellular responses to mechanical stimuli](), [Cellular responses to stimuli](), [Cellular responses to stress](), [Diseases of Metabolism](), [Diseases of branched-chain amino acid catabolism](), [Maple Syrup Urine disease](), [Epigenetic regulation of gene expression](), [Post-translational protein modification](), [Response of endothelial cells to shear stress](), and [Toll-Like Receptors Cascades]().\n\nThanks to our Contributors. [David P Hill]() and [Rui Xiao]() are our external reviewers.\n\nAnnotation Statistics. Reactome comprises 15,492 human reactions organized into 2,742 pathways involving 30,892 proteins and modified forms of proteins encoded by 11,289 different human genes, 15,299 complexes, 2,127 small molecules, and 1,057 drugs. These annotations are supported by 39,318 literature references. We have projected these reactions onto 79,857 orthologous proteins, creating 19,783 orthologous pathways in 14 non-human species. Version 90 has annotations for 4,943 protein variants (mutated proteins) and their post-translationally modified forms, derived from 391 proteins, which have contributed to the annotation of 1,808 disease-specific reactions and 746 pathways. \n\nTools and Data. Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz]() app and [ReactomeGSA]() package provide tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\nDocumentation and Training. Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\nAbout the Reactome Project. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The EMBL - European Bioinformatics Institute. Reactome is an [ELIXIR Core Data Resource]() as well as a [Global Core Biodata Resource](). Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence applies to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art, and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\nFollow us on Twitter: [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\nFor more information: If you have a question, want to provide feedback, or are interested in collaborating with us to annotate a topic, please contact us at [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/265-v91-news.json b/projects/website-angular/content-dist/about/news/265-v91-news.json new file mode 100644 index 00000000..53f4308a --- /dev/null +++ b/projects/website-angular/content-dist/about/news/265-v91-news.json @@ -0,0 +1 @@ +{"title":"V91 Released","category":"about","date":"2024-11-30T10:22:36-05:00","tags":"[\"about\", \"news\", \"265-v91-news\"]","body":"\n## V91 Released \n\n![R HSA 388841](/uploads/about/news/R-HSA-388841.png)\n\n[Regulation of T cell activation by CD28 family]()\n\nNew and Updated Topics and Pathways. Topics with new or revised pathways in this release include Cellular responses to stimuli ([Mechanical load activates signaling by PIEZO1 and integrins in osteocytes]()), Developmental Biology ([Developmental Lineage of Pancreatic Acinar Cells]() and [MITF-M-regulation melanocyte development]()), DNA Replication ([Strand-asynchronous mitochondrial DNA replication]()), Extracellular matrix organization ([Formation of the dystroglycan-associated glycoprotein complex (DGC)]()), Immune system ([Co-inhibition by BTLA](), [Co-inhibition by PD-1](), [Co-stimulation by ICOS](), [Modulation of host responses by IFN-stimulated genes](), and [Regulation of T cell activation by CD28]()), and Signal transduction ([Expression of NOTCH2NL genes]() and [NOTCH2 activation and transmission of signal to the nucleus]()).\n\nNew and Updated Illustrations. New or revised Illustrations with embedded navigation features have been created for [Cellular responses to mechanical stimulus](), [Regulation of T cell activation by CD28 family](), [Developmental Cell Lineages](), [DNA Replication](), [Interferon Signaling](), and [MITF-M-regulation melanocyte development]().\n\nThanks to our Contributors. [Phani V. Garapati]() and [Hina F. Bhat]() are our external authors and [Mary C. Farach-Carson](), [Michael Heide](), [Nancy T. Li](), [Robert Phair](), [Eirikur Steingrimmsson](), [Hong Nhung Vu](), [Danielle Wu](), and [Chyuan-Chuan Wu]() are our external reviewers.\n\nAnnotation Statistics. Reactome comprises 15,591 human reactions organized into 2,751 pathways involving 31,055 proteins and modified forms of proteins encoded by 11,323 different human genes, 15,383 complexes, 2,125 small molecules, and 1,057 drugs. These annotations are supported by 39,806 literature references. We have projected these reactions onto 80,032 orthologous proteins, creating 19,845 orthologous pathways in 14 non-human species. Version 91 has annotations for 4,943 protein variants (mutated proteins) and their post-translationally modified forms, derived from 391 proteins, which have contributed to the annotation of 1,808 disease-specific reactions and 746 pathways. \n\nTools and Data. Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz]() app and [ReactomeGSA]() package provide tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\nDocumentation and Training. Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\nAbout the Reactome Project. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The EMBL - European Bioinformatics Institute. Reactome is both an [ELIXIR Core Data Resource]() and a [Global Core Biodata Resource](). Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) License applies to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art, and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\nFollow us on Twitter: [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\nFor more information: If you have a question, want to provide feedback, or are interested in collaborating with us to annotate a topic, please contact us at [help@reactome.org]().\n\nIf you have a few minutes to spare, please consider participating in our anonymous 5 minute [Reactome User Survey,]() aimed to gather general feedback about our work. As a Reactome user, your support and feedback are valuable for the continued success of our knowledgebase and helps us find new ways to serve the scientific community. Many thanks!\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/270-v92-news.json b/projects/website-angular/content-dist/about/news/270-v92-news.json new file mode 100644 index 00000000..bb9a4352 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/270-v92-news.json @@ -0,0 +1 @@ +{"title":"V92 Released","category":"about","date":"2025-03-20T01:13:44-04:00","tags":"[\"about\", \"news\", \"270-v92-news\"]","body":"\n## V92 Released \n\n![R HSA 9909396](/uploads/about/news/R-HSA-9909396.png)\n\n[Circadian Clock]()\n\nNew and Updated Topics and Pathways. Topics with new or revised pathways in this release include Autophagy ([Macroautophagy]()), Cell Cycle ([Cyclin A/B1/B2 associated events during G2/M transition](), [Regulation of PLK1 Activity at G2/M Transition]()), Cellular responses to stimuli ([Heme signaling]()), Chromatin organization ([ATP-dependent chromatin remodellers]()), [Circadian Clock](), Developmental Biology ([Developmental Cell Lineages of the Exocrine Pancreas](), [Developmental Lineage of Multipotent Pancreatic Progenitor Cells](), [Developmental Lineage of Pancreatic Ductal Cells]()), Disease ([Diseases associated with glycosylation precursor biosynthesis]()), Immune system ([Class I MHC mediated antigen processing & presentation]()), Metabolism ([Aspartate and asparagine metabolism](), [Cysteine formation from homocysteine](), [Degradation of cysteine and homocysteine](), [Formation of selenosugars for excretion](), [Galactose catabolism](), [Glycerophospholipid biosynthesis](), [Glycogen breakdown (glycogenolysis)](), [Glycolysis](), [Glyoxylate metabolism and glycine degradation](), [Lysine catabolism](), [Metabolism of ingested H2SeO4 and H2SeO3 into H2Se](), [Metabolism of ingested SeMet, Sec, MeSec into H2Se](), [Methionine salvage pathway](), [OADH complex synthesizes glutaryl-CoA from 2-OA](), [PPARA activates gene expression](), [Proline catabolism](), [Selenocysteine synthesis](), [Serine metabolism](), [Threonine catabolism](), and [Tryptophan catabolism]()), Metabolism of proteins ([O-linked glycosylation]() and [Synthesis of dolichyl-phosphate]()), and Metabolism of RNA ([Nuclear RNA decay]()).\n\nNew and Updated Illustrations. New or revised Illustrations with embedded navigation features have been created for [Aerobic respiration and respiratory electron transport](), [ATP-dependent chromatin remodellers](), [Chromatin organization](), [Circadian clock](), [Developmental Cell Lineages](), [Developmental Lineages of Exocrine Pancreas](), [Diseases associated with glycosylation precursor biosynthesis](), [Metabolism of RNA](), and [Parasite infection]().\n\nThanks to our Contributors. [Urs Albrecht](), [Alan Alwakeel](), [Emily C Dykhuizen](), [David P Hill](), [Bernard Khor](), [Nancy T Li](), and [Aziz Sancar]() are our external reviewers.\n\nAnnotation Statistics. Reactome comprises 15,672 human reactions organized into 2,769 pathways involving 31168 proteins and modified forms of proteins encoded by 11,356 different human genes, 15,486 complexes, 2,130 small molecules, and 1,057 drugs. These annotations are supported by 40,321 literature references. We have projected these reactions onto 80,248 orthologous proteins, creating 19,963 orthologous pathways in 14 non-human species. Version 92 has annotations for 4,947 protein variants (mutated proteins) and their post-translationally modified forms, derived from 392 proteins, which have contributed to the annotation of 1,809 disease-specific reactions and 747 pathways. \n\nOther news. In our next version (v93) of Reactome, we will be migrating our Docker image hosting from DockerHub to [AWS Elastic Container Registry (ECR).]() Going forward, users will be able to pull our container images from AWS ECR. This transition ensures improved reliability, security, and integration with our cloud infrastructure. Updated instructions for accessing the images will be provided in our documentation.\n\nTools and Data. Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz]() app and [ReactomeGSA]() package provide tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\nDocumentation and Training. Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\nAbout the Reactome Project. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The EMBL - European Bioinformatics Institute. Reactome is both an [ELIXIR Core Data Resource]() and a [Global Core Biodata Resource](). Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) License applies to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art, and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\nFollow us on Twitter: [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\nFor more information: If you have a question, want to provide feedback, or are interested in collaborating with us to annotate a topic, please contact us at [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/273-coretrustseal-news.json b/projects/website-angular/content-dist/about/news/273-coretrustseal-news.json new file mode 100644 index 00000000..4172ccdc --- /dev/null +++ b/projects/website-angular/content-dist/about/news/273-coretrustseal-news.json @@ -0,0 +1 @@ +{"title":"Reactome Recognized with CoreTrustSeal Certification","category":"about","date":"2025-05-20T12:48:44-04:00","tags":"[\"about\", \"news\", \"273-coretrustseal-news\"]","body":"\n## Reactome Recognized with CoreTrustSeal Certification \n\nWe are excited to share that the Reactome Knowledgebase has officially received CoreTrustSeal certification, a recognition awarded to data repositories that meet high standards for trustworthiness, sustainability, and open data practices.\n\nThis milestone reflects years of work by the Reactome team to ensure that our data is not only freely available and open-source, but also stable, well-documented, and responsibly maintained. CoreTrustSeal certification signals to users, funders, and collaborators that Reactome is committed to the long-term availability and stewardship of its content. Learn more about CoreTrustSeal at [www.coretrustseal.org.]()\n\nFor researchers who rely on Reactome for pathway analysis, systems biology, and data integration, this designation offers added confidence in the quality and integrity of the resource. It also strengthens our role within the global open science ecosystem by aligning with FAIR and TRUST principles.\n\nA sincere thank you to the broad community of collaborators, advisors, and users who help make Reactome what it is and continue to shape the future.\n\n![](https://www.coretrustseal.org/)![Core Trust Seal Logo](/uploads/about/news/cropped-cropped-CoreTrustSeal-logo-150px.jpg)\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/275-v93-released.json b/projects/website-angular/content-dist/about/news/275-v93-released.json new file mode 100644 index 00000000..45ab0917 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/275-v93-released.json @@ -0,0 +1 @@ +{"title":"V93 Released","category":"about","date":"2025-06-12T13:09:20-04:00","tags":"[\"about\", \"news\", \"275-v93-released\"]","body":"\n## V93 Released \n\n![R HSA 9734779 newsV93](/uploads/about/news/R-HSA-9734779_newsV93.png)\n\n[Developmental Lineages of Integumentary System]()\n\nNew and Updated Topics and Pathways. Topics with new or revised pathways in this release include Cell-Cell Communication ([Regulation of CDH1 Expression and Function]()), Circadian clock ([BMAL1:CLOCK,NPAS2 activates circadian expression]()), Developmental Biology ([Developmental Lineage of Mammary Gland Myoepithelial Cells](), [Developmental Lineage of Mammary Stem Cells](), [Developmental Lineages of the Mammary Gland]()), Disease ([Infection with Enterobacteria](), [Loss of Function of KMT2D in Kabuki Syndrome]()), Metabolism ([Cholesterol biosynthesis](), [Cytochrome P450 - arranged by substrate type](), [Cytosolic iron-sulfur cluster assembly](), [Glycogen breakdown (glycogenolysis)](), [Glycosaminoglycan metabolism](), [Integration of energy metabolism](), [Lactose synthesis](), [Lipid particle organization](), [Melanin biosynthesis](), [Nicotinate metabolism](), [Oleoyl-phe metabolism](), [Regulation of glycolysis by fructose 2,6-bisphosphate metabolism](), [Synthesis of PIPs at the Golgi membrane]()), Metabolism of Proteins ([DAG1 glycosylations](), [Matriglycan biosynthesis on DAG1](), [Metabolism of Angiotensinogen to Angiotensins](), [Mitochondrial ribosome-associated quality control](), [Mitochondrial translation termination](), [O-linked glycosylation]()), Metabolism of RNA ([Mitochondrial mRNA modification](), [rRNA modification in the mitochondrion](), [tRNA modification in the mitochondrion](), [tRNA modification in the nucleus and cytosol]()) and Signal Transduction ([Peptide ligand-binding receptors]()).\n\nNew and Updated Illustrations. New or revised Illustrations with embedded navigation features have been created for [Bacterial Infection Pathways](), [Defects of platelet adhesion to exposed collagen](), [Developmental Cell Lineages](), [Developmental Lineages of Integumentary System](), [Developmental Lineages of the Mammary Gland](), [Disorders of Developmental Biology](), [Extracellular matrix organization](), [Metabolism of RNA](), and [Mucopolysaccharidosis]().\n\nThanks to our Contributors. [Tessa Kolar]() and [Jingping Qiao]() are our external authors and [Urs Albrecht](), [Michael Bader](), [Aleksandra Filipovska](), [Aleksandra Filipovska](), [David P Hill](), [Alexis A Jourdain](), [Kenneth C Keiler](), [Vamsi K Mootha](), [Robson Augusto Souza Santos](), [Divyasorubini Seerpatham](), [Eric A Shoubridge](), [Manal A Swairjo](), [Rhian M Touyz](), and [Rossana Zaru]() are our external reviewers.\n\nAnnotation Statistics. Reactome comprises 15,890 human reactions organized into 2,799 pathways involving 31,906 proteins and modified forms of proteins encoded by 11,396 different human genes, 15,621 complexes, 2,172 small molecules, and 1,068 drugs. These annotations are supported by 41,048 literature references. We have projected these reactions onto 80,576 orthologous proteins, creating 20,102 orthologous pathways in 14 non-human species. Version 93 has annotations for 5,510 protein variants (mutated proteins) and their post-translationally modified forms, derived from 393 proteins, which have contributed to the annotation of 1,881 disease-specific reactions and 764 pathways. \n\nOther news: \n\nAs of Reactome V93, our Docker images are no longer available on DockerHub and have been migrated to AWS Elastic Container Registry (ECR). Users should pull images from AWS ECR moving forward. Updated access instructions are available in our [documentation]().\n\nAs of Reactome V94, the following files will no longer be available: “Protégé 2.0 ontology files”, and “Events in the BioPAX level 2 format”. If you require these files for your work, please let our team know via [help@reactome.org]().\n\nTools and Data. Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [ReactomeFIViz]() app and [ReactomeGSA]() package provide tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\nDocumentation and Training. Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\nAbout the Reactome Project. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The EMBL - European Bioinformatics Institute. Reactome is both an [ELIXIR Core Data Resource]() and a [Global Core Biodata Resource](). Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) License applies to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art, and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\nFollow us on Twitter: [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\nFor more information: If you have a question, want to provide feedback, or are interested in collaborating with us to annotate a topic, please contact us at [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/279-v94-released.json b/projects/website-angular/content-dist/about/news/279-v94-released.json new file mode 100644 index 00000000..b4c55c51 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/279-v94-released.json @@ -0,0 +1 @@ +{"title":"V94 Released","category":"about","date":"2025-09-11T01:17:50-04:00","tags":"[\"about\", \"news\", \"279-v94-released\"]","body":"\n## V94 Released \n\n![R HSA 1474244](/uploads/about/news/R-HSA-1474244.png)\n\n[Extracellular matrix organization]()\n\nNew and Updated Topics and Pathways. Topics with new or revised pathways in this release include Cell Cycle ([p53-Independent G1/S DNA Damage Checkpoint]()), Developmental Biology ([Developmental Lineage of Mammary Gland Cells](), [Developmental Lineage of Mammary Gland Alveolar Cells](), [Developmental Lineage of Mammary Gland Luminal Epithelial Cells](), [Differentiation of naive CD4+ T cells to T helper 1 cells (Th1 cells)]()), Disease ([Microbial factors inhibit CASP4 activity](), [SLC transport disorders]()), Immune System ([Activation of C3 and C5](), [Non-canonical inflammasome activation](), [Regulation of PD-L1 transcription](), [Regulation of PD-L1 translation](), [Regulation of PD-L1 post-translation modification]()), [Metabolism](), Metabolism of proteins ([Ribosome-associated quality control]()), and Transport of small molecules ([SLC-mediated transmembrane transport]()). \n\nNew and Updated Illustrations. New or revised Illustrations with embedded navigation features have been created for [Developmental biology](), [Developmental Lineages of the Mammary Gland](), [Differentiation of T cells](), [Extracellular matrix organization](), [Innate Immune System](), [Regulation of Expression and Function of Type II Classical Cadherins](), [SLC-mediated transmembrane transport](), [Translation](), [Drug resistance in ERBB2 KD mutants](), and [SLC transporter disorders]().\n\nThanks to our Contributors. [Mien-Chie Hung](), [Jingping Qiao](), and [Hirohito Yamaguchi]() are our external authors and [Isabella Barbutti](), [Eric J Bennett](), [Huiquan Duan](), [Mien-Chie Hung](), [Pierce Ford](), [David P Hill](), [Graham M Lord](), [Jingping Qiao](), [Xuyan Shi]() and [Hirohito Yamaguchi]()are our external reviewers.\n\nAnnotation Statistics. Reactome comprises 16,002 human reactions organized into 2,825 pathways involving 31,991 proteins and modified forms of proteins encoded by 11,410 different human genes, 15,751 complexes, 2,176 small molecules, and 1,070 drugs. These annotations are supported by 41,373 literature references. We have projected these reactions onto 80,701 orthologous proteins, creating 20,320 orthologous pathways in 14 non-human species. Version 94 has annotations for 5,507 protein variants (mutated proteins) and their post-translationally modified forms, derived from 392 proteins, which have contributed to the annotation of 1,888 disease-specific reactions and 763 pathways. Our illustration library now includes 2,500 icons and over 200 high-level interactive pathway Illustrations.\n\n**Other news** : \n\nAs of Reactome V93, our Docker images are no longer available on DockerHub and have been migrated to AWS Elastic Container Registry (ECR). Users should pull images from AWS ECR moving forward. Updated access instructions are available in our [documentation]().\n\nAs of Reactome V94, the following files will no longer be available: “Protégé 2.0 ontology files”, and “Events in the BioPAX level 2 format”. If you require these files for your work, please let our team know via [help@reactome.org]().\n\nTools and Data. Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [Reactome FIViz]() app and [ReactomeGSA]() package provide tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\nDocumentation and Training. Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\nAbout the Reactome Project. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The EMBL - European Bioinformatics Institute. Reactome is both an [ELIXIR Core Data Resource]() and a [Global Core Biodata Resource]() and has been certified as a Trustworthy Data Repository by the CoreTrustSeal Standards and Certification Board. \n\nReactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) License applies to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art, and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\nFollow us on Twitter: [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\nFor more information: If you have a question, want to provide feedback, or are interested in collaborating with us to annotate a topic, please contact us at [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/280-reactome-pathway-browser-new-beta-release.json b/projects/website-angular/content-dist/about/news/280-reactome-pathway-browser-new-beta-release.json new file mode 100644 index 00000000..64eed49e --- /dev/null +++ b/projects/website-angular/content-dist/about/news/280-reactome-pathway-browser-new-beta-release.json @@ -0,0 +1 @@ +{"title":"Reactome Pathway Browser: New Beta Release","category":"about","date":"2025-09-18T08:34:09-04:00","tags":"[\"about\", \"news\", \"280-reactome-pathway-browser-new-beta-release\"]","body":"\n## Reactome Pathway Browser: New Beta Release \n\nReactome is excited to announce the beta release of our redesigned Pathway Browser, now available at: []()\n\nThis major update delivers a modernized user interface (UI) and user experience (UX), along with new visualization and analysis features.\n\n#### Key Highlights\n\n##### **Event Hierarchy**\n\n * New hierarchical navigation panel for species, data overlays, and pathways.\n * Color-coded annotations highlight new or updated content.\n * Integrated analysis results directly into hierarchy view.\n\n##### **ReacFoam (New Fireworks View)**\n\n * Replaces legacy Fireworks with a Voronoï-based map of pathways.\n * Pathways sized by molecular complexity and grouped by biological themes.\n * Stable, concept-driven layout across platforms.\n\n##### **Enhanced High-Level Illustrations (EHLDs)**\n\n * Fully interactive high-level pathway diagrams.\n * Now powered by Figma icon library (free & open:[ ]()). \nUpdated rendering improves analysis overlays and interpretability.\n\n##### **Redesigned Pathway Diagrams**\n\n * Cleaner, SBGN-inspired design with consistent shapes and colors.\n * Integration of 3D protein structures (via AlphaFold, 3D-Beacons, PDBe) and ChEBI chemical structures.\n * Interactive legend and smoother zoom for detailed exploration.\n\n##### **Analysis Tools**\n\n * Modernized interface with four streamlined modes: \n \n\n 1. Qualitative Pathway Enrichment (renamed from “Analyse gene list”)\n 2. Quantitative Pathway Enrichment (renamed from “Analyse gene expression”)\n 3. Species Pathway Enrichment (renamed from “Species Comparison”)\n 4. Tissue Pathway Enrichment (renamed from “Tissue Distribution”) \n \n\n * New sample-handling, filters, and improved visualization of enrichment results.\n\n##### **Compare Mode (New)**\n\n * Side-by-side comparison of normal vs. disease pathways.\n * Interactive “layer” interface highlights disease-specific alterations.\n * Future-ready for orthology and other comparative applications.\n\n##### **Search Improvements**\n\n * Unified results by reference entity (e.g., all forms of a protein).\n * Clearer separation between pathway-local and global results.\n * Direct navigation to context-specific appearances of entities.\n\n##### **Try It Out**\n\nExplore the new Pathway Browser beta at: \n🔗 []()\n\nReactome invites community feedback to refine and finalize this release \n🔗 \n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/284-v95-released.json b/projects/website-angular/content-dist/about/news/284-v95-released.json new file mode 100644 index 00000000..00afc89e --- /dev/null +++ b/projects/website-angular/content-dist/about/news/284-v95-released.json @@ -0,0 +1 @@ +{"title":"V95 Released","category":"about","date":"2025-12-03T18:22:40-05:00","tags":"[\"about\", \"news\", \"284-v95-released\"]","body":"\n## V95 Released \n\n![R HSA 9839923](/uploads/about/news/R-HSA-9839923.png)\n\n[Dengue Virus Infection]()\n\nNew and Updated Topics and Pathways. Topics with new or revised pathways in this release include Disease ([Dengue virus infection](), [Diseases of urea cycle](), [Enterobacterial factors antagonize host defense](), [NS1-mediated effects on host pathways](), and [SARS-CoV-2 activates/modulates innate and adaptive immune responses]()), Gene expression ([Epigenetic regulation of gene expression by MLL3 and MLL4 complexes]() and [Epigenetic regulation of adipogenesis genes by MLL3 and MLL4]()) Immune System ([GBP-mediated host defense]()), Metabolism ([ATF6B (ATF6-beta) activates chaperones](), [Cholesterol biosynthesis via desmosterol (Bloch pathway)](), [Cytosolic sulfonation of small molecules](), [Estrogen biosynthesis](), [Regulation of glucokinase by glucokinase regulatory protein](), [Urea cycle]()), Metabolism of proteins ([Ribosome-associated quality control]()), Metabolism of RNA ([mRNA polyadenylation](), [Nuclear RNA decay]()) and Vesicle-mediated transport ([Scavenging by class B receptors]()). \n\nNew and Updated Illustrations. New or revised illustrations with embedded navigation features have been created for [Antiviral mechanism by IFN-stimulated genes](), [Dengue virus infection](), [Diseases of Metabolism](), [Diseases of urea cycle](), [OTC variants cause OTC deficiency](), and [Viral infection pathways]().\n\nThanks to our Contributors. [Rhea Ahluwalia]() is our external author and [Marvin Aberin](), [Satoko Arai](), [Fernando Roque Ascenção](), [Oliver Daumke](), [David P Hill](), [Seyed Mehdi Jafarnejad](), [Joy Khag](), [Daniel Santos Mansur](), [Tom McGirr](), [Toru Miyazaki](), [Sisira Kadambat Nair](), [Liang Tong](), and [Shu-Ping Wang]() are our external reviewers.\n\nAnnotation Statistics. Reactome comprises 16,200 human reactions organized into 2,848 pathways involving 32,318 proteins and modified forms of proteins encoded by 11,429 different human genes, 16,031 complexes, 2,183 small molecules, and 1,085 drugs. These annotations are supported by 42,098 literature references. We have projected these reactions onto 83,074 orthologous proteins, creating 20,429 orthologous pathways in 14 non-human species. Version 95 has annotations for 5750 protein variants (mutated proteins) and their post-translationally modified forms, derived from 399 proteins, which have contributed to the annotation of 2040 disease-specific reactions and 781 pathways. Our Illustration library now includes 2,500 icons and over 200 high level interactive pathway Illustrations.\n\nOther news: \n\nAs of Reactome V94, the following files will no longer be available: “Protégé 2.0 ontology files”, and “Events in the BioPAX level 2 format”. If you require these files for your work, please let our team know via [help@reactome.org]().\n\nTools and Data. Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [Reactome FIViz]() app and [ReactomeGSA]() package provide tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\nReactome is excited to announce the beta release of our [redesigned Pathway Browser](). This major update delivers a modernized user interface (UI) and user experience (UX), along with new visualization and analysis features. Please provide us with your [feedback]().\n\nDocumentation and Training. Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\nAbout the Reactome Project. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The EMBL - European Bioinformatics Institute. Reactome is both an [ELIXIR Core Data Resource]() and a [Global Core Biodata Resource]() and has been certified as a Trustworthy Data Repository by the [CoreTrustSeal]() Standards and Certification Board.\n\nReactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) License applies to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art, and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\nFollow us on [Bluesky]() to get frequent updates about new and updated pathways, feature updates, and more!\n\nFor more information: If you have a question, want to provide feedback, or are interested in collaborating with us to annotate a topic, please contact us at [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/286-new-publication-in-nar-2026.json b/projects/website-angular/content-dist/about/news/286-new-publication-in-nar-2026.json new file mode 100644 index 00000000..52ed7a2d --- /dev/null +++ b/projects/website-angular/content-dist/about/news/286-new-publication-in-nar-2026.json @@ -0,0 +1 @@ +{"title":"New Publication in NAR 2026:","category":"about","date":"2025-12-08T16:18:39-05:00","tags":"[\"about\", \"news\", \"286-new-publication-in-nar-2026\"]","body":"\n## New Publication in NAR 2026: \n\nA new research article entitled “The Reactome Knowledgebase 2026” has been published in the Nucleic Acids Research 2026 Databases Issue. The paper highlights Reactome’s redesigned Angular-based interface, enhanced global and entity-level visualizations, multi-omics analysis tools, and innovations such as the React-to-Me chatbot. It also details Reactome’s community resources, FAIR data compliance, and recognition as a CoreTrustSeal-certified and ELIXIR Global Core Biodata resource.\n\nThe full publication is available at[ ]()\n\n![NAR2026](/uploads/about/news/NAR2026.jpg)\n\nMore publications from the [Reactome Team]() can be found [here]().![](https://pubmed-ncbi-nlm-nih.gov/41251150/)\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/288-reactome-releases-two-new-ai-focused-preprints.json b/projects/website-angular/content-dist/about/news/288-reactome-releases-two-new-ai-focused-preprints.json new file mode 100644 index 00000000..239c2639 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/288-reactome-releases-two-new-ai-focused-preprints.json @@ -0,0 +1 @@ +{"title":"Reactome Releases Two New AI-Focused Preprints","category":"about","date":"2026-02-05T11:16:48-05:00","tags":"[\"about\", \"news\", \"288-reactome-releases-two-new-ai-focused-preprints\"]","body":"\n## Reactome Releases Two New AI-Focused Preprints \n\nReactome has released two preprints describing recent advances in applying artificial intelligence to pathway curation and user access.\n\nThe preprint, [_Application of Large Language Models for Annotating Genes into Reactome Pathways_](), presents an LLM-assisted workflow that supports expert curators by identifying candidate pathways for genes, retrieving relevant literature, and generating mechanistic summaries. Evaluation shows that the approach can meaningfully support manual curation while preserving curator oversight.\n\n![](https://www.biorxiv.org/content/10.64898/2025.12.20.695723v1.full)![F4.large](/uploads/about/news/288-reactome-releases-two-new-ai-focused-preprints/F4.large.jpg)\n\n_Screenshots of the LLM App in the web-based Reactome curation tool for query gene input, configuration and annotated pathways._\n\nThe preprint, [_React-to-Me: A Conversational Interface for Interactive Exploration of the Reactome Pathway Knowledgebase_](), introduces a grounded conversational assistant that enables natural language queries over Reactome content. The system enforces source traceability to curated data and avoids speculative responses, improving accessibility without sacrificing factual accuracy.\n\n![F1.large](/uploads/about/news/288-reactome-releases-two-new-ai-focused-preprints/F1.large.jpg)![](https://www.biorxiv.org/content/10.64898/2025.12.12.693752v1)\n\n_Graphical abstract showing React-to-Me._\n\nTogether, these studies outline a practical framework for integrating AI into Reactome to enhance scalability and usability while maintaining scientific rigor.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/291-v96-released.json b/projects/website-angular/content-dist/about/news/291-v96-released.json new file mode 100644 index 00000000..af515132 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/291-v96-released.json @@ -0,0 +1 @@ +{"title":"V96 Released","category":"about","date":"2026-04-01T20:56:55-04:00","tags":"[\"about\", \"news\", \"291-v96-released\"]","body":"\n## V96 Released\n\n![R HSA 9975921 medres]()\n\n[Assembly of the 9+0 primary cilium]()\n\nNew and Updated Topics and Pathways. Topics with new or revised pathways in this release include Cell-cell communication ([Activation of STAT3 by cadherin engagement]()), Chromatin organization ([CHD chromatin remodelers]()), Developmental biology ([Differentiation of naive CD4+ T cells to T helper 2 cells (Th2 cells)]()), Disease ([Defects of coagulation cascade]()) and [Defects of contact activation system]()), DNA repair ([HDR through Single Strand Annealing (SSA)]()), Gene expression ([PRC2 methylates histones and DNA]()), Hemostasis ([Coagulation pathway]()), Immune system ([FXII activates plasma kallikrein-kinin system]() and [FXIIa, PKa-dependent activation of coagulation pathway](), [Regulation of Complement cascade]()), Metabolism ([choline metabolism](), [Inositol phosphate metabolism]() and [Thyroxine metabolism and iodide transport]()), Muscle Contraction ([Cardiac Conduction]()), Signal Transduction ([Formation of the beta-catenin:TCF transactivating complex]() and [MTOR signalling]()), and Transport of small molecules ([Organic anion transport by SLC22 transporters]()).\n\nNew and Updated Illustrations. New or revised illustrations with embedded navigation features have been created for [Cilium assembly](), [Assembly of the 9+0 primary cilium](), [ATP-dependent chromatin remodelers](), [Defects of coagulation cascade](), [Defects of contact activation system and kallikrein-kinin system](), [Differentiation of T cells](), [Diseases of hemostasis](), [Diseases of immune system](), [Hemostasis](), and [Innate immune system]().\n\nThanks to our Contributors. [Hanad Adan](), [Juliet Daniel](), [Anthony J Gesino](), [Leda Raptis](), and [Arielle Vaglio]() are our external authors and [Isabella Barbutti](), [David P Hill](), [Lin Huang](), [Graham M Lord](), are [Alvin H Schmaier]() our external reviewers.\n\nAnnotation Statistics. Reactome comprises 16,338 human reactions organized into 2,870 pathways involving 32,399 proteins and modified forms of proteins encoded by 11,452 different human genes, 16,145 complexes, 2,198 small molecules, and 1,102 drugs. These annotations are supported by 42,784 literature references. We have projected these reactions onto 83,074 orthologous proteins, creating 20,616 orthologous pathways in 14 non-human species. Version 96 has annotations for 5752 protein variants (mutated proteins) and their post-translationally modified forms, derived from 400 proteins, which have contributed to the annotation of 2056 disease-specific reactions and 788 pathways. Our Illustration library now includes over 2,500 icons and over 200 high level interactive pathway Illustrations.\n\nOther news: \n\nTools and Data. Our services and software tools are designed for biologists, bioinformaticians, and software developers. Pathway data is available to view in our [Pathway Browser](), to [analyze]() your own dataset, to [download](), and access programmatically through our [Content]() and [Analysis]() Services. The [Reactome FIViz]() app and [ReactomeGSA]() package provide tools for multi-omics data analysis. The [idg.reactome.org]() Web Portal provides a collection of web-based tools to help researchers place understudied proteins in a pathway context. \n\nReactome is excited to announce the beta release of our [redesigned Pathway Browser](). This major update delivers a modernized user interface (UI) and user experience (UX), along with new visualization and analysis features. Please provide us with your [feedback]().\n\nDocumentation and Training. Visit our online [User Guide]() to access documentation supporting pathway analysis of experimental data. The [Developer's Zone]() provides detailed documentation regarding our software, tools, and web services. Training and learning materials can be found [here]().\n\nAbout the Reactome Project. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The EMBL - European Bioinformatics Institute. Reactome is both an [ELIXIR Core Data Resource]() and a [Global Core Biodata Resource]() and has been certified as a Trustworthy Data Repository by the [CoreTrustSeal]() Standards and Certification Board.\n\nReactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence. A Creative Commons Attribution 4.0 International (CC BY 4.0) License applies to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art, and Branding Materials. A full description of the new and updated content is available on the Reactome [website]().\n\nFollow us on [email protected] get frequent updates about new and updated pathways, feature updates, and more!\n\nFor more information: If you have a question, want to provide feedback, or are interested in collaborating with us to annotate a topic, please contact us at [[email protected].]()\n\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/71-version-57-released.json b/projects/website-angular/content-dist/about/news/71-version-57-released.json new file mode 100644 index 00000000..8eb1f5b1 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/71-version-57-released.json @@ -0,0 +1 @@ +{"title":"Version 57 Released","category":"about","date":"2016-06-27T13:13:06-04:00","tags":"[\"about\", \"news\", \"71-version-57-released\"]","body":"\n## Version 57 Released \n\nIn version V57, topics with new or revised pathways include: Developmental biology ([RET signaling]()), Disease ([Signaling by FGFR in disease]() and [Defective CFTR causes cystic fibrosis]()), Gene expression ([rRNA modification in the mitochondrion]() and [Transcriptional regulation by the AP-2 (TFAP2) family of transcription factors]()), Immune system ([ER-Phagosome pathway](), [Interleukin-7 signaling](), [Regulation by endogenous TLR ligand](), and [TCR signaling]()), Metabolism ([Lipid digestion, mobilization, and transport]() and [Phosphate bond hydrolysis by NTPDase proteins]()). Metabolism of proteins ([Deubiquitination]()), Neuronal system ([Interactions of neurexins and neuroligins at synapses]() and [SALM protein interactions at synapse]()). Signal transduction ([EGFR downregulation](), [Signaling by FGFR1](), and [FGFRL1 modulation of FGFR1 signaling]()), Transmembrane transport of small molecules ([ABC-family proteins mediated transport]()) and Vesicle-mediated transport ([Clathrin-mediated endocytosis]()).\n\nOur external author is [Alba Sanchis](). [Costin Antonescu](), [John Bergeron](), [Daniel Bogenhagen](), [Nunzio Bottini](), [Guang-Chao Chen](), [Igor Dawid](), [Regina Fluhrer](), [Noriko Gotoh](), [Francesca Granucci](), [Richard Grose](), [Paul Heppenstall](), [Jing Hu](), [Jan Huertas](), [Wenqin Luo](), [Malay Mandal](), [Birgit Meldal](), [Daniel Morales](), [Tatsunori Nishimura](), [Ronald Petralia](), [Gail Seabold](), [Sunny Sharma](), [Stephanie Stanford](), [Jean Sévigny](), [Philip Washbourne](), [Ivan Zanoni](), and [Valeria Zarelli]() are our external reviewers**.**\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/72-version-58-released.json b/projects/website-angular/content-dist/about/news/72-version-58-released.json new file mode 100644 index 00000000..354aaee2 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/72-version-58-released.json @@ -0,0 +1 @@ +{"title":"Version 58 Released","category":"about","date":"2016-09-28T13:14:30-04:00","tags":"[\"about\", \"news\", \"72-version-58-released\"]","body":"\n## Version 58 Released \n\n**[![illustration deregulated CDK5 triggers multiple neurodegenerative pathways 72](/uploads/about/news/illustration_deregulated_CDK5_triggers_multiple_neurodegenerative_pathways_72.png)]()**\n\n**New and Updated Pathways.** With version V58, Reactome has annotations for over 10,000 human proteins. New or revised pathways include: Cell cycle ([FBXL7 down-regulates AURKA during mitotic entry and in early mitosis]()), Developmental biology ([Keratinization]()), Disease ([Oncogenic MAPK signaling]() and [Deregulated CDK5 triggers multiple neurodegenerative pathways in Alzheimer’s disease models]()), Gene expression ([PI5P Regulates TP53 Acetylation](), [Transcriptional regulation by the AP-2 (TFAP2) family of transcription factors]()), Immune system ([Neutrophil degranulation]() and [Antimicrobial peptides]()), Metabolism of proteins ([Synthesis of active ubiquitin: roles of E1 and E2 enzymes]()), Signal transduction ([Signaling by MET]() and [Downregulation of ERBB2 signaling]()), and Vesicle-mediated transport ([RAB GEFs exchange GTP for GDP on RABs]()).\n\nA pathway illustration is available for [Deregulated CDK5 triggers multiple neurodegenerative pathways in Alzheimer’s disease ]().\n\n**Thanks to our Contributors.** Our external author is [Kavita Shah](). [Emily Ayoub](), [Jorge Azevedo](), [Walter Birchmeier](), [Miroslav Blumenberg](), [Maria Bogachek](), [Nullin Divecha](), [Roman Dziarski](), [Rhys Grant](), [David Hains](), [Niels Heegard](), [Guustaaf Heynen](), [Catherine Lindon](), [Andrea Marat](), [Robert Stephens](), [Michel Tremblay](), and [Ronald Weigel]() are our external reviewers.\n\nReactome comprises 10,168 human reactions organized into 2,069 pathways involving 10,461 proteins encoded by 10,221 different human genes, and 1,710 small molecules. These annotations are supported by 24,974 literature references. We have projected these reactions onto 110,710 orthologous proteins, creating 19,991 orthologous pathways in 18 non-human species.\n\nReactome is a collaboration between groups at the Ontario Institute for Cancer Research, New York University Medical Center, and The European Bioinformatics Institute. Reactome data and software are distributed under the terms of the Creative Commons Attribution 4.0 License. A full description of the new and updated content is available on the [Reactome website]().\n\n**Follow us on Twitter:**[@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\nFor more information please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/73-reactome-celebrates-release-of-10-000th-annotated-protein.json b/projects/website-angular/content-dist/about/news/73-reactome-celebrates-release-of-10-000th-annotated-protein.json new file mode 100644 index 00000000..cc3804f3 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/73-reactome-celebrates-release-of-10-000th-annotated-protein.json @@ -0,0 +1 @@ +{"title":"Reactome celebrates release of 10,000th annotated protein","category":"about","date":"2017-08-20T13:15:27-04:00","tags":"[\"about\", \"news\", \"73-reactome-celebrates-release-of-10-000th-annotated-protein\"]","body":"\n## Reactome celebrates release of 10,000th annotated protein \n\n[![10K Reactome](/uploads/about/news/10K_Reactome.png)]()\n\nThe Reactome team is pleased to announce that it met a major milestone in October 2016 with the annotation and release of its 10,000th human protein. Reactome ([www.reactome.org]()) is an open access curated knowledgebase which relates human genes, proteins and other biomolecules to the biological pathways and processes in which they participate. It is a key resource for the biomedical research community, and is widely used by researchers around the world to interpret high-throughput experiments in genetics, genomics and proteomics. Given that the human genome contains roughly 20,000 protein-coding genes in total, the annotation of the 10,000th protein means that Reactome now covers half of the protein-coding portion of the genome. This makes Reactome the most comprehensive open access pathway knowledgebase available to the scientific community.\n\nBy relating genes and proteins to normal and abnormal biological pathways, Reactome allows researchers to identify patterns in large data sets. For example, researchers can use Reactome to reduce an experiment that identified thousands of genes whose activities are altered in a disease to a manageable number of key biological pathways that are disrupted by these changes. Researchers can then combine Reactome with other databases to find drugs and protein targets that might reverse the pathway alterations, or to devise ways of diagnosing the disease at an early stage. Via its web site, online tools, and specialized visualization and analysis applications, Reactome has been incorporated into more than 400 third-party genome analysis tools, and has been cited more than 4,000 times in the scientific literature. \n\nReactome has been in continuous operation since 2004 and is an international collaboration among the Ontario Institute for Cancer Research in Canada, New York University School of Medicine in the United States, and the European Bioinformatics Institute in the United Kingdom. It is staffed by expert biological curators, bioinformaticians and computer scientists. Much of its content is provided by community authors and peer reviewers who are assisted by the curatorial staff. The Reactome content, including pathway data and the software infrastructure, are available to all comers free of charge under a Creative Commons open access license. Reactome is supported by grants from the US National Institutes of Health, the Ontario Research Fund, the University of Toronto, OpenTargets, Genome Canada, and the European Molecular Biology Laboratory.\n\n**Follow us on Twitter:**[@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\nFor more information please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/74-version-59-release.json b/projects/website-angular/content-dist/about/news/74-version-59-release.json new file mode 100644 index 00000000..c75f77a5 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/74-version-59-release.json @@ -0,0 +1 @@ +{"title":"Version 59 Released","category":"about","date":"2016-12-21T13:16:00-05:00","tags":"[\"about\", \"news\", \"74-version-59-release\"]","body":"\n## Version 59 Released \n\n**New and Updated Pathways.** In version V59, topics with new or revised pathways include: Disease ([Listeria monocytogenes entry into host cells]()), Hemostasis ([Cell surface interaction at the vascular wall]()), Immune System ([Butyrophilins](), [Interleukin 10 signalling](), and [Interleukin-4 and 13 signaling]()), Metabolism ([Nicotinate metabolism](), [Synthesis of PIPs at the nuclear envelope](), [Vitamin B5 (pantothenate) metabolism](), and [Aryl hydrocarbon receptor signalling]()), Metabolism of proteins ([E3 ubiquitin ligases ubiquitinate target proteins](), [Peptide-ligand binding receptors](), [Protein methylation](), [RAB geranylgeranylation]()), Signal transduction ([Class A/1 (Rhodopsin-like receptors]()), and Vesicle-mediated transport ([TBC RABGAPs]()).\n\n**Thanks to our Contributors.** Our external reviewers are [Jorge Azevedo](), [Ester Boix](), [Lu Deng](), [Pål Falnes](), [Vardan Karamyan](), [Samuel Leibovich](), [Weei-Chin Lin](), [Charuta Palsuledesai](), [Joel Pomerantz](), [Walter Reith](), [Sylvie Ricard-Blum](), [Christian Schwerk](), [Bruce Spiegelman](), and [Xiaochun Yu]().\n\n**Annotation Statistics.** Reactome comprises 10,391 human reactions organized into 2,080 pathways involving 10,624 proteins encoded by 10,381 different human genes, and 1,735 small molecules. These annotations are supported by 25,449 literature references. We have projected these reactions onto 115,881 orthologous proteins, creating 20,164 orthologous pathways in 18 non-human species. Version 59 has annotations for 1,496 protein variants (mutated proteins) and their post-translationally modified forms, derived from 285 proteins. These have been used to annotate 506 disease-specific complexes and 897 disease-specific reactions organized into 447 pathways and subpathways, and tagged with 294 Disease Ontology terms.\n\n**About the Reactome Project**. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, New York University Medical Center, and The European Bioinformatics Institute. Reactome data and software are distributed under the terms of the Creative Commons Attribution 4.0 License. A full description of the new and updated content is available on the [Reactome website]().\n\n**Follow us on Twitter:[@reactome]()** to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information.** Please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/75-new-reactome-publication.json b/projects/website-angular/content-dist/about/news/75-new-reactome-publication.json new file mode 100644 index 00000000..19ada140 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/75-new-reactome-publication.json @@ -0,0 +1 @@ +{"title":"New Reactome Publication","category":"about","date":"2017-08-20T13:16:36-04:00","tags":"[\"about\", \"news\", \"75-new-reactome-publication\"]","body":"\n## New Reactome Publication \n\nA new Reactome paper titled “Functional Interaction Network Construction and Analysis for Disease Discovery” has been published in [Methods in Molecular Biology](). More publications from the [Reactome Team]() can be found [here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/76-new-reactome-paper-published.json b/projects/website-angular/content-dist/about/news/76-new-reactome-paper-published.json new file mode 100644 index 00000000..f764d953 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/76-new-reactome-paper-published.json @@ -0,0 +1 @@ +{"title":"New Reactome Paper published","category":"about","date":"2017-08-20T13:17:08-04:00","tags":"[\"about\", \"news\", \"76-new-reactome-paper-published\"]","body":"\n## New Reactome Paper published \n\nA new Reactome paper titled “Reactome pathway analysis: a high-performance in-memory approach” has been published in [BMC Bioinformatics](). More publications from the [Reactome Team]() can be found [here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/77-version-60-released.json b/projects/website-angular/content-dist/about/news/77-version-60-released.json new file mode 100644 index 00000000..0006412b --- /dev/null +++ b/projects/website-angular/content-dist/about/news/77-version-60-released.json @@ -0,0 +1 @@ +{"title":"Version 60 Released","category":"about","date":"2017-04-20T13:18:03-04:00","tags":"[\"about\", \"news\", \"77-version-60-released\"]","body":"\n## Version 60 Released \n\n**New and Updated Pathways.****** In version V60, topics with new or revised pathways include: Cell cycle ([Cyclin D associated events in G1]()), Cell-cell communication [(SDK interactions]()), Cellular response to external stimuli ([HSP90 chaperone cycle for steroid hormone receptors (SHR)]()), Disease ([Diseases of Mismatch Repair]()), Gene Expression ([TP53 Regulates Transcription of Genes Involved in G1 Cell Cycle Arrest]() and [Transcriptional Regulation by the CBFB:RUNX3 complex]()), Immune System ([Butyrophilins]() and [Regulation of complement cascade]()), Metabolism ([Synthesis of IP2, IP, and Ins in the cytosol](), [Synthesis of PIPs at the early endosome membrane](), [Synthesis of PIPs at the ER membrane](), [Synthesis of PIPs at the late endosome membrane](), and [Synthesis of PIPs at the plasma membrane]()), Metabolism of proteins ([CREB3 factors activate genes](), [Neddylation](), [Protein ubiquitination](), and [SUMOylation of chromatin organizing proteins]()), Mitophagy ([Receptor Mediated Mitophagy]()), Neuronal System ([Receptor protein tyrosine phosphatases interactions]()), Organelle biogenesis and maintenance ([Cristae formation]()), and Transport of small molecules ([Mitochondrial calcium ion transport]()).\n\n**Thanks to our Contributors.** [Wei-Chih Yang]() and [Jian Lu]() are our external authors. [Joseph Ainscough](), [Sanjeevani Arora](), [Jorge E Azevedo]()[, Jeehyeon Bae](), [Lucia Banci](), [Gautam Bhave](), [David R Brown](), [Roberta Bulla](), [Alexandre M Carmo](), [Linda Shyue Huey Chuang](), [Karlene A Cimprich](), [Laura Crisponi](), [Alain de Bruin]()[, Luisa Di Stefano]() [, Ilaria Drago](), [Pablo C Echeverria](), [Du Feng](), [Emer S Ferro](), [Dianne Ford](), [Frances V Fuller-Pace](), [Cem Gabay](), [Dominique Gagliardi](), [Marcia Haigis](), [J Wade Harper](), [Barry Honig](), [Yoshiaki Ito]()[, Veerle Janssens](), [Nathalie Josso](), [Jaewon Ko]() , [Vera Kozjak-Pavlovic](), [Anastasia Kralli](), [Paul J Lehner](), [Dominique Leprince](), [Bruce D Levy](), [Wei Li](), [Francisco Lozano](), [Jian Lu](), [Michael J Matunis,]() [Birgit Meldal](), [Violaine Moreau](), [Kyungjae Myung](), [Joseph H Neale](), [Christian Obinger]()[, R Jeroen Pasterkamp](), [Richard Phipps](), [Didier Picard](), [Elah Pick](), [David A Rhodes](), [Pier e P Roger](), Mark G Rush, [Joshua R Sanes](), [Martin Schröder](), [Pierre Thibault](), [Dick J H van den Boomen]() , [Thomas E Van Dyke](), [Roberto M Vanacore](), [Nobutaka Wakamiya](), [Qinglu Wang]()[, Bart Westendorp]()[, Sandra E Wiley](), [Miriam Wittmann](), [Guilherme Xavier](), [Wei-Chih Yang](), [Ali A Zarrin](), and [Bing Zhu]() are our external reviewers.\n\n**Annotation Statistics.** Reactome comprises 10,754 human reactions organized into 2,132 pathways involving 10,907 proteins encoded by 10,658 different human genes, 1,763 small molecules, and 10,748 complexes. These annotations are supported by 26,384 literature references. We have projected these reactions onto 115,881 orthologous proteins, creating 20,701 orthologous pathways in 18 non-human species. Version 60 has annotations for 1,503 protein variants (mutated proteins) and their post-translationally modified forms, derived from 285 proteins. These have been used to annotate 506 disease-specific complexes and 906 disease-specific reactions organized into 453 pathways and subpathways, and tagged with 294 Disease Ontology terms.\n\n**About the Reactome Project**. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome data and software are distributed under the terms of the Creative Commons Attribution 4.0 License. A full description of the new and updated content is available on the [Reactome website]().\n\n**Follow us on Twitter:[@reactome]()** to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information.** Please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/78-version-61-released.json b/projects/website-angular/content-dist/about/news/78-version-61-released.json new file mode 100644 index 00000000..2e88d8a0 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/78-version-61-released.json @@ -0,0 +1 @@ +{"title":"Version 61 Released","category":"about","date":"2017-06-22T13:20:12-04:00","tags":"[\"about\", \"news\", \"78-version-61-released\"]","body":"\n## Version 61 Released \n\n**[![R-HSA-913531](/uploads/about/news/R-HSA-913531.svg)]()**\n\n**New and Updated Pathways.****** In version V61, topics with new or revised pathways include: Gene expression ([Transcriptional regulation by RUNX1]()), Immune System ([Interleukin-12 family signaling]()), Signal Transduction ([PTEN Regulation]()), and Transport of small molecules ([Intracellular oxygen transport]()).\n\n**Thanks to our Contributors.** [Arkaitz Carracedo]() and [Leonardo Salmena]() were our external authors. [Sabine Bailly](), [Thorsten Burmester](), [Linda Shyue Huey Chuang](), [Yoshiaki Ito](), [Nisha Kriplani](), [Nick Leslie](), and [Esther van de Vosse]() were our external reviewers.\n\n**Annotation Statistics.** Reactome comprises 11,042 human reactions organized into 2,148 pathways involving 10,940 proteins encoded by 10,691 different human genes, 1,763 small molecules, and 11,041 complexes. These annotations are supported by 26,859 literature references. We have projected these reactions onto 120,804 orthologous proteins, creating 20,780 orthologous pathways in 18 non-human species. Version 61 has annotations for 1,334 protein variants (mutated proteins) and their post-translationally modified forms, derived from 285 proteins. These have been used to annotate 506 disease-specific complexes and 906 disease-specific reactions organized into 453 pathways and subpathways, and tagged with 294 Disease Ontology terms.\n\n**About the Reactome Project**. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome data and software are distributed under the terms of the Creative Commons Attribution 4.0 License. A full description of the new and updated content is available on the [Reactome website]().\n\n**Follow us on Twitter:**[@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information.** Please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/79-new-protein-protein-interaction-files.json b/projects/website-angular/content-dist/about/news/79-new-protein-protein-interaction-files.json new file mode 100644 index 00000000..0b88528e --- /dev/null +++ b/projects/website-angular/content-dist/about/news/79-new-protein-protein-interaction-files.json @@ -0,0 +1 @@ +{"title":"New Protein-protein Interaction files","category":"about","date":"2017-06-28T13:24:21-04:00","tags":"[\"about\", \"news\", \"79-new-protein-protein-interaction-files\"]","body":"\n## New Protein-protein Interaction files \n\n![Interaction](/uploads/about/news/Interaction-nologo.png)\n\nThe Reactome team has released new versions of our protein-protein interaction files derived from reactions and complexes. These files were updated following user feedback, with the goal of providing extra annotation features through support from the [PSI-MITAB 2.7]() data format. Interactions are computationally generated based on the data stored on complexes and reactions. The interactions provided by Reactome are not curated and are not experimental data. In addition, the complexes and reactions in species other than human are derived by orthology inference from the corresponding human complexes and reactions. Tab-delimited formatted files are also provided for human and all species.\n\nThe four new files are:\n\n * [Full list of protein-protein interactions, incl. non-human species [PSI-MITAB]]()\n * [Full list of protein-protein interactions, incl. non-human species [tab-delimited]]()\n * [Human protein-protein interactions [PSI-MITAB]]()\n * [Human protein-protein interactions [tab-delimited]]().\n\nDocumentation about these files is available from the [Data Download]() page.\n\nThe former versions of the protein-protein interaction files are still available but will be removed from service as of Version 62 in September 2017. We encourage users that programmatically access these files to update the scripts.\n\n**About the Reactome Project.** Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Cold Spring Harbor Laboratory, New York University Langone Medical Center, Oregon Health and Science University, and The European Bioinformatics Institute. Reactome data and software are distributed under the terms of the Creative Commons Attribution 4.0 License. A full description of the new and updated content is available on the Reactome website.\n\n**Follow us on Twitter:**[@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information.** Please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/80-new-sbml-level-3-version-1-export-is-now-available.json b/projects/website-angular/content-dist/about/news/80-new-sbml-level-3-version-1-export-is-now-available.json new file mode 100644 index 00000000..f139a37d --- /dev/null +++ b/projects/website-angular/content-dist/about/news/80-new-sbml-level-3-version-1-export-is-now-available.json @@ -0,0 +1 @@ +{"title":"New SBML Level 3 Version 1 export is now available","category":"about","date":"2017-07-05T13:25:06-04:00","tags":"[\"about\", \"news\", \"80-new-sbml-level-3-version-1-export-is-now-available\"]","body":"\n## New SBML Level 3 Version 1 export is now available \n\n[![SBML](/uploads/about/news/SBML.png)]()\n\nAs part of our efforts to give our modeling user community better experience, we have updated the SBML export to Level 3 Version 1, which is organized in a modular manner. Our initial export provides a richer annotation syntax and we will explore supporting other SBML Level 3 Packages in the future. The SBML data export can be used by any tool that supports SBML L3V1.\n\nThe SBML Level 3 Version 1 export is available for download here: [https://reactome.org/download/current/homo_sapiens.3.1.sbml.tgz]().\n\nWe are also providing a programmatic interface to access these updated SBML files through our [ContentService]() for all species at [https://reactome.org/ContentService/#!/exporter/toSBMLUsingGET]()\n\nReactome is a collaboration between groups at the Ontario Institute for Cancer Research, Cold Spring Harbor Laboratory, New York University Langone Medical Center, Oregon Health and Science University, and The European Bioinformatics Institute. Reactome data and software are distributed under the terms of the Creative Commons Attribution 4.0 License. A full description of the new and updated content is available on the Reactome website.\n\nFollow us on Twitter: [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/90-version-62-released.json b/projects/website-angular/content-dist/about/news/90-version-62-released.json new file mode 100644 index 00000000..5cc13c21 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/90-version-62-released.json @@ -0,0 +1 @@ +{"title":"Version 62 Released","category":"about","date":"2017-09-28T11:45:38-04:00","tags":"[\"about\", \"news\", \"90-version-62-released\"]","body":"\n## Version 62 Released \n\n**[![](/uploads/about/news/R-HSA-445717.svg)]()**\n\n**New and Updated Pathways.****** In version V62, topics with new or revised pathways include Developmental biology ([Signaling by Robo receptor]()), Gene expression ([Transcriptional regulation by E2F6 ]() and [Transcriptional regulation by RUNX2]()), and Immune System ([Interleukin-7 family signaling](),[ Interleukin-15 family signaling](), [Interleukin-35 family signaling](), and [Interleukin-38 family signaling]()). Illustrations are now available for [Aquaporin-mediated transport](), [Cellular senescence](), [Epigenetic regulation of gene expression](), [Gene Expression](), [Negative epigenetic regulation of rRNA expression](), [O2/CO2 exchange in erythrocytes](), [Peptide hormone metabolism,]() [Positive epigenetic regulation of rRNA expression](), [Post-translational protein modification](), [Response to metal ions](), [Signal Transduction](), and [SLC-mediated transmembrane transport]().\n\n**Thanks to our Contributors.**[Patricia Ducy]() is our external author. [Patricia Ducy](), [Jorg Goronzy](), [Anna Herlihy](), [Alexander Jaworski](), [Umesh Kumar](), [Javier Francisco Mora](), [Manoj Patidar](), [Yuliya Pylayeva-Gupta](), [Kailash Singh](), and Ren Sun are our external reviewers.\n\n**Annotation Statistics.** Reactome comprises 11,302 human reactions organized into 2,176 pathways involving 10,878 proteins encoded by 10,712 different human genes, 1,768 small molecules, and 11,284 complexes. These annotations are supported by 27,526 literature references. We have projected these reactions onto 121,709 orthologous proteins, creating 20,854 orthologous pathways in 18 non-human species. Version 62 has annotations for 1,334 protein variants (mutated proteins) and their post-translationally modified forms, derived from 285 proteins. These have been used to annotate 506 disease-specific complexes and 906 disease-specific reactions organized into 453 pathways and subpathways, and tagged with 294 Disease Ontology terms.\n\n**About the Reactome Project**. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome data and software are distributed under the terms of the Creative Commons Attribution 4.0 License. A full description of the new and updated content is available on the [Reactome website]().\n\n**Follow us on Twitter:**[@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information.** Please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/93-reactome-launches-new-website.json b/projects/website-angular/content-dist/about/news/93-reactome-launches-new-website.json new file mode 100644 index 00000000..a25d0f0e --- /dev/null +++ b/projects/website-angular/content-dist/about/news/93-reactome-launches-new-website.json @@ -0,0 +1 @@ +{"title":"New responsive website with a fresh look","category":"about","date":"2017-11-01T11:09:43-04:00","tags":"[\"about\", \"news\", \"93-reactome-launches-new-website\"]","body":"\n## New responsive website with a fresh look \n\n![Responsive Reactome 2](/uploads/about/news/Responsive_Reactome_2.png)\n\nWe’ve launched our new website and are excited to introduce you to our new look! Reactome is inviting its users to explore its new website. The new website has been designed to provide the ultimate user-friendly experience with improved navigation and functionality throughout. Created with the user experience firmly in mind, the new web interface has been designed using the latest technology, so the site is compatible with today's browsers and mobile devices. The site includes extensive documentation to help users understand Reactome’s complete range of tools for [viewing pathway diagrams](), [analyzing experimental data]() and [exploring protein-protein interaction networks](). For software developers, our [technical documentation and use cases]() provide a detailed overview of our extensive web services, to access our curated pathway data ([ContentService]()) and analytical tools ([AnalysisService]()). Biologists and bioinformaticians can now benefit from richer online content that is easier to navigate and share with others, assisting with pathway data analysis and visualization.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/94-proudly-introducing-our-new-logo.json b/projects/website-angular/content-dist/about/news/94-proudly-introducing-our-new-logo.json new file mode 100644 index 00000000..85d5e452 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/94-proudly-introducing-our-new-logo.json @@ -0,0 +1 @@ +{"title":"Proudly introducing our new logo","category":"about","date":"2017-11-07T11:44:47-05:00","tags":"[\"about\", \"news\", \"94-proudly-introducing-our-new-logo\"]","body":"\n## Proudly introducing our new logo \n\n![new logo](/uploads/about/news/new_logo.png)\n\nAs part of the ongoing evolution of our website, we are proud to announce the launch of our new logo. Reactome has grown and evolved over the last 14 years, and we felt it was time for a change.\n\nThe new logo brings to the forefront the value and quality of the information and analysis tools that can be found in our curated database of pathways. The layering in our logo highlights the transparency of Reactome’s nature while the rounded typography matches our openness.\n\nDerived from a shape that exists in nature and at the same time gives structure, the logo evokes the idea of discovering by unwrapping the layers of knowledge that surround biological events.\n\nWe have refreshed our logo to reflect who we are today and to symbolize our dynamic future. Rest assured though: our high-quality data and services, and our dedication to you will remain the same!\n\nFor more information, please go to [Our Logo]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/95-new-reactome-publication-published-in-2017-nar-database-issue.json b/projects/website-angular/content-dist/about/news/95-new-reactome-publication-published-in-2017-nar-database-issue.json new file mode 100644 index 00000000..0c8af208 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/95-new-reactome-publication-published-in-2017-nar-database-issue.json @@ -0,0 +1 @@ +{"title":"New Reactome Publication published in 2018 NAR Database Issue","category":"about","date":"2017-11-14T23:02:20-05:00","tags":"[\"about\", \"news\", \"95-new-reactome-publication-published-in-2017-nar-database-issue\"]","body":"\n## New Reactome Publication published in 2018 NAR Database Issue \n\n![20171115 NAR Paper 2017](/uploads/about/news/20171115_NAR_Paper_2017.png)\n\nA new research article titled “[The Reactome Pathway Knowledgebase]()” has been published in the forthcoming 2018 NAR Database Issue. The paper describes the deployment of a Neo4J graph database on our production server, development of a new high-performance in-memory implementation of our overrepresentation data analysis tool, improvements to the Pathway Diagram Viewer, and implementation of the new Enhanced High Level Diagrams (EHLDs). More publications from the [Reactome Team]() can be found [here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/97-updated-license-agreement.json b/projects/website-angular/content-dist/about/news/97-updated-license-agreement.json new file mode 100644 index 00000000..b0a8f192 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/97-updated-license-agreement.json @@ -0,0 +1 @@ +{"title":"Updated License Agreement","category":"about","date":"2017-12-06T23:09:22-05:00","tags":"[\"about\", \"news\", \"97-updated-license-agreement\"]","body":"\n## Updated License Agreement \n\n![Creative Commons Zero - CC0](/uploads/about/news/20171205_CC0.png)\n\nSince our inception, we have been an open source and open access resource, free for use by anyone under the terms of a Creative Commons Attribution 4.0 International (CC BY 4.0) license. This license granted parties the non-exclusive right to use, distribute and create derivative works based on Reactome, provided that the works are correctly attributed to OICR, NYUMC, EBI, and OHSU.\n\nIn line with the growing movement to provide free open data in the public domain, and to better support the needs of our user community, we are updating the licensing agreement for some of our web content and data to reflect the [Creative Commons Public Domain (CC0)](). CC0 is the \"no copyright reserved\" option in the Creative Commons toolkit. It effectively means relinquishing all copyright and similar rights that we hold in a work and dedicating those rights to the public domain.\n\nA [Creative Commons Public Domain (CC0 1.0 Universal) Licence]() will now cover all Reactome annotation files, e.g. identifier mapping, specialized data files, and interaction data derived from Reactome.\n\nA [Creative Commons Attribution 4.0 International (CC BY 4.0) Licence]() will continue to apply to all software and code, e.g. relating to the functionality of the [reactome.org](), derived websites and webservices, the Curator Tool, the Functional Interaction application, SQL and Graph Database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials.\n\nFor information about how to properly credit data use, please review the [Reactome License]() and the [Creative Commons FAQ](), or contact the [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/news/98-version-63-released.json b/projects/website-angular/content-dist/about/news/98-version-63-released.json new file mode 100644 index 00000000..20ce2ac1 --- /dev/null +++ b/projects/website-angular/content-dist/about/news/98-version-63-released.json @@ -0,0 +1 @@ +{"title":"Version 63 Released","category":"about","date":"2017-12-18T15:38:11-05:00","tags":"[\"about\", \"news\", \"98-version-63-released\"]","body":"\n## Version 63 Released \n\n[![DNA repair](/uploads/about/news/R-HSA-73894.svg)]()\n\n**New and Updated Pathways.** In version V63, topics with new or revised pathways include Immune System [(Interleukin-20 family signaling](), [Interleukin-21 signaling](), [Interleukin-37 signaling](), and [other Interleukin signaling]()), Metabolism ([Vitamin D (calciferol) metabolism]()), and Signal Transduction ([Signaling by NOTCH3]()). Illustrations are now available for [DNA Repair](), [Base Excision Repair](), [Signaling by GPCR](), [GPCR ligand binding](), [GPCR downstream signaling](), and [Translation]().\n\n**Thanks to our Contributors.**[Laurence Bindoff](), [Roberta Carriero](), [Sandip Datta](), [Cecilia Garlanda](), [Elzbieta Glaser](), [Michael Holick](), [Tony Kouzarides]() , [Alberto Mantovani](), and [Birgit Meldal]() are our external reviewers.\n\n**Annotation Statistics.** Reactome comprises 11,426 human reactions organized into 2,179 pathways involving 10,996 proteins encoded by 10,739 different human genes, 1,764 small molecules, and 11,366 complexes. These annotations are supported by 27,694 literature references. We have projected these reactions onto 138,985 orthologous proteins, creating 20,932 orthologous pathways in 18 non-human species. Version 63 has annotations for 1,334 protein variants (mutated proteins) and their post-translationally modified forms, derived from 287 proteins. These have been used to annotate 506 disease-specific complexes and 906 disease-specific reactions organized into 453 pathways and subpathways, and tagged with 294 Disease Ontology terms.\n\n**About the Reactome Project**. Reactome is a collaboration between groups at the Ontario Institute for Cancer Research, Oregon Health and Science University, New York University Langone Medical Center, and The European Bioinformatics Institute. Reactome annotation files and interaction data derived from Reactome are distributed under a Creative Commons Public Domain (CC0 1.0 Universal) Licence,. A Creative Commons Attribution 4.0 International (CC BY 4.0) Licence will apply to all software and code, database data dumps, and Pathway Illustrations (Enhanced High-Level Diagrams), Icon Library, Art and Branding Materials. A full description of the new and updated content is available on the [,.]().\n\n**Follow us on Twitter:** [@reactome]() to get frequent updates about new and updated pathways, feature updates, and more!\n\n**For more information.** Please contact our [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/privacy-notice.json b/projects/website-angular/content-dist/about/privacy-notice.json new file mode 100644 index 00000000..5636f9b2 --- /dev/null +++ b/projects/website-angular/content-dist/about/privacy-notice.json @@ -0,0 +1 @@ +{"title":"Privacy Notice","category":"about","body":"\n## Privacy Notice \n\n_October 14, 2025_\n\nReactome is an open-source, open access, manually curated and peer-reviewed pathway database. The Reactome website is administered by the Ontario Institute for Cancer Research. This Privacy Notice sets out how we collect, store and use your personal information when you use our website or contact us.\n\n**Collection and Use**\n\nWhen you browse or download information from the Reactome website, our servers automatically collect limited amounts of information about your visit for traffic monitoring and statistical purposes (e.g. browser version, IP address, pages visited, dates and times of access, amount of data transmitted, etc.). The information is analyzed for operational trends, performance, ways to improve our website, to create anonymized usage statistics and for the day-to-day administration of Reactome. \n\nReactome also collects personal information about users in the context of direct interactions with the Reactome team. Specifically, there are four ways that we may collect and use personal information about you:\n\n 1. if you agree to act as a reviewer or author of a Reactome pathway, we collect your reviewer or author information (e.g. name, ORCID ID, email address and institutional affiliation) for the purpose of credit attribution on the published pathway; \n\n 2. if you contact the Reactome HelpDesk, we collect your name, email address and information related to your request, question or concern for the purposes of responding and, if applicable, troubleshooting;\n\n 3. if you provide your email address when using the Reactome GSA analysis service, we use it to notify you when your analysis is complete; and/or\n\n 4. if you register to join our mailing list, we collect your email address in order to send you our publications and information about events. You may unsubscribe from receiving any communication from Reactome at any time by sending a request to our [help@reactome.org]() or by using the unsubscribe option provided in the email you have received.\n\n**Google Analytics:**\n\nReactome uses Google Analytics, a web analytics service provided by Google Inc., to gather insights into how visitors interact with our website. Google Analytics may use cookies and collect your IP address to provide its analytics services. Google has an [established set of principles, practices and processes]() governing data privacy and security in respect of Google Analytics.\n\nFor website users who do not wish their visit data to be collected by Google Analytics, you may install the [Google Analytics Opt-out Browser Add-on](), which prevents your data from being sent to Google Analytics. Please note the Google Analytics Opt-out browser add-on may not prevent information from being sent to the website itself.\n\n**Who will have access to your personal information?**\n\nPersonal information may only be accessed by authorized staff at OICR and at other institutions that are contractually bound to help administer the Reactome database. All such access is provided only as necessary for the purposes described in this Privacy Notice.\n\nPlease note that authorized staff may be located outside Canada, including in the United States and Europe, and therefore, your personal information may become subject to the laws of those countries.\n\nGoogle Analytics may collect information about your website visit, as described above.\n\n**How long do we keep your personal information?**\n\nWe will keep the personal information only as long as necessary to fulfill the identified purposes for which it was collected, unless otherwise authorized or required by law.\n\n**Links to Third Party Websites**\n\nOur website contains links from and to other websites. Please note that our Privacy Notice applies to our website only and not other linked websites. If you click on a link to other websites, it is incumbent on you to find, read and understand the applicable Privacy Notice.\n\n**Controlling your personal information**\n\nFor requests to correct or delete your personal information, or for it to be sent to you or someone else, please contact us at [help@reactome.org]().\n\n**How to contact us?**\n\nIf you have any queries related to our data privacy practices or this Privacy Notice, feel free to contact us at our [help@reactome.org]().\n\n.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/sab.json b/projects/website-angular/content-dist/about/sab.json new file mode 100644 index 00000000..e8d4aee5 --- /dev/null +++ b/projects/website-angular/content-dist/about/sab.json @@ -0,0 +1 @@ +{"title":"Scientific Advisory Board","category":"about","body":"\n## Scientific Advisory Board \n\nOur Scientific Advisory Board members are internationally recognized, researchers. The SAB meets annually to i) discuss the scientific agenda, ii) explore ways to expand our research efforts, and iii) critically review our database, curation practices and software development programs.\n\n * Evan Bolton [NCBI]()\n * Fiona Brinkman [Simon Fraser University]()\n * Ethan Cerami [Dana Farber Cancer Institute]()\n * Anna Niarakis [University of Evry Val d'Essonne]()\n * Tudor Oprea [Roivant Sciences]()\n * Paul Sternberg [CalTech]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/statistics.json b/projects/website-angular/content-dist/about/statistics.json new file mode 100644 index 00000000..3e43af4f --- /dev/null +++ b/projects/website-angular/content-dist/about/statistics.json @@ -0,0 +1 @@ +{"title":"Statistics","category":"about","body":"\n## Statistics \n\n\n\n \n\n\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/team.json b/projects/website-angular/content-dist/about/team.json new file mode 100644 index 00000000..c4fc3db1 --- /dev/null +++ b/projects/website-angular/content-dist/about/team.json @@ -0,0 +1 @@ +{"title":"Reactome Team","category":"about","body":"\n## Reactome Team \n\nThe Reactome group consists of an international multidisciplinary team from OICR, OHSU, EMBL-EBI and NYULMC, with expertise in pathway curation and annotation, software development, and training and outreach, dedicated to providing the research community with openly accessible biological pathway knowledge.\n\n**Principal Investigators**\n\n[Lincoln Stein]() ([OICR]())\n\n[Peter D'Eustachio]() ([NYULMC]())\n\n[Henning Hermjakob]() ([EMBL-EBI]())\n\n[Guanming Wu]() ([OHSU]())\n\n**Ontario Institute for Cancer Research**\n\nLincoln Stein\n\nMarc Gillespie\n\nNancy Li\n\nBruce May\n\nMarija Orlic-Milacic\n\nRobert Petryszak\n\nKaren Rothfels\n\nRalf Stephan\n\nJoel Weiser\n\nAdam Wright\n\n**New York University Langone Medical Center**\n\nPeter D'Eustachio\n\nLisa Matthews\n\nVeronica Shamovsky\n\n**European Bioinformatics Institute**\n\nHenning Hermjakob\n\nChuqiao Gong\n\nEliot Ragueneau\n\nCristoffer Sevilla\n\nKrishna Tiwari\n\n**Oregon Health & Science University**\n\nGuanming Wu\n\nDeidre Beavers\n\n**Alumni**\n\nEwan Birney\n\nBernard de Bono\n\nLiam Beckman\n\nTim Brunson\n\nMichael Caudy\n\nPatrick Conley\n\nJustin Cook\n\nDavid Croft\n\nCorina Duenas\n\nAntonio Fabregat\n\nPhani Garapati\n\nGopal Gopinath\n\nYusra Haider\n\nKerstin Hausmann\n\nRobin Haw\n\nJill Hemish\n\nBijay Jassal\n\nGeeta Joshi-Tope\n\nSteve Jupe\n\nSarah Keating\n\nMaximilian Koch\n\nFlorian Korninger\n\nPascual Lorente\n\nShahana Mahajan\n\nSheldon McKay\n\nNelson Ndegwa\n\nElizabeth Nickerson\n\nGavin O'Kelly\n\nNasim Sanati\n\nCarl Schmidt\n\nEsther Schmidt\n\nSolomon Shorser\n\nKonstantinos Sidiropoulos\n\nHeeyeon Song\n\nThawfeek Varusai\n\nImre Vastrik\n\nGuilherme Viteri\n\nMarissa Webber\n\nMark Williams\n\nFlorent Yvon\n\nChristina Yung\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/about/what-is-reactome.json b/projects/website-angular/content-dist/about/what-is-reactome.json new file mode 100644 index 00000000..fda6c369 --- /dev/null +++ b/projects/website-angular/content-dist/about/what-is-reactome.json @@ -0,0 +1 @@ +{"title":"What is Reactome ?","category":"about","body":"\n## What is Reactome ? \n\n### Mission Statement\n\nREACTOME is an open-source, open access, manually curated and peer-reviewed pathway database. Our goal is to provide intuitive bioinformatics tools for the visualization, interpretation and analysis of pathway knowledge to support basic and clinical research, genome analysis, modeling, systems biology and education. Founded in 2003, the Reactome project is led by Lincoln Stein of [OICR](), Peter D’Eustachio of [NYU Langone Health](), Henning Hermjakob of [EMBL-EBI](), and Guanming Wu of [OHSU]().\n\n### The Reactome Project\n\nBiological information has become so abundant and complex in recent years that it is difficult, if not impossible, even for expert individuals to manage in traditional publication formats and with existing knowledge management tools. It is an ongoing challenge for researchers to keep up-to-date on research developments in their fields, and identify relevant research to support their own studies without devoting too much time collecting unconnected information. The Reactome group has recognized this challenge and is developing a set of novel online resources that use features of the electronic media to organize biological pathway information in ways that provide for more efficient access and that allow new forms of analysis that were not possible with information stored in the traditional printed literature.\n\nThe cornerstone of Reactome is a freely available, open source relational database of signaling and metabolic molecules and their relations organized into biological pathways and processes. The core unit of the Reactome data model is the reaction. Entities (nucleic acids, proteins, complexes, vaccines, anti-cancer therapeutics and small molecules) participating in reactions form a network of biological interactions and are grouped into pathways. Examples of biological pathways in Reactome include [classical intermediary metabolism](), [signaling](), [transcriptional regulation](), [apoptosis]() and [disease](). The Reactome curation process for a pathway is similar to the editing of a scientific review. An external domain expert provides his or her expertise, a curator formalizes it into the database structure, and an external domain expert reviews the representation. A system of evidence tracking ensures that all assertions are backed up by the primary literature.\n\nThe Reactome website is designed to literally give the user a graphical map of known biological processes and pathways that is also an interface which the user can ‘click through’ to authoritative detailed information on components and their relations. The Reactome database and website enable scientists, researchers, students, and educators to find, organize, and utilize biological information to support [data visualization](), [integration]() and [analysis](). Reactome pathway, reaction and molecules pages extensively cross-reference to over 100 different online bioinformatics resources, including NCBI Gene, Ensembl and UniProt databases, the UCSC Genome Browser, ChEBI small molecule databases, and the PubMed literature database.\n\nReactome is used by clinicians, geneticists, genomics researchers, and molecular biologists to interpret the results of high-throughput experimental studies, by bioinformaticians seeking to develop novel algorithms for mining knowledge from genomic studies, and by systems biologists building predictive models of normal and disease variant pathways.\n\nAll data and software are freely available for [download](). Interaction, reaction and pathway data are provided as downloadable flat, [Neo4j GraphDB](), [MySQL](), [BioPAX](), [SBML ]()and [PSI-MITAB]() files and are also accessible through our Web Services APIs. Software and instructions for local installation of the Reactome database, website, and data entry tools are also available to support independent pathway curation.\n\n### For more information:\n\nVisit our Youtube Video for an [Introduction to Reactome]()! \n\nIf you have any feedback or questions, please contact us at the Reactome [help@reactome.org]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/community/collaboration/faq-for-prospective-reviewers-and-authors.json b/projects/website-angular/content-dist/community/collaboration/faq-for-prospective-reviewers-and-authors.json new file mode 100644 index 00000000..39543ba6 --- /dev/null +++ b/projects/website-angular/content-dist/community/collaboration/faq-for-prospective-reviewers-and-authors.json @@ -0,0 +1 @@ +{"title":"FAQ for prospective Reactome reviewers and authors","category":"community","body":"\n## FAQ for prospective Reactome reviewers and authors \n\n**What is involved in reviewing a Reactome pathway module?**\n\nReviewing a pathway module is similar to reviewing a review article and involves evaluating both a pathway report in text format and a corresponding online pathway diagram for completeness and accuracy. A Reactome pathway is a hierarchical representation of a biological process. Pathways are broken down into component subpathways. A subpathway is further subdivided into its component biochemical reactions, and each reaction includes input and output molecules as well as any relevant catalyst or regulators. The text report includes a summary of each event (pathway, subpathway or reaction), a list of its supporting references, and a link to the corresponding event in our pathway browser on our development website. This pathway browser web page, shown below, includes an Event Hierarchy as well as a Pathway Diagram and Event Details section. \n\n![Pathway Browser](/uploads/community/collaboration/faq-for-prospective-reviewers-and-authors/pathway_browser.png)\n\nIn the pathway diagram, reactions are manually laid out showing their relationships to one another. The details section of this webpage provides more detailed dynamic descriptions of the molecular composition and hierarchical organization of reactions. \n\nSelecting any event in the hierarchy (left panel) will bring you to its location in the pathway diagram, and the corresponding event(s) will be highlighted in blue in the diagram. A text and molecular description of the reaction or event can be viewed in the Details tab in the panel below the diagram. The description of the reaction may also be accessed by clicking on the reaction “node” in the diagram. A text description (and cross-references) for individual reaction component molecules can be displayed by selecting the molecule of interest in the diagram. More detailed instructions for navigating the website can be found [here](). \n\nWe are asking reviewers to verify that the pathways and reactions described in the text document are annotated clearly and completely and that the molecular details of the reactions (described in-depth on the webpages) are accurate. Additional instructions for navigating the web pages can be found here. We would appreciate any comments or suggestions on the user interface as well.\n\n**How long does it take to review a module?**\n\nDepending on the size of the module, reviewers take anywhere from a day to a month for their reviews. Typically, reviewers provide their feedback within two or three weeks. Reactome has a rolling quarterly release cycle though, so if your review takes a bit longer than expected, this is not a problem. We can include the revised module in the next release. \n\n**If I’ve decided to review a module, how do I get started?**\n\nIf you’re ready to get started reviewing, send us an email at [help@reactome.org]() and we can put you in contact with the curator of the pathway module. You can communicate with this curator if you have any questions and when you’d like to submit your review. \n\n**When can I see my work published on the Reactome website?**\n\nReactome has a quarterly database release cycle, generally in March, June, September, and December. For a revised module to be included in a given release, we ask that reviews be submitted 6 weeks (or more) before the planned release date. So for a revised module to be included in a March release, we would need to have the review back in mid-January.\n\n**How can I provide feedback and suggestions to Reactome?**\n\nComments may be added directly to the word document provided. Please opt to “tracking changes” so that your comments and suggested changes are highlighted. If you prefer, you can send your review as a separate document. \n\n**What if my work (or other important work) has not been included or cited?**\n\nDue to limited resources, we may not have included all of the references that are relevant for a particular pathway or reaction, but we would be happy to add any that you might wish to see included. Likewise, if you would like to expand a pathway module to include events that we have not covered, we would be glad to work with you on this and would cite you as an author for any new content. \n\n**What if I have questions while reviewing a pathway module?**\n\nWe will pair you with the curator that has worked on the pathway module that you are reviewing. You can communicate directly with this curator for any questions. You can also contact us at [help@reactome.org]() for any technical questions. \n\n**How am I acknowledged for my contribution to Reactome?**\n\nYour review will be used by a Reactome curator to revise the pathway module. You will be acknowledged as a reviewer of this pathway on the web pages and in the Reactome table of contents. This pathway module will also be associated with a DOI and may be cited as a publication. We ask that you provide us with an ORCID identifier so that we can associate this with the pathways that you have contributed. Our main search allows our authors and reviewers to [query]() for their pathway and reaction contributions using their names, and claim these contributions directly into ORCID.\n\n**Spread the word!**\n\nReactome is always looking for new contributors! If you know someone that would be interested in contributing a new pathway or reviewing/revising an existing pathway module, please let them know about us and our mission.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/community/events.json b/projects/website-angular/content-dist/community/events.json new file mode 100644 index 00000000..63f448bf --- /dev/null +++ b/projects/website-angular/content-dist/community/events.json @@ -0,0 +1 @@ +{"title":"Events","category":"community","body":"\n## Events \n\n**Here is a list of all the Reactome talks, poster presentations, training events and workshops**\n\n## 2025\n\n## Upcoming:\n\nHUPO, November 9-13th, 2025\n\n## Past Events:\n\nDisease Maps Community Meeting April 15-17th , 2025\n\nInternational Society of Biocuration, April 5-9th, 2025. [Poster.]()\n\nASHG2025, October 14-18th, 2025\n\nJobim conference, July 8-11th, 2025\n\n## 2024\n\nNIH Bioinformatics \"CCR Collaborative Bioinformatics Resource (CCBR)\" Virtual Meeting, Jan 9 2024\n\nKeystone Symposia: Single-Cell Biology: Tissue Genomics, Technology and Disease, Jan 21-24 2024. [Poster]()\n\nNIH Bioinformatics Training and Education Program Virtual Meeting, Feb14 2024[ Link to recording.]()\n\nEMBL-EBI Training: Introduction to RNA-seq and functional interpretation, Feb 24 2024\n\nKeystone Symposia: Systems and Engineered Biology. The Reactome Knowledgebase: a resource for systems immunology and innate immunity research April 9, 2024. [Poster]().\n\nNational Library of Medicine Bioinformatics and Clinical Informatics Program Fellowship, April 18, 2024\n\n17th Annual [International Biocuration Conference](), March 5-8 2024 \n\nThe Annual Genetics Conference: TAGC Washington DC, March 6-10 2024 \n\nEMBL-EBI Training: Introduction to multi-omics data integration and visualisation, March 7 2024\n\nEMBL-EBI Training: Reactome: from hierarchical pathway diagrams to multi-omics analysis of public data, March 25 2024\n\nAfrican Society for Bioinformatics and Computational Biology: Introduction of Reactome and IntAct, April 2024\n\nEMBL-EBI Training: Data-driven approaches to understanding dementia, April 12 2024\n\nEMBL-EBI Training: Introduction to metabolomics analysis, May 17 2024\n\nCANSSI Research Day, May 22 2024 \n\nMicrobiology and Infectious Disease Day, June 10-11, 2024.\n\nBoston Festival of Genomics, June 12-13, 2024.\n\nEMBL-EBI Training: Bioinformatics for immunologists, July 3 2024\n\nISMB 2024, BOSC track, July 12-17 2024\n\nISMB 2024: BioInfo Core \"AI and LLMs in cores: how are we using them now?\" July 12-17 2024\n\nISMB 2024, NIH ODSS track, July 12-17 2024\n\nFront Line Genomics: Invited Speaker, July 16th, 2024\n\nEMBL-EBI Training: Proteomics bioinformatics, July 19 2024\n\nSociety of Developmental Biology Meeting, July 17 2024. [Poster]()\n\nOnline Webinar for Front Line Genomics: Integrative Multi-omics using July 17, 2024, Reactome GSA. [Link to Recording.]()\n\nBits in Bio Virtual Mixer, August 15th, 2024.[ Link to register](). [Link to recording.]()\n\nACM[ KDD 2024](), Barcelona, August 25-29, 2024\n\nECCB 2024. September, 26th, 2024\n\nHUPO 2024. October 20th, 2024\n\nEMBL-EBI/UniAndes Training. October 24, 2024\n\nGuest Lecture, University of Toronto, Engineering Biology. November 1st, 2024\n\nAmerican Society of Human Genetics, November 5-9th, 2024\n\nEMBL-EBI: Small Molecule to Chemistry from Protein to Pathway, November 28th, 2024\n\nUniversity of Toronto: Medicine By Design Symposium, December 9th, 2024\n\n## 2023\n\nLondon Festival of Genomics: A FAIR Biodata Analysis Resource in Practice: The Reactome Database of Curated Biomolecular Pathways\n\nEMBL-EBI Training Workshop: Introduction of RNA-seq and functional interpretation: Exploring biological pathways\n\nEMBL-EBI Training Workshop: Reactome Introduction\n\nEMBL-EBI Training Workshop: Multiomics comparative pathway analysis using Reactome analysis tools and pathway browser\n\nEMBL-EBI Training Workshop: Network Context for Large Scale Biology\n\nMaastricht Centre for Systems Biology: Disease representation in Reactome\n\nUniversity of Padova: Community SARS-CoV-2 Curation Driven Emergent Experiences- Increased Curation Efficiency and Learned Lessons for the Future\n\nEMBL-EBI Training Workshop: Bioinformatics resources for protein biology\n\nEMBL-EBI Training Workshop: Reactome Introduction\n\nHUPO 2023: Reactome Disease Representation\n\nCNHUPO: Network Context for Large Scale Biology\n\nUniAndes: Reactome Introduction\n\nEMBL-EBI network resources\n\nISCB RSGDream2024 Conference. [Link](). [Poster](). \n\nUniversity of Toronto: Medicine By Design Symposium\n\nCSHL: Genome Informatics Meeting\n\n## 2022\n\nVirtual IDG meeting\n\nBioinformatics Resources for Protein Biology\n\nIntroduction to RNA-Seq and functional interpretation\n\nVIZBI\n\n## 2021\n\nVirtual IDG meeting\n\nCSHL Network Biology\n\nGO Consortium Meeting\n\nCBW Pathway and Network Analysis\n\nCBW Cancer Analysis\n\nISMB 2021\n\nFASEB 2021\n\nReactomeGSA training workshop\n\nGO Consortium Meeting\n\nCOVID-19 Disease Map Group Meeting\n\n## 2020\n\nFace-to-Face IDG meeting\n\nIntroduction to RNA-Seq and Functional Interpretation\n\nBioinformatics Resources for Protein Biology\n\nCABANA seminar\n\nGO Consortium meeting\n\nMathematics of Life\n\nBioinformatics Community Conference\n\nProteomics Society of India\n\nHUPO conference Training day\n\nASHG 2020 Meeting\n\nCOVID-19 Disease Map Group\n\n2020 Disease Maps Community Meeting\n\nASCB/EMBO 2020\n\nISMB 2020\n\nCBW\n\nECCB 2020\n\n## 2019\n\nBioinformatics Resources for Protein Biology, EMBL-EBI, Cambridge, UK, 28 February\n\nSociety of Toxicology, Baltimore, MD, USA, 12 March\n\nVIZBI, EMBO, Heidelberg, Germany, 13-15 March\n\nBioinformatics Resources for Protein Biology, EMBL-EBI, Cambridge, UK, 28 March\n\nGO Consortium Meeting, Cambridge, UK, 11-12 April\n\nBiocuration 2019, Cambridge, UK, 8 April\n\nBioinformatics resources for protein biology, Cambridge University, Cambridge, UK, 1 May\n\nBiophysical Society Meeting, Baltimore, USA, 3 May\n\nProteoNet Milan, ProteoNet Milan, Milan, Italy, 4 May\n\nAmerican Society of Human Genetics, Houston, TX, USA, 15-19 Oct\n\nCancer Moonshot Collaborative Meeting, NCI, DC, USA, 19-20 Nov\n\nASCB-EMBO 2019 Meeting, NCI, DC, USA, 7-11 Dec\n\n## 2018\n\nEMBL-EBI Industry Programme Workshop, Pfizer, La Jolla, CA, USA, 7-8 February\n\nCBW Bioinformatics for Cancer Genomics, CSHL, NY 12-17 March\n\nInteractions and Pathways, EMBL-EBI, Cambridge, UK, 13 March\n\nBiocuration 2018, Fudan University, Shanghai, China, 04-08 April\n\nGO Consortium Meeting, NYUMC, New York, USA, 12-14 May 2018\n\nInternational Proteogenome Workshop, University of Kyoto, Kyoto, Japan, 13 May\n\nUniversity of Chongqing, Chongqing, China, 13 May\n\nNetwork and Pathways, EMBL-EBI, Cambridge, UK, 17 May\n\nDisease Maps Community Meeting, Institut Curie, Paris, France, 21 June\n\nCBW Pathway and Network Analysis of Omics Data, Toronto, ON, Canada, 25-27 June\n\nISMB 2018, N/A, Chicago, IL, USA, 6-10 July\n\nBritish Society for Proteome Research, Bradford, UK, 10 July\n\nProteomics Bioinformatics, EMBL-EBI, Cambridge, UK, 20 July\n\nUniversitat de València, Valencia, Spain, 27 July\n\nGlyGen consortium, USA, September 4\n\nItalian Proteomics Association 2018, Como, Italy, 5-7 September\n\nECCB 2018, Athens, Greece, 8-12 September\n\nEMBL-EBI Industry Programme Workshop, EMBL-EBI, Cambridge, UK, 17 September\n\nComputational systems biology of cancer, Institut Curie, Paris, France, 24 September\n\nHUPO 2018, Orlando, USA, 30 September - 3 October\n\nBioinformatics & Functional Genomics in Zebrafish, EMBL-EBI, Cambridge, UK, 17 September\n\nCABANA, EMBL-EBI, Cambridge, UK, 6 November\n\nWikiPathways Summit 2018, UCSF, San Francisco, USA, 8-10 November\n\nChinese Human Proteome Organisation Conference, Guangzhou, China, 16 November\n\nGO Consortium Meeting, Montreal, Canada, 17-19 November 2018\n\nTrain Malta, EMBL-EBI, Cambridge, UK, 19 November\n\nBoehringer Ingelheim, Ridge Field, CT, USA, 31 November 2018\n\nGO Ontology Editors, Geneva, Switzerland, 10-13 December\n\n## 2017\n\nPathway and Network Analysis of -omics Data (2017), OICR, Toronto, Canada, 26-28 June\n\nNeo4j Life & Health Sciences Day, Berlin, Germany, 21 June\n\nBioinformatics for Cancer Genomics (2017), OICR, Toronto, Canada, 29 May – 2 June\n\n3rd BiVi Annual Meeting, Edinburgh Napier University, UK, 20-21 April\n\nBiocuration 2017, Stanford University, US, 26-29 March\n\nHigh-Throughput Biology: From Sequence to Networks, CSHL, Cold Spring Harbor, US, 20-26 March\n\nEBI Training Workshop, Hinxton, UK, 9 March\n\nInteractions and Pathways – Reactome Workshop, Cambridge University, UK, 2 February\n\n## 2016\n\nProteomics bioinformatics, Hinxton, UK, 5 December\n\nData sharing Best Practice workshop, EMBL-ABR, Australia, 24-28 October\n\nECCB 2016, Amsterdam, Netherlands, 5-6 September\n\nBioNetVisA Workshop, Amsterdam, Netherlands, 4 September\n\nIntegrating Interactions and Pathways, Hinxton, UK, 22 July\n\nPI seminar series, National Center for Protein Sciences Beijing, China, 21 July\n\nReactome webinar (live), Hinxton, UK, 22 June\n\nSAC seminar series: Harvesting and analysing proteomics big data, Hinxton, UK, 15 June\n\nPathway and Network Analysis of -omics Data, OICR, Toronto, 13-15 June\n\nBioinformatics for Cancer Genomics, OICR, Toronto, 30 May – 2 June\n\nCNHUPO, Xiamen University, China, 23 May\n\nReactome, IMEx, ProteomeXchange, Tsinghua University, China, 17 May\n\nGLBIO/CCBC 2016, University of Toronto, Canada, 16-19 May\n\nReactome web services and widgets for third-party integration, UV, Spain, 12 May\n\nNetworks and Pathways 2016, Hinxton, 12 May\n\nData integration, analysis and visualisation. Experiences from a biological pathway database, UDC, Spain, 25 April\n\n251st American Chemical Society National Meeting Exposition, San Diego, 13-16 March\n\nSME Industry Forum, Hinxton, UK, 7 March\n\nBioinformatics Resources for Protein Biology, Hinxton, UK, 2 February\n\nPathways Overview Widget, Hinxton, 30 January\n\nDiagram Widget Training Session, Hinxton, 30 January\n\n## 2015\n\nWGC Advanced Course: Proteomics Bioinformatics, Hinxton, UK, 11 December\n\nMiMS / NDPIA Bioinformatics Workshop – Umea, Hinxton, UK, 10-14 November\n\nNetworks & Pathways, Hinxton, UK, 5 November\n\nInteractions & Pathways – Reactome, Cambridge, UK, 3 November\n\nPathway and Network Analysis Workshop, Liverpool, UK, 1 November\n\nEBI Open Day, Hinxton, UK, 29 October\n\nEBI VI Argentinian Conference of Bioinformatics and Computational Biology (CAB2C), Bahía Blanca, Argentina, 13 October\n\nEBI Bioinformatics Roadshow, Campinas, Brazil, 5 August\n\nEBI Bioinformatics Roadshow, Sao Paulo, Brazil, 31 July\n\nReactome Webinar, Toronto, Canada, July 24\n\nReactome SOT Webinar, New York, USA, 15 June\n\nPathway and Network Analysis of –omics Data, Toronto, Canada, 1-3 June\n\nRoyal Vet College, London, UK, 28 May\n\nBioinformatics for Cancer Genomics, Toronto, Canada, 25-29 May\n\nReactome Exploring and Analysing Biological Pathways, Hinxton, UK, 12 May\n\nReactome: Networks and Pathways, Toronto, Canada, 6 May\n\nReactome Webinar, Hinxton, UK, 6 May\n\nHigh-Throughput Biology: From Sequence to Networks, Cold Spring Harbor Laboratory and the New York Genome Center, New York, USA, 27 April – 3 May\n\nEBI Industry Workshop, Boston, USA, April 1-2, 2015\n\nReactome Webinar, Toronto, Canada, March 26, 2015\n\nIntroduction to EBI, Cambridge, UK, 16 February\n\n## 2014\n\nACSB 2014, Philadelphia, USA, 6-10 December\n\nWellcome Trust Bioinformatics Course, Hinxton, UK, 14 November\n\nCambridge University Computer Training, University of Cambridge, UK, 22 October\n\nEBI Open Day, Hinxton, UK, 16 October\n\nArgentinian Bioinformatics Workshop, University of San Martin, Buenos Aires, Argentina, 1 October\n\nECCB 2014: The 13th European Conference on Computational Biology, Strasbourg, France, 7-10 September\n\nBioNetVisA 2014, Strasbourg, France, 6 September\n\nProteomics Data, Functional Analysis and Dissemination, Strasbourg, France, 6 September\n\nAveiro Roadshow, University of Aveiro, Portugal, 23 July\n\nProteomeXchange/Reactome, NIDDK, USA, 19 June\n\nFunctional Genomics and Systems Biology, WTSI, Hinxton, UK, 12 June\n\nNetworks & Pathways, Hinxton, UK, 12 June\n\nProteomeXchange/Reactome, NHLBI, USA, 12 June\n\nIOCB AS CR, Prague, Czech Republic, 4 June\n\nNetworks and Pathways Course, University of Lisbon, Portugal, 23 May\n\nORCID Outreach Meeting, University of Illinois, Chicago, USA, 21-22 May\n\nPAG Asia, Singapore, Republic of Singapore, 21 May\n\nLeiden Students Day, Hinxton, UK, 28 April\n\ndiXa: Functional Interpretation of Toxicogenomic Data, Hinxton, UK, 10 April\n\nBiocuration 2014, Toronto University, Canada, 9 April\n\nSME forum, Hinxton, UK, 6 March\n\nReactome Course, Cambridge University Dept. of Genetics, UK, 24 January\n\nPlant & Animal Genome Conference, San Diego, USA, 12 January\n\n## Archive\n\n#### 2013\n\nCanadian Cancer Research Conference, CCRC, 3-6 November, Toronto, Canada\n\nGOC Meeting, Bar Harbor, Maine, USA, October 4-6, 2013\n\nISSX 10th International Meeting, ISSX, Toronto, Canada, 29 October-3 November\n\nEMBO Meeting, EMBO, Amsterdam, The Netherlands, 21-23 October\n\nBioinformatics for Immunologists, University of Cambridge, Cambridge, UK, 5 September\n\nSciKnowMine Release Workshop – Bridging BioNLP and Biocuration, USC Viterbi ISI, Los Angeles, USA, 19 August\n\nISMB/ISMB – The Art and Science Exhibit, ISMB, Berlin, Germany, 21-23 July\n\nNetBioSIG, Berlin, Germany, 19 July\n\nNetworks & Pathways, EBI, Cambridge, UK, 11 July\n\nGordon Conference Elastin & Elastic Fibers, University of New England, Biddeford, USA, 22 July\n\nSummer School of Bioinformatics, EBI, Cambridge, UK, 12 June\n\nUCL, London, UCL, London, UK, 30 May\n\nUniversity of Rome, Tor Vergata (Rome 2), Rome, Italy, 7 May\n\nUniversity of Singapore, Singapore, 20 March\n\nCAGE-KID Cancer Genomics Workshop, CAGE-KID/EBI, 22 March, UK\n\nSBGN Workshop, University of Edinburgh, Edinburgh, UK, 29 April-2 May\n\nGenomeSpace Collaboration, BROAD Institute, Cambridge, USA, 26 March\n\nCAGE-KID Cancer Genomics Workshop, EBI, Cambridge, UK, 22 March\n\nEBI Open day, EBI, Cambridge, UK, 14 March\n\nInternational Plant & Animal Genome XXI, San Diego, USA, 13 January\n\nNimbios Workshop, University of Tennesse, Tennesse, USA, 8-10 January\n\n#### 2012\n\nEBI Open Day, EBI, Cambridge, UK, 20 December\n\nHPH 2012, Center for Genetic Engineering and Biotechnology, Havana, Cuba, 9 December\n\nTCAG Analysis Group, TCAG, Washington, DC, USA, 27 November\n\nToronto Bioinformatics User Group, University of Toronto, Toronto, Canada, 31 October\n\nCambridge University, Cambridge University, Cambridge, UK, 24 October\n\nRandall Lad, KCL, Randall Lad, King’s College London, London, UK, 23 October\n\nGoogle Summer of Code Open Software Meeting, Google, Mountain View, USA, 21 October\n\nThe Jackson Laboratory, Maine, The Jackson Laboratory, Maine, Bar Harbor, USA, 19 October\n\nNorwestern University Chicago, Norwestern University, Chicago, USA, 17 October\n\nWorkshop on the Concept and Tools for Pathways of Toxicity (PoT), John Hopkins University, Baltimore, USA, 10 October\n\nProgrammatic Access to EBI Proteomics Resources, EBI, Hinxton, UK, 4 October\n\nUniversity of Leicester/B/BASH, University of Leicester, Leicester, UK, 12 September\n\nAnimal Biotechnology Workshop, EBI, Hinxton, UK, 13 September\n\nCOMBINE 2012, University of Toronto, Toronto, Canada, 18 August\n\nUniversity of Toronto, Toronto, Canada, 25 July\n\nDivision of Translational Research, National Cancer Center Hospital East, Kashiwanoha, Tokyo University, Kashiwanoha, Japan, 13 July\n\nDepartment of Medical Genome Sciences, Kashiwanoha campus, Tokyo University, Kashiwanoha, Japan, 12 July\n\nHuman Genome Center, Institute of Medical Science, Shirokanedai campus, Tokyo University, Tokyo, Japan, 11 July\n\nCurrent and Future in Pathway Research International Workshop, Korea Institute of Science and Technology (KISTI), Daejeon, South Korea, 6 July\n\nErasmus MC, Rotterdam, Erasmus MC, Rotterdam, The Netherlands, 13 June\n\nOICR, Toronto, Canada, 12 June\n\nOntologies for Immunity and Infectious Disease, University at Buffalo, Buffalo, USA, 11-13 June\n\nHARMONY Hackathon, Department of Bioinformatics – BiGCaT, Maastricht, The Netherlands, 21 May\n\nNetworks and Pathways Bioinformatics for Biologists, EBI, Hinxton, UK, 18 May\n\n6th Biocuration Conference, University of Georgetown, Washington, USA, 2-4 April\n\nPerspectives in Clinical Proteomics Training Workshop, EBI, Hinxton, UK, 17 March\n\nFobiotech Meeting, Fobiotech, Torino, Italy, 5 March\n\nGO Consortium Annotation Meeting, Stanford University, Palo Alto, USA, 26-28 February\n\nReactome Outreach, University of Toronto, Toronto, Canada, 17 February\n\n#### 2011\n\nCanadian Cancer Research Conference, Toronto, Canada, 27-30 November\n\nX-Meeting 2011, Florianopolis, Brazil, 12-15 October\n\nPSIMEx Workshop: Interactions and Pathways, Lausanne, Switzerland, 6-7 October\n\nAlzForum / PRO workshop, Buffalo, USA, 4-5 October\n\nCOMBINE 2011, Heidelberg, Germany, 3-7 September\n\nOICR Reactome Workshop, Ottawa Hospital Research Institute, University of Ottawa, Ottawa, Canada, 4 August\n\nOICR Reactome Workshop, University of Kingston, Kingston, Canada, 3 August.\n\nNetwork Biology SIG, ISMB/ECCB 2011, Vienna, Austria, 15 July.\n\nInternational Institute of Molecular and Cell Biology, Warsaw, Poland, 15 July\n\n9th Poznan Summer School of Bioinformatics, Poznan, Poland, 11-15 July\n\nOICR-OGI Pathway Workshop, Hospital for Sick Children, Toronto, Canada, 2-3 June\n\nEBI Roadshow, University of Düsseldorf & Center for Neuronal Regenaration, Düsseldorf, Germany, 15-17 March.\n\nEBI Roadshow, University of the Western Cape, Cape Town, South Africa, 7-8 March\n\nEBI Roadshow, International Livestock Research Institute, Nairobi, Kenya, 2-3 March\n\nEBI Roadshow, Centro de Edafología y Biología Aplicada del Segura (CEBAS)-CSIC, Murcia, Spain, 1-3 February\n\nEBI Workshop, City of Hope, Duarte, California, United States, 20-21 January\n\n#### 2010\n\nJoint EBI-Wellcome Trust Proteomics Workshop, Hinxton, UK, 13-17 December\n\nIntroduction to Bioinformatics at the EBI, Dept. of Genetics Cambridge University, Cambridge, UK, 30 November\n\nEBI Roadshow, Murdoch University, Perth, Australia, 15-18 November\n\nEBI Roadshow, MRC National Institute for Medical Research, London, UK, 15-19 November\n\nEBI Roadshow, Vilnius Institute of Biotechnology, Vilnius, Liuania, 4-5 November\n\nPredoc Training Course, EMBL Heidelberg, Heidelberg, Germany, 2 November\n\nEMBL-EBI Open Day, Hinxton, UK, 2 November\n\nEBI Roadshow, Dokuz Eylül University, Izmir, Turkey, 12-14 October\n\nCOMBINE 2010, University of Edinburgh, Edinburgh, UK, 6-9 October\n\nEBI Roadshow, Institute of Molecular Biology, Bratislava, Slovakia, 6-7 October\n\nEBI Roadshow, University of Rostock, Rostock, Germany, 24-25 September\n\nProtein databases and tools from the EBI, Dept. of Genetics Cambridge University, Cambridge, UK, 20-21 September\n\nOICR Scientific Information Resource Interoperability Symposium (OSIRIS), Toronto, Canada, 15 October\n\n7th International Conference Data Integration in e Life Sciences conference, Goenburg, Sweden, 25-27 August\n\n12th UK Meeting on Platelets/12th Erfurt Conference on Platelets, Nottingham, UK, 15-16 July\n\nBSPR/EBI Educational Workshop – Quantitative Proteomics, Hinxton, UK, 15-16 July\n\n18 Annual International Conference on Intelligent Systems for Molecular Biology (ISMB 2010), Boston, USA, July 11 – 13\n\nEBI Roadshow, Teleon Institute of Genetics and Medicine, Naples, Italy, 1-2 July\n\n35 FEBS Congress, Gotenborg Convention Centre, Goenburg, Sweden, 26 June – 1 July\n\nJoint EBI-Wellcome Trust Summer School in Bioinformatics, Hinxton, UK, 14 – 18 June\n\nEBI Roadshow, Charles University, Prague, Czech Republic, 2 June\n\n5th Canadian Conference on Ovarian Cancer Research, Toronto, Canada, 15 – 18 May\n\nELLS LearningLab, EMBL Heidelberg, Heidelberg, Germany, 10-12 May\n\n97th AAI Annual Meeting Immunology 2010, Baltimore, USA, 7 – 11 May\n\nEBI Roadshow, North East USA, Chicago, USA, 26-27 April\n\nLipidomicNet Bioinformatics Workshop, Cambridge, UK, 26-27 April\n\n3nd Annual Protein Ontology Meeting, Newark, USA, April 26 – 28\n\nEBI Roadshow, University of Tor Vergata, Rome, Italy, April 15-16\n\nEBI Roadshow, Institut für Molekulare Enzymtechnologie (IMET), Aachen, Germany, 13-14 April\n\nEBI Roadshow, Università degli Studi di Firenze, Florence, Italy, 7-9 April\n\nGene Ontology Consortium Meeting, Palo Alto, USA, 30 – 31 March\n\nPlant Bioinformatics, Hinxton, UK, 29-31 March\n\nInternational Symposium for Integrative Bioinformatics, Cambridge, UK, 22-24 March\n\nPerspectives in Clinical Proteomics Training Workshop, Hinxton, UK, 18-19 March\n\nKeystone Symposia: Biomolecular Interaction Networks: Function and Disease, Quebec City, Canada, 7 – 12 March\n\n49th Annual Meeting of the Society of Toxicology, Salt Lake City, USA, 7 – 11 March\n\nEBI Open Day, Hinxton, UK, 4 March\n\nTherapeutic Applications of Computational Biology and Chemistry: TACBAC 2010, Hinxton, UK, 1-3 March\n\nOICR Annual Scientific Meeting 2010, Nottawasaga, Canada, 28 February – 2 March\n\nEBI Roadshow, Jozef Stefan Institute and University of Ljubljana, Llubljana, Slovenia, 16-18 February\n\nEBI Roadshow, Gulbenkian Institute, Lisbon, Portugal, 9-11 February\n\nBloodomics 2 Workshop & Meeting Madingley Hall, Cambridge, UK, 5 February\n\nENFIN Fif Annual General Meeting, Berlin, Germany, 3-5 February\n\nEBI Roadshow, University of Aberdeen, Aberdeen, UK, 3-4 February\n\nCIP-MCMM Bioinformatics Workshop, Toronto, Canada, 21 January\n\nPlant & Animal Genomes XVIII Conference, San Diego, USA, 9 – 13 January\n\n#### 2009\n\nOGI-OICR Reactome Webinar, Toronto, Canada, 17 December\n\nNIH 7th Symposium on the Functional Genomics of Critical Illness & Injury, Bethesda, USA, 7 December\n\nFunctional Genomics & Systems Biology Workshop, Hinxton, UK, 30 November – 2 December\n\nRb International Meeting, Toronto, Canada, 19 – 21 November\n\nBioPAX Hackathon and Workshop, New York, USA, 11 – 13 November\n\nBloodomics 2 Student Workshop & Meeting, Cambridge, UK, 11 – 12 November\n\nJoint EBI-Wellcome Trust Proteomics Workshop, Hinxton, UK, 9 – 13 November\n\nCSHL Genome Informatics Meeting, Cold Spring Harbor, USA, 27 – 30 October\n\nOeiras – PaProt II Workshop, Lisbon, Portugal, 13 – 15 October\n\nEnfin EMBRACE Workshop, Helsinki, Finland, 4 – 6 October\n\nGene Ontology Consortium Meeting, Cambridge UK, 23 – 25 September\n\n5th Metabolomics Meeting, Edmonton, Canada, 30 August – 2 September\n\nCancer Proteomics 2009, Dublin, Ireland, 8 – 11 June\n\nTCGA Ovarian Analysis Workshop, Berkeley, USA, 21 – 22 May\n\n3rd International Biocuration Conference, Berlin, Germany, 16 – 19 April\n\nGene Ontology Consortium Meeting, Eugene, USA, 30 – 31 March\n\nSemantic Enrichment of the Scientific Literature 2009 (SESL 2009), 30 – 31 Hinxton, UK, March\n\nOICR Annual Scientific Meeting, Nottawasaga, Canada, 22 – 24 February\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/community/outreach.json b/projects/website-angular/content-dist/community/outreach.json new file mode 100644 index 00000000..bf86c841 --- /dev/null +++ b/projects/website-angular/content-dist/community/outreach.json @@ -0,0 +1 @@ +{"title":"Outreach","category":"community","body":"\n## Outreach \n\nReactome’s continued success will be determined by the extent to which we reach out to current and new potential users. We will reach out to bioinformaticians, traditional molecular and cellular biologists, computational biologists, software developers, geneticists, clinicians, educators and students to ensure that all potential uses are aware of the resource and take full advantage of the services we offer. Therefore, we offer a series of outreach and training programs which will: \n\n 1. foster the training of the next generation of scientists\n 2. collaborate with data providers\n 3. actively reach out to present and new users and collaborators. \n\nSimultaneously, we encourage the reuse of the Reactome data model and software by supporting its adoption by outside groups, in particular by the cancer, clinical and disease research communities.\n\nOutreach takes on a variety of forms, such as public talks, lectures, visiting universities and colleges and supporting traditional science events (meetings, conferences, and workshops). Education is a major focus of Reactome community outreach and aims to inform biologists, clinicians, and bioinformaticians about what Reactome can do. \n\nReactome training teaches new and current users how to use Reactome resources to help meet the efforts of their organizations, groups, or specific audience.\n\n**Training and Community Outreach**. If you have a particular outreach question or request, you can contact our [help@reactome.org](). All our training and outreach materials are available under a [Creative Commons Attribution 4.0 Unported License](). We have just two simple requests, please attribute Reactome, and let us know if you use our presentations, posters or training resources.\n\n**Following Reactome.** Reactome has embraced the social networking scene. You can follow Reactome on [LinkedIn]() and [Twitter]().\n\n**Getting Involved.** Reactome is an open-source project that promotes community participation. We are eager for contributions from the community and would welcome inquiries from researchers interested in contributing information on pathways in their area of expertise. \n\n[help@reactome.org]() with your ideas.\n\nIf you would like to meet with our Outreach Lead, please feel free to book a meeting here:\n\n
\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/community/partners.json b/projects/website-angular/content-dist/community/partners.json new file mode 100644 index 00000000..ae6380b7 --- /dev/null +++ b/projects/website-angular/content-dist/community/partners.json @@ -0,0 +1 @@ +{"title":"Partners","category":"community","body":"\n## Partners \n\nThe following table contains the known resources that have integrated Reactome by using the [Analysis Service](), the [Graph Database]() or any of our widgets ([diagram]() or [pathways overview]()). If your resource is using our services, widgets or content and it is not in the list, please [help@reactome.org]() and we will add it.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/community/publications.json b/projects/website-angular/content-dist/community/publications.json new file mode 100644 index 00000000..a2488a84 --- /dev/null +++ b/projects/website-angular/content-dist/community/publications.json @@ -0,0 +1 @@ +{"title":"Publications","category":"community","body":"\n## Publications \n\nSince 2003, Reactome papers have been cited in hundreds of textbooks and thousands of peer-reviewed articles and reviews, and the citation rate is increasing annually. Several papers cite the use of Reactome data for either integrative data analysis, algorithm development, or the inclusion of Reactome pathway annotations into a secondary bioinformatics database. A full listing of all the papers and books citing Reactome is accessible online at [Google Scholar]().\n\n \n\n2026\n\n * Ragueneau E, Gong C, Sinquin P, Sevilla C, Beavers D, Grentner A, Griss J, Hogue GFJ, Li NT, Matthews L, May B, Milacic M, Mohammadi H, Petryszak R, Rothfels K, Shamovsky V, Stephan R, Tiwari K, Weiser J, Wright A, Gillespie M, Wu G, Stein L, Hermjakob H, D'Eustachio P. The Reactome Knowledgebase 2026. Nucleic Acids Res. 2025 Nov 18. doi: 10.1093/nar/gkaf1223. [PubMed]().\n * Mohammadi H, Almodaresi F, Hogue GFJ , Wright A, Orlic-Milacic M, Li NT, Mawani A, Stein L. React-to-Me: A Conversational Interface for Interactive Exploration of the Reactome Pathway Knowledgebase. bioRxiv 2025 Dec 12. [Link]()\n * Wu G, Matthews L, Boyer N, Milacic M, Beavers D, Li NT, May B, Rothfels K, Shamovsky V, Stephan R, Gillespie M, Hermjakob H, D'Eustachio P, Stein L. Application of Large Language Models for Annotating Genes into Reactome Pathways, bioRxiv 2025 Dec 20; [Link]()\n\n2025\n\n * Matthews L, Cook J, Stephan R, Milacic M, Rothfels K, Shamovsky V, Jassal B, Haw R, Sevilla C, Gong C, Ragueneau E, May B, Wright A, Weiser J, Beavers D, Tiwari K, Senff-Ribeiro A, Varusai T, Hermjakob H, D'Eustachio P, Wu G, Stein L, Gillespie ME. Advancing curation of viral life cycles, host interactions, and therapeutics in Reactome. J Virol. 2025 May 20;99(5):e0202424. doi: 10.1128/jvi.02024-24. 2025 Apr 23. [PubMed]()\n * Smith NR, Giske NR, Sengupta SK, Conley P, Swain JR, Nair A, Fowler KL, Klocke C, Yoo YJ, Anderson AN, Sanati N, Torkenczy K, Adey AC, Fischer JM, Wu G, Wong MH. Dual states of murine Bmi1-expressing intestinal stem cells drive epithelial development utilizing non-canonical Wnt signaling. Dev Cell. 2025 Apr 16:S1534-5807(25)00177-7. doi: 10.1016/j.devcel.2025.03.014. [PubMed]()\n\n2024\n\n * Grentner A, Ragueneau E, Gong C, Prinz A, Gansberger S, Oyarzun I, Hermjakob H, Griss J. ReactomeGSA: new features to simplify public data reuse. Bioinformatics. 2024 Jun 3;40(6):btae338. doi: 10.1093/bioinformatics/btae338. [PubMed]()\n * Arora C, Matic M, Bisceglia L, Di Chiaro P, De Oliveira Rosa N, Carli F, Clubb L, Nemati Fard LA, Kargas G, Diaferia GR, Vukotic R, Licata L, Wu G, Natoli G, Gutkind JS, Raimondi F. The landscape of cancer-rewired GPCR signaling axes. Cell Genom. 2024 May 8;4(5):100557. doi: 10.1016/j.xgen.2024.100557. [PubMed]()\n * Orlic-Milacic M, Rothfels K, Matthews L, Wright A, Jassal B, Shamovsky V, Trinh Q, Gillespie ME, Sevilla C, Tiwari K, Ragueneau E, Gong C, Stephan R, May B, Haw R, Weiser J, Beavers D, Conley P, Hermjakob H, Stein LD, D'Eustachio P, Wu G. Pathway-based, reaction-specific annotation of disease variants for elucidation of molecular phenotypes. Database (Oxford). 2024 May 7;2024:baae031. doi: 10.1093/database/baae031. [PubMed]()\n * R. Stephan, Interleaved snowballing: Reducing the workload of literature curators. Arxiv [Preprint]. 2024 Feb 13. DOI: 10.48550/arXiv.2402.08339.[ Link]()\n * Niarakis A, Ostaszewski M, Mazein A, Kuperstein I, Kutmon M, Gillespie ME, Funahashi A, Acencio ML, Hemedan A, Aichem M, Klein K, Czauderna T, Burtscher F, Yamada TG, Hiki Y, Hiroi NF, Hu F, Pham N, Ehrhart F, Willighagen EL, Valdeolivas A, Dugourd A, Messina F, Esteban-Medina M, Peña-Chilet M, Rian K, Soliman S, Aghamiri SS, Puniya BL, Naldi A, Helikar T, Singh V, Fernández MF, Bermudez V, Tsirvouli E, Montagud A, Noël V, Ponce-de-Leon M, Maier D, Bauch A, Gyori BM, Bachman JA, Luna A, Piñero J, Furlong LI, Balaur I, Rougny A, Jarosz Y, Overall RW, Phair R, Perfetto L, Matthews L, Rex DAB, Orlic-Milacic M, Gomez LCM, De Meulder B, Ravel JM, Jassal B, Satagopam V, Wu G, Golebiewski M, Gawron P, Calzone L, Beckmann JS, Evelo CT, D'Eustachio P, Schreiber F, Saez-Rodriguez J, Dopazo J, Kuiper M, Valencia A, Wolkenhauer O, Kitano H, Barillot E, Auffray C, Balling R, Schneider R; COVID-19 Disease Map Community. Drug-target identification in COVID-19 disease mechanisms using computational systems biology approaches. Front Immunol. 2024 Feb 13;14:1282859. doi: 10.3389/fimmu.2023.1282859. [PubMed]()\n * Milacic M, Beavers D, Conley P, Gong C, Gillespie M, Griss J, Haw R, Jassal B, Matthews L, May B, Petryszak R, Ragueneau E, Rothfels K, Sevilla C, Shamovsky V, Stephan R, Tiwari K, Varusai T, Weiser J, Wright A, Wu G, Stein L, Hermjakob H, D'Eustachio P. The Reactome Pathway Knowledgebase 2024. Nucleic Acids Res. 2024 Jan 5;52(D1):D672-D678. doi: 10.1093/nar/gkad1025. [PubMed]()\n * Li N, Orlic-Milacic M, Beavers D _et al._ Unlocking biological insights: Reactome's comprehensive pathway analysis and developmental lineage path project [version 1; not peer reviewed]. _F1000Research_ 2024, **13** :1013 (poster) (doi: [10.7490/f1000research.1119846.1]())\n\n2023\n\n * Tiwari K, Matthews L, May B, Shamovsky V, Orlic-Milacic M, Rothfels K, Ragueneau E, Gong C, Stephan R, Li N, Wu G, Stein L, D'Eustachio P, Hermjakob H. ChatGPT usage in the Reactome curation process. bioRxiv [Preprint]. 2023 Nov 8:2023.11.08.566195. doi: 10.1101/2023.11.08.566195.[ Link]()\n * Beavers D, Brunson T, Sanati N, Matthews L, Haw R, Shorser S, Sevilla C, Viteri G, Conley P, Rothfels K, Hermjakob H, Stein L, D'Eustachio P, Wu G. Illuminate the Functions of Dark Proteins Using the Reactome-IDG Web Portal. Curr Protoc. 2023 Jul;3(7):e845. doi: 10.1002/cpz1.845. [PubMed]()\n * Brunson T, Sanati N, Matthews L, Haw R, Beavers D, Shorser S, Sevilla C, Viteri G, Conley P, Rothfels K, Hermjakob H, Stein L, D'Eustachio P, Wu G. Illuminating Dark Proteins using Reactome Pathways. bioRxiv [Preprint]. 2023 Jun 5:2023.06.05.543335. doi: 10.1101/2023.06.05.543335. [PubMed]()\n * Rothfels K, Milacic M, Matthews L, Haw R, Sevilla C, Gillespie M, Stephan R, Gong C, Ragueneau E, May B, Shamovsky V, Wright A, Weiser J, Beavers D, Conley P, Tiwari K, Jassal B, Griss J, Senff-Ribeiro A, Brunson T, Petryszak R, Hermjakob H, D'Eustachio P, Wu G, Stein L. Using the Reactome Database. Curr Protoc. 2023 Apr;3(4):e722. doi: 10.1002/cpz1.722. [PubMed]()\n\n2022\n\n * Wright AJ, Orlic-Milacic M, Rothfels K, Weiser J, Trinh QM, Jassal B, Haw RA, Stein LD. Evaluating the predictive accuracy of curated biological pathways in a public knowledgebase. Database (Oxford). 2022 Mar 28;2022:baac009. doi: 10.1093/database/baac009.[ PubMed]()\n * Gillespie M, Jassal B, Stephan R, Milacic M, Rothfels K, Senff-Ribeiro A, Griss J, Sevilla C, Matthews L, Gong C, Deng C, Varusai T, Ragueneau E, Haider Y, May B, Shamovsky V, Weiser J, Brunson T, Sanati N, Beckman L, Shao X, Fabregat A, Sidiropoulos K, Murillo J, Viteri G, Cook J, Shorser S, Bader G, Demir E, Sander C, Haw R, Wu G, Stein L, Hermjakob H, D'Eustachio P. The reactome pathway knowledgebase 2022. Nucleic Acids Res. 2022 Jan 7;50(D1):D687-D692. doi: 10.1093/nar/gkab1028.[ PubMed]()\n\n2021\n\n * Ostaszewski M, Niarakis A, Mazein A, Kuperstein I, Phair R, Orta-Resendiz A, Singh V, Aghamiri SS, Acencio ML, Glaab E, Ruepp A, Fobo G, Montrone C, Brauner B, Frishman G, Monraz Gómez LC, Somers J, Hoch M, Kumar Gupta S, Scheel J, Borlinghaus H, Czauderna T, Schreiber F, Montagud A, Ponce de Leon M, Funahashi A, Hiki Y, Hiroi N, Yamada TG, Dräger A, Renz A, Naveez M, Bocskei Z, Messina F, Börnigen D, Fergusson L, Conti M, Rameil M, Nakonecnij V, Vanhoefer J, Schmiester L, Wang M, Ackerman EE, Shoemaker JE, Zucker J, Oxford K, Teuton J, Kocakaya E, Summak GY, Hanspers K, Kutmon M, Coort S, Eijssen L, Ehrhart F, Rex DAB, Slenter D, Martens M, Pham N, Haw R, Jassal B, Matthews L, Orlic-Milacic M, Senff Ribeiro A, Rothfels K, Shamovsky V, Stephan R, Sevilla C, Varusai T, Ravel JM, Fraser R, Ortseifen V, Marchesi S, Gawron P, Smula E, Heirendt L, Satagopam V, Wu G, Riutta A, Golebiewski M, Owen S, Goble C, Hu X, Overall RW, Maier D, Bauch A, Gyori BM, Bachman JA, Vega C, Grouès V, Vazquez M, Porras P, Licata L, Iannuccelli M, Sacco F, Nesterova A, Yuryev A, de Waard A, Turei D, Luna A, Babur O, Soliman S, Valdeolivas A, Esteban-Medina M, Peña-Chilet M, Rian K, Helikar T, Puniya BL, Modos D, Treveil A, Olbei M, De Meulder B, Ballereau S, Dugourd A, Naldi A, Noël V, Calzone L, Sander C, Demir E, Korcsmaros T, Freeman TC, Augé F, Beckmann JS, Hasenauer J, Wolkenhauer O, Wilighagen EL, Pico AR, Evelo CT, Gillespie ME, Stein LD, Hermjakob H, D'Eustachio P, Saez-Rodriguez J, Dopazo J, Valencia A, Kitano H, Barillot E, Auffray C, Balling R, Schneider R; COVID-19 Disease Map Community. COVID19 Disease Map, a computational knowledge repository of virus-host interaction mechanisms. Mol Syst Biol. 2021 Oct;17(10):e10387. doi: 10.15252/msb.202110387. Erratum in: Mol Syst Biol. 2021 Dec;17(12):e10851. doi: 10.15252/msb.202110851.[ PubMed]()\n\n2020\n\n * Griss J, Viteri G, Sidiropoulos K, Nguyen V, Fabregat A, Hermjakob H. ReactomeGSA - Efficient Multi-Omics Comparative Pathway Analysis. Mol Cell Proteomics. 2020 Dec;19(12):2115-2125. doi: 10.1074/mcp.TIR120.002155. Epub 2020 Sep 9.[ PubMed]()\n * Varusai TM, Jupe S, Sevilla C, Matthews L, Gillespie M, Stein L, Wu G, D'Eustachio P, Metzakopian E, Hermjakob H. Using Reactome to build an autophagy mechanism knowledgebase. Autophagy. 2021 Jun;17(6):1543-1554. doi: 10.1080/15548627.2020.1761659. Epub 2020 Jun 2.[ PubMed]()\n * Waagmeester A, Stupp G, Burgstaller-Muehlbacher S, Good BM, Griffith M, Griffith OL, Hanspers K, Hermjakob H, Hudson TS, Hybiske K, Keating SM, Manske M, Mayers M, Mietchen D, Mitraka E, Pico AR, Putman T, Riutta A, Queralt-Rosinach N, Schriml LM, Shafee T, Slenter D, Stephan R, Thornton K, Tsueng G, Tu R, Ul-Hasan S, Willighagen E, Wu C, Su AI. Wikidata as a knowledge graph for the life sciences. Elife. 2020 Mar 17;9:e52614. doi: 10.7554/eLife.52614. [PubMed]()\n * Jassal B, Matthews L, Viteri G, Gong C, Lorente P, Fabregat A, Sidiropoulos K, Cook J, Gillespie M, Haw R, Loney F, May B, Milacic M, Rothfels K, Sevilla C, Shamovsky V, Shorser S, Varusai T, Weiser J, Wu G, Stein L, Hermjakob H, D'Eustachio P. The reactome pathway knowledgebase. Nucleic Acids Res. 2020 Jan 8;48(D1):D498-D503. doi: 10.1093/nar/gkz1031. [PubMed]()\n * Naithani S, Gupta P, Preece J, D'Eustachio P, Elser JL, Garg P, Dikeman DA, Kiff J, Cook J, Olson A, Wei S, Tello-Ruiz MK, Mundo AF, Munoz-Pomer A, Mohammed S, Cheng T, Bolton E, Papatheodorou I, Stein L, Ware D, Jaiswal P. Plant Reactome: a knowledgebase and resource for comparative pathway analysis. Nucleic Acids Res. 2020 Jan 8;48(D1):D1093-D1103. doi: 10.1093/nar/gkz996. [PubMed]()\n * Haw R, Loney F, Ong E, He Y, Wu G. Perform Pathway Enrichment Analysis Using ReactomeFIViz. Methods Mol Biol. 2020;2074:165-179. doi: 10.1007/978-1-4939-9873-9_13. [PubMed]()\n\n2019\n\n * Blucher AS, McWeeney SK, Stein L, Wu G. Visualization of drug target interactions in the contexts of pathways and networks with ReactomeFIViz. F1000Res. 2019 Jun 20;8:908. doi: 10.12688/f1000research.19592.1. [PubMed]()\n * Viteri G, Matthews L, Varusai T, Gillespie M, Milacic M, Cook J, Weiser J, Shorser S, Sidiropoulos K, Fabregat A, Haw R, Wu G, Stein L, D'Eustachio P, Hermjakob H. Reactome and ORCID-fine-grained credit attribution for community curation. Database (Oxford). 2019 Jan 1;2019:baz123. doi: 10.1093/database/baz123. [PubMed]()\n\n2018\n\n * Jupe S, Ray K, Roca CD, Varusai T, Shamovsky V, Stein L, D'Eustachio P, Hermjakob H. Interleukins and their signaling pathways in the Reactome biological pathway database. J Allergy Clin Immunol. 2018 Apr;141(4):1411-1416. doi: 10.1016/j.jaci.2017.12.992. Epub 2018 Feb 21.[ PubMed]()\n * Fabregat A, Sidiropoulos K, Viteri G, Marin-Garcia P, Ping P, Stein L, D'Eustachio P, Hermjakob H. Reactome diagram viewer: data structures and strategies to boost performance. Bioinformatics. 2018 Apr 1;34(7):1208-1214. doi: 10.1093/bioinformatics/btx752. [PubMed]()\n * Fabregat A, Korninger F, Viteri G, Sidiropoulos K, Marin-Garcia P, Ping P, Wu G, Stein L, D'Eustachio P, Hermjakob H. Reactome graph database: Efficient access to complex pathway data. PLoS Comput Biol. 2018 Jan 29;14(1):e1005968. doi: 10.1371/journal.pcbi.1005968.[ PubMed]()\n * Fabregat A, Jupe S, Matthews L, Sidiropoulos K, Gillespie M, Garapati P, Haw R, Jassal B, Korninger F, May B, Milacic M, Roca CD, Rothfels K, Sevilla C, Shamovsky V, Shorser S, Varusai T, Viteri G, Weiser J, Wu G, Stein L, Hermjakob H, D'Eustachio P. The Reactome Pathway Knowledgebase. Nucleic Acids Res. 2018 Jan 4;46(D1):D649-D655. doi: 10.1093/nar/gkx1132. [PubMed]()\n * Loney F, Wu G. Automation of ReactomeFIViz via CyREST API. F1000Res. 2018 May 2;7:531. doi: 10.12688/f1000research.14776.2. [PubMed]()\n\n2017\n\n * Sidiropoulos K, Viteri G, Sevilla C, Jupe S, Webber M, Orlic-Milacic M, Jassal B, May B, Shamovsky V, Duenas C, Rothfels K, Matthews L, Song H, Stein L, Haw R, D'Eustachio P, Ping P, Hermjakob H, Fabregat A. Reactome enhanced pathway visualization. Bioinformatics. 2017 Nov 1;33(21):3461-3467. doi: 10.1093/bioinformatics/btx441.[ PubMed]()\n * Fabregat A, Sidiropoulos K, Viteri G, Forner O, Marin-Garcia P, Arnau V, D'Eustachio P, Stein L, Hermjakob H. Reactome pathway analysis: a high-performance in-memory approach. BMC Bioinformatics. 2017 Mar 2;18(1):142. doi: 10.1186/s12859-017-1559-2. [PubMed]()\n * Wu G, Haw R. Functional Interaction Network Construction and Analysis for Disease Discovery. Methods Mol Biol. 2017;1558:235-253. doi: 10.1007/978-1-4939-6783-4_11.[PubMed]()\n\n2016\n\n * Hill DP, D'Eustachio P, Berardini TZ, Mungall CJ, Renedo N, Blake JA. Modeling biochemical pathways in the gene ontology. Database (Oxford). 2016 Sep 1;2016:baw126. doi: 10.1093/database/baw126. [PubMed]()\n * Bohler A, Wu G, Kutmon M, Pradhana LA, Coort SL, Hanspers K, Haw R, Pico AR, Evelo CT. Reactome from a WikiPathways Perspective. PLoS Comput Biol. 2016 May 20;12(5):e1004941. doi: 10.1371/journal.pcbi.1004941. [PubMed]()\n * Fabregat A, Sidiropoulos K, Garapati P, Gillespie M, Hausmann K, Haw R, Jassal B, Jupe S, Korninger F, McKay S, Matthews L, May B, Milacic M, Rothfels K, Shamovsky V, Webber M, Weiser J, Williams M, Wu G, Stein L, Hermjakob H, D'Eustachio P. The Reactome pathway Knowledgebase. Nucleic Acids Res. 2016 Jan 4;44(D1):D481-7. doi: 10.1093/nar/gkv1351. Epub 2015 Dec 9. [PubMed]()\n\n2015\n\n * McKay SJ, Weiser J. Installing a Local Copy of the Reactome Web Site and Knowledgebase. Curr Protoc Bioinformatics. 2015 Jun 19;50:9.10.1-9.10.10. doi: 10.1002/0471250953.bi0910s50. [PubMed]()\n * Jupe S, Fabregat A, Hermjakob H. Expression data analysis with Reactome. Curr Protoc Bioinformatics. 2015 Mar 9;49:8.20.1-8.20.9. doi: 10.1002/0471250953.bi0820s49. [PubMed]()\n * Porras P, Duesbury M, Fabregat A, Ueffing M, Orchard S, Gloeckner CJ, Hermjakob H. A visual review of the interactome of LRRK2: Using deep-curated molecular interaction data to represent biology. Proteomics. 2015 Apr;15(8):1390-404. doi: 10.1002/pmic.201400390. Epub 2015 Mar 21. [PubMed]()\n\n2014\n\n * Wu G, Dawson E, Duong A, Haw R, Stein L. ReactomeFIViz: a Cytoscape app for pathway and network-based data analysis. F1000Res. 2014 Jul 1;3:146. doi: 10.12688/f1000research.4431.2. [PubMed]()\n * Jupe S, Jassal B, Williams M, Wu G. A controlled vocabulary for pathway entities and events. Database (Oxford). 2014 Jun 20;2014:bau060. doi: 10.1093/database/bau060. [PubMed]()\n * Backman S, Kollara A, Haw R, Stein L, Brown TJ. Glucocorticoid-induced reversal of interleukin-1β-stimulated inflammatory gene expression in human oviductal cells. PLoS One. 2014 May 21;9(5):e97997. doi: 10.1371/journal.pone.0097997. [PubMed]()\n\n2013\n\n * Croft D. Building models using Reactome pathways as templates. Methods Mol Biol. 2013;1021:273-83. doi: 10.1007/978-1-62703-450-0_14. [PubMed]()\n * Monaco MK, Stein J, Naithani S, Wei S, Dharmawardhana P, Kumari S, Amarasinghe V, Youens-Clark K, Thomason J, Preece J, Pasternak S, Olson A, Jiao Y, Lu Z, Bolser D, Kerhornou A, Staines D, Walts B, Wu G, D’Eustachio P, Haw R, Croft D, Kersey PJ, Stein L, Jaiswal P, Ware D. Gramene 2013: comparative plant genomics resources.Nucleic Acids Res.[PubMed]()\n * Croft, D. Building models using reactome pathways as templates.Methods Mol Biol. 1021:273-83. [PubMed]()\n * D'Eustachio P. Pathway databases: making chemical and biological sense of the genomic data flood. Chem Biol. 2013 May 23;20(5):629-35. doi: 10.1016/j.chembiol.2013.03.018. [PubMed]()\n\n2012\n\n * Milacic M, Haw R, Rothfels K, Wu G, Croft D, Hermjakob H, D'Eustachio P, Stein L. Annotating cancer variants and anti-cancer therapeutics in reactome. Cancers (Basel). 2012 Nov 8;4(4):1180-211. doi: 10.3390/cancers4041180. [PubMed.]()\n * Wu G, Stein L. A network module-based method for identifying cancer prognostic signatures. Genome Biol. 2012 Dec 10;13(12):R112. doi: 10.1186/gb-2012-13-12-r112. [PubMed]()\n * Haw R, Stein L. Using the reactome database. Curr Protoc Bioinformatics. 2012 Jun;Chapter 8:8.7.1-8.7.23. doi: 10.1002/0471250953.bi0807s38. [PubMed]()\n\n2011\n\n * Gieger C, Radhakrishnan A, Cvejic A, Tang W, Porcu E, Pistis G, Serbanovic-Canic J, Elling U, Goodall AH, Labrune Y, Lopez LM, Mägi R, Meacham S, Okada Y, Pirastu N, Sorice R, Teumer A, Voss K, Zhang W, Ramirez-Solis R, Bis JC, Ellinghaus D, Gögele M, Hottenga JJ, Langenberg C, Kovacs P, O'Reilly PF, Shin SY, Esko T, Hartiala J, Kanoni S, Murgia F, Parsa A, Stephens J, van der Harst P, Ellen van der Schoot C, Allayee H, Attwood A, Balkau B, Bastardot F, Basu S, Baumeister SE, Biino G, Bomba L, Bonnefond A, Cambien F, Chambers JC, Cucca F, D'Adamo P, Davies G, de Boer RA, de Geus EJ, Döring A, Elliott P, Erdmann J, Evans DM, Falchi M, Feng W, Folsom AR, Frazer IH, Gibson QD, Glazer NL, Hammond C, Hartikainen AL, Heckbert SR, Hengstenberg C, Hersch M, Illig T, Loos RJ, Jolley J, Khaw KT, Kühnel B, Kyrtsonis MC, Lagou V, Lloyd-Jones H, Lumley T, Mangino M, Maschio A, Mateo Leach I, McKnight B, Memari Y, Mitchell BD, Montgomery GW, Nakamura Y, Nauck M, Navis G, Nöthlings U, Nolte IM, Porteous DJ, Pouta A, Pramstaller PP, Pullat J, Ring SM, Rotter JI, Ruggiero D, Ruokonen A, Sala C, Samani NJ, Sambrook J, Schlessinger D, Schreiber S, Schunkert H, Scott J, Smith NL, Snieder H, Starr JM, Stumvoll M, Takahashi A, Tang WH, Taylor K, Tenesa A, Lay Thein S, Tönjes A, Uda M, Ulivi S, van Veldhuisen DJ, Visscher PM, Völker U, Wichmann HE, Wiggins KL, Willemsen G, Yang TP, Hua Zhao J, Zitting P, Bradley JR, Dedoussis GV, Gasparini P, Hazen SL, Metspalu A, Pirastu M, Shuldiner AR, Joost van Pelt L, Zwaginga JJ, Boomsma DI, Deary IJ, Franke A, Froguel P, Ganesh SK, Jarvelin MR, Martin NG, Meisinger C, Psaty BM, Spector TD, Wareham NJ, Akkerman JW, Ciullo M, Deloukas P, Greinacher A, Jupe S, Kamatani N, Khadake J, Kooner JS, Penninger J, Prokopenko I, Stemple D, Toniolo D, Wernisch L, Sanna S, Hicks AA, Rendon A, Ferreira MA, Ouwehand WH, Soranzo N. New gene functions in megakaryopoiesis and platelet formation. Nature. 2011 Nov 30;480(7376):201-8. doi: 10.1038/nature10659. [PubMed]()\n * Ndegwa N, Côté RG, Ovelleiro D, D'Eustachio P, Hermjakob H, Vizcaíno JA, Croft D. Critical amino acid residues in proteins: a BioMart integration of Reactome protein annotations with PRIDE mass spectrometry data and COSMIC somatic mutations. Database (Oxford). 2011 Oct 23;2011:bar047. doi: 10.1093/database/bar047. [PubMed]()\n * Haw RA, Croft D, Yung CK, Ndegwa N, D'Eustachio P, Hermjakob H, Stein LD. The Reactome BioMart. Database (Oxford). 2011 Oct 19;2011:bar031. doi: 10.1093/database/bar031. [PubMed]()\n * Bult CJ, Drabkin HJ, Evsikov A, Natale D, Arighi C, Roberts N, Ruttenberg A, D'Eustachio P, Smith B, Blake JA, Wu C. The representation of protein complexes in the Protein Ontology (PRO). BMC Bioinformatics. 2011 Sep 19;12:371. doi: 10.1186/1471-2105-12-371. [PubMed]()\n * Haw R, Hermjakob H, D'Eustachio P, Stein L. Reactome pathway analysis to enrich biological discovery in proteomics data sets. Proteomics. 2011 Sep;11(18):3598-613. doi: 10.1002/pmic.201100066. [PubMed]()\n * Sawey ET, Chanrion M, Cai C, Wu G, Zhang J, Zender L, Zhao A, Busuttil RW, Yee H, Stein L, French DM, Finn RS, Lowe SW, Powers S. Identification of a therapeutic strategy targeting amplified FGF19 in liver cancer by Oncogenomic screening. Cancer Cell. 2011 Mar 8;19(3):347-58. doi: 10.1016/j.ccr.2011.01.040. [PubMed]()\n * Jassal B. Pathway annotation and analysis with Reactome: the solute carrier class of membrane transporters. Hum Genomics. 2011 May;5(4):310-5. doi: 10.1186/1479-7364-5-4-310. [PubMed]()\n * D'Eustachio P. Reactome knowledgebase of human biological pathways and processes. Methods Mol Biol. 2011;694:49-61. doi: 10.1007/978-1-60761-977-2_4. [PubMed]()\n * Gillespie M, Shamovsky V, D'Eustachio P. Human and chicken TLR pathways: manual curation and computer-based orthology analysis. Mamm Genome. 2011 Feb;22(1-2):130-8. doi: 10.1007/s00335-010-9296-0. Epub 2010 Oct 30. [PubMed]()\n * Croft D, O'Kelly G, Wu G, Haw R, Gillespie M, Matthews L, Caudy M, Garapati P, Gopinath G, Jassal B, Jupe S, Kalatskaya I, Mahajan S, May B, Ndegwa N, Schmidt E, Shamovsky V, Yung C, Birney E, Hermjakob H, D'Eustachio P, Stein L. Reactome: a database of reactions, pathways and biological processes. Nucleic Acids Res. 2011 Jan;39(Database issue):D691-7. doi: 10.1093/nar/gkq1018. Epub 2010 Nov 9. [PubMed]()\n * Dall'Olio GM, Jassal B, Montanucci L, Gagneux P, Bertranpetit J, Laayouni H. The annotation of the asparagine N-linked glycosylation pathway in the Reactome database. Glycobiology. 2011 Nov;21(11):1395-400. doi: 10.1093/glycob/cwq215. Epub 2011 Jan 2. [PubMed]()\n\n2010\n\n * Voight BF, Scott LJ, Steinthorsdottir V, Morris AP, Dina C, Welch RP, Zeggini E, Huth C, Aulchenko YS, Thorleifsson G, McCulloch LJ, Ferreira T, Grallert H, Amin N, Wu G, Willer CJ, Raychaudhuri S, McCarroll SA, Langenberg C, Hofmann OM, Dupuis J, Qi L, Segrè AV, van Hoek M, Navarro P, Ardlie K, Balkau B, Benediktsson R, Bennett AJ, Blagieva R, Boerwinkle E, Bonnycastle LL, Bengtsson Boström K, Bravenboer B, Bumpstead S, Burtt NP, Charpentier G, Chines PS, Cornelis M, Couper DJ, Crawford G, Doney AS, Elliott KS, Elliott AL, Erdos MR, Fox CS, Franklin CS, Ganser M, Gieger C, Grarup N, Green T, Griffin S, Groves CJ, Guiducci C, Hadjadj S, Hassanali N, Herder C, Isomaa B, Jackson AU, Johnson PR, Jørgensen T, Kao WH, Klopp N, Kong A, Kraft P, Kuusisto J, Lauritzen T, Li M, Lieverse A, Lindgren CM, Lyssenko V, Marre M, Meitinger T, Midthjell K, Morken MA, Narisu N, Nilsson P, Owen KR, Payne F, Perry JR, Petersen AK, Platou C, Proença C, Prokopenko I, Rathmann W, Rayner NW, Robertson NR, Rocheleau G, Roden M, Sampson MJ, Saxena R, Shields BM, Shrader P, Sigurdsson G, Sparsø T, Strassburger K, Stringham HM, Sun Q, Swift AJ, Thorand B, Tichet J, Tuomi T, van Dam RM, van Haeften TW, van Herpt T, van Vliet-Ostaptchouk JV, Walters GB, Weedon MN, Wijmenga C, Witteman J, Bergman RN, Cauchi S, Collins FS, Gloyn AL, Gyllensten U, Hansen T, Hide WA, Hitman GA, Hofman A, Hunter DJ, Hveem K, Laakso M, Mohlke KL, Morris AD, Palmer CN, Pramstaller PP, Rudan I, Sijbrands E, Stein LD, Tuomilehto J, Uitterlinden A, Walker M, Wareham NJ, Watanabe RM, Abecasis GR, Boehm BO, Campbell H, Daly MJ, Hattersley AT, Hu FB, Meigs JB, Pankow JS, Pedersen O, Wichmann HE, Barroso I, Florez JC, Frayling TM, Groop L, Sladek R, Thorsteinsdottir U, Wilson JF, Illig T, Froguel P, van Duijn CM, Stefansson K, Altshuler D, Boehnke M, McCarthy MI; MAGIC investigators; GIANT Consortium. Twelve type 2 diabetes susceptibility loci identified through large-scale association analysis. Nat Genet. 2010 Jul;42(7):579-89. doi: 10.1038/ng.609. Erratum in: Nat Genet. 2011 Apr;43(4):388. [PubMed]()\n * Jassal B, Jupe S, Caudy M, Birney E, Stein L, Hermjakob H, D'Eustachio P. The systematic annotation of the three main GPCR families in Reactome. Database (Oxford). 2010 Jul 29;2010:baq018. doi: 10.1093/database/baq018. [PubMed]()\n * Antonov AV, Schmidt EE, Dietmann S, Krestyaninova M, Hermjakob H. R spider: a network-based analysis of gene lists by combining signaling and metabolic pathways from Reactome and KEGG databases. Nucleic Acids Res. 2010 Jul;38(Web Server issue):W78-83. doi: 10.1093/nar/gkq482. Epub 2010 Jun 2. [PubMed]()\n * Wu G, Feng X, Stein L. A human functional protein interaction network and its application to cancer data analysis. Genome Biol. 2010;11(5):R53. doi: 10.1186/gb-2010-11-5-r53. Epub 2010 May 19. [PubMed]()\n\n2009\n\n * Matthews L, Gopinath G, Gillespie M, Caudy M, Croft D, de Bono B, Garapati P, Hemish J, Hermjakob H, Jassal B, Kanapin A, Lewis S, Mahajan S, May B, Schmidt E, Vastrik I, Wu G, Birney E, Stein L, D'Eustachio P. Reactome knowledgebase of human biological pathways and processes. Nucleic Acids Res. 2009 Jan;37(Database issue):D619-22. doi: 10.1093/nar/gkn863. Epub 2008 Nov 3. [PubMed]()\n\n2007\n\n * Vastrik I, D'Eustachio P, Schmidt E, Gopinath G, Croft D, de Bono B, Gillespie M, Jassal B, Lewis S, Matthews L, Wu G, Birney E, Stein L. Reactome: a knowledge base of biologic pathways and processes. Genome Biol. 2007;8(3):R39. doi: 10.1186/gb-2007-8-3-r39. Erratum in: Genome Biol. 2009 Feb 4;10(2):402. Joshi-Tope, Geeta [removed]. [PubMed]()\n * Matthews L, D’Eustachio P, Gillespie M, Croft D, de Bono B, Gopinath G, Jassal B, Lewis S, Schmidt E, Vastrik I, Wu G, Birney E, Stein L. An Introduction to the Reactome Knowledgebase of Human Biological Pathways and Processes.Bioinformatics Primer, NCI/Nature Pathway Interaction Database. doi:10.1038/pid.2007.3.\n\n2005\n\n * Joshi-Tope G, Gillespie M, Vastrik I, D’Eustachio P, Schmidt E, de Bono B, Jassal B, Gopinath GR, Wu GR, Matthews L, Lewis S, Birney E, Stein L. Reactome: a knowledgebase of biological pathways.Nucleic Acids Res.1:D428-32. doi: 10.1093/nar/gki072. [PubMed]()\n\n2004\n\n * Stein LD. Using the Reactome database.Curr Protoc Bioinformatics.Chapter 8:Unit 8.7. doi: 10.1002/0471250953.bi0807s7. [PubMed]()\n\n2003\n\n * Joshi-Tope G, Vastrik I, Gopinath GR, Matthews L, Schmidt E, Gillespie M, D’Eustachio P, Jassal B, Lewis S, Wu G, Birney E, Stein L. The Genome Knowledgebase: a resource for biologists and bioinformaticists.Cold Spring Harb Symp Quant Biol.68:237-43. Doi: doi: 10.1101/sqb.2003.68.237. [PubMed]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/community/resources.json b/projects/website-angular/content-dist/community/resources.json new file mode 100644 index 00000000..a1f6f586 --- /dev/null +++ b/projects/website-angular/content-dist/community/resources.json @@ -0,0 +1 @@ +{"title":"Resources Guide","category":"community","body":"\n## Resources Guide \n\nWe actively seek collaborations with other data resources and users to improve data integration, share efforts, and make our data maximally useful to biologists and bioinformaticians. Here are a list of software tools, websites, databases and research projects that: i) support the use of Reactome data, ii) have integrated Reactome data, or iii) provide data linkages to the Reactome website. \n\nIf we are missing your website, database, software tool and project, please contact our [help@reactome.org]().\n\n\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/covid-19.json b/projects/website-angular/content-dist/content/covid-19.json new file mode 100644 index 00000000..329cdf02 --- /dev/null +++ b/projects/website-angular/content-dist/content/covid-19.json @@ -0,0 +1 @@ +{"title":"COVID-19 Disease Pathways","category":"content","body":"\n## COVID-19 Disease Pathways \n\n**Rapid and Precise Molecular Pathway Modeling of the SARS-CoV-1 and SARS-CoV-2 Infection Cycle with Human Host Protein and Therapeutic Interactions**\n\nIn response to the COVID-19 pandemic, Reactome fast-tracked the annotation of Human Coronavirus infection pathways in collaboration with the COVID-19 Disease Map group. We have described the molecular annotations of the COVID-19 infection process mediated by the SARS-CoV-2 coronavirus, interactions between viral components and human host proteins that mediate the severity of viral infection, and the effects of therapeutics and drug-like compounds on both viral and host proteins. The SARS-CoV-2 pathway annotations will provide a framework for pathway- and network-based data analysis and visualization, which will be critical for interpreting numerous COVID-19 studies now and in the future. \n\nIn collaboration with a team of community experts in virology, drug design, and infectious disease, we assembled the information in two stages. First, a draft annotation associated relevant SARS-CoV-1 and SARS-CoV-2 viral and host cell proteins with each stage of the infection process and the host's response. These annotations will be immediately useful for identifying additional relevant interacting proteins, for assessing possible effects of variation in the host or viral proteins on specific steps of viral infection, and for identifying possible drug targets. In the second stage, the SARS-CoV-2 map was annotated more extensively to fill in molecular details of each step in these processes highlights differences in the processes mediated by SARS-CoV-2 virus and related coronaviruses. Reactome will continue to incorporate newly validated molecular details as they are uncovered by the research community.\n\nAll the data, code, and tools developed within this COVID Disease pathways project will be open source and open access, and freely available for use and re-use to support clinical and translational research projects.\n\nThis accelerated annotation project was supported by an administrative supplement grant U41 HG003751-13S1 from the National Human Genome Research Institute.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/orcid.json b/projects/website-angular/content-dist/content/orcid.json new file mode 100644 index 00000000..14d5eca4 --- /dev/null +++ b/projects/website-angular/content-dist/content/orcid.json @@ -0,0 +1 @@ +{"title":"ORCID Integration Project","category":"content","body":"\n## ORCID Integration Project \n\nBiological information has become so abundant and complex in recent years that it is difficult, if not impossible, even for expert individuals to manage in traditional publication formats and with existing knowledge management tools. It is an ongoing challenge for researchers to keep up-to-date on research developments in their fields and to identify relevant research to support their own studies without devoting too much time to collecting unconnected information. The Reactome group has recognized this challenge and is developing a set of novel online resources that use features of electronic media to organize biological information in ways that provide for more efficient access and that allow new forms of analysis that were not possible with information stored in the traditional printed literature.\n\nThe curation process for a pathway is similar to the editing of a scientific review. An external domain expert provides his or her expertise, one of our curators formalizes it into the database structure, and a second external domain expert reviews the representation. An evidence-tracking system ensures that all assertions are backed up by the primary literature. We have created data entry software, called the Author and Curator Tools, and associated web services, which provide interfaces in which the pathway authors can systematize their knowledge and a mechanism by which researchers, students, and clinicians can transform the information about interactions between biomolecules into knowledge about a cellular process.\n\nReactome has evolved into the one of the largest pathway databases, containing over 19,000 human and inferred model organism pathways, and is accessed by over 15,000 unique visitors per month all around the world. A key challenge for us is incentivizing the unpaid external domain experts to contribute their expertise and time to the curation process. In the scientific process, the key incentive is credit attribution. \n\nAs [ORCID]() is now part of our data model, we are constantly annotating curators, editors, and expert authors and reviewers with their respective ORCID. Thus, if your ORCID isn't annotated, please let us know directly from your Authors page (search for your name first), and one of our curators will add it, and we will make it available on the next data release. On the Authors page, once logged in ORCID, a button \"Let us know your orchid\" should appear, and you can share more information using our internal form.\n\n* * *\n\nOur main search allows **Authors** and **Reviewers** to [query]() for their pathway and reaction contributions using their names, and claim their contributions directly into ORCID.\n\n* * *\n\n### What is ORCID?\n\nORCID (Open Researcher and Contributor ID) is an open, non-profit, community-driven effort to create and maintain a registry of unique researcher identifiers and a transparent method of linking research activities and outputs to these identifiers. \n\nIndividuals can obtain a free ORCID (Open Researcher and Contributor ID) identifier. This digital identifier distinguishes individual researchers from other researchers and enables them to manage their records and search for others in the Registry.\n\n#### Authenticate\n\n\"\" Reactome is collecting your ORCID iD so we can add Pathways and Reactions (Works) that you have contributed either as author or reviewer into your ORCID records. When you click the “Authorize” button, we will ask you to share your iD using an authenticated process: either by [registering for an ORCID iD]() or, if you already have one, by [signing into your ORCID account](), then granting us permission to get your ORCID iD. We do this to ensure that you are correctly identified and securely connecting your ORCID iD. Learn more about [What’s so special about signing in]().\n\n#### Display\n\n\"display To acknowledge that you have used your iD and that it has been authenticated, we display the ORCID iD icon ![ORCID Logo](/uploads/content/orcid/orcid_16x16.png) alongside your name on our website/in our publications/in our database etc. Learn more in [How should an ORCID iD be displayed]().\n\n#### Connect\n\n\"connect By sharing your iD with Reactome, and giving us permission to [read and update your ORCID record](), you enable us to help you keep your record up-to-date with trusted information. Learn more in [Six ways to make your ORCID iD work for you!]()\n\nFor more detailed information about ORCID or to register for an ORCID iD, go the [ORCID website]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/180-reactome-spotlight.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/180-reactome-spotlight.json new file mode 100644 index 00000000..917485a6 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/180-reactome-spotlight.json @@ -0,0 +1 @@ +{"title":"Post-infusion CAR TReg cells identify patients resistant to CD19-CAR therapy","category":"content","date":"2022-10-18T10:26:35-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"180-reactome-spotlight\"]","body":"\n## Post-infusion CAR TReg cells identify patients resistant to CD19-CAR therapy \n\nReactome pathway enrichment analysis helps to pinpoint expansion of regulatory T cells as a new biomarker of CAR T cell therapy resistance and toxicity in patients with B cell lymphoma. The study was published by [Good et al. in Nature Medicine on September 12, 2022]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/186-reactome-pathway-gene-sets-in-the-msigdb-facilitated-identification-of-the-liver-proteasome-transcriptional-switch-that-acts-as-the-fasting-timer-in-intermittent-fasting.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/186-reactome-pathway-gene-sets-in-the-msigdb-facilitated-identification-of-the-liver-proteasome-transcriptional-switch-that-acts-as-the-fasting-timer-in-intermittent-fasting.json new file mode 100644 index 00000000..c315e3c7 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/186-reactome-pathway-gene-sets-in-the-msigdb-facilitated-identification-of-the-liver-proteasome-transcriptional-switch-that-acts-as-the-fasting-timer-in-intermittent-fasting.json @@ -0,0 +1 @@ +{"title":"Circadian transcriptional pathway atlas highlights a proteasome switch in intermittent fasting","category":"content","date":"2022-12-12T11:41:07-05:00","tags":"[\"content\", \"reactome-research-spotlight\", \"186-reactome-pathway-gene-sets-in-the-msigdb-facilitated-identification-of-the-liver-proteasome-transcriptional-switch-that-acts-as-the-fasting-timer-in-intermittent-fasting\"]","body":"\n## Circadian transcriptional pathway atlas highlights a proteasome switch in intermittent fasting \n\nReactome pathway gene sets in the MSigDB facilitated identification of the liver proteasome transcriptional switch that acts as the fasting timer in intermittent fasting in work published by [Wei et al. in Cell Reports on October 25, 2022](). The authors suggest that a 16-hour interval in intermittent fasting may be most beneficial for health.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/188-gene-set-enrichment-analysis-gsea-identifies-the-two-most-frequently-upregulated-carbohydrate-metabolism-pathways-in-tumors-with-high-tumor-specific-total-mrna-expression-tms.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/188-gene-set-enrichment-analysis-gsea-identifies-the-two-most-frequently-upregulated-carbohydrate-metabolism-pathways-in-tumors-with-high-tumor-specific-total-mrna-expression-tms.json new file mode 100644 index 00000000..cb03df2c --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/188-gene-set-enrichment-analysis-gsea-identifies-the-two-most-frequently-upregulated-carbohydrate-metabolism-pathways-in-tumors-with-high-tumor-specific-total-mrna-expression-tms.json @@ -0,0 +1 @@ +{"title":"Gene set enrichment analysis (GSEA) identifies upregulated carbohydrate metabolism pathways in tumors with high tumor-specific total mRNA expression (TmS)","category":"content","date":"2023-01-10T14:47:21-05:00","tags":"[\"content\", \"reactome-research-spotlight\", \"188-gene-set-enrichment-analysis-gsea-identifies-the-two-most-frequently-upregulated-carbohydrate-metabolism-pathways-in-tumors-with-high-tumor-specific-total-mrna-expression-tms\"]","body":"\n## Gene set enrichment analysis (GSEA) identifies upregulated carbohydrate metabolism pathways in tumors with high tumor-specific total mRNA expression (TmS) \n\nGene set enrichment analysis (GSEA) conducted on Reactome’s carbohydrate metabolism pathways identifies the [Pentose phosphate pathway]() and the [Glucose metabolism ]()pathway as the two most frequently upregulated pathways in tumors with high tumor-specific total mRNA expression (TmS) across 15 tumor types; TmS is a novel tumor phenotype-predictive quantitative feature described by [Cao et al. in the November 2022 issue of Nature Biotechnology]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/189-common-targetable-inflammatory-pathways-in-brain-transcriptome-of-autism-spectrum-disorders-and-tourette-syndrome.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/189-common-targetable-inflammatory-pathways-in-brain-transcriptome-of-autism-spectrum-disorders-and-tourette-syndrome.json new file mode 100644 index 00000000..27d096a1 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/189-common-targetable-inflammatory-pathways-in-brain-transcriptome-of-autism-spectrum-disorders-and-tourette-syndrome.json @@ -0,0 +1 @@ +{"title":"Common targetable inflammatory pathways in brain transcriptome of autism spectrum disorders and Tourette syndrome","category":"content","date":"2023-02-14T08:23:23-05:00","tags":"[\"content\", \"reactome-research-spotlight\", \"189-common-targetable-inflammatory-pathways-in-brain-transcriptome-of-autism-spectrum-disorders-and-tourette-syndrome\"]","body":"\n## Common targetable inflammatory pathways in brain transcriptome of autism spectrum disorders and Tourette syndrome \n\nReactome overrepresentation analyses of differentially expressed genes common to both Autism Spectrum Disorder and Tourette Syndrome help identify common targetable inflammatory pathways as described by [Alshammeryet al. in the December 2022 issue of Frontiers in Neuroscience.]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/190-probable-treatment-targets-for-diabetic-retinopathy-based-on-an-integrated-proteomic-and-genomic-analysis.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/190-probable-treatment-targets-for-diabetic-retinopathy-based-on-an-integrated-proteomic-and-genomic-analysis.json new file mode 100644 index 00000000..b8f252f5 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/190-probable-treatment-targets-for-diabetic-retinopathy-based-on-an-integrated-proteomic-and-genomic-analysis.json @@ -0,0 +1 @@ +{"title":"Probable Treatment Targets for Diabetic Retinopathy Based on an Integrated Proteomic and Genomic Analysis","category":"content","date":"2023-03-13T16:29:19-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"190-probable-treatment-targets-for-diabetic-retinopathy-based-on-an-integrated-proteomic-and-genomic-analysis\"]","body":"\n## Probable Treatment Targets for Diabetic Retinopathy Based on an Integrated Proteomic and Genomic Analysis \n\nAnalysis of all constituents of entire Reactome pathways identified by the presence of upregulated or mutated genes helped [Valdivia et al. in the February, 2023 issue of Translational Vision Science & Technology]() to identify druggable targets and potential drugs for the treatment of diabetic retinopathy (DR). Drugs affecting MMP13 and LGALS3 in the regulation of myeloid cell differentiation by RUNX2 were notable candidates.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/200-patient-derived-cell-based-pharmacogenomic-assessment-to-unveil-underlying-resistance-mechanisms-and-novel-therapeutics-for-advanced-lung-cancer.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/200-patient-derived-cell-based-pharmacogenomic-assessment-to-unveil-underlying-resistance-mechanisms-and-novel-therapeutics-for-advanced-lung-cancer.json new file mode 100644 index 00000000..2151a4b3 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/200-patient-derived-cell-based-pharmacogenomic-assessment-to-unveil-underlying-resistance-mechanisms-and-novel-therapeutics-for-advanced-lung-cancer.json @@ -0,0 +1 @@ +{"title":"Patient-derived cell-based pharmacogenomic assessment to unveil underlying resistance mechanisms and novel therapeutics for advanced lung cancer","category":"content","date":"2023-04-11T13:42:02-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"200-patient-derived-cell-based-pharmacogenomic-assessment-to-unveil-underlying-resistance-mechanisms-and-novel-therapeutics-for-advanced-lung-cancer\"]","body":"\n## Patient-derived cell-based pharmacogenomic assessment to unveil underlying resistance mechanisms and novel therapeutics for advanced lung cancer \n\nThe Reactome database helped [Yu et al. in the January 2023 issue of the Journal of Experimental & Clinical Cancer Research]() identify candidate drugs for treatment of four subtypes of lung cancer that were categorized by pharmaco-genomic analysis of patient-derived cells and correlated with drug sensitivity of the patient-derived cells and with Reactome pathways identified by gene set variation analysis.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/226-label-free-mass-spectrometry-proteomics-reveals-different-pathways-modulated-in-thp-1-cells-infected-with-therapeutic-failure-and-drug-resistance-leishmania-infantum-clinical-isolates.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/226-label-free-mass-spectrometry-proteomics-reveals-different-pathways-modulated-in-thp-1-cells-infected-with-therapeutic-failure-and-drug-resistance-leishmania-infantum-clinical-isolates.json new file mode 100644 index 00000000..a0a15f68 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/226-label-free-mass-spectrometry-proteomics-reveals-different-pathways-modulated-in-thp-1-cells-infected-with-therapeutic-failure-and-drug-resistance-leishmania-infantum-clinical-isolates.json @@ -0,0 +1 @@ +{"title":"Label-Free Mass Spectrometry Proteomics Reveals Different Pathways Modulated in THP‐1 Cells Infected with Therapeutic Failure and Drug Resistance Leishmania infantum Clinical Isolates","category":"content","date":"2023-06-13T09:48:16-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"226-label-free-mass-spectrometry-proteomics-reveals-different-pathways-modulated-in-thp-1-cells-infected-with-therapeutic-failure-and-drug-resistance-leishmania-infantum-clinical-isolates\"]","body":"\n## Label-Free Mass Spectrometry Proteomics Reveals Different Pathways Modulated in THP‐1 Cells Infected with Therapeutic Failure and Drug Resistance Leishmania infantum Clinical Isolates \n\n[Tagliazucchi L et al. 2023 in the March 2023 issue of ACS Infectious Diseases ]()used the REACTOME overrepresentation and pathway topology analyses to identify [Transport of small molecules](), [Cellular response to stress]() and other pathways associated with drug resistance and therapeutic failure (TF) during _Leishmania infantum_ infection; they also discovered NDK3 and TFRC as potential targets for host-directed anti-Leishmania therapies to overcome drug-resistance.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/227-severe-covid-19-in-pregnancy-has-a-distinct-serum-profile-including-greater-complement-activation-and-dysregulation-of-serum-lipids.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/227-severe-covid-19-in-pregnancy-has-a-distinct-serum-profile-including-greater-complement-activation-and-dysregulation-of-serum-lipids.json new file mode 100644 index 00000000..393b6b21 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/227-severe-covid-19-in-pregnancy-has-a-distinct-serum-profile-including-greater-complement-activation-and-dysregulation-of-serum-lipids.json @@ -0,0 +1 @@ +{"title":"Severe COVID-19 in pregnancy has a distinct serum profile, including greater complement activation and dysregulation of serum lipids","category":"content","date":"2023-06-13T10:02:39-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"227-severe-covid-19-in-pregnancy-has-a-distinct-serum-profile-including-greater-complement-activation-and-dysregulation-of-serum-lipids\"]","body":"\n## Severe COVID-19 in pregnancy has a distinct serum profile, including greater complement activation and dysregulation of serum lipids \n\nPregnancies complicated by Coronavirus Disease 2019 (COVID-19) are at an increased risk of severe morbidity. In multi-omics analyses investigating the pathophysiology behind severe COVID-19 disease, [Altendahl et al, in the November 2022 issue of PLoS One]() found precipitous changes in maternal serum in those with severe COVID-19 infection. Reactome pathway enrichment analysis revealed upregulated analytes in 4 pathways: [Complement cascade](), [Signaling by the B Cell Receptor (BCR)](), [Fc epsilon receptor (FCERI) signaling](), and [ FCGR activation]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/228-in-vitro-zika-virus-infection-of-human-neural-progenitor-cells-meta-analysis-of-rna-seq-assays.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/228-in-vitro-zika-virus-infection-of-human-neural-progenitor-cells-meta-analysis-of-rna-seq-assays.json new file mode 100644 index 00000000..5ff7e623 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/228-in-vitro-zika-virus-infection-of-human-neural-progenitor-cells-meta-analysis-of-rna-seq-assays.json @@ -0,0 +1 @@ +{"title":"In Vitro Zika Virus Infection of Human Neural Progenitor Cells: Meta-Analysis of RNA-Seq Assays","category":"content","date":"2023-07-14T17:08:49-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"228-in-vitro-zika-virus-infection-of-human-neural-progenitor-cells-meta-analysis-of-rna-seq-assays\"]","body":"\n## In Vitro Zika Virus Infection of Human Neural Progenitor Cells: Meta-Analysis of RNA-Seq Assays \n\nThe Zika virus (ZIKV) is an emergent arthropod-borne virus (arbovirus) responsible for congenital Zika syndrome (CZS) and a range of other congenital malformations. With little known about the pathways involved in CZS, [Gratton et al in the February 2020 issue of Microorganisms]() conducted a meta-analysis of transcriptome studies to identify the genes and pathways altered during Zika infection. Reactome analysis identified interferon, pro-inflammatory, and chemokines signaling as well as apoptosis as key IFN signaling pathways in ZIKV-infected cells with three new candidate genes involved in hNPCs infection identified: APOL6, XAF1, and TNFRSF1.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/229-genetic-networks-of-alzheimer-s-disease-aging-and-longevity-in-humans.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/229-genetic-networks-of-alzheimer-s-disease-aging-and-longevity-in-humans.json new file mode 100644 index 00000000..b264e60b --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/229-genetic-networks-of-alzheimer-s-disease-aging-and-longevity-in-humans.json @@ -0,0 +1 @@ +{"title":"Genetic Networks of Alzheimer’s Disease, Aging, and Longevity in Humans","category":"content","date":"2023-08-11T13:49:31-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"229-genetic-networks-of-alzheimer-s-disease-aging-and-longevity-in-humans\"]","body":"\n## Genetic Networks of Alzheimer’s Disease, Aging, and Longevity in Humans \n\nUsing Reactome analysis tools and FIVIz, [Balmorez et al. in the March 2023 issue of _Int. J. Mol. Sci._](), established a commonality between the genes and pathways associated with Alzheimer's disease (AD), Ageing (AR) and Longevity. The pathways shared between AD and AR are [p53-Dependent G1/S DNA damage checkpoint](), [FOXO-mediated transcription](), and [SUMOylation](); between AD and longevity are [Cytokine Signaling in Immune system](), [Plasma lipoprotein assembly, remodeling, and clearance](), [Metabolism of fat-soluble vitamins](), and [NR1H2- and NR1H3-mediated signalling](); and between AR and Longevity are [Immune system]() and [Cytokine signaling]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/232-computational-drug-repositioning-of-clopidogrel-as-a-novel-therapeutic-option-for-focal-segmental-glomerulosclerosis.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/232-computational-drug-repositioning-of-clopidogrel-as-a-novel-therapeutic-option-for-focal-segmental-glomerulosclerosis.json new file mode 100644 index 00000000..6f18a2f2 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/232-computational-drug-repositioning-of-clopidogrel-as-a-novel-therapeutic-option-for-focal-segmental-glomerulosclerosis.json @@ -0,0 +1 @@ +{"title":"Computational drug repositioning of clopidogrel as a novel therapeutic option for focal segmental glomerulosclerosis","category":"content","date":"2023-09-07T15:56:12-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"232-computational-drug-repositioning-of-clopidogrel-as-a-novel-therapeutic-option-for-focal-segmental-glomerulosclerosis\"]","body":"\n## Computational drug repositioning of clopidogrel as a novel therapeutic option for focal segmental glomerulosclerosis \n\n \n​​With current treatments, focal segmental glomerulosclerosis (FSGS), the largest cause of nephrotic syndrome, frequently progresses to end-stage kidney disease.[ Gebeshuber et al. (2023)]() assembled 376 FSGS-associated proteins into a FSGS pathophysiology model, major components of which were Reactome pathways for[ signal transduction]() and[ hemostasis](). The 39 proteins shared between FSGS model and a 102-protein model for the antiplatelet drug clopidogrel included 20 therapeutic targets of the drug. Tested in an FSGS mouse model, clopidogrel significantly attenuated disease severity, repositioning the drug as an attractive candidate for human clinical trials for FSGS.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/233-dna-methylation-and-28-year-cardiovascular-disease-risk-in-type-1-diabetes-the-epidemiology-of-diabetes-complications-edc-cohort-study.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/233-dna-methylation-and-28-year-cardiovascular-disease-risk-in-type-1-diabetes-the-epidemiology-of-diabetes-complications-edc-cohort-study.json new file mode 100644 index 00000000..82ecbc88 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/233-dna-methylation-and-28-year-cardiovascular-disease-risk-in-type-1-diabetes-the-epidemiology-of-diabetes-complications-edc-cohort-study.json @@ -0,0 +1 @@ +{"title":"DNA methylation and 28-year cardiovascular disease risk in type 1 diabetes: the Epidemiology of Diabetes Complications (EDC) cohort study","category":"content","date":"2023-10-22T23:06:05-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"233-dna-methylation-and-28-year-cardiovascular-disease-risk-in-type-1-diabetes-the-epidemiology-of-diabetes-complications-edc-cohort-study\"]","body":"\n## DNA methylation and 28-year cardiovascular disease risk in type 1 diabetes: the Epidemiology of Diabetes Complications (EDC) cohort study \n\nIn the [ August 2, 2023 issue of Clinical Epigenetics](), Miller et al. performed an epigenome-wide association study using Reactome Functional Interaction network analysis and determined that DNA methylation at loci involved in calcium channel activity and development was associated with long-term cardiovascular disease risk beyond known risk factors in type 1 diabetes, particularly in individuals with greater glycemic exposure.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/235-xmr-an-explainable-multimodal-neural-network-for-drug-response-prediction.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/235-xmr-an-explainable-multimodal-neural-network-for-drug-response-prediction.json new file mode 100644 index 00000000..2c383a4c --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/235-xmr-an-explainable-multimodal-neural-network-for-drug-response-prediction.json @@ -0,0 +1 @@ +{"title":"XMR: an explainable multimodal neural network for drug response prediction","category":"content","date":"2023-11-02T12:57:25-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"235-xmr-an-explainable-multimodal-neural-network-for-drug-response-prediction\"]","body":"\n## XMR: an explainable multimodal neural network for drug response prediction \n\nIn their paper titled “[XMR: an explainable multimodal neural network for drug response prediction]()” published in Frontiers in Bioinformatics in August 2023, Wang et al. use five Reactome pathways, [Cell Cycle](), [DNA repair](), [Disease](), [Signal transduction](), and [Metabolism](), as an architecture of a visible neural network that is part of a deep learning model for prediction of drug responses in triple negative breast cancer.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/237-new-insights-into-clinical-management-for-sickle-cell-disease-uncovering-the-significant-pathways-affected-by-the-involvement-of-sickle-cell-disease.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/237-new-insights-into-clinical-management-for-sickle-cell-disease-uncovering-the-significant-pathways-affected-by-the-involvement-of-sickle-cell-disease.json new file mode 100644 index 00000000..6b65cf48 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/237-new-insights-into-clinical-management-for-sickle-cell-disease-uncovering-the-significant-pathways-affected-by-the-involvement-of-sickle-cell-disease.json @@ -0,0 +1 @@ +{"title":"New Insights into Clinical Management for Sickle Cell Disease: Uncovering the Significant Pathways Affected by the Involvement of Sickle Cell Disease","category":"content","date":"2023-11-29T15:19:05-05:00","tags":"[\"content\", \"reactome-research-spotlight\", \"237-new-insights-into-clinical-management-for-sickle-cell-disease-uncovering-the-significant-pathways-affected-by-the-involvement-of-sickle-cell-disease\"]","body":"\n## New Insights into Clinical Management for Sickle Cell Disease: Uncovering the Significant Pathways Affected by the Involvement of Sickle Cell Disease \n\nIn the chapter entitled “[New Insights into Clinical Management for Sickle Cell Disease: Uncovering the Significant Pathways Affected by the Involvement of Sickle Cell Disease]()”, published in Methods in Molecular Biology 2024, Chouhan et al. describe the use of Reactome FIviz Cytoscape plugin to analyze pathway enrichment and construct a functional interaction network for DisGNET-derived sickle cell disease-associated genes, identifying genes involved in “[Glucuronidation]()”, “[Aspirin ADME]()”, “[Phase II-Conjugation of compounds]()”, “[Interleukin-4 and interleukin-13 signaling]()”, “[Interleukin-10 signaling]()”, “[Signaling by interleukins]()”, “[Biological oxidations]()”, and “[Cytokine signaling in immune system”]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/240-machine-learning-based-analysis-of-cancer-cell-derived-vesicular-proteins-revealed-significant-tumor-specificity-and-predictive-potential-of-extracellular-vesicles-for-cell-invasion-and-proliferation-a-meta-analysis.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/240-machine-learning-based-analysis-of-cancer-cell-derived-vesicular-proteins-revealed-significant-tumor-specificity-and-predictive-potential-of-extracellular-vesicles-for-cell-invasion-and-proliferation-a-meta-analysis.json new file mode 100644 index 00000000..dbe89135 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/240-machine-learning-based-analysis-of-cancer-cell-derived-vesicular-proteins-revealed-significant-tumor-specificity-and-predictive-potential-of-extracellular-vesicles-for-cell-invasion-and-proliferation-a-meta-analysis.json @@ -0,0 +1 @@ +{"title":"Machine learning-based analysis of cancer cell-derived vesicular proteins revealed significant tumor-specificity and predictive potential of extracellular vesicles for cell invasion and proliferation – A meta-analysis","category":"content","date":"2024-01-12T12:00:24-05:00","tags":"[\"content\", \"reactome-research-spotlight\", \"240-machine-learning-based-analysis-of-cancer-cell-derived-vesicular-proteins-revealed-significant-tumor-specificity-and-predictive-potential-of-extracellular-vesicles-for-cell-invasion-and-proliferation-a-meta-analysis\"]","body":"\n## Machine learning-based analysis of cancer cell-derived vesicular proteins revealed significant tumor-specificity and predictive potential of extracellular vesicles for cell invasion and proliferation – A meta-analysis \n\nIn the November 2023 issue of Cell Communication and Signaling, [Bukva et al. (2023)]() analyzed the proteomes of tumor-produced extracellular vesicles and identified sets of proteins that could discriminate tumor types, invasiveness, and proliferative capacity. In this analysis, 172 most predictive proteins were identified and used to classify nine tumor types with 91.67% efficiency. Reactome Pathway enrichment analysis of these proteins showed that each tumor type had perturbations in a distinct set of pathways. The proteins could be organized and used to discriminate the invasiveness and proliferative capacity of the tumors. High expression of proteins positively associated with invasiveness and proliferation correlated with reduced patient survival times.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/242-discovering-the-anti-cancer-phytochemical-rutin-against-breast-cancer-through-the-methodical-platform-based-on-traditional-medicinal-knowledge.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/242-discovering-the-anti-cancer-phytochemical-rutin-against-breast-cancer-through-the-methodical-platform-based-on-traditional-medicinal-knowledge.json new file mode 100644 index 00000000..b524c730 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/242-discovering-the-anti-cancer-phytochemical-rutin-against-breast-cancer-through-the-methodical-platform-based-on-traditional-medicinal-knowledge.json @@ -0,0 +1 @@ +{"title":"Discovering the anti-cancer phytochemical rutin against breast cancer through the methodical platform based on traditional medicinal knowledge","category":"content","date":"2024-02-09T13:21:53-05:00","tags":"[\"content\", \"reactome-research-spotlight\", \"242-discovering-the-anti-cancer-phytochemical-rutin-against-breast-cancer-through-the-methodical-platform-based-on-traditional-medicinal-knowledge\"]","body":"\n## Discovering the anti-cancer phytochemical rutin against breast cancer through the methodical platform based on traditional medicinal knowledge \n\nIn the July 2023 issue of BMB Reports, [Lee et al. (2023)]() employed the Reactome pathway database and tools to predict the anti-cancer effects of rutin, a natural phytochemical identified as a lead chemotherapeutic against breast cancer by text mining Korean traditional medicinal compendia from 1596 CE and 1613 CE. Genes that may be associated with rutin's effects were analyzed for pathway enrichment and functional interactions by the Reactome Functional Interaction (FI) plugin app of Cytoscape. Focal adhesion and [Apoptosis]() were among the pathways predicted to be affected by rutin and these effects were confirmed by treatment of breast cancer cells with rutin in vitro and in xenografts in mice.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/244-identification-of-potential-biological-processes-and-key-genes-in-diabetes-related-stroke-through-weighted-gene-co-expression-network-analysis.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/244-identification-of-potential-biological-processes-and-key-genes-in-diabetes-related-stroke-through-weighted-gene-co-expression-network-analysis.json new file mode 100644 index 00000000..be9b6337 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/244-identification-of-potential-biological-processes-and-key-genes-in-diabetes-related-stroke-through-weighted-gene-co-expression-network-analysis.json @@ -0,0 +1 @@ +{"title":"Identification of potential biological processes and key genes in diabetes-related stroke through weighted gene co-expression network analysis","category":"content","date":"2024-03-13T03:23:12-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"244-identification-of-potential-biological-processes-and-key-genes-in-diabetes-related-stroke-through-weighted-gene-co-expression-network-analysis\"]","body":"\n## Identification of potential biological processes and key genes in diabetes-related stroke through weighted gene co-expression network analysis \n\nUsing WGCNA, GO and KEGG data analysis tools,[ He Y et al. in the January 2024 issue of BMC Medical Genomics](), established a connection among the genes and pathways associated with type 2 diabetes (T2D) and ischemic stroke (IS) and identified GRN (granulin precursor) as the hub gene in T2D-related stroke. The functional enrichment analysis using Reactome analysis tool for GRN identified [Neutrophil degranulation](), [Toll-like Receptor Cascades](), [DDX58/IFIH1-mediated induction of interferon-alpha/ beta](), and[ NLR signaling pathways]() as shared biological processes in T2D and IS.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/248-nickel-induced-transcriptional-memory-in-lung-epithelial-cells-promotes-interferon-signaling-upon-nicotine-exposure.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/248-nickel-induced-transcriptional-memory-in-lung-epithelial-cells-promotes-interferon-signaling-upon-nicotine-exposure.json new file mode 100644 index 00000000..c6fbd6c0 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/248-nickel-induced-transcriptional-memory-in-lung-epithelial-cells-promotes-interferon-signaling-upon-nicotine-exposure.json @@ -0,0 +1 @@ +{"title":"Nickel-induced transcriptional memory in lung epithelial cells promotes interferon signaling upon nicotine exposure","category":"content","date":"2024-04-09T00:51:43-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"248-nickel-induced-transcriptional-memory-in-lung-epithelial-cells-promotes-interferon-signaling-upon-nicotine-exposure\"]","body":"\n## Nickel-induced transcriptional memory in lung epithelial cells promotes interferon signaling upon nicotine exposure \n\nIn the December 2023 issue of[ ]()Toxicology and Applied Pharmacology, [Zhang et al](). used the R package, ReactomePA [(Yu and He, 2016)](), to identify enriched pathways responding to nickel-induced transcriptional memory changes in response to a second respiratory toxicant, nicotine. Nicotine exposure upregulated a specific subset of genes in the cells previously exposed to nickel, identifying a robust activation of [Interferon (IFN) signaling](), a driver of inflammation associated with many chronic lung diseases.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/249-ibpgnet-lung-adenocarcinoma-recurrence-prediction-based-on-neural-network-interpretability.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/249-ibpgnet-lung-adenocarcinoma-recurrence-prediction-based-on-neural-network-interpretability.json new file mode 100644 index 00000000..3a0572e2 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/249-ibpgnet-lung-adenocarcinoma-recurrence-prediction-based-on-neural-network-interpretability.json @@ -0,0 +1 @@ +{"title":"IBPGNET: lung adenocarcinoma recurrence prediction based on neural network interpretability","category":"content","date":"2024-05-10T12:15:21-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"249-ibpgnet-lung-adenocarcinoma-recurrence-prediction-based-on-neural-network-interpretability\"]","body":"\n## IBPGNET: lung adenocarcinoma recurrence prediction based on neural network interpretability \n\nIn the May 2024 issue of Briefings in Bioinformatics, [Xu et al.]() develop an Interpretable Biological Pathway Graph Neural Network (IBPGNET) framework based on Reactome pathway hierarchy to predict regulatory mechanisms that lead to lung adenocarcinoma recurrences. IBPGNET identified two genes of interest and performed in vitro knockdown models for drug sensitivity experimental validation. This study offers an approach for exploring molecular mechanisms underlying recurrence using Reactome’s hierarchical pathway structure.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/252-acquired-resistance-to-immunotherapy-and-chemoradiation-in-myc-amplified-head-and-neck-cancer.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/252-acquired-resistance-to-immunotherapy-and-chemoradiation-in-myc-amplified-head-and-neck-cancer.json new file mode 100644 index 00000000..90404e2a --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/252-acquired-resistance-to-immunotherapy-and-chemoradiation-in-myc-amplified-head-and-neck-cancer.json @@ -0,0 +1 @@ +{"title":"Acquired resistance to immunotherapy and chemoradiation in MYC amplified head and neck cancer","category":"content","date":"2024-06-18T10:04:25-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"252-acquired-resistance-to-immunotherapy-and-chemoradiation-in-myc-amplified-head-and-neck-cancer\"]","body":"\n## Acquired resistance to immunotherapy and chemoradiation in MYC amplified head and neck cancer \n\nIn the May 2024 issue of NPJ Precision Oncology, [Cyberski et al.]() used Reactome’s hierarchically arranged pathways with their in silico Pathway Activation Network Decomposition Analysis (iPANDA) algorithm to identify upregulation of networks associated with [cell cycle ]()progression, [signal transduction](), and [metabolism]() and down-regulation of [immune cellular process ]()and [apoptosis]() in MYC-amplified cases of recurrent/metastatic head and neck squamous cell carcinoma.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/254-drug-target-prediction-through-deep-learning-functional-representation-of-gene-signatures.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/254-drug-target-prediction-through-deep-learning-functional-representation-of-gene-signatures.json new file mode 100644 index 00000000..710ee20c --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/254-drug-target-prediction-through-deep-learning-functional-representation-of-gene-signatures.json @@ -0,0 +1 @@ +{"title":"Drug target prediction through deep learning functional representation of gene signatures","category":"content","date":"2024-07-04T16:52:17-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"254-drug-target-prediction-through-deep-learning-functional-representation-of-gene-signatures\"]","body":"\n## Drug target prediction through deep learning functional representation of gene signatures \n\nIn their May 2024 Nature Communications paper, [Chen et al]() used data simulated based on Reactome pathways to validate their Functional Representation of Gene Signatures (FRoGS) algorithm, a deep learning-based approach that was designed to improve the accuracy of drug target predictions by addressing limitations of gene identity-based pathway analysis.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/255-the-landscape-of-cancer-rewired-gpcr-signaling-axes.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/255-the-landscape-of-cancer-rewired-gpcr-signaling-axes.json new file mode 100644 index 00000000..5d69aaf6 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/255-the-landscape-of-cancer-rewired-gpcr-signaling-axes.json @@ -0,0 +1 @@ +{"title":"The landscape of cancer-rewired GPCR signaling axes","category":"content","date":"2024-07-23T13:34:24-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"255-the-landscape-of-cancer-rewired-gpcr-signaling-axes\"]","body":"\n## The landscape of cancer-rewired GPCR signaling axes \n\nIn their May 2024 paper in Cell Genomics,[ Arora et al.]() used a framework of Reactome signaling and metabolism pathways to integrate RHEA metabolic reactions and IUPhAR catalogs of G Protein-Coupled Receptors (GPCRs) and their ligands to define axes that combine[ signaling cascades]() and ligand[ metabolic processes](). Altered expression of the sets of proteins that make up these axes correlate with patient survival cataloged in The Cancer Genome Atlas (TCGA) for many tumor types and suggest novel druggable targets.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/256-engineering-toxoplasma-gondii-secretion-systems-for-intracellular-delivery-of-multiple-large-therapeutic-proteins-to-neurons.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/256-engineering-toxoplasma-gondii-secretion-systems-for-intracellular-delivery-of-multiple-large-therapeutic-proteins-to-neurons.json new file mode 100644 index 00000000..77aa2a4f --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/256-engineering-toxoplasma-gondii-secretion-systems-for-intracellular-delivery-of-multiple-large-therapeutic-proteins-to-neurons.json @@ -0,0 +1 @@ +{"title":"Engineering Toxoplasma gondii secretion systems for intracellular delivery of multiple large therapeutic proteins to neurons","category":"content","date":"2024-08-29T18:48:21-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"256-engineering-toxoplasma-gondii-secretion-systems-for-intracellular-delivery-of-multiple-large-therapeutic-proteins-to-neurons\"]","body":"\n## Engineering Toxoplasma gondii secretion systems for intracellular delivery of multiple large therapeutic proteins to neurons \n\nIn the August 2024 issue of Nature Microbiology, [Bracha et al](). use Reactome expression analysis to confirm that they successfully delivered multiple large (>100 kDa) therapeutic proteins across the blood-brain barrier into target neurons in mice using engineered _Toxoplasma gondii_ secretion systems.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/262-chemical-coverage-of-human-biological-pathways.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/262-chemical-coverage-of-human-biological-pathways.json new file mode 100644 index 00000000..22c90a03 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/262-chemical-coverage-of-human-biological-pathways.json @@ -0,0 +1 @@ +{"title":"Chemical coverage of human biological pathways","category":"content","date":"2024-10-03T11:25:44-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"262-chemical-coverage-of-human-biological-pathways\"]","body":"\n## Chemical coverage of human biological pathways \n\nIn the feature article of the October 2024 issue of [Drug Discovery Today]() titled [“Chemical coverage of human biological pathways]()”, Kwak et al. describe the [Target 2035]() initiative, whose mission is to discover chemical tools for all human proteins by 2035. The authors use Reactome as the reference standard to determine the chemical coverage of human biological pathways and to outline the advantages of adopting the pathway-based rather than the proteome-based approach in guiding Target 2035 efforts.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/263-pathintegrate-multivariate-modelling-approaches-for-pathway-based-multi-omics-data-integration.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/263-pathintegrate-multivariate-modelling-approaches-for-pathway-based-multi-omics-data-integration.json new file mode 100644 index 00000000..f263ee14 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/263-pathintegrate-multivariate-modelling-approaches-for-pathway-based-multi-omics-data-integration.json @@ -0,0 +1 @@ +{"title":"PathIntegrate: Multivariate modelling approaches for pathway-based multi-omics data integration","category":"content","date":"2024-10-22T14:59:45-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"263-pathintegrate-multivariate-modelling-approaches-for-pathway-based-multi-omics-data-integration\"]","body":"\n## PathIntegrate: Multivariate modelling approaches for pathway-based multi-omics data integration \n\nIn [PLOS Computational Biology](), [Wieder et al. (2024) ]()employ the Reactome database and PathIntegrate, a pathway-based multi-omics integration tool based on single-sample pathway analysis and machine learning, to translate multi-omics datasets from molecular abundance measurements to pathway activity scores, enabling integration of disparate types of omics data according to a common scale. PathIntegrate provides higher sensitivity at low signal levels and efficiently identifies perturbed pathways from multi-omics datasets in COVID-19 and chronic obstructive pulmonary disease (COPD) examples, providing a readily interpretable predictive model.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/264-rna-editing-regulates-host-immune-response-and-t-cell-homeostasis-in-sars-cov-2-infection.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/264-rna-editing-regulates-host-immune-response-and-t-cell-homeostasis-in-sars-cov-2-infection.json new file mode 100644 index 00000000..d0e3fdd0 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/264-rna-editing-regulates-host-immune-response-and-t-cell-homeostasis-in-sars-cov-2-infection.json @@ -0,0 +1 @@ +{"title":"RNA editing regulates host immune response and T cell homeostasis in SARS-CoV-2 infection","category":"content","date":"2024-11-21T22:52:31-05:00","tags":"[\"content\", \"reactome-research-spotlight\", \"264-rna-editing-regulates-host-immune-response-and-t-cell-homeostasis-in-sars-cov-2-infection\"]","body":"\n## RNA editing regulates host immune response and T cell homeostasis in SARS-CoV-2 infection \n\nIn the August 2024 issue of PLoS One, [Huang et al.]() used the Reactome database to analyze the pattern of RNA editing in cells in response to infection by SARS-CoV-2 and found that editing was highest in transcripts of genes related to immune response andcytokine production. Single cell transcriptomics showed that the Reactome [Interferon signaling]() pathway is enriched in plasmacytoid B cells, B cells, and T cell subtypes during SARS-CoV-2 infection.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/266-a-living-organoid-biobank-of-patients-with-crohn-s-disease-reveals-molecular-subtypes-for-personalized-therapeutics.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/266-a-living-organoid-biobank-of-patients-with-crohn-s-disease-reveals-molecular-subtypes-for-personalized-therapeutics.json new file mode 100644 index 00000000..a4e0b3ce --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/266-a-living-organoid-biobank-of-patients-with-crohn-s-disease-reveals-molecular-subtypes-for-personalized-therapeutics.json @@ -0,0 +1 @@ +{"title":"A living organoid biobank of patients with Crohn’s disease reveals molecular subtypes for personalized therapeutics","category":"content","date":"2024-12-30T21:19:35-05:00","tags":"[\"content\", \"reactome-research-spotlight\", \"266-a-living-organoid-biobank-of-patients-with-crohn-s-disease-reveals-molecular-subtypes-for-personalized-therapeutics\"]","body":"\n## A living organoid biobank of patients with Crohn’s disease reveals molecular subtypes for personalized therapeutics \n\nIn the October 2024 issue of Cell Reports Medicine, [Tindle et al.]() identified two Crohn’s disease (CD) molecular subtypes - immune-deficient infectious CD (IDICD) and stress and senescence-induced fibrostenotic CD (S2FCD) - through multi-omics and functional analyses of patient-derived organoids. Reactome pathway enrichment analysis revealed subtype-specific dysregulations. In IDICD, the [Nuclear receptor transcription factor]() pathway, [Butyrophilin family interactions](), and [Intestinal infectious disease]() events were upregulated while [Cytokine signaling in immune system]() events were downregulated. In S2FCD, [Oncogene- ]()and [Oxidative stress-induced senescence]() pathways were upregulated and Signaling by TGF-beta receptor complex events were downregulated suggesting distinct subtype-specific therapeutic strategies.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/267-bpp-a-platform-for-automatic-biochemical-pathway-prediction.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/267-bpp-a-platform-for-automatic-biochemical-pathway-prediction.json new file mode 100644 index 00000000..1969e212 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/267-bpp-a-platform-for-automatic-biochemical-pathway-prediction.json @@ -0,0 +1 @@ +{"title":"BPP: a platform for automatic biochemical pathway prediction","category":"content","date":"2025-01-28T20:35:50-05:00","tags":"[\"content\", \"reactome-research-spotlight\", \"267-bpp-a-platform-for-automatic-biochemical-pathway-prediction\"]","body":"\n## BPP: a platform for automatic biochemical pathway prediction \n\nIn the July 2024 issue of Briefings in Bioinformatics, [Yi et al.]() report on The Biochemical Pathway Prediction (BPP) framework, a predictive analytical tool that utilizes various graph representation learning models to predict attributes and links in biochemical pathways. BPP provides two pieces of information: link prediction, which identifies potential connections between entities and reactions, and attribute prediction, which predicts missing attributes of nodes. The BPP framework was used to evaluate datasets derived from Reactome pathway data (version 75 to version 85), specifically identifying a key receptor, [glycosylated-ACE2](), instrumental in the [SARS-CoV-2 viral invasion]() process.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/269-co-methylation-networks-associated-with-cognition-and-structural-brain-development-during-adolescence.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/269-co-methylation-networks-associated-with-cognition-and-structural-brain-development-during-adolescence.json new file mode 100644 index 00000000..e4040b24 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/269-co-methylation-networks-associated-with-cognition-and-structural-brain-development-during-adolescence.json @@ -0,0 +1 @@ +{"title":"Co-methylation networks associated with cognition and structural brain development during adolescence","category":"content","date":"2025-02-25T23:02:54-05:00","tags":"[\"content\", \"reactome-research-spotlight\", \"269-co-methylation-networks-associated-with-cognition-and-structural-brain-development-during-adolescence\"]","body":"\n## Co-methylation networks associated with cognition and structural brain development during adolescence \n\nIn the January 2025 issue of Frontiers in Genetics, [Jensen et al](). explored the relationship between DNA methylation patterns and adolescent brain development. By analyzing a cohort of adolescents aged 9 to 14, they identified co-methylation networks linked to cognitive improvements and structural brain changes. Pathway analysis using Reactome revealed that these networks are enriched in neuronal-related pathways, suggesting that epigenetic modifications play a significant role in the maturation of the adolescent brain.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/271-genetically-supported-targets-and-drug-repurposing-for-brain-aging-a-systematic-study-in-the-uk-biobank.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/271-genetically-supported-targets-and-drug-repurposing-for-brain-aging-a-systematic-study-in-the-uk-biobank.json new file mode 100644 index 00000000..0b972502 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/271-genetically-supported-targets-and-drug-repurposing-for-brain-aging-a-systematic-study-in-the-uk-biobank.json @@ -0,0 +1 @@ +{"title":"Genetically supported targets and drug repurposing for brain aging: A systematic study in the UK Biobank","category":"content","date":"2025-03-31T02:58:31-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"271-genetically-supported-targets-and-drug-repurposing-for-brain-aging-a-systematic-study-in-the-uk-biobank\"]","body":"\n## Genetically supported targets and drug repurposing for brain aging: A systematic study in the UK Biobank \n\nIn the March 2025 issue of Science Advances [Yi et al. ]()reported the development of a brain age estimation model using large-scale genetic and imaging data. Brain age gap (BAG) is a digital phenotype that may reflect associations with various brain disorders. This study aimed to identify potential drug targets causally associated with BAG. A total of 64 genes were identified within five Reactome pathways: [programmed cell death](), [platelet signaling and aggregation]() , [extracellular matrix organization](), [cell surface interactions at the vascular wall](), and [apoptosis]() Of these, seven genes were prioritized as targets due to strong genetic evidence for BAG.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/272-reactome-strengthens-accuracy-by-monitoring-for-retracted-publications.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/272-reactome-strengthens-accuracy-by-monitoring-for-retracted-publications.json new file mode 100644 index 00000000..07539a05 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/272-reactome-strengthens-accuracy-by-monitoring-for-retracted-publications.json @@ -0,0 +1 @@ +{"title":"Reactome Strengthens Accuracy by Monitoring for Retracted Publications","category":"content","date":"2025-04-30T23:03:07-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"272-reactome-strengthens-accuracy-by-monitoring-for-retracted-publications\"]","body":"\n## Reactome Strengthens Accuracy by Monitoring for Retracted Publications \n\nReactome is committed to maintaining the highest standards of scientific accuracy. To help prevent the circulation of retracted research, we conduct regular, systematic reviews of all literature-backed assertions in our database. If a publication listed in the Retraction Watch database has been used as supporting evidence for any Reactome annotation, we re-evaluate the associated data. Annotations linked to retracted papers are either updated with new, valid references or removed entirely if no suitable replacements can be found. Each removal is documented along with the reason for the change. To date, we have reviewed over 40,000 curator-selected references and identified just 70 retracted articles. All affected annotations have been reviewed and revised accordingly. This ongoing process ensures the continued integrity and reliability of Reactome’s content.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/274-interpreting-biologically-informed-neural-networks-for-enhanced-proteomic-biomarker-discovery-and-pathway-analysis.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/274-interpreting-biologically-informed-neural-networks-for-enhanced-proteomic-biomarker-discovery-and-pathway-analysis.json new file mode 100644 index 00000000..8b6980ea --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/274-interpreting-biologically-informed-neural-networks-for-enhanced-proteomic-biomarker-discovery-and-pathway-analysis.json @@ -0,0 +1 @@ +{"title":"Interpreting biologically informed neural networks for enhanced proteomic biomarker discovery and pathway analysis","category":"content","date":"2025-06-01T23:18:05-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"274-interpreting-biologically-informed-neural-networks-for-enhanced-proteomic-biomarker-discovery-and-pathway-analysis\"]","body":"\n## Interpreting biologically informed neural networks for enhanced proteomic biomarker discovery and pathway analysis \n\n[June 1, 2025] The lack of interpretability in deep neural networks is a challenging issue in biomedical applications. In their 2023 Nature Communications study, [“Interpreting biologically informed neural networks for enhanced proteomic biomarker discovery and pathway analysis” ]()Hartman et al. used Reactome’s pathway hierarchical tree directly to develop multi-layered, biologically informed neural networks (BINNs) to address this issue and enhance proteomic biomarker discovery and pathway analysis. Reactome provided critical information on biological entity relationships, enabling the creation of BINNs that achieved high predictive accuracy in the identification of disease-relevant biomarkers and pathways in septic acute kidney injury and COVID-19 datasets. These BINNs outperformed traditional methods and provided experimentally testable molecular mechanistic explanations.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/276-rhythm-profiling-using-cofe-reveals-multi-omic-circadian-rhythms-in-human-cancers-in-vivo.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/276-rhythm-profiling-using-cofe-reveals-multi-omic-circadian-rhythms-in-human-cancers-in-vivo.json new file mode 100644 index 00000000..7d1307ef --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/276-rhythm-profiling-using-cofe-reveals-multi-omic-circadian-rhythms-in-human-cancers-in-vivo.json @@ -0,0 +1 @@ +{"title":"Rhythm profiling using COFE reveals multi-omic circadian rhythms in human cancers in vivo","category":"content","date":"2025-06-27T11:33:17-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"276-rhythm-profiling-using-cofe-reveals-multi-omic-circadian-rhythms-in-human-cancers-in-vivo\"]","body":"\n## Rhythm profiling using COFE reveals multi-omic circadian rhythms in human cancers in vivo \n\n[July 1, 2025] Gene expression levels in normal and diseased human tissues show circadian variation, but studying this variation directly is difficult. In their May, 2025 PLoS paper, [Ananthasubramaniam and Venkataramanan]() applied unsupervised machine learning to high-throughput omics data from primary human adenocarcinomas to identify circadian expression rhythms in hundreds of genes. Reactome gene set enrichment analysis identified genes with rhythmic expression patterns in multiple tumor types, significantly overrepresented in pathways of [mitochondrial translation](), [respiratory electron transport](), [mitotic cell cycle](), and [adaptive immune system](). The rhythmic expression of gene / protein targets of many FDA-approved and potential anti-cancer drugs in the adenocarcinomas suggests that timing of anti-tumor drug administration may improve efficacy.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/277-identification-and-targeting-of-regulators-of-sars-cov-2-host-interactions-in-the-airway-epithelium.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/277-identification-and-targeting-of-regulators-of-sars-cov-2-host-interactions-in-the-airway-epithelium.json new file mode 100644 index 00000000..7f379d73 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/277-identification-and-targeting-of-regulators-of-sars-cov-2-host-interactions-in-the-airway-epithelium.json @@ -0,0 +1 @@ +{"title":"Identification and targeting of regulators of SARS-CoV-2–host interactions in the airway epithelium","category":"content","date":"2025-07-28T15:14:13-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"277-identification-and-targeting-of-regulators-of-sars-cov-2-host-interactions-in-the-airway-epithelium\"]","body":"\n## Identification and targeting of regulators of SARS-CoV-2–host interactions in the airway epithelium \n\nIn the May 2025 issue of Science Advances, [Dirvin et al](). used single-cell transcriptomics and network-based algorithms on primary human airway cells to identify the key master regulator proteins hijacked by SARS-CoV-2, and then performed a large-scale screen to find drugs capable of reversing these effects. They used Reactome pathway analysis to characterize the biological processes, including [membrane trafficking]() and [ infectious disease pathways](), that were modulated by the eleven most promising drug candidates.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/278-learning-and-actioning-general-principles-of-cancer-cell-drug-sensitivity.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/278-learning-and-actioning-general-principles-of-cancer-cell-drug-sensitivity.json new file mode 100644 index 00000000..8c17dcfd --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/278-learning-and-actioning-general-principles-of-cancer-cell-drug-sensitivity.json @@ -0,0 +1 @@ +{"title":"Learning and actioning general principles of cancer cell drug sensitivity","category":"content","date":"2025-08-26T00:28:13-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"278-learning-and-actioning-general-principles-of-cancer-cell-drug-sensitivity\"]","body":"\n## Learning and actioning general principles of cancer cell drug sensitivity \n\nIn the February 2025 issue of Nature Communications, [Carli et al](). reported the development of a predictive model of cell line drug sensitivity from RNA-seq data using machine learning approaches. The model leveraged Reactome pathways in combination with large language models (LLMs) to provide a mechanistic foundation. It demonstrated strong performance and was applied to predict patient drug responses, with predictions supported by experimental validation. This work highlights how Reactome provides a robust framework for enhancing the interpretability of machine learning models in precision medicine.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/281-an-immune-competent-lung-on-a-chip-for-modelling-the-human-severe-influenza-infection-response.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/281-an-immune-competent-lung-on-a-chip-for-modelling-the-human-severe-influenza-infection-response.json new file mode 100644 index 00000000..89cdcfc4 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/281-an-immune-competent-lung-on-a-chip-for-modelling-the-human-severe-influenza-infection-response.json @@ -0,0 +1 @@ +{"title":"An immune-competent lung-on-a-chip for modelling the human severe influenza infection response","category":"content","date":"2025-09-30T18:37:19-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"281-an-immune-competent-lung-on-a-chip-for-modelling-the-human-severe-influenza-infection-response\"]","body":"\n## An immune-competent lung-on-a-chip for modelling the human severe influenza infection response \n\nIn their September 2025 [Nature Biomedical Engineering]() paper, [An immune-competent lung-on-a-chip for modelling the human severe influenza infection response](), Ringquist et al. show the importance of including tissue-resident and circulating immune cells, as well as stromal cells, in lung organoid chips to obtain a more realistic human in vitro model system for studying viral respiratory infections. Human-centric Reactome pathway enrichment analysis employed in this study shows that genes expressed in immune and stromal cells, mediating [immune response]() and [extracellular matrix remodeling](), respectively, are among the top 10% upregulated in influenza H1N1-infected lung organoids, amid a global transcriptional shutdown, showing the value this ex vivo model for studying lung infectious disease.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/283-reprogramming-neuroblastoma-by-diet-enhanced-polyamine-depletion.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/283-reprogramming-neuroblastoma-by-diet-enhanced-polyamine-depletion.json new file mode 100644 index 00000000..d23d7242 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/283-reprogramming-neuroblastoma-by-diet-enhanced-polyamine-depletion.json @@ -0,0 +1 @@ +{"title":"Reprogramming neuroblastoma by diet-enhanced polyamine depletion","category":"content","date":"2025-10-28T15:00:42-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"283-reprogramming-neuroblastoma-by-diet-enhanced-polyamine-depletion\"]","body":"\n## Reprogramming neuroblastoma by diet-enhanced polyamine depletion \n\nNeuroblastomas are driven by MYCN hyperactivity, accumulate abnormally high amounts of arginine, proline, and ornithine, and produce abnormally high amounts of polyamines due to MYCN upregulation of ornithine decarboxylase (ODC), the rate limiting enzyme of polyamine synthesis. Difluoromethylornithine (DFMO), an inhibitor of ODC, has therapeutic effect against neuroblastoma. Therefore, Cherkaoui et al (2025) in their October, 2025 Nature article [\"Reprogramming neuroblastoma by diet-enhanced polyamine depletion\"]() tested whether a diet free of proline and arginine, precursors of ornithine in neuroblastoma, would improve survival further. Although the proline-arginine-free diet alone had no effect on survival, in combination with DFMO it approximately doubled survival in experimental models.\n\nCherkaoui et al. then investigated the mechanism by which DFMO combined with depletion of proline and arginine inhibited growth of neuroblastomas. The treated tumors exhibited a ten-fold reduction in polyamine content relative to untreated tumors. Because spermidine and other polyamines can enhance translation, the translation efficiency of genes was measured by large scale analysis of RNA (RNA-seq), ribosome-bound RNA (Ribo-seq), and proteins. The surprising finding was that in conditions of low polyamines, ribosomes stalled more frequently at codons with adenosine at the third position. This may be due to the combination of a requirement for highly modified tRNAs to translate these codons, and lower hypusination of the eIF5A translation factor.\n\nWhy would stalling at a particular set of codons produce a specific anti-cancer effect? Cherkaoui et al. employed the [Reactome]() database to examine the codon usage in the genes encoding components of biological pathways. Surprisingly, the genes of the [cell cycle]() pathway had a significantly higher proportion of codons ending in adenosine than did the genes of the [neuronal system]() pathway, accounting for the selective effect of DFMO and the arginine-proline-free diet on neuroblastoma cell proliferation. Also surprisingly, all pathways varied significantly in codon usage, suggesting possible new methods of therapeutically regulating them.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/285-anti-progestin-therapy-targets-hallmarks-of-breast-cancer-risk.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/285-anti-progestin-therapy-targets-hallmarks-of-breast-cancer-risk.json new file mode 100644 index 00000000..c8c27bdf --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/285-anti-progestin-therapy-targets-hallmarks-of-breast-cancer-risk.json @@ -0,0 +1 @@ +{"title":"Anti-progestin therapy targets hallmarks of breast cancer risk","category":"content","date":"2025-12-05T14:03:53-05:00","tags":"[\"content\", \"reactome-research-spotlight\", \"285-anti-progestin-therapy-targets-hallmarks-of-breast-cancer-risk\"]","body":"\n## Anti-progestin therapy targets hallmarks of breast cancer risk \n\nProgesterone, a hormone cyclically produced during menstrual cycles and used in hormone replacement therapy (HRT) after menopause, can promote cell proliferation primarily through a paracrine signaling mechanism, where progesterone receptor (PR)-positive 'luminal mature' cells secrete signaling factors that act on neighboring PR-negative 'luminal progenitor' cells. This mechanism plays a crucial role in normal mammary gland development and has been implicated in breast cancer pathogenesis. Anti-progestin therapy has long been regarded as a potential strategy for breast cancer prevention. Simões et al. (2025) in their November 2025 Nature article, [Anti-progestin therapy targets hallmarks of breast cancer risk](), report findings from the single-arm phase II trial (BC-APPS1; [NCT02408770]()), showing the effects of ulipristal acetate (UA), a progesterone receptor antagonist, on breast tissue from women at higher risk of breast cancer. The study combined contrast-enhanced magnetic resonance imaging (MRI) data with multi-OMICs and imaging analyses of paired vacuum-assisted breast biopsies collected before and after 12 weeks of daily ulipristal acetate (UA) treatment. UA treatment reduced epithelial proliferation and depleted luminal progenitor cells, impairing their colony-forming capacity. Multi-omics analysis, including single-cell transcriptomics and laser-capture microdissection (LCM) proteomics, identified the extracellular matrix as the primary target of UA. Pathway enrichment using Reactome data revealed that [extracellular matrix (ECM) ]()processes were downregulated in fibroblasts and basal-myoepithelial cells while luminal hormone-sensing cells (LHS) showed downregulation of “[RNA-processing]()” components and upregulation of matrix metalloproteinases associated with “[collagen degradation]()”. Among the downregulated ECM genes, collagen VI chains (COL6A2, COL6A3) were the most significantly reduced. CellChat and NicheNet analyses showed that UA reduced fibroblast and basal–myoepithelial collagen-signaling outputs and linked LHS-derived ligands (WNT5A, RARRES1, APOD) to the regulation of key collagen genes (COL6A3, COL1A2) in fibroblast subclusters, highlighting progesterone-dependent paracrine control of the breast matrisome. Imaging analyses confirmed decreased abundance of collagen I, collagen VI (COL6A3), and fibronectin (FN1) which correlated with reduced tissue stiffness and MRI-assessed fibroglandular volume following UA treatment. Primary human breast organoids grown in stiff hydrogels showed increased expression of PR target gene TNFSF11 and luminal progenitor markers SOX9 and KIT, along with increased mammosphere formation - effects fully suppressed by UA treatment. Collectively, these findings reveal how ulipristal acetate modulates both epithelial and stromal biology through coordinated suppression of luminal progenitors and increased ECM remodeling to reduce breast cancer risk in premenopausal women.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/287-inhibition-of-type-i-interferon-signaling-is-a-conserved-function-of-gamma-herpesvirus-encoded-micrornas.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/287-inhibition-of-type-i-interferon-signaling-is-a-conserved-function-of-gamma-herpesvirus-encoded-micrornas.json new file mode 100644 index 00000000..e67d881b --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/287-inhibition-of-type-i-interferon-signaling-is-a-conserved-function-of-gamma-herpesvirus-encoded-micrornas.json @@ -0,0 +1 @@ +{"title":"Inhibition of type I interferon signaling is a conserved function of gamma-herpesvirus-encoded microRNAs","category":"content","date":"2026-01-10T01:30:20-05:00","tags":"[\"content\", \"reactome-research-spotlight\", \"287-inhibition-of-type-i-interferon-signaling-is-a-conserved-function-of-gamma-herpesvirus-encoded-micrornas\"]","body":"\n## Inhibition of type I interferon signaling is a conserved function of gamma-herpesvirus-encoded microRNAs \n\nType I interferon (IFN) signaling is one of the body’s earliest and most important defenses against viral infection, rapidly activating hundreds of antiviral genes. In the December 2025 Journal of Virology article, “[Inhibition of type I interferon signaling is a conserved function of gamma-herpesvirus-encoded microRNAs]()”, Fachko and colleagues demonstrate that gamma-herpesviruses, closely related to Epstein–Barr virus and Kaposi’s sarcoma–associated herpesvirus, encode microRNAs that consistently inhibit this pathway. By combining reporter assays, primary cell infections, and genetically engineered viruses lacking specific microRNA clusters, the authors demonstrate that viral microRNAs reduce interferon-stimulated gene expression during early infection and make latently infected cells less responsive to interferon. Importantly, they identify direct targeting of interferon receptors (IFNAR1 and IFNAR2) and central JAK/STAT pathway components (including JAK1, IRF9, and STAT-associated transcriptional regulators), revealing a multi-level strategy by which these viruses suppress antiviral immunity.The researchers use Reactome as they reanalyze Argonaute PAR-CLIP datasets, identifying “[Interferon signaling]()” and “[Interferon alpha/beta signaling]()” pathway host genes bound and regulated by viral microRNAs within the immune response pathway. This pathway-based analysis allowed them to move beyond individual gene hits and show that viral microRNAs converge on multiple nodes of the same antiviral signaling network. The use of high-quality Reactome pathway data strengthened the mechanistic conclusions of the study, highlighting how pathway-level analysis can reveal conserved immune evasion strategies employed by herpesviruses across species.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/289-markerpredict-predicting-clinically-relevant-predictive-biomarkers-with-machine-learning.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/289-markerpredict-predicting-clinically-relevant-predictive-biomarkers-with-machine-learning.json new file mode 100644 index 00000000..a687567b --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/289-markerpredict-predicting-clinically-relevant-predictive-biomarkers-with-machine-learning.json @@ -0,0 +1 @@ +{"title":"MarkerPredict: predicting clinically relevant predictive biomarkers with machine learning","category":"content","date":"2026-02-14T12:19:16-05:00","tags":"[\"content\", \"reactome-research-spotlight\", \"289-markerpredict-predicting-clinically-relevant-predictive-biomarkers-with-machine-learning\"]","body":"\n## MarkerPredict: predicting clinically relevant predictive biomarkers with machine learning \n\nIn their November 2025 NPJ Systems Biology and Applications paper “[MarkerPredict: predicting clinically relevant predictive biomarkers with machine learning]()”, Veres et al. constructed signaling networks using multiple curated interaction resources, with Reactome Functional Interaction (ReactomeFI) serving as a primary network due to its pathway-informed structure. Within these networks, they identified fully connected three-node motifs (“triangles”) containing known oncologic drug targets and intrinsically disordered proteins (IDPs). ReactomeFI showed the strongest enrichment of IDP–target triangles (enrichment ratio 11.91) relative to alternative networks, including CSN and SIGNOR, supporting its suitability for motif-based biomarker discovery.\n\nFeatures derived from network topology (e.g., motif participation and connectivity patterns) and protein disorder characteristics were used to train Random Forest and XGBoost classifiers. These models were evaluated for their ability to distinguish protein pairs associated with drug sensitivity from non-informative pairs. Model outputs were integrated into a Biomarker Probability Score (BPS), which ranks proteins by their likelihood of serving as predictive biomarkers.\n\nApplying MarkerPredict across targeted cancer therapies yielded 2,084 candidate predictive biomarkers. Among these, proteins such as LCK and ERK1 were highlighted as high-confidence candidates due to their network positioning and structural features, suggesting relevance for further experimental and clinical validation. The results indicate that proteins embedded in specific signaling motifs and exhibiting intrinsic disorder are more likely to function as effective predictors of therapeutic response.\n\nOverall, the study demonstrates that combining ReactomeFI-derived network topology with protein disorder information and supervised machine learning provides a scalable strategy for predictive biomarker discovery. MarkerPredict offers a complementary approach to existing biomarker identification methods and supports more informed selection of targeted therapies in oncology.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/290-patient-stratification-reveals-the-molecular-basis-of-disease-co-occurrences.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/290-patient-stratification-reveals-the-molecular-basis-of-disease-co-occurrences.json new file mode 100644 index 00000000..dc43c936 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/290-patient-stratification-reveals-the-molecular-basis-of-disease-co-occurrences.json @@ -0,0 +1 @@ +{"title":"Patient stratification reveals the molecular basis of disease co-occurrences","category":"content","date":"2026-03-16T03:00:02-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"290-patient-stratification-reveals-the-molecular-basis-of-disease-co-occurrences\"]","body":"\n## Patient stratification reveals the molecular basis of disease co-occurrences\n\nUrda-García et al. present a transcriptomics-based analysis of disease co-occurrence using RNA-seq data from 45 human diseases. [This study ]()evaluates whether similarities in gene expression profiles can explain known epidemiological comorbidities more effectively than prior network-based approaches.\n\nThe authors derived disease-level expression signatures and used these to construct a Disease Similarity Network, in which statistically significant correlations indicate shared molecular patterns. This network reproduced a substantial fraction of known disease co-occurrences. To address disease heterogeneity, patients were further grouped into expression-defined subtypes (“meta-patients”), which were incorporated into a Stratified Similarity Network. This stratified model increased recall of epidemiological associations to 64% and revealed subtype-specific relationships that were not detectable at the disease level, including associations restricted to specific breast cancer subtypes.\n\nPathway-level analysis using Reactome showed that diseases linked by epidemiological co-occurrence shared significantly more dysregulated pathways than unrelated disease pairs. [Immune system pathways]() were the most consistently shared features, with over 95% of epidemiologically linked disease pairs exhibiting common immune pathway upregulation.\n\nThe study demonstrates that patient stratification improves the detection of molecular similarities underlying disease co-occurrence and provides a reproducible framework, supported by a public web resource, for exploring subtype-resolved comorbidity at the transcriptomic level.\n\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/292-a-workflow-for-human-health-hazard-evaluation-using-transcriptomic-data-and-key-characteristics-based-gene-sets.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/292-a-workflow-for-human-health-hazard-evaluation-using-transcriptomic-data-and-key-characteristics-based-gene-sets.json new file mode 100644 index 00000000..802116f2 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/292-a-workflow-for-human-health-hazard-evaluation-using-transcriptomic-data-and-key-characteristics-based-gene-sets.json @@ -0,0 +1 @@ +{"title":"A workflow for human health hazard evaluation using transcriptomic data and Key Characteristics-based gene sets","category":"content","date":"2026-04-14T00:28:56-04:00","tags":"[\"content\", \"reactome-research-spotlight\", \"292-a-workflow-for-human-health-hazard-evaluation-using-transcriptomic-data-and-key-characteristics-based-gene-sets\"]","body":"\n## A workflow for human health hazard evaluation using transcriptomic data and Key Characteristics-based gene sets\n\nIn their March 2026 Society of Toxicology paper, “[A workflow for human health hazard evaluation using transcriptomic data and Key Characteristics-based gene sets]()”, Tsai et al. propose a framework to evaluate transcriptomic data through two paradigms: Key Characteristics (KCs) of chemical compounds - expert-defined properties of chemicals associated with specific human health hazards - and pathway annotation databases. The authors first consolidated 72 individual KCs from seven published hazard-specific sets (covering carcinogens, cardiovascular toxicants, endocrine disruptors, reproductive toxicants, hepatotoxicants, and immunotoxicants) into 34 non-redundant umbrella KC terms. They then systematically mapped Reactome and KEGG pathways to these terms and generated parallel “KC gene sets\" derived from Reactome and KEGG for each umbrella KC term by pooling all genes contained in the mapped pathways.\n\nThe Reactome- and KEGG-derived KC gene sets showed low gene overlap (most Jaccard scores below 0.1), confirming that the two databases are largely complementary rather than redundant and suggesting that optimal results can be obtained by using both gene sets in parallel. Reactome KC gene sets covered 77% of Reactome's annotated human genes.\n\nThe proposed workflow was then validated across four compounds. Enrichment analysis correctly identified immunotoxicity and oxidative stress for benzene, hepatotoxicity and carcinogenicity for TCDD (including strain-specific differences in AHR-driven liver fibrosis), and cardiac and mitochondrial dysfunction for the known cardiotoxicant sunitinib, while the non-cardiotoxic antibiotic amoxicillin showed minimal enrichment, as expected. GSEA and ORA were complementary, with GSEA showing greater sensitivity overall. Overall, the results suggest the proposed workflow may be a useful tool for systematic integration of transcriptomics into chemical hazard assessment.\n\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-1.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-1.json new file mode 100644 index 00000000..73567dee --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-1.json @@ -0,0 +1 @@ +{"title":"MarkerPredict: predicting clinically relevant predictive biomarkers with machine learning","category":"content","date":"2026-02-14T12:19:16-05:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ MarkerPredict: predicting clinically relevant predictive biomarkers with machine learning ]()\n\nIn their November 2025 NPJ Systems Biology and Applications paper “[MarkerPredict: predicting clinically relevant predictive biomarkers with machine learning]()”, Veres et al. constructed signaling networks using multiple curated interaction resources, with Reactome Functional Interaction (ReactomeFI) serving as a primary network due to its pathway-informed structure. Within these networks, they identified fully connected three-node motifs (“triangles”) containing known oncologic drug targets and intrinsically disordered proteins (IDPs). ReactomeFI showed the strongest enrichment of IDP–target triangles (enrichment ratio 11.91) relative to alternative networks, including CSN and SIGNOR, supporting its suitability for motif-based biomarker discovery.\n\nFeatures derived from network topology (e.g., motif participation and connectivity patterns) and protein disorder characteristics were used to train Random Forest and XGBoost classifiers. These models were evaluated for their ability to distinguish protein pairs associated with drug sensitivity from non-informative pairs. Model outputs were integrated into a Biomarker Probability Score (BPS), which ranks proteins by their likelihood of serving as predictive biomarkers.\n\nApplying MarkerPredict across targeted cancer therapies yielded 2,084 candidate predictive biomarkers. Among these, proteins such as LCK and ERK1 were highlighted as high-confidence candidates due to their network positioning and structural features, suggesting relevance for further experimental and clinical validation. The results indicate that proteins embedded in specific signaling motifs and exhibiting intrinsic disorder are more likely to function as effective predictors of therapeutic response.\n\nOverall, the study demonstrates that combining ReactomeFI-derived network topology with protein disorder information and supervised machine learning provides a scalable strategy for predictive biomarker discovery. MarkerPredict offers a complementary approach to existing biomarker identification methods and supports more informed selection of targeted therapies in oncology.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-10.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-10.json new file mode 100644 index 00000000..650c740e --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-10.json @@ -0,0 +1 @@ +{"title":"Reactome Strengthens Accuracy by Monitoring for Retracted Publications","category":"content","date":"2025-04-30T23:03:07-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Reactome Strengthens Accuracy by Monitoring for Retracted Publications ]()\n\nReactome is committed to maintaining the highest standards of scientific accuracy. To help prevent the circulation of retracted research, we conduct regular, systematic reviews of all literature-backed assertions in our database. If a publication listed in the Retraction Watch database has been used as supporting evidence for any Reactome annotation, we re-evaluate the associated data. Annotations linked to retracted papers are either updated with new, valid references or removed entirely if no suitable replacements can be found. Each removal is documented along with the reason for the change. To date, we have reviewed over 40,000 curator-selected references and identified just 70 retracted articles. All affected annotations have been reviewed and revised accordingly. This ongoing process ensures the continued integrity and reliability of Reactome’s content.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-11.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-11.json new file mode 100644 index 00000000..a8396684 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-11.json @@ -0,0 +1 @@ +{"title":"Genetically supported targets and drug repurposing for brain aging: A systematic study in the UK Biobank","category":"content","date":"2025-03-31T02:58:31-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Genetically supported targets and drug repurposing for brain aging: A systematic study in the UK Biobank ]()\n\nIn the March 2025 issue of Science Advances [Yi et al. ]()reported the development of a brain age estimation model using large-scale genetic and imaging data. Brain age gap (BAG) is a digital phenotype that may reflect associations with various brain disorders. This study aimed to identify potential drug targets causally associated with BAG. A total of 64 genes were identified within five Reactome pathways: [programmed cell death](), [platelet signaling and aggregation]() , [extracellular matrix organization](), [cell surface interactions at the vascular wall](), and [apoptosis]() Of these, seven genes were prioritized as targets due to strong genetic evidence for BAG.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-12.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-12.json new file mode 100644 index 00000000..7bd5cabf --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-12.json @@ -0,0 +1 @@ +{"title":"Co-methylation networks associated with cognition and structural brain development during adolescence","category":"content","date":"2025-02-25T23:02:54-05:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Co-methylation networks associated with cognition and structural brain development during adolescence ]()\n\nIn the January 2025 issue of Frontiers in Genetics, [Jensen et al](). explored the relationship between DNA methylation patterns and adolescent brain development. By analyzing a cohort of adolescents aged 9 to 14, they identified co-methylation networks linked to cognitive improvements and structural brain changes. Pathway analysis using Reactome revealed that these networks are enriched in neuronal-related pathways, suggesting that epigenetic modifications play a significant role in the maturation of the adolescent brain.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-13.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-13.json new file mode 100644 index 00000000..7fb531cd --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-13.json @@ -0,0 +1 @@ +{"title":"BPP: a platform for automatic biochemical pathway prediction","category":"content","date":"2025-01-28T20:35:50-05:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ BPP: a platform for automatic biochemical pathway prediction ]()\n\nIn the July 2024 issue of Briefings in Bioinformatics, [Yi et al.]() report on The Biochemical Pathway Prediction (BPP) framework, a predictive analytical tool that utilizes various graph representation learning models to predict attributes and links in biochemical pathways. BPP provides two pieces of information: link prediction, which identifies potential connections between entities and reactions, and attribute prediction, which predicts missing attributes of nodes. The BPP framework was used to evaluate datasets derived from Reactome pathway data (version 75 to version 85), specifically identifying a key receptor, [glycosylated-ACE2](), instrumental in the [SARS-CoV-2 viral invasion]() process.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-14.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-14.json new file mode 100644 index 00000000..767b96df --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-14.json @@ -0,0 +1 @@ +{"title":"A living organoid biobank of patients with Crohn’s disease reveals molecular subtypes for personalized therapeutics","category":"content","date":"2024-12-30T21:19:35-05:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ A living organoid biobank of patients with Crohn’s disease reveals molecular subtypes for personalized therapeutics ]()\n\nIn the October 2024 issue of Cell Reports Medicine, [Tindle et al.]() identified two Crohn’s disease (CD) molecular subtypes - immune-deficient infectious CD (IDICD) and stress and senescence-induced fibrostenotic CD (S2FCD) - through multi-omics and functional analyses of patient-derived organoids. Reactome pathway enrichment analysis revealed subtype-specific dysregulations. In IDICD, the [Nuclear receptor transcription factor]() pathway, [Butyrophilin family interactions](), and [Intestinal infectious disease]() events were upregulated while [Cytokine signaling in immune system]() events were downregulated. In S2FCD, [Oncogene- ]()and [Oxidative stress-induced senescence]() pathways were upregulated and Signaling by TGF-beta receptor complex events were downregulated suggesting distinct subtype-specific therapeutic strategies.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-15.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-15.json new file mode 100644 index 00000000..3d09ecce --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-15.json @@ -0,0 +1 @@ +{"title":"RNA editing regulates host immune response and T cell homeostasis in SARS-CoV-2 infection","category":"content","date":"2024-11-21T22:52:31-05:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ RNA editing regulates host immune response and T cell homeostasis in SARS-CoV-2 infection ]()\n\nIn the August 2024 issue of PLoS One, [Huang et al.]() used the Reactome database to analyze the pattern of RNA editing in cells in response to infection by SARS-CoV-2 and found that editing was highest in transcripts of genes related to immune response andcytokine production. Single cell transcriptomics showed that the Reactome [Interferon signaling]() pathway is enriched in plasmacytoid B cells, B cells, and T cell subtypes during SARS-CoV-2 infection.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-16.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-16.json new file mode 100644 index 00000000..5fe36ea2 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-16.json @@ -0,0 +1 @@ +{"title":"PathIntegrate: Multivariate modelling approaches for pathway-based multi-omics data integration","category":"content","date":"2024-10-22T14:59:45-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ PathIntegrate: Multivariate modelling approaches for pathway-based multi-omics data integration ]()\n\nIn [PLOS Computational Biology](), [Wieder et al. (2024) ]()employ the Reactome database and PathIntegrate, a pathway-based multi-omics integration tool based on single-sample pathway analysis and machine learning, to translate multi-omics datasets from molecular abundance measurements to pathway activity scores, enabling integration of disparate types of omics data according to a common scale. PathIntegrate provides higher sensitivity at low signal levels and efficiently identifies perturbed pathways from multi-omics datasets in COVID-19 and chronic obstructive pulmonary disease (COPD) examples, providing a readily interpretable predictive model.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-17.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-17.json new file mode 100644 index 00000000..69af6ec1 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-17.json @@ -0,0 +1 @@ +{"title":"Chemical coverage of human biological pathways","category":"content","date":"2024-10-03T11:25:44-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Chemical coverage of human biological pathways ]()\n\nIn the feature article of the October 2024 issue of [Drug Discovery Today]() titled [“Chemical coverage of human biological pathways]()”, Kwak et al. describe the [Target 2035]() initiative, whose mission is to discover chemical tools for all human proteins by 2035. The authors use Reactome as the reference standard to determine the chemical coverage of human biological pathways and to outline the advantages of adopting the pathway-based rather than the proteome-based approach in guiding Target 2035 efforts.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-18.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-18.json new file mode 100644 index 00000000..f3501200 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-18.json @@ -0,0 +1 @@ +{"title":"Engineering Toxoplasma gondii secretion systems for intracellular delivery of multiple large therapeutic proteins to neurons","category":"content","date":"2024-08-29T18:48:21-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Engineering Toxoplasma gondii secretion systems for intracellular delivery of multiple large therapeutic proteins to neurons ]()\n\nIn the August 2024 issue of Nature Microbiology, [Bracha et al](). use Reactome expression analysis to confirm that they successfully delivered multiple large (>100 kDa) therapeutic proteins across the blood-brain barrier into target neurons in mice using engineered _Toxoplasma gondii_ secretion systems.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-19.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-19.json new file mode 100644 index 00000000..396e0b50 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-19.json @@ -0,0 +1 @@ +{"title":"The landscape of cancer-rewired GPCR signaling axes","category":"content","date":"2024-07-23T13:34:24-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ The landscape of cancer-rewired GPCR signaling axes ]()\n\nIn their May 2024 paper in Cell Genomics,[ Arora et al.]() used a framework of Reactome signaling and metabolism pathways to integrate RHEA metabolic reactions and IUPhAR catalogs of G Protein-Coupled Receptors (GPCRs) and their ligands to define axes that combine[ signaling cascades]() and ligand[ metabolic processes](). Altered expression of the sets of proteins that make up these axes correlate with patient survival cataloged in The Cancer Genome Atlas (TCGA) for many tumor types and suggest novel druggable targets.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-2.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-2.json new file mode 100644 index 00000000..931cc817 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-2.json @@ -0,0 +1 @@ +{"title":"Inhibition of type I interferon signaling is a conserved function of gamma-herpesvirus-encoded microRNAs","category":"content","date":"2026-01-10T01:30:20-05:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Inhibition of type I interferon signaling is a conserved function of gamma-herpesvirus-encoded microRNAs ]()\n\nType I interferon (IFN) signaling is one of the body’s earliest and most important defenses against viral infection, rapidly activating hundreds of antiviral genes. In the December 2025 Journal of Virology article, “[Inhibition of type I interferon signaling is a conserved function of gamma-herpesvirus-encoded microRNAs]()”, Fachko and colleagues demonstrate that gamma-herpesviruses, closely related to Epstein–Barr virus and Kaposi’s sarcoma–associated herpesvirus, encode microRNAs that consistently inhibit this pathway. By combining reporter assays, primary cell infections, and genetically engineered viruses lacking specific microRNA clusters, the authors demonstrate that viral microRNAs reduce interferon-stimulated gene expression during early infection and make latently infected cells less responsive to interferon. Importantly, they identify direct targeting of interferon receptors (IFNAR1 and IFNAR2) and central JAK/STAT pathway components (including JAK1, IRF9, and STAT-associated transcriptional regulators), revealing a multi-level strategy by which these viruses suppress antiviral immunity.The researchers use Reactome as they reanalyze Argonaute PAR-CLIP datasets, identifying “[Interferon signaling]()” and “[Interferon alpha/beta signaling]()” pathway host genes bound and regulated by viral microRNAs within the immune response pathway. This pathway-based analysis allowed them to move beyond individual gene hits and show that viral microRNAs converge on multiple nodes of the same antiviral signaling network. The use of high-quality Reactome pathway data strengthened the mechanistic conclusions of the study, highlighting how pathway-level analysis can reveal conserved immune evasion strategies employed by herpesviruses across species.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-20.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-20.json new file mode 100644 index 00000000..c246447c --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-20.json @@ -0,0 +1 @@ +{"title":"Drug target prediction through deep learning functional representation of gene signatures","category":"content","date":"2024-07-04T16:52:17-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Drug target prediction through deep learning functional representation of gene signatures ]()\n\nIn their May 2024 Nature Communications paper, [Chen et al]() used data simulated based on Reactome pathways to validate their Functional Representation of Gene Signatures (FRoGS) algorithm, a deep learning-based approach that was designed to improve the accuracy of drug target predictions by addressing limitations of gene identity-based pathway analysis.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-21.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-21.json new file mode 100644 index 00000000..898cb1c1 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-21.json @@ -0,0 +1 @@ +{"title":"Acquired resistance to immunotherapy and chemoradiation in MYC amplified head and neck cancer","category":"content","date":"2024-06-18T10:04:25-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Acquired resistance to immunotherapy and chemoradiation in MYC amplified head and neck cancer ]()\n\nIn the May 2024 issue of NPJ Precision Oncology, [Cyberski et al.]() used Reactome’s hierarchically arranged pathways with their in silico Pathway Activation Network Decomposition Analysis (iPANDA) algorithm to identify upregulation of networks associated with [cell cycle ]()progression, [signal transduction](), and [metabolism]() and down-regulation of [immune cellular process ]()and [apoptosis]() in MYC-amplified cases of recurrent/metastatic head and neck squamous cell carcinoma.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-22.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-22.json new file mode 100644 index 00000000..226d12d3 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-22.json @@ -0,0 +1 @@ +{"title":"IBPGNET: lung adenocarcinoma recurrence prediction based on neural network interpretability","category":"content","date":"2024-05-10T12:15:21-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ IBPGNET: lung adenocarcinoma recurrence prediction based on neural network interpretability ]()\n\nIn the May 2024 issue of Briefings in Bioinformatics, [Xu et al.]() develop an Interpretable Biological Pathway Graph Neural Network (IBPGNET) framework based on Reactome pathway hierarchy to predict regulatory mechanisms that lead to lung adenocarcinoma recurrences. IBPGNET identified two genes of interest and performed in vitro knockdown models for drug sensitivity experimental validation. This study offers an approach for exploring molecular mechanisms underlying recurrence using Reactome’s hierarchical pathway structure.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-23.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-23.json new file mode 100644 index 00000000..54086ff8 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-23.json @@ -0,0 +1 @@ +{"title":"Nickel-induced transcriptional memory in lung epithelial cells promotes interferon signaling upon nicotine exposure","category":"content","date":"2024-04-09T00:51:43-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Nickel-induced transcriptional memory in lung epithelial cells promotes interferon signaling upon nicotine exposure ]()\n\nIn the December 2023 issue of[ ]()Toxicology and Applied Pharmacology, [Zhang et al](). used the R package, ReactomePA [(Yu and He, 2016)](), to identify enriched pathways responding to nickel-induced transcriptional memory changes in response to a second respiratory toxicant, nicotine. Nicotine exposure upregulated a specific subset of genes in the cells previously exposed to nickel, identifying a robust activation of [Interferon (IFN) signaling](), a driver of inflammation associated with many chronic lung diseases.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-24.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-24.json new file mode 100644 index 00000000..8283d7dd --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-24.json @@ -0,0 +1 @@ +{"title":"Identification of potential biological processes and key genes in diabetes-related stroke through weighted gene co-expression network analysis","category":"content","date":"2024-03-13T03:23:12-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Identification of potential biological processes and key genes in diabetes-related stroke through weighted gene co-expression network analysis ]()\n\nUsing WGCNA, GO and KEGG data analysis tools,[ He Y et al. in the January 2024 issue of BMC Medical Genomics](), established a connection among the genes and pathways associated with type 2 diabetes (T2D) and ischemic stroke (IS) and identified GRN (granulin precursor) as the hub gene in T2D-related stroke. The functional enrichment analysis using Reactome analysis tool for GRN identified [Neutrophil degranulation](), [Toll-like Receptor Cascades](), [DDX58/IFIH1-mediated induction of interferon-alpha/ beta](), and[ NLR signaling pathways]() as shared biological processes in T2D and IS.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-25.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-25.json new file mode 100644 index 00000000..5a3ab614 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-25.json @@ -0,0 +1 @@ +{"title":"Discovering the anti-cancer phytochemical rutin against breast cancer through the methodical platform based on traditional medicinal knowledge","category":"content","date":"2024-02-09T13:21:53-05:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Discovering the anti-cancer phytochemical rutin against breast cancer through the methodical platform based on traditional medicinal knowledge ]()\n\nIn the July 2023 issue of BMB Reports, [Lee et al. (2023)]() employed the Reactome pathway database and tools to predict the anti-cancer effects of rutin, a natural phytochemical identified as a lead chemotherapeutic against breast cancer by text mining Korean traditional medicinal compendia from 1596 CE and 1613 CE. Genes that may be associated with rutin's effects were analyzed for pathway enrichment and functional interactions by the Reactome Functional Interaction (FI) plugin app of Cytoscape. Focal adhesion and [Apoptosis]() were among the pathways predicted to be affected by rutin and these effects were confirmed by treatment of breast cancer cells with rutin in vitro and in xenografts in mice.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-26.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-26.json new file mode 100644 index 00000000..ffcdc8fc --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-26.json @@ -0,0 +1 @@ +{"title":"Machine learning-based analysis of cancer cell-derived vesicular proteins revealed significant tumor-specificity and predictive potential of extracellular vesicles for cell invasion and proliferation – A meta-analysis","category":"content","date":"2024-01-12T12:00:24-05:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Machine learning-based analysis of cancer cell-derived vesicular proteins revealed significant tumor-specificity and predictive potential of extracellular vesicles for cell invasion and proliferation – A meta-analysis ]()\n\nIn the November 2023 issue of Cell Communication and Signaling, [Bukva et al. (2023)]() analyzed the proteomes of tumor-produced extracellular vesicles and identified sets of proteins that could discriminate tumor types, invasiveness, and proliferative capacity. In this analysis, 172 most predictive proteins were identified and used to classify nine tumor types with 91.67% efficiency. Reactome Pathway enrichment analysis of these proteins showed that each tumor type had perturbations in a distinct set of pathways. The proteins could be organized and used to discriminate the invasiveness and proliferative capacity of the tumors. High expression of proteins positively associated with invasiveness and proliferation correlated with reduced patient survival times.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-27.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-27.json new file mode 100644 index 00000000..2c30d2fd --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-27.json @@ -0,0 +1 @@ +{"title":"New Insights into Clinical Management for Sickle Cell Disease: Uncovering the Significant Pathways Affected by the Involvement of Sickle Cell Disease","category":"content","date":"2023-11-29T15:19:05-05:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ New Insights into Clinical Management for Sickle Cell Disease: Uncovering the Significant Pathways Affected by the Involvement of Sickle Cell Disease ]()\n\nIn the chapter entitled “[New Insights into Clinical Management for Sickle Cell Disease: Uncovering the Significant Pathways Affected by the Involvement of Sickle Cell Disease]()”, published in Methods in Molecular Biology 2024, Chouhan et al. describe the use of Reactome FIviz Cytoscape plugin to analyze pathway enrichment and construct a functional interaction network for DisGNET-derived sickle cell disease-associated genes, identifying genes involved in “[Glucuronidation]()”, “[Aspirin ADME]()”, “[Phase II-Conjugation of compounds]()”, “[Interleukin-4 and interleukin-13 signaling]()”, “[Interleukin-10 signaling]()”, “[Signaling by interleukins]()”, “[Biological oxidations]()”, and “[Cytokine signaling in immune system”]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-28.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-28.json new file mode 100644 index 00000000..6e86655e --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-28.json @@ -0,0 +1 @@ +{"title":"XMR: an explainable multimodal neural network for drug response prediction","category":"content","date":"2023-11-02T12:57:25-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ XMR: an explainable multimodal neural network for drug response prediction ]()\n\nIn their paper titled “[XMR: an explainable multimodal neural network for drug response prediction]()” published in Frontiers in Bioinformatics in August 2023, Wang et al. use five Reactome pathways, [Cell Cycle](), [DNA repair](), [Disease](), [Signal transduction](), and [Metabolism](), as an architecture of a visible neural network that is part of a deep learning model for prediction of drug responses in triple negative breast cancer.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-29.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-29.json new file mode 100644 index 00000000..debdfc74 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-29.json @@ -0,0 +1 @@ +{"title":"DNA methylation and 28-year cardiovascular disease risk in type 1 diabetes: the Epidemiology of Diabetes Complications (EDC) cohort study","category":"content","date":"2023-10-22T23:06:05-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ DNA methylation and 28-year cardiovascular disease risk in type 1 diabetes: the Epidemiology of Diabetes Complications (EDC) cohort study ]()\n\nIn the [ August 2, 2023 issue of Clinical Epigenetics](), Miller et al. performed an epigenome-wide association study using Reactome Functional Interaction network analysis and determined that DNA methylation at loci involved in calcium channel activity and development was associated with long-term cardiovascular disease risk beyond known risk factors in type 1 diabetes, particularly in individuals with greater glycemic exposure.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-3.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-3.json new file mode 100644 index 00000000..fe862cf0 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-3.json @@ -0,0 +1 @@ +{"title":"Anti-progestin therapy targets hallmarks of breast cancer risk","category":"content","date":"2025-12-05T14:03:53-05:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Anti-progestin therapy targets hallmarks of breast cancer risk ]()\n\nProgesterone, a hormone cyclically produced during menstrual cycles and used in hormone replacement therapy (HRT) after menopause, can promote cell proliferation primarily through a paracrine signaling mechanism, where progesterone receptor (PR)-positive 'luminal mature' cells secrete signaling factors that act on neighboring PR-negative 'luminal progenitor' cells. This mechanism plays a crucial role in normal mammary gland development and has been implicated in breast cancer pathogenesis. Anti-progestin therapy has long been regarded as a potential strategy for breast cancer prevention. Simões et al. (2025) in their November 2025 Nature article, [Anti-progestin therapy targets hallmarks of breast cancer risk](), report findings from the single-arm phase II trial (BC-APPS1; [NCT02408770]()), showing the effects of ulipristal acetate (UA), a progesterone receptor antagonist, on breast tissue from women at higher risk of breast cancer. The study combined contrast-enhanced magnetic resonance imaging (MRI) data with multi-OMICs and imaging analyses of paired vacuum-assisted breast biopsies collected before and after 12 weeks of daily ulipristal acetate (UA) treatment. UA treatment reduced epithelial proliferation and depleted luminal progenitor cells, impairing their colony-forming capacity. Multi-omics analysis, including single-cell transcriptomics and laser-capture microdissection (LCM) proteomics, identified the extracellular matrix as the primary target of UA. Pathway enrichment using Reactome data revealed that [extracellular matrix (ECM) ]()processes were downregulated in fibroblasts and basal-myoepithelial cells while luminal hormone-sensing cells (LHS) showed downregulation of “[RNA-processing]()” components and upregulation of matrix metalloproteinases associated with “[collagen degradation]()”. Among the downregulated ECM genes, collagen VI chains (COL6A2, COL6A3) were the most significantly reduced. CellChat and NicheNet analyses showed that UA reduced fibroblast and basal–myoepithelial collagen-signaling outputs and linked LHS-derived ligands (WNT5A, RARRES1, APOD) to the regulation of key collagen genes (COL6A3, COL1A2) in fibroblast subclusters, highlighting progesterone-dependent paracrine control of the breast matrisome. Imaging analyses confirmed decreased abundance of collagen I, collagen VI (COL6A3), and fibronectin (FN1) which correlated with reduced tissue stiffness and MRI-assessed fibroglandular volume following UA treatment. Primary human breast organoids grown in stiff hydrogels showed increased expression of PR target gene TNFSF11 and luminal progenitor markers SOX9 and KIT, along with increased mammosphere formation - effects fully suppressed by UA treatment. Collectively, these findings reveal how ulipristal acetate modulates both epithelial and stromal biology through coordinated suppression of luminal progenitors and increased ECM remodeling to reduce breast cancer risk in premenopausal women.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-30.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-30.json new file mode 100644 index 00000000..f5431941 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-30.json @@ -0,0 +1 @@ +{"title":"Computational drug repositioning of clopidogrel as a novel therapeutic option for focal segmental glomerulosclerosis","category":"content","date":"2023-09-07T15:56:12-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Computational drug repositioning of clopidogrel as a novel therapeutic option for focal segmental glomerulosclerosis ]()\n\n \n​​With current treatments, focal segmental glomerulosclerosis (FSGS), the largest cause of nephrotic syndrome, frequently progresses to end-stage kidney disease.[ Gebeshuber et al. (2023)]() assembled 376 FSGS-associated proteins into a FSGS pathophysiology model, major components of which were Reactome pathways for[ signal transduction]() and[ hemostasis](). The 39 proteins shared between FSGS model and a 102-protein model for the antiplatelet drug clopidogrel included 20 therapeutic targets of the drug. Tested in an FSGS mouse model, clopidogrel significantly attenuated disease severity, repositioning the drug as an attractive candidate for human clinical trials for FSGS.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-31.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-31.json new file mode 100644 index 00000000..49aea4f9 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-31.json @@ -0,0 +1 @@ +{"title":"Genetic Networks of Alzheimer’s Disease, Aging, and Longevity in Humans","category":"content","date":"2023-08-11T13:49:31-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Genetic Networks of Alzheimer’s Disease, Aging, and Longevity in Humans ]()\n\nUsing Reactome analysis tools and FIVIz, [Balmorez et al. in the March 2023 issue of _Int. J. Mol. Sci._](), established a commonality between the genes and pathways associated with Alzheimer's disease (AD), Ageing (AR) and Longevity. The pathways shared between AD and AR are [p53-Dependent G1/S DNA damage checkpoint](), [FOXO-mediated transcription](), and [SUMOylation](); between AD and longevity are [Cytokine Signaling in Immune system](), [Plasma lipoprotein assembly, remodeling, and clearance](), [Metabolism of fat-soluble vitamins](), and [NR1H2- and NR1H3-mediated signalling](); and between AR and Longevity are [Immune system]() and [Cytokine signaling]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-32.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-32.json new file mode 100644 index 00000000..463fd76f --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-32.json @@ -0,0 +1 @@ +{"title":"In Vitro Zika Virus Infection of Human Neural Progenitor Cells: Meta-Analysis of RNA-Seq Assays","category":"content","date":"2023-07-14T17:08:49-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ In Vitro Zika Virus Infection of Human Neural Progenitor Cells: Meta-Analysis of RNA-Seq Assays ]()\n\nThe Zika virus (ZIKV) is an emergent arthropod-borne virus (arbovirus) responsible for congenital Zika syndrome (CZS) and a range of other congenital malformations. With little known about the pathways involved in CZS, [Gratton et al in the February 2020 issue of Microorganisms]() conducted a meta-analysis of transcriptome studies to identify the genes and pathways altered during Zika infection. Reactome analysis identified interferon, pro-inflammatory, and chemokines signaling as well as apoptosis as key IFN signaling pathways in ZIKV-infected cells with three new candidate genes involved in hNPCs infection identified: APOL6, XAF1, and TNFRSF1.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-33.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-33.json new file mode 100644 index 00000000..db540f22 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-33.json @@ -0,0 +1 @@ +{"title":"Severe COVID-19 in pregnancy has a distinct serum profile, including greater complement activation and dysregulation of serum lipids","category":"content","date":"2023-06-13T10:02:39-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Severe COVID-19 in pregnancy has a distinct serum profile, including greater complement activation and dysregulation of serum lipids ]()\n\nPregnancies complicated by Coronavirus Disease 2019 (COVID-19) are at an increased risk of severe morbidity. In multi-omics analyses investigating the pathophysiology behind severe COVID-19 disease, [Altendahl et al, in the November 2022 issue of PLoS One]() found precipitous changes in maternal serum in those with severe COVID-19 infection. Reactome pathway enrichment analysis revealed upregulated analytes in 4 pathways: [Complement cascade](), [Signaling by the B Cell Receptor (BCR)](), [Fc epsilon receptor (FCERI) signaling](), and [ FCGR activation]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-34.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-34.json new file mode 100644 index 00000000..80d3402e --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-34.json @@ -0,0 +1 @@ +{"title":"Label-Free Mass Spectrometry Proteomics Reveals Different Pathways Modulated in THP‐1 Cells Infected with Therapeutic Failure and Drug Resistance Leishmania infantum Clinical Isolates","category":"content","date":"2023-06-13T09:48:16-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Label-Free Mass Spectrometry Proteomics Reveals Different Pathways Modulated in THP‐1 Cells Infected with Therapeutic Failure and Drug Resistance Leishmania infantum Clinical Isolates ]()\n\n[Tagliazucchi L et al. 2023 in the March 2023 issue of ACS Infectious Diseases ]()used the REACTOME overrepresentation and pathway topology analyses to identify [Transport of small molecules](), [Cellular response to stress]() and other pathways associated with drug resistance and therapeutic failure (TF) during _Leishmania infantum_ infection; they also discovered NDK3 and TFRC as potential targets for host-directed anti-Leishmania therapies to overcome drug-resistance.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-35.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-35.json new file mode 100644 index 00000000..17a264ad --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-35.json @@ -0,0 +1 @@ +{"title":"Patient-derived cell-based pharmacogenomic assessment to unveil underlying resistance mechanisms and novel therapeutics for advanced lung cancer","category":"content","date":"2023-04-11T13:42:02-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Patient-derived cell-based pharmacogenomic assessment to unveil underlying resistance mechanisms and novel therapeutics for advanced lung cancer ]()\n\nThe Reactome database helped [Yu et al. in the January 2023 issue of the Journal of Experimental & Clinical Cancer Research]() identify candidate drugs for treatment of four subtypes of lung cancer that were categorized by pharmaco-genomic analysis of patient-derived cells and correlated with drug sensitivity of the patient-derived cells and with Reactome pathways identified by gene set variation analysis.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-36.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-36.json new file mode 100644 index 00000000..8c6afdc8 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-36.json @@ -0,0 +1 @@ +{"title":"Probable Treatment Targets for Diabetic Retinopathy Based on an Integrated Proteomic and Genomic Analysis","category":"content","date":"2023-03-13T16:29:19-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Probable Treatment Targets for Diabetic Retinopathy Based on an Integrated Proteomic and Genomic Analysis ]()\n\nAnalysis of all constituents of entire Reactome pathways identified by the presence of upregulated or mutated genes helped [Valdivia et al. in the February, 2023 issue of Translational Vision Science & Technology]() to identify druggable targets and potential drugs for the treatment of diabetic retinopathy (DR). Drugs affecting MMP13 and LGALS3 in the regulation of myeloid cell differentiation by RUNX2 were notable candidates.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-37.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-37.json new file mode 100644 index 00000000..0d6faba6 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-37.json @@ -0,0 +1 @@ +{"title":"Common targetable inflammatory pathways in brain transcriptome of autism spectrum disorders and Tourette syndrome","category":"content","date":"2023-02-14T08:23:23-05:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Common targetable inflammatory pathways in brain transcriptome of autism spectrum disorders and Tourette syndrome ]()\n\nReactome overrepresentation analyses of differentially expressed genes common to both Autism Spectrum Disorder and Tourette Syndrome help identify common targetable inflammatory pathways as described by [Alshammeryet al. in the December 2022 issue of Frontiers in Neuroscience.]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-38.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-38.json new file mode 100644 index 00000000..75a24f78 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-38.json @@ -0,0 +1 @@ +{"title":"Gene set enrichment analysis (GSEA) identifies upregulated carbohydrate metabolism pathways in tumors with high tumor-specific total mRNA expression (TmS)","category":"content","date":"2023-01-10T14:47:21-05:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Gene set enrichment analysis (GSEA) identifies upregulated carbohydrate metabolism pathways in tumors with high tumor-specific total mRNA expression (TmS) ]()\n\nGene set enrichment analysis (GSEA) conducted on Reactome’s carbohydrate metabolism pathways identifies the [Pentose phosphate pathway]() and the [Glucose metabolism ]()pathway as the two most frequently upregulated pathways in tumors with high tumor-specific total mRNA expression (TmS) across 15 tumor types; TmS is a novel tumor phenotype-predictive quantitative feature described by [Cao et al. in the November 2022 issue of Nature Biotechnology]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-39.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-39.json new file mode 100644 index 00000000..546dafce --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-39.json @@ -0,0 +1 @@ +{"title":"Circadian transcriptional pathway atlas highlights a proteasome switch in intermittent fasting","category":"content","date":"2022-12-12T11:41:07-05:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Circadian transcriptional pathway atlas highlights a proteasome switch in intermittent fasting ]()\n\nReactome pathway gene sets in the MSigDB facilitated identification of the liver proteasome transcriptional switch that acts as the fasting timer in intermittent fasting in work published by [Wei et al. in Cell Reports on October 25, 2022](). The authors suggest that a 16-hour interval in intermittent fasting may be most beneficial for health.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-4.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-4.json new file mode 100644 index 00000000..83b59fef --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-4.json @@ -0,0 +1 @@ +{"title":"Reprogramming neuroblastoma by diet-enhanced polyamine depletion","category":"content","date":"2025-10-28T15:00:42-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Reprogramming neuroblastoma by diet-enhanced polyamine depletion ]()\n\nNeuroblastomas are driven by MYCN hyperactivity, accumulate abnormally high amounts of arginine, proline, and ornithine, and produce abnormally high amounts of polyamines due to MYCN upregulation of ornithine decarboxylase (ODC), the rate limiting enzyme of polyamine synthesis. Difluoromethylornithine (DFMO), an inhibitor of ODC, has therapeutic effect against neuroblastoma. Therefore, Cherkaoui et al (2025) in their October, 2025 Nature article [\"Reprogramming neuroblastoma by diet-enhanced polyamine depletion\"]() tested whether a diet free of proline and arginine, precursors of ornithine in neuroblastoma, would improve survival further. Although the proline-arginine-free diet alone had no effect on survival, in combination with DFMO it approximately doubled survival in experimental models.\n\nCherkaoui et al. then investigated the mechanism by which DFMO combined with depletion of proline and arginine inhibited growth of neuroblastomas. The treated tumors exhibited a ten-fold reduction in polyamine content relative to untreated tumors. Because spermidine and other polyamines can enhance translation, the translation efficiency of genes was measured by large scale analysis of RNA (RNA-seq), ribosome-bound RNA (Ribo-seq), and proteins. The surprising finding was that in conditions of low polyamines, ribosomes stalled more frequently at codons with adenosine at the third position. This may be due to the combination of a requirement for highly modified tRNAs to translate these codons, and lower hypusination of the eIF5A translation factor.\n\nWhy would stalling at a particular set of codons produce a specific anti-cancer effect? Cherkaoui et al. employed the [Reactome]() database to examine the codon usage in the genes encoding components of biological pathways. Surprisingly, the genes of the [cell cycle]() pathway had a significantly higher proportion of codons ending in adenosine than did the genes of the [neuronal system]() pathway, accounting for the selective effect of DFMO and the arginine-proline-free diet on neuroblastoma cell proliferation. Also surprisingly, all pathways varied significantly in codon usage, suggesting possible new methods of therapeutically regulating them.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-40.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-40.json new file mode 100644 index 00000000..8edaf7bc --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-40.json @@ -0,0 +1 @@ +{"title":"Post-infusion CAR TReg cells identify patients resistant to CD19-CAR therapy","category":"content","date":"2022-10-18T10:26:35-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Post-infusion CAR TReg cells identify patients resistant to CD19-CAR therapy ]()\n\nReactome pathway enrichment analysis helps to pinpoint expansion of regulatory T cells as a new biomarker of CAR T cell therapy resistance and toxicity in patients with B cell lymphoma. The study was published by [Good et al. in Nature Medicine on September 12, 2022]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-5.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-5.json new file mode 100644 index 00000000..c377b602 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-5.json @@ -0,0 +1 @@ +{"title":"An immune-competent lung-on-a-chip for modelling the human severe influenza infection response","category":"content","date":"2025-09-30T18:37:19-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ An immune-competent lung-on-a-chip for modelling the human severe influenza infection response ]()\n\nIn their September 2025 [Nature Biomedical Engineering]() paper, [An immune-competent lung-on-a-chip for modelling the human severe influenza infection response](), Ringquist et al. show the importance of including tissue-resident and circulating immune cells, as well as stromal cells, in lung organoid chips to obtain a more realistic human in vitro model system for studying viral respiratory infections. Human-centric Reactome pathway enrichment analysis employed in this study shows that genes expressed in immune and stromal cells, mediating [immune response]() and [extracellular matrix remodeling](), respectively, are among the top 10% upregulated in influenza H1N1-infected lung organoids, amid a global transcriptional shutdown, showing the value this ex vivo model for studying lung infectious disease.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-6.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-6.json new file mode 100644 index 00000000..80b7e436 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-6.json @@ -0,0 +1 @@ +{"title":"Learning and actioning general principles of cancer cell drug sensitivity","category":"content","date":"2025-08-26T00:28:13-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Learning and actioning general principles of cancer cell drug sensitivity ]()\n\nIn the February 2025 issue of Nature Communications, [Carli et al](). reported the development of a predictive model of cell line drug sensitivity from RNA-seq data using machine learning approaches. The model leveraged Reactome pathways in combination with large language models (LLMs) to provide a mechanistic foundation. It demonstrated strong performance and was applied to predict patient drug responses, with predictions supported by experimental validation. This work highlights how Reactome provides a robust framework for enhancing the interpretability of machine learning models in precision medicine.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-7.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-7.json new file mode 100644 index 00000000..f145ee63 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-7.json @@ -0,0 +1 @@ +{"title":"Identification and targeting of regulators of SARS-CoV-2–host interactions in the airway epithelium","category":"content","date":"2025-07-28T15:14:13-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Identification and targeting of regulators of SARS-CoV-2–host interactions in the airway epithelium ]()\n\nIn the May 2025 issue of Science Advances, [Dirvin et al](). used single-cell transcriptomics and network-based algorithms on primary human airway cells to identify the key master regulator proteins hijacked by SARS-CoV-2, and then performed a large-scale screen to find drugs capable of reversing these effects. They used Reactome pathway analysis to characterize the biological processes, including [membrane trafficking]() and [ infectious disease pathways](), that were modulated by the eleven most promising drug candidates.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-8.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-8.json new file mode 100644 index 00000000..a199f642 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-8.json @@ -0,0 +1 @@ +{"title":"Rhythm profiling using COFE reveals multi-omic circadian rhythms in human cancers in vivo","category":"content","date":"2025-06-27T11:33:17-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Rhythm profiling using COFE reveals multi-omic circadian rhythms in human cancers in vivo ]()\n\n[July 1, 2025] Gene expression levels in normal and diseased human tissues show circadian variation, but studying this variation directly is difficult. In their May, 2025 PLoS paper, [Ananthasubramaniam and Venkataramanan]() applied unsupervised machine learning to high-throughput omics data from primary human adenocarcinomas to identify circadian expression rhythms in hundreds of genes. Reactome gene set enrichment analysis identified genes with rhythmic expression patterns in multiple tumor types, significantly overrepresented in pathways of [mitochondrial translation](), [respiratory electron transport](), [mitotic cell cycle](), and [adaptive immune system](). The rhythmic expression of gene / protein targets of many FDA-approved and potential anti-cancer drugs in the adenocarcinomas suggests that timing of anti-tumor drug administration may improve efficacy.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-9.json b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-9.json new file mode 100644 index 00000000..dbe9f8d7 --- /dev/null +++ b/projects/website-angular/content-dist/content/reactome-research-spotlight/blogpost-9.json @@ -0,0 +1 @@ +{"title":"Interpreting biologically informed neural networks for enhanced proteomic biomarker discovery and pathway analysis","category":"content","date":"2025-06-01T23:18:05-04:00","tags":"[\"content\", \"reactome-research-spotlight\"]","body":"\n## [ Interpreting biologically informed neural networks for enhanced proteomic biomarker discovery and pathway analysis ]()\n\n[June 1, 2025] The lack of interpretability in deep neural networks is a challenging issue in biomedical applications. In their 2023 Nature Communications study, [“Interpreting biologically informed neural networks for enhanced proteomic biomarker discovery and pathway analysis” ]()Hartman et al. used Reactome’s pathway hierarchical tree directly to develop multi-layered, biologically informed neural networks (BINNs) to address this issue and enhance proteomic biomarker discovery and pathway analysis. Reactome provided critical information on biological entity relationships, enabling the creation of BINNs that achieved high predictive accuracy in the identification of disease-relevant biomarkers and pathways in septic acute kidney injury and COVID-19 datasets. These BINNs outperformed traditional methods and provided experimentally testable molecular mechanistic explanations.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/cite.json b/projects/website-angular/content-dist/documentation/cite.json new file mode 100644 index 00000000..ce386128 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/cite.json @@ -0,0 +1 @@ +{"title":"Referencing our Publications","category":"documentation","body":"\n## Referencing our Publications \n\n#### **To cite the use of Reactome in your work,** please reference one or more of the following publications:\n\n * Milacic M, Beavers D, Conley P, Gong C, Gillespie M, Griss J, Haw R, Jassal B, Matthews L, May B, Petryszak R, Ragueneau E, Rothfels K, Sevilla C, Shamovsky V, Stephan R, Tiwari K, Varusai T, Weiser J, Wright A, Wu G, Stein L, Hermjakob H, D’Eustachio P. The Reactome Pathway Knowledgebase 2024. Nucleic Acids Research. 2024. doi: 10.1093/nar/gkad1025. [Link]()\n * Griss J, Viteri G, Sidiropoulos K, Nguyen V, Fabregat A, Hermjakob H. ReactomeGSA - Efficient Multi-Omics Comparative Pathway Analysis. Mol Cell Proteomics. 2020 Sep 9. doi: 10.1074/mcp. [PubMed PMID: 32907876]().\n * Jassal B, Matthews L, Viteri G, Gong C, Lorente P, Fabregat A, Sidiropoulos K, Cook J, Gillespie M, Haw R, Loney F, May B, Milacic M, Rothfels K, Sevilla C, Shamovsky V, Shorser S, Varusai T, Weiser J, Wu G, Stein L, Hermjakob H, D'Eustachio P. The reactome pathway knowledgebase. _Nucleic Acids Res._ 2020 Jan 8;48(D1):D498-D503. doi: 10.1093/nar/gkz1031. [PubMed PMID: 31691815]().\n * Fabregat A, Korninger F, Viteri G, Sidiropoulos K, Marin-Garcia P, Ping P, Wu G, Stein L, D'Eustachio P, Hermjakob H. Reactome graph database: Efficient accessto complex pathway data. _PLoS Comput Biol._ 2018 Jan 29;14(1):e1005968. doi: 10.1371/journal.pcbi.1005968. eCollection 2018 Jan. [PubMed PMID: 29377902]().\n * Fabregat A, Sidiropoulos K, Viteri G, Marin-Garcia P, Ping P, Stein L, D'Eustachio P, Hermjakob H. Reactome diagram viewer: data structures and strategies to boost performance. _Bioinformatics._ 2018 Apr 1;34(7):1208-1214. doi: 10.1093/bioinformatics/btx752. [PubMed PMID: 29186351]().\n * Sidiropoulos K, Viteri G, Sevilla C, Jupe S, Webber M, Orlic-Milacic M, Jassal B, May B, Shamovsky V, Duenas C, Rothfels K, Matthews L, Song H, Stein L, Haw R, D'Eustachio P, Ping P, Hermjakob H, Fabregat A. Reactome enhanced pathway visualization. _Bioinformatics._ 2017 Nov 1;33(21):3461-3467. doi: 10.1093/bioinformatics/btx441. [PubMed PMID: 29077811]().\n * Fabregat A, Sidiropoulos K, Viteri G, Forner O, Marin-Garcia P, Arnau V, D'Eustachio P, Stein L, Hermjakob H. Reactome pathway analysis: a high-performance in-memory approach. _BMC Bioinformatics._ 2017 Mar 2;18(1):142. doi: 10.1186/s12859-017-1559-2. [PubMed PMID: 28249561]().\n * Wu G, Haw R. Functional Interaction Network Construction and Analysis for Disease Discovery. _Methods Mol Biol._ 2017;1558:235-253. doi: 10.1007/978-1-4939-6783-4_11. [PubMed PMID: 28150241](). \n\n#### **To cite a pathway.**\n\nPlease use the appropriate DOI from the [Table of Contents]() within the citation, when it is available. Otherwise, use the stable identifier of the pathway. You can add a DOI to the end of your citation following the appropriate style. Generally, these citations follow this format: Author, A. (year). “Title of pathway\". Reactome, release#, URL with doi:xxxxxx (date of access). If a DOI is unavailable, please follow this format: “Title of pathway\". Reactome, release#, URL with StableID: R-HSA-xxxxxx.x (date of access).\n\nPlease find other citing styles at APA Style: [Purdue U Online Writing Lab]().\n\n#### **To reference an image.**\n\nWithin your citation, please use, where available, the DOI associated with the pathway of interest. This information can be found on our [DOI page](), when it is available. Otherwise, use the stable identifier of the pathway associated with the image. You can add a DOI to the end of your citation following the appropriate style. Generally, these citations follow this format: Image for “Title of pathway\". Reactome, release#, URL with doi:xxxxxx (date of access). If a DOI is unavailable, please follow this format: Image for “Title of pathway\". Reactome, release#, URL with StableID: R-HSA-xxxxxx.x (date of access).\n\n#### **To cite our files available for download.**\n\nPlease use the following format: \"Name of file\", Reactome, release#, (date of access).\n\n#### **When citing information obtained in a search.**\n\nIt should be remembered that while we strive to contain the most current and accurate data, Reactome should not be used in citations where other primary sources of information are available.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/curator-guide.json b/projects/website-angular/content-dist/documentation/curator-guide.json new file mode 100644 index 00000000..ed8dd26c --- /dev/null +++ b/projects/website-angular/content-dist/documentation/curator-guide.json @@ -0,0 +1 @@ +{"title":"Curator Guide","category":"documentation","body":"\n## Curator Guide \n\nThe V95 Curator Guide with associated appendices is available for download [here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/data-model.json b/projects/website-angular/content-dist/documentation/data-model.json new file mode 100644 index 00000000..4fd67222 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/data-model.json @@ -0,0 +1 @@ +{"title":"Data Model","category":"documentation","body":"\n## Data Model \n\nLife on the cellular level is a network of molecular interactions. Molecules are synthesized and degraded, undergo a bewildering array of temporary and permanent modifications, are transported from one location to another, and form complexes with other molecules. Reactome represents all of this complexity as reactions in which input physical entities are converted to output entities. These reactions can occur spontaneously or be facilitated by physical entities acting as catalysts, and their progress can be modulated by regulatory effects of other physical entities. Reactions are linked together by shared physical entities: a product from one reaction may be a substrate in another reaction and may catalyze yet a third. It is often convenient, if sometimes arbitrary, to group such sets of interlinked reactions into pathways.\n\nThe functions of macromolecular entities such as proteins are often determined not only by their primary sequences but by chemical modifications they have undergone. In Reactome, unmodified and modified forms of a protein are distinct physical entities and the modification process is treated as an explicit reaction. A macromolecule’s function may depend on whether the molecule is free or complexed with specific other molecules. Reactome treats complexes as physical entities distinct from their components, and the multimerization events that build up complexes are modeled explicitly as reactions.\n\nCellular compartments play a key role in biological processes. The segregation of molecules into different compartments often regulates the reactions in which those entities can participate or can be responsible for driving a reaction forward. In Reactome, a molecule in one compartment is distinct from that molecule in another compartment. Thus, extracellular and cytosolic glucose are different Reactome entities and, e.g., the movement of glucose across the plasma membrane is a reaction that converts the extracellular glucose entity into the cytosolic one.\n\nMany biochemical entities and processes appear redundant: there are two or more chemically distinct entities that can act more or less interchangeably. It is often useful to treat functionally equivalent protein isoforms, splice variants, and paralogues as a single entity, implying that any individual entity from the given set could fulfill the same role in a given situation. The Reactome data model allows this type of generalization, but does so explicitly in a way that allows us to trace specific functions back to the individual molecules covered by the generalization.\n\nThe goal of the Reactome knowledgebase is to represent human biological processes, but many of these processes have not been directly studied in humans. Rather, a human event has been inferred from experiments on material from a model organism. In such cases, the model organism reaction is annotated in Reactome, the inferred human reaction is annotated as a separate event, and the inferential link between the two reactions is explicitly noted.\n\nReactome uses a frame-based knowledge representation. The data model consists of classes (frames) that describe the different concepts (e.g., reaction, simple entity). Knowledge is captured as instances of these classes (e.g., “glucose transport across the plasma membrane”, “cytosolic ATP”). Classes have attributes (slots) that hold properties of the instances (e.g., the identities of the molecules that participate as inputs and outputs in a reaction).\n\n### Key data classes\n\n#### [PhysicalEntity]()\n\nPhysicalEntities include individual molecules, multi-molecular complexes, and sets of molecules or complexes grouped together on the basis of shared characteristics. Molecules are further classified as genome-encoded (DNA, RNA, and proteins) or not (all others). Attributes of a PhysicalEntity instance capture the chemical structure of an entity, including any covalent modifications in the case of a macromolecule and its subcellular localization.\n\nPhysicalEntity instances that represent, e.g., the same chemical in different compartments, or different post-translationally modified forms of a single protein, share numerous invariant features such as names, molecular structure and links to external databases like UniProt or ChEBI. To enable storage of this shared information in a single place, and to create an explicit link among all the variant forms of what can also be seen as a single chemical entity, Reactome creates instances of the separate ReferenceEntity class. A [ReferenceEntity]() instance captures the invariant features of a molecule. A PhysicalEntity instance is then the combination of a ReferenceEntity attribute (e.g., [Glycogen phosphorylase UniProt:P06737]()) and attributes giving specific conditional information (e.g., localization to the cytosol and phosphorylation on serine residue 14).\n\nThe PhysicalEntity class has subclasses to distinguish between different kinds of entity and to ensure data integrity while enabling different handling rules for different categories:\n\n**[EntityWithAccessionedSequence]() **– proteins and nucleic acids with known sequences.\n\n**[GenomeEncodedEntity]() **– a species-specific protein or nucleic acid whose sequence is unknown, such as an enzyme that has been characterized functionally but not yet purified and sequenced, e.g. [cytosolic 15-HEDH enzyme]()\n\n**[SimpleEntity]() **– other fully characterized molecules, e.g. [nucleoplasmic ATP]() or [cytosolic glutathione]()\n\n**[Complex]() **– a complex of two or more PhysicalEntities, e.g. [Trimerization of the FASL:FAS receptor complex]()\n\n[**EntitySet**]()**** – a set of PhysicalEntities (molecules or complexes) that function interchangeably in a given situation, e.g., [Mature NOTCH heterodimer traffics to the plasma membrane](). This notation allows the collective properties of multiple individual entities to be described explicitly.\n\nPhysicalEntities are paired with molecular functions taken from the Gene Ontology molecular function controlled vocabulary to describe instances of biological catalysis. An optional ActiveUnit attribute indicates the specific domain of a protein or subunit of a complex that mediates the catalysis. If a PhysicalEntity has multiple catalytic activities, a separate CatalystActivity is created for each. This strategy allows the association of specific activities with specific variant forms of a protein or complex and also enables easy retrieval of all activities of a protein or all proteins capable of mediating a specific molecular function.\n\n#### **[Event]()**\n\nEvents – the conversion of input entities to output entities in one or more steps – are the building blocks used in Reactome to represent all biological processes. Two subclasses of Event are recognized, **[ReactionLikeEvent]() **and **[Pathway]()**. A ReactionlikeEvent is an event that converts inputs into outputs. A Pathway is any grouping of related Events. An event may be a member of more than one Pathway.\n\nThe ReactionlikeEvent class is further divided into **[Reaction]()** , **[BlackBoxEvent]()** , **[Polymerisation](), **and **[Depolymerisation]()**. The Reaction class holds bona fide reactions with balanced inputs and outputs. The BlackBoxEvent class is used for ‘unbalanced’ reactions like protein synthesis or degradation, as well as ‘shortcut’ reactions for more complex processes that essentially convert inputs into outputs, e.g. the series of cyclical reactions involved in fatty acid biosynthesis. The De-/Polymerisation classes can hold reactions that describe the mechanics of a de-/polymerisation reaction, which is inherently ‘unbalanced’ due to the nature of a Polymer (that remains the ‘same’ entity even after adding or subtracting a unit).\n\n### Full specification of the Reactome data model\n\nA full specification of all Reactome classes, slots and a listing of all instances of each class is accessible from the **[Schema]()** page on the top menu bar. There is also a [Data Model Glossary](), giving more details on the usage of the various classes and slots.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/dev.json b/projects/website-angular/content-dist/documentation/dev.json new file mode 100644 index 00000000..e72fef0c --- /dev/null +++ b/projects/website-angular/content-dist/documentation/dev.json @@ -0,0 +1 @@ +{"title":"Developer's Zone","category":"documentation","body":"\n## Developer's Zone \n\n#### Explore our tools and web services and learn how to include them in your applications\n\n[ __ ]()\n\n## [ Analysis Service ]()\n\nUse the Analysis Service to analyse your data against Reactome’s content \n\n[ __ ]()\n\n## [ Content Service ]()\n\nUse the Content Service to access all our knowledgebase content from your client \n\n[ __ ]()\n\n## [ Graph Database ]()\n\nAccess to the Reactome knowledgebase content as an interconnected graph database \n\n[ __ ]()\n\n## [ Pathways Overview ]()\n\nUse this widget to include our pathways overview in your web application \n\n[ __ ]()\n\n## [ Pathway Diagrams ]()\n\nUse this widget to include our pathway diagrams in your web application \n\n[ __ ]()\n\n## [ Reactome Partners ]()\n\nCheck out who is currently using Reactome web services and widgets\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/dev/analysis.json b/projects/website-angular/content-dist/documentation/dev/analysis.json new file mode 100644 index 00000000..2ff04c9d --- /dev/null +++ b/projects/website-angular/content-dist/documentation/dev/analysis.json @@ -0,0 +1 @@ +{"title":"Analysis Service","category":"documentation","body":"\n## Analysis Service \n\n#### Explore our tools and web services and learn how to include them in your applications\n\n[ __ ](<#MoreInfo>)\n\n## [ More Info ](<#MoreInfo>)\n\n[ __ ](<#GetStarted>)\n\n## [ Get Started ](<#GetStarted>)\n\n[ __ ]()\n\n## [ API ]()\n\n[ __ ](<#Resources>)\n\n## [ Resources ](<#Resources>)\n\nThe analysis tool suite contains an overrepresentation analysis, an expression data analysis and a species comparison tool. The tool suite is available via a [Web Service]( \"Web Service\") so all the available analysis tools can be easily integrated into third party software.\n\n### [__More Info](<#MoreInfo>)\n\nThe Analysis Web-Service is token based, so for every analysis request a TOKEN is associated to the result. From this moment on, the results can be accessed via the API “token” method in order to retrieve more detailed information. Taking advantage of the token produced during every analysis, it is possible to link back to the PathwayBrowser and browse the results overlaid on either the pathways overview or a selected pathway.\n\nAs mentioned afore, Reactome provides an overrepresentation analysis, an expression data analysis and a species comparison tool. For overrepresentation and expression analysis, the service can automatically detect which one to perform depending on the format of the submitted data (see [Table 1](<#AnalysisFormat>)). If the data contains expression values in a tab-separated-values (TSV) format, then the expression analysis will be executed, otherwise the overrepresentation analysis is the executed one.\n\nTable 1: Analysis input data formats \n![analysis format](/uploads/documentation/dev/analysis/analysis_format.png)\n\nData must be submitted in a format that includes a first row of column headers. The header for column 1 must start with the # symbol. Column 1 must contain protein, compound or other suitable identifiers, such as OMIM IDs. Identifiers can only be placed in column 1. A one-column file is sufficient for pathway over-representation analysis. For expression analysis, columns 2 and onwards must contain numeric values, with no alphabetical characters. Decimals must use the full stop (period) symbol, not commas. Columns must be tab-delimited (this format is an option when saving from most spreadsheet programs such as Excel).\n\nThe first line must start with “#” to indicate the name of the sample (first column) and the names of each expression column when expression data is submitted. Please note that while this line is optional for the overrepresentation format, it is mandatory for the expression data format, because the name of each column needs to be provided. It is recommended though to have this first line defined in the submitted data, so later on it is easier to identify what kind of experiment the data is related to.\n\nEvery other line starts with the identifier of the gene/protein/chemical. For expression analysis, the rest of the columns should contain numbers corresponding to the expression values.\n\n#### [Data Submission](<#DataSubmission>)\n\nThe first use case would be when the data to be analysed is submitted using the method:\n \n \n https://reactome.org/AnalysisService/identifiers/\n\nIn this case the data must be sent via POST (please refer to the API documentation for more details) so the analysis will be performed against the Reactome database content.\n\nA second use case is when a text flat file containing the data to be analysed (in the specified format mentioned afore) is sent. In this case the method to be used is:\n \n \n https://reactome.org/AnalysisService/identifiers/form/\n\nA third use case would be when the data to be analysed is accessible through the Internet. In this case, there is a specific method that indicates to the analysis service where to get the data:\n \n \n https://reactome.org/AnalysisService/identifiers/url/\n\nPlease note all these methods have an option to project the identifiers to human and only show the result in this species (by adding the “projection/” suffix to any of them). Please refer to the API documentation for more details.\n\n#### [Analysis result handling](<#analysis-result-handling>)\n\nOnce the analysis is finished, the result is sent back to the user in json format (please refer to the API documentation for more details). One of the fields in the analysis summary object is called “token”. The particular analysis result is associated to this token and it can be retrieved later on using the following method without having to send the same data again:\n \n \n https://reactome.org/AnalysisService/token/\n\nReactome ensures that the token will be available for the 7 next days after the analysis. After this period it goes into an LRU queue, so may be available for longer but this cannot be ensured as it depends on the frequency of its usage.\n\nThe “pathways” field in the analysis result contains a list of the most significant pathways with the corresponding statistics results. By default, these pathways are sorted from the most to the least significant, so the first item would be the most statistically significant. However the user is advised to take into account the statistical values (pValue and FDR) and also the results coverage in the pathway, indicated by entities and reactions found.\n\n#### [Linking back to Reactome Pathway Browser](<#linking-back>)\n\nIf linking back to Reactome to visualise the results is required, there are two methods. Providing the token is enough to link back to the PathwayBrowser and get the Fireworks results overlay view. To do so please replace {TOKEN} in the following URL by the one provided in the result.\n \n \n https://reactome.org/PathwayBrowser/#DTAB=AN&ANALYSIS=**{TOKEN}**\n\nTo build a link back pointing to a specific pathway to overlay the result on its diagram, please replace **{ST_ID}** by the pathway stable identifier (provided in the analysis result for each pathway) and **{TOKEN}** by the one provided in the result.\n \n \n https://reactome.org/PathwayBrowser/#**{ST_ID}** &DTAB=AN&ANALYSIS=**{TOKEN}**\n\n### [__Get Started](<#GetStarted>)\n\nOK! You’ve reached this far :) so let’s see how to start using the analysis service.\n\nThere are two ways to submit your sample of identifiers for analysis. The first method is to POST all the identifiers (or the file containing them). The second involves letting the analysis service know where the sample is by providing its URL. Many types of identifiers that can be submitted, including UniProt, chEBI, Ensembl, miRBase, GenBank/EMBL/DDBJ, RefPep, RefSeq, EntrezGene, OMIM, InterPro, Affymetrix, Agilent, Compound, Illumina, etc. Please get in touch with our [help@reactome.org]() if your sample identifiers are not supported.\n\nIn the following examples we use [curl]() to query the analysis service from the command line. They show how to send some gene names (PIK3C2A, PTEN and UNC5B) to be analysed and also how to provide the location of your data via the **url** interface.\n\nThe simplest approach is to send your gene names via POST to the ** **method.\n \n \n curl -H \"Content-Type: text/plain\" -d \"$(printf '**#Genes** \\n**PIK3C2A** \\n**PTEN** \\n**UNC5B** ')\" -X POST --url https://reactome.org/AnalysisService/identifiers/projection/\\?pageSize\\=1\\&page\\=1\n\nFor long lists, the previous example might be impractical. A more convenient way is to POST the content of a file containing the sample to be analysed. Let’s assume you have a file called **genes.txt** that contains the following set of genes to be analysed:\n \n \n #Genes \n PIK3C2A \n PTEN \n UNC5B\n\nThe command changes to indicate that the data is now taken from the file (but please note that the method of the analysis service remains the same):\n \n \n curl -H \"Content-Type: text/plain\" --data-binary @genes.txt -X POST --url https://reactome.org/AnalysisService/identifiers/projection/\\?pageSize\\=1\\&page\\=1\n\nBoth of the previous commands will produce the result shown in [Figure 1](<#AnalysisResult>)\n\nFigure 1: Analysis result example\n\n![analysis result example 01](/uploads/documentation/dev/analysis/analysis_result_example_01.png)\n\nLet’s focus on the retrieved **pathways** list. It only contains one pathway because in the command we have specified **\\?pageSize\\=1\\ &page\\=1** and that forces the analysis to provide **ONLY** the most significant pathway for the submitted data. If you want the first 10 results, the way of doing it would be **\\?pageSize\\=10\\ &page\\=1**. To see the results from 11 to 20 use **\\?pageSize\\=10\\ &page\\=2**. The reason for this **paging** mechanism is to avoid overloading the client with the full set of results. Here we are querying from the command line and probably the memory usage isn’t an issue, but please consider web-clients. **Important note:** If **pageSize** and **page** are not specified, then the whole set of results is retrieved to the client.\n\nOther important fields in the result are **pathwaysFound** , **identifiersNotFound** , **summary.token** and **summary.type**. The first two are self-descriptive, so let’s focus on the **summary**. As already mentioned, the **summary.token** can be used to retrieve the results of a previously performed analysis without the need to submit the sample again. For example, the results of the previous analysis can be easily accessed by simply calling the **https://reactome.org/AnalysisService/token** method and providing the token.\n \n \n curl https://reactome.org/AnalysisService/token/**MjAxNTEwMjAwNjU0MDBfMzMw** \\?pageSize\\=1\\&page\\=1\n\nAs illustrated in [Figure 2](<#AnalysisTokenMethods>), the analysis service provides a thorough collection of token-based methods that can be used to access the results of a previously performed analysis.\n\nFigure 2: All the token-based methods provided by the analysis service\n\n![token methods](/uploads/documentation/dev/analysis/token_methods.png)\n\nThe **summary.type** provides information about the type of the analysis performed and it can be OVERREPRESENTATION, EXPRESSION or SPECIES_COMPARISON.\n\nEvery item in the **pathways** array, contains information about a specific pathway, i.e its name, stable identifier, the species it belongs to, the number of entities matching the submitted sample etc. **pValue** and **fdr** show the significance of the pathway as the result of the analysis.\n\n#### Pointing to your resource as data provider for the analysis\n\nLet’s suppose that you have some data to be analysed on your server and you want to point Reactome analysis to retrieve it directly. We use [PRIDE]() data for our examples. More specifically we analyse PRIDE data stored in . This can be done by using the **/identifiers/url** methods:\n \n \n curl -H \"Content-Type: text/plain\" -d \"https://www.ebi.ac.uk/pride/ws/archive/protein/list/assay/27929.acc\" -X POST --url https://reactome.org/AnalysisService/identifiers/url/projection/\\?pageSize\\=1\\&page\\=1\n\nJust **POST** ing the **URL** , where the data is, to the **https://reactome.org/AnalysisService/identifiers/url/projection/** method is enough to perform the analysis. The rest of the parameters work exactly as explained above. It is also important to take into account that **URL** s sent to this method can either be **HTTP** or **HTTPS** , if your service uses [secure HTTP](), we can deal with it ;).\n\n#### [I have a JavaScript client. How do I query your service?](<#how-do-i-query>)\n\nFirst we will create a simple HTML page with one button and a place holder to show a table with the results of the query. Please note we have included the [jQuery library]().\n\nHTML: Base example\n \n \n \n \n \tConnection to the Reactome Analysis Service \n \t//We are using jQuery for this example \n \t \n \t\n \n \n \t

Connection to the Reactome Analysis Service

\n \t

Please click the button to execute the analysis:

\n \t\n \t

\n \t
\n \t
\n \n \n \n \n\nAs you can see in the [Figure 3](<#HTMLExample01Figure>), the resulting page is quite a simple one, but enough for our **get started** purposes.\n\nFigure 3: Example HTML\n\n![example 01](/uploads/documentation/dev/analysis/example_01.png)\n\nThe next step is to write the code that connects to the analysis service and presents the data back to the client. Please note that we will use the **/identifiers/url/projection** method in order to request the analysis of [data]() stored in the PRIDE repository.\n\nHTML: Example with JavaScript code included\n \n \n \n \n \tConnection to the Reactome Analysis Service\n \t\n \t\n \n \n \t

Connection to the Reactome Analysis Service

\n \t

Please click the button to execute the analysis:

\n \t\n \t

\n \t
\n \t
\n \n \n \n \n\nQuickly analysing the main parts of the [JavaScript code](<#HTMLExample02>) body, we see two main methods: [**$( document ).ready**]() and [**jQuery.ajax**](). The first one ensures the content of the associated callback function will be executed when all the HTML is fully loaded in the [DOM](). The second is responsible for performing the analysis request against Reactome’s analysis service.\n\nFocusing on the **.success** function in the ajax query, we see how the results for a “success” connection with a “success” response are handled (please note that a success connection differs from a success response, since there can be different reasons why a success connection can end up retrieving an error, i.e. data content is not in the right format). The results can be accessed within the **data** object passed to the **.success(function(data, textStatus){…})** method following the format shown in [Figure 1](<#AnalysisResult>).\n\nIn the example, a table is created with the retrieved set of pathways ([Figure 4](<#HTMLExample02Figure>)). Each row of the table contains the pathway name, the pValue and the FDR. It’s also important to see how we’ve built the hyperlink from the name to the view of the pathway (with the analysis result overlay) directly to the [Pathway Browser](). Please note that it is also possible to link to the Pathway Browser in order to show the general result overlaid on the pathways overview. The link for this is:\n \n \n https://reactome.org/PathwayBrowser/#/DTAB=AN&ANALYSIS=**{TOKEN}**\n\nFigure 4: Example HTML with results already loaded\n\n![example 02](/uploads/documentation/dev/analysis/example_02.png)\n\nBut this example doesn’t look pretty! Yes, we know but we are explaining how to access Reactome data. Please have a look to the [CSS]() documentation and start learning how to apply the styles to make the look fit with your expectations.\n\n### [__Resources](<#Resources>)\n\n[API Documentation]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/dev/content-service.json b/projects/website-angular/content-dist/documentation/dev/content-service.json new file mode 100644 index 00000000..6d9340ec --- /dev/null +++ b/projects/website-angular/content-dist/documentation/dev/content-service.json @@ -0,0 +1 @@ +{"title":"Content Service","category":"documentation","body":"\n## Content Service \n\n#### Explore our tools and web services and learn how to include them in your applications\n\n[ __ ](<#MoreInfo>)\n\n## [ More Info ](<#MoreInfo>)\n\n[ __ ](<#GetStarted>)\n\n## [ Get Started ](<#GetStarted>)\n\n[ __ ]()\n\n## [ API ]()\n\n[ __ ](<#Resources>)\n\n## [ Resources ](<#Resources>)\n\n### [__More Info](<#MoreInfo>)\n\nThe Content Service constitutes an easy [API]() that provides access to the Reactome knowledgebase. Information in Reactome is authored by expert biologist researchers, maintained by Reactome editorial staff, and extensively cross-referenced to other resources e.g. NCBI, Ensembl, UniProt, UCSC Genome Browser, HapMap, KEGG (Gene and Compound), ChEBI, PubMed and GO. It also incorporates inferred orthologous reactions for over 14 non-human species including mouse, rat, chicken, puffer fish, worm, fly, yeast, rice, Arabidopsis and E.coli. Additionally, the Content Service provides access to molecular interactions integrated from PSICQUIC.\n\nThe Content Service is based on the Representational State Transfer (REST) protocol. This eliminates the need for complex clients and renders the service simpler, more lightweight, more flexible, and, thus, easier to integrate into third party software compared to its SOAP/WSDL counterparts.\n\nThe [API]() includes a set of methods classified in groups according to their functionality. For instance, expanding the [pathways group]() reveals a set of methods that provide specific information about pathways such as the contained Events or the participating PhysicalEntities. All methods are specified as either GET or POST requests. GET and POST are not interchangeable. [Expanding a particular method]() provides more information about its input and output parameters as well as a simple test case for users to try out. In addition, users can also use any command line client such as [wget]() or [curl]() to access the methods.\n\nIt is worth mentioning that to use this API efficiently, the user needs to understand the Reactome [data model]() and [schema]().\n\n### [__Get Started](<#GetStarted>)\n\nLet’s start with one of the most basic examples; retrieving the version of the database. It can be addressed by querying the “/data/database/version” method:\n \n \n curl -X GET --header 'Accept: text/plain' 'https://reactome.org/ContentService/data/database/version'\n\nThe response will be a “text/plain” file containing just the number of the release.\n\nTo retrieve the information for the reaction **Mad1 binds kinetochore** which identifier is **R-HSA-141409** , the query would be as follows:\n \n \n curl -X GET --header 'Accept: application/json' 'https://reactome.org/ContentService/data/query/R-HSA-141409'\n\nAnd the response comes in “application/json” format:\n \n \n {\n dbId: 141409,\n displayName: \"Mad1 binds kinetochore\",\n stId: \"R-HSA-141409\",\n created: {\n dbId: 143430,\n displayName: \"Yen, T, 2004-05-05 00:00:00\",\n dateTime: \"2004-05-05 05:00:00.0\",\n schemaClass: \"InstanceEdit\"\n },\n modified: {\n dbId: 1591212,\n displayName: \"Matthews, L, 2011-09-08\",\n dateTime: \"2011-09-08 21:45:40.0\",\n schemaClass: \"InstanceEdit\"\n },\n isInDisease: false,\n isInferred: false,\n name: [\n \"Mad1 binds kinetochore\"\n ],\n speciesName: \"Homo sapiens\",\n authored: [\n 143430\n ],\n compartment: [\n {\n dbId: 70101,\n displayName: \"cytosol\",\n accession: \"0005829\",\n databaseName: \"GO\",\n definition: \"The part of the cytoplasm that does not contain organelles but which does contain other particulate matter, such as protein complexes.\",\n name: \"cytosol\",\n url: \"http://www.ebi.ac.uk/ego/QuickGO?mode=display&entry=GO:0005829\",\n schemaClass: \"EntityCompartment\"\n }\n ],\n literatureReference: [\n {\n dbId: 143441,\n displayName: \"Mitotic checkpoint proteins HsMAD1 and HsMAD2 are associated with nuclear pore complexes in interphase\",\n title: \"Mitotic checkpoint proteins HsMAD1 and HsMAD2 are associated with nuclear pore complexes in interphase\",\n journal: \"J Cell Sci\",\n pages: \"953-63\",\n pubMedIdentifier: 11181178,\n volume: 114,\n year: 2001,\n url: \"http://www.ncbi.nlm.nih.gov/pubmed/11181178\",\n schemaClass: \"LiteratureReference\"\n }\n ],\n species: [\n {\n dbId: 48887,\n displayName: \"Homo sapiens\",\n name: [\n \"Homo sapiens\",\n \"H. sapiens\",\n \"Hs\",\n \"human\",\n \"man\"\n ],\n taxId: \"9606\",\n schemaClass: \"Species\"\n }\n ],\n summation: [\n {\n dbId: 143355,\n displayName: \"\",\n text: \"The association of Mad1 with the kinetochore is the first step in the process of Mad2 mediated amplification of the signal from defective kinetochores.\",\n schemaClass: \"Summation\"\n }\n ],\n input: [\n {\n dbId: 141433,\n displayName: \"MAD1L1 [cytosol]\",\n stId: \"R-HSA-141433\",\n name: [\n \"MAD1L1\",\n \"HsMad1\"\n ],\n speciesName: \"Homo sapiens\",\n consumedByEvent: [\n 141409\n ],\n endCoordinate: 718,\n referenceType: \"ReferenceGeneProduct\",\n startCoordinate: 1,\n schemaClass: \"EntityWithAccessionedSequence\"\n },\n {\n dbId: 141398,\n displayName: \"Kinetochore Complex [cytosol]\",\n stId: \"R-HSA-141398\",\n name: [\n \"Kinetochore Complex\"\n ],\n speciesName: \"Homo sapiens\",\n consumedByEvent: [\n 141409\n ],\n schemaClass: \"GenomeEncodedEntity\"\n }\n ],\n output: [\n {\n dbId: 141441,\n displayName: \"Mad1:kinetochore complex [cytosol]\",\n stId: \"R-HSA-141441\",\n name: [\n \"Mad1:kinetochore complex\"\n ],\n speciesName: \"Homo sapiens\",\n producedByEvent: [\n 141409\n ],\n hasComponent: [\n \n ],\n schemaClass: \"Complex\"\n }\n ],\n schemaClass: \"Reaction\"\n }\n\nIn the previous result, there are several json field keys such as dbId, displayName, stId, name, compartment, literatureReference and so on. In case we are only interested in a particular field, e.g compartment, the query would be as follows:\n \n \n curl -X GET --header 'Accept: text/plain' 'https://reactome.org/ContentService/data/query/R-HSA-141409/compartment'\n\nIn this case, because **compartment** is an object, the result will be a TSV file where the first column is the identifier of the object, the second column is the displayName of the object and the third column is the schemaClass of the object:\n \n \n 70101\tcytosol\tEntityCompartment\n\nIn case the queried attribute is a **primitive** type:\n \n \n curl -X GET --header 'Accept: text/plain' 'https://reactome.org/ContentService/data/query/R-HSA-141409/displayName'\n\nThen the returned value is the content of it in a “text/plain” response:\n \n \n Mad1 binds kinetochore\n\nAs the last example in the section, let’s check out how to retrieve the participanting molecules of the reaction used in the previous examples. To do so, we call the [getParticipatingPhysicalEntities]() method in the API:\n \n \n curl -X GET --header 'Accept: application/json' 'https://www.reactome.org/ContentService/data/event/R-HSA-141409/participatingPhysicalEntities'\n\nAnd the response comes in “application/json” format:\n \n \n [\n {\n dbId: 141398,\n displayName: \"Kinetochore Complex [cytosol]\",\n stId: \"R-HSA-141398\",\n name: [\n \"Kinetochore Complex\"\n ],\n speciesName: \"Homo sapiens\",\n schemaClass: \"GenomeEncodedEntity\"\n },\n {\n dbId: 141433,\n displayName: \"MAD1L1 [cytosol]\",\n stId: \"R-HSA-141433\",\n name: [\n \"MAD1L1\",\n \"HsMad1\"\n ],\n speciesName: \"Homo sapiens\",\n endCoordinate: 718,\n referenceType: \"ReferenceGeneProduct\",\n startCoordinate: 1,\n schemaClass: \"EntityWithAccessionedSequence\"\n },\n {\n dbId: 141441,\n displayName: \"Mad1:kinetochore complex [cytosol]\",\n stId: \"R-HSA-141441\",\n name: [\n \"Mad1:kinetochore complex\"\n ],\n speciesName: \"Homo sapiens\",\n hasComponent: [\n \n ],\n schemaClass: \"Complex\"\n }\n ]\n\nCheck out the [ContentService API]() to find out more methods and see which ones cover your needs. Please [help@reactome.org]() if your needs are not covered and you think extra methods should be added to our API.\n\n### [__Resources](<#Resources>)\n\n[API Documentation]()\n\n[Diagram exporter]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/dev/content-service/diagram-exporter.json b/projects/website-angular/content-dist/documentation/dev/content-service/diagram-exporter.json new file mode 100644 index 00000000..8b3a3ca2 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/dev/content-service/diagram-exporter.json @@ -0,0 +1 @@ +{"title":"Diagram exporter","category":"documentation","body":"\n## Diagram exporter \n\n### Introduction\n\nIn Reactome, pathway diagrams are stored using a custom format. Aimming to allow researchers to include images of their favourite pathway diagrams into their publications, posters or presentations, we have developed the diagram exporter. This tool makes it easy to export pathway diagrams in bitmap format, allowing users to specify the output format, the quality and the decorators. The diagram exporter has been deployed as part of our [Content Service](), which constitutes an easy API that provides access to the Reactome knowledgebase. To learn more about the Content Service and how you can use it, have a look [here]().\n\nThis tutorial will walk you through the simple steps of using this tool to generate images of your favourite pathway diagram.\n\n### Get started\n\nGenerating the image of a diagram using our API is as easy as just calling the service with the identifier of the diagram and the desired extension (for example \".png\", \".jpg\" etc.)\n \n \n [/ContentService/exporter/diagram/R-HSA-169911.png]()\n\n![Figure 1](/uploads/documentation/dev/content-service/diagram-exporter/Fig1.png)\n\nThis will export the image in the default quality. To get an image in print quality, use the _quality_[argument](<#arguments>). Higher quality value results in higher image quality.\n \n \n [/ContentService/exporter/diagram/R-HSA-169911.png?quality=7]()\n\n![Figure 2](/uploads/documentation/dev/content-service/diagram-exporter/Fig2.png)\n\nIn case the requested pathway has an interactive illustration (EHLD) associated with it, the diagram exporter will export the illustration as an image. In the following example, the EHLD of Hemostasis is requested in png format. Follow this [link]() if you are interested to learn more about our EHLDs. \n \n \n [/ContentService/exporter/diagram/R-HSA-109582.png]()\n\n![Figure 3](/uploads/documentation/dev/content-service/diagram-exporter/Fig3.png)\n\nIf you are interested in a particular reaction or entity, just write it and the service will show it selected in its containing pathway.\n \n \n [/ContentService/exporter/diagram/R-HSA-68919.png]()\n\n![R-HSA-68919](/uploads/documentation/dev/content-service/diagram-exporter/R-HSA-68919.png)\n\n### Decorators\n\nThe API allows users to easily highlight diagram elements (molecules and reactions) by either selecting them or flagging them. For instance, to select a reaction, we simply need to add the _sel_ argument and its Reactome Identifier, exactly like in the following example.\n \n \n [/ContentService/exporter/diagram/R-HSA-390522.png?sel=R-HSA-390598]()\n\n![Figure 4](/uploads/documentation/dev/content-service/diagram-exporter/Fig4.png)\n\nWe can also use the _flg_ argument to flag diagram entities (genes, molecules, etc.)\n \n \n [/ContentService/exporter/diagram/R-HSA-428359.png?flg=Q9NZI8]()\n\n![Figure 5](/uploads/documentation/dev/content-service/diagram-exporter/Fig5.png)\n\nThe selection and flagging arguments work in exactly the same way for EHLDs.\n \n \n [/ContentService/exporter/diagram/R-HSA-109582.png?sel=R-HSA-983231&flg=THBD]()\n\n![Figure 6](/uploads/documentation/dev/content-service/diagram-exporter/Fig6.png)\n\n### Analysis overlay\n\nReactome offers a pathway analysis service that supports enrichment and expression analysis. The diagram exporter allows you to overlay the results of the analysis on top of the exported diagrams. To do so, use the _token_ argument to specify the unique token assosiated with the performed analysis. To learn more about our Analysis Service and how to use it have a look to this [page]().\n\nIn the next example, we use the token acquired from an overrepresentation analysis, to overlay the results on top of a diagram and export it in high quality (7) jpeg format.\n \n \n [/ContentService/exporter/diagram/R-HSA-8937144.jpeg?quality=7&token=]()\n\n![Figure 7](/uploads/documentation/dev/content-service/diagram-exporter/Fig7.jpeg)\n\nIn the same way, we can overlay the results of an expression analysis on top of a diagram and export it in our prefered format and quality. In case the submitted sample (for this type of analysis) includes more than one column, we can specify it by using the _column_ argument, like in the following example.\n\nPlease keep in mind that in case a column is not specified (null), the first one is selected by default. Also in case a column is not specified and the requested format is gif, then an animated image with all the columns is generated.\n \n \n [/ContentService/exporter/diagram/R-HSA-432047.jpg?quality=7&column=1&token=]()\n\n![Figure 8](/uploads/documentation/dev/content-service/diagram-exporter/Fig8.jpg)\n\nAnalysis results can also be overlaid on top of our interactive illustrations.\n \n \n [/ContentService/exporter/diagram/R-HSA-69278.png?token=]()\n\n![Figure 9](/uploads/documentation/dev/content-service/diagram-exporter/Fig9.png)\n\n### Animated GIFs\n\nWhen you run an expression analysis and want to export an animated GIF with a frame per analysis column, set extension to gif and don’t specify column:\n \n \n [/ContentService/exporter/diagram/R-HSA-432047.gif?quality=7&sel=R-ALL-879865&token=]()\n\n![Figure 10](/uploads/documentation/dev/content-service/diagram-exporter/Fig10.gif)\n\nIn the same way, you can export animaged gifs of EHLDs\n \n \n [/ContentService/exporter/diagram/R-HSA-69278.gif?quality=7&sel=R-HSA-69242&token=]()\n\n![Figure 11](/uploads/documentation/dev/content-service/diagram-exporter/Fig11.gif)\n\n### Color profiles\n\nReactome provides several color profiles for diagram and analysis. You can use _diagramProfile_ and _analysisProfile_ arguments to modify the default ones.\n \n \n [/ContentService/exporter/diagram/R-HSA-879415.png?quality=7&sel=R-ALL-879865&diagramProfile=standard&analysisProfile=strosobar&token=]()\n\n![Figure 12](/uploads/documentation/dev/content-service/diagram-exporter/Fig12.png)\n\n### Arguments\n\nThe folowing table presents a full list of the supported arguments alond with their default values.\n\nName| Description| Values| Default \n---|---|---|--- \n_quality_ | Quality of the image | 1 - 10 | 5 \n_format_ | Format of the image | png, jpg, jpeg, gif | png \n_flags_ | List of elements to be flagged | stId, dbId, identifer, geneName | null \n_selection_ | List of elements to be selected | stId, dbId, identifer, geneName | null \n_diagramProfile_ | Color profile for diagram | modern, standard | modern \n_analysisProfile_ | Color profile for analysis | standard, strosobar, copper plus | standard \n_token_ | Analysis token | String | null \n_column_ | The specific expression analysis results column to be overlaid If column is not specified (null), the first one is selected. If column is not specified (null) and format is gif, then an animated gif is generated with all the columns. | Integers | null \n \n###\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/dev/diagram.json b/projects/website-angular/content-dist/documentation/dev/diagram.json new file mode 100644 index 00000000..6489efa1 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/dev/diagram.json @@ -0,0 +1 @@ +{"title":"Pathway Diagrams","category":"documentation","body":"\n## Pathway Diagrams \n\nThe Reactome Pathway Diagram Viewer provides an intuitive means of viewing and interacting with pathway diagrams. Pathway diagrams represent the steps of a pathway as a series of interconnected molecular events, known in Reactome as ‘reactions’.\n\n[ __ ](<#MoreInfo>)\n\n## [ More Info ](<#MoreInfo>)\n\n[ __ ](<#GetStarted>)\n\n## [ Get Started ](<#GetStarted>)\n\n[ __ ](<#API>)\n\n## [ API ](<#API>)\n\n[ __ ](<#Resources>)\n\n## [ Resources ](<#Resources>)\n\n### [__More Info](<#MoreInfo>)\n\nReactome is a curated database of pathways and reactions (pathway steps) in human biology. The Reactome definition of a ‘reaction’ includes many events in biology that are changes in state, such as binding, activation, translocation and degradation, in addition to classical biochemical reactions. Information in the database is authored by expert biologist researchers, maintained by Reactome editorial staff, and extensively cross-referenced to other resources e.g. NCBI, Ensembl, UniProt, UCSC Genome Browser, HapMap, KEGG (Gene and Compound), ChEBI, PubMed and GO. Inferred orthologous reactions are available for a number of non-human species including mouse, rat, chicken, puffer fish, worm, fly, yeast, rice and Arabidopsis.\n\nThe diagram viewer retrieves the information directly from Reactome server, which mean that for third party resources it will be straight forward to include it in browser supporting CORS, or it will just work by adding a proxy mechanism in order to avoid SOP. Another important feature of the diagram viewer that can also be used from third party applications is the analysis result overlay. If you are interested in learning more about Reactome’s Analysis Service, please check out the [Analysis Service developers’ guide]() and later on have a look to the Diagram viewer [API](<#API>).\n\n### [__Get Started](<#GetStarted>)\n\nThe diagram viewer is implemented as part of the Reactome [Pathway Browser](). There are two supported ways to use it from a third-party page:\n\n1. **Embed the Pathway Browser** (which exposes the diagram viewer as part of its standard UI) by linking to or iframing `https://reactome.org/PathwayBrowser/#/{stId}`.\n2. **Render a static diagram image** by calling the [Content Service]() diagram exporter — for example, `GET /ContentService/exporter/diagram/{stId}.svg` (also `.png`, `.pdf`, `.pptx`, `.sbgn`).\n\nThe previous Diagram JS and Diagram GWT widgets have been retired. New integrations should target the embedded Pathway Browser or the diagram exporter API directly.\n\n### [__API](<#API>)\n\nFor interactive embedding, the Pathway Browser accepts URL fragments to set the displayed pathway and selected event (e.g. `/PathwayBrowser/#/R-HSA-69620?SEL=R-HSA-69231`). For programmatic image generation, see the diagram-exporter endpoints under the [Content Service]().\n\n### [__Resources](<#Resources>)\n\n * [__Pathway Diagram Specifications]()\n * [__Reactome Pathway Browser code (Angular)]()\n * [__Reactome Content Service]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/dev/diagram/pathway-diagram-specs.json b/projects/website-angular/content-dist/documentation/dev/diagram/pathway-diagram-specs.json new file mode 100644 index 00000000..87e57218 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/dev/diagram/pathway-diagram-specs.json @@ -0,0 +1 @@ +{"title":"Pathway Diagrams Specifications","category":"documentation","body":"\n## Pathway Diagrams Specifications \n\n## Introduction\n\nThis document provides a set of guidelines for developers on how to properly render Reactome pathway diagrams. Pathway Diagrams represent pathways as a series of connected molecular events, known in Reactome as ‘reactions’, which can be considered as steps in the pathway. For a more detailed guide about diagrams refer to [our user guide]().\n\nCurrently, there are two projects that follow these guidelines:\n\n * diagram: [ https://github.com/reactome-pwp/diagram ]()\n * diagram-exporter: [ https://github.com/reactome-pwp/diagram-exporter ]()\n\n![Regulation of Apoptosis diagram](/uploads/documentation/dev/diagram/pathway-diagram-specs/apoptosis.png)Regulation of Apoptosis diagram\n\n## Diagram layout and graph files\n\nAll the class diagrams can be found as UML in xmi (Umbrello) format. [Download]()\n\nThe layout information of every diagram is stored in a JSON file, named after its stable identifier, i.e. _R-HSA-12345.json_ . This file contains all the information regarding what to draw and how to draw it, including coordinates and sizes. In addition to the layout file, Reactome provides another JSON file per diagram containing a small graph view of the diagram content, i.e. _R-HSA-12345.graph.json_. We discuss this diagram graph file in more detail further on.\n\n_The general structure of a diagram _layout_ file: _\n \n \n {\n \"dbId\":169911,\n \"stableId\":\"R-HSA-169911\",\n \"displayName\":\"Diagram of Regulation of Apoptosis\",\n \"disease\":false,\n \"minX\":61,\n \"maxX\":1126,\n \"minY\":202,\n \"maxY\":656,\n \"nodes\":[],\n \"edges\":[],\n \"compartments\":[],\n \"notes\":[],\n \"links\":[],\n \"shadows\":[]\n }\n \n\n_To get a more detailed description of the diagram _layout_ , expand the following tree:_\n\n * Diagram\n * nodes : **Node[]**\n * nodeAttachments : **NodeAttachment[]**\n * reactomeId : **Long**\n * label : **String**\n * description : **String**\n * shape : **Shape**\n * r : **Double**\n * b : **Coordinate**\n * x : **Double**\n * y : **Double**\n * a : **Coordinate**\n * x : **Double**\n * y : **Double**\n * c : **Coordinate**\n * x : **Double**\n * y : **Double**\n * s : **String**\n * r1 : **Double**\n * empty : **Boolean**\n * type : **String**\n * interactorsSummary : **SummaryItem**\n * pressed : **Boolean**\n * shape : **Shape**\n * r : **Double**\n * b : **Coordinate**\n * x : **Double**\n * y : **Double**\n * a : **Coordinate**\n * x : **Double**\n * y : **Double**\n * c : **Coordinate**\n * x : **Double**\n * y : **Double**\n * s : **String**\n * r1 : **Double**\n * empty : **Boolean**\n * type : **String**\n * hit : **Boolean**\n * type : **String**\n * number : **Integer**\n * trivial : **Boolean**\n * connectors : **Connector[]**\n * edgeId : **Long**\n * segments : **Segment[]**\n * to : **Coordinate**\n * x : **Double**\n * y : **Double**\n * from : **Coordinate**\n * x : **Double**\n * y : **Double**\n * endShape : **Shape**\n * r : **Double**\n * b : **Coordinate**\n * x : **Double**\n * y : **Double**\n * a : **Coordinate**\n * x : **Double**\n * y : **Double**\n * c : **Coordinate**\n * x : **Double**\n * y : **Double**\n * s : **String**\n * r1 : **Double**\n * empty : **Boolean**\n * type : **String**\n * stoichiometry : **Stoichiometry**\n * shape : **Shape**\n * r : **Double**\n * b : **Coordinate**\n * x : **Double**\n * y : **Double**\n * a : **Coordinate**\n * x : **Double**\n * y : **Double**\n * c : **Coordinate**\n * x : **Double**\n * y : **Double**\n * s : **String**\n * r1 : **Double**\n * empty : **Boolean**\n * type : **String**\n * value : **Integer**\n * isDisease : **Boolean**\n * isFadeOut : **Boolean**\n * type : **String**\n * [_NodeCommon_] prop : **NodeProperties**\n * x : **Double**\n * y : **Double**\n * width : **Double**\n * height : **Double**\n * [_NodeCommon_] innerProp : **NodeProperties**\n * x : **Double**\n * y : **Double**\n * width : **Double**\n * height : **Double**\n * [_NodeCommon_] identifier : **Identifier**\n * resource : **String**\n * id : **String**\n * [_NodeCommon_] textPosition : **Coordinate**\n * x : **Double**\n * y : **Double**\n * [_NodeCommon_] insets : **Bound**\n * x : **Double**\n * y : **Double**\n * width : **Double**\n * height : **Double**\n * [_NodeCommon_] bgColor : **Color**\n * r : **Integer**\n * g : **Integer**\n * b : **Integer**\n * [_NodeCommon_] fgColor : **Color**\n * r : **Integer**\n * g : **Integer**\n * b : **Integer**\n * [_NodeCommon_] isCrossed : **Boolean**\n * [_NodeCommon_] needDashedBorder : **Boolean**\n * [_DiagramObject_] reactomeId : **Long**\n * [_DiagramObject_] schemaClass : **String**\n * [_DiagramObject_] renderableClass : **String**\n * [_DiagramObject_] position : **Coordinate**\n * x : **Double**\n * y : **Double**\n * [_DiagramObject_] isDisease : **Boolean**\n * [_DiagramObject_] isFadeOut : **Boolean**\n * [_DiagramObject_] minX : **Double**\n * [_DiagramObject_] minY : **Double**\n * [_DiagramObject_] maxX : **Double**\n * [_DiagramObject_] maxY : **Double**\n * [_DiagramObject_] id : **Long**\n * [_DiagramObject_] displayName : **String**\n * isDisease : **Boolean**\n * minX : **Integer**\n * minY : **Integer**\n * maxX : **Integer**\n * maxY : **Integer**\n * notes : **Note[]**\n * [_NodeCommon_] prop : **NodeProperties**\n * x : **Double**\n * y : **Double**\n * width : **Double**\n * height : **Double**\n * [_NodeCommon_] innerProp : **NodeProperties**\n * x : **Double**\n * y : **Double**\n * width : **Double**\n * height : **Double**\n * [_NodeCommon_] identifier : **Identifier**\n * resource : **String**\n * id : **String**\n * [_NodeCommon_] textPosition : **Coordinate**\n * x : **Double**\n * y : **Double**\n * [_NodeCommon_] insets : **Bound**\n * x : **Double**\n * y : **Double**\n * width : **Double**\n * height : **Double**\n * [_NodeCommon_] bgColor : **Color**\n * r : **Integer**\n * g : **Integer**\n * b : **Integer**\n * [_NodeCommon_] fgColor : **Color**\n * r : **Integer**\n * g : **Integer**\n * b : **Integer**\n * [_NodeCommon_] isCrossed : **Boolean**\n * [_NodeCommon_] needDashedBorder : **Boolean**\n * [_DiagramObject_] reactomeId : **Long**\n * [_DiagramObject_] schemaClass : **String**\n * [_DiagramObject_] renderableClass : **String**\n * [_DiagramObject_] position : **Coordinate**\n * x : **Double**\n * y : **Double**\n * [_DiagramObject_] isDisease : **Boolean**\n * [_DiagramObject_] isFadeOut : **Boolean**\n * [_DiagramObject_] minX : **Double**\n * [_DiagramObject_] minY : **Double**\n * [_DiagramObject_] maxX : **Double**\n * [_DiagramObject_] maxY : **Double**\n * [_DiagramObject_] id : **Long**\n * [_DiagramObject_] displayName : **String**\n * edges : **Edge[]**\n * [_EdgeCommon_] segments : **Segment[]**\n * to : **Coordinate**\n * x : **Double**\n * y : **Double**\n * from : **Coordinate**\n * x : **Double**\n * y : **Double**\n * [_EdgeCommon_] endShape : **Shape**\n * r : **Double**\n * b : **Coordinate**\n * x : **Double**\n * y : **Double**\n * a : **Coordinate**\n * x : **Double**\n * y : **Double**\n * c : **Coordinate**\n * x : **Double**\n * y : **Double**\n * s : **String**\n * r1 : **Double**\n * empty : **Boolean**\n * type : **String**\n * [_EdgeCommon_] catalysts : **ReactionPart[]**\n * stoichiometry : **Integer**\n * points : **Coordinate[]**\n * x : **Double**\n * y : **Double**\n * id : **Long**\n * [_EdgeCommon_] inhibitors : **ReactionPart[]**\n * stoichiometry : **Integer**\n * points : **Coordinate[]**\n * x : **Double**\n * y : **Double**\n * id : **Long**\n * [_EdgeCommon_] activators : **ReactionPart[]**\n * stoichiometry : **Integer**\n * points : **Coordinate[]**\n * x : **Double**\n * y : **Double**\n * id : **Long**\n * [_EdgeCommon_] precedingEvents : **Long[]**\n * [_EdgeCommon_] reactionType : **String**\n * [_EdgeCommon_] followingEvents : **Long[]**\n * [_EdgeCommon_] interactionType : **String**\n * [_EdgeCommon_] reactionShape : **Shape**\n * r : **Double**\n * b : **Coordinate**\n * x : **Double**\n * y : **Double**\n * a : **Coordinate**\n * x : **Double**\n * y : **Double**\n * c : **Coordinate**\n * x : **Double**\n * y : **Double**\n * s : **String**\n * r1 : **Double**\n * empty : **Boolean**\n * type : **String**\n * [_EdgeCommon_] inputs : **ReactionPart[]**\n * stoichiometry : **Integer**\n * points : **Coordinate[]**\n * x : **Double**\n * y : **Double**\n * id : **Long**\n * [_EdgeCommon_] outputs : **ReactionPart[]**\n * stoichiometry : **Integer**\n * points : **Coordinate[]**\n * x : **Double**\n * y : **Double**\n * id : **Long**\n * [_DiagramObject_] reactomeId : **Long**\n * [_DiagramObject_] schemaClass : **String**\n * [_DiagramObject_] renderableClass : **String**\n * [_DiagramObject_] position : **Coordinate**\n * x : **Double**\n * y : **Double**\n * [_DiagramObject_] isDisease : **Boolean**\n * [_DiagramObject_] isFadeOut : **Boolean**\n * [_DiagramObject_] minX : **Double**\n * [_DiagramObject_] minY : **Double**\n * [_DiagramObject_] maxX : **Double**\n * [_DiagramObject_] maxY : **Double**\n * [_DiagramObject_] id : **Long**\n * [_DiagramObject_] displayName : **String**\n * links : **Link[]**\n * [_EdgeCommon_] segments : **Segment[]**\n * to : **Coordinate**\n * x : **Double**\n * y : **Double**\n * from : **Coordinate**\n * x : **Double**\n * y : **Double**\n * [_EdgeCommon_] endShape : **Shape**\n * r : **Double**\n * b : **Coordinate**\n * x : **Double**\n * y : **Double**\n * a : **Coordinate**\n * x : **Double**\n * y : **Double**\n * c : **Coordinate**\n * x : **Double**\n * y : **Double**\n * s : **String**\n * r1 : **Double**\n * empty : **Boolean**\n * type : **String**\n * [_EdgeCommon_] catalysts : **ReactionPart[]**\n * stoichiometry : **Integer**\n * points : **Coordinate[]**\n * x : **Double**\n * y : **Double**\n * id : **Long**\n * [_EdgeCommon_] inhibitors : **ReactionPart[]**\n * stoichiometry : **Integer**\n * points : **Coordinate[]**\n * x : **Double**\n * y : **Double**\n * id : **Long**\n * [_EdgeCommon_] activators : **ReactionPart[]**\n * stoichiometry : **Integer**\n * points : **Coordinate[]**\n * x : **Double**\n * y : **Double**\n * id : **Long**\n * [_EdgeCommon_] precedingEvents : **Long[]**\n * [_EdgeCommon_] reactionType : **String**\n * [_EdgeCommon_] followingEvents : **Long[]**\n * [_EdgeCommon_] interactionType : **String**\n * [_EdgeCommon_] reactionShape : **Shape**\n * r : **Double**\n * b : **Coordinate**\n * x : **Double**\n * y : **Double**\n * a : **Coordinate**\n * x : **Double**\n * y : **Double**\n * c : **Coordinate**\n * x : **Double**\n * y : **Double**\n * s : **String**\n * r1 : **Double**\n * empty : **Boolean**\n * type : **String**\n * [_EdgeCommon_] inputs : **ReactionPart[]**\n * stoichiometry : **Integer**\n * points : **Coordinate[]**\n * x : **Double**\n * y : **Double**\n * id : **Long**\n * [_EdgeCommon_] outputs : **ReactionPart[]**\n * stoichiometry : **Integer**\n * points : **Coordinate[]**\n * x : **Double**\n * y : **Double**\n * id : **Long**\n * [_DiagramObject_] reactomeId : **Long**\n * [_DiagramObject_] schemaClass : **String**\n * [_DiagramObject_] renderableClass : **String**\n * [_DiagramObject_] position : **Coordinate**\n * x : **Double**\n * y : **Double**\n * [_DiagramObject_] isDisease : **Boolean**\n * [_DiagramObject_] isFadeOut : **Boolean**\n * [_DiagramObject_] minX : **Double**\n * [_DiagramObject_] minY : **Double**\n * [_DiagramObject_] maxX : **Double**\n * [_DiagramObject_] maxY : **Double**\n * [_DiagramObject_] id : **Long**\n * [_DiagramObject_] displayName : **String**\n * compartments : **Compartment[]**\n * componentIds : **Long[]**\n * [_NodeCommon_] prop : **NodeProperties**\n * x : **Double**\n * y : **Double**\n * width : **Double**\n * height : **Double**\n * [_NodeCommon_] innerProp : **NodeProperties**\n * x : **Double**\n * y : **Double**\n * width : **Double**\n * height : **Double**\n * [_NodeCommon_] identifier : **Identifier**\n * resource : **String**\n * id : **String**\n * [_NodeCommon_] textPosition : **Coordinate**\n * x : **Double**\n * y : **Double**\n * [_NodeCommon_] insets : **Bound**\n * x : **Double**\n * y : **Double**\n * width : **Double**\n * height : **Double**\n * [_NodeCommon_] bgColor : **Color**\n * r : **Integer**\n * g : **Integer**\n * b : **Integer**\n * [_NodeCommon_] fgColor : **Color**\n * r : **Integer**\n * g : **Integer**\n * b : **Integer**\n * [_NodeCommon_] isCrossed : **Boolean**\n * [_NodeCommon_] needDashedBorder : **Boolean**\n * [_DiagramObject_] reactomeId : **Long**\n * [_DiagramObject_] schemaClass : **String**\n * [_DiagramObject_] renderableClass : **String**\n * [_DiagramObject_] position : **Coordinate**\n * x : **Double**\n * y : **Double**\n * [_DiagramObject_] isDisease : **Boolean**\n * [_DiagramObject_] isFadeOut : **Boolean**\n * [_DiagramObject_] minX : **Double**\n * [_DiagramObject_] minY : **Double**\n * [_DiagramObject_] maxX : **Double**\n * [_DiagramObject_] maxY : **Double**\n * [_DiagramObject_] id : **Long**\n * [_DiagramObject_] displayName : **String**\n * shadows : **Shadow[]**\n * prop : **NodeProperties**\n * x : **Double**\n * y : **Double**\n * width : **Double**\n * height : **Double**\n * points : **Coordinate[]**\n * x : **Double**\n * y : **Double**\n * colour : **String**\n * [_DiagramObject_] reactomeId : **Long**\n * [_DiagramObject_] schemaClass : **String**\n * [_DiagramObject_] renderableClass : **String**\n * [_DiagramObject_] position : **Coordinate**\n * x : **Double**\n * y : **Double**\n * [_DiagramObject_] isDisease : **Boolean**\n * [_DiagramObject_] isFadeOut : **Boolean**\n * [_DiagramObject_] minX : **Double**\n * [_DiagramObject_] minY : **Double**\n * [_DiagramObject_] maxX : **Double**\n * [_DiagramObject_] maxY : **Double**\n * [_DiagramObject_] id : **Long**\n * [_DiagramObject_] displayName : **String**\n * dbId : **Long**\n * stableId : **String**\n * cPicture : **String**\n * forNormalDraw : **Boolean**\n * displayName : **String**\n\n## Diagram objects\n\nDiagram layout is made up of six types of elements:\n\n * **Compartments**\n * **Nodes**\n * **Edges**\n * **Links**\n * **Notes**\n * **Shadows**\n\nThese elements follow this hierarchy.\n\n![Hierarchy of diagram layout objects](/uploads/documentation/dev/diagram/pathway-diagram-specs/diagram_objects.png)\n\n### Compartments\n\n![Compartment](/uploads/documentation/dev/diagram/pathway-diagram-specs/compartment.png)\n\nCompartments are rendered in the background and represent where reactions happen. They are rendered as rounded rectangles using _NodeCommon.prop_. Compartments might have an additional layer when surrounded by a membrane, which must be specified using _NodeCommon.innerProp. Text (_DiagramObject.displayName_) is displayed in one line, using _NodeCommon.textPosition._ Color is taken from the diagram profile sheet (_Profile.compartment_). Compartments cannot be rendered on top of any other node._\n\n### Nodes\n\nNodes represent the participants of reactions, i.e. inputs, outputs, catalysts, regulators and other pathways. The type of each node is coded into _renderableClass._ The renderable class can be one of **Chemical, ChemicalDrug, Complex, Entity, EntitySet, Gene, ProcessNode, EncapsulatedNode, Protein** and **RNA.**\n\nNodes are laid in 2 layers, background and foreground. The background is rendered using a different shape for each class with dimensions defined in _NodeCommon.prop_. Some nodes may have a foreground (**ProcessNode** , **EncapsulatedNode** and **EntitySet**). The foreground shape and colour are class specific. The text is centred to the node with a padding of 5 points to the _NodeCommon.prop_. In case it is too large, then it is wrapped in several lines and, if needed, the size of the font is reduced. When a foreground is present, the text is padded to foreground limits.\n\n**Class**| **Background**| **Foreground**| **Example** \n---|---|---|--- \n_Chemical_ | ellipse | | ![Chemical](/uploads/documentation/dev/diagram/pathway-diagram-specs/chemical.png) \n_ChemicalDrug_ | ellipse | | ![Chemical drug](/uploads/documentation/dev/diagram/pathway-diagram-specs/chemicaldrug.png) \n_Complex_ | edged rectangle (octagon) | | ![Complex](/uploads/documentation/dev/diagram/pathway-diagram-specs/complex.png) \n_Entity_ | rectangle | | ![Entity](/uploads/documentation/dev/diagram/pathway-diagram-specs/entity.png) \n_EntitySet_ | rounded rectangle | rounded rectangle (padding = 4) | ![EntitySet](/uploads/documentation/dev/diagram/pathway-diagram-specs/entityset.png) \n_* Gene_ | recatangle with 2 rounded corners | | ![Gene](/uploads/documentation/dev/diagram/pathway-diagram-specs/gene.png) \n_ProcessNode_ | rectangle | rectangle (padding = 10) | ![ProcessNode](/uploads/documentation/dev/diagram/pathway-diagram-specs/processnode.png) \n_EncapsulatedNode_ | hexagon | hexagon (padding = 10) | ![EncapsulatedNode](/uploads/documentation/dev/diagram/pathway-diagram-specs/encapsulatednode.png) \n_Protein_ | rounded rectangle | | ![Protein with attachment](/uploads/documentation/dev/diagram/pathway-diagram-specs/attachment.png) \n___ RNA _ | bone | | ![RNA](/uploads/documentation/dev/diagram/pathway-diagram-specs/rna.png) \n \n*Genes are made up using a different approach. They have 2 shapes, a rectangle with 2 rounded corners (y=NodeCommon.prop.y + 25) and a triangle. The rectangle is filled but not stroked. Both shapes are joint using 3 perpendicular lines.\n \n \n shape = SemiRoundedRectangle(prop.x, prop.y + 25, prop.width. prop.height)\n arrow = Path()\n arrow.moveTo(prop.maxX, prop.getY + 8)\n arrow.lineTo(prop.maxX, prop.getY - 8)\n arrow.lineTo(prop.maxX + 8, prop.getY)\n arrow.closePath()\n path = Path()\n path.moveTo(prop.x, prop.y + 25)\n path.lineTo(prop.maxX, prop.y + 25)\n path.moveTo(prop.maxX - 4, prop.y + 25)\n path.lineTo(prop.maxX - 4, prop.y)\n path.lineTo(prop.maxX, prop.y) # already closed\n fill(shape, arrow)\n stroke(path, arrow)\n \n\n_RNA shape looks after a bone_ :\n \n \n x1 = rna.x + 16\n x2 = rna.maxX - 16\n y1 = rna.y + 8\n y2 = rna.maxY - 8\n path = Path()\n path.moveTo(x1, y1)\n path.lineTo(x2, y1)\n path.quadTo(rna.maxX, rna.y, rna.maxX, rna.centerY)\n path.quadTo(rna.maxX, rna.maxY, x2, y2)\n path.lineTo(x1, y2)\n path.quadTo(rna.x, rna.maxY, rna.x, rna.centerY)\n path.quadTo(rna.x, rna.y, x1, y1)\n fill(path)\n stroke(path)\n \n\nSome nodes contain attachments, such as post-translational modifications (PTMs) . Attachments are styled after their owner. The border of nodes is rendered after the background and foreground shapes, except for genes, which have a custom border shape. When a node has _NodeCommon.needDashedBorder_ then the border must be dashed.\n\nDrugs use the same shape as chemicals, but with different colors. They also have a small reactangle (14x7) in the bottom right corner with the text Rx (recipe, latin word for prescription).\n\n### Edges\n\nEdges represent reactions in the diagram. They are layout as lines with shapes. They can have 2 shapes: a _reaction shape_ , to indicate the type of reaction, and an _end shape_. Both can be omitted. Lines are taken from _EdgeCommon.segments_. Shape is created using several properties inside _EdgeCommon_.\n\n**Reaction type**| **shape.type**| **shape.empty**| **shape.text**| **Example** \n---|---|---|---|--- \nAssociation | circle | fill | | ![Association](/uploads/documentation/dev/diagram/pathway-diagram-specs/association.png) \nDissociation | double circle | empty | | ![Dissociation](/uploads/documentation/dev/diagram/pathway-diagram-specs/dissociation.png) \nOmitted process | box | empty | \\\\\\ | ![Omitted](/uploads/documentation/dev/diagram/pathway-diagram-specs/omitted.png) \nTransition | box | empty | | ![Transition](/uploads/documentation/dev/diagram/pathway-diagram-specs/transition.png) \nUncertain | box | empty | ? | ![Uncertain](/uploads/documentation/dev/diagram/pathway-diagram-specs/uncertain.png) \nAll (end shape) | arrow | fill | | ![End shape](/uploads/documentation/dev/diagram/pathway-diagram-specs/end-shape.png) \n \nShapes are specified in the _Shape_ element inside _Edge.reactionType_ and _Edge.endShape_.\n\n**_Shape.type_ **| **Shape** \n---|--- \nARROW | triangle with points: a, b, c \nBOX | rectangle from a (top left) to b (bottom right) \nCIRCLE | circle with center c and radius r \nSTOP | line from a to b \nDOUBLE CIRCLE | 2 circles with center c and radii r and r1 \n \nWhen _Shape.s_ is present, the value of _Shape.s_ is written in the centre of the shape. When _Shape.emtpy_ is true, the Shape is filled with _Profile.reaction.fill_ color (usually white), otherwise, it is filled with _Profile.reaction.stroke_ (usually black).\n\n### Connectors\n\nAs each reaction can have several participants, a connector is created in the participant with _Connector.EdgeId_ = _DiagramObject.Id_. Connectors are styled after the reaction they belong. Connectors have segments and 2 shapes: _end shape_ and _stoichiometry shape_. Stoichiometries are always empty boxes with the stoichiometry value as text only if stoichiometry value is greater than 1.\n\n**endShape.type**| **Shape**| **Empty**| **Example** \n---|---|---|--- \nInhibitor | line | fill | ![Inhibitor](/uploads/documentation/dev/diagram/pathway-diagram-specs/inhibitor.png) \nCatalyst | circle | empty | ![Catalyst](/uploads/documentation/dev/diagram/pathway-diagram-specs/catalyst.png) \nOutput | arrow | fill | ![Output](/uploads/documentation/dev/diagram/pathway-diagram-specs/end-shape.png) \nActivator | arrow | empty | ![Activator](/uploads/documentation/dev/diagram/pathway-diagram-specs/activator.png) \nInput | _no shape_ | | \n \n### Links\n\nLinks are used for linking elements which are related, normally subpathways or distant nodes.\n\n**Renderable class**| **Dashed**| **Link type**| **Shape**| **Empty**| **Example** \n---|---|---|---|---|--- \nEntitySetAndMemberLink | dashed | | | | ![Link](/uploads/documentation/dev/diagram/pathway-diagram-specs/link.png) \nEntitySetAndEntitySetLink | dashed | | | | ![Link](/uploads/documentation/dev/diagram/pathway-diagram-specs/link.png) \nFlowLine | false | | ARROW | fill | ![Flow line](/uploads/documentation/dev/diagram/pathway-diagram-specs/flowline.png) \nInteraction | false | Activate | ARROW | empty | ![Activate](/uploads/documentation/dev/diagram/pathway-diagram-specs/activate_inhibit.png) \nInteraction | false | Inhibit | ARROW | empty | ![Inhibit](/uploads/documentation/dev/diagram/pathway-diagram-specs/activate_inhibit.png) \n \n### Notes\n\nNotes are just texts. The text is displayed in one line beginning at _NodeCommon.textPosition._ Color is taken from _Profile.note.text_.\n\n### Shadows\n\nShadows are used when there are several subpathways in the same diagram. In particular, these coloured rectangles highlight the specific diagram reactions belonging to each subpathway, allowing further zooming in to the areas of interest within a given pathway diagram. Rendering them is optional, but it is recommended that they are drawn on top of every element, as rectangles, using _Shadow.points_ and _Shadow.color_ for text and filling. It is also adviced to use transparency for the filling so that all subpathway participants are visible. The text contains the name of the subpathway and should be rendered using a bigger font size. \n\n## Text\n\nThe default font for texts is Arial black with size 9. For shadows, font size is 24.\n\n## Colouring\n\nElement colors are taken from a JSON stylesheet. Currently, we have 2 styles: [ standard ]() and [ modern]().\n\n_To get a more detailed description of the diagram colour profile, expand the following tree:_\n\n * DiagramProfile\n * stoichiometry : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * entity : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * complex : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * note : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * interactor : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * attachment : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * flowline : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * gene : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * processnode : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * encapsulatednode : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * protein : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * link : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * otherentity : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * chemical : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * chemicaldrug : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * entityset : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * compartment : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * reaction : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * rna : **DiagramProfileNode**\n * stroke : **String**\n * lineWidth : **String**\n * fadeOutFill : **String**\n * fadeOutStroke : **String**\n * lighterFill : **String**\n * lighterStroke : **String**\n * text : **String**\n * fadeOutText : **String**\n * lighterText : **String**\n * fill : **String**\n * thumbnail : **DiagramProfileThumbnail**\n * hovering : **String**\n * highlight : **String**\n * selection : **String**\n * edge : **String**\n * node : **String**\n * name : **String**\n * properties : **DiagramProfileProperties**\n * hovering : **String**\n * highlight : **String**\n * selection : **String**\n * halo : **String**\n * flag : **String**\n * trigger : **String**\n * button : **String**\n * text : **String**\n * disease : **String**\n\nThe **DiagramProfileNode** defines 3 colors per each node: _fill, stroke_ and _text_ . If an object is fadeout (_DiagramObject.isFadeOut),_ then we must choose _fadeOutFill, fadeOutStroke_ and _fadeOutText_. If an analysis is being run, then we use _lighterFill, lighterStroke_ and _lighterText_. And by default _fill, stroke_ and _text_.\n\nThere is 1 exception: reactions and stoichiometries’ texts; text color is ignored and stroke is used instead. When _DiagramObject.isDisease_ is true, the color of node border, edge border, edge text and segments is changed to _Profile.properties.disease_ (usually red).\n\n### Decorators\n\nSome elements can be decorated in the diagram. This information is not in the diagram and has to be inserted from the outside. Reactome supports 2 types of decoration: **selection** and **flagging**.\n\nWhen a node is selected, the border is changed in 2 ways: the color is changed to _Profile.properties.selection_ and the width is increased. The node, the reactions in which it participates and the nodes that participate in these reactions are haloed. Haloing is made by drawing the border behind the node with a larger width and with _Profile.properties.halo_ color.\n\nWhen a reaction is selected, its segments, texts and borders change color to _Profile.properties.selection_ and segments increase its width. The reaction and its participants are haloed.\n\nWhen a node is flagged, the border is drawn in the background with a larger width using _Profile.properties.flag._ At this moment, edges are not being flagged.\n\n![Node layers](/uploads/documentation/dev/diagram/pathway-diagram-specs/node-layers.png) Representation of layers for a node. From bottom to top: flag, halo, background, analysis, foreground, border and text.\n\n![Edge layers](/uploads/documentation/dev/diagram/pathway-diagram-specs/edge-layers.png) Edge layers. From bottom to top: halo, segments, filling, border and text.\n\n## Analysis\n\nWhen an analysis is overlaid, we must modify the color of elements to _lighter_. Then, those nodes hit by the analysis must render a new layer between the background and the foreground. At first, we must calculate how much a node is hit by the analysis. We can do it by using the graph JSON file and the analysis results (or the analysis token). We must traverse the graph from each node through its children (_EntityNode.children)_.\n\n![C1 has 1/2 children hit. S1 has 3/4 leaves hit. P1, P3 and P4 have 1/1 leaves hit.](/uploads/documentation/dev/diagram/pathway-diagram-specs/analysis_hits.png) C1 has 1/2 children hit. S1 has 3/4 leaves hit. P1, P3 and P4 have 1/1 leaves hit.\n\n_To get a more detailed description of the diagram graph, expand the following tree:_\n\n * Graph\n * nodes : **EntityNode[]**\n * identifier : **String**\n * parents : **Long[]**\n * children : **Long[]**\n * geneNames : **String[]**\n * diagramIds : **Long[]**\n * [_GraphNode_] schemaClass : **String**\n * [_GraphNode_] dbId : **Long**\n * [_GraphNode_] stId : **String**\n * [_GraphNode_] speciesID : **Long**\n * [_GraphNode_] displayName : **String**\n * edges : **EventNode[]**\n * catalysts : **Long[]**\n * inhibitors : **Long[]**\n * activators : **Long[]**\n * inputs : **Long[]**\n * outputs : **Long[]**\n * diagramIds : **Long[]**\n * preceding : **Long[]**\n * following : **Long[]**\n * requirements : **Long[]**\n * [_GraphNode_] schemaClass : **String**\n * [_GraphNode_] dbId : **Long**\n * [_GraphNode_] stId : **String**\n * [_GraphNode_] speciesID : **Long**\n * [_GraphNode_] displayName : **String**\n * dbId : **Long**\n * stId : **String**\n * subpathways : **SubpathwayNode[]**\n * dbId : **Long**\n * stId : **String**\n * events : **Long[]**\n * displayName : **String**\n\nProcessNodes percentages are taken from the _SubpathwaySummary_ : entity.found / entity.total. For the analysis, there is another stylesheet. We draw enrichment using the _AnalysisSheet.enrichment.gradient.max_ color. There are 3 analysis stylesheets: [ Standard](), [ Copper Plus]() and [ Strosobar](). \n\n_To get a more detailed description of the analysis colour profile, expand the following tree:_\n\n * AnalysisProfile\n * enrichment : **OverlayNode**\n * text : **String**\n * gradient : **ProfileGradient**\n * stop : **String**\n * min : **String**\n * max : **String**\n * legend : **OverlayLegend**\n * hover : **String**\n * median : **String**\n * expression : **OverlayNode**\n * text : **String**\n * gradient : **ProfileGradient**\n * stop : **String**\n * min : **String**\n * max : **String**\n * legend : **OverlayLegend**\n * hover : **String**\n * median : **String**\n * ribbon : **String**\n * name : **String**\n\nIf the analysis is an expression analysis, we must take the individual expression values from the leaves. We can show only 1 column at a time. If we want to show them all we must create an animation (play button in the pathway browser and GIFs in the diagram exporter). Once we have the expression values for an element, we divide it into regions and use _AnalysisSheet.expression.gradient_ to calculate the color of each region, using _AnalysisResult.expression.max_ and _AnalysisResult.expression.min_ as limit values. Leaves are sorted using the identifier from the analysis (_FoundEntity.id_).\n\n![Example of diagram with analysis enrichment](/uploads/documentation/dev/diagram/pathway-diagram-specs/analysis.png) Subsection of a diagram with an analysis overlaid ![Expression](/uploads/documentation/dev/diagram/pathway-diagram-specs/expression.gif) Example of a diagram with an expression analysis\n\n## Elements order\n\nFrom bottom to top, elements must be rendered in the following order:\n\n 1. Compartments\n 2. Fade out reactions\n 3. Fade out nodes\n 4. Flags\n 5. Halos\n 6. Reactions\n 7. Nodes\n 8. Notes\n 9. Shadows\n\n## More Information\n\nTo learn more about our pathway diagrams and the techniques we use to render them efficiently please go through our relevant publications:\n\n 1. [Reactome diagram viewer: data structures and strategies to boost performance]()\n 2. [Reactome enhanced pathway visualization]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/dev/graph-database.json b/projects/website-angular/content-dist/documentation/dev/graph-database.json new file mode 100644 index 00000000..97f8504e --- /dev/null +++ b/projects/website-angular/content-dist/documentation/dev/graph-database.json @@ -0,0 +1 @@ +{"title":"Graph Database","category":"documentation","body":"\n## Graph Database \n\n#### The Reactome Graph Database models the Reactome knowledgebase as an interconnected graph database.\n\n[ __ ](<#MoreInfo>)\n\n## [ More Info ](<#MoreInfo>)\n\n[ __ ](<#GetStarted>)\n\n## [ Get Started ](<#GetStarted>)\n\n[ __ ](<#API>)\n\n## [ API ](<#API>)\n\n[ __ ](<#Resources>)\n\n## [ Resources ](<#Resources>)\n\n### [__More Info](<#MoreInfo>)\n\nAt the cellular level, life is a network of molecular reactions. In Reactome, these processes are systematically described in molecular detail to generate an ordered network of molecular transformations [(Fabregat et al. 2015)](). This amounts to millions of interconnected terms naturally forming a [graph]() of biological knowledge. The Reactome Graph provides an intuitive way for data retrieval as well as interpretation and analysis of pathway knowledge.\n\nRetrieving, and especially analysing such complex data becomes tedious when using relational databases. Queries across the pathway knowledgebase are composed by a number of expensive join operations resulting in poor performance and a hard-to-maintain project. Due to the schema-based approach, relational databases are limited in how information is stored and thus are difficult to scale for new requirements. In order to overcome these problems the Reactome database is imported in [Neo4j](), creating one large interconnected graph. Graph database technology is an effective tool for modelling highly connected data.\n\nStoring Reactome data in this form has many benefits. No denormalisation is required so data can be stored in its natural form. Nodes in the vicinity of a starting point can quickly be traversed giving the user the possibility to not only retrieve data but also perform fast analysis of these neighbour networks. Thus, knowledge that previously was unavailable due to the limitations of relational data storage can now be retrieved.\n\nTo easily access and benefit from the graph database, we have developed the GraphCore; an open source library implemented in Java. This project uses [Spring Data Neo4j](), which provides an automatic object graph mapping on top of Neo4j and tightly integrates with other parts of the spring framework used across the project.\n\n### [__Get Started](<#GetStarted>)\n\ndownloadDownload\n\n
\nTo run our graph database on your personal computer, please choose the installation option that suits your need. Our team recommends Neo4j Desktop, but we can't compete with developers and their love for terminal console.\n
\n\n#### 1\\. Docker\n\nIf you are comfortable working with docker, you can build a [docker image]() that contains Neo4j and a Reactome graph database\n\nYou can use the Neo4j graph database: \n\n 1. Download [Docker]() on your desktop. \n 2. Pull a [docker image]() that contains Neo4j and a Reactome graph database from AWS ECR.\n 3. Authenticate with AWS ECR and pull the image: \n \naws ecr get-login-password --region | docker login --username AWS --password-stdin public.ecr.aws/reactome/graphdb docker pull public.ecr.aws/reactome/graphdb: \n \n\n 4. Run the Container \n**For Reactome GraphDB versions 79 and newer:** \ndocker run -p 7474:7474 -p 7687:7687 -e NEO4J_dbms_memory_heap_maxSize=8g public.ecr.aws/reactome/graphdb: \n** \nFor Reactome GraphDB versions 76–78, set a Neo4j password:** \ndocker run --name reactome-graphdb -e NEO4J_AUTH=neo4j/$NEO4J_PASSWORD -p 7474:7474 -p 7687:7687 public.ecr.aws/reactome/graphdb: \n \n\n 5. Access Neo4j Browser\n 6. Open []() and log in with: \nUsername: neo4j \nPassword: (set via $NEO4J_PASSWORD or default if not set)\n\nYou now have a docker image containing Neo4j and the Reactome graph database. You can create custom queries using Cypher and submit your own queries. Please refer to our [extracting pathway participating molecules]() tutorial to introduce yourself to using Cypher to query the Reactome Graph Database.\n\n#### 2\\. Neo4j Desktop\n\nIf you would like to use Neo4j Desktop, we have created a dedicated page for it. Please see the instructions [here]().\n\n#### 3\\. Neo4j Community manual installation\n\nIf you have trouble using the Neo4j 3.5.X with our data, we strongly recommend upgrading your neo4j version to 4.X.X and following the instructions above.\n\nOur Graph Database is available in our [download data section](). It is possible to use it in your local environment by following these steps:\n\n 1. Download and install the [Neo4j V4]().\n 1. Untar/unzip Neo4j tar/zip file.\n 2. Download the [Graph Database]() for the latest data release.\n 3. Install the Graph Database for Mac/Linux users.\n 1. Extract the Reactome.graph.db after downloading.\n 2. Move graph.db folder to /path/to/neo4j/data/databases/\n 1. If graph.db already exists, remove it or rename it.\n 3. Rename the folder to the graph.db.\n 4. Config Neo4j\n 1. Edit Neo4j confirmation file in /path/to/neo4j/conf/neo4j.conf\n 2. We recommend having all these settings:\n 1. _dbms.default_database=graph.db_\n 2. _dbms.recovery.fail_on_missing_files=false_\n 3. _unsupported.dbms.tx_log.fail_on_corrupted_log_files=false_\n 5. Start Neo4j ./path/to/neo4j/bin/neo4j start\n 4. Install the Graph Database for Windows user\n 1. Please see the instructions[ here]().\n 5. If the standard procedure has been followed, the graph database should be accessible via the Neo4j browser at your [localhost](). More instructions are available in the [Neo4j operations tutorial](), specifically the sections “[file locations](<#file-locations>)” and “[restoring a backup](<#backup-restoring>)“.\n\nYou can also [restore a graph database ]()dump file to Neo4j Community if you have Java 11 installed on your local.\n\n 1. Download and install the [Neo4j V4]().\n 1. Untar/unzip Neo4j tar/zip file.\n 2. Download the Graph Database Dump file.\n 3. Run ./path/to/neo4j/bin/neo4j-admin load --force --from=/path/to/reactome.graphdb.dump --database=graph.db\n 4. Start Neo4j ./path/to/neo4j/bin/neo4j start\n\n#### 4\\. Using Neo4j V5: \n\nReactome data dumps are in Neo4j version 4 format. To use them with Neo4j version 5 the Reactome database needs to be downloaded as a dump and converted. The following instructions are for CLI installation of Neo4j (Linux): \n\n 1. Download and install any 5.* version of Neo4j \n 2. Download the Reactome [database dump]()\n 3. cd to installation directory. From there, run all the commands provided below\n 4. cp reactome.dump \n 5. ./bin/neo4j-admin database migrate --force-btree-indexes-to-range reactome\n 6. Now there should be a new directory created under data/databases\n 7. Config Neo4j:\n 1. We recommend having all these settings in conf/neo4j.conf:\n 1. initial.dbms.default_database=reactome\n 2. db.recovery.fail_on_missing_files=false\n 3. unsupported.dbms.tx_log.fail_on_corrupted_log_files=false\n\n#### Troubleshooting\n\n##### Not able to access graph.db in Mac/Linux\n\nDatabaseUnavailable:\n\n`Database \"`graph.db`\" is unavailable, its status is \"offline.\"`\n\nThere may be a few reasons for being unable to access the graph database. Some areas you can check include:\n\n 1. Ensure the \"graph.db\" folder is accessible under your Neo4j installation folder. It should be located at \"/path/to/neo4j/data/databases/graph.db\".\n 2. Ensure the user and group owner are recursively set to \"neo4j:adm\" using the command \"chown -R neo4j:adm /path/to/neo4j\".\n 3. Depending on how you are using Neo4j, the database may need to be started using the \"cypher-shell\" or a configuration value may need to be changed to allow access to the database.\n\nIf you still face any problems please send an email to [help@reactome.org]() with information about the following to help debug the problem:\n\n 1. The version of Neo4j you are using\n 2. The working environment you are using, Mac? Linux? Windows?\n 3. The software you are using to run and access Neo4j \n 1. Neo4j Docker image vs. Neo4j community edition installed to your system\n 2. Neo4j Desktop vs. Web Browser vs. Cypher-Shell\n 4. Path of the Neo4j installation, if installed locally\n\nGreat! Now you have your own copy of the current version of the Reactome data content in your instance of Neo4j, so let’s see how you can take advantage of it either with direct queries to the graph database or using our GraphCore java library.\n\n#### Directly querying to the Reactome Graph Database\n\nThe Neo4j browser offers a nice interface to submit your own queries to the graph database. We recommend using this platform for the first interaction with the Reactome Graph database to see how easy is to use the [Cypher query language]().\n\nPlease refer to our [extracting pathway participating molecules]() tutorial to introduce yourself to using Cypher to query the Reactome Graph Database.\n\n### [__API](<#API>)\n\nThe API for the Reactome GraphCore Java library is available on our[ _GitHub_]() repository.\n\n### [__Resources](<#Resources>)\n\n[Tutorial: Extracting participating molecules using the Graph Database]().\n\nTo learn more about our graph database, have a look at our relevant publication entitled [Reactome graph database: Efficient access to complex pathway data]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/dev/graph-database/extract-participating-molecules.json b/projects/website-angular/content-dist/documentation/dev/graph-database/extract-participating-molecules.json new file mode 100644 index 00000000..af2f8d6e --- /dev/null +++ b/projects/website-angular/content-dist/documentation/dev/graph-database/extract-participating-molecules.json @@ -0,0 +1 @@ +{"title":"Tutorial: Extracting participating molecules using the Graph Database","category":"documentation","body":"\n## Tutorial: Extracting participating molecules using the Graph Database \n\n * [The participating molecules use case](<#participating-molecules-use-case>)\n * [Retrieving objects based on their identifier](<#retrieving-objects>)\n\n * [Identifiers for proteins or chemicals](<#identifiers-proteins-or-chemicals>)\n\n * [Breaking down complexes and sets to get their participants](<#complexes-sets-participants>)\n\n * [Retrieving pathways,subpathways and superpathways](<#retrieving-pathways>)\n\n * [Retrieving the reactions for a given pathway](<#retrieving-reactions>)\n\n * [Retrieving the participants of a Reaction](<#retrieving-participants>)\n\n * [Joining the pieces: Participating molecules for a pathway](<#joining-pieces>)\n\nThe Reactome Graph Database, also called a graph-oriented database, is a type of NoSQL database that uses graph theory to store, map and query relationships relating to our data content. Each node represents an entity (such as a pathway, reaction or proteins) and each edge represents a relationship between two nodes. Every node in our graph database is defined by a unique identifier, a set of outgoing edges and/or incoming edges and a set of properties expressed as key/value pairs. Each edge is defined by a unique identifier, a starting-place and/or ending-place node and a set of properties.\n\n[Cypher]() is Neo4j’s open graph query language. Cypher’s syntax provides a familiar way to match patterns of nodes and relationships in a graph. If you want to learn more about what is Cypher, please visit the following [link]().\n\nGraph databases are well-suited for analyzing interconnections, which is why there has been a lot of interest in using graph databases to mine data from biological pathways and reactions. The Reactome Graph database has many advantages, but one is its responsiveness in managing data. Furthermore, even though data queries increase exponentially, the performance of a graph database does not drop, compared to what happens with relational databases. When software developers work with data, they are looking for flexibility and scalability. Our Graph Database contributes a lot in this regard because when needs increase, the possibilities of adding more nodes and relationships to an existing graph are huge.\n\n### [The participating molecules use case](<#participating-molecules-use-case>)\n\nThis tutorial explains how to query Reactome using Cypher. It's assumed that the reader has a basic knowledge of Cypher as well as an understanding of our [data model]() and how data is stored in our [schema]().\n\nEven though it is not possible to cover all possible queries of the Reactome Graph Database in a single tutorial, the sections in this document build up a query, which will retrieve the resource and identifier of each participating molecule of a given Pathway. There are several intermediate stages to be explained before reaching that point:\n\n 1. How to retrieve objects like proteins, reactions, pathways, etc.\n 2. How to get the identifier of proteins or chemicals\n 3. How to deconstruct complexes or sets to get their participants\n 4. How to retrieve the subpathways for a given pathway\n 5. How to retrieve the reactions of a pathway\n 6. How to retrieve the participants of a reaction\n\nThe enumeration above represents the **basic bricks** from which to construct the final query that retrieves the **participating molecules** for a given **pathway**.\n\n### [Retrieving objects based on their identifier](<#retrieving-objects>)\n\nTo retrieve the Pathway \"**Antigen processing-Cross presentation** \" with identifier **R-HSA-1236975** , the query is as follows:\n \n \n //Selecting an Pathway by its stable identifier\n MATCH (pathway:Pathway{stId:\"R-HSA-1236975\"})\n RETURN pathway\n \n\nThe result of the query is:\n \n \n ╒═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╕\n │pathway │\n ╞═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╡\n │{speciesName: Homo sapiens, oldStId: REACT_111119, isInDisease: false, releaseDate: 2011-09-20, displayName: Antigen │\n │ processing-Cross presentation, stIdVersion: R-HSA-1236975.1, dbId: 1236975, releaseStatus: UPDATED, name: [Antigen │\n │ processing-Cross presentation], stId: R-HSA-1236975, hasDiagram: false, isInferred: false} │\n └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘\n \n\nIn the same way, let's focus on an EntityWithAccessionedSequence (EWAS) which corresponds to a protein in Reactome. For this example we use one form of **PTEN** in the **cytosol** with identifier **R-HSA-199420**\n \n \n //Selecting an EWAS by its stable identifier\n MATCH (ewas:EntityWithAccessionedSequence{stId:\"R-HSA-199420\"})\n RETURN ewas\n \n\nThe result is one node of the database:\n \n \n ╒════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╕\n │ewas │\n ╞════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╡\n │{speciesName: Homo sapiens, startCoordinate: 1, isInDisease: false, displayName: PTEN [cytosol], dbId: 199420, name: [PTEN, │\n │ Phosphatidylinositol-3,4,5-trisphosphate 3-phosphatase PTEN, PTEN_HUMAN, MMAC1, TEP1], referenceType: ReferenceGeneProduct,│\n │ endCoordinate: 403, stId: R-HSA-199420} │\n └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘\n \n\n### [Identifiers for proteins or chemicals](<#identifiers-proteins-or-chemicals>)\n\nContinuing with the same form of PTEN, another use case could be to retrieve only a couple of fields for the target node. The following query retrieves the EWAS **display name** and its **identifier** (from the reference entity):\n \n \n //Following the reference entity link in order to get the identifier\n MATCH (ewas:EntityWithAccessionedSequence{stId:\"R-HSA-199420\"}),\n (ewas)-[:referenceEntity]->(re:ReferenceEntity)\n RETURN ewas.displayName AS EWAS, re.identifier AS Identifier\n \n\nPlease note that the **identifier** is not directly stored in the node for the EWAS but is a property of another node pointed from the EWAS which is a **ReferenceEntity**. The previous query accesses that node from the EWAS following the **referenceEntity** edge. The result of this query is as shown below:\n \n \n ╒══════════════╤══════════╕\n │EWAS │Identifier│\n ╞══════════════╪══════════╡\n │PTEN [cytosol]│P60484 │\n └──────────────┴──────────┘\n \n\nTIP: The _MATCH_ part of the previous query could be written in one line as follows:\n \n \n //Equivalent to the previous one\n MATCH (ewas:EntityWithAccessionedSequence{stId:\"R-HSA-199420\"})-[:referenceEntity]->(re:ReferenceEntity)\n RETURN ewas.displayName AS EWAS, re.identifier AS Identifier\n \n\nContinuing on, it is possible to construct a query to retrieve the **reference database** on top of the previously retrieved fields. Please note that in this case the **reference database** is a **node** pointed from **ReferenceEntity** by an edge called **referenceDatabase** :\n \n \n //Following the reference entity and database links in order to get the identifier and the database of reference\n MATCH (ewas:EntityWithAccessionedSequence{stId:\"R-HSA-199420\"}),\n (ewas)-[:referenceEntity]->(re:ReferenceEntity)-[:referenceDatabase]->(rd:ReferenceDatabase)\n RETURN ewas.displayName AS EWAS, re.identifier AS Identifier, rd.displayName AS Database\n \n \n \n ╒══════════════╤══════════╤════════╕\n │EWAS │Identifier│Database│\n ╞══════════════╪══════════╪════════╡\n │PTEN [cytosol]│P60484 │UniProt │\n └──────────────┴──────────┴────────┘\n \n\n### [Breaking down complexes and sets to get their participants](<#complexes-sets-participants>)\n\nThe components of a complex, which are also physical entities, are stored in the \"hasComponent\" slot. Let's use the complex \"**Ag-substrate:E3:E2:Ub** \" with identifier **R-HSA-983126** as example in this case:\n \n \n //First level components for the complex with stable identifier R-HSA-983126\n MATCH (Complex{stId:\"R-HSA-983126\"})-[:hasComponent]->(pe:PhysicalEntity)\n RETURN pe.stId AS component_stId, pe.displayName AS component\n \n\nThe result of the query is\n \n \n ╒══════════════╤═══════════════════════════════════════════════╕\n │component_stId│component │\n ╞══════════════╪═══════════════════════════════════════════════╡\n │R-NUL-983035 │antigenic substrate [cytosol] │\n ├──────────────┼───────────────────────────────────────────────┤\n │R-HSA-976075 │E3 ligases in proteasomal degradation [cytosol]│\n ├──────────────┼───────────────────────────────────────────────┤\n │R-HSA-976165 │Ubiquitin:E2 conjugating enzymes [cytosol] │\n └──────────────┴───────────────────────────────────────────────┘\n \n\nIn this example, the \"**E3 ligases in proteasomal degradation** \" is a Set and \"**E3 ligases in proteasomal degradation** \" is a Complex. To further deconstruct the initial complex there are some minor changes which should be applied to the Cypher query. Sets can either be DefineSets, OpenSets or CandidateSets. The way to find out which other physical entities are part of them is \"traversing\" through the \"**hasMember** \" or \"**hasCandidate** \" slots. The following query will break down the initial complex into ALL its participants:\n \n \n //All distinct components for the complex with stable identifier R-HSA-983126\n MATCH (Complex{stId:\"R-HSA-983126\"})-[:hasComponent|hasMember|hasCandidate*]->(pe:PhysicalEntity)\n RETURN DISTINCT pe.stId AS component_stId, pe.displayName AS component\n \n\nThis query returns 284 entities for v63:\n \n \n ╒════════════════╤════════════════════════╕\n │ component_stId │ component │\n ╞════════════════╪════════════════════════╡\n │ R-HSA-141412 │ CDC20 [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-174242 │ ANAPC7 [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-174211 │ ANAPC5 [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-174052 │ CDC26 [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-174244 │ UBE2C [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-174126 │ ANAPC11 [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-174156 │ CDC16 [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-174189 │ ANAPC1 [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-174100 │ UBE2E1 [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-174229 │ ANAPC2 [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-174168 │ ANAPC4 [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-174073 │ CDC27 [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-174137 │ CDC23 [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-174142 │ ANAPC10 [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-174236 │ UBE2D1 [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-976009 │ CBLB [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-976042 │ MKRN1 [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-939214 │ UBB(1-76) [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-939213 │ UBB(77-152) [cytosol] │\n ├────────────────┼────────────────────────┤\n │ R-HSA-939239 │ UBC(533-608) [cytosol] │\n ├────────────────┼────────────────────────┤\n │... │... │\n └────────────────┴────────────────────────┘\n \n\n### [Retrieving pathways, subpathways and superpathways](<#retrieving-pathways>)\n\nIn this example, we focus on the pathway \"**Class I MHC mediated antigen processing & presentation**\" with identifier **R-HSA-983169**. To find out its subpathways, the slot to query is \"**hasEvent** \":\n \n \n //Direct subpathways for the pathway with stable identifier R-HSA-198933\n MATCH (p:Pathway{stId:\"R-HSA-983169\"})-[:hasEvent]->(sp:Pathway)\n RETURN p.stId AS Pathway, sp.stId AS SubPathway, sp.displayName as DisplayName\n \n\nThe result for v63 returns 3 subpathways:\n \n \n ╒════════════╤═════════════╤══════════════════════════════════════════════════════════════════════════╕\n │Pathway │SubPathway │DisplayName │\n ╞════════════╪═════════════╪══════════════════════════════════════════════════════════════════════════╡\n │R-HSA-983169│R-HSA-983168 │Antigen processing: Ubiquitination & Proteasome degradation │\n ├────────────┼─────────────┼──────────────────────────────────────────────────────────────────────────┤\n │R-HSA-983169│R-HSA-1236975│Antigen processing-Cross presentation │\n ├────────────┼─────────────┼──────────────────────────────────────────────────────────────────────────┤\n │R-HSA-983169│R-HSA-983170 │Antigen Presentation: Folding, assembly and peptide loading of class I MHC│\n └────────────┴─────────────┴──────────────────────────────────────────────────────────────────────────┘\n \n\nIt is important to note that subpathways might contain other subpathways, so to get ALL the supathways of R-HSA-198933, the query is as follows:\n \n \n //ALL subpathways for the pathway with stable identifier R-HSA-198933\n MATCH (p:Pathway{stId:\"R-HSA-983169\"})-[:hasEvent*]->(sp:Pathway)\n RETURN p.stId AS Pathway, sp.stId AS SubPathway, sp.displayName as DisplayName\n \n\nIn this case the number of subpathways is increased to 7:\n \n \n ╒════════════╤═════════════╤══════════════════════════════════════════════════════════════════════════╕\n │Pathway │SubPathway │DisplayName │\n ╞════════════╪═════════════╪══════════════════════════════════════════════════════════════════════════╡\n │R-HSA-983169│R-HSA-983170 │Antigen Presentation: Folding, assembly and peptide loading of class I MHC│\n ├────────────┼─────────────┼──────────────────────────────────────────────────────────────────────────┤\n │R-HSA-983169│R-HSA-1236975│Antigen processing-Cross presentation │\n ├────────────┼─────────────┼──────────────────────────────────────────────────────────────────────────┤\n │R-HSA-983169│R-HSA-1236978│Cross-presentation of soluble exogenous antigens (endosomes) │\n ├────────────┼─────────────┼──────────────────────────────────────────────────────────────────────────┤\n │R-HSA-983169│R-HSA-1236977│Endosomal/Vacuolar pathway │\n ├────────────┼─────────────┼──────────────────────────────────────────────────────────────────────────┤\n │R-HSA-983169│R-HSA-1236974│ER-Phagosome pathway │\n ├────────────┼─────────────┼──────────────────────────────────────────────────────────────────────────┤\n │R-HSA-983169│R-HSA-1236973│Cross-presentation of particulate exogenous antigens (phagosomes) │\n ├────────────┼─────────────┼──────────────────────────────────────────────────────────────────────────┤\n │R-HSA-983169│R-HSA-983168 │Antigen processing: Ubiquitination & Proteasome degradation │\n └────────────┴─────────────┴──────────────────────────────────────────────────────────────────────────┘\n \n\nFollowing the same approach, retrieving the superpathway is as easy as changing the direction of the edge in the query:\n \n \n //Direct superpathway for the pathway with stable identifier R-HSA-198933\n MATCH (p:Pathway{stId:\"R-HSA-983169\"})<-[:hasEvent]-(sp:Pathway)\n RETURN p.stId AS Pathway, sp.stId AS SuperPathway, sp.displayName as DisplayName\n \n\nIt will then retrieve the only one pathway containing R-HSA-198933:\n \n \n ╒════════════╤═════════════╤══════════════════════╕\n │Pathway │SuperPathway │DisplayName │\n ╞════════════╪═════════════╪══════════════════════╡\n │R-HSA-983169│R-HSA-1280218│Adaptive Immune System│\n └────────────┴─────────────┴──────────────────────┘\n \n\nAs subpathways, the superpathways might have other superpathways, so following the \"**hasEvent** \" slot recursively will show ALL the superpathways up to the root:\n \n \n //ALL superpathways for the pathway with stable identifier R-HSA-198933\n MATCH (p:Pathway{stId:\"R-HSA-983169\"})<-[:hasEvent*]-(sp:Pathway)\n RETURN p.stId AS Pathway, sp.stId AS SuperPathway, sp.displayName as DisplayName\n \n\nThere are 2 superpathways for R-HSA-198933 in v63:\n \n \n ╒════════════╤═════════════╤══════════════════════╕\n │Pathway │SuperPathway │DisplayName │\n ╞════════════╪═════════════╪══════════════════════╡\n │R-HSA-983169│R-HSA-1280218│Adaptive Immune System│\n ├────────────┼─────────────┼──────────────────────┤\n │R-HSA-983169│R-HSA-168256 │Immune System │\n └────────────┴─────────────┴──────────────────────┘\n \n\n### [Retrieving the reactions for a given pathway](<#retrieving-reactions>)\n\nContinuing with the pathway \"**Class I MHC mediated antigen processing & presentation**\" with identifier **R-HSA-983169** , to get ALL the reactions contained either directly in it or as part of any of its subpathways, the query has to recursively traverse the \"**hasEvent** \" slot:\n \n \n //All reactions for the pathway with stable identifier R-HSA-198933\n MATCH (p:Pathway{stId:\"R-HSA-983169\"})-[:hasEvent*]->(rle:ReactionLikeEvent)\n RETURN p.stId AS Pathway, rle.stId AS Reaction, rle.displayName AS ReactionName\n \n\nAs shown in the table below, this pathway contains 51 reactions for v63:\n \n \n ╒══════════════╤═══════════════╤═══════════════════════════════════════════════════════════════════════════════════╕\n │ Pathway │ Reaction │ ReactionName │\n ╞══════════════╪═══════════════╪═══════════════════════════════════════════════════════════════════════════════════╡\n │ R-HSA-983169 │ R-HSA-983148 │ Interaction of Erp57 with MHC class I HC │\n ├──────────────┼───────────────┼───────────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-983169 │ R-HSA-8951499 │ Loading of antigenic peptides on to class I MHC │\n ├──────────────┼───────────────┼───────────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-983169 │ R-HSA-983146 │ Interaction of beta-2-microglobulin (B2M) chain with class I HC │\n ├──────────────┼───────────────┼───────────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-983169 │ R-HSA-983145 │ Binding of newly synthesized MHC class I heavy chain (HC) with calnexin │\n ├──────────────┼───────────────┼───────────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-983169 │ R-HSA-983144 │ Transport of Antigen peptide in to ER │\n ├──────────────┼───────────────┼───────────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-983169 │ R-HSA-203979 │ Coat Assembly │\n ├──────────────┼───────────────┼───────────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-983169 │ R-HSA-983142 │ Formation of peptide loading complex (PLC) │\n ├──────────────┼───────────────┼───────────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-983169 │ R-HSA-983427 │ Expression of peptide bound class I MHC on cell surface │\n ├──────────────┼───────────────┼───────────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-983169 │ R-HSA-983138 │ Transport of MHC heterotrimer to ER exit site │\n ├──────────────┼───────────────┼───────────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-983169 │ R-HSA-983426 │ Capturing cargo and formation of prebudding complex │\n ├──────────────┼───────────────┼───────────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-983169 │ R-HSA-983425 │ Recruitment of Sec31p:Sec13p to prebudding complex and formation of COPII vesicle │\n ├──────────────┼───────────────┼───────────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-983169 │ R-HSA-983424 │ Budding of COPII coated vesicle │\n ├──────────────┼───────────────┼───────────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-983169 │ R-HSA-983422 │ Disassembly of COPII coated vesicle │\n ├──────────────┼───────────────┼───────────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-983169 │ R-HSA-983421 │ Journey of cargo through Golgi complex │\n ├──────────────┼───────────────┼───────────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-983169 │ R-HSA-983161 │ Dissociation of the Antigenic peptide:MHC:B2M peptide loading complex │\n ├──────────────┼───────────────┼───────────────────────────────────────────────────────────────────────────────────┤\n │... │... │... │\n └──────────────┴───────────────┴───────────────────────────────────────────────────────────────────────────────────┘\n \n\n### [Retrieving the participants of a Reaction](<#retrieving-participants>)\n\nIn this case let's use the reaction \"**IKKB phosphorylates SNAP23** \" with identifier **R-HSA-8863895**. Reactions have inputs, outputs, catalysts and regulations, so to know the participants of a reaction, all these slots have to be taken into account. Please note that the physical entity acting as catalyst is stored in the \"physicalEntity\" slot of the class \"CatalystActivity\" and the one belonging to the regulation is stored in the \"regulator\" slot of the \"Regulation\" class. So the query is as follows:\n \n \n //First level paticipating molecules for reaction R-HSA-8863895\n MATCH (r:ReactionLikeEvent{stId:\"R-HSA-8863895\"})-[:input|output|catalystActivity|physicalEntity|regulatedBy|regulator*]->(pe:PhysicalEntity)\n RETURN DISTINCT r.stId AS Reaction, pe.stId as Participant, pe.displayName AS DisplayName\n \n\nThe result of it is 6 physical entities, where two of them are complexes:\n \n \n ╒═════════════╤═════════════╤═══════════════════════════════════════════════════╕\n │Reaction │Participant │DisplayName │\n ╞═════════════╪═════════════╪═══════════════════════════════════════════════════╡\n │R-HSA-8863895│R-HSA-168113 │CHUK:IKBKB:IKBKG [cytosol] │\n ├─────────────┼─────────────┼───────────────────────────────────────────────────┤\n │R-HSA-8863895│R-ALL-113592 │ATP [cytosol] │\n ├─────────────┼─────────────┼───────────────────────────────────────────────────┤\n │R-HSA-8863895│R-HSA-8863966│SNAP23 [phagocytic vesicle membrane] │\n ├─────────────┼─────────────┼───────────────────────────────────────────────────┤\n │R-HSA-8863895│R-HSA-8863923│p-S95-SNAP23 [phagocytic vesicle membrane] │\n ├─────────────┼─────────────┼───────────────────────────────────────────────────┤\n │R-HSA-8863895│R-ALL-29370 │ADP [cytosol] │\n ├─────────────┼─────────────┼───────────────────────────────────────────────────┤\n │R-HSA-8863895│R-HSA-937033 │oligo-MyD88:Mal:BTK:activated TLR [plasma membrane]│\n └─────────────┴─────────────┴───────────────────────────────────────────────────┘\n \n\nAs shown above, to break down complexes and sets into their participants, the \"hasComponent\", \"hasMember\" and \"hasCandidate\" slots have to be taken into account. Adding them into the previous query will retrieve ALL the participants of the reaction:\n \n \n //ALL paticipating molecules for reaction R-HSA-8863895\n MATCH (r:ReactionLikeEvent{stId:\"R-HSA-8863895\"})-[:input|output|catalystActivity|physicalEntity|regulatedBy|regulator|hasComponent|hasMember|hasCandidate*]->(pe:PhysicalEntity)\n RETURN DISTINCT r.stId AS Reaction, pe.stId as Participant, pe.displayName AS DisplayName\n \n\nWith the modifications, the result of the query goes up to 43 physical entities in v63:\n \n \n ╒═══════════════╤═══════════════╤══════════════════════════════════════════════════════════════════════════════╕\n │ Reaction │ Participant │ DisplayName │\n ╞═══════════════╪═══════════════╪══════════════════════════════════════════════════════════════════════════════╡\n │ R-HSA-8863895 │ R-HSA-168113 │ CHUK:IKBKB:IKBKG [cytosol] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-HSA-168114 │ IKBKB [cytosol] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-HSA-168104 │ CHUK [cytosol] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-HSA-168108 │ IKBKG [cytosol] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-ALL-113592 │ ATP [cytosol] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-HSA-8863966 │ SNAP23 [phagocytic vesicle membrane] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-HSA-8863923 │ p-S95-SNAP23 [phagocytic vesicle membrane] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-ALL-29370 │ ADP [cytosol] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-HSA-937033 │ oligo-MyD88:Mal:BTK:activated TLR [plasma membrane] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-HSA-937013 │ MyD88 oligomer [plasma membrane] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-HSA-937017 │ MYD88 [plasma membrane] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-HSA-2201325 │ activated TLR2/4:p-4Y-MAL:PI(4,5)P2:BTK [plasma membrane] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-HSA-5365824 │ p-4Y-TIRAP:PI(4,5)P2 [plasma membrane] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-ALL-179856 │ PI(4,5)P2 [plasma membrane] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-HSA-2201321 │ p-4Y-TIRAP [plasma membrane] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-HSA-181230 │ Activated TLR1:2 or TLR 2:6 heterodimers or TLR4 homodimer [plasma membrane] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-HSA-181410 │ TLR6:TLR2:ligand:CD14:CD36 [plasma membrane] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-HSA-2559461 │ TLR6/2 ligand:CD14:CD36 [plasma membrane] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │ R-HSA-8863895 │ R-HSA-166033 │ GPIN-CD14(20-345) [plasma membrane] │\n ├───────────────┼───────────────┼──────────────────────────────────────────────────────────────────────────────┤\n │... │... │... │\n └───────────────┴───────────────┴──────────────────────────────────────────────────────────────────────────────┘\n \n\n### [Joining the pieces: Participating molecules for a pathway](<#joining-pieces>)\n\nThe aim of this tutorial was to describe a number of different queries to the Reactome Graph Database that joined together would retrieve the resource and identifier of each participating molecule for a given Pathway. This final example will demonstrate how to concatenate all the individual query described previously into a single query.\n\nStarting from the pathway \"**Class I MHC mediated antigen processing & presentation**\" with identifier **R-HSA-983169** , first we need to find out all the reactions contained in it. For each reaction we want to find their participants and for the cases of complexes and sets, we want to break them down into single physical entities. Finally, for each physical entity we are interested in their identifier and resource:\n \n \n //ALL paticipating molecules for pathway R-HSA-983169\n MATCH (p:Pathway{stId:\"R-HSA-983169\"})-[:hasEvent*]->(rle:ReactionLikeEvent),\n (rle)-[:input|output|catalystActivity|physicalEntity|regulatedBy|regulator|hasComponent|hasMember|hasCandidate*]->(pe:PhysicalEntity),\n (pe)-[:referenceEntity]->(re:ReferenceEntity)-[:referenceDatabase]->(rd:ReferenceDatabase)\n RETURN DISTINCT re.identifier AS Identifier, rd.displayName AS Database\n \n\nFor version 63, the pathway has 463 participating molecules as shown below:\n \n \n ╒════════════╤══════════╕\n │ Identifier │ Database │\n ╞════════════╪══════════╡\n │ P11021 │ UniProt │\n ├────────────┼──────────┤\n │ P27824 │ UniProt │\n ├────────────┼──────────┤\n │ P30501 │ UniProt │\n ├────────────┼──────────┤\n │ P30486 │ UniProt │\n ├────────────┼──────────┤\n │ P01893 │ UniProt │\n ├────────────┼──────────┤\n │ P30447 │ UniProt │\n ├────────────┼──────────┤\n │ P30685 │ UniProt │\n ├────────────┼──────────┤\n │ P18465 │ UniProt │\n ├────────────┼──────────┤\n │ P18464 │ UniProt │\n ├────────────┼──────────┤\n │ P30460 │ UniProt │\n ├────────────┼──────────┤\n │ P30490 │ UniProt │\n ├────────────┼──────────┤\n │ P30495 │ UniProt │\n ├────────────┼──────────┤\n │ P30493 │ UniProt │\n ├────────────┼──────────┤\n │ P13747 │ UniProt │\n ├────────────┼──────────┤\n │ P30488 │ UniProt │\n ├────────────┼──────────┤\n │ P30511 │ UniProt │\n ├────────────┼──────────┤\n │ P30483 │ UniProt │\n ├────────────┼──────────┤\n │ P30462 │ UniProt │\n ├────────────┼──────────┤\n │ P04439 │ UniProt │\n ├────────────┼──────────┤\n │ ... │ ... │\n └────────────┴──────────┘\n \n\nThis concludes the introductory tutorial on how to build a Cypher query to retrieve all the participating molecules for a given pathway. For questions or suggestions, please get in touch our [help@reactome.org]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/dev/graph-database/neo4j-desktop.json b/projects/website-angular/content-dist/documentation/dev/graph-database/neo4j-desktop.json new file mode 100644 index 00000000..2d3d5654 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/dev/graph-database/neo4j-desktop.json @@ -0,0 +1 @@ +{"title":"Neo4j Desktop","category":"documentation","body":"\n### Introduction\n\nThis article is going to describe step by step how to import our great Graph Database dump file into Neo4j Desktop\n\n### Download\n\n * [Neo4j Desktop]()\n * [Graph Database Dump file]()\n\n### Neo4j Desktop\n\nInstall Neo4j Desktop following the [official documentation website]().\n\n### Importing Graph Database\n\n 1. Create new Project \n\n![neo4j desktop guide 1](/uploads/documentation/dev/graph-database/neo4j-desktop/neo4j_desktop_guide_1.png)\n\n 2. Add reactome.graphdb.dump \n\n![neo4j desktop guide 3](/uploads/documentation/dev/graph-database/neo4j-desktop/neo4j_desktop_guide_3.png)\n\n 3. Click on the Open button next to the file you have added and select \"Create new DBMS from Dump\". \n\n![neo4j desktop guide 7](/uploads/documentation/dev/graph-database/neo4j-desktop/neo4j_desktop_guide_7.png)\n\n 4. Choose a name, password and version (preferably >4.x.x) \n\n![neo4j desktop guide 8](/uploads/documentation/dev/graph-database/neo4j-desktop/neo4j_desktop_guide_8.png)\n\n 5. Not mandatory, open Neo4j Settings, edit \"dbms.allow_upgrade=true\n 1. This step is only needed if you are using Reactome Graph Database which is not compatible with v4.X.X. \n\n![neo4j desktop guide 9](/uploads/documentation/dev/graph-database/neo4j-desktop/neo4j_desktop_guide_9.png)\n\n![neo4j desktop guide 10](/uploads/documentation/dev/graph-database/neo4j-desktop/neo4j_desktop_guide_10.png)\n\n 6. Now Click on `Start` and you are ready to explore the Neo4j Browser or Neo4j Bloom. \n\n![neo4j desktop guide 17](/uploads/documentation/dev/graph-database/neo4j-desktop/neo4j_desktop_guide_17.png)\n\n### Adding a different version of the Reactome database\n\n* Only Neo4j >4.x supports multiple DMBS, make sure you installed Neo4j 4.x.x\n\n 1. Add reactome.previous.graphdb.dump \n\n![neo4j desktop guide 3](/uploads/documentation/dev/graph-database/neo4j-desktop/neo4j_desktop_guide_3.png)\n\n 2. Click on the Open button next to the file you have added and select \"Import dump into existing DBMS\".\n 3. Select Reactome and create database \"reactome\"\n\n![neo4j desktop guide 16](/uploads/documentation/dev/graph-database/neo4j-desktop/neo4j_desktop_guide_16.png)\n\n 1. Open Neo4j Settings \n\n![neo4j desktop guide 9](/uploads/documentation/dev/graph-database/neo4j-desktop/neo4j_desktop_guide_9.png)\n\n 2. Not mandatory, open Neo4j Settings, edit \"dbms.allow_upgrade=true \n\n 1. This step is only needed if you are using Reactome Graph Database which is not compatible with v4.X.X.\n\n![neo4j desktop guide 10](/uploads/documentation/dev/graph-database/neo4j-desktop/neo4j_desktop_guide_10.png)\n\n 3. If you want this database to be your default, then use its name in the settings file. \n\n![neo4j desktop guide 15](/uploads/documentation/dev/graph-database/neo4j-desktop/neo4j_desktop_guide_15.png)\n\n 4. Now Click on `Start` and you are ready to explore the Neo4j Browser or Neo4j Bloom.\n 1. \n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/dev/pathways-overview.json b/projects/website-angular/content-dist/documentation/dev/pathways-overview.json new file mode 100644 index 00000000..fe488298 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/dev/pathways-overview.json @@ -0,0 +1 @@ +{"title":"Pathways Overview","category":"documentation","body":"\n## Pathways Overview\n\nThe Pathways Overview is a genome-wide, hierarchical visualization of Reactome pathways rendered as a space-filling honeycomb. Each cell represents a pathway, and the area of the cell reflects the number of entities (proteins, small molecules, genes, etc) belonging to that pathway. Sibling pathways in the Reactome hierarchy share borders, and parent pathways enclose their children, so the entire hierarchy is visible in a single view.\n\nThis replaces the legacy Fireworks visualization. The new honeycomb layout shows the same pathway hierarchy and analysis-overlay information, but uses Voronoi-treemap packing to make better use of screen real estate and to expose more of the hierarchy at a glance.\n\n[ __ ](<#MoreInfo>)\n\n## [ More Info ](<#MoreInfo>)\n\n[ __ ](<#GetStarted>)\n\n## [ Get Started ](<#GetStarted>)\n\n[ __ ](<#API>)\n\n## [ API ](<#API>)\n\n[ __ ](<#Resources>)\n\n## [ Resources ](<#Resources>)\n\n### [__More Info](<#MoreInfo>)\n\nThe honeycomb overview is built on top of the [FoamTree]() Voronoi-treemap library. Top-level pathways (TLPs) are arranged using a semantically meaningful initial layout — related pathways (for example *Neuronal System* and *Muscle contraction*) sit close together, and the largest TLPs are given more visual real-estate. Each TLP is colored according to its broad family so that families remain visually grouped after relaxation.\n\nThe overview retrieves pathway hierarchy data directly from the Reactome server. Third-party resources can embed it in any browser that supports CORS, or by adding a server-side proxy to avoid same-origin restrictions. The overview also supports overlaying analysis results — for an introduction to Reactome's analysis tooling, see the [Analysis Service developers' guide]() and the [API](<#API>) section below.\n\n### [__Get Started](<#GetStarted>)\n\nThe honeycomb overview is implemented as an Angular component (``) inside the Reactome Pathway Browser. There are two supported ways to use it from a third-party page:\n\n1. **Embed the Pathway Browser**, which exposes the overview as part of its standard UI.\n2. **Build directly against [@carrotsearch/foamtree]()** and populate it with pathway hierarchy data fetched from the Reactome [Content Service](). The `ReacfoamComponent` source in this repository is the reference implementation and is the best starting point for a custom integration.\n\nThe previous Fireworks JS and Fireworks GWT widgets have been retired. New integrations should target the Angular component or the underlying FoamTree library directly.\n\n### [__API](<#API>)\n\nThe `ReacfoamComponent` exposes the overview's state through Angular signals and accepts standard FoamTree configuration options. Typical integration points are:\n\n* **Selection / highlight / flag** — bound to Angular signals so host applications can react to user interaction without subscribing to legacy event callbacks.\n* **Analysis overlay** — set an analysis token (and optional resource) to repaint cells using analysis results; clearing the token removes the overlay.\n* **Layout & styling** — passed through to FoamTree as `InitialOptions`; see the FoamTree [options reference]() for the full list.\n\nFor the complete surface area, refer to the `ReacfoamComponent` source under `projects/pathway-browser/src/app/reacfoam/` and the FoamTree TypeScript definitions in `src/types/@carrotsearch/foamtree/`.\n\n### [__Resources](<#Resources>)\n\n * [__Reactome Pathway Browser code (Angular)]()\n * [__FoamTree (Carrot Search)]()\n * [__Reactome Content Service]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/analysis/api-and-r/215-pathway-analysis-api.json b/projects/website-angular/content-dist/documentation/faq/analysis/api-and-r/215-pathway-analysis-api.json new file mode 100644 index 00000000..8e60720b --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/analysis/api-and-r/215-pathway-analysis-api.json @@ -0,0 +1 @@ +{"title":"Is there an API for Reactome? Can I do pathway analysis through the API?","category":"documentation","body":"\n## Is there an API for Reactome? Can I do pathway analysis through the API? \n\nPathway analysis can be performed through our API, documented [here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/analysis/api-and-r/216-gene-symbol.json b/projects/website-angular/content-dist/documentation/faq/analysis/api-and-r/216-gene-symbol.json new file mode 100644 index 00000000..622bba0a --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/analysis/api-and-r/216-gene-symbol.json @@ -0,0 +1 @@ +{"title":"Should I use the gene symbol or the NCBI identifiers to make requests to the identifiers endpoint of the Analysis Service?","category":"documentation","body":"\n## Should I use the gene symbol or the NCBI identifiers to make requests to the identifiers endpoint of the Analysis Service? \n\nWe suggest using the HGVS gene name or the Uniprot identifier in your analysis. Different results may be obtained using other identifiers (like NCBIs) if those identifiers also map to other resources, bringing in more pathways.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/analysis/api-and-r/217-pathway-analysis-r.json b/projects/website-angular/content-dist/documentation/faq/analysis/api-and-r/217-pathway-analysis-r.json new file mode 100644 index 00000000..22e6521d --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/analysis/api-and-r/217-pathway-analysis-r.json @@ -0,0 +1 @@ +{"title":"Can I do pathway analysis using R?","category":"documentation","body":"\n## Can I do pathway analysis using R? \n\nAlthough we don't provide a specific R package suitable for visualizing expression values on Reactome pathways, we do provide a full BioConductor package for quantitative pathway analysis based on expression data. Please see [here]() for documentation, and [here]() for the relevant publication.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/analysis/fiviz/218-non-human-fiviz.json b/projects/website-angular/content-dist/documentation/faq/analysis/fiviz/218-non-human-fiviz.json new file mode 100644 index 00000000..a9c14210 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/analysis/fiviz/218-non-human-fiviz.json @@ -0,0 +1 @@ +{"title":"I need to do a network analysis for (species) from RNA seq data. Can you please guide me on how to generate an FI network?","category":"documentation","body":"\n## I need to do a network analysis for (species) from RNA seq data. Can you please guide me on how to generate an FI network? \n\nUnfortunately our ReactomeFIViz tool currently supports networks for human and mouse only. For bacterial species, you can try [StringDB](), which provides software tools to build networks for your genes.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/analysis/fiviz/219-fiviz-differential-expression.json b/projects/website-angular/content-dist/documentation/faq/analysis/fiviz/219-fiviz-differential-expression.json new file mode 100644 index 00000000..2736f548 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/analysis/fiviz/219-fiviz-differential-expression.json @@ -0,0 +1 @@ +{"title":"Can I submit a list of differentially expressed genes, as log2 fold change values, coming from two different conditions to have a quantitative representation of pathways involvement?","category":"documentation","body":"\n## Can I submit a list of differentially expressed genes, as log2 fold change values, coming from two different conditions to have a quantitative representation of pathways involvement? \n\nIf you want to use your log fold change data directly, you may use the Reactome Cytoscape app, described [here]() (search for “Perform GSEA analysis”). This feature will sort your genes based on log fold change and then calculate a score for each pathway using GSEA’s ranked gene list input.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/analysis/general/197-convert-to-human.json b/projects/website-angular/content-dist/documentation/faq/analysis/general/197-convert-to-human.json new file mode 100644 index 00000000..d1bfff58 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/analysis/general/197-convert-to-human.json @@ -0,0 +1 @@ +{"title":"I used the “Analyse gene expression” tool with my mouse proteomics data set. I notice that the database is based on human pathways – does the software automatically convert my mouse gene names to the human orthologs? Or can’t I use the software for mouse?","category":"documentation","body":"\n## I used the “Analyse gene expression” tool with my mouse proteomics data set. I notice that the database is based on human pathways – does the software automatically convert my mouse gene names to the human orthologs? Or can’t I use the software for mouse? \n\nReactome’s manual curation covers human proteins, but we do support analysis of non-human data sets.\n\nThere are two methods to analyze data in Reactome. \n\nThe “Analyse gene list” tool, accessed after “Analysis” is selected from the home page, allows users to upload human or non-human data sets for overrepresentation analysis. After uploading the data with this tool, the user is given the option of ‘projecting to human’ (which is selected by default). If this toggle is selected, non-human identifiers in the data set are converted to their human equivalents using orthology information from Panther. \n\nData sets can also be analyzed with the Reactome Gene Set Analysis (Reactome GSA) tool, accessed through the “Analyze Gene Expression” button after “Analysis” is selected from the home page. Reactome GSA performs quantitative pathway analyses, increasing the statistical power of the differential gene expression analysis. The analysis software automatically converts the mouse proteins from your proteomics set to their human orthologs.__\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/analysis/general/207-statistical-analysis.json b/projects/website-angular/content-dist/documentation/faq/analysis/general/207-statistical-analysis.json new file mode 100644 index 00000000..957fc47c --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/analysis/general/207-statistical-analysis.json @@ -0,0 +1 @@ +{"title":"The analysis report includes lists of significantly up- and down-regulated single genes. Which statistical analysis does the software use for these values?","category":"documentation","body":"\n## The analysis report includes lists of significantly up- and down-regulated single genes. Which statistical analysis does the software use for these values? \n\nAs described in our [on-line documentation](), the analysis returns:\n\n * Entities p-value: the result of the statistical binomial test for over-representation for molecules of the results type selected.\n * Entities FDR: False discovery rate. Corrected over-representation probability.\n\nNote that if performing an analysis with non-human data, the statistics may be skewed due to changes in the sizes of gene families between human and the species associated with the submitted data.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/analysis/general/208-visualizing-gene-expression.json b/projects/website-angular/content-dist/documentation/faq/analysis/general/208-visualizing-gene-expression.json new file mode 100644 index 00000000..cddc29cc --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/analysis/general/208-visualizing-gene-expression.json @@ -0,0 +1 @@ +{"title":"Can I visualize gene expression data (color nodes) according to gene expression level with Reactome?","category":"documentation","body":"\n## Can I visualize gene expression data (color nodes) according to gene expression level with Reactome? \n\nFrom the [home page](), click the “Analysis Tools” button, and then select “Analyse gene list” (preselected on the analysis page).\n\nSubmit your list of differentially expressed genes, or try one of the sample data sets.\n\nThe leftmost column of the uploaded data set must have gene names or other gene/protein identifiers. The remainder of the data set consists of as many columns with numerical values as necessary. Columns may have headers, or not.\n\nClick “Continue” and then “Analyse”, maintaining the options in the second window (‘Project to human’, ‘Include interactors’) at their default values.\n\nReactome will perform a standard gene set enrichment analysis, based only on the gene list. In the results overview, pathways will be greyed out if they are not significantly enriched. If a pathway is enriched, its colour will be determined as follows:\n\nThe top end of the colour map is the highest value of all submitted numerical values. The bottom end of the colour map is the lowest of all submitted numerical values, across all columns.\n\nThe colour of a pathway is based on the average expression value for all genes which are in the submitted dataset and in the pathway. In the initial view, this average is based on the first column. If the data set has more than one column, users can cycle through the subsequent columns with the “Play” button at the bottom of the pathway window.\n\nIn the pathways overview (either the \"Fireworks\" or the \"Reacfoam\" view, selectable in the top left area of the main window), the user can double click (long click in Reacfoam to select a pathway and zoom in to the detailed molecular map view. In this view, proteins are coloured according to the user-provided values, and again the user can cycle through multiple columns with the \"Play\" controls.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/analysis/general/209-expanded-event-hierarchy.json b/projects/website-angular/content-dist/documentation/faq/analysis/general/209-expanded-event-hierarchy.json new file mode 100644 index 00000000..ae93c9fd --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/analysis/general/209-expanded-event-hierarchy.json @@ -0,0 +1 @@ +{"title":"After submitting a list of genes for Reactome Analysis, how do I download the fully expanded 'Event Hierarchy' list on the left side of the screen?","category":"documentation","body":"\n## After submitting a list of genes for Reactome Analysis, how do I download the fully expanded 'Event Hierarchy' list on the left side of the screen? \n\nWe provide an [endpoint]() to retrieve the full event hierarchy for a given species. For example, you can get human data with a token like the one below. Please replace “your_analysis_token” in the URL below with your own token.\n\n__\n\n[__]()_https://reactome.org/ContentService/data/eventsHierarchy/9606?pathwaysOnly=false &token=__your_analysis_token_ _& resource=TOTAL&interactors=false_\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/analysis/general/210-query-genes-per-pathway.json b/projects/website-angular/content-dist/documentation/faq/analysis/general/210-query-genes-per-pathway.json new file mode 100644 index 00000000..da34ecc4 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/analysis/general/210-query-genes-per-pathway.json @@ -0,0 +1 @@ +{"title":"Is it possible to know how many of my uploaded genes are found within each specific hierarchical pathway category identified in the Reacfoam view? For instance, how many of my genes belong to pathways that would be included in the \\\"Immune\\\" category, etc.","category":"documentation","body":"\n## Is it possible to know how many of my uploaded genes are found within each specific hierarchical pathway category identified in the Reacfoam view? For instance, how many of my genes belong to pathways that would be included in the \"Immune\" category, etc. \n\nAt the moment we don’t have a way to filter the results by top level pathway, or diagram-level pathway or other criteria. This feature is on our radar to implement. \n\nIn the meantime, you can get a sense of this as follows:\n\n * Click on the ‘Analysis’ tab in the Details panel (below the pathway diagram window- the Analysis tab should be open by default after performing analysis). \n * To the left of the Details panel, click on the ‘Download’ button.\n * Click on the “Pathway analysis results”. This gives the analysis results for all pathways, and for higher-order pathways the columns \"Entities found\" and \"Entities total\" contain the aggregated results from the sub-pathways. \n * Import the results into a spreadsheet. Although we don't have a column \"Pathway level\" or similar, which would allow you to filter for only top level pathways, if you sort the pathways by decreasing \"Entities found\", you get a good view of the top level, and thus typically (but not always) largest pathways.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/analysis/general/211-permanent-analysis-results.json b/projects/website-angular/content-dist/documentation/faq/analysis/general/211-permanent-analysis-results.json new file mode 100644 index 00000000..3c90d625 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/analysis/general/211-permanent-analysis-results.json @@ -0,0 +1 @@ +{"title":"Is there a permanent link available for my analysis results?","category":"documentation","body":"\n## Is there a permanent link available for my analysis results? \n\nUnfortunately, there is no permanent link for analysis results. Analysis data is available through the token for 7 days after your last usage. Analysis results are deleted when Reactome releases new data, regardless of when you performed your analysis or last accessed your data.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/analysis/reactome-gsa/212-gsa-training-material.json b/projects/website-angular/content-dist/documentation/faq/analysis/reactome-gsa/212-gsa-training-material.json new file mode 100644 index 00000000..7b3e5f49 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/analysis/reactome-gsa/212-gsa-training-material.json @@ -0,0 +1 @@ +{"title":"I have a proteomics data set that I would like to use for quantitative pathway analysis. Is there training material available to help me?","category":"documentation","body":"\n## I have a proteomics data set that I would like to use for quantitative pathway analysis. Is there training material available to help me? \n\nTo process quantitative proteomics data, the best, but also most complex analysis option is ReactomeGSA. A description of the tool, its use, and documentation are all part of [this publication]()\n\nThere is also a comprehensive training video [here]().\n\nIf after going through these resources you have additional questions, please reach out to the help desk at [help@reactome.org]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/analysis/reactome-gsa/213-differentially-expressed-genes.json b/projects/website-angular/content-dist/documentation/faq/analysis/reactome-gsa/213-differentially-expressed-genes.json new file mode 100644 index 00000000..5dae4a62 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/analysis/reactome-gsa/213-differentially-expressed-genes.json @@ -0,0 +1 @@ +{"title":"Can I submit a list of differentially expressed genes, as log2 fold change values, coming from two different conditions to have a quantitative representation of pathways involvement? If yes, how can I prepare and submit my file?","category":"documentation","body":"\n## Can I submit a list of differentially expressed genes, as log2 fold change values, coming from two different conditions to have a quantitative representation of pathways involvement? If yes, how can I prepare and submit my file? \n\nFor this, please use the Reactome Gene Set Analysis tool, accessed through the “Analyze Gene Expression” button after “Analysis” is selected from the home page. The detailed analysis approaches underlying this feature are described [here]() _._\n\nThe Reactome GSA tool is an enhancement of [GSEA]() and can take your original expression data directly, perform differential expression analysis and then highlight pathways according scores.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/analysis/reactome-gsa/214-truncated-gsa-analysis-output.json b/projects/website-angular/content-dist/documentation/faq/analysis/reactome-gsa/214-truncated-gsa-analysis-output.json new file mode 100644 index 00000000..3818215d --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/analysis/reactome-gsa/214-truncated-gsa-analysis-output.json @@ -0,0 +1 @@ +{"title":"I submitted a list for expression analysis using the PADOG or CAMERA tools and the output Excel file with the statistics is missing a lot of significant genes. What is the explanation for this?","category":"documentation","body":"\n## I submitted a list for expression analysis using the PADOG or CAMERA tools and the output Excel file with the statistics is missing a lot of significant genes. What is the explanation for this? \n\nAlthough there is no limit on the number of genes that can be returned, the analysis is restricted to those genes that are present in Reactome. Since Reactome is a manually curated resource, it does not cover all human genes.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/general-website/195-no-results.json b/projects/website-angular/content-dist/documentation/faq/general-website/195-no-results.json new file mode 100644 index 00000000..f8212dc9 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/general-website/195-no-results.json @@ -0,0 +1 @@ +{"title":"I searched for (...) and didn’t get any results.","category":"documentation","body":"\n## I searched for (...) and didn’t get any results. \n\nYour search may be correct as Reactome does not yet have complete coverage of human biology. But before concluding that there is no content relevant to your query, please check that your search is formatted appropriately:\n\nThe search bar on Reactome’s homepage takes a variety of inputs including but not limited to: HGNC gene names, protein names, identifiers from Uniprot, ChEBI or other resources, and simple word or phrase searches (“glucose”; “signaling by ERBB2”; “Li Fraumeni syndrome”). \n\nMultiple search terms separated by a space may be entered in a single query; the results will be the total hits generated by each of the terms searched independently. Use of other punctuation (slashes, commas) may not yield full results and are better avoided.\n\nTo search for an exact match, enclose your search term(s) in quotation marks.\n\n[Boolean operators]() (AND, OR, NOT) may also be used in formatting a search.\n\nWild cards may be used to expand your search:\n\n * ? represents one character e.g. A1?? Matches both A1CF and A1BG\n * * represents n characters e.g. *A1* matches A1CF, A1BG and A1A4E9; also VWA1, ATP1A1\n\nWhen entering a database identifier, more accurate results will be generated if the search term is formatted using the syntax database:id (for instance, uniprot:P60484). For complex database names like Guide to Pharmacology, replace spaces with dashes (Guide-to-Pharmacology:7382)\n\nHits of a successful search indicate that the search term is included somewhere in the identified record. This may be identification of a physical entity or event that directly involves the search term, but the search term may also be used in an event summary or as part of an associated literature reference, for example.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/general-website/199-non-human-species.json b/projects/website-angular/content-dist/documentation/faq/general-website/199-non-human-species.json new file mode 100644 index 00000000..000437eb --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/general-website/199-non-human-species.json @@ -0,0 +1 @@ +{"title":"Does Reactome contain pathway information from non-human species?","category":"documentation","body":"\n## Does Reactome contain pathway information from non-human species? \n\nReactome is centered on the molecular functions of human proteins. When possible, we annotate these functions with published evidence from work with human systems. When such evidence isn’t available, but the function is known to be well conserved across species and experimental evidence exists for a non-human species, we annotate the reaction for the protein in that species and manually infer the reaction involving the homologous human protein.\n\nWe also computationally infer reactions for a small group of model organisms from our manually annotated human data. This group of organisms is centered on organisms of interest to the Alliance for Genome Resources. The process for these computationally inferred events is [here]().\n\nIn a collaborative project, the Reactome data model has been adopted by [Plant Reactome]() to capture pathway information for diverse species of plants, including crop plants.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/general-website/201-identifiers.json b/projects/website-angular/content-dist/documentation/faq/general-website/201-identifiers.json new file mode 100644 index 00000000..8aac7100 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/general-website/201-identifiers.json @@ -0,0 +1 @@ +{"title":"Explain the identifiers associated with entities and events.","category":"documentation","body":"\n## Explain the identifiers associated with entities and events. \n\nEach Reactome instance of any type gets a unique internal database identifier (DB_ID) when it is created that persists unchanged for the life of that instance and is not reused if that instance is deleted.\n\nThe stable IDs visible on our website and in our downloads are generated only for instances that are physical entities (chemicals, genome-encoded entities, complexes and sets of these) and events (reactions and pathways). Each stable ID takes the following form: R (Reactome) - three-letter code for the species of the instance- DB_ID.version (to indicate its version if the instance has been revised since its creation). So human entities and events have stable ids with R-HSA (for Homo sapiens)-########.##, stable ids for Caenorhabditis elegans are R-CEL-########.##, etc. For simple chemicals, ALL is used as the species code (R-ALL-########.##). Like DB_IDs, stable identifiers persist for the lifetime of the instance, unchanged except for versioning, and are not reused if the instance is deleted.\n\nFor manually annotated events, the species code is that of the species in which the event occurs. Barring curation errors, that species code always corresponds to the species listed in the details panel of the web page for the entity or event.\n\nFor computationally inferred events, the species code is that of the model organism species and the DB identifier is the one assigned to the human event that is the basis of the inference. This is to reflect the fact that these inferences are intrinsically UNstable (because as the model organism genome build changes, the inferences based on sequence similarity to that model organism will also change).\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/general-website/202-earlier-versions.json b/projects/website-angular/content-dist/documentation/faq/general-website/202-earlier-versions.json new file mode 100644 index 00000000..474a05cd --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/general-website/202-earlier-versions.json @@ -0,0 +1 @@ +{"title":"Where can I find earlier versions of the Reactome database?","category":"documentation","body":"\n## Where can I find earlier versions of the Reactome database? \n\nWe are working at making earlier versions of the Reactome database publicly available. In the meantime, MySQL copies of earlier database releases are available through the general URL structure:\n\nhttps://download.reactome.org/XX/databases/gk_current.sql.gz\n\nwhere XX is the version code for the release (ie 80 for Version 80, released 3/2022). See [here]() for a list of Reactome version release dates. Note that version 60, 65 and 70 onward are available for download.\n\nNote that we are currently transitioning from a MySQL to Neo4J database. The current release of the database is available in both formats [here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/general-website/203-pathways-per-organ.json b/projects/website-angular/content-dist/documentation/faq/general-website/203-pathways-per-organ.json new file mode 100644 index 00000000..15da4400 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/general-website/203-pathways-per-organ.json @@ -0,0 +1 @@ +{"title":"How can I find all pathways reported for one organ? For example, I want to extract all reported pathways in (tissue X) for (species Y).","category":"documentation","body":"\n## How can I find all pathways reported for one organ? For example, I want to extract all reported pathways in (tissue X) for (species Y). \n\nReactome does not provide organ-specific annotation, we aim to annotate a generic (human) cell, and users can then use expression data overlay for their organ (cell, tissue) of interest through our [analysis tool]() (select \"Microarray data\" for an example). \n\nYou can also use the \"Tissue Distribution\" tool to see how data from the [Human Protein Atlas]() maps to Reactome pathway space.\n\nDocumentation is at []()[https://reactome.org/userguide/analysis]()\n\nPlease keep in mind that Reactome curation focuses on human, and while you can switch to one of the other species supported by our inference protocol through the drop down in the upper left area of the pathway browser, this data is inferred from human by orthology.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/general-website/204-kegg-to-reactome.json b/projects/website-angular/content-dist/documentation/faq/general-website/204-kegg-to-reactome.json new file mode 100644 index 00000000..970d0512 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/general-website/204-kegg-to-reactome.json @@ -0,0 +1 @@ +{"title":"Is there a mapping file between KEGG and Reactome pathways?","category":"documentation","body":"\n## Is there a mapping file between KEGG and Reactome pathways? \n\nReactome does not have a mapping file to KEGG. The best reference for such a comparison is [ComPath]() (reference [here]()), however this resource may not be up to date.\n\nAs an alternate approach, users can try the method used to establish links from models in the BioModels database to Reactome. For each model, we took its gene set, ran a gene set enrichment analysis against Reactome using the Reactome API documented [here](), and then added links to the Reactome pathways below a certain p value cutoff. \n\nYou could use that method to identify Reactome pathways that are related to a given KEGG pathway, and consider pathways with no match below your p value cutoff as not matched. The Reactome analysis interface is fast, each query should return in a few seconds, so this is perfectly feasible for all of KEGG. We'd be happy to communicate further on this.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/general-website/205-inferred-pathways-download.json b/projects/website-angular/content-dist/documentation/faq/general-website/205-inferred-pathways-download.json new file mode 100644 index 00000000..7eb19f4f --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/general-website/205-inferred-pathways-download.json @@ -0,0 +1 @@ +{"title":"Is it possible to download the inferred pathways for mouse (or another species), similar to the GMT file for human pathways on the downloads page?","category":"documentation","body":"\n## Is it possible to download the inferred pathways for mouse (or another species), similar to the GMT file for human pathways on the downloads page? \n\nUnfortunately, this is not possible at this time.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/198-install-neo4j.json b/projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/198-install-neo4j.json new file mode 100644 index 00000000..96530c82 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/198-install-neo4j.json @@ -0,0 +1 @@ +{"title":"I am having trouble installing a local Reactome Neo4J server.","category":"documentation","body":"\n## I am having trouble installing a local Reactome Neo4J server. \n\nUnfortunately, installation of a local Neo4J server can be complicated due to variations in individual setup (computer, operating system, version of Neo4J and so forth). \n\nPlease follow this [guide]() to install the graph database locally, there are different ways to install the graph database, and we also provide graph tar file and dump file to meet different requirements.\n\nAs a long-term solution to this issue, we are working on providing the Neo4J databases in Docker containers. When these are ready for deployment, they will be added to the Reactome Download page.\n\nIn the meantime, if you are getting an error message that the database is unavailable, please feel free to contact our developers through the help email ([help@reactome.org]()) and we will try to assist you.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/221-cypher-gene-list-to-pathways.json b/projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/221-cypher-gene-list-to-pathways.json new file mode 100644 index 00000000..67901cb9 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/221-cypher-gene-list-to-pathways.json @@ -0,0 +1 @@ +{"title":"I have a list of input genes. I want to retrieve all the pathways in which the genes are involved. How can I do this using a Neo4j Cypher query?","category":"documentation","body":"\n## I have a list of input genes. I want to retrieve all the pathways in which the genes are involved. How can I do this using a Neo4j Cypher query? \n\nThere is a [tutorial]() on using neo4j Cypher query here.\n\nTo retrieve all human pathways for a single gene (for example: [P36897](), the Uniprot identifier for TGFR1)\n \n \n \n MATCH (n)-[:referenceDatabase]->(rd:ReferenceDatabase) \n WHERE toLower(rd.displayName) = toLower(\"UniProt\") AND (n.identifier = \"P36897\" OR n.variantIdentifier =\"P36897\" OR \"P36897\" IN n.geneName OR \"P36897\" IN n.name) \n WITH DISTINCT n \n MATCH (pe:PhysicalEntity)-[:referenceEntity|referenceSequence|crossReference|referenceGene*]->(n) \n WITH DISTINCT pe \n MATCH (rle:ReactionLikeEvent)-[:input|output|catalystActivity|physicalEntity|entityFunctionalStatus|diseaseEntity|regulatedBy|regulator|hasComponent|hasMember|hasCandidate|repeatedUnit*]->(pe) \n WITH DISTINCT rle \n MATCH (:Species{taxId:\"9606\"})<-[:species]-(p:Pathway)-[:hasEvent]->(rle) \n RETURN DISTINCT p \n ORDER BY p.stId \n \n\nIf you have a list of genes, we suggest using [UNWIND]() neo4j cypher to flatten your list back to individual items and then execute the query.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/222-disease-to-pathways-api-or-neo4j.json b/projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/222-disease-to-pathways-api-or-neo4j.json new file mode 100644 index 00000000..1d56bffd --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/222-disease-to-pathways-api-or-neo4j.json @@ -0,0 +1 @@ +{"title":"I have a list of Reactome pathway IDs. I want to find whether any of them are disease pathways and also retrieve associated disease names. Is it possible to retrieve the information using API or neo4j graph database query?","category":"documentation","body":"\n## I have a list of Reactome pathway IDs. I want to find whether any of them are disease pathways and also retrieve associated disease names. Is it possible to retrieve the information using API or neo4j graph database query? \n\nTo do this, you can do a POST query with your pathway identifiers to the endpoint described [here](<#/query/findByIds>): \n\nTo know if a Pathway is a disease, look at the “isInDisease” property. The disease name is contained in the displayName of the diseases in the “disease” array of the Pathway models.\n\nOne query example would be \n \n \n \n curl -X 'POST' \\ \n 'https://reactome.org/ContentService/data/query/ids' \\ \n -H 'accept: */*' \\ \n -H 'Content-Type: text/plain' \\ \n -d 'R-HSA-9679506,R-HSA-8876384' > pathwaysDescription.json \n \n\nTo do this for multiple ids using cypher, you can use this query:\n \n \n \n MATCH (p:Pathway) \n WHERE p.stId in [\"R-HSA-9679506\",\"R-HSA-8876384\"] \n OPTIONAL MATCH (p)-[:disease]->(d:Disease) \n RETURN p,d \n \n\nUsing the optional match allows you to get both pathways associated with a disease and those which are not. \n\nIf you want to filter for only disease pathways, use the following:\n \n \n \n MATCH (p:Pathway)-[:disease]->(d:Disease) \n WHERE p.stId in [\"R-HSA-9679506\",\"R-HSA-8876384\"] \n RETURN p,d \n \n\nYou just need to provide your list of stId (reactome identifiers) in the “where” list.\n\nFinally, if you want to export a table instead of viewing it in the browser, use the following:\n \n \n \n MATCH (p:Pathway) \n WHERE p.stId in [\"R-HSA-9679506\",\"R-HSA-8876384\"] \n OPTIONAL MATCH (p)-[:disease]->(d:Disease) \n WITH p, collect(d) as diseases \n RETURN p.stId, p.displayName, p.isInDisease, [d in diseases | d.displayName] as diseaseNames, [d in diseases | d.databaseName + \":\" + d.identifier] as diseaseIdentifiers \n \n\nNote that some pathways, like R-HSA-9608290 are associated with several diseases.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/223-neo4j-all-genes-for-a-pathway.json b/projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/223-neo4j-all-genes-for-a-pathway.json new file mode 100644 index 00000000..58ee224a --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/223-neo4j-all-genes-for-a-pathway.json @@ -0,0 +1 @@ +{"title":"How can I use Neo4J to identify all the genes for a given pathway?","category":"documentation","body":"\n## How can I use Neo4J to identify all the genes for a given pathway? \n\nThe query for collecting all genes for a given pathway is\n \n \n \n MATCH (n:DatabaseObject{stId:\"R-HSA-3371599\"})-[:hasEvent|input|output|catalystActivity|physicalEntity|entityFunctionalStatus|diseaseEntity|regulatedBy|regulator|hasComponent|hasMember|hasCandidate|repeatedUnit|referenceEntity*]->(m:ReferenceGeneProduct) \n RETURN DISTINCT m \n \n\nFor guidance on formatting other queries, please take a look at our [data schema](). Our graph core projects also include most of the queries used in Reactome; you can find lots of examples [here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/224-ppi-to-pathways-graph.json b/projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/224-ppi-to-pathways-graph.json new file mode 100644 index 00000000..fd6419f6 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/graph-database-and-cypher-query/224-ppi-to-pathways-graph.json @@ -0,0 +1 @@ +{"title":"Is it possible to directly connect my protein protein interaction network with the Reactome database or do I have to extract the required data and separately build the graph?","category":"documentation","body":"\n## Is it possible to directly connect my protein protein interaction network with the Reactome database or do I have to extract the required data and separately build the graph? \n\nYes, you can directly query in our graph database, for example:\n \n \n \n MATCH (ref1:ReferenceEntity)<-[:referenceEntity]-(p1:EntityWithAccessionedSequence)<-[:input|output|catalystActivity|physicalEntity|entityFunctionalStatus|diseaseEntity|regulatedBy|regulator|hasComponent|hasMember|hasCandidate|repeatedUnit*]-(reaction:ReactionLikeEvent)-[:input|output|catalystActivity|physicalEntity|entityFunctionalStatus|diseaseEntity|regulatedBy|regulator|hasComponent|hasMember|hasCandidate|repeatedUnit*]->(p2:EntityWithAccessionedSequence)-[:referenceEntity]->(ref2:ReferenceEntity) \n WHERE ref1.databaseName = 'UniProt' AND ref2.databaseName = 'UniProt' AND ref1.identifier = 'P60484’ AND ref2.identifier = 'P42685' \n MATCH eventPath=(reaction)<-[:hasEvent*]-(pathway) \n UNWIND (nodes(eventPath)) as p \n RETURN DISTINCT p.stId\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/faq/illustrations-figures/38-illustrations-figures.json b/projects/website-angular/content-dist/documentation/faq/illustrations-figures/38-illustrations-figures.json new file mode 100644 index 00000000..ffb7faa4 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/faq/illustrations-figures/38-illustrations-figures.json @@ -0,0 +1 @@ +{"title":"Is there a way to download high level images which can be zoomed in locally (after download)?","category":"documentation","body":"\n## Is there a way to download high level images which can be zoomed in locally (after download)? \n\nIf you would like to download icons and Enhanced High Level Diagrams(EHLD), yes, we provide SVG format for both. Please visit our icon library [here](), you can download any EHLDs in pathway browser by clicking the download button at the top right corner to export diagram to different formats including SVG.\n\nHowever, if you would like to download a high level image of Reacfoam, unfortunately, there is no way to export it for now, basically, it takes a screenshot of the current window when you download a Reacfoam image.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/icon-info.json b/projects/website-angular/content-dist/documentation/icon-info.json new file mode 100644 index 00000000..dee6ded4 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/icon-info.json @@ -0,0 +1 @@ +{"title":"EHLD Specs & Guidelines","category":"documentation","body":"\n[ __ ]()\n\n## [ EHLD Specs & Guidelines ]()\n\n[ __ ]()\n\n## [ Icon Library guidelines ]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/icon-info/ehld-specs-guideline.json b/projects/website-angular/content-dist/documentation/icon-info/ehld-specs-guideline.json new file mode 100644 index 00000000..fa362f23 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/icon-info/ehld-specs-guideline.json @@ -0,0 +1 @@ +{"title":"EHLD Specs & Guidelines","category":"documentation","body":"\n## EHLD Specs & Guidelines \n\nThe Enhanced High Level Diagrams (EHLD) project aims to improve the graphical representation of higher-level pathways in the Reactome events hierarchy, e.g., “signal transduction”, “apoptosis”, or “metabolism” whose pathway diagrams consist of green boxes labeled with the names of sub-events, optionally located in cellular compartments and connected by arrows. These green-box diagrams feature limited navigation: clicking on a green box takes the user to that sub-event. In some cases, an illustrator has also created a graphic representation of the event. However, these illustrator diagrams offer no navigation functionality.\n\nThere was a general agreement that green-box diagrams are not that appealing, and put off users accustomed to textbook-quality illustrations of biological processes with striking, intuitively clear iconography. Meanwhile, while our illustrations often are up to textbook standards, they are static images. The project included generation of scalable vector graphic (SVG) versions of illustrations, and the development of software that will make these SVG images navigable in the way that the green-box figures are now, and also to provide user interactivity by progressive zoom in/out, actions when hovering over the items or selecting them and showing the associated content in the details panel for the selected items.\n\nThis project has also driven the development of a consistent iconography, a controlled visual vocabulary for biological processes like the controlled word vocabularies we already have for names of physical entities and reactions.\n\nThis document includes two main sections. The first section describes in detail the process that should be followed to create an EHLD. The second section of this document provides guide through the process of creating and including new graphic elements into the Reactome EHLD icons library. \n\n### Enhanced High Level Diagrams guidelines\n\nThis section aims to guide you through the process of creating an EHLD. The following paragraphs aim to summarise the set of requirements and guidelines the illustrator should follow in order to produce EHLDs that are compatible with Reactome Pathway Browser v3.4.\n\n#### Generic guidelines\n\nIn Reactome, an EHLD is an interactive graphical representation of a higher level pathway diagram, typically containing two or more subpathways as active regions. An active region refers to a group of shapes representing a single subpathway. In particular, users can interact with active regions by hovering or selecting them, as well as use them to navigate to the subpathways they represent.\n\n![ehld with analysis](/uploads/documentation/icon-info/ehld-specs-guideline/ehld-with-analysis.png)\n\n_EHLD representing the Hemostasis branch of the Reactome event hierarchy. (a) Pathway hierarchy view for Hemostasis. (b) Hemostasis as an EHLD representation. (c) Hemostasis EHLD overlaid with pathway enrichment analysis results._\n\n### Generic guidelines\n\nTo make all these possible, there is a set of initial requirements to be taken into account during the generation of the EHLDs.\n\n * EHLDs must be in SVG format. Illustrators are free to use the design tool of their preference but at the end their diagram must be exported to SVG.\n * The use of raster graphics is strongly discouraged as it results in larger file sizes and it has a negative impact on software performance. Also, by including bitmap images we cancel out resolution-independent zooming, which is one of SVG’s main advantage. \n * All exported SVG files should include the styles in an internal CSS stylesheet. Please make use of this option when exporting from Adobe Illustrator: _Export As - > SVG -> Styling: Internal CSS_. If you are using another application to create the EHLDs, you will need to configure it appropriately.\n * The name of each EHLD file has to be the Reactome Identifier of the corresponding pathway diagram, followed by “.svg”. For example, the _Apoptosis_ EHLD should be named as _R-HSA-109581.svg_. Please keep in mind that only one EHLD should be created per high level pathway diagram.\n * Active regions are annotated using the id attribute of their group element (inside the SVG file) and can be classified in the following two groups: \n * Regions containing a group of irregular shapes (including text) that can be selected (and hovered) in order to navigate to the respective pathway diagram. These regions should be annotated by setting their id attribute to “ _REGION-_ ” _\\+ Reactome Identifier_ of their represented subpathway, e.g. “ _REGION-R-HSA-109581_ ”. This type of active regions may include arrows pointing to or from them and they are not mandatory.\n * Regions containing the label of the represented subpathway in a box-like shape that can be not only selected but also overlaid with the results of the analysis. These regions should be annotated by setting their id attribute to “ _OVERLAY-_ ” _\\+ Reactome Identifier_ of their represented subpathway, e.g. “ _OVERLAY-R-HSA-109581_ ”. Regions of this category must not include arrows pointing to or from them, and they are mandatory.\n * Please keep in mind that if we need to annotate both types of active regions for a given subpathway, the region (“REGION-R-HSA-109581”) has to include the overlay component (“OVERLAY-R-HSA-109581”). In other words, the group of the selectable shapes has to include the group of shapes that can be overlaid.\n * Any group of shapes, text or graphical elements that are not annotated as active regions are considered decorators and users cannot interact with them. They have pure esthetic value and they cannot be selected, hovered or overlaid. \n * If possible, no background covering the whole image should be put in place. Please note that compartments or other necessary backgrounds can be kept, but we suggest to avoid “unnecessary” backgrounds. In case a background is required, but it is too big to fit in the illustration, it is suggested to draw only a small part of it with clear and well defined boundaries (See the blood vessel in the EHLD of Hemostasis above). \n * Text elements should not be converted to groups of shapes. Instead, use the normal SVG element.\n\n![subpathways](/uploads/documentation/icon-info/ehld-specs-guideline/subpathways.png)\n\nExample illustrating the two types of active regions. Selectable regions (annotated with “REGION-” + Reactome Identifier) are highlighted in red, while regions that can be overlaid are highlighted in brown. Shapes and text that are not annotated as active regions are considered decorators (presented in blue) and users cannot interact with them.\n\nTaking the aforementioned requirements into consideration, the EHLD of the figure above should have the following structure:\n\n * REGION-Pathway A _# The whole pathway will be selectable #_\n * OVERLAY-Pathway A _# Only the label will be overlaid #_\n * REGION-Pathway B _# The whole pathway will be selectable including the arrow #_\n * OVERLAY-Pathway B _# Only the label will be overlaid #_\n * REGION-Pathway C _# The whole pathway will be selectable including the arrow #_\n * OVERLAY-Pathway C _# Only the label will be overlaid #_\n * OVERLAY-Pathway D _# The whole pathway will be selectable and overlaid #_\n * DECORATORS _# None of the shapes are selectable or can be overlaid #_\n\n### Creating an EHLD step by step\n\nWe suggest starting a new EHLD by creating an Adobe Illustrator document with **1366px** in width and **768px** in height and using the **RGB colour mode**.\n\nPathway Labels should have **centered,** **white** , **uppercased** , text using **Arial Bold** font at **12pt** inside a **rounded rectangle** with **8pt** **radius** , minimum **width of 170px** and **height** of**30px** for single lines or **43px** for double lines. The colour of the rounded rectangle should be **#0F82BC** (R:15 G:130 B:188). We suggest writing the name of the subpathway it represents as it appears in the Reactome hierarchy. In case of a discrepancy, or any kind of oddity, please contact the author or the curator related to the pathway.\n\nPlease use the same specifications for any other written element except for:\n\n * **Descriptions** of a process should always be black and in lowercase letters.\n * Any **written element** that belongs to a compound, protein or cell (generically inside of any coloured shape) should be white and in uppercase letters (when possible).\n * Any **written element** that belongs to a receptor and/or describes a cell element or a process (generically outside of any shape) should be black and in lowercase letters (when possible, usually receptors are named by acronyms and capital letters should be used in these cases).\n * Greek or other Unicode characters must be avoided in text elements. Thus, names with greek characters should include the whole word (e.g. alpha instead of α) written in lowercase.\n * Reactome **logo** should always have **50%** **opacity**.\n\nEvery pathway label should have one **Analysis Information Label**. The latter is used to display additional details about the hit elements and the false discovery rate (FDR). All analysis information labels should be annotated as “ANALINFO” in the Layer Hierarchy Panel. Place “XXX/YYY” as a text placeholder inside it. Text should be centered and uppercased in **Arial Bold** **9pt** , and in white colour. The box should be a rounded rectangle with **8px radius** , minimum **width of 170px** and **20px height**. Its fill colour should be **#C6C6C6** (R:198 G:198 B:198). Also, set the opacity of the group to 0%, but make sure you leave the opacity of the shapes and text inside the group to 100%. Each analysis information label should be placed beside its pathway label and in the opposite side of the content for that pathway. For instance, if the pathway label is above its content, the analysis information label should be placed above the pathway label and vice versa.\n\nIn order to better shape the active region (or the clickable area) of a pathway we can add a white shape with **0% opacity** under any element of the Pathway in the Layer Hierarchy Panel. In this way we can extent the clickable area and improve the overall user experience while navigating the EHLDs. In particular, we should try to surround the elements of the subpathway covering the gaps within the individual graphic elements, and thus, avoiding the inconvenient situation where the mouse cursor changes from the usual arrow shape to the hand constantly. Additionally, in EHLDs where elements of a particular subpathway are too thin and users find it difficult to select them, this technique can provide a bigger and more convenient clickable area around them. However, we should use this with caution, as creating too large clickable areas can mislead users.\n\nIt is recommended to place all arrows and neutral text elements in a group at the top of the layer hierarchy. As well, all decorators and elements in the background that we do not want to highlight or be clickable, we recommend to place them in a group at the bottom of the layer hierarchy.\n\nReactome displays EHLDs in a blank zoomable space. For a better user experience we suggest to have all shapes and elements portrayed in full. However, we understand that some pathways are large and contain too many and too big elements to fit in one image. In cases where the illustrator needs to cut an element and it is difficult to make a clean representation of the cut, we suggest the addition of a gradient so that elements vanish keeping the limits of the canvas clear.\n\nIn order to export an EHLD we should use the “Export as” option and save the file as an SVG with the following options:\n\n * Styling: Internal CSS.\n * Font: SVG.\n * Images: Preserve.\n * Object IDs: Layer Names.\n * Decimal Points: 3.\n * Minify and Responsive, both ticked.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/icon-info/icons-guidelines.json b/projects/website-angular/content-dist/documentation/icon-info/icons-guidelines.json new file mode 100644 index 00000000..3dc766f6 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/icon-info/icons-guidelines.json @@ -0,0 +1 @@ +{"title":"Icons Library Guidelines","category":"documentation","body":"\n## Icons Library Guidelines \n\nThis section will guide you through the process of creating and including your own graphic elements into the [Reactome Icon Library]() and become a part of this growing community.\n\nSince Reactome is a free and open-source project, the Reactome Library is under a Creative Commons license. As a result, if your creations are included in our library, they will follow the same policy. Feel free to use any tool or application that allows you to create **vector graphics** and, please, make sure that the following specifications are implemented in the files you will be creating.\n\n#### Generic guidelines\n\n * Keep simplicity in mind. The main goal for this Icon Library is to provide easy to read graphic components for our users and simplicity is key to this matter.\n * Consistency is important for Reactome and the Icon Library. Please, before submitting a proposal, read the guidelines we have set for the different types of components we use.\n * Each icon should represent a single element only. After receiving feedback we open this rule to receptors when binding other receptors in order to make it easy for our users.\n * Every element should be placed into a separate file, **200** by **200px** in size, with **RGB colour mode** and **White background**.\n * Use only **Arial Bold 12pt**. Text colour should be chosen depending on the text’s position. In case the text is **inside** a coloured shape, its colour should be **White** , while in case the text is **outside** of a coloured shape, its colour should be **Black**.\n * All text should be **Uppercased** except for words describing **greek** characters (e.g alpha, beta, gamma, etc.). In that case those words should be written in **Lowercase**. It should be noted that Greek or other Unicode characters must be avoided, as they are not supported for the moment.\n * Your elements should only comprise vector graphics. Please make sure that you have not included any bitmap image in it. Including raster images often results in larger file sizes and thus negatively impacts software performance. \n * You can place your new element in any of the seven categories of the Reactome Library; Cell elements, Cell types, Compounds, Human tissue, Ion channels, Proteins and Receptors.\n\n#### Cell elements\n\nKeeping simplicity is one of our targets so we recommend the use of **simple figures** , such as circles, squares and triangles as a base. For colouring we suggest the use of shades of **Primary Colours** (Red, Blue and Yellow) and **Secondary Colours** (Purple, Green and Orange).\n\nVector graphic applications allow you to use **Gradient tools** to blend two or more colours for the same shape. We recommend you to use these tools so you can create more appealing graphics. See the Mitochondrion below:\n\n![gradient example](/uploads/documentation/icon-info/icons-guidelines/gradient_example.png)\n\n_(a) Without the use of gradients, the Mitochondrion element looks plain while in_\n\n_(b) through the correct use of gradients the element looks more 3D-like,_\n\n_resulting in a more attractive and playful image._\n\n#### Cell types\n\nIn order to ensure a sense of unity and a consistent look and feel, we suggest applying the same principles; simple shapes and colours.\n\nFor representing types of cells, please keep in mind that we are not using scale to portray the different organelles and elements inside the cell cytoplasm. Additionally, to maintain simplicity, try to avoid overloading the the overall design with too much detail. The following table features 3 examples:\n\n![microbe](/uploads/documentation/icon-info/icons-guidelines/R-ICO-013014.svg) | _This**Microbe** element is formed by a circle with a radial gradient of two colours. To represent the membrane, we have added an outline with a different gradient. To convey the idea of danger we use this squares as spikes and a red shade in their gradients._ \n---|--- \n![macrophage](/uploads/documentation/icon-info/icons-guidelines/R-ICO-012969.svg) | _We have drawn this**Macrophage** element with shaky tentacles and we have used a not uniform outline (membrane) to give it a soft and flexible feeling._ \n![pathogen](/uploads/documentation/icon-info/icons-guidelines/R-ICO-013155.svg)![pathogen dead](/uploads/documentation/icon-info/icons-guidelines/R-ICO-013157.svg) | _For this**Pathogen** element we used a large light gradient to represent a shiny and hard capsule._ _To show its death we draw holes on its surface and play with a darkened, sad colour._ \n \n#### Compounds\n\nCompounds are represented by very geometrical elements, following more specific guidelines.\n\nSimple chemical elements or compounds are usually portrayed in the Library with their chemical element symbol (e.g. Ca for Calcium) or the name of the compound (e.g. IFN-gamma) using **Arial bold 12pt** in **White** colour.\n\nSimple chemical elements are represented by an **octagon** of **28px** height and two plain colours, one for the fill and a different one for the stroke (**2pt**). In case the text of the compound is too long to fit in the octagon, we suggest stretching the shape until it fits the name, respecting its lateral edges, like follows:\n\n![h2o](/uploads/documentation/icon-info/icons-guidelines/R-ICO-013527.svg) \n--- \n_An example of a simple chemical element._ \n \n__Complex compounds can be represented with a variety of shapes, always simple and easy to differentiate one from each other.\n\n![atp](/uploads/documentation/icon-info/icons-guidelines/R-ICO-012399.svg) | _We can use circles with or without outline._ \n---|--- \n![alpha toh](/uploads/documentation/icon-info/icons-guidelines/R-ICO-012413.svg) | _We can use hexagons, in the same way as for the simple compounds, just adding a gradient on their stroke._ \n \n#### Human tissue\n\nHuman tissue elements are mainly used as backgrounds in our diagrams and the way of representing these organs depends on the illustrator’s skills and taste. To ensure unity in the Reactome Library we suggest to keep these illustrations as simple as possible and visualise them as toys; so they convey a nice, soft feeling, with a plastic-like, very friendly and approachable look.\n\n![liver](/uploads/documentation/icon-info/icons-guidelines/R-ICO-012959.svg) | ![blood vessel](/uploads/documentation/icon-info/icons-guidelines/R-ICO-012472.svg) \n---|--- \n_Examples of human tissue elements; Liver and Blood vessel._ \n \n#### Ion channels\n\nThese representations are quite simplified and, thus, elements are designed to look like small funnels that cross through the membrane, allowing elements to move from inside of the cell to outside and vice versa. There are hundreds of different ion channels and we suggest differentiating them with the use of colours in various combinations.\n\n![calcium channel](/uploads/documentation/icon-info/icons-guidelines/R-ICO-012502.svg) | ![proton channel](/uploads/documentation/icon-info/icons-guidelines/R-ICO-013251.svg) \n---|--- \n_Examples of ion channels._ \n \n#### Proteins\n\nThere are tens of thousands of different proteins, some of them with specific shapes. Proteins in the Reactome Library follow the standard representation as rounded rectangle shapes. As a result, we suggest using the **Rounded Rectangle Tool** to draw a shape with **10px** radius for the corners and **20px** height for single line of text, or **30px** for a double line. The stroke should be **3pt** and we suggest choosing an irregular profile (in Adobe Illustrator, use the default **Width Profile 2**). For the name of the proteins we suggest to follow the same guides as before, **White Uppercase Arial Bold 12pt**.\n\nThe shape will contain the simplified name of the protein following the general instructions for Reactome Library. It should be filled with a simple gradient of two colours. One of the colours of this gradient should also be used as the stroke colour.\n\n![plc beta1](/uploads/documentation/icon-info/icons-guidelines/R-ICO-013194.svg) | ![plasminogen](/uploads/documentation/icon-info/icons-guidelines/R-ICO-013189.svg) \n---|--- \n_Examples of protein elements in their rounded rectangle representation._ \n \nIn case a protein has a specific shape, we suggest keeping the standard representation as long as it is not too complicated. Otherwise, we suggest opting for a more simplified version.\n\n![mac](/uploads/documentation/icon-info/icons-guidelines/R-ICO-012968.svg) | ![antibody](/uploads/documentation/icon-info/icons-guidelines/R-ICO-012425.svg) \n---|--- \n_Examples of protein elements represented in their standard representation._ \n \n#### Receptors\n\nLike proteins, there is a huge number of receptors. In cases where there is a standard, but quite complex, way to represent them, we suggest adopting a more simplified version. If this is too difficult we suggest finding a more simple representation.\n\n![FCgammaR](/uploads/documentation/icon-info/icons-guidelines/R-ICO-012710.svg) | ![cd40-cd40l](/uploads/documentation/icon-info/icons-guidelines/R-ICO-012529.svg) \n---|--- \n_Examples of receptor elements_ \n \n#### Metadata\n\nYou are encouraged to accompany your element with more information including a short description and extra details about its designer and curator. Upon inclusion of your element into the Reactome Library, all metadata information will be available to the public through our landing page.\n\nIn order to do so, you need to create an additional metadata file using your favorite text editor. The file should have the following structure:\n \n \n \n \n **{CATEGORY}** \n \n **{CURATOR_NAME}** \n **{DESIGNER_NAME}** \n **{ICON_NAME}** \n **{DESCRIPTION}** \n \n \n **{REFERENCE_NAME}** \n **{REFERENCE_ID}** \n \n \n \n **{SYNONYM}** \n \n \n \n\nPlease follow these steps:\n\n 1. Create a new file using your favorite text editor (TextEdit, NotePad, etc.).\n 2. Copy and Paste the text above into your file.\n 3. Edit the file and:\n 1. Fill {CATEGORY} with one or more of the suggested categories: cell_element, cell_type, compound, human_tissue, protein, receptor or transporter. We accept one or more different categories as we think they are just a guide that helps our users to find the element they need.\n 2. Fill {ORCID} and/or {URL} for the curator and designer roles. This is [how to find ORCID](). In case both URL and ORCID are provided, the link for that person will point to the URL.\n 3. Fill {CURATOR_NAME} and {DESIGNER_NAME} as the curator and designer name, respectively. If the name is the same, please fill both with same information.\n 4. Fill {DESCRIPTION} with any information relevant to describe the component. Please be brief.\n 5. Fill {REFERENCE_NAME} for the name of the resource you have used to find this component (e.g.:CHEBI, UNIPROT, GO … ). In case of not finding a suitable reference, please delete this line.\n 6. Fill {REFERENCE_ID} as it appears in the resource’s URL (e.g.: CHEBI:1234, Q1234, GO:1234 … ). In case of not finding a suitable reference, please delete this line.\n 7. Fill {SYNONYM} as any synonyms or alternative names your component might be known of. In case of not finding a suitable synonym, please delete this line.\n 4. Save the file using the same name as the element but make sure to use .xml as its extension. For example if your graphic element is stored with the name “Element.svg” then your metadata file should be named as “Element.xml”.\n 5. Make sure to submit your metadata file along with the graphics file.\n\n### Export Settings\n\nCurrently, every element in the Reactome Library is available in 3 different formats, SVG, EMF and PNG. Therefore, you are kindly requested to export your work into these formats and include them in your submission.\n\nFor PNG files we suggest to export with 300 DPI and transparent background.\n\n### How to submit your work\n\nTo include your graphic elements in the Reactome Library, you need to contact our helpdesk ([help@reactome.org]()). We will then review your submitted files and, depending on the outcome, we will include them in our Library.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/inferred-events.json b/projects/website-angular/content-dist/documentation/inferred-events.json new file mode 100644 index 00000000..ccd095be --- /dev/null +++ b/projects/website-angular/content-dist/documentation/inferred-events.json @@ -0,0 +1 @@ +{"title":"Computationally Inferred Events","category":"documentation","body":"\n## Computationally Inferred Events \n\nWe use the set of manually curated human reactions to electronically infer reactions in fourteen evolutionarily divergent eukaryotic species for which high-quality whole-genome sequence data are available, and hence a comprehensive and high-quality set of protein predictions exists. These species include the laboratory mouse and rat, the nematode _C. elegans_ , and budding and fission yeasts. The estimated success rates of our orthology inference strategy can be stated as ‘the percentage of eligible reactions, defined in step 2 below, in the current human data set for which an event can be inferred in the model organism. By this measure, success rates range from 81.1% for the laboratory mouse to 8.8% for _P. falciparum._\n\nElectronic inference proceeds in four steps:\n\n 1. Protein homology data were obtained from [PANTHER](). PANTHER uses the [Reference proteome]() dataset maintained by UniProt to generate phylogenetic trees of protein-coding genes across numerous species. Homologs are derived from these trees and annotated by type (ortholog, paralog). Additionally, in cases with multiple orthologs PANTHER infers the least diverged ortholog based on protein sequence divergence, which is utilized during our inference process. A detailed description of PANTHER's methodology can be found in [PANTHER in 2013: modeling the evolution of gene function, and other gene attributes, in the context of phylogenetic trees]().\n\n 2. All human reactions in the Reactome knowledgebase involving one or more proteins are eligible for electronic inference, with two exceptions. Reactions that were themselves inferred based on data from the model organism, and reactions involving species in addition to human (e.g., HIV infection of human cells) are excluded from electronic inference. Eligible reactions are checked to determine whether each involved protein has at least one homologous protein (HP) in the reaction's input, output and (if present) catalyst in the organism undergoing inference. If a human reaction involves a complex, at least 75% of the accessioned protein components of the human complex must have HPs in the model organism.\n\n 3. For each reaction that meets these criteria, an equivalent reaction is created for the model organism by replacing each human protein with its model organism HP. If a human protein corresponds to more than one model organism HP, a DefinedSet called ‘Homologues of …’ is created, with the model organism HPs as members.\n\n 4. After all possible reactions have been inferred for the species, any human pathways that contain at least 1 inferred reaction will be inferred for the species as well.\n\nThese electronically inferred reactions are predictions based on a number of assumptions. Most basically, we assume that if we can find model organism HPs corresponding to all proteins involved in a human reaction, then the proteins mediate the same reaction in the model organism. This may not be true. On the other hand, we may miss a truly homologous reaction in the model organism because it is mediated by structurally divergent proteins that were not identified as such by PANTHER’s techniques. Similarly, complexes sharing less than 75% homologous subunits between species may nevertheless continue to perform the same function. The electronically inferred reactions presented in Reactome are thus not data, but hypotheses useful to direct the design of confirmatory experiments.\n\nA modified version of the orthoinference process was used to create a first draft of the [SARS-CoV-2 infection pathway](). Events in the SARS-Cov-2 pathway corresponding to each event in the [SARS-CoV-1 pathway]() were created and populated with SARS-CoV-2 protein-containing physical entities based on orthology to SARS-CoV-1 proteins. We continue to replace predicted SARS-Cov-2 events with experimentally validated events when the relevant experimental evidence becomes available.\n\n![](/uploads/documentation/inferred-events.png)\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/linking-to-us.json b/projects/website-angular/content-dist/documentation/linking-to-us.json new file mode 100644 index 00000000..6533baf3 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/linking-to-us.json @@ -0,0 +1 @@ +{"title":"Linking to us","category":"documentation","body":"\n## Linking to us \n\nReciprocal linking between related bioinformatics resources not only encourages mutual traffic but ensures that Reactome users can quickly linkout to the source reference material as they navigate through our website. Furthermore, many Reactome visitors are referred to this web site by many bioinformatics resources that integrate Reactome data. These resources include UniProt, Genecards, OMIM, NCBI Biosystems, MSigDB, HGNC, NextProt, BioGPS, Pathway Commons, and Wikipathways.\n\nOur goal with distributing different sets of files for each identifier type (i.e. protein ([UniProt]()), gene (Ensembl and NCBI), small molecule (ChEBI), and microRNA (miRBase)) is to link the source database identifier to: \n\n 1. the lowest level pathway diagram or subset of the pathway,\n 2. all level pathway diagrams, and all reaction events.\n\nThe identifier mapping files can be obtained from our [Downloads]() section.\n\nAn alternative strategy to link to Reactome can be achieved by creating URLs containing the name of and an identifier from an “external” database in the following format: [_https://reactome.org/content/query?cluster=true &q=identifier_]() _._\n\nClick [here]() to see the external databases and list of identifiers available in the current release of Reactome\n\nBelow are few concrete examples:\n\n * [UniProt]() accession numbers (the ‘AC’ line, preferred) and identifiers (the ‘ID’ line), e.g. UNIPROT:P30304, [https://reactome.org/content/query?cluster=true&q=P30304]()\n * [ChEBI]() identifiers, e.g. CHEBI:15422, [https://reactome.org/content/query?cluster=true&q=15422]()\n * [COMPOUND]() identifiers, e.g. COMPOUND:C00002, [https://reactome.org/content/query?cluster=true&q=C00002]()\n * [Gene Ontology]() (GO) accession numbers, e.g. GO:0030060, [https://reactome.org/content/query?cluster=true&q=0030060]()\n * [Enzyme Classification]() (EC) numbers, e.g. EC:1.1.1.37, [https://reactome.org/content/query?cluster=true&q=1.1.1.37]()\n * [NCBI Gene](), e.g. NCBI Gene:4171, [https://reactome.org/content/query?cluster=true&q=4171]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/linking-to-us/identifiers.json b/projects/website-angular/content-dist/documentation/linking-to-us/identifiers.json new file mode 100644 index 00000000..996cce5a --- /dev/null +++ b/projects/website-angular/content-dist/documentation/linking-to-us/identifiers.json @@ -0,0 +1 @@ +{"title":"External Identifiers","category":"documentation","body":"\n## External Identifiers \n\nListed below are the external bioinformatics databases that Reactome provides link outs to from our website.\n\n * [AraCyc]()\n * [BioGPS]()\n * [BioModels]()\n * [CAS]()\n * [COMPOUND]()\n * [COSMIC]()\n * [CTD Gene]()\n * [ChEBI]()\n * [ClinGen]()\n * [dbSNP Gene]()\n * [dictyBase]()\n * [DOCK Blaster]()\n * [DOID]()\n * [EC]()\n * [ENSEMBL]()\n * [Flybase]()\n * [GO]()\n * [GeneCards]()\n * [Guide to Pharmacology]()\n * [HGNC]()\n * [IntEnz]()\n * [KEGG Gene]()\n * [miRBase]()\n * [MOD]()\n * [NCBI Gene]()\n * [NCBI Nucleotide]()\n * [NCBI_Protein]()\n * [OMIM]()\n * [ORCID]()\n * [Orphanet]()\n * [PRF]()\n * [PlasmoDB]()\n * [Protein Data Bank]()\n * [PubChem Compound]()\n * [PubChem Substance]()\n * [RefSeq]()\n * [Rhea]()\n * [SGD]()\n * [SO]()\n * [TAIR]()\n * [UCSC human]()\n * [UniProt]()\n * [Wormbase]()\n * [ZINC]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/release-documentation.json b/projects/website-angular/content-dist/documentation/release-documentation.json new file mode 100644 index 00000000..27db30c0 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/release-documentation.json @@ -0,0 +1 @@ +{"title":"Release Documentation","category":"documentation","body":"\n## Release Documentation \n\nThe current Release SOP with associated appendices (last updated V95) is available for download [here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/userguide.json b/projects/website-angular/content-dist/documentation/userguide.json new file mode 100644 index 00000000..4350b399 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/userguide.json @@ -0,0 +1 @@ +{"title":"User Guide","category":"documentation","body":"\n### What is Reactome?\n\nReactome is a curated database of pathways and reactions in human biology. Reactions can be considered as pathway ‘steps’. Reactome defines a ‘reaction’ as any event in biology that changes the state of a biological molecule. Binding, activation, translocation, degradation and classical biochemical events involving a catalyst are all reactions. Information in the database is authored by expert biologists, entered and maintained by Reactome’s team of Curators and Editorial staff. Reactome content frequently cross-references other resources e.g. [NCBI](), [Ensembl](), [UniProt](), KEGG ([Gene]() and [Compound]()), [ChEBI](), [PubMed]() and [GO](). [Inferred orthologous reactions]() are available for 15 non-human species including mouse, rat, chicken, puffer fish, worm, fly, yeast, rice, and Arabidopsis.\n\n### What is this guide For?\n\nThis guide introduces features of the Reactome website using a combination of short explanations and exercises. You will learn how to search, interpret the views, use the tools and if necessary find documentation or [help@reactome.org]() for help.\n\n\n\n### Online Tutorial\n\nAvailable via the EBI Train Online system.\n\n\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/userguide/analysis.json b/projects/website-angular/content-dist/documentation/userguide/analysis.json new file mode 100644 index 00000000..6e2a6be1 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/userguide/analysis.json @@ -0,0 +1 @@ +{"title":"Analysis Tools","category":"documentation","body":"\n## Analysis Tools \n\n#### Jump to section:\n\n * [Analysis Data](<#analysis>)\n * [Analysis Gene Expression]()\n * [Species Comparison](<#species>)\n * [Tissue Distribution](<#tissue>)\n\nSee our Youtube Video that introduces our [Analysis Tools]()! \n\n#### **Analysis Data**\n\nClick on the ‘Browse Pathways’ button on the Homepage. In the next page, click the ‘Analysis’ button on the top right:\n\n![](/uploads/documentation/userguide/analysis/analysis_1.png)\n\nAlternatively, select the ‘Analyze Data’ button on the Homepage:\n\n![analyze data button](/uploads/documentation/userguide/analysis/analysis_2.png)\n\nThis opens a submission form, where you can select the analysis you want to perform, paste in or browse to a file containing your data, or use an example data set.\n\n_![analysis 3](/uploads/documentation/userguide/analysis/analysis_3.png)_\n\nThere are two sections to the submission form. The ‘Analyse your data’ section is selected by default to submit your data. Several different analyses can be performed, depending on the format of your data.\n\nIf your data is a single column of identifiers such as UniProt IDs, gene symbols or ChEBI IDs, they are mapped to pathways and over-representation and pathway-topology analyses are run. Over-representation analysis is a statistical (hypergeometric distribution) test that determines whether certain Reactome pathways are over-represented (enriched) in the submitted data. It answers the question ‘Does my list contain more proteins for pathway X than would be expected by chance?’ This test produces a probability score, which is corrected for false discovery rate using the Benjamani-Hochberg method.\n\nPathway topology analysis considers the connectivity between molecules that is represented by the pathway steps (which we refer to as reactions) in the pathway. It groups all the molecules represented in each reaction as a pathway ‘unit’. If any of these molecules are represented in your query set, this is considered a match to that reaction. This may give a better indication of the proportion of the pathway that matches your data, rather than the number of molecules that are common between your data and the pathway. It may also indicate that your data matches the start, end or a particular branch of a pathway process. This test does not have a probability score.\n\nIf your data has one or more additional columns of numbers it will be recognized as expression data and expression data overlay will be performed. Note that this data format should include a header row. The first column header should start with the # symbol. The numbers are used to produce a scaled coloured overlay over Reactome pathway diagrams, as a means to visualize relative expression levels. Note that the numeric values do not have to be expression data, for instance by using gene association scores the same analysis can be used to visualize genotyping results. \n\n#### **Identifier mapping**\n\nThe submission process recognizes many types of identifiers. As part of the pre-analysis, they are mapped to Reactome molecules. The ideal identifiers to use are UniProt IDs for proteins, ChEBI IDs for small molecules, and either HGNC gene symbols or ENSEMBL IDs for DNA/RNA molecules, as these are our main external reference sources for proteins and small molecules. Many other identifiers are recognized and mapped to appropriate Reactome molecules. Accepted identifiers include HUGO gene symbols, GenBank/EMBL/DDBJ, RefPep, RefSeq, EntrezGene, MIM, InterPro, EnsEMBL protein, EnsEMBL gene, EnsEMBL transcript, and some Affymetrix and Agilent probe IDs. UniProt isoforms may be specified using the format P12345-2. If the -n suffix is omitted, this canonical form and all isoforms of it will be matched. Mixed identifier lists (different protein identifiers or protein/gene identifiers) may be used. Identifiers must be one per line. Protein-specific identifiers will typically map to protein entities, while gene-specific identifiers will map to the gene, transcript and derived proteins. If desired results can be filtered to show protein-specific or gene/transcript-specific results, details below. \n\nBelow is an example of the identifiers-only format:\n\nClick the Continue button. A second options selection page appears:\n\n_![analysis 4](/uploads/documentation/userguide/analysis/analysis_4.png)_\n\nProject to human is checked by default. With this option selected, all non-human identifiers in your query are converted by the analysis service to their human equivalents. In general, this maximizes the chances of a successful match to Reactome’s curated human pathways. However, if you want to use non-human identifiers and match these to our computationally-inferred non-human pathways, uncheck the box. You may also choose to uncheck this box if your query consists of a mixture of human and microbial identifiers and your goal is to find pathways that represent the processes of infection.\n\n‘Include Interactors’ is unchecked by default. With this box unchecked, your query will consider only Reactome pathways. If you choose to check the box, your query will consider Reactome pathways that have been expanded by including all available protein-protein interactors from the IntAct database. This greatly increases the size of Reactome pathways, which maximizes the chances of matching your submitted identifiers to the expanded pathway, but will include interactors that have not undergone manual curation by Reactome and may include interactors that have no biological significance, or unexplained relevance. In practice it is preferable to query with ‘Include Interactors’ unchecked in the first instance, followed by a repeated query with ‘Include interactors’ selected, if a substantial proportion of the submitted identifiers do not match a Reactome pathway, to see if they can be identified as interactors.\n\n#### **Results for Identifier lists without associated numeric values**\n\nIf you submit a single column of protein or small molecule identifiers they are mapped to pathways and over-representation and pathway-topology analyses are performed. The results will resemble the example below.\n\n![analysis 6](/uploads/documentation/userguide/analysis/analysis_6.png)\n\nAnalysis results are shown in the Analysis tab, within the Details Panel. All Reactome pathways are shown, in blocks of 20 pathways, ranked by the p-value obtained from over-representation analysis. If multiple pathways have the same p-value, they are ranked by the number of identifiers in the query that match the pathway. The number of molecules matched/total number of molecules and FDR values are added to the right side of pathway names in the Hierarchy Panel. The names of reactions that match at least one identifier in the query, representing positive pathway topology analysis hits, are boxed in orange. \n\nIn the Analysis tab, clicking on the name of a pathway will select it in the Hierarchy, which if necessary will expand hidden hierarchical levels to show the pathway, while the name becomes highlighted in dark blue. \n\nBy default, molecules of all types (protein, small molecules, genes, transcripts) are used for over-representation analysis, but it is possible to restrict the analysis results to a specific subtype by using a drop-down list located top-left of the results table. Selecting one of the subsets will display results that consider only the selected molecular subtype.\n\n![](/uploads/documentation/userguide/analysis/analysis_7.png)\n\nThe columns in analysis details represent:\n\n 1. Pathway name: Click the name to open the pathway. \n 2. Entities found: the number of curated molecules of the type selected with Results Type that are common between the submitted data set and the pathway named in column 1. Click on this number to display the matched submitted identifiers and their mapping to Reactome molecules.\n 3. Entities total: The total number of curated molecules of the type selected with Results Type within the pathway named in column 1.\n 4. Interactors found (if this option was selected). The number of interactor molecules of the type selected with Results Type that are common between the submitted data set and the pathway named in column 1. Click on this number to display the matched submitted identifiers and their mapping to Reactome molecules.\n 5. Interactors total (if this option was selected): The total number of interactor molecules of the type selected with Results Type within the pathway named in column 1.\n 6. Entities ratio: Put simply, the proportion of Reactome pathway molecules represented by this pathway. Calculated as the ratio of entities from this pathway that are molecules of the type selected with Results Type Vs. all entities of the type selected with Results Type. \n 7. Entities pvalue: The result of the statistical test for over-representation, for molecules of the results type selected. \n 8. Entities FDR: False discovery rate. Corrected over-representation probability.\n 9. Reactions found: The number of reactions in the pathway that are represented by at least one molecule in the submitted data set, for the molecule type selected with Results Type.\n 10. Reactions Total: The number of reactions in the pathway that contain molecules of the type selected with Results Type.\n 11. Reactions ratio: Put simply, the proportion of Reactome reactions represented by this pathway. Calculated as the ratio of reactions from this pathway that contain molecules of the type selected with Results Type Vs. all Reactome reactions that contain molecules of the type selected with Results Type.\n 12. Species Name.\n\nWhen an analysis has run, the Pathway Browser will display the Pathway Overview. All pathways that contain identifiers from your submitted list are highlighted, using a coloured scale to indicate the corrected probability (FDR). The colour scheme can be changed using the colour profiles tab (artists easel icon) on the pop-out Settings panel, found on the right-hand edge of the pathway panel. Selecting coverage in the Overexpression panel will alter the Pathway Overview display to show additional event crosslinks corresponding to areas that are heavily covered vs regions that have lower coverage (as shown in the pValue view), and making it easier to visualize the pathways enriched within your dataset.\n\nThe highlighting of pathways in the Overview provides an at-a-glance representation of analysis results for all pathways. To see the details of a specific pathway, double-click the node representing the pathway in the overview or in the Pathway Hierarchy on the left. Alternatively, click it once to select it and use the Show All button (square with outward pointing triangles inside) in the top left corner of the Overview panel. The Overview can be navigated using the mouse scroll wheel to zoom in and out and click and drag to move it around. Alternatively, use the navigation buttons in the bottom right corner of the overview panel. At any level of the pathway, the diagram key can be found by clicking the compass symbol in the top right corner.\n\n![analysis 8](/uploads/documentation/userguide/analysis/analysis_8.png)\n\nEnhanced high-level diagrams represent analysis results within the label for subpathways. The label background changes from blue to white, a yellow band is used to indicate the proportion of the pathway that is represented in the query dataset. A grey bar above the label indicates the number of pathway entities that are represented in the query dataset, the total number of entities in the pathway, and the FDR corrected probability score\n\n![](/uploads/documentation/userguide/analysis/GlDAvsPmWt5whkyOHX6QCY-aNHyPO6c1HdDzaRGopnB3Jp3kM7R978cQJOMx52Nw4UFO3Nb7d-NLsFXD9hFUxx926SC0bnPDkretnUJ384h9gh1lWojOctJ7QN36DzuIiC-5z95V0gHgDjFCaiEMNQ)\n\nIn Pathway Diagrams, entities are re-coloured (yellow in the default colour scheme) if they were represented in the submitted data set. Complexes, Sets and Subpathway Icons are coloured to represent the proportion that is represented in the submitted identifier list. In the figure below, Insulin receptor is yellow indicating that is was in the submitted list. Insulin was not in the submitted list so it is not re-coloured. The complex of insulin:Insulin receptor is part re-coloured, part not, indicating that some molecules in the complex were represented in the submitted dataset while others were not. \n\n![](/uploads/documentation/userguide/analysis/u2NGQ9IAuHxRfBRuDUU_dl15xGEumbTtfPSmRS8NpiSFXd4RhhiaPjlpvk5Vs4Sq5gjDkAwCcbYQDWvs0x3V7PsST5NaYnAMhfoXOYIAdalzxrnvGlQ0cWIIAPrljG9pyHpBp85wigSNqGu7TvXAjQ)\n\nIf the Include Interactors option was checked, entities with interactors that were part of the submitted identifier list have a ribbon across the top right corner. In the example below, RASA1 is not a direct match with the submitted list of identifiers but has interactors that match the list. The interactors are displayed; the yellow overlay indicates the matching interactors. PTPN11 is a direct match and has interactors that match the list. A limited number of interactors are displayed to avoid crowding.\n\n![](/uploads/documentation/userguide/analysis/_ajYcYFnr08f37kKzWlV4wD8Shw_GuB3u5wsPILxr5zWT667o1wGUzLjR15ZxbPM2RZ5_WqhZE1sDIsoNzCXLRso28_Zb-ExWmu3P3qRlZ0CPqjTVCwrXXqDEud0CoAIHpDBQVNkroI5IyZ7tXv5OQ)\n\nAt the right side of the Analysis results details is a button indicating the number of submitted identifiers that were not successfully matched to molecules in Reactome. Click the button to produce a list.\n\n![](/uploads/documentation/userguide/analysis/mDsHg7HIuPXY1nUcQ-iEVdN9mMxnHtM_lPLJvYr8DF2AudA0NwPf-pM6uCc_1PnKMPNKojcPHbQz_8CcL_H8S8W_5g6MPs9Q2pMlnTAkHDftc32R5v6kes3CPjIWWxVVHUCT-VW1otfLF6otJy_PGA)\n\n#### **Results for Identifier lists with associated numeric values (expression representation)**\n\nTo run expression analysis, submit your data in a format that includes a first row of column headers. The header for column 1 must start with the # symbol. The first column must contain protein, compound or other suitable identifiers, such as probe IDs. All other columns must be numeric values, with no alphabetical characters. The analysis tool will interpret your data as expression data. The numeric values are used to colour objects in pathway diagrams. This view was created for microarray data, but any dataset that consists of a list of identifiers with associated numeric values can be used, e.g. quantitative proteomics, GWAS scores.\n\nThe tool is launched using the Analyse data button in the Pathway Browser header bar. Either paste your data into the submission form or browse to a saved file (or select an example file). \n\nThe figure below shows the correct data format. Each row must have an identifier in the first column (a header row is optional). \n\nThe submission process recognized many types of identifiers. As part of the pre-analysis, they are mapped to equivalent UniProt accessions or for small compounds to ChEBI IDs. These are the ideal identifiers to use with Reactome analysis tools. Other identifiers that are recognized and converted to UniProt equivalents include HUGO gene symbols, GenBank/EMBL/DDBJ, RefPep, RefSeq, EntrezGene, MIM and InterPro IDs, some Affymetrix and Agilent probe IDs, Ensembl protein, transcript and gene identifiers. Identifiers that contain only numbers such as those from OMIM and EntrezGene must be prefixed by the source database name and a colon e.g. MIM:602544, EntrezGene:55718. Mixed identifier lists (different protein identifiers or protein/gene identifiers) may be used. Identifiers must be one per line.\n\nBy default, all non-human identifiers are mapped to their human equivalents, unless the Project to the human checkbox is unselected. \n\nAfter column 1, all other columns must contain numbers, representing expression or other values. Comma-separated values(CSV) and tab separated value (TSV) files can be used. When submitted, columns of numbers are considered as separate samples or experimental conditions. The values are used to overlay colour onto pathway diagrams. An Experiment Browser tool allows you to select and view-overlays for each submitted data column. This tool is the panel that appears in the bottom-centre of both the pathways overview and the diagram viewer when expression data columns have been submitted. In that panel, the user can move through the different time series (and also play it as a \"movie\"). This is particularly useful for visualizing time-points or a disease progression.\n\n![analysis 14](/uploads/documentation/userguide/analysis/analysis_14.png)\n\nThe results may take a few seconds to appear. \n\nThe results page is very similar to that seen following submission of a simple one-column list of identifiers, with extra columns in the Analysis details following column 9. These extra columns represent the submitted expression values. \n\nClicking on a pathway name launches the Pathway Browser and displays the relevant Pathway Diagram (see example below).\n\n![](/uploads/documentation/userguide/analysis/orjrg14PWCLt0fEaDvf9lItRpNgIM8UJ3mzPy_e7ChidXP5fMPH48j5cxRC-UGX84tJSlB1sxdA6uZI0-31CBaFpX0bDCWP0nx6H43rrt1RRYJmtvbvxon_o58u0wz5OhhCMWb9sADOzaSjaT8N89g)\n\nObjects in the Pathway Diagram are re-coloured according to the numeric values submitted. The colours are based on a scale as represented in a bar on the right-hand side. There are several colour schemes, selected using the Settings pop-out panel on the right side. The scale (on the right side) automatically adjusts to fit the range of values in the dataset.\n\nObjects that were not represented in the input data are not re-coloured.\n\nObjects with bands of colour represent complexes or sets containing more than one molecule. When zoomed out, the colour of the band reflects the average of the values submitted, for molecules represented in the dataset. The size of the band reflects the proportion of molecules that had submitted values. Zoom in to see individual bands, for each molecule that had a submitted value, arranged alphabetically by name. The bands of colour now reflect the values submitted. If multiple columns of values were submitted, representing multiple samples, e.g. time-points or a disease progression, the order of the bands will be the same for each sample.\n\nTo view details of the components of a complex or set right click it. This opens a Contextual Information Panel (CIP) (see figure above). This has two tabs - Molecules and Pathways. Molecules show the participating molecules, and if an expression analysis has been performed, their expression values. Pathways identify whether the selected object is present in any other Reactome pathways, with links to the appropriate Pathway Diagrams.\n\nMultiple CIPs can be opened and pinned so they remain visible when other entities are selected.\n\nThe browser remembers CIPs that were pinned on the last visit (for up to 5 diagrams).\n\nThe orange Experiment Browser toolbar (bottom left in the figure above) is used to step through the columns of your data, e.g. time-points or disease progression. Move between them by clicking the arrow buttons. The header of the data column (if present) is displayed between the arrows. The Pathway Diagram will re-colour to reflect the new values.\n\nFor an explanation of the results seen in the Identifier results tab see the explanation in the section Results for Identifier lists without associated numeric values.\n\n#### **Analysis Token**\n\nOnce the analysis is finished, this data structure can also be serialised to a bin file to persist the result. In addition, associating the file to a token provides an easy way to access the data.You can keep the token once the initial analysis is finished and the results are only temporarily available for 7 days unless you re-perform your analysis with the same data. However, the analysis results will disappear after each quarterly update of the Reactome data. At this time, analysis result links and tokens will no longer work anymore duo to the data update, we recommend you to save the analysis results report(PDF) for future use.\n\n#### **Analysis Report**\n\nFor some of our users, it might be important to preserve a pathway analysis for the long-term. Following the pathway analysis, the results can be downloaded as an easy-to-read PDF report by clicking the ‘Report (PDF)’ button located at the bottom left corner of the Details panel. The first page of the PDF report will look something like this:\n\n![analysis 16](/uploads/documentation/userguide/analysis/analysis_16.png)\n\nThe sections of the analysis report represent:\n\n 1. Introduction: An overview of the Reactome project and the Analysis tool.\n 2. Properties: A summary details of the analysis output. For example, the number of identifiers that were found in Reactome. \n 3. Genome-wide overview: A genome-wide overview of the results of your pathway analysis.\n 4. Most significant pathways: A table of the top 25 pathway hits. Results are ranked based upon the most significant FDR value. The embedded links within the pathway name of the table will connect to the Pathway details (Section #5).\n 5. Pathway details: A summary view of each pathway hit. The pathway identifier in parenthesis when clicked will connect with the Pathway details page on the Reactome website. A pathway diagram, pathway summation, edit history, list of identifiers found, and references (when available) are also provided.\n 6. Identifiers found: A table of the synonyms or identifiers that were found in Reactome based upon the input list.\n 7. Identifiers not found: A table of the synonyms or identifiers that were not found in Reactome based upon the input list.\n\n#### **Analysis Gene Expression**\n\nReactomeGSA is a new pathway analysis tool integrated into the Reactome ecosystem. Its main feature is that it performs quantitative pathway analyses (so-called gene set analyses). This increases the statistical power of the differential expression analysis, which is directly performed on the pathway level. More information click [here]().\n\n#### **Species Comparison**\n\nThe manually-curated human pathways in Reactome are used to predict equivalent pathways in 18 other species. This automated, computational process is based on orthology. A full description of the inference process can be found on the Home page under Documentation, Orthology Prediction.\n\nThe Species Comparison tool allows you to compare human pathways with computationally-predicted pathways in model organisms, highlighting the elements of the pathway that are common to both species and those that may be absent in the model organism. \n\nSpecies Comparison is launched using the Analysis button in the Pathway Browser header bar. In the Species Comparison section, select one of the species in the dropdown list. Click the Go button:\n\n![analysis 10](/uploads/documentation/userguide/analysis/analysis_10.png)\n\nThe results are ready to view when analysis results appear (or are updated if already present) in the Pathway Hierarchy. \n\nClicking on a pathway name launches the Pathway Browser and displays the relevant Pathway Diagram (see example below).\n\n![](/uploads/documentation/userguide/analysis/XDSC8LoPLGyALKNnGZYmucqZADPRZRzP-YShLpFFEzjrRmv11pHrmO1MuKbCU_yVSfSKpR1imlw1RQW3enE7ODi6DBbEyxTiXKxJuOUfj5GEJJZIDSUvOkcwGLe4ux3PwsgIKKmzqZl___V2vIcI5w)\n\nThe colour of reaction objects indicates the result of the comparison:\n\n * Yellow indicates that the protein has an inferred equivalent in the comparison species.\n * No overlay indicates that inference was not possible. This is always the case for small molecules, DNA and other objects that have no UniProt entry (or did not at the time the pathway was constructed).\n * Objects with bands of colour represent complexes or sets containing more than one molecule. The bands of colour reflect the inference success for the molecules within the complex/set.\n\nTo view species comparison results for a complex or set hover your mouse over the object and a small blue triangle will appear on its right side. Select this to open the Contextual information Panel.\n\nThis reveals a table representing all the proteins involved in the complex/set. Each square in the grid represents one component of the complex/set, coloured as described above.\n\n![](/uploads/documentation/userguide/analysis/FOrq-w7mqvFTEM9xHMaREoXw4e1ZMc-Fv6kAjk2deku4nduY3UDyHYUAXdViDJsG4N0PZpP51lzritSoUsKO0Yb-ZgFWNX3QVOVGzfqTx-TvaZpGC6F2Imw7P28p14asvKVhyeSL8nZBQALzIL2cgQ)\n\nThe species bar at the bottom of the Pathway Diagram (see example above) can be used to turn off species comparison colouring, by unchecking the box. \n\nRefer to the Navigating Pathway Diagrams section for more information on the diagram content.\n\n#### **Tissue Distribution**\n\nTraditionally, reactions in Reactome represent events that occur within a single generic human cell. It would, however, be useful to classify reactions into different human tissue types, as to provide an evolving picture of the reactions and pathways in different cell- and tissue-specific environments. We have imported protein expression in different cell/tissue types from the [Human Protein Atlas]() (HPA), overlaid these proteins on Reactome data, and extracted the subset of reactions for that particular cell type. The HPA data reflecting the expression of the protein-coding genes in 44 different human tissues can be visualized through the Analysis tools.\n\n### ![analysis 17](/uploads/documentation/userguide/analysis/analysis_17.png)\n\nTissue Distribution is launched using the Analysis button in the Pathway Browser header bar. In the Tissue Distribution section, select the one experimental tissue dataset [HPA (E-PROT-3) - Expression Atlas] in the dropdown list. Once the window refreshes, select the 'Available Tissues' in the left panel and hit the 'Add' button to add tissue expression data to the analysis tool. Press the \"Add All' button, if you would like to adjoin all the tissue expression data. Use the 'Remove all' and 'Remove' buttons to delete tissue expression data from the filter list. Once you have selected all the appropriate tissues, click the Go button to start the analysis.\n\n![analysis 18](/uploads/documentation/userguide/analysis/analysis_18.png)\n\nThe results are ready to view when analysis results appear (or are updated if already present) in the Pathway Hierarchy and the Overview panel.\n\n![analysis 19](/uploads/documentation/userguide/analysis/analysis_19.png)\n\nClicking on a pathway name launches the Pathway Browser and displays the relevant Pathway Diagram (see example below).\n\n![analysis 21](/uploads/documentation/userguide/analysis/analysis_21.png)\n\nObjects in the Pathway Diagram are re-coloured according to the numeric values submitted. The colours are based on a scale as represented in a bar on the right-hand side. There are several colour schemes, selected using the Settings pop-out panel on the right side. The scale (on the right side) automatically adjusts to fit the range of values in the dataset.\n\nObjects that were not represented in the input data are not re-coloured.\n\nObjects with bands of colour represent complexes or sets containing more than one molecule. When zoomed out, the colour of the band reflects the average of the values submitted, for molecules represented in the dataset. The size of the band reflects the proportion of molecules that had submitted values. Zoom in to see individual bands, for each molecule that had a submitted value, arranged alphabetically by name. The bands of colour now reflect the values submitted. If multiple columns of values were submitted, representing multiple samples, e.g. time-points or a disease progression, the order of the bands will be the same for each sample.\n\nTo view details of the components of a complex or set right click it. This opens a Contextual Information Panel (CIP) (see figure above). This has two tabs - Molecules and Pathways. Molecules show the participating molecules, and if an expression analysis has been performed, their expression values. Pathways identify whether the selected object is present in any other Reactome pathways, with links to the appropriate Pathway Diagrams.\n\nMultiple CIPs can be opened and pinned so they remain visible when other entities are selected.\n\nThe browser remembers CIPs that were pinned on the last visit (for up to 5 diagrams).\n\nThe Experiment Browser toolbar (bottom left in the figure above) is used to step through the columns of your data, e.g. time-points or disease progression. Move between them by clicking the arrow buttons. The header of the data column (if present) is displayed between the arrows. The Pathway Diagram will re-colour to reflect the new values.\n\nClicking on the illustration icon (photo-like icon in the top right of the Pathway Browser) displays the relevant Pathway Illustration (see example below).\n\n![analysis 20](/uploads/documentation/userguide/analysis/analysis_20.png)\n\n### \n\n### Getting Started\n\n### Pathway Analysis **Exercises**\n\nThis exercise is to check that you understand the results of Pathway Analysis.\n\nOn the Home page, open the Pathway Browser. Click on the Analyse Data button. When the submission form appears, in the Analysis Tools section select ‘Click here to paste your data or try example data sets…’\n\n…and click on the UniProt accession list button on the right side. \n\nYour submission page should look like this:\n\n![](/uploads/documentation/userguide/analysis/dBXvqrzfG5X_f4IjDdOt_kR1erNp83Jc7Ep-xjoktrS0go6Xxr_t5jaZOAf8XEatzqrgen7dh-PIGSvpNtvHzkp4cjDn6fzUm7RTSdcrWw2FdA67n4P-45zHF0DYPM-PyE2SO94f38qrrxaSJ5A6Gw)\n\nClick Continue. Make sure that Project to human is checked, but Include interactors is not. When the results appear:\n\n 1. What pathway(s) is (are) most over-represented in this dataset? \n 2. How many IDs match the pathway at the top of the list?\n 3. Roughly what proportion of molecules in the pathway are matched?\n 4. What proportion of reactions are matched?\n 5. Repeat the analysis but this time check the box to Include interactors. Are the results the same? If not, why?\n\n### \n\n### Expression Analysis **Exercises**\n\nThis exercise is to check that you can run and interpret the results of Expression Analysis.\n\nLaunch Expression Analysis and load the example dataset. Click GO When the results are displayed, find the pathway DNA Repair, \n\n 1. How many proteins are in this pathway?\n 2. What proportion of these had expression data?\n 3. What was the average expression at 24h?\n 4. Which subpathway has the highest average expression value at 24h? (Hint: move your mouse pointer over the pathway overview diagram, and look at the scale on the right side). \n\n### Species Comparison **Exercises**\n\nThis exercise is to check that you can run and interpret Species Comparison results.\n\nLaunch Species Comparison and select the species Danio rerio. When the results are displayed, use the Pathway Hierarchy to Navigate to ‘Hemostasis’, ‘Dissolution of fibrin clot’. \n\n 1. Find PLAT(36-562) top-right of the diagram - what colour is it and why? \n 2. Find HRG - what colour is it and why?\n 3. Why is Zn2+ (upper left) uncoloured?\n\n### **More information**\n\n### **Molecular Interaction Overlay**\n\nIf the user is interested in analyzing the data with interactors from other sources (like IntAct), the ‘Include Interactors’ options must be selected in the ‘Analyze Data’ section. Once in the pathway diagram, the Molecular Interaction (MI) overlay allows protein-protein or protein-small molecule interactions to be superimposed onto the pathway diagram. The source depends on the currently selected interaction database. The default interaction database is IntAct (Static), which provides fast access to a quarterly updated and locally-hosted version of IntAct data. Access to the IntAct-hosted dataset and other PSICQUIC sources of interaction data (protein-protein and protein-small molecule) can be selected using the ‘PSICQUIC’ feature of the Interactor Overlays tab within the Settings panel in the middle-right of the Pathway diagram. A list allows selection of the source of interactors. This is automatically populated by querying the PSICQUIC Registry. If a new database is selected while interactors are displayed on the pathway diagram, the proteins represented by those entities will be used as queries in the new database and the display will automatically update. An ‘i’ (‘information’) button to the top right of the Interactor Overlays tab provides a quick tip about using the MI overlay. Selecting either ‘Cyan’ or ‘Teal’ in the ‘Interactors Colour Profile:’ drop-down menu within the ‘Colour Palette’ feature of the Settings panel will change the interactor colour.\n\n![](/uploads/documentation/userguide/analysis/xH_T-TtBBWGoPtjw1k624JQmYElHOmxuoyIp0BU1kTZInmBaet8nBD9ON-zwX4ZXR7DhLm-CxF4fgtonOdgigLMBtNT2GTY6tUsiwEep_mYbPC1z2ytkNVQpoXO7sCGtg7p9UvZlolhla5BAsEVV_g)\n\nOnce a pathway diagram is displayed in the viewport, a small red circle with a white-lettered number in the top right corner of the entity will automatically appear for individual protein and chemical entities that have interactors. The number represents the number of known interactors for the given protein. Pressing the red circle with the cursor will display the interactors. A maximum of 10 interactors is displayed as a ring of blue-bordered boxes (protein interactors) or green-bordered ovals (small molecule interactors) connected by black lines to the selected protein. If the same interactor is connected to more than one entity it is re-used, i.e. connected to all the selected entities in the diagram. Furthermore, if the interactor is a protein or small molecule entity that pre-exists within the pathway diagram, a black line connects the two entities. Pressing the red circle a second time will remove the interactors from the pathway diagram. If an entity interacts with itself, a looping arrow is shown.\n\n![](/uploads/documentation/userguide/analysis/MrRSfPJ61nz8BgXn_Jz6tORuPhNsVVilXQfaO_IznC50hLmr97RFlEgsS5yi6qCu8r-0VUqzQYMhTqLAgtcmkbNCEmMXiWEj_KW2R513v3o6tbCPFV8hFKwJYarE7HMw3y1y97Cvx747WMltVHv77A)\n\nA number of actions provide additional information about the interactor and its relationship to the protein entity. These include:\n\n * Hover the mouse pointer over a protein interactor to reveal a tool-tip containing its name and UniProt identifier.\n * Click an interactor to open its database entry in a new window.\n * Click the line that connects the interactor to the pathway molecule to open details of the interaction from the source database, in a new window.\n * Right-click a pathway object, or select the blue triangle that appears on the right side when hovering the mouse pointer over it, to open a pop-up panel (the Contextual Information Panel). Select the Interactors (bottom) tab to display a table of all interactors for the selected object. This table is scrollable and provides additional information about the interactors. Click the ‘Interactor’ name or accession identifier to connect to UniProt or the interaction source database, respectively. Click the ‘id’ button to toggle the display of either the interactor name or its database identifier. Click the pin button to fix the open table in position on the pathway diagram. Click the ‘X’ in the top right corner to close the table view.\n\n![](/uploads/documentation/userguide/analysis/wpQ--wcVMOV4Nu2u745uSwz8n0g0hQbcN3wJ-8MiGYeoOKcBZkTLQwBlOO4FQXt2m_6gPSf1wMmpAHSOrPeJans1pm1wvyKsoeq7_HdQscm3TvWrhD6Kc6PT4_hXjSs77CJeF4cBGX0syAWILhIQHw)\n\nInteractions from the IntAct database have confidence scores that are generated as the cumulated sum of a weighted score that depends on the interaction detection method and the number of observations. The default lower threshold is 0.45. Interactions with a confidence level equal to or above this are shown. Move the slider bar in the Molecular Overlay toolbar (light grey bar with dark grey slider found at the bottom of the pathway diagram) to the right to raise the confidence level threshold. Interactors below the displayed confidence level will progressively disappear. Move the slider to the left and the interactors will reappear. Click the ‘X’ in the Molecular Overlay toolbar to hide it.\n\n![](/uploads/documentation/userguide/analysis/0rpwIeHiu4Dh81Rh6FEjtnp5hZDfaGcp2hZkMCczq-vCUeRDPS4_3yz9zktbPZQlkD6SXqMyEKCgRw_MndlWtrggXF4Ou5JA077n921kXNJ8fxN49jg08fB7KT3D7F8AYFjOyy4jsT9PODHukPQuQw)\n\nZooming, either by using the controls in the bottom right corner of the Pathway Diagram or the mouse scroll wheel, increases the size of all objects displayed in the pathway diagram including interactors. When a sufficient size is reached, the crystal structure of proteins or chemical structure of small molecules will appear in the interactor object, if available.\n\n![](/uploads/documentation/userguide/analysis/pUz7ovdDJ6mXTxE3w0RI0eb3k_fOifotSRsSXNhkRkS-9QGkg1zlKGlWaQox7rCxvloL1mQvOJ4KraXK25ebN9613dwOPsYi9pTTVuPC7ezI8eJK30FKuzp2s_HBTN-tdsb213fS2jR1t_TILLDs_g)\n\nThe details of every interactor for every protein in the displayed pathway can be downloaded as a tab-delimited file by clicking the ‘Cloud’ button on the Molecular Overlay toolbar or from the Interactor Overlays tab in the Settings panel.\n\n### Molecular Interaction Overlay **Exercises**\n\nThis exercise is to check that you can use and interpret Molecular Interaction Overlays\n\nOpen the Pathway Diagram for Netrin-1 Signaling.\n\n 1. Find the protein NEO1 (top left of the cytosol). How many interactors does it have? \n 2. What is the confidence score for the interaction between NEO1 and GD3? How many times has this interaction been documented? Hint: This detail is not in Reactome.\n 3. Find the protein PTPN11 (below and to the right of NEO1). How many interactors does it have? Display interactors for this protein. How many are there? Can you get a list of all of them?\n 4. What is the easiest way to remove interactors?\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/userguide/analysis/gsa.json b/projects/website-angular/content-dist/documentation/userguide/analysis/gsa.json new file mode 100644 index 00000000..0cb4a63c --- /dev/null +++ b/projects/website-angular/content-dist/documentation/userguide/analysis/gsa.json @@ -0,0 +1 @@ +{"title":"ReactomeGSA","category":"documentation","body":"\n## ReactomeGSA \n\n#### \n\n#### Quantitative, multi-dataset Pathway Analysis (ReactomeGSA)\n\nReactomeGSA is a new pathway analysis tool integrated into the Reactome ecosystem. Its main feature is that it performs quantitative pathway analyses (so-called gene set analyses). This increases the statistical power of the differential expression analysis, which is directly performed on the pathway level.\n\nReactomeGSA can analyse multiple datasets simultaneously resulting in a comparative pathway analysis. Thereby, it is possible to quickly assess whether the same effect was observed in independent experiments or studies.\n\nReactomeGSA currently supports quantitative proteomics, transcriptomics, and microarray data. Datasets from all of these methods can be combined in a single analysis. Thereby, ReactomeGSA can perform multi-omics pathway analyses.\n\n#### Using ReactomeGSA\n\nWe currently offer three ways to access ReactomeGSA:\n\n 1. Reactome’s web-based pathway browser (see below)\n 2. From R using our ReactomeGSA Bioconductor R package (see [here]())\n 3. Programmatically, using the ReactomeGSA API at []()\n\n> #### **Analyze Gene Expression using ReactomeGSA**\n\nYou can visit ReactomeGSA [here](). When you click on the “Analyse gene expression” tab of the Analysis Tools, you will be redirected to ReactomeGSA, where you can perform analyses.\n\nThe following tutorial will show you how to: navigate to ReactomeGSA, submit data for analysis, annotate your data, and perform your first analysis. This following tutorial shows a simplified analysis workflow.\n\n\n\n#### ReactomeGSA Analysis Algorithms \n\nIn this first screen, you need to select the algorithm to use for the differential pathway analysis. At the time of writing, ReactomeGSA offers three algorithms. PADOG and Camera perform a differential expression analysis between two groups of samples. ssGSEA is a so-called gene set variation approach that returns pathway-level quantitative data for each sample.\n\nThe detailed parameters for each algorithm can be adapted by clicking the blue icon on the left of the algorithm’s box.\n\n#### Adding datasets\n\nAfter clicking “Next”, you are presented with the now empty list of datasets. Click the “+ Add dataset” button to add a new dataset.\n\nFirst, you have to select the type of dataset you want to load.\n\nTo upload your own data, select one of the options under “Select a file from a local folder”. The file must be a tab-delimited text file (CSV or TSV file) where the first column contains the gene or protein identifiers and all subsequent columns the respective samples. The first row contains the sample names and all subsequent rows the genes / proteins.\n\nTo test the tool, it is possible to quickly load example data. Currently, ReactomeGSA provides three example datasets, two (matched) datasets on melanoma associated B cells (proteomics and transcriptomics measurements) and one scRNA-seq dataset on B cells.\n\n#### Annotating experimental metadata\n\nOnce a dataset is added, you need to annotate the experimental metadata. This is necessary in order to define the groups for the differential expression analysis in the next step.\n\nYou can adapt the dataset’s name in the “Dataset name” box at the top. This name will be used for all results. To increase the readability, we suggest to use as short names as possible.\n\nIn case you load data from ExpressionAtlas or choose one of the example datasets (as shown in the screenshot) the sample annotation table will already be pre-filled with certain metadata. In case you uploaded your own dataset, the table will only show the orange sample labels on the left.\n\nTo add an annotation, click the “plus” symbol on the right. This will add a new empty column to the table. First, add a heading to define the name of the property (for example, “treatment”). Next, add the values for every sample that you want to include in your comparisons. Samples without any values will simply be ignored.\n\n#### Defining the experimental design\n\nIn the final step of adding a dataset, you have to define which groups to compare. The “comparison factor” drop-down menu contains all parameters that were annotated in the sample table before (if they contain at least two different values). “1st group” and “2nd group” define which groups of samples to compare against each other. The 1st group is the control or baseline. \n\nDepending on which “comparison factor” you select, the available values for the “1st group” and “2nd group” will change automatically.\n\nAdditionally, some gene set analysis methods allow you to define so-called “covariates”. These are parameters that might cause a bias in your result (ie. the sequencing facility used) that you would like to correct for. Simply select the relevant ones for your experiment.\n\nOnce you click “Continue” you will be returned to the list of datasets where you will now see your annotated dataset in the list. If you want, you can add any number of datasets to a single request.\n\n#### Starting the analysis\n\n“Create REACTOME visualizations” is always selected. If it is de-selected, the result cannot be visualised in Reactome’s pathway browser. This option is generally only relevant to users of the [ReactomeGSA R package]().\n\nIf you select “Create reports” ReactomeGSA will automatically create a Microsoft Excel and PDF report of your results. Additionally, it will create a short R script that allows you to load your data directly into an R session.\n\nIn case you provide your email address, you are automatically notified as soon as the analysis is complete. The mail will contain direct links to the generated reports (if you chose to create them) and a link to the visualisation in the PathwayBrowser.\n\nLaunch the analysis by clicking the “GO” button.\n\nIf you provided an email address, you can also close your browser. The analysis will still continue on our servers and you will be notified as soon as it is done. Some analysis with many large datasets (for example comparing five TCGA datasets in a single analysis) may require up to an hour to complete.\n\n> #### Loading Public Datasets\n\nThe following tutorial will show you how to: load public data for analysis from EBI Expression Atlas, EBI Single Cell Expression Atlas, GREIN and GEO data. \n\n\n\nFinally, it is possible to directly load datasets from several sources.\n\n 1. ExpressionAtlas. To do so, first navigate to ExpressionAtlas (in a separate tab or window) at [](). Once you have identified a dataset of interest, you can get the dataset’s id by opening the dataset and copying the portion after “[www.ebi.ac.uk/]()” and before the next “/”. For example, if you opened []() the identifier of this dataset would be “E-MTAB-6592”. \n \n\n 2. Single Cell Expression Atlas. For single-cell experiments you additionally have to define the parameter “k” in order to define which clusters should be used. The effect of “k” on the results can be visualised on the first page of the respective single cell experiment in ExpressionAtlas (see []()). In this case, the dataset identifier would be “E-MTAB-7008\" and a possible value for “k” would be 10. \n \n\n 3. GREIN data. The accession ID is provided in the URL. \n 4. GEO Microarray data. After choosing the Pathway algorithm the user can choose public datasets in the \"Public datasets\" panel and the \"GEO query\" section to fetch public microarray data via the GEO accession id. e.g. GSE1563. In the process the data is fetched directly from the GEO database and can be annotated, downloaded and analysed within the ReactomeGSA workflow. \n\n> #### Citing ReactomeGSA\n\n#### **If you use ReactomeGSA in your research, please cite the following publication:**\n\nReactomeGSA - Efficient Multi-Omics Comparative Pathway Analysis\n\nJohannes Griss, Guilherme Viteri, Konstantinos Sidiropoulos, Vy Nguyen, Antonio Fabregat, Henning Hermjakob\n\n_Mol Cell Proteomics._ 2020 Dec; 19(12): 2115–2124; [Link]()\n\n#### **If you use ReactomeGSA's data integration, please cite the following publication:**\n\nReactomeGSA: new features to simplify public data reuse\n\nAlexander Grentner, Eliot Ragueneau, Chuqiao Gong, Adrian Prinz, Sabina Gansberger, Inigo Oyarzun, Henning Hermjakob, Johannes Griss\n\n_Bioinformatics_ , Volume 40, Issue 6, June 2024; [Link]()\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/userguide/claim-your-work.json b/projects/website-angular/content-dist/documentation/userguide/claim-your-work.json new file mode 100644 index 00000000..bfe65643 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/userguide/claim-your-work.json @@ -0,0 +1 @@ +{"title":"Tutorial: How to claim your works","category":"documentation","body":"\n## Tutorial: How to claim your works \n\n * [Find yourself in Reactome](<#guide>)\n * [I have an ORCID ID but it is not in Reactome. What should I do ?](<#missing_orcid>)\n\n### Find yourself in Reactome\n\n 1. The simple text search tool is located at top right of the Home page. To search type your name or ORCID. The search has an auto-complete function; if the text you wanted to use appears in the drop-down list, select it and results will be displayed. For other text click Search. \n![search box](/uploads/documentation/userguide/claim-your-work/search_box.gif)\n 2. Locate yourself in the Result List and Click your name. \n![name in result list](/uploads/documentation/userguide/claim-your-work/name_in_result_list.png)\n 3. You'll land in the Contributor's page. You may see up to four categorized tables showing a maximum of 15 rows each. \n![are you orcid login](/uploads/documentation/userguide/claim-your-work/are_you_orcid_login.png)\n 4. In order to claim your work you may need to Authenticate yourself in ORCID, in a similar way like others websites offer 'Sign in with Google', 'Sign in with Facebook'. Simply click \"Are you John Doe ?\". A pop-up like to the one below will open. Please input your ORCID credentials, then Click Sign-in. \n![orcid login dialog](/uploads/documentation/userguide/claim-your-work/orcid_login_dialog.png)\n 5. Reactome.org will ask your permission to add works into your ORCID records. Authorize if you wish to grant access, otherwise we can't have access to \n![orcid authorise reactome](/uploads/documentation/userguide/claim-your-work/orcid_authorise_reactome.png)\n 6. After authorizing, we will automatically proceed with the authorization process and the pop up will be closed and current page will be refreshed. A button \"Claim all Work\" may appear next to your ORCID number if we are able to match ORCID IDs. Click it to make sure all your contributions are uploaded. \n![claim all work](/uploads/documentation/userguide/claim-your-work/claim_all_work.png)\n 7. Depending on the number of entries you are uploading it may take a few minutes. You may see a Claiming Summary when the entire process is finished. \n![claiming summary](/uploads/documentation/userguide/claim-your-work/claiming_summary.png)\n 8. Visit your ORCID page and Navigate to the Works Section. \n 9. All your work now is uploaded.\n\n### I have an ORCID ID but it is not in Reactome. What should I do ?\n\n 1. Follow intructions 1 to 5 in the previous section.\n 2. You may see a Link \"Let us know your ORCID\". Please Click. \n![let us know link](/uploads/documentation/userguide/claim-your-work/let_us_know_link.png)\n 3. After clicking, use the following form to send your ORCID details to our curators. Our help team will validate and add your ORCID into our database and will be available to you on our next data release. Follow us on Twitter for any updates. \n![let us know form](/uploads/documentation/userguide/claim-your-work/let_us_know_form.png)\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/userguide/cytomics.json b/projects/website-angular/content-dist/documentation/userguide/cytomics.json new file mode 100644 index 00000000..8fe6e98c --- /dev/null +++ b/projects/website-angular/content-dist/documentation/userguide/cytomics.json @@ -0,0 +1 @@ +{"title":"Cytomics","category":"documentation","body":"\n## Cytomics \n\n#### Introduction\n\nHuman bodies are built of >30 trillion cells specialized to fulfill diverse roles within our tissues, organs, and organ systems. All these cells originate from a single cell, a zygote formed at conception. From zygote to fetus, and throughout childhood, adolescence, and adulthood, cells divide and commit to different fates in order for the organism to develop, sustain and regenerate. The series of steps that lead from an undifferentiated progenitor cell, such as a stem cell, to one of a number of possible specialized descendants constitutes a cell lineage path. Recent technological advances have allowed researchers to collect high-throughput omics data from single cells of multicellular organisms and use it to track and manipulate cell fates [(Burgess 2018; Saelens et al. 2019)](). This opens the door to the possibility of deciphering cell lineage paths at single-cell resolution, a critical requirement for the advancement of regenerative medicine and cancer medicine.\n\nResearchers who conduct experiments that involve cell lineage tracing through the study of genomic, epigenomic, transcriptomic, and proteomic features of single cells currently expend significant effort extracting information from published sources to create short-lived, limited-scope local annotations of biological markers that are needed to interpret and analyze their high-throughput experimental data. This creates the urgent need for an open source, comprehensive, continuously maintained reference repository of cell lineage paths framed on the pre-existing knowledge of tissue morphogenesis, as well as a cell type-specific pathway resource, which can serve as a framework for interpretation and integration of the latest experimental findings. \n\nCytomics Reactome aims to become an integrative systems biology resource of cell lineage paths and a toolset for the analysis of single-cell omics data. The Reactome web application and pathway visualization tools [(Croft et al. 2011)]() have been extended to enable Cytomics Reactome visual display and search functions (Milacic et al. 2024) on the live website.\n\n#### Database schema features to support Cytomics\n\nThe Reactome data model provides a robust framework for the annotation of biological entities and events [(Joshi-Tope et al. 2005)](). The basic unit of the Reactome data model is a Reaction, an event that converts input to output physical entities. The participants in reactions are PhysicalEntities, which can be simple or complex molecules or molecular complexes. These PhysicalEntities can also act as reaction catalysts and regulators. Reactions are grouped into causal chains to form Pathways [(Joshi-Tope et al. 2005)]().\n\nThe Reactome data schema was expanded as described below to accommodate new classes needed for Cytomics Reactome annotations.\n\n * Cell: A subclass of PhysicalEntity, represents a type of cell in a particular state of development/differentiation (Figure 1A). \n * A Cell instance has CellType, TissueLayer, Tissue, and Organ as single-valued attributes which are populated using terms from public open source databases, the Cell Ontology [(Sarntivijai et al. 2014; Osumi-Sutherland 2017)]() and UBERON [(Haendel et al. 2014)](), and cross-reference these databases.\n * Cell instances also have multi-valued ProteinMarker and RNAMarker attributes, which are specific to the cell type and/or the cell state or are differentially upregulated in the Cell. (Figure 1B). The markers (protein or RNA) are manually curated; each marker instance is associated with one or more literature references for evidence, including, if applicable, citations of CellMarker (Hu et al. 2022) and PanglaoDB databases (Franzén et al. 2019) (Figure 1B) \n\n![Figure 1. Cell Physical Entity class A and new attributes B](/uploads/documentation/userguide/cytomics/Figure_1.png)\n\n**Figure 1**. Cell Physical Entity class A and new attributes B\n\n * Cell Development Step and Cell Lineage Path are two Event subclasses (Figure 2A), that describe developmental/differentiation relationships among Cells: \n * A Cell Development Step is a ReactionLikeEvent that contains Cell instances as its inputs and outputs. The input attribute represents the cell of origin, and the output attribute represents the destination cell type. Additional Cell Development Step attributes include regulators (molecules promoting or inhibiting the step) and required input components (input cell proteins required for the action of regulators) (Figure 2B). \n * A Cell Lineage Path, organizationally similar to the preexisting Pathway subclass, is composed of other Cell Lineage Path instances or Cell Development Steps as subevents that are connected through shared input/output Cells (Figure 2C).\n * Both Cell Development Step and Cell Lineage Path are associated with a relevant Gene Ontology (GO) biological process term [(The Gene Ontology Consortium 2019)]() and with a “tissue” term from UBERON [(Haendel et al. 2014)]().\n\n![Figure 2](/uploads/documentation/userguide/cytomics/Figure_2.png)\n\n**Figure 2.** Cell Development Step and Cell Lineage Path schema (A) and attributes (B,C).\n\nThe Cytomics content is searchable on the Reactome website. Running a search from the homepage search bar may list hits within various categories including pathway, reaction, complex, and cell. Clicking on an item in the search results list will redirect to a Details page, which displays more information about the specific record.\n\n * For example, a details page for Cell (Figure 3A) includes information on location in the pathway hierarchy, cell type, and histological description of the given cell with ontology terms, a list of protein and RNA markers, and corresponding literature references for each marker. A scroll bar appears when there are more than 5 markers in the same category. The page also lists event(s) (i.e., Cell Development Step), in which the Cell participates as an input/output. \n * Clicking on marker or Cell Development Step, will redirect to the details page of the marker or event respectively. \n * Clicking on the Cell in the expanded hierarchical view of the Developmental Biology pathway (Figure 3B) in the details page, will redirect to the Pathway Browser view highlighting the Cell Lineage Path in the hierarchy panel and showing the selected Cell in the pathway diagram.\n\n![Figure 3A. Details page for Cell ](/uploads/documentation/userguide/cytomics/Figure_3A.png)\n\n**Figure 3**. Details page for Cell (A)\n\n![Figure 3B. expanded view of the Cell location in the Pathway Browser B . ](/uploads/documentation/userguide/cytomics/Figure_3B.png)\n\n**Figure 3**. Expanded view of the Cell location in the Pathway Browser (B)\n\n * See the details pages for marker instance (Figure 4), Cell Development Step (Figure 5), Cell Lineage Path (Figure 6) below. \n * The content of individual events can be exported from the event’s details pages (Figure 5, 6) as SBML, PDF, SVG, PNG, PPTX, SBGN files.\n\n![ Figure 4. Details page for Marker instance](/uploads/documentation/userguide/cytomics/Figure_4.png)\n\n**Figure 4**. Details page for Marker instance\n\n![Figure 5. Details page for Cell Development Step](/uploads/documentation/userguide/cytomics/Figure_5.png)\n\n**Figure 5**. Details page for Cell Development Step\n\n![Figure 6. Details page for Cell Lineage Path](/uploads/documentation/userguide/cytomics/Figure_6.png)\n\n**Figure 6**. Details page for Cell Lineage Path\n\n#### Navigation of a Cell Lineage Path in the Pathway Browse\n\nCell Lineage Paths are available under the “Developmental Biology” pathway in the Reactome Pathway Browser, where they are grouped in the “Developmental Cell Lineages” subpathway (Figure 7). \n\n \nAlthough the pathway diagram depicts a selection of cell types that are planned for annotation, only one type has been annotated so far and this is indicated by a selectable blue box label in the diagram.\n\n![Figure 7. Pathway browser view of Developmental Cell Lineages subpathway](/uploads/documentation/userguide/cytomics/Figure_7.png)\n\n**Figure 7.** Pathway browser view of “Developmental Cell Lineages” subpathway\n\nSelecting an individual Cell Lineage Path in the pathway hierarchy will display all Cell Development Steps of the selected path in the pathway diagram (Figure 8). An individual Cell is depicted with a double-layered outer compartment representing the plasma membrane and the cytosol, along with an inner blue rectangle symbolizing the nucleus.\n\nThe Description tab in the Details panel of a selected Cell Lineage Path provides additional information about the Cell Lineage Path including name, species, assigned GO Biological Process term (if applicable), and literature reference(s) (Figure 8).\n\n![Figure 8. Selecting a Cell Lineage Path from the pathway hierarchy](/uploads/documentation/userguide/cytomics/Figure_8.png)\n\n**Figure 8.** Selecting a Cell Lineage Path from the pathway hierarchy\n\nClicking on an individual Cell Development Step either in the pathway hierarchy or in the pathway diagram will display relevant information for the selected event in the details panel below the diagram (Figure 9). The description tab of the details panel shows input and output, which are defined by Cell instances, regulators of the event (when applicable), GO biological process, and UBERON tissue terms. It may also display preceding event(s) connecting individual Cell Development Steps within the same Cell Lineage Path (Figure 9). Details of participating Cell instances including histological terms, specific protein and RNA markers, and corresponding marker references are accessible from the description tab of Cell Development Step upon clicking on the plus sign to the right of the input/output attributes.\n\n![Figure 9. Selecting a Cell Development Step](/uploads/documentation/userguide/cytomics/Figure_9.png)\n\n**Figure 9.** Selecting a Cell Development Step\n\nAlternatively, the Cell details can be displayed in the Details panel by selecting a “Cell” icon in the diagram of the Cell Lineage Path (Figure 10). Right-clicking or clicking the blue info icon when hovering over a “Cell” icon in the pathway diagram will open a popup list of protein and RNA markers for the selected Cell (Figure 11).\n\n![Figure 10. Selecting a Cell](/uploads/documentation/userguide/cytomics/Figure_10.png)\n\n**Figure 10.** Selecting a Cell\n\n![Figure 11. Displaying the list of Cell markers](/uploads/documentation/userguide/cytomics/Figure_11.png)\n\n**Figure 11.** Displaying the list of Cell markers\n\nThe Molecules tab in the Details panel (Figure 12A) displays a downloadable list of all markers for a Cell and both the markers and regulators for a Cell Development Step and a Cell Lineage Path.\n\nThe Structure tab (Figure 12B) in the details panel displays the Protein Data Bank structures of molecules listed in the Molecular tab and the Expression tab shows gene expression data from Expression Atlas.\n\n![Figure 12A](/uploads/documentation/userguide/cytomics/Figure_12A.png)\n\n**Figure 12.** Displaying Molecules Tab (A) \n\n![Figure 12B](/uploads/documentation/userguide/cytomics/Figure_12B.png)\n\n**Figure 12.** Structures tab (B)\n\nThe Analysis tab (Figure 13, 14) in the details panel displays data after running the dataset analysis. Refer to (Rothfels et al. 2023) for detailed instructions on how to use the Reactome Analysis Tool.\n\nThe results of the analysis are also visualized in the pathway diagram panel, where the “Cell” icons are colored (Figure 13, 14). The colored area in the nucleus of the individual Cell corresponds to the coverage of the cell markers in the submitted data set.\n\nIn Pathway Enrichment Analysis, olive green is applied to color the nucleus of the cells in the Cell Lineage Path that contain markers from the query list. The extent of coloration is proportional to the number of markers hit (Figure 13).\n\nThe results of gene expression analysis, including Reactome Gene Set Analysis (Reactome GSA), appear as a single vertical bar of color when zoomed out representing the average expression of the markers from the query list (Figure 14a). Zooming in on the “Cell” icon reveals bars for individual cell markers with their expression values, as shown in Figure 14b.Expression values of cell markers from the query data set can be visualized in a popup information panel of protein and RNA markers for the selected Cell (Figure 14b).\n\nExpression values for the markers of a selected cell are displayed as blue horizontal lines within the expression scale (Figure 14C). The median cell marker expression among the cell's matching markers is shown in black. On the left, when a specific marker bar is hovered over, the currently hovered marker’s expression value is displayed in red, and the expression values of other markers in the same cell are shown in yellow.\n\n![Figure 13 samll](/uploads/documentation/userguide/cytomics/Figure_13_samll.png)\n\n**Figure 13.** Overrepresentation analysis displayed within the nuclei of the cells in the Cell Lineage Path\n\n![Figure 14A](/uploads/documentation/userguide/cytomics/Figure_14A.png)\n\n**Figure 14.** Gene expression analysis results are displayed within the nuclei of the cells. The level with coloration reflects the average expression value of the cell markers (A)\n\n![Figure 14B](/uploads/documentation/userguide/cytomics/Figure_14B.png)\n\n**Figure 14.** A zoomed-in view of the expression bars of individual markers (B) \n\n![Figure 14C](/uploads/documentation/userguide/cytomics/Figure_14C.png)\n\n**Figure 14. T** he expression scale (C)\n\n 1. Burgess, Darren J. 2018. “Tracing Cell-Lineage Histories.” _Nature Reviews. Genetics_.\n 2. Croft, David, Gavin O’Kelly, Guanming Wu, Robin Haw, Marc Gillespie, Lisa Matthews, Michael Caudy, et al. 2011. “Reactome: A Database of Reactions, Pathways and Biological Processes.” _Nucleic Acids Research_ 39 (Database issue): D691–97.\n 3. Franzén O, Gan LM, Björkegren JLM, \"PanglaoDB: a web server for exploration of mouse and human single cell RNA sequencing data\", Database (Oxford), 2019, 2019.\n 4. Haendel, Melissa A., James P. Balhoff, Frederic B. Bastian, David C. Blackburn, Judith A. Blake, Yvonne Bradford, Aurelie Comte, et al. 2014. “Unification of Multi-Species Vertebrate Anatomy Ontologies for Comparative Biology in Uberon.” _Journal of Biomedical Semantics_ 5 (May): 21.\n 5. Hu C, Li T, Xu Y, Zhang X, Li F, Bai J, Chen J, Jiang W, Yang K, Ou Q, Li X, Wang P, Zhang Y, \"CellMarker 2.0: an updated database of manually curated cell markers in human/mouse and web tools based on scRNA seq data\", Nucleic Acids Res, 2022.\n 6. Joshi-Tope, G., M. Gillespie, I. Vastrik, P. D’Eustachio, E. Schmidt, B. de Bono, B. Jassal, et al. 2005. “Reactome: A Knowledgebase of Biological Pathways.” _Nucleic Acids Research_ 33 (Database issue): D428–32.\n 7. Milacic M, Beavers D, Conley P, et al. The Reactome Pathway Knowledgebase 2024. _Nucleic Acids Res_. 2024;52(D1):D672-D678. \n 8. Osumi-Sutherland, David. 2017. “Cell Ontology in an Age of Data-Driven Cell Classification.” _BMC Bioinformatics_ 18 (Suppl 17): 558.\n 9. Saelens, Wouter, Robrecht Cannoodt, Helena Todorov, and Yvan Saeys. 2019. “A Comparison of Single-Cell Trajectory Inference Methods.” _Nature Biotechnology_ 37 (5): 547–54.\n 10. Rothfels Karen, Milacic Marija, Matthews Lisa et al. 2023. “Using the Reactome Database.” _Current protocols_ vol. 3,4: e722.\n 11. Sarntivijai, Sirarat, Yu Lin, Zuoshuang Xiang, Terrence F. Meehan, Alexander D. Diehl, Uma D. Vempati, Stephan C. Schürer, et al. 2014. “CLO: The Cell Line Ontology.” _Journal of Biomedical Semantics_ 5 (August): 37.\n 12. The Gene Ontology Consortium. 2019. “The Gene Ontology Resource: 20 Years and Still GOing Strong.” _Nucleic Acids Research_ 47 (D1): D330–38.\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/userguide/details-panel.json b/projects/website-angular/content-dist/documentation/userguide/details-panel.json new file mode 100644 index 00000000..2ae2fc43 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/userguide/details-panel.json @@ -0,0 +1 @@ +{"title":"Details Panel","category":"documentation","body":"\n## Details Panel \n\nThe Details Panel is the bottom right panel of the Pathway Browser. It displays the details of molecular objects or events when selected in the Pathway Diagram or Hierarchy. The details shown depend on the type of molecule or event selected. The Details Panel can be revealed/hidden using the middle Layout button. \n\nThe Details Panel has several tabs:\n\n### **The Description tab**\n\nThis tab contains the defining details of the selected diagram object. These details vary, depending on what is selected in the diagram. For example, reaction details always describe the input and output molecules, and where relevant, the enzyme catalyst. Other items in the Description tab may include:\n\nSummation – a summary of the molecular event, often with background information and additional literature citations\n\nPreceding/Following Events - Links to reactions that precede/follow this reaction.\n\nCellular Compartment - Identifies the cellular compartment for the reaction, with the associated Gene Ontology (GO) term.\n\nInferred from another species - Reactome represents human biology. Wherever possible key references contain experimental data obtained using human reagents. If the only data available is from model organisms, a human event may be inferred from this data, if the Author, Curator and Reviewer agree that this inference is valid. The inferred event is labelled with an icon ‘Inferred from another species’ in the Hierarchy and in the Details panel, where there is a link to the molecular details of the event as it occurs in the model organism and the supporting literature references. A description of the inference process can be found here.\n\nComputationally Inferred To – This drop-down list represents the species available for computationally predicted pathways, inferred from Reactome’s human pathway. References – all events in Reactome include links to original research publications containing experimental data, the evidence that the event has been shown to exist.\n\nAuthored - an expert biologist who contributed materials allowing construction of the reaction/pathway. All Reactome pathways are authored by an expert biologist.\n\nReviewed – all Reactome pathways are peer reviewed by an expert biologist who verifies the content provided by the Author.\n\nDetails are organised into panels. Panels that have a plus icon on the right hand side can be expanded to reveal further levels of detail by clicking on the icon or the detail name.\n\n![details output](/uploads/documentation/userguide/details-panel/details_output.gif)\n\nClicking the plus icon reveals further details:\n\n![further details](/uploads/documentation/userguide/details-panel/further_details.gif)\n\nPanels that represent molecules have an icon on the left hand side that represents the molecule subtype, e.g. the protein icon is a green circle. Mouse-over the icon to see an explanation of the subtype. The icon is a selection button; clicking the icon replaces the current details with a new panel of details specific to the selected molecule, which is highlighted on the pathway diagram. \n\n### **The Molecules Tab**\n\nThis tab details all the molecules involved in the pathway displayed in the panel above. When a pathway name is highlighted in the hierarchy, the total number of molecules in that pathway is shown in a bubble on the molecules tab.\n\nMolecules are grouped into the subtypes Protein, Chemical Compound, Sequences (for DNA/RNA) and Other.\n\nIf an item is selected in the diagram, the corresponding molecules are highlighted in the details panel, and the bubble next to the ‘Molecules’ tab enumerates the fraction of the total pathway molecules that are represented in that item.\n\n![molecules](/uploads/documentation/userguide/details-panel/molecules.png)\n\nThe Download button to the right of the pathway name and species buttons allows details of the molecules to be downloaded in several formats. Click on the buttons to select the fields you want included in the output file, and the format of the file. Click Download to save the file.\n\n### **The Structures Tab**\n\nThe content displayed in this tab depends on the type of object or event selected in the pathway diagram. For Reactions it will display equivalent reaction diagrams from the [Rhea]() database if available:\n\n![Screen Shot 2017-07-24 at 3.40.03 PM.png](/uploads/documentation/userguide/details-panel/g6iumaN6NuhJGuh0Lt2VlaAWYvtWXWkDAHAFydu-LqjKjXtiUzvVuAdIflUs6TRNAnksDhtMsfHuiBGYHBoednc7mOcuemJ--VZZRhBGzfLmbwl0Fj0EbjKl2ttq1RU7ftfYM4cNQr-FYkMXIRJBRw)\n\nThe panel has a link top-left to details in the Rhea database. \n\nThe molecular structures are linked to the [ChEBI]() database:\n\n![Screen Shot 2017-07-24 at 3.41.20 PM.png](/uploads/documentation/userguide/details-panel/6k3XSs45-pLn5HxU-u6P1gvTEmV61rKJDW278KuDMnRqeWS8HLhv05dbUwVVA1GflKWZ-iVufwn68vCFoYvYhd6rVZN_7GEikOLMcO6WHUCMCS1ck0EbYxzv1_SO8BD3n4fgOZNWDWHQyeP5LKjiGw)\n\nFor Proteins or pathway objects that represent sets or complexes, corresponding structure information from [PDBe]() is represented if available:\n\n![](/uploads/documentation/userguide/details-panel/8GbH3m-qGBUHN56s2oTSlOTzUy5WSQvtXhou9wb2a32LeTU0Q-bEB7SFpeIoMHj5sSc-0Cp_YQ0MDKI3Zvj2Uy3Ray8xHyiRtBkzQCgYs7b5Eow9TBGwKHyVvpDLQp7ESW_VnzzD2YTg5kwNcPSYhQ)\n\nFor simple molecules, the structures tab represents information from the ChEBI database:\n\n![](/uploads/documentation/userguide/details-panel/7_W66YJKtBA9pvDOPgM_8h2LMgTuQ4GOaaxbUqPieS27oBiACQ0R6oxL1lUKuwoF6gBCvGBGLiOYkf9fkXsnQM5ihus1-MgTw6epeeC42aaORf2KJqfpW5NDmsiTv-JOOkuaeUGLE3EBPcbknUUv3w)\n\n### **The Expression Tab**\n\nThis tab represents expression information obtained from the [Expression Atlas](). Note that at the moment, only information from the first 50 genes in the pathway is displayed or available for download from the Expression Atlas widget. \n\n![expression atlas](/uploads/documentation/userguide/details-panel/expression_atlas.gif)\n\n### **The Analysis Tab**\n\nThis tab displays the results of analyses – see the section Reactome Tools for further details\n\n### **The Downloads Tab**\n\nThe Downloads Tab contains buttons to start a download of the currently displayed pathway in several human-readable or computationally reusable formats. \n\n![downloads](/uploads/documentation/userguide/details-panel/downloads.gif)\n\n### Get Started:\n\n### **Exercises:**\n\n 1. Find the reaction ‘Activated type I receptor phosphorylates SMAD2/3 directly’. What pathway does it belong to?\n 2. In which cellular compartment does this reaction take place?\n 3. What is the GO molecular function associated with the catalyst?\n 4. What reference has experimental verification of this reaction?\n 5. Is this reaction predicted to occur in Canis familiaris? In C. elegans?\n 6. Is this event likely to occur in liver?\n 7. Are 3D structures available for TGF-beta1?\n\n### More info:\n\n**Pathway Description tab:**\n\nThe Description tab for a pathway includes:\n\n * pathway name\n * species\n * stable identifier\n * pathway summation\n * a drop-down menu to select species for which the pathway is computationally predicted to be conserved, where appropriate. A description of the inference process can be found here.\n * the GO biological process term for the pathway, where appropriate. Expanding the panel provides a link-out to GO.\n * literature references \n\n**Reaction Description tab:**\n\nThe Description tab for a reaction includes:\n\n * reaction name\n * a stable identifier\n * pathway summation\n * links to external identifiers, where appropriate. For instance, a reaction that describes a binding event may link out to IntAct records that corroborate the interaction. \n * Input/Output: Identifies the input/output molecules, sets or complexes for this reaction. Icons to the right of these named items link to further information in Reactome.\n * Catalyst (when relevant): The protein or complex that catalyzes the reaction. The Gene Ontology molecular function term that represents the activity of a catalyst or transporter within the reaction will be listed. If the catalyst is a complex, the component that enables the reaction to occur will be identified as the ‘active unit’.\n * Preceding event(s): A list of events that occur immediately before the event being viewed.\n * Following event(s): A list of events that occur immediately after the event being viewed.\n * Cellular compartment:\n * Inferred from another species (when relevant): This indicates that event has not been experimentally demonstrated in humans, but has been inferred on the basis of data acquired for another species. \n * Clicking on the ‘+’ button to the right of the reaction name in this panel reveals the summation and literature references for the supporting reaction in the other species; \n * clicking on the reaction icon to the left of the reaction name in this panel switches the user to the corresponding pathway of the species from which the human reaction has been inferred. Note that the manually curated event in the non-human species is not currently displayed in this pathway; instead, a computationally-inferred reaction is shown. This will be addressed in future updates. The human representation of the pathway can be restored either by clicking on the back button of the browser or by re-selecting ‘Homo sapiens’ in the species selector in the top panel of the Reactome website.\n * Computationally inferred to: Links to descriptions of the events in other species that are either confirmed to occur in a very similar way in both species, or have been electronically inferred. \n * Positively (or Negatively) regulated by: The protein or complex that regulates the reaction.\n * References that contain experimental data verifying the reaction, with a link-out to PubMed, when applicable.\n * Authors: The expert biologists that contributed materials that allowed this reaction to be created in Reactome.\n\n * Reviewers: The expert biologists that verified the content for this pathway.\n\n**Physical Entity Description tab:**\n\nThe details of any protein, small molecule, complex or set represented in a pathway diagram can be displayed in the Details panel by selecting the object within the diagram. Clicking a ‘+’ or ‘-‘ icon associated with the different displayed fields within the Detail panel tabs will show or hide more information about the protein, small molecule, complex and set.\n\nThe Description tab may display include the following information depending upon what physical entity is selected:\n\n * Link to corresponding entries in other databases: Cross-reference to identifiers used for this molecule in external reference databases, with hyperlinks to the record.\n * Cellular compartment: The cellular compartment that contains this molecule, with hyperlink to the corresponding GO term.\n * Computationally inferred orthologues: Lists equivalent molecules in other species if these have been inferred to exist. A description of the inference process can be found here.\n * Components: If a complex is selected in the diagram, its components are listed here.\n * Produced by: If a complex is selected in the diagram, this tab in the details panel will list all the reactions in Reactome that produce it as an output. Clicking on the ‘+’ reveals summation and literature references for these reactions.\n * Consumed by events: If a complex is selected in the diagram, this tab in the details panel will list all reactions in Reactome that use it as an input. Clicking on the ‘+’ reveals summation and literature references for these reactions.\n\n**Download tab:**\n\nThe Download tab provides options for the user to download different files types for the selected pathways. These files include:\n\n * SBML: An exchange format used by systems biologists for their models.\n * SBGN: An exchange format used to represent pathway and network diagrams.\n * BioPAX2: An exchange format used by systems biologists for their models.\n * BioPAX3: An exchange format used by systems biologists for their models.\n * PDF: Text dump of the pathway, organized to look like a research report.\n * Word: A document format compatible with Microsoft and other word processor software.\n * Protege: A format used for ontology exchange.\n\n[SBML](),[ SBGN]() and[ BioPAX]() are exchange formats of interest to bioinformaticians.[ Word]() and[ PDF]() are familiar document formats, providing you with a convenient \"document\" of the pathway.[ Protégé]() is an extensible, platform-independent environment for creating and editing ontologies and knowledge bases, this download is likely to be of interest to those wishing to extend Reactome functionality.\n\nThe complete Reactome textbook of biological processes in PDF or RTF format, the complete set of human reactions in Reactome (in SBML or BioPAX level 2 or 3 format), and a list of human protein-protein interaction pairs are available to download from the Download page, linked to the Menu Bar on the Reactome homepage.\n\nTo find out about how Reactome generates SBML, see[ SBML At Reactome]().\n\nFor general information about SBML,[ click here](). For more information about BioPAX[ click here]().\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/userguide/diseases.json b/projects/website-angular/content-dist/documentation/userguide/diseases.json new file mode 100644 index 00000000..7a5fb67b --- /dev/null +++ b/projects/website-angular/content-dist/documentation/userguide/diseases.json @@ -0,0 +1 @@ +{"title":"Diseases","category":"documentation","body":"\n## Diseases \n\nReactome can annotate and display pathways associated with disease. Reactome disease annotations include cancer, metabolic and immune disease as well as infectious diseases, among others. Where possible, Reactome disease pathways also include the interaction of relevant therapeutic drugs. (Disease pathways are contained in a separate top-level Chapter in the hierarchy, and are designated with a red “+” symbol to the left of the pathway name.)\n\nPathway Diagrams:\n\nDisease events or processes are shown in the context of the normal pathway diagram to provide context to the disease event. \n\nDisease events have red connecting lines; abnormal molecules involved in these processes are outlined in red.\n\nFor infection processes, events involved in the life cycle of the infecting agent and host interactions with the infecting agent have red connecting lines. Molecules derived from the infecting agent are outlined in red, while those derived from the host are outlined as normal in black.\n\nDisease events may be loss-of-function or gain-of-function compared to the normal process. \n\nFor loss-of-function events (where a protein has lost all or most of its functional activity) the disease reaction is automatically overlaid on top of the corresponding normal reaction. The loss-of-function disease entity is outlined with a dashed red line, and products that are no longer made are greyed out with a superimposed red cross. These loss-of-function events represent “stop points” in the pathway.\n\n![](/uploads/documentation/userguide/diseases/ECIWCGjnQT7a_dYG8865g-SPo_xa6Qw2f7OHcqQ_1q39n5A3hLbnaDpTPK0WfuhUflahdbU5tCZEXOWMc1DhaMYU1V_ey36YSYqFSkZo3g_YBXshR6A1GQ9KB6TBm09iuA_of-v530yXfeyWWcTj9A)\n\nFor gain-of-function events (where a protein has acquired a novel function not performed by the wild-type protein), disease events are represented alongside the normal events. \n\n![Screen Shot 2017-07-19 at 4.08.24 PM.png](/uploads/documentation/userguide/diseases/x0_f13MZ2lzcr_e0_yBTW3ZsmGkr9-lb7Ae155D2SNXFLnY1i_BPuBXlj1G7qG6_a3EsnembSAlW2Do8CY_iqvOn94prdLyR6FISvqJahqBd6iHZK0xMXOJLVMH4DjElwj6-qNuF-cgZWuLHQ0EO1Q)\n\nWhen a gain-of-function mutant performs a normal function (either a higher rate or efficiency, or after being activated in an novel manner, for instance), these disease events are overlaid on the corresponding normal event in the pathway diagram.\n\n![Screen Shot 2017-07-20 at 10.25.00 AM.png](/uploads/documentation/userguide/diseases/TrGR3G_GHlIya3fYLCxDRVvLnAa8dv_FQtQ8Mj9GknggE4jtSpMImhC6vlnGM-uzvpC3OFuwNqCz9bBaw2VaXjfK1RQArVi2omJ7_Ig9jGAs2jINBnF2kyiRkAQh_aW3TtA14L4XezAgEBPxztn21A)\n\nInfectious disease events (which don’t occur in the absence of the infectious agent and therefore have no normal counterpart) have their own diagrams.\n\n![](/uploads/documentation/userguide/diseases/w6D9a8jgIPKbGQa9gVx_rOwzIqM84CMQj-wBXPTFpGmC0lRfRkGRDkouvkOYpHGUj8TXCjj6l4GzWGTW__e2RO7cDrQsV7cxy6-7IqoWK04DadxKL2svzpvzk-CEF1O2cvYJ8aLIoYLkUGrJOn6AqQ)\n\nDrug annotations:\n\nWhere applicable, the effect of drugs on disease pathways is annotated.\n\n![Screen Shot 2017-07-20 at 11.55.30 AM.png](/uploads/documentation/userguide/diseases/9uTs4SmYtvoR-HeWGOJhRlsvOtW9TGhFYuDkz279gaLNBThtluib39Fp9TLUZ9YXbYoC37el44M4fDpKmAdVvZhiLAkfu7iL12NEOAGLtZ9UXQT_XsZGEX3mAcujV0V_PzLgiz5acHH_OUQE1swoRw)\n\nDetails panel:\n\nThe details panel for a disease pathway/event has a number of extra panels in addition to those displayed in a normal pathway/event.\n\nDisease tag: \n\nDisease events and entities are tagged with a disease term, taken from the [Disease Ontology]() and displayed in the “Disease” panel. \n\nIndividual proteins are labeled with all the relevant disease terms, while sets of disease entities are tagged with the most specific term that represents all of the set members. \n\n![Screen Shot 2017-07-19 at 4.26.47 PM.png](/uploads/documentation/userguide/diseases/YqHl3yPS8L6zpSZ3eqAeAxIHg_qwLJaQsyiiCdD6cQogRZtHGM8L9qXyMuUPfrlhWWedgJY5SnRyyvKsnMMql54jR1dCUUzm0psh2axQUYpDuhCEs7V31XH74JyhVmfRqN-hnY8CIaiLH-Klac3AQQ)\n\nWhere possible, disease proteins are linked to [OMIM]() (Online Inheritance in Man),\n\n![Screen Shot 2017-07-20 at 10.17.08 AM.png](/uploads/documentation/userguide/diseases/4WHSE0z8bLefDjATxs27SafbW0ygEgtAdp0U2RTt9dp1m6LeTgYGE6JyrpFNfoxqX6T3jdrwjoI_NI250mCB7tXW-Cfd1yti7fTMlKA0ZL4T_N4RPR4_retmkMi69GuOx-yEUPp0GFos0cDTORA4Cg)\n\nand cancer variants are linked to [COSMIC]() (Catalogue of Somatic Mutations in Cancer).\n\n![Screen Shot 2017-07-19 at 4.28.09 PM.png](/uploads/documentation/userguide/diseases/0suvelWQ7ww5WCwEcEWhDIOzf4AjoLwZO9aEtWTMYAg-sJFNKLsfXSwLhf-UcmH0pIBCORh_Y0AS1OWV9Uc7U1wzCehwEBWFUQFl8NiHsoSCRvhauVqXwITajHCvORjRaHYgboktrXsXWYrgH_WEfQ)\n\nFunctional status:\n\nAs described above, disease events are tagged as either gain- or loss-of-function, and this is displayed in the “Functional Status” panel.\n\n![Screen Shot 2017-07-19 at 4.29.28 PM.png](/uploads/documentation/userguide/diseases/Z6AJ_-hYyxzGEnCgqn34Ec1xiNV5GEmYXy_ki91BEa7_MyU5bsQP_--0fhJJfIv3SbQJAw5QFvVXqzOdUKBm5GUor7WO9Me8ySFYtZ3QOTUi_0uFDiSPz5r8M6zGM2q085s_I3mx8woHCmGc0HSJpA)\n\nNormal Pathway/Reaction:\n\nWhere applicable, the corresponding normal pathway or reaction is identified in the details panel of the disease event. \n\n![Screen Shot 2017-07-19 at 4.34.53 PM.png](/uploads/documentation/userguide/diseases/jEdbE7DGDAR4PuvM4Oa6-r-ECAO1osZpnrK6PyWr22gPjihMnFC8AZhYw4Qb0JsN5cTKpbfk94JfZdSw0D_5pnj_2rXuGZKu69RQYIthP0QbSZjN0bqU1Aq5Y72tIQHYh3UfO2ioPUZOGRoo3L_Tsw)\n\nDisease entities:\n\nDisease entities are annotated in molecular detail. Changes to protein sequence that arise as a result of variation in DNA sequence in disease are displayed in the details panel when a disease entity is highlighted in the diagram. Missense, nonsense, frameshift, deletion and fusion mutations are all annotated. See “More info”, below, for details of these annotations. \n\nPrimary references describing the identification of the mutants proteins are annotated, but this information is not currently displayed on the website. Note also that on the website, these genetic modifications are displayed in the same panel as post-translational modifications such as phosphorylations, and are therefore (mis)labeled as ‘Post-translational modifications’.\n\nMissense mutation:\n\n![Screen Shot 2017-07-20 at 10.54.40 AM.png](/uploads/documentation/userguide/diseases/lvDCMvglV_YrIfaxpn6zvzPTGtUhWQChGUWM72fyYeiXFa3_guPyyegpB81zIjF-LMvlBj-tbU23rg3fm7_NYKVevs5RwStYMRk1Pz67jfZIv79Ld0qM-LFTMaH3fSusQqYWxoag7_OwJHN_O0nW5w)\n\nDeletion mutation:\n\n![Screen Shot 2017-07-20 at 10.55.35 AM.png](/uploads/documentation/userguide/diseases/6vuG52aeNoW4uMtvxeGq1SIW8MpPY1med1xVbYhgiK145vo-DhlyipCJxtJW-U3CgoLC7qfdna69vJxQjCed1vq2Oy2EFpeHx18JiXC4R0NBbkO4V6FeuiATdH0k4DHGGh6XQWOHTVSHfxURdfnm2A)\n\nDrugs:\n\nDrugs are cross-referenced to [ChEBI]() and to [IUPHAR]() where possible and applicable, and this information is displayed in the details panel when a drug is highlighted in the diagram.\n\nGet started:\n\n**Example 1 - drug-target interaction in disease** :\n\nThe cystic fibrosis transmembrane conductance regulator (CFTR) is a low conductance chloride-selective channel that mediates the transport of chloride ions in human airway epithelial cells. Chloride ions plays a key role in maintaining homeostasis of epithelial secretions in the lungs. Defects in CFTR can cause cystic fibrosis (CF), resulting in an ionic imbalance that impairs clearance of secretions, not only in the lung, but also in the pancreas, gastrointestinal tract and liver. More than 1500 mutations in the CFTR gene have been identified. \n\nGain-of-function events involving CFTR F508del:\n\nDeletion of phenylalanine 508 in CFTR is the most prevalent mutation causing cystic fibrosis. F508 deletion causes destabilization and subsequent targeting for co-translational degradation by the ER-associated degradation machinery (ERAD). F508del is ubiquitinated by ERAD-associated E3 ligases including RNF5 and RNF185, targeting it for VCP-mediated retrotranslocation and 26S proteasomal degradation. These events are novel for the mutant protein and are represented in the disease diagram “ABC transporter disorders”.\n\n![Screen Shot 2017-07-20 at 4.30.29 PM.png](/uploads/documentation/userguide/diseases/1G_7ddhZUkBnzlCLLM3cQLPKuR_4tZYNFPFU04Bn4PzqDUF7X2leVCGeIq7fZ_8YP4QGrqThj6eXY1CLdQQJP9luVqJqKHlPZbYn7ym5tErLgvT4hosOjgRp6DetCbrQWIQdP-q2vArOwbezfPcqFA)\n\nLoss-of-function events for CFTR mutants:\n\nSome loss-of-function CFTR mutants are properly transported to the plasma membrane but are unable to transport chloride ions to the extracellular space. These are represented as a loss-of-function event in an overlay of the corresponding WT reaction, and displayed in the “ABC transporter disorders” disease diagram.\n\n![Screen Shot 2017-07-20 at 4.39.41 PM.png](/uploads/documentation/userguide/diseases/XtdPcxApQv0zSOsQPf0rbheZLavc6YVWxz92oEE-p6PF8NP45ae3r66cl_WztdGgifKPQINZNWVKytylN2bFeC-yBk8zjdU7fASwaS2zzyTFpvn_fEeWL1ioKRWgl4kJPCnzdeIxYs_cCE9tCGXzlA)\n\nDrug interactions in Cystic Fibrosis:\n\nCF patients with a particular mutation, G551D, have shown lung function improvements when given the drug Ivacaftor. Reactions showing ivacaftor binding the mutant protein (top right, above) and the following reaction (centre) showing channel functionality restored are displayed in the disease diagram.\n\n**Example 2 - diseases caused by accumulation of substrate over time** :\n\nSpecial case in Reactome where the reaction describing a particular substrate's metabolism occurs in normal physiology but over time, accumulation of the substrate leads to toxic consequences which can lead to disease. Examples are neurodegenerative diseases such as Alzheimer's and Parkinson's diseases, chronic obstructive pulmonary disease and retinal macular degeneration.\n\nThe bisretinoid A2E (di-retinoid-pyridinium-ethanolamine) is a major component of lipofuschin, a yellow-brown pigment grain composed mainly of lipids but also sugars and certain metals whose accumulation is associated with degenerative diseases. In the eye, A2E is the end-product of the condensation of 2 molecules of all-trans-retinal and phosphatidylethanolamine in photoreceptor outer disc membranes. Once formed, A2E is phagocytosed, together with outer segments, to retinal pigment epithelial (RPE) cells where it accumulates. There is no evidence as yet to indicate that A2E can be catabolised. \n\nThe relationship between lipofuscin accumulation and retinal degeneration is illustrated by Stargardt disease type 1. Because the reactions can be considered \"normal\" (they occur as part of the normal metabolism of retinoids) as well as disease-causing, they appear in the normal pathway diagram (Visual phototransduction) and coloured red. \n\n![Screen Shot 2017-07-21 at 10.02.59 AM.png](/uploads/documentation/userguide/diseases/3iicpYVHwl6-h11WHNquSh9f6NEyoOvQSgdL1_aY5t6psjzW2zSlkOTmgQG4Sha3CwcTA1OOq1tDs9yz5hxRu-yIlnUyBmaurzVrtpkzSQD9yMTUGcEBOlt5mcjST8EiV-NDqpaADt1FmW8n0bC5dw)\n\nTo display in the disease view of the diagram, these reactions are added as components of the disease pathway \"Diseases associated with visual transduction\". These reactions will now display in both normal and disease diagrams.\n\n![Screen Shot 2017-07-21 at 10.04.48 AM.png](/uploads/documentation/userguide/diseases/1hqo-MMWOSN8SqRE5Xo5mOGlNkKAWxebRQgRbktjaQzajGaPxgQecETS_tf4kjoKk0Bu7RjUM7_rlwVJAD0f5Y_UXJXsqkW-60fDZDKyoX0jyk49_3uk_EuVwoaeoJrQnOhpN1K62V6EE6_NpRATjg)\n\n### **Getting Started**\n\n### **Exercises:**\n\n 1. Search for the pathway FGFR1 mutant receptor activation and open it. What disease(s) is/are associated with this pathway? (_Hint: look at the Description tab in the Details section_). \n 2. Search for the reaction Defective MMADHC does not bind MMACHC:B12r. What type of defect has caused this loss of function? (_Hint: look at the Functional Status category for the reaction_).\n 3. How many mutations of MMADHC are represented?\n\nMore info:\n\n**Annotating genetic alteration of protein sequence for disease pathways:**\n\nThe following image shows the portion of the Reactome data model describing the relationship between possible modifications to protein sequence. The subclass “GeneticallyModifiedResidue” is used for the annotation of disease entities, while “TranslationalModification” is used to annotate the consequence of processes such as phosphorylation, acylation, cross-linking and other similar non-genetic events. TranslationalModifications will not be described further here.\n\n![Screen Shot 2017-07-21 at 10.42.28 AM.png](/uploads/documentation/userguide/diseases/jG-CrhgbwJZrzulDipna6TqymnFCZc-3f3CCxIiX33RWB5SOc1bPs6n-ApaqJTkehDUlkptUVV0fpc_S6ifXxa4I3H9b7Yt7u0AXDegbjgn-ZTt6XJoFbCjB1Q94g3__fvWWTLhH0RectEhzPit9fw)\n\nThe ReplacedResidue class is used for amino-acid substitutions. This class is also used for “simple” nonsense mutations that change a coding amino acid for a stop codon.\n\nThe FragmentModification class describes more extensive changes to the coding sequence through insertions and deletions in the gene, and includes three subclasses:\n\n * FragmentDeletionModification is used for in-frame deletions of amino-acids\n * FragmentInsertionModification is used for in-frame insertions of amino-acids, including genomic events that result in fusion proteins\n * FragmentReplacedModification is used for frameshifts.\n\nExamples of each annotation type are further described below.\n\n**Simple missense mutation: HHAT G287V**\n\nHedgehog (Hh) is a secreted morphogen that regulates a number of developmental processes in vertebrates, including limb development and neural tube patterning, among others. Maturation of Hh ligand includes a number of proteolytic processing and lipid modification steps. These modifications are required for normal transit of the ligand to the surface of the secreting cell and mutations that affect these processes are associated with decreased Hh ligand secretion, abrogated Hh signaling and disease. \n\nHHAT is an O-acyltransferase that palmitoylates the N-terminal fragment of Hh. A G287V loss-of-function mutation in HHAT was identified in a rare case of Syndromic 46 XY Disorder of Sex Development, which results in testis dysgenesis. This mutant is not able to palmitoylate the Hh ligand. Details of the amino-acid substitution are displayed in the details panel when the entity is highlighted in the diagram:\n\n![Screen Shot 2017-07-21 at 2.26.44 PM.png](/uploads/documentation/userguide/diseases/-c7-uFziAnI43NgAjmA-Kp3BiYPF8qiBnUKKIrGTybCdp2nwdhEjlnNfV6uWNyleXAw0n1Z-Y1MjgM0_wI9oOQHn8ZuvM5dhUgfgw4wa02IXu_j6yJghQ3Gs7oXhsD4OEU4a0EjlPE5_PAjeL1p7lA)\n\n**Simple nonsense mutation:**\n\nThe disorder “Ehlers-Danlos syndrome, musculocontractural type 1” (EDSMC1) is caused by loss-of-function mutations in the carbohydrate sulfotransferase 14 (CHST14) gene. A nonsense mutation causing this disorder is a 205A-T transversion in the CHST14 gene, resulting in a lys69-to-ter (K69*) substitution. This is represented in the details panel as “L-lysine 69 replaced with unknown”.\n\n![Screen Shot 2017-07-21 at 2.33.20 PM.png](/uploads/documentation/userguide/diseases/NTzHie9iEHLQztIdfC0fVFgwXeDJ42qYbZNxfmxayTuBL8VFGrxGPnCyJ2zZf2CI-lALxV-JoccfXMQ49LZ39JSkQz0rREajieGXF7d6OJ47y8lOrpzx7mnvgcyy93ocGjm9NPjJvTAR2ufmT3wpJg)\n\n**FragmentDeletionModification:**\n\nThis class is used for in-frame deletions of amino-acids leading to internally truncated proteins. These variants are named “core protein name” [first amino acid of deletion_last amino acid of deletion]del, as shown below for PIK3R1 Y463_L466del, which has a deletion of residues Y463 to L466, inclusive:\n\n![Screen Shot 2017-07-21 at 2.40.02 PM.png](/uploads/documentation/userguide/diseases/bpm3TU53KCjGSZ1V7nlukxUQ4gGQjbw2CgjWhlMI1preT6XpsbE1lOf8JDdcjxMITyqlpYUObJduzp-pB94ehjI8dDiGAlgYEJf4mpOTp4nit5meGKQNXliJkNVrIHz5PRa8RuYpT2wVjsMDCFU9Yw)\n\n**FragmentInsertionModification**\n\nThis class is used for in-frame insertions of amino-acids and for fusion proteins.\n\n**In-frame insertions:**\n\nThese variants are named “core protein name” [aa prior to insertion_aa following insertion]ins[inserted aa’s]. The amino-acid string of the inserted residues is added manually to the mutant protein name, as shown below for EGFR V738_K739insKIPVAI. This represents a variant where the amino acids 739-744 (KIPVAI) from EGFR are inserted at aa 739 of EGFR, and is thus a duplication of these residues: \n\n![Screen Shot 2017-07-21 at 2.57.20 PM.png](/uploads/documentation/userguide/diseases/HzXhutKYw3XLYgK4OzNmEZjyPW1P5HVleNoqHlOykRn9k0gBnoNHkRd_8QnFU5bgk0PPDD3_yOz7EFHXzuBSyFqWMBoy6RRbMm9aM0X9FaK3VNKxZySgAyJnAwjI_8DZWerLBZeS0jjYNcXfk5b2AA)\n\n**Fusion proteins:**\n\nThe FragmentInsertionModification class is also used to annotate proteins that arise as the result of genomic changes that bring two genes together to result in a fusion protein, as in the ZMYM2-FGFR1 fusion described below. This fusion puts the ZMYM2 dimerization region (1-914) together with the kinase domain of the FGFR1 receptor (residues 429-822) and results in constitutive activation of the kinase domain by virtue of ligand-independent dimerization (for reference, the full length aa sequence of these two proteins are 1-1377 and 1-822 for ZMYM2 and FGFR1, respectively).\n\nBy convention, the N-terminal most partner of the fusion is set as the reference protein for the variant protein while the C-terminal fusion partner sequence is captured in the FragmentInsertionModification record, as in the example below for the ZMYM2-FGFR1 fusion:\n\n![Screen Shot 2017-07-21 at 3.04.28 PM.png](/uploads/documentation/userguide/diseases/vSmj8cdDGv5McQY6zk-bhWOFjglRTdM1G5-01pgWtuSTpE2Uu7zs6q90a2Q7ulYws4RiPMKOOlypNVTkwI-0Cm-2E_9xn5Cdhp2IysaxWXzRZyZMW86Tc5WNFPuyGckbmriaSn8_-otpT9kvbuh_1w)\n\nPost-translational modifications to either partner in the fusion protein are numbered according to each respective WT reference gene product and do not reflect the aa position in the fusion. For instance, if in the context of the fusion protein, the FGFR1 partner is phosphorylated at (WT FGFR1 position) Y766, the fusion EWAS would be ZMYM2-pY766-FGFR1, despite the fact that in linear sequence the phosphorylation occurs at residue 1250 of the fusion (913+(766-429)). \n\n**FragmentReplacedModification**\n\nThis class is used to annotate frameshift mutations that alter the amino-acid sequence of the protein as in the case of EXT1, described below.\n\nThe disorder “Hereditary multiple exostoses 1” (EXT1) is caused by loss-of-function mutations in Exostosin 1 (EXT1). One such mutation is a 1-bp deletion at nucleotide 1469 in the EXT1 gene, resulting in a frameshift mutation with a premature stop codon nine amino acids downstream. Variants of this type are named “core protein name” [aa prior to insertion_fs*(number of aa to the first stop codon)]. The novel amino acids that occur as a result of the frameshift are identified in the mutant protein record, as shown below for EXT1 L490Rfs*9:\n\n![Screen Shot 2017-07-21 at 3.23.53 PM.png](/uploads/documentation/userguide/diseases/Jadn77kIybJhazFC-460IJkD71ALsqLWn9Ca7o3ihEybJBH1Cgw-Rojh9FMjarx-Pc5UXwIx3UH8FmF95lm_tivcaA74O4JUJ5PeopDdU0wmU70sKr1EA3f3kKrsZObwEM6v8Ugqo1hsUSqKz5FuZA)\n\nFor cancer-related processes, it is useful to view the altered disease events alongside their normal counterparts in the same diagram. The user can then see where normal processes diverge into ones that are implicated in cancer.\n\nFor metabolic processes, proteins that have lost all or most of their functional activity towards a substrate causes the majority of defects. The diagram displays these disease reactions as 'stop points' in the pathway. Defective enzyme catalysts are outlined by a red dashed line; products that are no longer made are shown greyed-out with a superimposed red cross.\n\n![](/uploads/documentation/userguide/diseases/SW9rceePmuPkuHNCR734-ekj8YIj8fEAoKRzlXXWA428BPXEdnVh9uQi37CJSG4DCNgp3PuBvs6wzOb-8mfhpLlKLevwseeBznoBOedAoHAOscBEUy0y41bdu_c-l2C_QKTaagDoe1tHNshWcAxm0g)\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/userguide/pathway-browser.json b/projects/website-angular/content-dist/documentation/userguide/pathway-browser.json new file mode 100644 index 00000000..4f73eef3 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/userguide/pathway-browser.json @@ -0,0 +1 @@ +{"title":"The Pathway Browser","category":"documentation","body":"\n## The Pathway Browser\n\nThe Pathway Browser is the primary means of viewing and interacting with pathways in Reactome. \n\nSee our Youtube Video explaining [navigating the Pathway Browser]() for more information. \n\nThe Pathway Browser includes tools for analysing datasets and exploring pathways. These tools allow several types of analysis:\n\n* Pathway over-representation analysis and pathway topology-based analysis\n* Comparison of a pathway with its equivalent in another species\n* The overlay of user-supplied expression data onto a pathway\n* The overlay of protein-protein or protein-compound interaction data from external databases or user-supplied data onto a pathway\n\nSee the section [Reactome Analysis Tools ]()for details of the analysis tools.\n\nThe Pathway Browser is launched by clicking the Browse Pathways button on the Homepage:\n\n![pathway browser button](/uploads/documentation/userguide/pathway-browser/pathway_browser_button.gif)\n\nWhen the Pathway Browser opens, it displays an overview of all Reactome pathways. Pathways are organized hierarchically and often have sub-pathways. At the highest hierarchical level, all pathways are represented in an Overview. At intermediate levels, pathways are often represented as interactive illustrations, with selectable regions that act as links to the lower levels, which are represented as detailed Pathway Diagrams. Reactome’s Overview uses a unique graphical visualization of the hierarchy, representing pathways at the uppermost hierarchical level as central nodes (circles) with subpathways arranged concentrically (in rings) around them. Many have further concentric rings of ‘child’ subpathways. Pathway nodes are connected to their subpathways by edges (lines). This overview displays all pathways and allows rapid zooming to details. As you zoom in, labels appear for the subpathway nodes. This view is also used to display data analysis results. \n\nNodes in the overview link to detailed pathway diagrams that use a style based on Systems Biology Graphical Notation. They have several features intended to ensure an appropriate level of information detail, including subpathway shading and fade-in of labels, commonly occurring small molecules and structures.\n\nTo see the details of a specific pathway, select and click (or double-click) the node representing the pathway. Alternatively select and click on the name in the Pathway Hierarchy panel on the left.\n\nFeatures of the Pathway Browser are labelled in the diagram below.  \n\n![pathway browser labelled](/uploads/documentation/userguide/pathway-browser/pathway_browser_labelled.png)\n\n**Home** – the Reactome logo is a button linked to the homepage.\n\n**Species** – Reactome is a database of curated human biological pathways. These human pathways are used to computationally infer equivalent pathways in model organisms (described in detail [here]()). Use the Species drop-down to select a species and view the predicted pathway. Note that infectious disease pathways that show the interaction of pathogens with human proteins are included in Homo sapiens.\n\n**Layout** – The pathway browser is divided into 3 main sections. These are: the Hierarchy Panel, on the left, the Details Panel, bottom right, the Pathway Panel, top right. The layout buttons allow you to show or hide these panels.\n\n**Analyse Data** – Opens a panel where analysis can be performed. \n\n**Key** – this opens a key explaining the objects present in the pathway panel. \n\n**Zoom/Move Toolbar** - Click on the arrows to move the diagram. Click on the plus and minus buttons to zoom in and out. Alternatively, click and drag the diagram, and use your mouse scroll wheel to zoom. \n\n**In-Diagram Search** – click the button to open the search panel. When the Overview or a Pathway Diagram is displayed, objects represented in the displayed diagram or all diagrams are searchable.\n\n**Fit to Page** - resizes the Pathway Overview or Diagram to fit the available space.\n\n**Open Diagram** – when a pathway node is selected in the Pathway Overview, this button opens the corresponding Pathway Diagram\n\n**Illustrations** – some Reactome pathways have a corresponding high-quality graphic. Select this button to view.\n\n**Export** – use this button to download the visible region of the Pathway Overview or Diagram, including any analysis overlay, as a PNG file or upload it to GenomeSpace. \n\n**Thumbnail** – Provides an overview of the entire pathway when zoomed in so that only a region of the pathway is displayed. \n\n**Pathway Panel** - This is where Pathway Diagrams are displayed when they are selected in the Pathway Hierarchy or in search results. If no pathway is selected, this panel displays a brief Reactome help guide.\n\n**Details Panel** - Contains details of objects when they are selected in the Pathway Diagram. The content depends on the type of object, i.e. pathway, reaction, complex, set, protein or small molecule (see the Details section). \n\n**Event Hierarchy Panel** – Shows the hierarchical organisation of Reactome pathways and pathway events or steps, known as reactions. When the Pathway Browser is opened, only the top level of the hierarchy is shown, as an alphabetical list of Reactome’s main topics (superpathways). Most topics are split into sub-pathways, which may be further divided into sub-sub-pathways. Most topics in Reactome are organised in this hierarchical manner. Sub-pathways can be revealed by clicking on the + icon to the left of the pathway name, and hidden by clicking on the - icon.\n\n**Settings Sidebar** – Used for context-sensitive help, to configure colour schemes and the default source of interactors.\n\n## Event Hierarchy\n\nThe order of reactions from top to bottom in the Event Hierarchy Panel usually follows their order as steps in the pathway so that the preceding reaction is above and the subsequent reaction below, but this is not always the case. Pathways may not be linear; they can be circular or branched. Consequently, reactions often have multiple preceding or subsequent reactions. To view a complete list of the events that precede or follow a reaction, refer to the Preceding and Following Events section in the Details Panel, as described in the Details Panel chapter below.\n\nThe event hierarchy panel provides a nested structure containing large topics that are organised as pathways and subpathways and can be expanded to show individual events and steps. The icons next to the event describe the event. \n\nYou can hover over the icon in the Event Hierarchy panel to show a tool-tip that describes the event, as illustrated in the figure below. \n\n![](/uploads/documentation/userguide/pathway-browser/LdcnK4AoSQ9wjJQ-39V1Nk4ysKCVezmULy2cSMWnQuV2XvWAKkvoRVg4BHU2L-Nxr3w2Dk6fCTuNUHLuzH7WHDU0SHMp-7QkFKbKFalfaf1kE1XDg_q_QJYWtZyx4iyl0W9cV9sWQSGse2LSFgB3yug)\n\nThis table shows a legend of the icons and their respective descriptions in Reactome: \n\n![](/uploads/documentation/userguide/pathway-browser/Y0LFxxY9pFsdsmugJ8ftNn8f0F8eT7pve1aPBkhYopTUV_ejcwT26QqdLE1_ZF3MmXnYER7Rn_c7NGfgprtCMsDZ0z5_Ari6OcnTGLjQbbsKmZ8ySxjXdjeFHSSiaTecyTVcd2Zb58Oefgxx6ruYzX8)\n\n## **Pathway Diagrams**\n\nPathway Diagrams represent pathways as a series of connected molecular events, known in Reactome as ‘reactions’, which can be considered as steps in the pathway.\n\nCellular compartments are represented as pink/orange boxes with a double boundary. A typical diagram has a box to represent the cytosol, bounded by a double-line that represents the plasma membrane. The white area outside this box represents the extracellular space. Other organelles are represented as additional labelled boxes within the cytosol. \n\nMolecules, represented in diagrams as blue/green boxes, are placed in the physiologically-correct cellular compartment, or lie on the boundary of a compartment to indicate that they are in the corresponding membrane, e.g. a plasma membrane protein will be placed on the boundary of the cytosol.\n\nReactions typically include:\n\n* Input and output molecules, and when relevant a catalyst (see diagram A below)\n* Inputs, outputs and catalyst are represented as boxes or ovals\n* Green boxes with rounded corners are proteins\n* Green boxes with square corners are proteins that have no UniProt accession (or did not at the time the reaction was created).\n* Green ovals are small molecules or sets of small molecules\n* Blue boxes with a double boundary are sets, i.e. proteins or small molecules that are functionally equivalent.\n* Blue boxes with cut corners are complexes, i.e. proteins and/or other molecules that are bound in a multimolecular entity.\n* Green boxes with a white inner box are sub-pathways.\n* Reaction input and output molecules are joined by lines to a central ‘reaction node’ (surrounded by a green box in Figure A below). Clicking this node selects the reaction.\n* The outputs of a reaction have an arrowhead on the line connecting them to the reaction node.\n* Reaction inputs/output molecules are often connected by arrows to preceding or subsequent reactions (i.e. the preceding/subsequent steps in the pathway).\n* Catalysts are connected to the reaction node by a line ending in a circle.\n* Numbered boxes on the line between an input/output and the reaction node indicates the number of molecules of this type in the reaction (when n >1).\n* Molecules that regulate a reaction are connected to the reaction node by a line ending in an open triangle for positive regulation or a ‘T’-shaped head for negative regulation (see B below).\n* A white box labelled P on the boundary of an object indicates a phosphorylation event.\n* Proteins or small molecules that are also part of a displayed set may be connected to the set object by a line of short dashes.\n* Sets with overlapping content may be connected by a line of long dashes.\n* Reactions that represent a disease process use red connecting lines. Objects associated with a disease are bordered in red.\n\n![](/uploads/documentation/userguide/pathway-browser/dVO9EBIDoI0NUzmqhLqrZ8Gq6tTPliYvK6tv8CXzclZ5gnQ-0JOev-7uUXNNlKbV8eD98vz8lCk3AUU7HKWPFOQOWRbL5BrHJw6KVHA2utYd2G1BcMwx73Wd3ylc0LWZDxwdXiFQ5YSBFJvQ2Mq-1A)\n\n## **Enhanced high-level diagrams and Subpathway icons**\n\nMany pathways at the higher levels of the hierarchy are too large to represent as a single, detailed pathway diagram. Instead they are often represented as an illustration, known as an enhanced high-level diagram, which graphically represents the subpathways as selectable regions of an illustration. When the mouse pointer is moved over a region, it becomes surrounded by a blue highlighting 'halo'. When you click on a region it becomes selected and outlined in dark blue, the corresponding subpathway is selected in the Hierarchy panel and the Details panel updates to show details of the subpathway. Double-clicking on a region opens the corresponding detailed Pathway Diagram.\n\nIn the Hierarchy panel, pathways that have an enhanced high-level diagram have a blue icon to the left of their name.\n\n![EHLD](/uploads/documentation/userguide/pathway-browser/EHLD.png)\n\nA few higher level pathways use an older visualization of large topics, where subpathways are represented by a box with a green boundary, the subpathway icon (see example below). Selecting a subpathway icon has the same result as selecting a region of an enhanced-level pathway diagram as described above. \n\n![green boxes](/uploads/documentation/userguide/pathway-browser/green_boxes.png)\n\nIn some pathways, Reactome links to other related pathways through green boxes. In order to differentiate between related subpathways that are children of the same parent pathway (subpathways) and related subpathways that are children of a different parent pathway (interacting pathways), the Pathway Browser uses slightly different glyphs as illustrated in the figure below.\n\n![subpathways interacting](/uploads/documentation/userguide/pathway-browser/subpathways_interacting.png)\n\n### **Subpathway Shading**\n\nWhen a Pathway Diagram contains subpathways, the area containing each subpathway is overlaid with a coloured box, labelled with the subpathway name, to help locate it in the larger diagram. Below is the diagram for ERBB4 signaling. The four subpathways are represented as 4 boxed and shaded areas.\n\n![](/uploads/documentation/userguide/pathway-browser/gM-xLON2Aa-T8Ax7evA5kB_uKazCb7qlXwF9kKwQUmsVzJGxvDs3tohzGV_YglupRksZwE1c0C51gHfUAvSVKEfvVE4-uw5mvqLfacvgAlv78Ws8CTTKT0JU4B7ivRQc_Z_fKnvGBfNudDZnmtrwiA)\n\n## **Pathway Diagram zoom detail level**\n\nThe pathway diagram represents different levels of detail, depending on the zoom level. When fully zoomed-out, regions corresponding to subpathways are shaded. The boxes representing molecules or groups of molecules have no text labels and trivial molecules, such as water and ATP, are not represented. At the next level of zoom, subpathway shading disappears, while trivial molecules and the circular red icon indicating that a protein has known interactors fade into view. At closer levels of zoom the reaction nodes appear, as do boxes containing a number on the lines connecting molecules to the reaction node if stoichiometry is greater than one. At this level of zoom, if interactors are displayed their names appear. At the highest level of zoom, if available, proteins, small molecules and interactors display structural diagrams from PDBe or ChEBI with associated details.\n\n![](/uploads/documentation/userguide/pathway-browser/DxdyJhN-zdmOurblU7Ad2S_B2sbFoxyaASJ3tYMqVSn4XEY30iVau1F_whhOMT8YdakKB9ofAyG1eZYs9krLEfbiJ15NJSH1jt6vkSDBqT_AQ0Ac_KZQTMNgvPQgNBzpqzeApodZ9q8K6xx4rM2IpA)\n\n![](/uploads/documentation/userguide/pathway-browser/jw2FfgyBdzz2XUy959bmIUVW9m5ZDVbAiYOrJYoVYuQPgUWAfIcZ0NSc8stZKJjxEGf6R06n5j9zZUD0L2JW2uUunWT7poJKMtrrCE002bOtZnTuJ2OoWU8fmpqv88rbz4BKKa2AEPakwhsnR55LBQ)\n\n![](/uploads/documentation/userguide/pathway-browser/fh4FjWeNi6tZs6U2Jpim1RqTvQpwNjUXKWxD2JGUcLDXyOGehlNsO8YFX6B9wNx4m67hvjjdNeFm1mf5igw74HYRFgSRlmP6MPr0qSXfT_qyMKUeWV7oDkYQh_6jdKP-JVG9d3bGTGbS2LVcY000ZA)\n\n![](/uploads/documentation/userguide/pathway-browser/5rqZfLPJoFOHUD9zELUG3ZKQfGwqOlLP0bAXpzVl_J-J16jdOwG9rjztEN84NZTFSHhbzeBJPi1_jKXxAE5dODm3md7eJKhEuLHDEJfbDk0N2p_Orl2g1y_xerHwMfbZi987s_wI_1jzeobrg0PtqQ)\n\n## **Navigating Pathway Diagrams**\n\nThe Pathway Diagram, Hierarchy and Details Panels are interactively connected. Selecting an entity (molecular object) or event in the diagram will reveal relevant information in the Details Panel. Clicking a pathway name in the Hierarchy will open the corresponding Pathway Diagram in the Pathway Diagram Panel, and reveal details of the pathway in the Details Panel. If a subpathway is contained within the diagram that is displayed, clicking its name in the hierarchy will cause all the reactions in the pathway to be highlighted in blue. In the figure below, the diagram for Platelet homeostasis is displayed in the Pathway Panel, and the sub-pathway Prostacyclin signalling through prostacyclin receptor has been selected in the Hierarchy, causing all the reactions in this sub-pathway to be highlighted (blue) on the Pathway Diagram.\n\n![subpathway selection](/uploads/documentation/userguide/pathway-browser/subpathway_selection.png)\n\nSimilarly, selecting a reaction in the Hierarchy causes that reaction to be highlighted in the pathway diagram and updates the Details Panel to show details of the reaction. If the reaction is not in the visible region of the diagram, the view will re-centre and zoom to show it. If instead of clicking an event, you hover the mouse pointer over its name, it will be highlighted in yellow. In the figure above, the sub-pathway Platelet calcium homeostasis is highlighted in yellow.\n\n### **Getting Started**\n\n### Hierarchy Panel **Exercises**\n\nThis exercise is to check that you understand the organisation of the Hierarchy Panel. You don’t need to look at the Diagram Panel. \n\nFrom the Home page, search for PDGF signaling.\n\nIn the results page, open the expandable hierarchy in the section Locations in the Pathway Browser by clicking on the + button. **DON’T** click on the location before expanding the hierarchy! This will open the pathway diagram in the Pathway Browser.\n\nLook at the Hierarchy Panel on the left. \n\n1. How many sub-pathways does this pathway have?\n2. How many reactions are in the first sub-pathway?\n3. What reaction(s) follow ‘Translocation of PDGF from ER to Golgi’? *Hint:Look in the Details Panel, bottom-right.  If it is hidden, use the layout buttons in the top right corner, above the diagram, to reveal it.*\n\n### Subpathway **Exercises**\n\nThis exercise is to check that you understand Subpathway icons and the relationship between the Pathway Hierarchy and Pathway Diagram.\n\nOpen the pathway Hemostasis in the Pathway Browser. \n\nSelect the subpathway ‘Platelet Hemostasis’. \n\n1. What happens if you hover your mouse pointer in the Hierarchy on the sub-pathway ‘Platelet calcium hemostasis’?\n2. What happens if you click in the Hierarchy on the sub-pathway ‘Platelet calcium hemostasis’?\n3. What happens if you click in the hierarchy on the reaction ‘Binding of ATP to P2X receptors’?\n\n**More Information**\n\nThere are 5 subtypes of reaction node, indicating reaction subclasses.\n\n![](/uploads/documentation/userguide/pathway-browser/YXfWEaVjFMFQ5HdH96MvWb4gupfJw2C7JWYCgWZ0LQx1Ec_Pyu7Y5N8S8w424oRfBOjgd0PO78hVRq4MrJvK8V0P0p5n_bJk7fzMLbUyookLSS7Es0tiTlv3koxsL6J13m0j8JFqkjHJlDA6YBah7w)\n\n* Open squares represent ‘transition’, i.e. a change of state that is not one of the defined subclasses.\n* Solid circles represent ‘association’, i.e. binding\n* Double-bordered circles represent ‘dissociation’\n* A square with two slashes represents an ‘omitted process’. This is used when the full details of a reaction have been deliberately omitted. This is most commonly used for events that include representative members of a large family to illustrate the general behaviour of the group. It can be used for reactions that occur with no fixed order or stoichiometry, or for degradation events where the output is a random set of fragments.\n* Squares containing a question mark represent an ‘uncertain process’, where some details of the reaction are known, but the process is thought to be more complex than represented. Explanatory details are typically included in the Description.\n\n### Reaction Node **Exercises**\n\nThis exercise is to check that you understand reaction node subtypes.\n\nFrom the Home page, search for the pathway ‘Effects of PIP2 hydrolysis’ and open it in the Pathway Browser (in any of the several locations)\n\n1. What symbol represents the reaction for ‘Binding of IP3 to the IP3 receptor’?\n2. What symbol represents the reaction ‘IP3R tetramer:I(1,4,5)P3:4xCa2+ transports Ca2+ from platelet dense tubular system to cytosol? What subtype of reaction is this?\n3. Open the subpathway ‘Arachidonate production from DAG’. What is the name of the catalyst for ‘2-AG hydrolysis to arachidonate by MAGL’? Can you name the three outputs of this reaction?\n4. Can you find the UniProt ID for the catalyst? Hint: There are several ways to find this, two require you to select something!\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/userguide/reactome-fiviz.json b/projects/website-angular/content-dist/documentation/userguide/reactome-fiviz.json new file mode 100644 index 00000000..d7f1bb13 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/userguide/reactome-fiviz.json @@ -0,0 +1 @@ +{"title":"ReactomeFIVIz","category":"documentation","body":"\n## ReactomeFIVIz \n\n## Contents\n\n * [1. Overview](<#Overview>)\n * [2. Download and Launch ReactomeFIViz](<#Download_and_Launch_ReactomeFIViz>)\n * [3. Use Reactome Pathways](<#Use_Reactome_Pathways>)\n * [3.1. Explore Reactome Pathways](<#Explore_Reactome_Pathways>)\n * [3.2. Display Reactome Pathways in the FI Network View](<#Display_Reactome_Pathways_in_the_FI_Network_View>)\n * [3.3. Pathway Enrichment Analysis](<#Pathway_Enrichment_Analysis>)\n * [3.4. Probabilistic Graphical Model Based Pathway Analysis](<#Probabilistic_Graphical_Model_based_Pathway_Analysis>)\n * [3.5. Boolean Network Based Pathway Analysis](<#Boolean_Network_based_Pathway_Analysis>)\n * [3.6. Visualization of Structural Variants in the Context of Reactome Pathways](<#Structural_Variants_Visualization>)\n * [4. Use the Reactome Functional Interaction (FI) Network](<#Use_the_Reactome_Functional_Interaction_.28FI.29_Network>)\n * [4.1. Gene Set/Mutation Analysis](<#Gene_Set.2FMutation_Analysis>)\n * [4.2. PGM Impact Analysis](<#PGM_Impact_Analysis>)\n * [4.3. Microarray Data Analysis](<#Microarray_Data_Analysis>)\n * [5. Visualize Drugs in the Contexts of Reactome Pathways and FI Network](<#Visualize_Cancer_Drugs_in_Contexts_of_Reactome_Pathways_and_FI_Network>)\n * [5.1. Visualize Cancer Drugs in Reactome Pathways](<#Visualize_Cancer_Drugs_in_Reactome_Pathways>)\n * [5.2. Visualize Cancer Drugs in the FI Network](<#Visualize_Cancer_Drugs_in_the_FI_Network>)\n * [5.3. Visualize Drug Central Drugs](<#Visualize_DrugCentral_Drugs>)\n * [5.4. Simulate Impact Drugs on Pathway Activities](<#Simulate_Impact_of_Cancer_Drugs_on_Pathway_Activities>)\n * [6. Perform scRNA-seq Data Analysis and Visualization](<#scRNA_seq>)\n * [6.1. Standard Analysis via scanpy](<#scanpy_analysis>)\n * [6.2. RNA Velocity Analysis via scVelo](<#scvelo_analysis>)\n * [7. Other Features Related to the FI Network](<#Other_Features_Related_to_the_FI_Network>)\n * [7.1. Query FI Source](<#Query_FI_Source>)\n * [7.2. Fetch FIs for Node](<#Fetch_FIs_for_Node>)\n * [7.3. Show Pathway Diagram](<#Show_Pathway_Diagram>)\n * [7.4. Load Cancer Gene Index Annotations](<#Load_Cancer_Gene_Index_Annotations>)\n * [7.5. Survival Analysis](<#Survival_Analysis>)\n\n### Overview\n\nThe [ReactomeFIViz]() app is designed to find pathways and network patterns related to cancer and other types of diseases. This app accesses the [Reactome]() pathways stored in the database, help you to do pathway enrichment analysis for a set of genes, visualize hit pathways using manually laid-out pathway diagrams directly in Cytoscape, and investigate functional relationships among genes in hit pathways. The app can also access the Reactome Functional Interaction (FI) network, a highly reliable, manually curated pathway-based protein functional interaction network covering over 60% of human proteins, and allows you to construct a FI sub-network based on a set of genes, query the FI data source for the underlying evidence for the interaction, build and analyze network modules of highly-interacting groups of genes, perform functional enrichment analysis to annotate the modules, expand the network by finding genes related to the experimental data set, display pathway diagrams, and overlay with a variety of information sources such as cancer gene index annotations. Recently we have also added features to help users visualize FDA-approved cancer drugs in the contexts of the FI network and Reactome pathways, and use Boolean network models directly built from Reactome pathways to investigate potential functional impacts of displayed cancer drugs.\n\nFor an example how we use Reactome FIs for cancer data analysis, please see our publication: [A human functional protein interaction network and its application to cancer data analysis]().\n\n### Download and Launch ReactomeFIViz\n\nReactomeFIViz app 6 needs Cytoscape 3.7.0 or above. If you have not installed Cytoscape 3.7.0 or above, please download it from Cytoscape's web site: [http://www.cytoscape.org](). After launching Cytoscape, use menu \"Apps/App Manager\" to open the \"App Manager\" dialog, and search for \"ReactomeFI\". You should see the ReactomeFIViz app listed in the middle panel (See the Figure below. You may see a different version number. **Note: The listed name of this app is \"ReactomeFIPlugIn\"** , which is the original name of the app.). Choose the app, and then click the \"Install\" button at the bottom of the dialog. Follow the procedures to finish the installation.\n\n![](/uploads/documentation/userguide/reactome-fiviz/InstallReactomeFIVizFromAppstore.png)\n\nInstall ReactomeFIViz app From App Store\n\n### Use Reactome Pathways\n\nUsing the pathway visualization and analysis features, you can load pathways in the Reactome database into Cytoscape, visualize Reactome pathways in either the native pathway diagram view or the FI network view, do pathway enrichment analysis for a set of genes, and check genes from your list in hit pathways.\n\n#### Explore Reactome Pathways\n\n 1. Load Reactome pathways: Use menu \"Apps/Reactome FI/Reactome Pathways\" to load pathways into Cytoscape. The loaded pathways are organized in a hierarchical way as in the Reactome web application ([https://reactome.org/PathwayBrowser/]()), and listed in the left side \"Control Panel\" in the tab called \"Reactome\". \n\n![](/uploads/documentation/userguide/reactome-fiviz/ReactomePathways_4.png)\n\nReactome Pathways\n\n 2. View pathways in Reactome: After selecting a pathway in the pathway hierarchy, you can choose \"View Reactome Source\" from the popup menu (right click in Windows or Control-click in Macs to get the popup menu) \n\n![](/uploads/documentation/userguide/reactome-fiviz/PathwayPopup_4.png)\n\nPathway Popup Menu\n\nto view its detailed annotation in Reactome. Or you can choose \"View in Reactome\" to view the detailed information in the Reactome web application. \n**Note** : The ancestor pathways (container pathways) for a selected pathway are displayed in the middle panel, \"Selected Event Branch\", in the Reactome tab. You can click an ancestor pathway in this middle panel to view the clicked pathway's location in the original pathway hierarchical tree. However, the ancestor pathway will not be selected in the original tree. This is a designed behavior to keep the selection in the original tree.\n 3. Search pathways: Choose \"Search\" in the popup menu to bring up the search dialog. The found pathway(s) will be highlighted in blue in the pathway tree. \n**Note** : Search will be against all loaded pathways, not limited to the selected pathway and its contained sub-pathways. \n\n![](/uploads/documentation/userguide/reactome-fiviz/PathwaySearch_4.png)\n\nSearch Pathways\n\n 4. Open Reactome Reacfoam: The Reacfoam view provides a holistic view of all (exclude disease) human pathways in the Reactome database. Choose \"Open Reactome Reacfoam\" in the popup menu to open the Reactome Reacfoam in the default browser. \n\n![Open Reactome Reacfoam](/uploads/documentation/userguide/reactome-fiviz/OpenReacfoamPopup.png)\n\nOpen Reacfoam\n\n**Note** : Pressing your mouse and then holding it to a pathway box will select the pathway in the tree of ReactomeFIV automatically. \n\n![](/uploads/documentation/userguide/reactome-fiviz/Reacfoam.png)\n\nReactome Reacfoam\n\n 5. Open pathway diagram: Pathways in Reactome are organized in a hierarchical way. Not all pathways have their own pathway diagrams. A smaller pathway (called sub-pathway) may be drawn in a bigger pathway, which has its own pathway diagram. Most of top-level pathways (called modules or super pathways) are used to organize related pathways (e.g. Disease, Signaling Transduction), and therefore contain only rectangle boxes representing canonical pathways.\n 1. **Show Diagram** : If a selected pathway has its own pathway diagram, you can choose \"Show Diagram\" in the popup menu to open its pathway diagram into the central Cytoscape desktop.\n 2. **View in Diagram** : If a selected pathway is laid-out as a sub-pathway in a bigger one, you can choose \"View in Diagram\" in the popup menu to view its drawing in its container pathway. Reactions contained by the selected pathway will be highlighted in blue after the diagram is opened. For example, see pathway \"G1/S DNA Damage Checkpoints\" opened in pathway \"Cell Cycle Checkpoints\" below: \n\n![](/uploads/documentation/userguide/reactome-fiviz/PathwayDiagram_4.png)\n\nPathway Diagram\n\n 6. Search diagram: Objects displayed in a pathway diagram can be searched using \"Search Diagram\" from the popup menu (Right click in Windows or Control click in Macs without selecting any object in the pathway diagram to get the popup menu). The found objects will be selected and highlighted in blue. \n**Note** : Reactions will not be searched in the diagram. Use the search feature in the pathway tree to search for reactions.\n 7. Export diagram: Displayed diagram can be exported as a PDF, JPG or PNG file. Use \"Export Diagram\" from the popup menu to export the displayed diagram.\n 8. View Reactome Source or View in Reactome: Select an object, and then right-click (or control click) to get the popup menu. Choose \"View Reactome Source\" to view the detailed annotation for the selected object in a table (See Figure below for an example). Or choose \"View in Reactome\" to view the selected object in the Reactome web application. \n\n![](/uploads/documentation/userguide/reactome-fiviz/ReactomeInstanceView.png)\n\nReactome Instance View\n\n 9. List Genes: Genes contained by a complex or protein set, or a gene related by a displayed protein can be viewed by using a menu item \"List Genes\" after selecting an object. For example, the following dialog shows genes contained by complex hBUBR1:hBUB3:MAD2*:CDC20. Clicking a gene symbol will bring you to the web page for that gene in the GeneCard web site. \n\n![](/uploads/documentation/userguide/reactome-fiviz/ListGenes_4.png)\n\nList Genes\n\n#### Display Reactome Pathways in the FI Network View\n\n 1. Display pathway in the FI network view: A Reactome pathway can be converted into a functional interaction network using the method we have established (see [A human functional protein interaction network and its application to cancer dat analysis]()). Use \"Convert to FI Network\" in the popup menu brought up by right-clicking (Windows) or control-clicking (Macs) an empty area without any selection in the pathway diagram panel. The original pathway diagram will be moved to the bottom-left corner, and a new FI network will be generated based on the original pathway diagram, which will be displayed in a new network panel. \n**Note** : sub-pathways contained by the displayed pathway will be extracted into the FI network too. \n\n![](/uploads/documentation/userguide/reactome-fiviz/PathwayInFINetworkView_4.png)\n\nPathway in the FI Network View\n\n 2. Explore objects in the pathway and network views: Object selection in three views has been synchronized. Objects that can be selected include: events in the pathway tree view, objects in the pathway view at the bottom-left corner, and genes and FIs in the network view. You can select an object in one of three views, and corresponding objects in other two views should be selected too. Also you should use features implemented in popup menus in each individual view to explore objects as in a single view.\n\n \n**Note** : Using Cytoscape's built-in \"Saving Session\" feature can save the converted FI networks from pathways. However, displayed pathways cannot be saved into a session file for the time being. We will implement this function in a future release.\n\n#### Pathway Enrichment Analysis\n\n 1. **Pathway enrichment analysis** : A list of genes can be used to check if any of Reactome pathways have been enriched. To do this, use the popup menu item, \"Analyze Pathway Enrichment\" (below left figure), to get the dialog for choosing a gene set file (below right figure). You can use a gene set file in one of three file formats: one gene per line, all genes in the same line and delimited by commas, or all genes in the same line and delimited by tabs. You can also manually input genes by clicking the \"Click to Enter\" button (one line for one gene). \n**Note** : Dependent on the size of your gene list, it may take over 1 minute for running the pathway enrichment analysis. Pathways used in this feature are different from Reactome pathways for annotating a FI network or network modules. Here all over 2,000 pathways are used. For annotation, only a subset of Reactome pathways, which have been pre-selected for a certain size, are used. \n![Analyze Pathway Enrichment](/uploads/documentation/userguide/reactome-fiviz/AnalyzeGeneEnrichment_4.png)![Dialog for Analyzing Pathway Enrichment](/uploads/documentation/userguide/reactome-fiviz/DialogForAnalyzeGeneEnrichment_4.png) \n**Note** : To get a holistic view of the pathway enrichment analysis results, open the Reactome Reacfoam after the analysis using the popup menu \"Open Reactome Reacfoam\" for the pathway tree. You may also download the Reacfoam view by clicking the download button at the top-right corner. For windows 10 users, to open the Reacfoam view, you need to allow \"public\" access to Cytoscape by checking \"public\" in the settings for \"Allow an app through Windows Firewall\" in the \"System and Security\" control settings. \n![Reacfoam View for Enrichment Analysis](/uploads/documentation/userguide/reactome-fiviz/Reacfoam_Enrichment.png)\n 2. **View enrichment analysis results** : Pathway enrichment results are displayed as a table labeled as \"Reactome Pathway Enrichment\" in the \"Table Panel\" at the bottom of the main Cytoscape window. You can use \"Views in Diagram\" to view hit pathways in the pathway diagram view, and use \"Export Annotations\" to save the results in the table. Pathways in the Reactome pathway tree are highlighted in different colors based on their FDR values. Objects containing genes from your gene list are highlighted in a purple background with a white font in the pathway diagram view. Hit genes are displayed in a thick purple border in the FI network view for a hit pathway. \n**Note** : Hit genes are displayed with same colors in the \"Gene List\" dialog from the \"List Genes\" feature. \n\n![](/uploads/documentation/userguide/reactome-fiviz/PathwayEnrichmentResults_4.png)\n\nPathway Enrichment Results\n\n 3. **Perform GSEA analysis** : Gene Set Enrichment Analysis ([GSEA]()) is a rank-based pathway enrichment analysis approach, widely used in pathway-based data analysis. ReactomeFIViz provides support to perform GSEA analysis for Reactome pathways using a gene score file. Gene score may be t-score from differential gene expression analysis or other type of scores that can be ranked. To perform the GSEA pathway enrichment analysis, you need to provide a tab-delimited text file containing two columns: the first for gene symbols (human only) and the second for gene scores. The first row is reserved for the column headers, and will not be imported for analysis. To perform GSEA analysis, use popup menu \"Perform GSEA Analysis\" in the pathway tree to bring up the GSEA configuration dialog, where you can enter the gene score file and choose the minimum and maximum size of pathways along with the permutation number. \n\n![Perform GSEA Analysis](/uploads/documentation/userguide/reactome-fiviz/PerformGSEAAnalysis.png)\n\nPerform GSEA Analysis\n\n![Congigure GSEA Analysis](/uploads/documentation/userguide/reactome-fiviz/ConfigureGSEAAnalysis.png)\n\nConfigure GSEA Analysis\n\nThe GSEA analysis results are displayed in the table labeled as \"Reactome GSEA Analysis\" in Cytoscape Table Panel. Pathways subject to GSEA analysis in the pathway tree are highlighted based on FDR values as in the gene set-based pathway enrichment analysis (See above). For details about the meanings of columns shown in the results table, please consult the original GSEA document: [GSEA Document]().\n\n![GSEA Analysis Results](/uploads/documentation/userguide/reactome-fiviz/GSEAAnalysisResults.png)\n\nGSEA Analysis Results\n\n 4. **Overlay Gene Scores onto Pathways** : For significant pathways produced from the GSEA analysis, you can overlay gene scores to investigate locations of products of genes having significant high or low scores, therefore to understand potential pathway activity impact caused by these extreme scores. To do this, use popup menu \"Overlay Gene Scores\" in pathway diagram view to choose the gene score file in the configuration dialog. After the file loading, entities in pathway diagrams will be highlighted based on scores. You may choose one or more genes in the right gene scores Table View to visualize related entities in the pathway diagram. \n\n![Overlay Gene Scores](/uploads/documentation/userguide/reactome-fiviz/OverlayGeneScores.png)\n\nOverlay Gene Scores\n\n![Gene Score Overlay Results](/uploads/documentation/userguide/reactome-fiviz/GeneScoreOverlayResults.png)\n\nGene Score Overlay Results\n\n**Note** : If an entitiy (e.g. a complex or an EntitySet) is composed of more than one gene, the score for the entity is the mean of all genes annotated for that entity. To remove overlaid gene scores in the pathway diagram, use popup menu \"Remove Gene Scores\". To view the distribution of scores for genes annotated in the displayed pathway diagram, choose \"Plot View\" in the \"Gene Scores\" tab in Cytoscape Results Panel (see below).\n\n![Gene Score Distribution](/uploads/documentation/userguide/reactome-fiviz/GeneScoreDistribution.png)\n\nGene Score Distribution\n\n#### Probabilistic Graphical Model based Pathway Analysis\n\nWe adapted the PARADIGM approach for Reactome pathways by converting reactions drawn in pathway diagrams into factors in factor graphs, a type of probabilistic graphical models (PGMs). For details about the PARADIGM approach, see: [Inference of patient-specific pathway activities from multi-dimensional cancer genomics data using PARADIGM](). For introduction to factor graphs, see this wikipedia entry: [Factor Graph](). For test purposes, you can download two sample data files for 100 TCGA ovarian cancer patients: [CNVs]( \"ov.CNV.100.txt.zip\") and [mRNA gene expression]( \"ov.mRNA.100.txt.zip\"). The original TCGA OV files were downloaded from [the Broad GDAC]()[ Firehose]() web site.\n\n 1. **Run graphical model analysis in batch:** This feature is used to perform a batch graphical model analysis for all Reactome pathways having manual layout diagrams.\n 1. **Start the analysis:** Choose the popup menu, \"Run Graphical Model Analysis\", in the pathway hierarchical tree. After choosing this menu, you will be asked to choose data files and provide parameters for inference algorithms in the following two tabs in the \"Run Graphical Model Analysis\" dialog: \n\n![](/uploads/documentation/userguide/reactome-fiviz/LoadData.png)\n\nLoadData\n\n![](/uploads/documentation/userguide/reactome-fiviz/SetUpAlgorithms.png)\n\nSetUpAlgorithms\n\n \n**Notes** : \n1). If you choose \"Use empirical distribution\" in the data loading dialog, your loaded data will be used directly to construct factor functions without discretizing. At present, we recommend to use \"Choose threshold values for discretizing\". \n2). It is recommended to use the default parameters for inference algorithms for a batch analysis for quick performance. You can try different parameters for some specific pathways after you find interesting pathways from the batch analysis. _**If you want to perform two-case study (e.g. case-control, drug sensitive/insensitive, etc), check the checkbox, \"Used for pathway analysis for samples with two cases\", and provide a sample information file as required. For two-case analysis, a random data set will not be generated. Results will be presented by comparing two types of samples in your uploaded data files.**_\n 2. **Run the analysis:** Click the \"OK\" button to start the batch analysis. Depending on your sample size, it may take hours to finish the whole analysis.\n 3. **Finish the analysis:** After the batch analysis done, you may see the following list if some of pathways cannot be analyzed because the inference algorithm cannot converge. Please make sure the following list is small (probably less than 10 pathways) so that you can get enough results. \n\n![](/uploads/documentation/userguide/reactome-fiviz/FailedPathwaysList.png)\n\nFailedPathwaysList\n\n 4. **View the results:** The results from the batch analysis are displayed at the bottom table panel of the Cytoscape desktop as the following: \n\n![](/uploads/documentation/userguide/reactome-fiviz/BatchResults.png)\n\nBatchResults\n\n**Note** : There are 7 columns in this table: ReactomePathway for pathway names analyzed by the App; AverageUpIPA shows how much a pathway is up-perturbated by comparing to a random background (IPA: integrated pathway activity. See the above PARADIGM paper for details); AverageDownIPA shows how much a pathway is down-perturbated; CombinedPValue is a p-value indicating how significant this pathway is perturbed based on pathway outputs and the Fisher's method; MinimumPValue is the minimum p-value for pathway outputs; the last two columns are FDRs for two p-values based on the Benjamini–Hochberg method. AverageUpIPA or AverageDownIPA may be NaN, which indicates there is no detected up or down perturbation based on this analysis. The FDR filtering works based on the FDR values displayed in the last two columns with \"OR\" operation.\n 5. **Save the results:** To keep the results, use the popup menu in the table, \"Export Annotations\", to save the results into an external text file. The saved results can be loaded later on by using popup menu, \"Load Graphical Model Results\", in the pathway tree.\n 2. **Run graphical model analysis for a single pathway:** This feature is used to perform a graphical model analysis for a pathway displayed in the Cytoscape desktop.\n 1. **Open a pathway:** As before, you can choose a pathway in the pathway tree, and open its diagram in the Cytoscape desktop. Or you can choose an interesting pathway from the batch analysis results table by choosing popup menu, \"View in Diagram\".\n 2. **Start the analysis:** Choose popup menu, \"Run Graphical Model Analysis\", from the popup menu list in the pathway diagram window. You will be asked to provide data files and set up inference algorithms as in the batch analysis. After clicking the \"OK\" button, you will be asked to provide a list of escape names for entities in the pathway that will not be considered in the graphical model (e.g. ATP, ADP, etc) in the following dialog: \n\n![](/uploads/documentation/userguide/reactome-fiviz/EscapeNamesDialog.png)\n\nEscapeNameDialog\n\n \n**Note** : If you have loaded data files, you may choose to use the loaded data files without displaying the data loading dialog.\n 3. **View the results:** After the analysis is done, three tabs are displayed in the table pane of Cytoscape: IPA Pathway Analysis, IPA Sample Analysis and IPA Node Values. IPA Pathway analysis displays inference results for entities in the pathway by comparing samples in your data files and in a random data set generated dynamically by the App based on your data files. IPA Sample Analysis shows results for each individual samples as up or down perturbation. You may choose to show/hide p-values and FDR values for samples in the table. IPA Node Values show inference results for selected entities in the pathway diagram for each sample. Entities in the pathway diagram are highlighted based on values in the MeanDiff column in the IPA Pathway Analysis tab. \n\n![](/uploads/documentation/userguide/reactome-fiviz/CellCycleCheckPointsResults.png)\n\nCellCycleCheckPointsResults\n\n \n**Note** : You may change the color spectrum mapping for pathway diagram highlighting by double-clicking the color spectrum bar at the bottom of pathway diagram window to get the dialog for setting min/max values. You can save the analysis results for a pathway by using popup menu, \"Save Analysis Results\", and load the results back later on by \"Open Analysis Results\".\n 4. **Analyze gene level results:** The up or down perturbation results are inferred based on genomic data files for individual genes. The App provides features to analyze observation results and inference results for individual genes. You can view gene-level observation and inference results for the whole pathway by using popup menus, \"Show Gene Level Analysis Results\" and \"Show Observations\". You can also view these results for genes contained by an entity displayed in the pathway diagram after selecting that entity and then using these two popup menus. The following two dialogs show gene level observations and inference results for genes whose products are contained by complex \"hBUBR1:hBUB3:MAD2*:CDC20 complex [cytosol]\" in the cell cycle checkpoints pathway: \n\n![](/uploads/documentation/userguide/reactome-fiviz/ObservationsForEntity.png)\n\nObservationsForEntity\n\n![](/uploads/documentation/userguide/reactome-fiviz/GeneLevelResultsForEntity.png)\n\nGeneLevelResultsForEntity\n\n 5. **Analyze and visualize results for individual samples:** The inference results and loaded observation data are displayed in the right \"Results Panel\" (see below). By checking \"Highlight pathway for sample\", entities in the displayed pathway diagram will be highlighted based on inferred IPA values for the selected sample displayed in the \"Choose sample\" box. You can also enable animation by clicking the play button. There are two tabs in the \"Results Panel\": \"Inference\" for showing inferred IPA values, and \"Observation\" tab for loaded observed data related to entities in the pathway (Note: if you choose \"discretizing\", the displayed observation values are discretized: 0 for lower than normal, 1 for normal, and 2 for higher normal). Objects in three views (pathway diagram, inference table, and observation table) are synchronized for selection. \n\n![](/uploads/documentation/userguide/reactome-fiviz/PGMSampleViewWithInference.png)\n\nPGM Sample View: Inference\n\n![](/uploads/documentation/userguide/reactome-fiviz/PGMSampleViewWithObservation.png)\n\nPGM Sample View: Observation\n\n 6. **Compare analysis results for two samples:** You can compare observation data and inference results for two samples. To do this, choose two samples in the \"IPA Sample Analysis\" tab in the bottom results pane, and use popup menu \"Compare Samples\" to bring out another tab called \"Sample Comparison\". You can view comparing results for inference and observation data. \n\n![](/uploads/documentation/userguide/reactome-fiviz/TwoSampleComparison.png)\n\nTwo Sample Comparison\n\n#### Boolean Network Based Pathway Analysis\n\nWe have developed an approach (Manuscript in preparation) to convert biochemical reactions-based Reactome pathways into Boolean networks and then perform pathway simulation based on the constrained fuzzy logic method according to [Training Signaling Pathway Maps to Biochemical Data with Constrained Fuzzy Logic: Quantitative Analysis of Liver Cell Responses to Inflammatory Stimuli]() and [Querying quantitative logic models (Q2LM) to study intracellular signaling networks and cell-cytokine interactions](). Based on this approach, the user can perform pathway simulation inside Cytoscape using rich Reactome pathways based on fuzzy logic built upon Boolean networks.\n\n 1. **Set up and run logic model simulation** : Choose popup menu \"Run Logic Model Analysis\" in the Pathway Diagram View to get the New Simulation dialog. Enter a name for the simulation and the default value, which usually should be 1.0 to enable that the simulation can proceed, and then choose either PROD or MIN for the AND gate mode (the default choice PROD usually should be fine). \n**Note** : You may also choose an Transfer Function and adjust parameters for Hill function. However, for simplicity, it is suggested to use \"Identity Function\" first. For how to apply drugs for logic model simulation, see below. \n\n![](/uploads/documentation/userguide/reactome-fiviz/RunBooleanNetworkAnalysis.png)\n\nRun Boolean Network Analysis\n\n![](/uploads/documentation/userguide/reactome-fiviz/NewBNSimulation.png)\n\nNew BN Simulation\n\n \nAfter clicking the OK button in the New Simulation dialog, the default initial configuration will be displayed in the Results Panel. You may change the variable Type and Modification in the set up table by clicking the cell for the selected variable. To run the simulation, click the Simulate button in the Results Panel. \n\n![](/uploads/documentation/userguide/reactome-fiviz/SetupBNSimulation.png)\n\nSet up Boolean Network Analysis\n\n![](/uploads/documentation/userguide/reactome-fiviz/ChooseBNType.png)\n\nChoose BN Variable Type\n\n![](/uploads/documentation/userguide/reactome-fiviz/ChooseBNModification.png)\n\nChoose BN Modification Type\n\n 2. **Visualize the simulation results** : After the simulation is done, entities in the pathway diagram will be highlighted based on simulated values, which should be between 0 and 1. You may choose one or more entities to visualize their temporal behaviors inside the Table Panel at the bottom of Cytoscape. Attractors computed from the simulation are also listed in the right columns in the original set up table inside the Results Panel. **Note** : After simulation, you will not be able to modify any initial configuration. \n\n![](/uploads/documentation/userguide/reactome-fiviz/BNSimulationResults_Default.png)\n\nBoolean Network Simulation Results\n\n \n**Note** : To avoid clutter, if too many time steps have been generated for a logic model simulation, only the last 20 time steps are displayed in the table. However, the plot shows all time steps. You may choose different columns to display in the table by use popup menu \"Configure Columns\" after selecting any variables in the table.\n 3. **Perform pathway simulation via modification** : Simulation with Boolean network can help users uncover the impact of modification of entity activities (e.g. inhibition or activation caused by somatic mutation) on the pathway behaviors. For example, in PIP3 activates AKT signaling, Complex AKT:PIP3 forms a complex with EntitySet THEM4/TRIB3 to form another complex, which inhibits the activation of AKT (For details see [Reactome PIP3 activates AKT signaling]()). To perform simulation with modification, choose modification type in the simulation set up table and assign the strength to the modification. \n\n![](/uploads/documentation/userguide/reactome-fiviz/SetBNInhibition.png)\n\nChoose Inhibition for Boolean Network Simulation\n\n \nClicking the Simulate button invokes the constrained fuzzy logic model simulation with this configured inhibition. You can compare the simulation results between the two configurations by selecting an entity and then toggling the simulation result tables at the bottom of Cytoscape. \n\n![](/uploads/documentation/userguide/reactome-fiviz/ActiveAKT_Inhibition.png)\n\nActive AKT in Inihibition\n\n \n\n![](/uploads/documentation/userguide/reactome-fiviz/ActiveAKT_Default.png)\n\nActive AKT in Default\n\n \nYou can also use the \"Compare\" button in the Results Panel to get the comparison dialog and then choose two simulations for comparison. The comparison results are displayed in a new table listed at the bottom Table Panel. \n\n![](/uploads/documentation/userguide/reactome-fiviz/CompareTwoBNResults.png)\n\nComparison Dialog\n\n \n\n![](/uploads/documentation/userguide/reactome-fiviz/AktiveAKT_Comparison.png)\n\nActive AKT in Comparison\n\n \n**Note:** The RelativeDifference in the comparison result table is calculated based on relative change for each fuzzy logic variable, calculated as (valueInSim2 - valueInSim1) / (valueInSim2 + valueInSim1). The time course may be interpolated based on the attractor until this relative difference converges.\n 4. To remove all displayed constrained fuzzy logic simulation results, use popup menu, \"Remove Analysis Results\" under \"Run Logic Model Analysis\". The pathway diagram should be reset to the original colors, and all tables related to logic model simulations will be deleted.\n\n#### Visualization of Structural Variants in the Context of Reactome Pathways\n\nBy collaborating with Drs. Francesco Raimondi and Rob Russell at the University of Heidelberg to utilize protein-protein interaction 3D structures provided by [Mechismo](), a platform developed by [Dr. Russell's group]() to study the contributions of individual amino acid residues to protein structure and function, we have systematically analyzed mutations in the TCGA dataset and collected a set of reactions and functional interactions that involve proteins significantly enriched with mutations in their interaction interfaces (manuscript in preparation). We have added features to ReactomeFIViz to visualize these 3D structures and mutated residues in the contexts of Reactome pathways, reactions, and interactions.\n\n 1. **Visualize analysis results in the context of a pathway and its reactions** : In the opened pathway diagram view (See [Explore Reactome Pathways](<#Explore_Reactome_Pathways>) for how to open a pathway diagram), use the popup menu \"Load Mechismo Results\" to load the analysis results into the opened pathway diagram. After the results are loaded, reactions are colored based on FDR values as listed in the bottom table labeled as \"Mechismo Reaction\". \n\n![Mechismo Reaction View](/uploads/documentation/userguide/reactome-fiviz/MechismoReactionView.png)\n\nMechismo Reaction View\n\n**Note** : You may choose results from a different cancer type or pancancer by clicking the list at the top of the bottom tab labeled as \"Choose a cancer type to highlight reactions based on FDRs in the table\". Some of reactions are not highlighted by any color since there are no structural variants found for proteins annotated for these reactions. To remove the loaded results from the pathway diagram, use another popup menu \"Remove Mechismo Results\".\n 2. **Visualize analysis results in the context of a pathway FI network** : After the Mechismo results are loaded into the pathway diagram, you can convert the diagram into a FI network by using popup menu \"Convert to FI Network\" as usual. The edges displayed in the FI network view are highlighted based on FDR values listed in the bottom table labeled as \"Mechismo Interaction\". \n\n![Mechismo Interaction View](/uploads/documentation/userguide/reactome-fiviz/MechismoInteractionView.png)\n\nMechismo Interaction View\n\n**Note** : To make the FI network view simplier, check \"Show FIs Only for Selected\" at the left-bottom corner for the pathway diagram view. You may choose a reaction or complex and then view extracted FIs for the selected object in the pathway diagram view. Some of reactions and complexes may not contain any FI (e.g. a complex composed of a protein and a chemical or a reaction between a protein and a chemical).\n 3. **Visualize structural variants in the protein-protein 3D structures** : In the FI network view, choose the popup menu called \"Fetch Mechismo Results\" to bring the view for protein-protein interaction 3D models. Structural variants collected from the TCGA data set are mapped to the original protein-protein interaction 3D structures based on the [Mechismo]() platform. \n\n![Mechismo Structure View](/uploads/documentation/userguide/reactome-fiviz/MechismoStructureView.png)\n\nMechismo Structure View\n\n**Note** : In the structure view, amino acid residues whose coordinates are mapped to structural variants are displayed in balls. The residues that are mapped to the selected rows in the bottom table are highlighted in yellow. ReactomeFIViz uses [Jmol]() for protein 3D structure visualization. For more information about how to use Jmol, see its documentation: .\n\n### Use the Reactome Functional Interaction (FI) Network\n\nAfter the ReactomeFIViz app installed, you should see a menu item called \"Reactome FI\" under the Apps menu. Clicking this menu, you will see 6 sub-menus: [Gene Set/Mutation Analysis](<#Gene_Set.2FMutation_Analysis>), [PGM Impact Analysis](<#PGM_Impact_Analysis>), [Microarray Data Analysis](<#Microarray_Data_Analysis>), [Reactome Pathways](<#Use_Reactome_Pathways>) and [User Guide.]() Gene set/mutation analysis is for doing FI network-based data analysis for a set of genes or a mutation data file, PGM Impact analysis for performing functional impact analysis based on a probabilistic graphical model for the Reactome FI network using multiple omics data types, HotNet mutation analysis for the HotNet algorithm to search for network modules (see ), microarray data analysis for doing MCL (Markov Graph Clustering, ) based FI network clustering analysis by converting a non-weighted FI network to weighted network using correlations among genes in the network, Reactome pathways for loading pathways from the Reactome database, visualizing Reactome pathways directly in Cytoscape in a their native way, and doing pathway enrichment analysis, and user guide brings you to this user guide.\n\n![ReactomeFIViz app Menu](/uploads/documentation/userguide/reactome-fiviz/ReactomeFIMenu_4.png)\n\n#### Gene Set/Mutation Analysis\n\n 1. You can enter a list of genes directly into ReactomeFIViz by clicking the \"Enter\" button, or load it from a local file. Currently ReactomeFIViz supports three file formats for gene set/mutation analysis:\n 1. **Simple gene set** : one line per gene. For example, [GWASFuzzyGenes.txt](), a list of T2D GWAS genes.\n 2. **Gene/sample number pair**. For example, [GeneSampleNumber.txt](), which contains two required columns, gene and number of samples having gene mutated, and an optional third column listing sample names (delimited by \";\").\n 3. **NCI MAF (mutation annotation file)**. For example, [GlioblastomaMutationTable.txt](), the mutation file from the TCGA GBM project.\n 2. Choose a FI network version from listed three versions. \n**Note** : you may get different results using different FI network versions because a later version may contain more proteins/genes and more FIs. But based on our experience, a significant FI network module is usually stable across multiple versions.\n 3. Enter genes directly by clicking the \"Enter\" button or choose a file containing genes you want to use to construct a functional interaction network. To choose a file, select an appropriate file format and parameters to load genes and construct FI network in the dialog. Click the \"OK\" button to start the FI network building process. \n\n![Gene Set/Mutation Analysis](/uploads/documentation/userguide/reactome-fiviz/GeneSetAnalysis_4.png)\n\n 4. The constructed FI network will be displayed in the network view panel. A FI specific visual style will be created automatically for the FI network. \n\n![](/uploads/documentation/userguide/reactome-fiviz/FISubNetwork.png)\n\nReactome FI Sub-Network\n\n 5. The main features of Reactome FI plug-in should be invoked from a popup menu, which can be displayed by right clicking an empty space in the network view panel. \n\n![Popup Menu for Network](/uploads/documentation/userguide/reactome-fiviz/PopupMenu_4.png)\n\n * **Fetch FI annotations** : query detailed information on selected FIs. Three FI related edge attribues will be created: FI Annotation, FI Direction, and FI Score. Edges will be displayed based on FI direction attribute values. In the following screenshot, \"->\" for activating/catalyzing, \"-|\" for inhibition, \"-\" for FIs extracted from complexes or inputs, and \"---\" for predicted FIs. See the \"VizMapper\" tab, Edge Source Arrow Shape and Edge Target Arrow Shape values for details. \n\n![](/uploads/documentation/userguide/reactome-fiviz/FIAnnotations.png)\n\nFI Annotations\n\n \n**Note** : Here is a short explanation about displayed columns: GeneSet for pathways collected in the Reactome FI network hit by the query gene list; RatioOfProteinInGeneSet for ratios of numbers of genes contained in pathways to total genes in the Reactome FI network; NumberOfProteinInGeneSet for numbers of genes in pathways; ProteinFromNetwork for numbers of hit genes from the query gene list; P-value for pvalues calculated based on binomial test; FDR for FDRs calculated based on p-values using Benjamini-Hocherberg method; Nodes for hit genes in pathways.\n * **Analyze network functions** : pathway or GO term ennrichment analysis for the displayed network. You can choose to filter enrichment results by a FDR cutoff value. Also you can choose to display nodes in the network panel for a selected row or rows by checking \"Hide nodes in not selected rows\". The letter in parentheses after each pathway gene set name corresponds to the source of the pathway annotations: C - CellMap, R – Reactome, K – KEGG, N – NCI PID, P - Panther, and B – BioCarta. The following screenshot shows results from a pathway enrichment analysis. \n\n![](/uploads/documentation/userguide/reactome-fiviz/PathwayAnnotations.png)\n\nPathways in FI Sub-Network\n\n \n_Tip: To analyze pathway or GO term enrichment on a set of genes that are not linked together, select the \"Show genes not linked to others\" option in the \"Set Parameters for FI Network\" dialog._\n * **Cluster FI network** : run a network clustering algorithm (spectral partition based network clustering by [Newman 2006]()) on the displayed FI network. Nodes in different network modules will be shown in different colors (different colors used only for first 15 modules based on sizes). \n\n![](/uploads/documentation/userguide/reactome-fiviz/NetworkModules.png)\n\nNetwork Modules\n\n * **Analyze module functions** : pathway or GO term enrichment analysis for each individual network modules. You can select a size cutoff to filter out network modules that are too small, choose a FDR cutoff to view enriched pathways or GO terms under a certain FDR value, and view nodes in a selected row or rows only in the network diagram.\n * **Analyze functions for a set of selected genes** : select a set of nodes displayed in the network view and then choose the popup menu, Analyze Nodes Functions, to perform pathway or GO term enrichment analysis. The results will be displayed in a dialog.\n * **Load Cancer Gene Index** : load cancer gene index annotations. For details, see section [Load Cancer Gene Index](<#Load_Cancer_Gene_Index_Annotations>).\n\n#### PGM Impact Analysis\n\n 1. We have developed a probabilistic graphical model (PGM)-based functional impact analysis using the Reactome FI network by integrating multiple omics data types together. The current version of ReactomeFIViz supports four omics data types: CNV, mRNA expression, DNA methylation, and somatic mutation. PGMs used for this analysis are based on [Markov random field (MRF)](). Currently we support two types of MRFs: [Pairwise MRF]() and [Nearest neighbor Gibbs MRF](). You can choose one of these two models. We recommend pair-wise MRF for its simplicity.\n 2. To perform PGM-based functional impact analysis, choose menu, Apps/Rectome FI/PGM Impact Analysis/Analyze. You can enter your omics data by using the PGM configuration dialog. \n\n![](/uploads/documentation/userguide/reactome-fiviz/ReactomeFIPGMInput.png)\n\nFI-PGM Configuration Dialog\n\n \n**Notes** : \n1). ReactomeFIViz supports continuous observation variables without discretizing by choosing \"Use empirical distribution\" in the configuration. For somatic mutation, currently it supports NCI MAF file format only and requires a specific column named \"MA_FI.score\" for mutation function impact score collected from [Mutation Assessor]() or from some other sources. \n2). The default MRF model used is PairwiseMRF. You can choose the default setting for the first test. \n3). Several parameters are needed for MRF models. We have tuned these parameters based on a small toy model. In the current version of ReactomeFIViz, these parameters cannot be changed.\n 3. It may take several hours to finish the whole analysis. The actual running time will be dependent on the size of your data. The progress of the job running is displayed in the following progress pane. You can cancel the running at any time. \n\n![](/uploads/documentation/userguide/reactome-fiviz/ProgressPaneOfFIPGM.png)\n\nProgress of FI PGM Running\n\n 4. After the analysis is finished, you should see the result dialog similar to the following screenshot. You can use filtering features to filter to a list of genes that you want to use to construct a FI subnetwork for further analysis. \n\n![](/uploads/documentation/userguide/reactome-fiviz/FIPGMResultDialog.png)\n\nFI-PGM Result Dialog\n\n \n**Note** : If you select one or more genes in the result table, only these selected genes will be used to construct a FI sub-network. You can save the full analysis results by clicking the \"Save\" button (Results for all genes, not just displayed ones, will be saved). We strongly recommend to save your results first before clicking the \"OK\" button so that you can visit your results back.\n 5. After choosing the \"OK\" button, a FI subnetwork will be constructed and displayed in a network view. The sizes of displayed nodes are proportional to impact scores inferred from the FI-PGM model. To view impact scores and loaded observation data, you can choose a sample in the Sample List tab in the Results Panel. You can also enable sample-based network visualization of the network by checking \"Highlight network for sample\" in the Sample List tab. If you want to review the original results used to construct the FI subnetwork, click \"Show All Results\" in the \"Impact Gene Values\" tab in \"Table Panel\". \n\n![](/uploads/documentation/userguide/reactome-fiviz/FIPGMResultNetwork.png)\n\nFI-PGM Result Network\n\n#### Microarray Data Analysis\n\nThe ReactomeFIViz app can load gene expression data file, calculate correlations among genes involved in the same FIs, use the calculated correlations as weights for edges (i.e. FIs) in the whole FI network, apply MCL graph clustering algorithm to the weighted FI network, and generate a sub-network for a list of selected network modules based on module size and average correlation. The generated FI sub-network will be displayed in the network panel, and can be used for analysis as in Gene Set/Mutation Analysis. For details about this method, please see our publication: [A network module-based method for identifying cancer prognostic signatures]().\n\nAn array data file should be a tab-delimited text file with table headers. The first column should be gene names. All other columns should be expression values in different samples. **The data set in the file should be pre-normalized.** For example, see this gene expression file for breast cancer: [NejmLogRatioNormGlobalZScore_070111.txt.zip](). This data set was download from [van de Vijver et al in 2002](), and has been normalized.\n\n 1. **Select a microarray data file and run MCL network clustering** : After selecting sub-menu \"Microarray Data Analysis\" from menu Plugins/Reactome FIs, you should see the following dialog. Choose a microarray data file, check if you want to use absolute values as weights for edges, and input an inflation parameter (-I) for the MCL clustering algorithm. The smaller the inflation parameter is, the bigger the average size of generated network modules. Based on our own experience, we use 5.0 for the inflation parameter, the highest recommended value, and choose the absolute value for edge weights. For more details on how to choose the inflation parameter, please see . After you have set these parameters, click the OK button to load the data file, calculate correlations, and apply the MCL clustering algorithm. \n\n![](/uploads/documentation/userguide/reactome-fiviz/MicroarrayAnalysis_4.png)\n\nSet Parameters for Microarray Data Analysis\n\n 2. **Select network modules and build a FI sub-network** : The generated network modules are listed in the MCL clustering results dialog (see below). Only modules having more than 2 genes can be listed, and used in the FI sub-network building. You can choose a module size or an average correlation value (absolute value if absolute has been checked before) to filter out modules that may not be significant (Note: after set these cutoff values, please press the \"Enter\" key to commit your changes.). In our analysis, we choose modules having 7 or more genes with average correlation values no less than 0.25. These values have been used as default in the dialog. In the dialog, you can see how many modules and genes will be chosen for building FI sub-network under your selected filter values. Click the OK button to start the sub-network building. The built sub-network will be displayed, and can be analyzed as with sub-networks generated from the gene set/mutation analysis. \n\n![](/uploads/documentation/userguide/reactome-fiviz/MCLClusteringResultsDialog.png)\n\nChoose MCL Modules\n\n### Visualize Drugs in the Contexts of Reactome Pathways and FI Network\n\nReactomeFIViz provide a suite of features to assist users to visualize drugs in the contexts of Reactome pathways and networks. The drug data sources include two: Cancer Targetome ([Blucher et al 2017]()), which collected all FDA-approved cancer drugs (prior to 2018) and their target interactions from four sources, including DrugBank, Therapeutic Targets Database, IUPHAR, and BindingDB; [DrugCentral](), a comprehensive drug database supported by [NIH IDG program](). \n\n#### Visualize Drugs in Reactome Pathways\n\n 1. **List all FDA approved cancer drugs** : Use popup menu \"View Cancer Drugs\" in the Reactome pathway tree to get the list of all FDA approved cancer drugs collected in Cancer Targetome in a table dialog. \n\n![ViewCancerDrugs](/uploads/documentation/userguide/reactome-fiviz/ViewCancerDrugs.png)\n\nView Cancer Drugs\n\n \nA screenshot of this drug list is shown below: \n\n![](/uploads/documentation/userguide/reactome-fiviz/CancerDrugsTable.png)\n\nList of Cancer Drugs\n\n 2. **View drug/target interactions** : Select a drug in the drug table (See Figure above) to perform Google search, or view its targets by clicking one of buttons in the dialog. Two views are provided for drug/target interactions. Drug targets table view (below) shows targets for the selected drug with collected binding affinities, which are divided into different categories (e.g.): KD, IC50, Ki, and EC50. The displayed targets are pre-filtered using a set of default filters. You may change the default filters in the Drug/Target Interaction Filter dialog by clicking the \"Filter\" button. \n\n![DrugTargetsTableView](/uploads/documentation/userguide/reactome-fiviz/DrugTargetsView.png)\n\nDrug Targets Table View\n\n![](/uploads/documentation/userguide/reactome-fiviz/DrugTargetInteractionFilter.png)\n\nDrug Target Interaction Filter\n\nIn the Drug targets table view, you can choose an interaction and then click the \"View Details\" button to view the detailed information for the selected interaction. In the details view, you can browse the original pubmed references for experimental evidence, Gene Card entry for target, or Google drug by clicking the hyper links. \n\n![](/uploads/documentation/userguide/reactome-fiviz/CancerDrugDetailsView.png)\n\nCancer Drug Interaction Details View\n\nYou can also select multiple rows in the table to perform pathway enrichment analysis by clicking \"Overlay Targets to Pathways\". See [Pathway Enrichment Analysis](<#Pathway_Enrichment_Analysis>) for details about pathway enrichment analysis results.\n\nDrug targets plot view (below) provides a stagged plot of bar charts for evidence-supported interactions between the selected drug and all its targets, suggesting primary target(s) and secondary targets in a single graphical view.\n\n![DrugTargetsPlotView](/uploads/documentation/userguide/reactome-fiviz/DrugTargetsPlotView.png)\n\nDrug Targets Plot View\n\n 3. **View cancer drugs in pathway diagrams** : Cancer drugs can be overlaid directly onto displayed pathway diagrams using the popup menu, \"Fetch Cancer Drugs\", in the [Pathway Diagram View](). The fetched cancer drugs are displayed in the pathway diagram, linked to entities containing targets for the displayed drugs.\n\n![](/uploads/documentation/userguide/reactome-fiviz/FetchCancerDrugs.png)\n\nFetch Cancer Drugs\n\n![](/uploads/documentation/userguide/reactome-fiviz/DrugsInPathway.png)\n\nDrugs in Pathway Diagram\n\n**Note:** Use Popup menu \"Filter Drugs\" to adjust filters to select drugs and interactions in the pathway diagram view; Use \"Remove Overlaid Interactions\" to remove displayed drugs; You may choose a displayed entity in the pathway diagram and then use popup menu \"Fetch Cancer Drugs\" to display drugs targeted to the selected entity only. \n\n \n\nTo view the detailed information about the interaction between the displayed drug and its targeted entity, choose the link and use pupup menu \"Show Details\" to bring up the drug targets view. \n\n![](/uploads/documentation/userguide/reactome-fiviz/ViewDrugDetailsInPathway.png)\n\nView Details\n\n 4. **Perform systems pathway impact analysis** : In the cancer drug list table (see above), you may perform pathway impact analysis for all Reactome pathways having entity level view drawn by choosing the \"Run Pathway Impact Analysis\" button. After the analysis is done, the impact results are displayed in the table labled with the selected drug in the Cytoscape Table Panel. See below for an example of the results for Imatinib:\n\n![PathwayImpactAnalysisTable](/uploads/documentation/userguide/reactome-fiviz/PathwayImpactAnalysisTable.png)\n\nPathway Impact Analysis Results\n\n**Note** : You may open the pathway diagram using popup menu \"View in Diagram\" and export the table into a text file using menu \"Export Table\" in the results table.\n\n#### Visualize Cancer Drugs in the FI Network\n\nThe Reactome FI network provides a network-based view among proteins/genes, where each gene/protein is displayed only once. Visualizing cancer drugs in a FI network context shows a simplified relationship between cancer drugs and their targets. In the [FI Network View](<#Gene_Set.2FMutation_Analysis>), use popup menu, \"Reactome FI/Overlay Cancer Drugs/Fetch Cancer Drugs\", to load cancer drugs for proteins/genes displayed in the FI network. The loaded drugs and interactions between drugs and proteins/genes are rendered in green diamonds and blue edges, respectively.\n\n![](/uploads/documentation/userguide/reactome-fiviz/FetchCancerDrugsInFINetwork.png)\n\nFetch Cancer Drugs in FI Network\n\n![](/uploads/documentation/userguide/reactome-fiviz/ShowDrugInteractionDetailsInFI.png)\n\nShow Drug Target In FI Network\n\n \n**Note** : To remove overlaid drugs in the FI network view, use popup menu, \"Reactome FI/Overlay Cancer Drugs/Remove Drugs\"; As in the Pathway diagram view, you can also apply filters by using \"Filte Drugs\" popup menu; To view the details about an interaction between a drug and a target, select the edge, and then use popup menu \"Reactome FI/Show Drug/Target Interaction Details\". (You may need to zoom into the selected edge.)\n\n#### Visualize DrugCentral Drugs\n\nVisualize drugs collected in DrugCentral is simlar with cancer drugs collected in Cancer Targetome. You can use popup menu \"View DrugCentral Drugs\" in the pathway tree to list all drugs collected in the DrugCentral database, \"Fetch DrugCentral Drugs\" popup menu in the pathway diagram view to overlay drugs onto pathways, or \"ReactomeFI/Overlay Drugs/Fetch DrugCentral Drugs\" to overlay drugs onto the FI network in the network view.\n\n#### Simulate Impact of Drugs on Pathway Activities\n\nOverlaying cancer drugs onto the contexts of Reactome pathways and its FI network helps users to understand the potential impact of applying drugs on the pathway activities and network behavior. However, the actual perturbation of drugs on pathways may be much more complicated. Performing pathway simulation may help users to understand the actual impact. ReactomeFIViz implements features to assist users to perform Boolean network-based drug simulation. Before you do drug simulation, please read section [Boolean Network Based Pathway Analysis](<#Boolean_Network_based_Pathway_Analysis>) first. In this section, we will use pathway [HDR through Homologous Recombination (HR) or Single Strand Annealing (SSA)]() and drug Imatinib as an example (Note: To get the following screenshot, open diagram for this pathway, and then fetch cancer drugs and filter drugs to Imatinib using the name filter).\n\n![](/uploads/documentation/userguide/reactome-fiviz/ImatinibInHDRThroughHROrSSA.png)\n\nImatinib in Pathway\n\n 1. **Set up new simulation for drug** : In the pathway diagram view, use popup menu, \"Run Logic Model Analysis\". In the New Simulation dialog, enter a name (e.g. Imtatinib) and default value for the simulation, and then choose the mode for the AND gate as in the regular logic model simulation. To perform drug simulation, choose the Drug Application tab and a drug data source, and then click the \"...\" button to bring up the Drug Selection dialog. ** \nNote** : You will need to adjust the drug filters to show all targets for Imatinib as displayed in the following screenshot. Based on the collected annotations for interactions between cancer drugs and their targets, default modification types will be selected (as expected, most of them are inhibition). Strengths of modifications are pre-configured based on affinities collected in our aggregated drug/target database. \n\n![](/uploads/documentation/userguide/reactome-fiviz/ImatinibNewSimulation_1.png)\n\nImatinib BN Simulation I\n\n![](/uploads/documentation/userguide/reactome-fiviz/ImatinibNewSimulation_2.png)\n\nImatinib BN Simulation II\n\n \n\n![](/uploads/documentation/userguide/reactome-fiviz/SelectDrugsForBN.png)\n\nSelect Drugs for BN Simulation\n\n \n**Note:** Since no affinities can be found for interactions between Imatinib and CHEK1 or CDK2, CHEK1 and CDK2 are not listed in the New Simulation dialog. Checking \"Filter members in sets to drug targets\" will select members in EntitySet instances that are targeted by drugs to force showing of potential pathway impact caused by drugs.\n 2. **Perform simulation with drug** : The configuration for drug in the Drug Selection dialog will be copied into the Boolean Network configuration table displayed in the Results Panel. Click the \"Simulate\" button to perform simulation. After the simulation is done, Entities in the pathway diagrams are highlighted in different colors based on values in the attractor with detailed temporal values displayed in the table at the bottom Table Panel. \n\n![](/uploads/documentation/userguide/reactome-fiviz/ImatinibBNSetup.png)\n\nImatinib BN Setup\n\n \n\n![](/uploads/documentation/userguide/reactome-fiviz/ImatinibBNResults.png)\n\nImatinib BN Results\n\n 3. **Investigate the drug impact on pathway activities** : To see the impact of a drug on the pathway activities, perform another Boolean network simulation without applying cancer drugs (here as Default) (For details, see [Boolean Network Based Pathway Analysis](<#Boolean_Network_based_Pathway_Analysis>)). The screenshot for the logic model simulation results with the default initial configuration for pathway \"HDR through Homologous Recombination (HR) or Single Strand Annealing (SSA)\" is displayed below: \n\n![](/uploads/documentation/userguide/reactome-fiviz/DefaultHDRThroughHROrSSABNResults.png)\n\nHDR Through HR or SSA Default Results\n\n \nTo see the drug impact to the activity of an entity displayed in the pathway, choose that entity and check its temporal behavior in both BN:Default and BN:Imatinib tables. For example, below a complex (see above screenshot) related to ABL1 is selected (Up for imatinib applied and down for default without drug): \n\n![](/uploads/documentation/userguide/reactome-fiviz/ImatinibOneVariable.png)\n\nImatinib One Variable\n\n \n\n![](/uploads/documentation/userguide/reactome-fiviz/DefaultBNOneVariable.png)\n\nDefault One Variable\n\n \nYou may also use the \"Compare\" button to check the detailed difference in the computed attractors from two simulations. \n\n![](/uploads/documentation/userguide/reactome-fiviz/PS456ABL1Comparison.png)\n\np-S456-ABL1 Values\n\n \n**Note** : From the above comparison, we can see that application of imatinib will significantly impact the formation of the complex in HDR, an effect of imanitib on DNA repair pathway has been reported by others (e.g. [Imatinib (STI571) induces DNA damage in BCR/ABL-expressing leukemic cells but not in normal lymphocytes]()). You may see a little bit different simulation results because of update in pathway annotations in new versions of ReactomeFIViz.\n\n### Perform scRNA-seq Data Analysis and Visualization\n\nReactomeFIViz implements a suite of features for users to conduct scRNA-seq data analysis and visualization. To do this, we have packaged several popuplar Python packages developed for scRNA-seq data analysis and visualization together into a Python standalone application. These packages include [scanpy]() for routine scRNA-seq data analysis and visualization and [scVelo]() for RNA velocity based data analysis and visualization. \n**Note** : For scRNA-seq data analysis and visualization, you need to have Python 3.7 installed at your computer. If you have not installed Python at your computer, you can do so by downloading an installer from [https://www.python.org/downloads]() for your computer. We have tested Python 3.7 only and thefore suggest that you use 3.7 for these features. However, you don't need to install our standalone Python application indepedently from ReactomeFIViz. When needed, ReactomeFIViz will automatically download and update the application for you as long as you point to the correct Python application path (i.e. directory and application file).\n\n#### Standard Analysis via Scanpy\n\n 1. **Set up the analysis:** The Python package, [scanpy](), provides a set of powerful analysis and visualization features for scRNA-seq data. ReactomeFIViz wraps these features for users to take advantage of pathway and network analysis and visualization facilities provided by Cytoscape in general and ReactomeFIViz in particular. To conduct a scRNA-seq analysis using scanpy, choose menu Apps/Reactome FI/Single Cell Analysis/Analyze to get the configuration window as shown below: \n\n![scRNA-seq Analysis Configuration](/uploads/documentation/userguide/reactome-fiviz/scRNASeqConfig.png)\n\nscRNA-seq Analysis Configuration\n\nReactomeFIViz supports scRNA-seq data generated from mouse and human. You should choose the species for your data and the format. If your data is in the 10x-Genomics-mtx format, you should choose the directory containing the files in that format. You may check an imputation method. Currently, ReactomeFIViz supports the [MAGIC]() approach only. You may also check total_counts and/or pct_counts_mt for [regress out]() to control unwanted variations. \n**Note** : All analysis steps and their paramters are logged into CytoscapeConfiguration/ReactomeFIViz/ReactomeFIViz.{date}.log in your user folder for your review.\n 2. **Configure Python for ReactomeFIViz:** If you have not done so, you will be asked to set up Python for ReactomeFIViz using the following configuration dialog when ReactomeFIViz downloads the Reactome Python app for scRNA-seq data analysis and visualization. \n\n![Set up Python](/uploads/documentation/userguide/reactome-fiviz/SetupPython.png)\n\nSet up Python\n\n**Note** : Currently only Python 3.7 is supported. \nReactomeFIViz uses the functions provided by scanpy for pre-processing, normalization, UMAP analysis, cell clustering and all other scRNA-seq analysis except imputation, which is handled by [MAGIC](), if checked. See details in the scanpy document: . For paramters used for these functions, open the ReactomeFIViz.{data}.log file (see above).\n 3. **Visuzlize Cell Networks** : Dependent on the sample size and the computing power, it may take several minutes to finish the analysis. After that, two networks, one for cell clusters and another for single cells, are displayed in Cytoscape and listed under \"SingleCellClusterNetwork\" and \"SingleCellNetwork\" in the left-side, Network tab, respectively. \n\n![ScRNA-seq Cluster Network](/uploads/documentation/userguide/reactome-fiviz/ScClusterNetwork.png)\n\nScRNA-seq Cluster Network\n\n![ScRNA-seq Cell Network](/uploads/documentation/userguide/reactome-fiviz/ScCellNetwork.png)\n\nScRNA-seq Cell Network\n\n**Note** : You may use the built-in Cytoscape Style features and other configuration properties to adjust the rendering of these two networks. See Cytoscape's user manual by clicking menu Help/User Manual. To show or hide edges in the networks, use popup menu Reactome FI/Show Edges (see below for a screenshot). Cluster in the cell cluster network are named based on the rank of cell clusters sorted by cell numbers in the clusters. For example, cluster0 has the largest number of cells.\n 4. **Analyze scRNA-seq Data** : To explore the loaded scRNA-seq data and perform further analysis, you can use the popup menu provided in the cell cluster or single cell network view as shown below: \n\n![ScRNA-seq Standard Analysis Popup Menus](/uploads/documentation/userguide/reactome-fiviz/ScStandardPopupMenus.png)\n\nScRNA-seq Standard Analysis Popup Menus\n\n * **Load Gene Expression** : Overlay expression value for a gene onto the network. You may enter the gene name from the input dialog after clicking this menu. \n**Note** : Cell clusters use the median values of cells in the clusters for coloring for gene expression and cell features (below).\n * **Load Cell Features** : Overlay cell features by choosing a sub-menu, e.g., n_genes (total genes), n_genes_by_counts (total genes having counts), total_counts, total_count_mt (for mitonchorian genes), pct_counts_mt (percent of mitochondria genes), and leiden (network clustering results based on the [Leiden]() algorithm). \n**Note** : Both the cell cluster network and the single cell network are colored based on the leiden clustering results when they are rendered after the analysis. To get back to the orignal colors, choose Load Cell Feature/leiden.\n * **CytoTrace Analysis** : Perform CytoTrace analysis to predict the differential state of cells based on the number of detected expressed genes per cell. ReactomeFIViz provides a Python implementation of CytoTrace based on the original R code published in . For details about CytoTrace, see the original paper: [Single-cell transcriptional diversity is a hallmark of developmental potential](). You can find more information in the CytoTrace's web site: . \n**Note** : The analysis may take several minutes. After the analysis, cells will be colored based on predicted differential state values scaled between 0 and 1: 0 for most differentiated (yellow) and 1 for least differentiated (blue). The analysis results are cached in ReactomeFIViz and listed in a new column called \"cytotrace\" in the Node Table at the bottom. When you choose this menu again after the analysis, the results will be overlaid without performing another analysis. A new menu item called \"cytotrace\" will be added to the \"Load Cell Features\" popup menu too so that you can load these results directly. \n**Note** : You may not see this menu item after the analysis. Try to switch to another network view and then come back to refresh the menu items.\n * **Diffusion Pseudotime Analysis (DPT)** : Perform cell trajectory inference based on network diffusion. For details about the algorithm, see [scanpy.tl.dpt]() and the original paper: [PAGA: graph abstraction reconciles clustering with trajectory inference through a topology preserving map of single cells](). To conduct this analysis, the id of a cell that should be regarded as the root of the trajectory is needed. If you have some idea what this cell is, you may enter it directly in the following dialog. If you don't know what it is but have some idea in which cluster or clusters the root may reside, you can enter the cluster(s) in the second text field. ReactomeFIViz will try to infer a possibe cell root for you in your specified cluster(s) based on [PageRank](). For details about the cell root inference algorithm, see [infer_cell_root](). \n\n![Configure Cell Root for DPT](/uploads/documentation/userguide/reactome-fiviz/ConfigCellRootForDPT.png)\n\nConfigure Cell Root for DPT\n\n**Note** : If you don't have any idea what the cell root is, you may try several approaches. If you have conducted a CytoTrace analysis, you may choose the cell having the largest CytoTrace value as the cell root. You may also try the cell having the largest number of detected genes as the root for exploration data analysis. To choose cell clusters for inferring the cell root, you should choose clusters having the largest CytoTrace values or gene numbers. If you have enter values into both text fields in the above dialog, the value in the first text field will be used as the cell root. \nAfter the DPT analysis, cells will be colored based on DPT values ranged from 0 to 1 with 0 as the earliest cell (yellow) in the trajectory and 1 as the latest (blue). A new column called \"dpt_pseudotime\" will be added into the Node Table at the bottom and \"dpt_pseudotime\" will be registered as a new item under \"Load Cell Feature\" popup menu for loading without repeating the analysis. \n**Note** : You may not see this menu item after the analysis. Try to switch to another network view and then come back to refresh the menu items.\n * **Differential Expression Analysis** : Perform differential gene expression analysis between a cell cluster (group) and another cell cluster or all other cell clusters using [t-test_overestim_var](). To conduct this analysis, you need to choose two groups of cells first: The group of cell for analysis based on clustering results and another group as the reference. You may choose another cell cluster or all other cells as the reference. \n\n![Choose Cell Groups for Differential Expression Analysis](/uploads/documentation/userguide/reactome-fiviz/ScDiffChooseGroups.png)\n\nChoose Cell Groups for Differentila Expression Analysis\n\nThe differential expression analysis result is displayed in the following table. You may choose one or more filteres by clicking the \"Add\" button to filter genes displayed in the table. To create a FI network for the filtered genes displayed in the table, click the \"Build FI Network\" button. To conduct a pathway enrichment analysis, you can choose Binomial_test or [GSEA](<#Gene_Set.2FMutation_Analysis>). The Binomial_test will use the filtered, displayed genes in the table while the GSEA analysis will use gene rank by the score, including genes that are not displayed in the table. \n\n![Differential Expression Analysis Result](/uploads/documentation/userguide/reactome-fiviz/ScDiffExpResultTable.png)\n\nDifferential Expression Analysis Result\n\n**Note** : Genes in the FI network constructed from the selected genes are colored based on gene scores. For more information on how to use the features for the FI network, see [Gene Set/Mutation Analysis](<#Gene_Set.2FMutation_Analysis>). You may open a pathway diagram when a network view is shown. To get back to the previous network view, close all displayed pathway diagrams and then select the network in the Network tab in the left, control panel. Reactome mouse pathways are predicted from human pathways based on the panther orthologous mapping file. For details, see: [Inferred Events in Reactome](). The mouse human functional interaction network is predicted from the human functional interaction network using the mapping file provided by [MGI](), downloaded using this link: . One human gene may be mapped to multiple mouse genes. Therefore, the mouse FI network may show a node that is annotated with multiple mouse genes. For example, see below: The original human KLK3 is mapped to Klk1b9, Klk1b21, and many others, which are all listed in the node table at the bottom and in the network view as the label for that node. Currently links to these nodes in the FI network point to human genes (e.g. GeneCard). \n\n![One Human Gene Mapped to Multiple Mouse Genes](/uploads/documentation/userguide/reactome-fiviz/OneHumanGeneToMultipleMouseGenes.png)\n\nOne Human Gene Mapped to Multiple Mouse Genes\n\n * **Build Regulatory Network** : Infer an underlying gene regulatory network between transcriptional factors (TFs) and their targets for one or more cell clusters. This approach is inspirted by Qiu et al's [Inferring Causal Gene Regulatory Networks from Coupled Single-Cell Expression Dynamics Using Scribe](). However, the current implementation provided by ReactomeFIViz uses time-delayed gene co-expression to infer potential causal relationships between TFs and their targers instead of \"restricted directed information (RDI)\" and limits the causal relationships search between TFs and their targets based on TF/target interactions provided by [dorothea](). To perform this analysis, set up parameters in the following dialog: \n\n![Gene Regulatory Network Infernece Setup](/uploads/documentation/userguide/reactome-fiviz/ScRegNetSetup.png)\n\nGene Regulatory Network Inference Setup\n\n**Note** : You may choose Spearman, Pearson, or Kendal for gene expression correlaiton calculation. The cell time type is one of latent_time, velocity_pseudotime, cytotrace or dpt_pseudotime, which are cell properties calculated during trajectory inference. The first two types are generated during an RNA velocity analysis (See below). If ReactomeFIViz cannot find any of these variables, you will be asked to perform the dpt_pseudotime analysis first. The time delay is used to conduct a delayed gene co-expression calculation. For example, the expression of a TF is [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] and the expresison of one of its target is [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]. If the time delay = 4, the correlation between [1, 2, 3, 4, 5, 6] and [15, 16, 17, 18, 19, 20] is calculated. The time delay in the above dialog is for the maximum time delay. Therefore, if you enter 7 for the time delay, the actual time delay values used for correlation calculation are [1, 2, 3, 4, 5, 6, 7]. The correlation is calculated 7 times and the maximum value of those calculated correlation values is used. For the cell groups, you may choose all, one of cell clusters, or multiple cell clusters (hold the command key under Mac or the control key under Windows). \nIt may take several minutes to calculate the correlation for all TF/target interactions and then build the regulatory network. The following is an example showing how a final gene regulatory network looks like: \n\n![Partial Gene Regulatory Network](/uploads/documentation/userguide/reactome-fiviz/PartialGeneRegNet.png)\n\nPartial Gene Regulatory Network\n\n**Note** : A style called \"Regulatory Network Style\" is created for rendering the generated gene regulatory network. With this style, TFs are rendered as diamonds while their targets as circles. The original [dorothea]() interactions provide annotation: -> for activation and -| for inhibition. Red for positive correlation while blue for negative correlaiton. The calculated correlation may not match the original annotation in dorothea. For example, in the above figure, the interaction between Insm1, a TF and one of its target, Scg3, is annotated as an inhibition. However, the actual calculated Spearman correlation is positive. The edge width is proportional to the absolute correlation value. You may investigate this style inside Cytoscape for more information.\n * **Project New Data** : Project another data set onto the displayed network. This feature uses the [ingest]() function in scanpy to integrate a new dataset onto the dataset used to generate the network, showing where cells in the new dataset can be mapped to the displayed network. To perform this analysis, enter the data file in the following dialog: \n\n![Project New Data Configuration](/uploads/documentation/userguide/reactome-fiviz/ProjectNewDataConfig.png)\n\nProject New Data Configuration\n\n**Note** : You cannot choose the approach in this dialog. It is expected that the same approach should be used to project a new dataset onto the existing network. After projecting, a new popup menu called \"Toggle Projected Data\" is added under the \"Project New Data\" menu for toggling the display of the projected cells. The following two figures show the cell network before (left) and after (right) a new dataset is projected. As shown, the majority of cells in the new dataset are projected onto the cell clusters displayed in green, salmon and rosy brown around the middle and top-right regions. \n\n![Before Projecting](/uploads/documentation/userguide/reactome-fiviz/CellNetworkBeforeProject.png)![After Projecting](/uploads/documentation/userguide/reactome-fiviz/CellNetworkAfterProject.png)\n\n * **Save Analysis Results** : All analysis results may be saved into a local file in the [h5ad]() format. The saved file can be opened using the main menu, Apps/Reactome FI/Single Cell Analysis/Open.\n\n#### RNA Velocity Analysis via scVelo\n\nRNA velocity analysis is a powerful approach to quantitatively model dynamic behavior of mRNA transcription of genes based on count ratios between unspliced and spliced forms of mRNAs ([La Manno et al 2018]()). [scVelo]() provides an enhanced implementation of the original approach in Python. ReactomeFIViz packages scVelo for you to conduct this analysis in Cytoscape using graphic user interfaces without scripting. For more information about RNA velocity and scVelo, see the original scVelo document: .\n\n 1. **Set up the analysis** : Select \"RNA Velocity Analysis via scVelo\" for Approach in the following scRNA-seq analysis action dialog and choose one of RNA velocity modes. To see the differences among the three modes listed in dialog, see the original scVelo paper, [Generalizing RNA velocity to transient cell states through dynamical modeling](). The default is \"stochastic\". However, if you want to get more dynamic information, choose \"dynamical\". For what you can do with the dynamical model, see [Dynamical Modeling with scVelo](). The data file required by this analysis should be pre-processed specically by using velocyto or loompy/kallisto pipeline and contain two matrices for unspliced and spliced abundances. For more information on how to get started, see this scVelo tutorial: [Getting Started](). \n\n![RNA Velocity Analysis Configuration](/uploads/documentation/userguide/reactome-fiviz/RNAVelocitySetup.png)\n\nRNA Velocity Analysis Configuration\n\n 2. **Visualize the RNA velocity analysis results** : Dependent on the mode you choose, it may take a while to conduct the RNA velocity analysis. The outputs are the same as ones from a standard analysis using scanpy except that the single cell cluster network is displayed as directed, weighted network with directions corresponding to times in the inferred trajectory based on the [PAGA]() approach and weights for the connectivities between cell clusters. The following figure shows an example of such a weighted, directed cell cluster network. \n\n![RNA Velocity Cluster Network](/uploads/documentation/userguide/reactome-fiviz/RNAVelocityNetwork.png)\n\nRNA Velocity Cluster Network\n\n**Note** : It is expected that you see different results from the RNA velocity analysis than ones from the standard analysis.\n 3. **Analyze the RNA velocity results** : Most of analysis features for the displayed networks generated from the RNA velocity analysis are the same as ones from the standard analysis via scanpy. However, the RNA velocity analysis provides much more cell features than the standard analysis as shown in the following popup menu: \n\n![RNA Velocity Cell Features](/uploads/documentation/userguide/reactome-fiviz/RNAVelocityCellFeatures.png)\n\nRNA Velocity Cell Features Popup Menu\n\n**Note** : To understand the meanings of these RNA velocity specific cell features, please refer to the original scVelo tutorials: [scVelo tutorials](). In addition to the above RNA velocity specific cell features, a new popup menu group is added for you to conduct some RNA velocity specific data analysis and visualization as shown below: \n\n![RNA Velocity Popup Menu](/uploads/documentation/userguide/reactome-fiviz/RNAVelocityPopupMenu.png)\n\nRNA Velocity Popup Menu\n\n**Note** : Refer to this scVelo tutorial for Embedding, Embedding Grid, Embedding Stream, and Gene Velocity: [RNA Velocity Basics](). ReactomeFIViz utilizes scVelo's visualization features to generate image files for these plots and then automatically open them. To keep these files for your record, you may have to save them into your designated files. Otherwise, they will be automatically deleted when you close Cytoscape. \n * **Rank Velocity Genes** : Ranks genes in individual cell clusters based on differential expression analysis using scVelo's rank_velocity_genes function: [ rank_velocity_genes](). Top 250 genes for individual clusters returned from this analysis are displayed in a table as shown in the following figure. You may conduct pathway enrichment analysis using a binomial test or build a FI network for a selected cell cluster. \n\n![RNA Velocity Rank Gene Table](/uploads/documentation/userguide/reactome-fiviz/RNAVelocityRankGeneTable.png)\n\nRNA Velocity Rank Gene Table\n\n**Note** : You may filter genes displayed in the table. However, for pathway enrichment analysis or building a FI network, all 250 genes for a selected cell cluster are used.\n * **Rank Dynamic Genes** : If you choose the dynamic mode for your RNA velocity analysis, you can also do \"Rank Dynamic Genes\". This feature is based on scVelo function, [rank_dynamical_genes](). The output and the functions are the same as \"Rank Velocity Genes\".\n\n### Other Features Related to the FI Network\n\n#### Query FI Source\n\nSelect an edge and right click it to get the popup menu for edge. Select a menu called \"Reactome FI/Query FI Source\". If a FI is extracted from curated pathways or reactions, a dialog for the original data source(s) will be displayed. Double click a row in the displayed table to show a detailed web page for the source of the FI. If the selected FI is a predicted one, the evidence for this FI should be displayed.\n\n![](/uploads/documentation/userguide/reactome-fiviz/QueryFISource.png)\n\nQuery FI Source\n\n![](/uploads/documentation/userguide/reactome-fiviz/ShowFISource.png)\n\nReactomeFIViz app Menu\n\n#### Fetch FIs for Node\n\nAll FIs for a node can be queried. Select a node in the network panel, and right click it to get the popup menu for node. Select a menu called \"Reactome FI/Fetch FIs\". FI partners for the selected node will be displayed in two sections: partners have been displayed in the network and partners not displayed in the network. You can select partners from the second sections to expand the displayed network.\n\n![](/uploads/documentation/userguide/reactome-fiviz/FetchFIs.png)\n\nQuery Node FIs\n\n![](/uploads/documentation/userguide/reactome-fiviz/ShowNodeFIs.png)\n\nShow Node FIs\n\n#### Show Pathway Diagram\n\nPathway diagrams can be shown for pathway hits. Select a pathway in the \"Pathways in Network\" or \"Pathways in Modules\" tab, and right click to get the popup menu for pathway. Select \"Show Pathway Diagram\" from the popup menu\n\n![](/uploads/documentation/userguide/reactome-fiviz/ShowPathwayDiagram.png)\n\nShow Pathway Diagram\n\n. If pathways are imported from KEGG, KEGG pathway diagram pages will be shown in a browser with node genes listed in the \"Nodes\" column highlighted in red (for text and borders in pathway diagrams). If pathways are from Reactome or other non-KEGG databases, pathway diagrams should be shown in a separated window. If pathways are curated by the Reactome project, human laid-out diagrams should be displayed if any. Otherwise, auto-laid-out diagrams should be displayed. Genes or proteins from the displayed network should be highlighted in blue. Detailed annotations for nodes and reactions displayed in the diagram window can be viewed by using a popup menu called \"View Instance\". Diagrams displayed can be zoomed in/out using the zoom slider at the bottom of the window. The diagram can be panned by the overview window at the top-right corner.\n\n![](/uploads/documentation/userguide/reactome-fiviz/KEGGDiagram.png)\n\nKEGG Focal Adhesion\n\n![](/uploads/documentation/userguide/reactome-fiviz/ReactomeDiagram.png)\n\nReactome Signaling by PDGF\n\n#### Load Cancer Gene Index Annotations\n\nReactome FI plug-in can load NCI cancer [gene index annotations]() for genes/proteins displayed in the network. There are two ways to show these annotations: use a popup menu called \"Load Cancer Gene Index\" when no object is selected (left figure), and use another popup menu \"Fetch Cancer Gene Index\" for a selected node (right figure).\n\n![](/uploads/documentation/userguide/reactome-fiviz/LoadCGI.png)\n\nLoad Gene Index\n\n![](/uploads/documentation/userguide/reactome-fiviz/LoadNodeCGI.png)\n\nLoad Node Cancer Gene Index\n\n \nBy using the first method, the user can load the tree of NCI disease terms and display the tree in the left panel. The user can select disease term in the tree, all genes or proteins have been annotated for the selected disease and its sub-terms will be selected.\n\n![](/uploads/documentation/userguide/reactome-fiviz/CGIOverlay.png)\n\nCancer Gene Index Overlay\n\nBy using the second method, the user can view detailed annotations for the selected gene or protein. The user can sort these annotations based on PubMedID, Cancer type, and annotation status, and also filter annotations based on several criteria.\n\n![](/uploads/documentation/userguide/reactome-fiviz/CGIAnnotationsForNode.png)\n\nCancer Gene Index Annotations for Node\n\n#### Survival Analysis\n\nSurvival analysis is based on a server-side R script to do either coxph or Kaplan-Meier survival analysis. To do survival analysis, a tab-delimited text file containing at least three columns should be provided. The names of three columns should be: Samples, OSDURATION, and OSEVENT. For example, see this survival information file downloaded from [van de Vijver et al in 2002](): [Nejm_Clin_Simple.txt](), which has been simplified for our analysis purpose. To do survival analysis, use the popup menu \"Analyze Module Functions/Survival Analysis...\" (see below)\n\n![](/uploads/documentation/userguide/reactome-fiviz/SurvivalAnalysisMenu.png)\n\nSurvival Analysis Menu\n\nIn the survival analysis dialog (below), double click the text field to select a file containing survival information for samples used to build the displayed FI sub-network (Note: you cannot do survival analysis if you use a gene set file only to construct the displayed FI subnetweork). You can choose either coxph or Kaplan-Meier model to do survival analysis. If you choose the Kaplan-Meier model, you have to select a module for analysis. In the Kaplan-Meier analysis, all samples will be divided into two groups: samples having no mutated genes in the selected module (group 1) and samples having mutated genes in module (group 2). It is recommended to run the coxph module first without selecting any module in order to see which module is most significantly related to survival times. After that, you can focus on some specific modules for survival analysis.\n\n![](/uploads/documentation/userguide/reactome-fiviz/SurvivalAnalysisDialog.png)\n\nSurvival Analysis Dialog\n\nThe results from survival analysis will be displayed in the right Results Panel with a tab labeled \"Survival Analysis\" (below left). You can do multiple survival analyses. All results returned from the server-side R script will be displayed in this panel with labels based on your parameter selections in the survival analysis dialog. The last result will be selected as default. At most three sections are displayed in the result panel for each analysis: Output, Error, and Plot. If no warning or error returned from an analysis, the error section may not be shown. Rows for modules having p-values less than 0.05 from coxph (all modules) analysis are displayed in blue with text underlined. You can click these modules to do a quick single-module based survival analysis without going through the above steps. Single module-based Kaplan-Meier analysis will show a plot file. You can click the file to view the actual plot (below right). You may need to save the plot file for your future use.\n\n![Survival Analysis Results](/uploads/documentation/userguide/reactome-fiviz/SurvivalAnalysisResult.png)\n\n![Kaplan-Meier Survival Plot](/uploads/documentation/userguide/reactome-fiviz/KaplanMeyerPlot.png)\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/userguide/review-status.json b/projects/website-angular/content-dist/documentation/userguide/review-status.json new file mode 100644 index 00000000..6b22e14f --- /dev/null +++ b/projects/website-angular/content-dist/documentation/userguide/review-status.json @@ -0,0 +1 @@ +{"title":"Review Status of Reactome Events","category":"documentation","body":"\n## Review Status of Reactome Events \n\nReactome events (pathways and reaction-like events) undergo internal review by a member of the Reactome editorial staff and external review by a domain expert. Events that undergo both internal and external review are assigned the highest review score of 5. When such an event is revised and the revisions result in *structural modification to that event, the event’s review score is demoted to 3. The revised event must be internally reviewed again to attain a review score of 4 and externally reviewed to regain a score of 5. The table below summarizes the definitions of each review status.\n\n**Status-based release of Reactome content**\n\n**Review Score** | **Definition** | **Release status** \n---|---|--- \n1 | Restructured after internal review | NOT RELEASED \n2 | Restructured after external review | NOT RELEASED \n3 | Internally reviewed, awaiting external review | RELEASED \n4 | Restructured after external review, then internally re-reviewed | RELEASED \n5 | Externally reviewed | RELEASED \n \n***** **What is a****structural modification****to an event?**\n\nA structural update involves at least one of the following modifications after the initial internal and/or external review of the event.\n\n * Addition, removal, or replacement of a CatalystActivity, Regulator, Input, Output of a reaction-like event\n * Addition, removal, or replacement of an Event of a pathway\n\n**_Any one or more of these changes to an event demotes its review status and requires additional review as described in the table above in order to restore its review status._**\n\n_A Reactome event that has been internally reviewed and is still awaiting an external review after six months is publically released with a score of 3. Once reviewed, it is assigned the maximum score of 5.__If an event with a score of 3 is_ _*structurally modified_ _, its score is demoted to 1 and must be internally reviewed to regain its original score of 3. If an event with a score of 4 is structurally modified, it is demoted to a score of 2 and must be internally reviewed to recover its score of 4 and externally reviewed to raise its score to 5 . Reactome does not include events with a score lower than 3 on the public website._\n\n**Where can I see the review status of a Reactome event?**\n\nThe review status of an event can be seen in the upper right corner of the Pathway Browser details panel:\n\n![ReviewStatus 1](/uploads/documentation/userguide/review-status/ReviewStatus_1.png)\n\nand also on the content details page reached via the search:\n\n![ReviewStatus 2](/uploads/documentation/userguide/review-status/ReviewStatus_2.png)\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/documentation/userguide/searching.json b/projects/website-angular/content-dist/documentation/userguide/searching.json new file mode 100644 index 00000000..f9ae58a3 --- /dev/null +++ b/projects/website-angular/content-dist/documentation/userguide/searching.json @@ -0,0 +1 @@ +{"title":"Searching Reactome","category":"documentation","body":"\n## Searching Reactome \n\nSee our Youtube Video explaining [Reactome's Main Search Feature]()! \n\n### **Simple text search**\n\nThe simple text search tool is located top right of the Home page. To search type a word, phrase or identifier in the search box. The search has an auto-complete function; if the text you wanted to use appears in the drop-down list, select it and results will be displayed. For other text click Search.\n\n![search box](/uploads/documentation/userguide/searching/search_box.gif)\n\nSearch results are presented in categories with grey headers, representing the molecular entity or event types.\n\nBelow the header is a list of items from the named type that match your search terms. Matching words are highlighted in grey. Click on the name of an item to go to a page of details.\n\nOn the left side of the search results page are groups of checkboxes. These can be used to change defaults and add filters. Check or uncheck boxes for types that you do/don’t want to see, e.g. if you want to see results for Mus musculus, under Species uncheck Homo sapiens and check Mus musculus. In the Type, Compartment and Reaction Type filter groups, select to only see results that fall into the selected category, e.g. to see only reactions, select Reaction in the Types filter group. To see only Reactions that occur in the cytosol, also select Cytosol in Compartments.\n\n![protein kinase results](/uploads/documentation/userguide/searching/protein_kinase_results.gif)\n\nClick on any of the results to go to a page of information about it. The contents of these Results Detail pages will depend on the type, but all have a section named ‘Locations in the PathwayBrowser’. \n\n![calmodulin details](/uploads/documentation/userguide/searching/calmodulin_details.gif)\n\nThis contains an expandable hierarchy that identifies the locations of the item in Reactome pathway diagrams. Click the plus symbol to open the hierarchy.\n\nThis hierarchy reflects the organization of events in Reactome. ‘Top-level’ pathways representing a broad area of biology typically contain one or more levels of subpathways, becoming more specific with each level. The levels of the hierarchy are represented here by indentation; the most general pathways are closest to the left-hand edge of the screen, the most specific subpathways have the greatest indentation to the right. Note that some search result items (e.g. proteins) can be in more than one pathway, which may be in different broad areas of biology, resulting in representation in multiple hierarchies. Note that you can open all the hierarchy levels with a single click on the Expand all link, on the right side. Select any event name to open the corresponding Pathway Diagram. The diagram will open with an animation that shows you where the pathway is located in the Pathway Overview. If the selected item was an event it will be highlighted in blue in the Pathway Diagram. If it was a protein, all instances of it will be highlighted in pink.\n\n**Icon Search**\n\nElements of the Icon Library are accessible to the main website search. In the screenshot below, the results of a search for the term: \"liver\" are displayed. \n\n![Icon Search Liver](/uploads/documentation/userguide/searching/Icon_Search_Liver.png)\n\nBelow the header is a list of items from the \"icon\" type that match your the \"liver\" search terms. Matching words are highlighted in grey. Click on the name of an item to go to a page of details. In the following image, selecting the first search result is shown\n\n![Icon Liver Results](/uploads/documentation/userguide/searching/Icon_Liver_Results.png)\n\nThe metadata associated with the selected icon is displayed, including the icon category, the curator and designer, and a brief description of the icon. To download the image icon files, click the links to the fight of the preview image. Further down the page is a series of expandable hierarchy links that identifies the locations of the icon in Reactome pathway diagrams. Click the plus symbol to open the hierarchy. Clicking the external link, towards the bottom of the page, will link out to the referencing database for the named icon.\n\n**In-Diagram Search (Searching in the Pathway Browser)**\n\nSearches can be performed within the Pathway Browser using the In-Diagram Search panel (top left corner of the Pathway Panel). When the Pathway Overview, Diagram is Enhanced HIgh Level Diagram (EHLD) is displayed, all of Reactome is searched. \n\n![In Diagram Start](/uploads/documentation/userguide/searching/In-Diagram-Start.png)\n\n**Searching the Pathway Overview**\n\nIn the example below, as the search term, ‘IL6’ has been entered. The search tool has predicted results that match this search term and displays a drop-down list of these matches. \n\n![Overview Search](/uploads/documentation/userguide/searching/Overview_Search.png)\n\n**Note:** the deep blue bar, which indicates that there are 23 results shown. Only the three results are clearly shown in the results window. To view additional results, move the cursor over the window and scroll down. Each result term has a symbol (to the left) representing the type of molecule or event it is. The first result, with a blue circle icon to the left of the name, represent matches to the IL6R protein, located in the plasma membrane. The second result, with a double-helix icon to the left, is the IL6R gene. The third result is a reaction, with icon showing above/below boxes on left connected by a right-pointing arrow to box on right, representing the binding of IL6 to IL6R. The Reactome stable identifier and cell compartment annotations are also provided for each molecule or event type that is displayed.\n\n![Overview Search Results Summary](/uploads/documentation/userguide/searching/Overview_Search_Results_Summary.png)\n\nIn the following image, the recent search results are displayed at the bottom of the search results window. Clicking the \"Clear History\" button will remove the search terms from the history.\n\n![Overview Search History](/uploads/documentation/userguide/searching/Overview_Search_History.png)\n\nIn the next image, selecting an item in the Search Results Panel also causes a second drop-down Search Results Details Panel to appear. The additional annotations displayed include the molecule or event type, the Reactome stable identifier, an external reference database identifier, and the cell compartment. Clicking the \"Filter\" button (to the right of the search bar) will display options to filter the search results by molecule or event type, e.g. Pathway, Reaction, Complex, Protein, DNA Sequence, Set, etc. Selecting one or more of the filters will restrict the Search results viewed. Deselecting the filter(s) will alter the search results display. Selecting an item in the initial Search Results Panel causes the Overview to zoom and recentre, focusing on the region that represents pathways containing the selected item. This identifies the selected item and lists the pathways that contain the selected item. \n\n![Overview Search Results Detailed](/uploads/documentation/userguide/searching/Overview_Search_Results_Detailed.png)\n\nIn the following image, moving the cursor over a pathway name (under the \"Present in X pathway\") will highlight the corresponding in the Overview, if it is visible in the viewport. The tooltip will display the name of the pathway.\n\n![Overview Search Results Selected](/uploads/documentation/userguide/searching/Overview_Search_Results_Selected.png)\n\nClicking a pathway name (under the \"Present in X pathway\") in the Search Results Detail Panel will select the corresponding object in the Overview. If it is not visible, the Pathway Diagram will re-centre to show it. Double-click a pathway name in the Search Results Detail Panel or pressing the \"GO >>>\" button will open the corresponding Pathway Diagram. If you need to return to the Overview, you can use the browser back button. **Note** that in the image above, the Search Results Detail Panel extends beyond the limits of the Overview window, consequently some results are hidden. This explains why the results details title says Present in 3 pathways but only 2 are visible. To see all the matching pathways, click in the pathway list in the Search Results Detail Panel. \n\nIn the following image, the \"Flag\" button in the Search Results Details Panel (to the right of IL6R) has been clicked and the events that contain the selected molecule are highlighted blue and the connected events are highlighted purple. Clicking the \"Flag\" button for a second time will remove the event highlighting.\n\n![Overview Search Results Highlighting](/uploads/documentation/userguide/searching/Overview_Search_Results_Highlighting.png)\n\n**Searching a Pathway Diagram**\n\nIn the example below, the search has identified IL6R and produced a dropdown list of matches. The first match is to a protein, as indicated by the icon on the left. The second match with the icon showing a double helix is a DNA sequence or gene. Note that if IL6R was represented in two cellular compartments in this diagram it would appear twice in this initial search result. The Reactome stable identifier and cell compartment annotations are also provided for each molecule or event type in the search results. **Note:** as the search term is entered, the search tool will predict results that match this search term and displays a drop-down list of these matches. \n\nAlthough not shown below, when a new search is performed, the recent search results are displayed at the bottom of the search results window. Clicking the \"Clear History\" button will remove the search terms from the history. \n\n![In Diagram Search](/uploads/documentation/userguide/searching/In-Diagram_Search.png)\n\nThe deep blue highlighted bar, which indicates that there are 3 results shown in \"This diagram\". Only the two results are clearly shown in the results window. To view additional results, move the cursor over the window and scroll down. Each result term has a symbol (to the left) representing the type of molecule or event it is. The first result, with a blue circle icon to the left of the name, represent matches to the IL6R protein, located in the plasma membrane. The second result, with a double-helix icon to the left, is the IL6R gene. The Reactome stable identifier and cell compartment annotations are also provided for each molecule or event type that is displayed.\n\nIn the next image, clicking the \"Filter\" button (to the right of the search bar) will display options to filter the search results by molecule or event type, e.g. Pathway, Reaction, Complex, Protein, DNA Sequence, Set, etc. Selecting one or more of the filters will restrict the Search results viewed. Deselecting the filter(s) will alter the search results display.\n\n![In Diagram Search Filter](/uploads/documentation/userguide/searching/In-Diagram_Search_Filter.png)\n\nIn the next image, selecting an item in the Search Results Panel also causes a second drop-down Search Results Details Panel to appear. The at the top of the Details Panel, additional annotations are displayed that include the molecule or event type, the Reactome stable identifier, an external reference database identifier (if applicable), and the cell compartment. Additional annotations are listed below describing the involvement of the protein within complexes, sets and reactions within the diagram. Selecting names in the Search Results Detail Panel will select the corresponding object in the Pathway Diagram. If it is not visible, the Pathway Diagram will re-centre to show it. \n\nIn this example query, clicking the \"Flag\" button in the Search Results Details Panel (to the right of IL6R) will highlight all (15) the objects in the diagram that contains IL6R. Clicking the \"Flag\" button for a second time (or the \"X\" button toward the bottom of the pathway viewport) will remove the object highlighting. To see all the matches, it is necessary to resize the Pathway Diagram panel. \n\n![In Diagram Search Entity This Diagram](/uploads/documentation/userguide/searching/In-Diagram_Search-Entity_This_Diagram.png)\n\nIn the following image, selecting the second item in the Search Results Panel (IL6 binds IL6R) causes a second drop-down Search Results Details Panel to appear. The at the top of the Details Panel, additional annotations are displayed that include the event type, the Reactome stable identifier, and the cell compartment. Additonal annotations are listed below describing the involvement of the reaction within the diagram, and participants of the reaction. Selecting names in the Search Results Detail Panel will select the corresponding object in the Pathway Diagram. If it is not visible, the Pathway Diagram will re-centre to show it. in this image, the IL6 binds IL6R reaction is blue highlighted. \n\n![In Diagram Search Event This Diagram](/uploads/documentation/userguide/searching/In-Diagram_Search-Event_This_Diagram.png)\n\nIn the next image, clicking the \"All diagram\" tab will present a different set of results when selecting an item in the Search Results Panel. As before, at the top of the Details Panel, additional annotations are displayed that include the molecule or event type, the Reactome stable identifier, an external reference database identifier (if applicable), and the cell compartment. Instead of displaying objects within the currently displayed pathway, the pathways not shown in the pathway viewport that contain the search term are displayed. \n\n![In Diagram Search Gene All Diagrams](/uploads/documentation/userguide/searching/In-Diagram_Search-Gene_All_Diagrams.png)\n\nSelecting the hyperlinked pathway name in the Search Results Detail Panel (\"Present in n pathway diagram\") will open the new pathway diagram in the Pathway Browser and select the corresponding object in the new diagram. \n\n![In Diagram Search Gene Set All Diagrams](/uploads/documentation/userguide/searching/In-Diagram_Search-Gene_Set_All_Diagrams.png)\n\n**Searching within an Enhanced HIgh Level Diagram (EHLD) \n**\n\nIn the example below, the search has identified IL6R and produced a dropdown list of matches. The first match is to a protein, as indicated by the icon on the left. The second match with the icon showing a double helix is a DNA sequence or gene. Note that if IL6R was represented in two cellular compartments in this diagram it would appear twice in this initial search result. The Reactome stable identifier and cell compartment annotations are also provided for each molecule or event type in the search results. **Note:** as the search term is entered, the search tool will predict results that match this search term and displays a drop-down list of these matches.\n\nAlthough not shown below, when a new search is performed, the recent search results are displayed at the bottom of the search results window. Clicking the \"Clear History\" button will remove the search terms from the history.\n\n![EHLD Search](/uploads/documentation/userguide/searching/EHLD_Search.png)\n\nThe deep blue highlighted bar, which indicates that there are 23 results shown in \"This diagram\" and 30 results shown in \"All diagrams\". Only the two results are clearly shown in the results window. To view additional results, move the cursor over the window and scroll down. Each result term has a symbol (to the left) representing the type of molecule or event it is. The first result, with a blue circle icon to the left of the name, represent matches to the IL6R protein, located in the plasma membrane. The second result, with a double-helix icon to the left, is the IL6R gene. The Reactome stable identifier and cell compartment annotations are also provided for each molecule or event type that is displayed.\n\nIn the following image, selecting the first item in the Search Results Panel (IL6R) causes a second drop-down Search Results Details Panel to appear. The at the top of the Details Panel, additional annotations are displayed that include the molecule or event type, the Reactome stable identifier, and the cell compartment. Additional annotations are listed below describing the involvement of the object within the EHLD. Selecting pathway names in the Search Results Detail Panel will select the corresponding object in the EHLD. If it is not visible, the EHLD will re-centre to show it in the \n\n![EHLD Search Results Detailed](/uploads/documentation/userguide/searching/EHLD_Search_Results_Detailed.png)\n\nGetting Started\n\n### **Search Exercises**\n\nThis exercise encourages you to find information via the menu bar and Search \n\n 1. What’s the latest news item on the Reactome Home page?\n 2. How many human proteins are represented in Reactome?\n 3. What’s the first item listed that will be included in the next release?\n 4. Is VAV2 in Reactome?\n 5. How many reactions involve VAV2?\n 6. Are there any complexes that include VAV2?\n 7. Is CRB2 in Reactome?\n"} \ No newline at end of file diff --git a/projects/website-angular/content-dist/tools/reactome-fiviz.json b/projects/website-angular/content-dist/tools/reactome-fiviz.json new file mode 100644 index 00000000..0b53b43a --- /dev/null +++ b/projects/website-angular/content-dist/tools/reactome-fiviz.json @@ -0,0 +1 @@ +{"title":"ReactomeFIVIz","category":"content","body":"\n## ReactomeFIVIz \n\n## Contents\n\n * [1. Overview](<#Overview>)\n * [2. Download and Launch ReactomeFIViz](<#Download_and_Launch_ReactomeFIViz>)\n * [3. Use Reactome Pathways](<#Use_Reactome_Pathways>)\n * [3.1. Explore Reactome Pathways](<#Explore_Reactome_Pathways>)\n * [3.2. Display Reactome Pathways in the FI Network View](<#Display_Reactome_Pathways_in_the_FI_Network_View>)\n * [3.3. Pathway Enrichment Analysis](<#Pathway_Enrichment_Analysis>)\n * [3.4. Probabilistic Graphical Model Based Pathway Analysis](<#Probabilistic_Graphical_Model_based_Pathway_Analysis>)\n * [3.5. Boolean Network Based Pathway Analysis](<#Boolean_Network_based_Pathway_Analysis>)\n * [3.6. Visualization of Structural Variants in the Context of Reactome Pathways](<#Structural_Variants_Visualization>)\n * [4. Use the Reactome Functional Interaction (FI) Network](<#Use_the_Reactome_Functional_Interaction_.28FI.29_Network>)\n * [4.1. Gene Set/Mutation Analysis](<#Gene_Set.2FMutation_Analysis>)\n * [4.2. PGM Impact Analysis](<#PGM_Impact_Analysis>)\n * [4.3. Microarray Data Analysis](<#Microarray_Data_Analysis>)\n * [5. Visualize Drugs in the Contexts of Reactome Pathways and FI Network](<#Visualize_Cancer_Drugs_in_Contexts_of_Reactome_Pathways_and_FI_Network>)\n * [5.1. Visualize Cancer Drugs in Reactome Pathways](<#Visualize_Cancer_Drugs_in_Reactome_Pathways>)\n * [5.2. Visualize Cancer Drugs in the FI Network](<#Visualize_Cancer_Drugs_in_the_FI_Network>)\n * [5.3. Visualize Drug Central Drugs](<#Visualize_DrugCentral_Drugs>)\n * [5.4. Simulate Impact Drugs on Pathway Activities](<#Simulate_Impact_of_Cancer_Drugs_on_Pathway_Activities>)\n * [6. Perform scRNA-seq Data Analysis and Visualization](<#scRNA_seq>)\n * [6.1. Standard Analysis via scanpy](<#scanpy_analysis>)\n * [6.2. RNA Velocity Analysis via scVelo](<#scvelo_analysis>)\n * [7. Other Features Related to the FI Network](<#Other_Features_Related_to_the_FI_Network>)\n * [7.1. Query FI Source](<#Query_FI_Source>)\n * [7.2. Fetch FIs for Node](<#Fetch_FIs_for_Node>)\n * [7.3. Show Pathway Diagram](<#Show_Pathway_Diagram>)\n * [7.4. Load Cancer Gene Index Annotations](<#Load_Cancer_Gene_Index_Annotations>)\n * [7.5. Survival Analysis](<#Survival_Analysis>)\n\n### Overview\n\nThe [ReactomeFIViz]() app is designed to find pathways and network patterns related to cancer and other types of diseases. This app accesses the [Reactome]() pathways stored in the database, help you to do pathway enrichment analysis for a set of genes, visualize hit pathways using manually laid-out pathway diagrams directly in Cytoscape, and investigate functional relationships among genes in hit pathways. The app can also access the Reactome Functional Interaction (FI) network, a highly reliable, manually curated pathway-based protein functional interaction network covering over 60% of human proteins, and allows you to construct a FI sub-network based on a set of genes, query the FI data source for the underlying evidence for the interaction, build and analyze network modules of highly-interacting groups of genes, perform functional enrichment analysis to annotate the modules, expand the network by finding genes related to the experimental data set, display pathway diagrams, and overlay with a variety of information sources such as cancer gene index annotations. Recently we have also added features to help users visualize FDA-approved cancer drugs in the contexts of the FI network and Reactome pathways, and use Boolean network models directly built from Reactome pathways to investigate potential functional impacts of displayed cancer drugs.\n\nFor an example how we use Reactome FIs for cancer data analysis, please see our publication: [A human functional protein interaction network and its application to cancer data analysis]().\n\n### Download and Launch ReactomeFIViz\n\nReactomeFIViz app 6 needs Cytoscape 3.7.0 or above. If you have not installed Cytoscape 3.7.0 or above, please download it from Cytoscape's web site: [http://www.cytoscape.org](). After launching Cytoscape, use menu \"Apps/App Manager\" to open the \"App Manager\" dialog, and search for \"ReactomeFI\". You should see the ReactomeFIViz app listed in the middle panel (See the Figure below. You may see a different version number. **Note: The listed name of this app is \"ReactomeFIPlugIn\"** , which is the original name of the app.). Choose the app, and then click the \"Install\" button at the bottom of the dialog. Follow the procedures to finish the installation.\n\n![](/uploads/tools/reactome-fiviz/InstallReactomeFIVizFromAppstore.png)\n\nInstall ReactomeFIViz app From App Store\n\n### Use Reactome Pathways\n\nUsing the pathway visualization and analysis features, you can load pathways in the Reactome database into Cytoscape, visualize Reactome pathways in either the native pathway diagram view or the FI network view, do pathway enrichment analysis for a set of genes, and check genes from your list in hit pathways.\n\n#### Explore Reactome Pathways\n\n 1. Load Reactome pathways: Use menu \"Apps/Reactome FI/Reactome Pathways\" to load pathways into Cytoscape. The loaded pathways are organized in a hierarchical way as in the Reactome web application ([https://reactome.org/PathwayBrowser/]()), and listed in the left side \"Control Panel\" in the tab called \"Reactome\". \n\n![](/uploads/tools/reactome-fiviz/ReactomePathways_4.png)\n\nReactome Pathways\n\n 2. View pathways in Reactome: After selecting a pathway in the pathway hierarchy, you can choose \"View Reactome Source\" from the popup menu (right click in Windows or Control-click in Macs to get the popup menu) \n\n![](/uploads/tools/reactome-fiviz/PathwayPopup_4.png)\n\nPathway Popup Menu\n\nto view its detailed annotation in Reactome. Or you can choose \"View in Reactome\" to view the detailed information in the Reactome web application. \n**Note** : The ancestor pathways (container pathways) for a selected pathway are displayed in the middle panel, \"Selected Event Branch\", in the Reactome tab. You can click an ancestor pathway in this middle panel to view the clicked pathway's location in the original pathway hierarchical tree. However, the ancestor pathway will not be selected in the original tree. This is a designed behavior to keep the selection in the original tree.\n 3. Search pathways: Choose \"Search\" in the popup menu to bring up the search dialog. The found pathway(s) will be highlighted in blue in the pathway tree. \n**Note** : Search will be against all loaded pathways, not limited to the selected pathway and its contained sub-pathways. \n\n![](/uploads/tools/reactome-fiviz/PathwaySearch_4.png)\n\nSearch Pathways\n\n 4. Open Reactome Reacfoam: The Reacfoam view provides a holistic view of all (exclude disease) human pathways in the Reactome database. Choose \"Open Reactome Reacfoam\" in the popup menu to open the Reactome Reacfoam in the default browser. \n\n![Open Reactome Reacfoam](/uploads/tools/reactome-fiviz/OpenReacfoamPopup.png)\n\nOpen Reacfoam\n\n**Note** : Pressing your mouse and then holding it to a pathway box will select the pathway in the tree of ReactomeFIV automatically. \n\n![](/uploads/tools/reactome-fiviz/Reacfoam.png)\n\nReactome Reacfoam\n\n 5. Open pathway diagram: Pathways in Reactome are organized in a hierarchical way. Not all pathways have their own pathway diagrams. A smaller pathway (called sub-pathway) may be drawn in a bigger pathway, which has its own pathway diagram. Most of top-level pathways (called modules or super pathways) are used to organize related pathways (e.g. Disease, Signaling Transduction), and therefore contain only rectangle boxes representing canonical pathways.\n 1. **Show Diagram** : If a selected pathway has its own pathway diagram, you can choose \"Show Diagram\" in the popup menu to open its pathway diagram into the central Cytoscape desktop.\n 2. **View in Diagram** : If a selected pathway is laid-out as a sub-pathway in a bigger one, you can choose \"View in Diagram\" in the popup menu to view its drawing in its container pathway. Reactions contained by the selected pathway will be highlighted in blue after the diagram is opened. For example, see pathway \"G1/S DNA Damage Checkpoints\" opened in pathway \"Cell Cycle Checkpoints\" below: \n\n![](/uploads/tools/reactome-fiviz/PathwayDiagram_4.png)\n\nPathway Diagram\n\n 6. Search diagram: Objects displayed in a pathway diagram can be searched using \"Search Diagram\" from the popup menu (Right click in Windows or Control click in Macs without selecting any object in the pathway diagram to get the popup menu). The found objects will be selected and highlighted in blue. \n**Note** : Reactions will not be searched in the diagram. Use the search feature in the pathway tree to search for reactions.\n 7. Export diagram: Displayed diagram can be exported as a PDF, JPG or PNG file. Use \"Export Diagram\" from the popup menu to export the displayed diagram.\n 8. View Reactome Source or View in Reactome: Select an object, and then right-click (or control click) to get the popup menu. Choose \"View Reactome Source\" to view the detailed annotation for the selected object in a table (See Figure below for an example). Or choose \"View in Reactome\" to view the selected object in the Reactome web application. \n\n![](/uploads/tools/reactome-fiviz/ReactomeInstanceView.png)\n\nReactome Instance View\n\n 9. List Genes: Genes contained by a complex or protein set, or a gene related by a displayed protein can be viewed by using a menu item \"List Genes\" after selecting an object. For example, the following dialog shows genes contained by complex hBUBR1:hBUB3:MAD2*:CDC20. Clicking a gene symbol will bring you to the web page for that gene in the GeneCard web site. \n\n![](/uploads/tools/reactome-fiviz/ListGenes_4.png)\n\nList Genes\n\n#### Display Reactome Pathways in the FI Network View\n\n 1. Display pathway in the FI network view: A Reactome pathway can be converted into a functional interaction network using the method we have established (see [A human functional protein interaction network and its application to cancer dat analysis]()). Use \"Convert to FI Network\" in the popup menu brought up by right-clicking (Windows) or control-clicking (Macs) an empty area without any selection in the pathway diagram panel. The original pathway diagram will be moved to the bottom-left corner, and a new FI network will be generated based on the original pathway diagram, which will be displayed in a new network panel. \n**Note** : sub-pathways contained by the displayed pathway will be extracted into the FI network too. \n\n![](/uploads/tools/reactome-fiviz/PathwayInFINetworkView_4.png)\n\nPathway in the FI Network View\n\n 2. Explore objects in the pathway and network views: Object selection in three views has been synchronized. Objects that can be selected include: events in the pathway tree view, objects in the pathway view at the bottom-left corner, and genes and FIs in the network view. You can select an object in one of three views, and corresponding objects in other two views should be selected too. Also you should use features implemented in popup menus in each individual view to explore objects as in a single view.\n\n \n**Note** : Using Cytoscape's built-in \"Saving Session\" feature can save the converted FI networks from pathways. However, displayed pathways cannot be saved into a session file for the time being. We will implement this function in a future release.\n\n#### Pathway Enrichment Analysis\n\n 1. **Pathway enrichment analysis** : A list of genes can be used to check if any of Reactome pathways have been enriched. To do this, use the popup menu item, \"Analyze Pathway Enrichment\" (below left figure), to get the dialog for choosing a gene set file (below right figure). You can use a gene set file in one of three file formats: one gene per line, all genes in the same line and delimited by commas, or all genes in the same line and delimited by tabs. You can also manually input genes by clicking the \"Click to Enter\" button (one line for one gene). \n**Note** : Dependent on the size of your gene list, it may take over 1 minute for running the pathway enrichment analysis. Pathways used in this feature are different from Reactome pathways for annotating a FI network or network modules. Here all over 2,000 pathways are used. For annotation, only a subset of Reactome pathways, which have been pre-selected for a certain size, are used. \n![Analyze Pathway Enrichment](/uploads/tools/reactome-fiviz/AnalyzeGeneEnrichment_4.png)![Dialog for Analyzing Pathway Enrichment](/uploads/tools/reactome-fiviz/DialogForAnalyzeGeneEnrichment_4.png) \n**Note** : To get a holistic view of the pathway enrichment analysis results, open the Reactome Reacfoam after the analysis using the popup menu \"Open Reactome Reacfoam\" for the pathway tree. You may also download the Reacfoam view by clicking the download button at the top-right corner. For windows 10 users, to open the Reacfoam view, you need to allow \"public\" access to Cytoscape by checking \"public\" in the settings for \"Allow an app through Windows Firewall\" in the \"System and Security\" control settings. \n![Reacfoam View for Enrichment Analysis](/uploads/tools/reactome-fiviz/Reacfoam_Enrichment.png)\n 2. **View enrichment analysis results** : Pathway enrichment results are displayed as a table labeled as \"Reactome Pathway Enrichment\" in the \"Table Panel\" at the bottom of the main Cytoscape window. You can use \"Views in Diagram\" to view hit pathways in the pathway diagram view, and use \"Export Annotations\" to save the results in the table. Pathways in the Reactome pathway tree are highlighted in different colors based on their FDR values. Objects containing genes from your gene list are highlighted in a purple background with a white font in the pathway diagram view. Hit genes are displayed in a thick purple border in the FI network view for a hit pathway. \n**Note** : Hit genes are displayed with same colors in the \"Gene List\" dialog from the \"List Genes\" feature. \n\n![](/uploads/tools/reactome-fiviz/PathwayEnrichmentResults_4.png)\n\nPathway Enrichment Results\n\n 3. **Perform GSEA analysis** : Gene Set Enrichment Analysis ([GSEA]()) is a rank-based pathway enrichment analysis approach, widely used in pathway-based data analysis. ReactomeFIViz provides support to perform GSEA analysis for Reactome pathways using a gene score file. Gene score may be t-score from differential gene expression analysis or other type of scores that can be ranked. To perform the GSEA pathway enrichment analysis, you need to provide a tab-delimited text file containing two columns: the first for gene symbols (human only) and the second for gene scores. The first row is reserved for the column headers, and will not be imported for analysis. To perform GSEA analysis, use popup menu \"Perform GSEA Analysis\" in the pathway tree to bring up the GSEA configuration dialog, where you can enter the gene score file and choose the minimum and maximum size of pathways along with the permutation number. \n\n![Perform GSEA Analysis](/uploads/tools/reactome-fiviz/PerformGSEAAnalysis.png)\n\nPerform GSEA Analysis\n\n![Congigure GSEA Analysis](/uploads/tools/reactome-fiviz/ConfigureGSEAAnalysis.png)\n\nConfigure GSEA Analysis\n\nThe GSEA analysis results are displayed in the table labeled as \"Reactome GSEA Analysis\" in Cytoscape Table Panel. Pathways subject to GSEA analysis in the pathway tree are highlighted based on FDR values as in the gene set-based pathway enrichment analysis (See above). For details about the meanings of columns shown in the results table, please consult the original GSEA document: [GSEA Document]().\n\n![GSEA Analysis Results](/uploads/tools/reactome-fiviz/GSEAAnalysisResults.png)\n\nGSEA Analysis Results\n\n 4. **Overlay Gene Scores onto Pathways** : For significant pathways produced from the GSEA analysis, you can overlay gene scores to investigate locations of products of genes having significant high or low scores, therefore to understand potential pathway activity impact caused by these extreme scores. To do this, use popup menu \"Overlay Gene Scores\" in pathway diagram view to choose the gene score file in the configuration dialog. After the file loading, entities in pathway diagrams will be highlighted based on scores. You may choose one or more genes in the right gene scores Table View to visualize related entities in the pathway diagram. \n\n![Overlay Gene Scores](/uploads/tools/reactome-fiviz/OverlayGeneScores.png)\n\nOverlay Gene Scores\n\n![Gene Score Overlay Results](/uploads/tools/reactome-fiviz/GeneScoreOverlayResults.png)\n\nGene Score Overlay Results\n\n**Note** : If an entitiy (e.g. a complex or an EntitySet) is composed of more than one gene, the score for the entity is the mean of all genes annotated for that entity. To remove overlaid gene scores in the pathway diagram, use popup menu \"Remove Gene Scores\". To view the distribution of scores for genes annotated in the displayed pathway diagram, choose \"Plot View\" in the \"Gene Scores\" tab in Cytoscape Results Panel (see below).\n\n![Gene Score Distribution](/uploads/tools/reactome-fiviz/GeneScoreDistribution.png)\n\nGene Score Distribution\n\n#### Probabilistic Graphical Model based Pathway Analysis\n\nWe adapted the PARADIGM approach for Reactome pathways by converting reactions drawn in pathway diagrams into factors in factor graphs, a type of probabilistic graphical models (PGMs). For details about the PARADIGM approach, see: [Inference of patient-specific pathway activities from multi-dimensional cancer genomics data using PARADIGM](). For introduction to factor graphs, see this wikipedia entry: [Factor Graph](). For test purposes, you can download two sample data files for 100 TCGA ovarian cancer patients: [CNVs]( \"ov.CNV.100.txt.zip\") and [mRNA gene expression]( \"ov.mRNA.100.txt.zip\"). The original TCGA OV files were downloaded from [the Broad GDAC]()[ Firehose]() web site.\n\n 1. **Run graphical model analysis in batch:** This feature is used to perform a batch graphical model analysis for all Reactome pathways having manual layout diagrams.\n 1. **Start the analysis:** Choose the popup menu, \"Run Graphical Model Analysis\", in the pathway hierarchical tree. After choosing this menu, you will be asked to choose data files and provide parameters for inference algorithms in the following two tabs in the \"Run Graphical Model Analysis\" dialog: \n\n![](/uploads/tools/reactome-fiviz/LoadData.png)\n\nLoadData\n\n![](/uploads/tools/reactome-fiviz/SetUpAlgorithms.png)\n\nSetUpAlgorithms\n\n \n**Notes** : \n1). If you choose \"Use empirical distribution\" in the data loading dialog, your loaded data will be used directly to construct factor functions without discretizing. At present, we recommend to use \"Choose threshold values for discretizing\". \n2). It is recommended to use the default parameters for inference algorithms for a batch analysis for quick performance. You can try different parameters for some specific pathways after you find interesting pathways from the batch analysis. _**If you want to perform two-case study (e.g. case-control, drug sensitive/insensitive, etc), check the checkbox, \"Used for pathway analysis for samples with two cases\", and provide a sample information file as required. For two-case analysis, a random data set will not be generated. Results will be presented by comparing two types of samples in your uploaded data files.**_\n 2. **Run the analysis:** Click the \"OK\" button to start the batch analysis. Depending on your sample size, it may take hours to finish the whole analysis.\n 3. **Finish the analysis:** After the batch analysis done, you may see the following list if some of pathways cannot be analyzed because the inference algorithm cannot converge. Please make sure the following list is small (probably less than 10 pathways) so that you can get enough results. \n\n![](/uploads/tools/reactome-fiviz/FailedPathwaysList.png)\n\nFailedPathwaysList\n\n 4. **View the results:** The results from the batch analysis are displayed at the bottom table panel of the Cytoscape desktop as the following: \n\n![](/uploads/tools/reactome-fiviz/BatchResults.png)\n\nBatchResults\n\n**Note** : There are 7 columns in this table: ReactomePathway for pathway names analyzed by the App; AverageUpIPA shows how much a pathway is up-perturbated by comparing to a random background (IPA: integrated pathway activity. See the above PARADIGM paper for details); AverageDownIPA shows how much a pathway is down-perturbated; CombinedPValue is a p-value indicating how significant this pathway is perturbed based on pathway outputs and the Fisher's method; MinimumPValue is the minimum p-value for pathway outputs; the last two columns are FDRs for two p-values based on the Benjamini–Hochberg method. AverageUpIPA or AverageDownIPA may be NaN, which indicates there is no detected up or down perturbation based on this analysis. The FDR filtering works based on the FDR values displayed in the last two columns with \"OR\" operation.\n 5. **Save the results:** To keep the results, use the popup menu in the table, \"Export Annotations\", to save the results into an external text file. The saved results can be loaded later on by using popup menu, \"Load Graphical Model Results\", in the pathway tree.\n 2. **Run graphical model analysis for a single pathway:** This feature is used to perform a graphical model analysis for a pathway displayed in the Cytoscape desktop.\n 1. **Open a pathway:** As before, you can choose a pathway in the pathway tree, and open its diagram in the Cytoscape desktop. Or you can choose an interesting pathway from the batch analysis results table by choosing popup menu, \"View in Diagram\".\n 2. **Start the analysis:** Choose popup menu, \"Run Graphical Model Analysis\", from the popup menu list in the pathway diagram window. You will be asked to provide data files and set up inference algorithms as in the batch analysis. After clicking the \"OK\" button, you will be asked to provide a list of escape names for entities in the pathway that will not be considered in the graphical model (e.g. ATP, ADP, etc) in the following dialog: \n\n![](/uploads/tools/reactome-fiviz/EscapeNamesDialog.png)\n\nEscapeNameDialog\n\n \n**Note** : If you have loaded data files, you may choose to use the loaded data files without displaying the data loading dialog.\n 3. **View the results:** After the analysis is done, three tabs are displayed in the table pane of Cytoscape: IPA Pathway Analysis, IPA Sample Analysis and IPA Node Values. IPA Pathway analysis displays inference results for entities in the pathway by comparing samples in your data files and in a random data set generated dynamically by the App based on your data files. IPA Sample Analysis shows results for each individual samples as up or down perturbation. You may choose to show/hide p-values and FDR values for samples in the table. IPA Node Values show inference results for selected entities in the pathway diagram for each sample. Entities in the pathway diagram are highlighted based on values in the MeanDiff column in the IPA Pathway Analysis tab. \n\n![](/uploads/tools/reactome-fiviz/CellCycleCheckPointsResults.png)\n\nCellCycleCheckPointsResults\n\n \n**Note** : You may change the color spectrum mapping for pathway diagram highlighting by double-clicking the color spectrum bar at the bottom of pathway diagram window to get the dialog for setting min/max values. You can save the analysis results for a pathway by using popup menu, \"Save Analysis Results\", and load the results back later on by \"Open Analysis Results\".\n 4. **Analyze gene level results:** The up or down perturbation results are inferred based on genomic data files for individual genes. The App provides features to analyze observation results and inference results for individual genes. You can view gene-level observation and inference results for the whole pathway by using popup menus, \"Show Gene Level Analysis Results\" and \"Show Observations\". You can also view these results for genes contained by an entity displayed in the pathway diagram after selecting that entity and then using these two popup menus. The following two dialogs show gene level observations and inference results for genes whose products are contained by complex \"hBUBR1:hBUB3:MAD2*:CDC20 complex [cytosol]\" in the cell cycle checkpoints pathway: \n\n![](/uploads/tools/reactome-fiviz/ObservationsForEntity.png)\n\nObservationsForEntity\n\n![](/uploads/tools/reactome-fiviz/GeneLevelResultsForEntity.png)\n\nGeneLevelResultsForEntity\n\n 5. **Analyze and visualize results for individual samples:** The inference results and loaded observation data are displayed in the right \"Results Panel\" (see below). By checking \"Highlight pathway for sample\", entities in the displayed pathway diagram will be highlighted based on inferred IPA values for the selected sample displayed in the \"Choose sample\" box. You can also enable animation by clicking the play button. There are two tabs in the \"Results Panel\": \"Inference\" for showing inferred IPA values, and \"Observation\" tab for loaded observed data related to entities in the pathway (Note: if you choose \"discretizing\", the displayed observation values are discretized: 0 for lower than normal, 1 for normal, and 2 for higher normal). Objects in three views (pathway diagram, inference table, and observation table) are synchronized for selection. \n\n![](/uploads/tools/reactome-fiviz/PGMSampleViewWithInference.png)\n\nPGM Sample View: Inference\n\n![](/uploads/tools/reactome-fiviz/PGMSampleViewWithObservation.png)\n\nPGM Sample View: Observation\n\n 6. **Compare analysis results for two samples:** You can compare observation data and inference results for two samples. To do this, choose two samples in the \"IPA Sample Analysis\" tab in the bottom results pane, and use popup menu \"Compare Samples\" to bring out another tab called \"Sample Comparison\". You can view comparing results for inference and observation data. \n\n![](/uploads/tools/reactome-fiviz/TwoSampleComparison.png)\n\nTwo Sample Comparison\n\n#### Boolean Network Based Pathway Analysis\n\nWe have developed an approach (Manuscript in preparation) to convert biochemical reactions-based Reactome pathways into Boolean networks and then perform pathway simulation based on the constrained fuzzy logic method according to [Training Signaling Pathway Maps to Biochemical Data with Constrained Fuzzy Logic: Quantitative Analysis of Liver Cell Responses to Inflammatory Stimuli]() and [Querying quantitative logic models (Q2LM) to study intracellular signaling networks and cell-cytokine interactions](). Based on this approach, the user can perform pathway simulation inside Cytoscape using rich Reactome pathways based on fuzzy logic built upon Boolean networks.\n\n 1. **Set up and run logic model simulation** : Choose popup menu \"Run Logic Model Analysis\" in the Pathway Diagram View to get the New Simulation dialog. Enter a name for the simulation and the default value, which usually should be 1.0 to enable that the simulation can proceed, and then choose either PROD or MIN for the AND gate mode (the default choice PROD usually should be fine). \n**Note** : You may also choose an Transfer Function and adjust parameters for Hill function. However, for simplicity, it is suggested to use \"Identity Function\" first. For how to apply drugs for logic model simulation, see below. \n\n![](/uploads/tools/reactome-fiviz/RunBooleanNetworkAnalysis.png)\n\nRun Boolean Network Analysis\n\n![](/uploads/tools/reactome-fiviz/NewBNSimulation.png)\n\nNew BN Simulation\n\n \nAfter clicking the OK button in the New Simulation dialog, the default initial configuration will be displayed in the Results Panel. You may change the variable Type and Modification in the set up table by clicking the cell for the selected variable. To run the simulation, click the Simulate button in the Results Panel. \n\n![](/uploads/tools/reactome-fiviz/SetupBNSimulation.png)\n\nSet up Boolean Network Analysis\n\n![](/uploads/tools/reactome-fiviz/ChooseBNType.png)\n\nChoose BN Variable Type\n\n![](/uploads/tools/reactome-fiviz/ChooseBNModification.png)\n\nChoose BN Modification Type\n\n 2. **Visualize the simulation results** : After the simulation is done, entities in the pathway diagram will be highlighted based on simulated values, which should be between 0 and 1. You may choose one or more entities to visualize their temporal behaviors inside the Table Panel at the bottom of Cytoscape. Attractors computed from the simulation are also listed in the right columns in the original set up table inside the Results Panel. **Note** : After simulation, you will not be able to modify any initial configuration. \n\n![](/uploads/tools/reactome-fiviz/BNSimulationResults_Default.png)\n\nBoolean Network Simulation Results\n\n \n**Note** : To avoid clutter, if too many time steps have been generated for a logic model simulation, only the last 20 time steps are displayed in the table. However, the plot shows all time steps. You may choose different columns to display in the table by use popup menu \"Configure Columns\" after selecting any variables in the table.\n 3. **Perform pathway simulation via modification** : Simulation with Boolean network can help users uncover the impact of modification of entity activities (e.g. inhibition or activation caused by somatic mutation) on the pathway behaviors. For example, in PIP3 activates AKT signaling, Complex AKT:PIP3 forms a complex with EntitySet THEM4/TRIB3 to form another complex, which inhibits the activation of AKT (For details see [Reactome PIP3 activates AKT signaling]()). To perform simulation with modification, choose modification type in the simulation set up table and assign the strength to the modification. \n\n![](/uploads/tools/reactome-fiviz/SetBNInhibition.png)\n\nChoose Inhibition for Boolean Network Simulation\n\n \nClicking the Simulate button invokes the constrained fuzzy logic model simulation with this configured inhibition. You can compare the simulation results between the two configurations by selecting an entity and then toggling the simulation result tables at the bottom of Cytoscape. \n\n![](/uploads/tools/reactome-fiviz/ActiveAKT_Inhibition.png)\n\nActive AKT in Inihibition\n\n \n\n![](/uploads/tools/reactome-fiviz/ActiveAKT_Default.png)\n\nActive AKT in Default\n\n \nYou can also use the \"Compare\" button in the Results Panel to get the comparison dialog and then choose two simulations for comparison. The comparison results are displayed in a new table listed at the bottom Table Panel. \n\n![](/uploads/tools/reactome-fiviz/CompareTwoBNResults.png)\n\nComparison Dialog\n\n \n\n![](/uploads/tools/reactome-fiviz/AktiveAKT_Comparison.png)\n\nActive AKT in Comparison\n\n \n**Note:** The RelativeDifference in the comparison result table is calculated based on relative change for each fuzzy logic variable, calculated as (valueInSim2 - valueInSim1) / (valueInSim2 + valueInSim1). The time course may be interpolated based on the attractor until this relative difference converges.\n 4. To remove all displayed constrained fuzzy logic simulation results, use popup menu, \"Remove Analysis Results\" under \"Run Logic Model Analysis\". The pathway diagram should be reset to the original colors, and all tables related to logic model simulations will be deleted.\n\n#### Visualization of Structural Variants in the Context of Reactome Pathways\n\nBy collaborating with Drs. Francesco Raimondi and Rob Russell at the University of Heidelberg to utilize protein-protein interaction 3D structures provided by [Mechismo](), a platform developed by [Dr. Russell's group]() to study the contributions of individual amino acid residues to protein structure and function, we have systematically analyzed mutations in the TCGA dataset and collected a set of reactions and functional interactions that involve proteins significantly enriched with mutations in their interaction interfaces (manuscript in preparation). We have added features to ReactomeFIViz to visualize these 3D structures and mutated residues in the contexts of Reactome pathways, reactions, and interactions.\n\n 1. **Visualize analysis results in the context of a pathway and its reactions** : In the opened pathway diagram view (See [Explore Reactome Pathways](<#Explore_Reactome_Pathways>) for how to open a pathway diagram), use the popup menu \"Load Mechismo Results\" to load the analysis results into the opened pathway diagram. After the results are loaded, reactions are colored based on FDR values as listed in the bottom table labeled as \"Mechismo Reaction\". \n\n![Mechismo Reaction View](/uploads/tools/reactome-fiviz/MechismoReactionView.png)\n\nMechismo Reaction View\n\n**Note** : You may choose results from a different cancer type or pancancer by clicking the list at the top of the bottom tab labeled as \"Choose a cancer type to highlight reactions based on FDRs in the table\". Some of reactions are not highlighted by any color since there are no structural variants found for proteins annotated for these reactions. To remove the loaded results from the pathway diagram, use another popup menu \"Remove Mechismo Results\".\n 2. **Visualize analysis results in the context of a pathway FI network** : After the Mechismo results are loaded into the pathway diagram, you can convert the diagram into a FI network by using popup menu \"Convert to FI Network\" as usual. The edges displayed in the FI network view are highlighted based on FDR values listed in the bottom table labeled as \"Mechismo Interaction\". \n\n![Mechismo Interaction View](/uploads/tools/reactome-fiviz/MechismoInteractionView.png)\n\nMechismo Interaction View\n\n**Note** : To make the FI network view simplier, check \"Show FIs Only for Selected\" at the left-bottom corner for the pathway diagram view. You may choose a reaction or complex and then view extracted FIs for the selected object in the pathway diagram view. Some of reactions and complexes may not contain any FI (e.g. a complex composed of a protein and a chemical or a reaction between a protein and a chemical).\n 3. **Visualize structural variants in the protein-protein 3D structures** : In the FI network view, choose the popup menu called \"Fetch Mechismo Results\" to bring the view for protein-protein interaction 3D models. Structural variants collected from the TCGA data set are mapped to the original protein-protein interaction 3D structures based on the [Mechismo]() platform. \n\n![Mechismo Structure View](/uploads/tools/reactome-fiviz/MechismoStructureView.png)\n\nMechismo Structure View\n\n**Note** : In the structure view, amino acid residues whose coordinates are mapped to structural variants are displayed in balls. The residues that are mapped to the selected rows in the bottom table are highlighted in yellow. ReactomeFIViz uses [Jmol]() for protein 3D structure visualization. For more information about how to use Jmol, see its documentation: .\n\n### Use the Reactome Functional Interaction (FI) Network\n\nAfter the ReactomeFIViz app installed, you should see a menu item called \"Reactome FI\" under the Apps menu. Clicking this menu, you will see 6 sub-menus: [Gene Set/Mutation Analysis](<#Gene_Set.2FMutation_Analysis>), [PGM Impact Analysis](<#PGM_Impact_Analysis>), [Microarray Data Analysis](<#Microarray_Data_Analysis>), [Reactome Pathways](<#Use_Reactome_Pathways>) and [User Guide.]() Gene set/mutation analysis is for doing FI network-based data analysis for a set of genes or a mutation data file, PGM Impact analysis for performing functional impact analysis based on a probabilistic graphical model for the Reactome FI network using multiple omics data types, HotNet mutation analysis for the HotNet algorithm to search for network modules (see ), microarray data analysis for doing MCL (Markov Graph Clustering, ) based FI network clustering analysis by converting a non-weighted FI network to weighted network using correlations among genes in the network, Reactome pathways for loading pathways from the Reactome database, visualizing Reactome pathways directly in Cytoscape in a their native way, and doing pathway enrichment analysis, and user guide brings you to this user guide.\n\n![ReactomeFIViz app Menu](/uploads/tools/reactome-fiviz/ReactomeFIMenu_4.png)\n\n#### Gene Set/Mutation Analysis\n\n 1. You can enter a list of genes directly into ReactomeFIViz by clicking the \"Enter\" button, or load it from a local file. Currently ReactomeFIViz supports three file formats for gene set/mutation analysis:\n 1. **Simple gene set** : one line per gene. For example, [GWASFuzzyGenes.txt](), a list of T2D GWAS genes.\n 2. **Gene/sample number pair**. For example, [GeneSampleNumber.txt](), which contains two required columns, gene and number of samples having gene mutated, and an optional third column listing sample names (delimited by \";\").\n 3. **NCI MAF (mutation annotation file)**. For example, [GlioblastomaMutationTable.txt](), the mutation file from the TCGA GBM project.\n 2. Choose a FI network version from listed three versions. \n**Note** : you may get different results using different FI network versions because a later version may contain more proteins/genes and more FIs. But based on our experience, a significant FI network module is usually stable across multiple versions.\n 3. Enter genes directly by clicking the \"Enter\" button or choose a file containing genes you want to use to construct a functional interaction network. To choose a file, select an appropriate file format and parameters to load genes and construct FI network in the dialog. Click the \"OK\" button to start the FI network building process. \n\n![Gene Set/Mutation Analysis](/uploads/tools/reactome-fiviz/GeneSetAnalysis_4.png)\n\n 4. The constructed FI network will be displayed in the network view panel. A FI specific visual style will be created automatically for the FI network. \n\n![](/uploads/tools/reactome-fiviz/FISubNetwork.png)\n\nReactome FI Sub-Network\n\n 5. The main features of Reactome FI plug-in should be invoked from a popup menu, which can be displayed by right clicking an empty space in the network view panel. \n\n![Popup Menu for Network](/uploads/tools/reactome-fiviz/PopupMenu_4.png)\n\n * **Fetch FI annotations** : query detailed information on selected FIs. Three FI related edge attribues will be created: FI Annotation, FI Direction, and FI Score. Edges will be displayed based on FI direction attribute values. In the following screenshot, \"->\" for activating/catalyzing, \"-|\" for inhibition, \"-\" for FIs extracted from complexes or inputs, and \"---\" for predicted FIs. See the \"VizMapper\" tab, Edge Source Arrow Shape and Edge Target Arrow Shape values for details. \n\n![](/uploads/tools/reactome-fiviz/FIAnnotations.png)\n\nFI Annotations\n\n \n**Note** : Here is a short explanation about displayed columns: GeneSet for pathways collected in the Reactome FI network hit by the query gene list; RatioOfProteinInGeneSet for ratios of numbers of genes contained in pathways to total genes in the Reactome FI network; NumberOfProteinInGeneSet for numbers of genes in pathways; ProteinFromNetwork for numbers of hit genes from the query gene list; P-value for pvalues calculated based on binomial test; FDR for FDRs calculated based on p-values using Benjamini-Hocherberg method; Nodes for hit genes in pathways.\n * **Analyze network functions** : pathway or GO term ennrichment analysis for the displayed network. You can choose to filter enrichment results by a FDR cutoff value. Also you can choose to display nodes in the network panel for a selected row or rows by checking \"Hide nodes in not selected rows\". The letter in parentheses after each pathway gene set name corresponds to the source of the pathway annotations: C - CellMap, R – Reactome, K – KEGG, N – NCI PID, P - Panther, and B – BioCarta. The following screenshot shows results from a pathway enrichment analysis. \n\n![](/uploads/tools/reactome-fiviz/PathwayAnnotations.png)\n\nPathways in FI Sub-Network\n\n \n_Tip: To analyze pathway or GO term enrichment on a set of genes that are not linked together, select the \"Show genes not linked to others\" option in the \"Set Parameters for FI Network\" dialog._\n * **Cluster FI network** : run a network clustering algorithm (spectral partition based network clustering by [Newman 2006]()) on the displayed FI network. Nodes in different network modules will be shown in different colors (different colors used only for first 15 modules based on sizes). \n\n![](/uploads/tools/reactome-fiviz/NetworkModules.png)\n\nNetwork Modules\n\n * **Analyze module functions** : pathway or GO term enrichment analysis for each individual network modules. You can select a size cutoff to filter out network modules that are too small, choose a FDR cutoff to view enriched pathways or GO terms under a certain FDR value, and view nodes in a selected row or rows only in the network diagram.\n * **Analyze functions for a set of selected genes** : select a set of nodes displayed in the network view and then choose the popup menu, Analyze Nodes Functions, to perform pathway or GO term enrichment analysis. The results will be displayed in a dialog.\n * **Load Cancer Gene Index** : load cancer gene index annotations. For details, see section [Load Cancer Gene Index](<#Load_Cancer_Gene_Index_Annotations>).\n\n#### PGM Impact Analysis\n\n 1. We have developed a probabilistic graphical model (PGM)-based functional impact analysis using the Reactome FI network by integrating multiple omics data types together. The current version of ReactomeFIViz supports four omics data types: CNV, mRNA expression, DNA methylation, and somatic mutation. PGMs used for this analysis are based on [Markov random field (MRF)](). Currently we support two types of MRFs: [Pairwise MRF]() and [Nearest neighbor Gibbs MRF](). You can choose one of these two models. We recommend pair-wise MRF for its simplicity.\n 2. To perform PGM-based functional impact analysis, choose menu, Apps/Rectome FI/PGM Impact Analysis/Analyze. You can enter your omics data by using the PGM configuration dialog. \n\n![](/uploads/tools/reactome-fiviz/ReactomeFIPGMInput.png)\n\nFI-PGM Configuration Dialog\n\n \n**Notes** : \n1). ReactomeFIViz supports continuous observation variables without discretizing by choosing \"Use empirical distribution\" in the configuration. For somatic mutation, currently it supports NCI MAF file format only and requires a specific column named \"MA_FI.score\" for mutation function impact score collected from [Mutation Assessor]() or from some other sources. \n2). The default MRF model used is PairwiseMRF. You can choose the default setting for the first test. \n3). Several parameters are needed for MRF models. We have tuned these parameters based on a small toy model. In the current version of ReactomeFIViz, these parameters cannot be changed.\n 3. It may take several hours to finish the whole analysis. The actual running time will be dependent on the size of your data. The progress of the job running is displayed in the following progress pane. You can cancel the running at any time. \n\n![](/uploads/tools/reactome-fiviz/ProgressPaneOfFIPGM.png)\n\nProgress of FI PGM Running\n\n 4. After the analysis is finished, you should see the result dialog similar to the following screenshot. You can use filtering features to filter to a list of genes that you want to use to construct a FI subnetwork for further analysis. \n\n![](/uploads/tools/reactome-fiviz/FIPGMResultDialog.png)\n\nFI-PGM Result Dialog\n\n \n**Note** : If you select one or more genes in the result table, only these selected genes will be used to construct a FI sub-network. You can save the full analysis results by clicking the \"Save\" button (Results for all genes, not just displayed ones, will be saved). We strongly recommend to save your results first before clicking the \"OK\" button so that you can visit your results back.\n 5. After choosing the \"OK\" button, a FI subnetwork will be constructed and displayed in a network view. The sizes of displayed nodes are proportional to impact scores inferred from the FI-PGM model. To view impact scores and loaded observation data, you can choose a sample in the Sample List tab in the Results Panel. You can also enable sample-based network visualization of the network by checking \"Highlight network for sample\" in the Sample List tab. If you want to review the original results used to construct the FI subnetwork, click \"Show All Results\" in the \"Impact Gene Values\" tab in \"Table Panel\". \n\n![](/uploads/tools/reactome-fiviz/FIPGMResultNetwork.png)\n\nFI-PGM Result Network\n\n#### Microarray Data Analysis\n\nThe ReactomeFIViz app can load gene expression data file, calculate correlations among genes involved in the same FIs, use the calculated correlations as weights for edges (i.e. FIs) in the whole FI network, apply MCL graph clustering algorithm to the weighted FI network, and generate a sub-network for a list of selected network modules based on module size and average correlation. The generated FI sub-network will be displayed in the network panel, and can be used for analysis as in Gene Set/Mutation Analysis. For details about this method, please see our publication: [A network module-based method for identifying cancer prognostic signatures]().\n\nAn array data file should be a tab-delimited text file with table headers. The first column should be gene names. All other columns should be expression values in different samples. **The data set in the file should be pre-normalized.** For example, see this gene expression file for breast cancer: [NejmLogRatioNormGlobalZScore_070111.txt.zip](). This data set was download from [van de Vijver et al in 2002](), and has been normalized.\n\n 1. **Select a microarray data file and run MCL network clustering** : After selecting sub-menu \"Microarray Data Analysis\" from menu Plugins/Reactome FIs, you should see the following dialog. Choose a microarray data file, check if you want to use absolute values as weights for edges, and input an inflation parameter (-I) for the MCL clustering algorithm. The smaller the inflation parameter is, the bigger the average size of generated network modules. Based on our own experience, we use 5.0 for the inflation parameter, the highest recommended value, and choose the absolute value for edge weights. For more details on how to choose the inflation parameter, please see . After you have set these parameters, click the OK button to load the data file, calculate correlations, and apply the MCL clustering algorithm. \n\n![](/uploads/tools/reactome-fiviz/MicroarrayAnalysis_4.png)\n\nSet Parameters for Microarray Data Analysis\n\n 2. **Select network modules and build a FI sub-network** : The generated network modules are listed in the MCL clustering results dialog (see below). Only modules having more than 2 genes can be listed, and used in the FI sub-network building. You can choose a module size or an average correlation value (absolute value if absolute has been checked before) to filter out modules that may not be significant (Note: after set these cutoff values, please press the \"Enter\" key to commit your changes.). In our analysis, we choose modules having 7 or more genes with average correlation values no less than 0.25. These values have been used as default in the dialog. In the dialog, you can see how many modules and genes will be chosen for building FI sub-network under your selected filter values. Click the OK button to start the sub-network building. The built sub-network will be displayed, and can be analyzed as with sub-networks generated from the gene set/mutation analysis. \n\n![](/uploads/tools/reactome-fiviz/MCLClusteringResultsDialog.png)\n\nChoose MCL Modules\n\n### Visualize Drugs in the Contexts of Reactome Pathways and FI Network\n\nReactomeFIViz provide a suite of features to assist users to visualize drugs in the contexts of Reactome pathways and networks. The drug data sources include two: Cancer Targetome ([Blucher et al 2017]()), which collected all FDA-approved cancer drugs (prior to 2018) and their target interactions from four sources, including DrugBank, Therapeutic Targets Database, IUPHAR, and BindingDB; [DrugCentral](), a comprehensive drug database supported by [NIH IDG program](). \n\n#### Visualize Drugs in Reactome Pathways\n\n 1. **List all FDA approved cancer drugs** : Use popup menu \"View Cancer Drugs\" in the Reactome pathway tree to get the list of all FDA approved cancer drugs collected in Cancer Targetome in a table dialog. \n\n![ViewCancerDrugs](/uploads/tools/reactome-fiviz/ViewCancerDrugs.png)\n\nView Cancer Drugs\n\n \nA screenshot of this drug list is shown below: \n\n![](/uploads/tools/reactome-fiviz/CancerDrugsTable.png)\n\nList of Cancer Drugs\n\n 2. **View drug/target interactions** : Select a drug in the drug table (See Figure above) to perform Google search, or view its targets by clicking one of buttons in the dialog. Two views are provided for drug/target interactions. Drug targets table view (below) shows targets for the selected drug with collected binding affinities, which are divided into different categories (e.g.): KD, IC50, Ki, and EC50. The displayed targets are pre-filtered using a set of default filters. You may change the default filters in the Drug/Target Interaction Filter dialog by clicking the \"Filter\" button. \n\n![DrugTargetsTableView](/uploads/tools/reactome-fiviz/DrugTargetsView.png)\n\nDrug Targets Table View\n\n![](/uploads/tools/reactome-fiviz/DrugTargetInteractionFilter.png)\n\nDrug Target Interaction Filter\n\nIn the Drug targets table view, you can choose an interaction and then click the \"View Details\" button to view the detailed information for the selected interaction. In the details view, you can browse the original pubmed references for experimental evidence, Gene Card entry for target, or Google drug by clicking the hyper links. \n\n![](/uploads/tools/reactome-fiviz/CancerDrugDetailsView.png)\n\nCancer Drug Interaction Details View\n\nYou can also select multiple rows in the table to perform pathway enrichment analysis by clicking \"Overlay Targets to Pathways\". See [Pathway Enrichment Analysis](<#Pathway_Enrichment_Analysis>) for details about pathway enrichment analysis results.\n\nDrug targets plot view (below) provides a stagged plot of bar charts for evidence-supported interactions between the selected drug and all its targets, suggesting primary target(s) and secondary targets in a single graphical view.\n\n![DrugTargetsPlotView](/uploads/tools/reactome-fiviz/DrugTargetsPlotView.png)\n\nDrug Targets Plot View\n\n 3. **View cancer drugs in pathway diagrams** : Cancer drugs can be overlaid directly onto displayed pathway diagrams using the popup menu, \"Fetch Cancer Drugs\", in the [Pathway Diagram View](). The fetched cancer drugs are displayed in the pathway diagram, linked to entities containing targets for the displayed drugs.\n\n![](/uploads/tools/reactome-fiviz/FetchCancerDrugs.png)\n\nFetch Cancer Drugs\n\n![](/uploads/tools/reactome-fiviz/DrugsInPathway.png)\n\nDrugs in Pathway Diagram\n\n**Note:** Use Popup menu \"Filter Drugs\" to adjust filters to select drugs and interactions in the pathway diagram view; Use \"Remove Overlaid Interactions\" to remove displayed drugs; You may choose a displayed entity in the pathway diagram and then use popup menu \"Fetch Cancer Drugs\" to display drugs targeted to the selected entity only. \n\n \n\nTo view the detailed information about the interaction between the displayed drug and its targeted entity, choose the link and use pupup menu \"Show Details\" to bring up the drug targets view. \n\n![](/uploads/tools/reactome-fiviz/ViewDrugDetailsInPathway.png)\n\nView Details\n\n 4. **Perform systems pathway impact analysis** : In the cancer drug list table (see above), you may perform pathway impact analysis for all Reactome pathways having entity level view drawn by choosing the \"Run Pathway Impact Analysis\" button. After the analysis is done, the impact results are displayed in the table labled with the selected drug in the Cytoscape Table Panel. See below for an example of the results for Imatinib:\n\n![PathwayImpactAnalysisTable](/uploads/tools/reactome-fiviz/PathwayImpactAnalysisTable.png)\n\nPathway Impact Analysis Results\n\n**Note** : You may open the pathway diagram using popup menu \"View in Diagram\" and export the table into a text file using menu \"Export Table\" in the results table.\n\n#### Visualize Cancer Drugs in the FI Network\n\nThe Reactome FI network provides a network-based view among proteins/genes, where each gene/protein is displayed only once. Visualizing cancer drugs in a FI network context shows a simplified relationship between cancer drugs and their targets. In the [FI Network View](<#Gene_Set.2FMutation_Analysis>), use popup menu, \"Reactome FI/Overlay Cancer Drugs/Fetch Cancer Drugs\", to load cancer drugs for proteins/genes displayed in the FI network. The loaded drugs and interactions between drugs and proteins/genes are rendered in green diamonds and blue edges, respectively.\n\n![](/uploads/tools/reactome-fiviz/FetchCancerDrugsInFINetwork.png)\n\nFetch Cancer Drugs in FI Network\n\n![](/uploads/tools/reactome-fiviz/ShowDrugInteractionDetailsInFI.png)\n\nShow Drug Target In FI Network\n\n \n**Note** : To remove overlaid drugs in the FI network view, use popup menu, \"Reactome FI/Overlay Cancer Drugs/Remove Drugs\"; As in the Pathway diagram view, you can also apply filters by using \"Filte Drugs\" popup menu; To view the details about an interaction between a drug and a target, select the edge, and then use popup menu \"Reactome FI/Show Drug/Target Interaction Details\". (You may need to zoom into the selected edge.)\n\n#### Visualize DrugCentral Drugs\n\nVisualize drugs collected in DrugCentral is simlar with cancer drugs collected in Cancer Targetome. You can use popup menu \"View DrugCentral Drugs\" in the pathway tree to list all drugs collected in the DrugCentral database, \"Fetch DrugCentral Drugs\" popup menu in the pathway diagram view to overlay drugs onto pathways, or \"ReactomeFI/Overlay Drugs/Fetch DrugCentral Drugs\" to overlay drugs onto the FI network in the network view.\n\n#### Simulate Impact of Drugs on Pathway Activities\n\nOverlaying cancer drugs onto the contexts of Reactome pathways and its FI network helps users to understand the potential impact of applying drugs on the pathway activities and network behavior. However, the actual perturbation of drugs on pathways may be much more complicated. Performing pathway simulation may help users to understand the actual impact. ReactomeFIViz implements features to assist users to perform Boolean network-based drug simulation. Before you do drug simulation, please read section [Boolean Network Based Pathway Analysis](<#Boolean_Network_based_Pathway_Analysis>) first. In this section, we will use pathway [HDR through Homologous Recombination (HR) or Single Strand Annealing (SSA)]() and drug Imatinib as an example (Note: To get the following screenshot, open diagram for this pathway, and then fetch cancer drugs and filter drugs to Imatinib using the name filter).\n\n![](/uploads/tools/reactome-fiviz/ImatinibInHDRThroughHROrSSA.png)\n\nImatinib in Pathway\n\n 1. **Set up new simulation for drug** : In the pathway diagram view, use popup menu, \"Run Logic Model Analysis\". In the New Simulation dialog, enter a name (e.g. Imtatinib) and default value for the simulation, and then choose the mode for the AND gate as in the regular logic model simulation. To perform drug simulation, choose the Drug Application tab and a drug data source, and then click the \"...\" button to bring up the Drug Selection dialog. ** \nNote** : You will need to adjust the drug filters to show all targets for Imatinib as displayed in the following screenshot. Based on the collected annotations for interactions between cancer drugs and their targets, default modification types will be selected (as expected, most of them are inhibition). Strengths of modifications are pre-configured based on affinities collected in our aggregated drug/target database. \n\n![](/uploads/tools/reactome-fiviz/ImatinibNewSimulation_1.png)\n\nImatinib BN Simulation I\n\n![](/uploads/tools/reactome-fiviz/ImatinibNewSimulation_2.png)\n\nImatinib BN Simulation II\n\n \n\n![](/uploads/tools/reactome-fiviz/SelectDrugsForBN.png)\n\nSelect Drugs for BN Simulation\n\n \n**Note:** Since no affinities can be found for interactions between Imatinib and CHEK1 or CDK2, CHEK1 and CDK2 are not listed in the New Simulation dialog. Checking \"Filter members in sets to drug targets\" will select members in EntitySet instances that are targeted by drugs to force showing of potential pathway impact caused by drugs.\n 2. **Perform simulation with drug** : The configuration for drug in the Drug Selection dialog will be copied into the Boolean Network configuration table displayed in the Results Panel. Click the \"Simulate\" button to perform simulation. After the simulation is done, Entities in the pathway diagrams are highlighted in different colors based on values in the attractor with detailed temporal values displayed in the table at the bottom Table Panel. \n\n![](/uploads/tools/reactome-fiviz/ImatinibBNSetup.png)\n\nImatinib BN Setup\n\n \n\n![](/uploads/tools/reactome-fiviz/ImatinibBNResults.png)\n\nImatinib BN Results\n\n 3. **Investigate the drug impact on pathway activities** : To see the impact of a drug on the pathway activities, perform another Boolean network simulation without applying cancer drugs (here as Default) (For details, see [Boolean Network Based Pathway Analysis](<#Boolean_Network_based_Pathway_Analysis>)). The screenshot for the logic model simulation results with the default initial configuration for pathway \"HDR through Homologous Recombination (HR) or Single Strand Annealing (SSA)\" is displayed below: \n\n![](/uploads/tools/reactome-fiviz/DefaultHDRThroughHROrSSABNResults.png)\n\nHDR Through HR or SSA Default Results\n\n \nTo see the drug impact to the activity of an entity displayed in the pathway, choose that entity and check its temporal behavior in both BN:Default and BN:Imatinib tables. For example, below a complex (see above screenshot) related to ABL1 is selected (Up for imatinib applied and down for default without drug): \n\n![](/uploads/tools/reactome-fiviz/ImatinibOneVariable.png)\n\nImatinib One Variable\n\n \n\n![](/uploads/tools/reactome-fiviz/DefaultBNOneVariable.png)\n\nDefault One Variable\n\n \nYou may also use the \"Compare\" button to check the detailed difference in the computed attractors from two simulations. \n\n![](/uploads/tools/reactome-fiviz/PS456ABL1Comparison.png)\n\np-S456-ABL1 Values\n\n \n**Note** : From the above comparison, we can see that application of imatinib will significantly impact the formation of the complex in HDR, an effect of imanitib on DNA repair pathway has been reported by others (e.g. [Imatinib (STI571) induces DNA damage in BCR/ABL-expressing leukemic cells but not in normal lymphocytes]()). You may see a little bit different simulation results because of update in pathway annotations in new versions of ReactomeFIViz.\n\n### Perform scRNA-seq Data Analysis and Visualization\n\nReactomeFIViz implements a suite of features for users to conduct scRNA-seq data analysis and visualization. To do this, we have packaged several popuplar Python packages developed for scRNA-seq data analysis and visualization together into a Python standalone application. These packages include [scanpy]() for routine scRNA-seq data analysis and visualization and [scVelo]() for RNA velocity based data analysis and visualization. \n**Note** : For scRNA-seq data analysis and visualization, you need to have Python 3.7 installed at your computer. If you have not installed Python at your computer, you can do so by downloading an installer from [https://www.python.org/downloads]() for your computer. We have tested Python 3.7 only and thefore suggest that you use 3.7 for these features. However, you don't need to install our standalone Python application indepedently from ReactomeFIViz. When needed, ReactomeFIViz will automatically download and update the application for you as long as you point to the correct Python application path (i.e. directory and application file).\n\n#### Standard Analysis via Scanpy\n\n 1. **Set up the analysis:** The Python package, [scanpy](), provides a set of powerful analysis and visualization features for scRNA-seq data. ReactomeFIViz wraps these features for users to take advantage of pathway and network analysis and visualization facilities provided by Cytoscape in general and ReactomeFIViz in particular. To conduct a scRNA-seq analysis using scanpy, choose menu Apps/Reactome FI/Single Cell Analysis/Analyze to get the configuration window as shown below: \n\n![scRNA-seq Analysis Configuration](/uploads/tools/reactome-fiviz/scRNASeqConfig.png)\n\nscRNA-seq Analysis Configuration\n\nReactomeFIViz supports scRNA-seq data generated from mouse and human. You should choose the species for your data and the format. If your data is in the 10x-Genomics-mtx format, you should choose the directory containing the files in that format. You may check an imputation method. Currently, ReactomeFIViz supports the [MAGIC]() approach only. You may also check total_counts and/or pct_counts_mt for [regress out]() to control unwanted variations. \n**Note** : All analysis steps and their paramters are logged into CytoscapeConfiguration/ReactomeFIViz/ReactomeFIViz.{date}.log in your user folder for your review.\n 2. **Configure Python for ReactomeFIViz:** If you have not done so, you will be asked to set up Python for ReactomeFIViz using the following configuration dialog when ReactomeFIViz downloads the Reactome Python app for scRNA-seq data analysis and visualization. \n\n![Set up Python](/uploads/tools/reactome-fiviz/SetupPython.png)\n\nSet up Python\n\n**Note** : Currently only Python 3.7 is supported. \nReactomeFIViz uses the functions provided by scanpy for pre-processing, normalization, UMAP analysis, cell clustering and all other scRNA-seq analysis except imputation, which is handled by [MAGIC](), if checked. See details in the scanpy document: . For paramters used for these functions, open the ReactomeFIViz.{data}.log file (see above).\n 3. **Visuzlize Cell Networks** : Dependent on the sample size and the computing power, it may take several minutes to finish the analysis. After that, two networks, one for cell clusters and another for single cells, are displayed in Cytoscape and listed under \"SingleCellClusterNetwork\" and \"SingleCellNetwork\" in the left-side, Network tab, respectively. \n\n![ScRNA-seq Cluster Network](/uploads/tools/reactome-fiviz/ScClusterNetwork.png)\n\nScRNA-seq Cluster Network\n\n![ScRNA-seq Cell Network](/uploads/tools/reactome-fiviz/ScCellNetwork.png)\n\nScRNA-seq Cell Network\n\n**Note** : You may use the built-in Cytoscape Style features and other configuration properties to adjust the rendering of these two networks. See Cytoscape's user manual by clicking menu Help/User Manual. To show or hide edges in the networks, use popup menu Reactome FI/Show Edges (see below for a screenshot). Cluster in the cell cluster network are named based on the rank of cell clusters sorted by cell numbers in the clusters. For example, cluster0 has the largest number of cells.\n 4. **Analyze scRNA-seq Data** : To explore the loaded scRNA-seq data and perform further analysis, you can use the popup menu provided in the cell cluster or single cell network view as shown below: \n\n![ScRNA-seq Standard Analysis Popup Menus](/uploads/tools/reactome-fiviz/ScStandardPopupMenus.png)\n\nScRNA-seq Standard Analysis Popup Menus\n\n * **Load Gene Expression** : Overlay expression value for a gene onto the network. You may enter the gene name from the input dialog after clicking this menu. \n**Note** : Cell clusters use the median values of cells in the clusters for coloring for gene expression and cell features (below).\n * **Load Cell Features** : Overlay cell features by choosing a sub-menu, e.g., n_genes (total genes), n_genes_by_counts (total genes having counts), total_counts, total_count_mt (for mitonchorian genes), pct_counts_mt (percent of mitochondria genes), and leiden (network clustering results based on the [Leiden]() algorithm). \n**Note** : Both the cell cluster network and the single cell network are colored based on the leiden clustering results when they are rendered after the analysis. To get back to the orignal colors, choose Load Cell Feature/leiden.\n * **CytoTrace Analysis** : Perform CytoTrace analysis to predict the differential state of cells based on the number of detected expressed genes per cell. ReactomeFIViz provides a Python implementation of CytoTrace based on the original R code published in . For details about CytoTrace, see the original paper: [Single-cell transcriptional diversity is a hallmark of developmental potential](). You can find more information in the CytoTrace's web site: . \n**Note** : The analysis may take several minutes. After the analysis, cells will be colored based on predicted differential state values scaled between 0 and 1: 0 for most differentiated (yellow) and 1 for least differentiated (blue). The analysis results are cached in ReactomeFIViz and listed in a new column called \"cytotrace\" in the Node Table at the bottom. When you choose this menu again after the analysis, the results will be overlaid without performing another analysis. A new menu item called \"cytotrace\" will be added to the \"Load Cell Features\" popup menu too so that you can load these results directly. \n**Note** : You may not see this menu item after the analysis. Try to switch to another network view and then come back to refresh the menu items.\n * **Diffusion Pseudotime Analysis (DPT)** : Perform cell trajectory inference based on network diffusion. For details about the algorithm, see [scanpy.tl.dpt]() and the original paper: [PAGA: graph abstraction reconciles clustering with trajectory inference through a topology preserving map of single cells](). To conduct this analysis, the id of a cell that should be regarded as the root of the trajectory is needed. If you have some idea what this cell is, you may enter it directly in the following dialog. If you don't know what it is but have some idea in which cluster or clusters the root may reside, you can enter the cluster(s) in the second text field. ReactomeFIViz will try to infer a possibe cell root for you in your specified cluster(s) based on [PageRank](). For details about the cell root inference algorithm, see [infer_cell_root](). \n\n![Configure Cell Root for DPT](/uploads/tools/reactome-fiviz/ConfigCellRootForDPT.png)\n\nConfigure Cell Root for DPT\n\n**Note** : If you don't have any idea what the cell root is, you may try several approaches. If you have conducted a CytoTrace analysis, you may choose the cell having the largest CytoTrace value as the cell root. You may also try the cell having the largest number of detected genes as the root for exploration data analysis. To choose cell clusters for inferring the cell root, you should choose clusters having the largest CytoTrace values or gene numbers. If you have enter values into both text fields in the above dialog, the value in the first text field will be used as the cell root. \nAfter the DPT analysis, cells will be colored based on DPT values ranged from 0 to 1 with 0 as the earliest cell (yellow) in the trajectory and 1 as the latest (blue). A new column called \"dpt_pseudotime\" will be added into the Node Table at the bottom and \"dpt_pseudotime\" will be registered as a new item under \"Load Cell Feature\" popup menu for loading without repeating the analysis. \n**Note** : You may not see this menu item after the analysis. Try to switch to another network view and then come back to refresh the menu items.\n * **Differential Expression Analysis** : Perform differential gene expression analysis between a cell cluster (group) and another cell cluster or all other cell clusters using [t-test_overestim_var](). To conduct this analysis, you need to choose two groups of cells first: The group of cell for analysis based on clustering results and another group as the reference. You may choose another cell cluster or all other cells as the reference. \n\n![Choose Cell Groups for Differential Expression Analysis](/uploads/tools/reactome-fiviz/ScDiffChooseGroups.png)\n\nChoose Cell Groups for Differentila Expression Analysis\n\nThe differential expression analysis result is displayed in the following table. You may choose one or more filteres by clicking the \"Add\" button to filter genes displayed in the table. To create a FI network for the filtered genes displayed in the table, click the \"Build FI Network\" button. To conduct a pathway enrichment analysis, you can choose Binomial_test or [GSEA](<#Gene_Set.2FMutation_Analysis>). The Binomial_test will use the filtered, displayed genes in the table while the GSEA analysis will use gene rank by the score, including genes that are not displayed in the table. \n\n![Differential Expression Analysis Result](/uploads/tools/reactome-fiviz/ScDiffExpResultTable.png)\n\nDifferential Expression Analysis Result\n\n**Note** : Genes in the FI network constructed from the selected genes are colored based on gene scores. For more information on how to use the features for the FI network, see [Gene Set/Mutation Analysis](<#Gene_Set.2FMutation_Analysis>). You may open a pathway diagram when a network view is shown. To get back to the previous network view, close all displayed pathway diagrams and then select the network in the Network tab in the left, control panel. Reactome mouse pathways are predicted from human pathways based on the panther orthologous mapping file. For details, see: [Inferred Events in Reactome](). The mouse human functional interaction network is predicted from the human functional interaction network using the mapping file provided by [MGI](), downloaded using this link: . One human gene may be mapped to multiple mouse genes. Therefore, the mouse FI network may show a node that is annotated with multiple mouse genes. For example, see below: The original human KLK3 is mapped to Klk1b9, Klk1b21, and many others, which are all listed in the node table at the bottom and in the network view as the label for that node. Currently links to these nodes in the FI network point to human genes (e.g. GeneCard). \n\n![One Human Gene Mapped to Multiple Mouse Genes](/uploads/tools/reactome-fiviz/OneHumanGeneToMultipleMouseGenes.png)\n\nOne Human Gene Mapped to Multiple Mouse Genes\n\n * **Build Regulatory Network** : Infer an underlying gene regulatory network between transcriptional factors (TFs) and their targets for one or more cell clusters. This approach is inspirted by Qiu et al's [Inferring Causal Gene Regulatory Networks from Coupled Single-Cell Expression Dynamics Using Scribe](). However, the current implementation provided by ReactomeFIViz uses time-delayed gene co-expression to infer potential causal relationships between TFs and their targers instead of \"restricted directed information (RDI)\" and limits the causal relationships search between TFs and their targets based on TF/target interactions provided by [dorothea](). To perform this analysis, set up parameters in the following dialog: \n\n![Gene Regulatory Network Infernece Setup](/uploads/tools/reactome-fiviz/ScRegNetSetup.png)\n\nGene Regulatory Network Inference Setup\n\n**Note** : You may choose Spearman, Pearson, or Kendal for gene expression correlaiton calculation. The cell time type is one of latent_time, velocity_pseudotime, cytotrace or dpt_pseudotime, which are cell properties calculated during trajectory inference. The first two types are generated during an RNA velocity analysis (See below). If ReactomeFIViz cannot find any of these variables, you will be asked to perform the dpt_pseudotime analysis first. The time delay is used to conduct a delayed gene co-expression calculation. For example, the expression of a TF is [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] and the expresison of one of its target is [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]. If the time delay = 4, the correlation between [1, 2, 3, 4, 5, 6] and [15, 16, 17, 18, 19, 20] is calculated. The time delay in the above dialog is for the maximum time delay. Therefore, if you enter 7 for the time delay, the actual time delay values used for correlation calculation are [1, 2, 3, 4, 5, 6, 7]. The correlation is calculated 7 times and the maximum value of those calculated correlation values is used. For the cell groups, you may choose all, one of cell clusters, or multiple cell clusters (hold the command key under Mac or the control key under Windows). \nIt may take several minutes to calculate the correlation for all TF/target interactions and then build the regulatory network. The following is an example showing how a final gene regulatory network looks like: \n\n![Partial Gene Regulatory Network](/uploads/tools/reactome-fiviz/PartialGeneRegNet.png)\n\nPartial Gene Regulatory Network\n\n**Note** : A style called \"Regulatory Network Style\" is created for rendering the generated gene regulatory network. With this style, TFs are rendered as diamonds while their targets as circles. The original [dorothea]() interactions provide annotation: -> for activation and -| for inhibition. Red for positive correlation while blue for negative correlaiton. The calculated correlation may not match the original annotation in dorothea. For example, in the above figure, the interaction between Insm1, a TF and one of its target, Scg3, is annotated as an inhibition. However, the actual calculated Spearman correlation is positive. The edge width is proportional to the absolute correlation value. You may investigate this style inside Cytoscape for more information.\n * **Project New Data** : Project another data set onto the displayed network. This feature uses the [ingest]() function in scanpy to integrate a new dataset onto the dataset used to generate the network, showing where cells in the new dataset can be mapped to the displayed network. To perform this analysis, enter the data file in the following dialog: \n\n![Project New Data Configuration](/uploads/tools/reactome-fiviz/ProjectNewDataConfig.png)\n\nProject New Data Configuration\n\n**Note** : You cannot choose the approach in this dialog. It is expected that the same approach should be used to project a new dataset onto the existing network. After projecting, a new popup menu called \"Toggle Projected Data\" is added under the \"Project New Data\" menu for toggling the display of the projected cells. The following two figures show the cell network before (left) and after (right) a new dataset is projected. As shown, the majority of cells in the new dataset are projected onto the cell clusters displayed in green, salmon and rosy brown around the middle and top-right regions. \n\n![Before Projecting](/uploads/tools/reactome-fiviz/CellNetworkBeforeProject.png)![After Projecting](/uploads/tools/reactome-fiviz/CellNetworkAfterProject.png)\n\n * **Save Analysis Results** : All analysis results may be saved into a local file in the [h5ad]() format. The saved file can be opened using the main menu, Apps/Reactome FI/Single Cell Analysis/Open.\n\n#### RNA Velocity Analysis via scVelo\n\nRNA velocity analysis is a powerful approach to quantitatively model dynamic behavior of mRNA transcription of genes based on count ratios between unspliced and spliced forms of mRNAs ([La Manno et al 2018]()). [scVelo]() provides an enhanced implementation of the original approach in Python. ReactomeFIViz packages scVelo for you to conduct this analysis in Cytoscape using graphic user interfaces without scripting. For more information about RNA velocity and scVelo, see the original scVelo document: .\n\n 1. **Set up the analysis** : Select \"RNA Velocity Analysis via scVelo\" for Approach in the following scRNA-seq analysis action dialog and choose one of RNA velocity modes. To see the differences among the three modes listed in dialog, see the original scVelo paper, [Generalizing RNA velocity to transient cell states through dynamical modeling](). The default is \"stochastic\". However, if you want to get more dynamic information, choose \"dynamical\". For what you can do with the dynamical model, see [Dynamical Modeling with scVelo](). The data file required by this analysis should be pre-processed specically by using velocyto or loompy/kallisto pipeline and contain two matrices for unspliced and spliced abundances. For more information on how to get started, see this scVelo tutorial: [Getting Started](). \n\n![RNA Velocity Analysis Configuration](/uploads/tools/reactome-fiviz/RNAVelocitySetup.png)\n\nRNA Velocity Analysis Configuration\n\n 2. **Visualize the RNA velocity analysis results** : Dependent on the mode you choose, it may take a while to conduct the RNA velocity analysis. The outputs are the same as ones from a standard analysis using scanpy except that the single cell cluster network is displayed as directed, weighted network with directions corresponding to times in the inferred trajectory based on the [PAGA]() approach and weights for the connectivities between cell clusters. The following figure shows an example of such a weighted, directed cell cluster network. \n\n![RNA Velocity Cluster Network](/uploads/tools/reactome-fiviz/RNAVelocityNetwork.png)\n\nRNA Velocity Cluster Network\n\n**Note** : It is expected that you see different results from the RNA velocity analysis than ones from the standard analysis.\n 3. **Analyze the RNA velocity results** : Most of analysis features for the displayed networks generated from the RNA velocity analysis are the same as ones from the standard analysis via scanpy. However, the RNA velocity analysis provides much more cell features than the standard analysis as shown in the following popup menu: \n\n![RNA Velocity Cell Features](/uploads/tools/reactome-fiviz/RNAVelocityCellFeatures.png)\n\nRNA Velocity Cell Features Popup Menu\n\n**Note** : To understand the meanings of these RNA velocity specific cell features, please refer to the original scVelo tutorials: [scVelo tutorials](). In addition to the above RNA velocity specific cell features, a new popup menu group is added for you to conduct some RNA velocity specific data analysis and visualization as shown below: \n\n![RNA Velocity Popup Menu](/uploads/tools/reactome-fiviz/RNAVelocityPopupMenu.png)\n\nRNA Velocity Popup Menu\n\n**Note** : Refer to this scVelo tutorial for Embedding, Embedding Grid, Embedding Stream, and Gene Velocity: [RNA Velocity Basics](). ReactomeFIViz utilizes scVelo's visualization features to generate image files for these plots and then automatically open them. To keep these files for your record, you may have to save them into your designated files. Otherwise, they will be automatically deleted when you close Cytoscape. \n * **Rank Velocity Genes** : Ranks genes in individual cell clusters based on differential expression analysis using scVelo's rank_velocity_genes function: [ rank_velocity_genes](). Top 250 genes for individual clusters returned from this analysis are displayed in a table as shown in the following figure. You may conduct pathway enrichment analysis using a binomial test or build a FI network for a selected cell cluster. \n\n![RNA Velocity Rank Gene Table](/uploads/tools/reactome-fiviz/RNAVelocityRankGeneTable.png)\n\nRNA Velocity Rank Gene Table\n\n**Note** : You may filter genes displayed in the table. However, for pathway enrichment analysis or building a FI network, all 250 genes for a selected cell cluster are used.\n * **Rank Dynamic Genes** : If you choose the dynamic mode for your RNA velocity analysis, you can also do \"Rank Dynamic Genes\". This feature is based on scVelo function, [rank_dynamical_genes](). The output and the functions are the same as \"Rank Velocity Genes\".\n\n### Other Features Related to the FI Network\n\n#### Query FI Source\n\nSelect an edge and right click it to get the popup menu for edge. Select a menu called \"Reactome FI/Query FI Source\". If a FI is extracted from curated pathways or reactions, a dialog for the original data source(s) will be displayed. Double click a row in the displayed table to show a detailed web page for the source of the FI. If the selected FI is a predicted one, the evidence for this FI should be displayed.\n\n![](/uploads/tools/reactome-fiviz/QueryFISource.png)\n\nQuery FI Source\n\n![](/uploads/tools/reactome-fiviz/ShowFISource.png)\n\nReactomeFIViz app Menu\n\n#### Fetch FIs for Node\n\nAll FIs for a node can be queried. Select a node in the network panel, and right click it to get the popup menu for node. Select a menu called \"Reactome FI/Fetch FIs\". FI partners for the selected node will be displayed in two sections: partners have been displayed in the network and partners not displayed in the network. You can select partners from the second sections to expand the displayed network.\n\n![](/uploads/tools/reactome-fiviz/FetchFIs.png)\n\nQuery Node FIs\n\n![](/uploads/tools/reactome-fiviz/ShowNodeFIs.png)\n\nShow Node FIs\n\n#### Show Pathway Diagram\n\nPathway diagrams can be shown for pathway hits. Select a pathway in the \"Pathways in Network\" or \"Pathways in Modules\" tab, and right click to get the popup menu for pathway. Select \"Show Pathway Diagram\" from the popup menu\n\n![](/uploads/tools/reactome-fiviz/ShowPathwayDiagram.png)\n\nShow Pathway Diagram\n\n. If pathways are imported from KEGG, KEGG pathway diagram pages will be shown in a browser with node genes listed in the \"Nodes\" column highlighted in red (for text and borders in pathway diagrams). If pathways are from Reactome or other non-KEGG databases, pathway diagrams should be shown in a separated window. If pathways are curated by the Reactome project, human laid-out diagrams should be displayed if any. Otherwise, auto-laid-out diagrams should be displayed. Genes or proteins from the displayed network should be highlighted in blue. Detailed annotations for nodes and reactions displayed in the diagram window can be viewed by using a popup menu called \"View Instance\". Diagrams displayed can be zoomed in/out using the zoom slider at the bottom of the window. The diagram can be panned by the overview window at the top-right corner.\n\n![](/uploads/tools/reactome-fiviz/KEGGDiagram.png)\n\nKEGG Focal Adhesion\n\n![](/uploads/tools/reactome-fiviz/ReactomeDiagram.png)\n\nReactome Signaling by PDGF\n\n#### Load Cancer Gene Index Annotations\n\nReactome FI plug-in can load NCI cancer [gene index annotations]() for genes/proteins displayed in the network. There are two ways to show these annotations: use a popup menu called \"Load Cancer Gene Index\" when no object is selected (left figure), and use another popup menu \"Fetch Cancer Gene Index\" for a selected node (right figure).\n\n![](/uploads/tools/reactome-fiviz/LoadCGI.png)\n\nLoad Gene Index\n\n![](/uploads/tools/reactome-fiviz/LoadNodeCGI.png)\n\nLoad Node Cancer Gene Index\n\n \nBy using the first method, the user can load the tree of NCI disease terms and display the tree in the left panel. The user can select disease term in the tree, all genes or proteins have been annotated for the selected disease and its sub-terms will be selected.\n\n![](/uploads/tools/reactome-fiviz/CGIOverlay.png)\n\nCancer Gene Index Overlay\n\nBy using the second method, the user can view detailed annotations for the selected gene or protein. The user can sort these annotations based on PubMedID, Cancer type, and annotation status, and also filter annotations based on several criteria.\n\n![](/uploads/tools/reactome-fiviz/CGIAnnotationsForNode.png)\n\nCancer Gene Index Annotations for Node\n\n#### Survival Analysis\n\nSurvival analysis is based on a server-side R script to do either coxph or Kaplan-Meier survival analysis. To do survival analysis, a tab-delimited text file containing at least three columns should be provided. The names of three columns should be: Samples, OSDURATION, and OSEVENT. For example, see this survival information file downloaded from [van de Vijver et al in 2002](): [Nejm_Clin_Simple.txt](), which has been simplified for our analysis purpose. To do survival analysis, use the popup menu \"Analyze Module Functions/Survival Analysis...\" (see below)\n\n![](/uploads/tools/reactome-fiviz/SurvivalAnalysisMenu.png)\n\nSurvival Analysis Menu\n\nIn the survival analysis dialog (below), double click the text field to select a file containing survival information for samples used to build the displayed FI sub-network (Note: you cannot do survival analysis if you use a gene set file only to construct the displayed FI subnetweork). You can choose either coxph or Kaplan-Meier model to do survival analysis. If you choose the Kaplan-Meier model, you have to select a module for analysis. In the Kaplan-Meier analysis, all samples will be divided into two groups: samples having no mutated genes in the selected module (group 1) and samples having mutated genes in module (group 2). It is recommended to run the coxph module first without selecting any module in order to see which module is most significantly related to survival times. After that, you can focus on some specific modules for survival analysis.\n\n![](/uploads/tools/reactome-fiviz/SurvivalAnalysisDialog.png)\n\nSurvival Analysis Dialog\n\nThe results from survival analysis will be displayed in the right Results Panel with a tab labeled \"Survival Analysis\" (below left). You can do multiple survival analyses. All results returned from the server-side R script will be displayed in this panel with labels based on your parameter selections in the survival analysis dialog. The last result will be selected as default. At most three sections are displayed in the result panel for each analysis: Output, Error, and Plot. If no warning or error returned from an analysis, the error section may not be shown. Rows for modules having p-values less than 0.05 from coxph (all modules) analysis are displayed in blue with text underlined. You can click these modules to do a quick single-module based survival analysis without going through the above steps. Single module-based Kaplan-Meier analysis will show a plot file. You can click the file to view the actual plot (below right). You may need to save the plot file for your future use.\n\n![Survival Analysis Results](/uploads/tools/reactome-fiviz/SurvivalAnalysisResult.png)\n\n![Kaplan-Meier Survival Plot](/uploads/tools/reactome-fiviz/KaplanMeyerPlot.png)\n"} \ No newline at end of file From 6bb70869ec9bba54062f51e3cd52b674a23634fd Mon Sep 17 00:00:00 2001 From: beaversd Date: Wed, 19 Aug 2026 09:19:10 -0700 Subject: [PATCH 005/136] Updates to enviornement and manual editing of the publication component. --- angular.json | 4 + package.json | 3 +- .../publication/publication-byline.spec.ts | 57 ------- .../common/publication/publication-byline.ts | 36 ---- .../publication/publication.component.html | 120 ++++++-------- .../publication/publication.component.scss | 16 +- .../publication/publication.component.ts | 154 ++++-------------- .../graph/publication/publication.model.ts | 5 +- .../src/app/services/data-state.service.ts | 13 +- .../src/app/services/event.service.ts | 19 ++- .../src/app/viewport/viewport.component.html | 8 +- .../src/app/viewport/viewport.component.scss | 30 ++++ .../src/app/viewport/viewport.component.ts | 17 +- .../src/environments/environment.curator.ts | 65 ++++++++ .../environments/environment.development.ts | 5 +- .../src/environments/environment.github.ts | 5 +- .../src/environments/environment.local.ts | 20 +-- .../environments/environment.production.ts | 7 +- .../src/environments/environment.release.ts | 7 +- .../src/environments/environment.ts | 64 ++------ .../curator-home-shortcuts.component.ts | 6 +- 21 files changed, 294 insertions(+), 367 deletions(-) delete mode 100644 projects/pathway-browser/src/app/details/common/publication/publication-byline.spec.ts delete mode 100644 projects/pathway-browser/src/app/details/common/publication/publication-byline.ts create mode 100644 projects/pathway-browser/src/environments/environment.curator.ts diff --git a/angular.json b/angular.json index 47da521c..d7f2727b 100644 --- a/angular.json +++ b/angular.json @@ -91,6 +91,10 @@ { "replace": "projects/pathway-browser/src/environments/variant.ts", "with": "projects/pathway-browser/src/environments/variant.curator.ts" + }, + { + "replace": "projects/pathway-browser/src/environments/environment.ts", + "with": "projects/pathway-browser/src/environments/environment.curator.ts" } ] }, diff --git a/package.json b/package.json index c598b4c2..badae7d5 100644 --- a/package.json +++ b/package.json @@ -16,11 +16,12 @@ "start:local": "npm run generate:indices && run-p dev:reactome-cytoscape-style dev:serve:local", "start:simple": "ng serve", "start:curator-local": "npm run generate:indices && npm run stage:content && npm run build:reactome-cytoscape-style && npm run build:libs && ng serve --configuration curator-local", + "start:curator": "npm run generate:indices && npm run stage:content && npm run build:reactome-cytoscape-style && npm run build:libs && ng serve --configuration curator", "start:simple:local": "ng serve --configuration local", "start:website": "cd projects/website-angular && npm run start", "start:pathway": "cd projects/pathway-browser && npm run start-with-deps", "build": "npm run generate:indices && ng build --configuration production", - "build:website": "cd projects/website-angular && npm run build", + "build:website": "npm run build && cd dist/reactome/browser/ && tar czvf browser.tar.gz * && scp browser.tar.gz curator:~/browser.tar.gz && rm browser.tar.gz", "build:pathway": "cd projects/pathway-browser && npm run build", "watch": "ng build --watch --configuration development", "test": "vitest run", diff --git a/projects/pathway-browser/src/app/details/common/publication/publication-byline.spec.ts b/projects/pathway-browser/src/app/details/common/publication/publication-byline.spec.ts deleted file mode 100644 index 41ff5061..00000000 --- a/projects/pathway-browser/src/app/details/common/publication/publication-byline.spec.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { authorNameEntries, composeAuthorByline } from './publication-byline'; - -describe('authorNameEntries', () => { - it('lists the entries the curation graph sends', () => { - expect(authorNameEntries(['Kerr, JF', 'Wyllie, AH', 'Currie, AR'])).toEqual([ - 'Kerr, JF', - 'Wyllie, AH', - 'Currie, AR', - ]); - }); - - it('wraps a single pre-composed string', () => { - expect(authorNameEntries('Kerr, JF, Wyllie, AH')).toEqual(['Kerr, JF, Wyllie, AH']); - }); - - it('is empty when the attribute is absent, as it is on the public content service', () => { - expect(authorNameEntries(undefined)).toEqual([]); - }); - - it('drops blank entries', () => { - expect(authorNameEntries(['', ' ', 'Kerr, JF'])).toEqual(['Kerr, JF']); - expect(authorNameEntries(' ')).toEqual([]); - }); -}); - -describe('composeAuthorByline', () => { - it('composes one byline from the per-author array the curation graph returns', () => { - // Regression: authorName arrives as string[] here, and calling .trim() on it threw a - // TypeError that blanked out every reference in the details panel. - expect(composeAuthorByline(['Kerr, JF', 'Wyllie, AH', 'Currie, AR'])).toBe( - 'Kerr JF, Wyllie AH, Currie AR' - ); - }); - - it('handles a single-author array', () => { - expect(composeAuthorByline(['Ashkenazi, A'])).toBe('Ashkenazi A'); - }); - - it('leaves a name with no comma alone', () => { - expect(composeAuthorByline(['World Health Organization'])).toBe('World Health Organization'); - }); - - it('passes a pre-composed string through untouched, commas and all', () => { - // Splitting this one on commas would run the names together as "Kerr JF Wyllie AH". - expect(composeAuthorByline('Kerr, JF, Wyllie, AH')).toBe('Kerr, JF, Wyllie, AH'); - }); - - it('trims a pre-composed string', () => { - expect(composeAuthorByline(' Kerr, JF ')).toBe('Kerr, JF'); - }); - - it('is empty when the attribute is absent or blank', () => { - expect(composeAuthorByline(undefined)).toBe(''); - expect(composeAuthorByline([])).toBe(''); - expect(composeAuthorByline(['', ' '])).toBe(''); - }); -}); diff --git a/projects/pathway-browser/src/app/details/common/publication/publication-byline.ts b/projects/pathway-browser/src/app/details/common/publication/publication-byline.ts deleted file mode 100644 index dda28103..00000000 --- a/projects/pathway-browser/src/app/details/common/publication/publication-byline.ts +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Assembling a byline out of a publication's raw `authorName` attribute. - * - * The shape differs by backend: the public content service sends one pre-composed string (or - * omits the attribute entirely), while the curation graph behind GraphContentService sends one - * entry per author, each spelled "Surname, Initials". Kept as plain functions so the two forms - * can be pinned down in tests without standing the component up. - */ - -/** The raw attribute as a list of non-empty, trimmed entries. */ -export function authorNameEntries(raw: string | string[] | undefined): string[] { - return (Array.isArray(raw) ? raw : [raw]) - .map((name) => name?.trim()) - .filter((name): name is string => !!name); -} - -/** - * The byline to render when a publication has no structured `author` list. - * - * A single string is already composed, so it passes through untouched -- commas and all. - * Only the per-author array form needs assembling: each entry's own "Surname, Initials" comma - * is dropped and authors are separated by one instead, which is how a byline built from - * structured authors reads (see PublicationComponent's toAuthorView). - */ -export function composeAuthorByline(raw: string | string[] | undefined): string { - if (!Array.isArray(raw)) return raw?.trim() ?? ''; - return authorNameEntries(raw) - .map((name) => - name - .split(',') - .map((part) => part.trim()) - .filter(Boolean) - .join(' ') - ) - .join(', '); -} diff --git a/projects/pathway-browser/src/app/details/common/publication/publication.component.html b/projects/pathway-browser/src/app/details/common/publication/publication.component.html index 17934f5c..c5684a1f 100644 --- a/projects/pathway-browser/src/app/details/common/publication/publication.component.html +++ b/projects/pathway-browser/src/app/details/common/publication/publication.component.html @@ -1,81 +1,67 @@
+
- +
- @if (hasByline()) { + @if (authors()[0]; as firstAuthor) {
- @if (firstAuthor(); as firstAuthor) { - - - {{ firstAuthor.name }} - - - @if (isExpanded) { - - @for (author of authors().slice(1); track author) { - - , - {{ author.surname }} {{ author.initial }} - - } - - } - - @for (author of additionalAuthors(); track $index) { - - - , {{ author.name }} - - - } - - - @if (orcidUrl(); as orcidUrl) { + + + {{ firstAuthor.name }} + + + @if (isExpanded) { + + @for (author of authors().slice(1); track $index) { - - - - - } - - @if (showEtAl()) { -  et al. - } - } @else { - - {{ authorName() }} - } - - @if (year(); as year) { -  {{ year }} - } - - @if (canToggle()) { - - + + ; {{ author.name }} + } -
-
- } -
-
-
- {{ journal() }} + + } + + @if (firstAuthor.orcidId) { + + + + + + } + + @if (authors().length > 1 && !isExpanded) { +  et al. + } + + @if (showYear()) { +  {{ ref().year }} + } + + @if (authors().length > 1) { + + + + }
- @if (citationUrl(); as citationUrl) { -
- - - -
- }
+} + +
+
+
+ {{ ref().journal }} +
+ @if (ref().url) { +
+ + + +
+ } +
diff --git a/projects/pathway-browser/src/app/details/common/publication/publication.component.scss b/projects/pathway-browser/src/app/details/common/publication/publication.component.scss index 5372131a..6d96daa5 100644 --- a/projects/pathway-browser/src/app/details/common/publication/publication.component.scss +++ b/projects/pathway-browser/src/app/details/common/publication/publication.component.scss @@ -1,3 +1,4 @@ + :host { width: 100%; } @@ -34,7 +35,7 @@ flex-direction: column; align-items: flex-end; padding: 0; - // gap: 4px; + // gap: 4px; min-width: fit-content; height: 20px; // Fake height smaller than reality to ignore this section height (better looking) } @@ -47,6 +48,7 @@ align-items: flex-start; padding: 0; + position: relative; min-height: fit-content; line-height: normal; @@ -67,7 +69,7 @@ } .ribbon:after { - content: ''; + content: ""; position: absolute; left: 0; bottom: 0; @@ -78,6 +80,7 @@ border-right: 4px solid transparent; } + .quote-container { display: flex; flex-direction: row; @@ -90,6 +93,7 @@ border-radius: 50px; background: var(--primary); + .quote-icon { color: var(--on-primary); display: flex; @@ -109,21 +113,23 @@ align-items: flex-start; padding: 0 0 0 1.5px; gap: 5px; + } .authors-container:before { - content: '•'; + content: "•"; vertical-align: middle; color: var(--primary); padding-top: 1.5px; } + .ref-icon { display: flex; justify-content: center; align-items: center; width: 12px; - height: 12px; + height: 12px } .additional-authors { @@ -147,4 +153,4 @@ & > :only-child { margin-left: 0; } -} +} \ No newline at end of file diff --git a/projects/pathway-browser/src/app/details/common/publication/publication.component.ts b/projects/pathway-browser/src/app/details/common/publication/publication.component.ts index 5f2d0b3a..2c5d4cdb 100644 --- a/projects/pathway-browser/src/app/details/common/publication/publication.component.ts +++ b/projects/pathway-browser/src/app/details/common/publication/publication.component.ts @@ -1,125 +1,50 @@ -import { Component, computed, input, signal } from '@angular/core'; -import { LiteratureReference } from '../../../model/graph/publication/literature-reference.model'; -import { Publication } from '../../../model/graph/publication/publication.model'; -import { Person } from '../../../model/graph/person.model'; -import { SafePipe } from '../../../pipes/safe.pipe'; -import { MatIcon } from '@angular/material/icon'; -import { CONTENT_DETAIL } from '../../../../environments/environment'; -import { authorNameEntries, composeAuthorByline } from './publication-byline'; +import {Component, computed, input} from '@angular/core'; +import {LiteratureReference} from "../../../model/graph/publication/literature-reference.model"; +import {Publication} from "../../../model/graph/publication/publication.model"; +import {SafePipe} from "../../../pipes/safe.pipe"; +import {MatIcon} from "@angular/material/icon"; -/** One rendered author: the pre-composed label plus what the template needs to link it. */ -export interface AuthorView { - name: string; - dbId?: number; - orcidId?: string; -} @Component({ selector: 'cr-publication', templateUrl: './publication.component.html', - imports: [SafePipe, MatIcon], - styleUrls: ['./publication.component.scss'], + imports: [ + SafePipe, + MatIcon +], + styleUrl: './publication.component.scss' }) -export class PublicationComponent { - // Absolute, host-aware detail URL, the same constant object-tree uses. - // The old commented-out markup referenced a bare `environment`, which this - // component never had -- the hrefs came out as "undefined/content/detail/...". - readonly contentDetail = CONTENT_DETAIL; - - readonly ref = input.required({ alias: 'publication' }); +export class PublicationComponent{ + readonly ref = input.required({ alias: "publication" }); readonly showYear = input(false); + isExpanded = false; - private readonly expanded = signal(false); - - /** - * The ref widened to the literature-reference attributes. Publications carry an index - * signature, so journal/url/year read through cleanly and come back undefined when absent. - */ - private readonly literature = computed>(() => this.ref()); - - /** Structured authors, when the ref has them. */ - private readonly structuredAuthors = computed(() => this.ref().author ?? []); - - /** - * Newer instances populate authorName and carry the citation text in `title`; older ones - * only have the pre-composed `displayName`. Read the raw attribute rather than authorName() - * below, which is blanked out when structured authors take precedence for the byline. - * - * Goes through authorNameEntries because the attribute is a list on the curation graph and - * a string on the public content service -- calling `.trim()` straight on it threw a - * TypeError that blanked out every reference in the details panel against the curator - * backend. - */ - private readonly isNewerInstance = computed( - () => authorNameEntries(this.ref().authorName).length > 0 - ); - - /** Heading text: `title` for newer instances, `displayName` for older ones. */ - readonly heading = computed(() => { - const ref = this.ref(); - return (this.isNewerInstance() ? ref.title?.trim() : '') || ref.displayName; - }); - - /** Free-text author byline, only used when no structured authors exist. */ - readonly authorName = computed(() => - this.authors().length ? '' : composeAuthorByline(this.ref().authorName) - ); - - /** Whether there is any byline to show at all, from either source. */ - readonly hasByline = computed(() => this.authors().length > 0 || !!this.authorName()); - - readonly firstAuthor = computed(() => - this.toAuthorView(this.authors()[0]) - ); - - /** The authors after the first, empty while collapsed. */ - readonly additionalAuthors = computed(() => - this.expanded() - ? this.authors() - .slice(1) - .map((author) => this.toAuthorView(author)!) - : [] - ); + private readonly people = computed(() => + this.asArray(this.ref().author).filter(person => !!person)); - readonly orcidUrl = computed(() => { - const orcidId = this.firstAuthor()?.orcidId; - return orcidId ? `https://orcid.org/${orcidId}` : ''; - }); - - /** Only the first author is named while collapsed, so the rest are stood in for by "et al." */ - readonly showEtAl = computed(() => this.authors().length > 1 && !this.expanded()); - - /** A single author has nothing to expand into. */ - readonly canToggle = computed(() => this.authors().length > 1); - - readonly toggleIcon = computed(() => (this.expanded() ? 'collapse' : 'expand')); - - /** Year to render, or undefined when hidden by the input or missing from the ref. */ - readonly year = computed(() => - this.showYear() ? this.literature().year : undefined - ); + private readonly authorNames = computed(() => + this.asArray(this.ref().authorName) + .map(name => name?.trim()) + .filter((name): name is string => !!name)); - readonly journal = computed(() => this.literature().journal ?? ''); + // True for the curation graph shape: no linked Person instances, but free-text + // authorName values to fall back on. + private readonly usesAuthorName = computed(() => + this.people().length === 0 && this.authorNames().length > 0); - readonly citationUrl = computed(() => this.literature().url ?? ''); - // Authors come from either the curated free-text authorName values or, when - // those are absent, the linked Person instances. Both attributes are + // Authors come from the linked Person instances when they exist, and fall back + // to the curated free-text authorName values otherwise. Both attributes are // multivalued, so every value is listed. ORCID ids only exist on Person, so // they are undefined for the authorName case. - readonly authors = computed<{ name: string, orcidId?: string }[]>(() => { - const ref = this.ref(); - const authorNames = this.asArray(ref.authorName) - .map(name => name?.trim()) - .filter((name): name is string => !!name); - - if (authorNames.length > 0) { - return authorNames.map(name => ({name})); - } + readonly authors = computed<{ name: string, orcidId?: string }[]>(() => + this.usesAuthorName() + ? this.authorNames().map(name => ({name})) + : this.people().map(person => ({name: person.displayName, orcidId: person.orcidId}))); - return this.asArray(ref.author) - .filter(person => !!person) - .map(person => ({name: person.displayName, orcidId: person.orcidId})); - }); + // displayName is the composed citation ("Kerr JF et al, 1972") in the public + // content service. The curation graph leaves it unset or unhelpful, so use the + // title attribute whenever the authorName fallback is in play. + readonly title = computed(() => this.usesAuthorName() ? this.ref().title : this.ref().displayName); private asArray(value: E[] | E | undefined | null): E[] { if (value === undefined || value === null) return []; @@ -128,15 +53,6 @@ export class PublicationComponent { toggleAuthors() { - this.expanded.update((expanded) => !expanded); - } - - private toAuthorView(author: Person | undefined): AuthorView | undefined { - if (!author) return undefined; - return { - name: [author.surname, author.initial].filter(Boolean).join(' '), - dbId: author.dbId, - orcidId: author.orcidId, - }; + this.isExpanded = !this.isExpanded; } -} +} \ No newline at end of file diff --git a/projects/pathway-browser/src/app/model/graph/publication/publication.model.ts b/projects/pathway-browser/src/app/model/graph/publication/publication.model.ts index 48db1074..ee6bba1e 100644 --- a/projects/pathway-browser/src/app/model/graph/publication/publication.model.ts +++ b/projects/pathway-browser/src/app/model/graph/publication/publication.model.ts @@ -5,9 +5,8 @@ export interface Publication extends DatabaseObject { author?: Person[]; /** * One pre-composed string from the public content service, but one entry per - * author (`["Kerr, JF", "Wyllie, AH"]`) from the curation graph. Normalise - * before use -- see authorNameEntries/composeAuthorByline in - * details/common/publication/publication-byline.ts. + * author (`["Kerr, JF", "Wyllie, AH"]`) from the curation graph. Only used + * when `author` is absent. */ authorName?: string | string[]; title: string; diff --git a/projects/pathway-browser/src/app/services/data-state.service.ts b/projects/pathway-browser/src/app/services/data-state.service.ts index 58e0b76b..dbd3daf0 100644 --- a/projects/pathway-browser/src/app/services/data-state.service.ts +++ b/projects/pathway-browser/src/app/services/data-state.service.ts @@ -55,7 +55,10 @@ export class DataStateService { public currentPathway = computed(() => { const currentPathway = this._currentPathway.value(); if (currentPathway) { - currentPathway.ancestors = this._ancestors.value() || []; + // Reading value() on a resource in the error state throws, which would + // propagate out of this computed and take down every view that depends on + // it. Ancestors are supplementary, so fall back to none. + currentPathway.ancestors = (this._ancestors.hasValue() && this._ancestors.value()) || []; } return currentPathway; }); @@ -65,6 +68,8 @@ export class DataStateService { stream: (params) => this.fetchAncestors(params.params.id, params.params.path), }); + public ancestorsLoading = this._ancestors.isLoading; + private _selectedElement = rxResource({ params: () => ({ id: this.state.select() || this.state.pathwayId(), @@ -223,7 +228,11 @@ export class DataStateService { }) .pipe( map((lineages) => this.findBestAncestors(lineages, path).reverse()), - map(this.flattenReferences) + map(this.flattenReferences), + // An event that hangs off no top-level pathway - a freshly cloned + // curation pathway, say - makes the backend answer 404 rather than an + // empty list. That is not an error for the caller: it has no ancestors. + catchError(() => of([] as Pathway[])) ); } diff --git a/projects/pathway-browser/src/app/services/event.service.ts b/projects/pathway-browser/src/app/services/event.service.ts index f5ace702..6f4eaba5 100644 --- a/projects/pathway-browser/src/app/services/event.service.ts +++ b/projects/pathway-browser/src/app/services/event.service.ts @@ -3,6 +3,7 @@ import { CONTENT_SERVICE, environment } from '../../environments/environment'; import { HttpClient } from '@angular/common/http'; import { BehaviorSubject, + catchError, concatMap, EMPTY, filter, @@ -99,13 +100,13 @@ export class EventService { fetchEventAncestors(stId: string): Observable { const url = `${this._ANCESTORS}${stId}/ancestors`; - return this.http - .get(url) - .pipe( - map((ancestorsOptions) => - ancestorsOptions.map((ancestorsOption) => ancestorsOption.reverse()) - ) - ); + return this.http.get(url).pipe( + map((ancestorsOptions) => ancestorsOptions.map((ancestorsOption) => ancestorsOption.reverse())), + // The backend 404s instead of returning an empty list for an event with + // no ancestors (see DataStateService.fetchAncestors). Treat it as such so + // callers still emit and can render the event on its own. + catchError(() => of([] as Pathway[][])) + ); } loadEventData(event: Event) { @@ -796,7 +797,9 @@ export class EventService { // Take the first ancestor if no path is given finalAncestor = ancestors[0]; } - return finalAncestor; + // An event with no ancestors at all yields no lineage; callers index and + // map over the result, so hand them an empty list rather than undefined. + return finalAncestor ?? []; } private findBestAncestors(lineages: Pathway[][], path: string[]): Pathway[] { if (!lineages) return []; diff --git a/projects/pathway-browser/src/app/viewport/viewport.component.html b/projects/pathway-browser/src/app/viewport/viewport.component.html index a369cc7c..45beeaee 100644 --- a/projects/pathway-browser/src/app/viewport/viewport.component.html +++ b/projects/pathway-browser/src/app/viewport/viewport.component.html @@ -236,8 +236,14 @@ } @else { @if (hasEHLD()) { - } @else { + } @else if (hasDiagram()) { + } @else { +
+ hide_image +

No diagram is available for this pathway.

+

Its details are shown below.

+
} } } @else { diff --git a/projects/pathway-browser/src/app/viewport/viewport.component.scss b/projects/pathway-browser/src/app/viewport/viewport.component.scss index ccae232b..a6fb7b42 100644 --- a/projects/pathway-browser/src/app/viewport/viewport.component.scss +++ b/projects/pathway-browser/src/app/viewport/viewport.component.scss @@ -172,6 +172,36 @@ } } +.no-diagram { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 0.25rem; + color: var(--on-surface-variant); + text-align: center; + + mat-icon { + --size: min(12cqw, 12cqh); + width: var(--size); + height: var(--size); + font-size: var(--size); + opacity: 0.4; + margin-bottom: 0.5rem; + } + + p { + margin: 0; + } + + .hint { + font-size: 0.85em; + opacity: 0.7; + } +} + #view { container: view / size; } diff --git a/projects/pathway-browser/src/app/viewport/viewport.component.ts b/projects/pathway-browser/src/app/viewport/viewport.component.ts index c03ca661..651fb617 100644 --- a/projects/pathway-browser/src/app/viewport/viewport.component.ts +++ b/projects/pathway-browser/src/app/viewport/viewport.component.ts @@ -107,8 +107,23 @@ export class ViewportComponent implements AfterViewInit { readonly pathwayId = this.state.pathwayId as WritableSignal; - loadingPathwayData = this.dataState._currentPathway.isLoading; + // Ancestors are part of deciding what to draw (see hasDiagram), so keep the + // spinner up until they have settled too - otherwise the "no diagram" notice + // flashes for pathways that do have one further up their lineage. + loadingPathwayData = computed( + () => this.dataState._currentPathway.isLoading() || this.dataState.ancestorsLoading() + ); hasEHLD = computed(() => this.dataState.currentPathway()?.hasEHLD === true); + // A pathway without a diagram of its own is still drawable when an ancestor + // has one - cr-diagram walks up and renders the parent, e.g. /R-HSA-69541. + // An event with neither, such as a newly cloned curation pathway that hangs + // off no top-level pathway, has nothing to draw and gets a notice instead. + hasDiagram = computed(() => { + const pathway = this.dataState.currentPathway(); + if (!pathway || !isPathway(pathway)) return false; + if (pathway.hasDiagram) return true; + return (pathway.ancestors || []).some((ancestor) => isPathway(ancestor) && ancestor.hasDiagram); + }); title = computed(() => this.dataState.currentPathway()?.displayName); diseasePathways = computed(() => { diff --git a/projects/pathway-browser/src/environments/environment.curator.ts b/projects/pathway-browser/src/environments/environment.curator.ts new file mode 100644 index 00000000..fa5ee0a0 --- /dev/null +++ b/projects/pathway-browser/src/environments/environment.curator.ts @@ -0,0 +1,65 @@ +import { getEnv, SELECTED_ENV_NAME } from '../../../website-angular/src/config/environments'; +import { SITE_VARIANT } from './variant'; + +export const IS_CURATOR = SITE_VARIANT === 'curator'; + +const selectedEnv = getEnv(SELECTED_ENV_NAME); + +// Normalize host to avoid accidental double slashes when building URLs. +const host = selectedEnv.host.replace(/\/+$/, ''); + +export const environment = { + production: false, + host, + s3: selectedEnv.s3, + gsaServer: selectedEnv.gsaServer, + gtagId: selectedEnv.gtagId, + preferS3: selectedEnv.preferS3, +}; + +// Icon image files (.svg/.png under /icon/) are static reference assets served +// by the Reactome backend, not by the Angular app. Unlike /ContentService they +// are NOT reverse-proxied on every front-end origin (e.g. beta.reactome.org +// returns 404), so build their URLs from the dev backend host. The assets send +// Access-Control-Allow-Origin: *, so cross-origin loads work from any +// front-end. +export const ICON_HOST = 'https://dev.reactome.org'; + +// The curator host serves icon assets itself (no cross-origin proxying +// limitation like beta/release/production have), so use it directly instead +// of falling back to ICON_HOST. +export const ICON_BASE = IS_CURATOR ? environment.host : ICON_HOST; + +// Base URL the app appends /data, /search, /exporter and /interactors to. Comes +// from the environment rather than being derived from `host` because a local +// curator-service serves those routes at its root, with no path segment. +export const CONTENT_SERVICE = selectedEnv.contentService.replace(/\/+$/, ''); +// CORS-enabled public endpoint used only as a fallback to resolve the current +// database version when the primary CONTENT_SERVICE version call fails. The +// version is needed to build CORS-enabled S3 diagram URLs. +export const VERSION_FALLBACK = `https://newcurator.reactome.org/ContentService/data/database/version`; +// CORS-enabled public content service. Used as a fallback for version-static +// metadata endpoints (e.g. the data-schema model) when the primary curator +// CONTENT_SERVICE is slow or unavailable, so those pages still render. +export const CONTENT_SERVICE_FALLBACK = `https://newcurator.reactome.org/ContentService`; +export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; +export const EXPERIMENT_SERVICE = `${environment.host}/experiment`; +export const RESTFUL_API = `${environment.host}/ReactomeRESTfulAPI/RESTfulWS`; +// Diagram/EHLD assets are static files served at the site root, not under the +// /curatorgraph app base. `host` is already a bare origin (no app path segment), +// so it needs no stripping. +export const DOWNLOAD = `${environment.host}/download/current`; +export const OVERLAYS = `${environment.host}/overlays`; +export const CONTENT_DETAIL = `${environment.host}/content/detail`; +// Path-only form for use with Angular RouterLink (which interprets absolute +// URLs as relative paths and concatenates them onto the current route). +export const CONTENT_DETAIL_PATH = '/content/detail'; +// Unlike environment.ts, which resolves this against the hosting page's +// (document.baseURI) and so keeps schema links on whatever origin +// serves the bundle, this variant pins them to the deployed curator site. That +// is the point of the `curator` configuration: run the bundle from `ng serve` +// while every endpoint, including the data-schema instance browser, is the +// deployed one. Consequence: following a person/schema link navigates off +// localhost to newcurator. +export const CONTENT_SCHEMA = `${environment.host}/curatorgraph/dataSchema`; +export const CONTENT_QUERY = `${environment.host}/content/query`; diff --git a/projects/pathway-browser/src/environments/environment.development.ts b/projects/pathway-browser/src/environments/environment.development.ts index b1aee329..7725431d 100644 --- a/projects/pathway-browser/src/environments/environment.development.ts +++ b/projects/pathway-browser/src/environments/environment.development.ts @@ -18,6 +18,10 @@ export const environment = { // front-end origin; use the dev backend host (see environment.ts). export const ICON_HOST = 'https://dev.reactome.org'; +// The curator host serves icon assets itself, so use it directly there rather +// than falling back to ICON_HOST (see environment.ts). +export const ICON_BASE = IS_CURATOR ? environment.host : ICON_HOST; + export const CONTENT_SERVICE = `${environment.host}/${IS_CURATOR ? 'GraphContentService' : 'ContentService'}`; export const VERSION_FALLBACK = `https://newcurator.reactome.org/ContentService/data/database/version`; export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; @@ -35,4 +39,3 @@ const schemaHost: string = : environment.host; export const CONTENT_SCHEMA = `${schemaHost}/dataSchema`; export const CONTENT_QUERY = `${environment.host}/content/query`; -export const CONTENT_SCHEMA = `${environment.host}/curatorgraph/dataSchema`; diff --git a/projects/pathway-browser/src/environments/environment.github.ts b/projects/pathway-browser/src/environments/environment.github.ts index b3ccd814..0ee51a5d 100644 --- a/projects/pathway-browser/src/environments/environment.github.ts +++ b/projects/pathway-browser/src/environments/environment.github.ts @@ -15,6 +15,10 @@ export const environment = { // front-end origin; use the dev backend host (see environment.ts). export const ICON_HOST = 'https://dev.reactome.org'; +// The curator host serves icon assets itself, so use it directly there rather +// than falling back to ICON_HOST (see environment.ts). +export const ICON_BASE = IS_CURATOR ? environment.host : ICON_HOST; + export const CONTENT_SERVICE = `${environment.host}/${IS_CURATOR ? 'GraphContentService' : 'ContentService'}`; export const VERSION_FALLBACK = `https://newcurator.reactome.org/ContentService/data/database/version`; export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; @@ -32,4 +36,3 @@ const schemaHost: string = : environment.host; export const CONTENT_SCHEMA = `${schemaHost}/dataSchema`; export const CONTENT_QUERY = `${environment.host}/content/query`; -export const CONTENT_SCHEMA = `${environment.host}/curatorgraph/dataSchema`; diff --git a/projects/pathway-browser/src/environments/environment.local.ts b/projects/pathway-browser/src/environments/environment.local.ts index cc1aff77..f295d8ee 100644 --- a/projects/pathway-browser/src/environments/environment.local.ts +++ b/projects/pathway-browser/src/environments/environment.local.ts @@ -1,18 +1,12 @@ import { ENVIRONMENTS } from '../../../website-angular/src/config/environments'; - -const env = ENVIRONMENTS.local; - import { SITE_VARIANT } from './variant'; export const IS_CURATOR = SITE_VARIANT === 'curator'; +const env = ENVIRONMENTS.local; + export const environment = { production: false, - host: env.host, - s3: env.s3, - gsaServer: env.gsaServer, - gtagId: "G-96F1EYHQR3", - preferS3: env.preferS3, host: IS_CURATOR ? 'https://newcurator.reactome.org' : 'https://dev.reactome.org', s3: 'https://download.reactome.org', gsaServer: 'dev', @@ -20,15 +14,18 @@ export const environment = { preferS3: false, }; -// Points at the locally run curator-service, which serves /data, /search, -// /exporter and /interactors at its root rather than under a path segment. // Icon image files live on the Reactome backend and aren't proxied on every // front-end origin; use the dev backend host (see environment.ts). export const ICON_HOST = 'https://dev.reactome.org'; +// The curator host serves icon assets itself, so use it directly there rather +// than falling back to ICON_HOST (see environment.ts). +export const ICON_BASE = IS_CURATOR ? environment.host : ICON_HOST; + // Curator local dev points at the remote curation backend directly (running // a full local curation graph DB isn't practical); main local dev points at -// a locally-run ContentService instance. +// a locally-run ContentService instance, which serves /data, /search, +// /exporter and /interactors at its root rather than under a path segment. export const CONTENT_SERVICE = IS_CURATOR ? env.contentService.replace(/\/+$/, '') : `http://127.0.0.1:8686`; @@ -48,4 +45,3 @@ const schemaHost: string = : environment.host; export const CONTENT_SCHEMA = `${schemaHost}/dataSchema`; export const CONTENT_QUERY = `${environment.host}/content/query`; -export const CONTENT_SCHEMA = `${environment.host}/curatorgraph/dataSchema`; diff --git a/projects/pathway-browser/src/environments/environment.production.ts b/projects/pathway-browser/src/environments/environment.production.ts index ab3973a2..9e917d72 100644 --- a/projects/pathway-browser/src/environments/environment.production.ts +++ b/projects/pathway-browser/src/environments/environment.production.ts @@ -18,6 +18,10 @@ export const environment = { // front-end origin; use the dev backend host (see environment.ts). export const ICON_HOST = 'https://dev.reactome.org'; +// The curator host serves icon assets itself, so use it directly there rather +// than falling back to ICON_HOST (see environment.ts). +export const ICON_BASE = IS_CURATOR ? environment.host : ICON_HOST; + export const CONTENT_SERVICE = `${environment.host}/${IS_CURATOR ? 'GraphContentService' : 'ContentService'}`; export const VERSION_FALLBACK = `https://newcurator.reactome.org/ContentService/data/database/version`; export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; @@ -33,6 +37,5 @@ const schemaHost: string = typeof document !== 'undefined' ? document.baseURI.replace(/\/+$/, '') : environment.host; -// export const CONTENT_SCHEMA = `${schemaHost}/dataSchema`; +export const CONTENT_SCHEMA = `${schemaHost}/dataSchema`; export const CONTENT_QUERY = `${environment.host}/content/query`; -export const CONTENT_SCHEMA = `${environment.host}/curatorgraph/dataSchema`; diff --git a/projects/pathway-browser/src/environments/environment.release.ts b/projects/pathway-browser/src/environments/environment.release.ts index 4e2201c3..55de3189 100644 --- a/projects/pathway-browser/src/environments/environment.release.ts +++ b/projects/pathway-browser/src/environments/environment.release.ts @@ -15,6 +15,10 @@ export const environment = { // front-end origin; use the dev backend host (see environment.ts). export const ICON_HOST = 'https://dev.reactome.org'; +// The curator host serves icon assets itself, so use it directly there rather +// than falling back to ICON_HOST (see environment.ts). +export const ICON_BASE = IS_CURATOR ? environment.host : ICON_HOST; + export const CONTENT_SERVICE = `${environment.host}/${IS_CURATOR ? 'GraphContentService' : 'ContentService'}`; export const VERSION_FALLBACK = `https://newcurator.reactome.org/ContentService/data/database/version`; export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; @@ -30,6 +34,5 @@ const schemaHost: string = typeof document !== 'undefined' ? document.baseURI.replace(/\/+$/, '') : environment.host; -// export const CONTENT_SCHEMA = `${schemaHost}/dataSchema`; +export const CONTENT_SCHEMA = `${schemaHost}/dataSchema`; export const CONTENT_QUERY = `${environment.host}/content/query`; -export const CONTENT_SCHEMA = `${environment.host}/curatorgraph/dataSchema`; diff --git a/projects/pathway-browser/src/environments/environment.ts b/projects/pathway-browser/src/environments/environment.ts index 446f35d3..f9298863 100644 --- a/projects/pathway-browser/src/environments/environment.ts +++ b/projects/pathway-browser/src/environments/environment.ts @@ -1,49 +1,28 @@ import { getEnv, SELECTED_ENV_NAME } from '../../../website-angular/src/config/environments'; +import { SITE_VARIANT } from './variant'; + +export const IS_CURATOR = SITE_VARIANT === 'curator'; const selectedEnv = getEnv(SELECTED_ENV_NAME); // Normalize host to avoid accidental double slashes when building URLs. const host = selectedEnv.host.replace(/\/+$/, ''); -import { SITE_VARIANT } from './variant'; - -export const IS_CURATOR = SITE_VARIANT === 'curator'; - -// Resolve the host from the browser's current origin so URLs built from -// environment.host stay on whatever site the user is on -- beta.reactome.org, -// release.reactome.org, reactome.org, localhost during dev. The fallback -// applies when this module is imported in a non-browser context (e.g. unit -// tests, build-time tooling) where window doesn't exist. -// -// The curator variant is the exception: it's a separate deployment -// (newcurator.reactome.org) with its own backend, so it always points there -// regardless of what domain the frontend bundle is actually being served -// from -- e.g. when previewing the curator build under a path on a different -// host for testing purposes. -const host: string = IS_CURATOR - ? 'https://newcurator.reactome.org' - : typeof window !== 'undefined' - ? window.location.origin - : 'https://dev.reactome.org'; export const environment = { production: false, host, - s3: 'https://download.reactome.org', - gsaServer: 'dev', - gtagId: 'G-96F1EYHQR3', - // The curator database isn't released/versioned the way the public site's - // is -- data/database/version has nothing meaningful to return there (see - // general.service.ts) -- so don't route diagram downloads through the - // version-keyed S3 path for curator. - preferS3: !IS_CURATOR, -}; + s3: selectedEnv.s3, + gsaServer: selectedEnv.gsaServer, + gtagId: selectedEnv.gtagId, + preferS3: selectedEnv.preferS3, +} // Icon image files (.svg/.png under /icon/) are static reference assets served // by the Reactome backend, not by the Angular app. Unlike /ContentService they // are NOT reverse-proxied on every front-end origin (e.g. beta.reactome.org -// returns 404), so build their URLs from the dev backend host rather than -// window.location.origin. The assets send Access-Control-Allow-Origin: *, so -// cross-origin loads work from any front-end. +// returns 404), so build their URLs from the dev backend host. The assets send +// Access-Control-Allow-Origin: *, so cross-origin loads work from any +// front-end. export const ICON_HOST = 'https://dev.reactome.org'; // The curator host serves icon assets itself (no cross-origin proxying @@ -51,32 +30,24 @@ export const ICON_HOST = 'https://dev.reactome.org'; // of falling back to ICON_HOST. export const ICON_BASE = IS_CURATOR ? environment.host : ICON_HOST; -// The curator variant points at a separate graph database (curation data, -// not the released production graph), served under a different context path -// on the same backend. -export const CONTENT_SERVICE = `${environment.host}/${IS_CURATOR ? 'GraphContentService' : 'ContentService'}`; - s3: selectedEnv.s3, - gsaServer: selectedEnv.gsaServer, - gtagId: selectedEnv.gtagId, - preferS3: selectedEnv.preferS3, -} - // Base URL the app appends /data, /search, /exporter and /interactors to. Comes // from the environment rather than being derived from `host` because a local // curator-service serves those routes at its root, with no path segment. export const CONTENT_SERVICE = selectedEnv.contentService.replace(/\/+$/, ''); // CORS-enabled public endpoint used only as a fallback to resolve the current // database version when the primary CONTENT_SERVICE version call fails. The -// version is needed to build CORS-enabled S3 diagram URLs. Only relevant to -// the curator variant, where the primary CONTENT_SERVICE is the curation -// backend rather than the always-on public one. +// version is needed to build CORS-enabled S3 diagram URLs. export const VERSION_FALLBACK = `https://newcurator.reactome.org/ContentService/data/database/version`; // CORS-enabled public content service. Used as a fallback for version-static // metadata endpoints (e.g. the data-schema model) when the primary curator // CONTENT_SERVICE is slow or unavailable, so those pages still render. +export const CONTENT_SERVICE_FALLBACK = `https://newcurator.reactome.org/ContentService`; export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; export const EXPERIMENT_SERVICE = `${environment.host}/experiment`; export const RESTFUL_API = `${environment.host}/ReactomeRESTfulAPI/RESTfulWS`; +// Diagram/EHLD assets are static files served at the site root, not under the +// /curatorgraph app base. `host` is already a bare origin (no app path segment), +// so it needs no stripping. export const DOWNLOAD = `${environment.host}/download/current`; export const OVERLAYS = `${environment.host}/overlays`; export const CONTENT_DETAIL = `${environment.host}/content/detail`; @@ -97,6 +68,3 @@ const schemaHost: string = // the embeddable pathway-browser element is hosted. export const CONTENT_SCHEMA = `${schemaHost}/dataSchema`; export const CONTENT_QUERY = `${environment.host}/content/query`; -// Curator-only: base for the curation data-schema instance browser, used to -// build author/person links from the schema pages. Not used by the main site. -export const CONTENT_SCHEMA = `${environment.host}/curatorgraph/dataSchema`; diff --git a/projects/website-angular/src/app/home-page/curator-home-shortcuts/curator-home-shortcuts.component.ts b/projects/website-angular/src/app/home-page/curator-home-shortcuts/curator-home-shortcuts.component.ts index 46e92435..402e65dc 100644 --- a/projects/website-angular/src/app/home-page/curator-home-shortcuts/curator-home-shortcuts.component.ts +++ b/projects/website-angular/src/app/home-page/curator-home-shortcuts/curator-home-shortcuts.component.ts @@ -16,7 +16,11 @@ export class CuratorHomeShortcutsComponent { /** Shared, loaded once by NavOptionsService (a signal, so it renders when it arrives). */ readonly navOptions = inject(NavOptionsService).navOptions; @Input() dark: boolean = true; - readonly webbenchLink = `${typeof window !== 'undefined' ? window.location.origin : environment.host}/curatortool/home`; + // WebBench is a separate app deployed alongside the curator site, so it has + // no local equivalent: keying this off window.location.origin pointed it at + // the dev server (http://localhost:4200/curatortool/home, a 404). Build it + // from environment.host so it always resolves to the deployed WebBench. + readonly webbenchLink = `${environment.host}/curatortool/home`; // The curator build's baseHref is "/curatorgraph/", not "/". A plain // absolute href like "/about" would ignore that base and 404; strip the From f4d792255ba8a594271954aa3b6a74e2a58d1cb2 Mon Sep 17 00:00:00 2001 From: Adam Wright Date: Wed, 19 Aug 2026 19:18:09 +0000 Subject: [PATCH 006/136] feat(render): produce GIF and PowerPoint from the site's own renderer The two formats the Java exporter still owned, and the two that most obviously looked like the old site. Both now come from the render page, so a downloaded figure is the diagram the site draws. GIF is the expression animation: one frame per sample, 1s each, looping, and a single frame when there is no analysis. Encoding happens inside the browser -- a frame is tens of megabytes of pixel data and there is one per sample, so shipping them out to be assembled costs more than the finished file. The palette is built from every frame rather than the first, because one frame's palette shifts colours on samples whose values land elsewhere on the scale; that is why frames are drawn twice and never accumulated. Verified per frame rather than by file size: PMAIP1 goes dark purple at 0.2 to bright green at 5.2 across the four samples of a posted dataset. Capped at 2000px on the longest side. A diagram's coordinate space is around 6000px wide and a GIF pays for that once per frame -- uncapped, four samples came to 3.1MB. Now 735KB. PPTX carries the SVG with a PNG fallback. PowerPoint draws the SVG and its Convert to Shape turns the diagram into editable shapes. The alternative is emitting DrawingML per glyph, as the Java exporter does via Aspose: editable on open, at the cost of a second renderer to keep in step with the first and a commercial licence. One click is worth that trade. Two bugs found in the illustration code this reuses: - EHLD raster download scaled twice, once on the context and again through scaled destination dimensions, so a downloaded PNG or JPEG showed the top-left ninth of the illustration blown up to fill the file. - showAnalysisInfo assumed the analysis-info group contains a text element. Every other lookup there is guarded; this one threw part-way through and left the region half-decorated. Rasterising an illustration now lives in EhldService, shared by the download and the render page, since both need the styles inlined first: an EHLD's styling comes from the page's stylesheets and does not travel with the markup. Co-Authored-By: Claude Opus 5 --- package-lock.json | 407 +++++++++++------- package.json | 2 + .../src/app/diagram/diagram.component.ts | 42 +- .../src/app/ehld/ehld.component.ts | 6 +- .../src/app/render/render.component.ts | 92 +++- .../src/app/services/ehld.service.ts | 98 +++-- tools/render/README.md | 76 +++- tools/render/gif.mjs | 182 ++++++++ tools/render/pptx.mjs | 275 ++++++++++++ tools/render/render-core.mjs | 67 ++- tools/render/render.mjs | 17 +- tools/render/service.mjs | 17 +- 12 files changed, 1019 insertions(+), 262 deletions(-) create mode 100644 tools/render/gif.mjs create mode 100644 tools/render/pptx.mjs diff --git a/package-lock.json b/package-lock.json index 43f46e04..e0739cb2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,6 +40,8 @@ "cytoscape-fcose": "^2.2.0", "cytoscape-layers": "^3.0.0", "express": "4.18.2", + "fflate": "0.8.2", + "gifenc": "1.0.3", "immer": "^10.2.0", "marked": "^17.0.1", "minisearch": "^7.2.0", @@ -1352,6 +1354,22 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@angular-devkit/build-angular/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@angular-devkit/build-angular/node_modules/cli-spinners": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.4.0.tgz", @@ -1617,6 +1635,20 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/@angular-devkit/build-angular/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@angular-devkit/build-angular/node_modules/sass": { "version": "1.97.3", "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz", @@ -2336,7 +2368,6 @@ "version": "21.2.20", "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-21.2.20.tgz", "integrity": "sha512-CBG1/wvH8XtbxYiqz0CR62fEHPFn3w0Q6+iey5U1+b+tmeTVVRjHlkvntOz5Gqv+5xC/r/hJf5d5DWCOp4mIwg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/core": "7.29.7", @@ -2365,36 +2396,6 @@ } } }, - "node_modules/@angular/compiler-cli/node_modules/chokidar": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", - "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^5.0.0" - }, - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@angular/compiler-cli/node_modules/readdirp": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", - "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@angular/core": { "version": "21.2.20", "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.2.20.tgz", @@ -4473,6 +4474,44 @@ "integrity": "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==", "license": "Apache-2.0" }, + "node_modules/@codemirror/language": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.0.0.tgz", + "integrity": "sha512-rtjk5ifyMzOna1c7PBu7J1VCt0PvA5wy3o8eMVnxMKb7z8KA7JFecvD04dSn14vj/bBaAbqRsGed5OjtofEnLA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/state": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.7.1.tgz", + "integrity": "sha512-9QzNDgE4EYDnAHfrTlR2lwiPciiOymLtwKK+8yHQzCc7GXhAP9xdEbEJFy2IWB1j9UGUl9BsgMmTo/ImA02T7A==", + "license": "MIT", + "peer": true, + "dependencies": { + "@marijn/find-cluster-break": "^1.0.0" + } + }, + "node_modules/@codemirror/view": { + "version": "6.43.9", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.43.9.tgz", + "integrity": "sha512-sTuUzTpPMFebRhg6dawChoKKgndIwfjmJgKVxBefPElcU2NwQ6AFroupk0SFqEerQyZOGRfDNnSN8Dw/lMAsXw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@codemirror/state": "^6.7.0", + "crelt": "^1.0.6", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, "node_modules/@csstools/color-helpers": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.0.2.tgz", @@ -4740,7 +4779,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4757,7 +4795,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4774,7 +4811,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4791,7 +4827,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4808,7 +4843,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4825,7 +4859,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4842,7 +4875,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4859,7 +4891,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4876,7 +4907,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4893,7 +4923,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4910,7 +4939,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4927,7 +4955,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4944,7 +4971,6 @@ "cpu": [ "mips64el" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4961,7 +4987,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4978,7 +5003,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -4995,7 +5019,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -5012,7 +5035,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -5029,7 +5051,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -5046,7 +5067,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -5063,7 +5083,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -5080,7 +5099,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -5114,7 +5132,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -5131,7 +5148,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -5148,7 +5164,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -5165,7 +5180,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -6790,7 +6804,7 @@ "version": "0.3.11", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -7281,12 +7295,46 @@ "dev": true, "license": "MIT" }, + "node_modules/@lezer/common": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.5.2.tgz", + "integrity": "sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ==", + "license": "MIT", + "peer": true + }, + "node_modules/@lezer/highlight": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.3.tgz", + "integrity": "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==", + "license": "MIT", + "peer": true, + "dependencies": { + "@lezer/common": "^1.3.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.10.tgz", + "integrity": "sha512-rnCpTIBafOx4mRp43xOxDJbFipJm/c0cia/V5TiGlhmMa+wsSdoGmUN3w5Bqrks/09Q/D4tNAmWaT8p6NRi77A==", + "license": "MIT", + "peer": true, + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, "node_modules/@lottiefiles/dotlottie-web": { "version": "0.49.0", "resolved": "https://registry.npmjs.org/@lottiefiles/dotlottie-web/-/dotlottie-web-0.49.0.tgz", "integrity": "sha512-SQ8sDrUrGMM24QWjs0n863SKobMSB9Plz8gbte9RYnLc4TfmQoWxjFgGBTlbGnh/aTQvtpxOxX2ueBohCsCaRQ==", "license": "MIT" }, + "node_modules/@marijn/find-cluster-break": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.3.tgz", + "integrity": "sha512-FY+MKLBoTsLNJF/eLWaOsXGdz6uh3Iu1axjPf6TUq92IYumcTcXWHoS747JARLkcdlJ/Waiaxc5wQfFO8jC6NA==", + "license": "MIT", + "peer": true + }, "node_modules/@mermaid-js/parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-1.2.0.tgz", @@ -9509,7 +9557,6 @@ "version": "2.5.6", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", - "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -9549,7 +9596,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9570,7 +9616,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9591,7 +9636,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9612,7 +9656,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9633,7 +9676,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9654,7 +9696,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9675,7 +9716,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9696,7 +9736,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9717,7 +9756,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9738,7 +9776,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9759,7 +9796,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9780,7 +9816,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9801,7 +9836,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9819,7 +9853,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, "license": "MIT", "optional": true }, @@ -9827,7 +9860,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, "license": "MIT", "optional": true, "engines": { @@ -11594,7 +11626,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11608,7 +11639,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11622,7 +11652,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11636,7 +11665,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11650,7 +11678,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11664,7 +11691,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11678,7 +11704,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11692,7 +11717,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11706,7 +11730,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11720,7 +11743,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11734,7 +11756,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11748,7 +11769,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11762,7 +11782,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11776,7 +11795,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11790,7 +11808,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11804,7 +11821,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11818,7 +11834,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11832,7 +11847,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11846,7 +11860,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11860,7 +11873,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11874,7 +11886,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11888,7 +11899,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11902,7 +11912,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11916,7 +11925,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -11930,7 +11938,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -12615,6 +12622,20 @@ "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x" } }, + "node_modules/@tinacms/app/node_modules/@tinacms/mdx/node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/@tinacms/app/node_modules/@tinacms/schema-tools": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/@tinacms/schema-tools/-/schema-tools-2.6.0.tgz", @@ -13495,6 +13516,20 @@ "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x" } }, + "node_modules/@tinacms/cli/node_modules/@tinacms/mdx/node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/@tinacms/cli/node_modules/@tinacms/schema-tools": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/@tinacms/schema-tools/-/schema-tools-2.6.0.tgz", @@ -14587,6 +14622,20 @@ "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x" } }, + "node_modules/@tinacms/mdx/node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/@tinacms/metrics": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@tinacms/metrics/-/metrics-2.0.1.tgz", @@ -17944,7 +17993,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/bundle-name": { @@ -18370,16 +18419,15 @@ } }, "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", "license": "MIT", "dependencies": { - "readdirp": "^4.0.1" + "readdirp": "^5.0.0" }, "engines": { - "node": ">= 14.16.0" + "node": ">= 20.19.0" }, "funding": { "url": "https://paulmillr.com/funding/" @@ -18703,7 +18751,7 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/common-path-prefix": { @@ -18863,7 +18911,6 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true, "license": "MIT" }, "node_modules/cookie": { @@ -18885,7 +18932,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "is-what": "^3.14.1" @@ -19027,6 +19074,13 @@ "node": ">=0.8" } }, + "node_modules/crelt": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.7.tgz", + "integrity": "sha512-aK6BbWfhf4U/wCcLHKPJl/xa6VkVstRaPywWtMKGwuOLc/wZTyQYuoxgvZnNsBvv7Kg3YTBQYYBCggcviQczuA==", + "license": "MIT", + "peer": true + }, "node_modules/cross-fetch": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", @@ -20421,7 +20475,6 @@ "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -20603,7 +20656,6 @@ "version": "0.25.4", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", - "dev": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -21542,9 +21594,9 @@ } }, "node_modules/fflate": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", - "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", "license": "MIT" }, "node_modules/file-entry-cache": { @@ -22305,6 +22357,12 @@ "node": ">= 4.0.0" } }, + "node_modules/gifenc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/gifenc/-/gifenc-1.0.3.tgz", + "integrity": "sha512-xdr6AdrfGBcfzncONUOlXMBuc5wJDtOueE3c5rdG0oNgtINLD+f2iFZltrBRZYzACRbKr+mSVU/x98zv2u3jmw==", + "license": "MIT" + }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -23149,7 +23207,6 @@ "version": "0.5.5", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true, "license": "MIT", "optional": true, "bin": { @@ -23173,7 +23230,7 @@ "version": "5.1.4", "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.4.tgz", "integrity": "sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/import-fresh": { @@ -23998,7 +24055,7 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/is-windows": { @@ -24713,7 +24770,7 @@ "version": "4.4.2", "resolved": "https://registry.npmjs.org/less/-/less-4.4.2.tgz", "integrity": "sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==", - "dev": true, + "devOptional": true, "license": "Apache-2.0", "dependencies": { "copy-anything": "^2.0.1", @@ -24767,7 +24824,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -24782,7 +24838,6 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, "license": "ISC", "optional": true, "bin": { @@ -24793,7 +24848,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, "license": "BSD-3-Clause", "optional": true, "engines": { @@ -25087,6 +25141,13 @@ "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==", "license": "MIT" }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "license": "MIT", + "peer": true + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -27297,7 +27358,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -27315,7 +27375,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -27847,22 +27906,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ng-packagr/node_modules/chokidar": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", - "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^5.0.0" - }, - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/ng-packagr/node_modules/cli-spinners": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-3.4.0.tgz", @@ -27994,20 +28037,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ng-packagr/node_modules/readdirp": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", - "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/ng-packagr/node_modules/string-width": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.2.tgz", @@ -29206,7 +29235,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.10" @@ -29982,6 +30011,12 @@ "@types/trusted-types": "^2.0.7" } }, + "node_modules/posthog-js/node_modules/fflate": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.9.tgz", + "integrity": "sha512-zdxgIEddhfsyCaWpJ2SdXEP8ZMrKJ6+5jl4OupODcywU0IhRk6gdXuVGcPICyfx2H97hVK7xmJtRLPjkxAX8Vw==", + "license": "MIT" + }, "node_modules/powershell-utils": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz", @@ -30243,7 +30278,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, "license": "MIT", "optional": true }, @@ -30808,13 +30842,12 @@ } }, "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.1.1.tgz", + "integrity": "sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==", "license": "MIT", "engines": { - "node": ">= 14.18.0" + "node": ">= 20.19.0" }, "funding": { "type": "individual", @@ -30834,7 +30867,6 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "dev": true, "license": "Apache-2.0" }, "node_modules/reflect.getprototypeof": { @@ -31290,7 +31322,6 @@ "version": "4.59.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", - "dev": true, "license": "MIT", "dependencies": { "@types/estree": "1.0.8" @@ -31608,7 +31639,7 @@ "version": "1.90.0", "resolved": "https://registry.npmjs.org/sass/-/sass-1.90.0.tgz", "integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "chokidar": "^4.0.0", @@ -31666,11 +31697,40 @@ } } }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/sax": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", - "dev": true, "license": "BlueOak-1.0.0", "optional": true, "engines": { @@ -32589,7 +32649,7 @@ "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -32600,7 +32660,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "devOptional": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -33045,6 +33105,13 @@ "node": ">=0.10.0" } }, + "node_modules/style-mod": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.3.tgz", + "integrity": "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==", + "license": "MIT", + "peer": true + }, "node_modules/style-value-types": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.0.0.tgz", @@ -33367,7 +33434,7 @@ "version": "5.46.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz", "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==", - "dev": true, + "devOptional": true, "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -34882,7 +34949,6 @@ "version": "6.4.2", "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.2.tgz", "integrity": "sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==", - "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.25.0", @@ -35093,6 +35159,13 @@ "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", "license": "MIT" }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT", + "peer": true + }, "node_modules/w3c-xmlserializer": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", diff --git a/package.json b/package.json index db8d1b04..2d1e3165 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,8 @@ "cytoscape-fcose": "^2.2.0", "cytoscape-layers": "^3.0.0", "express": "4.18.2", + "fflate": "0.8.2", + "gifenc": "1.0.3", "immer": "^10.2.0", "marked": "^17.0.1", "minisearch": "^7.2.0", diff --git a/projects/pathway-browser/src/app/diagram/diagram.component.ts b/projects/pathway-browser/src/app/diagram/diagram.component.ts index 7cdb32f8..4bddf5bf 100644 --- a/projects/pathway-browser/src/app/diagram/diagram.component.ts +++ b/projects/pathway-browser/src/app/diagram/diagram.component.ts @@ -260,6 +260,34 @@ export class DiagramComponent implements AfterViewInit, OnDestroy { a.remove(); } + /** + * The whole diagram on a canvas, including anything drawn by a custom layer. + * + * cytoscape has two ways to produce this and only one of them sees + * everything. The renderer's own bufferCanvasImage draws the graph; + * cytoscape-layers composes the graph together with the layers on top of it + * -- which is where the analysis overlay and the interactor decorations live. + * Ask the layers when there are any, and the renderer when there are not. + * + * Public because the headless render page builds animation frames from it. + * Going through here rather than cy.png() means a frame contains what the + * screen contains. + */ + exportCanvas(cy: cytoscape.Core, options: cytoscape.ExportJpgBlobPromiseOptions) { + const layers = cy.scratch('_layers') as + { hasCustomLayer?: () => boolean; toCanvas?: (o: unknown) => HTMLCanvasElement } | undefined; + + return layers?.toCanvas && layers.hasCustomLayer?.() + ? layers.toCanvas({ ...options, bg: options.bg ?? '#fff' }) + : ( + cy as unknown as { + renderer: () => { bufferCanvasImage: (o: unknown) => HTMLCanvasElement }; + } + ) + .renderer() + .bufferCanvasImage(options); + } + /** * The diagram as JPEG. * @@ -279,19 +307,7 @@ export class DiagramComponent implements AfterViewInit, OnDestroy { cy: cytoscape.Core, options: cytoscape.ExportJpgBlobPromiseOptions ): Promise { - const layers = cy.scratch('_layers') as - { hasCustomLayer?: () => boolean; toCanvas?: (o: unknown) => HTMLCanvasElement } | undefined; - - const canvas = - layers?.toCanvas && layers.hasCustomLayer?.() - ? layers.toCanvas({ ...options, bg: options.bg ?? '#fff' }) - : ( - cy as unknown as { - renderer: () => { bufferCanvasImage: (o: unknown) => HTMLCanvasElement }; - } - ) - .renderer() - .bufferCanvasImage(options); + const canvas = this.exportCanvas(cy, options); return await new Promise((resolve, reject) => { canvas.toBlob( diff --git a/projects/pathway-browser/src/app/ehld/ehld.component.ts b/projects/pathway-browser/src/app/ehld/ehld.component.ts index 81c438f4..b43c99d0 100644 --- a/projects/pathway-browser/src/app/ehld/ehld.component.ts +++ b/projects/pathway-browser/src/app/ehld/ehld.component.ts @@ -121,8 +121,10 @@ export class EhldComponent implements AfterViewInit, OnDestroy { const pathwayId = this.pathwayId(); if (request && this.download.isRasterFormat(request.format)) { - this.ehldService.downloadImage(request.format); - this.download.resetDownload(); + void this.ehldService + .downloadImage(request.format) + .then(() => this.download.resetDownload()) + .catch((error) => console.error('EHLD image export failed', error)); } else if (request?.format === DownloadFormat.SVG) { void this.svgExporter .exportEHLD(this, options) diff --git a/projects/pathway-browser/src/app/render/render.component.ts b/projects/pathway-browser/src/app/render/render.component.ts index 86ff821d..033f4fb9 100644 --- a/projects/pathway-browser/src/app/render/render.component.ts +++ b/projects/pathway-browser/src/app/render/render.component.ts @@ -16,6 +16,8 @@ import { DataStateService } from '../services/data-state.service'; import { EventService } from '../services/event.service'; import { ActivatedRoute } from '@angular/router'; import { SvgExporterService } from '../reacfoam/svg-exporter.service'; +import { AnalysisService } from '../services/analysis.service'; +import { EhldService } from '../services/ehld.service'; import { defaultDownloadOptions } from '../services/download.service'; /** @@ -50,6 +52,8 @@ export class RenderComponent { private dataState = inject(DataStateService); private eventService = inject(EventService); private reacfoamExporter = inject(SvgExporterService); + private analysis = inject(AnalysisService); + private ehldService = inject(EhldService); private route = inject(ActivatedRoute); /** @@ -145,7 +149,13 @@ export class RenderComponent { await document.fonts.ready; // Two frames: one to apply the last change, one to paint it. await new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); - this.stateForCaller.set({ pathway: pathway ?? null, ...drawn }); + this.stateForCaller.set({ + pathway: pathway ?? null, + // For a caller that puts the figure in a document and needs to label + // it. An stId is not a caption. + name: this.dataState.currentPathway()?.displayName ?? null, + ...drawn, + }); this.publish(); this.ready.set(true); return; @@ -226,21 +236,77 @@ export class RenderComponent { svg: () => this.exportSvg(), // Reacfoam's exporter is async, so callers await whatever they get back. png: (scale = 1) => this.exportPng(scale), + // Animation primitives rather than an animation. What an animated format + // needs is a way to choose a sample and a way to grab what is on screen; + // deciding frame order, palette and timing is the caller's business, and + // it differs per format. + samples: () => this.analysis.samples(), + showSample: (name: string) => this.showSample(name), + frameCanvas: (scale = 1) => this.frameCanvas(scale), }; } + /** The diagram's cytoscape instances, with the sub-pathway preference applied. */ + private exportableInstances() { + const diagram = this.diagram(); + const instances = diagram?.cys?.filter(Boolean) ?? []; + // Applied here rather than while waiting: drawing continues after the + // diagram first has elements, and anything hidden earlier comes back. The + // page is disposable, so nothing needs restoring. + if (diagram && !this.wantsSubpathways) { + instances.forEach((cy) => diagram.setSubPathwayVisibility(false, cy)); + } + return { diagram, instances }; + } + + /** + * Colour the diagram by one sample of an expression analysis, and wait until + * that is on screen. + * + * Setting the signal is not enough to capture from: the recolour happens in an + * effect and the paint happens after it, so a frame grabbed immediately is the + * previous sample's. Two frames -- one to apply, one to paint -- is the same + * wait the readiness check uses. + */ + private async showSample(name: string) { + this.state.sample.set(name); + await new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve))); + } + + /** + * What is on screen, on a canvas, for a caller that needs pixels rather than a + * file. Frames stay inside the browser: an animation is tens of megabytes of + * pixel data, and sending each frame out to be assembled costs more than + * assembling it here. + */ + private async frameCanvas(scale: number): Promise { + const { diagram, instances } = this.exportableInstances(); + if (diagram && instances.length) { + // White, not transparent. Every animated format in play here either has no + // alpha channel or only a single transparent index, so a transparent + // background composites to black rather than to nothing. + return diagram.exportCanvas(instances[0], { full: true, scale, bg: '#ffffff' }); + } + + // An illustration is inline SVG rather than a canvas, so a frame has to be + // rasterised. That belongs to the illustration's own service, which knows + // that its styling comes from the page's stylesheets and has to be inlined + // before the markup means anything on its own. + const svg = document.querySelector('cr-render cr-ehld svg'); + if (svg) return await this.ehldService.rasterise(svg, scale, '#ffffff'); + + throw new Error( + this.reacfoam() + ? 'the genome-wide view has no frame capture; render it as svg or png' + : 'this view has no frames to capture' + ); + } + /** The drawn view as SVG. Reacfoam's path is asynchronous. */ private exportSvg(): string | Promise { - const diagram = this.diagram(); - if (diagram) { - const instances = diagram.cys?.filter(Boolean) ?? []; + if (this.diagram()) { + const { instances } = this.exportableInstances(); if (!instances.length) throw new Error('no diagram to export'); - // Applied here rather than while waiting: drawing continues after the - // diagram first has elements, and anything hidden earlier comes back. - // The page is disposable, so nothing needs restoring. - if (!this.wantsSubpathways) { - instances.forEach((cy) => diagram.setSubPathwayVisibility(false, cy)); - } // One instance here by construction: this page never opens the // comparison view. return instances[0].svg({ full: true }); @@ -275,12 +341,8 @@ export class RenderComponent { /** The drawn view as a PNG data URL. */ private exportPng(scale: number): string { - const diagram = this.diagram(); - const instances = diagram?.cys?.filter(Boolean) ?? []; + const { instances } = this.exportableInstances(); if (!instances.length) throw new Error('this view cannot export PNG yet'); - if (!this.wantsSubpathways && diagram) { - instances.forEach((cy) => diagram.setSubPathwayVisibility(false, cy)); - } return instances[0].png({ full: true, scale, bg: 'transparent' }); } } diff --git a/projects/pathway-browser/src/app/services/ehld.service.ts b/projects/pathway-browser/src/app/services/ehld.service.ts index ec846035..c32bb523 100644 --- a/projects/pathway-browser/src/app/services/ehld.service.ts +++ b/projects/pathway-browser/src/app/services/ehld.service.ts @@ -389,7 +389,11 @@ export class EhldService { container.style.fill = `url(#${this.pattern}${analysisPathway.stId}-fdr)`; container.style.opacity = entities.fdr <= this.state.significance() ? '1' : '0.5'; + // Not every illustration's analysis-info group has a label in it. Every + // other lookup here is guarded; this one was not, and an illustration + // without one threw part-way through, leaving the region half-decorated. const textInfoElement = analysisInfoElement.getElementsByTagName('text')[0]; + if (!textInfoElement) return; textInfoElement.innerHTML = `Hit: ${entities.found}/${entities.total}`; // "1.23E4"; if (this.analysis.hasPValues()) @@ -446,45 +450,65 @@ export class EhldService { }); } - downloadImage(format: DownloadFormat) { - const container = document.getElementById('ehld'); - if (!container) return; - const svg = container.querySelector('svg') as SVGSVGElement; - this.getInlineStyles(svg, this.select()); - // serialize the SVG - const svgData = new XMLSerializer().serializeToString(svg); - const svgBlob = new Blob([svgData], { type: 'image/svg+xml;charset=utf-8' }); - const url = URL.createObjectURL(svgBlob); - - const viewBoxWidth = svg.getBoundingClientRect().width; - const viewBoxHeight = svg.getBoundingClientRect().height; - // change to desired output size - const scale = 3; - const width = viewBoxWidth * scale; - const height = viewBoxHeight * scale; - const canvas = document.createElement('canvas'); - canvas.width = width; - canvas.height = height; - - const ctx = canvas.getContext('2d')!; - ctx.scale(scale, scale); - - if (format === DownloadFormat.JPEG) { - ctx.fillStyle = '#ffffff'; // white background - ctx.fillRect(0, 0, width, height); - } + async downloadImage(format: DownloadFormat) { + const svg = document.getElementById('ehld')?.querySelector('svg'); + if (!svg) return; - const img = new Image(); - img.onload = () => { - ctx.drawImage(img, 0, 0, width, height); - URL.revokeObjectURL(url); - const mimeType = format === DownloadFormat.PNG ? 'image/png' : 'image/jpeg'; - const dataURL = canvas.toDataURL(mimeType, 1.0); - const currentEHLD = this.data.currentPathway()?.stId; - this.download.export(dataURL, format, `${currentEHLD}`); - }; + const canvas = await this.rasterise( + svg as SVGSVGElement, + 3, + // JPEG has no alpha channel, so a transparent background composites to + // black rather than to nothing. + format === DownloadFormat.JPEG ? '#ffffff' : undefined + ); + const mimeType = format === DownloadFormat.PNG ? 'image/png' : 'image/jpeg'; + this.download.export( + canvas.toDataURL(mimeType, 1.0), + format, + `${this.data.currentPathway()?.stId}` + ); + } - img.src = url; + /** + * An illustration drawn onto a canvas at a multiple of its displayed size. + * + * An EHLD is inline SVG, so anything that wants pixels has to serialise it and + * decode it as an image. Two things about that are easy to get wrong and both + * were: its styling comes from the page's stylesheets, which do not travel + * with the markup, so the styles have to be inlined first; and the drawing has + * to be scaled exactly once. Scaling the context and passing scaled + * destination dimensions scales it twice, which showed the top-left ninth of + * the illustration filling the whole file. + * + * Shared with the headless render page, which builds animation frames from it. + */ + async rasterise(svg: SVGSVGElement, scale: number, background?: string) { + this.getInlineStyles(svg, this.select()); + const markup = new XMLSerializer().serializeToString(svg); + const url = URL.createObjectURL(new Blob([markup], { type: 'image/svg+xml;charset=utf-8' })); + + try { + // The illustration declares width and height of 100% and has no viewBox, + // so its size is whatever the page gave it. + const { width, height } = svg.getBoundingClientRect(); + const image = new Image(); + image.src = url; + await image.decode(); + + const canvas = document.createElement('canvas'); + canvas.width = Math.round(width * scale); + canvas.height = Math.round(height * scale); + + const context = canvas.getContext('2d')!; + if (background) { + context.fillStyle = background; + context.fillRect(0, 0, canvas.width, canvas.height); + } + context.drawImage(image, 0, 0, canvas.width, canvas.height); + return canvas; + } finally { + URL.revokeObjectURL(url); + } } // Collect computed style for analysis info diff --git a/tools/render/README.md b/tools/render/README.md index 4e13bcdc..eea6d587 100644 --- a/tools/render/README.md +++ b/tools/render/README.md @@ -1,22 +1,56 @@ # Headless render -Renders a pathway to SVG, PNG or PDF from outside the browser, by driving the -site's own render page. +Renders a pathway to SVG, PNG, PDF, animated GIF or PowerPoint from outside the +browser, by driving the site's own render page. ```bash node tools/render/render.mjs --pathway R-HSA-73857 --format svg --out out.svg node tools/render/render.mjs --pathway R-HSA-109606 --format pdf --token +node tools/render/render.mjs --pathway R-HSA-109606 --format gif --token +node tools/render/render.mjs --pathway R-HSA-73857 --format pptx --out slide.pptx node tools/render/render.mjs --format svg --out genome-wide.svg # no pathway ``` -| flag | meaning | -| ----------- | -------------------------------------------------------- | -| `--pathway` | stable id; omit for the genome-wide view | -| `--format` | `svg`, `png` or `pdf` (default `svg`) | -| `--token` | analysis token, to render with the analysis overlay | -| `--base` | site to render against (default `http://localhost:4200`) | -| `--scale` | PNG scale factor (default 2) | -| `--out` | output path | +| flag | meaning | +| ------------------ | -------------------------------------------------------- | +| `--pathway` | stable id; omit for the genome-wide view | +| `--format` | `svg`, `png`, `pdf`, `gif` or `pptx` (default `svg`) | +| `--token` | analysis token, to render with the analysis overlay | +| `--base` | site to render against (default `http://localhost:4200`) | +| `--scale` | raster scale factor (default 2; GIF never exceeds 1) | +| `--delay` | GIF milliseconds per frame (default 1000) | +| `--max-size` | GIF longest side in pixels (default 2000) | +| `--no-subpathways` | leave out sub-pathway tints and labels | +| `--out` | output path | + +## GIF and PowerPoint + +These are the two formats the Java exporter still owned, and they are the two +that most obviously looked like the old site. + +**GIF is the expression animation.** One frame per sample of an expression +analysis, 1s each, looping; with no token it is a single frame, which is what a +`.gif` of a plain diagram means. Encoding happens inside the browser: a frame of +a diagram is tens of megabytes of pixel data and there is one per sample, so +shipping them out to be assembled costs far more than the finished file. The +palette is built from every frame, not the first — one frame's palette shifts +colours on samples whose values land elsewhere on the scale — which is why the +frames are drawn twice and never accumulated. + +Illustrated pathways animate too, through `EhldService.rasterise`. An EHLD is +inline SVG, and its styling comes from the page's stylesheets rather than the +markup, so it has to be inlined before a serialised copy means anything. + +**PPTX carries the SVG**, with a PNG beside it as the fallback. PowerPoint 2016 +and later draw the SVG and offer _Graphics Format → Convert to Shape_, which +turns the diagram into ordinary editable shapes. The Java exporter emits +DrawingML shapes directly — editable the moment the file opens — at the cost of +a second renderer to keep in step with the first, and a commercial Aspose +licence. One click is worth that trade; if curators disagree, that is the +argument to have. + +The genome-wide view has no GIF: it draws to a canvas through FoamTree with no +per-sample frame capture. It says so rather than producing a still. ## Why this exists @@ -29,9 +63,10 @@ squared off every rounded node in the SVG export for months. Rendering through the site's own page means there is one renderer. Whatever a curator sees is what the file contains. -This is deliberately **not a service**: no queue, no cache, no HTTP API. Those -are worth designing once the cost of a render and the fidelity of an analysis -overlay are known, which is what this measures. +The CLI came first deliberately, with no queue, cache or HTTP API, so that the +cost of a render and the fidelity of an analysis overlay were measured before +anything was designed around them. `service.mjs`, below, is what those numbers +argued for. ## Measured on this host @@ -42,9 +77,16 @@ overlay are known, which is what this measures. | R-HSA-73857 → PDF | 5.6s | 344 KB | | R-HSA-109606 + expression token → SVG | 6.7s | 806 KB, 431 elements | | R-HSA-2219528 (illustration) → SVG | 3.5s | 246 KB | +| R-HSA-109606 + token → GIF, 4 samples | 10–12s | 735 KB, 2000×1121 | +| R-HSA-109581 (illustration) → GIF | 3.1s | 276 KB, 1600×1000 | +| R-HSA-109606 → PPTX | 4.8s | 988 KB | The analysis overlay renders correctly: not-found nodes grey, hits carrying -their expression bars in the palette colours. +their expression bars in the palette colours. Checked per frame rather than by +file size — PMAIP1 goes from dark purple at 0.2 to bright green at 5.2 across +the four samples, matching the dataset. Uncapped, that GIF was 3.1 MB at +5976×3350: a diagram's own coordinate space is large and a GIF pays for it once +per frame. ## The render page @@ -91,6 +133,8 @@ node tools/render/service.mjs curl -o out.svg 'http://127.0.0.1:4310/render/R-HSA-73857.svg' curl -o out.pdf 'http://127.0.0.1:4310/render/R-HSA-109606.pdf?token=' curl -o gw.svg 'http://127.0.0.1:4310/render/genome-wide.svg' +curl -o out.gif 'http://127.0.0.1:4310/render/R-HSA-109606.gif?token=' +curl -o out.pptx 'http://127.0.0.1:4310/render/R-HSA-109606.pptx' curl -s http://127.0.0.1:4310/health ``` @@ -105,6 +149,10 @@ curl -s http://127.0.0.1:4310/health | `RENDER_QUEUE` | 8 | pending renders before 503 | | `RENDER_TIMEOUT` | 45000 | ms before a render is abandoned | +Query parameters: `token`, `scale`, `subpathways=false`, and for GIF `delay` +(ms per frame) and `maxSize` (longest side). All of them are part of the cache +key, so two variants of a pathway never masquerade as each other. + ### Measured behaviour | | | diff --git a/tools/render/gif.mjs b/tools/render/gif.mjs new file mode 100644 index 00000000..05d45de1 --- /dev/null +++ b/tools/render/gif.mjs @@ -0,0 +1,182 @@ +/** + * Animated GIF of an expression analysis, rendered by the site itself. + * + * GIF exists in Reactome for one reason: an expression dataset has many samples + * and an animation is how the old site showed all of them in one file. The Java + * exporter builds it from its own reimplementation of the diagram, which is why + * a downloaded GIF looks nothing like the current site. + * + * Encoding happens inside the browser. A frame of a large diagram is tens of + * megabytes of pixel data, and there are as many frames as there are samples; + * shipping that out to be assembled costs far more than the finished file. The + * page hands out primitives -- the sample list, a way to show one, a canvas of + * what is on screen -- and the loop below composes them. + */ +import { createRequire } from 'node:module'; +import { readFileSync } from 'node:fs'; + +/** Frames past this are dropped rather than rendered; reported, never silent. */ +export const MAX_FRAMES = 50; + +/** Milliseconds per frame. Slow enough to read the sample name on screen. */ +export const DEFAULT_DELAY = 1000; + +/** + * Longest side of the animation, in pixels. + * + * A diagram's own coordinate space is large -- an ordinary pathway exports + * around 6000px wide -- and a GIF pays for that once per frame. Left uncapped, + * a four-sample analysis came out at 3MB and a twenty-sample one would be + * unusable. Fitting to 2000px keeps labels legible at the size a figure is + * actually looked at. + */ +export const MAX_SIZE = 2000; + +const require = createRequire(import.meta.url); + +/** + * gifenc, wrapped so it can be injected into a page as a plain script. + * + * The published bundle is CommonJS, and a page has no module loader. Read once: + * this is the same bytes for every render. + */ +let encoderSource; +function gifencScript() { + encoderSource ??= readFileSync(require.resolve('gifenc'), 'utf8'); + return ( + 'window.gifenc = (function () { const module = { exports: {} }; ' + + `const exports = module.exports; ${encoderSource}\n; return module.exports; })();` + ); +} + +/** + * Encode the diagram on an already-rendered page as a GIF. + * + * With no expression analysis there is nothing to animate and the result is a + * single frame -- which is what a request for a .gif of a plain diagram means. + */ +export async function gifFromPage( + page, + { scale = 1, delay = DEFAULT_DELAY, maxSize = MAX_SIZE } = {} +) { + await page.addScriptTag({ content: gifencScript() }); + + const result = await page.evaluate( + async ({ scale, delay, maxFrames, maxSize }) => { + const api = window.__renderExport; + const { GIFEncoder, quantize, applyPalette } = window.gifenc; + + const samples = api.samples() ?? []; + const frames = samples.length ? samples.slice(0, maxFrames) : [null]; + + /** One frame's pixels, at the size the first frame established. */ + const capture = async (sample, expected, at) => { + if (sample !== null) await api.showSample(sample); + const canvas = await api.frameCanvas(at); + if (expected && (canvas.width !== expected.width || canvas.height !== expected.height)) { + throw new Error( + `frame for "${sample}" came out ${canvas.width}x${canvas.height}, ` + + `but the animation is ${expected.width}x${expected.height}` + ); + } + const context = canvas.getContext('2d'); + return { + width: canvas.width, + height: canvas.height, + data: context.getImageData(0, 0, canvas.width, canvas.height).data, + }; + }; + + // Two passes over the samples, holding one frame at a time. + // + // A GIF has 256 colours, so the palette has to be decided before any + // frame is written, and it has to cover every frame: one built from the + // first frame alone shifts colours on samples whose values land elsewhere + // on the scale. Keeping all the frames in memory to do that is what makes + // a large diagram fall over -- a hundred megabytes of pixel data is + // ordinary here -- so the frames are drawn twice and never accumulated. + // Drawing is a recolour and a canvas read, which is cheap next to that. + // What the diagram exports at, before deciding what to animate at. The + // scale that fits it into maxSize cannot be known without this, and + // guessing from a small probe puts a rounding error into every frame. + let probe = await capture(frames[0], null, scale); + const natural = [probe.width, probe.height]; + const longest = Math.max(probe.width, probe.height); + const fit = longest > maxSize ? (scale * maxSize) / longest : scale; + const size = fit === scale ? probe : await capture(frames[0], null, fit); + // A full-size frame is tens of megabytes; do not hold one that is not + // going into the animation. + probe = null; + // Enough pixels to characterise the colours without quantising the whole + // animation: colours here come from a continuous scale over a fixed set + // of diagram colours, not from photographic noise. + const budget = 150_000; + const step = Math.max(1, Math.floor((size.width * size.height * frames.length) / budget)); + const sampled = []; + + for (const [index, sample] of frames.entries()) { + const frame = index === 0 ? size : await capture(sample, size, fit); + for (let pixel = 0; pixel < frame.width * frame.height; pixel += step) { + const at = pixel * 4; + sampled.push(frame.data[at], frame.data[at + 1], frame.data[at + 2], 255); + } + } + + const palette = quantize(new Uint8Array(sampled), 256); + + const gif = GIFEncoder(); + const checksums = []; + for (const [index, sample] of frames.entries()) { + const frame = await capture(sample, size, fit); + const indexed = applyPalette(frame.data, palette); + // The palette goes in once, as the global colour table. Passing it again + // writes a local table per frame, which is the same colours at the cost + // of a kilobyte each. + gif.writeFrame(indexed, frame.width, frame.height, { + delay, + ...(index === 0 ? { palette } : {}), + }); + // Cheap fingerprint, to catch an animation whose frames are all the + // same picture -- a plausible-looking file that shows nothing. + let checksum = 0; + for (let at = 0; at < indexed.length; at += 101) checksum = (checksum + indexed[at]) | 0; + checksums.push(checksum); + } + gif.finish(); + + const bytes = gif.bytes(); + let binary = ''; + const chunk = 0x8000; + for (let at = 0; at < bytes.length; at += chunk) { + binary += String.fromCharCode.apply(null, bytes.subarray(at, at + chunk)); + } + + return { + base64: btoa(binary), + width: size.width, + height: size.height, + frames: frames.length, + samples: samples.length, + distinct: new Set(checksums).size, + natural, + }; + }, + { scale, delay, maxFrames: MAX_FRAMES, maxSize } + ); + + if (result.frames > 1 && result.distinct === 1) { + throw new Error( + `all ${result.frames} frames are identical -- the samples are not reaching the diagram` + ); + } + + return { + bytes: Buffer.from(result.base64, 'base64'), + frames: result.frames, + samples: result.samples, + distinct: result.distinct, + size: [result.width, result.height], + natural: result.natural, + truncated: Math.max(0, result.samples - result.frames), + }; +} diff --git a/tools/render/pptx.mjs b/tools/render/pptx.mjs new file mode 100644 index 00000000..bc61bfaa --- /dev/null +++ b/tools/render/pptx.mjs @@ -0,0 +1,275 @@ +/** + * PowerPoint of a rendered diagram. + * + * The slide holds one picture, and that picture is the SVG the site exported, + * with a PNG beside it as the fallback. PowerPoint 2016 and later draw the SVG + * and offer "Convert to Shape", which turns it into ordinary editable shapes; + * anything older, and anything that is not PowerPoint, gets the PNG. + * + * That is a deliberate choice against reimplementing the diagram in DrawingML. + * The Java exporter does reimplement it -- a shape class per glyph type, driven + * by Aspose.Slides -- and gets shapes that are editable the moment the file + * opens. It also gets a second renderer to keep in step with the first, which is + * exactly the drift this work exists to remove, and a commercial dependency. One + * click for editability is worth that trade; if curators disagree, the argument + * to have is about that click. + * + * A .pptx is a zip of XML parts. The parts here are the smallest set PowerPoint + * will open: a presentation, one master, one layout, one slide, and a theme. + * Nothing is optional -- a missing theme or an unresolved relationship is what + * makes PowerPoint offer to repair a file. + */ +import { zipSync, strToU8 } from 'fflate'; + +/** English Metric Units per pixel at 96dpi, the unit all OOXML geometry uses. */ +const EMU_PER_PX = 9525; +/** A 16:9 slide, 13.333in by 7.5in: what PowerPoint itself defaults to. */ +const SLIDE = { cx: 12192000, cy: 6858000 }; +const MARGIN = 274638; // 0.3in +const TITLE_HEIGHT = 461665; // 0.5in + +const NS = { + a: 'http://schemas.openxmlformats.org/drawingml/2006/main', + p: 'http://schemas.openxmlformats.org/presentationml/2006/main', + r: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', + ct: 'http://schemas.openxmlformats.org/package/2006/content-types', + pr: 'http://schemas.openxmlformats.org/package/2006/relationships', + od: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', +}; + +/** The extension that carries an SVG alongside a raster blip. */ +const SVG_BLIP_EXT = '{96DAC541-7B7A-43D3-8B79-37D633B846F1}'; + +const DECLARATION = '\n'; + +function escapeXml(text) { + return String(text).replace( + /[<>&'"]/g, + (character) => + ({ '<': '<', '>': '>', '&': '&', "'": ''', '"': '"' })[character] + ); +} + +function relationships(entries) { + return ( + DECLARATION + + `` + + entries + .map( + ({ id, type, target }) => + `` + ) + .join('') + + `` + ); +} + +/** + * Where the picture goes: as large as the slide allows without distorting it. + * + * Fitting rather than filling matters for a diagram -- a stretched pathway is a + * wrong pathway, and every glyph in it is a shape whose proportions carry + * meaning. + */ +function placePicture({ width, height, hasTitle }) { + const top = MARGIN + (hasTitle ? TITLE_HEIGHT : 0); + const available = { cx: SLIDE.cx - 2 * MARGIN, cy: SLIDE.cy - top - MARGIN }; + const natural = { cx: width * EMU_PER_PX, cy: height * EMU_PER_PX }; + const scale = Math.min(available.cx / natural.cx, available.cy / natural.cy); + const cx = Math.round(natural.cx * scale); + const cy = Math.round(natural.cy * scale); + return { + x: Math.round((SLIDE.cx - cx) / 2), + y: Math.round(top + (available.cy - cy) / 2), + cx, + cy, + }; +} + +function titleShape(title) { + return ( + `` + + `` + + `` + + `` + + `` + + `${escapeXml(title)}` + + `` + ); +} + +function slideXml({ title, width, height }) { + const at = placePicture({ width, height, hasTitle: Boolean(title) }); + return ( + DECLARATION + + `` + + `` + + `` + + `` + + (title ? titleShape(title) : '') + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + ); +} + +/** An empty shape tree, which both the master and the layout need. */ +const EMPTY_TREE = + `` + + `` + + ``; + +const CLR_MAP = + ``; + +const SLIDE_MASTER = + DECLARATION + + `` + + `` + + `${EMPTY_TREE}${CLR_MAP}` + + `` + + ``; + +const SLIDE_LAYOUT = + DECLARATION + + `${EMPTY_TREE}` + + ``; + +const PRESENTATION = + DECLARATION + + `` + + `` + + `` + + `` + + ``; + +/** Three fills, three lines, three effects and three backgrounds: the minimum. */ +const FORMAT_SCHEME = + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + ``; + +const THEME = + DECLARATION + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + `` + + FORMAT_SCHEME + + ``; + +const CONTENT_TYPES = + DECLARATION + + `` + + `` + + `` + + `` + + `` + + [ + ['/ppt/presentation.xml', 'presentationml.presentation.main+xml'], + ['/ppt/slideMasters/slideMaster1.xml', 'presentationml.slideMaster+xml'], + ['/ppt/slideLayouts/slideLayout1.xml', 'presentationml.slideLayout+xml'], + ['/ppt/slides/slide1.xml', 'presentationml.slide+xml'], + ] + .map( + ([part, type]) => + `` + ) + .join('') + + `` + + ``; + +/** + * Build the .pptx. + * + * @param {object} figure + * @param {string} figure.svg the diagram as SVG, what PowerPoint draws + * @param {Buffer} figure.png the same diagram as PNG, the fallback + * @param {number} figure.width natural width in pixels, for the aspect ratio + * @param {number} figure.height natural height in pixels + * @param {string} [figure.title] shown above the diagram; omitted if empty + * @returns {Buffer} the zipped package + */ +export function pptx({ svg, png, width, height, title = '' }) { + const parts = { + '[Content_Types].xml': strToU8(CONTENT_TYPES), + '_rels/.rels': strToU8( + relationships([{ id: 'rId1', type: 'officeDocument', target: 'ppt/presentation.xml' }]) + ), + 'ppt/presentation.xml': strToU8(PRESENTATION), + 'ppt/_rels/presentation.xml.rels': strToU8( + relationships([ + { id: 'rId1', type: 'slideMaster', target: 'slideMasters/slideMaster1.xml' }, + { id: 'rId2', type: 'slide', target: 'slides/slide1.xml' }, + { id: 'rId3', type: 'theme', target: 'theme/theme1.xml' }, + ]) + ), + 'ppt/slideMasters/slideMaster1.xml': strToU8(SLIDE_MASTER), + 'ppt/slideMasters/_rels/slideMaster1.xml.rels': strToU8( + relationships([ + { id: 'rId1', type: 'slideLayout', target: '../slideLayouts/slideLayout1.xml' }, + { id: 'rId2', type: 'theme', target: '../theme/theme1.xml' }, + ]) + ), + 'ppt/slideLayouts/slideLayout1.xml': strToU8(SLIDE_LAYOUT), + 'ppt/slideLayouts/_rels/slideLayout1.xml.rels': strToU8( + relationships([ + { id: 'rId1', type: 'slideMaster', target: '../slideMasters/slideMaster1.xml' }, + ]) + ), + 'ppt/slides/slide1.xml': strToU8(slideXml({ title, width, height })), + 'ppt/slides/_rels/slide1.xml.rels': strToU8( + relationships([ + { id: 'rId1', type: 'slideLayout', target: '../slideLayouts/slideLayout1.xml' }, + { id: 'rId2', type: 'image', target: '../media/image1.png' }, + { id: 'rId3', type: 'image', target: '../media/image1.svg' }, + ]) + ), + 'ppt/theme/theme1.xml': strToU8(THEME), + 'ppt/media/image1.png': new Uint8Array(png), + 'ppt/media/image1.svg': strToU8(svg), + }; + + return Buffer.from(zipSync(parts, { level: 6 })); +} diff --git a/tools/render/render-core.mjs b/tools/render/render-core.mjs index 20f770e9..0b7d7b29 100644 --- a/tools/render/render-core.mjs +++ b/tools/render/render-core.mjs @@ -5,12 +5,14 @@ * "wait for the page, ask it for the artefact" -- the whole point of this work * is not having two renderers, and that argument applies to its callers too. */ +import { gifFromPage, DEFAULT_DELAY, MAX_SIZE } from './gif.mjs'; +import { pptx } from './pptx.mjs'; /** Formats the render page can produce. */ -export const FORMATS = ['svg', 'png', 'pdf']; +export const FORMATS = ['svg', 'png', 'pdf', 'gif', 'pptx']; /** Anything smaller than this is not a real render; see the Reacfoam notes. */ -const MIN_BYTES = { svg: 2000, png: 5000, pdf: 5000 }; +const MIN_BYTES = { svg: 2000, png: 5000, pdf: 5000, gif: 5000, pptx: 10_000 }; /** * The URL of the render page for a pathway. Omit the pathway for the @@ -42,6 +44,8 @@ export async function render( token = '', scale = 2, subpathways = true, + delay = DEFAULT_DELAY, + maxSize = MAX_SIZE, timeout = 120_000, } ) { @@ -78,16 +82,31 @@ export async function render( if (state?.error) throw new Error(state.error); let bytes; + const detail = {}; if (format === 'svg') { bytes = Buffer.from( await page.evaluate(async () => await window.__renderExport.svg()), 'utf8' ); } else if (format === 'png') { - const dataUrl = await page.evaluate((s) => window.__renderExport.png(s), scale); - bytes = Buffer.from(dataUrl.split(',')[1], 'base64'); - } else { + bytes = await pngBytes(page, scale); + } else if (format === 'pdf') { bytes = await pdfFromSvg(page, timeout); + } else if (format === 'gif') { + // Never above 1x. A GIF stores every frame, so doubling the scale + // quadruples a file that already has one picture per sample -- and 256 + // colours is the ceiling on quality regardless of size, so the pixels + // would buy nothing. + const gif = await gifFromPage(page, { scale: Math.min(scale, 1), delay, maxSize }); + bytes = gif.bytes; + Object.assign(detail, { + size: gif.size.join('x'), + frames: gif.frames, + distinct: gif.distinct, + truncated: gif.truncated, + }); + } else { + bytes = await pptxFromPage(page, { scale, title: state?.name ?? '' }); } const floor = MIN_BYTES[format]; @@ -98,13 +117,46 @@ export async function render( ); } - return { bytes, state: state ?? {}, problems }; + return { bytes, state: { ...(state ?? {}), ...detail }, problems }; } finally { page.off('pageerror', onPageError); page.off('console', onConsole); } } +/** The diagram as PNG bytes, decoded from the data URL the page hands back. */ +async function pngBytes(page, scale) { + const dataUrl = await page.evaluate((s) => window.__renderExport.png(s), scale); + return Buffer.from(dataUrl.split(',')[1], 'base64'); +} + +/** + * The size the SVG declares, which is the diagram's own size rather than the + * viewport's. Everything that puts a diagram in a document needs it. + */ +function svgSize(svg) { + return { + width: Number(/\bwidth="([\d.]+)"/.exec(svg)?.[1] ?? 1600), + height: Number(/\bheight="([\d.]+)"/.exec(svg)?.[1] ?? 1000), + }; +} + +/** + * PowerPoint of the rendered diagram: the SVG for PowerPoint to draw and to + * convert to shapes, and a PNG for everything that cannot. + */ +async function pptxFromPage(page, { scale, title }) { + const svg = await page.evaluate(async () => await window.__renderExport.svg()); + const size = svgSize(svg); + // The PNG is only what a viewer that cannot draw SVG falls back to, and a + // diagram's own coordinate space is around 6000px wide -- at the requested + // scale the fallback came out at 6MB, dwarfing the vector version PowerPoint + // actually uses. Cap it at the same size the animation uses. + const longest = Math.max(size.width, size.height); + const png = await pngBytes(page, Math.min(scale, MAX_SIZE / longest)); + return pptx({ svg, png, title, ...size }); +} + /** * PDF from the exported SVG rather than from the page. * @@ -113,8 +165,7 @@ export async function render( */ async function pdfFromSvg(page, timeout) { const svg = await page.evaluate(async () => await window.__renderExport.svg()); - const width = Number(/\bwidth="([\d.]+)"/.exec(svg)?.[1] ?? 1600); - const height = Number(/\bheight="([\d.]+)"/.exec(svg)?.[1] ?? 1000); + const { width, height } = svgSize(svg); // The same page, not a second one. The artefact is already extracted, so the // render page has done its job, and a page made by browser.newPage() has no diff --git a/tools/render/render.mjs b/tools/render/render.mjs index 8c2a90a5..c5b8aea2 100755 --- a/tools/render/render.mjs +++ b/tools/render/render.mjs @@ -1,6 +1,6 @@ #!/usr/bin/env node /** - * Render one pathway to SVG, PNG or PDF from the command line. + * Render one pathway from the command line. * * A thin wrapper over render-core.mjs, which is shared with the service so * there is one implementation of the render itself. @@ -10,12 +10,18 @@ * node tools/render/render.mjs --format svg --out genome-wide.svg * * --pathway stable id; omit for the genome-wide view - * --format svg | png | pdf (default svg) + * --format svg | png | pdf | gif | pptx (default svg) * --out output path (default .) * --token analysis token, to render with the analysis overlay * --base site to render against (default http://localhost:4200) - * --scale PNG scale factor (default 2) + * --scale raster scale factor (default 2; GIF never exceeds 1) + * --delay GIF milliseconds per frame (default 1000) + * --max-size GIF longest side in pixels (default 2000) * --no-subpathways leave out sub-pathway tints and labels + * + * GIF animates one frame per sample of an expression analysis, so it wants a + * --token; without one it is a single frame. PPTX carries the SVG, which + * PowerPoint can convert to editable shapes. */ import { chromium } from '@playwright/test'; import { writeFile } from 'node:fs/promises'; @@ -50,6 +56,8 @@ try { format, token: flag('token', ''), scale: Number(flag('scale', '2')), + delay: Number(flag('delay', '1000')), + maxSize: Number(flag('max-size', '2000')), subpathways: !args.includes('--no-subpathways'), }); @@ -59,6 +67,9 @@ try { state.view, state.elements && `${state.elements} elements`, state.groups && `${state.groups} groups`, + state.frames && `${state.frames} frames`, + state.size, + state.truncated ? `${state.truncated} samples dropped past the frame limit` : null, ] .filter(Boolean) .join(', '); diff --git a/tools/render/service.mjs b/tools/render/service.mjs index 63633e1a..79638f41 100644 --- a/tools/render/service.mjs +++ b/tools/render/service.mjs @@ -32,6 +32,8 @@ * RENDER_CACHE_KEY salt; change it to invalidate everything (e.g. release) * RENDER_CONCURRENCY simultaneous renders, default 2 * RENDER_QUEUE pending renders before 503, default 8 + * + * Query parameters: token, scale, subpathways=false, delay and maxSize (GIF). */ import express from 'express'; import { chromium } from '@playwright/test'; @@ -55,8 +57,13 @@ const CONTENT_TYPE = { svg: 'image/svg+xml; charset=utf-8', png: 'image/png', pdf: 'application/pdf', + gif: 'image/gif', + pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation', }; +/** Formats a browser would not usefully display, so offer them as a download. */ +const ATTACHMENT = new Set(['pptx']); + const stats = { served: 0, hits: 0, rendered: 0, failed: 0, rejected: 0 }; // ---- browser ------------------------------------------------------------- @@ -100,11 +107,11 @@ function pump() { } // ---- cache --------------------------------------------------------------- -function cacheKey({ pathway, format, token, scale, subpathways }) { +function cacheKey({ pathway, format, token, scale, subpathways, delay, maxSize }) { // The token is part of the key rather than a reason not to cache: repeat // requests for the same analysis are exactly what a report generator makes. return createHash('sha256') - .update([CACHE_KEY, pathway, format, token, scale, subpathways].join(' ')) + .update([CACHE_KEY, pathway, format, token, scale, subpathways, delay, maxSize].join(' ')) .digest('hex'); } @@ -190,6 +197,7 @@ async function renderCached(params) { state.view, state.elements && `${state.elements} elements`, state.groups && `${state.groups} groups`, + state.frames && `${state.frames} frames`, ] .filter(Boolean) .join(', '); @@ -242,6 +250,8 @@ app.get('/render/:name.:ext', async (req, res) => { token: typeof req.query.token === 'string' ? req.query.token : '', scale: Number(req.query.scale || 2), subpathways: req.query.subpathways !== 'false', + delay: Number(req.query.delay || 1000), + maxSize: Number(req.query.maxSize || 2000), }; try { @@ -257,7 +267,8 @@ app.get('/render/:name.:ext', async (req, res) => { ); res.setHeader( 'Content-Disposition', - `inline; filename="${params.pathway || 'genome-wide'}.${format}"` + `${ATTACHMENT.has(format) ? 'attachment' : 'inline'}; ` + + `filename="${params.pathway || 'genome-wide'}.${format}"` ); return res.end(bytes); } catch (error) { From 18162a5a12304c684759b46e28a69e27a4636953 Mon Sep 17 00:00:00 2001 From: beaversd Date: Wed, 19 Aug 2026 13:40:16 -0700 Subject: [PATCH 007/136] update package.json with curator website script. --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index badae7d5..58e57d71 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,8 @@ "start:website": "cd projects/website-angular && npm run start", "start:pathway": "cd projects/pathway-browser && npm run start-with-deps", "build": "npm run generate:indices && ng build --configuration production", - "build:website": "npm run build && cd dist/reactome/browser/ && tar czvf browser.tar.gz * && scp browser.tar.gz curator:~/browser.tar.gz && rm browser.tar.gz", + "build:curator": "npm run generate:indices && npm run stage:content && npm run build:reactome-cytoscape-style && npm run build:libs && ng build --configuration production,curator", + "build:website": "npm run build:curator && cd dist/reactome/browser/ && tar czvf browser.tar * && scp browser.tar curator:~/browser.tar", "build:pathway": "cd projects/pathway-browser && npm run build", "watch": "ng build --watch --configuration development", "test": "vitest run", From 7f8d5deaf9ff13c4c2b22f6a5a2644e12ed5ed27 Mon Sep 17 00:00:00 2001 From: Adam Wright Date: Thu, 20 Aug 2026 01:44:15 +0000 Subject: [PATCH 008/136] feat(download): take GIF and PowerPoint from the render service Clicking GIF or PPTX in the download panel now gets a figure drawn by the site's own renderer instead of by the Java exporter's reimplementation of it. That was the last place a curator could download something that looked like the old site. The app builds its URLs from RENDER_SERVICE, which is the current origin plus /RenderService, exactly as CONTENT_SERVICE works -- so it follows whatever host the bundle is served from. proxy.conf.js maps that path to the service on loopback, and serve-prod.js reads the same table, so beta and the dev server both reach it with no Apache change. The analysis token travels with the request, which is the point of a GIF: one frame per sample rather than a still. So does the sub-pathway preference, so the checkbox means the same thing for a server-rendered file as for one the browser produces. Encoding the token needed care. The analysis service returns it already percent-encoded, and setSearchParam encoded it again -- "...%253D%253D", a different token to everything downstream and a separate cache entry. It happened to still render, because the render page passed the same mangled value back to the same service. Illustrations keep going to the content service for GIF and PPTX: it serves the same illustration file either way, so there is nothing to gain. Clamped every number that arrives in a query string, now that the path is publicly reachable. scale=50 asked for a 320-megapixel canvas and got it, which is worse than an error: one query string for a gigabyte of someone else's memory. Scale is capped at the default, and nothing has needed more. deploy/render-service/ carries the systemd unit and says plainly what is still missing before this fronts reactome.org: rate limiting at Apache, Apache serving the cache directly on a hit, and a cache key that changes per release. Docs use --token "$ANALYSIS_TOKEN" rather than an angle-bracket placeholder. GitGuardian read the placeholder as a CLI-option secret and raised an incident; there was no credential in it, and a variable reference reads as one to a scanner as well as to a person. Co-Authored-By: Claude Opus 5 --- deploy/render-service/README.md | 67 +++++++++++++++++++ deploy/render-service/reactome-render.service | 49 ++++++++++++++ .../download-tab/download-tab.component.ts | 47 ++++++++++++- .../environments/environment.curator-local.ts | 5 ++ .../environments/environment.development.ts | 5 ++ .../src/environments/environment.github.ts | 5 ++ .../src/environments/environment.local.ts | 5 ++ .../environments/environment.production.ts | 5 ++ .../src/environments/environment.release.ts | 5 ++ .../src/environments/environment.ts | 5 ++ proxy.conf.js | 12 ++++ tools/render/README.md | 8 +-- tools/render/render.mjs | 2 +- tools/render/service.mjs | 24 ++++++- 14 files changed, 235 insertions(+), 9 deletions(-) create mode 100644 deploy/render-service/README.md create mode 100644 deploy/render-service/reactome-render.service diff --git a/deploy/render-service/README.md b/deploy/render-service/README.md new file mode 100644 index 00000000..3520a072 --- /dev/null +++ b/deploy/render-service/README.md @@ -0,0 +1,67 @@ +# Deploying the render service + +The service itself is `tools/render/service.mjs`; this directory is how it gets +run on the dev box, and what still needs deciding before it fronts the public +site. + +## Install + +```bash +sudo cp deploy/render-service/reactome-render.service /etc/systemd/system/ +sudo systemctl daemon-reload +sudo systemctl enable --now reactome-render +curl -s http://127.0.0.1:4310/health +``` + +Until that is done it runs under `nohup`, which does not survive a reboot: + +```bash +RENDER_CACHE=/home/awright/render-cache RENDER_BASE=http://localhost:4200 \ + setsid nohup node tools/render/service.mjs > ~/render-service.log 2>&1 & +``` + +## How the site reaches it + +`proxy.conf.js` maps `/RenderService` to `127.0.0.1:4310`, and `serve-prod.js` +reads that same table, so beta and the dev server both proxy it. The app builds +its URLs from `RENDER_SERVICE` in `environments/environment.ts`, which is +`window.location.origin + '/RenderService'` — so it follows whatever host the +bundle is served from, exactly as `CONTENT_SERVICE` does. + +Nothing was added to Apache: beta.reactome.org already forwards everything to +:4200. + +## Before this fronts reactome.org + +The service binds to loopback and is reached only through the site, which is the +first line of defence: a render costs seconds, and **crawlers hitting the old +`/ContentService/exporter/*` endpoints are what exhausted Tomcat's heap and took +the origin down**. Proxying `/RenderService` means the public can now commission +renders on beta, and three things bound the damage: + +- two concurrent renders, eight queued, `503` with `Retry-After` beyond that +- a content-addressed disk cache, so a repeated request is a file read (7ms) +- an id that does not resolve is rejected by one backend call, before a browser + +What is **not** yet in place for production: + +- **Rate limiting at Apache.** There is an `add-rate-limit.sh` on this box for + exactly this. A bounded queue keeps the service alive under a crawl; it does + not stop the crawl. +- **Serving the cache directly.** The right shape is Apache serving + `/home/awright/render-cache` for a hit and only falling through to node on a + miss, so a popular figure never involves the renderer at all. +- **A cache key per release.** `RENDER_CACHE_KEY` exists for this; bump it when + the data changes or figures will outlive their diagrams. + +## Watching it + +```bash +curl -s http://127.0.0.1:4310/health # counters: served, hits, rendered, failed, rejected +journalctl -u reactome-render -f # once installed +du -sh /home/awright/render-cache +``` + +`rejected` counts `503`s and is deliberately separate from `failed`: a rejection +is the queue doing its job, and counting it as a failure hides real ones in the +noise of a busy period. diff --git a/deploy/render-service/reactome-render.service b/deploy/render-service/reactome-render.service new file mode 100644 index 00000000..30ff5db1 --- /dev/null +++ b/deploy/render-service/reactome-render.service @@ -0,0 +1,49 @@ +# The headless render service, which produces the diagram figures a document +# needs -- GIF, PPTX, PDF, PNG, SVG -- by driving the site's own renderer. +# +# Install (needs root): +# sudo cp deploy/render-service/reactome-render.service /etc/systemd/system/ +# sudo systemctl daemon-reload +# sudo systemctl enable --now reactome-render +# systemctl status reactome-render +# +# It listens on loopback only. The site's own origin proxies /RenderService to +# it (see proxy.conf.js, which serve-prod.js reads), so a render can only be +# commissioned through whatever fronts the site -- never directly. + +[Unit] +Description=Reactome headless diagram render service +Documentation=file:///home/awright/git/WebsiteAngular/tools/render/README.md +After=network.target +# It renders by loading the site, so it is useless without it. Wants rather +# than Requires: if the site restarts, the renderer should wait, not die. +Wants=network-online.target + +[Service] +Type=simple +User=awright +WorkingDirectory=/home/awright/git/WebsiteAngular +ExecStart=/usr/bin/node tools/render/service.mjs +Environment=RENDER_HOST=127.0.0.1 +Environment=RENDER_PORT=4310 +Environment=RENDER_BASE=http://localhost:4200 +Environment=RENDER_CACHE=/home/awright/render-cache +# A render costs seconds and a browser costs memory; this box also runs the +# site, the backend and Neo4j. +Environment=RENDER_CONCURRENCY=2 +Environment=RENDER_QUEUE=8 +Restart=always +RestartSec=5 +# Chromium is the memory cost here, not node. A diagram at 6000px is a large +# canvas, and a GIF holds one frame of it at a time. +MemoryMax=3G + +# It writes to exactly one directory and needs nothing else. +NoNewPrivileges=true +PrivateTmp=true +ProtectSystem=full +ProtectHome=read-only +ReadWritePaths=/home/awright/render-cache + +[Install] +WantedBy=multi-user.target diff --git a/projects/pathway-browser/src/app/details/tabs/download-tab/download-tab.component.ts b/projects/pathway-browser/src/app/details/tabs/download-tab/download-tab.component.ts index d3da466e..84f0cc45 100644 --- a/projects/pathway-browser/src/app/details/tabs/download-tab/download-tab.component.ts +++ b/projects/pathway-browser/src/app/details/tabs/download-tab/download-tab.component.ts @@ -7,6 +7,7 @@ import { AnalysisService } from '../../../services/analysis.service'; import { ANALYSIS_SERVICE, CONTENT_SERVICE, + RENDER_SERVICE, RESTFUL_API, } from '../../../../environments/environment'; import { MatTooltip } from '@angular/material/tooltip'; @@ -24,6 +25,23 @@ import { AnimatedDownloadFormComponent } from './animated-download-form/animated import { MatCheckbox } from '@angular/material/checkbox'; import { FormsModule } from '@angular/forms'; +/** + * An analysis token in its raw form. + * + * Tokens come back from the analysis service percent-encoded, but not always -- + * a token read from a URL the user pasted may already be decoded. Decoding a + * decoded token is a no-op for the characters a token contains, and a stray `%` + * that is not an escape would throw rather than return, so fall back to what + * came in. + */ +function decodeToken(token: string) { + try { + return decodeURIComponent(token); + } catch { + return token; + } +} + type PathwayItem = { name: string; url: Signal; @@ -134,7 +152,12 @@ export class DownloadTabComponent { if (isExportable) { return { format, - url: signal(this.getExportUrl(format)), + // A diagram's GIF and PowerPoint come from the render service, which + // drives the site's own renderer; an illustration's still go through + // the content service, which serves the same illustration file either + // way. That is why a downloaded GIF used to look like the old site + // and no longer does. + url: signal(isEHLD ? this.getExportUrl(format) : this.getRenderUrl(format)), icon: { id: 'image' }, download: true, }; @@ -259,6 +282,28 @@ export class DownloadTabComponent { return name; } + /** + * A figure from the render service. + * + * The analysis token travels with it, because that is what makes a GIF worth + * having: one frame per sample of an expression analysis rather than a still. + * So does the sub-pathway preference, so the checkbox above means the same + * thing for a server-rendered file as for one the browser produces. + */ + getRenderUrl(format: string) { + const url = new URL(`${RENDER_SERVICE}/render/${this.pathwayId()}.${format}`); + const token = this.token(); + // The analysis service hands the token back already percent-encoded + // ("...%3D%3D"), and setSearchParam encodes it a second time, which produces + // "...%253D%253D" -- a different token to anything downstream, and a + // different cache entry. Decode first so it is encoded exactly once. + if (token) url.searchParams.set('token', decodeToken(token)); + // Set only when turning them off, so the ordinary URL stays the short one + // and the service's cache is not split by a parameter that says nothing. + if (!includeSubpathways()) url.searchParams.set('subpathways', 'false'); + return url.toString(); + } + getExportUrl(format: string) { const analysisUrl = `${CONTENT_SERVICE}/exporter/diagram/${this.pathwayId()}.${format}?token=${this.token()}`; const url = `${CONTENT_SERVICE}/exporter/diagram/${this.pathwayId()}.${format}`; diff --git a/projects/pathway-browser/src/environments/environment.curator-local.ts b/projects/pathway-browser/src/environments/environment.curator-local.ts index 4c0b26d0..b47e8820 100644 --- a/projects/pathway-browser/src/environments/environment.curator-local.ts +++ b/projects/pathway-browser/src/environments/environment.curator-local.ts @@ -39,6 +39,11 @@ export const CONTENT_SERVICE = `http://localhost:${LOCAL_CONTENT_SERVICE_PORT}`; // reactome.org, which sends Access-Control-Allow-Origin: *. export const VERSION_FALLBACK = `https://reactome.org/ContentService/data/database/version`; export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; +// The headless render service: diagram figures for documents (GIF, PPTX, PDF), +// rendered by the site's own renderer rather than by the Java exporters' +// reimplementation of it. Served under the site's own origin by a proxy, so a +// render can only be commissioned through whatever fronts the site. +export const RENDER_SERVICE = `${environment.host}/RenderService`; export const EXPERIMENT_SERVICE = `${environment.host}/experiment`; export const RESTFUL_API = `${environment.host}/ReactomeRESTfulAPI/RESTfulWS`; // EHLDs and pre-generated diagram JSON aren't served by a local content diff --git a/projects/pathway-browser/src/environments/environment.development.ts b/projects/pathway-browser/src/environments/environment.development.ts index 7a23b880..a1808469 100644 --- a/projects/pathway-browser/src/environments/environment.development.ts +++ b/projects/pathway-browser/src/environments/environment.development.ts @@ -21,6 +21,11 @@ export const ICON_HOST = 'https://dev.reactome.org'; export const CONTENT_SERVICE = `${environment.host}/${IS_CURATOR ? 'GraphContentService' : 'ContentService'}`; export const VERSION_FALLBACK = `https://newcurator.reactome.org/ContentService/data/database/version`; export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; +// The headless render service: diagram figures for documents (GIF, PPTX, PDF), +// rendered by the site's own renderer rather than by the Java exporters' +// reimplementation of it. Served under the site's own origin by a proxy, so a +// render can only be commissioned through whatever fronts the site. +export const RENDER_SERVICE = `${environment.host}/RenderService`; export const EXPERIMENT_SERVICE = `${environment.host}/experiment`; export const RESTFUL_API = `${environment.host}/ReactomeRESTfulAPI/RESTfulWS`; export const DOWNLOAD = `${environment.host}/download/current`; diff --git a/projects/pathway-browser/src/environments/environment.github.ts b/projects/pathway-browser/src/environments/environment.github.ts index fbe65a93..9c10e4ce 100644 --- a/projects/pathway-browser/src/environments/environment.github.ts +++ b/projects/pathway-browser/src/environments/environment.github.ts @@ -18,6 +18,11 @@ export const ICON_HOST = 'https://dev.reactome.org'; export const CONTENT_SERVICE = `${environment.host}/${IS_CURATOR ? 'GraphContentService' : 'ContentService'}`; export const VERSION_FALLBACK = `https://newcurator.reactome.org/ContentService/data/database/version`; export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; +// The headless render service: diagram figures for documents (GIF, PPTX, PDF), +// rendered by the site's own renderer rather than by the Java exporters' +// reimplementation of it. Served under the site's own origin by a proxy, so a +// render can only be commissioned through whatever fronts the site. +export const RENDER_SERVICE = `${environment.host}/RenderService`; export const EXPERIMENT_SERVICE = `${environment.host}/experiment`; export const RESTFUL_API = `${environment.host}/ReactomeRESTfulAPI/RESTfulWS`; export const DOWNLOAD = `${environment.host}/download/current`; diff --git a/projects/pathway-browser/src/environments/environment.local.ts b/projects/pathway-browser/src/environments/environment.local.ts index 2fb5f0db..d0c54064 100644 --- a/projects/pathway-browser/src/environments/environment.local.ts +++ b/projects/pathway-browser/src/environments/environment.local.ts @@ -23,6 +23,11 @@ export const CONTENT_SERVICE = IS_CURATOR : `http://127.0.0.1:8686`; export const VERSION_FALLBACK = `https://newcurator.reactome.org/ContentService/data/database/version`; export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; +// The headless render service: diagram figures for documents (GIF, PPTX, PDF), +// rendered by the site's own renderer rather than by the Java exporters' +// reimplementation of it. Served under the site's own origin by a proxy, so a +// render can only be commissioned through whatever fronts the site. +export const RENDER_SERVICE = `${environment.host}/RenderService`; export const EXPERIMENT_SERVICE = `${environment.host}/experiment`; export const RESTFUL_API = `${environment.host}/ReactomeRESTfulAPI/RESTfulWS`; export const DOWNLOAD = `${environment.host}/download/current`; diff --git a/projects/pathway-browser/src/environments/environment.production.ts b/projects/pathway-browser/src/environments/environment.production.ts index 6bbf318f..c39b6dfe 100644 --- a/projects/pathway-browser/src/environments/environment.production.ts +++ b/projects/pathway-browser/src/environments/environment.production.ts @@ -21,6 +21,11 @@ export const ICON_HOST = 'https://dev.reactome.org'; export const CONTENT_SERVICE = `${environment.host}/${IS_CURATOR ? 'GraphContentService' : 'ContentService'}`; export const VERSION_FALLBACK = `https://newcurator.reactome.org/ContentService/data/database/version`; export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; +// The headless render service: diagram figures for documents (GIF, PPTX, PDF), +// rendered by the site's own renderer rather than by the Java exporters' +// reimplementation of it. Served under the site's own origin by a proxy, so a +// render can only be commissioned through whatever fronts the site. +export const RENDER_SERVICE = `${environment.host}/RenderService`; export const EXPERIMENT_SERVICE = `${environment.host}/experiment`; export const RESTFUL_API = `${environment.host}/ReactomeRESTfulAPI/RESTfulWS`; export const DOWNLOAD = `${environment.host}/download/current`; diff --git a/projects/pathway-browser/src/environments/environment.release.ts b/projects/pathway-browser/src/environments/environment.release.ts index 01c6d388..c79f42c0 100644 --- a/projects/pathway-browser/src/environments/environment.release.ts +++ b/projects/pathway-browser/src/environments/environment.release.ts @@ -18,6 +18,11 @@ export const ICON_HOST = 'https://dev.reactome.org'; export const CONTENT_SERVICE = `${environment.host}/${IS_CURATOR ? 'GraphContentService' : 'ContentService'}`; export const VERSION_FALLBACK = `https://newcurator.reactome.org/ContentService/data/database/version`; export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; +// The headless render service: diagram figures for documents (GIF, PPTX, PDF), +// rendered by the site's own renderer rather than by the Java exporters' +// reimplementation of it. Served under the site's own origin by a proxy, so a +// render can only be commissioned through whatever fronts the site. +export const RENDER_SERVICE = `${environment.host}/RenderService`; export const EXPERIMENT_SERVICE = `${environment.host}/experiment`; export const RESTFUL_API = `${environment.host}/ReactomeRESTfulAPI/RESTfulWS`; export const DOWNLOAD = `${environment.host}/download/current`; diff --git a/projects/pathway-browser/src/environments/environment.ts b/projects/pathway-browser/src/environments/environment.ts index e53db7bf..3c627a59 100644 --- a/projects/pathway-browser/src/environments/environment.ts +++ b/projects/pathway-browser/src/environments/environment.ts @@ -59,6 +59,11 @@ export const VERSION_FALLBACK = `https://newcurator.reactome.org/ContentService/ // metadata endpoints (e.g. the data-schema model) when the primary curator // CONTENT_SERVICE is slow or unavailable, so those pages still render. export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; +// The headless render service: diagram figures for documents (GIF, PPTX, PDF), +// rendered by the site's own renderer rather than by the Java exporters' +// reimplementation of it. Served under the site's own origin by a proxy, so a +// render can only be commissioned through whatever fronts the site. +export const RENDER_SERVICE = `${environment.host}/RenderService`; export const EXPERIMENT_SERVICE = `${environment.host}/experiment`; export const RESTFUL_API = `${environment.host}/ReactomeRESTfulAPI/RESTfulWS`; export const DOWNLOAD = `${environment.host}/download/current`; diff --git a/proxy.conf.js b/proxy.conf.js index 7d8048a6..4a5431e1 100644 --- a/proxy.conf.js +++ b/proxy.conf.js @@ -26,6 +26,18 @@ module.exports = { ...Object.fromEntries( ['/ContentService', '/AnalysisService', '/ExperimentDigester'].map(localService) ), + // The headless render service (tools/render/service.mjs), which produces the + // formats the Java exporters used to: GIF, PPTX and anything else a document + // needs. It binds to loopback and is reached only through this proxy, so + // whatever fronts the site decides who may commission a render -- a render + // costs seconds, and crawlers hitting the old /ContentService/exporter/* + // endpoints are what exhausted Tomcat's heap and took the origin down. + '/RenderService': { + target: 'http://127.0.0.1:4310', + secure: false, + changeOrigin: true, + pathRewrite: { '^/RenderService': '' }, + }, // GSAServer is not part of the local Tomcat deployment, so it always goes out // -- but to the GSA service itself, not via dev.reactome.org. That host // resolves back through this machine's Apache, which is the same hairpin that diff --git a/tools/render/README.md b/tools/render/README.md index eea6d587..c20d2a69 100644 --- a/tools/render/README.md +++ b/tools/render/README.md @@ -5,8 +5,8 @@ browser, by driving the site's own render page. ```bash node tools/render/render.mjs --pathway R-HSA-73857 --format svg --out out.svg -node tools/render/render.mjs --pathway R-HSA-109606 --format pdf --token -node tools/render/render.mjs --pathway R-HSA-109606 --format gif --token +node tools/render/render.mjs --pathway R-HSA-109606 --format pdf --token "$ANALYSIS_TOKEN" +node tools/render/render.mjs --pathway R-HSA-109606 --format gif --token "$ANALYSIS_TOKEN" node tools/render/render.mjs --pathway R-HSA-73857 --format pptx --out slide.pptx node tools/render/render.mjs --format svg --out genome-wide.svg # no pathway ``` @@ -131,9 +131,9 @@ proxy for it. ```bash node tools/render/service.mjs curl -o out.svg 'http://127.0.0.1:4310/render/R-HSA-73857.svg' -curl -o out.pdf 'http://127.0.0.1:4310/render/R-HSA-109606.pdf?token=' +curl -o out.pdf "http://127.0.0.1:4310/render/R-HSA-109606.pdf?token=$ANALYSIS_TOKEN" curl -o gw.svg 'http://127.0.0.1:4310/render/genome-wide.svg' -curl -o out.gif 'http://127.0.0.1:4310/render/R-HSA-109606.gif?token=' +curl -o out.gif "http://127.0.0.1:4310/render/R-HSA-109606.gif?token=$ANALYSIS_TOKEN" curl -o out.pptx 'http://127.0.0.1:4310/render/R-HSA-109606.pptx' curl -s http://127.0.0.1:4310/health ``` diff --git a/tools/render/render.mjs b/tools/render/render.mjs index c5b8aea2..dd67620e 100755 --- a/tools/render/render.mjs +++ b/tools/render/render.mjs @@ -6,7 +6,7 @@ * there is one implementation of the render itself. * * node tools/render/render.mjs --pathway R-HSA-73857 --format svg --out out.svg - * node tools/render/render.mjs --pathway R-HSA-109606 --format pdf --token + * node tools/render/render.mjs --pathway R-HSA-109606 --format pdf --token "$ANALYSIS_TOKEN" * node tools/render/render.mjs --format svg --out genome-wide.svg * * --pathway stable id; omit for the genome-wide view diff --git a/tools/render/service.mjs b/tools/render/service.mjs index 79638f41..f76a770c 100644 --- a/tools/render/service.mjs +++ b/tools/render/service.mjs @@ -66,6 +66,20 @@ const ATTACHMENT = new Set(['pptx']); const stats = { served: 0, hits: 0, rendered: 0, failed: 0, rejected: 0 }; +/** + * Keep a request's numbers inside what this box can draw. + * + * These arrive from a query string, and the service is reachable through the + * site, so they are attacker-controlled: scale=50 asks for a canvas of a few + * hundred million pixels, which is an out-of-memory kill rather than an error. + * Clamped rather than rejected -- a number slightly out of range is a caller + * being optimistic, not a caller being wrong. + */ +function clamp(value, low, high, fallback) { + const number = Number(value); + return Number.isFinite(number) ? Math.min(high, Math.max(low, number)) : fallback; +} + // ---- browser ------------------------------------------------------------- // One browser for the process, a fresh page per render. Reusing a page leaks // state between renders -- a stale analysis token being the obvious one -- and a @@ -248,10 +262,14 @@ app.get('/render/:name.:ext', async (req, res) => { pathway: name === 'genome-wide' ? '' : name, format, token: typeof req.query.token === 'string' ? req.query.token : '', - scale: Number(req.query.scale || 2), + // 2 is both the default and the ceiling. A diagram's own coordinate space + // is around 6000px, so scale 4 asks for a 320-megapixel canvas -- it does + // render, which is worse than failing: one query string costs the box a + // gigabyte and nobody has needed more detail than the default. + scale: clamp(req.query.scale ?? 2, 0.25, 2, 2), subpathways: req.query.subpathways !== 'false', - delay: Number(req.query.delay || 1000), - maxSize: Number(req.query.maxSize || 2000), + delay: clamp(req.query.delay ?? 1000, 50, 10_000, 1000), + maxSize: clamp(req.query.maxSize ?? 2000, 200, 4000, 2000), }; try { From 9f1aa39c53d7123bdb61ea12d434516e78f9ba5a Mon Sep 17 00:00:00 2001 From: Adam Wright Date: Thu, 20 Aug 2026 02:12:09 +0000 Subject: [PATCH 009/136] fix(render): draw the GIF at a size its labels can be read at The animation was sharp and the words in it were gone. A pathway's coordinate space is around 6000px wide and its font sizes are chosen for 1:1, so fitting it into 2000px scaled 8pt type to under 3pt and softened every arrow. Zooming in then magnified a downscale, which is not the same as detail. It renders at the diagram's own size now, and that is affordable because frames are differenced. 255 palette colours carry the picture and one index is kept back to mean "unchanged": every pixel equal to the previous frame becomes that index, written with disposal 1 so the previous frame shows through. Between two samples of an expression analysis only the node fills differ -- compartments, edges and every label are identical -- and a long run of one repeated index is what LZW compresses best. R-HSA-109606 over four samples: 3.1 MB undifferenced at full size, 966 KB differenced, against 735 KB for the unreadable 2000px version. Three times the resolution for 30% more bytes, and each extra sample now costs what it changes rather than what it contains. --max-size and ?maxSize= still cap it for anyone who wants a smaller file. Deployment is a container rather than a systemd unit, so a wedged browser or an out-of-memory kill costs one request instead of the feature. node:22 plus Chromium rather than a Playwright image: those carry three browsers and land around 3 GB, this needs one, and node:22 is already here as the app image's base. tools/render/ has its own package.json for the same reason -- four packages instead of the site's whole tree -- and render-deps.spec.ts fails if its pins drift from the root's, which matters most for Playwright, whose browser download is version-locked to the library. The container publishes no port. It is reachable from the app container and nowhere else, which keeps the property that matters: a render can only be commissioned through whatever fronts the site. Co-Authored-By: Claude Opus 5 --- deploy/render-service/Dockerfile | 40 +++++++++ deploy/render-service/README.md | 85 +++++++++++-------- deploy/render-service/reactome-render.service | 49 ----------- docker-compose.yml | 40 +++++++++ proxy.conf.js | 4 +- tools/render/README.md | 14 +++ tools/render/gif.mjs | 71 ++++++++++++---- tools/render/package.json | 25 ++++++ tools/render/render-deps.spec.ts | 32 +++++++ tools/render/render.mjs | 4 +- tools/render/service.mjs | 3 +- vitest.config.ts | 5 +- 12 files changed, 266 insertions(+), 106 deletions(-) create mode 100644 deploy/render-service/Dockerfile delete mode 100644 deploy/render-service/reactome-render.service create mode 100644 tools/render/package.json create mode 100644 tools/render/render-deps.spec.ts diff --git a/deploy/render-service/Dockerfile b/deploy/render-service/Dockerfile new file mode 100644 index 00000000..ffd6bcf0 --- /dev/null +++ b/deploy/render-service/Dockerfile @@ -0,0 +1,40 @@ +# The headless render service: diagram figures for documents, drawn by the site's +# own renderer. +# +# Built from node:22 plus Chromium rather than from a Playwright image. The +# Playwright images carry three browsers and land around 3 GB; this needs one +# browser, and node:22 is already on the box as the app image's base, so its +# layers are shared rather than downloaded again. +FROM node:22 + +# Chromium and the system libraries it needs. --with-deps runs apt, so it has to +# happen before dropping root. Chromium only: nothing here opens Firefox. +WORKDIR /render +COPY tools/render/package.json ./ +RUN npm install --omit=dev \ + && npx playwright install --with-deps chromium \ + && npm cache clean --force + +COPY tools/render/*.mjs ./ + +# Renders arrive from the network. Nothing here needs root, and the browser is +# the part running untrusted-ish input (a page of our own, but a page). +RUN mkdir -p /cache && chown -R node:node /cache /render +USER node + +ENV RENDER_HOST=0.0.0.0 \ + RENDER_PORT=4310 \ + RENDER_CACHE=/cache + +# 0.0.0.0 inside the container, and the port deliberately NOT published to the +# host in docker-compose.yml. The service is reachable from the app container +# and nowhere else, which keeps the property that matters: a render can only be +# commissioned through whatever fronts the site. +EXPOSE 4310 + +# A render is a page load, a wait and an export; if the browser wedges, the +# process is the thing to replace. Compose restarts it. +HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \ + CMD node -e "fetch('http://127.0.0.1:4310/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))" + +CMD ["node", "service.mjs"] diff --git a/deploy/render-service/README.md b/deploy/render-service/README.md index 3520a072..c12c8937 100644 --- a/deploy/render-service/README.md +++ b/deploy/render-service/README.md @@ -1,65 +1,80 @@ # Deploying the render service -The service itself is `tools/render/service.mjs`; this directory is how it gets -run on the dev box, and what still needs deciding before it fronts the public -site. +The service is `tools/render/service.mjs`. This directory is how it gets run: a +container that compose restarts, rather than something installed on a host. -## Install +## Running it ```bash -sudo cp deploy/render-service/reactome-render.service /etc/systemd/system/ -sudo systemctl daemon-reload -sudo systemctl enable --now reactome-render -curl -s http://127.0.0.1:4310/health +docker compose up -d render # builds on first run +docker compose logs -f render +docker compose exec render node -e "fetch('http://127.0.0.1:4310/health').then(r=>r.text()).then(console.log)" ``` -Until that is done it runs under `nohup`, which does not survive a reboot: +`restart: unless-stopped` means a wedged browser or an out-of-memory kill costs +one request rather than the feature; there is no state to lose except the cache, +which is on the `render-cache` volume and survives replacement. + +The image is `node:22` plus Chromium, not a Playwright image. The Playwright +images carry three browsers and land around 3 GB; this needs one, and node:22 is +already here as the app image's base, so the layers are shared. `tools/render/` +has its own `package.json` for the same reason — four packages instead of the +site's whole tree — and `render-deps.spec.ts` fails if its pins drift from the +root's. That matters most for Playwright, whose browser download is +version-locked to the library. + +Running on the host instead, without a container: ```bash -RENDER_CACHE=/home/awright/render-cache RENDER_BASE=http://localhost:4200 \ +RENDER_CACHE=~/render-cache RENDER_BASE=http://localhost:4200 \ setsid nohup node tools/render/service.mjs > ~/render-service.log 2>&1 & ``` +That is what beta runs today. It does not survive a reboot, which is the reason +to move to the container. + ## How the site reaches it -`proxy.conf.js` maps `/RenderService` to `127.0.0.1:4310`, and `serve-prod.js` -reads that same table, so beta and the dev server both proxy it. The app builds -its URLs from `RENDER_SERVICE` in `environments/environment.ts`, which is -`window.location.origin + '/RenderService'` — so it follows whatever host the -bundle is served from, exactly as `CONTENT_SERVICE` does. +`proxy.conf.js` maps `/RenderService` to `RENDER_TARGET`, defaulting to +`127.0.0.1:4310` for a host run; compose sets it to `http://render:4310`. +`serve-prod.js` reads the same table, so beta and the dev server both proxy it, +and the app builds its URLs from `RENDER_SERVICE` — `window.location.origin + +'/RenderService'` — exactly as it does for `CONTENT_SERVICE`. -Nothing was added to Apache: beta.reactome.org already forwards everything to -:4200. +Nothing was added to Apache: beta.reactome.org already forwards to :4200. -## Before this fronts reactome.org +## The property to preserve -The service binds to loopback and is reached only through the site, which is the -first line of defence: a render costs seconds, and **crawlers hitting the old +**The service must not be publicly addressable in its own right.** A render costs +seconds of CPU and a browser's worth of memory, and crawlers hitting the old `/ContentService/exporter/*` endpoints are what exhausted Tomcat's heap and took -the origin down**. Proxying `/RenderService` means the public can now commission -renders on beta, and three things bound the damage: +the origin down. So the container publishes no port: it is reachable from the app +container and nowhere else, and every render is commissioned through whatever +fronts the site. + +Three things bound the damage when it is fronted: - two concurrent renders, eight queued, `503` with `Retry-After` beyond that -- a content-addressed disk cache, so a repeated request is a file read (7ms) +- a content-addressed disk cache, so a repeat is a file read (~7ms) - an id that does not resolve is rejected by one backend call, before a browser +- every number in the query string is clamped — `scale=50` asked for a + 320-megapixel canvas and got it, which is worse than an error -What is **not** yet in place for production: +## Before this fronts reactome.org -- **Rate limiting at Apache.** There is an `add-rate-limit.sh` on this box for - exactly this. A bounded queue keeps the service alive under a crawl; it does - not stop the crawl. -- **Serving the cache directly.** The right shape is Apache serving - `/home/awright/render-cache` for a hit and only falling through to node on a - miss, so a popular figure never involves the renderer at all. -- **A cache key per release.** `RENDER_CACHE_KEY` exists for this; bump it when - the data changes or figures will outlive their diagrams. +- **Rate limiting at Apache.** A bounded queue keeps the service alive under a + crawl; it does not stop the crawl. There is an `add-rate-limit.sh` on the dev + box for this. +- **Apache serving the cache directly** on a hit, falling through to the + container only on a miss, so a popular figure never involves the renderer. +- **A cache key per release.** `RENDER_CACHE_KEY` exists for it; bump it when the + data changes or figures outlive their diagrams. ## Watching it ```bash -curl -s http://127.0.0.1:4310/health # counters: served, hits, rendered, failed, rejected -journalctl -u reactome-render -f # once installed -du -sh /home/awright/render-cache +curl -s http://127.0.0.1:4310/health # served, hits, rendered, failed, rejected +docker compose exec render du -sh /cache ``` `rejected` counts `503`s and is deliberately separate from `failed`: a rejection diff --git a/deploy/render-service/reactome-render.service b/deploy/render-service/reactome-render.service deleted file mode 100644 index 30ff5db1..00000000 --- a/deploy/render-service/reactome-render.service +++ /dev/null @@ -1,49 +0,0 @@ -# The headless render service, which produces the diagram figures a document -# needs -- GIF, PPTX, PDF, PNG, SVG -- by driving the site's own renderer. -# -# Install (needs root): -# sudo cp deploy/render-service/reactome-render.service /etc/systemd/system/ -# sudo systemctl daemon-reload -# sudo systemctl enable --now reactome-render -# systemctl status reactome-render -# -# It listens on loopback only. The site's own origin proxies /RenderService to -# it (see proxy.conf.js, which serve-prod.js reads), so a render can only be -# commissioned through whatever fronts the site -- never directly. - -[Unit] -Description=Reactome headless diagram render service -Documentation=file:///home/awright/git/WebsiteAngular/tools/render/README.md -After=network.target -# It renders by loading the site, so it is useless without it. Wants rather -# than Requires: if the site restarts, the renderer should wait, not die. -Wants=network-online.target - -[Service] -Type=simple -User=awright -WorkingDirectory=/home/awright/git/WebsiteAngular -ExecStart=/usr/bin/node tools/render/service.mjs -Environment=RENDER_HOST=127.0.0.1 -Environment=RENDER_PORT=4310 -Environment=RENDER_BASE=http://localhost:4200 -Environment=RENDER_CACHE=/home/awright/render-cache -# A render costs seconds and a browser costs memory; this box also runs the -# site, the backend and Neo4j. -Environment=RENDER_CONCURRENCY=2 -Environment=RENDER_QUEUE=8 -Restart=always -RestartSec=5 -# Chromium is the memory cost here, not node. A diagram at 6000px is a large -# canvas, and a GIF holds one frame of it at a time. -MemoryMax=3G - -# It writes to exactly one directory and needs nothing else. -NoNewPrivileges=true -PrivateTmp=true -ProtectSystem=full -ProtectHome=read-only -ReadWritePaths=/home/awright/render-cache - -[Install] -WantedBy=multi-user.target diff --git a/docker-compose.yml b/docker-compose.yml index 9e6497f8..85038dfd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,5 +28,45 @@ services: - NG_CLI_ANALYTICS=false - NODE_ENV=development - REACTOME_BACKEND=http://host.docker.internal:8080 + # The render service is a sibling container, not loopback. proxy.conf.js + # reads this and otherwise defaults to 127.0.0.1:4310, which is correct + # when both run on the host. + - RENDER_TARGET=http://render:4310 stdin_open: true tty: true + + # Diagram figures for documents -- GIF, PPTX, PDF, PNG, SVG -- rendered by + # driving the app's own render page, so an exported figure cannot drift from + # what a curator sees. Replaces the Java exporters, which reimplement the + # drawing. + render: + build: + context: . + dockerfile: deploy/render-service/Dockerfile + # A render is a browser holding a large canvas, and this box also runs the + # site, Tomcat and Neo4j. If it wedges or runs out of memory, restarting is + # the right response -- there is no state to lose but the cache, which is on + # a volume. + restart: unless-stopped + # Deliberately no `ports:`. The service is reachable from the app container + # and nowhere else, so a render can only be commissioned through whatever + # fronts the site -- crawlers on the old /ContentService/exporter/* URLs are + # what exhausted Tomcat's heap and took the origin down. + environment: + # The app container is what it renders. + - RENDER_BASE=http://app:4200 + - RENDER_CACHE=/cache + - RENDER_CONCURRENCY=2 + - RENDER_QUEUE=8 + volumes: + - render-cache:/cache + depends_on: + - app + # Chromium's default 64 MB /dev/shm is not enough for a 6000px canvas; a + # renderer that fails only on large diagrams is the usual symptom. + shm_size: '1gb' + +volumes: + # Survives a container replacement, which is the point: a cached figure is a + # file read, and rebuilding the cache means paying for every render again. + render-cache: diff --git a/proxy.conf.js b/proxy.conf.js index 4a5431e1..ae455ddf 100644 --- a/proxy.conf.js +++ b/proxy.conf.js @@ -32,8 +32,10 @@ module.exports = { // whatever fronts the site decides who may commission a render -- a render // costs seconds, and crawlers hitting the old /ContentService/exporter/* // endpoints are what exhausted Tomcat's heap and took the origin down. + // In compose the service is another container, so the target has to be its + // service name; on the host it is loopback. Same shape as REACTOME_BACKEND. '/RenderService': { - target: 'http://127.0.0.1:4310', + target: process.env.RENDER_TARGET || 'http://127.0.0.1:4310', secure: false, changeOrigin: true, pathRewrite: { '^/RenderService': '' }, diff --git a/tools/render/README.md b/tools/render/README.md index c20d2a69..5fad31f6 100644 --- a/tools/render/README.md +++ b/tools/render/README.md @@ -37,6 +37,20 @@ palette is built from every frame, not the first — one frame's palette shifts colours on samples whose values land elsewhere on the scale — which is why the frames are drawn twice and never accumulated. +It renders at the diagram's own size, because that is where its labels are +legible: a pathway's coordinate space is around 6000px wide and its font sizes +are chosen for 1:1, so fitting it into 2000px scaled 8pt type to under 3pt. The +words were unreadable and the arrows were soft. + +That is affordable because **frames are differenced**. 255 palette colours are +used for the picture and one index is kept back to mean "unchanged"; every pixel +equal to the previous frame becomes that index, written with disposal 1 so the +previous frame shows through. Between two samples only the node fills differ — +compartments, edges and every label are identical — and a long run of one +repeated index is what LZW compresses best. R-HSA-109606 over four samples: +**3.1 MB undifferenced at full size, 966 KB differenced**, against 735 KB for the +unreadable 2000px version. Three times the resolution for 30% more bytes. + Illustrated pathways animate too, through `EhldService.rasterise`. An EHLD is inline SVG, and its styling comes from the page's stylesheets rather than the markup, so it has to be inlined before a serialised copy means anything. diff --git a/tools/render/gif.mjs b/tools/render/gif.mjs index 05d45de1..dec18b98 100644 --- a/tools/render/gif.mjs +++ b/tools/render/gif.mjs @@ -22,15 +22,18 @@ export const MAX_FRAMES = 50; export const DEFAULT_DELAY = 1000; /** - * Longest side of the animation, in pixels. + * Longest side of the animation in pixels, or 0 to draw it at its own size. * - * A diagram's own coordinate space is large -- an ordinary pathway exports - * around 6000px wide -- and a GIF pays for that once per frame. Left uncapped, - * a four-sample analysis came out at 3MB and a twenty-sample one would be - * unusable. Fitting to 2000px keeps labels legible at the size a figure is - * actually looked at. + * Zero by default, because a diagram's coordinate space *is* its legible size: + * label font sizes are chosen for 1:1. Fitting a 6000px pathway into 2000px + * scales 8pt text to under 3pt, which is what "I can't read the words when I + * zoom in" means -- the animation was sharp, and the type was gone. + * + * What made a cap look necessary was paying for every pixel of every frame. + * Frames are differenced now (see below), so a sample costs what it changes + * rather than what it contains, and the full-size version is affordable. */ -export const MAX_SIZE = 2000; +export const MAX_SIZE = 0; const require = createRequire(import.meta.url); @@ -102,7 +105,7 @@ export async function gifFromPage( let probe = await capture(frames[0], null, scale); const natural = [probe.width, probe.height]; const longest = Math.max(probe.width, probe.height); - const fit = longest > maxSize ? (scale * maxSize) / longest : scale; + const fit = maxSize && longest > maxSize ? (scale * maxSize) / longest : scale; const size = fit === scale ? probe : await capture(frames[0], null, fit); // A full-size frame is tens of megabytes; do not hold one that is not // going into the animation. @@ -122,25 +125,55 @@ export async function gifFromPage( } } - const palette = quantize(new Uint8Array(sampled), 256); + // 255 colours, not 256: one index is kept back to mean "unchanged", which + // is what makes the full-size animation affordable. + const colours = quantize(new Uint8Array(sampled), 255); + const clear = colours.length; + const palette = [...colours, [0, 0, 0]]; const gif = GIFEncoder(); const checksums = []; + let previous = null; + let changedPixels = 0; + for (const [index, sample] of frames.entries()) { const frame = await capture(sample, size, fit); - const indexed = applyPalette(frame.data, palette); + const indexed = applyPalette(frame.data, colours); + + // Cheap fingerprint of the frame as drawn, before differencing, to catch + // an animation whose frames are all the same picture -- a + // plausible-looking file that shows nothing. + let checksum = 0; + for (let at = 0; at < indexed.length; at += 101) checksum = (checksum + indexed[at]) | 0; + checksums.push(checksum); + + let written = indexed; + if (previous) { + // Only what changed. Between two samples of an expression analysis + // that is the node fills and nothing else -- the compartments, the + // edges and every label are identical -- and a run of one repeated + // index is what LZW compresses best. Disposal 1 leaves the previous + // frame in place, so a transparent pixel means "what was already + // here". + written = new Uint8Array(indexed); + let changed = 0; + for (let at = 0; at < written.length; at++) { + if (written[at] === previous[at]) written[at] = clear; + else changed++; + } + changedPixels += changed; + } + previous = indexed; + // The palette goes in once, as the global colour table. Passing it again // writes a local table per frame, which is the same colours at the cost // of a kilobyte each. - gif.writeFrame(indexed, frame.width, frame.height, { + gif.writeFrame(written, frame.width, frame.height, { delay, - ...(index === 0 ? { palette } : {}), + ...(index === 0 + ? { palette } + : { transparent: true, transparentIndex: clear, dispose: 1 }), }); - // Cheap fingerprint, to catch an animation whose frames are all the - // same picture -- a plausible-looking file that shows nothing. - let checksum = 0; - for (let at = 0; at < indexed.length; at += 101) checksum = (checksum + indexed[at]) | 0; - checksums.push(checksum); } gif.finish(); @@ -159,6 +192,8 @@ export async function gifFromPage( samples: samples.length, distinct: new Set(checksums).size, natural, + colours: colours.length, + changedPixels, }; }, { scale, delay, maxFrames: MAX_FRAMES, maxSize } @@ -175,6 +210,8 @@ export async function gifFromPage( frames: result.frames, samples: result.samples, distinct: result.distinct, + colours: result.colours, + changedPixels: result.changedPixels, size: [result.width, result.height], natural: result.natural, truncated: Math.max(0, result.samples - result.frames), diff --git a/tools/render/package.json b/tools/render/package.json new file mode 100644 index 00000000..2880e0e6 --- /dev/null +++ b/tools/render/package.json @@ -0,0 +1,25 @@ +{ + "name": "reactome-render-service", + "version": "1.0.0", + "private": true, + "type": "module", + "description": "Renders Reactome diagrams by driving the site's own render page", + "comment": [ + "Its own manifest so the deployed container installs four packages rather", + "than the site's whole dependency tree -- the difference between a ~400 MB", + "image and a ~3 GB one. Node resolves upward from the importing file, so the", + "CLI still runs from the repo root against the root node_modules; this is", + "only what a container needs.", + "Versions must match the root package.json. render-deps.spec.ts fails if they", + "drift." + ], + "scripts": { + "start": "node service.mjs" + }, + "dependencies": { + "@playwright/test": "^1.58.2", + "express": "4.18.2", + "fflate": "0.8.2", + "gifenc": "1.0.3" + } +} diff --git a/tools/render/render-deps.spec.ts b/tools/render/render-deps.spec.ts new file mode 100644 index 00000000..934533eb --- /dev/null +++ b/tools/render/render-deps.spec.ts @@ -0,0 +1,32 @@ +import { describe, expect, it } from 'vitest'; +import { readFileSync } from 'node:fs'; +import path from 'node:path'; + +/** + * The render service ships as its own container and so declares its own + * dependencies, rather than installing the site's entire tree to run four + * packages. Two manifests means they can drift, and a drift shows up as a + * container that behaves differently from the CLI everything was tested with -- + * a mismatched Playwright being the obvious one, since the browser it downloads + * is version-locked to the library. + */ +describe('render service dependencies', () => { + const read = (file: string) => + JSON.parse(readFileSync(path.resolve(__dirname, file), 'utf8')) as { + dependencies?: Record; + devDependencies?: Record; + }; + + it('pins the same versions as the root package.json', () => { + const root = read('../../package.json'); + const service = read('./package.json'); + const rootVersion = (name: string) => root.dependencies?.[name] ?? root.devDependencies?.[name]; + + for (const [name, version] of Object.entries(service.dependencies ?? {})) { + expect(rootVersion(name), `${name} is not a dependency of the root package`).toBeDefined(); + expect(version, `${name} differs between the render service and the root`).toBe( + rootVersion(name) + ); + } + }); +}); diff --git a/tools/render/render.mjs b/tools/render/render.mjs index dd67620e..67dd4cf8 100755 --- a/tools/render/render.mjs +++ b/tools/render/render.mjs @@ -16,7 +16,7 @@ * --base site to render against (default http://localhost:4200) * --scale raster scale factor (default 2; GIF never exceeds 1) * --delay GIF milliseconds per frame (default 1000) - * --max-size GIF longest side in pixels (default 2000) + * --max-size GIF longest side in pixels (default 0: the diagram's own size) * --no-subpathways leave out sub-pathway tints and labels * * GIF animates one frame per sample of an expression analysis, so it wants a @@ -57,7 +57,7 @@ try { token: flag('token', ''), scale: Number(flag('scale', '2')), delay: Number(flag('delay', '1000')), - maxSize: Number(flag('max-size', '2000')), + maxSize: Number(flag('max-size', '0')), subpathways: !args.includes('--no-subpathways'), }); diff --git a/tools/render/service.mjs b/tools/render/service.mjs index f76a770c..8c89a423 100644 --- a/tools/render/service.mjs +++ b/tools/render/service.mjs @@ -269,7 +269,8 @@ app.get('/render/:name.:ext', async (req, res) => { scale: clamp(req.query.scale ?? 2, 0.25, 2, 2), subpathways: req.query.subpathways !== 'false', delay: clamp(req.query.delay ?? 1000, 50, 10_000, 1000), - maxSize: clamp(req.query.maxSize ?? 2000, 200, 4000, 2000), + // 0 means "the diagram's own size", which is where its labels are legible. + maxSize: clamp(req.query.maxSize ?? 0, 0, 8000, 0), }; try { diff --git a/vitest.config.ts b/vitest.config.ts index eab2d6fb..88d920e4 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -19,7 +19,10 @@ export default defineConfig({ // src/test-setup.ts over to Analog's zone setup and BrowserTestingModule. // Worth doing when we next add component-level unit tests; today every // component is covered through e2e/ instead. - include: ['{src,projects}/**/*.spec.ts'], + // tools/ is included too: the render service ships as its own container + // with its own manifest, and nothing else would notice it drifting from the + // root's. + include: ['{src,projects,tools}/**/*.spec.ts'], css: false, server: { deps: { From ec7761b9e9be56cbfd5489a40a0c0234482f8002 Mon Sep 17 00:00:00 2001 From: Adam Wright Date: Thu, 20 Aug 2026 02:18:53 +0000 Subject: [PATCH 010/136] fix(render): make a renderer change reach a browser that already has a figure The full-size GIF shipped and curators kept getting the 2000px one. Nothing was wrong with the renderer: the old file was in Cloudflare and in their browsers, and neither was ever going to ask again. Figures are served `public`, so Cloudflare stores them and keeps serving what it stored with the max-age it stored it under -- a day. Reloading the page does not touch it either, because a download link's URL is not a page subresource and is never revalidated. And Cloudflare's own Browser Cache TTL overrides what the service sends: 300s went out as 4h. So the address has to change, which is what RENDER_VERSION in the app does. The service ignores the parameter, so both versions of a figure share one entry in its disk cache, and everything downstream sees a new resource. Bump it with RENDER_CACHE_KEY whenever the renderer's output changes; the table in deploy/render-service/README.md says which invalidates what. Also an ETag, from the same key -- everything that determines the bytes is in it -- answered before any render happens, so a repeat download is a round trip rather than a browser holding a stale figure or the box drawing one twice. Verified by clicking the button rather than by reading the code: the download comes out 5775x2366, and cf-cache-status is a MISS on the versioned URL. Co-Authored-By: Claude Opus 5 --- deploy/render-service/README.md | 20 ++++++++++++ .../download-tab/download-tab.component.ts | 5 +++ .../src/app/services/download.service.ts | 17 ++++++++++ tools/render/service.mjs | 31 ++++++++++++++----- 4 files changed, 66 insertions(+), 7 deletions(-) diff --git a/deploy/render-service/README.md b/deploy/render-service/README.md index c12c8937..4aa0032b 100644 --- a/deploy/render-service/README.md +++ b/deploy/render-service/README.md @@ -70,6 +70,26 @@ Three things bound the damage when it is fronted: - **A cache key per release.** `RENDER_CACHE_KEY` exists for it; bump it when the data changes or figures outlive their diagrams. +## Two versions, and why + +Changing the renderer means two things have to be bumped together: + +| where | what it invalidates | +| ----------------------------------------- | -------------------------------------------- | +| `RENDER_CACHE_KEY` in `service.mjs` | the service's own disk cache, and the `ETag` | +| `RENDER_VERSION` in `download.service.ts` | every cache downstream, by changing the URL | + +Headers alone are not enough. A figure is served `public`, so Cloudflare stores +it and keeps serving that copy with the max-age it was stored under — a day, in +the case that sent curators a 2000px GIF after the full-size fix had shipped. +Reloading the page does not help, because a download link's URL is never +revalidated, and Cloudflare's Browser Cache TTL setting overrides the max-age the +service sends anyway (it rewrote 300s to 4h). The only thing every layer respects +is a different address. + +The service ignores the `v` parameter, so both versions of a figure share one +entry in its disk cache; only the downstream address changes. + ## Watching it ```bash diff --git a/projects/pathway-browser/src/app/details/tabs/download-tab/download-tab.component.ts b/projects/pathway-browser/src/app/details/tabs/download-tab/download-tab.component.ts index 84f0cc45..1eeaf4aa 100644 --- a/projects/pathway-browser/src/app/details/tabs/download-tab/download-tab.component.ts +++ b/projects/pathway-browser/src/app/details/tabs/download-tab/download-tab.component.ts @@ -18,6 +18,7 @@ import { DownloadService, DownloadTarget, includeSubpathways, + RENDER_VERSION, } from '../../../services/download.service'; import { DownloadButtonComponent, Icon } from './download-button/download-button.component'; import { MatDialog } from '@angular/material/dialog'; @@ -301,6 +302,10 @@ export class DownloadTabComponent { // Set only when turning them off, so the ordinary URL stays the short one // and the service's cache is not split by a parameter that says nothing. if (!includeSubpathways()) url.searchParams.set('subpathways', 'false'); + // Not read by the service. It is here so that a change to the renderer + // changes the address, which is the only thing a CDN or a browser respects + // once it has stored a figure. + url.searchParams.set('v', RENDER_VERSION); return url.toString(); } diff --git a/projects/pathway-browser/src/app/services/download.service.ts b/projects/pathway-browser/src/app/services/download.service.ts index 3b7a460f..772ec64e 100644 --- a/projects/pathway-browser/src/app/services/download.service.ts +++ b/projects/pathway-browser/src/app/services/download.service.ts @@ -37,6 +37,23 @@ export interface DownloadOptions { */ export const includeSubpathways = signal(true); +/** + * Which version of the renderer a downloaded figure came from. + * + * Carried in the URL of every server-rendered figure, purely so that changing + * the renderer changes the URL. Headers are not enough: a figure is served + * `public`, so Cloudflare stores it, and a stale entry keeps being served with + * the max-age it was stored under -- for a day, in the case that sent curators + * a 2000px GIF after the full-size fix had shipped. Reloading the page does not + * help either, because a download link's URL is never revalidated. + * + * Bump it whenever the renderer's output changes, together with + * RENDER_CACHE_KEY in tools/render/service.mjs. The service ignores the + * parameter, so the two versions of a figure share one entry in its own cache; + * everything downstream sees a new address. + */ +export const RENDER_VERSION = 'v2'; + export const defaultDownloadOptions: DownloadOptions = { animate: false, includeLegend: true, diff --git a/tools/render/service.mjs b/tools/render/service.mjs index 8c89a423..0827d723 100644 --- a/tools/render/service.mjs +++ b/tools/render/service.mjs @@ -46,7 +46,10 @@ const PORT = Number(process.env.RENDER_PORT || 4310); const HOST = process.env.RENDER_HOST || '127.0.0.1'; const BASE = process.env.RENDER_BASE || 'http://localhost:4200'; const CACHE = process.env.RENDER_CACHE || path.resolve('.render-cache'); -const CACHE_KEY = process.env.RENDER_CACHE_KEY || 'v1'; +// Bump this whenever the renderer's output changes, not only when the data +// does: it keys the disk cache AND is the ETag, so it is the only thing that +// tells a browser its copy is stale. v2 = full-size differenced GIFs. +const CACHE_KEY = process.env.RENDER_CACHE_KEY || 'v2'; const CONCURRENCY = Number(process.env.RENDER_CONCURRENCY || 2); // Generous next to a real render, which is 3-8s, but far short of the two // minutes a page that never becomes ready would otherwise hold a browser for. @@ -273,17 +276,31 @@ app.get('/render/:name.:ext', async (req, res) => { maxSize: clamp(req.query.maxSize ?? 0, 0, 8000, 0), }; + // Everything that determines the bytes is in the key, so it is also the + // validator -- and answering here means a repeat download costs a round trip + // rather than a render. + const etag = `"${cacheKey(params)}"`; + if (req.headers['if-none-match'] === etag) { + stats.served++; + res.setHeader('ETag', etag); + return res.status(304).end(); + } + try { const { bytes, cached } = await renderCached(params); stats.served++; res.setHeader('Content-Type', CONTENT_TYPE[format]); + res.setHeader('ETag', etag); res.setHeader('X-Render-Cache', cached ? 'hit' : 'miss'); - // Without a token a render is stable for a release; with one it lives about - // as long as the analysis does. - res.setHeader( - 'Cache-Control', - params.token ? 'private, max-age=3600' : 'public, max-age=86400' - ); + // Short, deliberately. A figure is stable for a release, and a day of + // caching would be right if the renderer were finished -- but it is not, and + // a browser that has a figure from an older renderer will not ask again: + // reloading the page does not revalidate a URL fetched by a download link. + // A curator downloaded a 2000px GIF and kept getting it back after the + // full-size fix shipped. Five minutes plus an ETag means a repeat download + // is still a 304 and a change still lands. Raise it when the renderer + // settles. + res.setHeader('Cache-Control', params.token ? 'private, max-age=300' : 'public, max-age=300'); res.setHeader( 'Content-Disposition', `${ATTACHMENT.has(format) ? 'attachment' : 'inline'}; ` + From 0f13ce387c14452c76b433981ac8ac3d40c33023 Mon Sep 17 00:00:00 2001 From: Adam Wright Date: Thu, 20 Aug 2026 02:26:32 +0000 Subject: [PATCH 011/136] fix(ci): let knip see the render tooling, and make the export theme explicit CI has been failing since the GIF work landed, and every failure -- including the two dependabot pull requests -- was the same two items: gifenc and fflate looked like unused dependencies. They are imported from tools/render, which knip was not configured to look at. It scans tools/**/*.mjs now, with the CLI, the service and the SVG harness as entry points, so the count is back to the baseline of 147 with more of the repo covered than before rather than less. MAX_FRAMES and renderUrl stopped being exported; nothing outside their own modules used them, and exporting a constant only makes it look like API. Also the theme, which was implicit and machine-dependent. DarkService defaults from localStorage and then from the browser's prefers-color-scheme, and the render page inherited whatever that decided -- so the same request could produce a light figure here and a dark one elsewhere, with one cache entry for both. ?dark=true now asks for dark and nothing else gives it. The dark palette is plumbed through and cached separately, but the download panel does not offer it, deliberately: it is a screen theme. Standalone it reads as muddy -- pale mauve compartments, and sub-pathway labels whose dark halos exist to sit on a dark canvas. Frame capture takes the diagram's own background colour rather than a hardcoded white, which is what made the dark case wrong in a way that would have looked like a renderer bug: a dark palette on a white ground is neither theme. And a regression caught on the way: setting the GIF's MAX_SIZE to 0 for "the diagram's own size" left PowerPoint's fallback raster computing scale from MAX_SIZE / longest, so it asked for a PNG at scale 0. The zip would still have cleared the size floor, because the SVG in it is the real picture -- a blank fallback nobody would find until the one viewer that needs it opened the file. It has its own constant now. Co-Authored-By: Claude Opus 5 --- knip.json | 6 ++-- .../src/app/render/render.component.ts | 30 ++++++++++++++++++- tools/render/README.md | 14 +++++++++ tools/render/gif.mjs | 2 +- tools/render/render-core.mjs | 20 +++++++++++-- tools/render/render.mjs | 2 ++ tools/render/service.mjs | 8 +++-- 7 files changed, 72 insertions(+), 10 deletions(-) diff --git a/knip.json b/knip.json index f98a8d58..a15109d5 100644 --- a/knip.json +++ b/knip.json @@ -20,9 +20,11 @@ "projects/website-angular/src/app/app.config.server.ts", "projects/website-angular/tina/config.ts", "src/app/app.elements.ts", - "projects/*/src/elements.ts" + "projects/*/src/elements.ts", + "tools/render/{render,service}.mjs", + "tools/svg-export-harness/*.mjs" ], - "project": ["src/**/*.ts", "projects/**/*.ts", "scripts/**/*.mjs"], + "project": ["src/**/*.ts", "projects/**/*.ts", "scripts/**/*.mjs", "tools/**/*.mjs"], "ignore": [ "**/*.d.ts", "**/__generated__/**", diff --git a/projects/pathway-browser/src/app/render/render.component.ts b/projects/pathway-browser/src/app/render/render.component.ts index 033f4fb9..44f2136b 100644 --- a/projects/pathway-browser/src/app/render/render.component.ts +++ b/projects/pathway-browser/src/app/render/render.component.ts @@ -18,6 +18,8 @@ import { ActivatedRoute } from '@angular/router'; import { SvgExporterService } from '../reacfoam/svg-exporter.service'; import { AnalysisService } from '../services/analysis.service'; import { EhldService } from '../services/ehld.service'; +import { DarkService } from '../services/dark.service'; +import type cytoscape from 'cytoscape'; import { defaultDownloadOptions } from '../services/download.service'; /** @@ -54,6 +56,7 @@ export class RenderComponent { private reacfoamExporter = inject(SvgExporterService); private analysis = inject(AnalysisService); private ehldService = inject(EhldService); + private dark = inject(DarkService); private route = inject(ActivatedRoute); /** @@ -64,6 +67,18 @@ export class RenderComponent { private readonly wantsSubpathways = this.route.snapshot.queryParamMap.get('subpathways') !== 'false'; + /** + * ?dark=true renders the dark theme. Light otherwise -- and explicitly so. + * + * The theme is not just the chrome: the diagram has its own dark palette, and + * DarkService picks a default from localStorage or, failing that, from the + * browser's prefers-color-scheme. Neither belongs anywhere near a figure. A + * renderer whose output depends on the machine it runs on is a renderer whose + * cache is lying, and "the exports changed colour and nobody touched + * anything" is a bad afternoon. + */ + private readonly wantsDark = this.route.snapshot.queryParamMap.get('dark') === 'true'; + readonly pathwayId = this.state.pathwayId as WritableSignal; readonly loading = this.dataState._currentPathway.isLoading; readonly hasEHLD = computed(() => this.dataState.currentPathway()?.hasEHLD === true); @@ -78,6 +93,8 @@ export class RenderComponent { private readonly stateForCaller = signal>({}); constructor() { + this.dark.isDark.set(this.wantsDark); + // The diagram waits on EventService.diagramPathway$ before it will load, // and the only thing that ever fed that stream was the viewport. Without // this the page draws the diagram's legend and nothing else, which is a @@ -293,7 +310,9 @@ export class RenderComponent { // that its styling comes from the page's stylesheets and has to be inlined // before the markup means anything on its own. const svg = document.querySelector('cr-render cr-ehld svg'); - if (svg) return await this.ehldService.rasterise(svg, scale, '#ffffff'); + if (svg) { + return await this.ehldService.rasterise(svg, scale, this.wantsDark ? '#0d1617' : '#ffffff'); + } throw new Error( this.reacfoam() @@ -339,6 +358,15 @@ export class RenderComponent { throw new Error('nothing on this page can export SVG'); } + /** The colour the diagram draws itself on, whichever theme is active. */ + private diagramBackground(cy: cytoscape.Core) { + const container = cy.container(); + const background = container ? getComputedStyle(container).backgroundColor : ''; + // A container with no background of its own would give "rgba(0, 0, 0, 0)", + // which is the transparency this exists to avoid. + return background && !background.startsWith('rgba(0, 0, 0, 0') ? background : '#ffffff'; + } + /** The drawn view as a PNG data URL. */ private exportPng(scale: number): string { const { instances } = this.exportableInstances(); diff --git a/tools/render/README.md b/tools/render/README.md index 5fad31f6..5cbbe4e0 100644 --- a/tools/render/README.md +++ b/tools/render/README.md @@ -23,6 +23,20 @@ node tools/render/render.mjs --format svg --out genome-wide.svg # no pathway | `--no-subpathways` | leave out sub-pathway tints and labels | | `--out` | output path | +## The theme is an explicit choice + +Light unless `?dark=true`. Not a preference to inherit: `DarkService` defaults +from `localStorage`, and failing that from the browser's `prefers-color-scheme`, +so a renderer that took either would produce different figures on different +machines — and a cache keyed on the request would happily serve one for the +other. + +Dark is plumbed through and cached separately, but it is worth knowing what it +gives you: the dark palette is designed for the screen, with the app's own dark +chrome around it. As a standalone figure it reads as muddy — pale mauve +compartments, and sub-pathway labels whose dark halos exist to sit on a dark +canvas. Nothing in the download panel offers it, deliberately. + ## GIF and PowerPoint These are the two formats the Java exporter still owned, and they are the two diff --git a/tools/render/gif.mjs b/tools/render/gif.mjs index dec18b98..518fc9f9 100644 --- a/tools/render/gif.mjs +++ b/tools/render/gif.mjs @@ -16,7 +16,7 @@ import { createRequire } from 'node:module'; import { readFileSync } from 'node:fs'; /** Frames past this are dropped rather than rendered; reported, never silent. */ -export const MAX_FRAMES = 50; +const MAX_FRAMES = 50; /** Milliseconds per frame. Slow enough to read the sample name on screen. */ export const DEFAULT_DELAY = 1000; diff --git a/tools/render/render-core.mjs b/tools/render/render-core.mjs index 0b7d7b29..1e1fd347 100644 --- a/tools/render/render-core.mjs +++ b/tools/render/render-core.mjs @@ -11,6 +11,17 @@ import { pptx } from './pptx.mjs'; /** Formats the render page can produce. */ export const FORMATS = ['svg', 'png', 'pdf', 'gif', 'pptx']; +/** + * Longest side of the raster PowerPoint falls back to when it cannot draw SVG. + * + * Its own constant, deliberately not the GIF's: that one is 0 now, meaning "the + * diagram's own size", and `MAX_SIZE / longest` with a zero would have asked for + * a PNG at scale 0. The zip would still have cleared the size floor, because the + * SVG in it is the real picture -- a blank fallback nobody looks at until the one + * viewer that needs it opens the file. + */ +const FALLBACK_MAX_SIZE = 2000; + /** Anything smaller than this is not a real render; see the Reacfoam notes. */ const MIN_BYTES = { svg: 2000, png: 5000, pdf: 5000, gif: 5000, pptx: 10_000 }; @@ -18,13 +29,15 @@ const MIN_BYTES = { svg: 2000, png: 5000, pdf: 5000, gif: 5000, pptx: 10_000 }; * The URL of the render page for a pathway. Omit the pathway for the * genome-wide view. */ -export function renderUrl({ base, pathway, token, subpathways = true }) { +function renderUrl({ base, pathway, token, subpathways = true, dark = false }) { const url = new URL( `${base.replace(/\/$/, '')}/PathwayBrowser/render${pathway ? '/' + pathway : ''}` ); if (token) url.searchParams.set('analysis', token); // Set only when turning them off, so the ordinary URL stays the short one. if (!subpathways) url.searchParams.set('subpathways', 'false'); + // Likewise: light is the default for a figure, so only dark is spelled out. + if (dark) url.searchParams.set('dark', 'true'); return url.toString(); } @@ -44,6 +57,7 @@ export async function render( token = '', scale = 2, subpathways = true, + dark = false, delay = DEFAULT_DELAY, maxSize = MAX_SIZE, timeout = 120_000, @@ -62,7 +76,7 @@ export async function render( page.on('console', onConsole); try { - await page.goto(renderUrl({ base, pathway, token, subpathways }), { + await page.goto(renderUrl({ base, pathway, token, subpathways, dark }), { waitUntil: 'load', timeout, }); @@ -153,7 +167,7 @@ async function pptxFromPage(page, { scale, title }) { // scale the fallback came out at 6MB, dwarfing the vector version PowerPoint // actually uses. Cap it at the same size the animation uses. const longest = Math.max(size.width, size.height); - const png = await pngBytes(page, Math.min(scale, MAX_SIZE / longest)); + const png = await pngBytes(page, Math.min(scale, FALLBACK_MAX_SIZE / longest)); return pptx({ svg, png, title, ...size }); } diff --git a/tools/render/render.mjs b/tools/render/render.mjs index 67dd4cf8..2c3814ae 100755 --- a/tools/render/render.mjs +++ b/tools/render/render.mjs @@ -18,6 +18,7 @@ * --delay GIF milliseconds per frame (default 1000) * --max-size GIF longest side in pixels (default 0: the diagram's own size) * --no-subpathways leave out sub-pathway tints and labels + * --dark render the dark theme (light by default, whatever the host prefers) * * GIF animates one frame per sample of an expression analysis, so it wants a * --token; without one it is a single frame. PPTX carries the SVG, which @@ -59,6 +60,7 @@ try { delay: Number(flag('delay', '1000')), maxSize: Number(flag('max-size', '0')), subpathways: !args.includes('--no-subpathways'), + dark: args.includes('--dark'), }); await writeFile(out, bytes); diff --git a/tools/render/service.mjs b/tools/render/service.mjs index 0827d723..2c4e9d89 100644 --- a/tools/render/service.mjs +++ b/tools/render/service.mjs @@ -33,7 +33,8 @@ * RENDER_CONCURRENCY simultaneous renders, default 2 * RENDER_QUEUE pending renders before 503, default 8 * - * Query parameters: token, scale, subpathways=false, delay and maxSize (GIF). + * Query parameters: token, scale, subpathways=false, dark=true, and delay and + * maxSize for GIF. */ import express from 'express'; import { chromium } from '@playwright/test'; @@ -124,11 +125,11 @@ function pump() { } // ---- cache --------------------------------------------------------------- -function cacheKey({ pathway, format, token, scale, subpathways, delay, maxSize }) { +function cacheKey({ pathway, format, token, scale, subpathways, delay, maxSize, dark }) { // The token is part of the key rather than a reason not to cache: repeat // requests for the same analysis are exactly what a report generator makes. return createHash('sha256') - .update([CACHE_KEY, pathway, format, token, scale, subpathways, delay, maxSize].join(' ')) + .update([CACHE_KEY, pathway, format, token, scale, subpathways, delay, maxSize, dark].join(' ')) .digest('hex'); } @@ -271,6 +272,7 @@ app.get('/render/:name.:ext', async (req, res) => { // gigabyte and nobody has needed more detail than the default. scale: clamp(req.query.scale ?? 2, 0.25, 2, 2), subpathways: req.query.subpathways !== 'false', + dark: req.query.dark === 'true', delay: clamp(req.query.delay ?? 1000, 50, 10_000, 1000), // 0 means "the diagram's own size", which is where its labels are legible. maxSize: clamp(req.query.maxSize ?? 0, 0, 8000, 0), From f66f6d00f88ee2ab2d6735d2f78f47f34cd41492 Mon Sep 17 00:00:00 2001 From: Adam Wright Date: Thu, 20 Aug 2026 02:36:35 +0000 Subject: [PATCH 012/136] refactor(render): read the container's dependencies from the root package.json A second manifest with its own pins was the obvious way to keep the image small and the wrong one. Dependabot only watches the root directory, so a bump there would have left the service's copy behind -- and the drift test I wrote to catch that would then have failed every dependabot pull request until someone edited a file dependabot cannot see. The express bump waiting in the queue would have hit it immediately. The Dockerfile now picks the four packages it needs out of the root manifest at build time, so there is one set of pins and nothing to keep in step. That matters most for Playwright, whose browser download is version-locked to the library: a mismatch there fails in a way that reads as a rendering bug. Co-Authored-By: Claude Opus 5 --- deploy/render-service/Dockerfile | 40 +++++++++++++++++++++++++------- deploy/render-service/README.md | 11 +++++---- tools/render/package.json | 25 -------------------- tools/render/render-deps.spec.ts | 32 ------------------------- vitest.config.ts | 5 +--- 5 files changed, 39 insertions(+), 74 deletions(-) delete mode 100644 tools/render/package.json delete mode 100644 tools/render/render-deps.spec.ts diff --git a/deploy/render-service/Dockerfile b/deploy/render-service/Dockerfile index ffd6bcf0..b98dd277 100644 --- a/deploy/render-service/Dockerfile +++ b/deploy/render-service/Dockerfile @@ -7,18 +7,42 @@ # layers are shared rather than downloaded again. FROM node:22 -# Chromium and the system libraries it needs. --with-deps runs apt, so it has to -# happen before dropping root. Chromium only: nothing here opens Firefox. WORKDIR /render -COPY tools/render/package.json ./ -RUN npm install --omit=dev \ + +# The four packages the service actually imports, at the versions the repo +# already pins -- taken from the root package.json rather than restated here. +# +# A second manifest with its own pins was the obvious way to do this and the +# wrong one: dependabot only watches the root, so a bump there would leave this +# behind, and a Playwright whose version does not match its browser download +# fails in a way that looks like a rendering bug. One source of truth means the +# container cannot disagree with the CLI everything was tested against. +# +# Adding an import to the service means adding it here too; `docker compose up +# render` is what proves it. +COPY package.json ./root-package.json +RUN node -e " \ + const root = require('./root-package.json'); \ + const needed = ['express', '@playwright/test', 'gifenc', 'fflate']; \ + const dependencies = {}; \ + for (const name of needed) { \ + const version = (root.dependencies ?? {})[name] ?? (root.devDependencies ?? {})[name]; \ + if (!version) throw new Error(name + ' is not a dependency of the root package'); \ + dependencies[name] = version; \ + } \ + require('node:fs').writeFileSync('package.json', JSON.stringify({ \ + name: 'reactome-render-service', private: true, type: 'module', dependencies \ + }, null, 2)); \ + " \ + && npm install --omit=dev \ && npx playwright install --with-deps chromium \ - && npm cache clean --force + && npm cache clean --force \ + && rm root-package.json COPY tools/render/*.mjs ./ # Renders arrive from the network. Nothing here needs root, and the browser is -# the part running untrusted-ish input (a page of our own, but a page). +# the part handling input. RUN mkdir -p /cache && chown -R node:node /cache /render USER node @@ -27,8 +51,8 @@ ENV RENDER_HOST=0.0.0.0 \ RENDER_CACHE=/cache # 0.0.0.0 inside the container, and the port deliberately NOT published to the -# host in docker-compose.yml. The service is reachable from the app container -# and nowhere else, which keeps the property that matters: a render can only be +# host in docker-compose.yml. The service is reachable from the app container and +# nowhere else, which keeps the property that matters: a render can only be # commissioned through whatever fronts the site. EXPOSE 4310 diff --git a/deploy/render-service/README.md b/deploy/render-service/README.md index 4aa0032b..2ee310b8 100644 --- a/deploy/render-service/README.md +++ b/deploy/render-service/README.md @@ -17,11 +17,12 @@ which is on the `render-cache` volume and survives replacement. The image is `node:22` plus Chromium, not a Playwright image. The Playwright images carry three browsers and land around 3 GB; this needs one, and node:22 is -already here as the app image's base, so the layers are shared. `tools/render/` -has its own `package.json` for the same reason — four packages instead of the -site's whole tree — and `render-deps.spec.ts` fails if its pins drift from the -root's. That matters most for Playwright, whose browser download is -version-locked to the library. +already here as the app image's base, so the layers are shared. It installs four +packages rather than the site's whole tree, and reads their versions out of the +root `package.json` at build time rather than restating them: dependabot only +watches the root, so a second set of pins would silently fall behind, and a +Playwright that does not match its browser download fails in a way that looks +like a rendering bug. Running on the host instead, without a container: diff --git a/tools/render/package.json b/tools/render/package.json deleted file mode 100644 index 2880e0e6..00000000 --- a/tools/render/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "reactome-render-service", - "version": "1.0.0", - "private": true, - "type": "module", - "description": "Renders Reactome diagrams by driving the site's own render page", - "comment": [ - "Its own manifest so the deployed container installs four packages rather", - "than the site's whole dependency tree -- the difference between a ~400 MB", - "image and a ~3 GB one. Node resolves upward from the importing file, so the", - "CLI still runs from the repo root against the root node_modules; this is", - "only what a container needs.", - "Versions must match the root package.json. render-deps.spec.ts fails if they", - "drift." - ], - "scripts": { - "start": "node service.mjs" - }, - "dependencies": { - "@playwright/test": "^1.58.2", - "express": "4.18.2", - "fflate": "0.8.2", - "gifenc": "1.0.3" - } -} diff --git a/tools/render/render-deps.spec.ts b/tools/render/render-deps.spec.ts deleted file mode 100644 index 934533eb..00000000 --- a/tools/render/render-deps.spec.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { describe, expect, it } from 'vitest'; -import { readFileSync } from 'node:fs'; -import path from 'node:path'; - -/** - * The render service ships as its own container and so declares its own - * dependencies, rather than installing the site's entire tree to run four - * packages. Two manifests means they can drift, and a drift shows up as a - * container that behaves differently from the CLI everything was tested with -- - * a mismatched Playwright being the obvious one, since the browser it downloads - * is version-locked to the library. - */ -describe('render service dependencies', () => { - const read = (file: string) => - JSON.parse(readFileSync(path.resolve(__dirname, file), 'utf8')) as { - dependencies?: Record; - devDependencies?: Record; - }; - - it('pins the same versions as the root package.json', () => { - const root = read('../../package.json'); - const service = read('./package.json'); - const rootVersion = (name: string) => root.dependencies?.[name] ?? root.devDependencies?.[name]; - - for (const [name, version] of Object.entries(service.dependencies ?? {})) { - expect(rootVersion(name), `${name} is not a dependency of the root package`).toBeDefined(); - expect(version, `${name} differs between the render service and the root`).toBe( - rootVersion(name) - ); - } - }); -}); diff --git a/vitest.config.ts b/vitest.config.ts index 88d920e4..eab2d6fb 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -19,10 +19,7 @@ export default defineConfig({ // src/test-setup.ts over to Analog's zone setup and BrowserTestingModule. // Worth doing when we next add component-level unit tests; today every // component is covered through e2e/ instead. - // tools/ is included too: the render service ships as its own container - // with its own manifest, and nothing else would notice it drifting from the - // root's. - include: ['{src,projects,tools}/**/*.spec.ts'], + include: ['{src,projects}/**/*.spec.ts'], css: false, server: { deps: { From 28620c41abef310a3ce9156d78d929aefc5e75ba Mon Sep 17 00:00:00 2001 From: Adam Wright Date: Thu, 20 Aug 2026 03:01:22 +0000 Subject: [PATCH 013/136] fix(render): illustrations export standalone, and drop the URL version stamp Two illustration bugs, both hidden by the fact that a diagram worked: A .png of any illustrated pathway was a 500 -- "this view cannot export PNG yet" -- because the export only knew how to ask a cytoscape instance. Illustrations are the top-level pathways, so it was the ones a report is most likely to want. They go through the same rasteriser the animation frames use now. A .pdf of one was a blank 674 bytes, caught only by the size floor. An EHLD declares width and height of 100% with no viewBox, so outside the page it has no intrinsic size at all, and its styling comes from the page's stylesheets rather than the markup. EhldService.svgMarkup writes both down, and the SVG export uses it too -- that one was shipping unstyled. And the version stamp goes away. Figures are `private, no-cache` now, so nothing reuses one without asking; the ETag makes a repeat download a 304 in ~1ms. It was introduced to defeat Cloudflare storing a figure for a day and serving it with the max-age it was stored under, which is real -- but it meant two constants that had to be bumped in step, and I bumped one and not the other within the hour, which produces the worst case: a new address answered from the old cache. One knob now, RENDER_CACHE_KEY, and nothing new gets stored anywhere. Bounded the cache while here. A figure averages a couple of megabytes and there are thousands of diagrams times five formats, on a host that also runs Tomcat, Neo4j and the site's builds with 4 GB free. Filling that disk takes the site down, which is far worse than paying for a render again -- everything in the cache is derived data. 2 GB by default, least-recently-used evicted first, and evictions are logged: a cache that silently discards what it was asked to keep looks exactly like one that is working. Co-Authored-By: Claude Opus 5 --- deploy/render-service/README.md | 36 +++-- .../download-tab/download-tab.component.ts | 5 - .../src/app/render/render.component.ts | 25 +++- .../src/app/services/download.service.ts | 17 --- .../src/app/services/ehld.service.ts | 30 ++++- tools/render/render-core.mjs | 2 +- tools/render/service.mjs | 124 ++++++++++++++++-- 7 files changed, 173 insertions(+), 66 deletions(-) diff --git a/deploy/render-service/README.md b/deploy/render-service/README.md index 2ee310b8..9b5241e4 100644 --- a/deploy/render-service/README.md +++ b/deploy/render-service/README.md @@ -71,25 +71,23 @@ Three things bound the damage when it is fronted: - **A cache key per release.** `RENDER_CACHE_KEY` exists for it; bump it when the data changes or figures outlive their diagrams. -## Two versions, and why - -Changing the renderer means two things have to be bumped together: - -| where | what it invalidates | -| ----------------------------------------- | -------------------------------------------- | -| `RENDER_CACHE_KEY` in `service.mjs` | the service's own disk cache, and the `ETag` | -| `RENDER_VERSION` in `download.service.ts` | every cache downstream, by changing the URL | - -Headers alone are not enough. A figure is served `public`, so Cloudflare stores -it and keeps serving that copy with the max-age it was stored under — a day, in -the case that sent curators a 2000px GIF after the full-size fix had shipped. -Reloading the page does not help, because a download link's URL is never -revalidated, and Cloudflare's Browser Cache TTL setting overrides the max-age the -service sends anyway (it rewrote 300s to 4h). The only thing every layer respects -is a different address. - -The service ignores the `v` parameter, so both versions of a figure share one -entry in its disk cache; only the downstream address changes. +## One knob: RENDER_CACHE_KEY + +Bump it whenever the renderer's **output** changes, not whenever the code does. +It keys the service's disk cache and is the `ETag`, so it is what makes a figure +drawn by an older renderer stop being served. + +Figures go out as `Cache-Control: private, no-cache`, so nothing reuses one +without asking. That is not a performance decision — the expensive part is the +render, which is cached on disk here, and a conditional request is a 304 and one +round trip. Longer caching let a figure outlive its renderer: `public` meant +Cloudflare stored it and kept serving it with the max-age it was stored under, +Cloudflare's Browser Cache TTL overrode what the service sent anyway (300s went +out as 4h), and a download link's URL is never revalidated by reloading the page. + +There was briefly a second version stamped into every figure's URL to defeat all +that. It worked, and it was one more thing to remember to bump in step; the +no-cache header does the same job with nothing to remember. ## Watching it diff --git a/projects/pathway-browser/src/app/details/tabs/download-tab/download-tab.component.ts b/projects/pathway-browser/src/app/details/tabs/download-tab/download-tab.component.ts index 1eeaf4aa..84f0cc45 100644 --- a/projects/pathway-browser/src/app/details/tabs/download-tab/download-tab.component.ts +++ b/projects/pathway-browser/src/app/details/tabs/download-tab/download-tab.component.ts @@ -18,7 +18,6 @@ import { DownloadService, DownloadTarget, includeSubpathways, - RENDER_VERSION, } from '../../../services/download.service'; import { DownloadButtonComponent, Icon } from './download-button/download-button.component'; import { MatDialog } from '@angular/material/dialog'; @@ -302,10 +301,6 @@ export class DownloadTabComponent { // Set only when turning them off, so the ordinary URL stays the short one // and the service's cache is not split by a parameter that says nothing. if (!includeSubpathways()) url.searchParams.set('subpathways', 'false'); - // Not read by the service. It is here so that a change to the renderer - // changes the address, which is the only thing a CDN or a browser respects - // once it has stored a figure. - url.searchParams.set('v', RENDER_VERSION); return url.toString(); } diff --git a/projects/pathway-browser/src/app/render/render.component.ts b/projects/pathway-browser/src/app/render/render.component.ts index 44f2136b..efcbda41 100644 --- a/projects/pathway-browser/src/app/render/render.component.ts +++ b/projects/pathway-browser/src/app/render/render.component.ts @@ -331,8 +331,10 @@ export class RenderComponent { return instances[0].svg({ full: true }); } - const svg = document.querySelector('cr-render cr-ehld svg'); - if (svg) return new XMLSerializer().serializeToString(svg); + // Through the illustration's own service, which knows that its styling has + // to be inlined and its size written down before the markup stands alone. + const svg = document.querySelector('cr-render cr-ehld svg'); + if (svg) return this.ehldService.svgMarkup(svg).markup; // The genome-wide view draws to a canvas via FoamTree, so it has its own // exporter rather than going through cytoscape. It matters here because @@ -368,9 +370,22 @@ export class RenderComponent { } /** The drawn view as a PNG data URL. */ - private exportPng(scale: number): string { + private async exportPng(scale: number): Promise { const { instances } = this.exportableInstances(); - if (!instances.length) throw new Error('this view cannot export PNG yet'); - return instances[0].png({ full: true, scale, bg: 'transparent' }); + if (instances.length) return instances[0].png({ full: true, scale, bg: 'transparent' }); + + // An illustration has no cytoscape instance to ask, so it goes through the + // same rasteriser the animation frames use. Without this a .png of any + // illustrated pathway was a 500 -- and illustrations are the top-level + // pathways, so it was the ones a report is most likely to want. + const svg = document.querySelector('cr-render cr-ehld svg'); + if (svg) { + // No background: a PNG has an alpha channel, and a figure that can sit on + // any page is more useful than one with a colour baked in. + const canvas = await this.ehldService.rasterise(svg, scale); + return canvas.toDataURL('image/png'); + } + + throw new Error('this view cannot export PNG yet'); } } diff --git a/projects/pathway-browser/src/app/services/download.service.ts b/projects/pathway-browser/src/app/services/download.service.ts index 772ec64e..3b7a460f 100644 --- a/projects/pathway-browser/src/app/services/download.service.ts +++ b/projects/pathway-browser/src/app/services/download.service.ts @@ -37,23 +37,6 @@ export interface DownloadOptions { */ export const includeSubpathways = signal(true); -/** - * Which version of the renderer a downloaded figure came from. - * - * Carried in the URL of every server-rendered figure, purely so that changing - * the renderer changes the URL. Headers are not enough: a figure is served - * `public`, so Cloudflare stores it, and a stale entry keeps being served with - * the max-age it was stored under -- for a day, in the case that sent curators - * a 2000px GIF after the full-size fix had shipped. Reloading the page does not - * help either, because a download link's URL is never revalidated. - * - * Bump it whenever the renderer's output changes, together with - * RENDER_CACHE_KEY in tools/render/service.mjs. The service ignores the - * parameter, so the two versions of a figure share one entry in its own cache; - * everything downstream sees a new address. - */ -export const RENDER_VERSION = 'v2'; - export const defaultDownloadOptions: DownloadOptions = { animate: false, includeLegend: true, diff --git a/projects/pathway-browser/src/app/services/ehld.service.ts b/projects/pathway-browser/src/app/services/ehld.service.ts index c32bb523..40b20038 100644 --- a/projects/pathway-browser/src/app/services/ehld.service.ts +++ b/projects/pathway-browser/src/app/services/ehld.service.ts @@ -482,15 +482,35 @@ export class EhldService { * * Shared with the headless render page, which builds animation frames from it. */ - async rasterise(svg: SVGSVGElement, scale: number, background?: string) { + /** + * The illustration as standalone SVG: styles inlined, size made explicit. + * + * Two things stop a serialised EHLD meaning anything on its own. Its styling + * comes from the page's stylesheets, which do not travel with the markup. And + * it declares width and height of 100% with no viewBox, so outside the page it + * has no intrinsic size at all -- a PDF of one came out as a blank 674 bytes. + * Its size is whatever the page gave it, so that is what gets written down. + */ + svgMarkup(svg: SVGSVGElement) { this.getInlineStyles(svg, this.select()); - const markup = new XMLSerializer().serializeToString(svg); + + const { width, height } = svg.getBoundingClientRect(); + const box = { width: Math.round(width), height: Math.round(height) }; + + // A copy, so the page keeps its own responsive sizing. + const copy = svg.cloneNode(true) as SVGSVGElement; + copy.setAttribute('width', String(box.width)); + copy.setAttribute('height', String(box.height)); + copy.setAttribute('viewBox', `0 0 ${box.width} ${box.height}`); + + return { markup: new XMLSerializer().serializeToString(copy), ...box }; + } + + async rasterise(svg: SVGSVGElement, scale: number, background?: string) { + const { markup, width, height } = this.svgMarkup(svg); const url = URL.createObjectURL(new Blob([markup], { type: 'image/svg+xml;charset=utf-8' })); try { - // The illustration declares width and height of 100% and has no viewBox, - // so its size is whatever the page gave it. - const { width, height } = svg.getBoundingClientRect(); const image = new Image(); image.src = url; await image.decode(); diff --git a/tools/render/render-core.mjs b/tools/render/render-core.mjs index 1e1fd347..17af7713 100644 --- a/tools/render/render-core.mjs +++ b/tools/render/render-core.mjs @@ -140,7 +140,7 @@ export async function render( /** The diagram as PNG bytes, decoded from the data URL the page hands back. */ async function pngBytes(page, scale) { - const dataUrl = await page.evaluate((s) => window.__renderExport.png(s), scale); + const dataUrl = await page.evaluate(async (s) => await window.__renderExport.png(s), scale); return Buffer.from(dataUrl.split(',')[1], 'base64'); } diff --git a/tools/render/service.mjs b/tools/render/service.mjs index 2c4e9d89..2ae78583 100644 --- a/tools/render/service.mjs +++ b/tools/render/service.mjs @@ -32,6 +32,7 @@ * RENDER_CACHE_KEY salt; change it to invalidate everything (e.g. release) * RENDER_CONCURRENCY simultaneous renders, default 2 * RENDER_QUEUE pending renders before 503, default 8 + * RENDER_CACHE_MAX bytes of cache to keep, default 2 GB (0 disables) * * Query parameters: token, scale, subpathways=false, dark=true, and delay and * maxSize for GIF. @@ -39,7 +40,16 @@ import express from 'express'; import { chromium } from '@playwright/test'; import { createHash } from 'node:crypto'; -import { mkdir, readFile, writeFile, stat, rename } from 'node:fs/promises'; +import { + mkdir, + readFile, + writeFile, + stat, + rename, + readdir, + unlink, + utimes, +} from 'node:fs/promises'; import path from 'node:path'; import { FORMATS, render } from './render-core.mjs'; @@ -49,13 +59,25 @@ const BASE = process.env.RENDER_BASE || 'http://localhost:4200'; const CACHE = process.env.RENDER_CACHE || path.resolve('.render-cache'); // Bump this whenever the renderer's output changes, not only when the data // does: it keys the disk cache AND is the ETag, so it is the only thing that -// tells a browser its copy is stale. v2 = full-size differenced GIFs. -const CACHE_KEY = process.env.RENDER_CACHE_KEY || 'v2'; +// tells a browser its copy is stale. v2 = full-size differenced GIFs; v3 = +// illustrations export as standalone SVG, styles inlined and size written down. +const CACHE_KEY = process.env.RENDER_CACHE_KEY || 'v3'; const CONCURRENCY = Number(process.env.RENDER_CONCURRENCY || 2); // Generous next to a real render, which is 3-8s, but far short of the two // minutes a page that never becomes ready would otherwise hold a browser for. const RENDER_TIMEOUT = Number(process.env.RENDER_TIMEOUT || 45_000); const MAX_QUEUE = Number(process.env.RENDER_QUEUE || 8); +/** + * How much cache to keep, in bytes. + * + * A figure averages a couple of megabytes and there are thousands of diagrams + * times five formats, so an unbounded cache is tens of gigabytes -- on a host + * that also runs Tomcat, Neo4j and the site's own builds. Filling that disk + * takes the site down, which is a far worse outcome than paying for a render + * again, and this cache is pure derived data: everything in it can be rebuilt + * from the pathway id. + */ +const MAX_CACHE = Number(process.env.RENDER_CACHE_MAX ?? 2 * 1024 ** 3); const CONTENT_TYPE = { svg: 'image/svg+xml; charset=utf-8', @@ -68,7 +90,7 @@ const CONTENT_TYPE = { /** Formats a browser would not usefully display, so offer them as a download. */ const ATTACHMENT = new Set(['pptx']); -const stats = { served: 0, hits: 0, rendered: 0, failed: 0, rejected: 0 }; +const stats = { served: 0, hits: 0, rendered: 0, failed: 0, rejected: 0, evicted: 0 }; /** * Keep a request's numbers inside what this box can draw. @@ -137,7 +159,13 @@ async function fromCache(key, format) { const file = path.join(CACHE, `${key}.${format}`); try { await stat(file); - return await readFile(file); + const bytes = await readFile(file); + // Mark it as used, so eviction drops what nobody asks for rather than what + // happens to be oldest. relatime makes read atimes unreliable, so the + // timestamp has to be set deliberately. + const now = new Date(); + void utimes(file, now, now).catch(() => {}); + return bytes; } catch { return null; } @@ -150,6 +178,65 @@ async function toCache(key, format, bytes) { const temp = `${file}.${process.pid}.tmp`; await writeFile(temp, bytes); await rename(temp, file); + await evict(); +} + +/** + * Drop least-recently-used figures until the cache is back under its limit. + * + * Runs after a write, which is the only thing that grows it, and reads the + * directory rather than tracking a running total -- the total has to survive + * restarts and a cache directory shared with a previous run, and a readdir of a + * few thousand entries costs less than one render. + * + * Evictions are logged. A cache that silently discards half of what it is asked + * to keep looks exactly like a cache that is working. + */ +async function evict() { + if (!MAX_CACHE) return; + try { + const names = await readdir(CACHE); + const entries = []; + let total = 0; + for (const name of names) { + if (name.endsWith('.tmp')) continue; + const file = path.join(CACHE, name); + const info = await stat(file).catch(() => null); + if (!info?.isFile()) continue; + entries.push({ file, size: info.size, used: info.mtimeMs }); + total += info.size; + } + if (total <= MAX_CACHE) return; + + // Down to 90%, not to exactly the limit, so the next write does not evict + // again immediately. + const target = MAX_CACHE * 0.9; + entries.sort((a, b) => a.used - b.used); + let removed = 0; + let freed = 0; + for (const entry of entries) { + if (total <= target) break; + if ( + await unlink(entry.file).then( + () => true, + () => false + ) + ) { + total -= entry.size; + freed += entry.size; + removed++; + } + } + stats.evicted += removed; + console.log( + `evicted ${removed} cached figure(s), ${(freed / 1024 ** 2).toFixed(1)} MB, ` + + `cache now ${(total / 1024 ** 2).toFixed(1)} MB of ` + + `${(MAX_CACHE / 1024 ** 2).toFixed(0)} MB` + ); + } catch (error) { + // A cache that cannot be tidied is not a reason to fail a render. + console.error(`could not evict from the cache: ${error.message}`); + } } // ---- renders ------------------------------------------------------------- @@ -294,15 +381,19 @@ app.get('/render/:name.:ext', async (req, res) => { res.setHeader('Content-Type', CONTENT_TYPE[format]); res.setHeader('ETag', etag); res.setHeader('X-Render-Cache', cached ? 'hit' : 'miss'); - // Short, deliberately. A figure is stable for a release, and a day of - // caching would be right if the renderer were finished -- but it is not, and - // a browser that has a figure from an older renderer will not ask again: - // reloading the page does not revalidate a URL fetched by a download link. - // A curator downloaded a 2000px GIF and kept getting it back after the - // full-size fix shipped. Five minutes plus an ETag means a repeat download - // is still a 304 and a change still lands. Raise it when the renderer - // settles. - res.setHeader('Cache-Control', params.token ? 'private, max-age=300' : 'public, max-age=300'); + // Never reused without asking first. Not a performance decision: the + // expensive part is already cached on disk here, so answering a conditional + // request is a 304 and one round trip. + // + // Anything longer let a figure outlive the renderer that drew it. `public` + // meant Cloudflare stored one and kept serving it with the max-age it was + // stored under; Cloudflare's Browser Cache TTL overrode what this sends + // anyway (300s went out as 4h); and a download link's URL is never + // revalidated by reloading the page, so a curator kept getting a 2000px GIF + // after the full-size fix had shipped. The alternative was stamping a + // version into every figure's URL, which worked and which nobody should have + // to remember to bump. + res.setHeader('Cache-Control', 'private, no-cache'); res.setHeader( 'Content-Disposition', `${ATTACHMENT.has(format) ? 'attachment' : 'inline'}; ` + @@ -325,6 +416,11 @@ const server = app.listen(PORT, HOST, () => { console.log(` rendering against ${BASE}`); console.log(` cache ${CACHE} (key ${CACHE_KEY})`); console.log(` ${CONCURRENCY} concurrent, ${MAX_QUEUE} queued before 503`); + console.log( + MAX_CACHE + ? ` keeping up to ${(MAX_CACHE / 1024 ** 2).toFixed(0)} MB of figures` + : ` cache size unbounded (RENDER_CACHE_MAX=0)` + ); }); for (const signal of ['SIGINT', 'SIGTERM']) { From e6264da5c32cc8115d2a78cf3799e69b9514dd0c Mon Sep 17 00:00:00 2001 From: Adam Wright Date: Thu, 20 Aug 2026 03:19:27 +0000 Subject: [PATCH 014/136] feat(export): make the animated SVG's timeline clickable (#141) The timeline could only be held still by keeping the pointer on the button, which is what the issue means by "instead of just over". All three controls it asks for now work, and the animation is CSS keyframes, so each needed a different answer: - Play/pause on click. The button carries both icons and a class on the root decides which shows, so it says what clicking will do rather than what the animation is doing. Pausing sets that class and also pauses each animation through the Web Animations API -- the class alone holds the picture still, so in a browser without the API play/pause still works and only seeking is lost. - Clicking a segment seeks the whole picture there, by setting currentTime on every animation at once. Verified against the timing rather than by eye: segments land on 1s, 3s, 5s, 7s for four samples at 2s each. - Hovering a segment names the sample, through a native tooltip. That needs no script at all, which matters because a script in an SVG only runs when the file is opened as a document -- not inside an <img>. The hover-to-pause rule is kept for that case and scoped so the two never fight. Two things found on the way: A sample name containing "<" silently truncated its label. The markup is built as a string and parsed by innerHTML, which turns "<baseline>" into an element SVG does not know and therefore does not draw, taking the rest of the label with it. "&" was already being normalised by the serialiser, so only "<" bit. Names are escaped now, and a column called `Ctrl & <baseline>` round-trips exactly. And console.table of every frame's transition times, on every export. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --- .../src/app/reacfoam/svg-exporter.service.ts | 152 ++++++++++++++++-- 1 file changed, 142 insertions(+), 10 deletions(-) diff --git a/projects/pathway-browser/src/app/reacfoam/svg-exporter.service.ts b/projects/pathway-browser/src/app/reacfoam/svg-exporter.service.ts index 3bf4dd50..ebc21602 100644 --- a/projects/pathway-browser/src/app/reacfoam/svg-exporter.service.ts +++ b/projects/pathway-browser/src/app/reacfoam/svg-exporter.service.ts @@ -324,7 +324,6 @@ export class SvgExporterService { frame.setAttribute('id', id); const appear = this.calcTransitionTime(i); const disappear = this.calcTransitionTime(i + 1); - console.table({ appear, disappear }); const kfName = `kf_frame_${i}`; let keyframes = `@keyframes ${kfName} {\n`; @@ -425,7 +424,7 @@ export class SvgExporterService { pos = y + labelSpace * (i + 0.5) - fontSize; } - output.elements += `<text id="${labelId}" x="${x + gWidth + sw}" y="${pos}" class="legend-label">${label}</text>\n`; + output.elements += `<text id="${labelId}" x="${x + gWidth + sw}" y="${pos}" class="legend-label">${this.escapeXml(label)}</text>\n`; }); return output; @@ -470,7 +469,7 @@ export class SvgExporterService { const disappear = this.calcTransitionTime(i + 1); const titleId = `title-${i}`; - output.elements += `<text id="${titleId}" x="${tlStart + dotSpace * (i + 0.5) - dotSize / 2}" y="${y + tlHeight + sw + fontSize / 2}" class="title center">${title}</text>\n`; + output.elements += `<text id="${titleId}" x="${tlStart + dotSpace * (i + 0.5) - dotSize / 2}" y="${y + tlHeight + sw + fontSize / 2}" class="title center">${this.escapeXml(title)}</text>\n`; const titleKFName = `kf_title_${i}`; let keyframes = `@keyframes ${titleKFName} {\n`; @@ -496,18 +495,58 @@ export class SvgExporterService { output.css += keyframes; }); - output.elements += `<rect id="pause-button" x="${x + sw / 2}" y="${y + sw / 2}" width="${tlHeight - sw}" height="${tlHeight - sw}" fill="${primary}" stroke="${onPrimary}" stroke-width="${sw}" rx="${tlHeight / 2}"/>`; - output.elements += `<line x1="${x + tlHeight / 2 - (1 / 10) * tlHeight}" x2="${x + tlHeight / 2 - (1 / 10) * tlHeight}" y1="${y + (1 / 3) * tlHeight}" y2="${y + (2 / 3) * tlHeight}" stroke="${onPrimary}" stroke-width="${sw}" class="ignore-event"/>`; - output.elements += `<line x1="${x + tlHeight / 2 + (1 / 10) * tlHeight}" x2="${x + tlHeight / 2 + (1 / 10) * tlHeight}" y1="${y + (1 / 3) * tlHeight}" y2="${y + (2 / 3) * tlHeight}" stroke="${onPrimary}" stroke-width="${sw}" class="ignore-event"/>`; + output.elements += `<rect id="pause-button" x="${x + sw / 2}" y="${y + sw / 2}" width="${tlHeight - sw}" height="${tlHeight - sw}" fill="${primary}" stroke="${onPrimary}" stroke-width="${sw}" rx="${tlHeight / 2}"><title>Play / pause`; + + // Both icons ship; which one shows is a class on the root, so the button + // says what clicking it will do rather than what the animation is doing. + const barLeft = x + tlHeight / 2 - (1 / 10) * tlHeight; + const barRight = x + tlHeight / 2 + (1 / 10) * tlHeight; + output.elements += ``; + output.elements += ``; + output.elements += ``; + output.elements += ``; + + const playLeft = x + tlHeight / 2 - (1 / 8) * tlHeight; + const playRight = x + tlHeight / 2 + (1 / 6) * tlHeight; + output.elements += ``; + output.elements += ``; + output.elements += ``; output.elements += ``; output.css += `@keyframes drawLine { to { stroke-dashoffset: 0; } }\n`; output.css += `#timeline { animation: drawLine ${this.options.totalTime}s linear infinite; stroke-dasharray: ${tlWidth}; stroke-dashoffset: ${tlWidth};}\n`; + // One click target per sample, added last so they sit above the line and the + // dots. Each carries its own , which is the browser's own tooltip and + // needs no script: hovering says where a click will take you even in a viewer + // that will not run one. + titles.forEach((title, i) => { + const at = ((i + 0.5) * this.options.timePerFrame).toFixed(3); + output.elements += + `<rect class="segment" data-time="${at}" x="${(tlStart + dotSpace * i).toFixed(3)}" ` + + `y="${y + sw / 2}" width="${dotSpace.toFixed(3)}" height="${tlHeight - sw}" ` + + `fill="${onPrimary}" fill-opacity="0">` + + `<title>${this.escapeXml(title)}\n`; + }); + //language=css - output.css += `svg:has(#pause-button:hover) * { - animation-play-state: paused !important; - } `; + output.css += ` + #pause-button, .segment { cursor: pointer; } + .segment:hover { fill-opacity: 0.25; } + #icon-play { display: none; } + + /* Set by the controls script, so a paused animation looks paused. */ + svg.paused * { animation-play-state: paused !important; } + svg.paused #icon-pause { display: none; } + svg.paused #icon-play { display: inline; } + + /* No script: hovering the button is the only way to hold the animation + still, which is what this did before clicking was possible. The script + marks the root so the two do not fight. */ + svg:not(.js-controls):has(#pause-button:hover) * { + animation-play-state: paused !important; + } + `; return output; } @@ -534,7 +573,7 @@ export class SvgExporterService { const disappear = this.calcTransitionTime(i + 1); const titleId = `title-${i}`; - output.elements += `${title}\n`; + output.elements += `${this.escapeXml(title)}\n`; if (titles.length > 1) { // Only add animation if more than one title is available @@ -554,6 +593,98 @@ export class SvgExporterService { return output; } + /** + * Text safe to put in the SVG, which is XML rather than HTML. + * + * Sample names come from whatever the user uploaded, and a column called "A&B" + * produced a document that no viewer would open at all -- the failure is the + * whole file, not the one label. + */ + private escapeXml(text: string) { + const entities: Record = { + '<': '<', + '>': '>', + '&': '&', + "'": ''', + '"': '"', + }; + return String(text).replace(/[<>&'"]/g, (character) => entities[character] ?? character); + } + + /** + * The script that makes the timeline clickable. + * + * The animation is CSS keyframes, so seeking means reaching for the animations + * themselves: the Web Animations API exposes each one's currentTime, and + * setting it on all of them at once moves the whole picture to that sample. + * Pausing is a class on the root as well as a call on each animation -- the + * class alone holds the picture still in a browser too old for the API, so + * play/pause degrades to working while only seeking is lost. + * + * Added as a DOM node with textContent rather than as serialised markup: the + * serialiser escapes the angle brackets and ampersands for us, and a script + * built by string concatenation into an XML document is one stray `&&` away + * from a file that will not parse. + * + * A script in an SVG runs when the file is opened as a document. Inside an + * , or in most viewers embedding it, it does not -- which is why the + * hover fallback and the native tooltips carry the no-script case. + */ + private addTimelineControls(svg: SVGSVGElement | undefined) { + if (!svg) return; + const script = document.createElementNS('http://www.w3.org/2000/svg', 'script'); + script.setAttribute('data-generated', 'true'); + script.textContent = ` +(function () { + var button = document.getElementById('pause-button'); + if (!button) return; + var root = button.ownerSVGElement; + if (!root) return; + + // Tells the stylesheet to stop pausing on hover: clicking is the control now. + // + // classList, not setAttribute with a split and a join: this text lives in a + // TypeScript template literal, where a backslash is the template's escape + // before it is ever the regex's. A /\\s+/ written the obvious way reached the + // file as /s+/ and split the class list on the letter s, so "js-controls" + // became "j -control". + root.classList.add('js-controls'); + + function animations() { + if (root.getAnimations) return root.getAnimations({ subtree: true }); + if (document.getAnimations) return document.getAnimations(); + return []; + } + + var paused = false; + button.addEventListener('click', function () { + paused = !paused; + root.classList.toggle('paused', paused); + animations().forEach(function (animation) { + try { + if (paused) animation.pause(); + else animation.play(); + } catch (ignored) {} + }); + }); + + var segments = root.querySelectorAll('.segment'); + Array.prototype.forEach.call(segments, function (segment) { + segment.addEventListener('click', function () { + var at = parseFloat(segment.getAttribute('data-time')) * 1000; + if (!isFinite(at)) return; + animations().forEach(function (animation) { + try { + animation.currentTime = at; + } catch (ignored) {} + }); + }); + }); +})(); +`; + svg.append(script); + } + private calcTransitionTime(frame: number) { const frameTime = frame * this.options.timePerFrame; const changePercent = (frameTime / this.options.totalTime) * 100; @@ -802,6 +933,7 @@ export class SvgExporterService { : this.generateTitle(samples, { x: 0, y: height, height: decorationSize, width: width }); css += title.css; const titleGroup = this.addElementToSVG('title-group', title.elements, svg!); + if (options.includeTimeline) this.addTimelineControls(svg); // Add space for labels const bbox = this.measureGroup(titleGroup, width, height, css); From 4c59f9945ea96c34b005f71445cacade2234022a Mon Sep 17 00:00:00 2001 From: Adam Wright <adam.j.wright82@gmail.com> Date: Thu, 20 Aug 2026 03:36:35 +0000 Subject: [PATCH 015/136] feat(reacfoam): signify flagging with a border rather than a fill (#140) Flagging used to repaint the flagged groups in the flag colour and, with no analysis running, wash every other group out to the surface colour. So a curator could see where a gene appears, or see their analysis result, but not both -- and the pathways where they most want the result are precisely the flagged ones. The flag is an outline now, drawn in groupContentDecorator by replaying polygonContext: that buffer holds the commands FoamTree used to trace the group's own polygon, so the stroke follows the real Voronoi shape rather than an approximating rectangle. The fill is left alone, so family colours and the analysis overlay both survive. Two strokes, a dark one under the flag colour, so it reads on a pale fill as well as a saturated one, and thinner at depth so a flagged child inside a flagged parent stays legible. The path is replayed once per stroke rather than stroked twice: on canvas either works, but the SVG export draws through svgcanvas, which records one path element per path and keeps only the last style set on it -- the halo was silently missing from every exported figure while looking right on screen. Checked in the exported SVG, not just on screen: both widths are there. Triggering moves to onSurfaceDirty, because flagging changes without the layout changing. The decorator returns immediately unless something is flagged, which is what keeps that affordable on a hierarchy this size. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --- .../src/app/reacfoam/reacfoam.component.ts | 57 +++++++++++++++---- 1 file changed, 45 insertions(+), 12 deletions(-) diff --git a/projects/pathway-browser/src/app/reacfoam/reacfoam.component.ts b/projects/pathway-browser/src/app/reacfoam/reacfoam.component.ts index 3a51540d..551e999d 100644 --- a/projects/pathway-browser/src/app/reacfoam/reacfoam.component.ts +++ b/projects/pathway-browser/src/app/reacfoam/reacfoam.component.ts @@ -278,10 +278,11 @@ export class ReacfoamComponent implements OnDestroy { const notFoundColor = this.reacfoam.surfaceColor().hex(); - if (this.flagging() && props.group.flag) { - values.groupColor = this.reacfoam.flagColor().hex(); - values.labelColor = this.reacfoam.surfaceColor().hex(); - } else if ( + // Flagging is drawn as an outline rather than a fill, so a flagged + // pathway still shows its analysis colour. Replacing the fill meant + // choosing between seeing where a gene is and seeing the result -- + // which is exactly when you want both. + if ( !fdr || fdr > this.state.significance() // && this.analysis.type() !== 'GSA_REGULATION' // Skip FDR filtering for GSA as we want to display the non-significant up/down regulation too @@ -327,17 +328,49 @@ export class ReacfoamComponent implements OnDestroy { } // values.groupColor = props.group.depthColor.hex(); // values.labelColor = 'auto' + } + }, - if (this.flagging()) { - values.groupColor = props.group.flag - ? this.reacfoam.flagColor().hex() - : this.reacfoam.surfaceColor().hex(); - values.labelColor = props.group.flag - ? this.reacfoam.surfaceColor().hex() - : this.reacfoam.onSurfaceColor().hex(); - } + // The flag outline. + // + // polygonContext is the buffer FoamTree used to trace the group's own + // polygon, so replaying it sets exactly that path and the stroke follows + // the group's real shape -- no approximation with a rectangle or a + // circle, which in a Voronoi treemap would be visibly wrong. + // + // Two strokes: a dark one underneath so the flag colour reads against a + // pale fill as well as a saturated one, and thinner at depth so a + // flagged child inside a flagged parent stays legible. + groupContentDecorator: (options, props) => { + if (!this.flagging() || !props.group.flag) return; + + const context = props.context; + const width = 6 * Math.pow(0.75, props.level); + + // The path is replayed once per stroke rather than stroked twice. On + // canvas either works, but the SVG export draws through svgcanvas, + // which records one path element per path and keeps only the last style + // set on it -- so the halo silently vanished from every exported figure + // while looking right on screen. + const strokes = [ + { colour: this.reacfoam.onSurfaceColor().hex(), width: width * 1.5 }, + { colour: this.reacfoam.flagColor().hex(), width }, + ]; + for (const stroke of strokes) { + context.save(); + props.polygonContext.replay(context); + context.lineJoin = 'round'; + context.strokeStyle = stroke.colour; + context.lineWidth = stroke.width; + context.stroke(); + context.restore(); } }, + // Flagging changes without the layout changing, so the decorator has to + // run whenever a group is drawn rather than only when its shape moves. + // It returns immediately unless something is flagged, which is what keeps + // that affordable on a hierarchy this size. + groupContentDecoratorTriggering: 'onSurfaceDirty', }); this.foamTree().redraw(); this.currentSample = this.state.sample() || undefined; From 0f12416bb8da0c77f2280f48ccc25c0c6cd8782d Mon Sep 17 00:00:00 2001 From: Adam Wright <adam.j.wright82@gmail.com> Date: Thu, 20 Aug 2026 03:57:42 +0000 Subject: [PATCH 016/136] refactor: make revealing the selected thing a directive (#137) The event hierarchy's auto-scroll was the good version of this behaviour, and it lived as a document.querySelector from the component after the tree finished building. Three other places had grown their own copy, each with slightly different behaviour and each reaching into a template it did not own by an id convention. RevealDirective inverts it: the element that knows it is selected reveals itself. Timing follows rendering rather than a guess about it, so a node that appears later -- as its branch expands, or when the tree is rebuilt for an analysis -- is revealed when it appears instead of racing whatever finished first. Applied to the hierarchy's nodes, the analysis result table's rows, and the pathway list under a selected search result. The hierarchy's fallback of scrolling to the pathway when the URL selects something that is not an event in the tree is kept, as `select() ?? pathwayId()`. `node.isSelected` was the obvious input and is the wrong one: it is also set on every ancestor of the selection, to draw the path. Two frames rather than one. One frame is enough for the element to exist and not enough for it to be where it ends up -- a table still expanding rows, or paging to a different page, moves after the first -- and revealing then left the row 28px past the edge of its container. Verified by measurement, not by eye: the hierarchy scrolls 469px to bring the selected event inside its container, the result row lands directly below the sticky header, and window.scrollY stays 0 in both, which is the page-drag that block:'nearest' exists to prevent. Also respects prefers-reduced-motion, which the copies did not. Left alone deliberately: found-table re-scrolls its parent row when its own content finishes loading, which is growth rather than selection and does not fit the directive; the object tree the issue mentions has no selection to bind to yet. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --- .../tabs/result-tab/result-tab.component.html | 1 + .../tabs/result-tab/result-tab.component.ts | 13 ++-- .../event-hierarchy.component.html | 2 + .../event-hierarchy.component.ts | 41 +++++------- .../src/app/utils/reveal.directive.ts | 66 +++++++++++++++++++ .../app/viewport/search/search.component.html | 1 + .../app/viewport/search/search.component.ts | 12 ++-- 7 files changed, 98 insertions(+), 38 deletions(-) create mode 100644 projects/pathway-browser/src/app/utils/reveal.directive.ts diff --git a/projects/pathway-browser/src/app/details/tabs/result-tab/result-tab.component.html b/projects/pathway-browser/src/app/details/tabs/result-tab/result-tab.component.html index faf1c680..17c8777b 100644 --- a/projects/pathway-browser/src/app/details/tabs/result-tab/result-tab.component.html +++ b/projects/pathway-browser/src/app/details/tabs/result-tab/result-tab.component.html @@ -233,6 +233,7 @@ <h3 class="selected-expression-title"> class="pathway-row" [id]="'pathway-' + pathway.stId + '-row'" [class.selected]="pathway.stId === data.selectedPathwayStId()" + [crReveal]="pathway.stId === data.selectedPathwayStId()" [class.expanded]="isExpanded(0, pathway)" [style.--header-row-height]="headerRowHeight()" [style.--row-height]="expandedRowHeight()" diff --git a/projects/pathway-browser/src/app/details/tabs/result-tab/result-tab.component.ts b/projects/pathway-browser/src/app/details/tabs/result-tab/result-tab.component.ts index 3af45d54..5d7425a4 100644 --- a/projects/pathway-browser/src/app/details/tabs/result-tab/result-tab.component.ts +++ b/projects/pathway-browser/src/app/details/tabs/result-tab/result-tab.component.ts @@ -11,6 +11,7 @@ import { inject, } from '@angular/core'; import { AnalysisService } from '../../../services/analysis.service'; +import { RevealDirective } from '../../../utils/reveal.directive'; import { MatTableDataSource, MatTableModule } from '@angular/material/table'; import type { Analysis } from '../../../model/analysis.model'; import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator'; @@ -43,6 +44,7 @@ import { MatFormField, MatOption, MatSelect } from '@angular/material/select'; selector: 'cr-result-tab', imports: [ MatTableModule, + RevealDirective, MatSortModule, MatPaginatorModule, DecimalPipe, @@ -331,14 +333,9 @@ export class ResultTabComponent { pageSize, pageIndex, }); - - setTimeout(() => { - document.getElementById(`pathway-${stId}-row`)?.scrollIntoView({ - behavior: 'smooth', - block: 'start', - inline: 'start', - }); - }); + // The row brings itself into view once it is on the page -- see + // RevealDirective in the template. This effect only has to get the + // paginator to the page the row is on. }); }); diff --git a/projects/pathway-browser/src/app/event-hierarchy/event-hierarchy.component.html b/projects/pathway-browser/src/app/event-hierarchy/event-hierarchy.component.html index bc4aeb15..26c33c5c 100644 --- a/projects/pathway-browser/src/app/event-hierarchy/event-hierarchy.component.html +++ b/projects/pathway-browser/src/app/event-hierarchy/event-hierarchy.component.html @@ -50,6 +50,7 @@ <!-- stopPropagation() prevent the matTreeNodeToggle event from triggering when clicking--> <mat-nested-tree-node *matTreeNodeDef="let node" + [crReveal]="node.stId === revealTarget()" class="leaf-node" (click)="$event.stopPropagation()" [ngClass]="{ 'has-sibling': hasRootSiblingForLeafNode(node) }" @@ -125,6 +126,7 @@ <!-- This is the tree node template for expandable nodes --> <mat-nested-tree-node *matTreeNodeDef="let node; when: eventService.hasChild" + [crReveal]="node.stId === revealTarget()" [attr.st-id]="node.stId" [cdkTreeNodeTypeaheadLabel]="node.name" (click)="onTreeEventSelect(node)" diff --git a/projects/pathway-browser/src/app/event-hierarchy/event-hierarchy.component.ts b/projects/pathway-browser/src/app/event-hierarchy/event-hierarchy.component.ts index cc4245b1..4ec237ec 100644 --- a/projects/pathway-browser/src/app/event-hierarchy/event-hierarchy.component.ts +++ b/projects/pathway-browser/src/app/event-hierarchy/event-hierarchy.component.ts @@ -1,6 +1,7 @@ import { AfterViewInit, Component, + computed, effect, ElementRef, inject, @@ -49,18 +50,7 @@ import { MatButton, MatIconButton } from '@angular/material/button'; import { NgClass } from '@angular/common'; import { MatTooltip } from '@angular/material/tooltip'; import { PassiveDirective } from '../utils/passive.directive'; - -// Revealing the selected event must not move the tree when that event is already -// on screen. The default block:'start' scrolls the node to the top of the -// container every time -- which is what "the hierarchy jumps to the top" is -- -// and, because scrollIntoView walks every scrollable ancestor, it drags the page -// with it. 'nearest' scrolls the minimum needed, and nothing at all when the node -// is already visible. -const REVEAL_SELECTED: ScrollIntoViewOptions = { - behavior: 'smooth', - block: 'nearest', - inline: 'nearest', -}; +import { RevealDirective } from '../utils/reveal.directive'; @Component({ selector: 'cr-event-hierarchy', @@ -80,6 +70,7 @@ const REVEAL_SELECTED: ScrollIntoViewOptions = { NgClass, MatTooltip, PassiveDirective, + RevealDirective, ], }) @UntilDestroy() @@ -95,6 +86,19 @@ export class EventHierarchyComponent implements AfterViewInit, OnDestroy { private dboService: DatabaseObjectService = inject(DatabaseObjectService); readonly pathwayId = model<string>(); + + /** + * The node the tree should bring into view: whatever the URL selects, or the + * current pathway when it selects nothing. + * + * Nodes reveal themselves against this rather than the component finding them + * afterwards with a selector, so a node that renders later -- as its branch + * expands, or when the tree is rebuilt for an analysis -- is revealed when it + * appears instead of racing whatever finished first. `node.isSelected` would + * have been the obvious input and is the wrong one: it is also set on every + * ancestor of the selection, to draw the path. + */ + readonly revealTarget = computed(() => this.state.select() ?? this.pathwayId()); readonly split = input.required<SplitComponent>({ alias: 'eventSplit' }); @ViewChild('treeControlButton', { read: ElementRef }) treeControlButton?: ElementRef; @ViewChild('eventIcon', { read: ElementRef }) eventIcon?: ElementRef<HTMLElement>; @@ -182,11 +186,7 @@ export class EventHierarchyComponent implements AfterViewInit, OnDestroy { }), untilDestroyed(this) ) - .subscribe(() => { - document - .querySelector(`[st-id='${this.selectedIdFromUrl}']`) - ?.scrollIntoView(REVEAL_SELECTED); - }); + .subscribe(); analysing = toObservable(this.state.analysis) .pipe( @@ -319,13 +319,6 @@ export class EventHierarchyComponent implements AfterViewInit, OnDestroy { //tap(d => console.log('Final data', d)), ) .subscribe({ - next: () => { - // Give pathway id when idToUse is PEs - const element = - document.querySelector(`[st-id='${idToUse}']`) || - document.querySelector(`[st-id='${this.pathwayId()}']`); - element?.scrollIntoView(REVEAL_SELECTED); - }, error: (err: Error) => { console.error(err, err.stack); throw err; diff --git a/projects/pathway-browser/src/app/utils/reveal.directive.ts b/projects/pathway-browser/src/app/utils/reveal.directive.ts new file mode 100644 index 00000000..b4775c9b --- /dev/null +++ b/projects/pathway-browser/src/app/utils/reveal.directive.ts @@ -0,0 +1,66 @@ +import { Directive, effect, ElementRef, inject, input } from '@angular/core'; + +/** + * Scrolls its element into view when it becomes the thing worth looking at. + * + * ```html + * <li [crReveal]="node.stId === selected()">…</li> + * ``` + * + * This started as the event hierarchy revealing the selected event, done by + * `document.querySelector` from the component after the tree finished building. + * Three other places had grown their own copy, each with slightly different + * behaviour and each coupled to an id convention in a template it did not own. + * As a directive, the element that knows it is selected reveals itself, and the + * timing follows rendering rather than a guess about it. + * + * The scrolling itself is the part worth keeping identical everywhere: + * + * `block: 'nearest'` scrolls the minimum needed and does nothing at all when the + * element is already visible. The default, `'start'`, pulls the element to the + * top of its container on every change -- which is what "the hierarchy jumps to + * the top" was -- and because scrollIntoView walks every scrollable ancestor, it + * drags the whole page along with it. + */ +@Directive({ + selector: '[crReveal]', +}) +export class RevealDirective { + private element = inject<ElementRef<HTMLElement>>(ElementRef); + + /** Whether this element is the one to bring into view. */ + readonly reveal = input.required<boolean>({ alias: 'crReveal' }); + + /** + * Where to put it. 'nearest' means "only if it is not already visible", which + * is what almost every caller wants; 'start' is for a list where the selected + * row is meant to land at the top. + */ + readonly block = input<ScrollLogicalPosition>('nearest', { alias: 'crRevealBlock' }); + + constructor() { + effect((onCleanup) => { + if (!this.reveal()) return; + + // Two frames, not now and not one. One frame is enough for the element to + // exist, and not enough for it to be where it will end up: a row in a + // table that is still expanding rows, or paging to a different page, moves + // after the first frame. Revealing then left it 28px past the edge of its + // container. The second frame is after that layout has been painted. + let frame = requestAnimationFrame(() => { + frame = requestAnimationFrame(() => { + this.element.nativeElement.scrollIntoView({ + // Someone who has asked their system for less motion has asked for + // less motion. + behavior: window.matchMedia('(prefers-reduced-motion: reduce)').matches + ? 'auto' + : 'smooth', + block: this.block(), + inline: 'nearest', + }); + }); + }); + onCleanup(() => cancelAnimationFrame(frame)); + }); + } +} diff --git a/projects/pathway-browser/src/app/viewport/search/search.component.html b/projects/pathway-browser/src/app/viewport/search/search.component.html index d0aec154..9e96fe8c 100644 --- a/projects/pathway-browser/src/app/viewport/search/search.component.html +++ b/projects/pathway-browser/src/app/viewport/search/search.component.html @@ -148,6 +148,7 @@ [matTooltip]="'Select ' + selectedResult()?.stId + ' in ' + pathway.name" (click)="selectAndSetPathway(pathway.stId)" [class.selected]="pathway.stId === state.pathwayId()" + [crReveal]="pathway.stId === state.pathwayId()" matTooltipPosition="after" > <mat-icon class="custom-icon" [class.ehld]="pathway.hasEHLD" svgIcon="pathway"></mat-icon> diff --git a/projects/pathway-browser/src/app/viewport/search/search.component.ts b/projects/pathway-browser/src/app/viewport/search/search.component.ts index 25634799..dc9d8d13 100644 --- a/projects/pathway-browser/src/app/viewport/search/search.component.ts +++ b/projects/pathway-browser/src/app/viewport/search/search.component.ts @@ -41,6 +41,7 @@ import { MatTooltip } from '@angular/material/tooltip'; import { MatCheckbox } from '@angular/material/checkbox'; import { FlagButtonComponent } from '../../details/common/flag-button/flag-button.component'; import { ShadowScrollComponent } from '../../shared/shadow-scroll/shadow-scroll.component'; +import { RevealDirective } from '../../utils/reveal.directive'; import Entry = Search.Entry; const MIN_SUGGEST_LENGTH = 2; @@ -62,6 +63,7 @@ type Scope = 'local' | 'global'; MatCheckbox, FlagButtonComponent, ShadowScrollComponent, + RevealDirective, ], templateUrl: './search.component.html', styleUrl: './search.component.scss', @@ -151,13 +153,11 @@ export class SearchComponent { }); effect(() => { + // The selected pathway brings itself into view -- see RevealDirective in + // the template. This only has to tell the scroller to redraw the shadows + // that say there is more above or below. this.selectedResultPathwaysStable().length > 1 && - setTimeout(() => { - this.resultPathways() - ?.elementRef?.nativeElement?.querySelector('.selected') - ?.scrollIntoView({ behavior: 'smooth' }); - setTimeout(() => this.resultPathways()?.updateShadows(), 100); - }, 500); + setTimeout(() => this.resultPathways()?.updateShadows(), 600); }); } From 5db72581b54b5e43aff3895ecd1f1d3a72b95b85 Mon Sep 17 00:00:00 2001 From: Adam Wright <adam.j.wright82@gmail.com> Date: Thu, 20 Aug 2026 04:07:01 +0000 Subject: [PATCH 017/136] docs(curators): record what to check from this round Six new things for them to look at, one of which we cannot check ourselves: the PowerPoint file is structurally valid, but "opens in PowerPoint and converts to editable shapes" needs PowerPoint, and there is none on the build machine. That one is also a decision they may want to push back on, so it says what we traded and why rather than only asking them to click. Also records what is deliberately not offered -- dark figures -- and what fails together: GIF and PPTX come from a service running alongside the site, so if those two buttons break it is almost certainly the service rather than the diagram, and saying so saves a round trip. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --- CURATOR-REPORT.md | 57 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 50 insertions(+), 7 deletions(-) diff --git a/CURATOR-REPORT.md b/CURATOR-REPORT.md index d9f8937e..30007030 100644 --- a/CURATOR-REPORT.md +++ b/CURATOR-REPORT.md @@ -5,7 +5,7 @@ we need **them** to check, things we have **decided** and they should know, and things **waiting on someone else**. Fixed-and-confirmed items get deleted from here rather than accumulating — git history is the record of what was fixed. -Last updated: 2026-08-19 +Last updated: 2026-08-20 ## Please check on beta.reactome.org @@ -13,21 +13,64 @@ Last updated: 2026-08-19 > older build sitting on the production machine and is **not** updated by our > work — a fix will never appear there. -| # | What to check | Why we are asking | -| ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [#150](https://github.com/reactome/WebsiteAngular/issues/150) | Flag something, then confirm trivial molecules (H₂O, ATP…) stay visible at every zoom, and that their chemical structures never appear without the molecule underneath | Two real defects were fixed, but the original reports say "sometimes, but not always", and we could not make the failure happen on demand. We need someone who has seen it to confirm | -| [#143](https://github.com/reactome/WebsiteAngular/issues/143) | Same as above, specifically while navigating between pathways with a flag active | As above | -| [#154](https://github.com/reactome/WebsiteAngular/issues/154) | Right-click a complex or set after running an analysis: components are listed and the ones in your data are marked | Closed on the basis that the right-click panel delivers this. **Reopen if "within a diagram" meant drawing components as nodes inside the canvas** — that is a much larger piece, and the old GWT browser does not do it either | -| [#81](https://github.com/reactome/WebsiteAngular/issues/81) | Community → Events: confirm every attachment you expect is present | All 5 "Poster" links on the page resolve, but if a specific event is missing an attachment we have not spotted it | +| # | What to check | Why we are asking | +| ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [#150](https://github.com/reactome/WebsiteAngular/issues/150) | Flag something, then confirm trivial molecules (H₂O, ATP…) stay visible at every zoom, and that their chemical structures never appear without the molecule underneath | Two real defects were fixed, but the original reports say "sometimes, but not always", and we could not make the failure happen on demand. We need someone who has seen it to confirm | +| [#143](https://github.com/reactome/WebsiteAngular/issues/143) | Same as above, specifically while navigating between pathways with a flag active | As above | +| [#154](https://github.com/reactome/WebsiteAngular/issues/154) | Right-click a complex or set after running an analysis: components are listed and the ones in your data are marked | Closed on the basis that the right-click panel delivers this. **Reopen if "within a diagram" meant drawing components as nodes inside the canvas** — that is a much larger piece, and the old GWT browser does not do it either | +| [#81](https://github.com/reactome/WebsiteAngular/issues/81) | Community → Events: confirm every attachment you expect is present | All 5 "Poster" links on the page resolve, but if a specific event is missing an attachment we have not spotted it | +| **PowerPoint** | Download a diagram as **PPTX**, open it in real PowerPoint, then right-click the diagram → _Graphics Format_ → **Convert to Shape**. Does it open cleanly, and do you get editable shapes? | **We cannot test this — there is no PowerPoint on the build machine.** The file is validated structurally, but "opens in PowerPoint" is a different claim. See the decision below about what we chose here and why | +| **GIF** | Download a diagram as **GIF** with an expression analysis active. It should animate one frame per sample and look like the current site | New: it used to come from the old Java exporter, which is why it looked like the old diagrams. Also tell us whether ~1 MB for four samples is acceptable, and whether 1 second per sample is the right pace | +| [#141](https://github.com/reactome/WebsiteAngular/issues/141) | **Animated SVG**: open the downloaded file in a browser or Inkscape, then click the play/pause button, click any segment of the timeline to jump to that sample, and hover a segment to see its name | New controls. They need the file **opened as a document** — inside an `<img>`, or in a viewer that blocks scripts, the buttons are inert by design and hovering the button still pauses | +| [#140](https://github.com/reactome/WebsiteAngular/issues/140) | Flag a gene in the **genome-wide view**, with and without an analysis running | Flagging is now an outline instead of a fill, so the analysis colours survive underneath. Previously a flagged pathway lost its result colour, and without an analysis everything else was washed out | +| **Illustration downloads** | Download an illustrated pathway (Apoptosis, say) as **PNG** or **JPEG** | It was scaled twice and you got the **top-left ninth** of the illustration blown up to fill the file. Fixed, but worth one look | +| [#137](https://github.com/reactome/WebsiteAngular/issues/137) | Selecting things: in the event hierarchy, the analysis results table, and the search results. The selection should come into view without the panel jumping to the top | One shared implementation now. Nothing should move at all when the selected thing is already visible | ## Decisions they should know about +- **PowerPoint files carry the diagram as a vector image, not as shapes.** The old + exporter emitted a PowerPoint shape per glyph, so a file was editable the moment + it opened. It did that through a second, independent reimplementation of the + diagram — the reason exports drifted from the site — and a commercial Aspose + licence. Ours embeds the SVG, which PowerPoint draws and converts to editable + shapes in one click (_Graphics Format → Convert to Shape_). **If that click is + unacceptable, say so** — it is the one place we traded a small amount of + convenience for removing the second renderer. +- **GIF and PPTX now come from our own renderer**, so what you download is what the + site draws. For **illustrated** pathways they still come from the content + service, deliberately: it serves the same illustration file either way. +- **GIF renders at the diagram's own size** (around 6000px wide) rather than being + fitted to 2000px. Fitting it made 8pt labels unreadable. It stays around 1 MB + because only what changes between samples is stored. +- **Exported figures are always light.** The diagram has a full dark theme and the + renderer can use it, but it is not offered in the download panel: the dark + palette is designed for the screen, and as a standalone figure it reads as muddy. + Say the word if anyone actually wants dark figures. +- **The download panel has one checkbox for sub-pathway highlighting**, which + applies to every format including the server-rendered ones. Off leaves the tints + and labels out of the figure. +- **If GIF or PPTX fails**, it is probably the render service rather than the + diagram: those two are produced by a service running alongside the site. Report + it as "GIF download failed" and we will look at the service, not the diagram. + - **DisGeNET overlay page ([#92](https://github.com/reactome/WebsiteAngular/issues/92)) is not being ported.** Team decision, 2026-08-19. Old links now land on a not-found page that offers the same path on reactome.org, so nobody hits a dead end. - **Right-click menu, molecules download, analysis error handling, hierarchy scrolling, compare mode** — all previously reported and now fixed. Worth a spot-check but we are not blocking on it. - **The minimap is interactive again.** It was removed deliberately to save time; two people reported it, so pressing or dragging it now pans the diagram. ## Waiting on someone else +- **The render service is not deployed properly yet.** It runs as a plain process + on the dev box, so a reboot stops it and GIF/PPTX stop with it. The container + that fixes that is written and needs a little disk headroom on the box. Rate + limiting in front of it is required before this fronts reactome.org. +- **Cloudflare cache purge** — one-off, for figures cached before 2026-08-20. + Nothing new is cached now. +- **[#139](https://github.com/reactome/WebsiteAngular/issues/139) native cytoscape + shapes** needs the cytoscape team; it is their catalogue we would be adding to. +- **[#153](https://github.com/reactome/WebsiteAngular/issues/153) skipping the + diagram.json conversion** touches the shared diagram library, so it needs + beaversd and guanmingwu before anyone starts. + - **ORCID "Claim Your Work" ([#114](https://github.com/reactome/WebsiteAngular/issues/114))** — blocked on a backend deploy, not on frontend work. The person-page endpoints return real data, but `/ContentService/orcid/authenticated`, `/orcid/login` and `/orcid/claim/*` all 404: the `org.reactome.server.orcid.*` package is not in the deployed WAR. Needs that build deployed plus ORCID credentials in `service.properties`. Deferred by agreement, 2026-08-19. ## Known and deliberately not fixed From 94e34570f9c709b1e7c034c611e462e7b3a43c27 Mon Sep 17 00:00:00 2001 From: Adam Wright <adam.j.wright82@gmail.com> Date: Thu, 20 Aug 2026 04:49:23 +0000 Subject: [PATCH 018/136] feat(idg): port the IDG protein-to-pathways search (/idg) "What does this protein have to do with Reactome?", ported from the Vue app on idg.reactome.org, reachable from a tile on the homepage next to ReactomeFIViz. The data did not have to move first, which is the reason this is a front-end change and nothing else. idg.reactome.org/idgpairwise is public, answers with Access-Control-Allow-Origin, and returns TANC1's 482 enriched pathways in 70ms. IDG_SERVICE is the one line that changes when the data moves here. The pathways it finds are ours, so the table links into our own Pathway Browser rather than carrying the IDG portal's GWT diagram widgets across -- those widgets are the thing this year's work replaced. Two endpoint names are misspelled in the service ("realtionships", "Pathays"). They are spelled that way here too, because the service is what has to answer. An empty result now says which kind of empty it is. checkTerm tells "we have never heard of this symbol" apart from "this protein has no enriched pathway in the datasets you picked", and those call for different next steps -- check the spelling, or add datasets. Handling the IDG server being down took two goes. Reading value() on a resource that failed throws, and a throw inside a computed the template depends on takes the render with it, so a 503 from IDG produced "nothing found for TANC1" -- the page blaming the gene for the server being unreachable. Every resource read is guarded by hasValue() now and failure is judged by status(), checked before the loading and empty-term branches because it can happen before anyone searches. Verified against a 503 and a refused connection, and that the healthy path still returns 482 rows with no page errors. Breadcrumbs title-cased the segment, so /idg read as "Idg". Acronym segments are upper-cased now -- idg, api, doi, faq, orcid, toc -- which is right for all of them and wrong for none. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --- .../environments/environment.curator-local.ts | 7 + .../environments/environment.development.ts | 7 + .../src/environments/environment.github.ts | 7 + .../src/environments/environment.local.ts | 7 + .../environments/environment.production.ts | 7 + .../src/environments/environment.release.ts | 7 + .../src/environments/environment.ts | 7 + .../website-angular/src/app/app.routes.ts | 8 + .../app/breadcrumb/breadcrumb.component.ts | 13 +- .../home-shortcuts.component.html | 5 + .../src/app/idg/idg-page.component.html | 131 ++++++++++++ .../src/app/idg/idg-page.component.scss | 135 ++++++++++++ .../src/app/idg/idg-page.component.ts | 201 ++++++++++++++++++ .../src/app/idg/idg.service.ts | 82 +++++++ 14 files changed, 623 insertions(+), 1 deletion(-) create mode 100644 projects/website-angular/src/app/idg/idg-page.component.html create mode 100644 projects/website-angular/src/app/idg/idg-page.component.scss create mode 100644 projects/website-angular/src/app/idg/idg-page.component.ts create mode 100644 projects/website-angular/src/app/idg/idg.service.ts diff --git a/projects/pathway-browser/src/environments/environment.curator-local.ts b/projects/pathway-browser/src/environments/environment.curator-local.ts index b47e8820..bd68e62f 100644 --- a/projects/pathway-browser/src/environments/environment.curator-local.ts +++ b/projects/pathway-browser/src/environments/environment.curator-local.ts @@ -44,6 +44,13 @@ export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; // reimplementation of it. Served under the site's own origin by a proxy, so a // render can only be commissioned through whatever fronts the site. export const RENDER_SERVICE = `${environment.host}/RenderService`; + +// The IDG pairwise service (reactome-idg/idg-pairwise-ws), which relates a gene +// or protein to Reactome pathways through third-party interaction datasets. +// Absolute and cross-origin on purpose: the service answers with +// Access-Control-Allow-Origin, and its data lives on the IDG server rather than +// here. When that data moves, this is the line that changes. +export const IDG_SERVICE = 'https://idg.reactome.org/idgpairwise'; export const EXPERIMENT_SERVICE = `${environment.host}/experiment`; export const RESTFUL_API = `${environment.host}/ReactomeRESTfulAPI/RESTfulWS`; // EHLDs and pre-generated diagram JSON aren't served by a local content diff --git a/projects/pathway-browser/src/environments/environment.development.ts b/projects/pathway-browser/src/environments/environment.development.ts index a1808469..357a33f0 100644 --- a/projects/pathway-browser/src/environments/environment.development.ts +++ b/projects/pathway-browser/src/environments/environment.development.ts @@ -26,6 +26,13 @@ export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; // reimplementation of it. Served under the site's own origin by a proxy, so a // render can only be commissioned through whatever fronts the site. export const RENDER_SERVICE = `${environment.host}/RenderService`; + +// The IDG pairwise service (reactome-idg/idg-pairwise-ws), which relates a gene +// or protein to Reactome pathways through third-party interaction datasets. +// Absolute and cross-origin on purpose: the service answers with +// Access-Control-Allow-Origin, and its data lives on the IDG server rather than +// here. When that data moves, this is the line that changes. +export const IDG_SERVICE = 'https://idg.reactome.org/idgpairwise'; export const EXPERIMENT_SERVICE = `${environment.host}/experiment`; export const RESTFUL_API = `${environment.host}/ReactomeRESTfulAPI/RESTfulWS`; export const DOWNLOAD = `${environment.host}/download/current`; diff --git a/projects/pathway-browser/src/environments/environment.github.ts b/projects/pathway-browser/src/environments/environment.github.ts index 9c10e4ce..c0affe32 100644 --- a/projects/pathway-browser/src/environments/environment.github.ts +++ b/projects/pathway-browser/src/environments/environment.github.ts @@ -23,6 +23,13 @@ export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; // reimplementation of it. Served under the site's own origin by a proxy, so a // render can only be commissioned through whatever fronts the site. export const RENDER_SERVICE = `${environment.host}/RenderService`; + +// The IDG pairwise service (reactome-idg/idg-pairwise-ws), which relates a gene +// or protein to Reactome pathways through third-party interaction datasets. +// Absolute and cross-origin on purpose: the service answers with +// Access-Control-Allow-Origin, and its data lives on the IDG server rather than +// here. When that data moves, this is the line that changes. +export const IDG_SERVICE = 'https://idg.reactome.org/idgpairwise'; export const EXPERIMENT_SERVICE = `${environment.host}/experiment`; export const RESTFUL_API = `${environment.host}/ReactomeRESTfulAPI/RESTfulWS`; export const DOWNLOAD = `${environment.host}/download/current`; diff --git a/projects/pathway-browser/src/environments/environment.local.ts b/projects/pathway-browser/src/environments/environment.local.ts index d0c54064..86fe520f 100644 --- a/projects/pathway-browser/src/environments/environment.local.ts +++ b/projects/pathway-browser/src/environments/environment.local.ts @@ -28,6 +28,13 @@ export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; // reimplementation of it. Served under the site's own origin by a proxy, so a // render can only be commissioned through whatever fronts the site. export const RENDER_SERVICE = `${environment.host}/RenderService`; + +// The IDG pairwise service (reactome-idg/idg-pairwise-ws), which relates a gene +// or protein to Reactome pathways through third-party interaction datasets. +// Absolute and cross-origin on purpose: the service answers with +// Access-Control-Allow-Origin, and its data lives on the IDG server rather than +// here. When that data moves, this is the line that changes. +export const IDG_SERVICE = 'https://idg.reactome.org/idgpairwise'; export const EXPERIMENT_SERVICE = `${environment.host}/experiment`; export const RESTFUL_API = `${environment.host}/ReactomeRESTfulAPI/RESTfulWS`; export const DOWNLOAD = `${environment.host}/download/current`; diff --git a/projects/pathway-browser/src/environments/environment.production.ts b/projects/pathway-browser/src/environments/environment.production.ts index c39b6dfe..12375f1e 100644 --- a/projects/pathway-browser/src/environments/environment.production.ts +++ b/projects/pathway-browser/src/environments/environment.production.ts @@ -26,6 +26,13 @@ export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; // reimplementation of it. Served under the site's own origin by a proxy, so a // render can only be commissioned through whatever fronts the site. export const RENDER_SERVICE = `${environment.host}/RenderService`; + +// The IDG pairwise service (reactome-idg/idg-pairwise-ws), which relates a gene +// or protein to Reactome pathways through third-party interaction datasets. +// Absolute and cross-origin on purpose: the service answers with +// Access-Control-Allow-Origin, and its data lives on the IDG server rather than +// here. When that data moves, this is the line that changes. +export const IDG_SERVICE = 'https://idg.reactome.org/idgpairwise'; export const EXPERIMENT_SERVICE = `${environment.host}/experiment`; export const RESTFUL_API = `${environment.host}/ReactomeRESTfulAPI/RESTfulWS`; export const DOWNLOAD = `${environment.host}/download/current`; diff --git a/projects/pathway-browser/src/environments/environment.release.ts b/projects/pathway-browser/src/environments/environment.release.ts index c79f42c0..ce23f326 100644 --- a/projects/pathway-browser/src/environments/environment.release.ts +++ b/projects/pathway-browser/src/environments/environment.release.ts @@ -23,6 +23,13 @@ export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; // reimplementation of it. Served under the site's own origin by a proxy, so a // render can only be commissioned through whatever fronts the site. export const RENDER_SERVICE = `${environment.host}/RenderService`; + +// The IDG pairwise service (reactome-idg/idg-pairwise-ws), which relates a gene +// or protein to Reactome pathways through third-party interaction datasets. +// Absolute and cross-origin on purpose: the service answers with +// Access-Control-Allow-Origin, and its data lives on the IDG server rather than +// here. When that data moves, this is the line that changes. +export const IDG_SERVICE = 'https://idg.reactome.org/idgpairwise'; export const EXPERIMENT_SERVICE = `${environment.host}/experiment`; export const RESTFUL_API = `${environment.host}/ReactomeRESTfulAPI/RESTfulWS`; export const DOWNLOAD = `${environment.host}/download/current`; diff --git a/projects/pathway-browser/src/environments/environment.ts b/projects/pathway-browser/src/environments/environment.ts index 3c627a59..065871cc 100644 --- a/projects/pathway-browser/src/environments/environment.ts +++ b/projects/pathway-browser/src/environments/environment.ts @@ -64,6 +64,13 @@ export const ANALYSIS_SERVICE = `${environment.host}/AnalysisService`; // reimplementation of it. Served under the site's own origin by a proxy, so a // render can only be commissioned through whatever fronts the site. export const RENDER_SERVICE = `${environment.host}/RenderService`; + +// The IDG pairwise service (reactome-idg/idg-pairwise-ws), which relates a gene +// or protein to Reactome pathways through third-party interaction datasets. +// Absolute and cross-origin on purpose: the service answers with +// Access-Control-Allow-Origin, and its data lives on the IDG server rather than +// here. When that data moves, this is the line that changes. +export const IDG_SERVICE = 'https://idg.reactome.org/idgpairwise'; export const EXPERIMENT_SERVICE = `${environment.host}/experiment`; export const RESTFUL_API = `${environment.host}/ReactomeRESTfulAPI/RESTfulWS`; export const DOWNLOAD = `${environment.host}/download/current`; diff --git a/projects/website-angular/src/app/app.routes.ts b/projects/website-angular/src/app/app.routes.ts index 8c75f7f3..fe37a1b4 100644 --- a/projects/website-angular/src/app/app.routes.ts +++ b/projects/website-angular/src/app/app.routes.ts @@ -9,6 +9,14 @@ export const routes: Routes = [ }, /* Non - CMS Pages Below this Line */ + // Illuminating the Druggable Genome: which Reactome pathways a protein is + // associated with, from the IDG portal's interaction data. + { + path: 'idg', + loadComponent: () => import('./idg/idg-page.component').then((m) => m.IdgPageComponent), + pathMatch: 'full', + }, + //News Pages { path: 'about/news', diff --git a/projects/website-angular/src/app/breadcrumb/breadcrumb.component.ts b/projects/website-angular/src/app/breadcrumb/breadcrumb.component.ts index 8b286870..85dfa650 100644 --- a/projects/website-angular/src/app/breadcrumb/breadcrumb.component.ts +++ b/projects/website-angular/src/app/breadcrumb/breadcrumb.component.ts @@ -241,13 +241,24 @@ export class BreadcrumbComponent implements OnInit { return { path, queryParams }; } + /** + * Segments that are acronyms rather than words. Title-casing turns "idg" into + * "Idg", which reads as a typo -- and these are the only segments in the site + * where capitalising the first letter is the wrong answer. + */ + private static readonly ACRONYMS = new Set(['idg', 'api', 'doi', 'faq', 'orcid', 'toc']); + /** * Format a URL segment into a readable label (e.g., "why-reactome" -> "Why Reactome") */ private formatSegmentLabel(segment: string): string { return segment .split('-') - .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) + .map((word) => + BreadcrumbComponent.ACRONYMS.has(word.toLowerCase()) + ? word.toUpperCase() + : word.charAt(0).toUpperCase() + word.slice(1) + ) .join(' '); } } diff --git a/projects/website-angular/src/app/home-page/home-shortcuts/home-shortcuts.component.html b/projects/website-angular/src/app/home-page/home-shortcuts/home-shortcuts.component.html index bbd38578..98889198 100644 --- a/projects/website-angular/src/app/home-page/home-shortcuts/home-shortcuts.component.html +++ b/projects/website-angular/src/app/home-page/home-shortcuts/home-shortcuts.component.html @@ -24,6 +24,11 @@ ><mat-icon class="large-button-icon">hub</mat-icon>ReactomeFIViz </app-button></a > + <a class="shortcut-link" routerLink="/idg" + ><app-button [variant]="dark ? 'dark' : 'light'" size="large" + ><mat-icon class="large-button-icon">medication</mat-icon>IDG + </app-button></a + > <a class="shortcut-link" [routerLink]="navOptions()['documentation']?.link || '/documentation'" ><app-button [variant]="dark ? 'dark' : 'light'" size="large"> <mat-icon class="large-button-icon">school</mat-icon>Documentation diff --git a/projects/website-angular/src/app/idg/idg-page.component.html b/projects/website-angular/src/app/idg/idg-page.component.html new file mode 100644 index 00000000..58d3d6da --- /dev/null +++ b/projects/website-angular/src/app/idg/idg-page.component.html @@ -0,0 +1,131 @@ +<app-page-layout [showSidebar]="false" [showBreadcrumb]="true"> + <article class="idg-page"> + <header> + <h1>Illuminating the Druggable Genome</h1> + <p class="lede"> + Find the Reactome pathways a protein is associated with, through interaction data from BioGrid, BioPlex, + StringDB and others. Results link into the Pathway Browser. + </p> + </header> + + <form class="query" (ngSubmit)="search()"> + <mat-form-field appearance="outline" class="gene"> + <mat-label>Gene or protein</mat-label> + <input matInput name="gene" [(ngModel)]="entered" placeholder="TANC1" autocomplete="off" /> + <mat-hint>A gene symbol, for example TANC1 or TP53</mat-hint> + </mat-form-field> + + <mat-form-field appearance="outline" class="datasets"> + <mat-label>Interaction datasets</mat-label> + <mat-select name="datasets" [(ngModel)]="selected" multiple> + @for (group of bySpecies(); track group[0]) { + <mat-optgroup [label]="group[0]"> + @for (dataset of group[1]; track dataset.digitalKey) { + <mat-option [value]="dataset.digitalKey">{{ label(dataset) }}</mat-option> + } + </mat-optgroup> + } + </mat-select> + <mat-hint>{{ selected().length }} selected</mat-hint> + </mat-form-field> + + <button mat-flat-button type="submit" [disabled]="!entered().trim() || !selected().length"> + <mat-icon>search</mat-icon> + Search + </button> + </form> + + @if (failed()) { + <div class="state error"> + <h2>The IDG service did not answer</h2> + <p> + This page reads its data from the IDG server, which is separate from the rest of the site, so the service can + be down while everything else works. + </p> + <button mat-button type="button" (click)="retry()">Try again</button> + </div> + } @else if (results.isLoading()) { + <div class="state"> + <mat-spinner diameter="36" /> + <p>Looking for pathways associated with {{ term() }}…</p> + </div> + } @else if (!term()) { + <div class="state"> + <p>Enter a gene or protein to begin.</p> + </div> + } @else if (!pathways().length) { + <div class="state"> + @if (known.value() === false) { + <h2>{{ term() }} is not in the IDG data</h2> + <p> + No dataset here mentions that name. Gene symbols are what it knows — TANC1, TP53 — so it is worth checking + the spelling. + </p> + } @else { + <h2>Nothing found for {{ term() }}</h2> + <p> + {{ term() }} is known, but no pathway passed the significance cut-off in the datasets you picked. Try adding + datasets. + </p> + } + </div> + } @else { + <div class="results-header"> + <h2> + {{ pathways().length }} pathway{{ pathways().length === 1 ? '' : 's' }} for + {{ term() }} + </h2> + <mat-checkbox [(ngModel)]="leavesOnly" name="leavesOnly"> Lowest-level pathways only </mat-checkbox> + </div> + + <div class="table-scroll"> + <table class="pathways"> + <thead> + <tr> + <th scope="col">Pathway</th> + <th scope="col" class="numeric">p-value</th> + <th scope="col" class="numeric">FDR</th> + <th scope="col"><span class="visually-hidden">Open</span></th> + </tr> + </thead> + <tbody> + @for (pathway of pathways(); track pathway.stId) { + <tr> + <th scope="row"> + <a [routerLink]="['/PathwayBrowser', pathway.stId]">{{ pathway.name }}</a> + <span class="stid">{{ pathway.stId }}</span> + </th> + <td class="numeric">{{ format(pathway.pVal) }}</td> + <td class="numeric">{{ format(pathway.fdr) }}</td> + <td class="open"> + <a + [routerLink]="['/PathwayBrowser', pathway.stId]" + [attr.aria-label]="'Open ' + pathway.name + ' in the Pathway Browser'" + > + <mat-icon>account_tree</mat-icon> + </a> + </td> + </tr> + } + </tbody> + </table> + </div> + + @if (chosen().length) { + <footer class="provenance"> + <h3>Data sources</h3> + <ul> + @for (dataset of chosen(); track dataset.digitalKey) { + <li> + {{ dataset.provenance }} — {{ dataset.dataType.replace('_', ' ') }} + @if (dataset.bioSource) { + <span class="species">({{ dataset.bioSource.replace('_', ' ') }})</span> + } + </li> + } + </ul> + </footer> + } + } + </article> +</app-page-layout> diff --git a/projects/website-angular/src/app/idg/idg-page.component.scss b/projects/website-angular/src/app/idg/idg-page.component.scss new file mode 100644 index 00000000..85f2404c --- /dev/null +++ b/projects/website-angular/src/app/idg/idg-page.component.scss @@ -0,0 +1,135 @@ +.idg-page { + max-width: 68rem; + margin: 0 auto; + padding: 1.5rem 1rem 3rem; +} + +.lede { + max-width: 46rem; + color: var(--mat-sys-on-surface-variant, #555); +} + +.query { + display: flex; + flex-wrap: wrap; + align-items: flex-start; + gap: 1rem; + margin: 1.5rem 0 2rem; + + .gene { + flex: 1 1 14rem; + } + + .datasets { + flex: 2 1 22rem; + } + + button { + // Line the button up with the inputs rather than their hint text. + margin-top: 0.5rem; + } +} + +.state { + display: grid; + justify-items: center; + gap: 0.75rem; + padding: 2.5rem 1rem; + text-align: center; + color: var(--mat-sys-on-surface-variant, #555); + + &.error { + color: inherit; + } +} + +.results-header { + display: flex; + flex-wrap: wrap; + align-items: baseline; + justify-content: space-between; + gap: 1rem; + + h2 { + margin: 0; + } +} + +// The table can be long and, on a narrow screen, wider than the page. Scrolling +// it inside its own box keeps the page itself from scrolling sideways. +.table-scroll { + overflow-x: auto; + margin-top: 1rem; +} + +.pathways { + width: 100%; + border-collapse: collapse; + + th, + td { + padding: 0.5rem 0.75rem; + text-align: left; + border-bottom: 1px solid var(--mat-sys-outline-variant, #e0e0e0); + } + + thead th { + position: sticky; + top: 0; + background: var(--mat-sys-surface, #fff); + font-weight: 600; + white-space: nowrap; + } + + tbody th { + font-weight: 400; + } + + .numeric { + text-align: right; + font-variant-numeric: tabular-nums; + white-space: nowrap; + } + + .stid { + display: block; + font-size: 0.75rem; + color: var(--mat-sys-on-surface-variant, #666); + } + + .open a { + display: inline-flex; + } + + tbody tr:hover { + background: var(--mat-sys-surface-container, #f5f5f5); + } +} + +.provenance { + margin-top: 2rem; + font-size: 0.875rem; + color: var(--mat-sys-on-surface-variant, #555); + + h3 { + font-size: 0.875rem; + margin-bottom: 0.25rem; + } + + ul { + margin: 0; + padding-left: 1.25rem; + } + + .species { + font-style: italic; + } +} + +.visually-hidden { + position: absolute; + width: 1px; + height: 1px; + overflow: hidden; + clip-path: inset(50%); +} diff --git a/projects/website-angular/src/app/idg/idg-page.component.ts b/projects/website-angular/src/app/idg/idg-page.component.ts new file mode 100644 index 00000000..e69c39cc --- /dev/null +++ b/projects/website-angular/src/app/idg/idg-page.component.ts @@ -0,0 +1,201 @@ +import { + Component, + computed, + effect, + inject, + linkedSignal, + signal, + untracked, +} from '@angular/core'; +import { rxResource } from '@angular/core/rxjs-interop'; +import { FormsModule } from '@angular/forms'; +import { ActivatedRoute, Router, RouterLink } from '@angular/router'; +import { MatButton } from '@angular/material/button'; +import { MatCheckbox } from '@angular/material/checkbox'; +import { MatFormField, MatLabel, MatHint } from '@angular/material/form-field'; +import { MatIcon } from '@angular/material/icon'; +import { MatInput } from '@angular/material/input'; +import { MatOptgroup, MatOption, MatSelect } from '@angular/material/select'; +import { MatProgressSpinner } from '@angular/material/progress-spinner'; +import { PageLayoutComponent } from '../page-layout/page-layout.component'; +import { IdgDataset, IdgPathway, IdgService } from './idg.service'; + +/** + * The dataset to start from: human protein interactions, pooled across BioGrid, + * BioPlex and StringDB. It is the one nearly every question about a human + * protein starts with, and the 100-odd others are variations on species and + * assay that a person can then choose deliberately. + */ +const DEFAULT_DATASET = 'BioGridBioPlexStringDB|Homo_sapiens|Protein_Interaction'; + +/** + * "What does this protein have to do with Reactome?" + * + * A port of the search on idg.reactome.org, which talks to the same service this + * page does -- the data has not moved and does not need to for the page to work. + * + * The pathways it finds are ours, so the results link into our own pathway + * browser rather than carrying the IDG portal's diagram widgets across. That was + * the main reason to port the front end rather than embed the old page. + */ +@Component({ + selector: 'app-idg-page', + imports: [ + PageLayoutComponent, + FormsModule, + RouterLink, + MatButton, + MatCheckbox, + MatFormField, + MatLabel, + MatHint, + MatIcon, + MatInput, + MatOptgroup, + MatOption, + MatSelect, + MatProgressSpinner, + ], + templateUrl: './idg-page.component.html', + styleUrl: './idg-page.component.scss', +}) +export class IdgPageComponent { + private idg = inject(IdgService); + private route = inject(ActivatedRoute); + private router = inject(Router); + + /** What is in the box, which is not yet what has been searched for. */ + readonly entered = signal(this.route.snapshot.queryParamMap.get('gene') ?? ''); + + /** + * The searched term, in the URL so a result can be sent to someone. + */ + readonly term = signal(this.route.snapshot.queryParamMap.get('gene') ?? ''); + + readonly datasets = rxResource({ stream: () => this.idg.datasets() }); + + /** + * The chosen datasets, defaulting once the list arrives. + * + * linkedSignal rather than an effect writing a signal: the default depends on + * the loaded list, and a person's choice has to survive the list being + * re-read. + */ + readonly selected = linkedSignal<IdgDataset[] | undefined, number[]>({ + // hasValue() first: reading value() on a resource that failed throws, and a + // throw inside a computed the template depends on takes the whole page down + // with it -- which is how a failing IDG server produced "nothing found" + // instead of "the service did not answer". + source: () => (this.datasets.hasValue() ? this.datasets.value() : undefined), + computation: (available, previous) => { + if (previous?.value?.length) return previous.value; + const fallback = available?.find((dataset) => dataset.id === DEFAULT_DATASET); + return fallback ? [fallback.digitalKey] : []; + }, + }); + + /** Datasets grouped by species, which is how a person narrows this down. */ + readonly bySpecies = computed(() => { + const groups = new Map<string, IdgDataset[]>(); + for (const dataset of (this.datasets.hasValue() ? this.datasets.value() : []) ?? []) { + const species = (dataset.bioSource ?? 'Other').replace(/_/g, ' '); + groups.set(species, [...(groups.get(species) ?? []), dataset]); + } + // Human first: it is what most people are here for. + return [...groups.entries()].sort(([a], [b]) => + a === 'Homo sapiens' ? -1 : b === 'Homo sapiens' ? 1 : a.localeCompare(b) + ); + }); + + readonly results = rxResource({ + params: () => { + const term = this.term().trim(); + const keys = this.selected(); + return term && keys.length ? { term, keys } : undefined; + }, + stream: ({ params }) => this.idg.enrichedPathways(params.term, params.keys), + }); + + /** + * Whether the service knows the term at all. + * + * Only interesting when nothing came back: "we have never heard of this + * symbol" and "this protein has no enriched pathway in the datasets you + * picked" are different answers, and telling them apart is the difference + * between checking your spelling and choosing more datasets. + */ + readonly known = rxResource({ + params: () => { + const term = this.term().trim(); + return term ? { term } : undefined; + }, + stream: ({ params }) => this.idg.checkTerm(params.term), + }); + + /** Leaf pathways only: a hit there is more specific than one on a top-level. */ + readonly leavesOnly = signal(false); + + readonly pathways = computed<IdgPathway[]>(() => { + const found = (this.results.hasValue() ? this.results.value() : []) ?? []; + return this.leavesOnly() ? found.filter((pathway) => pathway.bottomLevel) : found; + }); + + /** + * Whether the service is the problem. + * + * The dataset list counts, not just the query. With the IDG server + * unreachable, the list is what fails first -- and with no datasets nothing is + * selected, so the query never runs and never errors. The page then had a + * search box, no datasets, and "nothing found", which blames the gene for the + * server being down. + */ + readonly failed = computed( + () => this.datasets.status() === 'error' || this.results.status() === 'error' + ); + + constructor() { + // Keep the box and the URL in step when someone navigates back, or edits the + // address directly. + effect(() => { + const gene = this.route.snapshot.queryParamMap.get('gene') ?? ''; + if (gene !== untracked(this.term)) { + this.entered.set(gene); + this.term.set(gene); + } + }); + } + + search() { + const gene = this.entered().trim(); + this.term.set(gene); + void this.router.navigate([], { + relativeTo: this.route, + queryParams: { gene: gene || null }, + queryParamsHandling: 'merge', + replaceUrl: true, + }); + } + + /** Both resources, since either can be the one that failed. */ + retry() { + if (this.datasets.status() === 'error') this.datasets.reload(); + if (this.results.status() === 'error') this.results.reload(); + } + + /** A dataset's label: provenance and assay, species being the group heading. */ + label(dataset: IdgDataset) { + return `${dataset.provenance} — ${dataset.dataType.replace(/_/g, ' ')}`; + } + + /** The datasets currently chosen, for the attribution line. */ + readonly chosen = computed(() => { + const keys = new Set(this.selected()); + const available = this.datasets.hasValue() ? this.datasets.value() : []; + return (available ?? []).filter((dataset) => keys.has(dataset.digitalKey)); + }); + + format(value: number) { + if (value === 0) return '0'; + return value < 0.001 ? value.toExponential(2) : value.toFixed(4); + } +} diff --git a/projects/website-angular/src/app/idg/idg.service.ts b/projects/website-angular/src/app/idg/idg.service.ts new file mode 100644 index 00000000..656c9cf6 --- /dev/null +++ b/projects/website-angular/src/app/idg/idg.service.ts @@ -0,0 +1,82 @@ +import { HttpClient } from '@angular/common/http'; +import { inject, Injectable } from '@angular/core'; +import { catchError, map, Observable, of } from 'rxjs'; +import { IDG_SERVICE } from '../../../../pathway-browser/src/environments/environment'; + +/** + * One of the interaction datasets the IDG portal knows about. + * + * `digitalKey` is what requests are keyed by, not `id`: the service takes a list + * of those integers. `provenance`, `bioSource` and `dataType` are the three axes + * the 100-odd datasets vary along, and are what a person picks by. + */ +export interface IdgDataset { + id: string; + digitalKey: number; + provenance: string; + dataType: string; + bioSource?: string; + origin?: string; +} + +/** + * A Reactome pathway the searched gene is enriched in, according to one or more + * interaction datasets. + * + * `bottomLevel` marks a pathway with no sub-pathways. The IDG portal filters on + * it, because a hit on a leaf pathway says something more specific than a hit on + * "Signal Transduction". + */ +export interface IdgPathway { + stId: string; + name: string; + pVal: number; + fdr: number; + bottomLevel: boolean; +} + +/** + * The IDG portal's "what does this protein have to do with Reactome" query. + * + * Ported from the Vue app at idg.reactome.org, which talks to the same service. + * The data behind it is generated separately and aligned to Reactome's graph + * database; it is expected to move to our own infrastructure eventually, at which + * point only IDG_SERVICE changes. + * + * Two endpoint names are misspelled in the service itself ("realtionships", + * "Pathays"). They are spelled here exactly as the service expects, because the + * service is what has to answer. + */ +@Injectable({ providedIn: 'root' }) +export class IdgService { + private http = inject(HttpClient); + + /** Whether the service knows this gene or protein at all. */ + checkTerm(term: string): Observable<boolean> { + return this.http + .get<boolean>(`${IDG_SERVICE}/checkTerm/${encodeURIComponent(term)}`) + .pipe(catchError(() => of(false))); + } + + /** Every dataset on offer, for the picker. */ + datasets(): Observable<IdgDataset[]> { + return this.http.get<IdgDataset[]>(`${IDG_SERVICE}/datadesc`); + } + + /** + * Pathways enriched for a term across the chosen datasets. + * + * `prd` is the p-value cut-off the service applies. Sorted by FDR here rather + * than relying on the service's order, so the table has a defined starting + * point. + */ + enrichedPathways(term: string, dataDescKeys: number[], prd = 0.01): Observable<IdgPathway[]> { + return this.http + .post<IdgPathway[]>(`${IDG_SERVICE}/relationships/enrichedSecondaryPathwaysForTerm1`, { + term, + dataDescKeys, + prd, + }) + .pipe(map((pathways) => [...pathways].sort((a, b) => a.fdr - b.fdr))); + } +} From e486406753cfa4eb622c6638e86be5cb79c64e54 Mon Sep 17 00:00:00 2001 From: Adam Wright <adam.j.wright82@gmail.com> Date: Thu, 20 Aug 2026 04:52:24 +0000 Subject: [PATCH 019/136] fix(serve): say "rebuilding" instead of throwing ENOENT mid-build `ng build --watch` empties and rewrites the output directory, so for the ten to twenty seconds a build takes there is no index.html to send. Requests landing in that window surfaced Express's ENOENT stack trace, which reads like the site is broken rather than busy, and gives whoever is looking at it no way to tell those apart. Adam hit exactly that while I was rebuilding beta. 503 with Retry-After is the honest answer -- the server is fine, the build is not there yet -- and the page refreshes itself so nobody sits reloading. Anything else that cannot be read is still a 500, because that is a real fault. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --- .../website-angular/src/scripts/serve-prod.js | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/projects/website-angular/src/scripts/serve-prod.js b/projects/website-angular/src/scripts/serve-prod.js index 6094c1c0..c229f029 100644 --- a/projects/website-angular/src/scripts/serve-prod.js +++ b/projects/website-angular/src/scripts/serve-prod.js @@ -87,10 +87,42 @@ app.use( }) ); +/** + * A page to show while a rebuild is in flight. + * + * `ng build --watch` empties and rewrites the output directory, so for the ten + * to twenty seconds a build takes there is no index.html to send. Requests + * landing in that window used to surface Express's ENOENT stack trace, which + * reads like the site is broken rather than busy -- and someone reading it has + * no way to tell those apart. + * + * 503 with Retry-After is the honest answer: the server is fine, the build is + * not there yet. The page reloads itself so nobody has to sit and refresh. + */ +const REBUILDING = `<!doctype html><meta charset="utf-8"><title>Rebuilding… + + +
+

Rebuilding

+

A new build is being written. This page will refresh itself.

+
`; + // Client-side routing: anything not matched above is an Angular route. app.get(/.*/, (_req, res) => { res.setHeader('Cache-Control', 'no-cache'); - res.sendFile(path.join(DIST, 'index.html')); + res.sendFile(path.join(DIST, 'index.html'), (error) => { + if (!error || res.headersSent) return; + if (error.code === 'ENOENT') { + res.setHeader('Retry-After', '5'); + return res.status(503).type('html').send(REBUILDING); + } + res.status(500).type('text/plain').send('Could not read the build output'); + }); }); waitForBuild().then((ready) => { From 5e3b3255ffd0098be55b8455075f6ede081a9ccb Mon Sep 17 00:00:00 2001 From: Adam Wright Date: Thu, 20 Aug 2026 05:04:11 +0000 Subject: [PATCH 020/136] fix(idg): filter by functional interaction score, and show the distribution The table had 482 rows for TANC1 because I passed a p-value where the service wanted a score. `prd` is the functional-interaction cutoff and defaults to 0.9; 0.01 meant no filtering at all. Two modes exist and the service picks by whether datasets are named, which is worth knowing: with datasets chosen `prd` is ignored entirely -- TANC1 returns the same 482 pathways at 0.01 and at 0.99 -- and only the no-datasets path actually filters. The threshold cannot have a fixed default. The service's own is 0.9, and TANC1's best predicted interactor scores 0.891, so 0.9 returns nothing whatsoever for it. It starts at the 90th percentile of the gene's own distribution instead, says how many interactors that keeps out of how many there are, and says what the best score is -- so a threshold that returns nothing is visibly the threshold's fault. Under it is the distribution itself, 28 buckets, filled where they are kept and faded where they are not. TANC1's scores sit between 0.24 and 0.89 with a median of 0.52, which no fixed number would have suited. The table defaults to FDR <= 0.05 and lowest-level only, both untickable. TANC1 goes from 482 rows to 71, and the top of it is now NMDA receptors and postsynaptic transmission, which is what TANC1 is for. And the overlay this was missing: the kept interactors can be run through Reactome's own analysis, which returns a token, which colours Reacfoam and every diagram through machinery that already exists. It is not IDG's enrichment recomputed -- it is Reactome's overrepresentation of the interactor list -- and the button says so rather than implying the numbers match the table. The token came back percent-encoded and the router encoded it again, which is the same double-encoding that bit the download links. Decoded at the service boundary this time, so every caller can encode once. Still missing IDG's own diagram: a pathway-similarity network, 412 nodes coloured by weighted Target Development Level and 22,509 edges. The edge count needs a filter of its own before it is worth drawing, so it is not in this pass. Co-Authored-By: Claude Opus 5 --- .../src/app/idg/idg-page.component.html | 144 +++++++++--- .../src/app/idg/idg-page.component.scss | 82 +++++++ .../src/app/idg/idg-page.component.ts | 217 ++++++++++++++---- .../src/app/idg/idg.service.ts | 86 ++++++- 4 files changed, 450 insertions(+), 79 deletions(-) diff --git a/projects/website-angular/src/app/idg/idg-page.component.html b/projects/website-angular/src/app/idg/idg-page.component.html index 58d3d6da..3a20c793 100644 --- a/projects/website-angular/src/app/idg/idg-page.component.html +++ b/projects/website-angular/src/app/idg/idg-page.component.html @@ -3,8 +3,8 @@

Illuminating the Druggable Genome

- Find the Reactome pathways a protein is associated with, through interaction data from BioGrid, BioPlex, - StringDB and others. Results link into the Pathway Browser. + Find the Reactome pathways a protein's interactors are enriched in, using predicted functional interactions or + curated interaction datasets. Results link into the Pathway Browser.

@@ -15,26 +15,75 @@

Illuminating the Druggable Genome

A gene symbol, for example TANC1 or TP53 - - Interaction datasets - - @for (group of bySpecies(); track group[0]) { - - @for (dataset of group[1]; track dataset.digitalKey) { - {{ label(dataset) }} - } - - } - - {{ selected().length }} selected - - - + + Functional interaction score + Interaction datasets + + + @if (mode() === 'score') { +
+ @if (scores.isLoading()) { +

Loading interaction scores…

+ } @else if (scoreRange()) { + @let range = scoreRange()!; +
+ + + + +

+ {{ kept().genes.length }} of {{ kept().total }} predicted interactors score + {{ threshold().toFixed(2) }} or better. This gene's best is {{ range.max.toFixed(2) }}. +

+
+ + + + } +
+ } @else { +
+ + Interaction datasets + + @for (group of bySpecies(); track group[0]) { + + @for (dataset of group[1]; track dataset.digitalKey) { + {{ label(dataset) }} + } + + } + + {{ selected().length }} selected. The score threshold does not apply here. + +
+ } + @if (failed()) {

The IDG service did not answer

@@ -44,7 +93,7 @@

The IDG service did not answer

- } @else if (results.isLoading()) { + } @else if (results.isLoading() || scores.isLoading()) {

Looking for pathways associated with {{ term() }}…

@@ -53,31 +102,61 @@

The IDG service did not answer

Enter a gene or protein to begin.

- } @else if (!pathways().length) { + } @else if (!counts().matching) {
@if (known.value() === false) {

{{ term() }} is not in the IDG data

+

No dataset here mentions that name, so it is worth checking the spelling.

+ } @else if (counts().total) { +

Nothing passed the filters

- No dataset here mentions that name. Gene symbols are what it knows — TANC1, TP53 — so it is worth checking - the spelling. + {{ counts().total }} pathways came back, but none is both significant and lowest-level. Untick a filter + below, or lower the score threshold.

} @else {

Nothing found for {{ term() }}

-

- {{ term() }} is known, but no pathway passed the significance cut-off in the datasets you picked. Try adding - datasets. -

+

{{ term() }} is known, but no pathway is enriched at this threshold. Try lowering it.

}
} @else {

- {{ pathways().length }} pathway{{ pathways().length === 1 ? '' : 's' }} for - {{ term() }} + {{ counts().matching }} pathway{{ counts().matching === 1 ? '' : 's' }} for {{ term() }} + @if (counts().matching !== counts().total) { + of {{ counts().total }} enriched + }

- Lowest-level pathways only +
+ + FDR ≤ 0.05 + + + Lowest-level only + +
+ @if (mode() === 'score' && kept().genes.length) { +
+ +

+ Runs the {{ kept().genes.length }} interactors through Reactome's own analysis and opens the genome-wide + view coloured by it. That is Reactome's overrepresentation of the interactor list, not the IDG statistics in + the table. +

+ @if (analysisFailed()) { +

The analysis could not be created. Please try again.

+ } +
+ } +
@@ -111,7 +190,14 @@

- @if (chosen().length) { + @if (counts().matching > counts().shown) { +

+ Showing the {{ counts().shown }} most significant. + +

+ } + + @if (mode() === 'datasets' && chosen().length) {

Data sources

    diff --git a/projects/website-angular/src/app/idg/idg-page.component.scss b/projects/website-angular/src/app/idg/idg-page.component.scss index 85f2404c..c72e7b21 100644 --- a/projects/website-angular/src/app/idg/idg-page.component.scss +++ b/projects/website-angular/src/app/idg/idg-page.component.scss @@ -133,3 +133,85 @@ overflow: hidden; clip-path: inset(50%); } + +.mode { + margin-bottom: 1rem; +} + +.score-filter, +.dataset-filter { + margin-bottom: 1.5rem; +} + +.threshold { + max-width: 34rem; + + label { + display: block; + margin-bottom: 0.25rem; + } + + mat-slider { + width: 100%; + } +} + +.quiet { + margin: 0.25rem 0 0; + font-size: 0.875rem; + color: var(--mat-sys-on-surface-variant, #667); +} + +.failed { + color: var(--mat-sys-error, #b3261e); + font-size: 0.875rem; +} + +// The score distribution: bars for kept buckets, faded for dropped ones. Plain +// elements rather than a charting library -- it is 28 numbers. +.histogram { + display: flex; + align-items: flex-end; + gap: 2px; + height: 4rem; + max-width: 34rem; + margin-top: 0.75rem; + + .bar { + flex: 1 1 0; + min-height: 1px; + background: var(--mat-sys-primary, #0f7f8f); + border-radius: 1px 1px 0 0; + + &.dropped { + background: var(--mat-sys-outline-variant, #cfd8dc); + } + } +} + +.filters { + display: flex; + gap: 1rem; + flex-wrap: wrap; +} + +.overlay-action { + margin: 1rem 0 0; + padding: 0.75rem 1rem; + border: 1px solid var(--mat-sys-outline-variant, #e0e0e0); + border-radius: 0.5rem; + + mat-spinner { + display: inline-block; + margin-right: 0.4rem; + } + + p { + max-width: 46rem; + } +} + +.more { + margin-top: 0.75rem; + font-size: 0.875rem; +} diff --git a/projects/website-angular/src/app/idg/idg-page.component.ts b/projects/website-angular/src/app/idg/idg-page.component.ts index e69c39cc..d89763c5 100644 --- a/projects/website-angular/src/app/idg/idg-page.component.ts +++ b/projects/website-angular/src/app/idg/idg-page.component.ts @@ -11,32 +11,39 @@ import { rxResource } from '@angular/core/rxjs-interop'; import { FormsModule } from '@angular/forms'; import { ActivatedRoute, Router, RouterLink } from '@angular/router'; import { MatButton } from '@angular/material/button'; +import { MatButtonToggle, MatButtonToggleGroup } from '@angular/material/button-toggle'; import { MatCheckbox } from '@angular/material/checkbox'; -import { MatFormField, MatLabel, MatHint } from '@angular/material/form-field'; +import { MatFormField, MatHint, MatLabel } from '@angular/material/form-field'; import { MatIcon } from '@angular/material/icon'; import { MatInput } from '@angular/material/input'; import { MatOptgroup, MatOption, MatSelect } from '@angular/material/select'; import { MatProgressSpinner } from '@angular/material/progress-spinner'; +import { MatSlider, MatSliderThumb } from '@angular/material/slider'; import { PageLayoutComponent } from '../page-layout/page-layout.component'; import { IdgDataset, IdgPathway, IdgService } from './idg.service'; /** - * The dataset to start from: human protein interactions, pooled across BioGrid, - * BioPlex and StringDB. It is the one nearly every question about a human - * protein starts with, and the 100-odd others are variations on species and - * assay that a person can then choose deliberately. + * The dataset to start from in dataset mode: human protein interactions, pooled + * across BioGrid, BioPlex and StringDB. */ const DEFAULT_DATASET = 'BioGridBioPlexStringDB|Homo_sapiens|Protein_Interaction'; +/** Buckets in the score histogram. Enough to show shape, few enough to read. */ +const BUCKETS = 28; + +/** Rows shown before asking whether you really want all of them. */ +const PAGE = 100; + /** * "What does this protein have to do with Reactome?" * * A port of the search on idg.reactome.org, which talks to the same service this * page does -- the data has not moved and does not need to for the page to work. * - * The pathways it finds are ours, so the results link into our own pathway - * browser rather than carrying the IDG portal's diagram widgets across. That was - * the main reason to port the front end rather than embed the old page. + * The pathways it finds are ours, so results link into our own pathway browser, + * and the interactors can be run as a Reactome analysis to colour the genome-wide + * map. That was the point of porting the front end rather than embedding the old + * page: the old one carries GWT diagram widgets that this year's work replaced. */ @Component({ selector: 'app-idg-page', @@ -45,16 +52,20 @@ const DEFAULT_DATASET = 'BioGridBioPlexStringDB|Homo_sapiens|Protein_Interaction FormsModule, RouterLink, MatButton, + MatButtonToggle, + MatButtonToggleGroup, MatCheckbox, MatFormField, - MatLabel, MatHint, + MatLabel, MatIcon, MatInput, MatOptgroup, MatOption, MatSelect, MatProgressSpinner, + MatSlider, + MatSliderThumb, ], templateUrl: './idg-page.component.html', styleUrl: './idg-page.component.scss', @@ -67,25 +78,25 @@ export class IdgPageComponent { /** What is in the box, which is not yet what has been searched for. */ readonly entered = signal(this.route.snapshot.queryParamMap.get('gene') ?? ''); - /** - * The searched term, in the URL so a result can be sent to someone. - */ + /** The searched term, in the URL so a result can be sent to someone. */ readonly term = signal(this.route.snapshot.queryParamMap.get('gene') ?? ''); - readonly datasets = rxResource({ stream: () => this.idg.datasets() }); - /** - * The chosen datasets, defaulting once the list arrives. + * How to choose which interactors count. * - * linkedSignal rather than an effect writing a signal: the default depends on - * the loaded list, and a person's choice has to survive the list being - * re-read. + * The service decides between these by whether datasets are named, and the two + * are genuinely different questions -- "who does this protein interact with, + * according to BioGrid" against "who is it predicted to interact with, above + * this confidence". Score is the default because it is the one with a control + * on it, and because the original portal leads with it. */ + readonly mode = signal<'score' | 'datasets'>('score'); + + readonly datasets = rxResource({ stream: () => this.idg.datasets() }); + readonly selected = linkedSignal({ // hasValue() first: reading value() on a resource that failed throws, and a - // throw inside a computed the template depends on takes the whole page down - // with it -- which is how a failing IDG server produced "nothing found" - // instead of "the service did not answer". + // throw inside a computed the template depends on takes the render with it. source: () => (this.datasets.hasValue() ? this.datasets.value() : undefined), computation: (available, previous) => { if (previous?.value?.length) return previous.value; @@ -101,28 +112,101 @@ export class IdgPageComponent { const species = (dataset.bioSource ?? 'Other').replace(/_/g, ' '); groups.set(species, [...(groups.get(species) ?? []), dataset]); } - // Human first: it is what most people are here for. return [...groups.entries()].sort(([a], [b]) => a === 'Homo sapiens' ? -1 : b === 'Homo sapiens' ? 1 : a.localeCompare(b) ); }); + /** Every interactor and its score, which is what the threshold acts on. */ + readonly scores = rxResource({ + params: () => { + const term = this.term().trim(); + return term ? { term } : undefined; + }, + stream: ({ params }) => this.idg.interactorScores(params.term), + }); + + private readonly sortedScores = computed(() => { + const scores = this.scores.hasValue() ? this.scores.value() : undefined; + return Object.values(scores ?? {}).sort((a, b) => a - b); + }); + + /** + * Where the threshold can usefully sit, which is a property of the gene. + * + * A fixed default is wrong here: the service's own default is 0.9, and TANC1's + * best predicted interactor scores 0.891, so 0.9 silently returns nothing at + * all. The range comes from the data instead. + */ + readonly scoreRange = computed(() => { + const sorted = this.sortedScores(); + if (!sorted.length) return undefined; + return { min: sorted[0], max: sorted[sorted.length - 1] }; + }); + + /** Starts at the 90th percentile: the confident tail, without being empty. */ + readonly threshold = linkedSignal({ + source: () => (this.sortedScores().length ? this.sortedScores() : undefined), + computation: (sorted, previous) => { + if (previous?.value !== undefined && previous.source) return previous.value; + if (!sorted?.length) return 0.5; + return Math.round(sorted[Math.floor(sorted.length * 0.9)] * 100) / 100; + }, + }); + + /** The interactors the threshold keeps, and how many there were to begin with. */ + readonly kept = computed(() => { + const scores = this.scores.hasValue() ? this.scores.value() : undefined; + const cutoff = this.threshold(); + const genes = Object.entries(scores ?? {}) + .filter(([, score]) => score >= cutoff) + .map(([gene]) => gene); + return { genes, total: Object.keys(scores ?? {}).length }; + }); + + /** The score distribution, so the threshold is chosen against something. */ + readonly histogram = computed(() => { + const sorted = this.sortedScores(); + const range = this.scoreRange(); + if (!sorted.length || !range) return []; + const width = (range.max - range.min) / BUCKETS || 1; + const counts = new Array(BUCKETS).fill(0); + for (const score of sorted) { + const bucket = Math.min(BUCKETS - 1, Math.floor((score - range.min) / width)); + counts[bucket]++; + } + const tallest = Math.max(...counts, 1); + return counts.map((count, index) => ({ + count, + height: (count / tallest) * 100, + from: range.min + index * width, + kept: range.min + (index + 0.5) * width >= this.threshold(), + })); + }); + readonly results = rxResource({ params: () => { const term = this.term().trim(); - const keys = this.selected(); - return term && keys.length ? { term, keys } : undefined; + if (!term) return undefined; + if (this.mode() === 'datasets') { + const datasets = this.selected(); + return datasets.length ? { term, datasets } : undefined; + } + // Waiting for the scores means the threshold is the data's, not a guess. + return this.scores.hasValue() ? { term, score: this.threshold() } : undefined; }, - stream: ({ params }) => this.idg.enrichedPathways(params.term, params.keys), + stream: ({ params }) => + this.idg.enrichedPathways(params.term, { + datasets: 'datasets' in params ? params.datasets : undefined, + score: 'score' in params ? params.score : undefined, + }), }); /** * Whether the service knows the term at all. * - * Only interesting when nothing came back: "we have never heard of this - * symbol" and "this protein has no enriched pathway in the datasets you - * picked" are different answers, and telling them apart is the difference - * between checking your spelling and choosing more datasets. + * Only interesting when nothing came back: "never heard of this symbol" and + * "no enriched pathway at this threshold" call for different next steps. */ readonly known = rxResource({ params: () => { @@ -132,30 +216,52 @@ export class IdgPageComponent { stream: ({ params }) => this.idg.checkTerm(params.term), }); - /** Leaf pathways only: a hit there is more specific than one on a top-level. */ - readonly leavesOnly = signal(false); + /** Default to the specific and the significant, which is the readable answer. */ + readonly leavesOnly = signal(true); + readonly significantOnly = signal(true); + readonly showAll = signal(false); - readonly pathways = computed(() => { + private readonly matching = computed(() => { const found = (this.results.hasValue() ? this.results.value() : []) ?? []; - return this.leavesOnly() ? found.filter((pathway) => pathway.bottomLevel) : found; + return found.filter( + (pathway) => + (!this.leavesOnly() || pathway.bottomLevel) && + (!this.significantOnly() || pathway.fdr <= 0.05) + ); }); + readonly pathways = computed(() => + this.showAll() ? this.matching() : this.matching().slice(0, PAGE) + ); + + readonly counts = computed(() => ({ + shown: this.pathways().length, + matching: this.matching().length, + total: ((this.results.hasValue() ? this.results.value() : []) ?? []).length, + })); + + readonly pageSize = PAGE; + /** * Whether the service is the problem. * - * The dataset list counts, not just the query. With the IDG server - * unreachable, the list is what fails first -- and with no datasets nothing is - * selected, so the query never runs and never errors. The page then had a - * search box, no datasets, and "nothing found", which blames the gene for the + * The dataset list counts, not just the query: with the IDG server unreachable + * the list fails first, nothing is selected, so the query never runs and never + * errors. The page then showed "nothing found", which blames the gene for the * server being down. */ readonly failed = computed( - () => this.datasets.status() === 'error' || this.results.status() === 'error' + () => + this.datasets.status() === 'error' || + this.results.status() === 'error' || + this.scores.status() === 'error' ); + /** Set while an analysis is being created, since that takes a moment. */ + readonly analysing = signal(false); + readonly analysisFailed = signal(false); + constructor() { - // Keep the box and the URL in step when someone navigates back, or edits the - // address directly. effect(() => { const gene = this.route.snapshot.queryParamMap.get('gene') ?? ''; if (gene !== untracked(this.term)) { @@ -168,6 +274,7 @@ export class IdgPageComponent { search() { const gene = this.entered().trim(); this.term.set(gene); + this.showAll.set(false); void this.router.navigate([], { relativeTo: this.route, queryParams: { gene: gene || null }, @@ -176,9 +283,36 @@ export class IdgPageComponent { }); } - /** Both resources, since either can be the one that failed. */ + /** + * Send the kept interactors through Reactome's own analysis and open the + * genome-wide view on the result. + * + * This is not IDG's enrichment recomputed -- it is Reactome's + * overrepresentation of the interactor list -- which is why the button says + * what it does and the page says so next to it. What it buys is every existing + * overlay: Reacfoam coloured by significance, the diagrams, the results table. + */ + async overlay() { + const genes = this.kept().genes; + if (!genes.length) return; + this.analysing.set(true); + this.analysisFailed.set(false); + try { + const token = await new Promise((resolve, reject) => + this.idg.analyseInteractors(this.term(), genes).subscribe({ next: resolve, error: reject }) + ); + if (!token) throw new Error('no token'); + await this.router.navigate(['/PathwayBrowser'], { queryParams: { analysis: token } }); + } catch { + this.analysisFailed.set(true); + } finally { + this.analysing.set(false); + } + } + retry() { if (this.datasets.status() === 'error') this.datasets.reload(); + if (this.scores.status() === 'error') this.scores.reload(); if (this.results.status() === 'error') this.results.reload(); } @@ -187,7 +321,6 @@ export class IdgPageComponent { return `${dataset.provenance} — ${dataset.dataType.replace(/_/g, ' ')}`; } - /** The datasets currently chosen, for the attribution line. */ readonly chosen = computed(() => { const keys = new Set(this.selected()); const available = this.datasets.hasValue() ? this.datasets.value() : []; diff --git a/projects/website-angular/src/app/idg/idg.service.ts b/projects/website-angular/src/app/idg/idg.service.ts index 656c9cf6..c7ec2488 100644 --- a/projects/website-angular/src/app/idg/idg.service.ts +++ b/projects/website-angular/src/app/idg/idg.service.ts @@ -1,7 +1,10 @@ import { HttpClient } from '@angular/common/http'; import { inject, Injectable } from '@angular/core'; import { catchError, map, Observable, of } from 'rxjs'; -import { IDG_SERVICE } from '../../../../pathway-browser/src/environments/environment'; +import { + ANALYSIS_SERVICE, + IDG_SERVICE, +} from '../../../../pathway-browser/src/environments/environment'; /** * One of the interaction datasets the IDG portal knows about. @@ -47,6 +50,24 @@ export interface IdgPathway { * "Pathays"). They are spelled here exactly as the service expects, because the * service is what has to answer. */ +/** + * An analysis token in the form a URL builder can use. + * + * The analysis service hands tokens back already percent-encoded ("...%3D"), and + * anything that then puts one through a router or URLSearchParams encodes it a + * second time -- "...%253D", a different token to everything downstream. Decoded + * at this boundary so callers can encode it exactly once. A token contains no + * literal '%', so a decode that throws means it was not encoded to begin with. + */ +function decodeToken(token: string | undefined) { + if (!token) return undefined; + try { + return decodeURIComponent(token); + } catch { + return token; + } +} + @Injectable({ providedIn: 'root' }) export class IdgService { private http = inject(HttpClient); @@ -64,19 +85,68 @@ export class IdgService { } /** - * Pathways enriched for a term across the chosen datasets. + * Every gene the term interacts with, and how strongly. + * + * The score is a predicted functional interaction: a posterior probability + * between 0 and 1, so its useful range depends on the gene. TANC1's highest is + * 0.89, which is why a fixed 0.9 threshold returns nothing at all for it. + */ + interactorScores(term: string): Observable> { + return this.http.get>( + `${IDG_SERVICE}/relationships/combinedScoreGenesForTerm/${encodeURIComponent(term)}` + ); + } + + /** + * Pathways enriched among a term's interactors. + * + * Two modes, and the service picks between them by whether datasets are named: + * + * - datasets: enrich over the interactors those datasets report. `prd` is + * ignored entirely -- TANC1 returns the same 482 pathways at 0.01 and 0.99. + * - score: no datasets, and `prd` is the functional-interaction score a + * predicted interactor has to beat. This is the one that actually filters, + * and the reason the first version of this page showed hundreds of rows: it + * sent a p-value where the service wanted a score. * - * `prd` is the p-value cut-off the service applies. Sorted by FDR here rather - * than relying on the service's order, so the table has a defined starting - * point. + * Sorted by FDR here rather than relying on the service's order, so the table + * has a defined starting point. */ - enrichedPathways(term: string, dataDescKeys: number[], prd = 0.01): Observable { + enrichedPathways( + term: string, + { datasets, score }: { datasets?: number[]; score?: number } + ): Observable { return this.http .post(`${IDG_SERVICE}/relationships/enrichedSecondaryPathwaysForTerm1`, { term, - dataDescKeys, - prd, + ...(datasets?.length ? { dataDescKeys: datasets } : {}), + ...(score === undefined ? {} : { prd: score }), }) .pipe(map((pathways) => [...pathways].sort((a, b) => a.fdr - b.fdr))); } + + /** + * Run a gene list through Reactome's own analysis and return the token. + * + * This is what makes the genome-wide overlay possible: the pathway browser + * colours Reacfoam and the diagrams from an analysis token, so handing it one + * built from IDG's interactors lights the whole map up with machinery that + * already exists. + * + * It is a different computation from IDG's enrichment -- Reactome's + * overrepresentation of the interactor list, not IDG's own aligned statistics + * -- so the page says so where it offers it rather than implying they are the + * same numbers. + */ + analyseInteractors(term: string, genes: string[]): Observable { + const body = [`#${term} interactors`, ...genes].join('\n'); + return this.http + .post<{ summary?: { token?: string } }>( + `${ANALYSIS_SERVICE}/identifiers/projection?interactors=false&pageSize=1&page=1` + + `&sortBy=ENTITIES_PVALUE&order=ASC&resource=TOTAL&includeDisease=true`, + body, + { headers: { 'Content-Type': 'text/plain' } } + ) + .pipe(map((result) => decodeToken(result.summary?.token))); + } } From f029931df437d842720bb0e8c346a5b8c06ce8ed Mon Sep 17 00:00:00 2001 From: Adam Wright Date: Thu, 20 Aug 2026 05:15:48 +0000 Subject: [PATCH 021/136] feat(idg): show Target Development Level, and accept lower-case symbols The table had p-value and FDR, which any enrichment gives you. What makes this the *druggable* genome is Target Development Level, and the page was throwing it away. It comes from the network endpoint, which returns the same lowest-level pathways the table does -- 267 nodes against 267 lowest-level rows for TANC1 -- with a weighted mean TDL per pathway. The scale runs tDark to tClin and low is dark: TANC1's enriched pathways run 1.69 to 3.50, with FCGR3A-mediated phagocytosis at the dark end and acetylcholine binding at the drugged end. As a column, and as a plot of significance against how well studied, where the interesting corner is high and to the left: enriched for this protein's interactors, and full of proteins nobody has drugged. Lower-case symbols found nothing. The service's index holds upper-case human symbols only -- checkTerm says TANC1 exists and tanc1, Tanc1 and Trp53 do not -- and the enrichment endpoint answers a lower-case term with zero pathways rather than an error, so "tanc1" looked exactly like a gene with no enriched pathways. Terms are upper-cased on the way in, which cannot collide with a mixed-case symbol from another species because none is in there, and UniProt accessions are upper-case already. Co-Authored-By: Claude Opus 5 --- .../src/app/idg/idg-page.component.html | 51 +++++++++ .../src/app/idg/idg-page.component.scss | 96 ++++++++++++++++ .../src/app/idg/idg-page.component.ts | 108 ++++++++++++++++-- .../src/app/idg/idg.service.ts | 64 +++++++++++ 4 files changed, 308 insertions(+), 11 deletions(-) diff --git a/projects/website-angular/src/app/idg/idg-page.component.html b/projects/website-angular/src/app/idg/idg-page.component.html index 3a20c793..e2e41524 100644 --- a/projects/website-angular/src/app/idg/idg-page.component.html +++ b/projects/website-angular/src/app/idg/idg-page.component.html @@ -157,6 +157,41 @@

} + @if (scatter()) { + @let plot = scatter()!; +
+
+ Significance against how well studied — the pathways worth a second look are + high and to the left: enriched for {{ term() }}'s interactors, and full of proteins nobody + has drugged yet. +
+
+ + + @for (point of plot.points; track point.stId) { + + } + more significant ↑ +
+
+ tDark ({{ plot.range.min.toFixed(2) }}) + + tClin ({{ plot.range.max.toFixed(2) }}) +
+
+ } +
@@ -164,6 +199,14 @@

+ @@ -176,6 +219,14 @@

+ + +
Pathway p-value FDR + TDL + ? + Open
{{ format(pathway.pVal) }} {{ format(pathway.fdr) }} + @if (pathway.tdl) { + + {{ pathway.tdl.weightedTDL.toFixed(2) }} + } @else { + + } + { + const term = this.term().trim(); + if (!term) return undefined; + if (this.mode() === 'datasets') { + const datasets = this.selected(); + return datasets.length ? { term, datasets } : undefined; + } + return this.scores.hasValue() ? { term, score: this.threshold() } : undefined; + }, + stream: ({ params }) => + this.idg.druggability(params.term, { + datasets: 'datasets' in params ? params.datasets : undefined, + score: 'score' in params ? params.score : undefined, + }), + }); + /** * Whether the service knows the term at all. * @@ -221,13 +264,16 @@ export class IdgPageComponent { readonly significantOnly = signal(true); readonly showAll = signal(false); - private readonly matching = computed(() => { + private readonly matching = computed(() => { const found = (this.results.hasValue() ? this.results.value() : []) ?? []; - return found.filter( - (pathway) => - (!this.leavesOnly() || pathway.bottomLevel) && - (!this.significantOnly() || pathway.fdr <= 0.05) - ); + const levels = (this.druggability.hasValue() ? this.druggability.value() : {}) ?? {}; + return found + .filter( + (pathway) => + (!this.leavesOnly() || pathway.bottomLevel) && + (!this.significantOnly() || pathway.fdr <= 0.05) + ) + .map((pathway) => ({ ...pathway, tdl: levels[pathway.stId] })); }); readonly pathways = computed(() => @@ -242,6 +288,44 @@ export class IdgPageComponent { readonly pageSize = PAGE; + /** + * Significance against how well studied: the portal's actual question. + * + * A pathway high on this plot is enriched for the searched protein's + * interactors; one on the left is full of proteins nobody has drugged. Top + * left is therefore where there is something to find, which no ranking by + * p-value alone will show you. + */ + readonly scatter = computed(() => { + // flatMap rather than filter: it narrows tdl to present, so the rest of this + // reads without a non-null assertion on every line. + const rows = this.matching().flatMap((row) => + row.tdl ? [{ stId: row.stId, name: row.name, fdr: row.fdr, tdl: row.tdl }] : [] + ); + if (!rows.length) return undefined; + + const levels = rows.map((row) => row.tdl.weightedTDL); + const range = { min: Math.min(...levels), max: Math.max(...levels) }; + const span = range.max - range.min || 1; + // -log10, so more significant is higher up, which is how these are read. + const significance = (fdr: number) => (fdr > 0 ? -Math.log10(fdr) : 20); + const tallest = Math.max(...rows.map((row) => significance(row.fdr)), 1.5); + + return { + range, + cutoff: (1 - Math.log10(1 / 0.05) / tallest) * 100, + points: rows.map((row) => ({ + stId: row.stId, + name: row.name, + colour: row.tdl.colour ?? '#888', + tdl: row.tdl.weightedTDL, + fdr: row.fdr, + x: ((row.tdl.weightedTDL - range.min) / span) * 100, + y: (1 - significance(row.fdr) / tallest) * 100, + })), + }; + }); + /** * Whether the service is the problem. * @@ -263,7 +347,7 @@ export class IdgPageComponent { constructor() { effect(() => { - const gene = this.route.snapshot.queryParamMap.get('gene') ?? ''; + const gene = normalise(this.route.snapshot.queryParamMap.get('gene') ?? ''); if (gene !== untracked(this.term)) { this.entered.set(gene); this.term.set(gene); @@ -272,7 +356,9 @@ export class IdgPageComponent { } search() { - const gene = this.entered().trim(); + const gene = normalise(this.entered()); + // Put it back in the box too, so what was searched for is what is shown. + this.entered.set(gene); this.term.set(gene); this.showAll.set(false); void this.router.navigate([], { diff --git a/projects/website-angular/src/app/idg/idg.service.ts b/projects/website-angular/src/app/idg/idg.service.ts index c7ec2488..4d9b2975 100644 --- a/projects/website-angular/src/app/idg/idg.service.ts +++ b/projects/website-angular/src/app/idg/idg.service.ts @@ -38,6 +38,22 @@ export interface IdgPathway { bottomLevel: boolean; } +/** + * How well studied a pathway's proteins are, from TCRD's Target Development + * Level: a weighted mean over the pathway's genes. + * + * The scale runs from tDark to tClin, and low is dark. TANC1's enriched pathways + * run 1.69 to 3.50 -- "FCGR3A-mediated phagocytosis" at 1.69 is largely + * unstudied, "Acetylcholine binding and downstream events" at 3.50 is heavily + * drugged. That direction is the whole point of the portal: a pathway that is + * both significant and dark is where there is something to find. + */ +export interface IdgDruggability { + weightedTDL: number; + colour?: string; + genes?: number; +} + /** * The IDG portal's "what does this protein have to do with Reactome" query. * @@ -125,6 +141,54 @@ export class IdgService { .pipe(map((pathways) => [...pathways].sort((a, b) => a.fdr - b.fdr))); } + /** + * Target Development Level per pathway, keyed by stable id. + * + * It comes from the network endpoint, which returns the same lowest-level + * pathways the table does -- 267 nodes against 267 lowest-level rows for TANC1 + * -- plus the gene-sharing edges between them. Only the levels are read here; + * the edges are 13,167 for those 267 nodes, a mean degree of 99, and need a + * filter of their own before they are worth drawing. + */ + druggability( + term: string, + { datasets, score }: { datasets?: number[]; score?: number } + ): Observable> { + return this.http + .post<{ data?: Record }[]>( + `${IDG_SERVICE}/relationships/network/enrichedSecondaryPathaysForTerm`, + { + term, + ...(datasets?.length ? { dataDescKeys: datasets } : {}), + ...(score === undefined ? {} : { prd: score }), + } + ) + .pipe( + map((elements) => { + const levels: Record = {}; + for (const element of elements) { + const data = element.data ?? {}; + // Edges carry a source; nodes do not. + if ('source' in data) continue; + const id = data['id']; + const weightedTDL = data['weightedTDL']; + if (typeof id !== 'string' || typeof weightedTDL !== 'number') continue; + levels[id] = { + weightedTDL, + colour: + typeof data['weightedTDLColorHex'] === 'string' + ? data['weightedTDLColorHex'] + : undefined, + genes: typeof data['geneNumber'] === 'number' ? data['geneNumber'] : undefined, + }; + } + return levels; + }), + // A missing level is a missing column, not a broken page. + catchError(() => of({})) + ); + } + /** * Run a gene list through Reactome's own analysis and return the token. * From b0ffe16f293a75e99ed7e0e4878375e26e6909eb Mon Sep 17 00:00:00 2001 From: Adam Wright Date: Thu, 20 Aug 2026 05:27:20 +0000 Subject: [PATCH 022/136] feat(idg): add the portal's three plots, and match its defaults (#idg) I had built one plot of my own choosing and left out all three of IDG's, which was the wrong way round. So I drove the real portal and recorded what its results page asks for, rather than guessing again: - **Interacting Pathway Plot** -- significance per pathway, coloured by top-level pathway. That is the "type of pathway" that was missing, and it is the thing a table of p-values cannot show: whether a gene's hits cluster in one part of biology or scatter across it. TANC1's cluster in Signal Transduction (18), Immune System (7) and Neuronal System (7). The mapping comes from getHierarchicalOrderedPathways -- 2,730 stId-to-top-level pairs, fetched once and shared. - **Genes vs Functional Interaction Score** -- how many predicted interactors survive each threshold, as a curve. More useful than my histogram for choosing a threshold, because it says what a move costs. - **Feature Summary** -- interactions per data source, coloured by kind of evidence. Its request wants gene *names* and dataset *id strings*, not the digital keys everything else takes; sending keys returns an empty list rather than an error, which is how I first concluded the endpoint was not the right one. Three defaults now match the portal, and the numbers agree exactly: threshold 0.8 rather than a percentile, so TANC1 has 11 interacting genes and 54 pathways where the portal shows 11 and 54; a Genes column, which the payload had as numGenes all along; and ten rows a page with a working pager rather than a hundred-row wall. The TDL plot I added stays. It is not in the portal's results page -- TDL appears there only inside the pathway overview -- but low TDL is what "druggable" means, and having it next to significance is the reason to look. Plots are positioned elements and one polyline rather than a charting library: every point is a link with a tooltip, the shapes are scatter and a line, and the repo has no charting dependency to justify adding one for that. Co-Authored-By: Claude Opus 5 --- .../src/app/idg/idg-page.component.html | 128 +++++++++++- .../src/app/idg/idg-page.component.scss | 120 +++++++++++ .../src/app/idg/idg-page.component.ts | 194 +++++++++++++++++- .../src/app/idg/idg.service.ts | 68 +++++- 4 files changed, 492 insertions(+), 18 deletions(-) diff --git a/projects/website-angular/src/app/idg/idg-page.component.html b/projects/website-angular/src/app/idg/idg-page.component.html index e2e41524..ad133415 100644 --- a/projects/website-angular/src/app/idg/idg-page.component.html +++ b/projects/website-angular/src/app/idg/idg-page.component.html @@ -157,6 +157,35 @@

} + @if (pathwayPlot()) { + @let plot = pathwayPlot()!; +
+
Interacting Pathway Plot
+
+
Pathway
+
    + @for (entry of plot.legend; track entry.top) { +
  • + + {{ entry.top }} ({{ entry.count }}) +
  • + } +
+
+ } + @if (scatter()) { @let plot = scatter()!;
@@ -197,6 +226,7 @@

PathwayGenes p-value FDR @@ -217,6 +247,7 @@

{{ pathway.name }} {{ pathway.stId }}

{{ pathway.numGenes }} {{ format(pathway.pVal) }} {{ format(pathway.fdr) }} @@ -241,12 +272,97 @@

- @if (counts().matching > counts().shown) { -

- Showing the {{ counts().shown }} most significant. - -

- } +
+ + {{ range().from }}–{{ range().to }} of {{ range().total }} + + +
+ +
+ @if (genesByScore()) { + @let curve = genesByScore()!; +
+
Genes vs Functional Interaction Score for {{ term() }}
+
+ Number of Genes + + @for (point of curve.points; track point.score) { + + } +
+
0Functional Interaction Score1
+

Highest count {{ curve.most }} genes.

+
+ } + + @if (featurePlot()) { + @let features = featurePlot()!; +
+
Feature Summary for {{ term() }}
+
+ Number of Interactions + @for (point of features.points; track point.id) { + + } +
+
Feature
+
    + @for (entry of features.legend; track entry.dataType) { +
  • + + {{ entry.dataType.replace('_', ' ') }} +
  • + } +
+
+ } +
@if (mode() === 'datasets' && chosen().length) {