@rcsb/rcsb-saguaro-app 3.3.0 → 4.0.0-interfaces.3

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/CHANGELOG.md CHANGED
@@ -2,11 +2,34 @@
2
2
 
3
3
  [Semantic Versioning](https://semver.org/)
4
4
 
5
+ ## [4.0.0-interfaces] - 2021-12-15
6
+ ### Annotation collector improvements
7
+ - CollectAnnotationsInterface added method for generating new annotations internally (not exposed)
8
+ - `annotationGenerator?(annotations: Array<AnnotationFeatures>)` generates new annotations from the collected ones
9
+ - `annotationFilter?(annotations: Array<AnnotationFeatures>)` filter the collected annotations
10
+ - Both method are called before annotations processing and thus, they should be configured in `RcsbAnnotationConfig.ac.json` or equivalent config
11
+ - Checking content before adding generated features
12
+
13
+ ## [4.0.0-master] - 2021-12-07
14
+ ### Breaking change
15
+ - `ExternalTrackBuilderInterface` methods return a promise and are executed asynchronous
16
+
17
+ ## [3.4.0] - 2021-12-07
18
+ ### UI improvements
19
+ - Exposed methods for creating dropdown menus. Class `RcsbFvUI` static methods
20
+ - `createSelectButton` creates a select dropdown menu
21
+ - `addSelectButton` adds a second menu. Only an additional button can be created (replaced if a new one is created)
22
+ - `clearSelectButton` clear all menus
23
+
5
24
  ## [3.3.0] - 2021-11-30
6
25
  ### Annotations configuration improvements
7
26
  - Removed interface `CollectAnnotationsInterface` attribute `addTargetInTitle`
8
27
  - Added `titleSuffix` and `trackTitle` attributes to `CollectAnnotationsInterface`
9
28
  - These new attributes are defined as async functions (ann: AnnotationFeatures, d: Feature) => Promise<string|undefined> to provide or modify track titles based on the features content
29
+ - New `RcsbFvInterface` module
30
+ - Interface `InstanceSequenceConfig` provides a new attribute `module` to choose between the `RcsbFvInstance` or RcsbFvInterface` modules
31
+ - New classes to collect and translate instance/interface ids relationships from data api
32
+ - `RcsbQueryInterfaceInstances`, `InterfaceInstanceCollector` and `InterfaceInstanceTranslate`
10
33
 
11
34
  ## [3.2.1] - 2021-11-10
12
35
  ### Minor configuration
@@ -18,8 +41,8 @@
18
41
 
19
42
  ## [3.1.0] - 2021-10-27
20
43
  ### External track builder improvements
21
- - `ExternalTrackBuilderInterface` available through `RcsbFvAdditionalConfig` for all `RcsbFvBuilder` types.
22
- In addition, it includes the query context as additional parameter for processing and addition methods.
44
+ - `ExternalTrackBuilderInterface` available through `RcsbFvAdditionalConfig` for all `RcsbFvBuilder` types
45
+ In addition, it includes the query context as additional parameter for processing and addition methods
23
46
  - `processAlignmentAndFeatures` includes the query context as part of the input parameters
24
47
  - `addTo` includes the query context as part of the input parameters
25
48
  - `filterFeatures` new method for filtering positional features
package/README.md CHANGED
@@ -8,7 +8,7 @@ Feature Summaries. The package allows access to RCSB Saguaro methods to add or c
8
8
  <!---
9
9
  <div id="pfvSelect" ></div>
10
10
  <div id="pfv" ></div>
11
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@rcsb/rcsb-saguaro-app@3.2.1/build/dist/app.js"></script>
11
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/@rcsb/rcsb-saguaro-app@3.4.0/build/dist/app.js"></script>
12
12
  <script type="text/javascript">
13
13
  RcsbFvWebApp.buildInstanceFv("pfv", "4Z35.A", {
14
14
  boardConfig:{
@@ -23,7 +23,7 @@ RcsbFvWebApp.buildInstanceFv("pfv", "4Z35.A", {
23
23
  `npm install @rcsb/rcsb-saguaro-app`
24
24
 
25
25
  ### CDN JavaScript
26
- `<script src="https://cdn.jsdelivr.net/npm/@rcsb/rcsb-saguaro-app@3.2.1/build/dist/app.js" type="text/javascript"></script>`
26
+ `<script src="https://cdn.jsdelivr.net/npm/@rcsb/rcsb-saguaro-app@3.4.0/build/dist/app.js" type="text/javascript"></script>`
27
27
 
28
28
  ### JavaScript Examples
29
29
  * [PDB Instance Chain View](https://rcsb.github.io/rcsb-saguaro-app/examples/instance.html)
@@ -21,7 +21,7 @@ export declare class RcsbAnnotationConfig {
21
21
  uniprotOrder(): Array<string>;
22
22
  instanceOrder(): Array<string>;
23
23
  entityOrder(): Array<string>;
24
- buildAndAddType(d: Feature, mainTitle?: string, titleSuffix?: string): string;
24
+ buildAndAddType(d: Feature, mainTitle?: string, titleSuffix?: string, typeSuffix?: string): string;
25
25
  private addNewType;
26
26
  sortAndIncludeNewTypes(): void;
27
27
  private checkAndIncludeNewType;
@@ -3,6 +3,7 @@ import { RcsbFvRowConfigInterface } from "@rcsb/rcsb-saguaro";
3
3
  import { AnnotationFeatures, Feature, QueryAnnotationsArgs } from "@rcsb/rcsb-api-tools/build/RcsbGraphQL/Types/Borrego/GqlTypes";
4
4
  import { AnnotationTrack, FeaturePositionGaps } from "./AnnotationTrack";
5
5
  import { ExternalTrackBuilderInterface } from "../FeatureTools/ExternalTrackBuilderInterface";
6
+ import { PolymerEntityInstanceInterface } from "../Translators/PolymerEntityInstancesCollector";
6
7
  export declare type IncreaseAnnotationValueType = (feature: {
7
8
  type: string;
8
9
  targetId: string;
@@ -15,14 +16,16 @@ export interface AnnotationProcessingInterface {
15
16
  computeAnnotationValue?: (annotationTracks: Map<string, AnnotationTrack>) => void;
16
17
  addTrackElementCallback?: IncreaseAnnotationValueType;
17
18
  }
18
- interface CommonAnnotationInterface {
19
+ export interface CollectAnnotationsInterface extends QueryAnnotationsArgs {
20
+ collectSwissModel?: boolean;
21
+ rcsbContext?: Partial<PolymerEntityInstanceInterface>;
19
22
  annotationProcessing?: AnnotationProcessingInterface;
20
23
  externalAnnotationTrackBuilder?: ExternalTrackBuilderInterface;
21
- }
22
- export interface CollectAnnotationsInterface extends QueryAnnotationsArgs, CommonAnnotationInterface {
23
- collectSwissModel?: boolean;
24
+ annotationGenerator?(annotations: Array<AnnotationFeatures>): Promise<Array<AnnotationFeatures>>;
25
+ annotationFilter?(annotations: Array<AnnotationFeatures>): Promise<Array<AnnotationFeatures>>;
24
26
  titleSuffix?(ann: AnnotationFeatures, d: Feature): Promise<string | undefined>;
25
27
  trackTitle?(ann: AnnotationFeatures, d: Feature): Promise<string | undefined>;
28
+ typeSuffix?(ann: AnnotationFeatures, d: Feature): Promise<string | undefined>;
26
29
  }
27
30
  export declare type AnnotationCollectConfig = Partial<CollectAnnotationsInterface>;
28
31
  export interface AnnotationCollectorInterface extends CoreCollectorInterface {
@@ -31,4 +34,3 @@ export interface AnnotationCollectorInterface extends CoreCollectorInterface {
31
34
  getAnnotationFeatures(): Promise<Array<AnnotationFeatures>>;
32
35
  getFeatures(): Promise<Array<Feature>>;
33
36
  }
34
- export {};
@@ -7,12 +7,18 @@ export interface ExternalTrackBuilderInterface {
7
7
  annotations?: Array<AnnotationFeatures>;
8
8
  alignments?: AlignmentResponse;
9
9
  rcsbContext?: Partial<PolymerEntityInstanceInterface>;
10
- }): void;
11
- filterAlignments?(alignments: AlignmentResponse): AlignmentResponse;
12
- filterFeatures?(annotations: Array<AnnotationFeatures>): Array<AnnotationFeatures>;
10
+ }): Promise<void>;
11
+ filterAlignments?(data: {
12
+ alignments: AlignmentResponse;
13
+ rcsbContext?: Partial<PolymerEntityInstanceInterface>;
14
+ }): Promise<AlignmentResponse>;
15
+ filterFeatures?(data: {
16
+ annotations: Array<AnnotationFeatures>;
17
+ rcsbContext?: Partial<PolymerEntityInstanceInterface>;
18
+ }): Promise<Array<AnnotationFeatures>>;
13
19
  addTo?(tracks: {
14
20
  alignmentTracks?: SequenceCollectorDataInterface;
15
21
  annotationTracks?: Array<RcsbFvRowConfigInterface>;
16
22
  rcsbContext?: Partial<PolymerEntityInstanceInterface>;
17
- }): void;
23
+ }): Promise<void>;
18
24
  }
@@ -0,0 +1,12 @@
1
+ import { QueryInterfacesArgs } from "@rcsb/rcsb-api-tools/build/RcsbGraphQL/Types/Yosemite/GqlTypes";
2
+ export interface InterfaceInstanceInterface {
3
+ rcsbId: string;
4
+ assemblyId: string;
5
+ interfaceId: string;
6
+ asymIds: [string, string];
7
+ operatorIds: [Array<Array<string>>, Array<Array<string>>];
8
+ }
9
+ export declare class InterfaceInstanceCollector {
10
+ private readonly rcsbFvQuery;
11
+ collect(requestConfig: QueryInterfacesArgs): Promise<Array<InterfaceInstanceInterface>>;
12
+ }
@@ -2,11 +2,13 @@ import { RcsbFv, RcsbFvBoardConfigInterface } from "@rcsb/rcsb-saguaro";
2
2
  import { PolymerEntityInstanceTranslate } from "../../RcsbUtils/PolymerEntityInstanceTranslate";
3
3
  import { EntryAssemblyTranslate } from "../../RcsbUtils/EntryAssemblyTranslate";
4
4
  import { PolymerEntityChromosomeTranslate } from "../../RcsbUtils/PolymerEntityChromosomeTranslate";
5
+ import { InterfaceInstanceTranslate } from "../../RcsbUtils/InterfaceInstanceTranslate";
5
6
  declare class RcsbFvContextManager {
6
7
  private rcsbFvManager;
7
8
  private rcsbButtonManager;
8
9
  private polymerEntityToInstanceMap;
9
10
  private entryToAssemblyMap;
11
+ private interfaceToInstanceMap;
10
12
  getFv(elementFvId: string, boardConfig?: Partial<RcsbFvBoardConfigInterface>): RcsbFv;
11
13
  hasFv(elementFvId: string): boolean;
12
14
  private setFv;
@@ -18,6 +20,7 @@ declare class RcsbFvContextManager {
18
20
  getEntityToInstance(entryId: string): Promise<PolymerEntityInstanceTranslate>;
19
21
  getEntryToAssembly(entryId: string): Promise<EntryAssemblyTranslate>;
20
22
  getEntityToChromosome(entityIds: Array<string>): Promise<PolymerEntityChromosomeTranslate>;
23
+ getInterfaceToInstance(interfaceId: string): Promise<InterfaceInstanceTranslate>;
21
24
  }
22
25
  export declare const rcsbFvCtxManager: RcsbFvContextManager;
23
26
  export {};
@@ -9,17 +9,21 @@ export interface InstanceSequenceOnchangeInterface {
9
9
  authId: string;
10
10
  asymId: string;
11
11
  }
12
+ declare type instanceModule = "interface" | "instance";
12
13
  export interface InstanceSequenceConfig {
13
14
  dropdownTitle?: string;
14
15
  defaultValue?: string | undefined | null;
16
+ beforeRenderCallback?: (x: InstanceSequenceOnchangeInterface) => void;
15
17
  onChangeCallback?: (x: InstanceSequenceOnchangeInterface) => void;
16
18
  filterInstances?: Set<string>;
17
19
  displayAuthId?: boolean;
18
20
  selectButtonOptionProps?: (props: OptionProps<OptionPropsInterface>) => JSX.Element;
21
+ module?: instanceModule;
19
22
  }
20
23
  export declare class RcsbFvInstanceBuilder {
21
24
  static buildMultipleInstanceSequenceFv(elementFvId: string, elementEntrySelectId: string, elementInstanceSelectId: string, entryIdList: Array<string>, config: InstanceSequenceConfig, additionalConfig?: RcsbFvAdditionalConfig): Promise<RcsbFvModulePublicInterface>;
22
25
  static buildInstanceSequenceFv(elementFvId: string, elementSelectId: string, entryId: string, config: InstanceSequenceConfig, additionalConfig?: RcsbFvAdditionalConfig): Promise<RcsbFvModulePublicInterface>;
23
26
  static buildSelectorInstanceFv(instanceList: Array<PolymerEntityInstanceInterface>, elementFvId: string, elementSelectId: string, entryId: string, config: InstanceSequenceConfig, additionalConfig?: RcsbFvAdditionalConfig): Promise<RcsbFvModulePublicInterface>;
24
- static buildInstanceFv(elementId: string, instanceId: string, additionalConfig?: RcsbFvAdditionalConfig, rcsbContext?: PolymerEntityInstanceInterface): Promise<RcsbFvModulePublicInterface>;
27
+ static buildInstanceFv(elementId: string, instanceId: string, additionalConfig?: RcsbFvAdditionalConfig, rcsbContext?: PolymerEntityInstanceInterface, module?: instanceModule): Promise<RcsbFvModulePublicInterface>;
25
28
  }
29
+ export {};
@@ -0,0 +1,12 @@
1
+ import { RcsbFvAbstractModule } from "./RcsbFvAbstractModule";
2
+ import { RcsbFvModuleBuildInterface } from "./RcsbFvModuleInterface";
3
+ import { AnnotationCollectorInterface } from "../../RcsbCollectTools/AnnotationCollector/AnnotationCollectorInterface";
4
+ export declare class RcsbFvInterface extends RcsbFvAbstractModule {
5
+ protected readonly annotationCollector: AnnotationCollectorInterface;
6
+ private instanceId;
7
+ protected protectedBuild(buildConfig: RcsbFvModuleBuildInterface): Promise<void>;
8
+ protected concatAlignmentAndAnnotationTracks(buildConfig: RcsbFvModuleBuildInterface): void;
9
+ private typeSuffix;
10
+ private titleSuffix;
11
+ private trackTitle;
12
+ }
@@ -13,6 +13,7 @@ export interface SelectOptionInterface {
13
13
  onChange: () => void;
14
14
  }
15
15
  interface SelectButtonInterface {
16
+ elementId: string;
16
17
  options?: Array<SelectOptionInterface> | Array<GroupedOptionsInterface>;
17
18
  additionalOptions?: Array<SelectOptionInterface>;
18
19
  addTitle: boolean;
@@ -20,6 +21,7 @@ interface SelectButtonInterface {
20
21
  width?: number;
21
22
  dropdownTitle?: string;
22
23
  optionProps?: (props: OptionProps<OptionPropsInterface>) => JSX.Element;
24
+ isAdditionalButton?: boolean;
23
25
  }
24
26
  export interface OptionPropsInterface extends SelectOptionInterface {
25
27
  value: number;
@@ -28,6 +30,7 @@ interface SelectButtonState {
28
30
  selectedOption: OptionPropsInterface;
29
31
  }
30
32
  export declare class SelectButton extends React.Component<SelectButtonInterface, SelectButtonState> {
33
+ static readonly BUTTON_CONTAINER_DIV_SUFFIX = "_buttonContainerDiv";
31
34
  private defaultValue;
32
35
  readonly state: SelectButtonState;
33
36
  constructor(props: SelectButtonInterface);
@@ -38,6 +41,7 @@ export declare class SelectButton extends React.Component<SelectButtonInterface,
38
41
  private selectRender;
39
42
  private titleRender;
40
43
  private selectButtonRender;
44
+ private innerSelectButtonRender;
41
45
  private configStyle;
42
46
  private getSelectOpt;
43
47
  }
@@ -7,6 +7,7 @@ export interface SelectButtonConfigInterface {
7
7
  width?: number;
8
8
  dropdownTitle?: string;
9
9
  optionProps?: (props: OptionProps<OptionPropsInterface>) => JSX.Element;
10
+ isAdditionalButton?: boolean;
10
11
  }
11
12
  export declare class WebToolsManager {
12
13
  private static suffix;
@@ -1,14 +1,16 @@
1
1
  import { AlignmentResponse, AnnotationFeatures, QueryAlignmentArgs, QueryAnnotationsArgs } from "@rcsb/rcsb-api-tools/build/RcsbGraphQL/Types/Borrego/GqlTypes";
2
- import { CoreEntry, CorePolymerEntity, QueryEntriesArgs, QueryEntryArgs, QueryPolymer_EntitiesArgs } from "@rcsb/rcsb-api-tools/build/RcsbGraphQL/Types/Yosemite/GqlTypes";
2
+ import { CoreEntry, CoreInterface, CorePolymerEntity, QueryEntriesArgs, QueryEntryArgs, QueryInterfacesArgs, QueryPolymer_EntitiesArgs } from "@rcsb/rcsb-api-tools/build/RcsbGraphQL/Types/Yosemite/GqlTypes";
3
3
  export declare class RcsbClient {
4
4
  private rcsbQueryAnnotations;
5
5
  private rcsbQueryAlignment;
6
6
  private rcsbQueryEntityInstances;
7
7
  private rcsbQueryMutipleEntityInstances;
8
8
  private rcsbQueryEntryProperties;
9
+ private rcsbQueryInterfaceInstances;
9
10
  requestRcsbPdbAnnotations(requestConfig: QueryAnnotationsArgs): Promise<Array<AnnotationFeatures>>;
10
11
  requestAlignment(requestConfig: QueryAlignmentArgs): Promise<AlignmentResponse>;
11
12
  requestEntityInstances(requestConfig: QueryEntryArgs): Promise<CoreEntry>;
12
13
  requestMultipleEntityInstances(requestConfig: QueryPolymer_EntitiesArgs): Promise<Array<CorePolymerEntity>>;
13
14
  requestMultipleEntriesProperties(requestConfig: QueryEntriesArgs): Promise<Array<CoreEntry>>;
15
+ requestInterfaceInstances(requestConfig: QueryInterfacesArgs): Promise<Array<CoreInterface>>;
14
16
  }
@@ -0,0 +1,7 @@
1
+ import { RcsbCoreQueryInterface } from "./RcsbCoreQueryInterface";
2
+ import { CoreInterface, QueryInterfacesArgs } from "@rcsb/rcsb-api-tools/build/RcsbGraphQL/Types/Yosemite/GqlTypes";
3
+ import { GraphQLRequest } from "@rcsb/rcsb-api-tools/build/RcsbGraphQL/GraphQLRequest";
4
+ export declare class RcsbQueryInterfaceInstances implements RcsbCoreQueryInterface<QueryInterfacesArgs, Array<CoreInterface>> {
5
+ readonly client: GraphQLRequest;
6
+ request(requestConfig: QueryInterfacesArgs): Promise<Array<CoreInterface>>;
7
+ }
@@ -0,0 +1,9 @@
1
+ import { InterfaceInstanceInterface } from "../RcsbCollectTools/Translators/InterfaceInstanceCollector";
2
+ export declare class InterfaceInstanceTranslate {
3
+ private readonly rawData;
4
+ private readonly instances;
5
+ private readonly operatorsIds;
6
+ constructor(data: Array<InterfaceInstanceInterface>);
7
+ getInstances(rcsbId: string): [string, string];
8
+ getOperatorIds(rcsbId: string): [Array<Array<string>>, Array<Array<string>>];
9
+ }
@@ -1 +1,12 @@
1
+ import { GroupedOptionsInterface, SelectOptionInterface } from "./RcsbFvWeb/WebTools/SelectButton";
1
2
  export { buildEntryChromosome, buildFullChromosome, buildEntityChromosome, buildChromosome, buildEntityFv, buildEntitySummaryFv, buildSingleEntitySummaryFv, buildInstanceFv, buildInstanceSequenceFv, buildMultipleInstanceSequenceFv, buildAssemblySequenceFv, buildPairwiseAlignment, buildPfv, buildMultipleAlignmentSequenceFv, buildUniprotEntityFv, buildUniprotEntityInstanceFv, buildUniprotFv, unmount } from "./RcsbFvWeb/RcsbFvBuilder";
3
+ import { SelectButtonConfigInterface } from "./RcsbFvWeb/WebTools/WebToolsManager";
4
+ import { InterfaceInstanceTranslate } from "./RcsbUtils/InterfaceInstanceTranslate";
5
+ export declare class RcsbFvUI {
6
+ static clearSelectButton(elementFvId: string, selectButtonId: string): void;
7
+ static createSelectButton(elementFvId: string, selectButtonId: string, options: Array<SelectOptionInterface> | Array<GroupedOptionsInterface>, config?: SelectButtonConfigInterface): void;
8
+ static addSelectButton(elementFvId: string, selectButtonId: string, options: Array<SelectOptionInterface>, config?: SelectButtonConfigInterface): void;
9
+ }
10
+ export declare class RcsbFvContextManager {
11
+ static getInterfaceToInstance(interfaceId: string): Promise<InterfaceInstanceTranslate>;
12
+ }