Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/arpitnarechania/d3-molecule
D3 based interactive visualization library + tool to make render atoms and molecules learning chemical bonding in a fun way.
https://github.com/arpitnarechania/d3-molecule
atoms-in-molecules chemical-bonding chemoinformatics d3 interactive-visualizations javascript molecules open-source
Last synced: about 1 month ago
JSON representation
D3 based interactive visualization library + tool to make render atoms and molecules learning chemical bonding in a fun way.
- Host: GitHub
- URL: https://github.com/arpitnarechania/d3-molecule
- Owner: arpitnarechania
- Created: 2017-03-19T13:46:33.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-03-01T22:47:13.000Z (over 6 years ago)
- Last Synced: 2024-09-28T20:02:23.277Z (about 2 months ago)
- Topics: atoms-in-molecules, chemical-bonding, chemoinformatics, d3, interactive-visualizations, javascript, molecules, open-source
- Language: HTML
- Homepage: https://arpitnarechania.github.io/d3-molecule/
- Size: 1.11 MB
- Stars: 43
- Watchers: 5
- Forks: 16
- Open Issues: 1
-
Metadata Files:
- Readme: README.html
Awesome Lists containing this project
README
Project Title: d3-moleculed3-molecule is an open-source library for learning Chemical Bonding in an interactive way.
Version HistoryVersion
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
InstallationDownload d3-molecule using npm.
npm install d3-molecule --save-dev
cd d3-molecule
npm installTo 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 UsageTo 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();
OptionsOption
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)
number1
width
Width of the svg container
number500
height
Height of the svg container
number500
borderThickness
Thickness of the border of the svg container
number1
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
number0.9
alpha
The alpha parameter of a force directed graph
number0.1
theta
The theta parameter of a force directed graph
number0.8
linkStrength
The linkStrength parameter of a force directed graph
number1
gravity
The gravity parameter of a force directed graph
number0.1
maxAtomRadius
Radius of the biggest atom in the molecule
number6
colorScheme
Color scheme of the atoms
list["#2AA9CC", "#FCF78A"]
bondThickness
Bond thickness
number1
bondColor
Bond Color
string'#000000'
atomBorderThickness
Atom border thickness
string1
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'
boundingBox
If the molecule should be constrained inside the svg container
booleantrue
borderRadiusX
SVG container's border (X) parameter
number5
borderRadiusY
SVG container's border (Y) parameter
number5
detailedTooltips
If detailed info about the element to be shown on hover or not
booleantrue
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
AuthorArpit 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 compoundsOrganic 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
- Ying Wang [email protected]
- Shivaram Sitaram [email protected]
LicenseMIT (https://opensource.org/licenses/MIT.)