Skip to main content

Generate Mol* views using this simple Python library, which allows you to compose complex scenes in a step-wise manner.

Project description

MolViewSpec

MolViewSpec provides a generic description of typical visual scenes that may occur as part of molecular visualizations. A tree format allows the composition of complex scene descriptors by combining reoccurring nodes that serve as building blocks.

Nodes can be nested to allow chaining of operations as child nodes will be applied to the result of the operation described by its parent node.

The corresponding MolViewSpec tree is provided in JSON and may look like this:

{
  "version": 6,
  "root": {
    "kind": "root",
    "children": [
      {
        "kind": "download",
        "params": {
          "url": "https://www.ebi.ac.uk/pdbe/entry-files/download/1cbs_updated.cif"
        },
        "children": [
          {
            "kind": "parse",
            "params": {
              "format": "mmcif"
            },
            "children": [
              {
                "kind": "structure",
                "params": {
                  "kind": "model"
                },
                "children": [
                  {
                    "kind": "component",
                    "params": {
                      "selector": "all"
                    },
                    "children": [
                      {
                        "kind": "representation",
                        "params": {
                          "type": "cartoon"
                        }
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}

Mol* is the reference implementation for reading MolViewSpec files.

The Tree Root

Every tree starts with a single root node, which contains all nodes in a structure fashion, and a version number.

{
  "root": {},
  "version": 6
}

The root Node

All nodes of the tree must define their kind and may have 0 or more child nodes (children). The root is a special node with a kind of root that contains a collection of children.

{
  "kind": "root",
  "children": []
}

The download Node

Node types other than the root may contain an optional params property. A common action is loading of 3D structure data. This is done using a node of kind download. In this context, params can for example provide the url from which data will be loaded from.

{
  "kind": "download",
  "children": [],
  "params": {
    "url": "https://www.ebi.ac.uk/pdbe/entry-files/download/1cbs_updated.cif"
  }
}

The parse Node

The previous download operation merely obtains the resources from the specified URL. To make it available to the viewer, the data must be parsed. This operation expects that the format is defined (in this case mmCIF is parsed).

{
  "kind": "parse",
  "children": [],
  "params": {
    "format": "mmcif"
  }
}

The structure Node

There are different ways to load the content of a mmCIF file. Common actions are loading the 1st biological assembly or loading the deposited coordinates (also called "asymmetric unit" or "model coordinates"). The action is defined as kind. In this example, the model coordinates are loaded.

{
  "kind": "structure",
  "children": [],
  "params": {
    "kind": "model"
  }
}

The component Node

At this point, the loaded file is available in the viewer but nothing is visualized yet. Several selection (called "components") can be created. The example creates a component that includes everything using a selector set to all. Other options could be a selection for protein chains, nucleic acids, ligands etc. Components are reusable groups of atoms, residues, or chains, which can be interacted with programmatically.

{
  "kind": "component",
  "children": [],
  "params": {
    "selector": "all"
  }
}

The representation Node

The representation nodes applies to previously created components, which is provided by the parent node of a representation node. Representations are dedicated visuals that constitute a component. In this example, the selection from above -- which selects the entire structure -- and depicts it as cartoon by specifying cartoon as type.

{
    "kind": "representation",
    "params": {
      "type": "cartoon"
    }
}

Expanding the Tree

Nodes can have 0 or more nodes as children. It is, for example, possible to create multiple component nodes based on a particular structure node to create different representations for different types of molecules.

Development

Lint

make format
make mypy

Publish the Python Library

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

molviewspec-0.0.1a8.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

molviewspec-0.0.1a8-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file molviewspec-0.0.1a8.tar.gz.

File metadata

  • Download URL: molviewspec-0.0.1a8.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for molviewspec-0.0.1a8.tar.gz
Algorithm Hash digest
SHA256 29a231e246eee6e6bfe3e533476dc12ab260649beb9b372ec78d98bcfbb0e9c4
MD5 6e0c9b7b19561824acd97f9c76c520b3
BLAKE2b-256 f4a434766b51c7b4b5b046ec8650589c8da90239d87841519da3ebf37bb4ddde

See more details on using hashes here.

File details

Details for the file molviewspec-0.0.1a8-py3-none-any.whl.

File metadata

File hashes

Hashes for molviewspec-0.0.1a8-py3-none-any.whl
Algorithm Hash digest
SHA256 df176dee531e6fd44462b1f0cde6d1543e6f80a5b7ee4b182fa0bf78ca57ca5f
MD5 3e5cdfa22e883713cc2c91aef8a37937
BLAKE2b-256 a49049d0fd03ea547f18774ef0aefb76cb071b56f5b24a29046b89831ed85aba

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page