From 8cac5c5ae4d555002c1c9a0d3c150fc58c7e03d8 Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Mon, 9 Oct 2023 11:15:39 -0600 Subject: [PATCH 01/24] Initial DF definition --- python/local/AntibodyStructurePrediction.yaml | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 python/local/AntibodyStructurePrediction.yaml diff --git a/python/local/AntibodyStructurePrediction.yaml b/python/local/AntibodyStructurePrediction.yaml new file mode 100644 index 0000000..d83a669 --- /dev/null +++ b/python/local/AntibodyStructurePrediction.yaml @@ -0,0 +1,83 @@ +id: 80353f4b-c5e1-4fd2-d019-25199ef1239e +name: Antibody Structure Prediction +description: Predict antibody 3D structure given heavy and light chain sequences. +category: Biopolymer +version: 1.0.0 +serviceName: Script +serviceUri: glysade.python +executorId: Glysade.CPythonDataFxn +inputFields: +- control: + id: heavyChain + label: Select column with heavy chain sequence + type: columnselect + multi: !!bool false + validationRules: + - type: required + message: '' + request: + id: heavyChain + dataType: string + selectorType: column +- control: + id: lightChain + label: Select column with light chain sequence + type: columnselect + multi: !!bool false + validationRules: + - type: required + message: '' + request: + id: lightChain + dataType: string + selectorType: column +- control: + id: outputDirectory + label: Specify output directory + type: file + fileTypes: + - extension: .smi + contentType: chemical/x-smiles + name: SMILES (*.smi) + - extension: .sdf + contentType: chemical/x-mdl-sdfile + name: SD file (*.sdf) + - extension: .mol + contentType: chemical/x-mdl-molfile + name: MOL file (*.mol) + - extension: .pdb + contentType: chemical/x-pdb + name: Protein Data Bank (*.pdb) + mode: path + pathType: folder + validationRules: + - type: required + message: '' + request: + id: outputDirectory + dataType: string +tags: +- color: '#dddddd' + text: MAB +updateBehavior: automatic +maximumOutputColumns: !!int 1 +maximumOutputTables: !!int 0 +chemistryFunction: !!bool false +allowedClients: +- Analyst +- WebPlayer +demoUrl: +limitBy: none +minimumChartsVersion: +confirmSubmit: +script: + from ImmuneBuilder import ABodyBuilder2 + predictor = ABodyBuilder2() + + output_file = "c:\Temp\my_antibody.pdb" + sequences = { + 'H': 'EVQLVESGGGVVQPGGSLRLSCAASGFTFNSYGMHWVRQAPGKGLEWVAFIRYDGGNKYYADSVKGRFTISRDNSKNTLYLQMKSLRAEDTAVYYCANLKDSRYSGSYYDYWGQGTLVTVS', + 'L': 'VIWMTQSPSSLSASVGDRVTITCQASQDIRFYLNWYQQKPGKAPKLLISDASNMETGVPSRFSGSGSGTDFTFTISSLQPEDIATYYCQQYDNLPFTFGPGTKVDFK'} + + antibody = predictor.predict(sequences) + antibody.save(output_file) From f28b21735d0b434cf8de6d8d599bb2bc06435a0c Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Mon, 9 Oct 2023 13:51:11 -0600 Subject: [PATCH 02/24] Functionalize python script --- python/local/AntibodyStructurePrediction.yaml | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/python/local/AntibodyStructurePrediction.yaml b/python/local/AntibodyStructurePrediction.yaml index d83a669..b7c328d 100644 --- a/python/local/AntibodyStructurePrediction.yaml +++ b/python/local/AntibodyStructurePrediction.yaml @@ -70,14 +70,18 @@ demoUrl: limitBy: none minimumChartsVersion: confirmSubmit: -script: +script: | from ImmuneBuilder import ABodyBuilder2 - predictor = ABodyBuilder2() + + def execute(request: DataFunctionRequest) -> DataFunctionResponse: + predictor = ABodyBuilder2() - output_file = "c:\Temp\my_antibody.pdb" - sequences = { - 'H': 'EVQLVESGGGVVQPGGSLRLSCAASGFTFNSYGMHWVRQAPGKGLEWVAFIRYDGGNKYYADSVKGRFTISRDNSKNTLYLQMKSLRAEDTAVYYCANLKDSRYSGSYYDYWGQGTLVTVS', - 'L': 'VIWMTQSPSSLSASVGDRVTITCQASQDIRFYLNWYQQKPGKAPKLLISDASNMETGVPSRFSGSGSGTDFTFTISSLQPEDIATYYCQQYDNLPFTFGPGTKVDFK'} + output_file = "c:\Temp\my_antibody.pdb" + sequences = { + 'H': 'EVQLVESGGGVVQPGGSLRLSCAASGFTFNSYGMHWVRQAPGKGLEWVAFIRYDGGNKYYADSVKGRFTISRDNSKNTLYLQMKSLRAEDTAVYYCANLKDSRYSGSYYDYWGQGTLVTVS', + 'L': 'VIWMTQSPSSLSASVGDRVTITCQASQDIRFYLNWYQQKPGKAPKLLISDASNMETGVPSRFSGSGSGTDFTFTISSLQPEDIATYYCQQYDNLPFTFGPGTKVDFK'} - antibody = predictor.predict(sequences) - antibody.save(output_file) + antibody = predictor.predict(sequences) + antibody.save(output_file) + + return(DataFunctionResponse) From f1f1972ddc99ac6d8f27ad7f7d955837c5a3be95 Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Mon, 9 Oct 2023 15:18:30 -0600 Subject: [PATCH 03/24] Add df imports --- python/local/AntibodyStructurePrediction.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python/local/AntibodyStructurePrediction.yaml b/python/local/AntibodyStructurePrediction.yaml index b7c328d..acf6e79 100644 --- a/python/local/AntibodyStructurePrediction.yaml +++ b/python/local/AntibodyStructurePrediction.yaml @@ -71,6 +71,8 @@ limitBy: none minimumChartsVersion: confirmSubmit: script: | + from df.data_transfer import DataFunctionRequest, DataFunctionResponse + from ImmuneBuilder import ABodyBuilder2 def execute(request: DataFunctionRequest) -> DataFunctionResponse: From 2b655f71aa2b54af3f3a0afc762256d55bcde501 Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Mon, 9 Oct 2023 17:12:08 -0600 Subject: [PATCH 04/24] Remove script from DFxn definition --- python/local/AntibodyStructurePrediction.yaml | 21 ++----------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/python/local/AntibodyStructurePrediction.yaml b/python/local/AntibodyStructurePrediction.yaml index acf6e79..4eb902b 100644 --- a/python/local/AntibodyStructurePrediction.yaml +++ b/python/local/AntibodyStructurePrediction.yaml @@ -3,7 +3,7 @@ name: Antibody Structure Prediction description: Predict antibody 3D structure given heavy and light chain sequences. category: Biopolymer version: 1.0.0 -serviceName: Script +serviceName: AntibodyStructurePrediction serviceUri: glysade.python executorId: Glysade.CPythonDataFxn inputFields: @@ -69,21 +69,4 @@ allowedClients: demoUrl: limitBy: none minimumChartsVersion: -confirmSubmit: -script: | - from df.data_transfer import DataFunctionRequest, DataFunctionResponse - - from ImmuneBuilder import ABodyBuilder2 - - def execute(request: DataFunctionRequest) -> DataFunctionResponse: - predictor = ABodyBuilder2() - - output_file = "c:\Temp\my_antibody.pdb" - sequences = { - 'H': 'EVQLVESGGGVVQPGGSLRLSCAASGFTFNSYGMHWVRQAPGKGLEWVAFIRYDGGNKYYADSVKGRFTISRDNSKNTLYLQMKSLRAEDTAVYYCANLKDSRYSGSYYDYWGQGTLVTVS', - 'L': 'VIWMTQSPSSLSASVGDRVTITCQASQDIRFYLNWYQQKPGKAPKLLISDASNMETGVPSRFSGSGSGTDFTFTISSLQPEDIATYYCQQYDNLPFTFGPGTKVDFK'} - - antibody = predictor.predict(sequences) - antibody.save(output_file) - - return(DataFunctionResponse) +confirmSubmit: \ No newline at end of file From 52d4cfb7434ca1e1a4ae655caa5ccf74fdd3ba4a Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Tue, 10 Oct 2023 14:38:17 -0600 Subject: [PATCH 05/24] Add ID field and improvements to Antibody Structure Prediction DF --- python/local/AntibodyStructurePrediction.yaml | 37 ++++++++++++++++--- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/python/local/AntibodyStructurePrediction.yaml b/python/local/AntibodyStructurePrediction.yaml index 4eb902b..a51ae5e 100644 --- a/python/local/AntibodyStructurePrediction.yaml +++ b/python/local/AntibodyStructurePrediction.yaml @@ -3,7 +3,7 @@ name: Antibody Structure Prediction description: Predict antibody 3D structure given heavy and light chain sequences. category: Biopolymer version: 1.0.0 -serviceName: AntibodyStructurePrediction +serviceName: AntibodyStructurePrediction serviceUri: glysade.python executorId: Glysade.CPythonDataFxn inputFields: @@ -14,7 +14,11 @@ inputFields: multi: !!bool false validationRules: - type: required - message: '' + message: Select column containing heavy chain sequence + filters: + - dataType: string + contentType: + - chemical/x-sequence request: id: heavyChain dataType: string @@ -26,14 +30,33 @@ inputFields: multi: !!bool false validationRules: - type: required - message: '' + message: Select column containing light chain sequence + filters: + - dataType: string + contentType: + - chemical/x-sequence request: id: lightChain dataType: string selectorType: column +- control: + id: idColumn + label: ID column + type: columnselect + multi: !!bool false + validationRules: + - type: required + message: Specify a column with unique IDs + filters: + - dataType: string + contentType: [] + request: + id: idColumn + dataType: string + selectorType: column - control: id: outputDirectory - label: Specify output directory + label: Output directory type: file fileTypes: - extension: .smi @@ -52,13 +75,15 @@ inputFields: pathType: folder validationRules: - type: required - message: '' + message: Specify an output directory for the predicted structures request: id: outputDirectory dataType: string tags: - color: '#dddddd' text: MAB +- color: '#FE92C0' + text: structure updateBehavior: automatic maximumOutputColumns: !!int 1 maximumOutputTables: !!int 0 @@ -69,4 +94,4 @@ allowedClients: demoUrl: limitBy: none minimumChartsVersion: -confirmSubmit: \ No newline at end of file +confirmSubmit: From f37178a121c6479f8a2176b88a256e17c13e40e9 Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Tue, 10 Oct 2023 16:56:52 -0600 Subject: [PATCH 06/24] Add IronPython script to configure Biomolecule Viewer --- python/local/AntibodyStructurePrediction.yaml | 54 ++++++++++++++++++- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/python/local/AntibodyStructurePrediction.yaml b/python/local/AntibodyStructurePrediction.yaml index a51ae5e..f89bec8 100644 --- a/python/local/AntibodyStructurePrediction.yaml +++ b/python/local/AntibodyStructurePrediction.yaml @@ -1,4 +1,4 @@ -id: 80353f4b-c5e1-4fd2-d019-25199ef1239e +id: db2af994-2c2e-c6aa-4495-e4bdce0d8edb name: Antibody Structure Prediction description: Predict antibody 3D structure given heavy and light chain sequences. category: Biopolymer @@ -82,7 +82,7 @@ inputFields: tags: - color: '#dddddd' text: MAB -- color: '#FE92C0' +- color: '#D22A2A' text: structure updateBehavior: automatic maximumOutputColumns: !!int 1 @@ -95,3 +95,53 @@ demoUrl: limitBy: none minimumChartsVersion: confirmSubmit: +ironPython: | + #################################################### + # Copyright 2023 Glysade LLC, All Rights Reserved # + #################################################### + + import sys,clr + from Spotfire.Dxp.Data import DataTable, DataManager + from Spotfire.Dxp.Application import PanelTypeIdentifiers + from Spotfire.Dxp.Application import Panel + import Spotfire.Dxp.Application.PanelCollection + + from System import AppDomain + for asm in AppDomain.CurrentDomain.GetAssemblies(): + if asm.GetName().Name == 'Charts': + clr.AddReference(asm.FullName) + + from Charts import ChartsModel + model_type = ChartsModel + + #tableId pass in args + dataTable = InputTables[0] + + if not dataTable: + raise Exception('target table not found') + + page = Document.Pages.AddNew('Antibody Structure Prediction Results') + panelsToHide = [PanelTypeIdentifiers.DataPanel, PanelTypeIdentifiers.DetailsOnDemandPanel] + + for panel in page.Panels: + if panel.TypeId in panelsToHide: + if panel.Visible: + panel.Visible = False + + filteringScheme = Document.FilteringSchemes[0] + page.FilterPanel.FilteringSchemeReference = filteringScheme + + tableVis = page.Visuals.AddNew[model_type]() + tableVis.SetKeyValue('visualization','table-visualization') + tableVis.DataTable = dataTable + tableVis.ConfigureColumns() + tableVis.Marking = Document.Data.Markings.DefaultMarkingReference + + threeDVis = page.Visuals.AddNew[model_type]() + threeDVis.SetKeyValue('visualization','molviewer-visualization') + threeDVis.DataTable = dataTable + threeDVis.ConfigureColumns() + threeDVis.Marking = Document.Data.Markings.DefaultMarkingReference + + tableVis.SetActiveVisual() + page.AutoConfigure() From b68b29cefaab0819f20ee0a5eb4c58efa851798b Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Wed, 11 Oct 2023 11:06:25 -0600 Subject: [PATCH 07/24] Change molviewer to biomolviewer --- python/local/AntibodyStructurePrediction.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/local/AntibodyStructurePrediction.yaml b/python/local/AntibodyStructurePrediction.yaml index f89bec8..783c302 100644 --- a/python/local/AntibodyStructurePrediction.yaml +++ b/python/local/AntibodyStructurePrediction.yaml @@ -138,7 +138,7 @@ ironPython: | tableVis.Marking = Document.Data.Markings.DefaultMarkingReference threeDVis = page.Visuals.AddNew[model_type]() - threeDVis.SetKeyValue('visualization','molviewer-visualization') + threeDVis.SetKeyValue('visualization','biomolviewer-visualization') threeDVis.DataTable = dataTable threeDVis.ConfigureColumns() threeDVis.Marking = Document.Data.Markings.DefaultMarkingReference From e57bb775b2c689d904239d4bdcb99d44c93dda8d Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Tue, 24 Oct 2023 10:56:38 -0600 Subject: [PATCH 08/24] Color option for Sequence Region Annotation --- csharp/local/SequenceRegionAnnotation.yaml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/csharp/local/SequenceRegionAnnotation.yaml b/csharp/local/SequenceRegionAnnotation.yaml index bb5c9d6..ec47d60 100644 --- a/csharp/local/SequenceRegionAnnotation.yaml +++ b/csharp/local/SequenceRegionAnnotation.yaml @@ -79,6 +79,14 @@ inputFields: request: id: end dataType: integer +- control: + id: uictrlColor + label: Select color + type: color + request: + id: uictrlColor + dataType: string + data: '#afc9e1' tags: - color: '#337abc' text: sequence @@ -109,10 +117,14 @@ outputFields: name: Region end location source: inputField type: default +- id: uictrlColor + name: Color + source: inputField + type: color allowedClients: - Analyst - WebPlayer demoUrl: limitBy: none -minimumChartsVersion: 4.4.0.0 -confirmSubmit: \ No newline at end of file +minimumChartsVersion: 4.4.0.0 +confirmSubmit: From 9060d2bfa678883b12dbc5cafa00ac4e644d6f74 Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Tue, 24 Oct 2023 11:27:39 -0600 Subject: [PATCH 09/24] Add color option to Ab Seq Liab and Seq Motif Search --- csharp/local/AntibodySequenceLiabilities.yaml | 17 ++++++++++++-- csharp/local/SequenceMotifSearch.yaml | 23 +++++++++++++++---- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/csharp/local/AntibodySequenceLiabilities.yaml b/csharp/local/AntibodySequenceLiabilities.yaml index c838ca4..024f4bf 100644 --- a/csharp/local/AntibodySequenceLiabilities.yaml +++ b/csharp/local/AntibodySequenceLiabilities.yaml @@ -70,18 +70,31 @@ inputFields: - N-glycosylation,N[^P][TS] - N-terminal Glutamic Acid,^E - Oxidation,[MW] +- control: + id: ctrlColor + label: Select color + type: color + request: + id: ctrlColor + dataType: string + data: '#ff0000' assembly: PublisherCore tags: - color: '#dddddd' text: MAB +- color: '#AFC9E1' + text: annotation - color: '#337abc' text: sequence -- color: '#f1f72d' - text: filter updateBehavior: automatic maximumOutputColumns: !!int 10 maximumOutputTables: !!int 0 chemistryFunction: !!bool false +outputFields: +- id: ctrlColor + name: Color + source: inputField + type: color allowedClients: - Analyst - WebPlayer diff --git a/csharp/local/SequenceMotifSearch.yaml b/csharp/local/SequenceMotifSearch.yaml index 1b7d6c4..6975d6d 100644 --- a/csharp/local/SequenceMotifSearch.yaml +++ b/csharp/local/SequenceMotifSearch.yaml @@ -29,7 +29,7 @@ inputFields: type: text validationRules: - type: required - message: 'Enter a name for the output boolean column.' + message: Enter a name for the output boolean column. request: id: columnName dataType: string @@ -39,7 +39,7 @@ inputFields: type: text validationRules: - type: required - message: 'Enter a name to be used in annotating the motif.' + message: Enter a name to be used in annotating the motif. request: id: featureName dataType: string @@ -50,19 +50,32 @@ inputFields: rows: !!int 1 validationRules: - type: required - message: 'A query sequence or regular expression must be entered.' + message: A query sequence or regular expression must be entered. request: id: expression dataType: string +- control: + id: ctrlColor + label: Select color + type: color + request: + id: ctrlColor + dataType: string + data: '#ffa500' tags: +- color: '#AFC9E1' + text: annotation - color: '#337abc' text: sequence -- color: '#f1f72d' - text: filter updateBehavior: automatic maximumOutputColumns: !!int 2 maximumOutputTables: !!int 0 chemistryFunction: !!bool false +outputFields: +- id: ctrlColor + name: Color + source: inputField + type: color allowedClients: - Analyst - WebPlayer From 3f1783a9ab200f6c03651089c76c6dc60fc79491 Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Tue, 24 Oct 2023 11:37:34 -0600 Subject: [PATCH 10/24] Remove outputFileds (rely on defaults) --- csharp/local/AntibodySequenceLiabilities.yaml | 5 ----- csharp/local/SequenceMotifSearch.yaml | 5 ----- 2 files changed, 10 deletions(-) diff --git a/csharp/local/AntibodySequenceLiabilities.yaml b/csharp/local/AntibodySequenceLiabilities.yaml index 024f4bf..93a6023 100644 --- a/csharp/local/AntibodySequenceLiabilities.yaml +++ b/csharp/local/AntibodySequenceLiabilities.yaml @@ -90,11 +90,6 @@ updateBehavior: automatic maximumOutputColumns: !!int 10 maximumOutputTables: !!int 0 chemistryFunction: !!bool false -outputFields: -- id: ctrlColor - name: Color - source: inputField - type: color allowedClients: - Analyst - WebPlayer diff --git a/csharp/local/SequenceMotifSearch.yaml b/csharp/local/SequenceMotifSearch.yaml index 6975d6d..54a4b1d 100644 --- a/csharp/local/SequenceMotifSearch.yaml +++ b/csharp/local/SequenceMotifSearch.yaml @@ -71,11 +71,6 @@ updateBehavior: automatic maximumOutputColumns: !!int 2 maximumOutputTables: !!int 0 chemistryFunction: !!bool false -outputFields: -- id: ctrlColor - name: Color - source: inputField - type: color allowedClients: - Analyst - WebPlayer From 8fc4df4fe88a5c824dafe25048f6a8ae7902ca36 Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Tue, 24 Oct 2023 11:45:49 -0600 Subject: [PATCH 11/24] Bump version numbers; rename input field in Ab Seq Liab --- csharp/local/AntibodySequenceLiabilities.yaml | 4 ++-- csharp/local/SequenceMotifSearch.yaml | 2 +- csharp/local/SequenceRegionAnnotation.yaml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/csharp/local/AntibodySequenceLiabilities.yaml b/csharp/local/AntibodySequenceLiabilities.yaml index 93a6023..01bbfc2 100644 --- a/csharp/local/AntibodySequenceLiabilities.yaml +++ b/csharp/local/AntibodySequenceLiabilities.yaml @@ -2,7 +2,7 @@ id: 01010160-093b-55c7-746b-8a3c148111b7 name: Antibody Sequence Liabilities description: Create a set of boolean columns indicating the presence or absence of predefined antibody sequence liabilities. A column illustrating the sequence and the identified liability locations is also created. category: Biopolymer -version: 1.0.1 +version: 1.1.0 serviceName: AntibodySequenceLiabilities serviceUri: glysade.csharp executorId: Glysade.CSharpDataFxn @@ -36,7 +36,7 @@ inputFields: data: Annotated Liabilities - control: id: patterns - label: Match patterns + label: Sequence liabilities type: select multi: !!bool true options: diff --git a/csharp/local/SequenceMotifSearch.yaml b/csharp/local/SequenceMotifSearch.yaml index 54a4b1d..1ff6b6b 100644 --- a/csharp/local/SequenceMotifSearch.yaml +++ b/csharp/local/SequenceMotifSearch.yaml @@ -2,7 +2,7 @@ id: 70470634-68a8-4950-9d88-348bc19e3a1d name: Sequence Motif Search description: Creates boolean columns indicating the presence or absence of an input sequence motif in a sequence column - regular expressions are also supported. A column illustrating the sequence and the identified motif locations is also created. category: Biopolymer -version: 1.0.1 +version: 1.1.0 serviceName: SequenceMotifRegexSearch serviceUri: glysade.csharp executorId: Glysade.CSharpDataFxn diff --git a/csharp/local/SequenceRegionAnnotation.yaml b/csharp/local/SequenceRegionAnnotation.yaml index ec47d60..c3e6c8f 100644 --- a/csharp/local/SequenceRegionAnnotation.yaml +++ b/csharp/local/SequenceRegionAnnotation.yaml @@ -2,7 +2,7 @@ id: 1d863338-11e3-f287-a9c8-6d72792c320f name: Sequence Region Annotation description: Create GenBank region annotations for a sequence or GenBank column. category: Biopolymer -version: 1.0.0 +version: 1.1.0 serviceName: SequenceRegionAnnotationDataFunction serviceUri: glysade.csharp executorId: Glysade.CSharpDataFxn From 0f487a8af9994062d7aa8bbac58f7ec52fcc0ec7 Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Wed, 25 Oct 2023 10:34:43 -0600 Subject: [PATCH 12/24] Add output fields --- csharp/local/AntibodySequenceLiabilities.yaml | 19 ++++++++++++++++- csharp/local/SequenceMotifSearch.yaml | 21 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/csharp/local/AntibodySequenceLiabilities.yaml b/csharp/local/AntibodySequenceLiabilities.yaml index 01bbfc2..6b647d0 100644 --- a/csharp/local/AntibodySequenceLiabilities.yaml +++ b/csharp/local/AntibodySequenceLiabilities.yaml @@ -36,7 +36,7 @@ inputFields: data: Annotated Liabilities - control: id: patterns - label: Sequence liabilities + label: Sequence liabilities type: select multi: !!bool true options: @@ -90,6 +90,23 @@ updateBehavior: automatic maximumOutputColumns: !!int 10 maximumOutputTables: !!int 0 chemistryFunction: !!bool false +outputFields: +- id: sequenceColumn + name: Sequence column + source: inputField + type: default +- id: outputColumn + name: Annotated sequence output column + source: inputField + type: default +- id: patterns + name: Selected liabilities + source: inputField + type: default +- id: ctrlColor + name: Color + source: inputField + type: default allowedClients: - Analyst - WebPlayer diff --git a/csharp/local/SequenceMotifSearch.yaml b/csharp/local/SequenceMotifSearch.yaml index 1ff6b6b..7ee1c75 100644 --- a/csharp/local/SequenceMotifSearch.yaml +++ b/csharp/local/SequenceMotifSearch.yaml @@ -71,6 +71,27 @@ updateBehavior: automatic maximumOutputColumns: !!int 2 maximumOutputTables: !!int 0 chemistryFunction: !!bool false +outputFields: +- id: sequenceColumn + name: Sequence column + source: inputField + type: default +- id: columnName + name: Annotated sequence output column + source: inputField + type: default +- id: featureName + name: Motif name + source: inputField + type: default +- id: expression + name: Motif expression + source: inputField + type: default +- id: ctrlColor + name: Color + source: inputField + type: default allowedClients: - Analyst - WebPlayer From fe68ef34e3702b326b9ee4cf74d3b91f7865cf4a Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Wed, 25 Oct 2023 10:46:37 -0600 Subject: [PATCH 13/24] Adjust output field type --- csharp/local/AntibodySequenceLiabilities.yaml | 2 +- csharp/local/SequenceMotifSearch.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/csharp/local/AntibodySequenceLiabilities.yaml b/csharp/local/AntibodySequenceLiabilities.yaml index 6b647d0..f1c90c5 100644 --- a/csharp/local/AntibodySequenceLiabilities.yaml +++ b/csharp/local/AntibodySequenceLiabilities.yaml @@ -106,7 +106,7 @@ outputFields: - id: ctrlColor name: Color source: inputField - type: default + type: color allowedClients: - Analyst - WebPlayer diff --git a/csharp/local/SequenceMotifSearch.yaml b/csharp/local/SequenceMotifSearch.yaml index 7ee1c75..65d63d5 100644 --- a/csharp/local/SequenceMotifSearch.yaml +++ b/csharp/local/SequenceMotifSearch.yaml @@ -91,7 +91,7 @@ outputFields: - id: ctrlColor name: Color source: inputField - type: default + type: color allowedClients: - Analyst - WebPlayer From 4e9c25190599176e44a890dee37a3f1e12399a5c Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Mon, 30 Oct 2023 11:15:59 -0600 Subject: [PATCH 14/24] Change serviceUri to specify glysade_mAb --- python/local/AntibodyStructurePrediction.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/local/AntibodyStructurePrediction.yaml b/python/local/AntibodyStructurePrediction.yaml index 783c302..1720937 100644 --- a/python/local/AntibodyStructurePrediction.yaml +++ b/python/local/AntibodyStructurePrediction.yaml @@ -4,7 +4,7 @@ description: Predict antibody 3D structure given heavy and light chain sequences category: Biopolymer version: 1.0.0 serviceName: AntibodyStructurePrediction -serviceUri: glysade.python +serviceUri: glysade_mAb.python executorId: Glysade.CPythonDataFxn inputFields: - control: From ee0850a0b8a66a7574e237cc8e268cf64f16be3f Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Mon, 30 Oct 2023 14:32:25 -0600 Subject: [PATCH 15/24] Change serviceUri to specify glysade_mAb --- python/local/AntibodyStructurePrediction.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/local/AntibodyStructurePrediction.yaml b/python/local/AntibodyStructurePrediction.yaml index 1720937..b48956c 100644 --- a/python/local/AntibodyStructurePrediction.yaml +++ b/python/local/AntibodyStructurePrediction.yaml @@ -4,7 +4,7 @@ description: Predict antibody 3D structure given heavy and light chain sequences category: Biopolymer version: 1.0.0 serviceName: AntibodyStructurePrediction -serviceUri: glysade_mAb.python +serviceUri: glysade.python.mab executorId: Glysade.CPythonDataFxn inputFields: - control: From acd4c6a0785e0de8ace8a115aa169dbb493860c4 Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Fri, 10 Nov 2023 17:38:23 -0700 Subject: [PATCH 16/24] Updated DF .yaml --- python/local/AntibodyStructurePrediction.yaml | 109 ++++++++++++------ 1 file changed, 72 insertions(+), 37 deletions(-) diff --git a/python/local/AntibodyStructurePrediction.yaml b/python/local/AntibodyStructurePrediction.yaml index b48956c..f5e4e7d 100644 --- a/python/local/AntibodyStructurePrediction.yaml +++ b/python/local/AntibodyStructurePrediction.yaml @@ -1,6 +1,6 @@ id: db2af994-2c2e-c6aa-4495-e4bdce0d8edb name: Antibody Structure Prediction -description: Predict antibody 3D structure given heavy and light chain sequences. +description: Predict antibody 3D structure given heavy and light chain amino acid sequences. Sequences should be concatenated with the heavy chain preceding the light chain. category: Biopolymer version: 1.0.0 serviceName: AntibodyStructurePrediction @@ -8,54 +8,72 @@ serviceUri: glysade.python.mab executorId: Glysade.CPythonDataFxn inputFields: - control: - id: heavyChain - label: Select column with heavy chain sequence + id: uiAbSeqCol + label: Antibody sequence column type: columnselect multi: !!bool false - validationRules: - - type: required - message: Select column containing heavy chain sequence + validationRules: [] filters: - dataType: string contentType: - chemical/x-sequence + limitByControlId: uiLimitBy request: - id: heavyChain + id: uiAbSeqCol dataType: string selectorType: column - control: - id: lightChain - label: Select column with light chain sequence + id: uiIDCol + label: ID column type: columnselect multi: !!bool false validationRules: - type: required - message: Select column containing light chain sequence + message: Specify a column with unique IDs filters: - dataType: string - contentType: - - chemical/x-sequence + contentType: [] + limitByControlId: uiLimitBy request: - id: lightChain + id: uiIDCol dataType: string selectorType: column - control: - id: idColumn - label: ID column - type: columnselect - multi: !!bool false + id: uiLimitBy + label: Apply data function to + type: limitby + request: + - id: uiLimitBy + dataType: string + field: limitBy + data: none + - id: uiLimitByMarking + dataType: string + field: marking +- control: + id: uiNumberingScheme + label: Antibody numbering scheme + type: radiogroup + radios: + - text: Kabat + value: kabat + - text: Chothia + value: chothia + - text: IMGT + value: imgt + - text: Martin (extended Chothia) + value: martin + - text: Aho + value: aho validationRules: - type: required - message: Specify a column with unique IDs - filters: - - dataType: string - contentType: [] + message: '' request: - id: idColumn + id: uiNumberingScheme dataType: string - selectorType: column + data: imgt - control: - id: outputDirectory + id: uiOutputDirectory label: Output directory type: file fileTypes: @@ -77,24 +95,13 @@ inputFields: - type: required message: Specify an output directory for the predicted structures request: - id: outputDirectory + id: uiOutputDirectory dataType: string tags: - color: '#dddddd' text: MAB - color: '#D22A2A' text: structure -updateBehavior: automatic -maximumOutputColumns: !!int 1 -maximumOutputTables: !!int 0 -chemistryFunction: !!bool false -allowedClients: -- Analyst -- WebPlayer -demoUrl: -limitBy: none -minimumChartsVersion: -confirmSubmit: ironPython: | #################################################### # Copyright 2023 Glysade LLC, All Rights Reserved # @@ -136,7 +143,7 @@ ironPython: | tableVis.DataTable = dataTable tableVis.ConfigureColumns() tableVis.Marking = Document.Data.Markings.DefaultMarkingReference - + threeDVis = page.Visuals.AddNew[model_type]() threeDVis.SetKeyValue('visualization','biomolviewer-visualization') threeDVis.DataTable = dataTable @@ -145,3 +152,31 @@ ironPython: | tableVis.SetActiveVisual() page.AutoConfigure() +updateBehavior: manual +maximumOutputColumns: !!int 0 +maximumOutputTables: !!int 1 +chemistryFunction: !!bool false +outputFields: +- id: uiAbSequence + name: Antibody sequence column + source: inputField + type: sequence +- id: uiIDColumn + name: ID column + source: inputField + type: default +- id: uiOutputDirectory + name: Output directory + source: inputField + type: default +- id: uiLimitBy + name: Limit by + source: inputField + type: default +allowedClients: +- Analyst +- WebPlayer +demoUrl: +limitBy: none +minimumChartsVersion: +confirmSubmit: From d70d1f5ede9f97ba113d7491dd6f5d2a55e2d22a Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Thu, 16 Nov 2023 17:21:04 -0700 Subject: [PATCH 17/24] Update DF with more complete capabilities --- python/local/AntibodyStructurePrediction.yaml | 166 +++++++++++++++--- 1 file changed, 141 insertions(+), 25 deletions(-) diff --git a/python/local/AntibodyStructurePrediction.yaml b/python/local/AntibodyStructurePrediction.yaml index f5e4e7d..6f319b0 100644 --- a/python/local/AntibodyStructurePrediction.yaml +++ b/python/local/AntibodyStructurePrediction.yaml @@ -12,7 +12,9 @@ inputFields: label: Antibody sequence column type: columnselect multi: !!bool false - validationRules: [] + validationRules: + - type: required + message: A sequence column must be specified filters: - dataType: string contentType: @@ -50,6 +52,37 @@ inputFields: - id: uiLimitByMarking dataType: string field: marking +- control: + id: uiSaveAll + label: Save all models + type: checkbox + group: + name: Model Options + collapsible: !!bool true + request: + id: uiSaveAll + dataType: boolean + data: !!bool false +- control: + id: uiRefineAll + label: Refine all models + type: checkbox + group: + name: Model Options + request: + id: uiRefineAll + dataType: boolean + data: !!bool false +- control: + id: uiDoNumbering + label: Perform antibody numbering + type: checkbox + group: + name: Antibody Numbering + request: + id: uiDoNumbering + dataType: boolean + data: !!bool false - control: id: uiNumberingScheme label: Antibody numbering scheme @@ -68,10 +101,44 @@ inputFields: validationRules: - type: required message: '' + group: + name: Antibody Numbering request: id: uiNumberingScheme dataType: string data: imgt +- control: + id: uiCDRdef + label: CDR definition scheme + type: radiogroup + radios: + - text: Kabat + value: kabat + - text: Chothia + value: chothia + - text: IMGT + value: imgt + group: + name: Antibody Numbering + collapsible: !!bool true + collapsed: !!bool false + request: + id: uiCDRdef + dataType: string + data: imgt +- control: + id: uiRandomSeed + label: Random seed + type: text + validationRules: + - type: required + message: '' + - type: numeric + message: Value must be an integer + request: + id: uiRandomSeed + dataType: integer + data: !!int 0 - control: id: uiOutputDirectory label: Output directory @@ -102,33 +169,41 @@ tags: text: MAB - color: '#D22A2A' text: structure -ironPython: | - #################################################### - # Copyright 2023 Glysade LLC, All Rights Reserved # - #################################################### +ironPython: |- + ##################################################### + # Copyright 2023 Glysade LLC, All Rights Reserved # + ##################################################### import sys,clr - from Spotfire.Dxp.Data import DataTable, DataManager - from Spotfire.Dxp.Application import PanelTypeIdentifiers - from Spotfire.Dxp.Application import Panel + from Spotfire.Dxp.Application import Panel, PanelTypeIdentifiers + from Spotfire.Dxp.Application.Layout import LayoutDefinition import Spotfire.Dxp.Application.PanelCollection - from System import AppDomain + + loadAssemblies = ['Charts', 'ChemistryService', 'Common'] for asm in AppDomain.CurrentDomain.GetAssemblies(): - if asm.GetName().Name == 'Charts': + if asm.GetName().Name in loadAssemblies: clr.AddReference(asm.FullName) + from Common import ColumnIdService + from ChemistryService import DataFxnInput, DataFxnRequest, DataFxnInputField from Charts import ChartsModel model_type = ChartsModel - #tableId pass in args - dataTable = InputTables[0] + #remove after testing + #dataTable = Document.ActiveDataTableReference + #structureColumn = dataTable.Columns['Structure Files'] + + dataTable = ResultTables[0] + structureColumn = dataTable.Columns['Structure Files'] + tableId = dataTable.Id.ToString() + idSvc = Application.GetService[ColumnIdService]() if not dataTable: raise Exception('target table not found') page = Document.Pages.AddNew('Antibody Structure Prediction Results') - panelsToHide = [PanelTypeIdentifiers.DataPanel, PanelTypeIdentifiers.DetailsOnDemandPanel] + panelsToHide = [PanelTypeIdentifiers.DataPanel, PanelTypeIdentifiers.DetailsOnDemandPanel, PanelTypeIdentifiers.FilterPanel] for panel in page.Panels: if panel.TypeId in panelsToHide: @@ -144,20 +219,37 @@ ironPython: | tableVis.ConfigureColumns() tableVis.Marking = Document.Data.Markings.DefaultMarkingReference - threeDVis = page.Visuals.AddNew[model_type]() - threeDVis.SetKeyValue('visualization','biomolviewer-visualization') - threeDVis.DataTable = dataTable - threeDVis.ConfigureColumns() - threeDVis.Marking = Document.Data.Markings.DefaultMarkingReference + alignedSequenceColumn = None + for column in dataTable.Columns: + if column.Properties.ContentType != 'chemical/x-genbank' and column.Name.Contains('Aligned Sequence'): + alignedSequenceColumn = column + break + + biomolVis = page.Visuals.AddNew[model_type]() + + if alignedSequenceColumn: + biomolVis.SetKeyValue(tableId+'.biomolviewer-visualization.bioMolViewer.sequenceColumnId', idSvc.GetID(alignedSequenceColumn)) + if structureColumn: + biomolVis.SetKeyValue(tableId+'.biomolviewer-visualization.bioMolViewer.defaultDisplayObjects', '[["'+idSvc.GetID(structureColumn)+'",{"contacts":{"contextColumnId":"none","labelsVisible":true,"visible":false},"structure":{"color":{"color":"#808080","scheme":"element","reverse":false,"scale":"OrRd"},"contextDistance":10,"contextColumnId":"none","contextFilterSele":"","displayUnmappedChains":true,"hydrogenStyle":"none","style":"line","visible":true,"water":true},"surface":{"color":{"color":"#808080","scheme":"uniform","reverse":false,"scale":"OrRd"},"contextColumnId":"none","contextDistance":5,"filterSele":"","opacity":0.7,"type":"av","visible":false,"wireframe":false},"protein":{"tube":{"color":{"color":"#808080","scheme":"bfactor","reverse":false,"scale":"OrRd"},"visible":false},"cartoon":{"color":{"color":"#808080","scheme":"bfactor","reverse":false,"scale":"OrRd"},"visible":true}},"visible":true}]]') + biomolVis.SetKeyValue('visualization','biomolviewer-visualization') + biomolVis.DataTable = dataTable + biomolVis.ConfigureColumns() + biomolVis.Marking = Document.Data.Markings.DefaultMarkingReference + + layout = LayoutDefinition() + layout.BeginSideBySideSection() + layout.Add(biomolVis.Visual, 75.0) + layout.Add(tableVis.Visual, 25.0) + layout.EndSection() + page.ApplyLayout(layout) tableVis.SetActiveVisual() - page.AutoConfigure() updateBehavior: manual maximumOutputColumns: !!int 0 maximumOutputTables: !!int 1 chemistryFunction: !!bool false outputFields: -- id: uiAbSequence +- id: uiAbSeqCol name: Antibody sequence column source: inputField type: sequence @@ -165,18 +257,42 @@ outputFields: name: ID column source: inputField type: default -- id: uiOutputDirectory - name: Output directory - source: inputField - type: default - id: uiLimitBy name: Limit by source: inputField type: default +- id: uiSaveAll + name: Save all + source: inputField + type: default +- id: uiRefineAll + name: Refine All + source: inputField + type: default +- id: uiDoNumbering + name: Perform antibody numbering + source: inputField + type: default +- id: uiNumberingScheme + name: Antbody numbering scheme + source: inputField + type: default +- id: uiCDRdef + name: CDR definition scheme + source: inputField + type: default +- id: uiRandomSeed + name: Random seed + source: inputField + type: default +- id: uiOutputDirectory + name: Output directory + source: inputField + type: default allowedClients: - Analyst - WebPlayer demoUrl: limitBy: none -minimumChartsVersion: +minimumChartsVersion: 4.4.0.0 confirmSubmit: From 172cf7d16a1d4a268a16f7c63d133dd7d4167cff Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Fri, 17 Nov 2023 14:46:52 -0700 Subject: [PATCH 18/24] Remove random seed controls --- python/local/AntibodyStructurePrediction.yaml | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/python/local/AntibodyStructurePrediction.yaml b/python/local/AntibodyStructurePrediction.yaml index 6f319b0..8ee8b00 100644 --- a/python/local/AntibodyStructurePrediction.yaml +++ b/python/local/AntibodyStructurePrediction.yaml @@ -126,19 +126,6 @@ inputFields: id: uiCDRdef dataType: string data: imgt -- control: - id: uiRandomSeed - label: Random seed - type: text - validationRules: - - type: required - message: '' - - type: numeric - message: Value must be an integer - request: - id: uiRandomSeed - dataType: integer - data: !!int 0 - control: id: uiOutputDirectory label: Output directory @@ -281,10 +268,6 @@ outputFields: name: CDR definition scheme source: inputField type: default -- id: uiRandomSeed - name: Random seed - source: inputField - type: default - id: uiOutputDirectory name: Output directory source: inputField From c4bb2c1e9c12d75ad002879d161112fde303bb07 Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Wed, 22 Nov 2023 08:01:00 -0700 Subject: [PATCH 19/24] Remove references to output directory --- python/local/AntibodyStructurePrediction.yaml | 35 +------------------ 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/python/local/AntibodyStructurePrediction.yaml b/python/local/AntibodyStructurePrediction.yaml index 8ee8b00..849b821 100644 --- a/python/local/AntibodyStructurePrediction.yaml +++ b/python/local/AntibodyStructurePrediction.yaml @@ -126,31 +126,6 @@ inputFields: id: uiCDRdef dataType: string data: imgt -- control: - id: uiOutputDirectory - label: Output directory - type: file - fileTypes: - - extension: .smi - contentType: chemical/x-smiles - name: SMILES (*.smi) - - extension: .sdf - contentType: chemical/x-mdl-sdfile - name: SD file (*.sdf) - - extension: .mol - contentType: chemical/x-mdl-molfile - name: MOL file (*.mol) - - extension: .pdb - contentType: chemical/x-pdb - name: Protein Data Bank (*.pdb) - mode: path - pathType: folder - validationRules: - - type: required - message: Specify an output directory for the predicted structures - request: - id: uiOutputDirectory - dataType: string tags: - color: '#dddddd' text: MAB @@ -177,12 +152,8 @@ ironPython: |- from Charts import ChartsModel model_type = ChartsModel - #remove after testing - #dataTable = Document.ActiveDataTableReference - #structureColumn = dataTable.Columns['Structure Files'] - dataTable = ResultTables[0] - structureColumn = dataTable.Columns['Structure Files'] + structureColumn = dataTable.Columns['Compressed Structures'] tableId = dataTable.Id.ToString() idSvc = Application.GetService[ColumnIdService]() @@ -268,10 +239,6 @@ outputFields: name: CDR definition scheme source: inputField type: default -- id: uiOutputDirectory - name: Output directory - source: inputField - type: default allowedClients: - Analyst - WebPlayer From 2df85807a0ddf7254315069c848597e8c3b69a31 Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Wed, 13 Dec 2023 16:15:41 -0700 Subject: [PATCH 20/24] Add new definition to both required locations in .yaml --- csharp/local/AntibodySequenceLiabilities.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/csharp/local/AntibodySequenceLiabilities.yaml b/csharp/local/AntibodySequenceLiabilities.yaml index f1c90c5..3f5eeba 100644 --- a/csharp/local/AntibodySequenceLiabilities.yaml +++ b/csharp/local/AntibodySequenceLiabilities.yaml @@ -41,7 +41,7 @@ inputFields: multi: !!bool true options: - text: Asparagine Deamidation - value: Asparagine Deamidation,(?=(N[GSTN])) + value: Asparagine Deamidation,(?=(N[GSTNH])) - text: Aspartic Acid Fragmentation value: Aspartic Acid Fragmentation,DP - text: Aspartic Acid Isomerization @@ -62,7 +62,7 @@ inputFields: id: patterns dataType: list(string) data: - - Asparagine Deamidation,(?=(N[GSTN])) + - Asparagine Deamidation,(?=(N[GSTNH])) - Aspartic Acid Fragmentation,DP - Aspartic Acid Isomerization,(?=(D[GSTDH])) - Cysteine,C From e7dc0bcaaf20c43f9db9df7f9950170d43d84bf4 Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Fri, 22 Dec 2023 12:40:18 -0700 Subject: [PATCH 21/24] Preliminary RASA DF definition --- .../RelativeSolventAccessibleSurfaceArea.yaml | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 python/local/RelativeSolventAccessibleSurfaceArea.yaml diff --git a/python/local/RelativeSolventAccessibleSurfaceArea.yaml b/python/local/RelativeSolventAccessibleSurfaceArea.yaml new file mode 100644 index 0000000..202b52e --- /dev/null +++ b/python/local/RelativeSolventAccessibleSurfaceArea.yaml @@ -0,0 +1,88 @@ +id: d8831560-5f1d-29c6-2606-6624346c96a9 +name: Relative Solvent Accessible Surface Area (RASA) +description: Compute the Relevant Solvent Accessible Surface Area (RASA) of the amino acid residues of a protein. +category: Biopolymer +version: 1.0.0 +serviceName: ProteinRASA +serviceUri: glysade.python.mab +executorId: Glysade.CPythonDataFxn +inputFields: +- control: + id: uiStructureColumn + label: Select structure column + type: text + validationRules: + - type: required + message: A structure column must be selected + tooltip: Select a column with structure data + request: + id: uiStructureColumn + dataType: string + contentType: chemical/x-pdb +- control: + id: uiSequenceColumn + label: Select sequence column + type: text + validationRules: + - type: required + message: A sequence column must be selected + tooltip: Select a column with sequence data + request: + id: uiSequenceColumn + dataType: string + contentType: chemical/x-sequence +- control: + id: uiIDColumn + label: Select an ID column (optional) + type: text + tooltip: Select and optional ID column + request: + id: uiIDColumn + dataType: string +- control: + id: uiRASACutoff + label: Percent RASA cutoff (this value or above is considred "exposed") + type: text + validationRules: + - type: numeric + message: An integer value between 0 and 100 is required. + - type: range + message: An integer value between 0 and 100 is required. + max: !!int 100 + - type: required + message: An integer value between 0 and 100 is required. + request: + id: uiRASACutoff + dataType: integer + data: !!int 20 +- control: + id: uiLimitBy + label: Apply data function to + type: limitby + tooltip: Select limiting options + request: + - id: uiLimitBy + dataType: string + field: limitBy + data: none + - id: uiLimitByMarking + dataType: string + field: marking +tags: +- color: '#dddddd' + text: MAB +- color: '#ba660b' + text: analyze +- color: '#AFC9E1' + text: annotation +updateBehavior: manual +maximumOutputColumns: !!int 0 +maximumOutputTables: !!int 0 +chemistryFunction: !!bool false +allowedClients: +- Analyst +- WebPlayer +demoUrl: +limitBy: none +minimumChartsVersion: +confirmSubmit: From 8fbad6b47903f152715507ccf19bb87afa0cd9c3 Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Tue, 2 Jan 2024 16:03:25 -0700 Subject: [PATCH 22/24] Update DataFxn .yaml --- .../RelativeSolventAccessibleSurfaceArea.yaml | 47 +++++++++++++------ 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/python/local/RelativeSolventAccessibleSurfaceArea.yaml b/python/local/RelativeSolventAccessibleSurfaceArea.yaml index 202b52e..14c22a1 100644 --- a/python/local/RelativeSolventAccessibleSurfaceArea.yaml +++ b/python/local/RelativeSolventAccessibleSurfaceArea.yaml @@ -1,6 +1,6 @@ id: d8831560-5f1d-29c6-2606-6624346c96a9 name: Relative Solvent Accessible Surface Area (RASA) -description: Compute the Relevant Solvent Accessible Surface Area (RASA) of the amino acid residues of a protein. +description: Compute the Relative Solvent Accessible Surface Area (RASA) of the amino acid residues of a protein. category: Biopolymer version: 1.0.0 serviceName: ProteinRASA @@ -9,36 +9,55 @@ executorId: Glysade.CPythonDataFxn inputFields: - control: id: uiStructureColumn - label: Select structure column - type: text + label: Select a structure column + type: columnselect + multi: !!bool false validationRules: - type: required - message: A structure column must be selected - tooltip: Select a column with structure data + message: A structure column is required + filters: + - dataType: + - binary + contentType: + - chemical/x-pdb + limitByControlId: uiLimitBy + tooltip: Select a structure column request: id: uiStructureColumn dataType: string - contentType: chemical/x-pdb + selectorType: column - control: id: uiSequenceColumn - label: Select sequence column - type: text + label: Select a sequence column + type: columnselect + multi: !!bool false + tooltip: Select a sequence column validationRules: - type: required - message: A sequence column must be selected - tooltip: Select a column with sequence data + message: A sequence column is required + filters: + - dataType: + - binary + - string + contentType: + - chemical/x-sequence + - chemical/x-genbank + limitByControlId: uiLimitBy request: id: uiSequenceColumn dataType: string - contentType: chemical/x-sequence + selectorType: column - control: id: uiIDColumn label: Select an ID column (optional) - type: text - tooltip: Select and optional ID column + type: columnselect + multi: !!bool false + tooltip: Select an ID column (optional) + limitByControlId: uiLimitBy request: id: uiIDColumn dataType: string + selectorType: column - control: id: uiRASACutoff label: Percent RASA cutoff (this value or above is considred "exposed") @@ -83,6 +102,6 @@ allowedClients: - Analyst - WebPlayer demoUrl: -limitBy: none +limitBy: filteredRows minimumChartsVersion: confirmSubmit: From 2e8ea7862f1299cc56a9df95eb47e926d129d9fa Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Thu, 4 Jan 2024 14:42:51 -0700 Subject: [PATCH 23/24] Additional features added to RASA --- .../RelativeSolventAccessibleSurfaceArea.yaml | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/python/local/RelativeSolventAccessibleSurfaceArea.yaml b/python/local/RelativeSolventAccessibleSurfaceArea.yaml index 14c22a1..34bd268 100644 --- a/python/local/RelativeSolventAccessibleSurfaceArea.yaml +++ b/python/local/RelativeSolventAccessibleSurfaceArea.yaml @@ -70,10 +70,53 @@ inputFields: max: !!int 100 - type: required message: An integer value between 0 and 100 is required. + group: + name: Annotations options request: id: uiRASACutoff dataType: integer data: !!int 20 +- control: + id: uiExposedColor + label: Exposed residue color + type: color + tooltip: Exposed residue color + validationRules: + - type: required + message: '' + group: + name: Annotations options + request: + id: uiExposedColor + dataType: string + data: '#FF0000' +- control: + id: uiLabelAll + label: Annotate all residues + type: checkbox + tooltip: Annotate all residues + group: + name: Annotations options + request: + id: uiLabelAll + dataType: boolean + data: !!bool false +- control: + id: uiAllColor + label: All residue annotation color + type: color + tooltip: All residue annotation color + validationRules: + - type: required + message: '' + group: + name: Annotations options + collapsible: !!bool false + collapsed: !!bool false + request: + id: uiAllColor + dataType: string + data: '#CCCCCC' - control: id: uiLimitBy label: Apply data function to From e3e178bfb3157dc1c4d67e9ac3e0b6c1e0ea211a Mon Sep 17 00:00:00 2001 From: Kirk DeLisle Date: Tue, 9 Jan 2024 09:15:07 -0700 Subject: [PATCH 24/24] Remove ID column; add color gradient; rename DF; group annotation options --- ...=> RelativeAccessibleSurfaceAreaRASA.yaml} | 62 ++++++++++--------- 1 file changed, 33 insertions(+), 29 deletions(-) rename python/local/{RelativeSolventAccessibleSurfaceArea.yaml => RelativeAccessibleSurfaceAreaRASA.yaml} (80%) diff --git a/python/local/RelativeSolventAccessibleSurfaceArea.yaml b/python/local/RelativeAccessibleSurfaceAreaRASA.yaml similarity index 80% rename from python/local/RelativeSolventAccessibleSurfaceArea.yaml rename to python/local/RelativeAccessibleSurfaceAreaRASA.yaml index 34bd268..298de74 100644 --- a/python/local/RelativeSolventAccessibleSurfaceArea.yaml +++ b/python/local/RelativeAccessibleSurfaceAreaRASA.yaml @@ -1,6 +1,6 @@ id: d8831560-5f1d-29c6-2606-6624346c96a9 -name: Relative Solvent Accessible Surface Area (RASA) -description: Compute the Relative Solvent Accessible Surface Area (RASA) of the amino acid residues of a protein. +name: Relative Accessible Surface Area (RASA) +description: Compute the Relative Accessible Surface Area (RASA) of the amino acid residues of a protein. category: Biopolymer version: 1.0.0 serviceName: ProteinRASA @@ -48,16 +48,18 @@ inputFields: dataType: string selectorType: column - control: - id: uiIDColumn - label: Select an ID column (optional) - type: columnselect - multi: !!bool false - tooltip: Select an ID column (optional) - limitByControlId: uiLimitBy + id: uiLimitBy + label: Apply data function to + type: limitby + tooltip: Select limiting options request: - id: uiIDColumn + - id: uiLimitBy dataType: string - selectorType: column + field: limitBy + data: none + - id: uiLimitByMarking + dataType: string + field: marking - control: id: uiRASACutoff label: Percent RASA cutoff (this value or above is considred "exposed") @@ -92,44 +94,46 @@ inputFields: data: '#FF0000' - control: id: uiLabelAll - label: Annotate all residues + label: Annotate all residues with a color gradient type: checkbox tooltip: Annotate all residues group: name: Annotations options + validationRules: [] request: id: uiLabelAll dataType: boolean - data: !!bool false + data: !!bool true - control: - id: uiAllColor - label: All residue annotation color + id: uiStartColor + label: Starting gradient color (corresponds to RASA = 0) type: color - tooltip: All residue annotation color + tooltip: Starting color validationRules: - type: required message: '' group: name: Annotations options - collapsible: !!bool false - collapsed: !!bool false request: - id: uiAllColor + id: uiStartColor dataType: string - data: '#CCCCCC' + data: '#FECD92' - control: - id: uiLimitBy - label: Apply data function to - type: limitby - tooltip: Select limiting options + id: uiEndColor + label: Ending gradient color (corresponds to RASA = 100%) + type: color + tooltip: Ending color + group: + name: Annotations options + collapsible: !!bool true + collapsed: !!bool true + validationRules: + - type: required + message: '' request: - - id: uiLimitBy + id: uiEndColor dataType: string - field: limitBy - data: none - - id: uiLimitByMarking - dataType: string - field: marking + data: '#7DA4C8' tags: - color: '#dddddd' text: MAB