dsehnal / LiteMol

A library/plugin for handling 3D structural molecular data (not only) in the browser.
Other
157 stars 38 forks source link

Using CustomTheme from Custom example to markup regions of Structures #34

Closed CodeGit closed 6 years ago

CodeGit commented 6 years ago

Hi, I'm working on highlighting arbitrary regions of structures using the CustomTheme defined in the Commands example. I've been testing my code by looking at how InterPro or Pfam entries map to structures.

I'm able to create coloured regions correctly using the CustomTheme when looking at structures such as 101m or 4hpq which are comprised of proteins but not when looking at structures containing DNA such as 10mh or 1a31. When looking at 10mh for example, I find that a small part of the DNA molecule is highlighted instead of the protein. This suggests that some aspect of the residue start and end to structure mapping hasn't worked as expected. I suspect the problem is related to how Core.Structure.Query.sequence() method is called, but I'm not really sure.

Do you have any advice on how I should construct a query for a regions of proteins in structures such as 10mh or 1a31?

At the moment I'm attempting to colour a region of 10mh as follows:

var query =Q.sequence( "1", "A", { seqNumber: 12 }, { seqNumber: 319 }, ).compile(); Let me know if you'd like any more details from me. Regards Matloob

dsehnal commented 6 years ago

Hi, 10mh has very weirdly ordered chains/residues.

Also, the default "string" parameter for the asym_id corresponds to the atom_site.label_asym_id CIF field.

You might try Q.sequence( "1", { authAsymId: "A" }, { authSeqNumber: 12 }, { authSeqNumber: 319 }) instead as you probably want to the "author" fields anyway.

David

CodeGit commented 6 years ago

Hi David, Thanks for tip, unfortunately passing authSeqNumber to Query.sequence() didn't work. But the Query.residues() method worked.

const residues = [];
for (let i = fragment.start_residue_number; i <= fragment.end_residue_number; i++) {
     residues.push({ authAsymId: fragment.struct_asym_id, authSeqNumber: i });
}

const query = Q.residues(...residues).compile();

I'm not all that familiar with cif and structure markup in general. What's the difference between the auth values and the non-auth equivalents? Thanks Matloob

dsehnal commented 6 years ago

Yeah, the sequence with auth didn't work because the residues are actually on entity "3", so the selector failed. Currently there is no "sequence" query without having to enter the entity, but it would not be difficult to add it.

I'm not all that familiar with cif and structure markup in general. What's the difference between the auth values and the non-auth equivalents?

For example http://mmcif.wwpdb.org/dictionaries/mmcif_mdb.dic/Items/_atom_site.auth_seq_id.html vs http://mmcif.wwpdb.org/dictionaries/mmcif_mdb.dic/Items/_atom_site.label_seq_id.html

CodeGit commented 6 years ago

great, thanks again