@datagrok/peptides 0.8.9 → 0.8.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/.eslintrc.json +2 -1
  2. package/dist/package-test.js +22626 -0
  3. package/dist/package.js +21429 -0
  4. package/dist/vendors-node_modules_datagrok-libraries_ml_src_workers_dimensionality-reducer_js.js +8840 -0
  5. package/jest.config.js +33 -0
  6. package/package.json +75 -62
  7. package/src/__jest__/remote.test.ts +50 -0
  8. package/src/__jest__/test-node.ts +96 -0
  9. package/src/model.ts +950 -86
  10. package/src/monomer-library.ts +8 -0
  11. package/src/package-test.ts +3 -2
  12. package/src/package.ts +57 -22
  13. package/src/peptides.ts +165 -119
  14. package/src/styles.css +8 -0
  15. package/src/tests/peptides-tests.ts +17 -78
  16. package/src/tests/utils.ts +1 -7
  17. package/src/utils/SAR-multiple-filter.ts +439 -0
  18. package/src/utils/SAR-multiple-selection.ts +177 -0
  19. package/src/utils/cell-renderer.ts +49 -50
  20. package/src/utils/chem-palette.ts +61 -163
  21. package/src/utils/constants.ts +56 -0
  22. package/src/utils/filtering-statistics.ts +62 -0
  23. package/src/utils/multiple-sequence-alignment.ts +33 -2
  24. package/src/utils/multivariate-analysis.ts +79 -0
  25. package/src/utils/peptide-similarity-space.ts +12 -31
  26. package/src/utils/types.ts +10 -0
  27. package/src/viewers/logo-viewer.ts +2 -1
  28. package/src/viewers/peptide-space-viewer.ts +121 -0
  29. package/src/viewers/sar-viewer.ts +111 -313
  30. package/src/viewers/stacked-barchart-viewer.ts +126 -173
  31. package/src/widgets/analyze-peptides.ts +39 -18
  32. package/src/widgets/distribution.ts +61 -0
  33. package/src/widgets/manual-alignment.ts +3 -3
  34. package/src/widgets/peptide-molecule.ts +4 -4
  35. package/src/widgets/subst-table.ts +30 -22
  36. package/test-Peptides-f8114def7953-4bf59d70.html +256 -0
  37. package/src/describe.ts +0 -534
  38. package/src/utils/split-aligned.ts +0 -72
  39. package/src/viewers/subst-viewer.ts +0 -320
