-
Notifications
You must be signed in to change notification settings - Fork 38
New biomol fields #400
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
New biomol fields #400
Changes from 5 commits
eca24df
572a29f
173172f
5911d53
05a8fed
76f690c
1f5650d
a8781ac
ac6ed65
55f71e2
534ec8d
f865a5a
af3c817
616019c
bd3e9e1
ce93c9d
a875aaf
a1ddd88
a0ee16a
c0ea1ac
af14d72
7610146
c38075c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -2465,6 +2465,154 @@ Relationships with calculations MAY be used to indicate provenance where a struc | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Appendices | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ========== | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Domain Specific Fields | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ---------------------- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| The fields below are all optional and are only used within specific research fields. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Every field has a standard domain-specific prefix. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| biomol_chains | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ~~~~~~~~~~~~~ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - **Description**: For each chain in the system there is a dictionary that describes this chain. Chains are groups of related residues (e.g. a polymer). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Databases are allowed to add more properties as long as the properties are prefixed with the database specific prefix. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - **Type**: list of dictionaries with the properties: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - :property:`name`: string (REQUIRED) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - :property:`residues`: list of integers (REQUIRED) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - :property:`types`: list of strings | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - :property:`sequences`: list of strings | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - :property:`sequence_types`: list of strings | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - **Requirements/Conventions**: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - **Query**: Support for queries on this property is OPTIONAL. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| If supported, only a subset of the filter features MAY be supported. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - **name**: The chain name/letter. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - **residues**: A list of integers referring to the index of :field:`biomol_residues`, that belong to this chain. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| The list SHOULD NOT be empty. The index of the first residue is 0. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - **types**: A list of custom tags/labels specifying the type of molecules this chain contains (e.g. 'protein'). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| This field is useful as an overview of every chain and as a query target for the structure. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Labels in this field are non-standard. Every implementation may use different labels according to its needs. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - **sequences**: A list of residue sequences in current chain. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - **sequence_types**: A list of tags specifying the type of each sequence in the :property:`sequences` field. The type of a sequence is defined by its components (e.g. 'aminoacids'). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - There SHOULD NOT be two or more chains with the same :property:`name`. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Values in :property:`name` SHOULD be in capital letters. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Values in :property:`name` SHOULD NOT be longer than 1 character when the number of chains is not greater than the number of letters in English alphabet (26). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Values in :property:`sequences` SHOULD be in capital letters. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Number of values in :property:`sequences` and :property:`sequence_types` MUST match. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| - Number of values in :property:`sequences` and :property:`sequence_types` MUST match. | |
| - The number of values and their order in :property:`sequences` and :property:`sequence_types` MUST match. |
JPBergsma marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
d-beltran marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
d-beltran marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| "name": "PHE", | |
| "number": 17, | |
| "insertion_code": null, | |
| "sites":[0,1,2,3, ...] | |
| }, | |
| { | |
| "name": "ASP", | |
| "number": 18, | |
| "insertion_code": null, | |
| "sites":[17,18,19,20, ...] | |
| }, | |
| { | |
| "name": "LEU", | |
| "number": 18, | |
| "insertion_code": "A", | |
| "sites":[29,30,31, ...] | |
| "name": "PHE", | |
| "number": 17, | |
| "insertion_code": null, | |
| "sites":[0,1,2,3, ...] | |
| }, | |
| { | |
| "name": "ASP", | |
| "number": 18, | |
| "insertion_code": null, | |
| "sites":[17,18,19,20, ...] | |
| }, | |
| { | |
| "name": "LEU", | |
| "number": 18, | |
| "insertion_code": "A", | |
| "sites":[29,30,31, ...] |
For me the indentation levels were not consistent so I try to correct them here.
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you not duplicating data here? It seems that the sequences already occur in the biomol_chains field. It would perhaps be better to make a reference from the biomol_chains to these sequences.
Is the main point of this field not to enable querying on the sequences?
If that is the case, it may be better to set the query ability to SHOULD.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are right, data would be duplicated.
I was thinking that it could be better specifying which chains (and even which residues) are included on each sequence, by their indices, and then removing the sequences and sequence_types fields on biomol_chains.
Actually, instead of making new fields for this we could reshape sequences like a list of dictionaries, to make it coherent with the other biomol field formats. What do you think?
biomol_sequences
~~~~~~~~~~~~~~~~
- **Description**: A list of residue sequences in current structure.
Every sequence is a dictionary which includes the sequence itself and the type of sequence it is.
Every sequence may include a list of chain and residue indices.
Sequences may be grouped and ordered in any form (e.g. by chains, by fragments of covalently bonded atoms, etc.) as long as they make sense when querying structures by sequence.
- **Type**: list of dictionaries with the properties:
- :property:`sequence`: string (REQUIRED)
- :property:`type`: string (REQUIRED)
- :property:`chains`: list of integers
- :property:`residues`: list of integers
- **Requirements/Conventions**:
- **Query**: Queries on this property SHOULD be supported.
- **sequence**: A string with a letter for each residue in the sequence. Letters SHOULD be capital letters.
- **type**: The type of a sequence is defined by its components (e.g. 'aminoacids').
- **chains**: A list of integers referring to indices in :field:`biomol_chains` for chains which include this sequence totally or partially.
- **residues**: A list of integers referring to indices in :field:`biomol_residues` for residues included in the sequence.
Indices start the count at 0.
There MUST NOT be repeated indices both in :property:`chains` and :property:`residues`.
- **Examples**:
.. code:: jsonc
{
"biomol_sequences":[
{
sequence: 'MSHHWGYG',
type: 'aminoacids'
},
{
sequence: 'GATTACA',
type: 'nucleotides'
}
]
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could indeed turn the sequences into a dictionary.
I was still wondering whether there is a clear hierarchical structure? (That a chain can have one or more sequences, but a sequence can not contain more than one chain? In that case, we would not need to duplicate the residues.
I was also wondering how the situation is handled, where there are multiple chains with the same sequence.
Will there be multiple sequence entries with the same sequence ? My idea was to make a sequence unique, so it only occurs once in the biomol_sequence field. But if you include the residues, you would need to have a separate sequence entry for each chain.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was still wondering whether there is a clear hierarchical structure? (That a chain can have one or more sequences, but a sequence can not contain more than one chain? In that case, we would not need to duplicate the residues.
In my previous suggestion the chains property is a list of integers so a sequence may contain more than one chain. This is important since a polymer may be splitted in several chains. In the other hand, a chain may contain the whole sequence of a polymer and more things at the same time, so not all residues in the chain would be part of the sequence. Then listing residues in the chain makes sense.
I was also wondering how the situation is handled, where there are multiple chains with the same sequence.
Will there be multiple sequence entries with the same sequence ? My idea was to make a sequence unique, so it only occurs once in the biomol_sequence field. But if you include the residues, you would need to have a separate sequence entry for each chain.
I did not think about this and you are right. Then we can forget about residues to make everything easier.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would advise standardizing labels at least for the most common molecule types to benefit the queryability of the field. Implementations could use their own labels, but prefixed with their own database-specific prefixes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good idea. This way we could save a lot of work.
I have been searching for references for our labels in the current mmCIF format (the future PDB standard) and this is the best I have found. They are meant for assemblies and they do not totally suit me, but I will try to resemble them.
So I suggest the standard labels to be the following: 'PROTEIN', 'NUCLEIC ACID', 'CARBOHYDRATES', 'LIPID', 'MEMBRANE', 'LIGAND', 'ION', 'SOLVENT', 'OTHER'.
If you agree I will commit changes soon.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, it seems like a good idea to define these labels.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I very much like basing on mmCIF. Maybe there is already a JSON representation for mmCIF data?
These labels sound very good. I would just render them in lowercase and describe the use of prefixes for custom labels in the form of
<prefix>:<label>.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In a fast search I found several mmCIF to JSON parsers and one of them seems to be the official one.
Allright