Skip to main content
Donate to the Python Software Foundation or Purchase a PyCharm License to Benefit the PSF! Donate Now

creates smooth gifs of rotating molecules

Project description

molgif

create smooth gifs of rotating molecules

Examples

Automatically rotate molecule for better view

import molgif
import ase.build

# load in molecule (ase.Atoms object)
molecule = ase.build.molecule('biphenyl')

# specify save path
save_path = 'biphenyl.gif'

# create rotating gif with rot_gif function
molgif.rot_gif(molecule, save_path, auto_rotate=True)

Specify color of each atom

# can be a string for one color or a list of custom colors
rainbow = ['red', 'orange', 'yellow', 'green', 'blue', 'violet'] * 4

# list much match number of atoms
rainbow = rainbow[:len(molecule)]

molgif.rot_gif(molecule, save_path, auto_rotate=True,
               colors=rainbow)

Use dictionary to quickly color by atom type

# default colors will be used for types not specified
molgif.rot_gif(molecule, save_path, auto_rotate=True,
               colors=dict(C='hotpink'), add_legend=True)

Anchor an atom to be at the center of rotation

# define index of atom to anchor
anchor = 3

colors = ['white'] * len(mol)
colors[anchor] = '#0892d0'

molgif.rot_gif(mol, path, auto_rotate=True,
               colors=colors, anchor=anchor)

Add a legend

molgif.rot_gif(molecule, save_path, autorotate=True,
               add_legend=True)

Adjust loop time and FPS

# loop_time = time to complete one rotation (seconds)
molgif.rot_gif(molecule, save_path, auto_rotate=True,
               loop_time=2, fps=60)

Turn off bonds and scale atomic sizes

molgif.rot_gif(molecule, save_path, auto_rotate=True,
               add_bonds=False, scale=0.9)

Switch rotation axis

# switch between x, y (Default), or z
molgif.rot_gif(molecule, save_path, auto_rotate=True,
               rot_axis='z')

Switch rotation direction and adjust bond widths

# counterclockwise (ccw)[Default] or clockwise (cw)
# based on rot_axis
# 'x': view from left
# 'y': view from top
# 'z': view into screen
direction = 'cw'

# specify bond width in Angstrom
bond_width = 0.4

molgif.rot_gif(molecule, save_path, auto_rotate=True,
               direction=direction, bond_width=bond_width)

Visualize charges and include a colorbar

import random

# random charges [-1, 1]
chgs = [-1 + 2 * random.random() for i in molecule]

molecule.set_initial_charges(chgs)

molgif.rot_gif(molecule, save_path, auto_rotate=True,
               use_charges=True)

Requirements

  • ase
  • matplotlib
  • ImageMagick (command line tools must be installed)

Project details


Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
molgif-0.1.0.tar.gz (9.0 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page