package/jest.config.js ADDED
@@ -0,0 +1,33 @@
1
+ module.exports = {
2
+ "roots": [
3
+ "<rootDir>/src"
4
+ ],
5
+ "testMatch": [
6
+ "**/__jest__/**/*.test.+(ts|tsx)"
7
+ ],
8
+ moduleFileExtensions: [
9
+ 'ts',
10
+ 'js',
11
+ ],
12
+ "transform": {
13
+ "^.+\\.(ts|tsx)$": "ts-jest"
14
+ },
15
+ transformIgnorePatterns: ['^.+\\.js$'],
16
+ globals: {
17
+ 'ts-jest': {
18
+ 'tsconfig': {
19
+ "target": "es6",
20
+ "module": "es2020",
21
+ }
22
+ }
23
+ },
24
+ reporters: [
25
+ "default",
26
+ [
27
+ "./node_modules/jest-html-reporter",
28
+ {
29
+ "includeConsoleLog": true
30
+ }
31
+ ]
32
+ ]
33
+ }
package/package.json CHANGED
@@ -1,64 +1,77 @@
1
1
  {
2
- "name": "@datagrok/peptides",
3
- "version": "0.8.9",
4
- "description": "",
5
- "dependencies": {
6
- "@biowasm/aioli": ">=2.4.0",
7
- "@datagrok-libraries/bio": ">=0.0.4",
8
- "@datagrok-libraries/ml": ">=0.0.14",
9
- "@datagrok-libraries/statistics": ">=0.1.5",
10
- "@datagrok-libraries/utils": ">=0.0.22",
11
- "cash-dom": "latest",
12
- "d3": "latest",
13
- "datagrok-api": ">=0.123.0",
14
- "dayjs": "latest",
15
- "file-loader": "^6.2.0",
16
- "jstat": "^1.9.5",
17
- "logojs-react": "^2.1.1",
18
- "rxjs": "^6.5.5"
19
- },
20
- "devDependencies": {
21
- "@types/d3": "^7.0.0",
22
- "@types/jquery": "^3.5.6",
23
- "@typescript-eslint/eslint-plugin": "latest",
24
- "@typescript-eslint/parser": "latest",
25
- "css-loader": "^5.2.4",
26
- "eslint": "latest",
27
- "eslint-config-google": "latest",
28
- "style-loader": "^2.0.0",
29
- "ts-loader": "latest",
30
- "typescript": "latest",
31
- "webpack": "latest",
32
- "webpack-cli": "latest"
33
- },
34
- "sources": [
35
- "common/ngl_viewer/ngl.js"
36
- ],
37
- "scripts": {
38
- "link-api": "npm link datagrok-api",
39
- "link-utils": "npm link @datagrok-libraries/utils",
40
- "link-statistics": "npm link @datagrok-libraries/statistics",
41
- "link-ml": "npm link @datagrok-libraries/ml",
42
- "link-bio": "npm link @datagrok-libraries/bio",
43
- "link-all": "npm link datagrok-api @datagrok-libraries/utils @datagrok-libraries/statistics link @datagrok-libraries/ml @datagrok-libraries/bio",
44
- "install-dependencies": "npm install",
45
- "debug-peptides": "grok publish --rebuild",
46
- "release-peptides": "grok publish --rebuild --release",
47
- "build-peptides": "webpack",
48
- "build": "webpack",
49
- "debug-peptides-dev": "grok publish dev --rebuild",
50
- "release-peptides-dev": "grok publish dev --rebuild --release",
51
- "debug-peptides-public": "grok publish public --rebuild",
52
- "release-peptides-public": "grok publish public --rebuild --release",
53
- "debug-peptides-local": "grok publish local --rebuild",
54
- "release-peptides-local": "grok publish local --rebuild --release",
55
- "lint": "eslint \"./src/**/*.ts\"",
56
- "lint-fix": "eslint \"./src/**/*.ts\" --fix"
57
- },
58
- "canEdit": [
59
- "Developers"
60
- ],
61
- "canView": [
62
- "All users"
63
- ]
2
+ "name": "@datagrok/peptides",
3
+ "version": "0.8.13",
4
+ "description": "",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/datagrok-ai/public.git",
8
+ "directory": "packages/Peptides"
9
+ },
10
+ "dependencies": {
11
+ "@biowasm/aioli": ">=2.4.0",
12
+ "@datagrok-libraries/bio": "^0.0.5",
13
+ "@datagrok-libraries/ml": ">=0.0.16 <0.1.21",
14
+ "@datagrok-libraries/statistics": "^0.1.6",
15
+ "@datagrok-libraries/utils": "^0.1.2",
16
+ "cash-dom": "latest",
17
+ "d3": "latest",
18
+ "datagrok-api": "^0.148.6",
19
+ "dayjs": "latest",
20
+ "file-loader": "^6.2.0",
21
+ "jstat": "^1.9.5",
22
+ "logojs-react": "^2.1.1",
23
+ "rxjs": "^6.5.5"
24
+ },
25
+ "devDependencies": {
26
+ "@types/d3": "^7.0.0",
27
+ "@types/jquery": "^3.5.6",
28
+ "@typescript-eslint/eslint-plugin": "latest",
29
+ "@typescript-eslint/parser": "latest",
30
+ "css-loader": "^5.2.4",
31
+ "eslint": "latest",
32
+ "eslint-config-google": "latest",
33
+ "style-loader": "^2.0.0",
34
+ "ts-loader": "latest",
35
+ "typescript": "latest",
36
+ "webpack": "latest",
37
+ "webpack-cli": "latest",
38
+ "@types/jest": "latest",
39
+ "jest": "latest",
40
+ "jest-html-reporter": "latest",
41
+ "puppeteer": "^13.1.2",
42
+ "ts-jest": "^27.1.2"
43
+ },
44
+ "sources": [
45
+ "common/ngl_viewer/ngl.js"
46
+ ],
47
+ "scripts": {
48
+ "link-api": "npm link datagrok-api",
49
+ "link-utils": "npm link @datagrok-libraries/utils",
50
+ "link-statistics": "npm link @datagrok-libraries/statistics",
51
+ "link-ml": "npm link @datagrok-libraries/ml",
52
+ "link-bio": "npm link @datagrok-libraries/bio",
53
+ "link-all": "npm link datagrok-api @datagrok-libraries/utils @datagrok-libraries/statistics link @datagrok-libraries/ml @datagrok-libraries/bio",
54
+ "install-dependencies": "npm install",
55
+ "debug-peptides": "grok publish --rebuild",
56
+ "release-peptides": "grok publish --rebuild --release",
57
+ "build-peptides": "webpack",
58
+ "build": "webpack",
59
+ "debug-peptides-dev": "grok publish dev --rebuild",
60
+ "release-peptides-dev": "grok publish dev --rebuild --release",
61
+ "debug-peptides-public": "grok publish public --rebuild",
62
+ "release-peptides-public": "grok publish public --rebuild --release",
63
+ "debug-peptides-local": "grok publish local --rebuild",
64
+ "release-peptides-local": "grok publish local --rebuild --release",
65
+ "lint": "eslint \"./src/**/*.ts\"",
66
+ "lint-fix": "eslint \"./src/**/*.ts\" --fix",
67
+ "test": "set HOST=dev && jest",
68
+ "test-dev": "set HOST=dev && jest",
69
+ "test-local": "set HOST=localhost && jest"
70
+ },
71
+ "canEdit": [
72
+ "Developers"
73
+ ],
74
+ "canView": [
75
+ "All users"
76
+ ]
64
77
  }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @jest-environment jsdom
