@rcsb/rcsb-saguaro-app 6.0.0 → 6.0.2
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/README.md +2 -2
- package/build/app.js +1 -1
- package/build/constants.js +2 -1
- package/build/constants.js.LICENSE.txt +8 -0
- package/build/plot.js +1 -1
- package/build/worker.js +1 -1
- package/lib/RcsbCollectTools/DataCollectors/MultipleEntryPropertyCollector.d.ts +3 -2
- package/lib/RcsbCollectTools/DataCollectors/MultipleEntryPropertyCollector.js +3 -2
- package/lib/RcsbFvExamples/GroupHistogram.js +2 -2
- package/lib/RcsbGroupWeb/RcsbGroupView/RcsbGroupChart/GroupChartEvents.js +20 -9
- package/lib/RcsbQueries/Yosemite/QueryMultipleEntriesProperties.graphql +3 -0
- package/lib/RcsbRequest/RcsbRequestContextManager.d.ts +2 -2
- package/lib/RcsbSeacrh/FacetStore/FacetMemberInterface.d.ts +11 -4
- package/lib/RcsbSeacrh/FacetStore/SequenceGroupFacetStore.js +3 -2
- package/lib/RcsbSeacrh/FacetStore/SingleFacets.d.ts +2 -0
- package/lib/RcsbSeacrh/FacetStore/SingleFacets.js +53 -3
- package/lib/RcsbSeacrh/FacetStore/UniprotGroupFacetStore.js +3 -2
- package/lib/RcsbSeacrh/FacetTools.d.ts +7 -13
- package/lib/RcsbSeacrh/FacetTools.js +7 -15
- package/lib/RcsbUtils/Groups/GroupPropertiesProvider.d.ts +2 -2
- package/lib/commonjs/RcsbCollectTools/DataCollectors/MultipleEntryPropertyCollector.d.ts +3 -2
- package/lib/commonjs/RcsbCollectTools/DataCollectors/MultipleEntryPropertyCollector.js +3 -2
- package/lib/commonjs/RcsbFvExamples/GroupHistogram.js +2 -2
- package/lib/commonjs/RcsbGroupWeb/RcsbGroupView/RcsbGroupChart/GroupChartEvents.js +20 -9
- package/lib/commonjs/RcsbQueries/Yosemite/QueryMultipleEntriesProperties.graphql +3 -0
- package/lib/commonjs/RcsbRequest/RcsbRequestContextManager.d.ts +2 -2
- package/lib/commonjs/RcsbSeacrh/FacetStore/FacetMemberInterface.d.ts +11 -4
- package/lib/commonjs/RcsbSeacrh/FacetStore/SequenceGroupFacetStore.js +2 -1
- package/lib/commonjs/RcsbSeacrh/FacetStore/SingleFacets.d.ts +2 -0
- package/lib/commonjs/RcsbSeacrh/FacetStore/SingleFacets.js +53 -3
- package/lib/commonjs/RcsbSeacrh/FacetStore/UniprotGroupFacetStore.js +2 -1
- package/lib/commonjs/RcsbSeacrh/FacetTools.d.ts +7 -13
- package/lib/commonjs/RcsbSeacrh/FacetTools.js +7 -15
- package/lib/commonjs/RcsbUtils/Groups/GroupPropertiesProvider.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { QueryEntriesArgs } from "@rcsb/rcsb-api-tools/build/RcsbGraphQL/Types/Yosemite/GqlTypes";
|
|
2
2
|
import { StructureDeterminationMethodology } from "@rcsb/rcsb-api-tools/build/RcsbDw/Types/DwEnums";
|
|
3
|
-
export interface
|
|
3
|
+
export interface EntryPropertyInterface {
|
|
4
4
|
rcsbId: string;
|
|
5
5
|
entryId: string;
|
|
6
6
|
experimentalMethod: string;
|
|
@@ -13,10 +13,11 @@ export interface EntryPropertyIntreface {
|
|
|
13
13
|
structureDeterminationMethodology: StructureDeterminationMethodology;
|
|
14
14
|
nonPolymerEntityToInstance: Map<string, Array<string>>;
|
|
15
15
|
instanceToOperator: Map<string, Map<string, Array<string>>>;
|
|
16
|
+
entityToPrd: Map<string, string>;
|
|
16
17
|
}
|
|
17
18
|
export declare class MultipleEntryPropertyCollector {
|
|
18
19
|
private readonly rcsbFvQuery;
|
|
19
|
-
collect(requestConfig: QueryEntriesArgs): Promise<Array<
|
|
20
|
+
collect(requestConfig: QueryEntriesArgs): Promise<Array<EntryPropertyInterface>>;
|
|
20
21
|
private static getEntryProperties;
|
|
21
22
|
private static instanceToOperator;
|
|
22
23
|
}
|
|
@@ -14,7 +14,7 @@ export class MultipleEntryPropertyCollector {
|
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
16
|
static getEntryProperties(r) {
|
|
17
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
17
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
18
18
|
return {
|
|
19
19
|
rcsbId: r.rcsb_id,
|
|
20
20
|
entryId: r.rcsb_id,
|
|
@@ -27,7 +27,8 @@ export class MultipleEntryPropertyCollector {
|
|
|
27
27
|
entityToInstance: (_m = (_l = r.polymer_entities) === null || _l === void 0 ? void 0 : _l.map(pe => { var _a; return [pe === null || pe === void 0 ? void 0 : pe.rcsb_id, (_a = pe === null || pe === void 0 ? void 0 : pe.polymer_entity_instances) === null || _a === void 0 ? void 0 : _a.map(pei => pei === null || pei === void 0 ? void 0 : pei.rcsb_id)]; }).reduce((r, x) => r.set(x[0], x[1]), new Map())) !== null && _m !== void 0 ? _m : new Map(),
|
|
28
28
|
structureDeterminationMethodology: r.rcsb_entry_info.structure_determination_methodology,
|
|
29
29
|
nonPolymerEntityToInstance: (_p = (_o = r.nonpolymer_entities) === null || _o === void 0 ? void 0 : _o.map(pe => { var _a; return [pe === null || pe === void 0 ? void 0 : pe.rcsb_id, (_a = pe === null || pe === void 0 ? void 0 : pe.nonpolymer_entity_instances) === null || _a === void 0 ? void 0 : _a.map(pei => pei === null || pei === void 0 ? void 0 : pei.rcsb_id)]; }).reduce((r, x) => r.set(x[0], x[1]), new Map())) !== null && _p !== void 0 ? _p : new Map(),
|
|
30
|
-
instanceToOperator: MultipleEntryPropertyCollector.instanceToOperator(r)
|
|
30
|
+
instanceToOperator: MultipleEntryPropertyCollector.instanceToOperator(r),
|
|
31
|
+
entityToPrd: (_r = (_q = r.polymer_entities) === null || _q === void 0 ? void 0 : _q.filter((pe) => typeof pe != "undefined").map(pe => { var _a, _b, _c; return [(_a = pe === null || pe === void 0 ? void 0 : pe.rcsb_id) !== null && _a !== void 0 ? _a : "", (_c = (_b = pe === null || pe === void 0 ? void 0 : pe.entity_poly) === null || _b === void 0 ? void 0 : _b.rcsb_prd_id) !== null && _c !== void 0 ? _c : ""]; }).reduce((map, pair) => map.set(pair[0], pair[1]), new Map())) !== null && _r !== void 0 ? _r : new Map()
|
|
31
32
|
};
|
|
32
33
|
}
|
|
33
34
|
static instanceToOperator(r) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { buildGroup, buildGroupContent, buildGroupMembers } from "../RcsbGroupWeb/RcsbGroupBuilder";
|
|
2
2
|
import { GroupProvenanceId } from "@rcsb/rcsb-api-tools/build/RcsbDw/Types/DwEnums";
|
|
3
|
-
const groupId = "
|
|
3
|
+
const groupId = "P00720";
|
|
4
4
|
buildGroupContent("select", GroupProvenanceId.ProvenanceSequenceIdentity, groupId);
|
|
5
5
|
buildGroupMembers("carousel", GroupProvenanceId.ProvenanceSequenceIdentity, groupId, 1, 1);
|
|
6
|
-
buildGroup("pfv", GroupProvenanceId.ProvenanceSequenceIdentity, groupId, undefined, ["
|
|
6
|
+
buildGroup("pfv", GroupProvenanceId.ProvenanceSequenceIdentity, groupId, undefined, ["CHIMERIC_FACET"]).then((m) => {
|
|
7
7
|
});
|
|
8
8
|
buildGroup("pfv_2", GroupProvenanceId.ProvenanceSequenceIdentity, groupId, undefined, ["RESOLUTION_FACET", "EXPERIMENTAL_METHOD_FACET"]).then((m) => {
|
|
9
9
|
});
|
|
@@ -50,24 +50,35 @@ export var GroupChartEvents;
|
|
|
50
50
|
function addBarChartClick(chart, returnType) {
|
|
51
51
|
if (chart.chartConfig)
|
|
52
52
|
chart.chartConfig.barClickCallback = (datum, data, e) => __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
var _a, _b;
|
|
53
54
|
if (datum.id === "excluded")
|
|
54
55
|
return;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
if ((_a = chart.facetConfig) === null || _a === void 0 ? void 0 : _a.bucketClickSearchQuery) {
|
|
57
|
+
const query = (_b = chart.facetConfig) === null || _b === void 0 ? void 0 : _b.bucketClickSearchQuery(datum, data, e);
|
|
58
|
+
yield clickEvent(e !== null && e !== void 0 ? e : { shiftKey: false }, chart, query, returnType);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
let query = SQT.searchAttributeQuery(chart.attribute, datum.x, Operator.ExactMatch, Service.Text);
|
|
62
|
+
if (chart.filters)
|
|
63
|
+
chart.filters.forEach(f => {
|
|
64
|
+
query = SQT.addNewNodeToAttributeSearchQuery(f.attribute, f.value, f.operator, query, f.service);
|
|
65
|
+
});
|
|
66
|
+
yield clickEvent(e !== null && e !== void 0 ? e : { shiftKey: false }, chart, query, returnType);
|
|
67
|
+
}
|
|
61
68
|
});
|
|
62
69
|
}
|
|
63
70
|
function addHistogramChartClick(chart, returnType) {
|
|
64
71
|
if (chart.chartConfig)
|
|
65
72
|
chart.chartConfig.barClickCallback = (datum, data, e) => __awaiter(this, void 0, void 0, function* () {
|
|
66
|
-
var _a;
|
|
73
|
+
var _a, _b, _c;
|
|
67
74
|
if (datum.id === "excluded")
|
|
68
75
|
return;
|
|
69
|
-
if ((
|
|
70
|
-
const query =
|
|
76
|
+
if ((_a = chart.facetConfig) === null || _a === void 0 ? void 0 : _a.bucketClickSearchQuery) {
|
|
77
|
+
const query = (_b = chart.facetConfig) === null || _b === void 0 ? void 0 : _b.bucketClickSearchQuery(datum, data, e);
|
|
78
|
+
yield clickEvent(e !== null && e !== void 0 ? e : { shiftKey: false }, chart, query, returnType);
|
|
79
|
+
}
|
|
80
|
+
else if (((_c = chart.facetConfig) === null || _c === void 0 ? void 0 : _c.mergeDomainMaxValue) && parseFloat(datum.x.toString()) >= chart.facetConfig.mergeDomainMaxValue) {
|
|
81
|
+
const query = SQT.searchAttributeQuery(chart.attribute, chart.facetConfig.mergeDomainMaxValue, Operator.GreaterOrEqual, Service.Text);
|
|
71
82
|
yield clickEvent(e !== null && e !== void 0 ? e : { shiftKey: false }, chart, query, returnType);
|
|
72
83
|
}
|
|
73
84
|
else {
|
|
@@ -5,7 +5,7 @@ import { QueryResult } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchR
|
|
|
5
5
|
import { InterfaceInstanceTranslate } from "../RcsbUtils/Translators/InterfaceInstanceTranslate";
|
|
6
6
|
import { PolymerEntityChromosomeTranslate } from "../RcsbUtils/Translators/PolymerEntityChromosomeTranslate";
|
|
7
7
|
import { QueryPolymer_Entity_GroupArgs } from "@rcsb/rcsb-api-tools/build/RcsbGraphQL/Types/Yosemite/GqlTypes";
|
|
8
|
-
import {
|
|
8
|
+
import { EntryPropertyInterface } from "../RcsbCollectTools/DataCollectors/MultipleEntryPropertyCollector";
|
|
9
9
|
import { FacetType } from "../RcsbSeacrh/FacetStore/FacetMemberInterface";
|
|
10
10
|
import { ReturnType } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchEnums";
|
|
11
11
|
import { ResultsContentType, SearchQuery } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchQueryInterface";
|
|
@@ -34,7 +34,7 @@ declare class RcsbRequestContextManager {
|
|
|
34
34
|
private readonly multipleInstanceSequenceCollector;
|
|
35
35
|
readonly modelKey: string;
|
|
36
36
|
getEntityProperties(entityIds: string | Array<string>): Promise<Array<PolymerEntityInterface>>;
|
|
37
|
-
getEntryProperties(entryIds: string | Array<string>): Promise<Array<
|
|
37
|
+
getEntryProperties(entryIds: string | Array<string>): Promise<Array<EntryPropertyInterface>>;
|
|
38
38
|
getInstanceSequences(instanceIds: string | string[]): Promise<InstanceSequenceInterface[]>;
|
|
39
39
|
getEntityToInstance(entryId: string): Promise<PolymerEntityInstanceTranslate>;
|
|
40
40
|
getEntryToAssembly(entryId: string): Promise<EntryAssemblyTranslate>;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { ChartConfigInterface, ChartType } from "@rcsb/rcsb-charts/lib/RcsbChartComponent/ChartConfigInterface";
|
|
2
|
-
import { AttributeFacetType, FilterFacetType } from "@rcsb/rcsb-search-tools/lib/SearchParseTools/SearchFacetInterface";
|
|
2
|
+
import { AttributeFacetType, BucketDataType, FilterFacetType } from "@rcsb/rcsb-search-tools/lib/SearchParseTools/SearchFacetInterface";
|
|
3
3
|
import { RcsbSearchAttributeType } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchMetadata";
|
|
4
|
+
import { SearchQueryType } from "@rcsb/rcsb-search-tools/lib/SearchQueryTools/SearchQueryInterfaces";
|
|
5
|
+
import { ChartDataColumnInterface, ChartDataValueInterface } from "@rcsb/rcsb-charts/lib/RcsbChartDataProvider/ChartDataProviderInterface";
|
|
6
|
+
import React from "react";
|
|
4
7
|
export type FacetType = AttributeFacetType | FilterFacetType;
|
|
5
8
|
export interface FacetMemberInterface {
|
|
6
9
|
id: string;
|
|
@@ -8,9 +11,13 @@ export interface FacetMemberInterface {
|
|
|
8
11
|
attributeName: string;
|
|
9
12
|
attribute: RcsbSearchAttributeType;
|
|
10
13
|
chartType: ChartType;
|
|
11
|
-
chartConfig?: ChartConfigInterface
|
|
12
|
-
|
|
13
|
-
};
|
|
14
|
+
chartConfig?: ChartConfigInterface;
|
|
15
|
+
facetConfig?: FacetConfigInterface;
|
|
14
16
|
facet: FacetType;
|
|
15
17
|
contentType: "date" | "number" | "string";
|
|
16
18
|
}
|
|
19
|
+
export interface FacetConfigInterface {
|
|
20
|
+
mergeDomainMaxValue?: number;
|
|
21
|
+
facetTransform?: (d: BucketDataType[]) => BucketDataType[];
|
|
22
|
+
bucketClickSearchQuery?: (datum: ChartDataValueInterface, data: ChartDataColumnInterface[], e?: React.MouseEvent) => SearchQueryType;
|
|
23
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ReturnType, Service } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchEnums";
|
|
2
2
|
import { RcsbSearchMetadata } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchMetadata";
|
|
3
|
-
import { CHEM_COMP_FACET, ENTITY_NAME_FACET, EXPERIMENTAL_METHOD_FACET, LIGAND_FACET, ORGANISM_FACET, PFAM_FACET, RELEASE_DATE_FACET, RESOLUTION_FACET, SCOP_FACET, TAXONOMY_FACET, CATH_FACET, ECOD_FACET, ENZYME_CLASS_FACET, GO_FUNCTION_FACET, GO_PROCESS_FACET, GO_COMPONENT_FACET, METHODOLOGY_FACET } from "./SingleFacets";
|
|
3
|
+
import { CHEM_COMP_FACET, ENTITY_NAME_FACET, EXPERIMENTAL_METHOD_FACET, LIGAND_FACET, ORGANISM_FACET, PFAM_FACET, RELEASE_DATE_FACET, RESOLUTION_FACET, SCOP_FACET, TAXONOMY_FACET, CATH_FACET, ECOD_FACET, ENZYME_CLASS_FACET, GO_FUNCTION_FACET, GO_PROCESS_FACET, GO_COMPONENT_FACET, METHODOLOGY_FACET, CHIMERIC_FACET } from "./SingleFacets";
|
|
4
4
|
import { cloneDeep } from "lodash";
|
|
5
5
|
class SequenceGroupFacetStore {
|
|
6
6
|
constructor() {
|
|
@@ -24,7 +24,8 @@ class SequenceGroupFacetStore {
|
|
|
24
24
|
cloneDeep(ENTITY_NAME_FACET),
|
|
25
25
|
cloneDeep(GO_FUNCTION_FACET),
|
|
26
26
|
cloneDeep(GO_PROCESS_FACET),
|
|
27
|
-
cloneDeep(GO_COMPONENT_FACET)
|
|
27
|
+
cloneDeep(GO_COMPONENT_FACET),
|
|
28
|
+
cloneDeep(CHIMERIC_FACET)
|
|
28
29
|
];
|
|
29
30
|
this.nonPolymerFacet = [
|
|
30
31
|
cloneDeep(CHEM_COMP_FACET)
|
|
@@ -2,6 +2,7 @@ import { FacetMemberInterface } from "./FacetMemberInterface";
|
|
|
2
2
|
export declare const EXPERIMENTAL_METHOD_FACET: FacetMemberInterface;
|
|
3
3
|
export declare const RESOLUTION_FACET: FacetMemberInterface;
|
|
4
4
|
export declare const METHODOLOGY_FACET: FacetMemberInterface;
|
|
5
|
+
export declare const CHIMERIC_FACET: FacetMemberInterface;
|
|
5
6
|
export declare const RELEASE_DATE_FACET: FacetMemberInterface;
|
|
6
7
|
export declare const SCOP_FACET: FacetMemberInterface;
|
|
7
8
|
export declare const CATH_FACET: FacetMemberInterface;
|
|
@@ -36,4 +37,5 @@ export declare const SearchFacets: {
|
|
|
36
37
|
GO_COMPONENT_FACET: FacetMemberInterface;
|
|
37
38
|
LIGAND_OF_INTEREST_FACET: FacetMemberInterface;
|
|
38
39
|
METHODOLOGY_FACET: FacetMemberInterface;
|
|
40
|
+
CHIMERIC_FACET: FacetMemberInterface;
|
|
39
41
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { RcsbSearchMetadata } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchMetadata";
|
|
2
|
-
import { AggregationType, Service, Type } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchEnums";
|
|
2
|
+
import { AggregationType, Operator, Service, Type } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchEnums";
|
|
3
3
|
import { ChartType } from "@rcsb/rcsb-charts/lib/RcsbChartComponent/ChartConfigInterface";
|
|
4
|
+
import { SearchQueryTools as SQT } from "../SearchQueryTools";
|
|
4
5
|
export const EXPERIMENTAL_METHOD_FACET = {
|
|
5
6
|
id: "method",
|
|
6
7
|
title: "Experimental Method",
|
|
@@ -43,7 +44,6 @@ export const RESOLUTION_FACET = {
|
|
|
43
44
|
constHeight: 225
|
|
44
45
|
},
|
|
45
46
|
histogramBinIncrement: 0.5,
|
|
46
|
-
mergeDomainMaxValue: 5,
|
|
47
47
|
domainMinValue: 0,
|
|
48
48
|
domainMaxValue: 6,
|
|
49
49
|
axisLabel: "Angstroms",
|
|
@@ -53,6 +53,9 @@ export const RESOLUTION_FACET = {
|
|
|
53
53
|
return `Resolution ${d.x - 0.25} - ${d.x + 0.25}`;
|
|
54
54
|
}
|
|
55
55
|
},
|
|
56
|
+
facetConfig: {
|
|
57
|
+
mergeDomainMaxValue: 5
|
|
58
|
+
},
|
|
56
59
|
facet: {
|
|
57
60
|
name: "RESOLUTION_FACET",
|
|
58
61
|
aggregation_type: AggregationType.Histogram,
|
|
@@ -78,6 +81,52 @@ export const METHODOLOGY_FACET = {
|
|
|
78
81
|
min_interval_population: 1
|
|
79
82
|
}
|
|
80
83
|
};
|
|
84
|
+
export const CHIMERIC_FACET = {
|
|
85
|
+
id: "chimeric",
|
|
86
|
+
title: "Protein Sequence Composition",
|
|
87
|
+
attributeName: "CHIMERIC_FACET",
|
|
88
|
+
attribute: RcsbSearchMetadata.RcsbPolymerEntity.RcsbSourcePartCount.path,
|
|
89
|
+
chartType: ChartType.barplot,
|
|
90
|
+
contentType: "string",
|
|
91
|
+
facetConfig: {
|
|
92
|
+
facetTransform: (buckets) => {
|
|
93
|
+
const out = [];
|
|
94
|
+
const wt = buckets.find(b => b.label == 1);
|
|
95
|
+
if (wt)
|
|
96
|
+
out.push({
|
|
97
|
+
label: "Wild Type",
|
|
98
|
+
population: wt.population
|
|
99
|
+
});
|
|
100
|
+
const synthetic = buckets.find(b => b.label == 0);
|
|
101
|
+
if (synthetic)
|
|
102
|
+
out.push({
|
|
103
|
+
label: "Synthetic",
|
|
104
|
+
population: synthetic.population
|
|
105
|
+
});
|
|
106
|
+
const chimeric = buckets.filter(b => parseInt(b.label.toString()) > 1);
|
|
107
|
+
if ((chimeric === null || chimeric === void 0 ? void 0 : chimeric.length) > 0)
|
|
108
|
+
out.push({
|
|
109
|
+
label: "Chimeric",
|
|
110
|
+
population: chimeric.reduce((c, p) => c + p.population, 0)
|
|
111
|
+
});
|
|
112
|
+
return out;
|
|
113
|
+
},
|
|
114
|
+
bucketClickSearchQuery: (datum, data, e) => {
|
|
115
|
+
if (datum.x == "Wild Type")
|
|
116
|
+
return SQT.searchAttributeQuery(CHIMERIC_FACET.attribute, 1, Operator.Equals, Service.Text);
|
|
117
|
+
else if (datum.x == "Synthetic")
|
|
118
|
+
return SQT.searchAttributeQuery(CHIMERIC_FACET.attribute, 0, Operator.Equals, Service.Text);
|
|
119
|
+
else
|
|
120
|
+
return SQT.searchAttributeQuery(CHIMERIC_FACET.attribute, 1, Operator.Greater, Service.Text);
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
facet: {
|
|
124
|
+
name: "CHIMERIC_FACET",
|
|
125
|
+
aggregation_type: AggregationType.Terms,
|
|
126
|
+
attribute: RcsbSearchMetadata.RcsbPolymerEntity.RcsbSourcePartCount.path,
|
|
127
|
+
min_interval_population: 1
|
|
128
|
+
}
|
|
129
|
+
};
|
|
81
130
|
export const RELEASE_DATE_FACET = {
|
|
82
131
|
id: "release_date",
|
|
83
132
|
title: undefined,
|
|
@@ -556,5 +605,6 @@ export const SearchFacets = {
|
|
|
556
605
|
GO_PROCESS_FACET,
|
|
557
606
|
GO_COMPONENT_FACET,
|
|
558
607
|
LIGAND_OF_INTEREST_FACET,
|
|
559
|
-
METHODOLOGY_FACET
|
|
608
|
+
METHODOLOGY_FACET,
|
|
609
|
+
CHIMERIC_FACET
|
|
560
610
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ReturnType, Service } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchEnums";
|
|
2
2
|
import { RcsbSearchMetadata } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchMetadata";
|
|
3
|
-
import { CHEM_COMP_FACET, ENTITY_NAME_FACET, EXPERIMENTAL_METHOD_FACET, LIGAND_FACET, ORGANISM_FACET, PFAM_FACET, RELEASE_DATE_FACET, RESOLUTION_FACET, SCOP_FACET, TAXONOMY_FACET, CATH_FACET, ECOD_FACET, ENZYME_CLASS_FACET, GO_FUNCTION_FACET, GO_PROCESS_FACET, GO_COMPONENT_FACET, METHODOLOGY_FACET } from "./SingleFacets";
|
|
3
|
+
import { CHEM_COMP_FACET, ENTITY_NAME_FACET, EXPERIMENTAL_METHOD_FACET, LIGAND_FACET, ORGANISM_FACET, PFAM_FACET, RELEASE_DATE_FACET, RESOLUTION_FACET, SCOP_FACET, TAXONOMY_FACET, CATH_FACET, ECOD_FACET, ENZYME_CLASS_FACET, GO_FUNCTION_FACET, GO_PROCESS_FACET, GO_COMPONENT_FACET, METHODOLOGY_FACET, CHIMERIC_FACET } from "./SingleFacets";
|
|
4
4
|
import { cloneDeep } from "lodash";
|
|
5
5
|
class UniprotGroupFacetStore {
|
|
6
6
|
constructor() {
|
|
@@ -24,7 +24,8 @@ class UniprotGroupFacetStore {
|
|
|
24
24
|
cloneDeep(ENTITY_NAME_FACET),
|
|
25
25
|
cloneDeep(GO_FUNCTION_FACET),
|
|
26
26
|
cloneDeep(GO_PROCESS_FACET),
|
|
27
|
-
cloneDeep(GO_COMPONENT_FACET)
|
|
27
|
+
cloneDeep(GO_COMPONENT_FACET),
|
|
28
|
+
cloneDeep(CHIMERIC_FACET)
|
|
28
29
|
];
|
|
29
30
|
this.nonPolymerFacet = [
|
|
30
31
|
cloneDeep(CHEM_COMP_FACET)
|
|
@@ -2,7 +2,7 @@ import { BucketFacet } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchR
|
|
|
2
2
|
import { FacetMemberInterface } from "./FacetStore/FacetMemberInterface";
|
|
3
3
|
import { AttributeTextQueryParameters } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchQueryInterface";
|
|
4
4
|
import { Service } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchEnums";
|
|
5
|
-
import { ChartDisplayConfigInterface, ChartObjectInterface
|
|
5
|
+
import { ChartDisplayConfigInterface, ChartObjectInterface } from "@rcsb/rcsb-charts/lib/RcsbChartComponent/ChartConfigInterface";
|
|
6
6
|
import { RcsbSearchAttributeType } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchMetadata";
|
|
7
7
|
export type SearchFilter = {
|
|
8
8
|
attribute: RcsbSearchAttributeType;
|
|
@@ -10,16 +10,10 @@ export type SearchFilter = {
|
|
|
10
10
|
operator: AttributeTextQueryParameters["operator"];
|
|
11
11
|
service: Service.Text | Service.TextChem;
|
|
12
12
|
};
|
|
13
|
-
export interface RcsbChartInterface<T = any> {
|
|
14
|
-
chartType: ChartType;
|
|
13
|
+
export interface RcsbChartInterface<T = any> extends Omit<FacetMemberInterface, "id" | "facet"> {
|
|
15
14
|
labelList?: string[];
|
|
16
|
-
attribute: RcsbSearchAttributeType;
|
|
17
|
-
attributeName: string;
|
|
18
|
-
chartConfig?: FacetMemberInterface["chartConfig"];
|
|
19
|
-
title?: string;
|
|
20
15
|
data: ChartObjectInterface<T>[];
|
|
21
16
|
filters?: SearchFilter[];
|
|
22
|
-
contentType: FacetMemberInterface['contentType'];
|
|
23
17
|
}
|
|
24
18
|
export declare class FacetTools {
|
|
25
19
|
static getResultDrilldowns(facetMembers: FacetMemberInterface[], searchResultFacets: Array<BucketFacet>): Array<RcsbChartInterface>;
|
|
@@ -45,15 +39,15 @@ export declare class FacetTools {
|
|
|
45
39
|
barClickCallback?: import("@rcsb/rcsb-charts/lib/RcsbChartComponent/ChartConfigInterface").BarClickCallbackType | undefined;
|
|
46
40
|
sort?: ((b: import("@rcsb/rcsb-charts/lib/RcsbChartDataProvider/ChartDataProviderInterface").ChartDataColumnInterface<any>, a: import("@rcsb/rcsb-charts/lib/RcsbChartDataProvider/ChartDataProviderInterface").ChartDataColumnInterface<any>) => number) | undefined;
|
|
47
41
|
tooltipText?: ((a: import("@rcsb/rcsb-charts/lib/RcsbChartDataProvider/ChartDataProviderInterface").ChartDataValueInterface<any>) => string | string[] | undefined) | undefined;
|
|
48
|
-
mergeDomainMaxValue?: number | undefined;
|
|
49
42
|
};
|
|
50
|
-
chartType: ChartType;
|
|
51
43
|
labelList?: string[] | undefined;
|
|
52
|
-
attribute: RcsbSearchAttributeType;
|
|
53
|
-
attributeName: string;
|
|
54
|
-
title?: string | undefined;
|
|
55
44
|
data: ChartObjectInterface<any>[];
|
|
56
45
|
filters?: SearchFilter[] | undefined;
|
|
46
|
+
title?: string | undefined;
|
|
47
|
+
attribute: RcsbSearchAttributeType;
|
|
48
|
+
attributeName: string;
|
|
49
|
+
chartType: import("@rcsb/rcsb-charts/lib/RcsbChartComponent/ChartConfigInterface").ChartType;
|
|
50
|
+
facetConfig?: import("./FacetStore/FacetMemberInterface").FacetConfigInterface | undefined;
|
|
57
51
|
contentType: "string" | "number" | "date";
|
|
58
52
|
};
|
|
59
53
|
private static includeMissingFacets;
|
|
@@ -9,17 +9,7 @@ export class FacetTools {
|
|
|
9
9
|
if (!facet)
|
|
10
10
|
return;
|
|
11
11
|
const chart = FacetTools.getFacetChartTypeFromAttribute(facetMembers, bucket.name);
|
|
12
|
-
out.push({
|
|
13
|
-
chartType: chart.chartType,
|
|
14
|
-
chartConfig: chart.chartConfig,
|
|
15
|
-
labelList: [],
|
|
16
|
-
attributeName: bucket.name,
|
|
17
|
-
attribute: facet.attribute,
|
|
18
|
-
title: chart.title,
|
|
19
|
-
data: applyChartConfigToData(bucket.data, facet === null || facet === void 0 ? void 0 : facet.chartConfig),
|
|
20
|
-
filters: FacetTools.getFacetFiltersFromName(facetMembers, bucket.name),
|
|
21
|
-
contentType: facet.contentType
|
|
22
|
-
});
|
|
12
|
+
out.push(Object.assign(Object.assign({}, chart), { labelList: [], attributeName: bucket.name, attribute: facet.attribute, data: applyChartConfigToData(bucket.data, facet === null || facet === void 0 ? void 0 : facet.facetConfig), filters: FacetTools.getFacetFiltersFromName(facetMembers, bucket.name), contentType: facet.contentType }));
|
|
23
13
|
});
|
|
24
14
|
return out;
|
|
25
15
|
}
|
|
@@ -63,7 +53,7 @@ export class FacetTools {
|
|
|
63
53
|
const facet = facetMembers.find((facet) => (facet.attributeName === attribute));
|
|
64
54
|
if (!facet)
|
|
65
55
|
throw `Unknown facet attribute ${attribute}`;
|
|
66
|
-
return
|
|
56
|
+
return facet;
|
|
67
57
|
}
|
|
68
58
|
static getFacetFiltersFromName(facetMembers, attribute) {
|
|
69
59
|
const facet = facetMembers.find((facet) => (facet.attributeName === attribute));
|
|
@@ -90,9 +80,11 @@ export class FacetTools {
|
|
|
90
80
|
}));
|
|
91
81
|
}
|
|
92
82
|
}
|
|
93
|
-
function applyChartConfigToData(data,
|
|
94
|
-
if (
|
|
95
|
-
return mergeDomainMaxValue(data,
|
|
83
|
+
function applyChartConfigToData(data, facetConfig) {
|
|
84
|
+
if (facetConfig === null || facetConfig === void 0 ? void 0 : facetConfig.mergeDomainMaxValue)
|
|
85
|
+
return mergeDomainMaxValue(data, facetConfig.mergeDomainMaxValue);
|
|
86
|
+
if (facetConfig === null || facetConfig === void 0 ? void 0 : facetConfig.facetTransform)
|
|
87
|
+
return facetConfig.facetTransform(data);
|
|
96
88
|
return data;
|
|
97
89
|
}
|
|
98
90
|
function mergeDomainMaxValue(data, domMaxValue) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EntryPropertyInterface } from "../../RcsbCollectTools/DataCollectors/MultipleEntryPropertyCollector";
|
|
2
2
|
export interface GroupPropertiesProviderInterface {
|
|
3
|
-
entryProperties: Array<
|
|
3
|
+
entryProperties: Array<EntryPropertyInterface>;
|
|
4
4
|
}
|
|
5
5
|
interface ItemPropertyInterface {
|
|
6
6
|
objectId: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { QueryEntriesArgs } from "@rcsb/rcsb-api-tools/build/RcsbGraphQL/Types/Yosemite/GqlTypes";
|
|
2
2
|
import { StructureDeterminationMethodology } from "@rcsb/rcsb-api-tools/build/RcsbDw/Types/DwEnums";
|
|
3
|
-
export interface
|
|
3
|
+
export interface EntryPropertyInterface {
|
|
4
4
|
rcsbId: string;
|
|
5
5
|
entryId: string;
|
|
6
6
|
experimentalMethod: string;
|
|
@@ -13,10 +13,11 @@ export interface EntryPropertyIntreface {
|
|
|
13
13
|
structureDeterminationMethodology: StructureDeterminationMethodology;
|
|
14
14
|
nonPolymerEntityToInstance: Map<string, Array<string>>;
|
|
15
15
|
instanceToOperator: Map<string, Map<string, Array<string>>>;
|
|
16
|
+
entityToPrd: Map<string, string>;
|
|
16
17
|
}
|
|
17
18
|
export declare class MultipleEntryPropertyCollector {
|
|
18
19
|
private readonly rcsbFvQuery;
|
|
19
|
-
collect(requestConfig: QueryEntriesArgs): Promise<Array<
|
|
20
|
+
collect(requestConfig: QueryEntriesArgs): Promise<Array<EntryPropertyInterface>>;
|
|
20
21
|
private static getEntryProperties;
|
|
21
22
|
private static instanceToOperator;
|
|
22
23
|
}
|
|
@@ -17,7 +17,7 @@ class MultipleEntryPropertyCollector {
|
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
static getEntryProperties(r) {
|
|
20
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
20
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
21
21
|
return {
|
|
22
22
|
rcsbId: r.rcsb_id,
|
|
23
23
|
entryId: r.rcsb_id,
|
|
@@ -30,7 +30,8 @@ class MultipleEntryPropertyCollector {
|
|
|
30
30
|
entityToInstance: (_m = (_l = r.polymer_entities) === null || _l === void 0 ? void 0 : _l.map(pe => { var _a; return [pe === null || pe === void 0 ? void 0 : pe.rcsb_id, (_a = pe === null || pe === void 0 ? void 0 : pe.polymer_entity_instances) === null || _a === void 0 ? void 0 : _a.map(pei => pei === null || pei === void 0 ? void 0 : pei.rcsb_id)]; }).reduce((r, x) => r.set(x[0], x[1]), new Map())) !== null && _m !== void 0 ? _m : new Map(),
|
|
31
31
|
structureDeterminationMethodology: r.rcsb_entry_info.structure_determination_methodology,
|
|
32
32
|
nonPolymerEntityToInstance: (_p = (_o = r.nonpolymer_entities) === null || _o === void 0 ? void 0 : _o.map(pe => { var _a; return [pe === null || pe === void 0 ? void 0 : pe.rcsb_id, (_a = pe === null || pe === void 0 ? void 0 : pe.nonpolymer_entity_instances) === null || _a === void 0 ? void 0 : _a.map(pei => pei === null || pei === void 0 ? void 0 : pei.rcsb_id)]; }).reduce((r, x) => r.set(x[0], x[1]), new Map())) !== null && _p !== void 0 ? _p : new Map(),
|
|
33
|
-
instanceToOperator: MultipleEntryPropertyCollector.instanceToOperator(r)
|
|
33
|
+
instanceToOperator: MultipleEntryPropertyCollector.instanceToOperator(r),
|
|
34
|
+
entityToPrd: (_r = (_q = r.polymer_entities) === null || _q === void 0 ? void 0 : _q.filter((pe) => typeof pe != "undefined").map(pe => { var _a, _b, _c; return [(_a = pe === null || pe === void 0 ? void 0 : pe.rcsb_id) !== null && _a !== void 0 ? _a : "", (_c = (_b = pe === null || pe === void 0 ? void 0 : pe.entity_poly) === null || _b === void 0 ? void 0 : _b.rcsb_prd_id) !== null && _c !== void 0 ? _c : ""]; }).reduce((map, pair) => map.set(pair[0], pair[1]), new Map())) !== null && _r !== void 0 ? _r : new Map()
|
|
34
35
|
};
|
|
35
36
|
}
|
|
36
37
|
static instanceToOperator(r) {
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const RcsbGroupBuilder_1 = require("../RcsbGroupWeb/RcsbGroupBuilder");
|
|
4
4
|
const DwEnums_1 = require("@rcsb/rcsb-api-tools/build/RcsbDw/Types/DwEnums");
|
|
5
|
-
const groupId = "
|
|
5
|
+
const groupId = "P00720";
|
|
6
6
|
(0, RcsbGroupBuilder_1.buildGroupContent)("select", DwEnums_1.GroupProvenanceId.ProvenanceSequenceIdentity, groupId);
|
|
7
7
|
(0, RcsbGroupBuilder_1.buildGroupMembers)("carousel", DwEnums_1.GroupProvenanceId.ProvenanceSequenceIdentity, groupId, 1, 1);
|
|
8
|
-
(0, RcsbGroupBuilder_1.buildGroup)("pfv", DwEnums_1.GroupProvenanceId.ProvenanceSequenceIdentity, groupId, undefined, ["
|
|
8
|
+
(0, RcsbGroupBuilder_1.buildGroup)("pfv", DwEnums_1.GroupProvenanceId.ProvenanceSequenceIdentity, groupId, undefined, ["CHIMERIC_FACET"]).then((m) => {
|
|
9
9
|
});
|
|
10
10
|
(0, RcsbGroupBuilder_1.buildGroup)("pfv_2", DwEnums_1.GroupProvenanceId.ProvenanceSequenceIdentity, groupId, undefined, ["RESOLUTION_FACET", "EXPERIMENTAL_METHOD_FACET"]).then((m) => {
|
|
11
11
|
});
|
|
@@ -53,24 +53,35 @@ var GroupChartEvents;
|
|
|
53
53
|
function addBarChartClick(chart, returnType) {
|
|
54
54
|
if (chart.chartConfig)
|
|
55
55
|
chart.chartConfig.barClickCallback = (datum, data, e) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
var _a, _b;
|
|
56
57
|
if (datum.id === "excluded")
|
|
57
58
|
return;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
if ((_a = chart.facetConfig) === null || _a === void 0 ? void 0 : _a.bucketClickSearchQuery) {
|
|
60
|
+
const query = (_b = chart.facetConfig) === null || _b === void 0 ? void 0 : _b.bucketClickSearchQuery(datum, data, e);
|
|
61
|
+
yield clickEvent(e !== null && e !== void 0 ? e : { shiftKey: false }, chart, query, returnType);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
let query = SearchQueryTools_1.SearchQueryTools.searchAttributeQuery(chart.attribute, datum.x, SearchEnums_1.Operator.ExactMatch, SearchEnums_1.Service.Text);
|
|
65
|
+
if (chart.filters)
|
|
66
|
+
chart.filters.forEach(f => {
|
|
67
|
+
query = SearchQueryTools_1.SearchQueryTools.addNewNodeToAttributeSearchQuery(f.attribute, f.value, f.operator, query, f.service);
|
|
68
|
+
});
|
|
69
|
+
yield clickEvent(e !== null && e !== void 0 ? e : { shiftKey: false }, chart, query, returnType);
|
|
70
|
+
}
|
|
64
71
|
});
|
|
65
72
|
}
|
|
66
73
|
function addHistogramChartClick(chart, returnType) {
|
|
67
74
|
if (chart.chartConfig)
|
|
68
75
|
chart.chartConfig.barClickCallback = (datum, data, e) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
69
|
-
var _a;
|
|
76
|
+
var _a, _b, _c;
|
|
70
77
|
if (datum.id === "excluded")
|
|
71
78
|
return;
|
|
72
|
-
if ((
|
|
73
|
-
const query =
|
|
79
|
+
if ((_a = chart.facetConfig) === null || _a === void 0 ? void 0 : _a.bucketClickSearchQuery) {
|
|
80
|
+
const query = (_b = chart.facetConfig) === null || _b === void 0 ? void 0 : _b.bucketClickSearchQuery(datum, data, e);
|
|
81
|
+
yield clickEvent(e !== null && e !== void 0 ? e : { shiftKey: false }, chart, query, returnType);
|
|
82
|
+
}
|
|
83
|
+
else if (((_c = chart.facetConfig) === null || _c === void 0 ? void 0 : _c.mergeDomainMaxValue) && parseFloat(datum.x.toString()) >= chart.facetConfig.mergeDomainMaxValue) {
|
|
84
|
+
const query = SearchQueryTools_1.SearchQueryTools.searchAttributeQuery(chart.attribute, chart.facetConfig.mergeDomainMaxValue, SearchEnums_1.Operator.GreaterOrEqual, SearchEnums_1.Service.Text);
|
|
74
85
|
yield clickEvent(e !== null && e !== void 0 ? e : { shiftKey: false }, chart, query, returnType);
|
|
75
86
|
}
|
|
76
87
|
else {
|
|
@@ -5,7 +5,7 @@ import { QueryResult } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchR
|
|
|
5
5
|
import { InterfaceInstanceTranslate } from "../RcsbUtils/Translators/InterfaceInstanceTranslate";
|
|
6
6
|
import { PolymerEntityChromosomeTranslate } from "../RcsbUtils/Translators/PolymerEntityChromosomeTranslate";
|
|
7
7
|
import { QueryPolymer_Entity_GroupArgs } from "@rcsb/rcsb-api-tools/build/RcsbGraphQL/Types/Yosemite/GqlTypes";
|
|
8
|
-
import {
|
|
8
|
+
import { EntryPropertyInterface } from "../RcsbCollectTools/DataCollectors/MultipleEntryPropertyCollector";
|
|
9
9
|
import { FacetType } from "../RcsbSeacrh/FacetStore/FacetMemberInterface";
|
|
10
10
|
import { ReturnType } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchEnums";
|
|
11
11
|
import { ResultsContentType, SearchQuery } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchQueryInterface";
|
|
@@ -34,7 +34,7 @@ declare class RcsbRequestContextManager {
|
|
|
34
34
|
private readonly multipleInstanceSequenceCollector;
|
|
35
35
|
readonly modelKey: string;
|
|
36
36
|
getEntityProperties(entityIds: string | Array<string>): Promise<Array<PolymerEntityInterface>>;
|
|
37
|
-
getEntryProperties(entryIds: string | Array<string>): Promise<Array<
|
|
37
|
+
getEntryProperties(entryIds: string | Array<string>): Promise<Array<EntryPropertyInterface>>;
|
|
38
38
|
getInstanceSequences(instanceIds: string | string[]): Promise<InstanceSequenceInterface[]>;
|
|
39
39
|
getEntityToInstance(entryId: string): Promise<PolymerEntityInstanceTranslate>;
|
|
40
40
|
getEntryToAssembly(entryId: string): Promise<EntryAssemblyTranslate>;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { ChartConfigInterface, ChartType } from "@rcsb/rcsb-charts/lib/RcsbChartComponent/ChartConfigInterface";
|
|
2
|
-
import { AttributeFacetType, FilterFacetType } from "@rcsb/rcsb-search-tools/lib/SearchParseTools/SearchFacetInterface";
|
|
2
|
+
import { AttributeFacetType, BucketDataType, FilterFacetType } from "@rcsb/rcsb-search-tools/lib/SearchParseTools/SearchFacetInterface";
|
|
3
3
|
import { RcsbSearchAttributeType } from "@rcsb/rcsb-api-tools/build/RcsbSearch/Types/SearchMetadata";
|
|
4
|
+
import { SearchQueryType } from "@rcsb/rcsb-search-tools/lib/SearchQueryTools/SearchQueryInterfaces";
|
|
5
|
+
import { ChartDataColumnInterface, ChartDataValueInterface } from "@rcsb/rcsb-charts/lib/RcsbChartDataProvider/ChartDataProviderInterface";
|
|
6
|
+
import React from "react";
|
|
4
7
|
export type FacetType = AttributeFacetType | FilterFacetType;
|
|
5
8
|
export interface FacetMemberInterface {
|
|
6
9
|
id: string;
|
|
@@ -8,9 +11,13 @@ export interface FacetMemberInterface {
|
|
|
8
11
|
attributeName: string;
|
|
9
12
|
attribute: RcsbSearchAttributeType;
|
|
10
13
|
chartType: ChartType;
|
|
11
|
-
chartConfig?: ChartConfigInterface
|
|
12
|
-
|
|
13
|
-
};
|
|
14
|
+
chartConfig?: ChartConfigInterface;
|
|
15
|
+
facetConfig?: FacetConfigInterface;
|
|
14
16
|
facet: FacetType;
|
|
15
17
|
contentType: "date" | "number" | "string";
|
|
16
18
|
}
|
|
19
|
+
export interface FacetConfigInterface {
|
|
20
|
+
mergeDomainMaxValue?: number;
|
|
21
|
+
facetTransform?: (d: BucketDataType[]) => BucketDataType[];
|
|
22
|
+
bucketClickSearchQuery?: (datum: ChartDataValueInterface, data: ChartDataColumnInterface[], e?: React.MouseEvent) => SearchQueryType;
|
|
23
|
+
}
|
|
@@ -27,7 +27,8 @@ class SequenceGroupFacetStore {
|
|
|
27
27
|
(0, lodash_1.cloneDeep)(SingleFacets_1.ENTITY_NAME_FACET),
|
|
28
28
|
(0, lodash_1.cloneDeep)(SingleFacets_1.GO_FUNCTION_FACET),
|
|
29
29
|
(0, lodash_1.cloneDeep)(SingleFacets_1.GO_PROCESS_FACET),
|
|
30
|
-
(0, lodash_1.cloneDeep)(SingleFacets_1.GO_COMPONENT_FACET)
|
|
30
|
+
(0, lodash_1.cloneDeep)(SingleFacets_1.GO_COMPONENT_FACET),
|
|
31
|
+
(0, lodash_1.cloneDeep)(SingleFacets_1.CHIMERIC_FACET)
|
|
31
32
|
];
|
|
32
33
|
this.nonPolymerFacet = [
|
|
33
34
|
(0, lodash_1.cloneDeep)(SingleFacets_1.CHEM_COMP_FACET)
|
|
@@ -2,6 +2,7 @@ import { FacetMemberInterface } from "./FacetMemberInterface";
|
|
|
2
2
|
export declare const EXPERIMENTAL_METHOD_FACET: FacetMemberInterface;
|
|
3
3
|
export declare const RESOLUTION_FACET: FacetMemberInterface;
|
|
4
4
|
export declare const METHODOLOGY_FACET: FacetMemberInterface;
|
|
5
|
+
export declare const CHIMERIC_FACET: FacetMemberInterface;
|
|
5
6
|
export declare const RELEASE_DATE_FACET: FacetMemberInterface;
|
|
6
7
|
export declare const SCOP_FACET: FacetMemberInterface;
|
|
7
8
|
export declare const CATH_FACET: FacetMemberInterface;
|
|
@@ -36,4 +37,5 @@ export declare const SearchFacets: {
|
|
|
36
37
|
GO_COMPONENT_FACET: FacetMemberInterface;
|
|
37
38
|
LIGAND_OF_INTEREST_FACET: FacetMemberInterface;
|
|
38
39
|
METHODOLOGY_FACET: FacetMemberInterface;
|
|
40
|
+
CHIMERIC_FACET: FacetMemberInterface;
|
|
39
41
|
};
|