I'm trying to programmatically construct a name for each protein subchain in any ribosome from Uniprot in accordance with Ban et. al's 2014 proposal (excerpt given below) using PDB's and Uniprot's APIs. This is to be a part of a bigger ribosomal analysis suite released next year and we would like to standardize the names as much as possible. Ban et. al's proposal: [https://bangroup.ethz.ch/research/nomenclature-of-ribosomal-proteins.html]
I'm however not remotely a biologist (I work in compilers) and would really appreciate some clarification on the way nomenclature works across domains of life and how homology plays into it. This is my naive approach thus far:
- I get a ribosome from PDB let's say (3J9M or 5MYJ or any other for that matter) and split it into protein subchains. So on the order of 20-80 proteins.
- For each protein subchain, I can get all the information in the world on it from Uniprot: names, sequence, organisms containing it, publications, synonymous names, you name it...
- Right now (again, naively) for those proteins that don't already have a new name assigned to them, I take name-synonyms that PDB has plenty of (from various publications, I assume) and scan them with regexes (ex.
/[LS]\d{1,2}/g
) for things like"L8"
or"S15"
. - Thus, for each subchain, I end up with something like
"L15"
or"S28"
in multiple copies (depending on the abundance of synonymous entries in PDB). - The rut i'm in right now is this: having something like
"L15"
to match it to a new "Ban-nomenclature" name: they provide the nomenclature look-up tables in terms of these three "historical" naming conventions(i.e "human", "yeast", "bacteria") and a taxonomic range while all the I have is the ribosomal structure(ex `` from which I got the subchain. I'm sure there's plenty of information that I can get
Could somebody elucidate to me which assumptions I can and cannot make in this field and how exactly to use the taxonomic range?
Say, (i) can I assume that all archean names are the same as bacterial homologs? If I draw a eukaryotic cytoplasmic ribosome, do I match its subchains against yeast column or human column (since both are eukaryotic)?
Somebody suggested that I start grouping these subchains based on sequence, not on a domain and I do have access to each protein's sequence, but I am not sure how to go about it. I was thinking to get each of Ban's new names' UniRef90 cluster, let's say, and then start checking which cluster a given subchain belongs to.
But I'm obviously guessing at this point. Any advice or pointers are very appreciated.