3
+ */
4
+
5
+ import * as utils from './test-node';
6
+ import puppeteer from 'puppeteer';
7
+
8
+ const P_START_TIMEOUT: number = 100000;
9
+ let browser: puppeteer.Browser;
10
+ let page: puppeteer.Page;
11
+
12
+ beforeAll(async () => {
13
+ const out = await utils.getBrowserPage(puppeteer);
14
+ browser = out.browser;
15
+ page = out.page;
16
+ }, P_START_TIMEOUT);
17
+
18
+ afterAll(async () => {
19
+ await browser.close();
20
+ });
21
+
22
+ it('TEST', async () => {
23
+ const target_package:string = process.env.TARGET_PACKAGE ?? 'Peptides';
24
+ console.log(`Testing ${target_package} package`);
25
+
26
+ //console.log(require('root-require')('package.json').version);
27
+ const r = await page.evaluate((target_package):Promise<object> => {
28
+ return new Promise<object>((resolve, reject) => {
29
+ (<any>window).grok.functions.eval(target_package + ':test()').then((df: any) => {
30
+ const cStatus = df.columns.byName('success');
31
+ const cMessage = df.columns.byName('result');
32
+ const cCat = df.columns.byName('category');
33
+ const cName = df.columns.byName('name');
34
+ let failed = false;
35
+ let report = '';
36
+ for (let i = 0; i < df.rowCount; i++) {
37
+ if (!cStatus.get(i)) {
38
+ report += `${cCat.get(i)}.${cName.get(i)}: ${cMessage.get(i)}\n`;
39
+ failed = true;
40
+ }
41
+ }
42
+ resolve({report, failed});
43
+ }).catch((e: any) => reject(e));
44
+ });
45
+ }, target_package);
46
+ // @ts-ignore
47
+ console.log(r.report);
48
+ // @ts-ignore
49
+ expect(r.failed).toBe(false);
50
+ }, 100000);
@@ -0,0 +1,96 @@
1
+ import * as path from 'path';
2
+ import * as os from 'os';
3
+ import * as fs from 'fs';
4
+ // @ts-ignore
5
+ import * as yaml from 'js-yaml';
6
+ const fetch = require('node-fetch');
7
+
8
+ export async function getToken(url: string, key: string) {
9
+ const response = await fetch(`${url}/users/login/dev/${key}`, {method: 'POST'});
10
+ const json = await response.json();
11
+ if (json.isSuccess == true)
12
+ return json.token;
13
+ else
14
+ throw 'Unable to login to server. Check your dev key';
15
+ }
16
+
17
+ export async function getWebUrl(url: string, token: string) {
18
+ const response = await fetch(`${url}/admin/plugins/admin/settings`, {headers: {Authorization: token}});
19
+ const json = await response.json();
20
+ return json.settings.webRoot;
21
+ }
22
+
23
+ const grokDir = path.join(os.homedir(), '.grok');
24
+ const confPath = path.join(grokDir, 'config.yaml');
25
+
26
+ function mapURL(conf: Config): Indexable {
27
+ const urls: Indexable = {};
28
+ for (const server in conf.servers)
29
+ urls[conf['servers'][server]['url']] = conf['servers'][server];
30
+
31
+ return urls;
32
+ }
33
+
34
+ export function getDevKey(hostKey: string): {url: string, key: string} {
35
+ const config = yaml.load(fs.readFileSync(confPath, 'utf8')) as any;
36
+ let host = hostKey == '' ? config.default : hostKey;
37
+ host = host.trim();
38
+ const urls = mapURL(config);
39
+ let key = '';
40
+ let url = '';
41
+ try {
42
+ let url = new URL(host).href;
43
+ if (url.endsWith('/')) url = url.slice(0, -1);
44
+ if (url in urls) key = config['servers'][urls[url]]['key'];
45
+ } catch (error) {
46
+ if (config['servers'][host] == null)
47
+ throw `Unknown server alias. Please add it to ${confPath}`;
48
+ url = config['servers'][host]['url'];
49
+ key = config['servers'][host]['key'];
50
+ }
51
+ return {url, key};
52
+ }
53
+
54
+ export async function getBrowserPage(puppeteer: any): Promise<{browser: any, page: any}> {
55
+ let url:string = process.env.HOST ?? '';
56
+ const cfg = getDevKey(url);
57
+ url = cfg.url;
58
+
59
+ const key = cfg.key;
60
+ const token = await getToken(url, key);
61
+ url = await getWebUrl(url, token);
62
+ console.log(`Using web root: ${url}`);
63
+
64
+ const browser = await puppeteer.launch({
65
+ args: ['--disable-dev-shm-usage', '--disable-features=site-per-process'],
66
+ ignoreHTTPSErrors: true,
67
+ });
68
+
69
+ const page = await browser.newPage();
70
+ await page.goto(`${url}/oauth/`);
71
+ await page.setCookie({name: 'auth', value: token});
72
+ await page.evaluate((token: any) => {
73
+ window.localStorage.setItem('auth', token);
74
+ }, token);
75
+ await page.goto(url);
76
+ try {
77
+ await page.waitForSelector('.grok-preloader');
78
+ await page.waitForFunction(() => document.querySelector('.grok-preloader') == null, {timeout: 100000});
79
+ } catch (error) {
80
+ throw error;
81
+ }
82
+ return {browser, page};
83
+ }
84
+
85
+
86
+ interface Config {
87
+ servers: {
88
+ [alias: string]: {
89
+ url: string,
90
+ key: string
91
+ }
92
+ },
93
+ default: string,
94
+ }
95
+
96
+ interface Indexable { [key: string]: any }