diff --git a/.gitignore b/.gitignore
index 72b6d40b..0362f23d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,6 +16,7 @@ __pycache__/
*.pyc
*.swp
*.lock
+/dist/
# due to using tox and pytest
.tox
.cache
diff --git a/cypress.config.ts b/cypress.config.ts
new file mode 100644
index 00000000..17161e32
--- /dev/null
+++ b/cypress.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "cypress";
+
+export default defineConfig({
+ e2e: {
+ setupNodeEvents(on, config) {
+ // implement node event listeners here
+ },
+ },
+});
diff --git a/cypress/fixtures/example.json b/cypress/fixtures/example.json
new file mode 100644
index 00000000..02e42543
--- /dev/null
+++ b/cypress/fixtures/example.json
@@ -0,0 +1,5 @@
+{
+ "name": "Using fixtures to represent data",
+ "email": "hello@cypress.io",
+ "body": "Fixtures are a great way to mock data for responses to routes"
+}
diff --git a/cypress/support/commands.js b/cypress/support/commands.js
new file mode 100644
index 00000000..698b01a4
--- /dev/null
+++ b/cypress/support/commands.js
@@ -0,0 +1,37 @@
+/// In this example, we select 'Strand' … First, we need to define the subset of cell lines which we want to aggregate. For the filter attribute we select 'Tumor Type' … … and as type of aggregation we choose 'Average' FYI: other types of aggregation are, for instance, 'Min', 'Max', 'Median', 'Count', and 'Boxplot'.`,
postAction: () => {
- TourUtils.setValueAndTrigger('.modal-body form > .col-sm-12:nth-child(3) > select', 'avg', 'change');
+ TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(3) > select', 'avg', 'change');
},
},
{
diff --git a/dist/tours/AddColumnToGeneListTour.js.map b/dist/tours/AddColumnToGeneListTour.js.map
index a0074a21..f25c4790 100644
--- a/dist/tours/AddColumnToGeneListTour.js.map
+++ b/dist/tours/AddColumnToGeneListTour.js.map
@@ -1 +1 @@
-{"version":3,"file":"AddColumnToGeneListTour.js","sourceRoot":"","sources":["../../src/tours/AddColumnToGeneListTour.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"AddColumnToGeneListTour.js","sourceRoot":"","sources":["../../src/tours/AddColumnToGeneListTour.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/tours/AssessBCCellLines.d.ts b/dist/tours/AssessBCCellLines.d.ts
new file mode 100644
index 00000000..552fa06d
--- /dev/null
+++ b/dist/tours/AssessBCCellLines.d.ts
@@ -0,0 +1,5 @@
+import { IStep } from 'tdp_core';
+export declare class AssessBCCellLines {
+ static createTour(): IStep[];
+}
+//# sourceMappingURL=AssessBCCellLines.d.ts.map
\ No newline at end of file
diff --git a/dist/tours/AssessBCCellLines.d.ts.map b/dist/tours/AssessBCCellLines.d.ts.map
new file mode 100644
index 00000000..b7d689e1
--- /dev/null
+++ b/dist/tours/AssessBCCellLines.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"AssessBCCellLines.d.ts","sourceRoot":"","sources":["../../src/tours/AssessBCCellLines.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAmB,MAAM,UAAU,CAAC;AAElD,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,UAAU,IAAI,KAAK,EAAE;CAqW7B"}
\ No newline at end of file
diff --git a/dist/tours/AssessBCCellLines.js b/dist/tours/AssessBCCellLines.js
new file mode 100644
index 00000000..1b81b8d5
--- /dev/null
+++ b/dist/tours/AssessBCCellLines.js
@@ -0,0 +1,346 @@
+import { TourUtils } from 'tdp_core';
+export class AssessBCCellLines {
+ static createTour() {
+ return [
+ {
+ html: ` Welcome to this short tour showing the assessment of breast cancer cell lines!
+ Use the "Next" button to iterate through all the steps. You can use the
+ "Cancel" button at any time to stop the tour and to interact with Ordino.
+ Please note that the tour will load a new analysis session and the current
+ one will be discarded.
+ You can choose between the three entity types 'Cell Lines', 'Tissue Samples', and 'Genes'. In this example we will work with a list of genes Combine both score columns to obtain stacked bars. Observe: Combining the columns highlights the importance of ERBB2. It is therefore probably the most relevant gene within this amplified genomic region. This finding leads the scientist to the question whether ERBB2 is also highly expressed and frequently amplified in other breast cancer cell lines. To investigate this, the analyst adds the following columns:
+
+
+
The aim is now to get more information about ERBB2.
+Select ERBB2 in the list.
`, + placement: 'centered', + }, + { + selector: '.le.le-multi.lineup-engine', + placement: 'centered', + html: `TOUR IS HERE SO FAR.`, + }, + { + selector: '.le header section[title^=HCC] i[title^=Sort]', + placement: 'centered', + html: `For example, you can use this icon to sort all genes by their copy number in the cell line 'HCC-827'`, + postAction: TourUtils.clickSelector, + }, + { + selector: '.le-tr[data-index="0"]', + placement: 'centered', + html: `In order to obtain additional information about one or more genes, click on the respective line or use the checkboxes`, + preAction: () => TourUtils.waitFor(() => { + const r = document.querySelector('.le-tr[data-index="0"]'); + if (!r) { + return null; + } + // has a string renderered EGFR entry + if (!Array.from(r.querySelectorAll('div[data-renderer="string"]')).some((d) => d.textContent === 'EGFR')) { + return null; + } + return r; + }, Infinity).then(() => TourUtils.wait(500)), + postAction: TourUtils.clickSelector, + }, + { + selector: '.viewWrapper .chooser:not(.hidden)', + placement: 'centered', + html: `Various 'Detail Views', providing additional information, are available.`, + preAction: TourUtils.waitForSelector, + }, + { + selector: '.viewWrapper .chooser button[data-viewid="celllinedb_expression_vs_copynumber"]', + placement: 'centered', + html: `For instance, clicking on 'Expression vs Copy Number' opens a scatter plot showing the relation of the two types of data`, + postAction: TourUtils.clickSelector, + }, + { + html: `Thanks for joining this tour demonstrating the basic features of Ordino.
+There are many more features to discover. Enjoy!
`, + }, + ]; + } +} +//# sourceMappingURL=AssessBCCellLines.js.map \ No newline at end of file diff --git a/dist/tours/AssessBCCellLines.js.map b/dist/tours/AssessBCCellLines.js.map new file mode 100644 index 00000000..97a5da6e --- /dev/null +++ b/dist/tours/AssessBCCellLines.js.map @@ -0,0 +1 @@ +{"version":3,"file":"AssessBCCellLines.js","sourceRoot":"","sources":["../../src/tours/AssessBCCellLines.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tours/WelcomeTour.d.ts.map b/dist/tours/WelcomeTour.d.ts.map index b1882c68..ccfba649 100644 --- a/dist/tours/WelcomeTour.d.ts.map +++ b/dist/tours/WelcomeTour.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"WelcomeTour.d.ts","sourceRoot":"","sources":["../../src/tours/WelcomeTour.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAa,MAAM,UAAU,CAAC;AAE5C,qBAAa,WAAW;IACtB,MAAM,CAAC,UAAU,IAAI,KAAK,EAAE;CA+K7B"} \ No newline at end of file +{"version":3,"file":"WelcomeTour.d.ts","sourceRoot":"","sources":["../../src/tours/WelcomeTour.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAa,MAAM,UAAU,CAAC;AAG5C,qBAAa,WAAW;IACtB,MAAM,CAAC,UAAU,IAAI,KAAK,EAAE;CA+K7B"} \ No newline at end of file diff --git a/dist/tours/WelcomeTour.js b/dist/tours/WelcomeTour.js index 9a0e18a5..eb8e4e7d 100644 --- a/dist/tours/WelcomeTour.js +++ b/dist/tours/WelcomeTour.js @@ -1,4 +1,5 @@ import { TourUtils } from 'tdp_core'; +import { openAddColumPanel } from './utils'; export class WelcomeTour { static createTour() { return [ @@ -57,7 +58,7 @@ export class WelcomeTour { selector: '.lu-side-panel-wrapper .lu-adder > button', html: `Additional columns can be added using the plus sign.`, placement: 'centered', - postAction: TourUtils.clickSelector, + postAction: openAddColumPanel, }, { selector: '.lu-search .lu-search-item', diff --git a/dist/tours/WelcomeTour.js.map b/dist/tours/WelcomeTour.js.map index 0957a44f..f1433c3e 100644 --- a/dist/tours/WelcomeTour.js.map +++ b/dist/tours/WelcomeTour.js.map @@ -1 +1 @@ -{"version":3,"file":"WelcomeTour.js","sourceRoot":"","sources":["../../src/tours/WelcomeTour.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"WelcomeTour.js","sourceRoot":"","sources":["../../src/tours/WelcomeTour.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tours/index.d.ts b/dist/tours/index.d.ts index 7ef18030..7f2f9116 100644 --- a/dist/tours/index.d.ts +++ b/dist/tours/index.d.ts @@ -1,4 +1,8 @@ export * from './WelcomeTour'; export * from './AddColumnToGeneListTour'; export * from './StartMenuTour'; +export * from './AssessBCCellLinesTour'; +export * from './PredictionTP53Tour'; +export * from './PredictionTP53Tour2'; +export * from './DrugTargetDiscoveryTour'; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/dist/tours/index.d.ts.map b/dist/tours/index.d.ts.map index 4d518b17..878fdb0f 100644 --- a/dist/tours/index.d.ts.map +++ b/dist/tours/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tours/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tours/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC"} \ No newline at end of file diff --git a/dist/tours/index.js b/dist/tours/index.js index 1d5ea8d4..c91f02b2 100644 --- a/dist/tours/index.js +++ b/dist/tours/index.js @@ -1,4 +1,8 @@ export * from './WelcomeTour'; export * from './AddColumnToGeneListTour'; export * from './StartMenuTour'; +export * from './AssessBCCellLinesTour'; +export * from './PredictionTP53Tour'; +export * from './PredictionTP53Tour2'; +export * from './DrugTargetDiscoveryTour'; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/tours/index.js.map b/dist/tours/index.js.map index b1d7eaa5..a2cb0eff 100644 --- a/dist/tours/index.js.map +++ b/dist/tours/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tours/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tours/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC"} \ No newline at end of file diff --git a/package.json b/package.json index d95b899b..30ce7f20 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "dependencies": { "jquery-ui": "1.12.1", "jstat": "^1.9.4", + "react-select-event": "^5.5.1", "react-highlight-words": "^0.17.0", "react-select": "^4.1.0", "react-select-async-paginate": "^0.5.3", diff --git a/src/assets/previews/tourAddColumn.png b/src/assets/previews/tourAddColumn.png new file mode 100644 index 00000000..f6bf7c6c Binary files /dev/null and b/src/assets/previews/tourAddColumn.png differ diff --git a/src/assets/previews/tourBreastCancerCL.png b/src/assets/previews/tourBreastCancerCL.png new file mode 100644 index 00000000..247c9481 Binary files /dev/null and b/src/assets/previews/tourBreastCancerCL.png differ diff --git a/src/assets/previews/tourDrugDiscovery.png b/src/assets/previews/tourDrugDiscovery.png new file mode 100644 index 00000000..ffdfc18f Binary files /dev/null and b/src/assets/previews/tourDrugDiscovery.png differ diff --git a/src/assets/previews/tourOrdinoWelcome.png b/src/assets/previews/tourOrdinoWelcome.png new file mode 100644 index 00000000..348042c0 Binary files /dev/null and b/src/assets/previews/tourOrdinoWelcome.png differ diff --git a/src/assets/previews/tourStartMenu.png b/src/assets/previews/tourStartMenu.png new file mode 100644 index 00000000..c5401b45 Binary files /dev/null and b/src/assets/previews/tourStartMenu.png differ diff --git a/src/assets/previews/tourTP53Predictor.png b/src/assets/previews/tourTP53Predictor.png new file mode 100644 index 00000000..2a6d2848 Binary files /dev/null and b/src/assets/previews/tourTP53Predictor.png differ diff --git a/src/phovea.ts b/src/phovea.ts index fbf17085..ebf57363 100644 --- a/src/phovea.ts +++ b/src/phovea.ts @@ -1019,7 +1019,7 @@ export default function (registry) { name: 'Ordino Welcome Tour', description: 'Learn the basic features of Ordino in a short welcome tour.', preview() { - return import('./assets/previews/expression.jpg'); // TODO update preview image + return import('./assets/previews/tourOrdinoWelcome.png'); }, multiPage: true, level: 'beginner', @@ -1038,7 +1038,7 @@ export default function (registry) { name: 'Overview of Start Menu', description: 'This tour provides an overview of the Ordino start menu.', preview() { - return import('./assets/previews/expression.jpg'); // TODO update preview image + return import('./assets/previews/tourStartMenu.png'); }, multiPage: true, level: 'beginner', @@ -1057,7 +1057,84 @@ export default function (registry) { name: 'Adding Data Columns', description: 'Learn how to add data columns to rankings in Ordino.', preview() { - return import('./assets/previews/expression.jpg'); // TODO update preview image + return import('./assets/previews/tourAddColumn.png'); + }, + multiPage: true, + level: 'beginner', + canJumpAround: false, + }, + ); + + registry.push( + 'tdpTour', + 'ordinoAssessBCCellLinesTour', + function () { + return import('./tours').then((t) => t.AssessBCCellLinesTour); + }, + { + factory: 'createTour', + name: 'Assessment of Breast Cancer Cell Lines', + description: 'This case study summarizes an analysis session carried out by a scientist working in a drug discovery team at a pharmaceutical company.', + preview() { + return import('./assets/previews/tourBreastCancerCL.png'); + }, + multiPage: true, + level: 'beginner', + canJumpAround: false, + }, + ); + + registry.push( + 'tdpTour', + 'ordinoPredictionTP53Tour', + function () { + return import('./tours').then((t) => t.PredictionTP53Tour); + }, + { + factory: 'createTour', + name: 'Prediction of TP53 Mutation Status (Part 1)', + description: 'This case study summarizes another analysis session, this time involving the prediction of the mutation status for TP53.', + preview() { + return import('./assets/previews/tourTP53Predictor.png'); + }, + multiPage: true, + level: 'beginner', + canJumpAround: false, + }, + ); + + registry.push( + 'tdpTour', + 'ordinoPredictionTP53Tour2', + function () { + return import('./tours').then((t) => t.PredictionTP53Tour2); + }, + { + factory: 'createTour', + name: 'Prediction of TP53 Mutation Status (Part 2)', + description: 'This case study serves as a continuation of the initial tour "Prediction of TP53 Mutation Status".', + preview() { + return import('./assets/previews/tourTP53Predictor.png'); + }, + multiPage: true, + level: 'beginner', + canJumpAround: false, + }, + ); + + registry.push( + 'tdpTour', + 'ordinoDrugTargetDiscoveryTour', + function () { + return import('./tours').then((t) => t.DrugTargetDiscoveryTour); + }, + { + factory: 'createTour', + name: 'Drug Target Discovery', + description: + 'A demonstration of Taggle (integrated into the Ordino Target Discovery Platform) by means of a case study conducted on complex genomics data for the purpose of drug target discovery.', + preview() { + return import('./assets/previews/tourDrugDiscovery.png'); }, multiPage: true, level: 'beginner', diff --git a/src/tours/AddColumnToGeneListTour.ts b/src/tours/AddColumnToGeneListTour.ts index 79c04473..fdcf0a1b 100644 --- a/src/tours/AddColumnToGeneListTour.ts +++ b/src/tours/AddColumnToGeneListTour.ts @@ -1,4 +1,5 @@ import { IStep, TourUtils } from 'tdp_core'; +import { openAddColumPanel } from './utils'; export class AddColumnToGeneListTour { static createTour(): IStep[] { @@ -64,7 +65,7 @@ export class AddColumnToGeneListTour { selector: '.lu-side-panel-wrapper .lu-adder > button', html: `Additional columns can be added using the plus sign.`, placement: 'centered', - postAction: TourUtils.clickSelector, + postAction: openAddColumPanel, }, { @@ -93,7 +94,7 @@ export class AddColumnToGeneListTour {In this example, we select 'Strand' …
`, placement: 'centered', preAction: () => TourUtils.waitFor('.modal.show').then(() => TourUtils.wait(250)), - postAction: () => TourUtils.setValueAndTrigger('.col > select', 'strand', 'change'), + postAction: () => TourUtils.setValueAndTrigger('.show .col > select', 'strand', 'change'), }, { @@ -133,9 +134,7 @@ export class AddColumnToGeneListTour { selector: '.lu-search .lu-search-group .lu-search-item', placement: 'centered', html: `Now, we want to add two columns containing the copy number information of two specific cell lines. To do so, we open the 'Cell Line Score (Single)' dialog`, - preAction: () => { - TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); - }, + preAction: openAddColumPanel, postAction: () => { TourUtils.click('.lu-search .lu-search-group .lu-search-item'); TourUtils.toggleClass('.lu-adder.once', 'once', false); @@ -157,7 +156,7 @@ export class AddColumnToGeneListTour { placement: 'centered', html: `As data type, we choose 'Relative Copy Number'`, postAction: () => { - TourUtils.setValueAndTrigger('.col > select', 'copy_number-relativecopynumber', 'change'); + TourUtils.setValueAndTrigger('.show .col > select', 'copy_number-relativecopynumber', 'change'); }, }, @@ -180,9 +179,7 @@ export class AddColumnToGeneListTour { placement: 'centered', html: `Finally, we want to add an aggregated column containing the mean/average copy number values of all breast cancer cell lines. To do so, we open the 'Cell Line Score (Aggregated)' dialog`, - preAction: () => { - TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); - }, + preAction: openAddColumPanel, postAction: () => { TourUtils.click('.lu-search .lu-search-group .lu-search-item:nth-child(2)'); TourUtils.toggleClass('.lu-adder.once', 'once', false); @@ -197,26 +194,26 @@ export class AddColumnToGeneListTour { }, { - selector: '.modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) div:nth-child(1) select', + selector: '.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) div:nth-child(1) select', html: `First, we need to define the subset of cell lines which we want to aggregate.
For the filter attribute we select 'Tumor Type' …
`, placement: 'centered', postAction: () => { - TourUtils.setValueAndTrigger('.modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'tumortype', 'change'); + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'tumortype', 'change'); }, }, { - selector: '.modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) .select2', + selector: '.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) .select2', html: `… and for the filter value we select 'breast carcinoma'.`, placement: 'centered', preAction: () => - TourUtils.waitFor('.modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) .select2').then(() => + TourUtils.waitFor('.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) .select2').then(() => TourUtils.wait(250), ), postAction: () => { TourUtils.setValueAndTrigger( - '.modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) select', + '.show .modal-body form > .col-sm-12:nth-child(1) .row:nth-child(1) .row:nth-child(1) > div:nth-child(2) select', 'breast carcinoma', 'change', ); @@ -224,21 +221,21 @@ export class AddColumnToGeneListTour { }, { - selector: '.modal-body form > .col-sm-12:nth-child(2) .row:nth-child(1) .select2', + selector: '.show .modal-body form > .col-sm-12:nth-child(2) .row:nth-child(1) .select2', placement: 'centered', html: `As data type, we choose 'Relative Copy Number' …`, postAction: () => { - TourUtils.setValueAndTrigger('.modal-body form > .col-sm-12:nth-child(2) select', 'copy_number-relativecopynumber', 'change'); + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'copy_number-relativecopynumber', 'change'); }, }, { - selector: '.modal-body form > .col-sm-12:nth-child(3) select', + selector: '.show .modal-body form > .col-sm-12:nth-child(3) select', placement: 'centered', html: `… and as type of aggregation we choose 'Average'
FYI: other types of aggregation are, for instance, 'Min', 'Max', 'Median', 'Count', and 'Boxplot'.`, postAction: () => { - TourUtils.setValueAndTrigger('.modal-body form > .col-sm-12:nth-child(3) > select', 'avg', 'change'); + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(3) > select', 'avg', 'change'); }, }, diff --git a/src/tours/AssessBCCellLinesTour.ts b/src/tours/AssessBCCellLinesTour.ts new file mode 100644 index 00000000..cd25c628 --- /dev/null +++ b/src/tours/AssessBCCellLinesTour.ts @@ -0,0 +1,463 @@ +import { IStep, TourUtils } from 'tdp_core'; +import { openAddColumPanel, setNextActive } from './utils'; + +export class AssessBCCellLinesTour { + static createTour(): IStep[] { + return [ + { + html: `
Welcome to this short tour showing the assessment of breast cancer cell lines!
+This tour will follow an analysis session from the perspective of a drug discovery team at a pharmaceutical company.
++ Use the "Next" button to iterate through all the steps. You can use the + "Cancel" button at any time to stop the tour and to interact with Ordino. + Please note that the tour will load a new analysis session and the current + one will be discarded. +
`, + }, + { + selector: 'ul[data-header="mainMenu"] > li:first-child > a', + html: `To start the analysis, the team clicks on the 'Datasets' tab.`, + placement: 'centered', + preAction: () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)') as HTMLElement; + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.add('hover'); + } + }, + postAction: async () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)') as HTMLElement; + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.remove('hover'); + datasetTab.querySelector('a').click(); + } + return TourUtils.waitFor('.ordino-dataset.genes-dataset').then(() => TourUtils.click('#ordino_dataset_tab > .ordino-scrollspy-nav > a:nth-child(3)')); + }, + pageBreak: 'manual', + }, + { + selector: '.ordino-dataset.genes-dataset > .card', + html: `Here they choose between the three entity types 'Cell Lines', 'Tissue Samples', and 'Genes'.
+In this example they choose to work with a list of genes.
`, + placement: 'centered', + preAction: () => TourUtils.waitFor('#ordino_dataset_tab > .ordino-scrollspy-container .genes-dataset > .card').then(() => TourUtils.wait(1000)), + postAction: () => TourUtils.click('.ordino-dataset.genes-dataset .session-tab > li:first-child'), + }, + { + selector: '[data-testid="normal-chromosome-protein-coding-human-genes-button"]', + html: `The scientists start by loading the list of all protein coding genes for humans.`, + placement: 'centered', + postAction: async () => { + return TourUtils.waitFor('.ordino-dataset.genes-dataset .dataset-entry button[title^="Name: normal chromosome protein coding human genes"]').then( + TourUtils.click, + ); + }, + pageBreak: 'manual', + }, + { + selector: '.le.le-multi.lineup-engine', + placement: 'centered', + preAction: () => TourUtils.waitFor('.le.le-multi.lineup-engine', Infinity).then(() => TourUtils.wait(2000)), + html: `The information is presented in a tabular format. Additionally to the gene ID, a set of columns containing some basic information is shown by default.`, + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `They begin by adding an additional column, done so by clicking on the plus icon shown here.`, + placement: 'centered', + postAction: openAddColumPanel, + }, + { + selector: '[data-testid="lu-adder-div"] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + html: `They choose to add a column for a single cell line score.`, + placement: 'centered', + postAction: async () => { + TourUtils.click('[data-testid="lu-adder-div"] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + return Promise.resolve(); + }, + }, + { + selector: '.modal.show .col > .select3', + placement: 'centered', + preAction: () => TourUtils.waitFor('.modal.show', Infinity).then(() => TourUtils.wait(150)), + html: `Now they select the cell line 'HCC1954' …`, + postAction: () => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'HCC1954;', 'input'); + }, + }, + { + selector: '.modal.show .col > .select2', + placement: 'centered', + html: `… and the data type as 'Relative Copy Number' …`, + postAction: () => { + TourUtils.setValueAndTrigger('.show .col > select', 'copy_number-relativecopynumber', 'change'); + }, + }, + { + selector: '.modal.show .modal-footer button[type=submit]', + html: `… and click 'Add'.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.le [data-col-id="col8"] .lu-action-sort', + placement: 'centered', + html: `They want to sort by this newly added column, so they click on the sort button in the column header.`, + preAction: () => TourUtils.waitFor('.le-tr[data-index="0"] [data-id="col8"].lu-renderer-number', Infinity), + postAction: () => { + TourUtils.click('.le [data-col-id="col8"] .lu-action-sort'); + }, + }, + { + selector: ['[data-index="0"].le-tr, [data-index="14"].le-tr'], + placement: 'centered', + html: `After sorting by this column, the analyst observes that about 15 genes on chromosome 17 are affected by a large genomic amplification.`, + preAction: () => TourUtils.waitFor('[data-index="0"].le-tr', Infinity).then(() => TourUtils.wait(2000)), + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `In order to identify the most relevant of these genes, the analyst adds a column with the Normalized Gene Expression (a measure of activity) for cell line HCC1954
+Individual steps for adding a column have been skipped this time.
`, + placement: 'centered', + postAction: async () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + await TourUtils.waitFor('.modal.show').then(async () => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'HCC1954;', 'input'); + TourUtils.setValueAndTrigger('.show .col > select', 'expression-tpm', 'change'); + await TourUtils.wait(1000); + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }); + }, + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `They also add a column with a Gene Sensitivity Score (a measure of importance for cell survival) for HCC1954.`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr[data-index="0"] [data-id="col9"].lu-renderer-number', Infinity), + postAction: () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + }, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(5) > span', + html: `To do so, they select to add a 'Depletion Screen Score (Single)' column.
+Similarly, the specific steps for adding a column have been skipped this time.
`, + placement: 'centered', + postAction: () => { + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(5) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + TourUtils.waitFor('.modal.show').then(() => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'HCC1954;', 'input'); + TourUtils.setValueAndTrigger('.show .col > select', 'depletion-rsa', 'change'); + TourUtils.wait(1000).then(() => TourUtils.click('.modal.show .modal-footer button[type=submit]')); + }); + }, + }, + { + selector: '[data-id="col10"] > .lu-toolbar > .lu-action-more', + html: `In an effort to improve the depletion score's readability, they decide to invert the linear scaling.
+To do this, they click on the three dots for more column options.
`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr[data-index="0"] [data-id="col10"].lu-renderer-number', Infinity), + postAction: TourUtils.clickSelector, + }, + { + selector: '.lu-action-data-mapping > span', + html: `They now click on 'Data Mapping'.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: ['.browser-default, .lu-dialog-buttons > [type="submit"]'], + html: `They select the 'Invert' option in the Normalization Scaling dropdown and then click on the tick at the bottom right to apply the new mapping.`, + placement: 'centered', + postAction: () => { + TourUtils.setValueAndTrigger('.browser-default', 'linear_invert', 'change'); + TourUtils.click('.lu-dialog-buttons > [type="submit"]'); + }, + }, + { + selector: '[data-index="0"]', + placement: 'centered', + html: `Observe: Of the highly amplified genes, they notice that ERBB2 (HER2) has the highest expression and the lowest sensitivity score. Therefore, it is probably the most relevant gene of this amplicon.`, + }, + { + selector: ['.le header [data-col-id="col9"], .le header [data-col-id="col10"]'], + html: `They can combine both score columns by dragging them together to obtain stacked bars.
+Observe: Combining the columns highlights the importance of ERBB2.
+It is therefore probably the most relevant gene within this amplified genomic region.
`, + placement: 'centered', + allowUserInteraction: true, + }, + { + selector: '[data-index="0"]', + html: `This finding leads the scientist to the question whether ERBB2 is also highly expressed and frequently amplified in other breast cancer cell lines.
+To investigate this, the analyst adds the following columns: +
The aim is now to get more information about ERBB2.
+They select ERBB2 in the list.
`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '[data-viewid="celllinedb_expression_vs_copynumber"]', + html: `They open the Expression vs Copy Number detail view.`, + placement: 'centered', + preAction: TourUtils.waitForSelector, + postAction: TourUtils.clickSelector, + }, + { + selector: '.tdp-view.expressionVsCopyNumber .ids', + html: `Here they observe the direct correlation between copy number and expression of ERBB2.`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.tdp-view.expressionVsCopyNumber .ids').then(() => TourUtils.wait(300)), + }, + { + selector: '[data-viewid="targetvalidation"]', + preAction: TourUtils.clickSelector, + html: `To find more information, they open the 'Open Targets' detail view …`, + placement: 'centered', + waitFor: () => TourUtils.waitFor('iframe [title="ERBB2"]').then(setNextActive), + }, + { + selector: '[data-viewid="pubmed"]', + html: `… and then the 'PubMed' detail view.`, + placement: 'centered', + preAction: TourUtils.clickSelector, + waitFor: () => TourUtils.waitFor('.tdp-view.proxy_view ').then(setNextActive), + }, + { + selector: '', + html: `Their question is now: In what cell lines is ERBB2 amplified?`, + placement: 'centered', + }, + { + selector: '[data-viewid="copynumbertable"]', + html: `They continue by opening the Copy Number detail view …`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '[data-id="col7"] .lu-action-sort', + html: `… and then sorting by the copy number.`, + placement: 'centered', + preAction: TourUtils.waitForSelector, + postAction: TourUtils.clickSelector, + }, + { + selector: '[data-testid="viewWrapper-1"] [data-id="col4"] .lu-action-filter', + html: `They want to filter for breast cancer via the column menu of column 'Tumor Type', while also filtering out cell lines with unknown tumor types.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.lu-dialog .lu-dialog-table', + html: `First they select only the "breast carcinoma" tumor type.`, + placement: 'centered', + postAction: () => { + TourUtils.wait(100) + .then(() => { + TourUtils.click('.lu-dialog-table .lu-checkbox:first-child'); + }) + .then(() => { + TourUtils.wait(500).then(() => { + TourUtils.click('input[type="checkbox"][data-cat="breast carcinoma"]'); + }); + }); + }, + }, + { + selector: ['.lu-dialog .lu-dialog-table, .lu-dialog-button[title="Apply"]'], + html: `Then they filter out cell lines with unknown types (the missing value rows) and submit the filter.`, + placement: 'centered', + postAction: () => { + TourUtils.wait(100) + .then(() => { + TourUtils.click('.lu-dialog > .lu-checkbox input'); + }) + .then(() => { + TourUtils.wait(500).then(() => { + TourUtils.click('.lu-dialog-button[type="submit"]'); + }); + }); + }, + }, + { + selector: '[data-testid="viewWrapper-1"] .lu-side-panel-wrapper .lu-adder > button', + html: `They now want to add the BRCA gene score columns.`, + placement: 'centered', + postAction: openAddColumPanel, + }, + { + selector: '[data-testid="viewWrapper-1"] [data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + html: `Once again, they use the plus icon to add a new column.`, + placement: 'centered', + postAction: () => { + TourUtils.click( + '[data-testid="viewWrapper-1"] [data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + ); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + }, + }, + { + selector: '.modal.show .col > .select3', + placement: 'centered', + preAction: () => TourUtils.waitFor('.modal.show').then(() => TourUtils.wait(150)), + html: `Here they select the BRCA1 and BRCA2 cell lines …`, + postAction: () => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'BRCA1;', 'input'); + TourUtils.wait(400).then(() => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'BRCA2;', 'input'); + }); + }, + }, + { + selector: '.modal.show .col > .select2', + placement: 'centered', + html: `… and then they set the data type to AA Mutated …`, + postAction: () => { + TourUtils.setValueAndTrigger('.show .col > select', 'mutation-aa_mutated', 'change'); + }, + }, + { + selector: '.modal.show .modal-footer button[type=submit]', + html: `… and click 'Add'.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: ['[data-testid="viewWrapper-1"] [data-index="0"].le-tr, [data-testid="viewWrapper-1"] [data-index="2"].le-tr'], + html: `Observe:
+HCC1954 has the highest ERBB2 amplification among BRCA1 mutated cell lines.
+HCC1569 has the highest ERBB2 amplification among BRCA2 mutated cell lines.
`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr:nth-of-type(1) [data-id="col8"][data-renderer="categorical"]'), + }, + { + selector: '', + html: `Finally, their aim is to find information provided by COSMIC about these two cell lines.`, + placement: 'centered', + }, + { + selector: ['[data-testid="viewWrapper-1"] [data-index="0"].le-tr, [data-testid="viewWrapper-1"] [data-index="2"].le-tr'], + html: `They select HCC1954 and HCC1569 …`, + placement: 'centered', + postAction: () => { + TourUtils.click('[data-testid="viewWrapper-1"] [data-index="0"] .lu-renderer-selection'); + TourUtils.click('[data-testid="viewWrapper-1"] [data-index="2"] .lu-renderer-selection'); + }, + }, + { + selector: '[data-testid="viewWrapper-1"] [data-viewid="cosmic"]', + html: `… and open the COSMIC detail view.`, + placement: 'centered', + preAction: TourUtils.waitForSelector, + postAction: TourUtils.clickSelector, + }, + { + selector: '[data-testid="viewWrapper-2"] select', + html: `Here they can use the drop-down menu to switch between the two cell lines.`, + placement: 'centered', + preAction: () => TourUtils.waitFor('[data-testid="viewWrapper-2"] select').then(() => TourUtils.wait(1000)), + }, + { + html: `Thanks for joining this tour demonstrating the assessment of breast cancer cell lines.
+There are still many more features to discover. Enjoy!
`, + }, + ]; + } +} diff --git a/src/tours/DrugTargetDiscoveryTour.ts b/src/tours/DrugTargetDiscoveryTour.ts new file mode 100644 index 00000000..231e5a30 --- /dev/null +++ b/src/tours/DrugTargetDiscoveryTour.ts @@ -0,0 +1,431 @@ +// import {ToursSection} from 'ordino'; +import { IStep, TourUtils } from 'tdp_core'; +import { openAddColumPanel } from './utils'; + +export class DrugTargetDiscoveryTour { + static createTour(): IStep[] { + return [ + { + html: `Welcome to this short tour showing the assessment of breast cancer cell lines!
+This tour will follow an analysis session from the perspective of a drug discovery team at a pharmaceutical company.
++ Use the "Next" button to iterate through all the steps. You can use the + "Cancel" button at any time to stop the tour and to interact with Ordino. + Please note that the tour will load a new analysis session and the current + one will be discarded. +
`, + }, + { + selector: 'ul[data-header="mainMenu"] > li:first-child > a', + html: `To start the analysis, the team clicks on the 'Datasets' tab.`, + placement: 'centered', + preAction: () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)') as HTMLElement; + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.add('hover'); + } + }, + postAction: () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)') as HTMLElement; + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.remove('hover'); + datasetTab.querySelector('a').click(); + } + return TourUtils.waitFor('.ordino-dataset.cellline-dataset').then(() => + TourUtils.click('#ordino_dataset_tab > .ordino-scrollspy-nav > a:nth-child(1)'), + ); + }, + pageBreak: 'manual', + }, + { + selector: '.ordino-dataset.cellline-dataset > .card [data-testid="ccle-button"]', + html: `The analyst begins by loading a list of 1009 cell lines from the public CCLE dataset.`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.ordino-dataset.cellline-dataset > .card [data-testid="ccle-button"]').then(() => TourUtils.wait(600)), + postAction: TourUtils.clickSelector, + pageBreak: 'manual', + }, + { + selector: '.le.le-multi.lineup-engine', + placement: 'centered', + html: `The information is presented in a tabular format. Additionally to the gene ID, a set of columns containing some basic information is shown by default.`, + preAction: () => TourUtils.waitFor('.le.le-multi.lineup-engine', Infinity).then(() => TourUtils.wait(1500)), + }, + { + selector: '[data-id="col4"] .lu-action-filter', + placement: 'centered', + html: `Since only a subset of tumor types is of interest, the analyst decides to filter the data.`, + postAction: TourUtils.clickSelector, + }, + { + selector: '.lu-dialog .lu-dialog-table', + html: `Here they select only the following filters: astrocytoma/glioblastoma (type of cancer of the brain), bone sarcoma, melanoma, and non-small-cell lung cancer (NSCLC).`, + placement: 'centered', + postAction: () => { + TourUtils.wait(100) + .then(() => { + TourUtils.click('.lu-dialog-table .lu-checkbox:first-child'); + }) + .then(() => { + TourUtils.wait(500).then(() => { + TourUtils.click('input[type="checkbox"][data-cat="astrocytoma/glioblastoma"]'); + TourUtils.click('input[type="checkbox"][data-cat="bone sarcoma"]'); + TourUtils.click('input[type="checkbox"][data-cat="melanoma"]'); + TourUtils.click('input[type="checkbox"][data-cat="NSCLC"]'); + TourUtils.click('.lu-dialog > .lu-checkbox input'); + }); + }); + }, + }, + { + selector: ['.lu-dialog .lu-dialog-table, .lu-dialog-button[title="Apply"]'], + html: `They now apply the filter, after which only 255 cell lines remain.`, + placement: 'centered', + postAction: () => { + TourUtils.click('.lu-dialog-button[type="submit"]'); + }, + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `As the analyst wants to investigate the TP53 gene, he decides to add a categorical column with the mutation status (mutated vs non mutated).`, + placement: 'centered', + preAction: TourUtils.waitForSelector, + postAction: openAddColumPanel, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + html: `They do this by adding a column for a single cell line score.`, + placement: 'centered', + postAction: () => { + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + }, + }, + { + selector: '.modal.show .col > .select3', + placement: 'centered', + preAction: () => TourUtils.waitFor('.modal.show').then(() => TourUtils.wait(150)), + html: `Now they select the cell line 'TP53' …`, + postAction: () => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'TP53;', 'input'); + }, + }, + { + selector: '.modal.show .col > .select2', + placement: 'centered', + html: `… and the data type as 'AA Mutated' …`, + postAction: () => { + TourUtils.setValueAndTrigger('.show .col > select', 'mutation-aa_mutated', 'change'); + }, + }, + { + selector: '.modal.show .modal-footer button[type=submit]', + html: `… and click 'Add'.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + html: `Additionally, they decide to add a textual column that provides further details about the mutation (if present).
+This is done by repeating the same steps to add a column, but choosing "AA Mutation" as the data type this time instead.
+Individual steps for adding a column have been skipped this time.
`, + placement: 'centered', + preAction: openAddColumPanel, + postAction: () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + TourUtils.waitFor('.modal.show').then(() => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'TP53;', 'input'); + TourUtils.setValueAndTrigger('.show .col > select', 'mutation-aamutation', 'change'); + TourUtils.wait(2000).then(() => TourUtils.click('.modal.show .modal-footer button[type=submit]')); + }); + }, + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `To investigate the effectiveness of the 13 genes in predicting the TP53 status, the analyst loads the average expression of these genes together with a matrix column containing the individual expression values.`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le [data-col-id="col8"]').then(() => TourUtils.wait(600)), + }, + { + selector: '.lu-side-panel-wrapper .lu-adder > button', + html: `They begin by adding a new column.`, + placement: 'centered', + postAction: openAddColumPanel, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span', + html: `Firstly the column with the average expression is added. This is done by adding a 'Gene Score (Aggregated)' column`, + placement: 'centered', + postAction: () => { + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + }, + }, + { + selector: '[data-testid="Filter"] [data-testid="row-1"] .form-select', + html: `They select 'Gene Symbol' in the drop down and then enter the list of genes used for the TP53 Predictor …`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select'), + postAction: async () => { + // Ensure that the list of inputs is empty first + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'ensg', 'change'); + await TourUtils.wait(1500); + TourUtils.click('[data-testid="Filter"] [data-testid="close-button"]'); + await TourUtils.wait(1500); + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'ensg', 'change'); + await TourUtils.wait(1500); + + // Now add the list of 13 genes here instead + TourUtils.setValueAndTrigger( + '.modal-dialog [data-testid="row-2"] .select2 input', + 'AEN,BAX,CCNG1,CDKN1A,DDB2,FDXR,MDM2,RPS27L,RRM2B,SESN1,TNFRSF10B,XPC,ZMAT3', + 'input', + ); + await TourUtils.wait(1020); + + // Inspect if the checkbox is checked, if so then uncheck it + const checkboxTest = document.querySelector('.modal-dialog [data-testid="form-checkbox"]') as HTMLInputElement; + if (!checkboxTest.checked) { + TourUtils.click('.modal-dialog [data-testid="form-checkbox"]'); + } + }, + }, + { + selector: '.show .modal-body form > .col-sm-12:nth-child(2) select', + html: `… then set the 'Data Type' to 'Normalized Gene Expression (TPM Values)' …`, + placement: 'centered', + postAction: () => { + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'expression-tpm', 'change'); + }, + }, + { + selector: '.show [data-testid="aggregation"] select', + html: `… and set the 'Aggregation' to 'Average' …`, + placement: 'centered', + postAction: () => { + TourUtils.setValueAndTrigger('.show [data-testid="aggregation"] select', 'avg', 'change'); + }, + }, + { + selector: '.modal.show .modal-footer button[type=submit]', + html: `… and finally click 'Add'.`, + placement: 'centered', + postAction: () => { + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span', + html: `Similarly, they add a matrix column with all of the individual expression values.`, + placement: 'centered', + preAction: openAddColumPanel, + postAction: async () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + await TourUtils.wait(500); + + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'ensg', 'change'); + await TourUtils.wait(1500); + TourUtils.click('[data-testid="Filter"] [data-testid="close-button"]'); + await TourUtils.wait(1500); + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'ensg', 'change'); + await TourUtils.wait(1500); + + // Now add the list of 13 genes here instead + TourUtils.setValueAndTrigger( + '.modal-dialog [data-testid="row-2"] .select2 input', + 'AEN,BAX,CCNG1,CDKN1A,DDB2,FDXR,MDM2,RPS27L,RRM2B,SESN1,TNFRSF10B,XPC,ZMAT3', + 'input', + ); + await TourUtils.wait(1020); + + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'expression-tpm', 'change'); + TourUtils.setValueAndTrigger('.show [data-testid="aggregation"] select', 'numbers', 'change'); + + // Inspect if the checkbox is checked, if so then uncheck it + const checkboxTest = document.querySelector('.modal-dialog [data-testid="form-checkbox"]') as HTMLInputElement; + if (!checkboxTest.checked) { + TourUtils.click('.modal-dialog [data-testid="form-checkbox"]'); + } + await TourUtils.wait(1000); + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + await TourUtils.wait(1000); // Button must be pressed twice because of the warning that is thrown + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }, + }, + { + selector: '[data-id="col7"] .lu-action-filter', + html: `Furthermore, they decide to hide all cell lines with unknown mutation status.`, + placement: 'centered', + // preAction: // ??? Wait for the matrix load + postAction: () => { + TourUtils.click('[data-id="col7"] .lu-action-filter'); + TourUtils.waitFor('.lu-dialog > .lu-checkbox input').then(() => { + TourUtils.click('.lu-dialog > .lu-checkbox input'); + TourUtils.click('.lu-dialog-button[type="submit"]'); + }); + }, + }, + { + selector: '.le [data-col-id="col9"] .lu-action-sort', + html: `Next, they sort the list in descending order based on the average gene expression column that was added …`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '[data-testid="en/disable-overview-button"]', + html: `… and then swap to the overview.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.le.le-multi.lineup-engine', + html: `Looking at the overview, the analyst observes the overall good correlation between expression and mutation status: there is a clear enrichment of TP53 mutants among the cell lines with a low score.`, + placement: 'centered', + }, + { + selector: '.le [data-col-id="col4"] .lu-action-group', + html: `In order to test whether the correlation is present for all selected tumor types, the analyst groups the table by tumor type.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.le.le-multi.lineup-engine', + html: `They observe that the prediction seems to work particularly well for the astrocytoma/glioblastoma cell lines (almost perfect separation between mutated and non mutated).`, + placement: 'centered', + }, + { + selector: '.le [data-col-id="col7"] .lu-action-more', + html: `They further investigate this observation by also stratifying by mutation status and aggregating all groups.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.lu-dialog.lu-more-options .lu-action-group', + html: `To do so, they click 'Group By' …`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.lu-dialog input[value="true"]', + html: `… then select 'Enabled' …`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.lu-dialog-buttons > [type="submit"]', + html: `… and then hit apply.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '[title="Collapse All Groups"]:nth-child(2)', + html: `Lastly, they aggregate all of the groups.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.le.le-multi.lineup-engine', + html: `The expression box plots show good separation for astrocytoma/glioblastoma and melanoma, whereas the expression ranges are overlapping for NSCLC.
+Having confirmed that the prediction of the TP53 mutation status works reasonably well in several tumor types, the analyst wants to select a set of cell lines for a wet-lab experiment. He is interested in melanoma cell lines that have no TP53 mutation. Furthermore, the activity of CDKN2A, another important tumor suppressor gene, should be impaired due to a reduced number of CDKN2A gene copies in the genome.
`, + placement: 'centered', + }, + { + selector: '.le [data-col-id="col7"] .lu-action-group', + html: `The analyst now removes the mutation status grouping, …`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.le [data-col-id="col7"] .lu-action-filter', + html: `… includes cell lines for which it is unclear whether TP53 is mutated, …`, + placement: 'centered', + postAction: () => { + TourUtils.click('.le [data-col-id="col7"] .lu-action-filter'); + TourUtils.click('.lu-dialog > .lu-checkbox input'); + TourUtils.wait(1000).then(() => TourUtils.click('.lu-dialog-buttons > [type="submit"]')); + }, + }, + { + selector: '', + html: `… and unfolds the melanoma cell lines group.`, + placement: 'centered', + postAction: () => { + TourUtils.click('[data-testid="en/disable-overview-button"]'); + TourUtils.click('[title="Collapse All Groups"]:nth-child(1)'); + TourUtils.click('.le-tr[data-index="2"] .lu-agg-expand'); + }, + }, + { + selector: '.le.le-multi.lineup-engine', + html: `Based on the ranking, he decides to consider all cell lines with unknown TP53 mutation status and a TP53 predictor score greater than 110 as non mutated.`, + placement: 'centered', + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + html: `He adds a column with the CDKN2A relative copy number, …`, + placement: 'centered', + preAction: openAddColumPanel, + postAction: () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + TourUtils.waitFor('.modal.show').then(() => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'CDKN2A;', 'input'); + TourUtils.setValueAndTrigger('.show .col > select', null, 'change'); // clear previous value + TourUtils.setValueAndTrigger('.show .col > select', 'copy_number-relativecopynumber', 'change'); + TourUtils.wait(2000).then(() => TourUtils.click('.modal.show .modal-footer button[type=submit]')); + }); + }, + }, + { + selector: '.le [data-col-id="col11"] .lu-action-sort', + html: `… sorts by it in ascending order, …`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le [data-col-id="col11"] .lu-action-sort').then(() => TourUtils.wait(600)), + postAction: () => { + TourUtils.click('.le [data-col-id="col11"] .lu-action-sort'); + TourUtils.click('.le [data-col-id="col11"] .lu-action-sort'); + }, + }, + { + selector: '.le [data-col-id="col11"] .lu-action-filter', + html: `… and filters out missing data.`, + placement: 'centered', + postAction: () => { + TourUtils.click('.le [data-col-id="col11"] .lu-action-filter'); + TourUtils.click('.lu-dialog > .lu-summary .lu-checkbox input'); + TourUtils.wait(1000).then(() => TourUtils.click('.lu-dialog-buttons > [type="submit"]')); + }, + }, + { + selector: ['.le-tr[data-index="2"] .lu-renderer-selection, .le-tr[data-index="20"] .lu-renderer-selection'], + html: `Finally, he selects the top hits of the resulting list (see Figure 11). All these cell lines fulfill the analyst's requirements.`, + placement: 'centered', + postAction: () => { + TourUtils.click('.le-tr[data-index="2"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="3"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="4"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="5"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="6"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="7"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="8"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="9"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="10"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="11"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="12"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="13"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="14"] .lu-renderer-selection'); + TourUtils.click('.le-tr[data-index="15"] .lu-renderer-selection'); + }, + }, + { + html: `Thanks for joining this tour demonstrating a typical analysis session by a drug discovery team at a pharmaceutical company.
+There are still many more features to discover. Enjoy!
`, + }, + ]; + } +} diff --git a/src/tours/PredictionTP53Tour.ts b/src/tours/PredictionTP53Tour.ts new file mode 100644 index 00000000..7d4d99e0 --- /dev/null +++ b/src/tours/PredictionTP53Tour.ts @@ -0,0 +1,190 @@ +// import {ToursSection} from 'ordino'; +import { IStep } from 'tdp_core'; +import { TourUtils } from 'tdp_core/src/tour/TourUtils'; +import { openAddColumPanel } from './utils'; + +export class PredictionTP53Tour { + static createTour(): IStep[] { + return [ + { + html: ` ++ This case study summarizes another analysis session carried out by a + research scientist working in a drug discovery team at a pharmaceutical company. +
+ ++ In order to identify potential drug targets in a set of tumor + types, the analyst performs experiments with cancer cell lines—cultured cells that are derived from + tumors and that can proliferate indefinitely in the laboratory. +
+ ++ These cell lines are characterized by various properties, such as tumor type (lung cancer, prostate cancer, etc.) + and the set of genes that are mutated. One very important gene in the context of cancer is TP53. It encodes the + p53 protein, whose presence is known to suppress the uncontrolled division of cells. +
+ ++ Use the "Next" button to iterate through all the steps. You can use the + "Cancel" button at any time to stop the tour and to interact with Ordino. + Please note that the tour will load a new analysis session and the current + one will be discarded. +
`, + }, + { + selector: 'ul[data-header="mainMenu"] > li:first-child > a', + html: `To start the analysis, the team clicks on the 'Datasets' tab.`, + placement: 'centered', + preAction: () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)') as HTMLElement; + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.add('hover'); + } + }, + postAction: async () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)') as HTMLElement; + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.remove('hover'); + datasetTab.querySelector('a').click(); + } + + await TourUtils.waitFor('.ordino-dataset.tissue-dataset').then(async () => { + TourUtils.click('#ordino_dataset_tab > .ordino-scrollspy-nav > a:nth-child(2)'); + await TourUtils.wait(1000); + }); + }, + pageBreak: 'manual', + }, + { + selector: '.ordino-dataset.tissue-dataset > .card', + html: `Here they can choose between the three entity types 'Cell Lines', 'Tissue Samples', and 'Genes'.
+They aim to test the applicability of the gene signature using TCGA tumor samples.
`, + placement: 'centered', + }, + { + selector: '.ordino-dataset.tissue-dataset [data-testid="tcga-tumors-button"]', + html: `They start by opening a list of all TCGA tumors.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + pageBreak: 'manual', + }, + { + selector: '.le.le-multi.lineup-engine', + placement: 'centered', + html: `The information is presented in a tabular format. Additionally to the gene ID, a set of columns containing some basic information is shown by default.`, + preAction: () => TourUtils.waitFor('.le-tr:nth-of-type(1)', Infinity).then(() => TourUtils.wait(1500)), + }, + { + selector: '[data-testid="viewWrapper-0"] [data-id="col4"] .lu-action-filter', + html: `First, they choose to filter the tumor type by colon adenocarcinoma`, + placement: 'centered', + postAction: async () => { + TourUtils.click('[data-testid="viewWrapper-0"] [data-id="col4"] .lu-action-filter'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog-table .lu-checkbox:first-child'); + await TourUtils.wait(500); + TourUtils.click('input[type="checkbox"][data-cat="colon adenocarcinoma"]'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog-button[type="submit"]'); + }, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + html: `Now they add a single gene score for the following:
+Gene: TP53
+Data Type: AA Mutated
`, + placement: 'centered', + preAction: openAddColumPanel, + postAction: async () => { + TourUtils.click('[data-testid="add-column-button"]'); + await TourUtils.wait(500); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + await TourUtils.waitFor('.modal.show').then(async () => { + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'TP53;', 'input'); + TourUtils.setValueAndTrigger('.show .col > select', 'mutation-aa_mutated', 'change'); + await TourUtils.wait(500); + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }); + }, + }, + { + selector: '[data-testid="viewWrapper-0"] [data-id="col7"] .lu-action-filter', + html: `They filter out the samples with an unknown TP53 mutation status.`, + placement: 'centered', + preAction: TourUtils.waitForSelector, + postAction: async () => { + TourUtils.click('[data-testid="viewWrapper-0"] [data-id="col7"] .lu-action-filter'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog > .lu-checkbox input'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog-button[type="submit"]'); + }, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span', + html: `Next they add an aggregated gene score with the following criteria:
+Filter: My Named Sets = TP53 Predictor
+Data Type: Expression (TPM)
+Aggregation: Average
+Compute score only for current sample subset
`, + placement: 'centered', + preAction: async () => { + await TourUtils.waitFor('.le-tr:nth-of-type(1) [data-id="col7"] [style="background-color: rgb(170, 170, 170);"]', Infinity); + openAddColumPanel(); + }, + postAction: async () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + await TourUtils.wait(500); + + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'ensg', 'change'); + await TourUtils.wait(1500); + TourUtils.click('[data-testid="Filter"] [data-testid="close-button"]'); + await TourUtils.wait(1500); + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'ensg', 'change'); + await TourUtils.wait(1500); + + // Now add the list of 13 genes here instead + TourUtils.setValueAndTrigger( + '.modal-dialog [data-testid="row-2"] .select2 input', + 'AEN,BAX,CCNG1,CDKN1A,DDB2,FDXR,MDM2,RPS27L,RRM2B,SESN1,TNFRSF10B,XPC,ZMAT3', + 'input', + ); + await TourUtils.wait(1020); + + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'expression-tpm', 'change'); + TourUtils.setValueAndTrigger('.show [data-testid="aggregation"] select', 'avg', 'change'); + + const checkboxTest = document.querySelector('.modal-dialog [data-testid="form-checkbox"]') as HTMLInputElement; + if (!checkboxTest.checked) { + TourUtils.click('.modal-dialog [data-testid="form-checkbox"]'); + } + + await TourUtils.wait(1000); + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }, + }, + { + selector: '[data-id="col8"] .lu-action-sort', + html: `They sort by this newly-added gene expression column.`, + placement: 'centered', + preAction: TourUtils.waitForSelector, + postAction: TourUtils.clickSelector, + }, + { + selector: ['[data-id="col7"], [data-id="col8"]'], + html: `Observe: There is a clear correlation between gene expression signature and mutation status of + TP53: Of the 50 samples with the highest expression only 3 are TP53 mutated, whereas of the 50 + samples with the lowest expression 35 are TP53 mutated.
`, + placement: 'centered', + }, + { + html: `Thanks for joining this tour demonstrating the creation and basic testing of the TP53 Predictor Score.
+There are still many more features to discover. Enjoy!
`, + }, + ]; + } +} diff --git a/src/tours/PredictionTP53Tour2.ts b/src/tours/PredictionTP53Tour2.ts new file mode 100644 index 00000000..264f1c7f --- /dev/null +++ b/src/tours/PredictionTP53Tour2.ts @@ -0,0 +1,269 @@ +// import {ToursSection} from 'ordino'; +import { IStep } from 'tdp_core'; +import { TourUtils } from 'tdp_core/src/tour/TourUtils'; +import { openAddColumPanel } from './utils'; + +export class PredictionTP53Tour2 { + static createTour(): IStep[] { + return [ + { + html: ` ++ The following is a continuation of the tour investigating the TP53 Predictor Score, this + time in conjunction with the MDM2 sensitivity score, compared against all cell lines. +
++ Use the "Next" button to iterate through all the steps. You can use the + "Cancel" button at any time to stop the tour and to interact with Ordino. + Please note that the tour will load a new analysis session and the current + one will be discarded. +
+ `, + }, + { + selector: 'ul[data-header="mainMenu"] > li:first-child > a', + html: `They start by opening the dataset tab, in order to find the relevant dataset to begin working with.`, + placement: 'centered', + preAction: () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)') as HTMLElement; + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.add('hover'); + } + }, + postAction: async () => { + const datasetTab = document.querySelector('ul[data-header="mainMenu"] > li:nth-child(1)') as HTMLElement; + if (!datasetTab.classList.contains('active')) { + datasetTab.querySelector('a').classList.remove('hover'); + datasetTab.querySelector('a').click(); + } + await TourUtils.waitFor('.ordino-dataset.genes-dataset').then(async () => { + TourUtils.click('#ordino_dataset_tab > .ordino-scrollspy-nav > a:nth-child(1)'); + await TourUtils.wait(1000); + }); + }, + }, + { + selector: '.ordino-dataset.cellline-dataset [data-testid="all-button"]', + html: `They open the list of ALL cell lines.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + pageBreak: 'manual', + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span', + html: `They add a single gene score for the following:
+Gene: TP53
+Data Type: AA Mutated and AA Mutation
`, + placement: 'centered', + preAction: async () => { + await TourUtils.waitFor('.le-tr:nth-of-type(1)', Infinity).then(() => TourUtils.wait(1500)); + openAddColumPanel(); + }, + postAction: async () => { + TourUtils.click('[data-testid="add-column-button"]'); + await TourUtils.wait(500); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(1) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + await TourUtils.waitFor('.modal.show'); + + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'TP53;', 'input'); + await TourUtils.wait(500); + + // Check if data types were remembered and remove + while (document.querySelector('[data-testid="Data Type"] span.select2-selection__choice__remove') !== null) { + TourUtils.click('[data-testid="Data Type"] span.select2-selection__choice__remove:nth-of-type(1)'); + } + + // Now check if the pesky dropdown menu has shown up, and remove + if (document.querySelector('span.select2-dropdown') !== null) { + TourUtils.click('[data-testid="Data Type"] .select2-search--inline > input.select2-search__field'); + } + await TourUtils.wait(200); + + // KNOWN BUG: (Sometimes) If either of the following options were selected the last time a single gene score column was added, they won't be + // selected when running this tour the first time around. This can be fixed by simply restarting the tour. + + const selection1 = document.querySelector('option[value="mutation-aa_mutated"]'); + selection1.setAttribute('selected', 'selected'); + + const selection2 = document.querySelector('option[value="mutation-aamutation"]'); + selection2.setAttribute('selected', 'selected'); + + await TourUtils.wait(1500); + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }, + }, + { + selector: '[data-testid="viewWrapper-0"] [data-id="col7"] .lu-action-filter', + html: `They once again filter out the samples with an unknown TP53 mutation status.`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr:nth-of-type(1) [data-id="col8"].lu-missing', Infinity), + postAction: async () => { + TourUtils.click('[data-testid="viewWrapper-0"] [data-id="col7"] .lu-action-filter'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog > .lu-checkbox input'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog-button[type="submit"]'); + }, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span', + html: `Next they add an aggregated gene score with the following criteria:
+Filter: Gene Symbol = AEN, BAX, CCNG1, CDKN1A, DDB2, FDXR, MDM2, RPS27L, RRM2B, SESN1, TNFRSF10B, XPC, + ZMAT3
+Data Type: Expression (TPM)
+Aggregation: Average
+Compute score for all cell lines, not only the selected subset
`, + placement: 'centered', + preAction: async () => { + await TourUtils.waitFor('.le-tr:nth-of-type(1) [data-id="col7"] [style="background-color: rgb(27, 166, 78);"]', Infinity); + openAddColumPanel(); + }, + postAction: async () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(2) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + await TourUtils.wait(500); + + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'ensg', 'change'); + await TourUtils.wait(1500); + TourUtils.click('[data-testid="Filter"] [data-testid="close-button"]'); + await TourUtils.wait(1500); + TourUtils.setValueAndTrigger('.show .modal-body form > div:nth-child(1) .row:nth-child(1) div:nth-child(1) select', 'ensg', 'change'); + await TourUtils.wait(1500); + + // Now add the list of 13 genes here instead + TourUtils.setValueAndTrigger( + '.modal-dialog [data-testid="row-2"] .select2 input', + 'AEN,BAX,CCNG1,CDKN1A,DDB2,FDXR,MDM2,RPS27L,RRM2B,SESN1,TNFRSF10B,XPC,ZMAT3', + 'input', + ); + await TourUtils.wait(1020); + + TourUtils.setValueAndTrigger('.show .modal-body form > .col-sm-12:nth-child(2) select', 'expression-tpm', 'change'); + TourUtils.setValueAndTrigger('.show [data-testid="aggregation"] select', 'avg', 'change'); + + // Inspect if the checkbox is checked, if so then uncheck it + const checkboxTest = document.querySelector('.modal-dialog [data-testid="form-checkbox"]') as HTMLInputElement; + if (checkboxTest?.checked) { + TourUtils.click('.modal-dialog [data-testid="form-checkbox"]'); + } + await TourUtils.wait(1000); + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }, + }, + { + selector: '[data-id="col9"] > .lu-toolbar > .lu-action-more', + html: `They decide to rename the new column to "TP53 Predictor Score".
`, + placement: 'centered', + postAction: async () => { + TourUtils.click('[data-id="col9"] > .lu-toolbar > .lu-action-more'); + await TourUtils.wait(500); + TourUtils.click('.lu-action-rename > span'); + await TourUtils.waitFor('.lu-dialog-rename input[placeholder="name"]'); + TourUtils.setValueAndTrigger('.lu-dialog-rename input[placeholder="name"]', 'TP53 Predictor Score', 'change'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog-buttons > [type="submit"]'); + }, + }, + { + selector: '[data-id="col9"] .lu-action-filter', + html: `They now filter out the samples with an unknown TP53 Predictor Score …`, + placement: 'centered', + postAction: async () => { + TourUtils.click('[data-id="col9"] .lu-action-filter'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog .lu-checkbox input'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog-button[type="submit"]'); + }, + }, + { + selector: '[data-id="col9"] .lu-action-sort', + html: `… and sort by this column.`, + placement: 'centered', + postAction: TourUtils.clickSelector, + }, + { + selector: '.le-tbody.le-tbody', + html: `Observe: There is a clear enrichment of TP53 non-mutated among the cell lines with high score.
`, + placement: 'centered', + preAction: () => TourUtils.waitFor('[data-id="col9"].lu-renderer-number', Infinity), + postAction: async () => { + await TourUtils.wait(500); + }, + }, + { + selector: '[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(4) > span', + html: `Next, they choose to add a 'Depletion Screen Score (Single)' using the following:
+Gene: MDM2
+Data type: DRIVE RSA (NB: the lower this value, the more sensitive a cell line is to the depletion of the gene of interest)
`, + placement: 'centered', + preAction: openAddColumPanel, + postAction: async () => { + TourUtils.click('.lu-side-panel-wrapper .lu-adder > button'); + TourUtils.click('[data-testid=lu-adder-div] > .lu-search > .lu-search-list > :nth-child(2) > ul > :nth-child(4) > span'); + TourUtils.toggleClass('.lu-adder.once', 'once', false); + await TourUtils.waitFor('.modal.show').then(() => TourUtils.wait(500)); + TourUtils.setValueAndTrigger('.modal.show .select3 input.select2-search__field', 'MDM2;', 'input'); + TourUtils.setValueAndTrigger('.show .col > select', 'depletion-rsa', 'change'); + const checkboxTest = document.querySelector('.modal-dialog [data-testid="form-checkbox"]') as HTMLInputElement; + if (!checkboxTest.checked) { + TourUtils.click('.modal-dialog [data-testid="form-checkbox"]'); + } + await TourUtils.wait(1000); + TourUtils.click('.modal.show .modal-footer button[type=submit]'); + }, + }, + { + selector: '[data-id="col10"] > .lu-toolbar > .lu-action-more', + html: `To amplify the visibility of the added depletion score's significance, they decide to invert the scaling via the data mapping.
`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr [data-id="col10"].lu-renderer-number', Infinity), + postAction: async () => { + TourUtils.click('[data-id="col10"] > .lu-toolbar > .lu-action-more'); + await TourUtils.wait(500); + TourUtils.click('.lu-action-data-mapping > span'); + TourUtils.setValueAndTrigger('.browser-default', 'linear_invert', 'change'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog-buttons > [type="submit"]'); + }, + }, + { + selector: '[data-id="col10"] .lu-action-filter', + html: `They filter out this MDM2 column's missing values …`, + placement: 'centered', + postAction: async () => { + TourUtils.click('[data-id="col10"] .lu-action-filter'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog .lu-checkbox input'); + await TourUtils.wait(500); + TourUtils.click('.lu-dialog-button[type="submit"]'); + }, + }, + { + selector: '[data-id="col10"] .lu-action-sort', + html: `… and sort by this column.`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr:nth-of-type(1) [title="−1.00"]', Infinity), + postAction: TourUtils.clickSelector, + }, + { + selector: '.le.le-multi.lineup-engine', + html: `Observe: Small MDM2 RSA values (large bars) are correlated to the expression score (TP53 predictor score) and the TP53 mutation status
`, + placement: 'centered', + preAction: () => TourUtils.waitFor('.le-tr:nth-of-type(1) [title="−7.14"]', Infinity), + postAction: () => TourUtils.wait(500), + }, + // Can't do the drag operation for this final step in the aim + // Remaining two aims are also primarily just observations, but rely on the combined score column; What to do? + { + selector: ['section[data-col-id="col9"]', 'section[data-col-id="col10"]'], + html: `Conclusion: When combining the TP53 Predictor Score column and the MDM2 Gene Sensitivity Score, the new weighted sum column serves as an even more accurate predictor.
+Thanks for joining this tour taking a deeper look into the TP53 Predictor Score.
+There are still many more features to discover. Enjoy!
`, + placement: 'centered', + }, + ]; + } +} diff --git a/src/tours/WelcomeTour.ts b/src/tours/WelcomeTour.ts index 57ed70f0..49d0eafd 100644 --- a/src/tours/WelcomeTour.ts +++ b/src/tours/WelcomeTour.ts @@ -1,4 +1,5 @@ import { IStep, TourUtils } from 'tdp_core'; +import { openAddColumPanel } from './utils'; export class WelcomeTour { static createTour(): IStep[] { @@ -58,7 +59,7 @@ export class WelcomeTour { selector: '.lu-side-panel-wrapper .lu-adder > button', html: `Additional columns can be added using the plus sign.`, placement: 'centered', - postAction: TourUtils.clickSelector, + postAction: openAddColumPanel, }, { selector: '.lu-search .lu-search-item', diff --git a/src/tours/index.ts b/src/tours/index.ts index 62ba5110..49afb11a 100644 --- a/src/tours/index.ts +++ b/src/tours/index.ts @@ -1,3 +1,7 @@ export * from './WelcomeTour'; export * from './AddColumnToGeneListTour'; export * from './StartMenuTour'; +export * from './AssessBCCellLinesTour'; +export * from './PredictionTP53Tour'; +export * from './PredictionTP53Tour2'; +export * from './DrugTargetDiscoveryTour'; diff --git a/src/tours/utils.ts b/src/tours/utils.ts new file mode 100644 index 00000000..12585de7 --- /dev/null +++ b/src/tours/utils.ts @@ -0,0 +1,16 @@ +import { TourUtils } from 'tdp_core'; + +/** + * Set the next button to active after the promise is resolved + * @example + * waitFor: ()=> TourUtils.wait(500).then(setNextActive) + */ +export const setNextActive = async (): Promise<'enable'> => 'enable'; + +/** + * Clicks the add column button and prevents the score list from closing + */ +export function openAddColumPanel() { + TourUtils.click('.viewWrapper.t-focus .lu-side-panel-wrapper .lu-adder > button'); + (document.querySelector('.viewWrapper.t-focus .lu-search-input') as HTMLInputElement).onblur = (ev) => ev.preventDefault(); +}