Code Monkey home page Code Monkey logo

Comments (4)

wojdyr avatar wojdyr commented on June 13, 2024

This cif file from MMDB is different from cif files from the PDB, and not conforming to the spec, in many ways.
The particular problem here is that _atom_site.label_entity_id is set to 1 for all atoms. In mmCIF files, each so-called entity is explicitly assigned one of the types: polymer, branched, non-polymer, water. Here, this is missing, but since all residues are explicitly assigned the same entity_id, it means that they are all of the same type – gemmi assumes that this type is polymer. I'd need to add a sanity check to detect when entity_id is a dummy value.

As a workaround, you can call:

structure.add_entity_types(overwrite=True)

which re-assigns entity types. Then removing ligands/waters should work. The overwrite option was fixed recently, it might not work in 0.6.3.

Anyway, it'd be better to not use mmCIF files like this.

from gemmi.

FilomenoSanchez avatar FilomenoSanchez commented on June 13, 2024

Thanks for the information. I agree that ideally it would be better to not use such mmCIF files but I have no other option at the moment. Regarding the suggested fix structure.add_entity_types(overwrite=True), is this in anyway similar to gemmi::setup_entities from v0.6.2? We are currently using gemmi::setup_entities with the newly created structures but the problem persists. Also the approach you suggested in pumble mmdb->gemmi->mmCIF->gemmi seems not to solve the issue. It might be that we need to wait until serialization format is available...

from gemmi.

FilomenoSanchez avatar FilomenoSanchez commented on June 13, 2024

Hi @wojdyr, sorry to bother you with this again. I've got another file (also originating from mmdb) where the _atom_site.label_entity_id is set to 1 for atoms in residues, 2 for waters and 3 for the ligand, link to the file here. In this case, gemmi::remove_ligands_and_waters can remove the waters but it seems unable to remove the ligands? Any idea why?

from gemmi.

wojdyr avatar wojdyr commented on June 13, 2024

add_entity_types(overwrite=True) overwrites entity types that were assigned before.
setup_entities() calls add_entity_types(), but without the overwrite flag, which doesn't change the types that were assigned previously.

I changed now how mmcif is read: if entity types are not specified explicitly in the file, they are not assigned automatically inside read_structure(). The PDB has conventions in its files that distinguish polymers from non-polymers and branched entities: label_seq_id is null for all residues except polymers, and each non-polymer residue has separate label_asym_id. But other programs may not observe these conventions, so let's not rely on it.

from gemmi.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.