Code Monkey home page Code Monkey logo

atom3d's Introduction

ATOM3D: Tasks On Molecules in 3 Dimensions

Documentation Status Package

ATOM3D enables machine learning on three-dimensional molecular structure.

Features

  • Access to several datasets involving 3D molecular structure.
  • Sharded data format for storing lots of molecules (and associated metadata).
  • Utilities for splitting/filtering data based on many criteria.

Reference

We provide an overview on ATOM3D and details on the preparation of all datasets in our preprint:

R. J. L. Townshend, M. Vögele, P. Suriana, A. Derry, A. Powers, Y. Laloudakis, S. Balachandar, B. Anderson, S. Eismann, R. Kondor, R. B. Altman, R. O. Dror "ATOM3D: Tasks On Molecules in Three Dimensions", arXiv:2012.04035

Please cite this work if some of the ATOM3D code or datasets are helpful in your scientific endeavours. For specific datasets, please also cite the respective original source(s), given in the preprint.

Installation

Install with:

make requirements

To use rdkit functionality, please install within conda:

conda create -n atom3d python=3.6 pip rdkit
conda activate atom3d
make requirements

Usage

LMDB datasets

LMDB allows for compressed, fast, random access to your structures, all within a single database. Currently, we support creating LMDB datasets from PDB files, silent files, and xyz files.

Creating an LMDB dataset

From command line:

python -m atom3d.datasets PATH_TO_PDB_DIR PATH_TO_LMDB_OUTPUT --filetype {pdb,silent,xyz,xyz-gdb} 

Loading an LMDB dataset

From python:

from atom3d.datasets import LMDBDataset

dataset = LMDBDataset(PATH_TO_LMDB)
print(len(dataset))  # Print length
print(dataset[0])  # Print 1st entry

From C++:

We provide example C++ code to load the LMDB datasets here.

Sharded datasets

An HDF5 based data format that allows for keyed indexing of structures.

Loading a sharded dataset

From python:

import atom3d.shard.shard as sh

# Load dataset split into fragments (or shards).
sharded = sh.Sharded.load('sharded/candidates/structures@21')

# Iterate through shards.
for shard_num in range(sharded.get_num_shards()):
  structures = sharded.read_shard(shard_num)
  # You can also load associated metadata.
  labels = sharded.read_shard(shard_num, 'labels')

Contribute

Support

If you are having issues, please let us know. We have a mailing list located at: [email protected]

License

The project is licensed under the MIT license.

atom3d's People

Contributors

martinvoegele avatar raphtown avatar psuriana avatar awfderry avatar yiannil avatar everyday847 avatar

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.