npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

d3-molecule

v1.2.0

Published

Javascript and D3 based Chemoinformatic Tool to make learning Chemical Bonding easy

Downloads

43

Readme

Project Title: d3-molecule

d3-molecule is an open-source library for learning Chemical Bonding in an interactive way.

Screenshot

Version History

| Version | Date |Brief Description | Author(s) | | --------|-----------|------------------|-------------------------| | v1.0.0|2017/03/01 |Initial creation |[email protected]| | v1.0.3|2017/03/01 |Update Readme |[email protected]| | v1.1.1|2017/12/31 |Update Readme |[email protected]| | v2.0.0|2018/02/07 |Visualize organic chemical structures based on IUPAC conventions |[email protected] [email protected]|

Usage and Features

  • Clicking the atom selects it
  • Clicking on 2 atoms, joins them by a bond
  • Clicking on a bond, toggles the bond type
  • Clicking on a view port, locks and unlocks it from movement
  • Double clicking a bond, removes it
  • Double clicking an atom, removes it and its bonds
  • Lock/ Unlock atoms to their position if needed.
  • Hide/ Show atoms if needed.
  • Drag and Resizing of molemethaneculecule container
  • Option to Export molecule as a PNG image
  • Configurable forces, constants of force directed graph for the molecule
  • Configurable style parameters for canvas, atoms, bonds
  • Visualize organic chemical structures based on IUPAC conventions.

Features WIP

  • Molecule Reaction components
  • Loading examples directly from standard notations like SMILE
  • 3-D support

Check out an example here. Demo

Installation

Download d3-molecule using npm.

npm install d3-molecule --save-dev
cd d3-molecule
npm install

To use this library then, simply include d3.js, jquery, Molecule.js and Molecule.css:

<script src="/path/to/jquery.min.js"></script>
<script src="/path/to/d3.min.js"></script>
<link href="/path/to/dist/css/Molecule.css">
<script src="/path/to/dist/js/Molecule.js"></script>

Basic Usage

To use this library, you must create a container element and instantiate a new Molecule:

<div id="container"></div>

Data

var data = {
    "nodes": [
      {
        "id": 0,
        "atom": "Mg",
        "charge":""
        "size": 24
      },
      {
        "id": 1,
        "atom": "Cl",
        "charge":""
        "size": 35
      },
      {
        "id": 2,
        "atom": "Cl",
        "charge":""
        "size": 35
      }
    ],
    "links": [
      {
        "source": 0,
        "target": 1,
        "bond": 1
      },
      {
        "source": 0,
        "target": 2,
        "bond": 1
      }
    ]
  }

Setting chart parameters


    var options = {
        domElement: "#container",
        uniqueId: 1,
        width: 500, 
        height: 500,
        borderThickness: 1,
        borderColor: "#ffffff",
        background: "#ffffff",
        charge: -1000,
        friction: 0.9,
        alpha: 0.1,
        theta: 0.8,
        linkStrength: 1,
        gravity: 0.1,
        maxAtomRadius: 6,
        colorScheme:["#2AA9CC", "#FCF78A"],
        bondThickness: 2,
        bondColor: "#000000",
        atomBorderThickness: 2,
        atomBorderColor: "#000000",
        atomTextColor: "#000000",
        atomSizeBasis: "Atomic Radius",
        boundingBox: true,
        borderRadiusX: 5,
        borderRadiusY: 5,
        detailedTooltips: true
    };

    var molecule = new Molecule(data,options);
    molecule.render();

Options

| Option | Description | Type | Example | ----------------------------- | ------------------------------------------------------------------------- | -------- | -------------------------- | | domElement | The DOM element to append the molecule to | string | '#container' | | uniqueId | A Unique ID in case multiple molecules are added (as in the demo) | number | 1 | | width | Width of the svg container | number | 500 | | height | Height of the svg container | number | 500 | | borderThickness | Thickness of the border of the svg container | number | 1 |
| borderColor | Color of the border of the svg container | string | '#000000' | | background | Background color of the svg container | string | '#FFFFFF' | | charge | The Repulsion/ Attraction force between atoms | number | -1000 | | friction | The friction parameter of a force directed graph | number | 0.9 | | alpha | The alpha parameter of a force directed graph | number | 0.1 | | theta | The theta parameter of a force directed graph | number | 0.8 | | linkStrength | The linkStrength parameter of a force directed graph | number | 1 | | gravity | The gravity parameter of a force directed graph | number | 0.1 | | maxAtomRadius | Radius of the biggest atom in the molecule | number | 6 | | colorScheme | Color scheme of the atoms | list | ["#2AA9CC", "#FCF78A"] | | bondThickness | Bond thickness | number | 1 | | bondColor | Bond Color | string | '#000000' | | atomBorderThickness | Atom border thickness | string | 1 | | atomBorderColor | Atom border color | string | '#000000' | | atomTextColor | Atom text color | string | '#000000' | | atomSizeBasis | Basis on which the atom circle svgs be rendered | string | 'Atomic Radius' | 'Atomic Weight ' | | boundingBox | If the molecule should be constrained inside the svg container | boolean | true | | borderRadiusX | SVG container's border (X) parameter | number | 5 | | borderRadiusY | SVG container's border (Y) parameter | number | 5 | | detailedTooltips | If detailed info about the element to be shown on hover or not | boolean | true |

Bond Types include :-

  • Single
  • Double
  • Triple
  • Quadruple
  • Wedged
  • Wavy
  • Dotted
  • Dashed (Stripes)
  • Dashed (Gradient)
  • Arc

Test (WIP)

  • Unit test cases in the testrunner.html
  • Start a simple HTTP server and go to http://localhost:/testrunner.html
  • The test cases will run for the demo example

Author

Arpit Narechania [email protected]


New Feature of Organic Compounds (added on Jan-2018)

  • The new module IUPACname.js adds functionality of searching organic compounds using IUPAC names.
  • This library allows you to add the side groups including methyl, ethyl and propyl on the main chain.
  • Note that the library doesn't cover all names for organic compounds.

Types of organic compounds:

| Organic Compounds | | ------------------| | Alkanes | | Alkenes | | Alkynes | | Alkyl halides | | Alcohols | | Ethers | | Aldehydes | | Ketones | | Carboxylic Acids| | Esters | | Amines | | Amides |

Limitations for IUPAC name search:

  • The maximum number of carbon is 12.
  • The double bond, triple bond, -OH, -C=O- are at the end of the main chain.
  • The amide is always primary amide.
  • More diverse functionality will be updated.

Examples for using organic compounds

| Organic Compounds | Example | | ------------------|-----------------------------------| | Alkanes |methane, 2-methyl-4-ethyloctane| | Alkenes |ethene, 2-methyl-4-ethyloctene | | Alkynes |ethyne, 2-methyl-4-ethyloctyne | | Alkyl halides |3-fluoro-4-ethyloctyne | | Alcohols |ethanol | | Ethers |ethyl methyl ether | | Aldehydes |3-methylbutanal | | Ketones |propanone | | Carboxylic Acids|ethanoic acid | | Esters |methyl propanoate | | Amines |ethyl methyl amine | | Amides |butamide |

Author for Organic Compounds

License

MIT (https://opensource.org/licenses/MIT.)