Integrate Crystallography with Revvity Signals
Signals is an ELN that can store peptides and projects that could be useful when filling the information in Crystaline.
The integration with Signals includes:
-
Validation. Checking that Protein ane Compound names actually exist in Signals Materials registry when submitting harvested crystals.
-
TBD: Fetching a list of projects
Configuration
In docker-compose.yml need to specify environment variables:
# a host where your Signals instance is running
external.signals.base_url=https://some.host.com
# One of the authorization headers. It could be `x-api-key` from page `/snconfig/settings/apikey`
# or `Authorization: Bearer ...` with the OAuth2 token.
# You can actually specify many headers using this variable - HTTP's standard \r\n
# separator between them. But most of the time you need only the auth-related headers.
external.signals.headers=x-api-key:SPECIFY_TOKEN_HERE
And while Crystaline is running, turn on the actual integration by change Global Property using the API (at /swagger-ui/index.html#/global-settings-api/update
):
[
{"key": "external.protein.name_check_enabled", "value": true},
{"key": "external.compound.name_check_enabled", "value": true}
]
Setting up permissions for the user in Signals
In order to set up a service user that can access only Compounds and Proteins, create a System Group "Crystaline" and add the user to that group. On System Security Policy page (https://signals.host/snconfig/security-policy) add 2 rules:
# For some reason when searching just for one entity, it's enough to have
# only permissions to assets, while when searching for 2+ we need to grant
# read access for AssetTypes as well, otherwise we get EnrichException.
RULE "Read Only Crystaline Access to Compound AssetTypes"
IF
user group in "Crystaline"
resource type equal "assettype" AND
resource attribute "Material Library Type" in "Compounds"
THEN
grant "entity.read"
RULE "Read Only Crystaline Access to Protein AssetType"
IF
user group in "Crystaline"
resource type equal "assettype" AND
resource attribute "Material Library Type" in "Proteins"
THEN
grant "entity.read"
RULE "Read Only Crystaline Access to Compound Assets"
IF
user group in "Crystaline"
resource type equal "asset" AND
resource attribute "Material Library Type" in "Compounds"
THEN
grant "entity.read"
RULE "Read Only Crystaline Access to Protein Assets"
IF
user group in "Crystaline"
resource type equal "asset" AND
resource attribute "Material Library Type" in "Proteins"
THEN
grant "entity.read"