@datagrok/sequence-translator 0.0.5 → 0.0.9
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.
- package/jest.config.js +33 -0
- package/package.json +12 -4
- package/setup.cmd +1 -1
- package/src/ICDs.ts +3 -0
- package/src/IDPs.ts +3 -0
- package/src/__jest__/remote.test.ts +49 -0
- package/src/__jest__/test-node.ts +96 -0
- package/src/defineAxolabsPattern.ts +2 -8
- package/src/package-test.ts +2 -1
- package/src/package.ts +175 -684
- package/src/salts.ts +2 -0
- package/src/sources.ts +3 -0
- package/src/structures-works/converters.ts +288 -0
- package/src/structures-works/from-monomers.ts +104 -0
- package/src/{map.ts → structures-works/map.ts} +28 -6
- package/src/structures-works/mol-transformations.ts +428 -0
- package/src/structures-works/save-sense-antisense.ts +51 -0
- package/src/structures-works/sequence-codes-tools.ts +236 -0
- package/src/tests/smiles-tests.ts +1 -1
- package/src/users.ts +3 -0
- package/test-SequenceTranslator-2e08c8e54bde-1367d435.html +245 -0
- package/tsconfig.json +2 -1
- package/src/save-sense-antisense.ts +0 -36
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,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datagrok/sequence-translator",
|
|
3
|
-
"friendlyName": "
|
|
4
|
-
"version": "0.0.
|
|
3
|
+
"friendlyName": "Sequence Translator",
|
|
4
|
+
"version": "0.0.9",
|
|
5
5
|
"description": "",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@datagrok-libraries/utils": "^0.1.0",
|
|
@@ -23,7 +23,10 @@
|
|
|
23
23
|
"debug-sequencetranslator-public": "grok publish public --rebuild",
|
|
24
24
|
"release-sequencetranslator-public": "grok publish public --rebuild --release",
|
|
25
25
|
"debug-sequencetranslator-local": "grok publish local --rebuild",
|
|
26
|
-
"release-sequencetranslator-local": "grok publish local --rebuild --release"
|
|
26
|
+
"release-sequencetranslator-local": "grok publish local --rebuild --release",
|
|
27
|
+
"test": "set HOST=dev && jest",
|
|
28
|
+
"test-dev": "set HOST=dev && jest",
|
|
29
|
+
"test-local": "set HOST=localhost && jest"
|
|
27
30
|
},
|
|
28
31
|
"devDependencies": {
|
|
29
32
|
"@typescript-eslint/eslint-plugin": "^4.29.1",
|
|
@@ -32,6 +35,11 @@
|
|
|
32
35
|
"eslint": "^7.32.0",
|
|
33
36
|
"eslint-config-google": "^0.14.0",
|
|
34
37
|
"webpack": "^5.31.0",
|
|
35
|
-
"webpack-cli": "^4.6.0"
|
|
38
|
+
"webpack-cli": "^4.6.0",
|
|
39
|
+
"@types/jest": "latest",
|
|
40
|
+
"jest": "latest",
|
|
41
|
+
"jest-html-reporter": "latest",
|
|
42
|
+
"puppeteer": "^13.1.2",
|
|
43
|
+
"ts-jest": "^27.1.2"
|
|
36
44
|
}
|
|
37
45
|
}
|
package/setup.cmd
CHANGED
package/src/ICDs.ts
ADDED
package/src/IDPs.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
let 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 ?? 'SequenceTranslator';
|
|
24
|
+
console.log(`Testing ${target_package} package`);
|
|
25
|
+
|
|
26
|
+
//console.log(require('root-require')('package.json').version);
|
|
27
|
+
let 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
|
+
let cStatus = df.columns.byName('success');
|
|
31
|
+
let cMessage = df.columns.byName('result');
|
|
32
|
+
let cCat = df.columns.byName('category');
|
|
33
|
+
let 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
|
+
resolve({report, failed});
|
|
42
|
+
}).catch((e: any) => reject(e));
|
|
43
|
+
});
|
|
44
|
+
}, target_package);
|
|
45
|
+
// @ts-ignore
|
|
46
|
+
console.log(r.report);
|
|
47
|
+
// @ts-ignore
|
|
48
|
+
expect(r.failed).toBe(false);
|
|
49
|
+
}, 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
|
+
let response = await fetch(`${url}/users/login/dev/${key}`, {method: 'POST'});
|
|
10
|
+
let 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
|
+
let response = await fetch(`${url}/admin/plugins/admin/settings`, {headers: {Authorization: token}});
|
|
19
|
+
let 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
|
+
let urls: Indexable = {};
|
|
28
|
+
for (let 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
|
+
let config = yaml.load(fs.readFileSync(confPath, 'utf8')) as any;
|
|
36
|
+
let host = hostKey == '' ? config.default : hostKey;
|
|
37
|
+
host = host.trim();
|
|
38
|
+
let 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
|
+
let cfg = getDevKey(url);
|
|
57
|
+
url = cfg.url;
|
|
58
|
+
|
|
59
|
+
let key = cfg.key;
|
|
60
|
+
let token = await getToken(url, key);
|
|
61
|
+
url = await getWebUrl(url, token);
|
|
62
|
+
console.log(`Using web root: ${url}`);
|
|
63
|
+
|
|
64
|
+
let browser = await puppeteer.launch({
|
|
65
|
+
args: ['--disable-dev-shm-usage', '--disable-features=site-per-process'],
|
|
66
|
+
ignoreHTTPSErrors: true,
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
let 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 }
|
|
@@ -138,10 +138,7 @@ export function defineAxolabsPattern() {
|
|
|
138
138
|
updateSvgScheme();
|
|
139
139
|
updateOutputExamples();
|
|
140
140
|
});
|
|
141
|
-
|
|
142
|
-
if (asBases[i].value.slice(-3) == '(o)')
|
|
143
|
-
isOverhang = true;
|
|
144
|
-
else
|
|
141
|
+
if (asBases[i].value.slice(-3) != '(o)')
|
|
145
142
|
nucleotideCounter++;
|
|
146
143
|
|
|
147
144
|
asModificationItems.append(
|
|
@@ -184,10 +181,7 @@ export function defineAxolabsPattern() {
|
|
|
184
181
|
updateSvgScheme();
|
|
185
182
|
updateOutputExamples();
|
|
186
183
|
});
|
|
187
|
-
|
|
188
|
-
if (ssBases[i].value.slice(-3) == '(o)')
|
|
189
|
-
isOverhang = true;
|
|
190
|
-
else
|
|
184
|
+
if (ssBases[i].value.slice(-3) != '(o)')
|
|
191
185
|
nucleotideCounter++;
|
|
192
186
|
|
|
193
187
|
ssModificationItems.append(
|
package/src/package-test.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as DG from 'datagrok-api/dg';
|
|
2
|
-
import {runTests} from '@datagrok-libraries/utils/src/test';
|
|
2
|
+
import {runTests, tests} from '@datagrok-libraries/utils/src/test';
|
|
3
3
|
import './tests/smiles-tests';
|
|
4
4
|
|
|
5
5
|
export const _package = new DG.Package();
|
|
6
|
+
export {tests}
|
|
6
7
|
|
|
7
8
|
//name: test
|
|
8
9
|
//output: dataframe result
|