Skip to main content

PyMolinfo provides comprehensive molecular information and analysis.

Project description

🌟 PyMolinfo

PyMolinfo

Downloads PyPI Python Version License

PyMolInfo (previously molinfo) is a Python package designed for advanced molecular analysis by converting molecular structures into graph representations. This package enables researchers and chemists to load various molecular file formats, transform them into graphs, and extract valuable information through graph-based methods.

✨ Features

  • File Format Support: Load molecular data from multiple file formats, including SDF and JSON (soon).

  • Graph Conversion: Transform molecular structures into graph representations for detailed analysis.

  • Functional Group Identification: Detect and analyze functional groups within the molecular graph.

  • Distance Measurement: Compute distances between atoms and bonds in the molecular graph.

  • Bond Angle Calculation: Measure angles between bonds using graph-based methods.

🚀 Getting Started

To use PyMolinfo, simply install the package and import it into your Python script. Refer to the example code snippets for a quick start.

📚 Binder

Test this package by launching our example notebooks on Binder:

  • Load a sdf file: Launch Binder

  • Visualize a compound: Launch Binder

  • Check and count functional groups: Launch Binder

  • Create custom functional groups: Launch Binder

🌐 Google Colab

You can use the following code to run PyMolinfo in Google Colab:

  • Version 1.6.0: Open In Colab

  • Version < 1.6.0: Open In Colab

🛠️ Installation

Install molinfo with pip

  pip install PyMolinfo

📖 Documentation

For detailed documentation, please visit molinfo.readthedocs.io/en/latest/.

💡 Examples

Import package as:

import pyMolinfo as mi

# check version

print(mi.__version__)
  • Create a graph
# sdf file

sdf_file_name_1 = 'test\Structure2D_COMPOUND_CID_261.sdf'

sdf_file = os.path.join(os.getcwd(), sdf_file_name_1)

# create graph

res = mi.create_graph(sdf_file)

print(type(res))

print(res)
  • Display a graph:
# visualize compound by sdf file

mi.g3d(sdf_file)
  • Check the availability of functional groups:
# check functional groups

res, comp1 = mi.check_functional_group(sdf_file, res_format='dataframe')

print(res)
  • Calculate angle/distance between atoms
# distance matrix

res_distance = comp1.distance_matrix(dataframe=True)

print(res_distance)



# distance between two atoms

distance = comp1.distance_atoms(['O1', 'C2'])

print(distance)



# angle between atoms

angle = comp1.angle_atoms(['O1', 'C2', 'H3'])

print(angle)



# dihedral angle

dihedral = comp1.d_angle_atoms(['H6', 'O1', 'C2', 'H3'])

print(dihedral)

Creating Custom Functional Groups

To create custom functional groups, you need to define the bonds between atoms using the following format:

[atom1-element][atom1-number][bond-type][atom2-element][atom2-number]

Here are the formats for different bond types:

  • Single Bond: Represented as C1-C2 where C1 and C2 are the atoms connected by a single bond.

  • Double Bond: Represented as C1=C2 where C1 and C2 are the atoms connected by a double bond.

  • Triple Bond: Represented as C1#C2 where C1 and C2 are the atoms connected by a triple bond.

Examples

  1. Cyanide Group: A cyanide group can be represented as N1#C2.
custom_functional_group = [

    {'cyanide': ["N1#C2"]},

]
  1. Custom Functional Group: A custom functional group with a single and a double bond can be represented as N1-C2 and C2=O3.
custom_functional_group = [

    {'custom_fg': ["N1-C2", "C2=O3"]},

]
  1. Multiple Functional Groups: You can define multiple functional groups in a list.
custom_functional_group = [

    {'N#C': ["N1#C2"]},

    {'custom_fg': ["N1-C2", "C2-H3"]},

    {'NC=O': ["N1-C2", "C2=O3"]},

]

Once you have defined your custom functional groups, you can create and visualize them as follows:

# create custom graph

custom_g = mi.create_custom_functional_groups(custom_functional_group)



# visualize custom graph

# custom_g.d("cyanide")



# find custom functional groups in a compound

res = mi.check_functional_group(

    sdf_file, functional_groups=[custom_g])

print(res)

❓ FAQ

For any question, contact me on LinkedIn

👥 Authors

@sinagilassi

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

pymolinfo-1.8.8.tar.gz (50.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pymolinfo-1.8.8-py3-none-any.whl (53.9 kB view details)

Uploaded Python 3

File details

Details for the file pymolinfo-1.8.8.tar.gz.

File metadata

  • Download URL: pymolinfo-1.8.8.tar.gz
  • Upload date:
  • Size: 50.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.8

File hashes

Hashes for pymolinfo-1.8.8.tar.gz
Algorithm Hash digest
SHA256 0f275fa164327f23db630f43d7385c49422294cfcc3bfe064e01a319511ab1f2
MD5 75e59812a79e945bd4ccc953f21de19d
BLAKE2b-256 26baab5531ca1da7c09cca7f0c0215b20234d604538a96f1527a3f02e8787f10

See more details on using hashes here.

File details

Details for the file pymolinfo-1.8.8-py3-none-any.whl.

File metadata

  • Download URL: pymolinfo-1.8.8-py3-none-any.whl
  • Upload date:
  • Size: 53.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.8

File hashes

Hashes for pymolinfo-1.8.8-py3-none-any.whl
Algorithm Hash digest
SHA256 61dc0c7c1f0d075ba550e1b45d35a96049d4244c2dd7412b900c49fb4089b4bc
MD5 d08211b3c64c458cfb3d2f775fa94fc3
BLAKE2b-256 6503e868f53c773b1fc99f77f4ee23968da7f4dc0b0a8b5bce30fa5d506b4455

See more details on using hashes here.

Supported by

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