diff --git a/src/cache_handler.ts b/src/cache_handler.ts index 5b3bbbc7..a52c6d1f 100644 --- a/src/cache_handler.ts +++ b/src/cache_handler.ts @@ -9,7 +9,7 @@ import chunker from 'stream-chunker'; import { Readable, Transform } from 'stream'; import { Record, RecordPackage } from '@biothings-explorer/api-response-transform'; import { threadId } from 'worker_threads'; -import MetaKG from '../../smartapi-kg/built'; +import MetaKG from '@biothings-explorer/smartapi-kg'; import QEdge from './query_edge'; import { QueryHandlerOptions } from '@biothings-explorer/types'; @@ -113,7 +113,7 @@ export default class CacheHandler { } async categorizeEdges(qEdges: QEdge[]): Promise<{ cachedRecords: Record[]; nonCachedQEdges: QEdge[] }> { - if (this.cacheEnabled === false || process.env.INTERNAL_DISABLE_REDIS === "true") { + if (this.cacheEnabled === false || process.env.INTERNAL_DISABLE_REDIS === 'true') { return { cachedRecords: [], nonCachedQEdges: qEdges, @@ -210,7 +210,7 @@ export default class CacheHandler { } async cacheEdges(queryRecords: Record[]): Promise { - if (this.cacheEnabled === false || process.env.INTERNAL_DISABLE_REDIS === "true") { + if (this.cacheEnabled === false || process.env.INTERNAL_DISABLE_REDIS === 'true') { if (global.parentPort) { global.parentPort.postMessage({ threadId, cacheDone: true }); } @@ -257,8 +257,8 @@ export default class CacheHandler { resolve(); }); }); - if (process.env.QEDGE_CACHE_TIME_S !== "0") { - await redisClient.client.expireTimeout(redisID, process.env.QEDGE_CACHE_TIME_S || 1800); + if (process.env.QEDGE_CACHE_TIME_S !== '0') { + await redisClient.client.expireTimeout(redisID, process.env.QEDGE_CACHE_TIME_S || 1800); } } catch (error) { failedHashes.push(hash); diff --git a/src/graph/graph.ts b/src/graph/graph.ts index 018a096b..0fc57c8f 100644 --- a/src/graph/graph.ts +++ b/src/graph/graph.ts @@ -4,8 +4,8 @@ import Debug from 'debug'; import { LogEntry, StampedLog } from '@biothings-explorer/utils'; import KGNode from './kg_node'; import KGEdge from './kg_edge'; -import { Record } from '../../../api-response-transform/built'; -import { TrapiAuxiliaryGraph, TrapiResult } from '../types'; +import { Record } from '@biothings-explorer/api-response-transform'; +import { TrapiAuxiliaryGraph, TrapiResult } from '@biothings-explorer/types'; import KnowledgeGraph from './knowledge_graph'; const debug = Debug('bte:biothings-explorer-trapi:Graph'); diff --git a/src/graph/kg_edge.ts b/src/graph/kg_edge.ts index d6422ab4..b70ede02 100644 --- a/src/graph/kg_edge.ts +++ b/src/graph/kg_edge.ts @@ -1,5 +1,5 @@ -import { ProvenanceChainItem } from '@biothings-explorer/api-response-transform'; -import { TrapiAttribute } from '../types'; +import { TrapiSource } from '@biothings-explorer/types'; +import { TrapiAttribute } from '@biothings-explorer/types'; export interface KGEdgeInfo { object: string; @@ -68,7 +68,7 @@ export default class KGEdge { }); } - addSource(source: ProvenanceChainItem | ProvenanceChainItem[]): void { + addSource(source: TrapiSource | TrapiSource[]): void { if (typeof source === 'undefined') { return; } diff --git a/src/graph/kg_node.ts b/src/graph/kg_node.ts index cf16dfeb..60dac19f 100644 --- a/src/graph/kg_node.ts +++ b/src/graph/kg_node.ts @@ -1,4 +1,4 @@ -import { TrapiAttribute } from '../types'; +import { TrapiAttribute } from '@biothings-explorer/types'; export interface KGNodeInfo { label: string; diff --git a/src/graph/knowledge_graph.ts b/src/graph/knowledge_graph.ts index 0ac539cd..c495c5a2 100644 --- a/src/graph/knowledge_graph.ts +++ b/src/graph/knowledge_graph.ts @@ -9,7 +9,7 @@ import { TrapiKGNodes, TrapiQualifier, TrapiSource, -} from '../types'; +} from '@biothings-explorer/types'; import KGNode from './kg_node'; import KGEdge from './kg_edge'; import { BTEGraphUpdate } from './graph'; diff --git a/src/index.ts b/src/index.ts index cc4c6e01..57e08824 100644 --- a/src/index.ts +++ b/src/index.ts @@ -24,7 +24,7 @@ import { TrapiQueryGraph, TrapiResponse, TrapiResult, -} from './types'; +} from '@biothings-explorer/types'; import { QueryHandlerOptions } from '@biothings-explorer/types'; import BTEGraph from './graph/graph'; import QEdge from './query_edge'; diff --git a/src/inferred_mode/inferred_mode.ts b/src/inferred_mode/inferred_mode.ts index cd360243..21eef44a 100644 --- a/src/inferred_mode/inferred_mode.ts +++ b/src/inferred_mode/inferred_mode.ts @@ -6,9 +6,8 @@ import biolink from '../biolink'; import { getTemplates, MatchedTemplate, TemplateLookup } from './template_lookup'; import { scaled_sigmoid, inverse_scaled_sigmoid } from '../results_assembly/score'; import TRAPIQueryHandler from '../index'; -import { QueryHandlerOptions } from '@biothings-explorer/types'; import { - CompactQualifiers, + QueryHandlerOptions, TrapiAuxGraphCollection, TrapiEdgeBinding, TrapiKnowledgeGraph, @@ -17,7 +16,8 @@ import { TrapiQueryGraph, TrapiResponse, TrapiResult, -} from '../types'; +} from '@biothings-explorer/types'; +import { CompactQualifiers } from '../index'; const debug = Debug('bte:biothings-explorer-trapi:inferred-mode'); export interface CombinedResponse { @@ -385,9 +385,9 @@ export default class InferredQueryHandler { if (typeof combinedResponse.message.results[resultID].analyses[0].score !== 'undefined') { combinedResponse.message.results[resultID].analyses[0].score = resScore ? scaled_sigmoid( - inverse_scaled_sigmoid(combinedResponse.message.results[resultID].analyses[0].score) + - inverse_scaled_sigmoid(resScore), - ) + inverse_scaled_sigmoid(combinedResponse.message.results[resultID].analyses[0].score) + + inverse_scaled_sigmoid(resScore), + ) : combinedResponse.message.results[resultID].analyses[0].score; } else { combinedResponse.message.results[resultID].analyses[0].score = resScore; @@ -555,9 +555,11 @@ export default class InferredQueryHandler { const message = [ `Addition of ${creativeLimitHit} results from Template ${i + 1}`, Object.keys(combinedResponse.message.results).length === this.CREATIVE_LIMIT ? ' meets ' : ' exceeds ', - `creative result maximum of ${this.CREATIVE_LIMIT} (reaching ${Object.keys(combinedResponse.message.results).length + `creative result maximum of ${this.CREATIVE_LIMIT} (reaching ${ + Object.keys(combinedResponse.message.results).length } merged). `, - `Response will be truncated to top-scoring ${this.CREATIVE_LIMIT} results. Skipping remaining ${subQueries.length - (i + 1) + `Response will be truncated to top-scoring ${this.CREATIVE_LIMIT} results. Skipping remaining ${ + subQueries.length - (i + 1) } `, subQueries.length - (i + 1) === 1 ? `template.` : `templates.`, ].join(''); @@ -582,8 +584,9 @@ export default class InferredQueryHandler { const total = Object.values(mergedResultsCount).reduce((sum, count) => sum + count, 0) + Object.keys(mergedResultsCount).length; - const message = `Merging Summary: (${total}) inferred-template results were merged into (${Object.keys(mergedResultsCount).length - }) final results, reducing result count by (${total - Object.keys(mergedResultsCount).length})`; + const message = `Merging Summary: (${total}) inferred-template results were merged into (${ + Object.keys(mergedResultsCount).length + }) final results, reducing result count by (${total - Object.keys(mergedResultsCount).length})`; debug(message); combinedResponse.logs.push(new LogEntry('INFO', null, message).getLog()); } diff --git a/src/inferred_mode/template_lookup.ts b/src/inferred_mode/template_lookup.ts index 100dc5cc..e32973cb 100644 --- a/src/inferred_mode/template_lookup.ts +++ b/src/inferred_mode/template_lookup.ts @@ -2,7 +2,8 @@ import { promises as fs } from 'fs'; import path from 'path'; import async from 'async'; -import { TrapiQueryGraph, CompactQualifiers } from '../types'; +import { TrapiQueryGraph } from '@biothings-explorer/types'; +import { CompactQualifiers } from '../types'; export interface TemplateLookup { subject: string; diff --git a/src/query_edge.ts b/src/query_edge.ts index e380b51c..a9513741 100644 --- a/src/query_edge.ts +++ b/src/query_edge.ts @@ -6,7 +6,7 @@ import { Record, RecordNode, FrozenRecord } from '@biothings-explorer/api-respon import QNode from './query_node'; import { QNodeInfo } from './query_node'; import { LogEntry, StampedLog } from '@biothings-explorer/utils'; -import { TrapiAttributeConstraint, TrapiQualifierConstraint } from './types'; +import { TrapiAttributeConstraint, TrapiQualifierConstraint } from '@biothings-explorer/types'; const debug = Debug('bte:biothings-explorer-trapi:QEdge'); diff --git a/src/query_graph.ts b/src/query_graph.ts index 7a6f9d80..df95c906 100644 --- a/src/query_graph.ts +++ b/src/query_graph.ts @@ -7,7 +7,7 @@ import biolink from './biolink'; import { resolveSRI } from 'biomedical_id_resolver'; import _ from 'lodash'; import * as utils from './utils'; -import { TrapiQueryGraph } from './types'; +import { TrapiQueryGraph } from '@biothings-explorer/types'; const debug = Debug('bte:biothings-explorer-trapi:query_graph'); diff --git a/src/results_assembly/pfocr.ts b/src/results_assembly/pfocr.ts index 1afd52b4..7f68528c 100644 --- a/src/results_assembly/pfocr.ts +++ b/src/results_assembly/pfocr.ts @@ -4,7 +4,7 @@ const debug = Debug('bte:biothings-explorer-trapi:pfocr'); import { intersection } from '../utils'; import _ from 'lodash'; import { LogEntry, StampedLog } from '@biothings-explorer/utils'; -import { TrapiResult } from '../types'; +import { TrapiResult } from '@biothings-explorer/types'; // the minimum acceptable intersection size between the CURIEs // in a TRAPI result and in a PFOCR figure. diff --git a/src/results_assembly/query_results.ts b/src/results_assembly/query_results.ts index 026556fc..bc6effdd 100644 --- a/src/results_assembly/query_results.ts +++ b/src/results_assembly/query_results.ts @@ -1,5 +1,5 @@ import { LogEntry, StampedLog } from '@biothings-explorer/utils'; -import { TrapiResult } from '../types'; +import { TrapiResult } from '@biothings-explorer/types'; import Debug from 'debug'; import { zip } from 'lodash'; const debug = Debug('bte:biothings-explorer-trapi:QueryResult'); diff --git a/src/types.ts b/src/types.ts index 77ac472e..21388766 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,153 +1,5 @@ import { TrapiLog } from '@biothings-explorer/utils'; -export interface TrapiQNode { - ids?: string[]; - categories?: string[]; - is_set?: boolean; - constraints?: TrapiAttributeConstraint[]; -} - -export interface TrapiQEdge { - knowledge_type?: string; - predicates?: string[]; - subject: string; - object: string; - attribute_constraints?: TrapiAttributeConstraint[]; - qualifier_constraints?: TrapiQualifierConstraint[]; -} - -export interface TrapiQueryGraph { - nodes: { - [QNodeID: string]: TrapiQNode; - }; - edges: { - [QEdgeID: string]: TrapiQEdge; - }; -} - -export interface TrapiSource { - resource_id: string; - resource_role: string; - upstream_resource_ids?: string[]; -} - -export interface TrapiKGNodes { - [nodeID: string]: TrapiKGNode; -} - -export interface TrapiKGEdges { - [edgeID: string]: TrapiKGEdge; -} - -export interface TrapiKnowledgeGraph { - nodes: TrapiKGNodes; - edges: TrapiKGEdges; -} - -export interface TrapiKGEdge { - predicate: string; - subject: string; - object: string; - attributes?: TrapiAttribute[]; - qualifiers?: TrapiQualifier[]; - sources: TrapiSource[]; -} - -export interface TrapiKGNode { - categories: string[]; - name: string; - attributes?: TrapiAttribute[]; -} - -export interface TrapiAttribute { - attribute_type_id: string; - original_attribute_name?: string; - value: string | string[] | number | number[]; - value_type_id?: string; - attribute_source?: string | null; - value_url?: string | null; - attributes?: TrapiAttribute; - [additionalProperties: string]: string | string[] | null | TrapiAttribute | number | number[]; -} - -export interface TrapiQualifier { - qualifier_type_id: string; - qualifier_value: string | string[]; -} - -export interface TrapiQualifierConstraint { - qualifier_set: TrapiQualifier[]; -} - -export interface TrapiAttributeConstraint { - id: string; - name: string; - not: boolean; - operator: string; - value: string | string[] | number | number[]; -} - -export interface TrapiNodeBinding { - id: string; - query_id?: string; - attributes?: TrapiAttribute[]; -} - -export interface TrapiEdgeBinding { - id: string; - attributes?: TrapiAttribute[]; -} - -export interface TrapiAnalysis { - resource_id?: string; - score?: number; - edge_bindings: { - [qEdgeID: string]: TrapiEdgeBinding[]; - }; - support_graphs?: string[]; - scoring_method?: string; - attributes?: TrapiAttribute[]; -} - -export interface TrapiAuxiliaryGraph { - edges: string[]; - attributes?: TrapiAttribute[]; -} - -export interface TrapiPfocrFigure { - figureUrl: string; - pmc: string; - matchedCuries: string[]; - score: number; -} - -export interface TrapiResult { - node_bindings: { - [qNodeID: string]: TrapiNodeBinding[]; - }; - analyses: TrapiAnalysis[]; - pfocr?: TrapiPfocrFigure[]; -} - -export interface TrapiAuxGraphCollection { - [supportGraphID: string]: TrapiAuxiliaryGraph; -} - -export interface TrapiResponse { - description?: string; - schema_version?: string; - biolink_version?: string; - workflow?: { id: string }[]; - message: { - query_graph: TrapiQueryGraph; - knowledge_graph: TrapiKnowledgeGraph; - auxiliary_graphs?: TrapiAuxGraphCollection; - results: TrapiResult[]; - }; - logs: TrapiLog[]; -} - - export interface UnavailableAPITracker { [server: string]: { skip: boolean; skippedQueries: number }; } diff --git a/src/update_nodes.ts b/src/update_nodes.ts index e6df65a6..c9c30f93 100644 --- a/src/update_nodes.ts +++ b/src/update_nodes.ts @@ -3,7 +3,7 @@ import Debug from 'debug'; import { ResolverInput, SRIResolverOutput } from 'biomedical_id_resolver'; import { Record } from '@biothings-explorer/api-response-transform'; import QEdge from './query_edge'; -import { NodeNormalizerResultObj } from '../../api-response-transform/built'; +import { NodeNormalizerResultObj } from '@biothings-explorer/api-response-transform'; const debug = Debug('bte:biothings-explorer-trapi:nodeUpdateHandler'); export interface CuriesByCategory {