diff --git a/csharp/local/AntibodySequenceLiabilities.yaml b/csharp/local/AntibodySequenceLiabilities.yaml index c838ca4..3f5eeba 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,12 +36,12 @@ inputFields: data: Annotated Liabilities - control: id: patterns - label: Match patterns + label: Sequence liabilities type: select 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 @@ -70,18 +70,43 @@ 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: 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: color allowedClients: - Analyst - WebPlayer diff --git a/csharp/local/SequenceMotifSearch.yaml b/csharp/local/SequenceMotifSearch.yaml index 1b7d6c4..65d63d5 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 @@ -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,48 @@ 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: 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: color allowedClients: - Analyst - WebPlayer diff --git a/csharp/local/SequenceRegionAnnotation.yaml b/csharp/local/SequenceRegionAnnotation.yaml index bb5c9d6..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 @@ -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: diff --git a/python/local/AntibodyStructurePrediction.yaml b/python/local/AntibodyStructurePrediction.yaml new file mode 100644 index 0000000..849b821 --- /dev/null +++ b/python/local/AntibodyStructurePrediction.yaml @@ -0,0 +1,248 @@ +id: db2af994-2c2e-c6aa-4495-e4bdce0d8edb +name: Antibody Structure Prediction +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 +serviceUri: glysade.python.mab +executorId: Glysade.CPythonDataFxn +inputFields: +- control: + id: uiAbSeqCol + label: Antibody sequence column + type: columnselect + multi: !!bool false + validationRules: + - type: required + message: A sequence column must be specified + filters: + - dataType: string + contentType: + - chemical/x-sequence + limitByControlId: uiLimitBy + request: + id: uiAbSeqCol + dataType: string + selectorType: column +- control: + id: uiIDCol + label: ID column + type: columnselect + multi: !!bool false + validationRules: + - type: required + message: Specify a column with unique IDs + filters: + - dataType: string + contentType: [] + limitByControlId: uiLimitBy + request: + id: uiIDCol + dataType: string + selectorType: column +- control: + 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: 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 + 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: '' + 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 +tags: +- color: '#dddddd' + text: MAB +- color: '#D22A2A' + text: structure +ironPython: |- + ##################################################### + # Copyright 2023 Glysade LLC, All Rights Reserved # + ##################################################### + + import sys,clr + 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 in loadAssemblies: + clr.AddReference(asm.FullName) + + from Common import ColumnIdService + from ChemistryService import DataFxnInput, DataFxnRequest, DataFxnInputField + from Charts import ChartsModel + model_type = ChartsModel + + dataTable = ResultTables[0] + structureColumn = dataTable.Columns['Compressed Structures'] + 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, PanelTypeIdentifiers.FilterPanel] + + 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 + + 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() +updateBehavior: manual +maximumOutputColumns: !!int 0 +maximumOutputTables: !!int 1 +chemistryFunction: !!bool false +outputFields: +- id: uiAbSeqCol + name: Antibody sequence column + source: inputField + type: sequence +- id: uiIDColumn + name: ID column + 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 +allowedClients: +- Analyst +- WebPlayer +demoUrl: +limitBy: none +minimumChartsVersion: 4.4.0.0 +confirmSubmit: diff --git a/python/local/RelativeAccessibleSurfaceAreaRASA.yaml b/python/local/RelativeAccessibleSurfaceAreaRASA.yaml new file mode 100644 index 0000000..298de74 --- /dev/null +++ b/python/local/RelativeAccessibleSurfaceAreaRASA.yaml @@ -0,0 +1,154 @@ +id: d8831560-5f1d-29c6-2606-6624346c96a9 +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 +serviceUri: glysade.python.mab +executorId: Glysade.CPythonDataFxn +inputFields: +- control: + id: uiStructureColumn + label: Select a structure column + type: columnselect + multi: !!bool false + validationRules: + - type: required + 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 + selectorType: column +- control: + id: uiSequenceColumn + label: Select a sequence column + type: columnselect + multi: !!bool false + tooltip: Select a sequence column + validationRules: + - type: required + message: A sequence column is required + filters: + - dataType: + - binary + - string + contentType: + - chemical/x-sequence + - chemical/x-genbank + limitByControlId: uiLimitBy + request: + id: uiSequenceColumn + dataType: string + selectorType: column +- 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 +- 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. + 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 with a color gradient + type: checkbox + tooltip: Annotate all residues + group: + name: Annotations options + validationRules: [] + request: + id: uiLabelAll + dataType: boolean + data: !!bool true +- control: + id: uiStartColor + label: Starting gradient color (corresponds to RASA = 0) + type: color + tooltip: Starting color + validationRules: + - type: required + message: '' + group: + name: Annotations options + request: + id: uiStartColor + dataType: string + data: '#FECD92' +- control: + 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: uiEndColor + dataType: string + data: '#7DA4C8' +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: filteredRows +minimumChartsVersion: +confirmSubmit: