Datamol is a python library to work with molecules.

Overview

Molecular Manipulation Made Easy


Binder PyPI Conda PyPI - Downloads Conda PyPI - Python Version license GitHub Repo stars GitHub Repo stars

Datamol is a python library to work with molecules. It's a layer built on top of RDKit and aims to be as light as possible.

  • 🐍 Simple pythonic API
  • ⚗️ RDKit first: all you manipulate are rdkit.Chem.Mol objects.
  • Manipulating molecules often rely on many options; Datamol provides good defaults by design.
  • 🧠 Performance matters: built-in efficient parallelization when possible with optional progress bar.
  • 🕹️ Modern IO: out-of-the-box support for remote paths using fsspec to read and write multiple formats (sdf, xlsx, csv, etc).

Try Online

Visit Binder and try Datamol online.

Documentation

Visit https://doc.datamol.io.

Installation

Use conda:

mamba install -c conda-forge datamol

Quick API Tour

import datamol as dm

# Common functions
mol = dm.to_mol("O=C(C)Oc1ccccc1C(=O)O", sanitize=True)
fp = dm.to_fp(mol)
selfies = dm.to_selfies(mol)
inchi = dm.to_inchi(mol)

# Standardize and sanitize
mol = dm.to_mol("O=C(C)Oc1ccccc1C(=O)O")
mol = dm.fix_mol(mol)
mol = dm.sanitize_mol(mol)
mol = dm.standardize_mol(mol)

# Dataframe manipulation
df = dm.data.freesolv()
mols = dm.from_df(df)

# 2D viz
legends = [dm.to_smiles(mol) for mol in mols[:10]]
dm.viz.to_image(mols[:10], legends=legends)

# Generate conformers
smiles = "O=C(C)Oc1ccccc1C(=O)O"
mol = dm.to_mol(smiles)
mol_with_conformers = dm.conformers.generate(mol)

# 3D viz (using nglview)
dm.viz.conformers(mol, n_confs=10)

# Compute SASA from conformers
sasa = dm.conformers.sasa(mol_with_conformers)

# Easy IO
mols = dm.read_sdf("s3://my-awesome-data-lake/smiles.sdf", as_df=False)
dm.to_sdf(mols, "gs://data-bucket/smiles.sdf")

Compatibilities

Version compatibilities are an essential topic for production-software stacks. We are cautious about documenting compatibility between datamol, python and rdkit.

datamol python rdkit
0.3 >=3.7,<=3.9 >=2020.09,<=2021.03

CI Status

master
Lib build & Testing GitHub Workflow Status
Code Sanity (linting and type analysis) GitHub Workflow Status
Documentation Build GitHub Workflow Status

Changelogs

See the latest changelogs at CHANGELOG.rst.

License

Under the Apache-2.0 license. See LICENSE.

Authors

See AUTHORS.rst.

Comments
  • change force field to MMFF94s without electorstatic component

    change force field to MMFF94s without electorstatic component

    Proposed change to conformer force field from UFF to MMFF94s_noEstat, inspired by Openeye's Omega force field. In addition to FF change, added filters (ewindow, eratio), to allow high-energy conformers to be filtered out.

    opened by matudor 16
  • [ERROR] Runtime.ImportModuleError: Unable to import module 'app': No module named 'sascorer' Traceback (most recent call last):

    [ERROR] Runtime.ImportModuleError: Unable to import module 'app': No module named 'sascorer' Traceback (most recent call last):

    [ERROR] Runtime.ImportModuleError: Unable to import module 'app': No module named 'sascorer' Traceback (most recent call last):
    

    Posting so it's logged somewhere.

    Is this a new dependency for datamol? Disclaimer, I didn't update datamol in my project (lambdomics) since a couple months (I was at 0.5 before upgrading). sascorer seems to have appear in commit 8576d4b with the descriptors module, and this module is imported by default when using import datamol as dm .

    sascorer seems to be a module coming from RDKit but I'm not sure. Is it just a matter of making sure to import RDKit before datamol if you use both in your project?

    bug question 
    opened by MichelML 14
  • Added graph matching and template re-ordering

    Added graph matching and template re-ordering

    Is this relevant to datamol? If so, I'll improve the PR and make some tests.

    Functions to re-order a molecule from a template ordering, and to match molecules with different orderings.

    Checklist:

    • [x] Add tests to cover the fixed bug(s) or the new introduced feature(s) (if appropriate).
    • [x] Update the API documentation is a new function is added or an existing one is deleted.
    • [x] Added a news entry.
      • copy news/TEMPLATE.rst to news/my-feature-or-branch.rst) and edit it.

    opened by DomInvivo 8
  • better sanitize handling in read_sdf

    better sanitize handling in read_sdf

    Checklist:

    • [x] Add tests to cover the fixed bug(s) or the new introduced feature(s) (if appropriate).
    • [x] Added a news entry.
      • copy news/TEMPLATE.rst to news/my-feature-or-branch.rst) and edit it.

    Calling dm.sanitize_mol delete the conformers which should not happens by default since you often want the 3d structure when you read an SDF file.

    (bug spotted while running unit tests on berth with a recent version of datamol)

    opened by hadim 7
  • Mc edits

    Mc edits

    Made small changes to tutorials and documentation Checklist:

    • [x] Removed repeated lines in docs/tutorials/The_Basics.ipynb
    • [x] Removed comments around a couple lines in docs/tutorials/Preprocessing_Molecules.ipynb

    Other questions

    • [x] Fragment and scaffold tutorial does not seem to load correctly. Is it still a wip?
    • [x] In the API section, datamol.actions contains this .. warning:: This is computationally expensive. Should the formatting around 'warning' be changed?
    • [x] Same idea as above in datamol.fragments, but with ..note ::

    opened by craigmichaelm 7
  • `dm.read_smi()` copies a file to an already existing location

    `dm.read_smi()` copies a file to an already existing location

    When I try to load a remote .smi file using Datamol, I run into the following exception:

    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    (...)
    
    File ~/mambaforge/envs/mood/lib/python3.10/site-packages/datamol/io.py:320, in read_smi(urlpath)
        318 if not fsspec.utils.can_be_local(str(urlpath)):
        319     active_path = pathlib.Path(tempfile.mkstemp()[1])
    --> 320     dm.utils.fs.copy_file(urlpath, active_path)
        322 # Read the molecules
        323 supplier = rdmolfiles.SmilesMolSupplier(str(active_path), titleLine=0)
    
    File ~/mambaforge/envs/mood/lib/python3.10/site-packages/datamol/utils/fs.py:250, in copy_file(source, destination, chunk_size, force, progress, leave_progress)
        247     raise ValueError(f"The file being copied does not exist or is not a file: {source}")
        249 if not force and is_file(destination_file):  # type: ignore
    --> 250     raise ValueError(f"The destination file to copy already exists: {destination}")
        252 with source_file as source_stream:
        253     with destination_file as destination_stream:
    
    ValueError: The destination file to copy already exists: /tmp/tmpkzrm7u58
    

    Seems like this function is not up-to-date with recent changes in the dm.utils.fs module? Seems to me like active_path should be set differently to a non-existing file.

    bug 
    opened by cwognum 6
  • New align + news descriptors + some cleaning

    New align + news descriptors + some cleaning

    Checklist:

    • [x] Add tests to cover the fixed bug(s) or the new introduced feature(s) (if appropriate).
    • [ ] Update the API documentation is a new function is added or an existing one is deleted.
    • [x] Added a news entry.
      • copy news/TEMPLATE.rst to news/my-feature-or-branch.rst) and edit it.

    I still need to add the new align code.

    opened by hadim 6
  • expose clean_it arg

    expose clean_it arg

    Exposing this arg can prevent errors for certain problematic molecules when enumerating stereochemistry.

    E.g.

    sm = "N=1C(NC2CC2)=C3C(=NC1)N(/C=C/C=4C=C(C=CC4C)C(=O)NC=5C=C(C=C(C5)N6CCN(CC6)C)C(F)(F)F)C=N3"
    mol = datamol.to_mol(sm)
    
    datamol.enumerate_stereoisomers(mol) # Fails
    datamol.enumerate_stereoisomers(mol, clean_it=False) # Succeeds
    
    opened by jdhorwood 6
  • Use native batch_size from joblib

    Use native batch_size from joblib

    Fix #58 by replacing Sequence by Iterable.

    I had the same bug a few hours ago. @DomInvivo

    Checklist:

    • [x] Add tests to cover the fixed bug(s) or the new introduced feature(s) (if appropriate).
    • [ ] Update the API documentation is a new function is added or an existing one is deleted.
    • [x] Added a news entry.
      • copy news/TEMPLATE.rst to news/my-feature-or-branch.rst) and edit it.

    opened by maclandrol 6
  • add sanitize arg in read_sdf

    add sanitize arg in read_sdf

    Checklist:

    • [x] Add tests to cover the fixed bug(s) or the new introduced feature(s) (not needed).
    • [ ] Added a news entry.
      • copy news/TEMPLATE.rst to news/my-feature-or-branch.rst) and edit it.

    opened by Ishan-Kumar2 6
  • More options for matching with ambiguity

    More options for matching with ambiguity

    Added more options for allow_ambiguous_match, passed as strings. Notably, option "best" allows to find the match with the least amount of errors in terms of atomic number, bond type, and bond stereo.

    Checklist:

    • [x] Add tests to cover the fixed bug(s) or the new introduced feature(s) (if appropriate).
    • [x] Update the API documentation is a new function is added or an existing one is deleted.
    • [x] Added a news entry.
      • copy news/TEMPLATE.rst to news/my-feature-or-branch.rst) and edit it.

    opened by DomInvivo 5
  • Move the fs module to its dedicated section in the docs

    Move the fs module to its dedicated section in the docs

    This is a very useful module, making it under the utils section undermines its visibility imho.

    fsspec ftw

    ref: https://doc.datamol.io/stable/api/datamol.utils.html#datamol.utils.fs

    documentation 
    opened by MichelML 1
  • Add dm.read_records in io module

    Add dm.read_records in io module

    This would simplify things when working in the context of querying a rest api where the json response contains a list of molecules. Quick REST API examples:

    • Molport
    • Chemspace
    • Mcule
    • CDD Vault
    • Dotmatics
    • PubChem
    • Etc...
    enhancement low-priority 
    opened by MichelML 7
  • rdkit.Chem.GetSubstructMatch called in dm.scaffold.fuzzy_scaffolding takes rdkit mol as input, not str

    rdkit.Chem.GetSubstructMatch called in dm.scaffold.fuzzy_scaffolding takes rdkit mol as input, not str

    According to the datamol documentation and code, the enforce_subs parameter of dm.scaffold.fuzzy_scaffolding should be a list of str (presumably SMILES or SMARTS). However, passing in a list of str gives the following rdkit argument error:

    image

    This is because the dm.scaffold.fuzyy_scaffolding function passes the enfocre_subs parameter to rdkit.Chem.GetSubstructMatch, which should take as input an rdkit molecule object, not a string.

    ~~Additionally, upon loading the pattern SMILES as molecule object and passing that into the enforce_subs parameter, the function runs without error but dm.scaffold.fuzyy_scaffolding will miss the loaded pattern:~~

    Edit: Image removed. This was a bad example I falsely thought wasn't capturing an enforce_subs r-group. Will find a better example.

    bug documentation 
    opened by colinrsmall 3
  • `dm.align.template_align` modify the global rdkit behaviour

    `dm.align.template_align` modify the global rdkit behaviour

    See https://github.com/datamol-org/datamol/blob/013d93012abb7fb309a382d8b3eedaca4c2f4425/datamol/align.py#L107

    We should not modify the global behaviour. The best is probably to put back the original value if it has been modified. This is not ideal in when doing multithreading.

    bug low-priority 
    opened by hadim 2
  • Refactor `dm.scaffold.fuzzy_scaffolding`

    Refactor `dm.scaffold.fuzzy_scaffolding`

    dm.scaffold.fuzzy_scaffolding is quite a powerful function but its output is often hard to understand and also process for downstream task.

    We could keep backward compat by keeping dm.scaffold.fuzzy_scaffolding and propose an alternative function that will do the same kind of processing under the hood but return a data structure that is more intuitive and easier to use (a dataframe or a list of dataframe?).

    enhancement low-priority 
    opened by hadim 0
Releases(0.8.8)
  • 0.8.8(Dec 15, 2022)

  • 0.8.7(Nov 29, 2022)

    Added:

    • Add multiple utilities to work with mapped SMILES with hydrogens.
    • Add dm.clear_atom_props() to remove atom's properties.
    • Add dm.clear_atom_map_number() to remove the atom map number property.
    • Add dm.get_atom_positions() to retrieve the atomic positions of a conformer of a molecule.
    • Add dm.set_atom_positions() to add a new confomer to a molecule given a list of atomic positions.

    Changed:

    • Add new arguments to dm.to_mol: allow_cxsmiles, parse_name, remove_hs and strict_cxsmiles. Refers to the docstring for the details.
    • Set copy to True by default to dm.atom_indices_to_mol().
    • Allow to specify the property keys to clear in dm.clear_mol_props(). If not set, the original default beahviour is to clear everything.

    Authors:

    • Hadrien Mary
    Source code(tar.gz)
    Source code(zip)
    datamol-0.8.7.tar.gz(3.42 MB)
  • 0.8.6(Nov 28, 2022)

  • 0.8.5(Nov 28, 2022)

    Added:

    • Support for max_num_mols in dm.read_sdf(). Useful when files are large and debugging code.
    • Support for returning the invalid molecules in dm.read_sdf. Useful when we need to know which one failed.
    • Support for more compression formats when reading SDF files using fssep.open(..., compression="infer").
    • Add CODEOWNERS file.
    • Add dm.descriptors.n_spiro_atoms and dm.descriptors.n_stereo_centers_unspecified.

    Changed:

    • Overload output types for dm.read_sdf and dm.data.*.
    • Reduce tests duration (especially in CI).

    Authors:

    • DomInvivo
    • Hadrien Mary
    Source code(tar.gz)
    Source code(zip)
    datamol-0.8.5.tar.gz(3.42 MB)
  • 0.8.4(Nov 11, 2022)

  • 0.8.3(Nov 5, 2022)

  • 0.8.2(Oct 31, 2022)

  • 0.8.1(Oct 28, 2022)

  • 0.8.0(Oct 28, 2022)

    Added:

    • dm.Atom and dm.Bond types.
    • Add RDKit as a pypi dep.
    • Add datamol.hash_mol() based on rdkit.Chem.RegistrationHash.

    Changed:

    • RDKit 2022.09: use Draw.shouldKekulize instead of Draw._okToKekulizeMol.
    • RDKit 2022.09: don't use dm.convert._ChangeMoleculeRendering for RDKit >=2022.09.

    Authors:

    • Hadrien Mary
    Source code(tar.gz)
    Source code(zip)
    datamol-0.8.0.tar.gz(3.42 MB)
  • 0.7.18(Oct 18, 2022)

  • 0.7.17(Oct 14, 2022)

  • 0.7.16(Oct 12, 2022)

    Changed:

    • Bump upstream GH actions versions.
    • dm.fs.copy_dir now uses the internal fsspec copy when the two source and destination fs are the same. It makes the copy much faster.

    Fixed:

    • Use os.PathLike to recognize a broader range of string-based path inputs in the dm.fs module. It prevents file objects such as py._path.local.LocalPath not being recognized as path.

    Authors:

    • Hadrien Mary
    Source code(tar.gz)
    Source code(zip)
    datamol-0.7.16.tar.gz(3.36 MB)
  • 0.7.15(Oct 11, 2022)

  • 0.7.14(Oct 3, 2022)

    Added:

    • Add with_atom_indices to dm.to_smiles. If enable, atom indices will be added to the SMILES.

    Changed:

    • Changed the default for dm.fs.is_file() from True`` toFalse`.
    • Refactor the API doc to breakdown all the submodules in individual doc. Thanks to @MichelML for the suggestion.
    • Re-enable pipy activity in rever.

    Fixed:

    • Minor typo in the documentation of dm.conformers.generate()

    Authors:

    • Cas
    • Hadrien Mary
    • Valence-JonnyHsu
    Source code(tar.gz)
    Source code(zip)
    datamol-0.7.14.tar.gz(3.36 MB)
  • 0.7.13(Sep 9, 2022)

  • 0.7.12(Sep 6, 2022)

  • 0.7.11(Sep 4, 2022)

    Added:

    • Add configurations for dev containers based on the micromamba Docker image. More informations about dev container at https://docs.github.com/en/codespaces/setting-up-your-project-for-codespaces/introduction-to-dev-containers.
    • support for two additional forcefields: MMFF94s with and without electrostatic component
    • energies output along with delta-energy to lowest energy conformer

    Changed:

    • API of dm.conformers.generate() to support choice of forcefield. In addition ewindow and eratio flags added to reject high energy conformers, either on absoute scale, or as ratio to rotatable bonds
    • Revamped all the datamol tutorials and add new tutorials. Huge thanks to @Valence-jonnyhsu for leading the refactoring of the datamol tutorials.
    • Improve documentation for dm.standardize_mol()
    • Multiple various docstring and typing improvments.
    • Embed the cdk2.sdf and solubility_*.sdf files within the datamol package to prevent issue with the RDKit config dir.
    • Enable strict mode on the documentation to prevent any issues and inconsistency with the types and docstrings of datamol.
    • Refactor micromamba CI to use latest and simplify it.

    Removed:

    • Remove unused and unmaintained dm.actions and dm.reactions module.
    • Remove copy args from add_hs and remove_hs (RDKit already returns copies).

    Fixed:

    • Errors in ECFP fingerprints that computes FCFP instead of ECFP.

    Authors:

    • Emmanuel Noutahi
    • Hadrien Mary
    • Matt
    Source code(tar.gz)
    Source code(zip)
    datamol-0.7.11.tar.gz(2.95 MB)
  • 0.7.10(Jul 18, 2022)

    Added:

    • New possibilities for ambiguous matching of molecules in the function reorder_mol_from_template

    Changed:

    • Replaced allow_ambiguous_hs_only by the option "hs_only" for the ambiguous_match_mode parameter
    • ambiguous_match_mode is now a String, no longer a bool.

    Deprecated:

    • allow_ambiguous_hs_only is no longer deprecated, but without warning since the feature is brand new.
    • Same for ambiguous_match_mode being a bool.

    Authors:

    • DomInvivo
    • Hadrien Mary
    Source code(tar.gz)
    Source code(zip)
    datamol-0.7.10.tar.gz(1.03 MB)
  • 0.7.9(Jun 17, 2022)

    Added:

    • datamol.graph.match_molecular_graphs, with unit-tests
    • datamol.graph.reorder_mol_from_template, with unit-tests

    Changed:

    • Typing in datamol.graph.py, changed rdkit.Chem.rdchem.Mol to dm.Mol

    Deprecated:

    • NOTHING

    Removed:

    • NOTHING

    Fixed:

    • NOTHING

    Security:

    • NOTHING

    Authors:

    • DomInvivo
    • Emmanuel Noutahi
    Source code(tar.gz)
    Source code(zip)
    datamol-0.7.9.tar.gz(1.03 MB)
  • 0.7.8(Jun 3, 2022)

  • 0.7.7(May 30, 2022)

  • 0.7.6(May 20, 2022)

  • 0.7.5(May 19, 2022)

  • 0.7.4(May 13, 2022)

  • 0.7.3(Apr 12, 2022)

  • 0.7.2(Mar 22, 2022)

  • 0.7.1(Mar 18, 2022)

    Added:

    • A new dm.align module with various functions to align a list of molecules. Use dm.align.template_align to align a molecule to a template and dm.align.auto_align_many to automatically partition and align a list of molecules.
    • New descriptors: formal_charge
    • New descriptors: refractivity
    • New descriptors: n_rigid_bonds
    • New descriptors: n_stereo_centers
    • New descriptors: n_charged_atoms
    • Add dm.clear_props to clear all the properties of a mol.
    • Add a new dataset in addition to freesolv based on RDKit CDK2 at dm.cdk2().
    • Add dm.strip_mol_to_core to remove all R groups from a molecule.
    • Add dm.UNSPECIFIED_BOND
    • dm.compute_ring_system to extract the ring systems from a molecule.

    Changed:

    • Improve typing.
    • Improve relative imports coverage.
    • Adapt dm.to_image to use the align module.

    Removed:

    • Remove a lot of # type: ignore as those can be error prone (hopefully the tests are here!)

    Authors:

    • Hadrien Mary
    Source code(tar.gz)
    Source code(zip)
    datamol-0.7.1.tar.gz(1.03 MB)
  • 0.7.0(Mar 11, 2022)

    Added:

    • Add dm.conformers.keep_conformers in order to only keep one or multiple conformers from a molecules.

    Changed:

    • Change the conformer generation arguments to use useRandomCoords=True by default.
    • Start using explicit Optional instead of implicit Optional for typing.
    • Start using relative imports instead of absolute ones.
    • When conformers are not minimized, sort them by energy (can be turned to False).

    Removed:

    • Remove fallback_to_random_coords argument from generate_conformers.

    Authors:

    • Hadrien Mary
    Source code(tar.gz)
    Source code(zip)
    datamol-0.7.0.tar.gz(1.02 MB)
  • 0.6.9(Mar 2, 2022)

    Added:

    • Support for selfies<2.0.0 in tests

    Changed:

    • Behaviour of all inchi functions to return None with a warning instead of silently returning an empty string
    • Order of str evaluation on convertion function. isinstance(str) is now evaluated before is None

    Fixed:

    • Bug in unique_id making this evaluation falling back on 'd41d8cd98f00b204e9800998ecf8427e' on unsupported inputs. Instead None is returned now

    Authors:

    • Emmanuel Noutahi
    Source code(tar.gz)
    Source code(zip)
    datamol-0.6.9.tar.gz(1.02 MB)
  • 0.6.8(Feb 27, 2022)

Owner
datamol
A python library to work with molecules.
datamol
Sync SiYuanNote & Yuque.

SiyuanYuque Sync SiYuanNote & Yuque. Install Use pip to install. pip install SiyuanYuque Execute like this: python -m SiyuanYuque Remember to create a

Clouder 23 Nov 25, 2022
A smart personal companion and health assistant.

Steps to Install : Clone the repository Go to ResQ-Sources Execute ResQ-Lite.py --: Manual Controls : DanceRobot.py --: You can call functions like fo

Tuhinadri Banerjee 1 May 25, 2022
A simple string parser based on CLR to check whether a string is acceptable or not for a given grammar.

A simple string parser based on CLR to check whether a string is acceptable or not for a given grammar.

Bharath M Kulkarni 1 Dec 15, 2021
Материалы для курса VK Углубленный Python, весна 2022

VK Углубленный Python, весна 2022 Материалы для курса VK Углубленный Python, весна 2022 Лекции и материалы (слайды, домашки, код с занятий) Введение,

10 Nov 02, 2022
A type based dependency injection framework for Python 3.9+

Alluka A type based dependency injection framework for Python 3.9+. Installation You can install Alluka from PyPI using the following command in any P

Lucina 16 Dec 15, 2022
A tool for study using pomodoro methodology, while study mode spotify or any other .exe app is opened and while resting is closed.

Pomodoro-Timer-With-Spotify-Connection A tool for study using pomodoro methodology, while study mode spotify or any other .exe app is opened and while

2 Oct 23, 2022
Python Repository for Bachelor Ski Sign.

BachelorSkiSign Python Repository for Bachelor Ski Sign. This application reads data from https://bachelorapi.azurewebsites.net/ It is written in Ciru

Winston 1 Jan 04, 2022
Airbrake Python

airbrake-python Note. Python 3.4+ are advised to use new Airbrake Python notifier which supports async API and code hunks. Python 2.7 users should con

Airbrake 51 Dec 22, 2022
Open source home automation that puts local control and privacy first

Home Assistant Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiast

Home Assistant 57k Jan 02, 2023
JPMC Virtual Experience

This repository contains the submitted patch files along with raw files of the various tasks assigned by JPMorgan Chase & Co. through its Software Engineering Virtual Experience Program on Forage (fo

Vardhini K 1 Dec 05, 2021
Twikoo自定义表情列表 | HexoPlusPlus自定义表情列表(其实基于OwO的项目都可以用的啦)

Twikoo-Magic 更新说明 2021/1/15 基于2021/1/14 Twikoo 更新1.1.0-beta,所有表情都将以缩写形式(如:[ text ]:)输出。1/14之前本仓库有部分表情text缺失及重复, 导致无法正常使用表情 1/14后的所有表情json列表已全部更新

noionion 90 Jan 05, 2023
Encode and decode cancro lang files to and from brainfuck

cancrolang Encode and decode cancro lang files to and from brainfuck. examples python3 main.py -f hello.cancro --run Hello World! the interpreter is n

witer33 1 Dec 20, 2021
Python bindings for Basler's VisualApplets TCL script generation

About visualapplets.py The Basler AG company provides a TCL scripting engine to automatize the creation of VisualApplets designs (a former Silicon Sof

Jürgen Hock 2 Dec 07, 2022
Library to emulate the Sneakers movie effect

py-sneakers Port to python of the libnms C library To recreate the famous data decryption effect shown in the 1992 film Sneakers. Install pip install

Nicolas Rebagliati 11 Aug 27, 2021
ViberExport - Export messages from Viber messenger using viber.db file

📲 ViberExport Export messages from Viber messenger using viber.db file ⚡ Usage:

7 Nov 23, 2022
Identify and annotate mutations from genome editing assays.

CRISPR-detector Here we propose our CRISPR-detector to facilitate the CRISPR-edited amplicon and whole genome sequencing data analysis, with functions

hlcas 2 Feb 20, 2022
Get a list of the top-10 rejected libraries in your WhiteSource inventory

WhiteSource Top 10 Rejected Libraries Generate a spreadsheet listing the 10 most common libraries in your WhiteSource inventory that were rejected by

WhiteSource-PS-tools 10 Mar 23, 2022
This code makes the logs provided by Fiddler proxy of the Google Analytics events coming from iOS more readable.

GA-beautifier-iOS This code makes the logs provided by Fiddler proxy of the Google Analytics events coming from iOS more readable. To run it, create a

Rafael Machado 3 Feb 02, 2022
A simple python script where the user inputs the current ingredients they have in their kitchen into ingredients.txt

A simple python script where the user inputs the current ingredients they have in their kitchen into ingredients.txt and then runs the main.py script, and it will output what recipes can be created b

Jordan Leich 3 Nov 02, 2022
A stupid obfuscation thing

StupidObfuscation A stupid obfuscation thing How it works The obfuscator takes a string, splits into pieces of one, then, using the table from letter.

Echo 2 May 03, 2022